feat: M5 Prekey Server + M7 Wire Format
M5: Shade Prekey Server (Hono) - REST API: register, fetch bundle, replenish, count, delete - MemoryPrekeyStore for testing/embedded use - Standalone Docker deployment (Dockerfile + standalone.ts) - One-time prekey consumption on bundle fetch M7: Compact binary wire format - Version-tagged envelopes (PreKeyMessage, RatchetMessage) - Length-prefixed byte arrays, big-endian integers - Significantly smaller than JSON (no base64 bloat) - Roundtrip encode/decode for all message types 100 tests, 0 failures across M1-M5+M7. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
28
packages/shade-server/src/index.ts
Normal file
28
packages/shade-server/src/index.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
import { Hono } from 'hono';
|
||||
import { createPrekeyRoutes } from './routes.js';
|
||||
import { MemoryPrekeyStore } from './memory-store.js';
|
||||
import type { PrekeyStore } from './store.js';
|
||||
|
||||
export { createPrekeyRoutes } from './routes.js';
|
||||
export { MemoryPrekeyStore } from './memory-store.js';
|
||||
export type { PrekeyStore } from './store.js';
|
||||
|
||||
/**
|
||||
* Create a standalone Shade Prekey Server.
|
||||
*
|
||||
* Can be used standalone (Docker) or embedded in another Hono app.
|
||||
*
|
||||
* Standalone:
|
||||
* const server = createPrekeyServer();
|
||||
* export default { port: 3900, fetch: server.fetch };
|
||||
*
|
||||
* Embedded:
|
||||
* const app = new Hono();
|
||||
* app.route('/shade', createPrekeyServer());
|
||||
*/
|
||||
export function createPrekeyServer(options?: {
|
||||
store?: PrekeyStore;
|
||||
}): Hono {
|
||||
const store = options?.store ?? new MemoryPrekeyStore();
|
||||
return createPrekeyRoutes(store);
|
||||
}
|
||||
Reference in New Issue
Block a user