@c15t/backend 1.2.0-canary.8 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/.turbo/turbo-build.log +53 -52
  2. package/CHANGELOG.md +7 -0
  3. package/dist/__tests__/server.test.d.ts +2 -0
  4. package/dist/__tests__/server.test.d.ts.map +1 -0
  5. package/dist/contracts/index.d.ts +1 -1
  6. package/dist/contracts/index.d.ts.map +1 -1
  7. package/dist/contracts.cjs +708 -0
  8. package/dist/contracts.js +661 -0
  9. package/dist/core.cjs +98 -47
  10. package/dist/core.d.ts.map +1 -1
  11. package/dist/core.js +98 -47
  12. package/dist/middleware/openapi/config.d.ts +1 -1
  13. package/dist/middleware/openapi/config.d.ts.map +1 -1
  14. package/dist/pkgs/data-model/index.cjs +57 -39
  15. package/dist/pkgs/data-model/index.js +57 -39
  16. package/dist/pkgs/data-model/schema/index.cjs +57 -39
  17. package/dist/pkgs/data-model/schema/index.js +57 -39
  18. package/dist/router.cjs +3 -1
  19. package/dist/router.js +3 -1
  20. package/dist/schema/consent-policy/registry.d.ts.map +1 -1
  21. package/dist/schema/create-registry.d.ts.map +1 -1
  22. package/dist/schema/index.cjs +57 -39
  23. package/dist/schema/index.js +57 -39
  24. package/package.json +9 -4
  25. package/rslib.config.ts +1 -0
  26. package/src/__tests__/server.test.ts +96 -0
  27. package/src/contracts/index.ts +2 -0
  28. package/src/core.ts +34 -1
  29. package/src/middleware/cors/cors.test.ts +0 -1
  30. package/src/middleware/openapi/config.ts +10 -7
  31. package/src/schema/consent-policy/registry.ts +74 -51
  32. package/.turbo/turbo-fmt.log +0 -7
  33. package/.turbo/turbo-test.log +0 -426
  34. package/coverage/coverage-final.json +0 -88
  35. package/coverage/coverage-summary.json +0 -89
  36. package/coverage/html/backend/index.html +0 -116
  37. package/coverage/html/backend/rslib.config.ts.html +0 -415
  38. package/coverage/html/backend/src/contracts/consent/index.html +0 -161
  39. package/coverage/html/backend/src/contracts/consent/index.ts.html +0 -112
  40. package/coverage/html/backend/src/contracts/consent/post.contract.ts.html +0 -550
  41. package/coverage/html/backend/src/contracts/consent/show-banner.contract.ts.html +0 -220
  42. package/coverage/html/backend/src/contracts/consent/verify.contract.ts.html +0 -463
  43. package/coverage/html/backend/src/contracts/index.html +0 -116
  44. package/coverage/html/backend/src/contracts/index.ts.html +0 -139
  45. package/coverage/html/backend/src/contracts/meta/index.html +0 -131
  46. package/coverage/html/backend/src/contracts/meta/index.ts.html +0 -100
  47. package/coverage/html/backend/src/contracts/meta/status.contract.ts.html +0 -196
  48. package/coverage/html/backend/src/contracts/shared/index.html +0 -116
  49. package/coverage/html/backend/src/contracts/shared/jurisdiction.schema.ts.html +0 -175
  50. package/coverage/html/backend/src/core.ts.html +0 -1342
  51. package/coverage/html/backend/src/handlers/consent/index.html +0 -161
  52. package/coverage/html/backend/src/handlers/consent/index.ts.html +0 -112
  53. package/coverage/html/backend/src/handlers/consent/post.handler.ts.html +0 -904
  54. package/coverage/html/backend/src/handlers/consent/show-banner.handler.ts.html +0 -532
  55. package/coverage/html/backend/src/handlers/consent/verify.handler.ts.html +0 -1000
  56. package/coverage/html/backend/src/handlers/meta/index.html +0 -131
  57. package/coverage/html/backend/src/handlers/meta/index.ts.html +0 -100
  58. package/coverage/html/backend/src/handlers/meta/status.handler.ts.html +0 -226
  59. package/coverage/html/backend/src/index.html +0 -161
  60. package/coverage/html/backend/src/init.ts.html +0 -1018
  61. package/coverage/html/backend/src/middleware/cors/cors.ts.html +0 -661
  62. package/coverage/html/backend/src/middleware/cors/index.html +0 -146
  63. package/coverage/html/backend/src/middleware/cors/is-origin-trusted.ts.html +0 -463
  64. package/coverage/html/backend/src/middleware/cors/process-cors.ts.html +0 -358
  65. package/coverage/html/backend/src/middleware/openapi/config.ts.html +0 -160
  66. package/coverage/html/backend/src/middleware/openapi/handlers.ts.html +0 -481
  67. package/coverage/html/backend/src/middleware/openapi/index.html +0 -131
  68. package/coverage/html/backend/src/pkgs/api-router/hooks/index.html +0 -116
  69. package/coverage/html/backend/src/pkgs/api-router/hooks/processor.ts.html +0 -544
  70. package/coverage/html/backend/src/pkgs/api-router/index.html +0 -116
  71. package/coverage/html/backend/src/pkgs/api-router/telemetry.ts.html +0 -334
  72. package/coverage/html/backend/src/pkgs/api-router/utils/index.html +0 -116
  73. package/coverage/html/backend/src/pkgs/api-router/utils/ip.ts.html +0 -361
  74. package/coverage/html/backend/src/pkgs/data-model/fields/field-factory.ts.html +0 -709
  75. package/coverage/html/backend/src/pkgs/data-model/fields/id-generator.ts.html +0 -256
  76. package/coverage/html/backend/src/pkgs/data-model/fields/index.html +0 -161
  77. package/coverage/html/backend/src/pkgs/data-model/fields/superjson-utils.ts.html +0 -136
  78. package/coverage/html/backend/src/pkgs/data-model/fields/zod-fields.ts.html +0 -496
  79. package/coverage/html/backend/src/pkgs/data-model/hooks/create-hooks.ts.html +0 -349
  80. package/coverage/html/backend/src/pkgs/data-model/hooks/index.html +0 -176
  81. package/coverage/html/backend/src/pkgs/data-model/hooks/update-hooks.ts.html +0 -358
  82. package/coverage/html/backend/src/pkgs/data-model/hooks/update-many-hooks.ts.html +0 -613
  83. package/coverage/html/backend/src/pkgs/data-model/hooks/utils.ts.html +0 -538
  84. package/coverage/html/backend/src/pkgs/data-model/hooks/with-hooks-factory.ts.html +0 -289
  85. package/coverage/html/backend/src/pkgs/db-adapters/adapter-factory.ts.html +0 -289
  86. package/coverage/html/backend/src/pkgs/db-adapters/adapters/drizzle-adapter/drizzle-adapter.ts.html +0 -2203
  87. package/coverage/html/backend/src/pkgs/db-adapters/adapters/drizzle-adapter/index.html +0 -116
  88. package/coverage/html/backend/src/pkgs/db-adapters/adapters/index.html +0 -116
  89. package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/dialect.ts.html +0 -670
  90. package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/index.html +0 -131
  91. package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/kysely-adapter.ts.html +0 -3634
  92. package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/tests/index.html +0 -116
  93. package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/tests/test-utils.ts.html +0 -1417
  94. package/coverage/html/backend/src/pkgs/db-adapters/adapters/memory-adapter/index.html +0 -116
  95. package/coverage/html/backend/src/pkgs/db-adapters/adapters/memory-adapter/memory-adapter.ts.html +0 -2071
  96. package/coverage/html/backend/src/pkgs/db-adapters/adapters/prisma-adapter/index.html +0 -116
  97. package/coverage/html/backend/src/pkgs/db-adapters/adapters/prisma-adapter/prisma-adapter.ts.html +0 -1834
  98. package/coverage/html/backend/src/pkgs/db-adapters/adapters/test.ts.html +0 -316
  99. package/coverage/html/backend/src/pkgs/db-adapters/index.html +0 -131
  100. package/coverage/html/backend/src/pkgs/db-adapters/utils.ts.html +0 -238
  101. package/coverage/html/backend/src/pkgs/migrations/get-migration.ts.html +0 -343
  102. package/coverage/html/backend/src/pkgs/migrations/get-schema/get-schema.ts.html +0 -217
  103. package/coverage/html/backend/src/pkgs/migrations/get-schema/index.html +0 -146
  104. package/coverage/html/backend/src/pkgs/migrations/get-schema/process-fields.ts.html +0 -280
  105. package/coverage/html/backend/src/pkgs/migrations/get-schema/process-tables.ts.html +0 -289
  106. package/coverage/html/backend/src/pkgs/migrations/index.html +0 -176
  107. package/coverage/html/backend/src/pkgs/migrations/migration-builders.ts.html +0 -595
  108. package/coverage/html/backend/src/pkgs/migrations/migration-execution.ts.html +0 -301
  109. package/coverage/html/backend/src/pkgs/migrations/schema-comparison.ts.html +0 -694
  110. package/coverage/html/backend/src/pkgs/migrations/type-mapping.ts.html +0 -817
  111. package/coverage/html/backend/src/pkgs/results/core/error-class.ts.html +0 -976
  112. package/coverage/html/backend/src/pkgs/results/core/error-codes.ts.html +0 -703
  113. package/coverage/html/backend/src/pkgs/results/core/index.html +0 -146
  114. package/coverage/html/backend/src/pkgs/results/core/tracing.ts.html +0 -280
  115. package/coverage/html/backend/src/pkgs/results/create-telemetry-options.ts.html +0 -271
  116. package/coverage/html/backend/src/pkgs/results/index.html +0 -131
  117. package/coverage/html/backend/src/pkgs/results/orpc-error-handler.ts.html +0 -496
  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 -146
  123. package/coverage/html/backend/src/pkgs/utils/logger.ts.html +0 -199
  124. package/coverage/html/backend/src/pkgs/utils/url.ts.html +0 -400
  125. package/coverage/html/backend/src/router.ts.html +0 -109
  126. package/coverage/html/backend/src/schema/audit-log/index.html +0 -146
  127. package/coverage/html/backend/src/schema/audit-log/registry.ts.html +0 -436
  128. package/coverage/html/backend/src/schema/audit-log/schema.ts.html +0 -223
  129. package/coverage/html/backend/src/schema/audit-log/table.ts.html +0 -640
  130. package/coverage/html/backend/src/schema/consent/index.html +0 -146
  131. package/coverage/html/backend/src/schema/consent/registry.ts.html +0 -616
  132. package/coverage/html/backend/src/schema/consent/schema.ts.html +0 -238
  133. package/coverage/html/backend/src/schema/consent/table.ts.html +0 -748
  134. package/coverage/html/backend/src/schema/consent-policy/index.html +0 -146
  135. package/coverage/html/backend/src/schema/consent-policy/registry.ts.html +0 -1063
  136. package/coverage/html/backend/src/schema/consent-policy/schema.ts.html +0 -265
  137. package/coverage/html/backend/src/schema/consent-policy/table.ts.html +0 -535
  138. package/coverage/html/backend/src/schema/consent-purpose/index.html +0 -146
  139. package/coverage/html/backend/src/schema/consent-purpose/registry.ts.html +0 -589
  140. package/coverage/html/backend/src/schema/consent-purpose/schema.ts.html +0 -259
  141. package/coverage/html/backend/src/schema/consent-purpose/table.ts.html +0 -547
  142. package/coverage/html/backend/src/schema/consent-record/index.html +0 -131
  143. package/coverage/html/backend/src/schema/consent-record/schema.ts.html +0 -211
  144. package/coverage/html/backend/src/schema/consent-record/table.ts.html +0 -457
  145. package/coverage/html/backend/src/schema/create-registry.ts.html +0 -148
  146. package/coverage/html/backend/src/schema/definition.ts.html +0 -685
  147. package/coverage/html/backend/src/schema/domain/index.html +0 -146
  148. package/coverage/html/backend/src/schema/domain/registry.ts.html +0 -973
  149. package/coverage/html/backend/src/schema/domain/schema.ts.html +0 -214
  150. package/coverage/html/backend/src/schema/domain/table.ts.html +0 -496
  151. package/coverage/html/backend/src/schema/index.html +0 -146
  152. package/coverage/html/backend/src/schema/schemas.ts.html +0 -166
  153. package/coverage/html/backend/src/schema/subject/index.html +0 -146
  154. package/coverage/html/backend/src/schema/subject/registry.ts.html +0 -973
  155. package/coverage/html/backend/src/schema/subject/schema.ts.html +0 -208
  156. package/coverage/html/backend/src/schema/subject/table.ts.html +0 -499
  157. package/coverage/html/backend/src/server.ts.html +0 -463
  158. package/coverage/html/backend/src/testing/contract-testing.ts.html +0 -1396
  159. package/coverage/html/backend/src/testing/index.html +0 -116
  160. package/coverage/html/base.css +0 -224
  161. package/coverage/html/block-navigation.js +0 -87
  162. package/coverage/html/favicon.png +0 -0
  163. package/coverage/html/index.html +0 -656
  164. package/coverage/html/prettify.css +0 -1
  165. package/coverage/html/prettify.js +0 -2
  166. package/coverage/html/sort-arrow-sprite.png +0 -0
  167. package/coverage/html/sorter.js +0 -196
