cursedbelt-server 4.11.1 → 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 (471) 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.d.ts +26 -49
  99. package/dist/server/master-lock/masterLock.js +48 -15
  100. package/dist/server/master-lock/principals.d.ts +1 -1
  101. package/dist/server/master-lock/principals.js +1 -1
  102. package/dist/server/master-lock/seed.d.ts +1 -1
  103. package/dist/server/master-lock/seed.js +1 -1
  104. package/dist/server/master-lock/store.d.ts +6 -1
  105. package/dist/server/master-lock/store.js +5 -0
  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/ws/eventBus.d.ts +1 -1
  207. package/dist/server/ws/hub.d.ts +1 -1
  208. package/dist/server/ws/hub.js +3 -3
  209. package/dist/server/ws/index.d.ts +5 -5
  210. package/dist/server/ws/index.js +4 -4
  211. package/dist/server/ws/presence.d.ts +1 -1
  212. package/dist/server/ws/room.d.ts +1 -1
  213. package/dist/server/ws/types.d.ts +1 -1
  214. package/package.json +9 -9
  215. package/src/publicSurface.spec.ts +1 -1
  216. package/src/server/_bunOnly.ts +15 -0
  217. package/src/server/activity/index.ts +4 -4
  218. package/src/server/activity/migrations.ts +1 -1
  219. package/src/server/activity/shareSource.ts +2 -2
  220. package/src/server/activity/store.spec.ts +3 -3
  221. package/src/server/activity/store.ts +2 -2
  222. package/src/server/analytics/index.ts +2 -2
  223. package/src/server/analytics/injectedScripts.spec.ts +3 -3
  224. package/src/server/analytics/webAnalytics.spec.ts +1 -1
  225. package/src/server/app.spec.ts +9 -9
  226. package/src/server/app.ts +7 -7
  227. package/src/server/audit/index.ts +2 -2
  228. package/src/server/audit/migrations.ts +1 -1
  229. package/src/server/audit/sqliteSink.test.ts +1 -1
  230. package/src/server/audit/sqliteSink.ts +2 -2
  231. package/src/server/auth/cookie.spec.ts +1 -1
  232. package/src/server/auth/csrf.spec.ts +1 -1
  233. package/src/server/auth/csrf.ts +1 -1
  234. package/src/server/auth/fileTokenSigner.ts +1 -1
  235. package/src/server/auth/getOnly.spec.ts +2 -2
  236. package/src/server/auth/getOnly.ts +2 -2
  237. package/src/server/auth/index.ts +12 -12
  238. package/src/server/auth/jwt.spec.ts +2 -2
  239. package/src/server/auth/jwt.ts +1 -1
  240. package/src/server/auth/loginThrottle.spec.ts +1 -1
  241. package/src/server/auth/middleware.spec.ts +7 -7
  242. package/src/server/auth/middleware.ts +4 -4
  243. package/src/server/auth/password.spec.ts +1 -1
  244. package/src/server/auth/sessionStore.spec.ts +3 -3
  245. package/src/server/auth/sessionStore.ts +3 -3
  246. package/src/server/auth/totp.spec.ts +1 -1
  247. package/src/server/auth/types.ts +1 -1
  248. package/src/server/auth/vault.spec.ts +1 -1
  249. package/src/server/bench/assert.ts +2 -2
  250. package/src/server/bench/budget.spec.ts +2 -2
  251. package/src/server/bench/cpuBudget.spec.ts +6 -6
  252. package/src/server/bench/cpuBudget.ts +5 -5
  253. package/src/server/bench/cpuClock.spec.ts +2 -2
  254. package/src/server/bench/index.ts +6 -6
  255. package/src/server/bench/recorder.ts +2 -2
  256. package/src/server/bench/runBench.ts +2 -2
  257. package/src/server/ctgr.spec.ts +2 -2
  258. package/src/server/ctgr.ts +2 -2
  259. package/src/server/d1/backup.spec.ts +2 -2
  260. package/src/server/d1/fakeD1.ts +2 -2
  261. package/src/server/d1/index.ts +8 -8
  262. package/src/server/d1/invocation.spec.ts +6 -6
  263. package/src/server/d1/invocation.ts +2 -2
  264. package/src/server/d1/kysely.spec.ts +5 -5
  265. package/src/server/d1/kysely.ts +3 -3
  266. package/src/server/d1/limits.spec.ts +3 -3
  267. package/src/server/d1/limits.ts +1 -1
  268. package/src/server/d1/local.ts +3 -3
  269. package/src/server/d1/localBackup.ts +3 -3
  270. package/src/server/d1/remote.ts +3 -3
  271. package/src/server/d1/sameShape.spec.ts +4 -4
  272. package/src/server/d1/scheduling.spec.ts +1 -1
  273. package/src/server/d1/scheduling.ts +1 -1
  274. package/src/server/d1/values.ts +1 -1
  275. package/src/server/db/kysely.spec.ts +1 -1
  276. package/src/server/db/kysely.ts +1 -1
  277. package/src/server/dropzone/index.ts +2 -2
  278. package/src/server/dropzone/scan.spec.ts +1 -1
  279. package/src/server/errors.spec.ts +1 -1
  280. package/src/server/guard/argon2Binding.spec.ts +1 -1
  281. package/src/server/guard/argon2Binding.ts +1 -1
  282. package/src/server/guard/argon2Kat.spec.ts +1 -1
  283. package/src/server/guard/guard.spec.ts +3 -3
  284. package/src/server/guard/index.ts +5 -5
  285. package/src/server/guard/kdfWorker.spec.ts +3 -3
  286. package/src/server/guard/kdfWorker.ts +3 -3
  287. package/src/server/guard/kdfWorkerEntry.ts +1 -1
  288. package/src/server/guard/passwordVerifier.spec.ts +1 -1
  289. package/src/server/guard/passwordVerifier.ts +1 -1
  290. package/src/server/guard/revocationStore.spec.ts +2 -2
  291. package/src/server/guard/sessionSigner.ts +3 -3
  292. package/src/server/incidents/checks.ts +2 -2
  293. package/src/server/incidents/incidents.spec.ts +7 -7
  294. package/src/server/incidents/index.ts +8 -8
  295. package/src/server/incidents/migrations.ts +1 -1
  296. package/src/server/incidents/notifier.ts +3 -3
  297. package/src/server/incidents/reporter.ts +1 -1
  298. package/src/server/incidents/routes.ts +5 -5
  299. package/src/server/incidents/store.ts +3 -3
  300. package/src/server/index.ts +26 -26
  301. package/src/server/jobs/fireQueue.spec.ts +1 -1
  302. package/src/server/jobs/fireQueue.ts +3 -3
  303. package/src/server/jobs/index.ts +7 -7
  304. package/src/server/jobs/logger.ts +1 -1
  305. package/src/server/jobs/plainjobAdapter.spec.ts +1 -1
  306. package/src/server/jobs/polling.spec.ts +1 -1
  307. package/src/server/jobs/polling.ts +2 -2
  308. package/src/server/jobs/runner.spec.ts +3 -3
  309. package/src/server/jobs/runner.ts +5 -5
  310. package/src/server/jobs/timeout.spec.ts +1 -1
  311. package/src/server/master-lock/accounts.spec.ts +2 -2
  312. package/src/server/master-lock/accountsPage.spec.ts +4 -4
  313. package/src/server/master-lock/accountsPage.ts +1 -1
  314. package/src/server/master-lock/beaconNeverReachesTheWall.spec.ts +4 -4
  315. package/src/server/master-lock/guard.spec.ts +3 -3
  316. package/src/server/master-lock/guard.ts +3 -3
  317. package/src/server/master-lock/index.ts +8 -7
  318. package/src/server/master-lock/lockPage.spec.ts +2 -2
  319. package/src/server/master-lock/masterLock.spec.ts +59 -2
  320. package/src/server/master-lock/masterLock.ts +76 -14
  321. package/src/server/master-lock/principals.spec.ts +4 -4
  322. package/src/server/master-lock/principals.ts +1 -1
  323. package/src/server/master-lock/seed.spec.ts +3 -3
  324. package/src/server/master-lock/seed.ts +1 -1
  325. package/src/server/master-lock/store.ts +7 -1
  326. package/src/server/media-bun/image.spec.ts +1 -1
  327. package/src/server/media-bun/index.ts +3 -3
  328. package/src/server/media-bun/streaming.spec.ts +1 -1
  329. package/src/server/media-bun/video.spec.ts +1 -1
  330. package/src/server/media-bun/video.ts +1 -1
  331. package/src/server/metrics/normalizeRoute.spec.ts +1 -1
  332. package/src/server/metrics/telemetrySink.spec.ts +3 -3
  333. package/src/server/metrics/telemetrySink.ts +1 -1
  334. package/src/server/middleware/bodyLimit.spec.ts +1 -1
  335. package/src/server/middleware/correlationId.ts +1 -1
  336. package/src/server/middleware/corsAllowlist.spec.ts +2 -2
  337. package/src/server/middleware/errorEnvelope.ts +2 -2
  338. package/src/server/middleware/index.ts +10 -10
  339. package/src/server/middleware/localOrigin.spec.ts +1 -1
  340. package/src/server/middleware/rateLimit.spec.ts +1 -1
  341. package/src/server/middleware/rateLimit.ts +1 -1
  342. package/src/server/middleware/requestLogger.ts +5 -5
  343. package/src/server/middleware/zValidator.spec.ts +4 -4
  344. package/src/server/middleware/zValidator.ts +2 -2
  345. package/src/server/migration/runner.spec.ts +2 -2
  346. package/src/server/migration/runner.ts +1 -1
  347. package/src/server/net/outboundGuard.spec.ts +1 -1
  348. package/src/server/net/outboundGuard.ts +1 -1
  349. package/src/server/notifications/index.ts +7 -7
  350. package/src/server/notifications/migrations.ts +1 -1
  351. package/src/server/notifications/routes.ts +1 -1
  352. package/src/server/notifications/service.spec.ts +3 -3
  353. package/src/server/notifications/service.ts +2 -2
  354. package/src/server/paths/appDataHome.spec.ts +1 -1
  355. package/src/server/resume/index.ts +2 -2
  356. package/src/server/resume/resume.spec.ts +2 -2
  357. package/src/server/resume/routes.ts +1 -1
  358. package/src/server/retention/archive.spec.ts +2 -2
  359. package/src/server/retention/archive.ts +1 -1
  360. package/src/server/retention/fleet.ts +4 -4
  361. package/src/server/retention/index.ts +6 -6
  362. package/src/server/retention/policy.spec.ts +1 -1
  363. package/src/server/retention/store.spec.ts +3 -3
  364. package/src/server/retention/store.ts +3 -3
  365. package/src/server/retention/sweeper.spec.ts +5 -5
  366. package/src/server/retention/sweeper.ts +5 -5
  367. package/src/server/retention/target.spec.ts +3 -3
  368. package/src/server/retention/target.ts +5 -5
  369. package/src/server/search/index.ts +2 -2
  370. package/src/server/search/pgSearchProvider.pg.test.ts +2 -2
  371. package/src/server/search/pgSearchProvider.ts +2 -2
  372. package/src/server/sharing/index.ts +8 -8
  373. package/src/server/sharing/migrations.ts +1 -1
  374. package/src/server/sharing/router.spec.ts +2 -2
  375. package/src/server/sharing/router.ts +1 -1
  376. package/src/server/sharing/sql.ts +1 -1
  377. package/src/server/sharing/store.spec.ts +2 -2
  378. package/src/server/sharing/store.ts +3 -3
  379. package/src/server/sqlite/backup.spec.ts +1 -1
  380. package/src/server/sqlite/browse.spec.ts +1 -1
  381. package/src/server/sqlite/browse.ts +1 -1
  382. package/src/server/sqlite/export.spec.ts +2 -2
  383. package/src/server/sqlite/export.ts +1 -1
  384. package/src/server/sqlite/fts5.spec.ts +1 -1
  385. package/src/server/sqlite/health.spec.ts +1 -1
  386. package/src/server/sqlite/import.spec.ts +3 -3
  387. package/src/server/sqlite/import.ts +1 -1
  388. package/src/server/sqlite/index.ts +9 -9
  389. package/src/server/sqlite/readonlySql.spec.ts +1 -1
  390. package/src/server/sqlite/stats.spec.ts +1 -1
  391. package/src/server/sqlite/stats.ts +1 -1
  392. package/src/server/sqlite/viewer.spec.ts +1 -1
  393. package/src/server/sqlite/viewer.ts +2 -2
  394. package/src/server/storage/binaryServerProcessing.integration.spec.ts +2 -2
  395. package/src/server/storage/binaryServerProcessing.spec.ts +2 -2
  396. package/src/server/storage/binaryServerProcessing.ts +3 -3
  397. package/src/server/storage/binaryServerStore.ts +3 -3
  398. package/src/server/storage/binaryStore.spec.ts +2 -2
  399. package/src/server/storage/binaryStore.ts +1 -1
  400. package/src/server/storage/binaryStoreFake.ts +1 -1
  401. package/src/server/storage/chunked.integration.spec.ts +4 -4
  402. package/src/server/storage/diskStore.ts +1 -1
  403. package/src/server/storage/fileUploadClient-chunked.integration.spec.ts +6 -6
  404. package/src/server/storage/fileUploadClient.integration.spec.ts +7 -7
  405. package/src/server/storage/files/adapter.photo.display.spec.ts +10 -10
  406. package/src/server/storage/files/adapter.photo.spec.ts +9 -9
  407. package/src/server/storage/files/adapter.spec.ts +8 -8
  408. package/src/server/storage/files/adapter.ts +5 -5
  409. package/src/server/storage/files/catalogue.media-host.spec.ts +6 -6
  410. package/src/server/storage/files/catalogue.orderings.spec.ts +6 -6
  411. package/src/server/storage/files/catalogue.recover.spec.ts +5 -5
  412. package/src/server/storage/files/catalogue.sort.spec.ts +6 -6
  413. package/src/server/storage/files/catalogue.spec.ts +7 -7
  414. package/src/server/storage/files/catalogue.trash-import.spec.ts +6 -6
  415. package/src/server/storage/files/catalogue.ts +6 -6
  416. package/src/server/storage/files/chunkedUpload.spec.ts +7 -7
  417. package/src/server/storage/files/chunkedUpload.ts +4 -4
  418. package/src/server/storage/files/collections.spec.ts +6 -6
  419. package/src/server/storage/files/fileRoutes.replace.spec.ts +8 -8
  420. package/src/server/storage/files/fileRoutes.spec.ts +8 -8
  421. package/src/server/storage/files/fileRoutes.ts +6 -6
  422. package/src/server/storage/files/index.ts +9 -9
  423. package/src/server/storage/files/migrations.ts +1 -1
  424. package/src/server/storage/files/stack.spec.ts +5 -5
  425. package/src/server/storage/files/stack.ts +12 -12
  426. package/src/server/storage/files/storageOps.spec.ts +4 -4
  427. package/src/server/storage/files/storageOps.ts +1 -1
  428. package/src/server/storage/files/types.ts +1 -1
  429. package/src/server/storage/imageThumbnail.spec.ts +2 -2
  430. package/src/server/storage/imageThumbnail.ts +1 -1
  431. package/src/server/storage/index.ts +15 -15
  432. package/src/server/storage/mountMediaRoutes.ts +4 -4
  433. package/src/server/storage/objectStore.spec.ts +1 -1
  434. package/src/server/storage/objectStoreMediaStore.ts +1 -1
  435. package/src/server/storage/s3ObjectStore.ts +1 -1
  436. package/src/server/storage/sources.ts +3 -3
  437. package/src/server/storage/storage.spec.ts +6 -6
  438. package/src/server/storage/streamRange.ts +1 -1
  439. package/src/server/storage/streamToken.ts +1 -1
  440. package/src/server/storage/transcodeJobs.spec.ts +1 -1
  441. package/src/server/storage/videoDerivativeKeys.spec.ts +1 -1
  442. package/src/server/storage/videoProcessor.posterOnly.spec.ts +4 -4
  443. package/src/server/storage/videoProcessor.ts +2 -2
  444. package/src/server/sync/alarm.spec.ts +1 -1
  445. package/src/server/sync/commands.spec.ts +1 -1
  446. package/src/server/sync/engine.spec.ts +4 -4
  447. package/src/server/sync/engine.ts +2 -2
  448. package/src/server/sync/http.ts +5 -5
  449. package/src/server/sync/httpRemote.spec.ts +1 -1
  450. package/src/server/sync/index.ts +11 -11
  451. package/src/server/sync/opLog.spec.ts +1 -1
  452. package/src/server/sync/opLog.ts +1 -1
  453. package/src/server/sync/planner.spec.ts +1 -1
  454. package/src/server/sync/signal.spec.ts +1 -1
  455. package/src/server/sync/signal.ts +1 -1
  456. package/src/server/sync/status.spec.ts +1 -1
  457. package/src/server/sync/timer.spec.ts +3 -3
  458. package/src/server/sync/timer.ts +3 -3
  459. package/src/server/sync/tokens.spec.ts +1 -1
  460. package/src/server/ws/eventBus.spec.ts +2 -2
  461. package/src/server/ws/eventBus.ts +1 -1
  462. package/src/server/ws/hub.integration.spec.ts +5 -5
  463. package/src/server/ws/hub.spec.ts +3 -3
  464. package/src/server/ws/hub.ts +4 -4
  465. package/src/server/ws/index.ts +5 -5
  466. package/src/server/ws/presence.spec.ts +3 -3
  467. package/src/server/ws/presence.ts +1 -1
  468. package/src/server/ws/room.spec.ts +2 -2
  469. package/src/server/ws/room.ts +1 -1
  470. package/src/server/ws/types.ts +1 -1
  471. package/src/testTmpRoot.spec.ts +1 -1
