@syncular/server-hono 0.0.1-60

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 (76) hide show
  1. package/dist/api-key-auth.d.ts +49 -0
  2. package/dist/api-key-auth.d.ts.map +1 -0
  3. package/dist/api-key-auth.js +110 -0
  4. package/dist/api-key-auth.js.map +1 -0
  5. package/dist/blobs.d.ts +69 -0
  6. package/dist/blobs.d.ts.map +1 -0
  7. package/dist/blobs.js +383 -0
  8. package/dist/blobs.js.map +1 -0
  9. package/dist/console/index.d.ts +8 -0
  10. package/dist/console/index.d.ts.map +1 -0
  11. package/dist/console/index.js +7 -0
  12. package/dist/console/index.js.map +1 -0
  13. package/dist/console/routes.d.ts +106 -0
  14. package/dist/console/routes.d.ts.map +1 -0
  15. package/dist/console/routes.js +1612 -0
  16. package/dist/console/routes.js.map +1 -0
  17. package/dist/console/schemas.d.ts +308 -0
  18. package/dist/console/schemas.d.ts.map +1 -0
  19. package/dist/console/schemas.js +201 -0
  20. package/dist/console/schemas.js.map +1 -0
  21. package/dist/create-server.d.ts +78 -0
  22. package/dist/create-server.d.ts.map +1 -0
  23. package/dist/create-server.js +99 -0
  24. package/dist/create-server.js.map +1 -0
  25. package/dist/index.d.ts +16 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +25 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/openapi.d.ts +45 -0
  30. package/dist/openapi.d.ts.map +1 -0
  31. package/dist/openapi.js +59 -0
  32. package/dist/openapi.js.map +1 -0
  33. package/dist/proxy/connection-manager.d.ts +78 -0
  34. package/dist/proxy/connection-manager.d.ts.map +1 -0
  35. package/dist/proxy/connection-manager.js +251 -0
  36. package/dist/proxy/connection-manager.js.map +1 -0
  37. package/dist/proxy/index.d.ts +8 -0
  38. package/dist/proxy/index.d.ts.map +1 -0
  39. package/dist/proxy/index.js +8 -0
  40. package/dist/proxy/index.js.map +1 -0
  41. package/dist/proxy/routes.d.ts +74 -0
  42. package/dist/proxy/routes.d.ts.map +1 -0
  43. package/dist/proxy/routes.js +147 -0
  44. package/dist/proxy/routes.js.map +1 -0
  45. package/dist/rate-limit.d.ts +101 -0
  46. package/dist/rate-limit.d.ts.map +1 -0
  47. package/dist/rate-limit.js +186 -0
  48. package/dist/rate-limit.js.map +1 -0
  49. package/dist/routes.d.ts +126 -0
  50. package/dist/routes.d.ts.map +1 -0
  51. package/dist/routes.js +788 -0
  52. package/dist/routes.js.map +1 -0
  53. package/dist/ws.d.ts +230 -0
  54. package/dist/ws.d.ts.map +1 -0
  55. package/dist/ws.js +601 -0
  56. package/dist/ws.js.map +1 -0
  57. package/package.json +73 -0
  58. package/src/__tests__/create-server.test.ts +187 -0
  59. package/src/__tests__/pull-chunk-storage.test.ts +189 -0
  60. package/src/__tests__/rate-limit.test.ts +78 -0
  61. package/src/__tests__/realtime-bridge.test.ts +131 -0
  62. package/src/__tests__/ws-connection-manager.test.ts +176 -0
  63. package/src/api-key-auth.ts +179 -0
  64. package/src/blobs.ts +534 -0
  65. package/src/console/index.ts +17 -0
  66. package/src/console/routes.ts +2155 -0
  67. package/src/console/schemas.ts +299 -0
  68. package/src/create-server.ts +180 -0
  69. package/src/index.ts +42 -0
  70. package/src/openapi.ts +74 -0
  71. package/src/proxy/connection-manager.ts +340 -0
  72. package/src/proxy/index.ts +8 -0
  73. package/src/proxy/routes.ts +223 -0
  74. package/src/rate-limit.ts +321 -0
  75. package/src/routes.ts +1186 -0
  76. package/src/ws.ts +789 -0
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @syncular/server-hono - Console API
3
+ *
4
+ * Provides monitoring and operations endpoints for the @syncular dashboard.
5
+ */
6
+ export { createConsoleEventEmitter, createConsoleRoutes, createTokenAuthenticator, } from './routes';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/console/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,UAAU,CAAC"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * @syncular/server-hono - Console API routes
3
+ *
4
+ * Provides monitoring and operations endpoints for the @syncular dashboard.
5
+ *
6
+ * Endpoints:
7
+ * - GET /stats - Sync statistics
8
+ * - GET /commits - Paginated commit list
9
+ * - GET /commits/:seq - Single commit with changes
10
+ * - GET /clients - Client cursor list
11
+ * - GET /handlers - Registered handlers
12
+ * - POST /prune - Trigger pruning
13
+ * - POST /prune/preview - Preview pruning (dry run)
14
+ * - POST /compact - Trigger compaction
15
+ * - DELETE /clients/:id - Evict client
16
+ */
17
+ import type { ServerSyncDialect, ServerTableHandler, SyncCoreDb } from '@syncular/server';
18
+ import type { Context } from 'hono';
19
+ import { Hono } from 'hono';
20
+ import type { UpgradeWebSocket } from 'hono/ws';
21
+ import type { Kysely } from 'kysely';
22
+ import type { WebSocketConnectionManager } from '../ws';
23
+ import { type LiveEvent } from './schemas';
24
+ export interface ConsoleAuthResult {
25
+ /** Identifier for the console user (for audit logging). */
26
+ consoleUserId?: string;
27
+ }
28
+ /**
29
+ * Listener for console live events (SSE streaming).
30
+ */
31
+ export type ConsoleEventListener = (event: LiveEvent) => void;
32
+ /**
33
+ * Console event emitter for broadcasting live events.
34
+ */
35
+ export interface ConsoleEventEmitter {
36
+ /** Add a listener for live events */
37
+ addListener(listener: ConsoleEventListener): void;
38
+ /** Remove a listener */
39
+ removeListener(listener: ConsoleEventListener): void;
40
+ /** Emit an event to all listeners */
41
+ emit(event: LiveEvent): void;
42
+ }
43
+ /**
44
+ * Create a simple console event emitter for broadcasting live events.
45
+ */
46
+ export declare function createConsoleEventEmitter(): ConsoleEventEmitter;
47
+ export interface CreateConsoleRoutesOptions<DB extends SyncCoreDb = SyncCoreDb> {
48
+ db: Kysely<DB>;
49
+ dialect: ServerSyncDialect;
50
+ handlers: ServerTableHandler<DB>[];
51
+ /**
52
+ * Authentication function for console requests.
53
+ * Return null to reject the request.
54
+ */
55
+ authenticate: (c: Context) => Promise<ConsoleAuthResult | null>;
56
+ /**
57
+ * CORS origins to allow. Defaults to ['http://localhost:5173', 'https://console.sync.dev'].
58
+ * Set to '*' to allow all origins (not recommended for production).
59
+ */
60
+ corsOrigins?: string[] | '*';
61
+ /**
62
+ * Compaction options (required for /compact endpoint).
63
+ */
64
+ compact?: {
65
+ fullHistoryHours?: number;
66
+ };
67
+ /**
68
+ * Pruning options.
69
+ */
70
+ prune?: {
71
+ activeWindowMs?: number;
72
+ fallbackMaxAgeMs?: number;
73
+ keepNewestCommits?: number;
74
+ };
75
+ /**
76
+ * Event emitter for live console events.
77
+ * If provided along with websocket config, enables the /events/live WebSocket endpoint.
78
+ */
79
+ eventEmitter?: ConsoleEventEmitter;
80
+ /**
81
+ * Shared sync WebSocket connection manager.
82
+ * When provided, `/clients` includes realtime connection state per client.
83
+ */
84
+ wsConnectionManager?: WebSocketConnectionManager;
85
+ /**
86
+ * WebSocket configuration for live events streaming.
87
+ */
88
+ websocket?: {
89
+ enabled?: boolean;
90
+ /**
91
+ * Runtime-provided WebSocket upgrader (e.g. from `hono/bun`'s `createBunWebSocket()`).
92
+ */
93
+ upgradeWebSocket?: UpgradeWebSocket;
94
+ /**
95
+ * Heartbeat interval in milliseconds. Default: 30000
96
+ */
97
+ heartbeatIntervalMs?: number;
98
+ };
99
+ }
100
+ export declare function createConsoleRoutes<DB extends SyncCoreDb>(options: CreateConsoleRoutesOptions<DB>): Hono;
101
+ /**
102
+ * Creates a simple token-based authenticator for local development.
103
+ * The token can be set via SYNC_CONSOLE_TOKEN env var or passed directly.
104
+ */
105
+ export declare function createTokenAuthenticator(token?: string): (c: Context) => Promise<ConsoleAuthResult | null>;
106
+ //# sourceMappingURL=routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/console/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,UAAU,EACX,MAAM,kBAAkB,CAAC;AAO1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,OAAO,CAAC;AACxD,OAAO,EAuCL,KAAK,SAAS,EAOf,MAAM,WAAW,CAAC;AAEnB,MAAM,WAAW,iBAAiB;IAChC,2DAA2D;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,qCAAqC;IACrC,WAAW,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAClD,wBAAwB;IACxB,cAAc,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACrD,qCAAqC;IACrC,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;CAC9B;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,mBAAmB,CAoB/D;AAED,MAAM,WAAW,0BAA0B,CACzC,EAAE,SAAS,UAAU,GAAG,UAAU;IAElC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IACf,OAAO,EAAE,iBAAiB,CAAC;IAC3B,QAAQ,EAAE,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC;IACnC;;;OAGG;IACH,YAAY,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAChE;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAC7B;;OAEG;IACH,OAAO,CAAC,EAAE;QACR,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF;;OAEG;IACH,KAAK,CAAC,EAAE;QACN,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF;;;OAGG;IACH,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC;;;OAGG;IACH,mBAAmB,CAAC,EAAE,0BAA0B,CAAC;IACjD;;OAEG;IACH,SAAS,CAAC,EAAE;QACV,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB;;WAEG;QACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;QACpC;;WAEG;QACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;KAC9B,CAAC;CACH;AAwED,wBAAgB,mBAAmB,CAAC,EAAE,SAAS,UAAU,EACvD,OAAO,EAAE,0BAA0B,CAAC,EAAE,CAAC,GACtC,IAAI,CAyyDN;AA6BD;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,CAAC,EAAE,MAAM,GACb,CAAC,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CA0BnD"}