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.
- package/dist/server/_bunOnly.d.ts +1 -0
- package/dist/server/_bunOnly.js +12 -0
- package/dist/server/activity/index.d.ts +4 -4
- package/dist/server/activity/index.js +3 -3
- package/dist/server/activity/migrations.d.ts +1 -1
- package/dist/server/activity/shareSource.d.ts +1 -1
- package/dist/server/activity/shareSource.js +1 -1
- package/dist/server/activity/store.js +2 -2
- package/dist/server/analytics/index.d.ts +2 -2
- package/dist/server/analytics/index.js +2 -2
- package/dist/server/app.d.ts +4 -4
- package/dist/server/app.js +6 -6
- package/dist/server/audit/index.d.ts +2 -2
- package/dist/server/audit/index.js +2 -2
- package/dist/server/audit/migrations.d.ts +1 -1
- package/dist/server/audit/sqliteSink.js +2 -2
- package/dist/server/audit/sqliteSink.test.js +1 -1
- package/dist/server/auth/csrf.js +1 -1
- package/dist/server/auth/fileTokenSigner.d.ts +1 -1
- package/dist/server/auth/getOnly.d.ts +1 -1
- package/dist/server/auth/getOnly.js +1 -1
- package/dist/server/auth/index.d.ts +12 -12
- package/dist/server/auth/index.js +11 -11
- package/dist/server/auth/jwt.d.ts +1 -1
- package/dist/server/auth/middleware.d.ts +1 -1
- package/dist/server/auth/middleware.js +3 -3
- package/dist/server/auth/sessionStore.d.ts +2 -2
- package/dist/server/auth/types.d.ts +1 -1
- package/dist/server/bench/assert.d.ts +1 -1
- package/dist/server/bench/assert.js +1 -1
- package/dist/server/bench/cpuBudget.d.ts +4 -4
- package/dist/server/bench/cpuBudget.js +3 -3
- package/dist/server/bench/index.d.ts +6 -6
- package/dist/server/bench/index.js +6 -6
- package/dist/server/bench/recorder.d.ts +2 -2
- package/dist/server/bench/recorder.js +1 -1
- package/dist/server/bench/runBench.d.ts +2 -2
- package/dist/server/ctgr.d.ts +1 -1
- package/dist/server/ctgr.js +1 -1
- package/dist/server/d1/fakeD1.d.ts +1 -1
- package/dist/server/d1/fakeD1.js +1 -1
- package/dist/server/d1/index.d.ts +8 -8
- package/dist/server/d1/index.js +8 -8
- package/dist/server/d1/invocation.d.ts +1 -1
- package/dist/server/d1/invocation.js +2 -2
- package/dist/server/d1/kysely.d.ts +2 -2
- package/dist/server/d1/kysely.js +2 -2
- package/dist/server/d1/limits.d.ts +1 -1
- package/dist/server/d1/limits.js +1 -1
- package/dist/server/d1/local.d.ts +1 -1
- package/dist/server/d1/local.js +3 -3
- package/dist/server/d1/localBackup.d.ts +1 -1
- package/dist/server/d1/localBackup.js +2 -2
- package/dist/server/d1/remote.d.ts +1 -1
- package/dist/server/d1/remote.js +3 -3
- package/dist/server/d1/scheduling.d.ts +1 -1
- package/dist/server/d1/values.d.ts +1 -1
- package/dist/server/d1/values.js +1 -1
- package/dist/server/db/kysely.d.ts +1 -1
- package/dist/server/dropzone/index.d.ts +2 -2
- package/dist/server/dropzone/index.js +2 -2
- package/dist/server/guard/argon2Binding.js +1 -1
- package/dist/server/guard/index.d.ts +5 -5
- package/dist/server/guard/index.js +5 -5
- package/dist/server/guard/kdfWorker.d.ts +1 -1
- package/dist/server/guard/kdfWorker.js +3 -3
- package/dist/server/guard/kdfWorkerEntry.js +1 -1
- package/dist/server/guard/passwordVerifier.js +1 -1
- package/dist/server/guard/sessionSigner.d.ts +2 -2
- package/dist/server/guard/sessionSigner.js +1 -1
- package/dist/server/incidents/checks.d.ts +2 -2
- package/dist/server/incidents/index.d.ts +8 -8
- package/dist/server/incidents/index.js +8 -8
- package/dist/server/incidents/migrations.d.ts +1 -1
- package/dist/server/incidents/notifier.d.ts +3 -3
- package/dist/server/incidents/reporter.d.ts +1 -1
- package/dist/server/incidents/routes.d.ts +4 -4
- package/dist/server/incidents/routes.js +1 -1
- package/dist/server/incidents/store.d.ts +1 -1
- package/dist/server/incidents/store.js +3 -3
- package/dist/server/index.d.ts +26 -26
- package/dist/server/index.js +23 -23
- package/dist/server/jobs/fireQueue.d.ts +1 -1
- package/dist/server/jobs/fireQueue.js +3 -3
- package/dist/server/jobs/index.d.ts +7 -7
- package/dist/server/jobs/index.js +7 -7
- package/dist/server/jobs/logger.d.ts +1 -1
- package/dist/server/jobs/polling.d.ts +1 -1
- package/dist/server/jobs/polling.js +1 -1
- package/dist/server/jobs/runner.d.ts +1 -1
- package/dist/server/jobs/runner.js +5 -5
- package/dist/server/master-lock/accountsPage.d.ts +1 -1
- package/dist/server/master-lock/accountsPage.js +1 -1
- package/dist/server/master-lock/guard.d.ts +2 -2
- package/dist/server/master-lock/guard.js +2 -2
- package/dist/server/master-lock/index.d.ts +7 -7
- package/dist/server/master-lock/index.js +7 -7
- package/dist/server/master-lock/masterLock.js +1 -11
- package/dist/server/master-lock/principals.d.ts +1 -1
- package/dist/server/master-lock/principals.js +1 -1
- package/dist/server/master-lock/seed.d.ts +1 -1
- package/dist/server/master-lock/seed.js +1 -1
- package/dist/server/master-lock/store.d.ts +1 -1
- package/dist/server/media-bun/index.d.ts +3 -3
- package/dist/server/media-bun/index.js +3 -3
- package/dist/server/media-bun/video.d.ts +1 -1
- package/dist/server/media-bun/video.js +1 -1
- package/dist/server/metrics/telemetrySink.d.ts +1 -1
- package/dist/server/metrics/telemetrySink.js +1 -1
- package/dist/server/middleware/correlationId.d.ts +1 -1
- package/dist/server/middleware/errorEnvelope.d.ts +1 -1
- package/dist/server/middleware/errorEnvelope.js +1 -1
- package/dist/server/middleware/index.d.ts +10 -10
- package/dist/server/middleware/index.js +10 -10
- package/dist/server/middleware/rateLimit.js +1 -1
- package/dist/server/middleware/requestLogger.d.ts +3 -3
- package/dist/server/middleware/requestLogger.js +3 -3
- package/dist/server/middleware/zValidator.d.ts +1 -1
- package/dist/server/middleware/zValidator.js +1 -1
- package/dist/server/migration/runner.d.ts +1 -1
- package/dist/server/net/outboundGuard.js +1 -1
- package/dist/server/notifications/index.d.ts +7 -7
- package/dist/server/notifications/index.js +4 -4
- package/dist/server/notifications/migrations.d.ts +1 -1
- package/dist/server/notifications/routes.d.ts +1 -1
- package/dist/server/notifications/service.d.ts +1 -1
- package/dist/server/notifications/service.js +2 -2
- package/dist/server/resume/index.d.ts +2 -2
- package/dist/server/resume/index.js +2 -2
- package/dist/server/resume/routes.d.ts +1 -1
- package/dist/server/resume/routes.js +1 -1
- package/dist/server/retention/archive.js +1 -1
- package/dist/server/retention/fleet.d.ts +2 -2
- package/dist/server/retention/fleet.js +2 -2
- package/dist/server/retention/index.d.ts +6 -6
- package/dist/server/retention/index.js +6 -6
- package/dist/server/retention/store.d.ts +1 -1
- package/dist/server/retention/store.js +2 -2
- package/dist/server/retention/sweeper.d.ts +3 -3
- package/dist/server/retention/sweeper.js +2 -2
- package/dist/server/retention/target.d.ts +3 -3
- package/dist/server/retention/target.js +2 -2
- package/dist/server/search/index.d.ts +2 -2
- package/dist/server/search/index.js +2 -2
- package/dist/server/search/pgSearchProvider.js +2 -2
- package/dist/server/search/pgSearchProvider.pg.test.js +2 -2
- package/dist/server/sharing/index.d.ts +8 -8
- package/dist/server/sharing/index.js +5 -5
- package/dist/server/sharing/migrations.d.ts +1 -1
- package/dist/server/sharing/router.d.ts +1 -1
- package/dist/server/sharing/sql.js +1 -1
- package/dist/server/sharing/store.js +3 -3
- package/dist/server/sqlite/browse.js +1 -1
- package/dist/server/sqlite/export.js +1 -1
- package/dist/server/sqlite/import.js +1 -1
- package/dist/server/sqlite/index.d.ts +9 -9
- package/dist/server/sqlite/index.js +9 -9
- package/dist/server/sqlite/stats.js +1 -1
- package/dist/server/sqlite/viewer.js +2 -2
- package/dist/server/storage/binaryServerProcessing.d.ts +1 -1
- package/dist/server/storage/binaryServerProcessing.js +2 -2
- package/dist/server/storage/binaryServerStore.d.ts +2 -2
- package/dist/server/storage/binaryStore.d.ts +1 -1
- package/dist/server/storage/binaryStoreFake.d.ts +1 -1
- package/dist/server/storage/diskStore.d.ts +1 -1
- package/dist/server/storage/files/adapter.d.ts +4 -4
- package/dist/server/storage/files/adapter.js +1 -1
- package/dist/server/storage/files/catalogue.d.ts +3 -3
- package/dist/server/storage/files/catalogue.js +6 -6
- package/dist/server/storage/files/chunkedUpload.d.ts +3 -3
- package/dist/server/storage/files/chunkedUpload.js +1 -1
- package/dist/server/storage/files/fileRoutes.d.ts +4 -4
- package/dist/server/storage/files/fileRoutes.js +3 -3
- package/dist/server/storage/files/index.d.ts +9 -9
- package/dist/server/storage/files/index.js +8 -8
- package/dist/server/storage/files/migrations.d.ts +1 -1
- package/dist/server/storage/files/stack.d.ts +7 -7
- package/dist/server/storage/files/stack.js +10 -10
- package/dist/server/storage/files/storageOps.d.ts +1 -1
- package/dist/server/storage/files/types.d.ts +1 -1
- package/dist/server/storage/imageThumbnail.js +1 -1
- package/dist/server/storage/index.d.ts +15 -15
- package/dist/server/storage/index.js +14 -14
- package/dist/server/storage/mountMediaRoutes.d.ts +3 -3
- package/dist/server/storage/mountMediaRoutes.js +2 -2
- package/dist/server/storage/objectStoreMediaStore.d.ts +1 -1
- package/dist/server/storage/s3ObjectStore.js +1 -1
- package/dist/server/storage/sources.d.ts +2 -2
- package/dist/server/storage/sources.js +2 -2
- package/dist/server/storage/streamRange.d.ts +1 -1
- package/dist/server/storage/streamToken.js +1 -1
- package/dist/server/storage/videoProcessor.d.ts +1 -1
- package/dist/server/storage/videoProcessor.js +2 -2
- package/dist/server/sync/engine.d.ts +2 -2
- package/dist/server/sync/engine.js +1 -1
- package/dist/server/sync/http.d.ts +4 -4
- package/dist/server/sync/http.js +3 -3
- package/dist/server/sync/index.d.ts +11 -11
- package/dist/server/sync/index.js +11 -11
- package/dist/server/sync/opLog.d.ts +1 -1
- package/dist/server/sync/signal.d.ts +1 -1
- package/dist/server/sync/timer.d.ts +3 -3
- package/dist/server/sync/timer.js +1 -1
- package/dist/server/ws/eventBus.d.ts +1 -1
- package/dist/server/ws/hub.d.ts +1 -1
- package/dist/server/ws/hub.js +3 -3
- package/dist/server/ws/index.d.ts +5 -5
- package/dist/server/ws/index.js +4 -4
- package/dist/server/ws/presence.d.ts +1 -1
- package/dist/server/ws/room.d.ts +1 -1
- package/dist/server/ws/types.d.ts +1 -1
- package/package.json +9 -9
- package/src/publicSurface.spec.ts +1 -1
- package/src/server/_bunOnly.ts +15 -0
- package/src/server/activity/index.ts +4 -4
- package/src/server/activity/migrations.ts +1 -1
- package/src/server/activity/shareSource.ts +2 -2
- package/src/server/activity/store.spec.ts +3 -3
- package/src/server/activity/store.ts +2 -2
- package/src/server/analytics/index.ts +2 -2
- package/src/server/analytics/injectedScripts.spec.ts +3 -3
- package/src/server/analytics/webAnalytics.spec.ts +1 -1
- package/src/server/app.spec.ts +9 -9
- package/src/server/app.ts +7 -7
- package/src/server/audit/index.ts +2 -2
- package/src/server/audit/migrations.ts +1 -1
- package/src/server/audit/sqliteSink.test.ts +1 -1
- package/src/server/audit/sqliteSink.ts +2 -2
- package/src/server/auth/cookie.spec.ts +1 -1
- package/src/server/auth/csrf.spec.ts +1 -1
- package/src/server/auth/csrf.ts +1 -1
- package/src/server/auth/fileTokenSigner.ts +1 -1
- package/src/server/auth/getOnly.spec.ts +2 -2
- package/src/server/auth/getOnly.ts +2 -2
- package/src/server/auth/index.ts +12 -12
- package/src/server/auth/jwt.spec.ts +2 -2
- package/src/server/auth/jwt.ts +1 -1
- package/src/server/auth/loginThrottle.spec.ts +1 -1
- package/src/server/auth/middleware.spec.ts +7 -7
- package/src/server/auth/middleware.ts +4 -4
- package/src/server/auth/password.spec.ts +1 -1
- package/src/server/auth/sessionStore.spec.ts +3 -3
- package/src/server/auth/sessionStore.ts +3 -3
- package/src/server/auth/totp.spec.ts +1 -1
- package/src/server/auth/types.ts +1 -1
- package/src/server/auth/vault.spec.ts +1 -1
- package/src/server/bench/assert.ts +2 -2
- package/src/server/bench/budget.spec.ts +2 -2
- package/src/server/bench/cpuBudget.spec.ts +6 -6
- package/src/server/bench/cpuBudget.ts +5 -5
- package/src/server/bench/cpuClock.spec.ts +2 -2
- package/src/server/bench/index.ts +6 -6
- package/src/server/bench/recorder.ts +2 -2
- package/src/server/bench/runBench.ts +2 -2
- package/src/server/ctgr.spec.ts +2 -2
- package/src/server/ctgr.ts +2 -2
- package/src/server/d1/backup.spec.ts +2 -2
- package/src/server/d1/fakeD1.ts +2 -2
- package/src/server/d1/index.ts +8 -8
- package/src/server/d1/invocation.spec.ts +6 -6
- package/src/server/d1/invocation.ts +2 -2
- package/src/server/d1/kysely.spec.ts +5 -5
- package/src/server/d1/kysely.ts +3 -3
- package/src/server/d1/limits.spec.ts +3 -3
- package/src/server/d1/limits.ts +1 -1
- package/src/server/d1/local.ts +3 -3
- package/src/server/d1/localBackup.ts +3 -3
- package/src/server/d1/remote.ts +3 -3
- package/src/server/d1/sameShape.spec.ts +4 -4
- package/src/server/d1/scheduling.spec.ts +1 -1
- package/src/server/d1/scheduling.ts +1 -1
- package/src/server/d1/values.ts +1 -1
- package/src/server/db/kysely.spec.ts +1 -1
- package/src/server/db/kysely.ts +1 -1
- package/src/server/dropzone/index.ts +2 -2
- package/src/server/dropzone/scan.spec.ts +1 -1
- package/src/server/errors.spec.ts +1 -1
- package/src/server/guard/argon2Binding.spec.ts +1 -1
- package/src/server/guard/argon2Binding.ts +1 -1
- package/src/server/guard/argon2Kat.spec.ts +1 -1
- package/src/server/guard/guard.spec.ts +3 -3
- package/src/server/guard/index.ts +5 -5
- package/src/server/guard/kdfWorker.spec.ts +3 -3
- package/src/server/guard/kdfWorker.ts +3 -3
- package/src/server/guard/kdfWorkerEntry.ts +1 -1
- package/src/server/guard/passwordVerifier.spec.ts +1 -1
- package/src/server/guard/passwordVerifier.ts +1 -1
- package/src/server/guard/revocationStore.spec.ts +2 -2
- package/src/server/guard/sessionSigner.ts +3 -3
- package/src/server/incidents/checks.ts +2 -2
- package/src/server/incidents/incidents.spec.ts +7 -7
- package/src/server/incidents/index.ts +8 -8
- package/src/server/incidents/migrations.ts +1 -1
- package/src/server/incidents/notifier.ts +3 -3
- package/src/server/incidents/reporter.ts +1 -1
- package/src/server/incidents/routes.ts +5 -5
- package/src/server/incidents/store.ts +3 -3
- package/src/server/index.ts +26 -26
- package/src/server/jobs/fireQueue.spec.ts +1 -1
- package/src/server/jobs/fireQueue.ts +3 -3
- package/src/server/jobs/index.ts +7 -7
- package/src/server/jobs/logger.ts +1 -1
- package/src/server/jobs/plainjobAdapter.spec.ts +1 -1
- package/src/server/jobs/polling.spec.ts +1 -1
- package/src/server/jobs/polling.ts +2 -2
- package/src/server/jobs/runner.spec.ts +3 -3
- package/src/server/jobs/runner.ts +5 -5
- package/src/server/jobs/timeout.spec.ts +1 -1
- package/src/server/master-lock/accounts.spec.ts +2 -2
- package/src/server/master-lock/accountsPage.spec.ts +4 -4
- package/src/server/master-lock/accountsPage.ts +1 -1
- package/src/server/master-lock/beaconNeverReachesTheWall.spec.ts +4 -4
- package/src/server/master-lock/guard.spec.ts +3 -3
- package/src/server/master-lock/guard.ts +3 -3
- package/src/server/master-lock/index.ts +7 -7
- package/src/server/master-lock/lockPage.spec.ts +2 -2
- package/src/server/master-lock/masterLock.spec.ts +2 -2
- package/src/server/master-lock/masterLock.ts +1 -10
- package/src/server/master-lock/principals.spec.ts +4 -4
- package/src/server/master-lock/principals.ts +1 -1
- package/src/server/master-lock/seed.spec.ts +3 -3
- package/src/server/master-lock/seed.ts +1 -1
- package/src/server/master-lock/store.ts +1 -1
- package/src/server/media-bun/image.spec.ts +1 -1
- package/src/server/media-bun/index.ts +3 -3
- package/src/server/media-bun/streaming.spec.ts +1 -1
- package/src/server/media-bun/video.spec.ts +1 -1
- package/src/server/media-bun/video.ts +1 -1
- package/src/server/metrics/normalizeRoute.spec.ts +1 -1
- package/src/server/metrics/telemetrySink.spec.ts +3 -3
- package/src/server/metrics/telemetrySink.ts +1 -1
- package/src/server/middleware/bodyLimit.spec.ts +1 -1
- package/src/server/middleware/correlationId.ts +1 -1
- package/src/server/middleware/corsAllowlist.spec.ts +2 -2
- package/src/server/middleware/errorEnvelope.ts +2 -2
- package/src/server/middleware/index.ts +10 -10
- package/src/server/middleware/localOrigin.spec.ts +1 -1
- package/src/server/middleware/rateLimit.spec.ts +1 -1
- package/src/server/middleware/rateLimit.ts +1 -1
- package/src/server/middleware/requestLogger.ts +5 -5
- package/src/server/middleware/zValidator.spec.ts +4 -4
- package/src/server/middleware/zValidator.ts +2 -2
- package/src/server/migration/runner.spec.ts +2 -2
- package/src/server/migration/runner.ts +1 -1
- package/src/server/net/outboundGuard.spec.ts +1 -1
- package/src/server/net/outboundGuard.ts +1 -1
- package/src/server/notifications/index.ts +7 -7
- package/src/server/notifications/migrations.ts +1 -1
- package/src/server/notifications/routes.ts +1 -1
- package/src/server/notifications/service.spec.ts +3 -3
- package/src/server/notifications/service.ts +2 -2
- package/src/server/paths/appDataHome.spec.ts +1 -1
- package/src/server/resume/index.ts +2 -2
- package/src/server/resume/resume.spec.ts +2 -2
- package/src/server/resume/routes.ts +1 -1
- package/src/server/retention/archive.spec.ts +2 -2
- package/src/server/retention/archive.ts +1 -1
- package/src/server/retention/fleet.ts +4 -4
- package/src/server/retention/index.ts +6 -6
- package/src/server/retention/policy.spec.ts +1 -1
- package/src/server/retention/store.spec.ts +3 -3
- package/src/server/retention/store.ts +3 -3
- package/src/server/retention/sweeper.spec.ts +5 -5
- package/src/server/retention/sweeper.ts +5 -5
- package/src/server/retention/target.spec.ts +3 -3
- package/src/server/retention/target.ts +5 -5
- package/src/server/search/index.ts +2 -2
- package/src/server/search/pgSearchProvider.pg.test.ts +2 -2
- package/src/server/search/pgSearchProvider.ts +2 -2
- package/src/server/sharing/index.ts +8 -8
- package/src/server/sharing/migrations.ts +1 -1
- package/src/server/sharing/router.spec.ts +2 -2
- package/src/server/sharing/router.ts +1 -1
- package/src/server/sharing/sql.ts +1 -1
- package/src/server/sharing/store.spec.ts +2 -2
- package/src/server/sharing/store.ts +3 -3
- package/src/server/sqlite/backup.spec.ts +1 -1
- package/src/server/sqlite/browse.spec.ts +1 -1
- package/src/server/sqlite/browse.ts +1 -1
- package/src/server/sqlite/export.spec.ts +2 -2
- package/src/server/sqlite/export.ts +1 -1
- package/src/server/sqlite/fts5.spec.ts +1 -1
- package/src/server/sqlite/health.spec.ts +1 -1
- package/src/server/sqlite/import.spec.ts +3 -3
- package/src/server/sqlite/import.ts +1 -1
- package/src/server/sqlite/index.ts +9 -9
- package/src/server/sqlite/readonlySql.spec.ts +1 -1
- package/src/server/sqlite/stats.spec.ts +1 -1
- package/src/server/sqlite/stats.ts +1 -1
- package/src/server/sqlite/viewer.spec.ts +1 -1
- package/src/server/sqlite/viewer.ts +2 -2
- package/src/server/storage/binaryServerProcessing.integration.spec.ts +2 -2
- package/src/server/storage/binaryServerProcessing.spec.ts +2 -2
- package/src/server/storage/binaryServerProcessing.ts +3 -3
- package/src/server/storage/binaryServerStore.ts +3 -3
- package/src/server/storage/binaryStore.spec.ts +2 -2
- package/src/server/storage/binaryStore.ts +1 -1
- package/src/server/storage/binaryStoreFake.ts +1 -1
- package/src/server/storage/chunked.integration.spec.ts +4 -4
- package/src/server/storage/diskStore.ts +1 -1
- package/src/server/storage/fileUploadClient-chunked.integration.spec.ts +6 -6
- package/src/server/storage/fileUploadClient.integration.spec.ts +7 -7
- package/src/server/storage/files/adapter.photo.display.spec.ts +10 -10
- package/src/server/storage/files/adapter.photo.spec.ts +9 -9
- package/src/server/storage/files/adapter.spec.ts +8 -8
- package/src/server/storage/files/adapter.ts +5 -5
- package/src/server/storage/files/catalogue.media-host.spec.ts +6 -6
- package/src/server/storage/files/catalogue.orderings.spec.ts +6 -6
- package/src/server/storage/files/catalogue.recover.spec.ts +5 -5
- package/src/server/storage/files/catalogue.sort.spec.ts +6 -6
- package/src/server/storage/files/catalogue.spec.ts +7 -7
- package/src/server/storage/files/catalogue.trash-import.spec.ts +6 -6
- package/src/server/storage/files/catalogue.ts +6 -6
- package/src/server/storage/files/chunkedUpload.spec.ts +7 -7
- package/src/server/storage/files/chunkedUpload.ts +4 -4
- package/src/server/storage/files/collections.spec.ts +6 -6
- package/src/server/storage/files/fileRoutes.replace.spec.ts +8 -8
- package/src/server/storage/files/fileRoutes.spec.ts +8 -8
- package/src/server/storage/files/fileRoutes.ts +6 -6
- package/src/server/storage/files/index.ts +9 -9
- package/src/server/storage/files/migrations.ts +1 -1
- package/src/server/storage/files/stack.spec.ts +5 -5
- package/src/server/storage/files/stack.ts +12 -12
- package/src/server/storage/files/storageOps.spec.ts +4 -4
- package/src/server/storage/files/storageOps.ts +1 -1
- package/src/server/storage/files/types.ts +1 -1
- package/src/server/storage/imageThumbnail.spec.ts +2 -2
- package/src/server/storage/imageThumbnail.ts +1 -1
- package/src/server/storage/index.ts +15 -15
- package/src/server/storage/mountMediaRoutes.ts +4 -4
- package/src/server/storage/objectStore.spec.ts +1 -1
- package/src/server/storage/objectStoreMediaStore.ts +1 -1
- package/src/server/storage/s3ObjectStore.ts +1 -1
- package/src/server/storage/sources.ts +3 -3
- package/src/server/storage/storage.spec.ts +6 -6
- package/src/server/storage/streamRange.ts +1 -1
- package/src/server/storage/streamToken.ts +1 -1
- package/src/server/storage/transcodeJobs.spec.ts +1 -1
- package/src/server/storage/videoDerivativeKeys.spec.ts +1 -1
- package/src/server/storage/videoProcessor.posterOnly.spec.ts +4 -4
- package/src/server/storage/videoProcessor.ts +2 -2
- package/src/server/sync/alarm.spec.ts +1 -1
- package/src/server/sync/commands.spec.ts +1 -1
- package/src/server/sync/engine.spec.ts +4 -4
- package/src/server/sync/engine.ts +2 -2
- package/src/server/sync/http.ts +5 -5
- package/src/server/sync/httpRemote.spec.ts +1 -1
- package/src/server/sync/index.ts +11 -11
- package/src/server/sync/opLog.spec.ts +1 -1
- package/src/server/sync/opLog.ts +1 -1
- package/src/server/sync/planner.spec.ts +1 -1
- package/src/server/sync/signal.spec.ts +1 -1
- package/src/server/sync/signal.ts +1 -1
- package/src/server/sync/status.spec.ts +1 -1
- package/src/server/sync/timer.spec.ts +3 -3
- package/src/server/sync/timer.ts +3 -3
- package/src/server/sync/tokens.spec.ts +1 -1
- package/src/server/ws/eventBus.spec.ts +2 -2
- package/src/server/ws/eventBus.ts +1 -1
- package/src/server/ws/hub.integration.spec.ts +5 -5
- package/src/server/ws/hub.spec.ts +3 -3
- package/src/server/ws/hub.ts +4 -4
- package/src/server/ws/index.ts +5 -5
- package/src/server/ws/presence.spec.ts +3 -3
- package/src/server/ws/presence.ts +1 -1
- package/src/server/ws/room.spec.ts +2 -2
- package/src/server/ws/room.ts +1 -1
- package/src/server/ws/types.ts +1 -1
- package/src/testTmpRoot.spec.ts +1 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { Database } from 'bun:sqlite';
|
|
2
2
|
import { defineQueue, defineWorker, type Queue, type Worker } from 'plainjob';
|
|
3
|
-
import { ApiError } from '../errors';
|
|
4
|
-
import { defaultJobLogger } from './logger';
|
|
5
|
-
import { createPlainjobConnection } from './plainjobAdapter';
|
|
6
|
-
import { withTimeout } from './timeout';
|
|
3
|
+
import { ApiError } from '../errors.js';
|
|
4
|
+
import { defaultJobLogger } from './logger.js';
|
|
5
|
+
import { createPlainjobConnection } from './plainjobAdapter.js';
|
|
6
|
+
import { withTimeout } from './timeout.js';
|
|
7
7
|
import {
|
|
8
8
|
type CreateJobRunnerOptions,
|
|
9
9
|
DEFAULT_JOB_RETENTION,
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
type JobLogger,
|
|
14
14
|
type JobRunner,
|
|
15
15
|
type JobRunRecord,
|
|
16
|
-
} from './types';
|
|
16
|
+
} from './types.js';
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
19
|
* Create the durable cron job runner — a thin facade over **plainjob** (MIT,
|
|
@@ -20,8 +20,8 @@ import {
|
|
|
20
20
|
type MasterLockKdfParams,
|
|
21
21
|
deriveMasterLockVerifier,
|
|
22
22
|
} from "cursedbelt-core/master-lock";
|
|
23
|
-
import { FIRST_ACCOUNT_ID, MasterLock, readRecord } from "./masterLock";
|
|
24
|
-
import { createMemoryMasterLockStore } from "./store";
|
|
23
|
+
import { FIRST_ACCOUNT_ID, MasterLock, readRecord } from "./masterLock.js";
|
|
24
|
+
import { createMemoryMasterLockStore } from "./store.js";
|
|
25
25
|
|
|
26
26
|
/** `iter: 1` — the ROUND COUNT is pinned in `cursedbelt-core`'s `kdf.spec.ts`; 600k × N
|
|
27
27
|
* argon2 verifies here would be minutes of gate for nothing this file is testing. */
|
|
@@ -22,10 +22,10 @@ import {
|
|
|
22
22
|
MASTER_LOCK_ACCOUNTS_SCRIPT,
|
|
23
23
|
MASTER_LOCK_ACCOUNTS_STYLE,
|
|
24
24
|
accountsPageHtml,
|
|
25
|
-
} from "./accountsPage";
|
|
26
|
-
import { createMasterLockGuard } from "./guard";
|
|
27
|
-
import { MasterLock } from "./masterLock";
|
|
28
|
-
import { createMemoryMasterLockStore } from "./store";
|
|
25
|
+
} from "./accountsPage.js";
|
|
26
|
+
import { createMasterLockGuard } from "./guard.js";
|
|
27
|
+
import { MasterLock } from "./masterLock.js";
|
|
28
|
+
import { createMemoryMasterLockStore } from "./store.js";
|
|
29
29
|
|
|
30
30
|
const KDF: MasterLockKdfParams = {
|
|
31
31
|
v: 1,
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
* only be watching one of them.
|
|
34
34
|
*/
|
|
35
35
|
import { MASTER_LOCK_PATHS, MASTER_LOCK_PREFIX } from "cursedbelt-core/master-lock";
|
|
36
|
-
import { MASTER_LOCK_DERIVE_SOURCE, type LockPageOptions } from "./lockPage";
|
|
36
|
+
import { MASTER_LOCK_DERIVE_SOURCE, type LockPageOptions } from "./lockPage.js";
|
|
37
37
|
|
|
38
38
|
/**
|
|
39
39
|
* The page's own two assets.
|
|
@@ -12,10 +12,10 @@ import {
|
|
|
12
12
|
foreignScriptSources,
|
|
13
13
|
htmlCarriesWebAnalytics,
|
|
14
14
|
scriptsRefusedByCsp,
|
|
15
|
-
} from "../analytics";
|
|
16
|
-
import { MASTER_LOCK_CSP, createMasterLockGuard } from "./guard";
|
|
17
|
-
import { MasterLock } from "./masterLock";
|
|
18
|
-
import { createMemoryMasterLockStore } from "./store";
|
|
15
|
+
} from "../analytics/index.js";
|
|
16
|
+
import { MASTER_LOCK_CSP, createMasterLockGuard } from "./guard.js";
|
|
17
|
+
import { MasterLock } from "./masterLock.js";
|
|
18
|
+
import { createMemoryMasterLockStore } from "./store.js";
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* 🔴 **The wall never carries the beacon, and the public shells always do.** Both halves, in
|
|
@@ -13,9 +13,9 @@ import {
|
|
|
13
13
|
deriveMasterLockVerifier,
|
|
14
14
|
newMasterLockKdfParams,
|
|
15
15
|
} from "cursedbelt-core/master-lock";
|
|
16
|
-
import { createMasterLockGuard } from "./guard";
|
|
17
|
-
import { MasterLock } from "./masterLock";
|
|
18
|
-
import { createMemoryMasterLockStore } from "./store";
|
|
16
|
+
import { createMasterLockGuard } from "./guard.js";
|
|
17
|
+
import { MasterLock } from "./masterLock.js";
|
|
18
|
+
import { createMemoryMasterLockStore } from "./store.js";
|
|
19
19
|
|
|
20
20
|
const KDF: MasterLockKdfParams = {
|
|
21
21
|
v: 1,
|
|
@@ -22,9 +22,9 @@ import {
|
|
|
22
22
|
MASTER_LOCK_ACCOUNTS_SCRIPT,
|
|
23
23
|
MASTER_LOCK_ACCOUNTS_STYLE,
|
|
24
24
|
accountsPageHtml,
|
|
25
|
-
} from "./accountsPage";
|
|
26
|
-
import { LOCK_SCRIPT, LOCK_STYLE, type LockPageOptions, lockPageHtml } from "./lockPage";
|
|
27
|
-
import type { MasterLock } from "./masterLock";
|
|
25
|
+
} from "./accountsPage.js";
|
|
26
|
+
import { LOCK_SCRIPT, LOCK_STYLE, type LockPageOptions, lockPageHtml } from "./lockPage.js";
|
|
27
|
+
import type { MasterLock } from "./masterLock.js";
|
|
28
28
|
|
|
29
29
|
export interface MasterLockGuardOptions extends LockPageOptions {
|
|
30
30
|
/**
|
|
@@ -26,26 +26,26 @@ export {
|
|
|
26
26
|
MASTER_LOCK_ACCOUNTS_STYLE,
|
|
27
27
|
MASTER_LOCK_MIN_PASSWORD_LENGTH,
|
|
28
28
|
accountsPageHtml,
|
|
29
|
-
} from "./accountsPage";
|
|
29
|
+
} from "./accountsPage.js";
|
|
30
30
|
export {
|
|
31
31
|
MASTER_LOCK_CSP,
|
|
32
32
|
type MasterLockGuard,
|
|
33
33
|
type MasterLockGuardOptions,
|
|
34
34
|
createMasterLockGuard,
|
|
35
|
-
} from "./guard";
|
|
35
|
+
} from "./guard.js";
|
|
36
36
|
export {
|
|
37
37
|
LOCK_SCRIPT,
|
|
38
38
|
LOCK_STYLE,
|
|
39
39
|
MASTER_LOCK_DERIVE_SOURCE,
|
|
40
40
|
type LockPageOptions,
|
|
41
41
|
lockPageHtml,
|
|
42
|
-
} from "./lockPage";
|
|
42
|
+
} from "./lockPage.js";
|
|
43
43
|
export {
|
|
44
44
|
MASTER_LOCK_PRINCIPAL_KEY_PREFIX,
|
|
45
45
|
MasterLockDirectory,
|
|
46
46
|
type MasterLockDirectoryOptions,
|
|
47
47
|
masterLockPrincipalKey,
|
|
48
|
-
} from "./principals";
|
|
48
|
+
} from "./principals.js";
|
|
49
49
|
export {
|
|
50
50
|
FIRST_ACCOUNT_ID,
|
|
51
51
|
MasterLock,
|
|
@@ -57,17 +57,17 @@ export {
|
|
|
57
57
|
type MasterLockStore,
|
|
58
58
|
type MasterLockUnlockResult,
|
|
59
59
|
readRecord,
|
|
60
|
-
} from "./masterLock";
|
|
60
|
+
} from "./masterLock.js";
|
|
61
61
|
export {
|
|
62
62
|
DEFAULT_SEED_IDLE_MS,
|
|
63
63
|
generateStagePassword,
|
|
64
64
|
type MintMasterLockSeedOptions,
|
|
65
65
|
mintMasterLockSeed,
|
|
66
66
|
serializeMasterLockSeed,
|
|
67
|
-
} from "./seed";
|
|
67
|
+
} from "./seed.js";
|
|
68
68
|
export {
|
|
69
69
|
MASTER_LOCK_SETTING_KEY,
|
|
70
70
|
MASTER_LOCK_STATE_KEY,
|
|
71
71
|
createKvMasterLockStore,
|
|
72
72
|
createMemoryMasterLockStore,
|
|
73
|
-
} from "./store";
|
|
73
|
+
} from "./store.js";
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import { describe, expect, test } from "bun:test";
|
|
15
15
|
import { MASTER_LOCK_PATHS, type MasterLockKdfParams, deriveMasterLockVerifier } from "cursedbelt-core/master-lock";
|
|
16
|
-
import { MASTER_LOCK_ACCOUNTS_SCRIPT } from "./accountsPage";
|
|
17
|
-
import { LOCK_SCRIPT, LOCK_STYLE, MASTER_LOCK_DERIVE_SOURCE, lockPageHtml } from "./lockPage";
|
|
16
|
+
import { MASTER_LOCK_ACCOUNTS_SCRIPT } from "./accountsPage.js";
|
|
17
|
+
import { LOCK_SCRIPT, LOCK_STYLE, MASTER_LOCK_DERIVE_SOURCE, lockPageHtml } from "./lockPage.js";
|
|
18
18
|
|
|
19
19
|
const KDF: MasterLockKdfParams = {
|
|
20
20
|
v: 1,
|
|
@@ -13,8 +13,8 @@ import {
|
|
|
13
13
|
deriveMasterLockVerifier,
|
|
14
14
|
newMasterLockKdfParams,
|
|
15
15
|
} from "cursedbelt-core/master-lock";
|
|
16
|
-
import { MasterLock, readRecord } from "./masterLock";
|
|
17
|
-
import { createMemoryMasterLockStore } from "./store";
|
|
16
|
+
import { MasterLock, readRecord } from "./masterLock.js";
|
|
17
|
+
import { createMemoryMasterLockStore } from "./store.js";
|
|
18
18
|
|
|
19
19
|
const KDF: MasterLockKdfParams = {
|
|
20
20
|
v: 1,
|
|
@@ -48,6 +48,7 @@
|
|
|
48
48
|
* one who has been guessing.
|
|
49
49
|
*/
|
|
50
50
|
import { createHash } from "node:crypto";
|
|
51
|
+
import { constantTimeEqual } from "cwip/constant-time";
|
|
51
52
|
import {
|
|
52
53
|
type MasterLockAccountSummary,
|
|
53
54
|
type MasterLockKdfParams,
|
|
@@ -1064,13 +1065,3 @@ function presentedTokens(req: Request): string[] {
|
|
|
1064
1065
|
}
|
|
1065
1066
|
return out;
|
|
1066
1067
|
}
|
|
1067
|
-
|
|
1068
|
-
function constantTimeEqual(a: string, b: string): boolean {
|
|
1069
|
-
const x = Buffer.from(a);
|
|
1070
|
-
const y = Buffer.from(b);
|
|
1071
|
-
// A length difference is already a non-match, and `timingSafeEqual` throws on one.
|
|
1072
|
-
if (x.length !== y.length) return false;
|
|
1073
|
-
let diff = 0;
|
|
1074
|
-
for (let i = 0; i < x.length; i += 1) diff |= x[i] ^ y[i];
|
|
1075
|
-
return diff === 0;
|
|
1076
|
-
}
|
|
@@ -22,10 +22,10 @@ import {
|
|
|
22
22
|
deriveMasterLockVerifier,
|
|
23
23
|
newMasterLockKdfParams,
|
|
24
24
|
} from "cursedbelt-core/master-lock";
|
|
25
|
-
import { createMasterLockGuard } from "./guard";
|
|
26
|
-
import { MasterLock, type MasterLockStore } from "./masterLock";
|
|
27
|
-
import { MASTER_LOCK_PRINCIPAL_KEY_PREFIX, MasterLockDirectory, masterLockPrincipalKey } from "./principals";
|
|
28
|
-
import { createMemoryMasterLockStore } from "./store";
|
|
25
|
+
import { createMasterLockGuard } from "./guard.js";
|
|
26
|
+
import { MasterLock, type MasterLockStore } from "./masterLock.js";
|
|
27
|
+
import { MASTER_LOCK_PRINCIPAL_KEY_PREFIX, MasterLockDirectory, masterLockPrincipalKey } from "./principals.js";
|
|
28
|
+
import { createMemoryMasterLockStore } from "./store.js";
|
|
29
29
|
|
|
30
30
|
const KDF: MasterLockKdfParams = {
|
|
31
31
|
v: 1,
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
* record is stored under, which is the only thing it ever really was.
|
|
47
47
|
*/
|
|
48
48
|
import { createHash } from "node:crypto";
|
|
49
|
-
import { MasterLock, type MasterLockStore, readRecord } from "./masterLock";
|
|
49
|
+
import { MasterLock, type MasterLockStore, readRecord } from "./masterLock.js";
|
|
50
50
|
|
|
51
51
|
/** Namespace for every per-person record, so one glance at the table says what they are. */
|
|
52
52
|
export const MASTER_LOCK_PRINCIPAL_KEY_PREFIX = "master_lock:principal:";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { describe, expect, it } from "bun:test";
|
|
2
2
|
import { deriveMasterLockVerifier } from "cursedbelt-core/master-lock/kdf";
|
|
3
|
-
import { MasterLock, readRecord } from "./masterLock";
|
|
4
|
-
import { createMemoryMasterLockStore } from "./store";
|
|
5
|
-
import { generateStagePassword, mintMasterLockSeed, serializeMasterLockSeed } from "./seed";
|
|
3
|
+
import { MasterLock, readRecord } from "./masterLock.js";
|
|
4
|
+
import { createMemoryMasterLockStore } from "./store.js";
|
|
5
|
+
import { generateStagePassword, mintMasterLockSeed, serializeMasterLockSeed } from "./seed.js";
|
|
6
6
|
|
|
7
7
|
describe("mintMasterLockSeed", () => {
|
|
8
8
|
// The whole point: a seed minted here must UNLOCK, through the real engine,
|
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
deriveMasterLockVerifier,
|
|
29
29
|
newMasterLockKdfParams,
|
|
30
30
|
} from "cursedbelt-core/master-lock/kdf";
|
|
31
|
-
import { FIRST_ACCOUNT_ID, type MasterLockRecord } from "./masterLock";
|
|
31
|
+
import { FIRST_ACCOUNT_ID, type MasterLockRecord } from "./masterLock.js";
|
|
32
32
|
|
|
33
33
|
/**
|
|
34
34
|
* The idle window a freshly minted lock starts with.
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* `app_settings`, a `Map` in a test. Asking for a whole table would be asking each adopter
|
|
7
7
|
* to write a migration for three fields.
|
|
8
8
|
*/
|
|
9
|
-
import type { MasterLockStore } from "./masterLock";
|
|
9
|
+
import type { MasterLockStore } from "./masterLock.js";
|
|
10
10
|
|
|
11
11
|
/** The default key, so two apps' rows look the same when somebody goes looking. */
|
|
12
12
|
export const MASTER_LOCK_SETTING_KEY = "master_lock:record";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { describe, expect, test } from 'bun:test';
|
|
2
2
|
import type { ImagePipelineSpec } from 'cursedbelt-core/media';
|
|
3
|
-
import { renderImage } from './image';
|
|
3
|
+
import { renderImage } from './image.js';
|
|
4
4
|
|
|
5
5
|
// sharp is an OPTIONAL peer — skip this whole suite cleanly when it isn't installed.
|
|
6
6
|
let sharpFactory: typeof import('sharp').default | null = null;
|
|
@@ -14,7 +14,7 @@ export {
|
|
|
14
14
|
type VideoCodecPlan,
|
|
15
15
|
videoCodecPlan,
|
|
16
16
|
} from 'cursedbelt-core/media/ffmpeg';
|
|
17
|
-
export { renderImage } from './image';
|
|
17
|
+
export { renderImage } from './image.js';
|
|
18
18
|
// Streaming pipeline: faststart remux, HLS adaptive-bitrate ladder, scrub sprite + WebVTT,
|
|
19
19
|
// poster, codec-aware probe — pure builders/parsers (testable without ffmpeg).
|
|
20
20
|
export {
|
|
@@ -39,7 +39,7 @@ export {
|
|
|
39
39
|
type SpritePlan,
|
|
40
40
|
spriteArgs,
|
|
41
41
|
type VideoProbe,
|
|
42
|
-
} from './streaming';
|
|
42
|
+
} from './streaming.js';
|
|
43
43
|
export {
|
|
44
44
|
extractFrameJpeg,
|
|
45
45
|
extractThumbnail,
|
|
@@ -49,4 +49,4 @@ export {
|
|
|
49
49
|
probeVideoStream,
|
|
50
50
|
runFfmpegProgress,
|
|
51
51
|
trimVideo,
|
|
52
|
-
} from './video';
|
|
52
|
+
} from './video.js';
|
|
@@ -3,7 +3,7 @@ import { mkdtempSync, rmSync } from 'node:fs';
|
|
|
3
3
|
import { tmpdir } from 'node:os';
|
|
4
4
|
import { join } from 'node:path';
|
|
5
5
|
import type { VideoProgressEvent } from 'cursedbelt-core/media';
|
|
6
|
-
import { extractThumbnail, isFfmpegAvailable, probeMedia, trimVideo } from './video';
|
|
6
|
+
import { extractThumbnail, isFfmpegAvailable, probeMedia, trimVideo } from './video.js';
|
|
7
7
|
|
|
8
8
|
// ffmpeg/ffprobe are required for these; skip cleanly if absent (CI without them).
|
|
9
9
|
const haveFfmpeg = await isFfmpegAvailable();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { describe, expect, test } from 'bun:test';
|
|
2
2
|
import { Hono } from 'hono';
|
|
3
|
-
import { normalizeRoute } from './normalizeRoute';
|
|
3
|
+
import { normalizeRoute } from './normalizeRoute.js';
|
|
4
4
|
|
|
5
5
|
// Probe through a real Hono app so `c.req.routePath` is the genuine matched pattern.
|
|
6
6
|
async function labelFor(register: (app: Hono) => void, request: Request): Promise<string> {
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { Database } from 'bun:sqlite';
|
|
2
2
|
import { beforeEach, describe, expect, it } from 'bun:test';
|
|
3
3
|
import { Hono } from 'hono';
|
|
4
|
-
import { type RequestLoggerOpts, requestLogger } from '../middleware/requestLogger';
|
|
5
|
-
import { createMetricsBuffer } from './metricsBuffer';
|
|
4
|
+
import { type RequestLoggerOpts, requestLogger } from '../middleware/requestLogger.js';
|
|
5
|
+
import { createMetricsBuffer } from './metricsBuffer.js';
|
|
6
6
|
import {
|
|
7
7
|
type AnalyticsEngineDataset,
|
|
8
8
|
createTelemetrySink,
|
|
9
9
|
type TelemetrySink,
|
|
10
10
|
toDataPoint,
|
|
11
|
-
} from './telemetrySink';
|
|
11
|
+
} from './telemetrySink.js';
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* The two claims the seam makes, and nothing else:
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Database } from 'bun:sqlite';
|
|
2
|
-
import { createMetricsBuffer, type MetricRow, type MetricsBuffer } from './metricsBuffer';
|
|
2
|
+
import { createMetricsBuffer, type MetricRow, type MetricsBuffer } from './metricsBuffer.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* ONE seam for "this app served a request", with two backends and no third.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { MiddlewareHandler } from 'hono';
|
|
2
|
-
import type { CursedbeltEnv } from '../context';
|
|
2
|
+
import type { CursedbeltEnv } from '../context.js';
|
|
3
3
|
|
|
4
4
|
const HEADER = 'x-correlation-id';
|
|
5
5
|
// Accept a client-supplied id only if it is a sane, header-safe token (no CRLF /
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { describe, expect, test } from 'bun:test';
|
|
2
|
-
import { createApp } from '../app';
|
|
3
|
-
import { corsAllowlist, corsOptsFromEnv } from './corsAllowlist';
|
|
2
|
+
import { createApp } from '../app.js';
|
|
3
|
+
import { corsAllowlist, corsOptsFromEnv } from './corsAllowlist.js';
|
|
4
4
|
|
|
5
5
|
const SITE = 'example.com';
|
|
6
6
|
const APEX = 'https://example.com';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { ErrorHandler } from 'hono';
|
|
2
2
|
import { HTTPException } from 'hono/http-exception';
|
|
3
3
|
import type { ContentfulStatusCode } from 'hono/utils/http-status';
|
|
4
|
-
import type { CursedbeltEnv } from '../context';
|
|
5
|
-
import { ApiError, isAppError, toErrorEnvelope } from '../errors';
|
|
4
|
+
import type { CursedbeltEnv } from '../context.js';
|
|
5
|
+
import { ApiError, isAppError, toErrorEnvelope } from '../errors.js';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Hono `onError` handler. Converts ANY thrown value into the ONE canonical rich
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
// The cross-cutting cursedbelt server middleware set.
|
|
2
|
-
export { correlationId } from './correlationId';
|
|
3
|
-
export { type CorsOpts, corsAllowlist, corsOptsFromEnv } from './corsAllowlist';
|
|
4
|
-
export { errorEnvelope } from './errorEnvelope';
|
|
5
|
-
export { crossOriginRefusal } from './localOrigin';
|
|
6
|
-
export { clientIp, createRateLimiter, type RateLimitOpts } from './rateLimit';
|
|
7
|
-
export { type RequestLoggerOpts, requestLogger } from './requestLogger';
|
|
2
|
+
export { correlationId } from './correlationId.js';
|
|
3
|
+
export { type CorsOpts, corsAllowlist, corsOptsFromEnv } from './corsAllowlist.js';
|
|
4
|
+
export { errorEnvelope } from './errorEnvelope.js';
|
|
5
|
+
export { crossOriginRefusal } from './localOrigin.js';
|
|
6
|
+
export { clientIp, createRateLimiter, type RateLimitOpts } from './rateLimit.js';
|
|
7
|
+
export { type RequestLoggerOpts, requestLogger } from './requestLogger.js';
|
|
8
8
|
// The telemetry seam `requestLogger` writes through — re-exported here so a caller
|
|
9
9
|
// that reaches `./middleware` for the logger can bind Analytics Engine in the same import.
|
|
10
10
|
export {
|
|
@@ -13,16 +13,16 @@ export {
|
|
|
13
13
|
type TelemetryEvent,
|
|
14
14
|
type TelemetrySink,
|
|
15
15
|
type TelemetrySinkOptions,
|
|
16
|
-
} from '../metrics/telemetrySink';
|
|
16
|
+
} from '../metrics/telemetrySink.js';
|
|
17
17
|
export {
|
|
18
18
|
type CspDirectives,
|
|
19
19
|
type SecurityHeadersOpts,
|
|
20
20
|
securityHeaders,
|
|
21
|
-
} from './securityHeaders';
|
|
21
|
+
} from './securityHeaders.js';
|
|
22
22
|
export {
|
|
23
23
|
toValidationIssues,
|
|
24
24
|
VALIDATION_ERROR_CODE,
|
|
25
25
|
type ValidationIssue,
|
|
26
26
|
validationEnvelope,
|
|
27
|
-
} from '../errors';
|
|
28
|
-
export { type ZValidatorTarget, zValidator } from './zValidator';
|
|
27
|
+
} from '../errors.js';
|
|
28
|
+
export { type ZValidatorTarget, zValidator } from './zValidator.js';
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// block is not padding — it is the reason this can ship without a login.
|
|
4
4
|
|
|
5
5
|
import { describe, expect, test } from 'bun:test';
|
|
6
|
-
import { crossOriginRefusal } from './localOrigin';
|
|
6
|
+
import { crossOriginRefusal } from './localOrigin.js';
|
|
7
7
|
|
|
8
8
|
function req(headers: Record<string, string>, url = 'http://127.0.0.1:4747/api/overview'): Request {
|
|
9
9
|
return new Request(url, { headers });
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { describe, expect, it } from 'bun:test';
|
|
2
2
|
import { Hono } from 'hono';
|
|
3
|
-
import { clientIp, createRateLimiter } from './rateLimit';
|
|
3
|
+
import { clientIp, createRateLimiter } from './rateLimit.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* `x-forwarded-for` is written by the caller. If the limiter keys on it without
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Context, MiddlewareHandler } from 'hono';
|
|
2
2
|
import { getConnInfo } from 'hono/bun';
|
|
3
|
-
import { ApiError, toErrorEnvelope } from '../errors';
|
|
3
|
+
import { ApiError, toErrorEnvelope } from '../errors.js';
|
|
4
4
|
|
|
5
5
|
/** How much of the forwarded-header chain, if any, this server may believe. */
|
|
6
6
|
export interface ClientIpOptions {
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import type { Database } from 'bun:sqlite';
|
|
2
2
|
import type { MiddlewareHandler } from 'hono';
|
|
3
3
|
import { HTTPException } from 'hono/http-exception';
|
|
4
|
-
import type { CursedbeltEnv } from '../context';
|
|
5
|
-
import { isApiError } from '../errors';
|
|
6
|
-
import type { MetricsBuffer } from '../metrics/metricsBuffer';
|
|
7
|
-
import { normalizeRoute } from '../metrics/normalizeRoute';
|
|
4
|
+
import type { CursedbeltEnv } from '../context.js';
|
|
5
|
+
import { isApiError } from '../errors.js';
|
|
6
|
+
import type { MetricsBuffer } from '../metrics/metricsBuffer.js';
|
|
7
|
+
import { normalizeRoute } from '../metrics/normalizeRoute.js';
|
|
8
8
|
import {
|
|
9
9
|
type AnalyticsEngineDataset,
|
|
10
10
|
createTelemetrySink,
|
|
11
11
|
type TelemetrySink,
|
|
12
|
-
} from '../metrics/telemetrySink';
|
|
12
|
+
} from '../metrics/telemetrySink.js';
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Structured request/response logging. After each request it records one
|
|
@@ -3,15 +3,15 @@ import { Hono } from 'hono';
|
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import { ChunkStore } from 'cursedbelt-core/ctgr/chunk-store';
|
|
5
5
|
import { encodeRequest } from 'cursedbelt-core/ctgr';
|
|
6
|
-
import type { CursedbeltEnv } from '../context';
|
|
7
|
-
import { CTGR_ROUTE_PATTERN, unGETify } from '../ctgr';
|
|
6
|
+
import type { CursedbeltEnv } from '../context.js';
|
|
7
|
+
import { CTGR_ROUTE_PATTERN, unGETify } from '../ctgr.js';
|
|
8
8
|
import {
|
|
9
9
|
toValidationIssues,
|
|
10
10
|
VALIDATION_ERROR_CODE,
|
|
11
11
|
type ValidationIssue,
|
|
12
12
|
validationEnvelope,
|
|
13
|
-
} from '../errors';
|
|
14
|
-
import { zValidator } from './zValidator';
|
|
13
|
+
} from '../errors.js';
|
|
14
|
+
import { zValidator } from './zValidator.js';
|
|
15
15
|
|
|
16
16
|
const ORIGIN = 'http://localhost';
|
|
17
17
|
const json = (path: string, body: unknown) =>
|
|
@@ -29,8 +29,8 @@
|
|
|
29
29
|
*/
|
|
30
30
|
import type { Env, MiddlewareHandler } from 'hono';
|
|
31
31
|
import type { ZodType, z } from 'zod';
|
|
32
|
-
import type { CursedbeltEnv } from '../context';
|
|
33
|
-
import { validationEnvelope } from '../errors';
|
|
32
|
+
import type { CursedbeltEnv } from '../context.js';
|
|
33
|
+
import { validationEnvelope } from '../errors.js';
|
|
34
34
|
|
|
35
35
|
/** The request locations a schema can validate. Mirrors Hono's body/non-body split. */
|
|
36
36
|
export type ZValidatorTarget = 'json' | 'form' | 'query' | 'param';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Database } from 'bun:sqlite';
|
|
2
2
|
import { describe, expect, test } from 'bun:test';
|
|
3
|
-
import { addColumnIfMissing, applyRecommendedPragmas, columnExists, runMigrations } from './runner';
|
|
4
|
-
import type { Migration } from './types';
|
|
3
|
+
import { addColumnIfMissing, applyRecommendedPragmas, columnExists, runMigrations } from './runner.js';
|
|
4
|
+
import type { Migration } from './types.js';
|
|
5
5
|
|
|
6
6
|
describe('runMigrations', () => {
|
|
7
7
|
test('applies pending migrations once, in order, and is idempotent', () => {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Database } from 'bun:sqlite';
|
|
2
2
|
import { applyCcPragmas } from 'cwip/sqlite';
|
|
3
|
-
import type { Migration } from './types';
|
|
3
|
+
import type { Migration } from './types.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* The versioned SQLite migration runner — a tiny `_migrations`-sentinel runner, NOT
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, expect, it } from 'bun:test';
|
|
2
|
-
import { assertPublicOutboundUrl, assertResolvedPublicUrl, OUTBOUND_URL_BLOCKED } from './outboundGuard';
|
|
2
|
+
import { assertPublicOutboundUrl, assertResolvedPublicUrl, OUTBOUND_URL_BLOCKED } from './outboundGuard.js';
|
|
3
3
|
|
|
4
4
|
const code = (fn: () => unknown): string | undefined => {
|
|
5
5
|
try {
|
|
@@ -36,22 +36,22 @@
|
|
|
36
36
|
* route that notifies somebody else; producing is server-side code calling
|
|
37
37
|
* `center.notify*`.
|
|
38
38
|
*/
|
|
39
|
-
export { createNotificationHub } from "./hub";
|
|
39
|
+
export { createNotificationHub } from "./hub.js";
|
|
40
40
|
export type {
|
|
41
41
|
NotificationHub,
|
|
42
42
|
NotificationHubEvent,
|
|
43
43
|
NotificationHubListener,
|
|
44
44
|
NotificationHubOptions,
|
|
45
|
-
} from "./hub";
|
|
46
|
-
export { NOTIFICATION_MIGRATIONS, NOTIFICATIONS_TABLE } from "./migrations";
|
|
47
|
-
export { mountNotificationRoutes } from "./routes";
|
|
48
|
-
export type { NotificationRouteCenter, NotificationRoutesOptions } from "./routes";
|
|
49
|
-
export { createNotificationService } from "./service";
|
|
45
|
+
} from "./hub.js";
|
|
46
|
+
export { NOTIFICATION_MIGRATIONS, NOTIFICATIONS_TABLE } from "./migrations.js";
|
|
47
|
+
export { mountNotificationRoutes } from "./routes.js";
|
|
48
|
+
export type { NotificationRouteCenter, NotificationRoutesOptions } from "./routes.js";
|
|
49
|
+
export { createNotificationService } from "./service.js";
|
|
50
50
|
export type {
|
|
51
51
|
CreateNotificationServiceOptions,
|
|
52
52
|
NotificationService,
|
|
53
53
|
NotificationServiceMountOptions,
|
|
54
|
-
} from "./service";
|
|
54
|
+
} from "./service.js";
|
|
55
55
|
// Re-exported so a server consumer needs ONE import for the whole contract —
|
|
56
56
|
// the same courtesy `server/sharing` extends over `cursedbelt-core/sharing`. The
|
|
57
57
|
// engine remains cwip's; this is a door, not a copy.
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import type { Database } from "bun:sqlite";
|
|
17
17
|
import { migrateNotificationsSchema, type NotificationDb } from "cwip/notifications";
|
|
18
|
-
import type { Migration } from "../migration/types";
|
|
18
|
+
import type { Migration } from "../migration/types.js";
|
|
19
19
|
|
|
20
20
|
export const NOTIFICATIONS_TABLE = "notifications";
|
|
21
21
|
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
*/
|
|
36
36
|
import type { Context, Hono } from "hono";
|
|
37
37
|
import type { NotificationCenter, NotificationFilter } from "cwip/notifications";
|
|
38
|
-
import type { NotificationHub } from "./hub";
|
|
38
|
+
import type { NotificationHub } from "./hub.js";
|
|
39
39
|
|
|
40
40
|
/** The slice of the center these routes use — `createNotificationCenter(...)`
|
|
41
41
|
* satisfies it, and so does any app-specific facade over one. */
|