cursedbelt-server 4.12.0 → 4.13.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 (469) hide show
  1. package/dist/server/_bunOnly.d.ts +1 -0
  2. package/dist/server/_bunOnly.js +12 -0
  3. package/dist/server/activity/index.d.ts +4 -4
  4. package/dist/server/activity/index.js +3 -3
  5. package/dist/server/activity/migrations.d.ts +1 -1
  6. package/dist/server/activity/shareSource.d.ts +1 -1
  7. package/dist/server/activity/shareSource.js +1 -1
  8. package/dist/server/activity/store.js +2 -2
  9. package/dist/server/analytics/index.d.ts +2 -2
  10. package/dist/server/analytics/index.js +2 -2
  11. package/dist/server/app.d.ts +4 -4
  12. package/dist/server/app.js +6 -6
  13. package/dist/server/audit/index.d.ts +2 -2
  14. package/dist/server/audit/index.js +2 -2
  15. package/dist/server/audit/migrations.d.ts +1 -1
  16. package/dist/server/audit/sqliteSink.js +2 -2
  17. package/dist/server/audit/sqliteSink.test.js +1 -1
  18. package/dist/server/auth/csrf.js +1 -1
  19. package/dist/server/auth/fileTokenSigner.d.ts +1 -1
  20. package/dist/server/auth/getOnly.d.ts +1 -1
  21. package/dist/server/auth/getOnly.js +1 -1
  22. package/dist/server/auth/index.d.ts +12 -12
  23. package/dist/server/auth/index.js +11 -11
  24. package/dist/server/auth/jwt.d.ts +1 -1
  25. package/dist/server/auth/middleware.d.ts +1 -1
  26. package/dist/server/auth/middleware.js +3 -3
  27. package/dist/server/auth/sessionStore.d.ts +2 -2
  28. package/dist/server/auth/types.d.ts +1 -1
  29. package/dist/server/bench/assert.d.ts +1 -1
  30. package/dist/server/bench/assert.js +1 -1
  31. package/dist/server/bench/cpuBudget.d.ts +4 -4
  32. package/dist/server/bench/cpuBudget.js +3 -3
  33. package/dist/server/bench/index.d.ts +6 -6
  34. package/dist/server/bench/index.js +6 -6
  35. package/dist/server/bench/recorder.d.ts +2 -2
  36. package/dist/server/bench/recorder.js +1 -1
  37. package/dist/server/bench/runBench.d.ts +2 -2
  38. package/dist/server/ctgr.d.ts +1 -1
  39. package/dist/server/ctgr.js +1 -1
  40. package/dist/server/d1/fakeD1.d.ts +1 -1
  41. package/dist/server/d1/fakeD1.js +1 -1
  42. package/dist/server/d1/index.d.ts +8 -8
  43. package/dist/server/d1/index.js +8 -8
  44. package/dist/server/d1/invocation.d.ts +1 -1
  45. package/dist/server/d1/invocation.js +2 -2
  46. package/dist/server/d1/kysely.d.ts +2 -2
  47. package/dist/server/d1/kysely.js +2 -2
  48. package/dist/server/d1/limits.d.ts +1 -1
  49. package/dist/server/d1/limits.js +1 -1
  50. package/dist/server/d1/local.d.ts +1 -1
  51. package/dist/server/d1/local.js +3 -3
  52. package/dist/server/d1/localBackup.d.ts +1 -1
  53. package/dist/server/d1/localBackup.js +2 -2
  54. package/dist/server/d1/remote.d.ts +1 -1
  55. package/dist/server/d1/remote.js +3 -3
  56. package/dist/server/d1/scheduling.d.ts +1 -1
  57. package/dist/server/d1/values.d.ts +1 -1
  58. package/dist/server/d1/values.js +1 -1
  59. package/dist/server/db/kysely.d.ts +1 -1
  60. package/dist/server/dropzone/index.d.ts +2 -2
  61. package/dist/server/dropzone/index.js +2 -2
  62. package/dist/server/guard/argon2Binding.js +1 -1
  63. package/dist/server/guard/index.d.ts +5 -5
  64. package/dist/server/guard/index.js +5 -5
  65. package/dist/server/guard/kdfWorker.d.ts +1 -1
  66. package/dist/server/guard/kdfWorker.js +3 -3
  67. package/dist/server/guard/kdfWorkerEntry.js +1 -1
  68. package/dist/server/guard/passwordVerifier.js +1 -1
  69. package/dist/server/guard/sessionSigner.d.ts +2 -2
  70. package/dist/server/guard/sessionSigner.js +1 -1
  71. package/dist/server/incidents/checks.d.ts +2 -2
  72. package/dist/server/incidents/index.d.ts +8 -8
  73. package/dist/server/incidents/index.js +8 -8
  74. package/dist/server/incidents/migrations.d.ts +1 -1
  75. package/dist/server/incidents/notifier.d.ts +3 -3
  76. package/dist/server/incidents/reporter.d.ts +1 -1
  77. package/dist/server/incidents/routes.d.ts +4 -4
  78. package/dist/server/incidents/routes.js +1 -1
  79. package/dist/server/incidents/store.d.ts +1 -1
  80. package/dist/server/incidents/store.js +3 -3
  81. package/dist/server/index.d.ts +26 -26
  82. package/dist/server/index.js +23 -23
  83. package/dist/server/jobs/fireQueue.d.ts +1 -1
  84. package/dist/server/jobs/fireQueue.js +3 -3
  85. package/dist/server/jobs/index.d.ts +7 -7
  86. package/dist/server/jobs/index.js +7 -7
  87. package/dist/server/jobs/logger.d.ts +1 -1
  88. package/dist/server/jobs/polling.d.ts +1 -1
  89. package/dist/server/jobs/polling.js +1 -1
  90. package/dist/server/jobs/runner.d.ts +1 -1
  91. package/dist/server/jobs/runner.js +5 -5
  92. package/dist/server/master-lock/accountsPage.d.ts +1 -1
  93. package/dist/server/master-lock/accountsPage.js +1 -1
  94. package/dist/server/master-lock/guard.d.ts +2 -2
  95. package/dist/server/master-lock/guard.js +2 -2
  96. package/dist/server/master-lock/index.d.ts +7 -7
  97. package/dist/server/master-lock/index.js +7 -7
  98. package/dist/server/master-lock/masterLock.js +1 -11
  99. package/dist/server/master-lock/principals.d.ts +1 -1
  100. package/dist/server/master-lock/principals.js +1 -1
  101. package/dist/server/master-lock/seed.d.ts +1 -1
  102. package/dist/server/master-lock/seed.js +1 -1
  103. package/dist/server/master-lock/store.d.ts +1 -1
  104. package/dist/server/media-bun/index.d.ts +3 -3
  105. package/dist/server/media-bun/index.js +3 -3
  106. package/dist/server/media-bun/video.d.ts +1 -1
  107. package/dist/server/media-bun/video.js +1 -1
  108. package/dist/server/metrics/telemetrySink.d.ts +1 -1
  109. package/dist/server/metrics/telemetrySink.js +1 -1
  110. package/dist/server/middleware/correlationId.d.ts +1 -1
  111. package/dist/server/middleware/errorEnvelope.d.ts +1 -1
  112. package/dist/server/middleware/errorEnvelope.js +1 -1
  113. package/dist/server/middleware/index.d.ts +10 -10
  114. package/dist/server/middleware/index.js +10 -10
  115. package/dist/server/middleware/rateLimit.js +1 -1
  116. package/dist/server/middleware/requestLogger.d.ts +3 -3
  117. package/dist/server/middleware/requestLogger.js +3 -3
  118. package/dist/server/middleware/zValidator.d.ts +1 -1
  119. package/dist/server/middleware/zValidator.js +1 -1
  120. package/dist/server/migration/runner.d.ts +1 -1
  121. package/dist/server/net/outboundGuard.js +1 -1
  122. package/dist/server/notifications/index.d.ts +7 -7
  123. package/dist/server/notifications/index.js +4 -4
  124. package/dist/server/notifications/migrations.d.ts +1 -1
  125. package/dist/server/notifications/routes.d.ts +1 -1
  126. package/dist/server/notifications/service.d.ts +1 -1
  127. package/dist/server/notifications/service.js +2 -2
  128. package/dist/server/resume/index.d.ts +2 -2
  129. package/dist/server/resume/index.js +2 -2
  130. package/dist/server/resume/routes.d.ts +1 -1
  131. package/dist/server/resume/routes.js +1 -1
  132. package/dist/server/retention/archive.js +1 -1
  133. package/dist/server/retention/fleet.d.ts +2 -2
  134. package/dist/server/retention/fleet.js +2 -2
  135. package/dist/server/retention/index.d.ts +6 -6
  136. package/dist/server/retention/index.js +6 -6
  137. package/dist/server/retention/store.d.ts +1 -1
  138. package/dist/server/retention/store.js +2 -2
  139. package/dist/server/retention/sweeper.d.ts +3 -3
  140. package/dist/server/retention/sweeper.js +2 -2
  141. package/dist/server/retention/target.d.ts +3 -3
  142. package/dist/server/retention/target.js +2 -2
  143. package/dist/server/search/index.d.ts +2 -2
  144. package/dist/server/search/index.js +2 -2
  145. package/dist/server/search/pgSearchProvider.js +2 -2
  146. package/dist/server/search/pgSearchProvider.pg.test.js +2 -2
  147. package/dist/server/sharing/index.d.ts +8 -8
  148. package/dist/server/sharing/index.js +5 -5
  149. package/dist/server/sharing/migrations.d.ts +1 -1
  150. package/dist/server/sharing/router.d.ts +1 -1
  151. package/dist/server/sharing/sql.js +1 -1
  152. package/dist/server/sharing/store.js +3 -3
  153. package/dist/server/sqlite/browse.js +1 -1
  154. package/dist/server/sqlite/export.js +1 -1
  155. package/dist/server/sqlite/import.js +1 -1
  156. package/dist/server/sqlite/index.d.ts +9 -9
  157. package/dist/server/sqlite/index.js +9 -9
  158. package/dist/server/sqlite/stats.js +1 -1
  159. package/dist/server/sqlite/viewer.js +2 -2
  160. package/dist/server/storage/binaryServerProcessing.d.ts +1 -1
  161. package/dist/server/storage/binaryServerProcessing.js +2 -2
  162. package/dist/server/storage/binaryServerStore.d.ts +2 -2
  163. package/dist/server/storage/binaryStore.d.ts +1 -1
  164. package/dist/server/storage/binaryStoreFake.d.ts +1 -1
  165. package/dist/server/storage/diskStore.d.ts +1 -1
  166. package/dist/server/storage/files/adapter.d.ts +4 -4
  167. package/dist/server/storage/files/adapter.js +1 -1
  168. package/dist/server/storage/files/catalogue.d.ts +3 -3
  169. package/dist/server/storage/files/catalogue.js +6 -6
  170. package/dist/server/storage/files/chunkedUpload.d.ts +3 -3
  171. package/dist/server/storage/files/chunkedUpload.js +1 -1
  172. package/dist/server/storage/files/fileRoutes.d.ts +4 -4
  173. package/dist/server/storage/files/fileRoutes.js +3 -3
  174. package/dist/server/storage/files/index.d.ts +9 -9
  175. package/dist/server/storage/files/index.js +8 -8
  176. package/dist/server/storage/files/migrations.d.ts +1 -1
  177. package/dist/server/storage/files/stack.d.ts +7 -7
  178. package/dist/server/storage/files/stack.js +10 -10
  179. package/dist/server/storage/files/storageOps.d.ts +1 -1
  180. package/dist/server/storage/files/types.d.ts +1 -1
  181. package/dist/server/storage/imageThumbnail.js +1 -1
  182. package/dist/server/storage/index.d.ts +15 -15
  183. package/dist/server/storage/index.js +14 -14
  184. package/dist/server/storage/mountMediaRoutes.d.ts +3 -3
  185. package/dist/server/storage/mountMediaRoutes.js +2 -2
  186. package/dist/server/storage/objectStoreMediaStore.d.ts +1 -1
  187. package/dist/server/storage/s3ObjectStore.js +1 -1
  188. package/dist/server/storage/sources.d.ts +2 -2
  189. package/dist/server/storage/sources.js +2 -2
  190. package/dist/server/storage/streamRange.d.ts +1 -1
  191. package/dist/server/storage/streamToken.js +1 -1
  192. package/dist/server/storage/videoProcessor.d.ts +1 -1
  193. package/dist/server/storage/videoProcessor.js +2 -2
  194. package/dist/server/sync/engine.d.ts +2 -2
  195. package/dist/server/sync/engine.js +1 -1
  196. package/dist/server/sync/http.d.ts +4 -4
  197. package/dist/server/sync/http.js +3 -3
  198. package/dist/server/sync/index.d.ts +11 -11
  199. package/dist/server/sync/index.js +11 -11
  200. package/dist/server/sync/opLog.d.ts +1 -1
  201. package/dist/server/sync/signal.d.ts +1 -1
  202. package/dist/server/sync/timer.d.ts +3 -3
  203. package/dist/server/sync/timer.js +1 -1
  204. package/dist/server/ws/eventBus.d.ts +1 -1
  205. package/dist/server/ws/hub.d.ts +1 -1
  206. package/dist/server/ws/hub.js +3 -3
  207. package/dist/server/ws/index.d.ts +5 -5
  208. package/dist/server/ws/index.js +4 -4
  209. package/dist/server/ws/presence.d.ts +1 -1
  210. package/dist/server/ws/room.d.ts +1 -1
  211. package/dist/server/ws/types.d.ts +1 -1
  212. package/package.json +9 -9
  213. package/src/publicSurface.spec.ts +1 -1
  214. package/src/server/_bunOnly.ts +15 -0
  215. package/src/server/activity/index.ts +4 -4
  216. package/src/server/activity/migrations.ts +1 -1
  217. package/src/server/activity/shareSource.ts +2 -2
  218. package/src/server/activity/store.spec.ts +3 -3
  219. package/src/server/activity/store.ts +2 -2
  220. package/src/server/analytics/index.ts +2 -2
  221. package/src/server/analytics/injectedScripts.spec.ts +3 -3
  222. package/src/server/analytics/webAnalytics.spec.ts +1 -1
  223. package/src/server/app.spec.ts +9 -9
  224. package/src/server/app.ts +7 -7
  225. package/src/server/audit/index.ts +2 -2
  226. package/src/server/audit/migrations.ts +1 -1
  227. package/src/server/audit/sqliteSink.test.ts +1 -1
  228. package/src/server/audit/sqliteSink.ts +2 -2
  229. package/src/server/auth/cookie.spec.ts +1 -1
  230. package/src/server/auth/csrf.spec.ts +1 -1
  231. package/src/server/auth/csrf.ts +1 -1
  232. package/src/server/auth/fileTokenSigner.ts +1 -1
  233. package/src/server/auth/getOnly.spec.ts +2 -2
  234. package/src/server/auth/getOnly.ts +2 -2
  235. package/src/server/auth/index.ts +12 -12
  236. package/src/server/auth/jwt.spec.ts +2 -2
  237. package/src/server/auth/jwt.ts +1 -1
  238. package/src/server/auth/loginThrottle.spec.ts +1 -1
  239. package/src/server/auth/middleware.spec.ts +7 -7
  240. package/src/server/auth/middleware.ts +4 -4
  241. package/src/server/auth/password.spec.ts +1 -1
  242. package/src/server/auth/sessionStore.spec.ts +3 -3
  243. package/src/server/auth/sessionStore.ts +3 -3
  244. package/src/server/auth/totp.spec.ts +1 -1
  245. package/src/server/auth/types.ts +1 -1
  246. package/src/server/auth/vault.spec.ts +1 -1
  247. package/src/server/bench/assert.ts +2 -2
  248. package/src/server/bench/budget.spec.ts +2 -2
  249. package/src/server/bench/cpuBudget.spec.ts +6 -6
  250. package/src/server/bench/cpuBudget.ts +5 -5
  251. package/src/server/bench/cpuClock.spec.ts +2 -2
  252. package/src/server/bench/index.ts +6 -6
  253. package/src/server/bench/recorder.ts +2 -2
  254. package/src/server/bench/runBench.ts +2 -2
  255. package/src/server/ctgr.spec.ts +2 -2
  256. package/src/server/ctgr.ts +2 -2
  257. package/src/server/d1/backup.spec.ts +2 -2
  258. package/src/server/d1/fakeD1.ts +2 -2
  259. package/src/server/d1/index.ts +8 -8
  260. package/src/server/d1/invocation.spec.ts +6 -6
  261. package/src/server/d1/invocation.ts +2 -2
  262. package/src/server/d1/kysely.spec.ts +5 -5
  263. package/src/server/d1/kysely.ts +3 -3
  264. package/src/server/d1/limits.spec.ts +3 -3
  265. package/src/server/d1/limits.ts +1 -1
  266. package/src/server/d1/local.ts +3 -3
  267. package/src/server/d1/localBackup.ts +3 -3
  268. package/src/server/d1/remote.ts +3 -3
  269. package/src/server/d1/sameShape.spec.ts +4 -4
  270. package/src/server/d1/scheduling.spec.ts +1 -1
  271. package/src/server/d1/scheduling.ts +1 -1
  272. package/src/server/d1/values.ts +1 -1
  273. package/src/server/db/kysely.spec.ts +1 -1
  274. package/src/server/db/kysely.ts +1 -1
  275. package/src/server/dropzone/index.ts +2 -2
  276. package/src/server/dropzone/scan.spec.ts +1 -1
  277. package/src/server/errors.spec.ts +1 -1
  278. package/src/server/guard/argon2Binding.spec.ts +1 -1
  279. package/src/server/guard/argon2Binding.ts +1 -1
  280. package/src/server/guard/argon2Kat.spec.ts +1 -1
  281. package/src/server/guard/guard.spec.ts +3 -3
  282. package/src/server/guard/index.ts +5 -5
  283. package/src/server/guard/kdfWorker.spec.ts +3 -3
  284. package/src/server/guard/kdfWorker.ts +3 -3
  285. package/src/server/guard/kdfWorkerEntry.ts +1 -1
  286. package/src/server/guard/passwordVerifier.spec.ts +1 -1
  287. package/src/server/guard/passwordVerifier.ts +1 -1
  288. package/src/server/guard/revocationStore.spec.ts +2 -2
  289. package/src/server/guard/sessionSigner.ts +3 -3
  290. package/src/server/incidents/checks.ts +2 -2
  291. package/src/server/incidents/incidents.spec.ts +7 -7
  292. package/src/server/incidents/index.ts +8 -8
  293. package/src/server/incidents/migrations.ts +1 -1
  294. package/src/server/incidents/notifier.ts +3 -3
  295. package/src/server/incidents/reporter.ts +1 -1
  296. package/src/server/incidents/routes.ts +5 -5
  297. package/src/server/incidents/store.ts +3 -3
  298. package/src/server/index.ts +26 -26
  299. package/src/server/jobs/fireQueue.spec.ts +1 -1
  300. package/src/server/jobs/fireQueue.ts +3 -3
  301. package/src/server/jobs/index.ts +7 -7
  302. package/src/server/jobs/logger.ts +1 -1
  303. package/src/server/jobs/plainjobAdapter.spec.ts +1 -1
  304. package/src/server/jobs/polling.spec.ts +1 -1
  305. package/src/server/jobs/polling.ts +2 -2
  306. package/src/server/jobs/runner.spec.ts +3 -3
  307. package/src/server/jobs/runner.ts +5 -5
  308. package/src/server/jobs/timeout.spec.ts +1 -1
  309. package/src/server/master-lock/accounts.spec.ts +2 -2
  310. package/src/server/master-lock/accountsPage.spec.ts +4 -4
  311. package/src/server/master-lock/accountsPage.ts +1 -1
  312. package/src/server/master-lock/beaconNeverReachesTheWall.spec.ts +4 -4
  313. package/src/server/master-lock/guard.spec.ts +3 -3
  314. package/src/server/master-lock/guard.ts +3 -3
  315. package/src/server/master-lock/index.ts +7 -7
  316. package/src/server/master-lock/lockPage.spec.ts +2 -2
  317. package/src/server/master-lock/masterLock.spec.ts +2 -2
  318. package/src/server/master-lock/masterLock.ts +1 -10
  319. package/src/server/master-lock/principals.spec.ts +4 -4
  320. package/src/server/master-lock/principals.ts +1 -1
  321. package/src/server/master-lock/seed.spec.ts +3 -3
  322. package/src/server/master-lock/seed.ts +1 -1
  323. package/src/server/master-lock/store.ts +1 -1
  324. package/src/server/media-bun/image.spec.ts +1 -1
  325. package/src/server/media-bun/index.ts +3 -3
  326. package/src/server/media-bun/streaming.spec.ts +1 -1
  327. package/src/server/media-bun/video.spec.ts +1 -1
  328. package/src/server/media-bun/video.ts +1 -1
  329. package/src/server/metrics/normalizeRoute.spec.ts +1 -1
  330. package/src/server/metrics/telemetrySink.spec.ts +3 -3
  331. package/src/server/metrics/telemetrySink.ts +1 -1
  332. package/src/server/middleware/bodyLimit.spec.ts +1 -1
  333. package/src/server/middleware/correlationId.ts +1 -1
  334. package/src/server/middleware/corsAllowlist.spec.ts +2 -2
  335. package/src/server/middleware/errorEnvelope.ts +2 -2
  336. package/src/server/middleware/index.ts +10 -10
  337. package/src/server/middleware/localOrigin.spec.ts +1 -1
  338. package/src/server/middleware/rateLimit.spec.ts +1 -1
  339. package/src/server/middleware/rateLimit.ts +1 -1
  340. package/src/server/middleware/requestLogger.ts +5 -5
  341. package/src/server/middleware/zValidator.spec.ts +4 -4
  342. package/src/server/middleware/zValidator.ts +2 -2
  343. package/src/server/migration/runner.spec.ts +2 -2
  344. package/src/server/migration/runner.ts +1 -1
  345. package/src/server/net/outboundGuard.spec.ts +1 -1
  346. package/src/server/net/outboundGuard.ts +1 -1
  347. package/src/server/notifications/index.ts +7 -7
  348. package/src/server/notifications/migrations.ts +1 -1
  349. package/src/server/notifications/routes.ts +1 -1
  350. package/src/server/notifications/service.spec.ts +3 -3
  351. package/src/server/notifications/service.ts +2 -2
  352. package/src/server/paths/appDataHome.spec.ts +1 -1
  353. package/src/server/resume/index.ts +2 -2
  354. package/src/server/resume/resume.spec.ts +2 -2
  355. package/src/server/resume/routes.ts +1 -1
  356. package/src/server/retention/archive.spec.ts +2 -2
  357. package/src/server/retention/archive.ts +1 -1
  358. package/src/server/retention/fleet.ts +4 -4
  359. package/src/server/retention/index.ts +6 -6
  360. package/src/server/retention/policy.spec.ts +1 -1
  361. package/src/server/retention/store.spec.ts +3 -3
  362. package/src/server/retention/store.ts +3 -3
  363. package/src/server/retention/sweeper.spec.ts +5 -5
  364. package/src/server/retention/sweeper.ts +5 -5
  365. package/src/server/retention/target.spec.ts +3 -3
  366. package/src/server/retention/target.ts +5 -5
  367. package/src/server/search/index.ts +2 -2
  368. package/src/server/search/pgSearchProvider.pg.test.ts +2 -2
  369. package/src/server/search/pgSearchProvider.ts +2 -2
  370. package/src/server/sharing/index.ts +8 -8
  371. package/src/server/sharing/migrations.ts +1 -1
  372. package/src/server/sharing/router.spec.ts +2 -2
  373. package/src/server/sharing/router.ts +1 -1
  374. package/src/server/sharing/sql.ts +1 -1
  375. package/src/server/sharing/store.spec.ts +2 -2
  376. package/src/server/sharing/store.ts +3 -3
  377. package/src/server/sqlite/backup.spec.ts +1 -1
  378. package/src/server/sqlite/browse.spec.ts +1 -1
  379. package/src/server/sqlite/browse.ts +1 -1
  380. package/src/server/sqlite/export.spec.ts +2 -2
  381. package/src/server/sqlite/export.ts +1 -1
  382. package/src/server/sqlite/fts5.spec.ts +1 -1
  383. package/src/server/sqlite/health.spec.ts +1 -1
  384. package/src/server/sqlite/import.spec.ts +3 -3
  385. package/src/server/sqlite/import.ts +1 -1
  386. package/src/server/sqlite/index.ts +9 -9
  387. package/src/server/sqlite/readonlySql.spec.ts +1 -1
  388. package/src/server/sqlite/stats.spec.ts +1 -1
  389. package/src/server/sqlite/stats.ts +1 -1
  390. package/src/server/sqlite/viewer.spec.ts +1 -1
  391. package/src/server/sqlite/viewer.ts +2 -2
  392. package/src/server/storage/binaryServerProcessing.integration.spec.ts +2 -2
  393. package/src/server/storage/binaryServerProcessing.spec.ts +2 -2
  394. package/src/server/storage/binaryServerProcessing.ts +3 -3
  395. package/src/server/storage/binaryServerStore.ts +3 -3
  396. package/src/server/storage/binaryStore.spec.ts +2 -2
  397. package/src/server/storage/binaryStore.ts +1 -1
  398. package/src/server/storage/binaryStoreFake.ts +1 -1
  399. package/src/server/storage/chunked.integration.spec.ts +4 -4
  400. package/src/server/storage/diskStore.ts +1 -1
  401. package/src/server/storage/fileUploadClient-chunked.integration.spec.ts +6 -6
  402. package/src/server/storage/fileUploadClient.integration.spec.ts +7 -7
  403. package/src/server/storage/files/adapter.photo.display.spec.ts +10 -10
  404. package/src/server/storage/files/adapter.photo.spec.ts +9 -9
  405. package/src/server/storage/files/adapter.spec.ts +8 -8
  406. package/src/server/storage/files/adapter.ts +5 -5
  407. package/src/server/storage/files/catalogue.media-host.spec.ts +6 -6
  408. package/src/server/storage/files/catalogue.orderings.spec.ts +6 -6
  409. package/src/server/storage/files/catalogue.recover.spec.ts +5 -5
  410. package/src/server/storage/files/catalogue.sort.spec.ts +6 -6
  411. package/src/server/storage/files/catalogue.spec.ts +7 -7
  412. package/src/server/storage/files/catalogue.trash-import.spec.ts +6 -6
  413. package/src/server/storage/files/catalogue.ts +6 -6
  414. package/src/server/storage/files/chunkedUpload.spec.ts +7 -7
  415. package/src/server/storage/files/chunkedUpload.ts +4 -4
  416. package/src/server/storage/files/collections.spec.ts +6 -6
  417. package/src/server/storage/files/fileRoutes.replace.spec.ts +8 -8
  418. package/src/server/storage/files/fileRoutes.spec.ts +8 -8
  419. package/src/server/storage/files/fileRoutes.ts +6 -6
  420. package/src/server/storage/files/index.ts +9 -9
  421. package/src/server/storage/files/migrations.ts +1 -1
  422. package/src/server/storage/files/stack.spec.ts +5 -5
  423. package/src/server/storage/files/stack.ts +12 -12
  424. package/src/server/storage/files/storageOps.spec.ts +4 -4
  425. package/src/server/storage/files/storageOps.ts +1 -1
  426. package/src/server/storage/files/types.ts +1 -1
  427. package/src/server/storage/imageThumbnail.spec.ts +2 -2
  428. package/src/server/storage/imageThumbnail.ts +1 -1
  429. package/src/server/storage/index.ts +15 -15
  430. package/src/server/storage/mountMediaRoutes.ts +4 -4
  431. package/src/server/storage/objectStore.spec.ts +1 -1
  432. package/src/server/storage/objectStoreMediaStore.ts +1 -1
  433. package/src/server/storage/s3ObjectStore.ts +1 -1
  434. package/src/server/storage/sources.ts +3 -3
  435. package/src/server/storage/storage.spec.ts +6 -6
  436. package/src/server/storage/streamRange.ts +1 -1
  437. package/src/server/storage/streamToken.ts +1 -1
  438. package/src/server/storage/transcodeJobs.spec.ts +1 -1
  439. package/src/server/storage/videoDerivativeKeys.spec.ts +1 -1
  440. package/src/server/storage/videoProcessor.posterOnly.spec.ts +4 -4
  441. package/src/server/storage/videoProcessor.ts +2 -2
  442. package/src/server/sync/alarm.spec.ts +1 -1
  443. package/src/server/sync/commands.spec.ts +1 -1
  444. package/src/server/sync/engine.spec.ts +4 -4
  445. package/src/server/sync/engine.ts +2 -2
  446. package/src/server/sync/http.ts +5 -5
  447. package/src/server/sync/httpRemote.spec.ts +1 -1
  448. package/src/server/sync/index.ts +11 -11
  449. package/src/server/sync/opLog.spec.ts +1 -1
  450. package/src/server/sync/opLog.ts +1 -1
  451. package/src/server/sync/planner.spec.ts +1 -1
  452. package/src/server/sync/signal.spec.ts +1 -1
  453. package/src/server/sync/signal.ts +1 -1
  454. package/src/server/sync/status.spec.ts +1 -1
  455. package/src/server/sync/timer.spec.ts +3 -3
  456. package/src/server/sync/timer.ts +3 -3
  457. package/src/server/sync/tokens.spec.ts +1 -1
  458. package/src/server/ws/eventBus.spec.ts +2 -2
  459. package/src/server/ws/eventBus.ts +1 -1
  460. package/src/server/ws/hub.integration.spec.ts +5 -5
  461. package/src/server/ws/hub.spec.ts +3 -3
  462. package/src/server/ws/hub.ts +4 -4
  463. package/src/server/ws/index.ts +5 -5
  464. package/src/server/ws/presence.spec.ts +3 -3
  465. package/src/server/ws/presence.ts +1 -1
  466. package/src/server/ws/room.spec.ts +2 -2
  467. package/src/server/ws/room.ts +1 -1
  468. package/src/server/ws/types.ts +1 -1
  469. package/src/testTmpRoot.spec.ts +1 -1
