@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.
- package/dist/api-key-auth.d.ts +49 -0
- package/dist/api-key-auth.d.ts.map +1 -0
- package/dist/api-key-auth.js +110 -0
- package/dist/api-key-auth.js.map +1 -0
- package/dist/blobs.d.ts +69 -0
- package/dist/blobs.d.ts.map +1 -0
- package/dist/blobs.js +383 -0
- package/dist/blobs.js.map +1 -0
- package/dist/console/index.d.ts +8 -0
- package/dist/console/index.d.ts.map +1 -0
- package/dist/console/index.js +7 -0
- package/dist/console/index.js.map +1 -0
- package/dist/console/routes.d.ts +106 -0
- package/dist/console/routes.d.ts.map +1 -0
- package/dist/console/routes.js +1612 -0
- package/dist/console/routes.js.map +1 -0
- package/dist/console/schemas.d.ts +308 -0
- package/dist/console/schemas.d.ts.map +1 -0
- package/dist/console/schemas.js +201 -0
- package/dist/console/schemas.js.map +1 -0
- package/dist/create-server.d.ts +78 -0
- package/dist/create-server.d.ts.map +1 -0
- package/dist/create-server.js +99 -0
- package/dist/create-server.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/openapi.d.ts +45 -0
- package/dist/openapi.d.ts.map +1 -0
- package/dist/openapi.js +59 -0
- package/dist/openapi.js.map +1 -0
- package/dist/proxy/connection-manager.d.ts +78 -0
- package/dist/proxy/connection-manager.d.ts.map +1 -0
- package/dist/proxy/connection-manager.js +251 -0
- package/dist/proxy/connection-manager.js.map +1 -0
- package/dist/proxy/index.d.ts +8 -0
- package/dist/proxy/index.d.ts.map +1 -0
- package/dist/proxy/index.js +8 -0
- package/dist/proxy/index.js.map +1 -0
- package/dist/proxy/routes.d.ts +74 -0
- package/dist/proxy/routes.d.ts.map +1 -0
- package/dist/proxy/routes.js +147 -0
- package/dist/proxy/routes.js.map +1 -0
- package/dist/rate-limit.d.ts +101 -0
- package/dist/rate-limit.d.ts.map +1 -0
- package/dist/rate-limit.js +186 -0
- package/dist/rate-limit.js.map +1 -0
- package/dist/routes.d.ts +126 -0
- package/dist/routes.d.ts.map +1 -0
- package/dist/routes.js +788 -0
- package/dist/routes.js.map +1 -0
- package/dist/ws.d.ts +230 -0
- package/dist/ws.d.ts.map +1 -0
- package/dist/ws.js +601 -0
- package/dist/ws.js.map +1 -0
- package/package.json +73 -0
- package/src/__tests__/create-server.test.ts +187 -0
- package/src/__tests__/pull-chunk-storage.test.ts +189 -0
- package/src/__tests__/rate-limit.test.ts +78 -0
- package/src/__tests__/realtime-bridge.test.ts +131 -0
- package/src/__tests__/ws-connection-manager.test.ts +176 -0
- package/src/api-key-auth.ts +179 -0
- package/src/blobs.ts +534 -0
- package/src/console/index.ts +17 -0
- package/src/console/routes.ts +2155 -0
- package/src/console/schemas.ts +299 -0
- package/src/create-server.ts +180 -0
- package/src/index.ts +42 -0
- package/src/openapi.ts +74 -0
- package/src/proxy/connection-manager.ts +340 -0
- package/src/proxy/index.ts +8 -0
- package/src/proxy/routes.ts +223 -0
- package/src/rate-limit.ts +321 -0
- package/src/routes.ts +1186 -0
- 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"}
|