edgespec
Version:
Write Winter-CG compatible routes with filesystem routing and tons of features
68 lines (61 loc) • 2.18 kB
text/typescript
import * as http from 'http';
import { R as ResolvedEdgeSpecConfig } from '../index-BDGNXhm0.cjs';
import { M as Middleware } from '../edge-spec-CQZ1EUiH.cjs';
import * as birpc from 'birpc';
import { ChannelOptions } from 'birpc';
import { E as EdgeSpecConfig } from '../config-Buk9QCcE.cjs';
import 'type-fest';
import 'zod';
import 'openapi3-ts/oas31';
type BundlerBuildResult = {
buildUpdatedAtMs: number;
} & ({
type: "success";
bundlePath: string;
} | {
type: "failure";
errorMessage: string;
});
type BundlerRpcFunctions = {
waitForAvailableBuild: () => Promise<BundlerBuildResult>;
};
type HttpServerRpcFunctions = {
onBuildStart: () => void;
onBuildEnd: (build: BundlerBuildResult) => void;
};
interface StartHeadlessDevServerOptions {
port: number;
config: ResolvedEdgeSpecConfig;
rpcChannel: ChannelOptions;
middleware?: Middleware[];
onListening?: (port: number) => void;
onBuildStart?: HttpServerRpcFunctions["onBuildStart"];
onBuildEnd?: HttpServerRpcFunctions["onBuildEnd"];
}
interface StartHeadlessDevBundlerOptions {
config: ResolvedEdgeSpecConfig;
initialRpcChannels?: ChannelOptions[];
}
type StartDevServerOptions = {
rootDirectory?: string;
config?: EdgeSpecConfig;
port?: number;
} & Pick<StartHeadlessDevServerOptions, "middleware" | "onListening" | "onBuildStart" | "onBuildEnd">;
declare const devServer: {
startDevServer: (options: StartDevServerOptions) => Promise<{
port: string;
stop: () => Promise<void>;
}>;
headless: {
startBundler: ({ config, initialRpcChannels, }: StartHeadlessDevBundlerOptions) => Promise<{
stop: () => Promise<void>;
birpc: birpc.BirpcGroup<HttpServerRpcFunctions, BundlerRpcFunctions>;
}>;
startServer: ({ port, config, rpcChannel, middleware, onListening, onBuildStart, onBuildEnd, }: StartHeadlessDevServerOptions) => Promise<{
server: http.Server<typeof http.IncomingMessage, typeof http.ServerResponse>;
stop: () => Promise<void>;
getBuildResult: () => Promise<BundlerBuildResult>;
}>;
};
};
export { devServer };