remix-utils
Version:
This package contains simple utility functions to use with [React Router](https://reactrouter.com/).
37 lines (36 loc) • 1.62 kB
TypeScript
import { TimingCollector } from "@edgefirst-dev/server-timing";
import type { unstable_MiddlewareFunction, unstable_RouterContextProvider } from "react-router";
/**
* Create a middleware that gives you access to a `TimingCollector` instance,
* used to collect server timing metrics and report them in the response
* headers.
*
* The reported metrics will be available in the browser's developer tools.
*
* @returns A tuple with the middleware function and a function to get the
* `TimingCollector` instance from the context.
* @example
* import { unstable_createServerTimingMiddleware } from "remix-utils/middleware/server-timing";
*
* const [serverTimingMiddleware, getTimingCollector] = unstable_createServerTimingMiddleware();
*
* export const unstable_middleware = [serverTimingMiddleware];
*
* export async function loader({ context }: Route.LoaderArgs) {
* let collector = getTimingCollector(context);
* return await collector.measure("name", "optional description", () => {
* return getData();
* });
* }
*/
export declare function unstable_createServerTimingMiddleware(): unstable_createServerTimingMiddleware.ReturnType;
export declare namespace unstable_createServerTimingMiddleware {
/**
* The return type of `unstable_createServerTimingMiddleware`.
*/
type ReturnType = [
unstable_MiddlewareFunction<Response>,
(context: unstable_RouterContextProvider) => TimingCollector
];
}
export declare const serverTimingMiddleware: unstable_MiddlewareFunction<Response>, getTimingCollector: (context: unstable_RouterContextProvider) => TimingCollector;