ugly-app 0.1.302 → 0.1.304

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 (155) hide show
  1. package/coverage/{server/Storage.ts.html → Storage.ts.html} +64 -112
  2. package/coverage/clover.xml +42 -4530
  3. package/coverage/coverage-final.json +1 -78
  4. package/coverage/index.html +14 -239
  5. package/dist/cli/deployRemote.d.ts.map +1 -1
  6. package/dist/cli/deployRemote.js +29 -40
  7. package/dist/cli/deployRemote.js.map +1 -1
  8. package/dist/cli/deployTar.d.ts.map +1 -1
  9. package/dist/cli/deployTar.js +5 -2
  10. package/dist/cli/deployTar.js.map +1 -1
  11. package/dist/cli/migrate.js.map +1 -1
  12. package/dist/cli/uglyappConfig.js.map +1 -1
  13. package/dist/cli/version.d.ts +1 -1
  14. package/dist/cli/version.js +1 -1
  15. package/dist/client/bootstrapApp.js +1 -1
  16. package/dist/client/bootstrapApp.js.map +1 -1
  17. package/dist/client/createSocket.d.ts.map +1 -1
  18. package/dist/client/createSocket.js +2 -1
  19. package/dist/client/createSocket.js.map +1 -1
  20. package/dist/client/uglyBotSocket.js +2 -2
  21. package/dist/client/uglyBotSocket.js.map +1 -1
  22. package/dist/server/App.js +5 -5
  23. package/dist/server/App.js.map +1 -1
  24. package/dist/server/Auth.d.ts.map +1 -1
  25. package/dist/server/Auth.js +0 -9
  26. package/dist/server/Auth.js.map +1 -1
  27. package/dist/server/Email.js +2 -2
  28. package/dist/server/Email.js.map +1 -1
  29. package/dist/server/EventCounter.d.ts +1 -1
  30. package/dist/server/EventCounter.d.ts.map +1 -1
  31. package/dist/server/EventCounter.js +2 -2
  32. package/dist/server/EventCounter.js.map +1 -1
  33. package/dist/server/EventLogAdmin.d.ts +3 -3
  34. package/dist/server/EventLogAdmin.d.ts.map +1 -1
  35. package/dist/server/EventLogAdmin.js +6 -6
  36. package/dist/server/EventLogAdmin.js.map +1 -1
  37. package/dist/server/Logging.d.ts +2 -2
  38. package/dist/server/Logging.d.ts.map +1 -1
  39. package/dist/server/Logging.js +2 -2
  40. package/dist/server/Logging.js.map +1 -1
  41. package/dist/server/SchemaCheck.js +1 -1
  42. package/dist/server/SchemaCheck.js.map +1 -1
  43. package/dist/server/Socket.d.ts.map +1 -1
  44. package/dist/server/Socket.js +0 -1
  45. package/dist/server/Socket.js.map +1 -1
  46. package/package.json +1 -1
  47. package/src/cli/deployRemote.ts +35 -38
  48. package/src/cli/deployTar.ts +6 -2
  49. package/src/cli/migrate.ts +1 -1
  50. package/src/cli/uglyappConfig.ts +1 -1
  51. package/src/cli/version.ts +1 -1
  52. package/src/client/bootstrapApp.tsx +1 -1
  53. package/src/client/createSocket.ts +4 -3
  54. package/src/client/uglyBotSocket.ts +4 -4
  55. package/src/server/App.ts +7 -7
  56. package/src/server/Auth.ts +0 -10
  57. package/src/server/Email.ts +2 -2
  58. package/src/server/EventCounter.ts +3 -4
  59. package/src/server/EventLogAdmin.ts +11 -11
  60. package/src/server/Logging.ts +3 -5
  61. package/src/server/SchemaCheck.ts +1 -1
  62. package/src/server/Socket.ts +0 -1
  63. package/coverage/client/AppProvider.tsx.html +0 -802
  64. package/coverage/client/FeedbackContext.ts.html +0 -133
  65. package/coverage/client/LoginPopup.tsx.html +0 -325
  66. package/coverage/client/Router.tsx.html +0 -2197
  67. package/coverage/client/Screenshot.ts.html +0 -790
  68. package/coverage/client/ViewFlipper.tsx.html +0 -778
  69. package/coverage/client/animation/Animated.tsx.html +0 -544
  70. package/coverage/client/animation/animatedValue.ts.html +0 -721
  71. package/coverage/client/animation/index.html +0 -131
  72. package/coverage/client/audio/index.html +0 -131
  73. package/coverage/client/audio/useSTT.ts.html +0 -448
  74. package/coverage/client/audio/useTTS.ts.html +0 -382
  75. package/coverage/client/components/Button.tsx.html +0 -379
  76. package/coverage/client/components/FeedbackButton.tsx.html +0 -631
  77. package/coverage/client/components/Input.tsx.html +0 -286
  78. package/coverage/client/components/Modal.tsx.html +0 -277
  79. package/coverage/client/components/Text.tsx.html +0 -349
  80. package/coverage/client/components/Toast.tsx.html +0 -235
  81. package/coverage/client/components/index.html +0 -206
  82. package/coverage/client/components/zIndex.ts.html +0 -118
  83. package/coverage/client/createSocket.ts.html +0 -2323
  84. package/coverage/client/index.html +0 -206
  85. package/coverage/collab/server/CollabServer.ts.html +0 -1675
  86. package/coverage/collab/server/index.html +0 -116
  87. package/coverage/server/Auth.ts.html +0 -988
  88. package/coverage/server/Cache.ts.html +0 -568
  89. package/coverage/server/DB.ts.html +0 -1549
  90. package/coverage/server/Email.ts.html +0 -466
  91. package/coverage/server/EmailTemplate.ts.html +0 -223
  92. package/coverage/server/EventLogAdmin.ts.html +0 -1432
  93. package/coverage/server/Postgres.ts.html +0 -172
  94. package/coverage/server/PostgresDB.ts.html +0 -874
  95. package/coverage/server/PostgresFilter.ts.html +0 -571
  96. package/coverage/server/PostgresOperators.ts.html +0 -460
  97. package/coverage/server/PostgresPipeline.ts.html +0 -871
  98. package/coverage/server/PostgresSchema.ts.html +0 -238
  99. package/coverage/server/PostgresSearch.ts.html +0 -412
  100. package/coverage/server/PushNotification.ts.html +0 -583
  101. package/coverage/server/Qdrant.ts.html +0 -415
  102. package/coverage/server/RateLimit.ts.html +0 -1087
  103. package/coverage/server/Router.ts.html +0 -520
  104. package/coverage/server/ScheduledTask.ts.html +0 -238
  105. package/coverage/server/SchemaCheck.ts.html +0 -481
  106. package/coverage/server/Socket.ts.html +0 -1468
  107. package/coverage/server/StoreHandlers.ts.html +0 -607
  108. package/coverage/server/ai/ImageGenClient.ts.html +0 -142
  109. package/coverage/server/ai/ProviderBalance.ts.html +0 -193
  110. package/coverage/server/ai/TextGenClient.ts.html +0 -244
  111. package/coverage/server/ai/WebSearchClient.ts.html +0 -190
  112. package/coverage/server/ai/index.html +0 -191
  113. package/coverage/server/ai/index.ts.html +0 -187
  114. package/coverage/server/ai/providers/UglyBotImageGenProvider.ts.html +0 -292
  115. package/coverage/server/ai/providers/UglyBotTextGenProvider.ts.html +0 -496
  116. package/coverage/server/ai/providers/UglyBotWebSearchProvider.ts.html +0 -418
  117. package/coverage/server/ai/providers/index.html +0 -146
  118. package/coverage/server/ai/types.ts.html +0 -520
  119. package/coverage/server/billing/BillingGateway.ts.html +0 -868
  120. package/coverage/server/billing/BillingLedger.ts.html +0 -910
  121. package/coverage/server/billing/CreditStore.ts.html +0 -577
  122. package/coverage/server/billing/LimitEnforcer.ts.html +0 -1237
  123. package/coverage/server/billing/UserLimitCache.ts.html +0 -388
  124. package/coverage/server/billing/index.html +0 -191
  125. package/coverage/server/billing/types.ts.html +0 -889
  126. package/coverage/server/embeddings/EmbeddingClient.ts.html +0 -217
  127. package/coverage/server/embeddings/index.html +0 -131
  128. package/coverage/server/embeddings/providers/OpenAI.ts.html +0 -196
  129. package/coverage/server/embeddings/providers/index.html +0 -116
  130. package/coverage/server/embeddings/registry.ts.html +0 -151
  131. package/coverage/server/index.html +0 -431
  132. package/coverage/shared/Api.ts.html +0 -478
  133. package/coverage/shared/Audio.ts.html +0 -1318
  134. package/coverage/shared/DB.ts.html +0 -2095
  135. package/coverage/shared/Errors.ts.html +0 -145
  136. package/coverage/shared/Experiment.ts.html +0 -298
  137. package/coverage/shared/FrameworkRequests.ts.html +0 -538
  138. package/coverage/shared/ImageGen.ts.html +0 -1861
  139. package/coverage/shared/Router.ts.html +0 -538
  140. package/coverage/shared/SchemaDiff.ts.html +0 -634
  141. package/coverage/shared/SchemaSerializer.ts.html +0 -517
  142. package/coverage/shared/TextGen.ts.html +0 -3076
  143. package/coverage/shared/Voice.ts.html +0 -331
  144. package/coverage/shared/WebSearch.ts.html +0 -169
  145. package/coverage/shared/index.html +0 -311
  146. package/coverage/shared/index.ts.html +0 -529
  147. package/coverage/three/server/VideoEncoder.ts.html +0 -2245
  148. package/coverage/three/server/index.html +0 -116
  149. package/coverage/three/shared/CameraController.ts.html +0 -1519
  150. package/coverage/three/shared/PostProcessing.ts.html +0 -1771
  151. package/coverage/three/shared/index.html +0 -131
  152. package/coverage/webrtc/server/VideoRoomServer.ts.html +0 -1726
  153. package/coverage/webrtc/server/index.html +0 -116
  154. package/coverage/worker/TaskHost.ts.html +0 -865
  155. package/coverage/worker/index.html +0 -116
