cursedbelt-server 4.12.0 → 4.13.1

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 (475) 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/password.js +4 -6
  28. package/dist/server/auth/sessionStore.d.ts +2 -2
  29. package/dist/server/auth/types.d.ts +1 -1
  30. package/dist/server/bench/assert.d.ts +1 -1
  31. package/dist/server/bench/assert.js +1 -1
  32. package/dist/server/bench/cpuBudget.d.ts +4 -4
  33. package/dist/server/bench/cpuBudget.js +3 -3
  34. package/dist/server/bench/index.d.ts +6 -6
  35. package/dist/server/bench/index.js +6 -6
  36. package/dist/server/bench/recorder.d.ts +2 -2
  37. package/dist/server/bench/recorder.js +1 -1
  38. package/dist/server/bench/runBench.d.ts +2 -2
  39. package/dist/server/ctgr.d.ts +1 -1
  40. package/dist/server/ctgr.js +1 -1
  41. package/dist/server/d1/fakeD1.d.ts +1 -1
  42. package/dist/server/d1/fakeD1.js +1 -1
  43. package/dist/server/d1/index.d.ts +8 -8
  44. package/dist/server/d1/index.js +8 -8
  45. package/dist/server/d1/invocation.d.ts +1 -1
  46. package/dist/server/d1/invocation.js +2 -2
  47. package/dist/server/d1/kysely.d.ts +2 -2
  48. package/dist/server/d1/kysely.js +2 -2
  49. package/dist/server/d1/limits.d.ts +1 -1
  50. package/dist/server/d1/limits.js +1 -1
  51. package/dist/server/d1/local.d.ts +1 -1
  52. package/dist/server/d1/local.js +3 -3
  53. package/dist/server/d1/localBackup.d.ts +1 -1
  54. package/dist/server/d1/localBackup.js +2 -2
  55. package/dist/server/d1/remote.d.ts +1 -1
  56. package/dist/server/d1/remote.js +3 -3
  57. package/dist/server/d1/scheduling.d.ts +1 -1
  58. package/dist/server/d1/values.d.ts +1 -1
  59. package/dist/server/d1/values.js +1 -1
  60. package/dist/server/db/kysely.d.ts +1 -1
  61. package/dist/server/dropzone/index.d.ts +2 -2
  62. package/dist/server/dropzone/index.js +2 -2
  63. package/dist/server/guard/argon2Binding.js +1 -1
  64. package/dist/server/guard/index.d.ts +5 -5
  65. package/dist/server/guard/index.js +5 -5
  66. package/dist/server/guard/kdfWorker.d.ts +1 -1
  67. package/dist/server/guard/kdfWorker.js +3 -3
  68. package/dist/server/guard/kdfWorkerEntry.js +1 -1
  69. package/dist/server/guard/passwordVerifier.d.ts +1 -1
  70. package/dist/server/guard/passwordVerifier.js +4 -4
  71. package/dist/server/guard/sessionSigner.d.ts +2 -2
  72. package/dist/server/guard/sessionSigner.js +1 -1
  73. package/dist/server/incidents/checks.d.ts +2 -2
  74. package/dist/server/incidents/index.d.ts +8 -8
  75. package/dist/server/incidents/index.js +8 -8
  76. package/dist/server/incidents/migrations.d.ts +1 -1
  77. package/dist/server/incidents/notifier.d.ts +3 -3
  78. package/dist/server/incidents/reporter.d.ts +1 -1
  79. package/dist/server/incidents/routes.d.ts +4 -4
  80. package/dist/server/incidents/routes.js +1 -1
  81. package/dist/server/incidents/store.d.ts +1 -1
  82. package/dist/server/incidents/store.js +3 -3
  83. package/dist/server/index.d.ts +26 -26
  84. package/dist/server/index.js +23 -23
  85. package/dist/server/jobs/fireQueue.d.ts +1 -1
  86. package/dist/server/jobs/fireQueue.js +3 -3
  87. package/dist/server/jobs/index.d.ts +7 -7
  88. package/dist/server/jobs/index.js +7 -7
  89. package/dist/server/jobs/logger.d.ts +1 -1
  90. package/dist/server/jobs/polling.d.ts +1 -1
  91. package/dist/server/jobs/polling.js +1 -1
  92. package/dist/server/jobs/runner.d.ts +1 -1
  93. package/dist/server/jobs/runner.js +5 -5
  94. package/dist/server/master-lock/accountsPage.d.ts +1 -1
  95. package/dist/server/master-lock/accountsPage.js +1 -1
  96. package/dist/server/master-lock/guard.d.ts +2 -2
  97. package/dist/server/master-lock/guard.js +2 -2
  98. package/dist/server/master-lock/index.d.ts +7 -7
  99. package/dist/server/master-lock/index.js +7 -7
  100. package/dist/server/master-lock/masterLock.js +1 -11
  101. package/dist/server/master-lock/principals.d.ts +1 -1
  102. package/dist/server/master-lock/principals.js +1 -1
  103. package/dist/server/master-lock/seed.d.ts +1 -1
  104. package/dist/server/master-lock/seed.js +1 -1
  105. package/dist/server/master-lock/store.d.ts +1 -1
  106. package/dist/server/media-bun/index.d.ts +3 -3
  107. package/dist/server/media-bun/index.js +3 -3
  108. package/dist/server/media-bun/video.d.ts +1 -1
  109. package/dist/server/media-bun/video.js +1 -1
  110. package/dist/server/metrics/telemetrySink.d.ts +1 -1
  111. package/dist/server/metrics/telemetrySink.js +1 -1
  112. package/dist/server/middleware/correlationId.d.ts +1 -1
  113. package/dist/server/middleware/errorEnvelope.d.ts +1 -1
  114. package/dist/server/middleware/errorEnvelope.js +1 -1
  115. package/dist/server/middleware/index.d.ts +10 -10
  116. package/dist/server/middleware/index.js +10 -10
  117. package/dist/server/middleware/rateLimit.js +1 -1
  118. package/dist/server/middleware/requestLogger.d.ts +3 -3
  119. package/dist/server/middleware/requestLogger.js +3 -3
  120. package/dist/server/middleware/zValidator.d.ts +1 -1
  121. package/dist/server/middleware/zValidator.js +1 -1
  122. package/dist/server/migration/runner.d.ts +1 -1
  123. package/dist/server/net/outboundGuard.js +1 -1
  124. package/dist/server/notifications/index.d.ts +7 -7
  125. package/dist/server/notifications/index.js +4 -4
  126. package/dist/server/notifications/migrations.d.ts +1 -1
  127. package/dist/server/notifications/routes.d.ts +1 -1
  128. package/dist/server/notifications/service.d.ts +1 -1
  129. package/dist/server/notifications/service.js +2 -2
  130. package/dist/server/resume/index.d.ts +2 -2
  131. package/dist/server/resume/index.js +2 -2
  132. package/dist/server/resume/routes.d.ts +1 -1
  133. package/dist/server/resume/routes.js +1 -1
  134. package/dist/server/retention/archive.js +1 -1
  135. package/dist/server/retention/fleet.d.ts +2 -2
  136. package/dist/server/retention/fleet.js +2 -2
  137. package/dist/server/retention/index.d.ts +6 -6
  138. package/dist/server/retention/index.js +6 -6
  139. package/dist/server/retention/store.d.ts +1 -1
  140. package/dist/server/retention/store.js +2 -2
  141. package/dist/server/retention/sweeper.d.ts +3 -3
  142. package/dist/server/retention/sweeper.js +2 -2
  143. package/dist/server/retention/target.d.ts +3 -3
  144. package/dist/server/retention/target.js +2 -2
  145. package/dist/server/search/index.d.ts +2 -2
  146. package/dist/server/search/index.js +2 -2
  147. package/dist/server/search/pgSearchProvider.js +2 -2
  148. package/dist/server/search/pgSearchProvider.pg.test.js +2 -2
  149. package/dist/server/sharing/index.d.ts +8 -8
  150. package/dist/server/sharing/index.js +5 -5
  151. package/dist/server/sharing/migrations.d.ts +1 -1
  152. package/dist/server/sharing/router.d.ts +1 -1
  153. package/dist/server/sharing/sql.js +1 -1
  154. package/dist/server/sharing/store.js +3 -3
  155. package/dist/server/sqlite/browse.js +1 -1
  156. package/dist/server/sqlite/export.js +1 -1
  157. package/dist/server/sqlite/import.js +1 -1
  158. package/dist/server/sqlite/index.d.ts +9 -9
  159. package/dist/server/sqlite/index.js +9 -9
  160. package/dist/server/sqlite/stats.js +1 -1
  161. package/dist/server/sqlite/viewer.js +2 -2
  162. package/dist/server/storage/binaryServerProcessing.d.ts +1 -1
  163. package/dist/server/storage/binaryServerProcessing.js +2 -2
  164. package/dist/server/storage/binaryServerStore.d.ts +2 -2
  165. package/dist/server/storage/binaryStore.d.ts +1 -1
  166. package/dist/server/storage/binaryStoreFake.d.ts +1 -1
  167. package/dist/server/storage/diskStore.d.ts +1 -1
  168. package/dist/server/storage/files/adapter.d.ts +4 -4
  169. package/dist/server/storage/files/adapter.js +1 -1
  170. package/dist/server/storage/files/catalogue.d.ts +3 -3
  171. package/dist/server/storage/files/catalogue.js +6 -6
  172. package/dist/server/storage/files/chunkedUpload.d.ts +3 -3
  173. package/dist/server/storage/files/chunkedUpload.js +1 -1
  174. package/dist/server/storage/files/fileRoutes.d.ts +4 -4
  175. package/dist/server/storage/files/fileRoutes.js +3 -3
  176. package/dist/server/storage/files/index.d.ts +9 -9
  177. package/dist/server/storage/files/index.js +8 -8
  178. package/dist/server/storage/files/migrations.d.ts +1 -1
  179. package/dist/server/storage/files/stack.d.ts +7 -7
  180. package/dist/server/storage/files/stack.js +10 -10
  181. package/dist/server/storage/files/storageOps.d.ts +1 -1
  182. package/dist/server/storage/files/types.d.ts +1 -1
  183. package/dist/server/storage/imageThumbnail.js +1 -1
  184. package/dist/server/storage/index.d.ts +15 -15
  185. package/dist/server/storage/index.js +14 -14
  186. package/dist/server/storage/mountMediaRoutes.d.ts +3 -3
  187. package/dist/server/storage/mountMediaRoutes.js +2 -2
  188. package/dist/server/storage/objectStoreMediaStore.d.ts +1 -1
  189. package/dist/server/storage/s3ObjectStore.js +1 -1
  190. package/dist/server/storage/sources.d.ts +2 -2
  191. package/dist/server/storage/sources.js +2 -2
  192. package/dist/server/storage/streamRange.d.ts +1 -1
  193. package/dist/server/storage/streamToken.js +1 -1
  194. package/dist/server/storage/videoProcessor.d.ts +1 -1
  195. package/dist/server/storage/videoProcessor.js +2 -2
  196. package/dist/server/sync/engine.d.ts +2 -2
  197. package/dist/server/sync/engine.js +1 -1
  198. package/dist/server/sync/http.d.ts +4 -4
  199. package/dist/server/sync/http.js +3 -3
  200. package/dist/server/sync/index.d.ts +11 -11
  201. package/dist/server/sync/index.js +11 -11
  202. package/dist/server/sync/opLog.d.ts +1 -1
  203. package/dist/server/sync/signal.d.ts +1 -1
  204. package/dist/server/sync/timer.d.ts +3 -3
  205. package/dist/server/sync/timer.js +1 -1
  206. package/dist/server/sync/tokens.d.ts +1 -1
  207. package/dist/server/sync/tokens.js +3 -2
  208. package/dist/server/ws/eventBus.d.ts +1 -1
  209. package/dist/server/ws/hub.d.ts +1 -1
  210. package/dist/server/ws/hub.js +3 -3
  211. package/dist/server/ws/index.d.ts +5 -5
  212. package/dist/server/ws/index.js +4 -4
  213. package/dist/server/ws/presence.d.ts +1 -1
  214. package/dist/server/ws/room.d.ts +1 -1
  215. package/dist/server/ws/types.d.ts +1 -1
  216. package/package.json +9 -9
  217. package/src/publicSurface.spec.ts +1 -1
  218. package/src/server/_bunOnly.ts +15 -0
  219. package/src/server/activity/index.ts +4 -4
  220. package/src/server/activity/migrations.ts +1 -1
  221. package/src/server/activity/shareSource.ts +2 -2
  222. package/src/server/activity/store.spec.ts +3 -3
  223. package/src/server/activity/store.ts +2 -2
  224. package/src/server/analytics/index.ts +2 -2
  225. package/src/server/analytics/injectedScripts.spec.ts +3 -3
  226. package/src/server/analytics/webAnalytics.spec.ts +1 -1
  227. package/src/server/app.spec.ts +9 -9
  228. package/src/server/app.ts +7 -7
  229. package/src/server/audit/index.ts +2 -2
  230. package/src/server/audit/migrations.ts +1 -1
  231. package/src/server/audit/sqliteSink.test.ts +1 -1
  232. package/src/server/audit/sqliteSink.ts +2 -2
  233. package/src/server/auth/cookie.spec.ts +1 -1
  234. package/src/server/auth/csrf.spec.ts +1 -1
  235. package/src/server/auth/csrf.ts +1 -1
  236. package/src/server/auth/fileTokenSigner.ts +1 -1
  237. package/src/server/auth/getOnly.spec.ts +2 -2
  238. package/src/server/auth/getOnly.ts +2 -2
  239. package/src/server/auth/index.ts +12 -12
  240. package/src/server/auth/jwt.spec.ts +2 -2
  241. package/src/server/auth/jwt.ts +1 -1
  242. package/src/server/auth/loginThrottle.spec.ts +1 -1
  243. package/src/server/auth/middleware.spec.ts +7 -7
  244. package/src/server/auth/middleware.ts +4 -4
  245. package/src/server/auth/password.spec.ts +1 -1
  246. package/src/server/auth/password.ts +4 -5
  247. package/src/server/auth/sessionStore.spec.ts +3 -3
  248. package/src/server/auth/sessionStore.ts +3 -3
  249. package/src/server/auth/totp.spec.ts +1 -1
  250. package/src/server/auth/types.ts +1 -1
  251. package/src/server/auth/vault.spec.ts +1 -1
  252. package/src/server/bench/assert.ts +2 -2
  253. package/src/server/bench/budget.spec.ts +2 -2
  254. package/src/server/bench/cpuBudget.spec.ts +6 -6
  255. package/src/server/bench/cpuBudget.ts +5 -5
  256. package/src/server/bench/cpuClock.spec.ts +2 -2
  257. package/src/server/bench/index.ts +6 -6
  258. package/src/server/bench/recorder.ts +2 -2
  259. package/src/server/bench/runBench.ts +2 -2
  260. package/src/server/ctgr.spec.ts +2 -2
  261. package/src/server/ctgr.ts +2 -2
  262. package/src/server/d1/backup.spec.ts +2 -2
  263. package/src/server/d1/fakeD1.ts +2 -2
  264. package/src/server/d1/index.ts +8 -8
  265. package/src/server/d1/invocation.spec.ts +6 -6
  266. package/src/server/d1/invocation.ts +2 -2
  267. package/src/server/d1/kysely.spec.ts +5 -5
  268. package/src/server/d1/kysely.ts +3 -3
  269. package/src/server/d1/limits.spec.ts +3 -3
  270. package/src/server/d1/limits.ts +1 -1
  271. package/src/server/d1/local.ts +3 -3
  272. package/src/server/d1/localBackup.ts +3 -3
  273. package/src/server/d1/remote.ts +3 -3
  274. package/src/server/d1/sameShape.spec.ts +4 -4
  275. package/src/server/d1/scheduling.spec.ts +1 -1
  276. package/src/server/d1/scheduling.ts +1 -1
  277. package/src/server/d1/values.ts +1 -1
  278. package/src/server/db/kysely.spec.ts +1 -1
  279. package/src/server/db/kysely.ts +1 -1
  280. package/src/server/dropzone/index.ts +2 -2
  281. package/src/server/dropzone/scan.spec.ts +1 -1
  282. package/src/server/errors.spec.ts +1 -1
  283. package/src/server/guard/argon2Binding.spec.ts +1 -1
  284. package/src/server/guard/argon2Binding.ts +1 -1
  285. package/src/server/guard/argon2Kat.spec.ts +1 -1
  286. package/src/server/guard/guard.spec.ts +3 -3
  287. package/src/server/guard/index.ts +5 -5
  288. package/src/server/guard/kdfWorker.spec.ts +3 -3
  289. package/src/server/guard/kdfWorker.ts +3 -3
  290. package/src/server/guard/kdfWorkerEntry.ts +1 -1
  291. package/src/server/guard/passwordVerifier.spec.ts +1 -1
  292. package/src/server/guard/passwordVerifier.ts +4 -4
  293. package/src/server/guard/revocationStore.spec.ts +2 -2
  294. package/src/server/guard/sessionSigner.ts +3 -3
  295. package/src/server/incidents/checks.ts +2 -2
  296. package/src/server/incidents/incidents.spec.ts +7 -7
  297. package/src/server/incidents/index.ts +8 -8
  298. package/src/server/incidents/migrations.ts +1 -1
  299. package/src/server/incidents/notifier.ts +3 -3
  300. package/src/server/incidents/reporter.ts +1 -1
  301. package/src/server/incidents/routes.ts +5 -5
  302. package/src/server/incidents/store.ts +3 -3
  303. package/src/server/index.ts +26 -26
  304. package/src/server/jobs/fireQueue.spec.ts +1 -1
  305. package/src/server/jobs/fireQueue.ts +3 -3
  306. package/src/server/jobs/index.ts +7 -7
  307. package/src/server/jobs/logger.ts +1 -1
  308. package/src/server/jobs/plainjobAdapter.spec.ts +1 -1
  309. package/src/server/jobs/polling.spec.ts +1 -1
  310. package/src/server/jobs/polling.ts +2 -2
  311. package/src/server/jobs/runner.spec.ts +3 -3
  312. package/src/server/jobs/runner.ts +5 -5
  313. package/src/server/jobs/timeout.spec.ts +1 -1
  314. package/src/server/master-lock/accounts.spec.ts +2 -2
  315. package/src/server/master-lock/accountsPage.spec.ts +4 -4
  316. package/src/server/master-lock/accountsPage.ts +1 -1
  317. package/src/server/master-lock/beaconNeverReachesTheWall.spec.ts +4 -4
  318. package/src/server/master-lock/guard.spec.ts +3 -3
  319. package/src/server/master-lock/guard.ts +3 -3
  320. package/src/server/master-lock/index.ts +7 -7
  321. package/src/server/master-lock/lockPage.spec.ts +2 -2
  322. package/src/server/master-lock/masterLock.spec.ts +2 -2
  323. package/src/server/master-lock/masterLock.ts +1 -10
  324. package/src/server/master-lock/principals.spec.ts +4 -4
  325. package/src/server/master-lock/principals.ts +1 -1
  326. package/src/server/master-lock/seed.spec.ts +3 -3
  327. package/src/server/master-lock/seed.ts +1 -1
  328. package/src/server/master-lock/store.ts +1 -1
  329. package/src/server/media-bun/image.spec.ts +1 -1
  330. package/src/server/media-bun/index.ts +3 -3
  331. package/src/server/media-bun/streaming.spec.ts +1 -1
  332. package/src/server/media-bun/video.spec.ts +1 -1
  333. package/src/server/media-bun/video.ts +1 -1
  334. package/src/server/metrics/normalizeRoute.spec.ts +1 -1
  335. package/src/server/metrics/telemetrySink.spec.ts +3 -3
  336. package/src/server/metrics/telemetrySink.ts +1 -1
  337. package/src/server/middleware/bodyLimit.spec.ts +1 -1
  338. package/src/server/middleware/correlationId.ts +1 -1
  339. package/src/server/middleware/corsAllowlist.spec.ts +2 -2
  340. package/src/server/middleware/errorEnvelope.ts +2 -2
  341. package/src/server/middleware/index.ts +10 -10
  342. package/src/server/middleware/localOrigin.spec.ts +1 -1
  343. package/src/server/middleware/rateLimit.spec.ts +1 -1
  344. package/src/server/middleware/rateLimit.ts +1 -1
  345. package/src/server/middleware/requestLogger.ts +5 -5
  346. package/src/server/middleware/zValidator.spec.ts +4 -4
  347. package/src/server/middleware/zValidator.ts +2 -2
  348. package/src/server/migration/runner.spec.ts +2 -2
  349. package/src/server/migration/runner.ts +1 -1
  350. package/src/server/net/outboundGuard.spec.ts +1 -1
  351. package/src/server/net/outboundGuard.ts +1 -1
  352. package/src/server/notifications/index.ts +7 -7
  353. package/src/server/notifications/migrations.ts +1 -1
  354. package/src/server/notifications/routes.ts +1 -1
  355. package/src/server/notifications/service.spec.ts +3 -3
  356. package/src/server/notifications/service.ts +2 -2
  357. package/src/server/paths/appDataHome.spec.ts +1 -1
  358. package/src/server/resume/index.ts +2 -2
  359. package/src/server/resume/resume.spec.ts +2 -2
  360. package/src/server/resume/routes.ts +1 -1
  361. package/src/server/retention/archive.spec.ts +2 -2
  362. package/src/server/retention/archive.ts +1 -1
  363. package/src/server/retention/fleet.ts +4 -4
  364. package/src/server/retention/index.ts +6 -6
  365. package/src/server/retention/policy.spec.ts +1 -1
  366. package/src/server/retention/store.spec.ts +3 -3
  367. package/src/server/retention/store.ts +3 -3
  368. package/src/server/retention/sweeper.spec.ts +5 -5
  369. package/src/server/retention/sweeper.ts +5 -5
  370. package/src/server/retention/target.spec.ts +3 -3
  371. package/src/server/retention/target.ts +5 -5
  372. package/src/server/search/index.ts +2 -2
  373. package/src/server/search/pgSearchProvider.pg.test.ts +2 -2
  374. package/src/server/search/pgSearchProvider.ts +2 -2
  375. package/src/server/sharing/index.ts +8 -8
  376. package/src/server/sharing/migrations.ts +1 -1
  377. package/src/server/sharing/router.spec.ts +2 -2
  378. package/src/server/sharing/router.ts +1 -1
  379. package/src/server/sharing/sql.ts +1 -1
  380. package/src/server/sharing/store.spec.ts +2 -2
  381. package/src/server/sharing/store.ts +3 -3
  382. package/src/server/sqlite/backup.spec.ts +1 -1
  383. package/src/server/sqlite/browse.spec.ts +1 -1
  384. package/src/server/sqlite/browse.ts +1 -1
  385. package/src/server/sqlite/export.spec.ts +2 -2
  386. package/src/server/sqlite/export.ts +1 -1
  387. package/src/server/sqlite/fts5.spec.ts +1 -1
  388. package/src/server/sqlite/health.spec.ts +1 -1
  389. package/src/server/sqlite/import.spec.ts +3 -3
  390. package/src/server/sqlite/import.ts +1 -1
  391. package/src/server/sqlite/index.ts +9 -9
  392. package/src/server/sqlite/readonlySql.spec.ts +1 -1
  393. package/src/server/sqlite/stats.spec.ts +1 -1
  394. package/src/server/sqlite/stats.ts +1 -1
  395. package/src/server/sqlite/viewer.spec.ts +1 -1
  396. package/src/server/sqlite/viewer.ts +2 -2
  397. package/src/server/storage/binaryServerProcessing.integration.spec.ts +2 -2
  398. package/src/server/storage/binaryServerProcessing.spec.ts +2 -2
  399. package/src/server/storage/binaryServerProcessing.ts +3 -3
  400. package/src/server/storage/binaryServerStore.ts +3 -3
  401. package/src/server/storage/binaryStore.spec.ts +2 -2
  402. package/src/server/storage/binaryStore.ts +1 -1
  403. package/src/server/storage/binaryStoreFake.ts +1 -1
  404. package/src/server/storage/chunked.integration.spec.ts +4 -4
  405. package/src/server/storage/diskStore.ts +1 -1
  406. package/src/server/storage/fileUploadClient-chunked.integration.spec.ts +6 -6
  407. package/src/server/storage/fileUploadClient.integration.spec.ts +7 -7
  408. package/src/server/storage/files/adapter.photo.display.spec.ts +10 -10
  409. package/src/server/storage/files/adapter.photo.spec.ts +9 -9
  410. package/src/server/storage/files/adapter.spec.ts +8 -8
  411. package/src/server/storage/files/adapter.ts +5 -5
  412. package/src/server/storage/files/catalogue.media-host.spec.ts +6 -6
  413. package/src/server/storage/files/catalogue.orderings.spec.ts +6 -6
  414. package/src/server/storage/files/catalogue.recover.spec.ts +5 -5
  415. package/src/server/storage/files/catalogue.sort.spec.ts +6 -6
  416. package/src/server/storage/files/catalogue.spec.ts +7 -7
  417. package/src/server/storage/files/catalogue.trash-import.spec.ts +6 -6
  418. package/src/server/storage/files/catalogue.ts +6 -6
  419. package/src/server/storage/files/chunkedUpload.spec.ts +7 -7
  420. package/src/server/storage/files/chunkedUpload.ts +4 -4
  421. package/src/server/storage/files/collections.spec.ts +6 -6
  422. package/src/server/storage/files/fileRoutes.replace.spec.ts +8 -8
  423. package/src/server/storage/files/fileRoutes.spec.ts +8 -8
  424. package/src/server/storage/files/fileRoutes.ts +6 -6
  425. package/src/server/storage/files/index.ts +9 -9
  426. package/src/server/storage/files/migrations.ts +1 -1
  427. package/src/server/storage/files/stack.spec.ts +5 -5
  428. package/src/server/storage/files/stack.ts +12 -12
  429. package/src/server/storage/files/storageOps.spec.ts +4 -4
  430. package/src/server/storage/files/storageOps.ts +1 -1
  431. package/src/server/storage/files/types.ts +1 -1
  432. package/src/server/storage/imageThumbnail.spec.ts +2 -2
  433. package/src/server/storage/imageThumbnail.ts +1 -1
  434. package/src/server/storage/index.ts +15 -15
  435. package/src/server/storage/mountMediaRoutes.ts +4 -4
  436. package/src/server/storage/objectStore.spec.ts +1 -1
  437. package/src/server/storage/objectStoreMediaStore.ts +1 -1
  438. package/src/server/storage/s3ObjectStore.ts +1 -1
  439. package/src/server/storage/sources.ts +3 -3
  440. package/src/server/storage/storage.spec.ts +6 -6
  441. package/src/server/storage/streamRange.ts +1 -1
  442. package/src/server/storage/streamToken.ts +1 -1
  443. package/src/server/storage/transcodeJobs.spec.ts +1 -1
  444. package/src/server/storage/videoDerivativeKeys.spec.ts +1 -1
  445. package/src/server/storage/videoProcessor.posterOnly.spec.ts +4 -4
  446. package/src/server/storage/videoProcessor.ts +2 -2
  447. package/src/server/sync/alarm.spec.ts +1 -1
  448. package/src/server/sync/commands.spec.ts +1 -1
  449. package/src/server/sync/engine.spec.ts +4 -4
  450. package/src/server/sync/engine.ts +2 -2
  451. package/src/server/sync/http.ts +5 -5
  452. package/src/server/sync/httpRemote.spec.ts +1 -1
  453. package/src/server/sync/index.ts +11 -11
  454. package/src/server/sync/opLog.spec.ts +1 -1
  455. package/src/server/sync/opLog.ts +1 -1
  456. package/src/server/sync/planner.spec.ts +1 -1
  457. package/src/server/sync/signal.spec.ts +1 -1
  458. package/src/server/sync/signal.ts +1 -1
  459. package/src/server/sync/status.spec.ts +1 -1
  460. package/src/server/sync/timer.spec.ts +3 -3
  461. package/src/server/sync/timer.ts +3 -3
  462. package/src/server/sync/tokens.spec.ts +1 -1
  463. package/src/server/sync/tokens.ts +4 -3
  464. package/src/server/ws/eventBus.spec.ts +2 -2
  465. package/src/server/ws/eventBus.ts +1 -1
  466. package/src/server/ws/hub.integration.spec.ts +5 -5
  467. package/src/server/ws/hub.spec.ts +3 -3
  468. package/src/server/ws/hub.ts +4 -4
  469. package/src/server/ws/index.ts +5 -5
  470. package/src/server/ws/presence.spec.ts +3 -3
  471. package/src/server/ws/presence.ts +1 -1
  472. package/src/server/ws/room.spec.ts +2 -2
  473. package/src/server/ws/room.ts +1 -1
  474. package/src/server/ws/types.ts +1 -1
  475. package/src/testTmpRoot.spec.ts +1 -1
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,12 @@
1
+ // Loaded only on non-Bun runtimes. Six export subpaths of this package — the root barrel,
2
+ // `./guard`, `./guard/revocations`, `./sqlite`, `./middleware` and `./d1/backup-local` — are
3
+ // Bun-only by construction: they reach `bun:sqlite` or the `Bun` global. Their export map routes
4
+ // Bun (the "bun" condition) to the real module and everything else here, so importing one under
5
+ // Node fails with THIS sentence instead of `ERR_UNSUPPORTED_ESM_URL_SCHEME … 'bun:'` from deep
6
+ // inside the graph (measured by tools/proveInstall.ts, 2026-09-22). Same shape as `cwip/testing`.
7
+ //
8
+ // A Worker is served by the non-Bun subpaths (`./d1`, `./body-limit`, `./storage`, …), which
9
+ // load anywhere; none of the six is in any Worker bundle this generation builds.
10
+ throw new Error('This cursedbelt-server entry requires the Bun runtime — it reaches `bun:sqlite` or the `Bun` global. ' +
11
+ 'Under Node or in a Worker, import a portable subpath instead (`cursedbelt-server/d1`, `/body-limit`, `/storage`, …).');
12
+ export {};
@@ -28,9 +28,9 @@
28
28
  * by category, and an audit trail of production deletions is precisely the data
