@c15t/backend 0.0.1-rc.24 → 1.0.5

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 (168) hide show
  1. package/.turbo/turbo-build.log +10 -10
  2. package/.turbo/turbo-fmt.log +3 -3
  3. package/README.md +19 -7
  4. package/dist/core.d.ts +0 -2
  5. package/dist/core.d.ts.map +1 -1
  6. package/dist/index.cjs +2 -7
  7. package/dist/index.js +2 -7
  8. package/dist/init.d.ts +0 -1
  9. package/dist/init.d.ts.map +1 -1
  10. package/dist/pkgs/db-adapters/adapters/drizzle-adapter/drizzle-adapter.d.ts +0 -3
  11. package/dist/pkgs/db-adapters/adapters/drizzle-adapter/drizzle-adapter.d.ts.map +1 -1
  12. package/dist/pkgs/db-adapters/adapters/kysely-adapter/dialect.d.ts +0 -2
  13. package/dist/pkgs/db-adapters/adapters/kysely-adapter/dialect.d.ts.map +1 -1
  14. package/dist/pkgs/db-adapters/adapters/kysely-adapter/kysely-adapter.d.ts +0 -1
  15. package/dist/pkgs/db-adapters/adapters/kysely-adapter/kysely-adapter.d.ts.map +1 -1
  16. package/dist/pkgs/db-adapters/adapters/kysely-adapter/types.d.ts +0 -2
  17. package/dist/pkgs/db-adapters/adapters/kysely-adapter/types.d.ts.map +1 -1
  18. package/dist/pkgs/db-adapters/adapters/memory-adapter/memory-adapter.d.ts +0 -1
  19. package/dist/pkgs/db-adapters/adapters/memory-adapter/memory-adapter.d.ts.map +1 -1
  20. package/dist/pkgs/db-adapters/adapters/prisma-adapter/prisma-adapter.d.ts +0 -1
  21. package/dist/pkgs/db-adapters/adapters/prisma-adapter/prisma-adapter.d.ts.map +1 -1
  22. package/dist/pkgs/logger/types.d.ts +1 -1
  23. package/dist/pkgs/logger/types.d.ts.map +1 -1
  24. package/dist/pkgs/types/context.d.ts +0 -4
  25. package/dist/pkgs/types/context.d.ts.map +1 -1
  26. package/dist/pkgs/types/options.d.ts +0 -1
  27. package/dist/pkgs/types/options.d.ts.map +1 -1
  28. package/dist/types/options.d.ts +0 -1
  29. package/dist/types/options.d.ts.map +1 -1
  30. package/package.json +3 -4
  31. package/src/core.ts +0 -2
  32. package/src/init.test.ts +0 -17
  33. package/src/init.ts +1 -22
  34. package/src/pkgs/db-adapters/adapters/drizzle-adapter/drizzle-adapter.ts +0 -3
  35. package/src/pkgs/db-adapters/adapters/kysely-adapter/dialect.ts +0 -2
  36. package/src/pkgs/db-adapters/adapters/kysely-adapter/kysely-adapter.ts +0 -1
  37. package/src/pkgs/db-adapters/adapters/kysely-adapter/types.ts +0 -2
  38. package/src/pkgs/db-adapters/adapters/memory-adapter/memory-adapter.ts +0 -1
  39. package/src/pkgs/db-adapters/adapters/prisma-adapter/prisma-adapter.ts +0 -1
  40. package/src/pkgs/logger/types.ts +1 -5
  41. package/src/pkgs/types/context.ts +0 -5
  42. package/src/pkgs/types/options.ts +0 -1
  43. package/src/types/options.ts +0 -1
  44. package/.turbo/turbo-test.log +0 -551
  45. package/coverage/coverage-final.json +0 -83
  46. package/coverage/coverage-summary.json +0 -84
  47. package/coverage/html/backend/index.html +0 -116
  48. package/coverage/html/backend/rslib.config.ts.html +0 -424
  49. package/coverage/html/backend/src/core.ts.html +0 -796
  50. package/coverage/html/backend/src/index.html +0 -131
  51. package/coverage/html/backend/src/init.ts.html +0 -1072
  52. package/coverage/html/backend/src/integrations/cloudflare.ts.html +0 -889
  53. package/coverage/html/backend/src/integrations/index.html +0 -146
  54. package/coverage/html/backend/src/integrations/next.ts.html +0 -691
  55. package/coverage/html/backend/src/integrations/node.ts.html +0 -505
  56. package/coverage/html/backend/src/pkgs/api-router/hooks/index.html +0 -116
  57. package/coverage/html/backend/src/pkgs/api-router/hooks/processor.ts.html +0 -538
  58. package/coverage/html/backend/src/pkgs/api-router/index.html +0 -131
  59. package/coverage/html/backend/src/pkgs/api-router/index.ts.html +0 -529
  60. package/coverage/html/backend/src/pkgs/api-router/telemetry.ts.html +0 -334
  61. package/coverage/html/backend/src/pkgs/api-router/utils/cors.ts.html +0 -304
  62. package/coverage/html/backend/src/pkgs/api-router/utils/define-route.ts.html +0 -1315
  63. package/coverage/html/backend/src/pkgs/api-router/utils/index.html +0 -146
  64. package/coverage/html/backend/src/pkgs/api-router/utils/ip.ts.html +0 -361
  65. package/coverage/html/backend/src/pkgs/data-model/fields/field-factory.ts.html +0 -709
  66. package/coverage/html/backend/src/pkgs/data-model/fields/id-generator.ts.html +0 -256
  67. package/coverage/html/backend/src/pkgs/data-model/fields/index.html +0 -161
  68. package/coverage/html/backend/src/pkgs/data-model/fields/superjson-utils.ts.html +0 -136
  69. package/coverage/html/backend/src/pkgs/data-model/fields/zod-fields.ts.html +0 -496
  70. package/coverage/html/backend/src/pkgs/data-model/hooks/create-hooks.ts.html +0 -349
  71. package/coverage/html/backend/src/pkgs/data-model/hooks/index.html +0 -176
  72. package/coverage/html/backend/src/pkgs/data-model/hooks/update-hooks.ts.html +0 -358
  73. package/coverage/html/backend/src/pkgs/data-model/hooks/update-many-hooks.ts.html +0 -613
  74. package/coverage/html/backend/src/pkgs/data-model/hooks/utils.ts.html +0 -538
  75. package/coverage/html/backend/src/pkgs/data-model/hooks/with-hooks-factory.ts.html +0 -289
  76. package/coverage/html/backend/src/pkgs/db-adapters/adapter-factory.ts.html +0 -277
  77. package/coverage/html/backend/src/pkgs/db-adapters/adapters/drizzle-adapter/drizzle-adapter.ts.html +0 -2212
  78. package/coverage/html/backend/src/pkgs/db-adapters/adapters/drizzle-adapter/index.html +0 -116
  79. package/coverage/html/backend/src/pkgs/db-adapters/adapters/index.html +0 -116
  80. package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/dialect.ts.html +0 -676
  81. package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/index.html +0 -131
  82. package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/kysely-adapter.ts.html +0 -3637
  83. package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/tests/index.html +0 -116
  84. package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/tests/test-utils.ts.html +0 -1417
  85. package/coverage/html/backend/src/pkgs/db-adapters/adapters/memory-adapter/index.html +0 -116
  86. package/coverage/html/backend/src/pkgs/db-adapters/adapters/memory-adapter/memory-adapter.ts.html +0 -2074
  87. package/coverage/html/backend/src/pkgs/db-adapters/adapters/prisma-adapter/index.html +0 -116
  88. package/coverage/html/backend/src/pkgs/db-adapters/adapters/prisma-adapter/prisma-adapter.ts.html +0 -1837
  89. package/coverage/html/backend/src/pkgs/db-adapters/adapters/test.ts.html +0 -316
  90. package/coverage/html/backend/src/pkgs/db-adapters/index.html +0 -131
  91. package/coverage/html/backend/src/pkgs/db-adapters/utils.ts.html +0 -238
  92. package/coverage/html/backend/src/pkgs/logger/console-formatter.ts.html +0 -310
  93. package/coverage/html/backend/src/pkgs/logger/index.html +0 -176
  94. package/coverage/html/backend/src/pkgs/logger/log-levels.ts.html +0 -223
  95. package/coverage/html/backend/src/pkgs/logger/logger-factory.ts.html +0 -448
  96. package/coverage/html/backend/src/pkgs/logger/result-logging.ts.html +0 -487
  97. package/coverage/html/backend/src/pkgs/logger/telemetry.ts.html +0 -373
  98. package/coverage/html/backend/src/pkgs/migrations/get-migration.ts.html +0 -343
  99. package/coverage/html/backend/src/pkgs/migrations/get-schema/get-schema.ts.html +0 -217
  100. package/coverage/html/backend/src/pkgs/migrations/get-schema/index.html +0 -146
  101. package/coverage/html/backend/src/pkgs/migrations/get-schema/process-fields.ts.html +0 -280
  102. package/coverage/html/backend/src/pkgs/migrations/get-schema/process-tables.ts.html +0 -289
  103. package/coverage/html/backend/src/pkgs/migrations/index.html +0 -176
  104. package/coverage/html/backend/src/pkgs/migrations/migration-builders.ts.html +0 -595
  105. package/coverage/html/backend/src/pkgs/migrations/migration-execution.ts.html +0 -301
  106. package/coverage/html/backend/src/pkgs/migrations/schema-comparison.ts.html +0 -691
  107. package/coverage/html/backend/src/pkgs/migrations/type-mapping.ts.html +0 -817
  108. package/coverage/html/backend/src/pkgs/results/core/error-class.ts.html +0 -1012
  109. package/coverage/html/backend/src/pkgs/results/core/error-codes.ts.html +0 -703
  110. package/coverage/html/backend/src/pkgs/results/core/index.html +0 -146
  111. package/coverage/html/backend/src/pkgs/results/core/tracing.ts.html +0 -280
  112. package/coverage/html/backend/src/pkgs/results/create-telemetry-options.ts.html +0 -271
  113. package/coverage/html/backend/src/pkgs/results/h3-integration.ts.html +0 -511
  114. package/coverage/html/backend/src/pkgs/results/index.html +0 -131
  115. package/coverage/html/backend/src/pkgs/results/pipeline/index.html +0 -131
  116. package/coverage/html/backend/src/pkgs/results/pipeline/retrieval-pipeline.ts.html +0 -649
  117. package/coverage/html/backend/src/pkgs/results/pipeline/validation-pipeline.ts.html +0 -577
  118. package/coverage/html/backend/src/pkgs/results/results/index.html +0 -131
  119. package/coverage/html/backend/src/pkgs/results/results/recovery-utils.ts.html +0 -628
  120. package/coverage/html/backend/src/pkgs/results/results/result-helpers.ts.html +0 -1234
  121. package/coverage/html/backend/src/pkgs/utils/env.ts.html +0 -337
  122. package/coverage/html/backend/src/pkgs/utils/index.html +0 -131
  123. package/coverage/html/backend/src/pkgs/utils/url.ts.html +0 -400
  124. package/coverage/html/backend/src/routes/index.html +0 -176
  125. package/coverage/html/backend/src/routes/index.ts.html +0 -121
  126. package/coverage/html/backend/src/routes/set-consent.ts.html +0 -832
  127. package/coverage/html/backend/src/routes/show-consent-banner.ts.html +0 -478
  128. package/coverage/html/backend/src/routes/status.ts.html +0 -268
  129. package/coverage/html/backend/src/routes/verify-consent.ts.html +0 -703
  130. package/coverage/html/backend/src/schema/audit-log/index.html +0 -146
  131. package/coverage/html/backend/src/schema/audit-log/registry.ts.html +0 -436
  132. package/coverage/html/backend/src/schema/audit-log/schema.ts.html +0 -223
  133. package/coverage/html/backend/src/schema/audit-log/table.ts.html +0 -640
  134. package/coverage/html/backend/src/schema/consent/index.html +0 -146
  135. package/coverage/html/backend/src/schema/consent/registry.ts.html +0 -616
  136. package/coverage/html/backend/src/schema/consent/schema.ts.html +0 -238
  137. package/coverage/html/backend/src/schema/consent/table.ts.html +0 -748
  138. package/coverage/html/backend/src/schema/consent-policy/index.html +0 -146
  139. package/coverage/html/backend/src/schema/consent-policy/registry.ts.html +0 -1063
  140. package/coverage/html/backend/src/schema/consent-policy/schema.ts.html +0 -265
  141. package/coverage/html/backend/src/schema/consent-policy/table.ts.html +0 -535
  142. package/coverage/html/backend/src/schema/consent-purpose/index.html +0 -146
  143. package/coverage/html/backend/src/schema/consent-purpose/registry.ts.html +0 -589
  144. package/coverage/html/backend/src/schema/consent-purpose/schema.ts.html +0 -259
  145. package/coverage/html/backend/src/schema/consent-purpose/table.ts.html +0 -547
  146. package/coverage/html/backend/src/schema/consent-record/index.html +0 -131
  147. package/coverage/html/backend/src/schema/consent-record/schema.ts.html +0 -211
  148. package/coverage/html/backend/src/schema/consent-record/table.ts.html +0 -457
  149. package/coverage/html/backend/src/schema/create-registry.ts.html +0 -148
  150. package/coverage/html/backend/src/schema/definition.ts.html +0 -685
  151. package/coverage/html/backend/src/schema/domain/index.html +0 -146
  152. package/coverage/html/backend/src/schema/domain/registry.ts.html +0 -973
  153. package/coverage/html/backend/src/schema/domain/schema.ts.html +0 -214
  154. package/coverage/html/backend/src/schema/domain/table.ts.html +0 -496
  155. package/coverage/html/backend/src/schema/index.html +0 -146
  156. package/coverage/html/backend/src/schema/schemas.ts.html +0 -166
  157. package/coverage/html/backend/src/schema/subject/index.html +0 -146
  158. package/coverage/html/backend/src/schema/subject/registry.ts.html +0 -973
  159. package/coverage/html/backend/src/schema/subject/schema.ts.html +0 -208
  160. package/coverage/html/backend/src/schema/subject/table.ts.html +0 -499
  161. package/coverage/html/base.css +0 -224
  162. package/coverage/html/block-navigation.js +0 -87
  163. package/coverage/html/favicon.png +0 -0
  164. package/coverage/html/index.html +0 -581
  165. package/coverage/html/prettify.css +0 -1
  166. package/coverage/html/prettify.js +0 -2
  167. package/coverage/html/sort-arrow-sprite.png +0 -0
  168. package/coverage/html/sorter.js +0 -196