@@ -3,15 +3,15 @@
3
3
  <html lang="en">
4
4
 
5
5
  <head>
6
- <title>Code coverage report for server/Storage.ts</title>
6
+ <title>Code coverage report for Storage.ts</title>
7
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" />
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
11
  <meta name="viewport" content="width=device-width, initial-scale=1" />
12
12
  <style type='text/css'>
13
13
  .coverage-summary .sorter {
14
- background-image: url(../sort-arrow-sprite.png);
14
+ background-image: url(sort-arrow-sprite.png);
15
15
  }
16
16
  </style>
17
17
  </head>
@@ -19,34 +19,34 @@
19
19
  <body>
20
20
  <div class='wrapper'>
21
21
  <div class='pad1'>
22
- <h1><a href="../index.html">All files</a> / <a href="index.html">server</a> Storage.ts</h1>
22
+ <h1><a href="index.html">All files</a> Storage.ts</h1>
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">97.5% </span>
26
+ <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>39/40</span>
28
+ <span class='fraction'>36/36</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">96.66% </span>
33
+ <span class="strong">94.44% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>29/30</span>
35
+ <span class='fraction'>17/18</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">90.9% </span>
40
+ <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>10/11</span>
42
+ <span class='fraction'>11/11</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">97.43% </span>
47
+ <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>38/39</span>
49
+ <span class='fraction'>36/36</span>
50
50
  </div>
