@syncular/server-hono 0.0.6-96 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/README.md +5 -23
  2. package/dist/admin-page.d.ts +14 -0
  3. package/dist/admin-page.js +217 -0
  4. package/dist/admin.d.ts +39 -0
  5. package/dist/admin.js +142 -0
  6. package/dist/index.d.ts +16 -14
  7. package/dist/index.js +134 -23
  8. package/package.json +19 -53
  9. package/src/admin-page.ts +217 -0
  10. package/src/admin.ts +193 -0
  11. package/src/index.ts +175 -31
  12. package/dist/api-key-auth.d.ts +0 -49
  13. package/dist/api-key-auth.d.ts.map +0 -1
  14. package/dist/api-key-auth.js +0 -110
  15. package/dist/api-key-auth.js.map +0 -1
  16. package/dist/blobs.d.ts +0 -69
  17. package/dist/blobs.d.ts.map +0 -1
  18. package/dist/blobs.js +0 -383
  19. package/dist/blobs.js.map +0 -1
  20. package/dist/console/gateway.d.ts +0 -33
  21. package/dist/console/gateway.d.ts.map +0 -1
  22. package/dist/console/gateway.js +0 -2534
  23. package/dist/console/gateway.js.map +0 -1
  24. package/dist/console/index.d.ts +0 -11
  25. package/dist/console/index.d.ts.map +0 -1
  26. package/dist/console/index.js +0 -11
  27. package/dist/console/index.js.map +0 -1
  28. package/dist/console/routes.d.ts +0 -33
  29. package/dist/console/routes.d.ts.map +0 -1
  30. package/dist/console/routes.js +0 -3029
  31. package/dist/console/routes.js.map +0 -1
  32. package/dist/console/schemas.d.ts +0 -490
  33. package/dist/console/schemas.d.ts.map +0 -1
  34. package/dist/console/schemas.js +0 -303
  35. package/dist/console/schemas.js.map +0 -1
  36. package/dist/console/types.d.ts +0 -175
  37. package/dist/console/types.d.ts.map +0 -1
  38. package/dist/console/types.js +0 -2
  39. package/dist/console/types.js.map +0 -1
  40. package/dist/console/ui.d.ts +0 -38
  41. package/dist/console/ui.d.ts.map +0 -1
  42. package/dist/console/ui.js +0 -43
  43. package/dist/console/ui.js.map +0 -1
  44. package/dist/create-server.d.ts +0 -68
  45. package/dist/create-server.d.ts.map +0 -1
  46. package/dist/create-server.js +0 -110
  47. package/dist/create-server.js.map +0 -1
  48. package/dist/index.d.ts.map +0 -1
  49. package/dist/index.js.map +0 -1
  50. package/dist/openapi.d.ts +0 -45
  51. package/dist/openapi.d.ts.map +0 -1
  52. package/dist/openapi.js +0 -59
  53. package/dist/openapi.js.map +0 -1
  54. package/dist/proxy/connection-manager.d.ts +0 -78
  55. package/dist/proxy/connection-manager.d.ts.map +0 -1
  56. package/dist/proxy/connection-manager.js +0 -251
  57. package/dist/proxy/connection-manager.js.map +0 -1
  58. package/dist/proxy/index.d.ts +0 -8
  59. package/dist/proxy/index.d.ts.map +0 -1
  60. package/dist/proxy/index.js +0 -8
  61. package/dist/proxy/index.js.map +0 -1
  62. package/dist/proxy/routes.d.ts +0 -74
  63. package/dist/proxy/routes.d.ts.map +0 -1
  64. package/dist/proxy/routes.js +0 -147
  65. package/dist/proxy/routes.js.map +0 -1
  66. package/dist/rate-limit.d.ts +0 -101
  67. package/dist/rate-limit.d.ts.map +0 -1
  68. package/dist/rate-limit.js +0 -186
  69. package/dist/rate-limit.js.map +0 -1
  70. package/dist/routes.d.ts +0 -161
  71. package/dist/routes.d.ts.map +0 -1
  72. package/dist/routes.js +0 -1493
  73. package/dist/routes.js.map +0 -1
  74. package/dist/ws.d.ts +0 -235
  75. package/dist/ws.d.ts.map +0 -1
  76. package/dist/ws.js +0 -614
  77. package/dist/ws.js.map +0 -1
  78. package/src/__tests__/blob-routes.test.ts +0 -424
  79. package/src/__tests__/console-gateway-live-routes.test.ts +0 -297
  80. package/src/__tests__/console-gateway-routes.test.ts +0 -1364
  81. package/src/__tests__/console-routes.test.ts +0 -1626
  82. package/src/__tests__/console-ui.test.ts +0 -114
  83. package/src/__tests__/create-server.test.ts +0 -485
  84. package/src/__tests__/pull-chunk-storage.test.ts +0 -576
  85. package/src/__tests__/rate-limit.test.ts +0 -78
  86. package/src/__tests__/realtime-bridge.test.ts +0 -135
  87. package/src/__tests__/sync-rate-limit-routing.test.ts +0 -185
  88. package/src/__tests__/ws-connection-manager.test.ts +0 -176
  89. package/src/api-key-auth.ts +0 -179
  90. package/src/blobs.ts +0 -534
  91. package/src/console/gateway.ts +0 -3603
  92. package/src/console/index.ts +0 -11
  93. package/src/console/routes.ts +0 -3936
  94. package/src/console/schemas.ts +0 -434
  95. package/src/console/types.ts +0 -185
  96. package/src/console/ui.ts +0 -100
  97. package/src/create-server.ts +0 -207
  98. package/src/openapi.ts +0 -74
  99. package/src/proxy/connection-manager.ts +0 -340
  100. package/src/proxy/index.ts +0 -8
  101. package/src/proxy/routes.ts +0 -223
  102. package/src/rate-limit.ts +0 -321
  103. package/src/routes.ts +0 -2059
  104. package/src/ws.ts +0 -802
