@auto-engineer/pipeline 0.20.0 → 0.21.0

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 (206) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/.turbo/turbo-test.log +4 -4
  3. package/.turbo/turbo-type-check.log +1 -1
  4. package/CHANGELOG.md +12 -0
  5. package/dist/tsconfig.tsbuildinfo +1 -1
  6. package/package.json +3 -3
  7. package/coverage/base.css +0 -224
  8. package/coverage/block-navigation.js +0 -87
  9. package/coverage/builder/define.ts.html +0 -2224
  10. package/coverage/builder/index.html +0 -116
  11. package/coverage/config/index.html +0 -116
  12. package/coverage/config/pipeline-config.ts.html +0 -181
  13. package/coverage/core/descriptors.ts.html +0 -397
  14. package/coverage/core/index.html +0 -131
  15. package/coverage/core/types.ts.html +0 -133
  16. package/coverage/coverage-final.json +0 -33
  17. package/coverage/favicon.png +0 -0
  18. package/coverage/graph/filter-graph.ts.html +0 -418
  19. package/coverage/graph/index.html +0 -131
  20. package/coverage/graph/types.ts.html +0 -172
  21. package/coverage/index.html +0 -266
  22. package/coverage/logging/event-logger.ts.html +0 -235
  23. package/coverage/logging/index.html +0 -116
  24. package/coverage/plugins/handler-adapter.ts.html +0 -148
  25. package/coverage/plugins/index.html +0 -131
  26. package/coverage/plugins/plugin-loader.ts.html +0 -691
  27. package/coverage/prettify.css +0 -1
  28. package/coverage/prettify.js +0 -2
  29. package/coverage/projections/await-tracker-projection.ts.html +0 -289
  30. package/coverage/projections/index.html +0 -221
  31. package/coverage/projections/item-status-projection.ts.html +0 -181
  32. package/coverage/projections/latest-run-projection.ts.html +0 -145
  33. package/coverage/projections/message-log-projection.ts.html +0 -424
  34. package/coverage/projections/node-status-projection.ts.html +0 -184
  35. package/coverage/projections/phased-execution-projection.ts.html +0 -523
  36. package/coverage/projections/settled-instance-projection.ts.html +0 -565
  37. package/coverage/projections/stats-projection.ts.html +0 -163
  38. package/coverage/runtime/await-tracker.ts.html +0 -271
  39. package/coverage/runtime/context.ts.html +0 -124
  40. package/coverage/runtime/event-command-map.ts.html +0 -220
  41. package/coverage/runtime/index.html +0 -191
  42. package/coverage/runtime/phased-executor.ts.html +0 -775
  43. package/coverage/runtime/pipeline-runtime.ts.html +0 -448
  44. package/coverage/runtime/settled-tracker.ts.html +0 -790
  45. package/coverage/server/index.html +0 -131
  46. package/coverage/server/pipeline-server.ts.html +0 -3253
  47. package/coverage/server/sse-manager.ts.html +0 -310
  48. package/coverage/sort-arrow-sprite.png +0 -0
  49. package/coverage/sorter.js +0 -210
  50. package/coverage/store/index.html +0 -146
  51. package/coverage/store/pipeline-event-store.ts.html +0 -553
  52. package/coverage/store/pipeline-read-model.ts.html +0 -754
  53. package/coverage/store/sqlite-pipeline-event-store.ts.html +0 -193
  54. package/coverage/testing/event-capture.ts.html +0 -280
  55. package/coverage/testing/index.html +0 -161
  56. package/coverage/testing/mock-handlers.ts.html +0 -259
  57. package/coverage/testing/snapshot-compare.ts.html +0 -403
  58. package/coverage/testing/snapshot-sanitize.ts.html +0 -136
  59. package/dist/src/builder/define.specs.d.ts +0 -2
  60. package/dist/src/builder/define.specs.d.ts.map +0 -1
  61. package/dist/src/builder/define.specs.js +0 -435
  62. package/dist/src/builder/define.specs.js.map +0 -1
  63. package/dist/src/core/descriptors.specs.d.ts +0 -2
  64. package/dist/src/core/descriptors.specs.d.ts.map +0 -1
  65. package/dist/src/core/descriptors.specs.js +0 -24
  66. package/dist/src/core/descriptors.specs.js.map +0 -1
  67. package/dist/src/core/types.specs.d.ts +0 -2
  68. package/dist/src/core/types.specs.d.ts.map +0 -1
  69. package/dist/src/core/types.specs.js +0 -40
  70. package/dist/src/core/types.specs.js.map +0 -1
  71. package/dist/src/graph/filter-graph.specs.d.ts +0 -2
  72. package/dist/src/graph/filter-graph.specs.d.ts.map +0 -1
  73. package/dist/src/graph/filter-graph.specs.js +0 -204
  74. package/dist/src/graph/filter-graph.specs.js.map +0 -1
  75. package/dist/src/graph/types.specs.d.ts +0 -2
  76. package/dist/src/graph/types.specs.d.ts.map +0 -1
  77. package/dist/src/graph/types.specs.js +0 -148
  78. package/dist/src/graph/types.specs.js.map +0 -1
  79. package/dist/src/logging/event-logger.specs.d.ts +0 -2
  80. package/dist/src/logging/event-logger.specs.d.ts.map +0 -1
  81. package/dist/src/logging/event-logger.specs.js +0 -81
  82. package/dist/src/logging/event-logger.specs.js.map +0 -1
  83. package/dist/src/plugins/handler-adapter.specs.d.ts +0 -2
  84. package/dist/src/plugins/handler-adapter.specs.d.ts.map +0 -1
  85. package/dist/src/plugins/handler-adapter.specs.js +0 -129
  86. package/dist/src/plugins/handler-adapter.specs.js.map +0 -1
  87. package/dist/src/plugins/plugin-loader.specs.d.ts +0 -2
  88. package/dist/src/plugins/plugin-loader.specs.d.ts.map +0 -1
  89. package/dist/src/plugins/plugin-loader.specs.js +0 -246
  90. package/dist/src/plugins/plugin-loader.specs.js.map +0 -1
  91. package/dist/src/projections/item-status-projection.specs.d.ts +0 -2
  92. package/dist/src/projections/item-status-projection.specs.d.ts.map +0 -1
  93. package/dist/src/projections/item-status-projection.specs.js +0 -119
  94. package/dist/src/projections/item-status-projection.specs.js.map +0 -1
  95. package/dist/src/projections/latest-run-projection.specs.d.ts +0 -2
  96. package/dist/src/projections/latest-run-projection.specs.d.ts.map +0 -1
  97. package/dist/src/projections/latest-run-projection.specs.js +0 -33
  98. package/dist/src/projections/latest-run-projection.specs.js.map +0 -1
  99. package/dist/src/projections/message-log-projection.specs.d.ts +0 -2
  100. package/dist/src/projections/message-log-projection.specs.d.ts.map +0 -1
  101. package/dist/src/projections/message-log-projection.specs.js +0 -101
  102. package/dist/src/projections/message-log-projection.specs.js.map +0 -1
  103. package/dist/src/projections/node-status-projection.specs.d.ts +0 -2
  104. package/dist/src/projections/node-status-projection.specs.d.ts.map +0 -1
  105. package/dist/src/projections/node-status-projection.specs.js +0 -116
  106. package/dist/src/projections/node-status-projection.specs.js.map +0 -1
  107. package/dist/src/projections/phased-execution-projection.specs.d.ts +0 -2
  108. package/dist/src/projections/phased-execution-projection.specs.d.ts.map +0 -1
  109. package/dist/src/projections/phased-execution-projection.specs.js +0 -171
  110. package/dist/src/projections/phased-execution-projection.specs.js.map +0 -1
  111. package/dist/src/projections/settled-instance-projection.specs.d.ts +0 -2
  112. package/dist/src/projections/settled-instance-projection.specs.d.ts.map +0 -1
  113. package/dist/src/projections/settled-instance-projection.specs.js +0 -217
  114. package/dist/src/projections/settled-instance-projection.specs.js.map +0 -1
  115. package/dist/src/projections/stats-projection.specs.d.ts +0 -2
  116. package/dist/src/projections/stats-projection.specs.d.ts.map +0 -1
  117. package/dist/src/projections/stats-projection.specs.js +0 -91
  118. package/dist/src/projections/stats-projection.specs.js.map +0 -1
  119. package/dist/src/runtime/await-tracker.specs.d.ts +0 -2
  120. package/dist/src/runtime/await-tracker.specs.d.ts.map +0 -1
  121. package/dist/src/runtime/await-tracker.specs.js +0 -64
  122. package/dist/src/runtime/await-tracker.specs.js.map +0 -1
  123. package/dist/src/runtime/context.specs.d.ts +0 -2
  124. package/dist/src/runtime/context.specs.d.ts.map +0 -1
  125. package/dist/src/runtime/context.specs.js +0 -26
  126. package/dist/src/runtime/context.specs.js.map +0 -1
  127. package/dist/src/runtime/event-command-map.specs.d.ts +0 -2
  128. package/dist/src/runtime/event-command-map.specs.d.ts.map +0 -1
  129. package/dist/src/runtime/event-command-map.specs.js +0 -108
  130. package/dist/src/runtime/event-command-map.specs.js.map +0 -1
  131. package/dist/src/runtime/phased-executor.specs.d.ts +0 -2
  132. package/dist/src/runtime/phased-executor.specs.d.ts.map +0 -1
  133. package/dist/src/runtime/phased-executor.specs.js +0 -418
  134. package/dist/src/runtime/phased-executor.specs.js.map +0 -1
  135. package/dist/src/runtime/pipeline-runtime.specs.d.ts +0 -2
  136. package/dist/src/runtime/pipeline-runtime.specs.d.ts.map +0 -1
  137. package/dist/src/runtime/pipeline-runtime.specs.js +0 -227
  138. package/dist/src/runtime/pipeline-runtime.specs.js.map +0 -1
  139. package/dist/src/runtime/settled-tracker.specs.d.ts +0 -2
  140. package/dist/src/runtime/settled-tracker.specs.d.ts.map +0 -1
  141. package/dist/src/runtime/settled-tracker.specs.js +0 -811
  142. package/dist/src/runtime/settled-tracker.specs.js.map +0 -1
  143. package/dist/src/server/full-orchestration.e2e.specs.d.ts +0 -2
  144. package/dist/src/server/full-orchestration.e2e.specs.d.ts.map +0 -1
  145. package/dist/src/server/full-orchestration.e2e.specs.js +0 -561
  146. package/dist/src/server/full-orchestration.e2e.specs.js.map +0 -1
  147. package/dist/src/server/pipeline-server.e2e.specs.d.ts +0 -2
  148. package/dist/src/server/pipeline-server.e2e.specs.d.ts.map +0 -1
  149. package/dist/src/server/pipeline-server.e2e.specs.js +0 -373
  150. package/dist/src/server/pipeline-server.e2e.specs.js.map +0 -1
  151. package/dist/src/server/pipeline-server.specs.d.ts +0 -2
  152. package/dist/src/server/pipeline-server.specs.d.ts.map +0 -1
  153. package/dist/src/server/pipeline-server.specs.js +0 -1407
  154. package/dist/src/server/pipeline-server.specs.js.map +0 -1
  155. package/dist/src/server/sse-manager.specs.d.ts +0 -2
  156. package/dist/src/server/sse-manager.specs.d.ts.map +0 -1
  157. package/dist/src/server/sse-manager.specs.js +0 -178
  158. package/dist/src/server/sse-manager.specs.js.map +0 -1
  159. package/dist/src/store/pipeline-event-store.specs.d.ts +0 -2
  160. package/dist/src/store/pipeline-event-store.specs.d.ts.map +0 -1
  161. package/dist/src/store/pipeline-event-store.specs.js +0 -287
  162. package/dist/src/store/pipeline-event-store.specs.js.map +0 -1
  163. package/dist/src/store/pipeline-read-model.specs.d.ts +0 -2
  164. package/dist/src/store/pipeline-read-model.specs.d.ts.map +0 -1
  165. package/dist/src/store/pipeline-read-model.specs.js +0 -830
  166. package/dist/src/store/pipeline-read-model.specs.js.map +0 -1
  167. package/dist/src/testing/event-capture.specs.d.ts +0 -2
  168. package/dist/src/testing/event-capture.specs.d.ts.map +0 -1
  169. package/dist/src/testing/event-capture.specs.js +0 -114
  170. package/dist/src/testing/event-capture.specs.js.map +0 -1
  171. package/dist/src/testing/fixtures/kanban-full.pipeline.specs.d.ts +0 -2
  172. package/dist/src/testing/fixtures/kanban-full.pipeline.specs.d.ts.map +0 -1
  173. package/dist/src/testing/fixtures/kanban-full.pipeline.specs.js +0 -263
  174. package/dist/src/testing/fixtures/kanban-full.pipeline.specs.js.map +0 -1
  175. package/dist/src/testing/fixtures/kanban.pipeline.specs.d.ts +0 -2
  176. package/dist/src/testing/fixtures/kanban.pipeline.specs.d.ts.map +0 -1
  177. package/dist/src/testing/fixtures/kanban.pipeline.specs.js +0 -29
  178. package/dist/src/testing/fixtures/kanban.pipeline.specs.js.map +0 -1
  179. package/dist/src/testing/kanban-todo.e2e.specs.d.ts +0 -2
  180. package/dist/src/testing/kanban-todo.e2e.specs.d.ts.map +0 -1
  181. package/dist/src/testing/kanban-todo.e2e.specs.js +0 -160
  182. package/dist/src/testing/kanban-todo.e2e.specs.js.map +0 -1
  183. package/dist/src/testing/mock-handlers.specs.d.ts +0 -2
  184. package/dist/src/testing/mock-handlers.specs.d.ts.map +0 -1
  185. package/dist/src/testing/mock-handlers.specs.js +0 -193
  186. package/dist/src/testing/mock-handlers.specs.js.map +0 -1
  187. package/dist/src/testing/real-execution.e2e.specs.d.ts +0 -2
  188. package/dist/src/testing/real-execution.e2e.specs.d.ts.map +0 -1
  189. package/dist/src/testing/real-execution.e2e.specs.js +0 -140
  190. package/dist/src/testing/real-execution.e2e.specs.js.map +0 -1
  191. package/dist/src/testing/real-plugin.e2e.specs.d.ts +0 -2
  192. package/dist/src/testing/real-plugin.e2e.specs.d.ts.map +0 -1
  193. package/dist/src/testing/real-plugin.e2e.specs.js +0 -65
  194. package/dist/src/testing/real-plugin.e2e.specs.js.map +0 -1
  195. package/dist/src/testing/server-startup.e2e.specs.d.ts +0 -2
  196. package/dist/src/testing/server-startup.e2e.specs.d.ts.map +0 -1
  197. package/dist/src/testing/server-startup.e2e.specs.js +0 -104
  198. package/dist/src/testing/server-startup.e2e.specs.js.map +0 -1
  199. package/dist/src/testing/snapshot-compare.specs.d.ts +0 -2
  200. package/dist/src/testing/snapshot-compare.specs.d.ts.map +0 -1
  201. package/dist/src/testing/snapshot-compare.specs.js +0 -112
  202. package/dist/src/testing/snapshot-compare.specs.js.map +0 -1
  203. package/dist/src/testing/snapshot-sanitize.specs.d.ts +0 -2
  204. package/dist/src/testing/snapshot-sanitize.specs.d.ts.map +0 -1
  205. package/dist/src/testing/snapshot-sanitize.specs.js +0 -104
  206. package/dist/src/testing/snapshot-sanitize.specs.js.map +0 -1