@@ -1,709 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for backend/src/pkgs/data-model/fields/field-factory.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/data-model/fields</a> field-factory.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">16.66% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>2/12</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">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">16.66% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>2/12</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>
244
- <a name='L179'></a><a href='#L179'>179</a>
245
- <a name='L180'></a><a href='#L180'>180</a>
246
- <a name='L181'></a><a href='#L181'>181</a>
247
- <a name='L182'></a><a href='#L182'>182</a>
248
- <a name='L183'></a><a href='#L183'>183</a>
249
- <a name='L184'></a><a href='#L184'>184</a>
250
- <a name='L185'></a><a href='#L185'>185</a>
251
- <a name='L186'></a><a href='#L186'>186</a>
252
- <a name='L187'></a><a href='#L187'>187</a>
253
- <a name='L188'></a><a href='#L188'>188</a>
254
- <a name='L189'></a><a href='#L189'>189</a>
255
- <a name='L190'></a><a href='#L190'>190</a>
256
- <a name='L191'></a><a href='#L191'>191</a>
257
- <a name='L192'></a><a href='#L192'>192</a>
258
- <a name='L193'></a><a href='#L193'>193</a>
259
- <a name='L194'></a><a href='#L194'>194</a>
260
- <a name='L195'></a><a href='#L195'>195</a>
261
- <a name='L196'></a><a href='#L196'>196</a>
262
- <a name='L197'></a><a href='#L197'>197</a>
263
- <a name='L198'></a><a href='#L198'>198</a>
264
- <a name='L199'></a><a href='#L199'>199</a>
265
- <a name='L200'></a><a href='#L200'>200</a>
266
- <a name='L201'></a><a href='#L201'>201</a>
267
- <a name='L202'></a><a href='#L202'>202</a>
268
- <a name='L203'></a><a href='#L203'>203</a>
269
- <a name='L204'></a><a href='#L204'>204</a>
270
- <a name='L205'></a><a href='#L205'>205</a>
271
- <a name='L206'></a><a href='#L206'>206</a>
272
- <a name='L207'></a><a href='#L207'>207</a>
273
- <a name='L208'></a><a href='#L208'>208</a>
274
- <a name='L209'></a><a href='#L209'>209</a></td><td class="line-coverage quiet"><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-neutral">&nbsp;</span>
286
- <span class="cline-any cline-neutral">&nbsp;</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-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-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-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-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-yes">6x</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-neutral">&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-yes">6x</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-no">&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-neutral">&nbsp;</span>
419
- <span class="cline-any cline-neutral">&nbsp;</span>
420
- <span class="cline-any cline-neutral">&nbsp;</span>
421
- <span class="cline-any cline-no">&nbsp;</span>
422
- <span class="cline-any cline-no">&nbsp;</span>
423
- <span class="cline-any cline-neutral">&nbsp;</span>
424
- <span class="cline-any cline-neutral">&nbsp;</span>
425
- <span class="cline-any cline-neutral">&nbsp;</span>
426
- <span class="cline-any cline-neutral">&nbsp;</span>
427
- <span class="cline-any cline-neutral">&nbsp;</span>
428
- <span class="cline-any cline-neutral">&nbsp;</span>
429
- <span class="cline-any cline-neutral">&nbsp;</span>
430
- <span class="cline-any cline-neutral">&nbsp;</span>
431
- <span class="cline-any cline-neutral">&nbsp;</span>
432
- <span class="cline-any cline-neutral">&nbsp;</span>
433
- <span class="cline-any cline-neutral">&nbsp;</span>
434
- <span class="cline-any cline-neutral">&nbsp;</span>
435
- <span class="cline-any cline-neutral">&nbsp;</span>
436
- <span class="cline-any cline-neutral">&nbsp;</span>
437
- <span class="cline-any cline-neutral">&nbsp;</span>
438
- <span class="cline-any cline-neutral">&nbsp;</span>
439
- <span class="cline-any cline-neutral">&nbsp;</span>
440
- <span class="cline-any cline-neutral">&nbsp;</span>
441
- <span class="cline-any cline-neutral">&nbsp;</span>
442
- <span class="cline-any cline-neutral">&nbsp;</span>
443
- <span class="cline-any cline-neutral">&nbsp;</span>
444
- <span class="cline-any cline-neutral">&nbsp;</span>
445
- <span class="cline-any cline-neutral">&nbsp;</span>
446
- <span class="cline-any cline-no">&nbsp;</span>
447
- <span class="cline-any cline-neutral">&nbsp;</span>
448
- <span class="cline-any cline-neutral">&nbsp;</span>
449
- <span class="cline-any cline-neutral">&nbsp;</span>
450
- <span class="cline-any cline-neutral">&nbsp;</span>
451
- <span class="cline-any cline-neutral">&nbsp;</span>
452
- <span class="cline-any cline-neutral">&nbsp;</span>
453
- <span class="cline-any cline-neutral">&nbsp;</span>
454
- <span class="cline-any cline-neutral">&nbsp;</span>
455
- <span class="cline-any cline-neutral">&nbsp;</span>
456
- <span class="cline-any cline-neutral">&nbsp;</span>
457
- <span class="cline-any cline-neutral">&nbsp;</span>
458
- <span class="cline-any cline-neutral">&nbsp;</span>
459
- <span class="cline-any cline-no">&nbsp;</span>
460
- <span class="cline-any cline-neutral">&nbsp;</span>
461
- <span class="cline-any cline-neutral">&nbsp;</span>
462
- <span class="cline-any cline-neutral">&nbsp;</span>
463
- <span class="cline-any cline-neutral">&nbsp;</span>
464
- <span class="cline-any cline-neutral">&nbsp;</span>
465
- <span class="cline-any cline-neutral">&nbsp;</span>
466
- <span class="cline-any cline-neutral">&nbsp;</span>
467
- <span class="cline-any cline-neutral">&nbsp;</span>
468
- <span class="cline-any cline-neutral">&nbsp;</span>
469
- <span class="cline-any cline-neutral">&nbsp;</span>
470
- <span class="cline-any cline-neutral">&nbsp;</span>
471
- <span class="cline-any cline-no">&nbsp;</span>
472
- <span class="cline-any cline-neutral">&nbsp;</span>
473
- <span class="cline-any cline-neutral">&nbsp;</span>
474
- <span class="cline-any cline-no">&nbsp;</span>
475
- <span class="cline-any cline-neutral">&nbsp;</span>
476
- <span class="cline-any cline-neutral">&nbsp;</span>
477
- <span class="cline-any cline-no">&nbsp;</span>
478
- <span class="cline-any cline-neutral">&nbsp;</span>
479
- <span class="cline-any cline-no">&nbsp;</span>
480
- <span class="cline-any cline-neutral">&nbsp;</span>
481
- <span class="cline-any cline-neutral">&nbsp;</span>
482
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/**
483
- * Configuration options specific to number fields.
484
- * Provides additional validation options for number fields.
485
- *
486
- * @example
487
- * ```typescript
488
- * // Define a number field with min/max constraints
489
- * const ageField = numberField({
490
- * required: true,
491
- * min: 0,
492
- * max: 120
493
- * });
494
- * ```
495
- */
496
- export type NumberFieldOptions = {
497
- /**
498
- * Minimum allowed value for the number field.
499
- */
500
- min?: number;
501
- /**
502
- * Maximum allowed value for the number field.
503
- */
504
- max?: number;
505
- };
506
- &nbsp;
507
- /**
508
- * Configuration options specific to string fields.
509
- * Provides additional validation options for string fields.
510
- *
511
- * @example
512
- * ```typescript
513
- * // Define a string field with length constraints
514
- * const usernameField = stringField({
515
- * required: true,
516
- * minLength: 3,
517
- * maxLength: 20
518
- * });
519
- * ```
520
- */
521
- export type StringFieldOptions = {
522
- /**
523
- * Minimum allowed length for the string field.
524
- */
525
- minLength?: number;
526
- /**
527
- * Maximum allowed length for the string field.
528
- */
529
- maxLength?: number;
530
- /**
531
- * Regular expression pattern that the string must match.
532
- */
533
- pattern?: string;
534
- };
535
- &nbsp;
536
- /**
537
- * Configuration options specific to date fields.
538
- * Provides additional validation and formatting options for date fields.
539
- *
540
- * @example
541
- * ```typescript
542
- * // Define a date field with min/max date constraints
543
- * const birthdateField = dateField({
544
- * required: true,
545
- * minDate: new Date('1900-01-01'),
546
- * maxDate: new Date() // Current date
547
- * });
548
- * ```
549
- */
550
- export type DateFieldOptions = {
551
- /**
552
- * Minimum allowed date value.
553
- * Dates earlier than this will fail validation.
554
- */
555
- minDate?: Date;
556
- &nbsp;
557
- /**
558
- * Maximum allowed date value.
559
- * Dates later than this will fail validation.
560
- */
561
- maxDate?: Date;
562
- &nbsp;
563
- /**
564
- * Whether to store just the date part without time information.
565
- * When true, time components will be zeroed out.
566
- * @default false
567
- */
568
- dateOnly?: boolean;
569
- &nbsp;
570
- /**
571
- * Format string for date output transformation.
572
- * If provided, dates will be transformed to strings in this format.
573
- * Only applies if no custom output transform is provided.
574
- * Uses Intl.DateTimeFormat for consistent cross-platform formatting.
575
- */
576
- format?: Intl.DateTimeFormatOptions;
577
- };
578
- &nbsp;
579
- /**
580
- * Common IANA timezone identifiers.
581
- * A subset of commonly used timezones from the IANA timezone database.
582
- * Used for validation and autocompletion in IDE.
583
- */
584
- export const COMMON_TIMEZONES = {
585
- UTC: 'UTC',
586
- GMT: 'GMT',
587
- // North America
588
- EASTERN: 'America/New_York',
589
- CENTRAL: 'America/Chicago',
590
- MOUNTAIN: 'America/Denver',
591
- PACIFIC: 'America/Los_Angeles',
592
- // Europe
593
- LONDON: 'Europe/London',
594
- PARIS: 'Europe/Paris',
595
- BERLIN: 'Europe/Berlin',
596
- // Asia
597
- TOKYO: 'Asia/Tokyo',
598
- SHANGHAI: 'Asia/Shanghai',
599
- SINGAPORE: 'Asia/Singapore',
600
- // Australia
601
- SYDNEY: 'Australia/Sydney',
602
- // South America
603
- SAO_PAULO: 'America/Sao_Paulo',
604
- } as const;
605
- &nbsp;
606
- /**
607
- * Utility functions for working with dates and timezones.
608
- * Provides helper methods for common date and timezone operations.
609
- */
610
- export const DateTimeUtils = {
611
- /**
612
- * Creates a Date object in a specific timezone.
613
- *
614
- * @param dateInput - Date object or ISO string to convert
615
- * @param timezone - Target timezone (IANA timezone identifier)
616
- * @returns Date object adjusted for the specified timezone
617
- */
618
- createDateInTimezone: <span class="fstat-no" title="function not covered" >(d</span>ateInput: Date | string, timezone: string): Date =&gt; {
619
- const date =
620
- <span class="cstat-no" title="statement not covered" > typeof dateInput === 'string' ? new Date(dateInput) : new Date(dateInput);</span>
621
- &nbsp;
622
- // Get the target timezone's current offset from UTC
623
- const formatter = <span class="cstat-no" title="statement not covered" >new Intl.DateTimeFormat('en-US', {</span>
624
- timeZone: timezone,
625
- timeZoneName: 'short',
626
- });
627
- &nbsp;
628
- // Format the date in the target timezone to get correct representation
629
- const formattedDate = <span class="cstat-no" title="statement not covered" >formatter.format(date);</span>
630
- <span class="cstat-no" title="statement not covered" > return new Date(formattedDate);</span>
631
- },
632
- &nbsp;
633
- /**
634
- * Formats a date according to the specified timezone.
635
- *
636
- * @param date - The date to format
637
- * @param timezone - Target timezone (IANA timezone identifier)
638
- * @param options - Formatting options for Intl.DateTimeFormat
639
- * @returns Formatted date string in the specified timezone
640
- */
641
- formatInTimezone: <span class="fstat-no" title="function not covered" >(</span>
642
- date: Date,
643
- timezone: string,
644
- options: Intl.DateTimeFormatOptions = <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
645
- year: 'numeric',
646
- month: 'numeric',
647
- day: 'numeric',
648
- hour: 'numeric',
649
- minute: 'numeric',
650
- second: 'numeric',
651
- timeZoneName: 'short',
652
- }
653
- ): string =&gt; {
654
- <span class="cstat-no" title="statement not covered" > return new Intl.DateTimeFormat('en-US', {</span>
655
- ...options,
656
- timeZone: timezone,
657
- }).format(date);
658
- },
659
- &nbsp;
660
- /**
661
- * Gets the current date in a specific timezone.
662
- *
663
- * @param timezone - Target timezone (IANA timezone identifier)
664
- * @returns Current date adjusted for the specified timezone
665
- */
666
- getNowInTimezone: <span class="fstat-no" title="function not covered" >(t</span>imezone: string): Date =&gt; {
667
- <span class="cstat-no" title="statement not covered" > return DateTimeUtils.createDateInTimezone(new Date(), timezone);</span>
668
- },
669
- &nbsp;
670
- /**
671
- * Calculates the offset in minutes between the local timezone and the specified timezone.
672
- *
673
- * @param timezone - Target timezone (IANA timezone identifier)
674
- * @param date - Optional date to calculate the offset for (defaults to current date)
675
- * @returns Offset in minutes between local and specified timezone
676
- */
677
- getTimezoneOffset: <span class="fstat-no" title="function not covered" >(t</span>imezone: string, date: Date = <span class="branch-0 cbranch-no" title="branch not covered" >new Date()): number =&gt; {</span>
678
- // Calculate the client's timezone offset in minutes
679
- const localOffset = <span class="cstat-no" title="statement not covered" >date.getTimezoneOffset();</span>
680
- &nbsp;
681
- // Get the target timezone offset
682
- const targetDate = <span class="cstat-no" title="statement not covered" >new Date(</span>
683
- date.toLocaleString('en-US', { timeZone: timezone })
684
- );
685
- const <span class="cstat-no" title="statement not covered" >targetOffset = (date.getTime() - targetDate.getTime()) / 60000;</span>
686
- &nbsp;
687
- <span class="cstat-no" title="statement not covered" > return localOffset - targetOffset;</span>
688
- },
689
- };
690
- &nbsp;</pre></td></tr></table></pre>
691
-
692
- <div class='push'></div><!-- for sticky footer -->
693
- </div><!-- /wrapper -->
694
- <div class='footer quiet pad2 space-top1 center small'>
695
- Code coverage generated by
696
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
697
- at 2025-05-08T20:18:30.062Z
698
- </div>
699
- <script src="../../../../../prettify.js"></script>
700
- <script>
701
- window.onload = function () {
702
- prettyPrint();
703
- };
704
- </script>
705
- <script src="../../../../../sorter.js"></script>
706
- <script src="../../../../../block-navigation.js"></script>
707
- </body>
708
- </html>
709
-