@@ -1,334 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for backend/src/pkgs/api-router/telemetry.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</a> telemetry.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">0% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>0/29</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">0% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>0/14</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">0% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>0/4</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">0% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>0/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 low'></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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
150
- <span class="cline-any cline-neutral">&nbsp;</span>
151
- <span class="cline-any cline-neutral">&nbsp;</span>
152
- <span class="cline-any cline-no">&nbsp;</span>
153
- <span class="cline-any cline-neutral">&nbsp;</span>
154
- <span class="cline-any cline-neutral">&nbsp;</span>
155
- <span class="cline-any cline-neutral">&nbsp;</span>
156
- <span class="cline-any cline-neutral">&nbsp;</span>
157
- <span class="cline-any cline-no">&nbsp;</span>
158
- <span class="cline-any cline-no">&nbsp;</span>
159
- <span class="cline-any cline-no">&nbsp;</span>
160
- <span class="cline-any cline-neutral">&nbsp;</span>
161
- <span class="cline-any cline-no">&nbsp;</span>
162
- <span class="cline-any cline-neutral">&nbsp;</span>
163
- <span class="cline-any cline-neutral">&nbsp;</span>
164
- <span class="cline-any cline-neutral">&nbsp;</span>
165
- <span class="cline-any cline-neutral">&nbsp;</span>
166
- <span class="cline-any cline-neutral">&nbsp;</span>
167
- <span class="cline-any cline-no">&nbsp;</span>
168
- <span class="cline-any cline-neutral">&nbsp;</span>
169
- <span class="cline-any cline-neutral">&nbsp;</span>
170
- <span class="cline-any cline-neutral">&nbsp;</span>
171
- <span class="cline-any cline-neutral">&nbsp;</span>
172
- <span class="cline-any cline-no">&nbsp;</span>
173
- <span class="cline-any cline-no">&nbsp;</span>
174
- <span class="cline-any cline-neutral">&nbsp;</span>
175
- <span class="cline-any cline-neutral">&nbsp;</span>
176
- <span class="cline-any cline-no">&nbsp;</span>
177
- <span class="cline-any cline-no">&nbsp;</span>
178
- <span class="cline-any cline-neutral">&nbsp;</span>
179
- <span class="cline-any cline-neutral">&nbsp;</span>
180
- <span class="cline-any cline-neutral">&nbsp;</span>
181
- <span class="cline-any cline-neutral">&nbsp;</span>
182
- <span class="cline-any cline-neutral">&nbsp;</span>
183
- <span class="cline-any cline-neutral">&nbsp;</span>
184
- <span class="cline-any cline-neutral">&nbsp;</span>
185
- <span class="cline-any cline-no">&nbsp;</span>
186
- <span class="cline-any cline-neutral">&nbsp;</span>
187
- <span class="cline-any cline-neutral">&nbsp;</span>
188
- <span class="cline-any cline-neutral">&nbsp;</span>
189
- <span class="cline-any cline-neutral">&nbsp;</span>
190
- <span class="cline-any cline-neutral">&nbsp;</span>
191
- <span class="cline-any cline-no">&nbsp;</span>
192
- <span class="cline-any cline-neutral">&nbsp;</span>
193
- <span class="cline-any cline-neutral">&nbsp;</span>
194
- <span class="cline-any cline-neutral">&nbsp;</span>
195
- <span class="cline-any cline-neutral">&nbsp;</span>
196
- <span class="cline-any cline-neutral">&nbsp;</span>
197
- <span class="cline-any cline-no">&nbsp;</span>
198
- <span class="cline-any cline-neutral">&nbsp;</span>
199
- <span class="cline-any cline-no">&nbsp;</span>
200
- <span class="cline-any cline-no">&nbsp;</span>
201
- <span class="cline-any cline-neutral">&nbsp;</span>
202
- <span class="cline-any cline-neutral">&nbsp;</span>
203
- <span class="cline-any cline-no">&nbsp;</span>
204
- <span class="cline-any cline-no">&nbsp;</span>
205
- <span class="cline-any cline-no">&nbsp;</span>
206
- <span class="cline-any cline-no">&nbsp;</span>
207
- <span class="cline-any cline-neutral">&nbsp;</span>
208
- <span class="cline-any cline-no">&nbsp;</span>
209
- <span class="cline-any cline-no">&nbsp;</span>
210
- <span class="cline-any cline-neutral">&nbsp;</span>
211
- <span class="cline-any cline-no">&nbsp;</span>
212
- <span class="cline-any cline-neutral">&nbsp;</span>
213
- <span class="cline-any cline-neutral">&nbsp;</span>
214
- <span class="cline-any cline-neutral">&nbsp;</span>
215
- <span class="cline-any cline-neutral">&nbsp;</span>
216
- <span class="cline-any cline-neutral">&nbsp;</span>
217
- <span class="cline-any cline-neutral">&nbsp;</span>
218
- <span class="cline-any cline-no">&nbsp;</span>
219
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
225
- <span class="cline-any cline-no">&nbsp;</span>
226
- <span class="cline-any cline-no">&nbsp;</span>
227
- <span class="cline-any cline-no">&nbsp;</span>
228
- <span class="cline-any cline-no">&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></td><td class="text"><pre class="prettyprint lang-js">import { type Span, SpanStatusCode, trace } from '@opentelemetry/api';
233
- import type { DoubleTieOptions } from '../types/options';
234
- &nbsp;
235
- const API_ROUTER_TRACER_NAME = <span class="cstat-no" title="statement not covered" >'@doubletie/api-router';</span>
236
- &nbsp;
237
- /**
238
- * Gets or creates a tracer for the api-router package
239
- */
240
- export const getTracer = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >(o</span>ptions?: DoubleTieOptions) =&gt; {</span>
241
- <span class="cstat-no" title="statement not covered" > if (options?.telemetry?.tracer) {</span>
242
- <span class="cstat-no" title="statement not covered" > return options.telemetry.tracer;</span>
243
- }
244
- <span class="cstat-no" title="statement not covered" > return trace.getTracer(API_ROUTER_TRACER_NAME);</span>
245
- };
246
- &nbsp;
247
- /**
248
- * Creates a span for an API request
249
- */
250
- export const createRequestSpan = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >(</span></span>
251
- method: string,
252
- path: string,
253
- options?: DoubleTieOptions
254
- ) =&gt; {
255
- <span class="cstat-no" title="statement not covered" > if (options?.telemetry?.disabled) {</span>
256
- <span class="cstat-no" title="statement not covered" > return null;</span>
257
- }
258
- &nbsp;
259
- const tracer = <span class="cstat-no" title="statement not covered" >getTracer(options);</span>
260
- const span = <span class="cstat-no" title="statement not covered" >tracer.startSpan(`${method} ${path}`, {</span>
261
- attributes: {
262
- 'http.method': method,
263
- 'http.path': path,
264
- ...(options?.telemetry?.defaultAttributes || {}),
265
- },
266
- });
267
- &nbsp;
268
- <span class="cstat-no" title="statement not covered" > return span;</span>
269
- };
270
- &nbsp;
271
- /**
272
- * Wraps an API request handler in a span
273
- */
274
- export const withRequestSpan = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >async &lt;T&gt;(</span></span>
275
- method: string,
276
- path: string,
277
- operation: () =&gt; Promise&lt;T&gt;,
278
- options?: DoubleTieOptions
279
- ): Promise&lt;T&gt; =&gt; {
280
- const span = <span class="cstat-no" title="statement not covered" >createRequestSpan(method, path, options);</span>
281
- &nbsp;
282
- <span class="cstat-no" title="statement not covered" > if (!span) {</span>
283
- <span class="cstat-no" title="statement not covered" > return operation();</span>
284
- }
285
- &nbsp;
286
- <span class="cstat-no" title="statement not covered" > try {</span>
287
- const result = <span class="cstat-no" title="statement not covered" >await operation();</span>
288
- <span class="cstat-no" title="statement not covered" > span.setStatus({ code: SpanStatusCode.OK });</span>
289
- <span class="cstat-no" title="statement not covered" > return result;</span>
290
- } catch (error) {
291
- <span class="cstat-no" title="statement not covered" > handleSpanError(span, error);</span>
292
- <span class="cstat-no" title="statement not covered" > throw error;</span>
293
- } finally {
294
- <span class="cstat-no" title="statement not covered" > span.end();</span>
295
- }
296
- };
297
- &nbsp;
298
- /**
299
- * Handles errors in spans
300
- */
301
- const handleSpanError = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >(s</span>pan: Span, error: unknown) =&gt; {</span>
302
- <span class="cstat-no" title="statement not covered" > span.setStatus({</span>
303
- code: SpanStatusCode.ERROR,
304
- message: error instanceof Error ? error.message : String(error),
305
- });
306
- &nbsp;
307
- <span class="cstat-no" title="statement not covered" > if (error instanceof Error) {</span>
308
- <span class="cstat-no" title="statement not covered" > span.setAttribute('error.type', error.name);</span>
309
- <span class="cstat-no" title="statement not covered" > span.setAttribute('error.message', error.message);</span>
310
- <span class="cstat-no" title="statement not covered" > if (error.stack) {</span>
311
- <span class="cstat-no" title="statement not covered" > span.setAttribute('error.stack', error.stack);</span>
312
- }
313
- }
314
- };
315
- &nbsp;</pre></td></tr></table></pre>
316
-
317
- <div class='push'></div><!-- for sticky footer -->
318
- </div><!-- /wrapper -->
319
- <div class='footer quiet pad2 space-top1 center small'>
320
- Code coverage generated by
321
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
322
- at 2025-04-14T10:55:46.797Z
323
- </div>
324
- <script src="../../../../prettify.js"></script>
325
- <script>
326
- window.onload = function () {
327
- prettyPrint();
328
- };
329
- </script>
330
- <script src="../../../../sorter.js"></script>
331
- <script src="../../../../block-navigation.js"></script>
332
- </body>
333
- </html>
334
-
@@ -1,304 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for backend/src/pkgs/api-router/utils/cors.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/utils</a> cors.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">85.71% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>24/28</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">83.33% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>10/12</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'>2/2</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">85.71% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>24/28</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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
140
- <span class="cline-any cline-neutral">&nbsp;</span>
141
- <span class="cline-any cline-neutral">&nbsp;</span>
142
- <span class="cline-any cline-neutral">&nbsp;</span>
143
- <span class="cline-any cline-neutral">&nbsp;</span>
144
- <span class="cline-any cline-yes">1x</span>
145
- <span class="cline-any cline-neutral">&nbsp;</span>
146
- <span class="cline-any cline-neutral">&nbsp;</span>
147
- <span class="cline-any cline-neutral">&nbsp;</span>
148
- <span class="cline-any cline-neutral">&nbsp;</span>
149
- <span class="cline-any cline-neutral">&nbsp;</span>
150
- <span class="cline-any cline-neutral">&nbsp;</span>
151
- <span class="cline-any cline-neutral">&nbsp;</span>
152
- <span class="cline-any cline-neutral">&nbsp;</span>
153
- <span class="cline-any cline-neutral">&nbsp;</span>
154
- <span class="cline-any cline-neutral">&nbsp;</span>
155
- <span class="cline-any cline-neutral">&nbsp;</span>
156
- <span class="cline-any cline-neutral">&nbsp;</span>
157
- <span class="cline-any cline-neutral">&nbsp;</span>
158
- <span class="cline-any cline-yes">25x</span>
159
- <span class="cline-any cline-yes">25x</span>
160
- <span class="cline-any cline-yes">1x</span>
161
- <span class="cline-any cline-neutral">&nbsp;</span>
162
- <span class="cline-any cline-neutral">&nbsp;</span>
163
- <span class="cline-any cline-yes">24x</span>
164
- <span class="cline-any cline-neutral">&nbsp;</span>
165
- <span class="cline-any cline-neutral">&nbsp;</span>
166
- <span class="cline-any cline-neutral">&nbsp;</span>
167
- <span class="cline-any cline-neutral">&nbsp;</span>
168
- <span class="cline-any cline-yes">24x</span>
169
- <span class="cline-any cline-no">&nbsp;</span>
170
- <span class="cline-any cline-no">&nbsp;</span>
171
- <span class="cline-any cline-neutral">&nbsp;</span>
172
- <span class="cline-any cline-neutral">&nbsp;</span>
173
- <span class="cline-any cline-neutral">&nbsp;</span>
174
- <span class="cline-any cline-yes">24x</span>
175
- <span class="cline-any cline-yes">22x</span>
176
- <span class="cline-any cline-yes">22x</span>
177
- <span class="cline-any cline-neutral">&nbsp;</span>
178
- <span class="cline-any cline-yes">22x</span>
179
- <span class="cline-any cline-neutral">&nbsp;</span>
180
- <span class="cline-any cline-yes">24x</span>
181
- <span class="cline-any cline-no">&nbsp;</span>
182
- <span class="cline-any cline-no">&nbsp;</span>
183
- <span class="cline-any cline-neutral">&nbsp;</span>
184
- <span class="cline-any cline-neutral">&nbsp;</span>
185
- <span class="cline-any cline-yes">24x</span>
186
- <span class="cline-any cline-yes">24x</span>
187
- <span class="cline-any cline-neutral">&nbsp;</span>
188
- <span class="cline-any cline-yes">24x</span>
189
- <span class="cline-any cline-neutral">&nbsp;</span>
190
- <span class="cline-any cline-yes">7x</span>
191
- <span class="cline-any cline-yes">7x</span>
192
- <span class="cline-any cline-neutral">&nbsp;</span>
193
- <span class="cline-any cline-neutral">&nbsp;</span>
194
- <span class="cline-any cline-yes">7x</span>
195
- <span class="cline-any cline-yes">7x</span>
196
- <span class="cline-any cline-neutral">&nbsp;</span>
197
- <span class="cline-any cline-neutral">&nbsp;</span>
198
- <span class="cline-any cline-yes">7x</span>
199
- <span class="cline-any cline-neutral">&nbsp;</span>
200
- <span class="cline-any cline-neutral">&nbsp;</span>
201
- <span class="cline-any cline-yes">17x</span>
202
- <span class="cline-any cline-yes">17x</span>
203
- <span class="cline-any cline-neutral">&nbsp;</span>
204
- <span class="cline-any cline-neutral">&nbsp;</span>
205
- <span class="cline-any cline-yes">17x</span>
206
- <span class="cline-any cline-neutral">&nbsp;</span>
207
- <span class="cline-any cline-neutral">&nbsp;</span>
208
- <span class="cline-any cline-yes">3x</span>
209
- <span class="cline-any cline-yes">3x</span>
210
- <span class="cline-any cline-neutral">&nbsp;</span>
211
- <span class="cline-any cline-neutral">&nbsp;</span>
212
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import type { Logger } from '~/pkgs/logger';
213
- &nbsp;
214
- /**
215
- * Regex to strip protocol, trailing slashes, and port numbers from URLs
216
- */
217
- export const STRIP_REGEX = /^(https?:\/\/)|(wss?:\/\/)|(\/+$)|:\d+/g;
218
- &nbsp;
219
- /**
220
- * Validates if a given origin matches a trusted domain pattern
221
- *
222
- * @param origin - The origin to validate
223
- * @param trustedDomains - Array of trusted domain patterns (can include wildcard)
224
- * @returns boolean indicating if the origin is trusted
225
- */
226
- export function isOriginTrusted(
227
- origin: string,
228
- trustedDomains: string[],
229
- logger?: Logger
230
- ): boolean {
231
- try {
232
- if (trustedDomains.length === 0) {
233
- throw new Error('No trusted domains');
234
- }
235
- &nbsp;
236
- logger?.debug(
237
- `Checking if origin ${origin} is trusted in ${trustedDomains}`
238
- );
239
- &nbsp;
240
- // Special case: if "*" is in trusted domains, allow all origins
241
- <span class="missing-if-branch" title="if path not taken" >I</span>if (trustedDomains.includes('*')) {
242
- <span class="cstat-no" title="statement not covered" > logger?.debug('Allowing all origins');</span>
243
- <span class="cstat-no" title="statement not covered" > return true;</span>
244
- }
245
- &nbsp;
246
- // Parse the origin URL to get just the hostname
247
- const url = new URL(origin);
248
- const originHostname = url.hostname.toLowerCase();
249
- logger?.debug(`Parsed origin hostname: ${originHostname}`);
250
- &nbsp;
251
- return trustedDomains.some((domain) =&gt; {
252
- // Handle empty domains (which might come from splitting empty strings)
253
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!domain || domain.trim() === '') {
254
- <span class="cstat-no" title="statement not covered" > logger?.debug('Skipping empty domain');</span>
255
- <span class="cstat-no" title="statement not covered" > return false;</span>
256
- }
257
- &nbsp;
258
- const strippedDomain = domain.replace(STRIP_REGEX, '').toLowerCase();
259
- logger?.debug(`Checking against stripped domain: ${strippedDomain}`);
260
- &nbsp;
261
- if (strippedDomain.startsWith('*.')) {
262
- // For wildcard domains, ensure there is at least one subdomain
263
- const wildcardDomain = strippedDomain.slice(2); // Remove *. prefix
264
- const parts = originHostname.split('.');
265
- &nbsp;
266
- const isValid =
267
- parts.length &gt; 2 &amp;&amp; originHostname.endsWith(wildcardDomain);
268
- logger?.debug(
269
- `Wildcard match result: ${isValid} ${originHostname} ends with ${wildcardDomain} ${parts.length &gt; 2} ${originHostname.endsWith(wildcardDomain)}`
270
- );
271
- return isValid;
272
- }
273
- &nbsp;
274
- const isMatch = originHostname === strippedDomain;
275
- logger?.debug(
276
- `Exact match result: ${isMatch} ${originHostname} === ${strippedDomain}`
277
- );
278
- return isMatch;
279
- });
280
- } catch (error) {
281
- logger?.error('Error validating origin:', error);
282
- return false;
283
- }
284
- }
285
- &nbsp;</pre></td></tr></table></pre>
286
-
287
- <div class='push'></div><!-- for sticky footer -->
288
- </div><!-- /wrapper -->
289
- <div class='footer quiet pad2 space-top1 center small'>
290
- Code coverage generated by
291
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
292
- at 2025-04-14T10:55:46.797Z
293
- </div>
294
- <script src="../../../../../prettify.js"></script>
295
- <script>
296
- window.onload = function () {
297
- prettyPrint();
298
- };
299
- </script>
300
- <script src="../../../../../sorter.js"></script>
301
- <script src="../../../../../block-navigation.js"></script>
302
- </body>
303
- </html>
304
-