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
@@ -29,7 +29,7 @@
29
29
  * this module has no ambient authority and a test can hand it a fake client.
30
30
  */
31
31
  import { assertObjectKey } from 'cwip/storage';
32
- import { AppError } from '../errors';
32
+ import { AppError } from '../errors.js';
33
33
  const DEFAULT_PART_SIZE = 8 * 1024 * 1024;
34
34
  const DEFAULT_EXPIRES_IN_SECONDS = 300;
35
35
  const MAX_EXPIRES_IN_SECONDS = 86_400;
@@ -1,6 +1,6 @@
1
1
  import type { ProcessingStatus } from 'cursedbelt-core/media';
2
- import type { StreamTokenService } from './streamToken';
3
- import { type MediaCtx, type MediaSource, type MediaStore } from './types';
2
+ import type { StreamTokenService } from './streamToken.js';
3
+ import { type MediaCtx, type MediaSource, type MediaStore } from './types.js';
4
4
  export interface MediaUrls {
5
5
  build(ctx: MediaCtx, sourceId: string, videoId: string): Promise<{
6
6
  streamUrl: string;
@@ -1,5 +1,5 @@
1
- import { fsMp4Key, fsPosterKey, fsSourceKey, fsSpriteKey, fsVttKey, } from './types';
2
- import { processVideo } from './videoProcessor';
1
+ import { fsMp4Key, fsPosterKey, fsSourceKey, fsSpriteKey, fsVttKey, } from './types.js';
2
+ import { processVideo } from './videoProcessor.js';
3
3
  export function createMediaUrls(opts) {
4
4
  const ownerOf = opts.owner ?? ((c) => c.tenantId);
5
5
  // Trim a trailing slash so 'https://api…/_media/' and '/_media' behave identically.
@@ -1,4 +1,4 @@
1
- import type { MediaStore } from './types';
1
+ import type { MediaStore } from './types.js';
2
2
  export type RangeDecision = {
3
3
  kind: 'full';
4
4
  } | {
@@ -5,7 +5,7 @@
5
5
  // to install a one-time-password library for code it never calls. Import the leaf module that
6
6
  // has what you need; never the index that has everything. `src/leafSubpathsImportNothing.spec.ts`
7
7
  // fails if this file (or anything else the storage barrel reaches) undoes it.
8
- import { signToken, verifyPurposeToken } from '../auth/jwt';
8
+ import { signToken, verifyPurposeToken } from '../auth/jwt.js';
9
9
  // ── Stream tokens ───────────────────────────────────────────────────────────────
10
10
  // Media bytes are loaded by <video>/hls.js/<img>, which cannot send the platform Bearer
11
11
  // header an app's auth uses. So byte-serving routes live OUTSIDE the guarded API and
@@ -1,5 +1,5 @@
1
1
  import type { ProcessingStatus } from 'cursedbelt-core/media';
2
- import { type MediaStore } from './types';
2
+ import { type MediaStore } from './types.js';
3
3
  export type ProcessProgress = (status: ProcessingStatus, pct: number) => void;
4
4
  export type ProcessResult = {
5
5
  status: ProcessingStatus;
@@ -1,7 +1,7 @@
1
1
  import { mkdir, readdir, rm } from 'node:fs/promises';
2
2
  import path from 'node:path';
3
- import { buildSpriteVtt, canStreamCopy, faststartArgs, hlsLadderArgs, isFfmpegAvailable, LIBRARY_CRF, planSprite, posterArgs, probeVideoStream, resolveLadder, runFfmpegProgress, spriteArgs, } from '../media-bun';
4
- import { fsHlsFileKey, fsHlsMasterKey, fsMp4Key, fsPosterKey, fsSpriteKey, fsVttKey, } from './types';
3
+ import { buildSpriteVtt, canStreamCopy, faststartArgs, hlsLadderArgs, isFfmpegAvailable, LIBRARY_CRF, planSprite, posterArgs, probeVideoStream, resolveLadder, runFfmpegProgress, spriteArgs, } from '../media-bun/index.js';
4
+ import { fsHlsFileKey, fsHlsMasterKey, fsMp4Key, fsPosterKey, fsSpriteKey, fsVttKey, } from './types.js';
5
5
  // Stream a produced local file into the store under `key` (no full heap copy).
6
6
  async function uploadFile(store, localPath, key, mime) {
7
7
  const file = Bun.file(localPath);
@@ -13,8 +13,8 @@
13
13
  * instead of wedging with an error that reads like corruption. Nothing is dropped —
14
14
  * the moment the peer is upgraded, the next push resumes from exactly that op.
15
15
  */
16
- import type { OpLog } from "./opLog";
17
- import { type ApplyContext, type ApplyOne, type ApplyReport, type PeerInfo, type RemoteApi, type SyncOp, type SyncSummary } from "./types";
16
+ import type { OpLog } from "./opLog.js";
17
+ import { type ApplyContext, type ApplyOne, type ApplyReport, type PeerInfo, type RemoteApi, type SyncOp, type SyncSummary } from "./types.js";
18
18
  /** Kit-owned dedupe + ledger insert around the app's per-op merge logic. Everything
19
19
  * for one op happens in one transaction: state change AND ledger insert, so a crash
20
20
  * can never apply without recording (double-apply) or record without applying
@@ -1,4 +1,4 @@
1
- import { StopBatch, } from "./types";
1
+ import { StopBatch, } from "./types.js";
2
2
  const BATCH = 500;
3
3
  /** Kit-owned dedupe + ledger insert around the app's per-op merge logic. Everything
4
4
  * for one op happens in one transaction: state change AND ledger insert, so a crash
@@ -9,9 +9,9 @@
9
9
  * probe.
10
10
  */
11
11
  import { Hono } from "hono";
12
- import type { OpLog } from "./opLog";
13
- import type { ApplyOne, ApplyReport, RemoteApi } from "./types";
14
- import { type SyncSignalHub } from "./signal";
12
+ import type { OpLog } from "./opLog.js";
13
+ import type { ApplyOne, ApplyReport, RemoteApi } from "./types.js";
14
+ import { type SyncSignalHub } from "./signal.js";
15
15
  /**
16
16
  * Trim a page to the byte budget, keeping it a PREFIX so `cursor` stays the seq
17
17
  * of the last op actually returned. Anything else silently drops ops: the caller
@@ -74,7 +74,7 @@ export interface ReceiverOptions {
74
74
  * served a single integer — "was Sync now pressed here?" — and existed only to be
75
75
  * asked, every 20 seconds, by a dialer that otherwise had nothing to say. That made
76
76
  * it **68 % of `vault`'s entire traffic**. A receiver with news now says so over
77
- * {@link import("./signal")} instead of waiting to be asked; deleting the route is
77
+ * {@link import("./signal.js")} instead of waiting to be asked; deleting the route is
78
78
  * what stops a stale consumer from keeping the poll alive against a new build.
79
79
  */
80
80
  export declare function createSyncReceiver(options: ReceiverOptions): Hono;
@@ -9,8 +9,8 @@
9
9
  * probe.
10
10
  */
11
11
  import { Hono } from "hono";
12
- import { createSyncApplier } from "./engine";
13
- import { signalResponse } from "./signal";
12
+ import { createSyncApplier } from "./engine.js";
13
+ import { signalResponse } from "./signal.js";
14
14
  const noStore = { "cache-control": "no-store" };
15
15
  const SYNC_PAGE = 500;
16
16
  /**
@@ -60,7 +60,7 @@ function peerIdOf(header, query) {
60
60
  * served a single integer — "was Sync now pressed here?" — and existed only to be
61
61
  * asked, every 20 seconds, by a dialer that otherwise had nothing to say. That made
62
62
  * it **68 % of `vault`'s entire traffic**. A receiver with news now says so over
63
- * {@link import("./signal")} instead of waiting to be asked; deleting the route is
63
+ * {@link import("./signal.js")} instead of waiting to be asked; deleting the route is
64
64
  * what stops a stale consumer from keeping the poll alive against a new build.
65
65
  */
66
66
  export function createSyncReceiver(options) {
@@ -29,14 +29,14 @@
29
29
  * `bun:sqlite` and `node:crypto` only resolve on this side of the split. The
30
30
  * directory decides the types; the `exports` key decides the spelling.
31
31
  */
32
- export { StopBatch, type ApplyContext, type ApplyOne, type ApplyReport, type PeerInfo, type RemoteApi, type SyncOp, type SyncSummary, } from "./types";
33
- export { createOpLog, type OpLog } from "./opLog";
34
- export { createTokenStore, type DeviceToken, type TokenStore } from "./tokens";
35
- export { createSyncApplier, pushToRemote, pullFromRemote, runSync, type EngineOptions, type ExportPolicy, type PeerRefusal, } from "./engine";
36
- export { capPageBytes, createHttpRemote, createSyncReceiver, type ReceiverHooks, type ReceiverOptions, } from "./http";
37
- export { DEFAULT_LOOP, isUnreachable, planNextSync, type SyncLoopConfig, type SyncLoopState, type SyncPlan, } from "./planner";
38
- export { SIGNAL_SSE_HEADERS, connectSyncSignal, createSyncSignalHub, encodeNewsFrame, parseNewsFrame, signalResponse, signalStream, type SignalClient, type SignalClientOptions, type SignalStreamOptions, type SyncNews, type SyncSignalHub, } from "./signal";
39
- export { OFFLINE_STATUS, PEER_CONTACT_WRITE_MS, createSyncStatusReporter, type SyncStatus, type SyncStatusReporter, type SyncStatusStore, } from "./status";
32
+ export { StopBatch, type ApplyContext, type ApplyOne, type ApplyReport, type PeerInfo, type RemoteApi, type SyncOp, type SyncSummary, } from "./types.js";
33
+ export { createOpLog, type OpLog } from "./opLog.js";
34
+ export { createTokenStore, type DeviceToken, type TokenStore } from "./tokens.js";
35
+ export { createSyncApplier, pushToRemote, pullFromRemote, runSync, type EngineOptions, type ExportPolicy, type PeerRefusal, } from "./engine.js";
36
+ export { capPageBytes, createHttpRemote, createSyncReceiver, type ReceiverHooks, type ReceiverOptions, } from "./http.js";
37
+ export { DEFAULT_LOOP, isUnreachable, planNextSync, type SyncLoopConfig, type SyncLoopState, type SyncPlan, } from "./planner.js";
38
+ export { SIGNAL_SSE_HEADERS, connectSyncSignal, createSyncSignalHub, encodeNewsFrame, parseNewsFrame, signalResponse, signalStream, type SignalClient, type SignalClientOptions, type SignalStreamOptions, type SyncNews, type SyncSignalHub, } from "./signal.js";
39
+ export { OFFLINE_STATUS, PEER_CONTACT_WRITE_MS, createSyncStatusReporter, type SyncStatus, type SyncStatusReporter, type SyncStatusStore, } from "./status.js";
40
40
  /**
41
41
  * 🔴 `REQUEST_POLL_MS` was exported from here until 2026-09-15 and is GONE — that
42
42
  * removal is why this package went to 2.0.0. It was a 20-second dial at a configured
@@ -44,6 +44,6 @@ export { OFFLINE_STATUS, PEER_CONTACT_WRITE_MS, createSyncStatusReporter, type S
44
44
  * deleting it would have been a breaking change rather than an edit. `./timer`'s
45
45
  * header has the ruling and the measurement; `./signal` is what replaced it.
46
46
  */
47
- export { startSyncTimer, type SyncTimerDeps, type SyncTimerHandle, type WakeReason } from "./timer";
48
- export { createSyncAlarm, type AlarmOutcome, type SyncAlarm, type SyncAlarmOptions } from "./alarm";
49
- export { DEFAULT_HOLD_MS, createCommandQueue, createCommandReceiver, createCommandRemote, startCommandWorker, type CommandQueue, type CommandRemote, type CommandRoutesOptions, type CommandStatus, type CommandWorkerDeps, type CommandWorkerHandle, type SyncCommand, } from "./commands";
47
+ export { startSyncTimer, type SyncTimerDeps, type SyncTimerHandle, type WakeReason } from "./timer.js";
48
+ export { createSyncAlarm, type AlarmOutcome, type SyncAlarm, type SyncAlarmOptions } from "./alarm.js";
49
+ export { DEFAULT_HOLD_MS, createCommandQueue, createCommandReceiver, createCommandRemote, startCommandWorker, type CommandQueue, type CommandRemote, type CommandRoutesOptions, type CommandStatus, type CommandWorkerDeps, type CommandWorkerHandle, type SyncCommand, } from "./commands.js";
@@ -29,14 +29,14 @@
29
29
  * `bun:sqlite` and `node:crypto` only resolve on this side of the split. The
30
30
  * directory decides the types; the `exports` key decides the spelling.
31
31
  */
32
- export { StopBatch, } from "./types";
33
- export { createOpLog } from "./opLog";
34
- export { createTokenStore } from "./tokens";
35
- export { createSyncApplier, pushToRemote, pullFromRemote, runSync, } from "./engine";
36
- export { capPageBytes, createHttpRemote, createSyncReceiver, } from "./http";
37
- export { DEFAULT_LOOP, isUnreachable, planNextSync, } from "./planner";
38
- export { SIGNAL_SSE_HEADERS, connectSyncSignal, createSyncSignalHub, encodeNewsFrame, parseNewsFrame, signalResponse, signalStream, } from "./signal";
39
- export { OFFLINE_STATUS, PEER_CONTACT_WRITE_MS, createSyncStatusReporter, } from "./status";
32
+ export { StopBatch, } from "./types.js";
33
+ export { createOpLog } from "./opLog.js";
34
+ export { createTokenStore } from "./tokens.js";
35
+ export { createSyncApplier, pushToRemote, pullFromRemote, runSync, } from "./engine.js";
36
+ export { capPageBytes, createHttpRemote, createSyncReceiver, } from "./http.js";
37
+ export { DEFAULT_LOOP, isUnreachable, planNextSync, } from "./planner.js";
38
+ export { SIGNAL_SSE_HEADERS, connectSyncSignal, createSyncSignalHub, encodeNewsFrame, parseNewsFrame, signalResponse, signalStream, } from "./signal.js";
39
+ export { OFFLINE_STATUS, PEER_CONTACT_WRITE_MS, createSyncStatusReporter, } from "./status.js";
40
40
  /**
41
41
  * 🔴 `REQUEST_POLL_MS` was exported from here until 2026-09-15 and is GONE — that
42
42
  * removal is why this package went to 2.0.0. It was a 20-second dial at a configured
@@ -44,6 +44,6 @@ export { OFFLINE_STATUS, PEER_CONTACT_WRITE_MS, createSyncStatusReporter, } from
44
44
  * deleting it would have been a breaking change rather than an edit. `./timer`'s
45
45
  * header has the ruling and the measurement; `./signal` is what replaced it.
46
46
  */
47
- export { startSyncTimer } from "./timer";
48
- export { createSyncAlarm } from "./alarm";
49
- export { DEFAULT_HOLD_MS, createCommandQueue, createCommandReceiver, createCommandRemote, startCommandWorker, } from "./commands";
47
+ export { startSyncTimer } from "./timer.js";
48
+ export { createSyncAlarm } from "./alarm.js";
49
+ export { DEFAULT_HOLD_MS, createCommandQueue, createCommandReceiver, createCommandRemote, startCommandWorker, } from "./commands.js";
@@ -9,7 +9,7 @@
9
9
  * stream every peer pages over.
10
10
  */
11
11
  import type { Database } from "bun:sqlite";
12
- import type { SyncOp } from "./types";
12
+ import type { SyncOp } from "./types.js";
13
13
  export interface OpLog {
14
14
  /** This instance's stable id (minted once, persisted in sync_meta). */
15
15
  instanceId(): string;
@@ -117,7 +117,7 @@ export interface SignalClientOptions {
117
117
  /** This instance's id, echoed as `x-sync-peer` so the far side can label us. */
118
118
  selfId: string;
119
119
  /**
120
- * The peer has news. Wire this to {@link import("./timer").SyncTimerHandle.syncNow}
120
+ * The peer has news. Wire this to {@link import("./timer.js").SyncTimerHandle.syncNow}
121
121
  * — the whole point is that a reconciliation now happens for a REASON.
122
122
  */
123
123
  onNews: (news: SyncNews) => void;
@@ -41,9 +41,9 @@
41
41
  * `syncNow()` / `markDirty()` rather than by a timer that was watching for it —
42
42
  * call `syncNow()` after a link and it is immediate.
43
43
  */
44
- import { type SyncLoopConfig } from "./planner";
45
- import type { SyncStatusReporter } from "./status";
46
- import type { SyncSummary } from "./types";
44
+ import { type SyncLoopConfig } from "./planner.js";
45
+ import type { SyncStatusReporter } from "./status.js";
46
+ import type { SyncSummary } from "./types.js";
47
47
  /**
48
48
  * 🔴 Every reason this loop is allowed to wake up. There is deliberately no
49
49
  * `"interval"` / `"poll"` member, and adding one is the change this whole file
@@ -41,7 +41,7 @@
41
41
  * `syncNow()` / `markDirty()` rather than by a timer that was watching for it —
42
42
  * call `syncNow()` after a link and it is immediate.
43
43
  */
44
- import { isUnreachable, DEFAULT_LOOP, planNextSync, } from "./planner";
44
+ import { isUnreachable, DEFAULT_LOOP, planNextSync, } from "./planner.js";
45
45
  /**
46
46
  * One reconciliation shortly after start: catch up on whatever happened while this
47
47
  * process was down. A single shot at boot, not a cadence — the same catch-up a push
@@ -1,4 +1,4 @@
1
- import type { EventBus } from './types';
1
+ import type { EventBus } from './types.js';
2
2
  /**
3
3
  * The push-only subset ru uses: broadcast-to-all, no auth, no inbound routing. ru
4
4
  * mounts one bus and pushes from its task queue / caSync / Forge workers
@@ -1,4 +1,4 @@
1
- import type { WsChannel, WsClient, WsHub, WsHubOpts } from './types';
1
+ import type { WsChannel, WsClient, WsHub, WsHubOpts } from './types.js';
2
2
  /**
3
3
  * The heartbeat sweep, factored out as a pure function so it's testable without faking
4
4
  * timers: ping every live client, close (don't delete — let the `close` handler fire
@@ -1,6 +1,6 @@
1
- import { ApiError, toErrorEnvelope } from '../errors';
2
- import { computePresence } from './presence';
3
- import { joinRoom, ROOM_META_KEY } from './room';
1
+ import { ApiError, toErrorEnvelope } from '../errors.js';
2
+ import { computePresence } from './presence.js';
3
+ import { joinRoom, ROOM_META_KEY } from './room.js';
4
4
  const DEFAULT_HEARTBEAT_MS = 30_000;
5
5
  const DEFAULT_STALE_MS = 120_000;
6
6
  /** Bun's `idleTimeout` ceiling (seconds). */
@@ -1,5 +1,5 @@
1
- export { createEventBus } from './eventBus';
2
- export { createWsHub } from './hub';
3
- export { computePresence } from './presence';
4
- export { joinRoom, leaveRoom, ROOM_META_KEY, roomOf } from './room';
5
- export type { EventBus, EventBusData, PresenceEntry, PresenceState, WsChannel, WsClient, WsData, WsHandshake, WsHub, WsHubOpts, WsMessage, } from './types';
1
+ export { createEventBus } from './eventBus.js';
2
+ export { createWsHub } from './hub.js';
3
+ export { computePresence } from './presence.js';
4
+ export { joinRoom, leaveRoom, ROOM_META_KEY, roomOf } from './room.js';
5
+ export type { EventBus, EventBusData, PresenceEntry, PresenceState, WsChannel, WsClient, WsData, WsHandshake, WsHub, WsHubOpts, WsMessage, } from './types.js';
@@ -1,7 +1,7 @@
1
1
  // cursedbelt-server WS hub — Bun-native upgrade, typed channel registry, heartbeat,
2
2
  // presence-as-a-view, and the push-only event-bus subset. Pairs with the partysocket
3
3
  // client in `cursedbelt/client`.
4
- export { createEventBus } from './eventBus';
5
- export { createWsHub } from './hub';
6
- export { computePresence } from './presence';
7
- export { joinRoom, leaveRoom, ROOM_META_KEY, roomOf } from './room';
4
+ export { createEventBus } from './eventBus.js';
5
+ export { createWsHub } from './hub.js';
6
+ export { computePresence } from './presence.js';
7
+ export { joinRoom, leaveRoom, ROOM_META_KEY, roomOf } from './room.js';
@@ -1,4 +1,4 @@
1
- import type { PresenceState, WsClient } from './types';
1
+ import type { PresenceState, WsClient } from './types.js';
2
2
  /**
3
3
  * Presence is a *view* over the live client map, not a tracked structure — there is no
4
4
  * `PresenceTracker` class to keep in sync. The hub's `getPresence(channel)` delegates
@@ -1,4 +1,4 @@
1
- import type { WsClient } from './types';
1
+ import type { WsClient } from './types.js';
2
2
  /**
3
3
  * Rooms are not a separate stateful abstraction — they are a typed convention over
4
4
  * {@link WsClient.meta}. A channel puts a client in a room with {@link joinRoom}; the
@@ -1,6 +1,6 @@
1
1
  import type { ServerWebSocket, WebSocketHandler } from 'bun';
2
2
  import type { MiddlewareHandler } from 'hono';
3
- import type { AuthUser } from '../auth/types';
3
+ import type { AuthUser } from '../auth/types.js';
4
4
  /**
5
5
  * Shared types for the cursedbelt WebSocket hub.
6
6
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cursedbelt-server",
3
- "version": "4.12.0",
3
+ "version": "4.13.0",
4
4
  "license": "ISC",
5
5
  "type": "module",
6
6
  "description": "The app-facing Bun/Hono server tier of the cursedbelt split \u2014 storage, sharing, activity, guard, sync. React-free; cursedbelt-core below it.",
@@ -34,7 +34,7 @@
34
34
  "types": "./dist/server/index.d.ts",
35
35
  "bun": "./src/server/index.ts",
36
36
  "source": "./src/server/index.ts",
37
- "import": "./dist/server/index.js"
37
+ "import": "./dist/server/_bunOnly.js"
38
38
  },
39
39
  "./activity": {
40
40
  "types": "./dist/server/activity/index.d.ts",
@@ -88,7 +88,7 @@
88
88
  "types": "./dist/server/d1/localBackup.d.ts",
89
89
  "bun": "./src/server/d1/localBackup.ts",
90
90
  "source": "./src/server/d1/localBackup.ts",
91
- "import": "./dist/server/d1/localBackup.js"
91
+ "import": "./dist/server/_bunOnly.js"
92
92
  },
93
93
  "./d1/kysely": {
94
94
  "types": "./dist/server/d1/kysely.d.ts",
@@ -118,13 +118,13 @@
118
118
  "types": "./dist/server/guard/index.d.ts",
119
119
  "bun": "./src/server/guard/index.ts",
120
120
  "source": "./src/server/guard/index.ts",
121
- "import": "./dist/server/guard/index.js"
121
+ "import": "./dist/server/_bunOnly.js"
122
122
  },
123
123
  "./guard/revocations": {
124
124
  "types": "./dist/server/guard/revocationStore.d.ts",
125
125
  "bun": "./src/server/guard/revocationStore.ts",
126
126
  "source": "./src/server/guard/revocationStore.ts",
127
- "import": "./dist/server/guard/revocationStore.js"
127
+ "import": "./dist/server/_bunOnly.js"
128
128
  },
129
129
  "./incidents": {
130
130
  "types": "./dist/server/incidents/index.d.ts",
@@ -160,7 +160,7 @@
160
160
  "types": "./dist/server/middleware/index.d.ts",
161
161
  "bun": "./src/server/middleware/index.ts",
162
162
  "source": "./src/server/middleware/index.ts",
163
- "import": "./dist/server/middleware/index.js"
163
+ "import": "./dist/server/_bunOnly.js"
164
164
  },
165
165
  "./migration": {
166
166
  "types": "./dist/server/migration/runner.d.ts",
@@ -208,7 +208,7 @@
208
208
  "types": "./dist/server/sqlite/index.d.ts",
209
209
  "bun": "./src/server/sqlite/index.ts",
210
210
  "source": "./src/server/sqlite/index.ts",
211
- "import": "./dist/server/sqlite/index.js"
211
+ "import": "./dist/server/_bunOnly.js"
212
212
  },
213
213
  "./storage": {
214
214
  "types": "./dist/server/storage/index.d.ts",
@@ -236,8 +236,8 @@
236
236
  }
237
237
  },
238
238
  "dependencies": {
239
- "cursedbelt-core": "^2.0.0",
240
- "cwip": "^4.1.0",
239
+ "cursedbelt-core": "^2.1.1",
240
+ "cwip": "^4.6.0",
241
241
  "jose": "^6.2.3"
242
242
  },
243
243
  "peerDependencies": {
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it } from 'bun:test';
2
- import { run } from '../scripts/publicSurface';
2
+ import { run } from '../scripts/publicSurface.js';
3
3
 
4
4
  /**
5
5
  * The public-surface ratchet, wired into `bun run verify` at its cheapest correct
@@ -0,0 +1,15 @@
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(
11
+ 'This cursedbelt-server entry requires the Bun runtime — it reaches `bun:sqlite` or the `Bun` global. ' +
12
+ 'Under Node or in a Worker, import a portable subpath instead (`cursedbelt-server/d1`, `/body-limit`, `/storage`, …).',
13
+ );
14
+
15
+ 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";
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
34
  export type {
35
35
  ActivityFacet,
36
36
  ActivityFacets,
@@ -39,7 +39,7 @@ export type {
39
39
  ActivityPage,
40
40
  ActivityQuery,
41
41
  ActivitySource,
42
- } from "./store";
42
+ } from "./store.js";
43
43
  // Re-exported so a server consumer needs ONE import for the whole contract; the
44
44
  // pure entry (`cursedbelt-core/activity`) stays available for a browser or a spec.
45
45
  export {
@@ -1,5 +1,5 @@
1
1
  import type { Database } from "bun:sqlite";
2
- import type { Migration } from "../migration/types";
2
+ import type { Migration } from "../migration/types.js";
3
3
 
4
4
  /** The one table this primitive owns. Exported so an app can declare a retention
5
5
  * target over it (see this module's `index.ts` for the recipe). */
@@ -25,8 +25,8 @@
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";
29
- import type { ActivitySource } from "./store";
28
+ import { SHARE_EVENTS_TABLE } from "../sharing/migrations.js";
29
+ import type { ActivitySource } from "./store.js";
30
30
 
31
31
  export interface ShareEventsSourceOptions {
32
32
  /** The satellite this log speaks for — the same value passed to
@@ -15,9 +15,9 @@
15
15
  import { Database } from "bun:sqlite";
16
16
  import { describe, expect, test } from "bun:test";
17
17
  import { activityFromShareEvent } from "cursedbelt-core/activity/model";
18
- import { createShareStore, user } from "../sharing/store";
19
- import { shareEventsSource } from "./shareSource";
20
- import { createActivityLog } from "./store";
18
+ import { createShareStore, user } from "../sharing/store.js";
19
+ import { shareEventsSource } from "./shareSource.js";
20
+ import { createActivityLog } from "./store.js";
21
21
 
22
22
  const open = (): Database => new Database(":memory:");
23
23
 
@@ -41,8 +41,8 @@ import {
41
41
  isActivityAction,
42
42
  isActivityOutcome,
43
43
  } from "cursedbelt-core/activity/model";
44
- import { runMigrations } from "../migration/runner";
45
- import { ACTIVITY_EVENTS_TABLE, ACTIVITY_MIGRATIONS } from "./migrations";
44
+ import { runMigrations } from "../migration/runner.js";
45
+ import { ACTIVITY_EVENTS_TABLE, ACTIVITY_MIGRATIONS } from "./migrations.js";
46
46
 
47
47
  /**
48
48
  * A read-only stream contributor: a SELECT projecting some other table into the
@@ -18,7 +18,7 @@ export {
18
18
  type InjectedScript,
19
19
  foreignScriptSources,
20
20
  scriptsRefusedByCsp,
21
- } from "./injectedScripts";
21
+ } from "./injectedScripts.js";
22
22
  export {
23
23
  WEB_ANALYTICS_BEACON_ORIGIN,
24
24
  WEB_ANALYTICS_BEACON_SRC,
@@ -29,4 +29,4 @@ export {
29
29
  htmlCarriesWebAnalytics,
30
30
  webAnalyticsBootstrap,
31
31
  webAnalyticsTag,
32
- } from "./webAnalytics";
32
+ } from "./webAnalytics.js";
@@ -1,7 +1,7 @@
1
1
  import { describe, expect, test } from "bun:test";
2
- import { foreignScriptSources, scriptsRefusedByCsp } from "./injectedScripts";
3
- import { MASTER_LOCK_CSP } from "../master-lock/guard";
4
- import { WEB_ANALYTICS_BEACON_ORIGIN, WEB_ANALYTICS_TAG } from "./webAnalytics";
2
+ import { foreignScriptSources, scriptsRefusedByCsp } from "./injectedScripts.js";
3
+ import { MASTER_LOCK_CSP } from "../master-lock/guard.js";
4
+ import { WEB_ANALYTICS_BEACON_ORIGIN, WEB_ANALYTICS_TAG } from "./webAnalytics.js";
5
5
 
6
6
  const PAGE = "https://collections.cursedalchemy.com/";
7
7
 
@@ -11,7 +11,7 @@ import {
11
11
  webAnalyticsBeaconConfig,
12
12
  webAnalyticsBootstrap,
13
13
  webAnalyticsTag,
14
- } from "./webAnalytics";
14
+ } from "./webAnalytics.js";
15
15
 
16
16
  /**
17
17
  * 🔴 The snippet, as Cloudflare's own `GET /accounts/<acct>/rum/site_info/list` returned it on
@@ -1,15 +1,15 @@
1
1
  import { Database } from 'bun:sqlite';
2
2
  import { afterEach, describe, expect, test } from 'bun:test';
3
3
  import { Hono } from 'hono';
4
- import { createApp, serveBun } from './app';
5
- import type { CursedbeltEnv } from './context';
6
- import { ApiError } from './errors';
7
- import { createMetricsBuffer } from './metrics/metricsBuffer';
8
- import { correlationId } from './middleware/correlationId';
9
- import { errorEnvelope } from './middleware/errorEnvelope';
10
- import { createRateLimiter } from './middleware/rateLimit';
11
- import { requestLogger } from './middleware/requestLogger';
12
- import { securityHeaders } from './middleware/securityHeaders';
4
+ import { createApp, serveBun } from './app.js';
5
+ import type { CursedbeltEnv } from './context.js';
6
+ import { ApiError } from './errors.js';
7
+ import { createMetricsBuffer } from './metrics/metricsBuffer.js';
8
+ import { correlationId } from './middleware/correlationId.js';
9
+ import { errorEnvelope } from './middleware/errorEnvelope.js';
10
+ import { createRateLimiter } from './middleware/rateLimit.js';
11
+ import { requestLogger } from './middleware/requestLogger.js';
12
+ import { securityHeaders } from './middleware/securityHeaders.js';
13
13
 
14
14
  const REQ = (path: string, init?: RequestInit) => new Request(`http://localhost${path}`, init);
15
15
 
package/src/server/app.ts CHANGED
@@ -1,13 +1,13 @@
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 { correlationId } from './middleware/correlationId';
6
- import { type CorsOpts, corsAllowlist } from './middleware/corsAllowlist';
7
- import { errorEnvelope } from './middleware/errorEnvelope';
8
- import { createRateLimiter, type RateLimitOpts } from './middleware/rateLimit';
9
- import { requestLogger } from './middleware/requestLogger';
10
- import { type SecurityHeadersOpts, securityHeaders } from './middleware/securityHeaders';
4
+ import type { CursedbeltEnv } from './context.js';
5
+ import { correlationId } from './middleware/correlationId.js';
6
+ import { type CorsOpts, corsAllowlist } from './middleware/corsAllowlist.js';
7
+ import { errorEnvelope } from './middleware/errorEnvelope.js';
8
+ import { createRateLimiter, type RateLimitOpts } from './middleware/rateLimit.js';
9
+ import { requestLogger } from './middleware/requestLogger.js';
10
+ import { type SecurityHeadersOpts, securityHeaders } from './middleware/securityHeaders.js';
11
11
 
12
12
  export interface CreateAppOpts {
13
13
  /** When provided, the request logger writes metrics/events to this DB. */
@@ -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,5 +1,5 @@
1
1
  import type { Database } from 'bun:sqlite';
2
- import type { Migration } from '../migration/types';
2
+ import type { Migration } from '../migration/types.js';
3
3
 
4
4
  // ONE shared append-only table backs every namespace's audit trail — not a
5
5
  // shadow table per business table. cursedshell's `defineService` mutations
@@ -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
 
5
5
  let db: Database;
6
6
 
@@ -1,7 +1,7 @@
1
1
  import type { Database } from 'bun:sqlite';
2
2
  import type { AuditEntryInput, AuditOperation, AuditRecord } from 'cwip/audit';
3
- import { runMigrations } from '../migration/runner';
4
- import { AUDIT_LOG_MIGRATIONS } from './migrations';
3
+ import { runMigrations } from '../migration/runner.js';
4
+ import { AUDIT_LOG_MIGRATIONS } from './migrations.js';
5
5
 
6
6
  interface AuditLogRow {
7
7
  namespace: string;
@@ -1,6 +1,6 @@
1
1
  import { describe, expect, test } from 'bun:test';
2
2
  import { Hono } from 'hono';
3
- import { AUTH_COOKIE_NAME, clearAuthCookie, readAuthCookie, writeAuthCookie } from './cookie';
3
+ import { AUTH_COOKIE_NAME, clearAuthCookie, readAuthCookie, writeAuthCookie } from './cookie.js';
4
4
 
5
5
  const REQ = (path: string, init?: RequestInit) => new Request(`http://localhost${path}`, init);
6
6