UNPKG

@usirin/spellcaster

Version:

Remote execution of spells defined in spellbooks

61 lines 2.08 kB
import type { Spellbook } from "@usirin/spellbook"; import { type ServerTransport } from "./transport"; /** * Options for creating a SpellbookServer */ export interface SpellbookServerOptions { /** * Transport to use for communication */ transport: ServerTransport; /** * Configuration options */ config?: { /** * Whether to validate parameters (default: true) */ validateParameters?: boolean; }; } /** * Simple function to serve a spellbook on a transport * * @param spellbook - The spellbook to serve * @param transport - The transport to serve on * @returns A promise that resolves when the server stops */ export declare function serve<TSpellbook extends Spellbook>(spellbook: TSpellbook, transport: ServerTransport): Promise<void>; /** * Create a SpellbookServer for a specific spellbook * * @param spellbook - The spellbook to serve * @param options - Server options * @returns A SpellbookServer instance */ export declare const createSpellbookServer: <TSpellbook extends Spellbook>(spellbook: TSpellbook, options: SpellbookServerOptions) => import("@usirin/forge").Entity<"server"> & { start(): void; stop(): void; isRunning(): boolean; getSpellbook(): TSpellbook; getTransport(): import("@usirin/forge").Entity<"xports"> & { incoming: ReadableStream<import("@usirin/forge").Entity<"req"> & { name: string; parameters: any; }>; outgoing: WritableStream<import("@usirin/forge").Entity<"resp"> & { request: import("@usirin/forge").Entity<"req"> & { name: string; parameters: any; }; result: Promise<any> | undefined; error: { message: string; code?: string; details?: unknown; } | undefined; }>; }; }; export type SpellbookServer<TSpellbook extends Spellbook = Spellbook> = ReturnType<typeof createSpellbookServer<TSpellbook>>; //# sourceMappingURL=server.d.ts.map