package/dist/routes.d.ts DELETED
@@ -1,161 +0,0 @@
1
- /**
2
- * @syncular/server-hono - Sync routes for Hono
3
- *
4
- * Provides:
5
- * - POST / (combined push + pull in one round-trip)
6
- * - GET /snapshot-chunks/:chunkId (download encoded snapshot chunks)
7
- * - GET /realtime (optional WebSocket "wake up" notifications)
8
- */
9
- import type { ScopeCacheBackend, ServerSyncDialect, ServerTableHandler, SnapshotChunkStorage, SqlFamily, SyncCoreDb, SyncRealtimeBroadcaster, SyncServerAuth } from '@syncular/server';
10
- import { type CompactOptions, type PruneOptions } from '@syncular/server';
11
- import type { Context } from 'hono';
12
- import { Hono } from 'hono';
13
- import type { UpgradeWebSocket } from 'hono/ws';
14
- import { type Kysely } from 'kysely';
15
- import { type SyncRateLimitConfig } from './rate-limit';
16
- import { WebSocketConnectionManager } from './ws';
17
- export interface SyncAuthResult extends SyncServerAuth {
18
- }
19
- /**
20
- * WebSocket configuration for realtime sync.
21
- *
22
- * Note: this endpoint is only a "wake up" mechanism; clients must still pull.
23
- */
24
- export interface SyncWebSocketConfig {
25
- enabled?: boolean;
26
- /**
27
- * Runtime-provided WebSocket upgrader (e.g. from `hono/bun`'s `createBunWebSocket()`).
28
- */
29
- upgradeWebSocket?: UpgradeWebSocket;
30
- heartbeatIntervalMs?: number;
31
- /**
32
- * Maximum number of concurrent WebSocket connections across the entire process.
33
- * Default: 5000
34
- */
35
- maxConnectionsTotal?: number;
36
- /**
37
- * Maximum number of concurrent WebSocket connections per clientId.
38
- * Default: 3
39
- */
40
- maxConnectionsPerClient?: number;
41
- }
42
- export interface SyncRoutesConfigWithRateLimit {
43
- /**
44
- * Max commits per pull request.
45
- * Default: 100
46
- */
47
- maxPullLimitCommits?: number;
48
- /**
49
- * Max subscriptions per pull request.
50
- * Default: 200
51
- */
52
- maxSubscriptionsPerPull?: number;
53
- /**
54
- * Max snapshot rows per snapshot page.
55
- * Default: 5000
56
- */
57
- maxPullLimitSnapshotRows?: number;
58
- /**
59
- * Max snapshot pages per subscription per pull response.
60
- * Default: 10
61
- */
62
- maxPullMaxSnapshotPages?: number;
63
- /**
64
- * Max operations per pushed commit.
65
- * Default: 200
66
- */
67
- maxOperationsPerPush?: number;
68
- /**
69
- * Request/response payload snapshots recorded for console inspection.
70
- */
71
- requestPayloadSnapshots?: {
72
- /**
73
- * Enable payload snapshot storage in `sync_request_payloads`.
74
- * Default: true when console event recording is enabled.
75
- */
76
- enabled?: boolean;
77
- /**
78
- * Max serialized payload size in bytes per request/response snapshot.
79
- * Larger payloads are truncated with metadata.
80
- * Default: 128 KiB.
81
- */
82
- maxBytes?: number;
83
- };
84
- /**
85
- * Rate limiting configuration.
86
- * Set to false to disable all rate limiting.
87
- */
88
- rateLimit?: SyncRateLimitConfig | false;
89
- /**
90
- * WebSocket realtime configuration.
91
- */
92
- websocket?: SyncWebSocketConfig;
93
- /**
94
- * Optional pruning configuration. When enabled, the server periodically prunes
95
- * old commit history based on active client cursors.
96
- */
97
- prune?: {
98
- /** Minimum time between prune runs. Default: 5 minutes. */
99
- minIntervalMs?: number;
100
- /** Pruning watermark options. */
101
- options?: PruneOptions;
102
- };
103
- /**
104
- * Optional compaction configuration. When enabled, the server periodically
105
- * compacts older change history to reduce storage.
106
- */
107
- compact?: {
108
- /** Minimum time between compaction runs. Default: 30 minutes. */
109
- minIntervalMs?: number;
110
- /** Compaction options. */
111
- options?: CompactOptions;
112
- };
113
- /**
114
- * Optional multi-instance realtime broadcaster.
115
- * When provided, instances publish/subscribe commit wakeups via the broadcaster.
116
- */
117
- realtime?: {
118
- broadcaster: SyncRealtimeBroadcaster;
119
- /** Optional stable instance id (useful in tests). */
120
- instanceId?: string;
121
- };
122
- }
123
- export interface CreateSyncRoutesOptions<DB extends SyncCoreDb = SyncCoreDb, Auth extends SyncAuthResult = SyncAuthResult, F extends SqlFamily = SqlFamily> {
124
- db: Kysely<DB>;
125
- dialect: ServerSyncDialect<F>;
126
- handlers: ServerTableHandler<DB, Auth>[];
127
- authenticate: (c: Context) => Promise<Auth | null>;
128
- sync?: SyncRoutesConfigWithRateLimit;
129
- wsConnectionManager?: WebSocketConnectionManager;
130
- /**
131
- * Optional snapshot chunk storage adapter.
132
- * When provided, stores snapshot chunk bodies in external storage
133
- * (S3, R2, etc.) instead of inline in the database.
134
- */
135
- chunkStorage?: SnapshotChunkStorage;
136
- /**
137
- * Optional scope cache backend for resolveScopes() results.
138
- * Request-local memoization is always applied for every pull.
139
- */
140
- scopeCache?: ScopeCacheBackend;
141
- /**
142
- * Optional live emitter for console websocket activity feed.
143
- * When provided, sync lifecycle events are published to `/console/events/live`.
144
- */
145
- consoleLiveEmitter?: {
146
- emit(event: {
147
- type: 'push' | 'pull' | 'commit' | 'client_update';
148
- timestamp: string;
149
- data: Record<string, unknown>;
150
- }): void;
151
- };
152
- /**
153
- * Optional console schema readiness promise.
154
- * When provided, request-event recording waits for this promise before writing.
155
- */
156
- consoleSchemaReady?: Promise<void>;
157
- }
158
- export declare function createSyncRoutes<DB extends SyncCoreDb = SyncCoreDb, Auth extends SyncAuthResult = SyncAuthResult, F extends SqlFamily = SqlFamily>(options: CreateSyncRoutesOptions<DB, Auth, F>): Hono;
159
- export declare function getSyncWebSocketConnectionManager(routes: Hono): WebSocketConnectionManager | undefined;
160
- export declare function getSyncRealtimeUnsubscribe(routes: Hono): (() => void) | undefined;
161
- //# sourceMappingURL=routes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"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"}