/** * Content-addressed blob HTTP handler for the realtime relay. * * Factoring lives here so both {@link createRealtimeRelay} and * {@link attachRealtimeRelay} (plus any embedder) can mount the same routes. * * @module trellis/server */ import type { IncomingMessage, ServerResponse } from 'node:http'; import type { BlobStore } from '../vcs/blob-store.js'; export declare const BLOB_CORS: { readonly 'Access-Control-Allow-Origin': "*"; readonly 'Access-Control-Allow-Methods': "GET, HEAD, PUT, OPTIONS"; readonly 'Access-Control-Allow-Headers': "Content-Type, If-None-Match, X-Trellis-Filename"; }; export interface BlobRequestHandlerOptions { /** Reject PUT bodies larger than this. Default 64 MiB → 413. */ maxBlobBytes?: number; /** * Gate writes. Return false → 401. Default: allow all (local/dev). * Production embedders should pass a real check. */ authorizeBlobWrite?: (req: IncomingMessage) => boolean | Promise; } /** * Build a request handler for `/blob` and `/blob/:sha256`. * Returns `true` when the request was claimed (response written or in flight). */ export declare function createBlobRequestHandler(store: BlobStore, opts?: BlobRequestHandlerOptions): (req: IncomingMessage, res: ServerResponse) => boolean; //# sourceMappingURL=blob-handler.d.ts.map