@c15t/backend 0.0.1-rc.21 → 0.0.1-rc.22

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 (132) hide show
  1. package/.turbo/turbo-build.log +28 -28
  2. package/.turbo/turbo-fmt.log +3 -3
  3. package/.turbo/turbo-test.log +382 -35
  4. package/coverage/coverage-final.json +83 -0
  5. package/coverage/coverage-summary.json +84 -0
  6. package/coverage/html/backend/index.html +116 -0
  7. package/coverage/html/backend/rslib.config.ts.html +424 -0
  8. package/coverage/html/backend/src/core.ts.html +796 -0
  9. package/coverage/html/backend/src/index.html +131 -0
  10. package/coverage/html/backend/src/init.ts.html +1072 -0
  11. package/coverage/html/backend/src/integrations/cloudflare.ts.html +889 -0
  12. package/coverage/html/backend/src/integrations/index.html +146 -0
  13. package/coverage/html/backend/src/integrations/next.ts.html +691 -0
  14. package/coverage/html/backend/src/integrations/node.ts.html +505 -0
  15. package/coverage/html/backend/src/pkgs/api-router/hooks/index.html +116 -0
  16. package/coverage/html/backend/src/pkgs/api-router/hooks/processor.ts.html +538 -0
  17. package/coverage/html/backend/src/pkgs/api-router/index.html +131 -0
  18. package/coverage/html/backend/src/pkgs/api-router/index.ts.html +529 -0
  19. package/coverage/html/backend/src/pkgs/api-router/telemetry.ts.html +334 -0
  20. package/coverage/html/backend/src/pkgs/api-router/utils/cors.ts.html +304 -0
  21. package/coverage/html/backend/src/pkgs/api-router/utils/define-route.ts.html +1315 -0
  22. package/coverage/html/backend/src/pkgs/api-router/utils/index.html +146 -0
  23. package/coverage/html/backend/src/pkgs/api-router/utils/ip.ts.html +361 -0
  24. package/coverage/html/backend/src/pkgs/data-model/fields/field-factory.ts.html +709 -0
  25. package/coverage/html/backend/src/pkgs/data-model/fields/id-generator.ts.html +256 -0
  26. package/coverage/html/backend/src/pkgs/data-model/fields/index.html +161 -0
  27. package/coverage/html/backend/src/pkgs/data-model/fields/superjson-utils.ts.html +136 -0
  28. package/coverage/html/backend/src/pkgs/data-model/fields/zod-fields.ts.html +496 -0
  29. package/coverage/html/backend/src/pkgs/data-model/hooks/create-hooks.ts.html +349 -0
  30. package/coverage/html/backend/src/pkgs/data-model/hooks/index.html +176 -0
  31. package/coverage/html/backend/src/pkgs/data-model/hooks/update-hooks.ts.html +358 -0
  32. package/coverage/html/backend/src/pkgs/data-model/hooks/update-many-hooks.ts.html +613 -0
  33. package/coverage/html/backend/src/pkgs/data-model/hooks/utils.ts.html +538 -0
  34. package/coverage/html/backend/src/pkgs/data-model/hooks/with-hooks-factory.ts.html +289 -0
  35. package/coverage/html/backend/src/pkgs/db-adapters/adapter-factory.ts.html +277 -0
  36. package/coverage/html/backend/src/pkgs/db-adapters/adapters/drizzle-adapter/drizzle-adapter.ts.html +2212 -0
  37. package/coverage/html/backend/src/pkgs/db-adapters/adapters/drizzle-adapter/index.html +116 -0
  38. package/coverage/html/backend/src/pkgs/db-adapters/adapters/index.html +116 -0
  39. package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/dialect.ts.html +676 -0
  40. package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/index.html +131 -0
  41. package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/kysely-adapter.ts.html +3637 -0
  42. package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/tests/index.html +116 -0
  43. package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/tests/test-utils.ts.html +1417 -0
  44. package/coverage/html/backend/src/pkgs/db-adapters/adapters/memory-adapter/index.html +116 -0
  45. package/coverage/html/backend/src/pkgs/db-adapters/adapters/memory-adapter/memory-adapter.ts.html +2074 -0
  46. package/coverage/html/backend/src/pkgs/db-adapters/adapters/prisma-adapter/index.html +116 -0
  47. package/coverage/html/backend/src/pkgs/db-adapters/adapters/prisma-adapter/prisma-adapter.ts.html +1837 -0
  48. package/coverage/html/backend/src/pkgs/db-adapters/adapters/test.ts.html +316 -0
  49. package/coverage/html/backend/src/pkgs/db-adapters/index.html +131 -0
  50. package/coverage/html/backend/src/pkgs/db-adapters/utils.ts.html +238 -0
  51. package/coverage/html/backend/src/pkgs/logger/console-formatter.ts.html +310 -0
  52. package/coverage/html/backend/src/pkgs/logger/index.html +176 -0
  53. package/coverage/html/backend/src/pkgs/logger/log-levels.ts.html +223 -0
  54. package/coverage/html/backend/src/pkgs/logger/logger-factory.ts.html +448 -0
  55. package/coverage/html/backend/src/pkgs/logger/result-logging.ts.html +487 -0
  56. package/coverage/html/backend/src/pkgs/logger/telemetry.ts.html +373 -0
  57. package/coverage/html/backend/src/pkgs/migrations/get-migration.ts.html +343 -0
  58. package/coverage/html/backend/src/pkgs/migrations/get-schema/get-schema.ts.html +217 -0
  59. package/coverage/html/backend/src/pkgs/migrations/get-schema/index.html +146 -0
  60. package/coverage/html/backend/src/pkgs/migrations/get-schema/process-fields.ts.html +280 -0
  61. package/coverage/html/backend/src/pkgs/migrations/get-schema/process-tables.ts.html +289 -0
  62. package/coverage/html/backend/src/pkgs/migrations/index.html +176 -0
  63. package/coverage/html/backend/src/pkgs/migrations/migration-builders.ts.html +595 -0
  64. package/coverage/html/backend/src/pkgs/migrations/migration-execution.ts.html +301 -0
  65. package/coverage/html/backend/src/pkgs/migrations/schema-comparison.ts.html +691 -0
  66. package/coverage/html/backend/src/pkgs/migrations/type-mapping.ts.html +817 -0
  67. package/coverage/html/backend/src/pkgs/results/core/error-class.ts.html +1012 -0
  68. package/coverage/html/backend/src/pkgs/results/core/error-codes.ts.html +703 -0
  69. package/coverage/html/backend/src/pkgs/results/core/index.html +146 -0
  70. package/coverage/html/backend/src/pkgs/results/core/tracing.ts.html +280 -0
  71. package/coverage/html/backend/src/pkgs/results/create-telemetry-options.ts.html +271 -0
  72. package/coverage/html/backend/src/pkgs/results/h3-integration.ts.html +511 -0
  73. package/coverage/html/backend/src/pkgs/results/index.html +131 -0
  74. package/coverage/html/backend/src/pkgs/results/pipeline/index.html +131 -0
  75. package/coverage/html/backend/src/pkgs/results/pipeline/retrieval-pipeline.ts.html +649 -0
  76. package/coverage/html/backend/src/pkgs/results/pipeline/validation-pipeline.ts.html +577 -0
  77. package/coverage/html/backend/src/pkgs/results/results/index.html +131 -0
  78. package/coverage/html/backend/src/pkgs/results/results/recovery-utils.ts.html +628 -0
  79. package/coverage/html/backend/src/pkgs/results/results/result-helpers.ts.html +1234 -0
  80. package/coverage/html/backend/src/pkgs/utils/env.ts.html +337 -0
  81. package/coverage/html/backend/src/pkgs/utils/index.html +131 -0
  82. package/coverage/html/backend/src/pkgs/utils/url.ts.html +400 -0
  83. package/coverage/html/backend/src/routes/index.html +176 -0
  84. package/coverage/html/backend/src/routes/index.ts.html +121 -0
  85. package/coverage/html/backend/src/routes/set-consent.ts.html +832 -0
  86. package/coverage/html/backend/src/routes/show-consent-banner.ts.html +478 -0
  87. package/coverage/html/backend/src/routes/status.ts.html +268 -0
  88. package/coverage/html/backend/src/routes/verify-consent.ts.html +703 -0
  89. package/coverage/html/backend/src/schema/audit-log/index.html +146 -0
  90. package/coverage/html/backend/src/schema/audit-log/registry.ts.html +436 -0
  91. package/coverage/html/backend/src/schema/audit-log/schema.ts.html +223 -0
  92. package/coverage/html/backend/src/schema/audit-log/table.ts.html +640 -0
  93. package/coverage/html/backend/src/schema/consent/index.html +146 -0
  94. package/coverage/html/backend/src/schema/consent/registry.ts.html +616 -0
  95. package/coverage/html/backend/src/schema/consent/schema.ts.html +238 -0
  96. package/coverage/html/backend/src/schema/consent/table.ts.html +748 -0
  97. package/coverage/html/backend/src/schema/consent-policy/index.html +146 -0
  98. package/coverage/html/backend/src/schema/consent-policy/registry.ts.html +1063 -0
  99. package/coverage/html/backend/src/schema/consent-policy/schema.ts.html +265 -0
  100. package/coverage/html/backend/src/schema/consent-policy/table.ts.html +535 -0
  101. package/coverage/html/backend/src/schema/consent-purpose/index.html +146 -0
  102. package/coverage/html/backend/src/schema/consent-purpose/registry.ts.html +589 -0
  103. package/coverage/html/backend/src/schema/consent-purpose/schema.ts.html +259 -0
  104. package/coverage/html/backend/src/schema/consent-purpose/table.ts.html +547 -0
  105. package/coverage/html/backend/src/schema/consent-record/index.html +131 -0
  106. package/coverage/html/backend/src/schema/consent-record/schema.ts.html +211 -0
  107. package/coverage/html/backend/src/schema/consent-record/table.ts.html +457 -0
  108. package/coverage/html/backend/src/schema/create-registry.ts.html +148 -0
  109. package/coverage/html/backend/src/schema/definition.ts.html +685 -0
  110. package/coverage/html/backend/src/schema/domain/index.html +146 -0
  111. package/coverage/html/backend/src/schema/domain/registry.ts.html +973 -0
  112. package/coverage/html/backend/src/schema/domain/schema.ts.html +214 -0
  113. package/coverage/html/backend/src/schema/domain/table.ts.html +496 -0
  114. package/coverage/html/backend/src/schema/index.html +146 -0
  115. package/coverage/html/backend/src/schema/schemas.ts.html +166 -0
  116. package/coverage/html/backend/src/schema/subject/index.html +146 -0
  117. package/coverage/html/backend/src/schema/subject/registry.ts.html +973 -0
  118. package/coverage/html/backend/src/schema/subject/schema.ts.html +208 -0
  119. package/coverage/html/backend/src/schema/subject/table.ts.html +499 -0
  120. package/coverage/html/base.css +224 -0
  121. package/coverage/html/block-navigation.js +87 -0
  122. package/coverage/html/favicon.png +0 -0
  123. package/coverage/html/index.html +581 -0
  124. package/coverage/html/prettify.css +1 -0
  125. package/coverage/html/prettify.js +2 -0
  126. package/coverage/html/sort-arrow-sprite.png +0 -0
  127. package/coverage/html/sorter.js +196 -0
  128. package/dist/index.cjs +1 -1
  129. package/dist/index.js +1 -1
  130. package/package.json +8 -6
  131. package/vitest.config.ts +14 -11
  132. package/.turbo/turbo-lint.log +0 -6
