| 1234567891011121314151617181920212223242526272829 |
- /** Host HTTP bridge for browser-client RPC. */
- import type { Context } from 'cordis'
- // Activates the httpServer Context merge used below.
- import type { WebRoute } from '@deepseek-ai/dsh-host-webserver'
- import { toFetchHandler } from '@deepseek-ai/dsh-host-apiproxy'
- import { API_PATH } from './api-path.ts'
- import { bridge } from './http-bridge.ts'
- export { API_PATH } from './api-path.ts'
- /** Stable Cordis plugin name. */
- export const name = 'client-connection'
- /** Services required before mounting the route. */
- export const inject = ['httpServer', 'apiProxy']
- /**
- * Mounts the API gateway under the browser transport prefix.
- * @param ctx - Host plugin context.
- */
- export function apply(ctx: Context): void {
- const apiHandler = toFetchHandler(ctx.apiProxy)
- const route: WebRoute = {
- kind: 'prefix',
- path: API_PATH,
- handler: (req, res) => bridge(req, res, apiHandler),
- }
- ctx.effect(() => ctx.httpServer.register(route), 'client-connection: /api route')
- }
|