51
51
 
52
52
 
@@ -198,23 +198,7 @@
198
198
  <a name='L133'></a><a href='#L133'>133</a>
199
199
  <a name='L134'></a><a href='#L134'>134</a>
200
200
  <a name='L135'></a><a href='#L135'>135</a>
201
- <a name='L136'></a><a href='#L136'>136</a>
202
- <a name='L137'></a><a href='#L137'>137</a>
203
- <a name='L138'></a><a href='#L138'>138</a>
204
- <a name='L139'></a><a href='#L139'>139</a>
205
- <a name='L140'></a><a href='#L140'>140</a>
206
- <a name='L141'></a><a href='#L141'>141</a>
207
- <a name='L142'></a><a href='#L142'>142</a>
208
- <a name='L143'></a><a href='#L143'>143</a>
209
- <a name='L144'></a><a href='#L144'>144</a>
210
- <a name='L145'></a><a href='#L145'>145</a>
211
- <a name='L146'></a><a href='#L146'>146</a>
212
- <a name='L147'></a><a href='#L147'>147</a>
213
- <a name='L148'></a><a href='#L148'>148</a>
214
- <a name='L149'></a><a href='#L149'>149</a>
215
- <a name='L150'></a><a href='#L150'>150</a>
216
- <a name='L151'></a><a href='#L151'>151</a>
217
- <a name='L152'></a><a href='#L152'>152</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
201
+ <a name='L136'></a><a href='#L136'>136</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
218
202
  <span class="cline-any cline-neutral">&nbsp;</span>