@@ -1,9 +1,9 @@
1
1
  import type { Database } from 'bun:sqlite';
2
2
  import { defineQueue, defineWorker, type Queue, type Worker } from 'plainjob';
3
- import { ApiError } from '../errors';
4
- import { defaultJobLogger } from './logger';
5
- import { createPlainjobConnection } from './plainjobAdapter';
6
- import { withTimeout } from './timeout';
3
+ import { ApiError } from '../errors.js';
4
+ import { defaultJobLogger } from './logger.js';
5
+ import { createPlainjobConnection } from './plainjobAdapter.js';
6
+ import { withTimeout } from './timeout.js';
7
7
  import {
8
8
  type CreateJobRunnerOptions,
9
9
  DEFAULT_JOB_RETENTION,
@@ -13,7 +13,7 @@ import {
13
13
  type JobLogger,
14
14
  type JobRunner,
15
15
  type JobRunRecord,
16
- } from './types';
16
+ } from './types.js';
17
17
 
18
18
  /**
19
19
  * Create the durable cron job runner — a thin facade over **plainjob** (MIT,
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, test } from 'bun:test';
2
- import { JobTimeoutError, withTimeout } from './timeout';
2
+ import { JobTimeoutError, withTimeout } from './timeout.js';
3
3
 
4
4
  const sleep = (ms: number) => new Promise<void>((r) => setTimeout(r, ms));
5
5
 
@@ -20,8 +20,8 @@ import {
20
20
  type MasterLockKdfParams,
21
21
  deriveMasterLockVerifier,
22
22
  } from "cursedbelt-core/master-lock";
23
- import { FIRST_ACCOUNT_ID, MasterLock, readRecord } from "./masterLock";
24
- import { createMemoryMasterLockStore } from "./store";
23
+ import { FIRST_ACCOUNT_ID, MasterLock, readRecord } from "./masterLock.js";
24
+ import { createMemoryMasterLockStore } from "./store.js";
25
25
 
26
26
  /** `iter: 1` — the ROUND COUNT is pinned in `cursedbelt-core`'s `kdf.spec.ts`; 600k × N
27
27
  * argon2 verifies here would be minutes of gate for nothing this file is testing. */