@@ -0,0 +1,538 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for backend/src/pkgs/api-router/hooks/processor.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">backend/src/pkgs/api-router/hooks</a> processor.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">93.54% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>29/31</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">96.66% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>29/30</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">66.66% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>4/6</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'>29/29</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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
218
+ <span class="cline-any cline-neutral">&nbsp;</span>
219
+ <span class="cline-any cline-neutral">&nbsp;</span>
220
+ <span class="cline-any cline-neutral">&nbsp;</span>
221
+ <span class="cline-any cline-neutral">&nbsp;</span>
222
+ <span class="cline-any cline-neutral">&nbsp;</span>
223
+ <span class="cline-any cline-neutral">&nbsp;</span>
224
+ <span class="cline-any cline-neutral">&nbsp;</span>
225
+ <span class="cline-any cline-neutral">&nbsp;</span>
226
+ <span class="cline-any cline-neutral">&nbsp;</span>
227
+ <span class="cline-any cline-neutral">&nbsp;</span>
228
+ <span class="cline-any cline-neutral">&nbsp;</span>
229
+ <span class="cline-any cline-neutral">&nbsp;</span>
230
+ <span class="cline-any cline-neutral">&nbsp;</span>
231
+ <span class="cline-any cline-neutral">&nbsp;</span>
232
+ <span class="cline-any cline-neutral">&nbsp;</span>
233
+ <span class="cline-any cline-neutral">&nbsp;</span>
234
+ <span class="cline-any cline-neutral">&nbsp;</span>
235
+ <span class="cline-any cline-neutral">&nbsp;</span>
236
+ <span class="cline-any cline-neutral">&nbsp;</span>
237
+ <span class="cline-any cline-neutral">&nbsp;</span>
238
+ <span class="cline-any cline-neutral">&nbsp;</span>
239
+ <span class="cline-any cline-neutral">&nbsp;</span>
240
+ <span class="cline-any cline-neutral">&nbsp;</span>
241
+ <span class="cline-any cline-neutral">&nbsp;</span>
242
+ <span class="cline-any cline-neutral">&nbsp;</span>
243
+ <span class="cline-any cline-neutral">&nbsp;</span>
244
+ <span class="cline-any cline-neutral">&nbsp;</span>
245
+ <span class="cline-any cline-neutral">&nbsp;</span>
246
+ <span class="cline-any cline-neutral">&nbsp;</span>
247
+ <span class="cline-any cline-neutral">&nbsp;</span>
248
+ <span class="cline-any cline-neutral">&nbsp;</span>
249
+ <span class="cline-any cline-neutral">&nbsp;</span>
250
+ <span class="cline-any cline-neutral">&nbsp;</span>
251
+ <span class="cline-any cline-neutral">&nbsp;</span>
252
+ <span class="cline-any cline-neutral">&nbsp;</span>
253
+ <span class="cline-any cline-neutral">&nbsp;</span>
254
+ <span class="cline-any cline-neutral">&nbsp;</span>
255
+ <span class="cline-any cline-neutral">&nbsp;</span>
256
+ <span class="cline-any cline-neutral">&nbsp;</span>
257
+ <span class="cline-any cline-neutral">&nbsp;</span>
258
+ <span class="cline-any cline-neutral">&nbsp;</span>
259
+ <span class="cline-any cline-neutral">&nbsp;</span>
260
+ <span class="cline-any cline-neutral">&nbsp;</span>
261
+ <span class="cline-any cline-neutral">&nbsp;</span>
262
+ <span class="cline-any cline-neutral">&nbsp;</span>
263
+ <span class="cline-any cline-neutral">&nbsp;</span>
264
+ <span class="cline-any cline-neutral">&nbsp;</span>
265
+ <span class="cline-any cline-yes">3x</span>
266
+ <span class="cline-any cline-yes">3x</span>
267
+ <span class="cline-any cline-yes">6x</span>
268
+ <span class="cline-any cline-yes">5x</span>
269
+ <span class="cline-any cline-yes">5x</span>
270
+ <span class="cline-any cline-yes">5x</span>
271
+ <span class="cline-any cline-yes">4x</span>
272
+ <span class="cline-any cline-neutral">&nbsp;</span>
273
+ <span class="cline-any cline-neutral">&nbsp;</span>
274
+ <span class="cline-any cline-yes">4x</span>
275
+ <span class="cline-any cline-yes">2x</span>
276
+ <span class="cline-any cline-yes">1x</span>
277
+ <span class="cline-any cline-yes">1x</span>
278
+ <span class="cline-any cline-neutral">&nbsp;</span>
279
+ <span class="cline-any cline-neutral">&nbsp;</span>
280
+ <span class="cline-any cline-yes">1x</span>
281
+ <span class="cline-any cline-neutral">&nbsp;</span>
282
+ <span class="cline-any cline-neutral">&nbsp;</span>
283
+ <span class="cline-any cline-yes">4x</span>
284
+ <span class="cline-any cline-yes">4x</span>
285
+ <span class="cline-any cline-neutral">&nbsp;</span>
286
+ <span class="cline-any cline-yes">1x</span>
287
+ <span class="cline-any cline-neutral">&nbsp;</span>
288
+ <span class="cline-any cline-neutral">&nbsp;</span>
289
+ <span class="cline-any cline-neutral">&nbsp;</span>
290
+ <span class="cline-any cline-yes">2x</span>
291
+ <span class="cline-any cline-neutral">&nbsp;</span>
292
+ <span class="cline-any cline-neutral">&nbsp;</span>
293
+ <span class="cline-any cline-neutral">&nbsp;</span>
294
+ <span class="cline-any cline-neutral">&nbsp;</span>
295
+ <span class="cline-any cline-neutral">&nbsp;</span>
296
+ <span class="cline-any cline-neutral">&nbsp;</span>
297
+ <span class="cline-any cline-neutral">&nbsp;</span>
298
+ <span class="cline-any cline-neutral">&nbsp;</span>
299
+ <span class="cline-any cline-neutral">&nbsp;</span>
300
+ <span class="cline-any cline-neutral">&nbsp;</span>
301
+ <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-neutral">&nbsp;</span>
332
+ <span class="cline-any cline-neutral">&nbsp;</span>
333
+ <span class="cline-any cline-neutral">&nbsp;</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-yes">3x</span>
339
+ <span class="cline-any cline-yes">3x</span>
340
+ <span class="cline-any cline-yes">3x</span>
341
+ <span class="cline-any cline-yes">6x</span>
342
+ <span class="cline-any cline-yes">4x</span>
343
+ <span class="cline-any cline-yes">4x</span>
344
+ <span class="cline-any cline-neutral">&nbsp;</span>
345
+ <span class="cline-any cline-neutral">&nbsp;</span>
346
+ <span class="cline-any cline-neutral">&nbsp;</span>
347
+ <span class="cline-any cline-neutral">&nbsp;</span>
348
+ <span class="cline-any cline-neutral">&nbsp;</span>
349
+ <span class="cline-any cline-yes">1x</span>
350
+ <span class="cline-any cline-neutral">&nbsp;</span>
351
+ <span class="cline-any cline-yes">4x</span>
352
+ <span class="cline-any cline-neutral">&nbsp;</span>
353
+ <span class="cline-any cline-neutral">&nbsp;</span>
354
+ <span class="cline-any cline-neutral">&nbsp;</span>
355
+ <span class="cline-any cline-neutral">&nbsp;</span>
356
+ <span class="cline-any cline-neutral">&nbsp;</span>
357
+ <span class="cline-any cline-yes">2x</span>
358
+ <span class="cline-any cline-yes">1x</span>
359
+ <span class="cline-any cline-neutral">&nbsp;</span>
360
+ <span class="cline-any cline-yes">2x</span>
361
+ <span class="cline-any cline-yes">2x</span>
362
+ <span class="cline-any cline-neutral">&nbsp;</span>
363
+ <span class="cline-any cline-neutral">&nbsp;</span>
364
+ <span class="cline-any cline-neutral">&nbsp;</span>
365
+ <span class="cline-any cline-neutral">&nbsp;</span>
366
+ <span class="cline-any cline-yes">3x</span>
367
+ <span class="cline-any cline-neutral">&nbsp;</span>
368
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import defu from 'defu';
369
+ import type { HookEndpointContext } from '~/pkgs/types';
370
+ import type { DoubleTieMiddleware } from '~/pkgs/types/options';
371
+ &nbsp;
372
+ /**
373
+ * Executes before hooks on the request context
374
+ *
375
+ * Runs through all matching hooks in sequence, accumulating and applying
376
+ * context modifications.
377
+ *
378
+ * @param context - The endpoint context to pass to hooks
379
+ * @param hooks - Array of hook definitions with matchers and handlers
380
+ * @returns Modified context or hook response
381
+ * @throws Will propagate any errors thrown by hook handlers that aren't caught internally
382
+ *
383
+ * @example
384
+ * ```typescript
385
+ * // Process before hooks for a request
386
+ * const beforeResult = await runBeforeHooks(context, [
387
+ * {
388
+ * matcher: ctx =&gt; ctx.path.startsWith('/users'),
389
+ * handler: authMiddleware
390
+ * },
391
+ * {
392
+ * matcher: ctx =&gt; ctx.method === 'GET',
393
+ * handler: cacheMiddleware
394
+ * }
395
+ * ]);
396
+ *
397
+ * // Check if we should continue with normal processing
398
+ * if ('context' in beforeResult) {
399
+ * // Apply context modifications and continue
400
+ * Object.assign(context, beforeResult.context);
401
+ * } else {
402
+ * // Short-circuit with the hook response
403
+ * return beforeResult;
404
+ * }
405
+ * ```
406
+ */
407
+ export async function runBeforeHooks(
408
+ context: HookEndpointContext,
409
+ hooks: {
410
+ matcher: (context: HookEndpointContext) =&gt; boolean;
411
+ handler: DoubleTieMiddleware;
412
+ }[]
413
+ ) {
414
+ let modifiedContext: {
415
+ headers?: Headers;
416
+ } = {};
417
+ for (const hook of hooks) {
418
+ if (hook.matcher(context)) {
419
+ const result = await hook.handler(context, <span class="fstat-no" title="function not covered" >async () =&gt; <span class="cstat-no" title="statement not covered" >P</span>romise.resolve())</span>;
420
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (result &amp;&amp; typeof result === 'object') {
421
+ if ('context' in result &amp;&amp; typeof result.context === 'object') {
422
+ const { headers, ...rest } = result.context as {
423
+ headers: Headers;
424
+ };
425
+ if (headers instanceof Headers) {
426
+ if (modifiedContext.headers) {
427
+ headers.forEach((value, key) =&gt; {
428
+ modifiedContext.headers?.set(key, value);
429
+ });
430
+ } else {
431
+ modifiedContext.headers = headers;
432
+ }
433
+ }
434
+ modifiedContext = defu(rest, modifiedContext);
435
+ continue;
436
+ }
437
+ return result;
438
+ }
439
+ }
440
+ }
441
+ return { context: modifiedContext };
442
+ }
443
+ &nbsp;
444
+ /**
445
+ * Executes after hooks on the response context
446
+ *
447
+ * Runs through all matching hooks in sequence after the endpoint handler has completed,
448
+ * allowing post-processing of responses.
449
+ *
450
+ * @param context - The endpoint context to pass to hooks
451
+ * @param hooks - Array of hook definitions with matchers and handlers
452
+ * @returns An object potentially containing a modified response
453
+ * @throws Will propagate any errors thrown by hook handlers that aren't caught internally
454
+ *
455
+ * @example
456
+ * ```typescript
457
+ * // Process after hooks for a response
458
+ * const afterResult = await runAfterHooks(context, [
459
+ * {
460
+ * matcher: ctx =&gt; true, // Run for all responses
461
+ * handler: loggingMiddleware
462
+ * },
463
+ * {
464
+ * matcher: ctx =&gt; ctx.method === 'GET',
465
+ * handler: cachingMiddleware
466
+ * }
467
+ * ]);
468
+ *
469
+ * // Apply any response modifications from hooks
470
+ * if (afterResult.response) {
471
+ * response = afterResult.response;
472
+ * }
473
+ *
474
+ * // Apply any header modifications from hooks
475
+ * if (afterResult.headers) {
476
+ * afterResult.headers.forEach((value, key) =&gt; {
477
+ * responseHeaders.set(key, value);
478
+ * });
479
+ * }
480
+ * ```
481
+ */
482
+ export async function runAfterHooks(
483
+ context: HookEndpointContext,
484
+ hooks: {
485
+ matcher: (context: HookEndpointContext) =&gt; boolean;
486
+ handler: DoubleTieMiddleware;
487
+ }[]
488
+ ) {
489
+ let headers: Headers | null = null;
490
+ let response: unknown = null;
491
+ for (const hook of hooks) {
492
+ if (hook.matcher(context)) {
493
+ const result = await hook.handler(context, <span class="fstat-no" title="function not covered" >async () =&gt; <span class="cstat-no" title="statement not covered" >P</span>romise.resolve())</span>;
494
+ if (
495
+ result &amp;&amp;
496
+ typeof result === 'object' &amp;&amp;
497
+ 'response' in result &amp;&amp;
498
+ result.response !== undefined
499
+ ) {
500
+ response = result.response;
501
+ }
502
+ if (
503
+ result &amp;&amp;
504
+ typeof result === 'object' &amp;&amp;
505
+ 'headers' in result &amp;&amp;
506
+ result.headers
507
+ ) {
508
+ if (!headers) {
509
+ headers = new Headers();
510
+ }
511
+ (result.headers as Headers).forEach((value, key) =&gt; {
512
+ headers?.set(key, value);
513
+ });
514
+ }
515
+ }
516
+ }
517
+ return { response, headers };
518
+ }
519
+ &nbsp;</pre></td></tr></table></pre>
520
+
521
+ <div class='push'></div><!-- for sticky footer -->
522
+ </div><!-- /wrapper -->
523
+ <div class='footer quiet pad2 space-top1 center small'>
524
+ Code coverage generated by
525
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
526
+ at 2025-04-14T01:06:14.959Z
527
+ </div>
528
+ <script src="../../../../../prettify.js"></script>
529
+ <script>
530
+ window.onload = function () {
531
+ prettyPrint();
532
+ };
533
+ </script>
534
+ <script src="../../../../../sorter.js"></script>
535
+ <script src="../../../../../block-navigation.js"></script>
536
+ </body>
537
+ </html>
538
+