29
29
  * a 14-day cutoff must not reach.
30
30
  */
31
- export { ACTIVITY_EVENTS_TABLE, ACTIVITY_MIGRATIONS } from "./migrations";
32
- export { shareEventsSource, type ShareEventsSourceOptions } from "./shareSource";
33
- export { createActivityLog } from "./store";
34
- export type { ActivityFacet, ActivityFacets, ActivityLog, ActivityLogOptions, ActivityPage, ActivityQuery, ActivitySource, } from "./store";
31
+ export { ACTIVITY_EVENTS_TABLE, ACTIVITY_MIGRATIONS } from "./migrations.js";
32
+ export { shareEventsSource, type ShareEventsSourceOptions } from "./shareSource.js";
33
+ export { createActivityLog } from "./store.js";
34
+ export type { ActivityFacet, ActivityFacets, ActivityLog, ActivityLogOptions, ActivityPage, ActivityQuery, ActivitySource, } from "./store.js";
35
35
  export { ACTIVITY_OUTCOMES, activityFromShareEvent, activitySubject, describeActivityEvent, describeActivityResource, isActivityAction, isActivityOutcome, } from "cursedbelt-core/activity/model";
36
36
  export type { ActivityEvent, ActivityEventInput, ActivityOutcome, ActivityResource, } from "cursedbelt-core/activity/model";