@@ -1,9 +1,9 @@
1
- export { createCatalogueMediaSource, createCataloguePhotoSource, createCatalogueVideoSource, createFileToPlayable, } from './adapter';
2
- export { catalogueUploadKey, createSqliteFileCatalogue, fileBinaryKey, type ImageDerivatives, type ImageDerivativesOptions, type SqliteFileCatalogueOptions, type VideoProcessor, } from './catalogue';
3
- export type { CatalogueStats } from './types';
4
- export { type ChunkedInit, type ChunkedUploadService, createChunkedUploadService, type MintChunkUpload, } from './chunkedUpload';
5
- export { createFileUrls, type FileUrls, type MountFileRoutesOptions, mountFileRoutes, SINGLE_UPLOAD_TOO_LARGE, } from './fileRoutes';
6
- export { FILE_CATALOGUE_MIGRATIONS } from './migrations';
7
- export { createFilesStack, type FilesStack, type FilesStackMountAuth, type FilesStackOptions, } from './stack';
8
- export { createLedgeredDeletes, createStorageOpsLedger, createStorageReconciler, type StorageAction, type StorageOpRow, type StorageOpsLedger, type StorageReconciler, } from './storageOps';
9
- export { type CollectionKind, type CollectionVisibility, classifyFileType, FILE_SORTS, type FileCatalogue, type FileCollection, type FilePage, type FileRecord, type FileSort, type FileToPlayable, type FileType, type ListFilesOptions, type TagFacet, } from './types';
1
+ export { createCatalogueMediaSource, createCataloguePhotoSource, createCatalogueVideoSource, createFileToPlayable, } from './adapter.js';
2
+ export { catalogueUploadKey, createSqliteFileCatalogue, fileBinaryKey, type ImageDerivatives, type ImageDerivativesOptions, type SqliteFileCatalogueOptions, type VideoProcessor, } from './catalogue.js';
3
+ export type { CatalogueStats } from './types.js';
4
+ export { type ChunkedInit, type ChunkedUploadService, createChunkedUploadService, type MintChunkUpload, } from './chunkedUpload.js';
5
+ export { createFileUrls, type FileUrls, type MountFileRoutesOptions, mountFileRoutes, SINGLE_UPLOAD_TOO_LARGE, } from './fileRoutes.js';
6
+ export { FILE_CATALOGUE_MIGRATIONS } from './migrations.js';
7
+ export { createFilesStack, type FilesStack, type FilesStackMountAuth, type FilesStackOptions, } from './stack.js';
8
+ export { createLedgeredDeletes, createStorageOpsLedger, createStorageReconciler, type StorageAction, type StorageOpRow, type StorageOpsLedger, type StorageReconciler, } from './storageOps.js';
9
+ export { type CollectionKind, type CollectionVisibility, classifyFileType, FILE_SORTS, type FileCatalogue, type FileCollection, type FilePage, type FileRecord, type FileSort, type FileToPlayable, type FileType, type ListFilesOptions, type TagFacet, } from './types.js';
@@ -1,11 +1,11 @@
1
1
  // cursedbelt-server/storage FileCatalogue — a SQLite-backed tagged flat file system over the