@@ -1,790 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for runtime/settled-tracker.ts</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="../prettify.css" />
9
- <link rel="stylesheet" href="../base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(../sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="../index.html">All files</a> / <a href="index.html">runtime</a> settled-tracker.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">100% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>169/169</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">100% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>48/48</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">100% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>14/14</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">100% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>169/169</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- <template id="filterTemplate">
58
- <div class="quiet">
59
- Filter:
60
- <input type="search" id="fileSearch">
61
- </div>
62
- </template>
63
- </div>
64
- <div class='status-line high'></div>
65
- <pre><table class="coverage">
66
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
- <a name='L2'></a><a href='#L2'>2</a>
68
- <a name='L3'></a><a href='#L3'>3</a>
69
- <a name='L4'></a><a href='#L4'>4</a>
70
- <a name='L5'></a><a href='#L5'>5</a>
71
- <a name='L6'></a><a href='#L6'>6</a>
72
- <a name='L7'></a><a href='#L7'>7</a>
73
- <a name='L8'></a><a href='#L8'>8</a>
74
- <a name='L9'></a><a href='#L9'>9</a>
75
- <a name='L10'></a><a href='#L10'>10</a>
76
- <a name='L11'></a><a href='#L11'>11</a>
77
- <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a>
81
- <a name='L16'></a><a href='#L16'>16</a>
82
- <a name='L17'></a><a href='#L17'>17</a>
83
- <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a>
85
- <a name='L20'></a><a href='#L20'>20</a>
86
- <a name='L21'></a><a href='#L21'>21</a>
87
- <a name='L22'></a><a href='#L22'>22</a>
88
- <a name='L23'></a><a href='#L23'>23</a>
89
- <a name='L24'></a><a href='#L24'>24</a>
90
- <a name='L25'></a><a href='#L25'>25</a>
91
- <a name='L26'></a><a href='#L26'>26</a>
92
- <a name='L27'></a><a href='#L27'>27</a>
93
- <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a>
97
- <a name='L32'></a><a href='#L32'>32</a>
98
- <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a>
100
- <a name='L35'></a><a href='#L35'>35</a>
101
- <a name='L36'></a><a href='#L36'>36</a>
102
- <a name='L37'></a><a href='#L37'>37</a>
103
- <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a>
109
- <a name='L44'></a><a href='#L44'>44</a>
110
- <a name='L45'></a><a href='#L45'>45</a>
111
- <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a>
113
- <a name='L48'></a><a href='#L48'>48</a>
114
- <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a>
120
- <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a>
127
- <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a>
129
- <a name='L64'></a><a href='#L64'>64</a>
130
- <a name='L65'></a><a href='#L65'>65</a>
131
- <a name='L66'></a><a href='#L66'>66</a>
132
- <a name='L67'></a><a href='#L67'>67</a>
133
- <a name='L68'></a><a href='#L68'>68</a>
134
- <a name='L69'></a><a href='#L69'>69</a>
135
- <a name='L70'></a><a href='#L70'>70</a>
136
- <a name='L71'></a><a href='#L71'>71</a>
137
- <a name='L72'></a><a href='#L72'>72</a>
138
- <a name='L73'></a><a href='#L73'>73</a>
139
- <a name='L74'></a><a href='#L74'>74</a>
140
- <a name='L75'></a><a href='#L75'>75</a>
141
- <a name='L76'></a><a href='#L76'>76</a>
142
- <a name='L77'></a><a href='#L77'>77</a>
143
- <a name='L78'></a><a href='#L78'>78</a>
144
- <a name='L79'></a><a href='#L79'>79</a>
145
- <a name='L80'></a><a href='#L80'>80</a>
146
- <a name='L81'></a><a href='#L81'>81</a>
147
- <a name='L82'></a><a href='#L82'>82</a>
148
- <a name='L83'></a><a href='#L83'>83</a>
149
- <a name='L84'></a><a href='#L84'>84</a>
150
- <a name='L85'></a><a href='#L85'>85</a>
151
- <a name='L86'></a><a href='#L86'>86</a>
152
- <a name='L87'></a><a href='#L87'>87</a>
153
- <a name='L88'></a><a href='#L88'>88</a>
154
- <a name='L89'></a><a href='#L89'>89</a>
155
- <a name='L90'></a><a href='#L90'>90</a>
156
- <a name='L91'></a><a href='#L91'>91</a>
157
- <a name='L92'></a><a href='#L92'>92</a>
158
- <a name='L93'></a><a href='#L93'>93</a>
159
- <a name='L94'></a><a href='#L94'>94</a>
160
- <a name='L95'></a><a href='#L95'>95</a>
161
- <a name='L96'></a><a href='#L96'>96</a>
162
- <a name='L97'></a><a href='#L97'>97</a>
163
- <a name='L98'></a><a href='#L98'>98</a>
164
- <a name='L99'></a><a href='#L99'>99</a>
165
- <a name='L100'></a><a href='#L100'>100</a>
166
- <a name='L101'></a><a href='#L101'>101</a>
167
- <a name='L102'></a><a href='#L102'>102</a>
168
- <a name='L103'></a><a href='#L103'>103</a>
169
- <a name='L104'></a><a href='#L104'>104</a>
170
- <a name='L105'></a><a href='#L105'>105</a>
171
- <a name='L106'></a><a href='#L106'>106</a>
172
- <a name='L107'></a><a href='#L107'>107</a>
173
- <a name='L108'></a><a href='#L108'>108</a>
174
- <a name='L109'></a><a href='#L109'>109</a>
175
- <a name='L110'></a><a href='#L110'>110</a>
176
- <a name='L111'></a><a href='#L111'>111</a>
177
- <a name='L112'></a><a href='#L112'>112</a>
178
- <a name='L113'></a><a href='#L113'>113</a>
179
- <a name='L114'></a><a href='#L114'>114</a>
180
- <a name='L115'></a><a href='#L115'>115</a>
181
- <a name='L116'></a><a href='#L116'>116</a>
182
- <a name='L117'></a><a href='#L117'>117</a>
183
- <a name='L118'></a><a href='#L118'>118</a>
184
- <a name='L119'></a><a href='#L119'>119</a>
185
- <a name='L120'></a><a href='#L120'>120</a>
186
- <a name='L121'></a><a href='#L121'>121</a>
187
- <a name='L122'></a><a href='#L122'>122</a>
188
- <a name='L123'></a><a href='#L123'>123</a>
189
- <a name='L124'></a><a href='#L124'>124</a>
190
- <a name='L125'></a><a href='#L125'>125</a>
191
- <a name='L126'></a><a href='#L126'>126</a>
192
- <a name='L127'></a><a href='#L127'>127</a>
193
- <a name='L128'></a><a href='#L128'>128</a>
194
- <a name='L129'></a><a href='#L129'>129</a>
195
- <a name='L130'></a><a href='#L130'>130</a>
196
- <a name='L131'></a><a href='#L131'>131</a>
197
- <a name='L132'></a><a href='#L132'>132</a>
198
- <a name='L133'></a><a href='#L133'>133</a>
199
- <a name='L134'></a><a href='#L134'>134</a>
200
- <a name='L135'></a><a href='#L135'>135</a>
201
- <a name='L136'></a><a href='#L136'>136</a>
202
- <a name='L137'></a><a href='#L137'>137</a>
203
- <a name='L138'></a><a href='#L138'>138</a>
204
- <a name='L139'></a><a href='#L139'>139</a>
205
- <a name='L140'></a><a href='#L140'>140</a>
206
- <a name='L141'></a><a href='#L141'>141</a>
207
- <a name='L142'></a><a href='#L142'>142</a>
208
- <a name='L143'></a><a href='#L143'>143</a>
209
- <a name='L144'></a><a href='#L144'>144</a>
210
- <a name='L145'></a><a href='#L145'>145</a>
211
- <a name='L146'></a><a href='#L146'>146</a>
212
- <a name='L147'></a><a href='#L147'>147</a>
213
- <a name='L148'></a><a href='#L148'>148</a>
214
- <a name='L149'></a><a href='#L149'>149</a>
215
- <a name='L150'></a><a href='#L150'>150</a>
216
- <a name='L151'></a><a href='#L151'>151</a>
217
- <a name='L152'></a><a href='#L152'>152</a>
218
- <a name='L153'></a><a href='#L153'>153</a>
219
- <a name='L154'></a><a href='#L154'>154</a>
220
- <a name='L155'></a><a href='#L155'>155</a>
221
- <a name='L156'></a><a href='#L156'>156</a>
222
- <a name='L157'></a><a href='#L157'>157</a>
223
- <a name='L158'></a><a href='#L158'>158</a>
224
- <a name='L159'></a><a href='#L159'>159</a>
225
- <a name='L160'></a><a href='#L160'>160</a>
226
- <a name='L161'></a><a href='#L161'>161</a>
227
- <a name='L162'></a><a href='#L162'>162</a>
228
- <a name='L163'></a><a href='#L163'>163</a>
229
- <a name='L164'></a><a href='#L164'>164</a>
230
- <a name='L165'></a><a href='#L165'>165</a>
231
- <a name='L166'></a><a href='#L166'>166</a>
232
- <a name='L167'></a><a href='#L167'>167</a>
233
- <a name='L168'></a><a href='#L168'>168</a>
234
- <a name='L169'></a><a href='#L169'>169</a>
235
- <a name='L170'></a><a href='#L170'>170</a>
236
- <a name='L171'></a><a href='#L171'>171</a>
237
- <a name='L172'></a><a href='#L172'>172</a>
238
- <a name='L173'></a><a href='#L173'>173</a>
239
- <a name='L174'></a><a href='#L174'>174</a>
240
- <a name='L175'></a><a href='#L175'>175</a>
241
- <a name='L176'></a><a href='#L176'>176</a>
242
- <a name='L177'></a><a href='#L177'>177</a>
243
- <a name='L178'></a><a href='#L178'>178</a>
244
- <a name='L179'></a><a href='#L179'>179</a>
245
- <a name='L180'></a><a href='#L180'>180</a>
246
- <a name='L181'></a><a href='#L181'>181</a>
247
- <a name='L182'></a><a href='#L182'>182</a>
248
- <a name='L183'></a><a href='#L183'>183</a>
249
- <a name='L184'></a><a href='#L184'>184</a>
250
- <a name='L185'></a><a href='#L185'>185</a>
251
- <a name='L186'></a><a href='#L186'>186</a>
252
- <a name='L187'></a><a href='#L187'>187</a>
253
- <a name='L188'></a><a href='#L188'>188</a>
254
- <a name='L189'></a><a href='#L189'>189</a>
255
- <a name='L190'></a><a href='#L190'>190</a>
256
- <a name='L191'></a><a href='#L191'>191</a>
257
- <a name='L192'></a><a href='#L192'>192</a>
258
- <a name='L193'></a><a href='#L193'>193</a>
259
- <a name='L194'></a><a href='#L194'>194</a>
260
- <a name='L195'></a><a href='#L195'>195</a>
261
- <a name='L196'></a><a href='#L196'>196</a>
262
- <a name='L197'></a><a href='#L197'>197</a>
263
- <a name='L198'></a><a href='#L198'>198</a>
264
- <a name='L199'></a><a href='#L199'>199</a>
265
- <a name='L200'></a><a href='#L200'>200</a>
266
- <a name='L201'></a><a href='#L201'>201</a>
267
- <a name='L202'></a><a href='#L202'>202</a>
268
- <a name='L203'></a><a href='#L203'>203</a>
269
- <a name='L204'></a><a href='#L204'>204</a>
270
- <a name='L205'></a><a href='#L205'>205</a>
271
- <a name='L206'></a><a href='#L206'>206</a>
272
- <a name='L207'></a><a href='#L207'>207</a>
273
- <a name='L208'></a><a href='#L208'>208</a>
274
- <a name='L209'></a><a href='#L209'>209</a>
275
- <a name='L210'></a><a href='#L210'>210</a>
276
- <a name='L211'></a><a href='#L211'>211</a>
277
- <a name='L212'></a><a href='#L212'>212</a>
278
- <a name='L213'></a><a href='#L213'>213</a>
279
- <a name='L214'></a><a href='#L214'>214</a>
280
- <a name='L215'></a><a href='#L215'>215</a>
281
- <a name='L216'></a><a href='#L216'>216</a>
282
- <a name='L217'></a><a href='#L217'>217</a>
283
- <a name='L218'></a><a href='#L218'>218</a>
284
- <a name='L219'></a><a href='#L219'>219</a>
285
- <a name='L220'></a><a href='#L220'>220</a>
286
- <a name='L221'></a><a href='#L221'>221</a>
287
- <a name='L222'></a><a href='#L222'>222</a>
288
- <a name='L223'></a><a href='#L223'>223</a>
289
- <a name='L224'></a><a href='#L224'>224</a>
290
- <a name='L225'></a><a href='#L225'>225</a>
291
- <a name='L226'></a><a href='#L226'>226</a>
292
- <a name='L227'></a><a href='#L227'>227</a>
293
- <a name='L228'></a><a href='#L228'>228</a>
294
- <a name='L229'></a><a href='#L229'>229</a>
295
- <a name='L230'></a><a href='#L230'>230</a>
296
- <a name='L231'></a><a href='#L231'>231</a>
297
- <a name='L232'></a><a href='#L232'>232</a>
298
- <a name='L233'></a><a href='#L233'>233</a>
299
- <a name='L234'></a><a href='#L234'>234</a>
300
- <a name='L235'></a><a href='#L235'>235</a>
301
- <a name='L236'></a><a href='#L236'>236</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
302
- <span class="cline-any cline-neutral">&nbsp;</span>
303
- <span class="cline-any cline-neutral">&nbsp;</span>
304
- <span class="cline-any cline-neutral">&nbsp;</span>
305
- <span class="cline-any cline-neutral">&nbsp;</span>
306
- <span class="cline-any cline-neutral">&nbsp;</span>
307
- <span class="cline-any cline-neutral">&nbsp;</span>
308
- <span class="cline-any cline-neutral">&nbsp;</span>
309
- <span class="cline-any cline-neutral">&nbsp;</span>
310
- <span class="cline-any cline-neutral">&nbsp;</span>
311
- <span class="cline-any cline-neutral">&nbsp;</span>
312
- <span class="cline-any cline-neutral">&nbsp;</span>
313
- <span class="cline-any cline-neutral">&nbsp;</span>
314
- <span class="cline-any cline-neutral">&nbsp;</span>
315
- <span class="cline-any cline-neutral">&nbsp;</span>
316
- <span class="cline-any cline-neutral">&nbsp;</span>
317
- <span class="cline-any cline-neutral">&nbsp;</span>
318
- <span class="cline-any cline-neutral">&nbsp;</span>
319
- <span class="cline-any cline-neutral">&nbsp;</span>
320
- <span class="cline-any cline-neutral">&nbsp;</span>
321
- <span class="cline-any cline-neutral">&nbsp;</span>
322
- <span class="cline-any cline-neutral">&nbsp;</span>
323
- <span class="cline-any cline-neutral">&nbsp;</span>
324
- <span class="cline-any cline-neutral">&nbsp;</span>
325
- <span class="cline-any cline-neutral">&nbsp;</span>
326
- <span class="cline-any cline-neutral">&nbsp;</span>
327
- <span class="cline-any cline-neutral">&nbsp;</span>
328
- <span class="cline-any cline-neutral">&nbsp;</span>
329
- <span class="cline-any cline-neutral">&nbsp;</span>
330
- <span class="cline-any cline-neutral">&nbsp;</span>
331
- <span class="cline-any cline-yes">1x</span>
332
- <span class="cline-any cline-yes">1x</span>
333
- <span class="cline-any cline-yes">1x</span>
334
- <span class="cline-any cline-neutral">&nbsp;</span>
335
- <span class="cline-any cline-neutral">&nbsp;</span>
336
- <span class="cline-any cline-neutral">&nbsp;</span>
337
- <span class="cline-any cline-neutral">&nbsp;</span>
338
- <span class="cline-any cline-neutral">&nbsp;</span>
339
- <span class="cline-any cline-yes">1x</span>
340
- <span class="cline-any cline-yes">130x</span>
341
- <span class="cline-any cline-yes">130x</span>
342
- <span class="cline-any cline-yes">130x</span>
343
- <span class="cline-any cline-yes">130x</span>
344
- <span class="cline-any cline-yes">130x</span>
345
- <span class="cline-any cline-neutral">&nbsp;</span>
346
- <span class="cline-any cline-yes">1x</span>
347
- <span class="cline-any cline-yes">43x</span>
348
- <span class="cline-any cline-neutral">&nbsp;</span>
349
- <span class="cline-any cline-yes">43x</span>
350
- <span class="cline-any cline-yes">43x</span>
351
- <span class="cline-any cline-yes">43x</span>
352
- <span class="cline-any cline-yes">43x</span>
353
- <span class="cline-any cline-neutral">&nbsp;</span>
354
- <span class="cline-any cline-yes">43x</span>
355
- <span class="cline-any cline-yes">65x</span>
356
- <span class="cline-any cline-yes">65x</span>
357
- <span class="cline-any cline-yes">65x</span>
358
- <span class="cline-any cline-yes">65x</span>
359
- <span class="cline-any cline-yes">43x</span>
360
- <span class="cline-any cline-neutral">&nbsp;</span>
361
- <span class="cline-any cline-yes">1x</span>
362
- <span class="cline-any cline-yes">91x</span>
363
- <span class="cline-any cline-neutral">&nbsp;</span>
364
- <span class="cline-any cline-yes">91x</span>
365
- <span class="cline-any cline-yes">2x</span>
366
- <span class="cline-any cline-yes">2x</span>
367
- <span class="cline-any cline-neutral">&nbsp;</span>
368
- <span class="cline-any cline-yes">89x</span>
369
- <span class="cline-any cline-yes">91x</span>
370
- <span class="cline-any cline-yes">35x</span>
371
- <span class="cline-any cline-yes">35x</span>
372
- <span class="cline-any cline-neutral">&nbsp;</span>
373
- <span class="cline-any cline-yes">54x</span>
374
- <span class="cline-any cline-yes">54x</span>
375
- <span class="cline-any cline-yes">54x</span>
376
- <span class="cline-any cline-yes">54x</span>
377
- <span class="cline-any cline-yes">54x</span>
378
- <span class="cline-any cline-yes">54x</span>
379
- <span class="cline-any cline-yes">54x</span>
380
- <span class="cline-any cline-yes">91x</span>
381
- <span class="cline-any cline-neutral">&nbsp;</span>
382
- <span class="cline-any cline-yes">1x</span>
383
- <span class="cline-any cline-yes">10x</span>
384
- <span class="cline-any cline-yes">10x</span>
385
- <span class="cline-any cline-yes">9x</span>
386
- <span class="cline-any cline-yes">9x</span>
387
- <span class="cline-any cline-yes">7x</span>
388
- <span class="cline-any cline-yes">7x</span>
389
- <span class="cline-any cline-yes">9x</span>
390
- <span class="cline-any cline-yes">3x</span>
391
- <span class="cline-any cline-yes">10x</span>
392
- <span class="cline-any cline-neutral">&nbsp;</span>
393
- <span class="cline-any cline-yes">1x</span>
394
- <span class="cline-any cline-yes">79x</span>
395
- <span class="cline-any cline-neutral">&nbsp;</span>
396
- <span class="cline-any cline-yes">79x</span>
397
- <span class="cline-any cline-yes">1x</span>
398
- <span class="cline-any cline-yes">1x</span>
399
- <span class="cline-any cline-neutral">&nbsp;</span>
400
- <span class="cline-any cline-yes">78x</span>
401
- <span class="cline-any cline-neutral">&nbsp;</span>
402
- <span class="cline-any cline-yes">78x</span>
403
- <span class="cline-any cline-yes">47x</span>
404
- <span class="cline-any cline-yes">47x</span>
405
- <span class="cline-any cline-yes">45x</span>
406
- <span class="cline-any cline-yes">45x</span>
407
- <span class="cline-any cline-yes">45x</span>
408
- <span class="cline-any cline-yes">45x</span>
409
- <span class="cline-any cline-yes">45x</span>
410
- <span class="cline-any cline-yes">45x</span>
411
- <span class="cline-any cline-yes">45x</span>
412
- <span class="cline-any cline-yes">45x</span>
413
- <span class="cline-any cline-yes">45x</span>
414
- <span class="cline-any cline-neutral">&nbsp;</span>
415
- <span class="cline-any cline-yes">45x</span>
416
- <span class="cline-any cline-yes">45x</span>
417
- <span class="cline-any cline-yes">45x</span>
418
- <span class="cline-any cline-yes">45x</span>
419
- <span class="cline-any cline-yes">45x</span>
420
- <span class="cline-any cline-yes">47x</span>
421
- <span class="cline-any cline-yes">79x</span>
422
- <span class="cline-any cline-neutral">&nbsp;</span>
423
- <span class="cline-any cline-yes">1x</span>
424
- <span class="cline-any cline-yes">260x</span>
425
- <span class="cline-any cline-yes">260x</span>
426
- <span class="cline-any cline-neutral">&nbsp;</span>
427
- <span class="cline-any cline-yes">1x</span>
428
- <span class="cline-any cline-yes">43x</span>
429
- <span class="cline-any cline-yes">43x</span>
430
- <span class="cline-any cline-neutral">&nbsp;</span>
431
- <span class="cline-any cline-yes">1x</span>
432
- <span class="cline-any cline-yes">54x</span>
433
- <span class="cline-any cline-yes">54x</span>
434
- <span class="cline-any cline-neutral">&nbsp;</span>
435
- <span class="cline-any cline-yes">54x</span>
436
- <span class="cline-any cline-yes">21x</span>
437
- <span class="cline-any cline-yes">21x</span>
438
- <span class="cline-any cline-neutral">&nbsp;</span>
439
- <span class="cline-any cline-yes">33x</span>
440
- <span class="cline-any cline-yes">33x</span>
441
- <span class="cline-any cline-yes">33x</span>
442
- <span class="cline-any cline-yes">33x</span>
443
- <span class="cline-any cline-yes">33x</span>
444
- <span class="cline-any cline-yes">33x</span>
445
- <span class="cline-any cline-yes">33x</span>
446
- <span class="cline-any cline-yes">33x</span>
447
- <span class="cline-any cline-neutral">&nbsp;</span>
448
- <span class="cline-any cline-yes">33x</span>
449
- <span class="cline-any cline-yes">54x</span>
450
- <span class="cline-any cline-neutral">&nbsp;</span>
451
- <span class="cline-any cline-yes">1x</span>
452
- <span class="cline-any cline-yes">54x</span>
453
- <span class="cline-any cline-yes">54x</span>
454
- <span class="cline-any cline-yes">54x</span>
455
- <span class="cline-any cline-yes">54x</span>
456
- <span class="cline-any cline-yes">54x</span>
457
- <span class="cline-any cline-yes">54x</span>
458
- <span class="cline-any cline-yes">54x</span>
459
- <span class="cline-any cline-yes">54x</span>
460
- <span class="cline-any cline-yes">54x</span>
461
- <span class="cline-any cline-neutral">&nbsp;</span>
462
- <span class="cline-any cline-yes">1x</span>
463
- <span class="cline-any cline-yes">189x</span>
464
- <span class="cline-any cline-yes">189x</span>
465
- <span class="cline-any cline-neutral">&nbsp;</span>
466
- <span class="cline-any cline-yes">1x</span>
467
- <span class="cline-any cline-yes">45x</span>
468
- <span class="cline-any cline-neutral">&nbsp;</span>
469
- <span class="cline-any cline-yes">45x</span>
470
- <span class="cline-any cline-yes">15x</span>
471
- <span class="cline-any cline-yes">15x</span>
472
- <span class="cline-any cline-neutral">&nbsp;</span>
473
- <span class="cline-any cline-yes">30x</span>
474
- <span class="cline-any cline-yes">30x</span>
475
- <span class="cline-any cline-neutral">&nbsp;</span>
476
- <span class="cline-any cline-yes">30x</span>
477
- <span class="cline-any cline-yes">30x</span>
478
- <span class="cline-any cline-yes">5x</span>
479
- <span class="cline-any cline-yes">5x</span>
480
- <span class="cline-any cline-yes">5x</span>
481
- <span class="cline-any cline-yes">5x</span>
482
- <span class="cline-any cline-neutral">&nbsp;</span>
483
- <span class="cline-any cline-yes">30x</span>
484
- <span class="cline-any cline-yes">30x</span>
485
- <span class="cline-any cline-neutral">&nbsp;</span>
486
- <span class="cline-any cline-yes">30x</span>
487
- <span class="cline-any cline-yes">30x</span>
488
- <span class="cline-any cline-yes">30x</span>
489
- <span class="cline-any cline-yes">30x</span>
490
- <span class="cline-any cline-yes">30x</span>
491
- <span class="cline-any cline-yes">30x</span>
492
- <span class="cline-any cline-yes">30x</span>
493
- <span class="cline-any cline-yes">30x</span>
494
- <span class="cline-any cline-neutral">&nbsp;</span>
495
- <span class="cline-any cline-yes">27x</span>
496
- <span class="cline-any cline-yes">27x</span>
497
- <span class="cline-any cline-yes">27x</span>
498
- <span class="cline-any cline-yes">27x</span>
499
- <span class="cline-any cline-yes">27x</span>
500
- <span class="cline-any cline-yes">27x</span>
501
- <span class="cline-any cline-yes">27x</span>
502
- <span class="cline-any cline-yes">45x</span>
503
- <span class="cline-any cline-yes">3x</span>
504
- <span class="cline-any cline-yes">3x</span>
505
- <span class="cline-any cline-yes">2x</span>
506
- <span class="cline-any cline-yes">2x</span>
507
- <span class="cline-any cline-yes">2x</span>
508
- <span class="cline-any cline-yes">3x</span>
509
- <span class="cline-any cline-yes">3x</span>
510
- <span class="cline-any cline-yes">3x</span>
511
- <span class="cline-any cline-yes">3x</span>
512
- <span class="cline-any cline-yes">3x</span>
513
- <span class="cline-any cline-yes">3x</span>
514
- <span class="cline-any cline-yes">3x</span>
515
- <span class="cline-any cline-yes">3x</span>
516
- <span class="cline-any cline-yes">45x</span>
517
- <span class="cline-any cline-neutral">&nbsp;</span>
518
- <span class="cline-any cline-yes">1x</span>
519
- <span class="cline-any cline-yes">30x</span>
520
- <span class="cline-any cline-yes">30x</span>
521
- <span class="cline-any cline-yes">45x</span>
522
- <span class="cline-any cline-yes">45x</span>
523
- <span class="cline-any cline-yes">30x</span>
524
- <span class="cline-any cline-yes">30x</span>
525
- <span class="cline-any cline-neutral">&nbsp;</span>
526
- <span class="cline-any cline-yes">1x</span>
527
- <span class="cline-any cline-yes">27x</span>
528
- <span class="cline-any cline-yes">27x</span>
529
- <span class="cline-any cline-yes">27x</span>
530
- <span class="cline-any cline-yes">3x</span>
531
- <span class="cline-any cline-yes">3x</span>
532
- <span class="cline-any cline-yes">3x</span>
533
- <span class="cline-any cline-neutral">&nbsp;</span>
534
- <span class="cline-any cline-yes">27x</span>
535
- <span class="cline-any cline-yes">1x</span>
536
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import type { Command, Event } from '@auto-engineer/message-bus';
537
- import type { SettledEvent, SettledInstanceDocument } from '../projections/settled-instance-projection';
538
- import type { PipelineReadModel } from '../store/pipeline-read-model';
539
- &nbsp;
540
- type SendFunction = (commandType: string, data: unknown) =&gt; void;
541
- &nbsp;
542
- type SettledHandler = (events: Record&lt;string, Event[]&gt;, send: SendFunction) =&gt; void | { persist: boolean };
543
- &nbsp;
544
- interface SettledHandlerRegistration {
545
- commandTypes: readonly string[];
546
- handler: SettledHandler;
547
- }
548
- &nbsp;
549
- interface HandlerTemplate {
550
- id: string;
551
- registration: SettledHandlerRegistration;
552
- }
553
- &nbsp;
554
- interface SettledErrorContext {
555
- commandTypes: readonly string[];
556
- correlationId: string;
557
- }
558
- &nbsp;
559
- interface SettledTrackerOptions {
560
- readModel: PipelineReadModel;
561
- onDispatch?: (commandType: string, data: unknown, correlationId: string) =&gt; void;
562
- onError?: (error: unknown, context: SettledErrorContext) =&gt; void;
563
- onEventEmit?: (event: SettledEvent) =&gt; void | Promise&lt;void&gt;;
564
- }
565
- &nbsp;
566
- export class SettledTracker {
567
- private handlerTemplates = new Map&lt;string, HandlerTemplate&gt;();
568
- private commandToTemplateIds = new Map&lt;string, Set&lt;string&gt;&gt;();
569
- private readonly readModel: PipelineReadModel;
570
- private readonly onDispatch?: (commandType: string, data: unknown, correlationId: string) =&gt; void;
571
- private readonly onError?: (error: unknown, context: SettledErrorContext) =&gt; void;
572
- private readonly onEventEmit?: (event: SettledEvent) =&gt; void | Promise&lt;void&gt;;
573
- &nbsp;
574
- constructor(options: SettledTrackerOptions) {
575
- this.readModel = options.readModel;
576
- this.onDispatch = options.onDispatch;
577
- this.onError = options.onError;
578
- this.onEventEmit = options.onEventEmit;
579
- }
580
- &nbsp;
581
- registerHandler(registration: SettledHandlerRegistration): void {
582
- const templateId = this.generateTemplateId(registration);
583
- &nbsp;
584
- this.handlerTemplates.set(templateId, {
585
- id: templateId,
586
- registration,
587
- });
588
- &nbsp;
589
- for (const commandType of registration.commandTypes) {
590
- const existing = this.commandToTemplateIds.get(commandType) ?? new Set&lt;string&gt;();
591
- existing.add(templateId);
592
- this.commandToTemplateIds.set(commandType, existing);
593
- }
594
- }
595
- &nbsp;
596
- async onCommandStarted(command: Command): Promise&lt;void&gt; {
597
- const { type: commandType, correlationId, requestId } = command;
598
- &nbsp;
599
- if (!this.isValidId(correlationId) || !this.isValidId(requestId)) {
600
- return;
601
- }
602
- &nbsp;
603
- const templateIds = this.commandToTemplateIds.get(commandType);
604
- if (!templateIds) {
605
- return;
606
- }
607
- &nbsp;
608
- for (const templateId of templateIds) {
609
- const template = this.handlerTemplates.get(templateId);
610
- if (template) {
611
- await this.ensureInstanceExists(template, correlationId);
612
- await this.markCommandStarted(template.id, correlationId, commandType);
613
- }
614
- }
615
- }
616
- &nbsp;
617
- async isWaitingForAsync(correlationId: string, commandType: string): Promise&lt;boolean&gt; {
618
- const instances = await this.readModel.getActiveSettledInstances(correlationId);
619
- for (const instance of instances) {
620
- const tracker = instance.commandTrackers.find((t) =&gt; t.commandType === commandType);
621
- if (tracker?.hasStarted === true &amp;&amp; tracker.hasCompleted === false) {
622
- return true;
623
- }
624
- }
625
- return false;
626
- }
627
- &nbsp;
628
- async onEventReceived(event: Event, sourceCommandType: string): Promise&lt;void&gt; {
629
- const correlationId = event.correlationId;
630
- &nbsp;
631
- if (!this.isValidId(correlationId)) {
632
- return;
633
- }
634
- &nbsp;
635
- const instances = await this.readModel.getActiveSettledInstances(correlationId);
636
- &nbsp;
637
- for (const instanceDoc of instances) {
638
- const tracker = instanceDoc.commandTrackers.find((t) =&gt; t.commandType === sourceCommandType);
639
- if (tracker &amp;&amp; !tracker.hasCompleted) {
640
- await this.emitEvent({
641
- type: 'SettledEventReceived',
642
- data: {
643
- templateId: instanceDoc.templateId,
644
- correlationId,
645
- commandType: sourceCommandType,
646
- event,
647
- },
648
- });
649
- &nbsp;
650
- const updatedInstance = await this.readModel.getSettledInstance(instanceDoc.templateId, correlationId);
651
- if (updatedInstance) {
652
- await this.checkAndFireHandler(updatedInstance);
653
- }
654
- }
655
- }
656
- }
657
- &nbsp;
658
- private isValidId(id: string | undefined): id is string {
659
- return id !== undefined &amp;&amp; id !== null &amp;&amp; id !== '';
660
- }
661
- &nbsp;
662
- private generateTemplateId(registration: SettledHandlerRegistration): string {
663
- return `template-${registration.commandTypes.join(',')}`;
664
- }
665
- &nbsp;
666
- private async ensureInstanceExists(template: HandlerTemplate, correlationId: string): Promise&lt;boolean&gt; {
667
- const existing = await this.readModel.getSettledInstance(template.id, correlationId);
668
- const isActiveInstance = existing !== null &amp;&amp; existing.status === 'active';
669
- &nbsp;
670
- if (isActiveInstance) {
671
- return false;
672
- }
673
- &nbsp;
674
- await this.emitEvent({
675
- type: 'SettledInstanceCreated',
676
- data: {
677
- templateId: template.id,
678
- correlationId,
679
- commandTypes: template.registration.commandTypes,
680
- },
681
- });
682
- &nbsp;
683
- return true;
684
- }
685
- &nbsp;
686
- private async markCommandStarted(templateId: string, correlationId: string, commandType: string): Promise&lt;void&gt; {
687
- await this.emitEvent({
688
- type: 'SettledCommandStarted',
689
- data: {
690
- templateId,
691
- correlationId,
692
- commandType,
693
- },
694
- });
695
- }
696
- &nbsp;
697
- private async emitEvent(event: SettledEvent): Promise&lt;void&gt; {
698
- await this.onEventEmit?.(event);
699
- }
700
- &nbsp;
701
- private async checkAndFireHandler(instanceDoc: SettledInstanceDocument): Promise&lt;void&gt; {
702
- const allComplete = instanceDoc.commandTrackers.every((tracker) =&gt; tracker.hasStarted &amp;&amp; tracker.hasCompleted);
703
- &nbsp;
704
- if (!allComplete) {
705
- return;
706
- }
707
- &nbsp;
708
- const template = this.handlerTemplates.get(instanceDoc.templateId)!;
709
- const eventsByCommandType = this.collectEventsFromDoc(instanceDoc);
710
- &nbsp;
711
- try {
712
- const send: SendFunction = (commandType, data) =&gt; {
713
- if (this.onDispatch) {
714
- this.onDispatch(commandType, data, instanceDoc.correlationId);
715
- }
716
- };
717
- &nbsp;
718
- const result = template.registration.handler(eventsByCommandType, send);
719
- const persist = this.shouldPersist(result);
720
- &nbsp;
721
- await this.emitEvent({
722
- type: 'SettledHandlerFired',
723
- data: {
724
- templateId: instanceDoc.templateId,
725
- correlationId: instanceDoc.correlationId,
726
- persist,
727
- },
728
- });
729
- &nbsp;
730
- await this.emitEvent({
731
- type: 'SettledInstanceReset',
732
- data: {
733
- templateId: instanceDoc.templateId,
734
- correlationId: instanceDoc.correlationId,
735
- },
736
- });
737
- } catch (error) {
738
- const commandTypes = instanceDoc.commandTrackers.map((t) =&gt; t.commandType);
739
- this.onError?.(error, {
740
- commandTypes,
741
- correlationId: instanceDoc.correlationId,
742
- });
743
- await this.emitEvent({
744
- type: 'SettledInstanceCleaned',
745
- data: {
746
- templateId: instanceDoc.templateId,
747
- correlationId: instanceDoc.correlationId,
748
- },
749
- });
750
- }
751
- }
752
- &nbsp;
753
- private collectEventsFromDoc(instanceDoc: SettledInstanceDocument): Record&lt;string, Event[]&gt; {
754
- const events: Record&lt;string, Event[]&gt; = {};
755
- for (const tracker of instanceDoc.commandTrackers) {
756
- events[tracker.commandType] = [...tracker.events];
757
- }
758
- return events;
759
- }
760
- &nbsp;
761
- private shouldPersist(result: void | { persist: boolean }): boolean {
762
- return (
763
- result !== null &amp;&amp;
764
- result !== undefined &amp;&amp;
765
- typeof result === 'object' &amp;&amp;
766
- 'persist' in result &amp;&amp;
767
- result.persist === true
768
- );
769
- }
770
- }
771
- &nbsp;</pre></td></tr></table></pre>
772
-
773
- <div class='push'></div><!-- for sticky footer -->
774
- </div><!-- /wrapper -->
775
- <div class='footer quiet pad2 space-top1 center small'>
776
- Code coverage generated by
777
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
778
- at 2026-01-06T00:27:41.742Z
779
- </div>
780
- <script src="../prettify.js"></script>
781
- <script>
782
- window.onload = function () {
783
- prettyPrint();
784
- };
785
- </script>
786
- <script src="../sorter.js"></script>
787
- <script src="../block-navigation.js"></script>
788
- </body>
789
- </html>
790
-