219
203
  <span class="cline-any cline-neutral">&nbsp;</span>
220
204
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -222,25 +206,24 @@
222
206
  <span class="cline-any cline-neutral">&nbsp;</span>
223
207
  <span class="cline-any cline-neutral">&nbsp;</span>
224
208
  <span class="cline-any cline-neutral">&nbsp;</span>
225
- <span class="cline-any cline-yes">2x</span>
226
- <span class="cline-any cline-neutral">&nbsp;</span>
209
+ <span class="cline-any cline-yes">1x</span>
227
210
  <span class="cline-any cline-neutral">&nbsp;</span>
228
- <span class="cline-any cline-no">&nbsp;</span>
229
211
  <span class="cline-any cline-neutral">&nbsp;</span>
212
+ <span class="cline-any cline-yes">11x</span>
230
213
  <span class="cline-any cline-neutral">&nbsp;</span>
231
214
  <span class="cline-any cline-neutral">&nbsp;</span>
232
- <span class="cline-any cline-yes">20x</span>
233
215
  <span class="cline-any cline-neutral">&nbsp;</span>
216
+ <span class="cline-any cline-yes">28x</span>
234
217
  <span class="cline-any cline-neutral">&nbsp;</span>
235
218
  <span class="cline-any cline-neutral">&nbsp;</span>
236
- <span class="cline-any cline-yes">33x</span>
237
219
  <span class="cline-any cline-neutral">&nbsp;</span>
220
+ <span class="cline-any cline-yes">28x</span>
238
221
  <span class="cline-any cline-neutral">&nbsp;</span>
239
222
  <span class="cline-any cline-neutral">&nbsp;</span>
240
223
  <span class="cline-any cline-neutral">&nbsp;</span>
241
224
  <span class="cline-any cline-neutral">&nbsp;</span>
242
- <span class="cline-any cline-yes">24x</span>
243
225
  <span class="cline-any cline-neutral">&nbsp;</span>
226
+ <span class="cline-any cline-yes">29x</span>
244
227
  <span class="cline-any cline-neutral">&nbsp;</span>
245
228
  <span class="cline-any cline-neutral">&nbsp;</span>
246
229
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -251,36 +234,22 @@
251
234
  <span class="cline-any cline-neutral">&nbsp;</span>
252
235
  <span class="cline-any cline-neutral">&nbsp;</span>
253
236
  <span class="cline-any cline-neutral">&nbsp;</span>
237
+ <span class="cline-any cline-yes">17x</span>
254
238
  <span class="cline-any cline-neutral">&nbsp;</span>
255
239
  <span class="cline-any cline-neutral">&nbsp;</span>
256
- <span class="cline-any cline-yes">13x</span>
257
- <span class="cline-any cline-neutral">&nbsp;</span>
258
- <span class="cline-any cline-yes">8x</span>
259
- <span class="cline-any cline-neutral">&nbsp;</span>
260
240
  <span class="cline-any cline-neutral">&nbsp;</span>