2
2
  // MediaStore + media pipeline. One source of truth for a user's binaries; the
3
3
  // video gallery is a video-filtered view over it.
4
- export { createCatalogueMediaSource, createCataloguePhotoSource, createCatalogueVideoSource, createFileToPlayable, } from './adapter';
5
- export { catalogueUploadKey, createSqliteFileCatalogue, fileBinaryKey, } from './catalogue';
6
- export { createChunkedUploadService, } from './chunkedUpload';
7
- export { createFileUrls, mountFileRoutes, SINGLE_UPLOAD_TOO_LARGE, } from './fileRoutes';
8
- export { FILE_CATALOGUE_MIGRATIONS } from './migrations';
9
- export { createFilesStack, } from './stack';
10
- export { createLedgeredDeletes, createStorageOpsLedger, createStorageReconciler, } from './storageOps';
11
- export { classifyFileType, FILE_SORTS, } from './types';
4
+ export { createCatalogueMediaSource, createCataloguePhotoSource, createCatalogueVideoSource, createFileToPlayable, } from './adapter.js';
5
+ export { catalogueUploadKey, createSqliteFileCatalogue, fileBinaryKey, } from './catalogue.js';
6
+ export { createChunkedUploadService, } from './chunkedUpload.js';
7
+ export { createFileUrls, mountFileRoutes, SINGLE_UPLOAD_TOO_LARGE, } from './fileRoutes.js';
8
+ export { FILE_CATALOGUE_MIGRATIONS } from './migrations.js';
9
+ export { createFilesStack, } from './stack.js';
10
+ export { createLedgeredDeletes, createStorageOpsLedger, createStorageReconciler, } from './storageOps.js';
11
+ export { classifyFileType, FILE_SORTS, } from './types.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 FILE_CATALOGUE_MIGRATIONS: readonly Migration[];
@@ -1,12 +1,12 @@
1
1
  import type { Database } from 'bun:sqlite';