@@ -28,9 +28,9 @@
28
28
  * by category, and an audit trail of production deletions is precisely the data
29
29
  * a 14-day cutoff must not reach.
30
30
  */
31
- export { ACTIVITY_EVENTS_TABLE, ACTIVITY_MIGRATIONS } from "./migrations";
32
- export { shareEventsSource } from "./shareSource";
33
- export { createActivityLog } from "./store";
31
+ export { ACTIVITY_EVENTS_TABLE, ACTIVITY_MIGRATIONS } from "./migrations.js";
32
+ export { shareEventsSource } from "./shareSource.js";
33
+ export { createActivityLog } from "./store.js";
34
34
  // Re-exported so a server consumer needs ONE import for the whole contract; the
35
35
  // pure entry (`cursedbelt-core/activity`) stays available for a browser or a spec.
36
36
  export { ACTIVITY_OUTCOMES, activityFromShareEvent, activitySubject, describeActivityEvent, describeActivityResource, isActivityAction, isActivityOutcome, } from "cursedbelt-core/activity/model";
@@ -1,4 +1,4 @@
1
- import type { Migration } from "../migration/types";
1
+ import type { Migration } from "../migration/types.js";
2
2
  /** The one table this primitive owns. Exported so an app can declare a retention
3
3
  * target over it (see this module's `index.ts` for the recipe). */