241
+ <span class="cline-any cline-yes">25x</span>
242
+ <span class="cline-any cline-yes">12x</span>
243
+ <span class="cline-any cline-yes">12x</span>
261
244
  <span class="cline-any cline-neutral">&nbsp;</span>
262
245
  <span class="cline-any cline-neutral">&nbsp;</span>
263
246
  <span class="cline-any cline-yes">13x</span>
264
- <span class="cline-any cline-yes">2x</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-yes">6x</span>
268
247
  <span class="cline-any cline-neutral">&nbsp;</span>
269
248
  <span class="cline-any cline-neutral">&nbsp;</span>
249
+ <span class="cline-any cline-yes">25x</span>
270
250
  <span class="cline-any cline-neutral">&nbsp;</span>
271
- <span class="cline-any cline-yes">18x</span>
272
- <span class="cline-any cline-yes">7x</span>
273
- <span class="cline-any cline-yes">7x</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-yes">11x</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-yes">18x</span>
282
- <span class="cline-any cline-yes">2x</span>
283
- <span class="cline-any cline-neutral">&nbsp;</span>
251
+ <span class="cline-any cline-yes">4x</span>
252
+ <span class="cline-any cline-yes">4x</span>
284
253
  <span class="cline-any cline-neutral">&nbsp;</span>
285
254
  <span class="cline-any cline-yes">9x</span>
286
255
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -305,12 +274,12 @@
305
274
  <span class="cline-any cline-neutral">&nbsp;</span>
306
275
  <span class="cline-any cline-neutral">&nbsp;</span>
307
276
  <span class="cline-any cline-neutral">&nbsp;</span>
308
- <span class="cline-any cline-yes">24x</span>
277
+ <span class="cline-any cline-yes">29x</span>
309
278
  <span class="cline-any cline-neutral">&nbsp;</span>
310
- <span class="cline-any cline-yes">24x</span>
279
+ <span class="cline-any cline-yes">29x</span>
311
280
  <span class="cline-any cline-neutral">&nbsp;</span>
312
- <span class="cline-any cline-yes">7x</span>
313
- <span class="cline-any cline-yes">7x</span>
281
+ <span class="cline-any cline-yes">8x</span>
282
+ <span class="cline-any cline-yes">8x</span>
314
283
  <span class="cline-any cline-neutral">&nbsp;</span>
315
284
  <span class="cline-any cline-neutral">&nbsp;</span>
316
285
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -318,50 +287,49 @@
318
287
  <span class="cline-any cline-neutral">&nbsp;</span>
319
288
  <span class="cline-any cline-neutral">&nbsp;</span>
320
289
  <span class="cline-any cline-neutral">&nbsp;</span>
321
- <span class="cline-any cline-yes">5x</span>
290
+ <span class="cline-any cline-yes">8x</span>
322
291
  <span class="cline-any cline-neutral">&nbsp;</span>
323
292
  <span class="cline-any cline-neutral">&nbsp;</span>
324
293
  <span class="cline-any cline-neutral">&nbsp;</span>
325
- <span class="cline-any cline-yes">2x</span>
326
- <span class="cline-any cline-yes">2x</span>
327
- <span class="cline-any cline-yes">2x</span>
328
- <span class="cline-any cline-yes">2x</span>
329
- <span class="cline-any cline-yes">2x</span>
294
+ <span class="cline-any cline-yes">3x</span>
295
+ <span class="cline-any cline-yes">3x</span>
296
+ <span class="cline-any cline-yes">3x</span>
297
+ <span class="cline-any cline-yes">3x</span>
298
+ <span class="cline-any cline-yes">3x</span>
330
299
  <span class="cline-any cline-neutral">&nbsp;</span>
331
300
  <span class="cline-any cline-neutral">&nbsp;</span>
332
301
  <span class="cline-any cline-neutral">&nbsp;</span>
333
302
  <span class="cline-any cline-neutral">&nbsp;</span>
334
303
  <span class="cline-any cline-neutral">&nbsp;</span>
