@syncular/server 0.1.3 → 0.2.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/README.md +773 -13
- package/dist/admin.d.ts +136 -0
- package/dist/admin.js +168 -0
- package/dist/blob-handlers.d.ts +69 -0
- package/dist/blob-handlers.js +245 -0
- package/dist/blob-store.d.ts +111 -0
- package/dist/blob-store.js +0 -0
- package/dist/content-encoding.d.ts +27 -0
- package/dist/content-encoding.js +69 -0
- package/dist/context.d.ts +151 -0
- package/dist/context.js +21 -0
- package/dist/crdt-merger.d.ts +28 -0
- package/dist/crdt-merger.js +11 -0
- package/dist/d1-storage.d.ts +50 -0
- package/dist/d1-storage.js +0 -0
- package/dist/errors.d.ts +35 -9
- package/dist/errors.js +220 -11
- package/dist/events-ring.d.ts +55 -0
- package/dist/events-ring.js +96 -0
- package/dist/events.d.ts +231 -0
- package/dist/events.js +22 -0
- package/dist/frame-bytes.d.ts +20 -0
- package/dist/frame-bytes.js +75 -0
- package/dist/handler.d.ts +9 -0
- package/dist/handler.js +490 -0
- package/dist/index.d.ts +42 -33
- package/dist/index.js +45 -27
- package/dist/lease-store.d.ts +50 -0
- package/dist/lease-store.js +0 -0
- package/dist/pg-executor-pglite.d.ts +27 -0
- package/dist/pg-executor-pglite.js +33 -0
- package/dist/pg-executor.d.ts +67 -0
- package/dist/pg-executor.js +56 -0
- package/dist/postgres-fanout.d.ts +83 -0
- package/dist/postgres-fanout.js +71 -0
- package/dist/postgres-storage.d.ts +69 -0
- package/dist/postgres-storage.js +766 -0
- package/dist/prune.d.ts +24 -39
- package/dist/prune.js +44 -146
- package/dist/pull.d.ts +42 -67
- package/dist/pull.js +387 -1187
- package/dist/push.d.ts +31 -66
- package/dist/push.js +406 -655
- package/dist/realtime.d.ts +197 -0
- package/dist/realtime.js +848 -0
- package/dist/relational-rows.d.ts +229 -0
- package/dist/relational-rows.js +514 -0
- package/dist/s3-blob-store.d.ts +142 -0
- package/dist/s3-blob-store.js +458 -0
- package/dist/s3-segment-store.d.ts +95 -0
- package/dist/s3-segment-store.js +380 -0
- package/dist/schema.d.ts +82 -286
- package/dist/schema.js +133 -9
- package/dist/scopes.d.ts +48 -0
- package/dist/scopes.js +98 -0
- package/dist/segment-download.d.ts +14 -0
- package/dist/segment-download.js +125 -0
- package/dist/segment-store.d.ts +81 -0
- package/dist/segment-store.js +63 -0
- package/dist/signed-url.d.ts +139 -0
- package/dist/signed-url.js +143 -0
- package/dist/sigv4.d.ts +97 -0
- package/dist/sigv4.js +161 -0
- package/dist/sqlite-blob-store.d.ts +22 -0
- package/dist/sqlite-blob-store.js +86 -0
- package/dist/sqlite-dialect.d.ts +101 -0
- package/dist/sqlite-dialect.js +250 -0
- package/dist/sqlite-image.d.ts +27 -0
- package/dist/sqlite-image.js +83 -0
- package/dist/sqlite-lease-store.d.ts +21 -0
- package/dist/sqlite-lease-store.js +94 -0
- package/dist/sqlite-segment-store.d.ts +25 -0
- package/dist/sqlite-segment-store.js +115 -0
- package/dist/sqlite-storage.d.ts +47 -0
- package/dist/sqlite-storage.js +477 -0
- package/dist/storage.d.ts +252 -0
- package/dist/storage.js +1 -0
- package/dist/validate.d.ts +83 -0
- package/dist/validate.js +44 -0
- package/package.json +17 -325
- package/src/admin.ts +312 -0
- package/src/blob-handlers.ts +340 -0
- package/src/blob-store.ts +0 -0
- package/src/content-encoding.ts +94 -0
- package/src/context.ts +176 -0
- package/src/crdt-merger.ts +33 -0
- package/src/d1-storage.ts +0 -0
- package/src/errors.ts +241 -19
- package/src/events-ring.ts +116 -0
- package/src/events.ts +291 -0
- package/src/frame-bytes.ts +94 -0
- package/src/handler.ts +678 -0
- package/src/index.ts +44 -27
- package/src/lease-store.ts +0 -0
- package/src/pg-executor-pglite.ts +63 -0
- package/src/pg-executor.ts +87 -0
- package/src/postgres-fanout.ts +143 -0
- package/src/postgres-storage.ts +1182 -0
- package/src/prune.ts +63 -289
- package/src/pull.ts +505 -1805
- package/src/push.ts +623 -1006
- package/src/realtime.ts +1082 -0
- package/src/relational-rows.ts +633 -0
- package/src/s3-blob-store.ts +616 -0
- package/src/s3-segment-store.ts +519 -0
- package/src/schema.ts +242 -281
- package/src/scopes.ts +127 -0
- package/src/segment-download.ts +169 -0
- package/src/segment-store.ts +154 -0
- package/src/signed-url.ts +308 -0
- package/src/sigv4.ts +267 -0
- package/src/sqlite-blob-store.ts +125 -0
- package/src/sqlite-dialect.ts +337 -0
- package/src/sqlite-image.ts +124 -0
- package/src/sqlite-lease-store.ts +144 -0
- package/src/sqlite-segment-store.ts +204 -0
- package/src/sqlite-storage.ts +792 -0
- package/src/storage.ts +316 -0
- package/src/validate.ts +123 -0
- package/dist/auth-leases.d.ts +0 -85
- package/dist/auth-leases.d.ts.map +0 -1
- package/dist/auth-leases.js +0 -368
- package/dist/auth-leases.js.map +0 -1
- package/dist/better-sqlite3.d.ts +0 -22
- package/dist/better-sqlite3.d.ts.map +0 -1
- package/dist/better-sqlite3.js +0 -16
- package/dist/better-sqlite3.js.map +0 -1
- package/dist/blobs/access.d.ts +0 -35
- package/dist/blobs/access.d.ts.map +0 -1
- package/dist/blobs/access.js +0 -149
- package/dist/blobs/access.js.map +0 -1
- package/dist/blobs/adapters/database.d.ts +0 -100
- package/dist/blobs/adapters/database.d.ts.map +0 -1
- package/dist/blobs/adapters/database.js +0 -247
- package/dist/blobs/adapters/database.js.map +0 -1
- package/dist/blobs/index.d.ts +0 -9
- package/dist/blobs/index.d.ts.map +0 -1
- package/dist/blobs/index.js +0 -9
- package/dist/blobs/index.js.map +0 -1
- package/dist/blobs/manager.d.ts +0 -220
- package/dist/blobs/manager.d.ts.map +0 -1
- package/dist/blobs/manager.js +0 -625
- package/dist/blobs/manager.js.map +0 -1
- package/dist/blobs/migrate.d.ts +0 -27
- package/dist/blobs/migrate.d.ts.map +0 -1
- package/dist/blobs/migrate.js +0 -127
- package/dist/blobs/migrate.js.map +0 -1
- package/dist/blobs/types.d.ts +0 -58
- package/dist/blobs/types.d.ts.map +0 -1
- package/dist/blobs/types.js +0 -5
- package/dist/blobs/types.js.map +0 -1
- package/dist/bun-sqlite.d.ts +0 -19
- package/dist/bun-sqlite.d.ts.map +0 -1
- package/dist/bun-sqlite.js +0 -19
- package/dist/bun-sqlite.js.map +0 -1
- package/dist/clients.d.ts +0 -15
- package/dist/clients.d.ts.map +0 -1
- package/dist/clients.js +0 -7
- package/dist/clients.js.map +0 -1
- package/dist/cloudflare/durable-object.d.ts +0 -93
- package/dist/cloudflare/durable-object.d.ts.map +0 -1
- package/dist/cloudflare/durable-object.js +0 -210
- package/dist/cloudflare/durable-object.js.map +0 -1
- package/dist/cloudflare/index.d.ts +0 -22
- package/dist/cloudflare/index.d.ts.map +0 -1
- package/dist/cloudflare/index.js +0 -22
- package/dist/cloudflare/index.js.map +0 -1
- package/dist/cloudflare/r2.d.ts +0 -180
- package/dist/cloudflare/r2.d.ts.map +0 -1
- package/dist/cloudflare/r2.js +0 -258
- package/dist/cloudflare/r2.js.map +0 -1
- package/dist/cloudflare/scope-cache.d.ts +0 -54
- package/dist/cloudflare/scope-cache.d.ts.map +0 -1
- package/dist/cloudflare/scope-cache.js +0 -223
- package/dist/cloudflare/scope-cache.js.map +0 -1
- package/dist/cloudflare/sentry.d.ts +0 -47
- package/dist/cloudflare/sentry.d.ts.map +0 -1
- package/dist/cloudflare/sentry.js +0 -163
- package/dist/cloudflare/sentry.js.map +0 -1
- package/dist/cloudflare/worker.d.ts +0 -46
- package/dist/cloudflare/worker.d.ts.map +0 -1
- package/dist/cloudflare/worker.js +0 -63
- package/dist/cloudflare/worker.js.map +0 -1
- package/dist/commit-integrity.d.ts +0 -38
- package/dist/commit-integrity.d.ts.map +0 -1
- package/dist/commit-integrity.js +0 -260
- package/dist/commit-integrity.js.map +0 -1
- package/dist/compaction.d.ts +0 -27
- package/dist/compaction.d.ts.map +0 -1
- package/dist/compaction.js +0 -49
- package/dist/compaction.js.map +0 -1
- package/dist/crdt-yjs/index.d.ts +0 -99
- package/dist/crdt-yjs/index.d.ts.map +0 -1
- package/dist/crdt-yjs/index.js +0 -629
- package/dist/crdt-yjs/index.js.map +0 -1
- package/dist/d1.d.ts +0 -13
- package/dist/d1.d.ts.map +0 -1
- package/dist/d1.js +0 -14
- package/dist/d1.js.map +0 -1
- package/dist/dialect/base.d.ts +0 -93
- package/dist/dialect/base.d.ts.map +0 -1
- package/dist/dialect/base.js +0 -181
- package/dist/dialect/base.js.map +0 -1
- package/dist/dialect/helpers.d.ts +0 -16
- package/dist/dialect/helpers.d.ts.map +0 -1
- package/dist/dialect/helpers.js +0 -83
- package/dist/dialect/helpers.js.map +0 -1
- package/dist/dialect/index.d.ts +0 -7
- package/dist/dialect/index.d.ts.map +0 -1
- package/dist/dialect/index.js +0 -7
- package/dist/dialect/index.js.map +0 -1
- package/dist/dialect/types.d.ts +0 -187
- package/dist/dialect/types.d.ts.map +0 -1
- package/dist/dialect/types.js +0 -8
- package/dist/dialect/types.js.map +0 -1
- package/dist/encrypted-crdt.d.ts +0 -67
- package/dist/encrypted-crdt.d.ts.map +0 -1
- package/dist/encrypted-crdt.js +0 -426
- package/dist/encrypted-crdt.js.map +0 -1
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js.map +0 -1
- package/dist/filesystem/index.d.ts +0 -44
- package/dist/filesystem/index.d.ts.map +0 -1
- package/dist/filesystem/index.js +0 -164
- package/dist/filesystem/index.js.map +0 -1
- package/dist/handlers/collection.d.ts +0 -20
- package/dist/handlers/collection.d.ts.map +0 -1
- package/dist/handlers/collection.js +0 -42
- package/dist/handlers/collection.js.map +0 -1
- package/dist/handlers/create-handler.d.ts +0 -156
- package/dist/handlers/create-handler.d.ts.map +0 -1
- package/dist/handlers/create-handler.js +0 -626
- package/dist/handlers/create-handler.js.map +0 -1
- package/dist/handlers/index.d.ts +0 -4
- package/dist/handlers/index.d.ts.map +0 -1
- package/dist/handlers/index.js +0 -4
- package/dist/handlers/index.js.map +0 -1
- package/dist/handlers/types.d.ts +0 -295
- package/dist/handlers/types.d.ts.map +0 -1
- package/dist/handlers/types.js +0 -2
- package/dist/handlers/types.js.map +0 -1
- package/dist/helpers/conflict.d.ts +0 -52
- package/dist/helpers/conflict.d.ts.map +0 -1
- package/dist/helpers/conflict.js +0 -49
- package/dist/helpers/conflict.js.map +0 -1
- package/dist/helpers/emitted-change.d.ts +0 -56
- package/dist/helpers/emitted-change.d.ts.map +0 -1
- package/dist/helpers/emitted-change.js +0 -46
- package/dist/helpers/emitted-change.js.map +0 -1
- package/dist/helpers/index.d.ts +0 -12
- package/dist/helpers/index.d.ts.map +0 -1
- package/dist/helpers/index.js +0 -12
- package/dist/helpers/index.js.map +0 -1
- package/dist/helpers/paginate.d.ts +0 -49
- package/dist/helpers/paginate.d.ts.map +0 -1
- package/dist/helpers/paginate.js +0 -54
- package/dist/helpers/paginate.js.map +0 -1
- package/dist/helpers/scope-authorization.d.ts +0 -7
- package/dist/helpers/scope-authorization.d.ts.map +0 -1
- package/dist/helpers/scope-authorization.js +0 -19
- package/dist/helpers/scope-authorization.js.map +0 -1
- package/dist/helpers/scope-commit-index.d.ts +0 -12
- package/dist/helpers/scope-commit-index.d.ts.map +0 -1
- package/dist/helpers/scope-commit-index.js +0 -35
- package/dist/helpers/scope-commit-index.js.map +0 -1
- package/dist/helpers/scope-strings.d.ts +0 -74
- package/dist/helpers/scope-strings.d.ts.map +0 -1
- package/dist/helpers/scope-strings.js +0 -82
- package/dist/helpers/scope-strings.js.map +0 -1
- package/dist/hono/api-key-auth.d.ts +0 -49
- package/dist/hono/api-key-auth.d.ts.map +0 -1
- package/dist/hono/api-key-auth.js +0 -108
- package/dist/hono/api-key-auth.js.map +0 -1
- package/dist/hono/audit-redaction.d.ts +0 -20
- package/dist/hono/audit-redaction.d.ts.map +0 -1
- package/dist/hono/audit-redaction.js +0 -85
- package/dist/hono/audit-redaction.js.map +0 -1
- package/dist/hono/blobs.d.ts +0 -75
- package/dist/hono/blobs.d.ts.map +0 -1
- package/dist/hono/blobs.js +0 -586
- package/dist/hono/blobs.js.map +0 -1
- package/dist/hono/console/gateway.d.ts +0 -42
- package/dist/hono/console/gateway.d.ts.map +0 -1
- package/dist/hono/console/gateway.js +0 -2158
- package/dist/hono/console/gateway.js.map +0 -1
- package/dist/hono/console/live-auth.d.ts +0 -7
- package/dist/hono/console/live-auth.d.ts.map +0 -1
- package/dist/hono/console/live-auth.js +0 -39
- package/dist/hono/console/live-auth.js.map +0 -1
- package/dist/hono/console/route-descriptor.d.ts +0 -6
- package/dist/hono/console/route-descriptor.d.ts.map +0 -1
- package/dist/hono/console/route-descriptor.js +0 -16
- package/dist/hono/console/route-descriptor.js.map +0 -1
- package/dist/hono/console/routes/api-keys.d.ts +0 -8
- package/dist/hono/console/routes/api-keys.d.ts.map +0 -1
- package/dist/hono/console/routes/api-keys.js +0 -575
- package/dist/hono/console/routes/api-keys.js.map +0 -1
- package/dist/hono/console/routes/clients.d.ts +0 -8
- package/dist/hono/console/routes/clients.d.ts.map +0 -1
- package/dist/hono/console/routes/clients.js +0 -322
- package/dist/hono/console/routes/clients.js.map +0 -1
- package/dist/hono/console/routes/commits.d.ts +0 -8
- package/dist/hono/console/routes/commits.d.ts.map +0 -1
- package/dist/hono/console/routes/commits.js +0 -882
- package/dist/hono/console/routes/commits.js.map +0 -1
- package/dist/hono/console/routes/context.d.ts +0 -188
- package/dist/hono/console/routes/context.d.ts.map +0 -1
- package/dist/hono/console/routes/context.js +0 -633
- package/dist/hono/console/routes/context.js.map +0 -1
- package/dist/hono/console/routes/events.d.ts +0 -8
- package/dist/hono/console/routes/events.d.ts.map +0 -1
- package/dist/hono/console/routes/events.js +0 -501
- package/dist/hono/console/routes/events.js.map +0 -1
- package/dist/hono/console/routes/maintenance.d.ts +0 -8
- package/dist/hono/console/routes/maintenance.d.ts.map +0 -1
- package/dist/hono/console/routes/maintenance.js +0 -341
- package/dist/hono/console/routes/maintenance.js.map +0 -1
- package/dist/hono/console/routes/shared.d.ts +0 -174
- package/dist/hono/console/routes/shared.d.ts.map +0 -1
- package/dist/hono/console/routes/shared.js +0 -583
- package/dist/hono/console/routes/shared.js.map +0 -1
- package/dist/hono/console/routes/stats.d.ts +0 -8
- package/dist/hono/console/routes/stats.d.ts.map +0 -1
- package/dist/hono/console/routes/stats.js +0 -295
- package/dist/hono/console/routes/stats.js.map +0 -1
- package/dist/hono/console/routes/storage.d.ts +0 -8
- package/dist/hono/console/routes/storage.d.ts.map +0 -1
- package/dist/hono/console/routes/storage.js +0 -121
- package/dist/hono/console/routes/storage.js.map +0 -1
- package/dist/hono/console/routes.d.ts +0 -36
- package/dist/hono/console/routes.d.ts.map +0 -1
- package/dist/hono/console/routes.js +0 -112
- package/dist/hono/console/routes.js.map +0 -1
- package/dist/hono/console/schema-errors.d.ts +0 -2
- package/dist/hono/console/schema-errors.d.ts.map +0 -1
- package/dist/hono/console/schema-errors.js +0 -17
- package/dist/hono/console/schema-errors.js.map +0 -1
- package/dist/hono/console/schemas.d.ts +0 -1515
- package/dist/hono/console/schemas.d.ts.map +0 -1
- package/dist/hono/console/schemas.js +0 -661
- package/dist/hono/console/schemas.js.map +0 -1
- package/dist/hono/console/types.d.ts +0 -213
- package/dist/hono/console/types.d.ts.map +0 -1
- package/dist/hono/console/types.js +0 -2
- package/dist/hono/console/types.js.map +0 -1
- package/dist/hono/console/ui.d.ts +0 -38
- package/dist/hono/console/ui.d.ts.map +0 -1
- package/dist/hono/console/ui.js +0 -43
- package/dist/hono/console/ui.js.map +0 -1
- package/dist/hono/create-server.d.ts +0 -71
- package/dist/hono/create-server.d.ts.map +0 -1
- package/dist/hono/create-server.js +0 -121
- package/dist/hono/create-server.js.map +0 -1
- package/dist/hono/errors.d.ts +0 -13
- package/dist/hono/errors.d.ts.map +0 -1
- package/dist/hono/errors.js +0 -21
- package/dist/hono/errors.js.map +0 -1
- package/dist/hono/index.d.ts +0 -20
- package/dist/hono/index.d.ts.map +0 -1
- package/dist/hono/index.js +0 -31
- package/dist/hono/index.js.map +0 -1
- package/dist/hono/openapi.d.ts +0 -72
- package/dist/hono/openapi.d.ts.map +0 -1
- package/dist/hono/openapi.js +0 -99
- package/dist/hono/openapi.js.map +0 -1
- package/dist/hono/proxy/connection-manager.d.ts +0 -78
- package/dist/hono/proxy/connection-manager.d.ts.map +0 -1
- package/dist/hono/proxy/connection-manager.js +0 -251
- package/dist/hono/proxy/connection-manager.js.map +0 -1
- package/dist/hono/proxy/index.d.ts +0 -8
- package/dist/hono/proxy/index.d.ts.map +0 -1
- package/dist/hono/proxy/index.js +0 -8
- package/dist/hono/proxy/index.js.map +0 -1
- package/dist/hono/proxy/routes.d.ts +0 -86
- package/dist/hono/proxy/routes.d.ts.map +0 -1
- package/dist/hono/proxy/routes.js +0 -183
- package/dist/hono/proxy/routes.js.map +0 -1
- package/dist/hono/rate-limit.d.ts +0 -101
- package/dist/hono/rate-limit.d.ts.map +0 -1
- package/dist/hono/rate-limit.js +0 -184
- package/dist/hono/rate-limit.js.map +0 -1
- package/dist/hono/realtime-sync-packs.d.ts +0 -43
- package/dist/hono/realtime-sync-packs.d.ts.map +0 -1
- package/dist/hono/realtime-sync-packs.js +0 -219
- package/dist/hono/realtime-sync-packs.js.map +0 -1
- package/dist/hono/routes/audit.d.ts +0 -12
- package/dist/hono/routes/audit.d.ts.map +0 -1
- package/dist/hono/routes/audit.js +0 -385
- package/dist/hono/routes/audit.js.map +0 -1
- package/dist/hono/routes/auth-leases.d.ts +0 -8
- package/dist/hono/routes/auth-leases.d.ts.map +0 -1
- package/dist/hono/routes/auth-leases.js +0 -88
- package/dist/hono/routes/auth-leases.js.map +0 -1
- package/dist/hono/routes/combined.d.ts +0 -8
- package/dist/hono/routes/combined.d.ts.map +0 -1
- package/dist/hono/routes/combined.js +0 -392
- package/dist/hono/routes/combined.js.map +0 -1
- package/dist/hono/routes/context.d.ts +0 -314
- package/dist/hono/routes/context.d.ts.map +0 -1
- package/dist/hono/routes/context.js +0 -1147
- package/dist/hono/routes/context.js.map +0 -1
- package/dist/hono/routes/health.d.ts +0 -8
- package/dist/hono/routes/health.d.ts.map +0 -1
- package/dist/hono/routes/health.js +0 -16
- package/dist/hono/routes/health.js.map +0 -1
- package/dist/hono/routes/realtime.d.ts +0 -9
- package/dist/hono/routes/realtime.d.ts.map +0 -1
- package/dist/hono/routes/realtime.js +0 -626
- package/dist/hono/routes/realtime.js.map +0 -1
- package/dist/hono/routes/shared.d.ts +0 -689
- package/dist/hono/routes/shared.d.ts.map +0 -1
- package/dist/hono/routes/shared.js +0 -972
- package/dist/hono/routes/shared.js.map +0 -1
- package/dist/hono/routes/snapshots.d.ts +0 -10
- package/dist/hono/routes/snapshots.d.ts.map +0 -1
- package/dist/hono/routes/snapshots.js +0 -281
- package/dist/hono/routes/snapshots.js.map +0 -1
- package/dist/hono/routes.d.ts +0 -19
- package/dist/hono/routes.d.ts.map +0 -1
- package/dist/hono/routes.js +0 -37
- package/dist/hono/routes.js.map +0 -1
- package/dist/hono/validation.d.ts +0 -5
- package/dist/hono/validation.d.ts.map +0 -1
- package/dist/hono/validation.js +0 -47
- package/dist/hono/validation.js.map +0 -1
- package/dist/hono/websocket-origin.d.ts +0 -9
- package/dist/hono/websocket-origin.d.ts.map +0 -1
- package/dist/hono/websocket-origin.js +0 -96
- package/dist/hono/websocket-origin.js.map +0 -1
- package/dist/hono/ws.d.ts +0 -341
- package/dist/hono/ws.d.ts.map +0 -1
- package/dist/hono/ws.js +0 -711
- package/dist/hono/ws.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/libsql.d.ts +0 -29
- package/dist/libsql.d.ts.map +0 -1
- package/dist/libsql.js +0 -25
- package/dist/libsql.js.map +0 -1
- package/dist/migrate.d.ts +0 -14
- package/dist/migrate.d.ts.map +0 -1
- package/dist/migrate.js +0 -13
- package/dist/migrate.js.map +0 -1
- package/dist/neon.d.ts +0 -21
- package/dist/neon.d.ts.map +0 -1
- package/dist/neon.js +0 -22
- package/dist/neon.js.map +0 -1
- package/dist/notify.d.ts +0 -77
- package/dist/notify.d.ts.map +0 -1
- package/dist/notify.js +0 -233
- package/dist/notify.js.map +0 -1
- package/dist/pglite.d.ts +0 -37
- package/dist/pglite.d.ts.map +0 -1
- package/dist/pglite.js +0 -37
- package/dist/pglite.js.map +0 -1
- package/dist/plugins/index.d.ts +0 -2
- package/dist/plugins/index.d.ts.map +0 -1
- package/dist/plugins/index.js +0 -2
- package/dist/plugins/index.js.map +0 -1
- package/dist/plugins/types.d.ts +0 -73
- package/dist/plugins/types.d.ts.map +0 -1
- package/dist/plugins/types.js +0 -30
- package/dist/plugins/types.js.map +0 -1
- package/dist/postgres/index.d.ts +0 -68
- package/dist/postgres/index.d.ts.map +0 -1
- package/dist/postgres/index.js +0 -924
- package/dist/postgres/index.js.map +0 -1
- package/dist/proxy/collection.d.ts +0 -7
- package/dist/proxy/collection.d.ts.map +0 -1
- package/dist/proxy/collection.js +0 -6
- package/dist/proxy/collection.js.map +0 -1
- package/dist/proxy/handler.d.ts +0 -42
- package/dist/proxy/handler.d.ts.map +0 -1
- package/dist/proxy/handler.js +0 -102
- package/dist/proxy/handler.js.map +0 -1
- package/dist/proxy/index.d.ts +0 -9
- package/dist/proxy/index.d.ts.map +0 -1
- package/dist/proxy/index.js +0 -14
- package/dist/proxy/index.js.map +0 -1
- package/dist/proxy/mutation-detector.d.ts +0 -35
- package/dist/proxy/mutation-detector.d.ts.map +0 -1
- package/dist/proxy/mutation-detector.js +0 -246
- package/dist/proxy/mutation-detector.js.map +0 -1
- package/dist/proxy/oplog.d.ts +0 -30
- package/dist/proxy/oplog.d.ts.map +0 -1
- package/dist/proxy/oplog.js +0 -137
- package/dist/proxy/oplog.js.map +0 -1
- package/dist/proxy/types.d.ts +0 -44
- package/dist/proxy/types.d.ts.map +0 -1
- package/dist/proxy/types.js +0 -7
- package/dist/proxy/types.js.map +0 -1
- package/dist/prune.d.ts.map +0 -1
- package/dist/prune.js.map +0 -1
- package/dist/pull.d.ts.map +0 -1
- package/dist/pull.js.map +0 -1
- package/dist/push.d.ts.map +0 -1
- package/dist/push.js.map +0 -1
- package/dist/realtime/in-memory.d.ts +0 -13
- package/dist/realtime/in-memory.d.ts.map +0 -1
- package/dist/realtime/in-memory.js +0 -28
- package/dist/realtime/in-memory.js.map +0 -1
- package/dist/realtime/index.d.ts +0 -4
- package/dist/realtime/index.d.ts.map +0 -1
- package/dist/realtime/index.js +0 -3
- package/dist/realtime/index.js.map +0 -1
- package/dist/realtime/types.d.ts +0 -62
- package/dist/realtime/types.d.ts.map +0 -1
- package/dist/realtime/types.js +0 -19
- package/dist/realtime/types.js.map +0 -1
- package/dist/relay/client-role/forward-engine.d.ts +0 -63
- package/dist/relay/client-role/forward-engine.d.ts.map +0 -1
- package/dist/relay/client-role/forward-engine.js +0 -267
- package/dist/relay/client-role/forward-engine.js.map +0 -1
- package/dist/relay/client-role/index.d.ts +0 -9
- package/dist/relay/client-role/index.d.ts.map +0 -1
- package/dist/relay/client-role/index.js +0 -9
- package/dist/relay/client-role/index.js.map +0 -1
- package/dist/relay/client-role/pull-engine.d.ts +0 -72
- package/dist/relay/client-role/pull-engine.d.ts.map +0 -1
- package/dist/relay/client-role/pull-engine.js +0 -249
- package/dist/relay/client-role/pull-engine.js.map +0 -1
- package/dist/relay/client-role/sequence-mapper.d.ts +0 -65
- package/dist/relay/client-role/sequence-mapper.d.ts.map +0 -1
- package/dist/relay/client-role/sequence-mapper.js +0 -161
- package/dist/relay/client-role/sequence-mapper.js.map +0 -1
- package/dist/relay/evaluation/relay-paths.d.ts +0 -41
- package/dist/relay/evaluation/relay-paths.d.ts.map +0 -1
- package/dist/relay/evaluation/relay-paths.js +0 -504
- package/dist/relay/evaluation/relay-paths.js.map +0 -1
- package/dist/relay/evaluation/rust-boundary.d.ts +0 -47
- package/dist/relay/evaluation/rust-boundary.d.ts.map +0 -1
- package/dist/relay/evaluation/rust-boundary.js +0 -220
- package/dist/relay/evaluation/rust-boundary.js.map +0 -1
- package/dist/relay/index.d.ts +0 -37
- package/dist/relay/index.d.ts.map +0 -1
- package/dist/relay/index.js +0 -44
- package/dist/relay/index.js.map +0 -1
- package/dist/relay/migrate.d.ts +0 -18
- package/dist/relay/migrate.d.ts.map +0 -1
- package/dist/relay/migrate.js +0 -99
- package/dist/relay/migrate.js.map +0 -1
- package/dist/relay/mode-manager.d.ts +0 -60
- package/dist/relay/mode-manager.d.ts.map +0 -1
- package/dist/relay/mode-manager.js +0 -114
- package/dist/relay/mode-manager.js.map +0 -1
- package/dist/relay/realtime.d.ts +0 -90
- package/dist/relay/realtime.d.ts.map +0 -1
- package/dist/relay/realtime.js +0 -147
- package/dist/relay/realtime.js.map +0 -1
- package/dist/relay/relay.d.ts +0 -190
- package/dist/relay/relay.d.ts.map +0 -1
- package/dist/relay/relay.js +0 -320
- package/dist/relay/relay.js.map +0 -1
- package/dist/relay/schema.d.ts +0 -158
- package/dist/relay/schema.d.ts.map +0 -1
- package/dist/relay/schema.js +0 -7
- package/dist/relay/schema.js.map +0 -1
- package/dist/relay/server-role/index.d.ts +0 -56
- package/dist/relay/server-role/index.d.ts.map +0 -1
- package/dist/relay/server-role/index.js +0 -193
- package/dist/relay/server-role/index.js.map +0 -1
- package/dist/relay/server-role/pull.d.ts +0 -27
- package/dist/relay/server-role/pull.d.ts.map +0 -1
- package/dist/relay/server-role/pull.js +0 -24
- package/dist/relay/server-role/pull.js.map +0 -1
- package/dist/relay/server-role/push.d.ts +0 -29
- package/dist/relay/server-role/push.d.ts.map +0 -1
- package/dist/relay/server-role/push.js +0 -122
- package/dist/relay/server-role/push.js.map +0 -1
- package/dist/s3/index.d.ts +0 -83
- package/dist/s3/index.d.ts.map +0 -1
- package/dist/s3/index.js +0 -223
- package/dist/s3/index.js.map +0 -1
- package/dist/schema.d.ts.map +0 -1
- package/dist/schema.js.map +0 -1
- package/dist/service-worker/index.d.ts +0 -114
- package/dist/service-worker/index.d.ts.map +0 -1
- package/dist/service-worker/index.js +0 -487
- package/dist/service-worker/index.js.map +0 -1
- package/dist/snapshot-artifacts/sqlite-bun.d.ts +0 -15
- package/dist/snapshot-artifacts/sqlite-bun.d.ts.map +0 -1
- package/dist/snapshot-artifacts/sqlite-bun.js +0 -128
- package/dist/snapshot-artifacts/sqlite-bun.js.map +0 -1
- package/dist/snapshot-artifacts.d.ts +0 -206
- package/dist/snapshot-artifacts.d.ts.map +0 -1
- package/dist/snapshot-artifacts.js +0 -545
- package/dist/snapshot-artifacts.js.map +0 -1
- package/dist/snapshot-chunks/db-metadata.d.ts +0 -56
- package/dist/snapshot-chunks/db-metadata.d.ts.map +0 -1
- package/dist/snapshot-chunks/db-metadata.js +0 -360
- package/dist/snapshot-chunks/db-metadata.js.map +0 -1
- package/dist/snapshot-chunks/index.d.ts +0 -8
- package/dist/snapshot-chunks/index.d.ts.map +0 -1
- package/dist/snapshot-chunks/index.js +0 -8
- package/dist/snapshot-chunks/index.js.map +0 -1
- package/dist/snapshot-chunks/types.d.ts +0 -80
- package/dist/snapshot-chunks/types.d.ts.map +0 -1
- package/dist/snapshot-chunks/types.js +0 -8
- package/dist/snapshot-chunks/types.js.map +0 -1
- package/dist/snapshot-chunks.d.ts +0 -90
- package/dist/snapshot-chunks.d.ts.map +0 -1
- package/dist/snapshot-chunks.js +0 -304
- package/dist/snapshot-chunks.js.map +0 -1
- package/dist/sqlite/index.d.ts +0 -53
- package/dist/sqlite/index.d.ts.map +0 -1
- package/dist/sqlite/index.js +0 -795
- package/dist/sqlite/index.js.map +0 -1
- package/dist/sqlite3.d.ts +0 -22
- package/dist/sqlite3.d.ts.map +0 -1
- package/dist/sqlite3.js +0 -99
- package/dist/sqlite3.js.map +0 -1
- package/dist/stats.d.ts +0 -28
- package/dist/stats.d.ts.map +0 -1
- package/dist/stats.js +0 -93
- package/dist/stats.js.map +0 -1
- package/dist/subscriptions/cache.d.ts +0 -58
- package/dist/subscriptions/cache.d.ts.map +0 -1
- package/dist/subscriptions/cache.js +0 -250
- package/dist/subscriptions/cache.js.map +0 -1
- package/dist/subscriptions/index.d.ts +0 -3
- package/dist/subscriptions/index.d.ts.map +0 -1
- package/dist/subscriptions/index.js +0 -3
- package/dist/subscriptions/index.js.map +0 -1
- package/dist/subscriptions/resolve.d.ts +0 -40
- package/dist/subscriptions/resolve.d.ts.map +0 -1
- package/dist/subscriptions/resolve.js +0 -275
- package/dist/subscriptions/resolve.js.map +0 -1
- package/dist/sync.d.ts +0 -24
- package/dist/sync.d.ts.map +0 -1
- package/dist/sync.js +0 -27
- package/dist/sync.js.map +0 -1
- package/src/auth-leases.ts +0 -649
- package/src/better-sqlite3.ts +0 -35
- package/src/blobs/access.ts +0 -244
- package/src/blobs/adapters/database.ts +0 -397
- package/src/blobs/index.ts +0 -9
- package/src/blobs/manager.ts +0 -901
- package/src/blobs/migrate.ts +0 -158
- package/src/blobs/types.ts +0 -74
- package/src/bun-sqlite-ambient.d.ts +0 -19
- package/src/bun-sqlite.ts +0 -27
- package/src/clients.ts +0 -22
- package/src/cloudflare/durable-object.ts +0 -289
- package/src/cloudflare/index.ts +0 -22
- package/src/cloudflare/r2.ts +0 -526
- package/src/cloudflare/scope-cache.ts +0 -341
- package/src/cloudflare/sentry.ts +0 -230
- package/src/cloudflare/worker.ts +0 -77
- package/src/commit-integrity.ts +0 -371
- package/src/compaction.ts +0 -77
- package/src/crdt-yjs/index.ts +0 -931
- package/src/d1.ts +0 -16
- package/src/dialect/base.ts +0 -360
- package/src/dialect/helpers.ts +0 -92
- package/src/dialect/index.ts +0 -7
- package/src/dialect/types.ts +0 -247
- package/src/encrypted-crdt.ts +0 -786
- package/src/filesystem/index.ts +0 -262
- package/src/handlers/collection.ts +0 -121
- package/src/handlers/create-handler.ts +0 -1134
- package/src/handlers/index.ts +0 -3
- package/src/handlers/types.ts +0 -403
- package/src/helpers/conflict.ts +0 -64
- package/src/helpers/emitted-change.ts +0 -69
- package/src/helpers/index.ts +0 -12
- package/src/helpers/paginate.ts +0 -82
- package/src/helpers/scope-authorization.ts +0 -27
- package/src/helpers/scope-commit-index.ts +0 -52
- package/src/helpers/scope-strings.ts +0 -101
- package/src/hono/api-key-auth.ts +0 -177
- package/src/hono/audit-redaction.ts +0 -135
- package/src/hono/blobs.ts +0 -851
- package/src/hono/console/gateway.ts +0 -3046
- package/src/hono/console/live-auth.ts +0 -46
- package/src/hono/console/route-descriptor.ts +0 -22
- package/src/hono/console/routes/api-keys.ts +0 -721
- package/src/hono/console/routes/clients.ts +0 -447
- package/src/hono/console/routes/commits.ts +0 -1137
- package/src/hono/console/routes/context.ts +0 -956
- package/src/hono/console/routes/events.ts +0 -669
- package/src/hono/console/routes/maintenance.ts +0 -461
- package/src/hono/console/routes/shared.ts +0 -816
- package/src/hono/console/routes/stats.ts +0 -392
- package/src/hono/console/routes/storage.ts +0 -159
- package/src/hono/console/routes.ts +0 -146
- package/src/hono/console/schema-errors.ts +0 -23
- package/src/hono/console/schemas.ts +0 -914
- package/src/hono/console/types.ts +0 -223
- package/src/hono/console/ui.ts +0 -100
- package/src/hono/create-server.ts +0 -230
- package/src/hono/errors.ts +0 -50
- package/src/hono/index.ts +0 -54
- package/src/hono/openapi.ts +0 -139
- package/src/hono/proxy/connection-manager.ts +0 -340
- package/src/hono/proxy/index.ts +0 -8
- package/src/hono/proxy/routes.ts +0 -272
- package/src/hono/rate-limit.ts +0 -319
- package/src/hono/realtime-sync-packs.ts +0 -354
- package/src/hono/routes/audit.ts +0 -499
- package/src/hono/routes/auth-leases.ts +0 -119
- package/src/hono/routes/combined.ts +0 -583
- package/src/hono/routes/context.ts +0 -1629
- package/src/hono/routes/health.ts +0 -26
- package/src/hono/routes/realtime.ts +0 -808
- package/src/hono/routes/shared.ts +0 -1626
- package/src/hono/routes/snapshots.ts +0 -345
- package/src/hono/routes.ts +0 -68
- package/src/hono/validation.ts +0 -81
- package/src/hono/websocket-origin.ts +0 -131
- package/src/hono/ws.ts +0 -1134
- package/src/libsql.ts +0 -51
- package/src/migrate.ts +0 -20
- package/src/neon.ts +0 -28
- package/src/notify.ts +0 -341
- package/src/pglite.ts +0 -68
- package/src/plugins/index.ts +0 -1
- package/src/plugins/types.ts +0 -144
- package/src/postgres/index.ts +0 -1291
- package/src/proxy/collection.ts +0 -17
- package/src/proxy/handler.ts +0 -159
- package/src/proxy/index.ts +0 -21
- package/src/proxy/mutation-detector.ts +0 -281
- package/src/proxy/oplog.ts +0 -181
- package/src/proxy/types.ts +0 -46
- package/src/realtime/in-memory.ts +0 -33
- package/src/realtime/index.ts +0 -7
- package/src/realtime/types.ts +0 -90
- package/src/relay/bun-types.d.ts +0 -50
- package/src/relay/client-role/forward-engine.ts +0 -355
- package/src/relay/client-role/index.ts +0 -9
- package/src/relay/client-role/pull-engine.ts +0 -329
- package/src/relay/client-role/sequence-mapper.ts +0 -201
- package/src/relay/evaluation/relay-paths.ts +0 -699
- package/src/relay/evaluation/rust-boundary.ts +0 -464
- package/src/relay/index.ts +0 -50
- package/src/relay/migrate.ts +0 -113
- package/src/relay/mode-manager.ts +0 -142
- package/src/relay/realtime.ts +0 -207
- package/src/relay/relay.ts +0 -431
- package/src/relay/schema.ts +0 -171
- package/src/relay/server-role/index.ts +0 -338
- package/src/relay/server-role/pull.ts +0 -43
- package/src/relay/server-role/push.ts +0 -164
- package/src/s3/index.ts +0 -346
- package/src/service-worker/index.ts +0 -773
- package/src/snapshot-artifacts/sqlite-bun.ts +0 -168
- package/src/snapshot-artifacts.ts +0 -896
- package/src/snapshot-chunks/db-metadata.ts +0 -537
- package/src/snapshot-chunks/index.ts +0 -8
- package/src/snapshot-chunks/types.ts +0 -105
- package/src/snapshot-chunks.ts +0 -453
- package/src/sqlite/index.ts +0 -1064
- package/src/sqlite3.ts +0 -137
- package/src/stats.ts +0 -180
- package/src/subscriptions/cache.ts +0 -376
- package/src/subscriptions/index.ts +0 -2
- package/src/subscriptions/resolve.ts +0 -357
- package/src/sync.ts +0 -111
package/src/blobs/migrate.ts
DELETED
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @syncular/server - Blob storage migrations
|
|
3
|
-
*
|
|
4
|
-
* These migrations are separate from core sync migrations because
|
|
5
|
-
* blob storage is optional and may use external storage (S3/R2).
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import type { Kysely } from 'kysely';
|
|
9
|
-
import { sql } from 'kysely';
|
|
10
|
-
import type { SyncBlobDb, SyncBlobUploadsDb } from './types';
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Ensures the blob uploads tracking schema exists.
|
|
14
|
-
* This table is required for the blob manager regardless of storage backend.
|
|
15
|
-
*
|
|
16
|
-
* For PostgreSQL.
|
|
17
|
-
*/
|
|
18
|
-
async function ensureBlobUploadsSchemaPostgres<DB extends SyncBlobUploadsDb>(
|
|
19
|
-
db: Kysely<DB>
|
|
20
|
-
): Promise<void> {
|
|
21
|
-
await db.schema
|
|
22
|
-
.createTable('sync_blob_uploads')
|
|
23
|
-
.ifNotExists()
|
|
24
|
-
.addColumn('partition_id', 'text', (col) => col.notNull())
|
|
25
|
-
.addColumn('hash', 'text', (col) => col.notNull())
|
|
26
|
-
.addColumn('size', 'bigint', (col) => col.notNull())
|
|
27
|
-
.addColumn('mime_type', 'text', (col) => col.notNull())
|
|
28
|
-
.addColumn('status', 'text', (col) => col.notNull())
|
|
29
|
-
.addColumn('actor_id', 'text', (col) => col.notNull())
|
|
30
|
-
.addColumn('created_at', 'timestamptz', (col) =>
|
|
31
|
-
col.notNull().defaultTo(sql`now()`)
|
|
32
|
-
)
|
|
33
|
-
.addColumn('expires_at', 'timestamptz', (col) => col.notNull())
|
|
34
|
-
.addColumn('completed_at', 'timestamptz')
|
|
35
|
-
.addPrimaryKeyConstraint('pk_sync_blob_uploads', ['partition_id', 'hash'])
|
|
36
|
-
.execute();
|
|
37
|
-
|
|
38
|
-
await db.schema
|
|
39
|
-
.createIndex('idx_sync_blob_uploads_status')
|
|
40
|
-
.ifNotExists()
|
|
41
|
-
.on('sync_blob_uploads')
|
|
42
|
-
.columns(['partition_id', 'status'])
|
|
43
|
-
.execute();
|
|
44
|
-
|
|
45
|
-
await db.schema
|
|
46
|
-
.createIndex('idx_sync_blob_uploads_expires_at')
|
|
47
|
-
.ifNotExists()
|
|
48
|
-
.on('sync_blob_uploads')
|
|
49
|
-
.columns(['partition_id', 'expires_at'])
|
|
50
|
-
.execute();
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* Ensures the blob uploads tracking schema exists.
|
|
55
|
-
* This table is required for the blob manager regardless of storage backend.
|
|
56
|
-
*
|
|
57
|
-
* For SQLite.
|
|
58
|
-
*/
|
|
59
|
-
async function ensureBlobUploadsSchemasSqlite<DB extends SyncBlobUploadsDb>(
|
|
60
|
-
db: Kysely<DB>
|
|
61
|
-
): Promise<void> {
|
|
62
|
-
await db.schema
|
|
63
|
-
.createTable('sync_blob_uploads')
|
|
64
|
-
.ifNotExists()
|
|
65
|
-
.addColumn('partition_id', 'text', (col) => col.notNull())
|
|
66
|
-
.addColumn('hash', 'text', (col) => col.notNull())
|
|
67
|
-
.addColumn('size', 'integer', (col) => col.notNull())
|
|
68
|
-
.addColumn('mime_type', 'text', (col) => col.notNull())
|
|
69
|
-
.addColumn('status', 'text', (col) => col.notNull())
|
|
70
|
-
.addColumn('actor_id', 'text', (col) => col.notNull())
|
|
71
|
-
.addColumn('created_at', 'text', (col) =>
|
|
72
|
-
col.notNull().defaultTo(sql`(datetime('now'))`)
|
|
73
|
-
)
|
|
74
|
-
.addColumn('expires_at', 'text', (col) => col.notNull())
|
|
75
|
-
.addColumn('completed_at', 'text')
|
|
76
|
-
.addPrimaryKeyConstraint('pk_sync_blob_uploads', ['partition_id', 'hash'])
|
|
77
|
-
.execute();
|
|
78
|
-
|
|
79
|
-
await db.schema
|
|
80
|
-
.createIndex('idx_sync_blob_uploads_status')
|
|
81
|
-
.ifNotExists()
|
|
82
|
-
.on('sync_blob_uploads')
|
|
83
|
-
.columns(['partition_id', 'status'])
|
|
84
|
-
.execute();
|
|
85
|
-
|
|
86
|
-
await db.schema
|
|
87
|
-
.createIndex('idx_sync_blob_uploads_expires_at')
|
|
88
|
-
.ifNotExists()
|
|
89
|
-
.on('sync_blob_uploads')
|
|
90
|
-
.columns(['partition_id', 'expires_at'])
|
|
91
|
-
.execute();
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
/**
|
|
95
|
-
* Ensures the blob storage schema exists (for database adapter).
|
|
96
|
-
* Only needed if using the database blob storage adapter.
|
|
97
|
-
*
|
|
98
|
-
* For PostgreSQL.
|
|
99
|
-
*/
|
|
100
|
-
export async function ensureBlobStorageSchemaPostgres<DB extends SyncBlobDb>(
|
|
101
|
-
db: Kysely<DB>
|
|
102
|
-
): Promise<void> {
|
|
103
|
-
// First ensure uploads table
|
|
104
|
-
await ensureBlobUploadsSchemaPostgres(db);
|
|
105
|
-
|
|
106
|
-
// Then create blobs table
|
|
107
|
-
await db.schema
|
|
108
|
-
.createTable('sync_blobs')
|
|
109
|
-
.ifNotExists()
|
|
110
|
-
.addColumn('partition_id', 'text', (col) => col.notNull())
|
|
111
|
-
.addColumn('hash', 'text', (col) => col.notNull())
|
|
112
|
-
.addColumn('size', 'bigint', (col) => col.notNull())
|
|
113
|
-
.addColumn('mime_type', 'text', (col) => col.notNull())
|
|
114
|
-
.addColumn('body', 'bytea', (col) => col.notNull())
|
|
115
|
-
.addColumn('created_at', 'timestamptz', (col) =>
|
|
116
|
-
col.notNull().defaultTo(sql`now()`)
|
|
117
|
-
)
|
|
118
|
-
.addPrimaryKeyConstraint('pk_sync_blobs', ['partition_id', 'hash'])
|
|
119
|
-
.execute();
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
/**
|
|
123
|
-
* Ensures the blob storage schema exists (for database adapter).
|
|
124
|
-
* Only needed if using the database blob storage adapter.
|
|
125
|
-
*
|
|
126
|
-
* For SQLite.
|
|
127
|
-
*/
|
|
128
|
-
export async function ensureBlobStorageSchemaSqlite<DB extends SyncBlobDb>(
|
|
129
|
-
db: Kysely<DB>
|
|
130
|
-
): Promise<void> {
|
|
131
|
-
// First ensure uploads table
|
|
132
|
-
await ensureBlobUploadsSchemasSqlite(db);
|
|
133
|
-
|
|
134
|
-
// Then create blobs table
|
|
135
|
-
await db.schema
|
|
136
|
-
.createTable('sync_blobs')
|
|
137
|
-
.ifNotExists()
|
|
138
|
-
.addColumn('partition_id', 'text', (col) => col.notNull())
|
|
139
|
-
.addColumn('hash', 'text', (col) => col.notNull())
|
|
140
|
-
.addColumn('size', 'integer', (col) => col.notNull())
|
|
141
|
-
.addColumn('mime_type', 'text', (col) => col.notNull())
|
|
142
|
-
.addColumn('body', 'blob', (col) => col.notNull())
|
|
143
|
-
.addColumn('created_at', 'text', (col) =>
|
|
144
|
-
col.notNull().defaultTo(sql`(datetime('now'))`)
|
|
145
|
-
)
|
|
146
|
-
.addPrimaryKeyConstraint('pk_sync_blobs', ['partition_id', 'hash'])
|
|
147
|
-
.execute();
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
/**
|
|
151
|
-
* Drops the blob schema from the database.
|
|
152
|
-
*/
|
|
153
|
-
export async function dropBlobSchema<DB extends SyncBlobDb>(
|
|
154
|
-
db: Kysely<DB>
|
|
155
|
-
): Promise<void> {
|
|
156
|
-
await db.schema.dropTable('sync_blobs').ifExists().execute();
|
|
157
|
-
await db.schema.dropTable('sync_blob_uploads').ifExists().execute();
|
|
158
|
-
}
|
package/src/blobs/types.ts
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @syncular/server - Blob storage types
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import type { Generated } from 'kysely';
|
|
6
|
-
|
|
7
|
-
// ============================================================================
|
|
8
|
-
// Blob Upload Tracking
|
|
9
|
-
// ============================================================================
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Blob uploads tracking table.
|
|
13
|
-
* Tracks initiated uploads and their completion status.
|
|
14
|
-
*/
|
|
15
|
-
export interface SyncBlobUploadsTable {
|
|
16
|
-
/** Partition/tenant namespace */
|
|
17
|
-
partition_id: string;
|
|
18
|
-
/** SHA-256 hash with prefix: "sha256:<hex>" */
|
|
19
|
-
hash: string;
|
|
20
|
-
/** Expected size in bytes */
|
|
21
|
-
size: number;
|
|
22
|
-
/** MIME type */
|
|
23
|
-
mime_type: string;
|
|
24
|
-
/** Upload status */
|
|
25
|
-
status: 'pending' | 'complete';
|
|
26
|
-
/** Actor who initiated the upload */
|
|
27
|
-
actor_id: string;
|
|
28
|
-
/** When the upload was initiated */
|
|
29
|
-
created_at: Generated<string>;
|
|
30
|
-
/** When the upload expires (for cleanup of incomplete uploads) */
|
|
31
|
-
expires_at: string;
|
|
32
|
-
/** When the upload was completed */
|
|
33
|
-
completed_at: string | null;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
export interface SyncBlobUploadsDb {
|
|
37
|
-
sync_blob_uploads: SyncBlobUploadsTable;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
// ============================================================================
|
|
41
|
-
// Blob Storage (Database Adapter)
|
|
42
|
-
// ============================================================================
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Blob storage table (for database adapter).
|
|
46
|
-
* Stores blob content directly in the database.
|
|
47
|
-
*/
|
|
48
|
-
export interface SyncBlobsTable {
|
|
49
|
-
/** Partition/tenant namespace */
|
|
50
|
-
partition_id: string;
|
|
51
|
-
/** SHA-256 hash with prefix: "sha256:<hex>" */
|
|
52
|
-
hash: string;
|
|
53
|
-
/** Size in bytes */
|
|
54
|
-
size: number;
|
|
55
|
-
/** MIME type */
|
|
56
|
-
mime_type: string;
|
|
57
|
-
/** Blob content */
|
|
58
|
-
body: Uint8Array;
|
|
59
|
-
/** When the blob was created */
|
|
60
|
-
created_at: Generated<string>;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
export interface SyncBlobsDb {
|
|
64
|
-
sync_blobs: SyncBlobsTable;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
// ============================================================================
|
|
68
|
-
// Combined DB Interface
|
|
69
|
-
// ============================================================================
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* Full database interface for blob storage.
|
|
73
|
-
*/
|
|
74
|
-
export interface SyncBlobDb extends SyncBlobUploadsDb, SyncBlobsDb {}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
// Type declarations for bun:sqlite when running tsgo (which doesn't fully support bun-types)
|
|
2
|
-
declare module 'bun:sqlite' {
|
|
3
|
-
export class Database {
|
|
4
|
-
constructor(path: string);
|
|
5
|
-
close(): void;
|
|
6
|
-
exec(sql: string): void;
|
|
7
|
-
query<T = unknown>(sql: string): Statement<T>;
|
|
8
|
-
prepare<T = unknown>(sql: string): Statement<T>;
|
|
9
|
-
transaction<T>(fn: () => T): () => T;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export class Statement<T = unknown> {
|
|
13
|
-
run(...params: unknown[]): void;
|
|
14
|
-
get(...params: unknown[]): T | null;
|
|
15
|
-
all(...params: unknown[]): T[];
|
|
16
|
-
values(...params: unknown[]): unknown[][];
|
|
17
|
-
finalize(): void;
|
|
18
|
-
}
|
|
19
|
-
}
|
package/src/bun-sqlite.ts
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @syncular/server/bun-sqlite - Bun SQLite dialect for sync
|
|
3
|
-
*
|
|
4
|
-
* Provides a Kysely dialect for bun:sqlite.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import { Database } from 'bun:sqlite';
|
|
8
|
-
import { BunSqliteDialect } from 'kysely-bun-sqlite';
|
|
9
|
-
|
|
10
|
-
export interface BunSqliteOptions {
|
|
11
|
-
/** Path to SQLite database file, or ':memory:' for in-memory */
|
|
12
|
-
path: string;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Create the Bun SQLite dialect directly.
|
|
17
|
-
*
|
|
18
|
-
* @example
|
|
19
|
-
* const dialect = createBunSqliteDialect({ path: ':memory:' });
|
|
20
|
-
* const db = new Kysely<MyDb>({ dialect });
|
|
21
|
-
*/
|
|
22
|
-
export function createBunSqliteDialect(
|
|
23
|
-
options: BunSqliteOptions
|
|
24
|
-
): BunSqliteDialect {
|
|
25
|
-
const database = new Database(options.path);
|
|
26
|
-
return new BunSqliteDialect({ database });
|
|
27
|
-
}
|
package/src/clients.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @syncular/server - Client cursor tracking
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import type { ScopeValues } from '@syncular/core';
|
|
6
|
-
import type { DbExecutor, ServerSyncDialect } from './dialect/types';
|
|
7
|
-
import type { SyncCoreDb } from './schema';
|
|
8
|
-
|
|
9
|
-
export async function recordClientCursor<DB extends SyncCoreDb>(
|
|
10
|
-
db: DbExecutor<DB>,
|
|
11
|
-
dialect: ServerSyncDialect,
|
|
12
|
-
args: {
|
|
13
|
-
partitionId?: string;
|
|
14
|
-
clientId: string;
|
|
15
|
-
actorId: string;
|
|
16
|
-
cursor: number;
|
|
17
|
-
effectiveScopes: ScopeValues;
|
|
18
|
-
realtimeSubscriptions?: unknown;
|
|
19
|
-
}
|
|
20
|
-
): Promise<void> {
|
|
21
|
-
await dialect.recordClientCursor(db, args);
|
|
22
|
-
}
|
|
@@ -1,289 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @syncular/server/cloudflare - Durable Object handler (WebSocket + polling)
|
|
3
|
-
*
|
|
4
|
-
* Provides a base DurableObject class with Hono routing and WebSocket support.
|
|
5
|
-
* The DO's stateful nature allows it to hold persistent WebSocket connections,
|
|
6
|
-
* bridging Cloudflare's hibernation API to Hono's `upgradeWebSocket` interface.
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* ```typescript
|
|
10
|
-
* import { SyncDurableObject, createSyncWorkerWithDO } from '@syncular/server/cloudflare/durable-object';
|
|
11
|
-
* import { createD1Dialect } from '@syncular/server/d1';
|
|
12
|
-
* import { createSqliteServerDialect } from '@syncular/server/sqlite';
|
|
13
|
-
* import { ensureSyncSchema } from '@syncular/server';
|
|
14
|
-
* import { createSyncServer } from '@syncular/server/hono';
|
|
15
|
-
*
|
|
16
|
-
* type Env = { DB: D1Database; SYNC_DO: DurableObjectNamespace };
|
|
17
|
-
*
|
|
18
|
-
* export class SyncDO extends SyncDurableObject<Env> {
|
|
19
|
-
* setup(app, env, upgradeWebSocket) {
|
|
20
|
-
* const db = createD1Dialect(env.DB);
|
|
21
|
-
* const dialect = createSqliteServerDialect();
|
|
22
|
-
* const { syncRoutes, consoleRoutes } = createSyncServer({
|
|
23
|
-
* db, dialect,
|
|
24
|
-
* sync: {
|
|
25
|
-
* handlers: [tasksHandler],
|
|
26
|
-
* authenticate: async (request) => ({
|
|
27
|
-
* actorId: request.headers.get('x-user-id')!,
|
|
28
|
-
* }),
|
|
29
|
-
* },
|
|
30
|
-
* upgradeWebSocket,
|
|
31
|
-
* });
|
|
32
|
-
* app.route('/sync', syncRoutes);
|
|
33
|
-
* if (consoleRoutes) app.route('/console', consoleRoutes);
|
|
34
|
-
* }
|
|
35
|
-
* }
|
|
36
|
-
*
|
|
37
|
-
* // Worker entry — routes all requests to the DO
|
|
38
|
-
* export default createSyncWorkerWithDO<Env>('SYNC_DO');
|
|
39
|
-
* ```
|
|
40
|
-
*/
|
|
41
|
-
|
|
42
|
-
import { Hono } from 'hono';
|
|
43
|
-
import type { UpgradeWebSocket, WSEvents } from 'hono/ws';
|
|
44
|
-
import { defineWebSocketHelper, WSContext } from 'hono/ws';
|
|
45
|
-
|
|
46
|
-
// ---------------------------------------------------------------------------
|
|
47
|
-
// WebSocket ↔ Hono bridge
|
|
48
|
-
// ---------------------------------------------------------------------------
|
|
49
|
-
|
|
50
|
-
interface WebSocketTag {
|
|
51
|
-
events: WSEvents<WebSocket>;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
const STALE_SOCKET_CLOSE_CODE = 1012;
|
|
55
|
-
const STALE_SOCKET_CLOSE_REASON =
|
|
56
|
-
'WebSocket session expired; reconnect required';
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* WeakMap from server-side WebSocket → tag with event handlers.
|
|
60
|
-
* Populated on upgrade, read in webSocketMessage/webSocketClose.
|
|
61
|
-
*/
|
|
62
|
-
const socketTags = new WeakMap<WebSocket, WebSocketTag>();
|
|
63
|
-
|
|
64
|
-
function closeStaleSocket(ws: WebSocket): void {
|
|
65
|
-
try {
|
|
66
|
-
ws.close(STALE_SOCKET_CLOSE_CODE, STALE_SOCKET_CLOSE_REASON);
|
|
67
|
-
} catch {
|
|
68
|
-
// ignore
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
function createWSContext(ws: WebSocket): WSContext<WebSocket> {
|
|
73
|
-
return new WSContext<WebSocket>({
|
|
74
|
-
send(data) {
|
|
75
|
-
ws.send(webSocketSendData(data));
|
|
76
|
-
},
|
|
77
|
-
close(code, reason) {
|
|
78
|
-
ws.close(code, reason);
|
|
79
|
-
},
|
|
80
|
-
raw: ws,
|
|
81
|
-
get readyState() {
|
|
82
|
-
return ws.readyState as 0 | 1 | 2 | 3;
|
|
83
|
-
},
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Create an `upgradeWebSocket` function backed by the Durable Object
|
|
89
|
-
* hibernation API (`state.acceptWebSocket`).
|
|
90
|
-
*
|
|
91
|
-
* Each accepted socket is tagged with its Hono `WSEvents` handlers so the
|
|
92
|
-
* DO's `webSocketMessage` / `webSocketClose` callbacks can dispatch to them.
|
|
93
|
-
*/
|
|
94
|
-
function createDOUpgradeWebSocket(
|
|
95
|
-
doState: DurableObjectState
|
|
96
|
-
): UpgradeWebSocket<WebSocket> {
|
|
97
|
-
return defineWebSocketHelper((_c, events) => {
|
|
98
|
-
const pair = new WebSocketPair();
|
|
99
|
-
const [client, server] = Object.values(pair) as [WebSocket, WebSocket];
|
|
100
|
-
|
|
101
|
-
// Accept via hibernation API so the DO can wake on messages
|
|
102
|
-
doState.acceptWebSocket(server);
|
|
103
|
-
|
|
104
|
-
// Tag the server socket so webSocketMessage/webSocketClose can find handlers
|
|
105
|
-
socketTags.set(server, { events: events as WSEvents<WebSocket> });
|
|
106
|
-
|
|
107
|
-
// Fire onOpen synchronously (socket is already accepted)
|
|
108
|
-
const wsCtx = createWSContext(server);
|
|
109
|
-
events.onOpen?.(new Event('open'), wsCtx);
|
|
110
|
-
|
|
111
|
-
return new Response(null, {
|
|
112
|
-
status: 101,
|
|
113
|
-
webSocket: client,
|
|
114
|
-
} as ResponseInit & { webSocket: WebSocket });
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
function webSocketSendData(
|
|
119
|
-
data: string | ArrayBuffer | Uint8Array<ArrayBufferLike>
|
|
120
|
-
): string | ArrayBuffer {
|
|
121
|
-
if (data instanceof Uint8Array) {
|
|
122
|
-
const buffer = new ArrayBuffer(data.byteLength);
|
|
123
|
-
new Uint8Array(buffer).set(data);
|
|
124
|
-
return buffer;
|
|
125
|
-
}
|
|
126
|
-
return data;
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
// ---------------------------------------------------------------------------
|
|
130
|
-
// SyncDurableObject base class
|
|
131
|
-
// ---------------------------------------------------------------------------
|
|
132
|
-
|
|
133
|
-
/**
|
|
134
|
-
* Base class for a Syncular Durable Object with Hono routing and WebSocket.
|
|
135
|
-
*
|
|
136
|
-
* Subclass and implement `setup()` to configure routes.
|
|
137
|
-
*/
|
|
138
|
-
export abstract class SyncDurableObject<
|
|
139
|
-
E extends object = Record<string, unknown>,
|
|
140
|
-
> {
|
|
141
|
-
protected ctx: DurableObjectState;
|
|
142
|
-
protected env: E;
|
|
143
|
-
|
|
144
|
-
private app: Hono<{ Bindings: E }> | null = null;
|
|
145
|
-
private initPromise: Promise<void> | null = null;
|
|
146
|
-
private doUpgradeWebSocket: UpgradeWebSocket<WebSocket>;
|
|
147
|
-
|
|
148
|
-
constructor(ctx: DurableObjectState, env: E) {
|
|
149
|
-
this.ctx = ctx;
|
|
150
|
-
this.env = env;
|
|
151
|
-
this.doUpgradeWebSocket = createDOUpgradeWebSocket(ctx);
|
|
152
|
-
this.closeUntrackedSockets();
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
/**
|
|
156
|
-
* Configure the Hono app with sync routes.
|
|
157
|
-
*
|
|
158
|
-
* Called once when the DO first receives a request.
|
|
159
|
-
* Use `upgradeWebSocket` when creating the sync server to enable realtime.
|
|
160
|
-
*/
|
|
161
|
-
abstract setup(
|
|
162
|
-
app: Hono<{ Bindings: E }>,
|
|
163
|
-
env: E,
|
|
164
|
-
upgradeWebSocket: UpgradeWebSocket<WebSocket>
|
|
165
|
-
): void | Promise<void>;
|
|
166
|
-
|
|
167
|
-
private async getApp(): Promise<Hono<{ Bindings: E }>> {
|
|
168
|
-
if (this.app) return this.app;
|
|
169
|
-
if (!this.initPromise) {
|
|
170
|
-
const honoApp = new Hono<{ Bindings: E }>();
|
|
171
|
-
this.initPromise = Promise.resolve(
|
|
172
|
-
this.setup(honoApp, this.env, this.doUpgradeWebSocket)
|
|
173
|
-
).then(() => {
|
|
174
|
-
this.app = honoApp;
|
|
175
|
-
});
|
|
176
|
-
}
|
|
177
|
-
await this.initPromise;
|
|
178
|
-
return this.app!;
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
private closeUntrackedSockets(): void {
|
|
182
|
-
const sockets = this.ctx.getWebSockets();
|
|
183
|
-
for (const ws of sockets) {
|
|
184
|
-
if (socketTags.has(ws)) continue;
|
|
185
|
-
closeStaleSocket(ws);
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
/** Handle incoming HTTP requests (and WebSocket upgrades). */
|
|
190
|
-
async fetch(request: Request): Promise<Response> {
|
|
191
|
-
const app = await this.getApp();
|
|
192
|
-
return app.fetch(request, this.env);
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
/** Dispatch incoming WebSocket messages to Hono event handlers. */
|
|
196
|
-
async webSocketMessage(
|
|
197
|
-
ws: WebSocket,
|
|
198
|
-
message: string | ArrayBuffer
|
|
199
|
-
): Promise<void> {
|
|
200
|
-
const tag = socketTags.get(ws);
|
|
201
|
-
if (!tag?.events.onMessage) {
|
|
202
|
-
closeStaleSocket(ws);
|
|
203
|
-
return;
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
const wsCtx = createWSContext(ws);
|
|
207
|
-
const evt = new MessageEvent('message', { data: message });
|
|
208
|
-
tag.events.onMessage(evt, wsCtx);
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
/** Dispatch WebSocket close events to Hono event handlers. */
|
|
212
|
-
async webSocketClose(
|
|
213
|
-
ws: WebSocket,
|
|
214
|
-
code: number,
|
|
215
|
-
reason: string,
|
|
216
|
-
_wasClean: boolean
|
|
217
|
-
): Promise<void> {
|
|
218
|
-
const tag = socketTags.get(ws);
|
|
219
|
-
if (!tag?.events.onClose) {
|
|
220
|
-
socketTags.delete(ws);
|
|
221
|
-
return;
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
const wsCtx = createWSContext(ws);
|
|
225
|
-
const evt = new CloseEvent('close', { code, reason });
|
|
226
|
-
tag.events.onClose(evt, wsCtx);
|
|
227
|
-
socketTags.delete(ws);
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
/** Dispatch WebSocket error events to Hono event handlers. */
|
|
231
|
-
async webSocketError(ws: WebSocket, _error: unknown): Promise<void> {
|
|
232
|
-
const tag = socketTags.get(ws);
|
|
233
|
-
if (!tag?.events.onError) {
|
|
234
|
-
closeStaleSocket(ws);
|
|
235
|
-
return;
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
const wsCtx = createWSContext(ws);
|
|
239
|
-
const evt = new Event('error');
|
|
240
|
-
tag.events.onError(evt, wsCtx);
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
// ---------------------------------------------------------------------------
|
|
245
|
-
// Worker → DO router
|
|
246
|
-
// ---------------------------------------------------------------------------
|
|
247
|
-
|
|
248
|
-
/**
|
|
249
|
-
* Create a Worker export that routes all requests to a Durable Object.
|
|
250
|
-
*
|
|
251
|
-
* Uses a single DO instance (derived from a stable ID) to hold all
|
|
252
|
-
* connections. For multi-tenant setups, override `getStubId`.
|
|
253
|
-
*
|
|
254
|
-
* @example
|
|
255
|
-
* ```typescript
|
|
256
|
-
* export default createSyncWorkerWithDO<Env>('SYNC_DO');
|
|
257
|
-
* ```
|
|
258
|
-
*/
|
|
259
|
-
export function createSyncWorkerWithDO<E extends object>(
|
|
260
|
-
bindingName: string & keyof E,
|
|
261
|
-
options?: {
|
|
262
|
-
/**
|
|
263
|
-
* Derive a DurableObject ID from the request.
|
|
264
|
-
* Defaults to a single global instance via `idFromName('sync')`.
|
|
265
|
-
*/
|
|
266
|
-
getStubId?: (
|
|
267
|
-
ns: DurableObjectNamespace,
|
|
268
|
-
request: Request,
|
|
269
|
-
env: E
|
|
270
|
-
) => DurableObjectId;
|
|
271
|
-
}
|
|
272
|
-
): ExportedHandler<E> {
|
|
273
|
-
return {
|
|
274
|
-
async fetch(
|
|
275
|
-
request: Request,
|
|
276
|
-
env: E,
|
|
277
|
-
_ctx: ExecutionContext
|
|
278
|
-
): Promise<Response> {
|
|
279
|
-
const ns = env[
|
|
280
|
-
bindingName as keyof E
|
|
281
|
-
] as unknown as DurableObjectNamespace;
|
|
282
|
-
const id = options?.getStubId
|
|
283
|
-
? options.getStubId(ns, request, env)
|
|
284
|
-
: ns.idFromName('sync');
|
|
285
|
-
const stub = ns.get(id);
|
|
286
|
-
return stub.fetch(request);
|
|
287
|
-
},
|
|
288
|
-
};
|
|
289
|
-
}
|
package/src/cloudflare/index.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @syncular/server/cloudflare - Cloudflare adapters for Syncular
|
|
3
|
-
*
|
|
4
|
-
* Two deployment modes:
|
|
5
|
-
* - Worker (polling only): `@syncular/server/cloudflare/worker`
|
|
6
|
-
* - Durable Object (WebSocket + polling): `@syncular/server/cloudflare/durable-object`
|
|
7
|
-
*
|
|
8
|
-
* Blob storage:
|
|
9
|
-
* - R2 native: `@syncular/server/cloudflare/r2`
|
|
10
|
-
*
|
|
11
|
-
* Scope cache:
|
|
12
|
-
* - Durable Object cache backend: `@syncular/server/cloudflare/scope-cache`
|
|
13
|
-
*
|
|
14
|
-
* Dialect is user-provided:
|
|
15
|
-
* - D1 + SQLite: `@syncular/server/d1` + `@syncular/server/sqlite`
|
|
16
|
-
* - Neon + Postgres: `@syncular/server/neon` + `createNeonServerDialect()` from `@syncular/server/postgres`
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
|
-
export * from './durable-object';
|
|
20
|
-
export * from './r2';
|
|
21
|
-
export * from './scope-cache';
|
|
22
|
-
export * from './worker';
|