4
4
  export declare const ACTIVITY_EVENTS_TABLE = "activity_events";
@@ -1,4 +1,4 @@
1
- import type { ActivitySource } from "./store";
1
+ import type { ActivitySource } from "./store.js";
2
2
  export interface ShareEventsSourceOptions {
3
3
  /** The satellite this log speaks for — the same value passed to
4
4
  * `createActivityLog`, used where a group event names no resource. */
@@ -25,7 +25,7 @@
25
25
  * fleet-wide board merges on that column and an unlabeled row would be
26
26
  * unattributable.
27
27
  */
28
- import { SHARE_EVENTS_TABLE } from "../sharing/migrations";
28
+ import { SHARE_EVENTS_TABLE } from "../sharing/migrations.js";
29
29
  export function shareEventsSource(options) {
30
30
  const table = options.table ?? SHARE_EVENTS_TABLE;
31
31
  const name = options.name ?? "share";
@@ -1,6 +1,6 @@
1
1
  import { isActivityAction, isActivityOutcome, } from "cursedbelt-core/activity/model";
2
- import { runMigrations } from "../migration/runner";
3
- import { ACTIVITY_EVENTS_TABLE, ACTIVITY_MIGRATIONS } from "./migrations";
2
+ import { runMigrations } from "../migration/runner.js";
3
+ import { ACTIVITY_EVENTS_TABLE, ACTIVITY_MIGRATIONS } from "./migrations.js";
4
4
  const DEFAULT_LIMIT = 100;
5
5
  const MAX_LIMIT = 1000;
6
6
  const MAX_FACET = 25;
@@ -14,5 +14,5 @@
14
14
  * Both are pure string work with no imports at all, so this subpath costs a consumer nothing
15
15
  * and drags no peer.
16
16
  */
17
- export { type InjectedScript, foreignScriptSources, scriptsRefusedByCsp, } from "./injectedScripts";
18
- export { WEB_ANALYTICS_BEACON_ORIGIN, WEB_ANALYTICS_BEACON_SRC, WEB_ANALYTICS_PUBLIC_HOST, WEB_ANALYTICS_SITE_TAG, WEB_ANALYTICS_SITE_TOKEN, WEB_ANALYTICS_TAG, htmlCarriesWebAnalytics, webAnalyticsBootstrap, webAnalyticsTag, } from "./webAnalytics";
17
+ export { type InjectedScript, foreignScriptSources, scriptsRefusedByCsp, } from "./injectedScripts.js";
18
+ export { WEB_ANALYTICS_BEACON_ORIGIN, WEB_ANALYTICS_BEACON_SRC, WEB_ANALYTICS_PUBLIC_HOST, WEB_ANALYTICS_SITE_TAG, WEB_ANALYTICS_SITE_TOKEN, WEB_ANALYTICS_TAG, htmlCarriesWebAnalytics, webAnalyticsBootstrap, webAnalyticsTag, } from "./webAnalytics.js";
@@ -14,5 +14,5 @@
14
14
  * Both are pure string work with no imports at all, so this subpath costs a consumer nothing
15
15
  * and drags no peer.
16
16
  */
17
- export { foreignScriptSources, scriptsRefusedByCsp, } from "./injectedScripts";
18
- export { WEB_ANALYTICS_BEACON_ORIGIN, WEB_ANALYTICS_BEACON_SRC, WEB_ANALYTICS_PUBLIC_HOST, WEB_ANALYTICS_SITE_TAG, WEB_ANALYTICS_SITE_TOKEN, WEB_ANALYTICS_TAG, htmlCarriesWebAnalytics, webAnalyticsBootstrap, webAnalyticsTag, } from "./webAnalytics";
17
+ export { foreignScriptSources, scriptsRefusedByCsp, } from "./injectedScripts.js";
18
+ export { WEB_ANALYTICS_BEACON_ORIGIN, WEB_ANALYTICS_BEACON_SRC, WEB_ANALYTICS_PUBLIC_HOST, WEB_ANALYTICS_SITE_TAG, WEB_ANALYTICS_SITE_TOKEN, WEB_ANALYTICS_TAG, htmlCarriesWebAnalytics, webAnalyticsBootstrap, webAnalyticsTag, } from "./webAnalytics.js";
@@ -1,10 +1,10 @@
1
1
  import type { Database } from 'bun:sqlite';
2
2
  import type { Server, TLSOptions, WebSocketHandler } from 'bun';
3
3
  import { Hono } from 'hono';
4
- import type { CursedbeltEnv } from './context';
5
- import { type CorsOpts } from './middleware/corsAllowlist';
6
- import { type RateLimitOpts } from './middleware/rateLimit';
7
- import { type SecurityHeadersOpts } from './middleware/securityHeaders';
4
+ import type { CursedbeltEnv } from './context.js';
5
+ import { type CorsOpts } from './middleware/corsAllowlist.js';
6
+ import { type RateLimitOpts } from './middleware/rateLimit.js';
7
+ import { type SecurityHeadersOpts } from './middleware/securityHeaders.js';
8
8
  export interface CreateAppOpts {
9
9
  /** When provided, the request logger writes metrics/events to this DB. */
10
10
  db?: Database;
@@ -1,10 +1,10 @@
1
1
  import { Hono } from 'hono';
2
- import { correlationId } from './middleware/correlationId';
3
- import { corsAllowlist } from './middleware/corsAllowlist';
4
- import { errorEnvelope } from './middleware/errorEnvelope';
5
- import { createRateLimiter } from './middleware/rateLimit';
6
- import { requestLogger } from './middleware/requestLogger';
7
- import { securityHeaders } from './middleware/securityHeaders';
2
+ import { correlationId } from './middleware/correlationId.js';
3
+ import { corsAllowlist } from './middleware/corsAllowlist.js';
4
+ import { errorEnvelope } from './middleware/errorEnvelope.js';
5
+ import { createRateLimiter } from './middleware/rateLimit.js';
6
+ import { requestLogger } from './middleware/requestLogger.js';
7
+ import { securityHeaders } from './middleware/securityHeaders.js';
8
8
  /**
9
9
  * Build the configured cursedbelt Hono app: correlation id → (optional) CORS →
10
10
  * security headers →
@@ -1,2 +1,2 @@
1
- export { AUDIT_LOG_MIGRATIONS } from './migrations';
2
- export { auditStateAt, auditStateAtVersion, auditStep, createSqliteAuditSink } from './sqliteSink';
1
+ export { AUDIT_LOG_MIGRATIONS } from './migrations.js';
2
+ export { auditStateAt, auditStateAtVersion, auditStep, createSqliteAuditSink } from './sqliteSink.js';
@@ -1,2 +1,2 @@
1
- export { AUDIT_LOG_MIGRATIONS } from './migrations';
2
- export { auditStateAt, auditStateAtVersion, auditStep, createSqliteAuditSink } from './sqliteSink';
1
+ export { AUDIT_LOG_MIGRATIONS } from './migrations.js';
2
+ export { auditStateAt, auditStateAtVersion, auditStep, createSqliteAuditSink } from './sqliteSink.js';
@@ -1,2 +1,2 @@
1
- import type { Migration } from '../migration/types';
1
+ import type { Migration } from '../migration/types.js';
2
2
  export declare const AUDIT_LOG_MIGRATIONS: readonly Migration[];
@@ -1,5 +1,5 @@
1
- import { runMigrations } from '../migration/runner';
2
- import { AUDIT_LOG_MIGRATIONS } from './migrations';
1
+ import { runMigrations } from '../migration/runner.js';
2
+ import { AUDIT_LOG_MIGRATIONS } from './migrations.js';
3
3
  function rowToRecord(row) {
4
4
  return {
5
5
  namespace: row.namespace,
@@ -1,6 +1,6 @@
1
1
  import { Database } from 'bun:sqlite';
2
2
  import { beforeEach, describe, expect, it } from 'bun:test';
3
- import { auditStateAt, auditStateAtVersion, auditStep, createSqliteAuditSink } from './sqliteSink';
3
+ import { auditStateAt, auditStateAtVersion, auditStep, createSqliteAuditSink } from './sqliteSink.js';
4
4
  let db;
5
5
  beforeEach(() => {
6
6
  db = new Database(':memory:');
@@ -1,5 +1,5 @@
1
1
  import { getCookie, setCookie } from 'hono/cookie';
2
- import { ApiError, toErrorEnvelope } from '../errors';
2
+ import { ApiError, toErrorEnvelope } from '../errors.js';
3
3
  export const CSRF_COOKIE_NAME = 'csrf_token';
4
4
  export const CSRF_HEADER_NAME = 'x-csrf-token';
5
5
  const isProd = () => process.env.NODE_ENV === 'production';
@@ -1,4 +1,4 @@
1
- import type { FileTokenSigner } from '../storage/binaryServerStore';
1
+ import type { FileTokenSigner } from '../storage/binaryServerStore.js';
2
2
  export type Rs256FileTokenSignerOptions = {
3
3
  /** PKCS8 PEM private key. `\n` escape sequences are accepted (env-var friendly). */
4
4
  privateKeyPem: string;
@@ -1,5 +1,5 @@
1
1
  import type { MiddlewareHandler } from 'hono';
2
- import type { AuthEnv } from './types';
2
+ import type { AuthEnv } from './types.js';
3
3
  /**
4
4
  * `getOnly` enforcement — the server-side half of the `/f` GET-only session
5
5
  * guarantee. A getOnly session (the obfuscated `/f` login) may read freely and may
@@ -1,4 +1,4 @@
1
- import { ApiError, toErrorEnvelope } from '../errors';
1
+ import { ApiError, toErrorEnvelope } from '../errors.js';
2
2
  /**
3
3
  * `getOnly` enforcement — the server-side half of the `/f` GET-only session
4
4
  * guarantee. A getOnly session (the obfuscated `/f` login) may read freely and may
@@ -1,12 +1,12 @@
1
- export { AUTH_COOKIE_NAME, clearAuthCookie, readAuthCookie, writeAuthCookie, } from './cookie';
2
- export { CSRF_COOKIE_NAME, CSRF_HEADER_NAME, type CsrfOptions, createCsrfMiddleware } from './csrf';
3
- export { createRs256FileTokenSigner, type Rs256FileTokenSignerOptions, } from './fileTokenSigner';
4
- export { getOnlyEnforcement, isGetOnlyViolation } from './getOnly';
5
- export { signToken, verifyPurposeToken, verifyToken } from './jwt';
6
- export { clientKeyOf, clientKeyOfContext, createLoginThrottle, type LoginThrottle, type LoginThrottleOptions, type ThrottleVerdict, } from './loginThrottle';
7
- export { createAuthMiddleware } from './middleware';
8
- export { hashPassword, needsRehash, verifyPassword } from './password';
9
- export { createSessionStore, type SessionStoreOptions, } from './sessionStore';
10
- export { DEFAULT_TOTP_ISSUER, generateRecoveryCodes, generateTotpSecret, getTotpUri, verifyRecoveryCode, verifyTotpCode, } from './totp';
11
- export type { AppJwtPayload, AuthEnv, AuthUser, AuthVariables, CreateSessionInput, Session, SessionStore, TokenPurpose, } from './types';
12
- export { decryptVaultItem, deriveVaultKey, encryptVaultItem } from './vault';
1
+ export { AUTH_COOKIE_NAME, clearAuthCookie, readAuthCookie, writeAuthCookie, } from './cookie.js';
2
+ export { CSRF_COOKIE_NAME, CSRF_HEADER_NAME, type CsrfOptions, createCsrfMiddleware } from './csrf.js';
3
+ export { createRs256FileTokenSigner, type Rs256FileTokenSignerOptions, } from './fileTokenSigner.js';
4
+ export { getOnlyEnforcement, isGetOnlyViolation } from './getOnly.js';
5
+ export { signToken, verifyPurposeToken, verifyToken } from './jwt.js';
6
+ export { clientKeyOf, clientKeyOfContext, createLoginThrottle, type LoginThrottle, type LoginThrottleOptions, type ThrottleVerdict, } from './loginThrottle.js';
7
+ export { createAuthMiddleware } from './middleware.js';
8
+ export { hashPassword, needsRehash, verifyPassword } from './password.js';
9
+ export { createSessionStore, type SessionStoreOptions, } from './sessionStore.js';
10
+ export { DEFAULT_TOTP_ISSUER, generateRecoveryCodes, generateTotpSecret, getTotpUri, verifyRecoveryCode, verifyTotpCode, } from './totp.js';
11
+ export type { AppJwtPayload, AuthEnv, AuthUser, AuthVariables, CreateSessionInput, Session, SessionStore, TokenPurpose, } from './types.js';
12
+ export { decryptVaultItem, deriveVaultKey, encryptVaultItem } from './vault.js';
@@ -2,14 +2,14 @@
2
2
  // gate, a Kysely-backed session store, login throttle, argon2id passwords, TOTP, and
3
3
  // Web-Crypto vault item crypto. The *mechanism* lives here; the *model* (roles,
4
4
  // sharing, the `/f`-vs-`/login` policy, session semantics) stays in the apps.
5
- export { AUTH_COOKIE_NAME, clearAuthCookie, readAuthCookie, writeAuthCookie, } from './cookie';
6
- export { CSRF_COOKIE_NAME, CSRF_HEADER_NAME, createCsrfMiddleware } from './csrf';
7
- export { createRs256FileTokenSigner, } from './fileTokenSigner';
8
- export { getOnlyEnforcement, isGetOnlyViolation } from './getOnly';
9
- export { signToken, verifyPurposeToken, verifyToken } from './jwt';
10
- export { clientKeyOf, clientKeyOfContext, createLoginThrottle, } from './loginThrottle';
11
- export { createAuthMiddleware } from './middleware';
12
- export { hashPassword, needsRehash, verifyPassword } from './password';
13
- export { createSessionStore, } from './sessionStore';
14
- export { DEFAULT_TOTP_ISSUER, generateRecoveryCodes, generateTotpSecret, getTotpUri, verifyRecoveryCode, verifyTotpCode, } from './totp';
15
- export { decryptVaultItem, deriveVaultKey, encryptVaultItem } from './vault';
5
+ export { AUTH_COOKIE_NAME, clearAuthCookie, readAuthCookie, writeAuthCookie, } from './cookie.js';
6
+ export { CSRF_COOKIE_NAME, CSRF_HEADER_NAME, createCsrfMiddleware } from './csrf.js';
7
+ export { createRs256FileTokenSigner, } from './fileTokenSigner.js';
8
+ export { getOnlyEnforcement, isGetOnlyViolation } from './getOnly.js';
9
+ export { signToken, verifyPurposeToken, verifyToken } from './jwt.js';
10
+ export { clientKeyOf, clientKeyOfContext, createLoginThrottle, } from './loginThrottle.js';
11
+ export { createAuthMiddleware } from './middleware.js';
12
+ export { hashPassword, needsRehash, verifyPassword } from './password.js';
13
+ export { createSessionStore, } from './sessionStore.js';
14
+ export { DEFAULT_TOTP_ISSUER, generateRecoveryCodes, generateTotpSecret, getTotpUri, verifyRecoveryCode, verifyTotpCode, } from './totp.js';
15
+ export { decryptVaultItem, deriveVaultKey, encryptVaultItem } from './vault.js';
@@ -1,5 +1,5 @@
1
1
  import { type JWTPayload } from 'jose';
2
- import type { AppJwtPayload } from './types';
2
+ import type { AppJwtPayload } from './types.js';
3
3
  /**
4
4
  * Sign an HS256 token. `expiresIn` is a jose duration string (`'15m'`, `'24h'`) or a
5
5
  * number of seconds-from-now. `iat`/`exp` are set automatically — pass everything
@@ -1,5 +1,5 @@
1
1
  import type { MiddlewareHandler } from 'hono';
2
- import type { AuthEnv, SessionStore } from './types';
2
+ import type { AuthEnv, SessionStore } from './types.js';
3
3
  /**
4
4
  * The composed auth middleware. Reads the httpOnly `access_token` cookie, verifies
5
5
  * the JWT, checks the session is live (present, not revoked, inside its sliding
@@ -1,6 +1,6 @@
1
- import { ApiError, toErrorEnvelope } from '../errors';
2
- import { readAuthCookie } from './cookie';
3
- import { verifyToken } from './jwt';
1
+ import { ApiError, toErrorEnvelope } from '../errors.js';
2
+ import { readAuthCookie } from './cookie.js';
3
+ import { verifyToken } from './jwt.js';
4
4
  /**
5
5
  * The composed auth middleware. Reads the httpOnly `access_token` cookie, verifies
6
6
  * the JWT, checks the session is live (present, not revoked, inside its sliding
@@ -1,4 +1,5 @@
1
- import { pbkdf2 as pbkdf2Cb, timingSafeEqual } from 'node:crypto';
1
+ import { pbkdf2 as pbkdf2Cb } from 'node:crypto';
2
+ import { constantTimeEqual } from 'cwip/constant-time';
2
3
  import { promisify } from 'node:util';
3
4
  /**
4
5
  * Password hashing on `Bun.password` (argon2id — memory-hard, thread-pooled, zero
@@ -49,11 +50,8 @@ export async function verifyPassword(plain, stored) {
49
50
  if (!salt || !expectedHex)
50
51
  return false;
51
52
  const derived = (await pbkdf2(plain, salt, LEGACY_ITERATIONS, LEGACY_KEYLEN, LEGACY_DIGEST)).toString('hex');
52
- // timingSafeEqual throws on length mismatch; a length diff is already a non-match
53
- // and short-circuiting leaks nothing a compare wouldn't.
54
- if (derived.length !== expectedHex.length)
55
- return false;
56
- return timingSafeEqual(Buffer.from(derived), Buffer.from(expectedHex));
53
+ // cwip's fold: no length guard to own, no early exit (task 322).
54
+ return constantTimeEqual(derived, expectedHex);
57
55
  }
58
56
  /**
59
57
  * True when a stored hash is a legacy (non-argon2id) digest and should be upgraded.
@@ -1,5 +1,5 @@
1
- import type { PlumbingDb } from '../db/kysely';
2
- import type { SessionStore } from './types';
1
+ import type { PlumbingDb } from '../db/kysely.js';
2
+ import type { SessionStore } from './types.js';
3
3
  export interface SessionStoreOptions {
4
4
  /** Sliding refresh window — how long after the last activity a session stays
5
5
  * valid. Default 7 days. */
@@ -1,5 +1,5 @@
1
1
  import type { JWTPayload } from 'jose';
2
- import type { CursedbeltVariables } from '../context';
2
+ import type { CursedbeltVariables } from '../context.js';
3
3
  /**
4
4
  * Shared auth types for the cursedbelt server auth toolkit.
5
5
  *
@@ -5,7 +5,7 @@
5
5
  * replace. {@link assertCpuBudgets} THROWS, so a route that grows past its budget reddens
6
6
  * a build instead of adding a line to a log nobody opens.
7
7
  */
8
- import type { CpuBudgetReport } from './recorder';
8
+ import type { CpuBudgetReport } from './recorder.js';
9
9
  export type CpuViolationKind =
10
10
  /** p99 above the route's declared (or default) budget. */
11
11
  'over-budget'
@@ -5,7 +5,7 @@
5
5
  * replace. {@link assertCpuBudgets} THROWS, so a route that grows past its budget reddens
6
6
  * a build instead of adding a line to a log nobody opens.
7
7
  */
8
- import { DEFAULT_ROUTE_CPU_BUDGET_MS } from './budget';
8
+ import { DEFAULT_ROUTE_CPU_BUDGET_MS } from './budget.js';
9
9
  const fmt = (n) => (Number.isFinite(n) ? n.toFixed(2) : 'n/a');
10
10
  /** Compute violations without throwing. {@link assertCpuBudgets} is this plus a throw. */
11
11
  export function checkCpuBudgets(report, opts = {}) {
@@ -1,8 +1,8 @@
1
1
  import type { MiddlewareHandler } from 'hono';
2
- import type { CursedbeltEnv } from '../context';
3
- import type { CpuBudgetConfig } from './budget';
4
- import { type CpuClock } from './cpuClock';
5
- import { type CpuRecorder } from './recorder';
2
+ import type { CursedbeltEnv } from '../context.js';
3
+ import type { CpuBudgetConfig } from './budget.js';
4
+ import { type CpuClock } from './cpuClock.js';
5
+ import { type CpuRecorder } from './recorder.js';
6
6
  /**
7
7
  * Per-route CPU attribution, mounted like any other cursedbelt middleware.
8
8
  *
@@ -1,6 +1,6 @@
1
- import { normalizeRoute } from '../metrics/normalizeRoute';
2
- import { processCpuClock } from './cpuClock';
3
- import { createCpuRecorder } from './recorder';
1
+ import { normalizeRoute } from '../metrics/normalizeRoute.js';
2
+ import { processCpuClock } from './cpuClock.js';
3
+ import { createCpuRecorder } from './recorder.js';
4
4
  export function cpuBudget(opts = {}) {
5
5
  const recorder = opts.recorder ??
6
6
  createCpuRecorder({ clock: opts.clock ?? processCpuClock(), config: opts.config });
@@ -32,9 +32,9 @@
32
32
  * Every report carries `proxy: true` and every formatted report says so, because the
33
33
  * alternative is a number that gets quoted as a billing fact.
34
34
  */
35
- export { type AssertCpuBudgetsOpts, assertCpuBudgets, checkCpuBudgets, type CpuViolation, type CpuViolationKind, formatCpuBudgetReport, } from './assert';
36
- export { type CpuBudgetConfig, type CpuBudgetExemption, type CpuBudgetLimit, DAYS_PER_MONTH, DEFAULT_ROUTE_CPU_BUDGET_MS, deriveCpuBudgetMs, isExemption, MEASURED_FLEET_REQUESTS_PER_DAY, monthlyOverageUsd, OWNER_PROJECTED_REQUESTS_PER_DAY, type ResolvedBudget, resolveBudget, type RouteBudget, validateCpuBudgetConfig, WORKERS_PAID_INCLUDED_CPU_MS, WORKERS_PAID_INCLUDED_REQUESTS, WORKERS_PAID_USD_PER_MILLION_CPU_MS, WORKERS_PAID_USD_PER_MILLION_REQUESTS, } from './budget';
37
- export { type CpuBudgetOpts, cpuBudget } from './cpuBudget';
38
- export { type CpuClock, type CpuSpan, fixedCpuClock, processCpuClock, resolveCpuClock, unavailableCpuClock, workerCpuClock, } from './cpuClock';
39
- export { type CpuBudgetReport, type CpuRecorder, type CpuRecorderOpts, createCpuRecorder, percentile, type RouteCpuStats, } from './recorder';
40
- export { BENCH_ORIGIN, type BenchCase, runCpuBench, type RunCpuBenchOpts } from './runBench';
35
+ export { type AssertCpuBudgetsOpts, assertCpuBudgets, checkCpuBudgets, type CpuViolation, type CpuViolationKind, formatCpuBudgetReport, } from './assert.js';
36
+ export { type CpuBudgetConfig, type CpuBudgetExemption, type CpuBudgetLimit, DAYS_PER_MONTH, DEFAULT_ROUTE_CPU_BUDGET_MS, deriveCpuBudgetMs, isExemption, MEASURED_FLEET_REQUESTS_PER_DAY, monthlyOverageUsd, OWNER_PROJECTED_REQUESTS_PER_DAY, type ResolvedBudget, resolveBudget, type RouteBudget, validateCpuBudgetConfig, WORKERS_PAID_INCLUDED_CPU_MS, WORKERS_PAID_INCLUDED_REQUESTS, WORKERS_PAID_USD_PER_MILLION_CPU_MS, WORKERS_PAID_USD_PER_MILLION_REQUESTS, } from './budget.js';
37
+ export { type CpuBudgetOpts, cpuBudget } from './cpuBudget.js';
38
+ export { type CpuClock, type CpuSpan, fixedCpuClock, processCpuClock, resolveCpuClock, unavailableCpuClock, workerCpuClock, } from './cpuClock.js';
39
+ export { type CpuBudgetReport, type CpuRecorder, type CpuRecorderOpts, createCpuRecorder, percentile, type RouteCpuStats, } from './recorder.js';
40
+ export { BENCH_ORIGIN, type BenchCase, runCpuBench, type RunCpuBenchOpts } from './runBench.js';
@@ -32,9 +32,9 @@
32
32
  * Every report carries `proxy: true` and every formatted report says so, because the
33
33
  * alternative is a number that gets quoted as a billing fact.
34
34
  */
35
- export { assertCpuBudgets, checkCpuBudgets, formatCpuBudgetReport, } from './assert';
36
- export { DAYS_PER_MONTH, DEFAULT_ROUTE_CPU_BUDGET_MS, deriveCpuBudgetMs, isExemption, MEASURED_FLEET_REQUESTS_PER_DAY, monthlyOverageUsd, OWNER_PROJECTED_REQUESTS_PER_DAY, resolveBudget, validateCpuBudgetConfig, WORKERS_PAID_INCLUDED_CPU_MS, WORKERS_PAID_INCLUDED_REQUESTS, WORKERS_PAID_USD_PER_MILLION_CPU_MS, WORKERS_PAID_USD_PER_MILLION_REQUESTS, } from './budget';
37
- export { cpuBudget } from './cpuBudget';
38
- export { fixedCpuClock, processCpuClock, resolveCpuClock, unavailableCpuClock, workerCpuClock, } from './cpuClock';
39
- export { createCpuRecorder, percentile, } from './recorder';
40
- export { BENCH_ORIGIN, runCpuBench } from './runBench';
35
+ export { assertCpuBudgets, checkCpuBudgets, formatCpuBudgetReport, } from './assert.js';
36
+ export { DAYS_PER_MONTH, DEFAULT_ROUTE_CPU_BUDGET_MS, deriveCpuBudgetMs, isExemption, MEASURED_FLEET_REQUESTS_PER_DAY, monthlyOverageUsd, OWNER_PROJECTED_REQUESTS_PER_DAY, resolveBudget, validateCpuBudgetConfig, WORKERS_PAID_INCLUDED_CPU_MS, WORKERS_PAID_INCLUDED_REQUESTS, WORKERS_PAID_USD_PER_MILLION_CPU_MS, WORKERS_PAID_USD_PER_MILLION_REQUESTS, } from './budget.js';
37
+ export { cpuBudget } from './cpuBudget.js';
38
+ export { fixedCpuClock, processCpuClock, resolveCpuClock, unavailableCpuClock, workerCpuClock, } from './cpuClock.js';
39
+ export { createCpuRecorder, percentile, } from './recorder.js';
40
+ export { BENCH_ORIGIN, runCpuBench } from './runBench.js';
@@ -5,8 +5,8 @@
5
5
  * reports ~4 ms and looks healthy. The number that decides whether a route is safe to
6
6
  * make common is its tail, so the mean is reported beside p99 and never instead of it.
7
7
  */
8
- import { type CpuBudgetConfig } from './budget';
9
- import type { CpuClock } from './cpuClock';
8
+ import { type CpuBudgetConfig } from './budget.js';
9
+ import type { CpuClock } from './cpuClock.js';
10
10
  /**
11
11
  * Nearest-rank percentile over an ASCENDING-sorted array: the smallest value at or below
12
12
  * which at least `p`% of samples fall. No interpolation — an interpolated p99 reports a
@@ -5,7 +5,7 @@
5
5
  * reports ~4 ms and looks healthy. The number that decides whether a route is safe to
6
6
  * make common is its tail, so the mean is reported beside p99 and never instead of it.
7
7
  */
8
- import { resolveBudget, validateCpuBudgetConfig, } from './budget';
8
+ import { resolveBudget, validateCpuBudgetConfig, } from './budget.js';
9
9
  /**
10
10
  * Nearest-rank percentile over an ASCENDING-sorted array: the smallest value at or below
11
11
  * which at least `p`% of samples fall. No interpolation — an interpolated p99 reports a
@@ -1,5 +1,5 @@
1
- import type { CpuRecorder } from './recorder';
2
- import type { CpuBudgetReport } from './recorder';
1
+ import type { CpuRecorder } from './recorder.js';
2
+ import type { CpuBudgetReport } from './recorder.js';
3
3
  /**
4
4
  * Drive a Hono app's routes and measure what each costs in CPU.
5
5
  *
@@ -2,7 +2,7 @@ import type { Context, Hono, MiddlewareHandler } from 'hono';
2
2
  import type { H } from 'hono/types';
3
3
  import type { ChunkStore } from 'cursedbelt-core/ctgr/chunk-store';
4
4
  import { type CtgrDecoded, type CtgrMethod } from 'cursedbelt-core/ctgr/types';
5
- import type { CursedbeltEnv } from './context';
5
+ import type { CursedbeltEnv } from './context.js';
6
6
  /**
7
7
  * The path pattern that matches EVERY ctgr GET twin (`/ctgr<XX>...`) and nothing
8
8
  * else — mount the decode + CSRF + getOnly middleware on this. NOTE: Hono's router
@@ -1,6 +1,6 @@
1
1
  import { ABBREV_TO_METHOD, METHOD_TO_ABBREV, } from 'cursedbelt-core/ctgr/types';
2
2
  import { V0ChunkStore } from 'cursedbelt-core/ctgr/v0compat';
3
- import { ApiError, toErrorEnvelope } from './errors';
3
+ import { ApiError, toErrorEnvelope } from './errors.js';
4
4
  /**
5
5
  * The path pattern that matches EVERY ctgr GET twin (`/ctgr<XX>...`) and nothing
6
6
  * else — mount the decode + CSRF + getOnly middleware on this. NOTE: Hono's router
@@ -34,7 +34,7 @@
34
34
  * it.
35
35
  */
36
36
  import type { Database } from 'bun:sqlite';
37
- import type { D1BindingLike } from './remote';
37
+ import type { D1BindingLike } from './remote.js';
38
38
  /**
39
39
  * Wrap a real `bun:sqlite` database in D1's API and D1's restrictions.
40
40
  *
@@ -33,7 +33,7 @@
33
33
  * makes a port testable on a laptop, and `190`'s Worker preview is the thing that proves
34
34
  * it.
35
35
  */
36
- import { isPureReadSql } from './values';
36
+ import { isPureReadSql } from './values.js';
37
37
  /** The bind types a real D1 binding accepts. Everything else throws. */
38
38
  function assertD1Bindable(value, index) {
39
39
  if (value === null)
@@ -14,11 +14,11 @@
14
14
  * const ky = createD1Kysely(db);
15
15
  * ```
16
16
  */
17
- export { type BackupPoint, createTimeTravelBackup, type DatabaseBackup, type TimeTravelOpts, } from './backup';
18
- export { createPendingWrites, type InvocationD1, type PendingWrites, perInvocation, type WriteCollector } from './invocation';
19
- export { assertBatchSize, assertWithinLimits, chunkForBind, LIMITS } from './limits';
20
- export { createLocalD1, refuseInteractiveTransaction } from './local';
21
- export { createRemoteD1, type D1BindingLike, type D1BindingMeta, type D1BindingResult, type D1BindingStatement, } from './remote';
22
- export { classifySchedule, cronFieldCount, jobsForCron, type PortableJob, type PortableJobContext, type ScheduleVerdict, toCronTriggers, toFiveField, type TriggerShape, type WorkersPrimitive, } from './scheduling';
23
- export { D1BindError, type D1LikeBindable, type D1LikeDatabase, type D1LikeMeta, type D1LikeResult, type D1LikeRow, type D1LikeStatement, type D1LikeValue, D1LimitError, D1UnsupportedError, } from './types';
24
- export { makeMeta, normalizeBind, normalizeBinds, normalizeRow, normalizeRows, normalizeValue } from './values';
17
+ export { type BackupPoint, createTimeTravelBackup, type DatabaseBackup, type TimeTravelOpts, } from './backup.js';
18
+ export { createPendingWrites, type InvocationD1, type PendingWrites, perInvocation, type WriteCollector } from './invocation.js';
19
+ export { assertBatchSize, assertWithinLimits, chunkForBind, LIMITS } from './limits.js';
20
+ export { createLocalD1, refuseInteractiveTransaction } from './local.js';
21
+ export { createRemoteD1, type D1BindingLike, type D1BindingMeta, type D1BindingResult, type D1BindingStatement, } from './remote.js';
22
+ export { classifySchedule, cronFieldCount, jobsForCron, type PortableJob, type PortableJobContext, type ScheduleVerdict, toCronTriggers, toFiveField, type TriggerShape, type WorkersPrimitive, } from './scheduling.js';
23
+ export { D1BindError, type D1LikeBindable, type D1LikeDatabase, type D1LikeMeta, type D1LikeResult, type D1LikeRow, type D1LikeStatement, type D1LikeValue, D1LimitError, D1UnsupportedError, } from './types.js';
24
+ export { makeMeta, normalizeBind, normalizeBinds, normalizeRow, normalizeRows, normalizeValue } from './values.js';
@@ -14,7 +14,7 @@
14
14
  * const ky = createD1Kysely(db);
15
15
  * ```
16
16
  */
17
- export { createTimeTravelBackup, } from './backup';
17
+ export { createTimeTravelBackup, } from './backup.js';
18
18
  // 🔴 `./localBackup` is deliberately NOT re-exported here — import `checkpointWal`,
19
19
  // `createLocalBackup`, `LocalBackupOpts` and `backupFor` from
20
20
  // `cursedbelt-server/d1/backup-local`. It reaches `bun:sqlite` for real (via
@@ -33,10 +33,10 @@ export { createTimeTravelBackup, } from './backup';
33
33
  // that does not use the query builder — which per `../db/kysely.ts`'s own header is most
34
34
  // of them, since business tables stay on raw statements. Measured 2026-09-18 against the
35
35
  // published 4.3.0 tarball. `barrelsReachNoOptionalPeer.spec.ts` is what keeps it out.
36
- export { createPendingWrites, perInvocation } from './invocation';
37
- export { assertBatchSize, assertWithinLimits, chunkForBind, LIMITS } from './limits';
38
- export { createLocalD1, refuseInteractiveTransaction } from './local';
39
- export { createRemoteD1, } from './remote';
40
- export { classifySchedule, cronFieldCount, jobsForCron, toCronTriggers, toFiveField, } from './scheduling';
41
- export { D1BindError, D1LimitError, D1UnsupportedError, } from './types';
42
- export { makeMeta, normalizeBind, normalizeBinds, normalizeRow, normalizeRows, normalizeValue } from './values';
36
+ export { createPendingWrites, perInvocation } from './invocation.js';
37
+ export { assertBatchSize, assertWithinLimits, chunkForBind, LIMITS } from './limits.js';
38
+ export { createLocalD1, refuseInteractiveTransaction } from './local.js';
39
+ export { createRemoteD1, } from './remote.js';
40
+ export { classifySchedule, cronFieldCount, jobsForCron, toCronTriggers, toFiveField, } from './scheduling.js';
41
+ export { D1BindError, D1LimitError, D1UnsupportedError, } from './types.js';
42
+ export { makeMeta, normalizeBind, normalizeBinds, normalizeRow, normalizeRows, normalizeValue } from './values.js';
@@ -48,7 +48,7 @@
48
48
  * the same breath — so it lives in the same file. See its own header for why it was moved
49
49
  * here on 2026-09-19.
50
50
  */
51
- import { type D1LikeDatabase } from './types';
51
+ import { type D1LikeDatabase } from './types.js';
52
52
  /**
53
53
  * A database handle that knows how much of its invocation budget it has spent.
54
54
  *
@@ -48,8 +48,8 @@
48
48
  * the same breath — so it lives in the same file. See its own header for why it was moved
49
49
  * here on 2026-09-19.
50
50
  */
51
- import { LIMITS } from './limits';
52
- import { D1LimitError } from './types';
51
+ import { LIMITS } from './limits.js';
52
+ import { D1LimitError } from './types.js';
53
53
  /**
54
54
  * The statements a wrapper handed out, mapped back to the driver's own.
55
55
  *
@@ -27,8 +27,8 @@
27
27
  * moved; this is the one to reach for when it does.
28
28
  */
29
29
  import { type DatabaseIntrospector, type Dialect, type DialectAdapter, type Driver, Kysely, type QueryCompiler } from 'kysely';
30
- import type { PlumbingSchema } from '../db/plumbingTypes';
31
- import { type D1LikeDatabase } from './types';
30
+ import type { PlumbingSchema } from '../db/plumbingTypes.js';
31
+ import { type D1LikeDatabase } from './types.js';
32
32
  /** The dialect itself — SQLite's adapter, compiler and introspector over our driver. */
33
33
  export declare class D1LikeDialect implements Dialect {
34
34
  private readonly db;
@@ -27,8 +27,8 @@
27
27
  * moved; this is the one to reach for when it does.
28
28
  */
29
29
  import { Kysely, SqliteAdapter, SqliteIntrospector, SqliteQueryCompiler, } from 'kysely';
30
- import { refuseInteractiveTransaction } from './local';
31
- import { D1UnsupportedError } from './types';
30
+ import { refuseInteractiveTransaction } from './local.js';
31
+ import { D1UnsupportedError } from './types.js';
32
32
  /**
33
33
  * Kysely compiles to a parameter list that may contain values our seam refuses
34
34
  * (`undefined` from an optional column, a `Date` from a careless caller). Passing them
@@ -17,7 +17,7 @@
17
17
  *
18
18
  * Values are the Workers **Paid** tier, which is what the owner already pays for.
19
19
  */
20
- import { type D1LikeBindable } from './types';
20
+ import { type D1LikeBindable } from './types.js';
21
21
  export declare const LIMITS: {
22
22
  /** Bound parameters in a single statement. */
23
23
  readonly boundParams: 100;
@@ -17,7 +17,7 @@
17
17
  *
18
18
  * Values are the Workers **Paid** tier, which is what the owner already pays for.
19
19
  */
20
- import { D1LimitError } from './types';
20
+ import { D1LimitError } from './types.js';
21
21
  export const LIMITS = {
22
22
  /** Bound parameters in a single statement. */
23
23
  boundParams: 100,