@@ -22,10 +22,10 @@ import {
22
22
  MASTER_LOCK_ACCOUNTS_SCRIPT,
23
23
  MASTER_LOCK_ACCOUNTS_STYLE,
24
24
  accountsPageHtml,
25
- } from "./accountsPage";
26
- import { createMasterLockGuard } from "./guard";
27
- import { MasterLock } from "./masterLock";
28
- import { createMemoryMasterLockStore } from "./store";
25
+ } from "./accountsPage.js";
26
+ import { createMasterLockGuard } from "./guard.js";
27
+ import { MasterLock } from "./masterLock.js";
28
+ import { createMemoryMasterLockStore } from "./store.js";
29
29
 
30
30
  const KDF: MasterLockKdfParams = {
31
31
  v: 1,
@@ -33,7 +33,7 @@
33
33
  * only be watching one of them.
34
34
  */
35
35
  import { MASTER_LOCK_PATHS, MASTER_LOCK_PREFIX } from "cursedbelt-core/master-lock";
36
- import { MASTER_LOCK_DERIVE_SOURCE, type LockPageOptions } from "./lockPage";
36
+ import { MASTER_LOCK_DERIVE_SOURCE, type LockPageOptions } from "./lockPage.js";
37
37
 
38
38
  /**
39
39
  * The page's own two assets.
@@ -12,10 +12,10 @@ import {
12
12
  foreignScriptSources,
13
13
  htmlCarriesWebAnalytics,
14
14
  scriptsRefusedByCsp,
15
- } from "../analytics";
16
- import { MASTER_LOCK_CSP, createMasterLockGuard } from "./guard";
17
- import { MasterLock } from "./masterLock";
18
- import { createMemoryMasterLockStore } from "./store";
15
+ } from "../analytics/index.js";
16
+ import { MASTER_LOCK_CSP, createMasterLockGuard } from "./guard.js";
17
+ import { MasterLock } from "./masterLock.js";
18
+ import { createMemoryMasterLockStore } from "./store.js";
19
19
 
20
20
  /**
21
21
  * 🔴 **The wall never carries the beacon, and the public shells always do.** Both halves, in
@@ -13,9 +13,9 @@ import {
13
13
  deriveMasterLockVerifier,
14
14
  newMasterLockKdfParams,
15
15
  } from "cursedbelt-core/master-lock";
16
- import { createMasterLockGuard } from "./guard";
17
- import { MasterLock } from "./masterLock";
18
- import { createMemoryMasterLockStore } from "./store";
16
+ import { createMasterLockGuard } from "./guard.js";
17
+ import { MasterLock } from "./masterLock.js";
18
+ import { createMemoryMasterLockStore } from "./store.js";
19
19
 
20
20
  const KDF: MasterLockKdfParams = {
21
21
  v: 1,
@@ -22,9 +22,9 @@ import {
22
22
  MASTER_LOCK_ACCOUNTS_SCRIPT,
23
23
  MASTER_LOCK_ACCOUNTS_STYLE,
24
24
  accountsPageHtml,
25
- } from "./accountsPage";
26
- import { LOCK_SCRIPT, LOCK_STYLE, type LockPageOptions, lockPageHtml } from "./lockPage";
27
- import type { MasterLock } from "./masterLock";
25
+ } from "./accountsPage.js";
26
+ import { LOCK_SCRIPT, LOCK_STYLE, type LockPageOptions, lockPageHtml } from "./lockPage.js";
27
+ import type { MasterLock } from "./masterLock.js";
28
28
 
29
29
  export interface MasterLockGuardOptions extends LockPageOptions {
30
30
  /**
@@ -26,26 +26,26 @@ export {
26
26
  MASTER_LOCK_ACCOUNTS_STYLE,
27
27
  MASTER_LOCK_MIN_PASSWORD_LENGTH,
28
28
  accountsPageHtml,
29
- } from "./accountsPage";
29
+ } from "./accountsPage.js";
30
30
  export {
31
31
  MASTER_LOCK_CSP,
32
32
  type MasterLockGuard,
33
33
  type MasterLockGuardOptions,
34
34
  createMasterLockGuard,
35
- } from "./guard";
35
+ } from "./guard.js";
36
36
  export {
37
37
  LOCK_SCRIPT,
38
38
  LOCK_STYLE,
39
39
  MASTER_LOCK_DERIVE_SOURCE,
40
40
  type LockPageOptions,
41
41
  lockPageHtml,
42
- } from "./lockPage";
42
+ } from "./lockPage.js";
43
43
  export {
44
44
  MASTER_LOCK_PRINCIPAL_KEY_PREFIX,
45
45
  MasterLockDirectory,
46
46
  type MasterLockDirectoryOptions,
47
47
  masterLockPrincipalKey,
48
- } from "./principals";
48
+ } from "./principals.js";
49
49
  export {
50
50
  FIRST_ACCOUNT_ID,
51
51
  MasterLock,
@@ -57,17 +57,17 @@ export {
57
57
  type MasterLockStore,
58
58
  type MasterLockUnlockResult,
59
59
  readRecord,
60
- } from "./masterLock";
60
+ } from "./masterLock.js";
61
61
  export {
62
62
  DEFAULT_SEED_IDLE_MS,
63
63
  generateStagePassword,
64
64
  type MintMasterLockSeedOptions,
65
65
  mintMasterLockSeed,
66
66
  serializeMasterLockSeed,
67
- } from "./seed";
67
+ } from "./seed.js";
68
68
  export {
69
69
  MASTER_LOCK_SETTING_KEY,
70
70
  MASTER_LOCK_STATE_KEY,
71
71
  createKvMasterLockStore,
72
72
  createMemoryMasterLockStore,
73
- } from "./store";
73
+ } from "./store.js";
@@ -13,8 +13,8 @@
13
13
  */
14
14
  import { describe, expect, test } from "bun:test";
15
15
  import { MASTER_LOCK_PATHS, type MasterLockKdfParams, deriveMasterLockVerifier } from "cursedbelt-core/master-lock";
16
- import { MASTER_LOCK_ACCOUNTS_SCRIPT } from "./accountsPage";
17
- import { LOCK_SCRIPT, LOCK_STYLE, MASTER_LOCK_DERIVE_SOURCE, lockPageHtml } from "./lockPage";
16
+ import { MASTER_LOCK_ACCOUNTS_SCRIPT } from "./accountsPage.js";
17
+ import { LOCK_SCRIPT, LOCK_STYLE, MASTER_LOCK_DERIVE_SOURCE, lockPageHtml } from "./lockPage.js";
18
18
 
19
19
  const KDF: MasterLockKdfParams = {
20
20
  v: 1,
@@ -13,8 +13,8 @@ import {
13
13
  deriveMasterLockVerifier,
14
14
  newMasterLockKdfParams,
15
15
  } from "cursedbelt-core/master-lock";
16
- import { MasterLock, readRecord } from "./masterLock";
17
- import { createMemoryMasterLockStore } from "./store";
16
+ import { MasterLock, readRecord } from "./masterLock.js";
17
+ import { createMemoryMasterLockStore } from "./store.js";
18
18
 
19
19
  const KDF: MasterLockKdfParams = {
20
20
  v: 1,
@@ -48,6 +48,7 @@
48
48
  * one who has been guessing.
49
49
  */
50
50
  import { createHash } from "node:crypto";
51
+ import { constantTimeEqual } from "cwip/constant-time";
51
52
  import {
52
53
  type MasterLockAccountSummary,
53
54
  type MasterLockKdfParams,
@@ -1064,13 +1065,3 @@ function presentedTokens(req: Request): string[] {
1064
1065
  }
1065
1066
  return out;
1066
1067
  }
1067
-
1068
- function constantTimeEqual(a: string, b: string): boolean {
1069
- const x = Buffer.from(a);
1070
- const y = Buffer.from(b);
1071
- // A length difference is already a non-match, and `timingSafeEqual` throws on one.
1072
- if (x.length !== y.length) return false;
1073
- let diff = 0;
1074
- for (let i = 0; i < x.length; i += 1) diff |= x[i] ^ y[i];
1075
- return diff === 0;
1076
- }
@@ -22,10 +22,10 @@ import {
22
22
  deriveMasterLockVerifier,
23
23
  newMasterLockKdfParams,
24
24
  } from "cursedbelt-core/master-lock";
25
- import { createMasterLockGuard } from "./guard";
26
- import { MasterLock, type MasterLockStore } from "./masterLock";
27
- import { MASTER_LOCK_PRINCIPAL_KEY_PREFIX, MasterLockDirectory, masterLockPrincipalKey } from "./principals";
28
- import { createMemoryMasterLockStore } from "./store";
25
+ import { createMasterLockGuard } from "./guard.js";
26
+ import { MasterLock, type MasterLockStore } from "./masterLock.js";
27
+ import { MASTER_LOCK_PRINCIPAL_KEY_PREFIX, MasterLockDirectory, masterLockPrincipalKey } from "./principals.js";
28
+ import { createMemoryMasterLockStore } from "./store.js";
29
29
 
30
30
  const KDF: MasterLockKdfParams = {
31
31
  v: 1,
@@ -46,7 +46,7 @@
46
46
  * record is stored under, which is the only thing it ever really was.
47
47
  */
48
48
  import { createHash } from "node:crypto";
49
- import { MasterLock, type MasterLockStore, readRecord } from "./masterLock";
49
+ import { MasterLock, type MasterLockStore, readRecord } from "./masterLock.js";
50
50
 
51
51
  /** Namespace for every per-person record, so one glance at the table says what they are. */
52
52
  export const MASTER_LOCK_PRINCIPAL_KEY_PREFIX = "master_lock:principal:";
@@ -1,8 +1,8 @@
1
1
  import { describe, expect, it } from "bun:test";
2
2
  import { deriveMasterLockVerifier } from "cursedbelt-core/master-lock/kdf";
3
- import { MasterLock, readRecord } from "./masterLock";
4
- import { createMemoryMasterLockStore } from "./store";
5
- import { generateStagePassword, mintMasterLockSeed, serializeMasterLockSeed } from "./seed";
3
+ import { MasterLock, readRecord } from "./masterLock.js";
4
+ import { createMemoryMasterLockStore } from "./store.js";
5
+ import { generateStagePassword, mintMasterLockSeed, serializeMasterLockSeed } from "./seed.js";
6
6
 
7
7
  describe("mintMasterLockSeed", () => {
8
8
  // The whole point: a seed minted here must UNLOCK, through the real engine,
@@ -28,7 +28,7 @@ import {
28
28
  deriveMasterLockVerifier,
29
29
  newMasterLockKdfParams,
30
30
  } from "cursedbelt-core/master-lock/kdf";
31
- import { FIRST_ACCOUNT_ID, type MasterLockRecord } from "./masterLock";
31
+ import { FIRST_ACCOUNT_ID, type MasterLockRecord } from "./masterLock.js";
32
32
 
33
33
  /**
34
34
  * The idle window a freshly minted lock starts with.
@@ -6,7 +6,7 @@
6
6
  * `app_settings`, a `Map` in a test. Asking for a whole table would be asking each adopter
7
7
  * to write a migration for three fields.
8
8
  */
9
- import type { MasterLockStore } from "./masterLock";
9
+ import type { MasterLockStore } from "./masterLock.js";
10
10
 
11
11
  /** The default key, so two apps' rows look the same when somebody goes looking. */
12
12
  export const MASTER_LOCK_SETTING_KEY = "master_lock:record";
@@ -1,6 +1,6 @@
1
1
  import { describe, expect, test } from 'bun:test';
2
2
  import type { ImagePipelineSpec } from 'cursedbelt-core/media';
3
- import { renderImage } from './image';
3
+ import { renderImage } from './image.js';
4
4
 
5
5
  // sharp is an OPTIONAL peer — skip this whole suite cleanly when it isn't installed.
6
6
  let sharpFactory: typeof import('sharp').default | null = null;
@@ -14,7 +14,7 @@ export {
14
14
  type VideoCodecPlan,
15
15
  videoCodecPlan,
16
16
  } from 'cursedbelt-core/media/ffmpeg';
17
- export { renderImage } from './image';
17
+ export { renderImage } from './image.js';
18
18
  // Streaming pipeline: faststart remux, HLS adaptive-bitrate ladder, scrub sprite + WebVTT,
19
19
  // poster, codec-aware probe — pure builders/parsers (testable without ffmpeg).
20
20
  export {
@@ -39,7 +39,7 @@ export {
39
39
  type SpritePlan,
40
40
  spriteArgs,
41
41
  type VideoProbe,
42
- } from './streaming';
42
+ } from './streaming.js';
43
43
  export {
44
44
  extractFrameJpeg,
45
45
  extractThumbnail,
@@ -49,4 +49,4 @@ export {
49
49
  probeVideoStream,
50
50
  runFfmpegProgress,
51
51
  trimVideo,
52
- } from './video';
52
+ } from './video.js';
@@ -9,7 +9,7 @@ import {
9
9
  planSprite,
10
10
  resolveLadder,
11
11
  type VideoProbe,
12
- } from './streaming';
12
+ } from './streaming.js';
13
13
 
14
14
  const probe = (over: Partial<VideoProbe> = {}): VideoProbe => ({
15
15
  duration: 100,
@@ -3,7 +3,7 @@ import { mkdtempSync, rmSync } from 'node:fs';
3
3
  import { tmpdir } from 'node:os';
4
4
  import { join } from 'node:path';
5
5
  import type { VideoProgressEvent } from 'cursedbelt-core/media';
6
- import { extractThumbnail, isFfmpegAvailable, probeMedia, trimVideo } from './video';
6
+ import { extractThumbnail, isFfmpegAvailable, probeMedia, trimVideo } from './video.js';
7
7
 
8
8
  // ffmpeg/ffprobe are required for these; skip cleanly if absent (CI without them).
9
9
  const haveFfmpeg = await isFfmpegAvailable();
@@ -23,7 +23,7 @@ import {
23
23
  parseProgressMicros,
24
24
  parseStreamProbe,
25
25
  type VideoProbe,
26
- } from './streaming';
26
+ } from './streaming.js';
27
27
 
28
28
  const FFMPEG = process.env.FFMPEG_PATH || 'ffmpeg';
29
29
  const FFPROBE = process.env.FFPROBE_PATH || 'ffprobe';
@@ -1,6 +1,6 @@
1
1
  import { describe, expect, test } from 'bun:test';
2
2
  import { Hono } from 'hono';
3
- import { normalizeRoute } from './normalizeRoute';
3
+ import { normalizeRoute } from './normalizeRoute.js';
4
4
 
5
5
  // Probe through a real Hono app so `c.req.routePath` is the genuine matched pattern.
6
6
  async function labelFor(register: (app: Hono) => void, request: Request): Promise<string> {
@@ -1,14 +1,14 @@
1
1
  import { Database } from 'bun:sqlite';
2
2
  import { beforeEach, describe, expect, it } from 'bun:test';
3
3
  import { Hono } from 'hono';
4
- import { type RequestLoggerOpts, requestLogger } from '../middleware/requestLogger';
5
- import { createMetricsBuffer } from './metricsBuffer';
4
+ import { type RequestLoggerOpts, requestLogger } from '../middleware/requestLogger.js';
5
+ import { createMetricsBuffer } from './metricsBuffer.js';
6
6
  import {
7
7
  type AnalyticsEngineDataset,
8
8
  createTelemetrySink,
9
9
  type TelemetrySink,
10
10
  toDataPoint,
11
- } from './telemetrySink';
11
+ } from './telemetrySink.js';
12
12
 
13
13
  /**
14
14
  * The two claims the seam makes, and nothing else:
@@ -1,5 +1,5 @@
1
1
  import type { Database } from 'bun:sqlite';
2
- import { createMetricsBuffer, type MetricRow, type MetricsBuffer } from './metricsBuffer';
2
+ import { createMetricsBuffer, type MetricRow, type MetricsBuffer } from './metricsBuffer.js';
3
3
 
4
4
  /**
5
5
  * ONE seam for "this app served a request", with two backends and no third.
@@ -7,7 +7,7 @@ import {
7
7
  readBoundedJson,
8
8
  readBoundedText,
9
9
  refuseOversizedBody,
10
- } from './bodyLimit';
10
+ } from './bodyLimit.js';
11
11
 
12
12
  /**
13
13
  * 🔴 A guard that is the LAST line of defense ships with the test of its failure path,
@@ -1,5 +1,5 @@
1
1
  import type { MiddlewareHandler } from 'hono';
2
- import type { CursedbeltEnv } from '../context';
2
+ import type { CursedbeltEnv } from '../context.js';
3
3
 
4
4
  const HEADER = 'x-correlation-id';
5
5
  // Accept a client-supplied id only if it is a sane, header-safe token (no CRLF /
@@ -1,6 +1,6 @@
1
1
  import { describe, expect, test } from 'bun:test';
2
- import { createApp } from '../app';
3
- import { corsAllowlist, corsOptsFromEnv } from './corsAllowlist';
2
+ import { createApp } from '../app.js';
3
+ import { corsAllowlist, corsOptsFromEnv } from './corsAllowlist.js';
4
4
 
5
5
  const SITE = 'example.com';
6
6
  const APEX = 'https://example.com';
@@ -1,8 +1,8 @@
1
1
  import type { ErrorHandler } from 'hono';
2
2
  import { HTTPException } from 'hono/http-exception';
3
3
  import type { ContentfulStatusCode } from 'hono/utils/http-status';
4
- import type { CursedbeltEnv } from '../context';
5
- import { ApiError, isAppError, toErrorEnvelope } from '../errors';
4
+ import type { CursedbeltEnv } from '../context.js';
5
+ import { ApiError, isAppError, toErrorEnvelope } from '../errors.js';
6
6
 
7
7
  /**
8
8
  * Hono `onError` handler. Converts ANY thrown value into the ONE canonical rich
@@ -1,10 +1,10 @@
1
1
  // The cross-cutting cursedbelt server middleware set.
2
- export { correlationId } from './correlationId';
3
- export { type CorsOpts, corsAllowlist, corsOptsFromEnv } from './corsAllowlist';
4
- export { errorEnvelope } from './errorEnvelope';
5
- export { crossOriginRefusal } from './localOrigin';
6
- export { clientIp, createRateLimiter, type RateLimitOpts } from './rateLimit';
7
- export { type RequestLoggerOpts, requestLogger } from './requestLogger';
2
+ export { correlationId } from './correlationId.js';
3
+ export { type CorsOpts, corsAllowlist, corsOptsFromEnv } from './corsAllowlist.js';
4
+ export { errorEnvelope } from './errorEnvelope.js';
5
+ export { crossOriginRefusal } from './localOrigin.js';
6
+ export { clientIp, createRateLimiter, type RateLimitOpts } from './rateLimit.js';
7
+ export { type RequestLoggerOpts, requestLogger } from './requestLogger.js';
8
8
  // The telemetry seam `requestLogger` writes through — re-exported here so a caller
9
9
  // that reaches `./middleware` for the logger can bind Analytics Engine in the same import.
10
10
  export {
@@ -13,16 +13,16 @@ export {
13
13
  type TelemetryEvent,
14
14
  type TelemetrySink,
15
15
  type TelemetrySinkOptions,
16
- } from '../metrics/telemetrySink';
16
+ } from '../metrics/telemetrySink.js';
17
17
  export {
18
18
  type CspDirectives,
19
19
  type SecurityHeadersOpts,
20
20
  securityHeaders,
21
- } from './securityHeaders';
21
+ } from './securityHeaders.js';
22
22
  export {
23
23
  toValidationIssues,
24
24
  VALIDATION_ERROR_CODE,
25
25
  type ValidationIssue,
26
26
  validationEnvelope,
27
- } from '../errors';
28
- export { type ZValidatorTarget, zValidator } from './zValidator';
27
+ } from '../errors.js';
28
+ export { type ZValidatorTarget, zValidator } from './zValidator.js';
@@ -3,7 +3,7 @@
3
3
  // block is not padding — it is the reason this can ship without a login.
4
4
 
5
5
  import { describe, expect, test } from 'bun:test';
6
- import { crossOriginRefusal } from './localOrigin';
6
+ import { crossOriginRefusal } from './localOrigin.js';
7
7
 
8
8
  function req(headers: Record<string, string>, url = 'http://127.0.0.1:4747/api/overview'): Request {
9
9
  return new Request(url, { headers });
@@ -1,6 +1,6 @@
1
1
  import { describe, expect, it } from 'bun:test';
2
2
  import { Hono } from 'hono';
3
- import { clientIp, createRateLimiter } from './rateLimit';
3
+ import { clientIp, createRateLimiter } from './rateLimit.js';
4
4
 
5
5
  /**
6
6
  * `x-forwarded-for` is written by the caller. If the limiter keys on it without
@@ -1,6 +1,6 @@
1
1
  import type { Context, MiddlewareHandler } from 'hono';
2
2
  import { getConnInfo } from 'hono/bun';
3
- import { ApiError, toErrorEnvelope } from '../errors';
3
+ import { ApiError, toErrorEnvelope } from '../errors.js';
4
4
 
5
5
  /** How much of the forwarded-header chain, if any, this server may believe. */
6
6
  export interface ClientIpOptions {
@@ -1,15 +1,15 @@
1
1
  import type { Database } from 'bun:sqlite';
2
2
  import type { MiddlewareHandler } from 'hono';
3
3
  import { HTTPException } from 'hono/http-exception';
4
- import type { CursedbeltEnv } from '../context';
5
- import { isApiError } from '../errors';
6
- import type { MetricsBuffer } from '../metrics/metricsBuffer';
7
- import { normalizeRoute } from '../metrics/normalizeRoute';
4
+ import type { CursedbeltEnv } from '../context.js';
5
+ import { isApiError } from '../errors.js';
6
+ import type { MetricsBuffer } from '../metrics/metricsBuffer.js';
7
+ import { normalizeRoute } from '../metrics/normalizeRoute.js';
8
8
  import {
9
9
  type AnalyticsEngineDataset,
10
10
  createTelemetrySink,
11
11
  type TelemetrySink,
12
- } from '../metrics/telemetrySink';
12
+ } from '../metrics/telemetrySink.js';
13
13
 
14
14
  /**
15
15
  * Structured request/response logging. After each request it records one
@@ -3,15 +3,15 @@ import { Hono } from 'hono';
3
3
  import { z } from 'zod';
4
4
  import { ChunkStore } from 'cursedbelt-core/ctgr/chunk-store';
5
5
  import { encodeRequest } from 'cursedbelt-core/ctgr';
6
- import type { CursedbeltEnv } from '../context';
7
- import { CTGR_ROUTE_PATTERN, unGETify } from '../ctgr';
6
+ import type { CursedbeltEnv } from '../context.js';
7
+ import { CTGR_ROUTE_PATTERN, unGETify } from '../ctgr.js';
8
8
  import {
9
9
  toValidationIssues,
10
10
  VALIDATION_ERROR_CODE,
11
11
  type ValidationIssue,
12
12
  validationEnvelope,
13
- } from '../errors';
14
- import { zValidator } from './zValidator';
13
+ } from '../errors.js';
14
+ import { zValidator } from './zValidator.js';
15
15
 
16
16
  const ORIGIN = 'http://localhost';
17
17
  const json = (path: string, body: unknown) =>
@@ -29,8 +29,8 @@
29
29
  */
30
30
  import type { Env, MiddlewareHandler } from 'hono';
31
31
  import type { ZodType, z } from 'zod';
32
- import type { CursedbeltEnv } from '../context';
33
- import { validationEnvelope } from '../errors';
32
+ import type { CursedbeltEnv } from '../context.js';
33
+ import { validationEnvelope } from '../errors.js';
34
34
 
35
35
  /** The request locations a schema can validate. Mirrors Hono's body/non-body split. */
36
36
  export type ZValidatorTarget = 'json' | 'form' | 'query' | 'param';
@@ -1,7 +1,7 @@
1
1
  import { Database } from 'bun:sqlite';
2
2
  import { describe, expect, test } from 'bun:test';
3
- import { addColumnIfMissing, applyRecommendedPragmas, columnExists, runMigrations } from './runner';
4
- import type { Migration } from './types';
3
+ import { addColumnIfMissing, applyRecommendedPragmas, columnExists, runMigrations } from './runner.js';
4
+ import type { Migration } from './types.js';
5
5
 
6
6
  describe('runMigrations', () => {
7
7
  test('applies pending migrations once, in order, and is idempotent', () => {
@@ -1,6 +1,6 @@
1
1
  import type { Database } from 'bun:sqlite';
2
2
  import { applyCcPragmas } from 'cwip/sqlite';
3
- import type { Migration } from './types';
3
+ import type { Migration } from './types.js';
4
4
 
5
5
  /**
6
6
  * The versioned SQLite migration runner — a tiny `_migrations`-sentinel runner, NOT
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it } from 'bun:test';
2
- import { assertPublicOutboundUrl, assertResolvedPublicUrl, OUTBOUND_URL_BLOCKED } from './outboundGuard';
2
+ import { assertPublicOutboundUrl, assertResolvedPublicUrl, OUTBOUND_URL_BLOCKED } from './outboundGuard.js';
3
3
 
4
4
  const code = (fn: () => unknown): string | undefined => {
5
5
  try {
@@ -33,7 +33,7 @@
33
33
  */
34
34
  import { isIP } from 'node:net';
35
35
  import { lookup } from 'node:dns/promises';
36
- import { AppError } from '../errors';
36
+ import { AppError } from '../errors.js';
37
37
 
38
38
  export const OUTBOUND_URL_BLOCKED = 'OUTBOUND_URL_BLOCKED';
39
39
 
@@ -36,22 +36,22 @@
36
36
  * route that notifies somebody else; producing is server-side code calling
37
37
  * `center.notify*`.
38
38
  */
39
- export { createNotificationHub } from "./hub";
39
+ export { createNotificationHub } from "./hub.js";
40
40
  export type {
41
41
  NotificationHub,
42
42
  NotificationHubEvent,
43
43
  NotificationHubListener,
44
44
  NotificationHubOptions,
45
- } from "./hub";
46
- export { NOTIFICATION_MIGRATIONS, NOTIFICATIONS_TABLE } from "./migrations";
47
- export { mountNotificationRoutes } from "./routes";
48
- export type { NotificationRouteCenter, NotificationRoutesOptions } from "./routes";
49
- export { createNotificationService } from "./service";
45
+ } from "./hub.js";
46
+ export { NOTIFICATION_MIGRATIONS, NOTIFICATIONS_TABLE } from "./migrations.js";
47
+ export { mountNotificationRoutes } from "./routes.js";
48
+ export type { NotificationRouteCenter, NotificationRoutesOptions } from "./routes.js";
49
+ export { createNotificationService } from "./service.js";
50
50
  export type {
51
51
  CreateNotificationServiceOptions,
52
52
  NotificationService,
53
53
  NotificationServiceMountOptions,
54
- } from "./service";
54
+ } from "./service.js";
55
55
  // Re-exported so a server consumer needs ONE import for the whole contract —
56
56
  // the same courtesy `server/sharing` extends over `cursedbelt-core/sharing`. The
57
57
  // engine remains cwip's; this is a door, not a copy.
@@ -15,7 +15,7 @@
15
15
  */
16
16
  import type { Database } from "bun:sqlite";
17
17
  import { migrateNotificationsSchema, type NotificationDb } from "cwip/notifications";
18
- import type { Migration } from "../migration/types";
18
+ import type { Migration } from "../migration/types.js";
19
19
 
20
20
  export const NOTIFICATIONS_TABLE = "notifications";
21
21
 
@@ -35,7 +35,7 @@
35
35
  */
36
36
  import type { Context, Hono } from "hono";
37
37
  import type { NotificationCenter, NotificationFilter } from "cwip/notifications";
38
- import type { NotificationHub } from "./hub";
38
+ import type { NotificationHub } from "./hub.js";
39
39
 
40
40
  /** The slice of the center these routes use — `createNotificationCenter(...)`
41
41
  * satisfies it, and so does any app-specific facade over one. */