2
2
  import type { Context, Hono } from 'hono';
3
- import { type MediaUrls, SourceRegistry } from '../sources';
4
- import { type StreamTokenService } from '../streamToken';
5
- import type { MediaCtx, MediaGallerySource, MediaSource, MediaStore, PhotoSource } from '../types';
6
- import { type SqliteFileCatalogueOptions } from './catalogue';
7
- import { type ChunkedUploadService, type MintChunkUpload } from './chunkedUpload';
8
- import { type FileUrls } from './fileRoutes';
9
- import type { FileCatalogue } from './types';
3
+ import { type MediaUrls, SourceRegistry } from '../sources.js';
4
+ import { type StreamTokenService } from '../streamToken.js';
5
+ import type { MediaCtx, MediaGallerySource, MediaSource, MediaStore, PhotoSource } from '../types.js';
6
+ import { type SqliteFileCatalogueOptions } from './catalogue.js';
7
+ import { type ChunkedUploadService, type MintChunkUpload } from './chunkedUpload.js';
8
+ import { type FileUrls } from './fileRoutes.js';
9
+ import type { FileCatalogue } from './types.js';
10
10
  export interface FilesStackOptions {
11
11
  /** The catalogue database. The stack runs FILE_CATALOGUE_MIGRATIONS on it itself. */
12
12
  db: Database;
@@ -1,13 +1,13 @@
1
- import { runMigrations } from '../../migration/runner';
2
- import { mountMediaRoutes } from '../mountMediaRoutes';
3
- import { createMediaUrls, SourceRegistry } from '../sources';
4
- import { createStreamTokenService } from '../streamToken';
5
- import { createCatalogueMediaSource, createCataloguePhotoSource, createCatalogueVideoSource, } from './adapter';
6
- import { createSqliteFileCatalogue } from './catalogue';
7
- import { createChunkedUploadService, } from './chunkedUpload';
8
- import { createFileUrls, mountFileRoutes } from './fileRoutes';
9
- import { FILE_CATALOGUE_MIGRATIONS } from './migrations';
10
- import { createStorageOpsLedger } from './storageOps';
1
+ import { runMigrations } from '../../migration/runner.js';
2
+ import { mountMediaRoutes } from '../mountMediaRoutes.js';
3
+ import { createMediaUrls, SourceRegistry } from '../sources.js';
4
+ import { createStreamTokenService } from '../streamToken.js';
5
+ import { createCatalogueMediaSource, createCataloguePhotoSource, createCatalogueVideoSource, } from './adapter.js';
6
+ import { createSqliteFileCatalogue } from './catalogue.js';
7
+ import { createChunkedUploadService, } from './chunkedUpload.js';
8
+ import { createFileUrls, mountFileRoutes } from './fileRoutes.js';
9
+ import { FILE_CATALOGUE_MIGRATIONS } from './migrations.js';
10
+ import { createStorageOpsLedger } from './storageOps.js';
11
11
  /** Assemble the whole files/media server stack from one options bag. See {@link FilesStack}. */
12
12
  export function createFilesStack(opts) {
13
13
  const owner = opts.owner ?? ((c) => c.userId);
@@ -1,5 +1,5 @@
1
1
  import type { Database } from 'bun:sqlite';
2
- import type { MediaStore } from '../types';
2
+ import type { MediaStore } from '../types.js';
3
3
  export type StorageAction = 'upload' | 'delete' | 'delete_prefix';
4
4
  export type StorageOpStatus = 'pending' | 'done' | 'failed';
5
5
  export type StorageOpRow = {
@@ -1,5 +1,5 @@
1
1
  import type { PlayableVideo, ProcessingStatus } from 'cursedbelt-core/media';
2
- import type { MediaCtx } from '../types';
2
+ import type { MediaCtx } from '../types.js';
3
3
  export type FileType = 'image' | 'video' | 'audio' | 'doc' | 'code' | 'other';
4
4
  /** User-defined groupings (Apple-Photos-style). `favorites` is a system singleton per owner;
5
5
  * `custom` are free-form. */
@@ -1,6 +1,6 @@
1
1
  import { mkdir, rm } from 'node:fs/promises';
2
2
  import path from 'node:path';
3
- import { imageThumbnailArgs, runFfmpegProgress } from '../media-bun';
3
+ import { imageThumbnailArgs, runFfmpegProgress } from '../media-bun/index.js';
4
4
  // Image mimes browsers CANNOT render inline (so the full-view <img> needs a JPEG derivative, not
5
5
  // the original). Chrome/Firefox reject HEIC/HEIF; the rest (jpeg/png/webp/gif/avif/bmp/svg) render
6
6
  // natively. Safari can show HEIC, but we normalize for everyone.
@@ -1,15 +1,15 @@
1
- export { DERIVATIVE_SUFFIXES, hlsMasterKeyFor, hlsPrefixFor, isDerivativeKey, posterKeyFor, spriteKeyFor, spriteVttKeyFor, webPlayableKeyFor, } from './videoDerivativeKeys';
2
- export type { BinaryServerConfig, FileTokenClaims, FileTokenSigner } from './binaryServerStore';
3
- export { createBinaryServerStore } from './binaryServerStore';
4
- export { type BinaryServerProcessingConfig, createBinaryServerProcessing, } from './binaryServerProcessing';
5
- export { createTranscodeJobClient, type TranscodeJobClient, type TranscodeJobClientConfig, type TranscodeJobResult, type TranscodeJobStatus, type TranscodeJobStatusBody, } from './transcodeJobs';
6
- export { createDiskStore } from './diskStore';
7
- export { type CatalogueStats, type ChunkedInit, type ChunkedUploadService, catalogueUploadKey, classifyFileType, createCatalogueMediaSource, createCataloguePhotoSource, createCatalogueVideoSource, createChunkedUploadService, createFilesStack, createFileToPlayable, createFileUrls, createLedgeredDeletes, createSqliteFileCatalogue, createStorageOpsLedger, createStorageReconciler, FILE_CATALOGUE_MIGRATIONS, type FileCatalogue, type FilePage, type FileRecord, type FilesStack, type FilesStackMountAuth, type FilesStackOptions, type FileToPlayable, type FileType, type FileUrls, fileBinaryKey, type ImageDerivatives, type ImageDerivativesOptions, type ListFilesOptions, type MintChunkUpload, type MountFileRoutesOptions, mountFileRoutes, type SqliteFileCatalogueOptions, type StorageAction, type StorageOpRow, type StorageOpsLedger, type StorageReconciler, type VideoProcessor, } from './files';
8
- export { type CorsResolver, type MountMediaOptions, mountMediaRoutes } from './mountMediaRoutes';
9
- export { createDiskSource, createMediaUrls, type DiskSource, type MediaUrls, SourceRegistry, } from './sources';
10
- export { createS3ObjectStore, type S3ClientLike, type S3ObjectHandle, type S3ObjectStoreOptions, type S3ObjectWriter, } from './s3ObjectStore';
11
- export { decodeRange, type RangeDecision, type ServeRangeOpts, serveRange } from './streamRange';
12
- export { createStreamTokenService, type StreamGrant, type StreamTokenService } from './streamToken';
13
- export { fsHlsFileKey, fsHlsMasterKey, fsHlsPrefix, fsMp4Key, fsPosterKey, fsSourceKey, fsSpriteKey, fsVttKey, type MediaCtx, type MediaGallerySource, type MediaSource, type MediaStore, type PhotoSource, } from './types';
14
- export { type ProcessOptions, type ProcessResult, processVideo, } from './videoProcessor';
15
- export { objectStoreAsMediaStore } from './objectStoreMediaStore';
1
+ export { DERIVATIVE_SUFFIXES, hlsMasterKeyFor, hlsPrefixFor, isDerivativeKey, posterKeyFor, spriteKeyFor, spriteVttKeyFor, webPlayableKeyFor, } from './videoDerivativeKeys.js';
2
+ export type { BinaryServerConfig, FileTokenClaims, FileTokenSigner } from './binaryServerStore.js';
3
+ export { createBinaryServerStore } from './binaryServerStore.js';
4
+ export { type BinaryServerProcessingConfig, createBinaryServerProcessing, } from './binaryServerProcessing.js';
5
+ export { createTranscodeJobClient, type TranscodeJobClient, type TranscodeJobClientConfig, type TranscodeJobResult, type TranscodeJobStatus, type TranscodeJobStatusBody, } from './transcodeJobs.js';
6
+ export { createDiskStore } from './diskStore.js';
7
+ export { type CatalogueStats, type ChunkedInit, type ChunkedUploadService, catalogueUploadKey, classifyFileType, createCatalogueMediaSource, createCataloguePhotoSource, createCatalogueVideoSource, createChunkedUploadService, createFilesStack, createFileToPlayable, createFileUrls, createLedgeredDeletes, createSqliteFileCatalogue, createStorageOpsLedger, createStorageReconciler, FILE_CATALOGUE_MIGRATIONS, type FileCatalogue, type FilePage, type FileRecord, type FilesStack, type FilesStackMountAuth, type FilesStackOptions, type FileToPlayable, type FileType, type FileUrls, fileBinaryKey, type ImageDerivatives, type ImageDerivativesOptions, type ListFilesOptions, type MintChunkUpload, type MountFileRoutesOptions, mountFileRoutes, type SqliteFileCatalogueOptions, type StorageAction, type StorageOpRow, type StorageOpsLedger, type StorageReconciler, type VideoProcessor, } from './files/index.js';
8
+ export { type CorsResolver, type MountMediaOptions, mountMediaRoutes } from './mountMediaRoutes.js';
9
+ export { createDiskSource, createMediaUrls, type DiskSource, type MediaUrls, SourceRegistry, } from './sources.js';
10
+ export { createS3ObjectStore, type S3ClientLike, type S3ObjectHandle, type S3ObjectStoreOptions, type S3ObjectWriter, } from './s3ObjectStore.js';
11
+ export { decodeRange, type RangeDecision, type ServeRangeOpts, serveRange } from './streamRange.js';
12
+ export { createStreamTokenService, type StreamGrant, type StreamTokenService } from './streamToken.js';
13
+ export { fsHlsFileKey, fsHlsMasterKey, fsHlsPrefix, fsMp4Key, fsPosterKey, fsSourceKey, fsSpriteKey, fsVttKey, type MediaCtx, type MediaGallerySource, type MediaSource, type MediaStore, type PhotoSource, } from './types.js';
14
+ export { type ProcessOptions, type ProcessResult, processVideo, } from './videoProcessor.js';
15
+ export { objectStoreAsMediaStore } from './objectStoreMediaStore.js';
@@ -5,23 +5,23 @@
5
5
  // The derivative NAME contract — the seam between binary-server (which writes these names),
6
6
  // satellite-kit (which re-exports them for the satellite apps) and this package's own token
7
7
  // minting. Pure string transforms: nothing here can resolve a stored object.
8
- export { DERIVATIVE_SUFFIXES, hlsMasterKeyFor, hlsPrefixFor, isDerivativeKey, posterKeyFor, spriteKeyFor, spriteVttKeyFor, webPlayableKeyFor, } from './videoDerivativeKeys';
9
- export { createBinaryServerStore } from './binaryServerStore';
10
- export { createBinaryServerProcessing, } from './binaryServerProcessing';
8
+ export { DERIVATIVE_SUFFIXES, hlsMasterKeyFor, hlsPrefixFor, isDerivativeKey, posterKeyFor, spriteKeyFor, spriteVttKeyFor, webPlayableKeyFor, } from './videoDerivativeKeys.js';
9
+ export { createBinaryServerStore } from './binaryServerStore.js';
10
+ export { createBinaryServerProcessing, } from './binaryServerProcessing.js';
11
11
  // The transcode API as a plain job client, for apps whose binaries do NOT live in the file
12
12
  // catalogue (apps/notes keys attachments by sha256). One derivative pipeline, two doors.
13
- export { createTranscodeJobClient, } from './transcodeJobs';
14
- export { createDiskStore } from './diskStore';
13
+ export { createTranscodeJobClient, } from './transcodeJobs.js';
14
+ export { createDiskStore } from './diskStore.js';
15
15
  // The FileCatalogue: a SQLite-backed tagged flat file system over this storage layer — one
16
16
  // source of truth for a user's binaries (the video gallery is a video-filtered view over it).
17
- export { catalogueUploadKey, classifyFileType, createCatalogueMediaSource, createCataloguePhotoSource, createCatalogueVideoSource, createChunkedUploadService, createFilesStack, createFileToPlayable, createFileUrls, createLedgeredDeletes, createSqliteFileCatalogue, createStorageOpsLedger, createStorageReconciler, FILE_CATALOGUE_MIGRATIONS, fileBinaryKey, mountFileRoutes, } from './files';
18
- export { mountMediaRoutes } from './mountMediaRoutes';
19
- export { createDiskSource, createMediaUrls, SourceRegistry, } from './sources';
17
+ export { catalogueUploadKey, classifyFileType, createCatalogueMediaSource, createCataloguePhotoSource, createCatalogueVideoSource, createChunkedUploadService, createFilesStack, createFileToPlayable, createFileUrls, createLedgeredDeletes, createSqliteFileCatalogue, createStorageOpsLedger, createStorageReconciler, FILE_CATALOGUE_MIGRATIONS, fileBinaryKey, mountFileRoutes, } from './files/index.js';
18
+ export { mountMediaRoutes } from './mountMediaRoutes.js';
19
+ export { createDiskSource, createMediaUrls, SourceRegistry, } from './sources.js';
20
20
  // The saas profile's `ObjectStore` (08 §1b). Its local counterpart is
21
21
  // `createFsObjectStore` in `cwip/storage` — same interface, different issuer.
22
- export { createS3ObjectStore, } from './s3ObjectStore';
23
- export { decodeRange, serveRange } from './streamRange';
24
- export { createStreamTokenService } from './streamToken';
25
- export { fsHlsFileKey, fsHlsMasterKey, fsHlsPrefix, fsMp4Key, fsPosterKey, fsSourceKey, fsSpriteKey, fsVttKey, } from './types';
26
- export { processVideo, } from './videoProcessor';
27
- export { objectStoreAsMediaStore } from './objectStoreMediaStore';
22
+ export { createS3ObjectStore, } from './s3ObjectStore.js';
23
+ export { decodeRange, serveRange } from './streamRange.js';
24
+ export { createStreamTokenService } from './streamToken.js';
25
+ export { fsHlsFileKey, fsHlsMasterKey, fsHlsPrefix, fsMp4Key, fsPosterKey, fsSourceKey, fsSpriteKey, fsVttKey, } from './types.js';
26
+ export { processVideo, } from './videoProcessor.js';
27
+ export { objectStoreAsMediaStore } from './objectStoreMediaStore.js';
@@ -1,7 +1,7 @@
1
1
  import type { Context, Hono } from 'hono';
2
- import type { SourceRegistry } from './sources';
3
- import type { StreamTokenService } from './streamToken';
4
- import { type MediaCtx, type MediaStore } from './types';
2
+ import type { SourceRegistry } from './sources.js';
3
+ import type { StreamTokenService } from './streamToken.js';
4
+ import { type MediaCtx, type MediaStore } from './types.js';
5
5
  /** Resolves the Access-Control-Allow-Origin for a request origin: a fixed origin, an allowlist
6
6
  * (echoes the request origin when allowed), or a custom resolver (return null to deny). */
7
7
  export type CorsResolver = string | string[] | ((requestOrigin: string | undefined) => string | null | undefined);
@@ -1,5 +1,5 @@
1
- import { serveRange } from './streamRange';
2
- import { fsDisplayKey, fsHlsFileKey, fsMp4Key, fsPosterKey, fsSourceKey, fsSpriteKey, fsVttKey, } from './types';
1
+ import { serveRange } from './streamRange.js';
2
+ import { fsDisplayKey, fsHlsFileKey, fsMp4Key, fsPosterKey, fsSourceKey, fsSpriteKey, fsVttKey, } from './types.js';
3
3
  const EXPOSE_HEADERS = 'Content-Range, Content-Length, Accept-Ranges';
4
4
  function resolveAcao(cors, reqOrigin) {
5
5
  if (!cors)
@@ -1,4 +1,4 @@
1
1
  import type { ObjectStore } from 'cwip/storage';
2
- import type { MediaStore } from './types';
2
+ import type { MediaStore } from './types.js';
3
3
  /** Adapt an {@link ObjectStore} to the {@link MediaStore} contract `processVideo` expects. */
4
4
  export declare function objectStoreAsMediaStore(objects: ObjectStore): MediaStore;
@@ -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
  *