335
304
  <span class="cline-any cline-neutral">&nbsp;</span>
336
- <span class="cline-any cline-yes">2x</span>
305
+ <span class="cline-any cline-yes">3x</span>
337
306
  <span class="cline-any cline-neutral">&nbsp;</span>
338
307
  <span class="cline-any cline-neutral">&nbsp;</span>
339
- <span class="cline-any cline-yes">2x</span>
308
+ <span class="cline-any cline-yes">3x</span>
340
309
  <span class="cline-any cline-neutral">&nbsp;</span>
341
310
  <span class="cline-any cline-neutral">&nbsp;</span>
342
311
  <span class="cline-any cline-neutral">&nbsp;</span>
343
- <span class="cline-any cline-yes">9x</span>
312
+ <span class="cline-any cline-yes">11x</span>
344
313
  <span class="cline-any cline-neutral">&nbsp;</span>
345
314
  <span class="cline-any cline-neutral">&nbsp;</span>
346
315
  <span class="cline-any cline-neutral">&nbsp;</span>
347
- <span class="cline-any cline-yes">2x</span>
348
- <span class="cline-any cline-yes">2x</span>
316
+ <span class="cline-any cline-yes">3x</span>
317
+ <span class="cline-any cline-yes">3x</span>
349
318
  <span class="cline-any cline-neutral">&nbsp;</span>
350
319
  <span class="cline-any cline-neutral">&nbsp;</span>
351
320
  <span class="cline-any cline-neutral">&nbsp;</span>
352
- <span class="cline-any cline-yes">2x</span>
321
+ <span class="cline-any cline-yes">3x</span>
353
322
  <span class="cline-any cline-neutral">&nbsp;</span>
354
323
  <span class="cline-any cline-neutral">&nbsp;</span>
355
324
  <span class="cline-any cline-neutral">&nbsp;</span>
325
+ <span class="cline-any cline-yes">3x</span>
326
+ <span class="cline-any cline-yes">3x</span>
356
327
  <span class="cline-any cline-yes">2x</span>
357
328
  <span class="cline-any cline-yes">2x</span>
358
- <span class="cline-any cline-yes">1x</span>
359
- <span class="cline-any cline-neutral">&nbsp;</span>
360
- <span class="cline-any cline-yes">1x</span>
361
329
  <span class="cline-any cline-neutral">&nbsp;</span>
362
330
  <span class="cline-any cline-neutral">&nbsp;</span>
363
- <span class="cline-any cline-yes">2x</span>
364
- <span class="cline-any cline-yes">2x</span>
331
+ <span class="cline-any cline-yes">3x</span>
332
+ <span class="cline-any cline-yes">3x</span>
365
333
  <span class="cline-any cline-neutral">&nbsp;</span>
366
334
  <span class="cline-any cline-neutral">&nbsp;</span>
367
335
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -375,12 +343,12 @@ import { getSignedUrl } from '@aws-sdk/s3-request-presigner';
375
343
  &nbsp;
376
344
  let _storagePrefix = '';
377
345
  &nbsp;
378
- export function <span class="fstat-no" title="function not covered" >setStoragePrefix(p</span>refix: string): void {
379
- <span class="cstat-no" title="statement not covered" > _storagePrefix = prefix;</span>
346
+ export function setStoragePrefix(prefix: string): void {
347
+ _storagePrefix = prefix;
380
348
  }
381
349
  &nbsp;
382
350
  function prefixKey(key: string): string {
383
- return _storagePrefix ? <span class="branch-0 cbranch-no" title="branch not covered" >`${_storagePrefix}/${key}` : k</span>ey;
351
+ return _storagePrefix ? `${_storagePrefix}/${key}` : key;
384
352
  }
385
353
  &nbsp;
386
354
  function isDev(): boolean {
@@ -395,27 +363,13 @@ function getS3Client(): S3Client {
395
363
  endpoint: process.env['MINIO_ENDPOINT'] ?? 'http://localhost:9000',
396
364
  credentials: { accessKeyId: 'minioadmin', secretAccessKey: 'minioadmin' },
397
365
  forcePathStyle: true,
398
- // Disable automatic CRC32 checksums — SDK v3.700+ bakes an empty-body
399
- // checksum into presigned URLs, which causes 403s when the actual upload
400
- // has a real body (e.g. image files via presignedPut).
401
366
  requestChecksumCalculation: 'WHEN_REQUIRED',
402
367
  responseChecksumValidation: 'WHEN_REQUIRED',
403
368
  });
404
369
  }
