@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,616 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for backend/src/schema/consent/registry.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/schema/consent</a> registry.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">33.33% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>3/9</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/4</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">33.33% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>1/3</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">33.33% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>3/9</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>
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></td><td class="line-coverage quiet"><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-neutral">&nbsp;</span>
266
+ <span class="cline-any cline-neutral">&nbsp;</span>
267
+ <span class="cline-any cline-neutral">&nbsp;</span>
268
+ <span class="cline-any cline-neutral">&nbsp;</span>
269
+ <span class="cline-any cline-neutral">&nbsp;</span>
270
+ <span class="cline-any cline-neutral">&nbsp;</span>
271
+ <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
275
+ <span class="cline-any cline-neutral">&nbsp;</span>
276
+ <span class="cline-any cline-neutral">&nbsp;</span>
277
+ <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</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-neutral">&nbsp;</span>
284
+ <span class="cline-any cline-neutral">&nbsp;</span>
285
+ <span class="cline-any cline-yes">11x</span>
286
+ <span class="cline-any cline-yes">11x</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-neutral">&nbsp;</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-no">&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-no">&nbsp;</span>
336
+ <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
340
+ <span class="cline-any cline-neutral">&nbsp;</span>
341
+ <span class="cline-any cline-neutral">&nbsp;</span>
342
+ <span class="cline-any cline-neutral">&nbsp;</span>
343
+ <span class="cline-any cline-neutral">&nbsp;</span>
344
+ <span class="cline-any cline-neutral">&nbsp;</span>
345
+ <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
350
+ <span class="cline-any cline-neutral">&nbsp;</span>
351
+ <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
358
+ <span class="cline-any cline-neutral">&nbsp;</span>
359
+ <span class="cline-any cline-neutral">&nbsp;</span>
360
+ <span class="cline-any cline-neutral">&nbsp;</span>
361
+ <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
367
+ <span class="cline-any cline-neutral">&nbsp;</span>
368
+ <span class="cline-any cline-neutral">&nbsp;</span>
369
+ <span class="cline-any cline-neutral">&nbsp;</span>
370
+ <span class="cline-any cline-neutral">&nbsp;</span>
371
+ <span class="cline-any cline-neutral">&nbsp;</span>
372
+ <span class="cline-any cline-neutral">&nbsp;</span>
373
+ <span class="cline-any cline-neutral">&nbsp;</span>
374
+ <span class="cline-any cline-neutral">&nbsp;</span>
375
+ <span class="cline-any cline-neutral">&nbsp;</span>
376
+ <span class="cline-any cline-neutral">&nbsp;</span>
377
+ <span class="cline-any cline-neutral">&nbsp;</span>
378
+ <span class="cline-any cline-neutral">&nbsp;</span>
379
+ <span class="cline-any cline-neutral">&nbsp;</span>
380
+ <span class="cline-any cline-neutral">&nbsp;</span>
381
+ <span class="cline-any cline-neutral">&nbsp;</span>
382
+ <span class="cline-any cline-neutral">&nbsp;</span>
383
+ <span class="cline-any cline-neutral">&nbsp;</span>
384
+ <span class="cline-any cline-neutral">&nbsp;</span>
385
+ <span class="cline-any cline-neutral">&nbsp;</span>
386
+ <span class="cline-any cline-neutral">&nbsp;</span>
387
+ <span class="cline-any cline-neutral">&nbsp;</span>
388
+ <span class="cline-any cline-neutral">&nbsp;</span>
389
+ <span class="cline-any cline-neutral">&nbsp;</span>
390
+ <span class="cline-any cline-neutral">&nbsp;</span>
391
+ <span class="cline-any cline-neutral">&nbsp;</span>
392
+ <span class="cline-any cline-neutral">&nbsp;</span>
393
+ <span class="cline-any cline-neutral">&nbsp;</span>
394
+ <span class="cline-any cline-neutral">&nbsp;</span>
395
+ <span class="cline-any cline-neutral">&nbsp;</span>
396
+ <span class="cline-any cline-neutral">&nbsp;</span>
397
+ <span class="cline-any cline-neutral">&nbsp;</span>
398
+ <span class="cline-any cline-neutral">&nbsp;</span>
399
+ <span class="cline-any cline-no">&nbsp;</span>
400
+ <span class="cline-any cline-neutral">&nbsp;</span>
401
+ <span class="cline-any cline-neutral">&nbsp;</span>
402
+ <span class="cline-any cline-neutral">&nbsp;</span>
403
+ <span class="cline-any cline-neutral">&nbsp;</span>
404
+ <span class="cline-any cline-neutral">&nbsp;</span>
405
+ <span class="cline-any cline-neutral">&nbsp;</span>
406
+ <span class="cline-any cline-neutral">&nbsp;</span>
407
+ <span class="cline-any cline-neutral">&nbsp;</span>
408
+ <span class="cline-any cline-neutral">&nbsp;</span>
409
+ <span class="cline-any cline-neutral">&nbsp;</span>
410
+ <span class="cline-any cline-neutral">&nbsp;</span>
411
+ <span class="cline-any cline-neutral">&nbsp;</span>
412
+ <span class="cline-any cline-no">&nbsp;</span>
413
+ <span class="cline-any cline-neutral">&nbsp;</span>
414
+ <span class="cline-any cline-neutral">&nbsp;</span>
415
+ <span class="cline-any cline-neutral">&nbsp;</span>
416
+ <span class="cline-any cline-neutral">&nbsp;</span>
417
+ <span class="cline-any cline-neutral">&nbsp;</span>
418
+ <span class="cline-any cline-yes">11x</span>
419
+ <span class="cline-any cline-neutral">&nbsp;</span>
420
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { getWithHooks } from '~/pkgs/data-model';
421
+ import { DoubleTieError, ERROR_CODES } from '~/pkgs/results';
422
+ import type { GenericEndpointContext, RegistryContext } from '~/pkgs/types';
423
+ &nbsp;
424
+ import { validateEntityOutput } from '../definition';
425
+ import type { Consent } from './schema';
426
+ &nbsp;
427
+ /**
428
+ * Creates and returns a set of consent-related adapter methods to interact with the database.
429
+ * These methods provide a consistent interface for creating, finding, and updating
430
+ * consent records while applying hooks and enforcing data validation rules.
431
+ *
432
+ * The consent registry manages user consent records, tracking permissions granted by subjects
433
+ * for specific purposes within domains. It ensures proper creation and modification of consent
434
+ * records while maintaining data integrity and audit trails.
435
+ *
436
+ * @param params - Registry context parameters
437
+ * @param params.adapter - The database adapter used for direct database operations
438
+ * @param params.ctx - Additional context properties containing hooks and options
439
+ * @returns An object containing type-safe consent operations
440
+ *
441
+ * @example
442
+ * ```ts
443
+ * const registry = consentRegistry({
444
+ * adapter: databaseAdapter,
445
+ * hooks: customHooks,
446
+ * options: validationOptions
447
+ * });
448
+ *
449
+ * // Create and manage consent records
450
+ * const consent = await registry.createConsent({
451
+ * subjectId: 'sub_x1pftyoufsm7xgo1kv',
452
+ * domainId: 'dom_x1pftyoufsm7xgo1kv',
453
+ * purposeIds: ['pur_e8zyhgozr3im7xj59it'],
454
+ * status: 'active'
455
+ * });
456
+ * ```
457
+ *
458
+ * @see {@link RegistryContext} For details on the context parameters
459
+ * @see {@link Consent} For the structure of consent objects
460
+ */
461
+ export function consentRegistry({ adapter, ...ctx }: RegistryContext) {
462
+ const { createWithHooks, updateWithHooks } = getWithHooks(adapter, ctx);
463
+ const registry = {
464
+ /**
465
+ * Creates a new consent record in the database.
466
+ *
467
+ * This method creates a new consent record representing a subject's permission
468
+ * for specific purposes within a domain. It automatically sets the creation
469
+ * timestamp and applies any configured hooks during the creation process.
470
+ *
471
+ * @param consent - Consent data to create (without id and timestamp)
472
+ * @param consent.subjectId - Unique identifier of the subject giving consent
473
+ * @param consent.domainId - Domain identifier where the consent applies
474
+ * @param consent.purposeIds - Array of purpose identifiers covered by this consent
475
+ * @param consent.status - Current status of the consent (e.g., 'active', 'withdrawn')
476
+ * @param context - Optional endpoint context for hooks execution
477
+ * @returns Promise resolving to the created consent with all fields populated
478
+ * @throws {Error} When the creation operation fails or returns null
479
+ * @throws May also throw errors if hooks prevent creation or if validation fails
480
+ *
481
+ * @example
482
+ * ```ts
483
+ * // Create a new active consent
484
+ * const newConsent = await registry.createConsent({
485
+ * subjectId: 'sub_abc123',
486
+ * domainId: 'dom_xyz789',
487
+ * purposeIds: ['pur_marketing', 'pur_analytics'],
488
+ * status: 'active',
489
+ * metadata: {
490
+ * source: 'web_form',
491
+ * ipAddress: '192.168.1.1'
492
+ * }
493
+ * });
494
+ * ```
495
+ *
496
+ * @see {@link Consent} For the complete structure of consent objects
497
+ * @see {@link GenericEndpointContext} For details on the context object
498
+ */
499
+ createConsent: <span class="fstat-no" title="function not covered" >async (</span>
500
+ consent: Omit&lt;Consent, 'id' | 'createdAt'&gt; &amp; Partial&lt;Consent&gt;,
501
+ context?: GenericEndpointContext
502
+ ) =&gt; {
503
+ const createdConsent = <span class="cstat-no" title="statement not covered" >await createWithHooks({</span>
504
+ data: {
505
+ createdAt: new Date(),
506
+ ...consent,
507
+ },
508
+ model: 'consent',
509
+ context,
510
+ });
511
+ &nbsp;
512
+ <span class="cstat-no" title="statement not covered" > if (!createdConsent) {</span>
513
+ <span class="cstat-no" title="statement not covered" > throw new DoubleTieError(</span>
514
+ 'Failed to create consent - operation returned null',
515
+ {
516
+ code: ERROR_CODES.INTERNAL_SERVER_ERROR,
517
+ status: 500,
518
+ }
519
+ );
520
+ }
521
+ &nbsp;
522
+ <span class="cstat-no" title="statement not covered" > return createdConsent as Consent;</span>
523
+ },
524
+ &nbsp;
525
+ /**
526
+ * Updates an existing consent record by ID.
527
+ *
528
+ * This method modifies an existing consent record, typically used for
529
+ * status changes (e.g., withdrawing consent) or metadata updates.
530
+ * Applies configured hooks during the update process and validates
531
+ * the output according to schema configuration.
532
+ *
533
+ * @param consentId - The unique identifier of the consent to update
534
+ * @param data - The fields to update on the consent record
535
+ * @param data.status - New status for the consent
536
+ * @param data.metadata - Updated metadata information
537
+ * @param data.purposeIds - Modified list of purpose identifiers
538
+ * @param context - Optional endpoint context for hooks execution
539
+ * @returns Promise resolving to the updated consent if successful, null if not found
540
+ * @throws May throw errors if hooks prevent update or if validation fails
541
+ *
542
+ * @example
543
+ * ```ts
544
+ * // Withdraw a consent
545
+ * const updatedConsent = await registry.updateConsent(
546
+ * 'cns_abc123',
547
+ * {
548
+ * status: 'withdrawn',
549
+ * metadata: {
550
+ * withdrawalReason: 'User request',
551
+ * withdrawalDate: new Date()
552
+ * }
553
+ * }
554
+ * );
555
+ *
556
+ * // Update purposes for an active consent
557
+ * const modifiedConsent = await registry.updateConsent(
558
+ * 'cns_xyz789',
559
+ * {
560
+ * purposeIds: ['pur_marketing'], // Remove analytics purpose
561
+ * metadata: {
562
+ * modificationReason: 'User preference update'
563
+ * }
564
+ * }
565
+ * );
566
+ * ```
567
+ *
568
+ * @see {@link Consent} For the complete structure of consent objects
569
+ * @see {@link GenericEndpointContext} For details on the context object
570
+ */
571
+ updateConsent: <span class="fstat-no" title="function not covered" >async (</span>
572
+ consentId: string,
573
+ data: Partial&lt;Consent&gt;,
574
+ context?: GenericEndpointContext
575
+ ) =&gt; {
576
+ const consent = <span class="cstat-no" title="statement not covered" >await updateWithHooks&lt;Consent&gt;({</span>
577
+ data: {
578
+ ...data,
579
+ },
580
+ where: [
581
+ {
582
+ field: 'id',
583
+ value: consentId,
584
+ },
585
+ ],
586
+ model: 'consent',
587
+ context,
588
+ });
589
+ <span class="cstat-no" title="statement not covered" > return consent</span>
590
+ ? validateEntityOutput('consent', consent, ctx.options)
591
+ : null;
592
+ },
593
+ };
594
+ &nbsp;
595
+ return registry;
596
+ }
597
+ &nbsp;</pre></td></tr></table></pre>
598
+
599
+ <div class='push'></div><!-- for sticky footer -->
600
+ </div><!-- /wrapper -->
601
+ <div class='footer quiet pad2 space-top1 center small'>
602
+ Code coverage generated by
603
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
604
+ at 2025-04-14T01:06:14.959Z
605
+ </div>
606
+ <script src="../../../../prettify.js"></script>
607
+ <script>
608
+ window.onload = function () {
609
+ prettyPrint();
610
+ };
611
+ </script>
612
+ <script src="../../../../sorter.js"></script>
613
+ <script src="../../../../block-navigation.js"></script>
614
+ </body>
615
+ </html>
616
+