everything-dev
Version:
A consolidated product package for building Module Federation apps with oRPC APIs.
53 lines (52 loc) • 2.06 kB
text/typescript
import { ClientRuntimeConfig } from "../types.mjs";
import { QueryClient } from "@tanstack/react-query";
import { AnyRouteMatch, AnyRouter, RouterHistory } from "@tanstack/react-router";
//#region src/ui/types.d.ts
interface RouterContext<TSession = unknown> {
queryClient: QueryClient;
assetsUrl: string;
runtimeConfig?: Partial<ClientRuntimeConfig>;
session?: TSession;
}
interface RouterContextWithApi<TApiClient = unknown, TSession = unknown> extends RouterContext<TSession> {
apiClient?: TApiClient;
}
interface CreateRouterOptions<TApiClient = unknown, TSession = unknown> {
history?: RouterHistory;
context?: Partial<RouterContextWithApi<TApiClient, TSession>>;
basepath?: string;
}
type HeadMeta = NonNullable<AnyRouteMatch["meta"]>[number];
type HeadLink = NonNullable<AnyRouteMatch["links"]>[number];
type HeadScript = NonNullable<AnyRouteMatch["headScripts"]>[number];
interface HeadData {
meta: HeadMeta[];
links: HeadLink[];
scripts: HeadScript[];
}
interface RenderOptions<TSession = unknown> {
assetsUrl: string;
runtimeConfig: Partial<ClientRuntimeConfig>;
basepath?: string;
session?: TSession;
}
interface RenderOptionsWithApi<TApiClient = unknown, TSession = unknown> extends RenderOptions<TSession> {
apiClient: TApiClient;
authClient?: unknown;
}
interface RenderResult {
stream: ReadableStream;
statusCode: number;
headers: Headers;
}
interface RouterModule<TApiClient = unknown, TSession = unknown> {
createRouter: (opts?: CreateRouterOptions<TApiClient, TSession>) => {
router: AnyRouter;
queryClient: QueryClient;
};
getRouteHead: (pathname: string, context?: Partial<RouterContextWithApi<TApiClient, TSession>>) => Promise<HeadData>;
renderToStream: (request: Request, options: RenderOptionsWithApi<TApiClient, TSession>) => Promise<RenderResult>;
}
//#endregion
export { CreateRouterOptions, HeadData, HeadLink, HeadMeta, HeadScript, RenderOptions, RenderOptionsWithApi, RenderResult, RouterContext, RouterContextWithApi, RouterModule };
//# sourceMappingURL=types.d.mts.map