405
370
  &nbsp;
406
371
  function getBucketName(bucket: 'public' | 'temp'): string {
407
- if (isDev()) return bucket;
408
- const name =
409
- bucket === 'public'
410
- ? process.env['STORAGE_PUBLIC_BUCKET'] ??
411
- process.env['CLOUDFLARE_R2_PUBLIC_BUCKET']
412
- : process.env['STORAGE_TEMP_BUCKET'] ??
413
- process.env['CLOUDFLARE_R2_TEMP_BUCKET'];
414
- if (!name)
415
- throw new Error(
416
- `[Storage] STORAGE_${bucket.toUpperCase()}_BUCKET required in production`,
417
- );
418
- return name;
372
+ return bucket;
419
373
  }
420
374
  &nbsp;
421
375
  function getBaseUrl(bucket: 'public' | 'temp'): string {
@@ -423,16 +377,15 @@ function getBaseUrl(bucket: 'public' | 'temp'): string {
423
377
  const endpoint = process.env['MINIO_ENDPOINT'] ?? 'http://localhost:9000';
424
378
  return `${endpoint}/${bucket}/`;
425
379
  }
426
- const url =
427
- bucket === 'public'
428
- ? process.env['STORAGE_PUBLIC_URL'] ??
429
- process.env['CLOUDFLARE_R2_PUBLIC_URL']
430
- : process.env['STORAGE_TEMP_URL'] ??
431
- process.env['CLOUDFLARE_R2_TEMP_URL'];
432
- if (!url)
433
- throw new Error(
434
- `[Storage] STORAGE_${bucket.toUpperCase()}_URL required in production`,
435
- );
380
+ // In production, the sidecar injects STORAGE_PUBLIC_URL / STORAGE_TEMP_URL
381
+ const url = bucket === 'public'
382
+ ? process.env['STORAGE_PUBLIC_URL']
383
+ : process.env['STORAGE_TEMP_URL'];
384
+ if (!url) {
385
+ // Fall back to sidecar endpoint if URLs not injected
386
+ const endpoint = process.env['MINIO_ENDPOINT'] ?? <span class="branch-1 cbranch-no" title="branch not covered" >'http://localhost:9000';</span>
387
+ return `${endpoint}/${bucket}/`;
388
+ }
436
389
  return url.endsWith('/') ? url : url + '/';
437
390
  }
438
391
  &nbsp;
@@ -507,7 +460,6 @@ export function createStorageClient(): StorageClient {
507
460
  let proxiedUploadUrl = uploadUrl;
508
461
  if (isDev()) {
509
462
  const parsed = new URL(uploadUrl);
510
- // Replace S3 origin with a same-origin path that Express will proxy
511
463
  proxiedUploadUrl = `/_s3${parsed.pathname}${parsed.search}`;
512
464
  }
513
465
  &nbsp;
@@ -523,16 +475,16 @@ export function createStorageClient(): StorageClient {
523
475
  <div class='footer quiet pad2 space-top1 center small'>
524
476
  Code coverage generated by
525
477
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
526
- at 2026-04-05T11:16:35.412Z
478
+ at 2026-04-08T15:50:02.828Z
527
479
  </div>
528
- <script src="../prettify.js"></script>
480
+ <script src="prettify.js"></script>
529
481
  <script>
530
482
  window.onload = function () {
531
483
  prettyPrint();
532
484
  };
533
485
  </script>
534
- <script src="../sorter.js"></script>
535
- <script src="../block-navigation.js"></script>
486
+ <script src="sorter.js"></script>
487
+ <script src="block-navigation.js"></script>
536
488
  </body>
537
489
  </html>
538
490