remix-utils
Version:
This package contains simple utility functions to use with [React Router](https://reactrouter.com/).
87 lines (86 loc) • 3.03 kB
TypeScript
/**
* The Request ID middleware generates a unique ID for each request and stores it in the Router context, this can be useful to log the request and response information and correlate them.
*
* ```ts
* import { unstable_createRequestIDMiddleware } from "remix-utils/middleware/request-id";
*
* export const [requestIDMiddleware, getRequestID] =
* unstable_createRequestIDMiddleware();
* ```
*
* To use it, you need to add it to the `unstable_middleware` array in your `app/root.tsx` file.
*
* ```ts
* import { requestIDMiddleware } from "~/middleware/request-id.server";
*
* export const unstable_middleware = [requestIDMiddleware];
* ```
*
* And you can use the `getRequestID` function in your loaders, actions, and other middleware to get the request ID.
*
* ```ts
* import { getRequestID } from "~/middleware/request-id.server";
*
* export async function loader({ request }: LoaderFunctionArgs) {
* let requestID = getRequestID();
* // ...
* }
* ```
*
* By default the request ID is a UUID, but you can customize it by passing a function to the `unstable_createRequestIDMiddleware` function.
*
* ```ts
* import { unstable_createRequestIDMiddleware } from "remix-utils/middleware/request-id";
*
* export const [requestIDMiddleware, getRequestID] =
* unstable_createRequestIDMiddleware({
* generator() {
* return Math.random().toString(36).slice(2);
* },
* });
* ```
*
* The middleware also gets the request ID from the `X-Request-ID` header if it's present, this can be useful to correlate requests between services.
*
* If you want to use a different header you can pass the header name to the `unstable_createRequestIDMiddleware` function.
*
* ```ts
* import { unstable_createRequestIDMiddleware } from "remix-utils/middleware/request-id";
*
* export const [requestIDMiddleware, getRequestID] =
* unstable_createRequestIDMiddleware({
* header: "X-Correlation-ID",
* });
* ```
* @author [Sergio Xalambrí](https://sergiodxa.com)
* @module Middleware/Request ID
*/
import type { unstable_MiddlewareFunction } from "react-router";
import type { unstable_MiddlewareGetter } from "./utils.js";
export declare function unstable_createRequestIDMiddleware({ generator, header, limitLength, }?: unstable_createRequestIDMiddleware.Options): unstable_createRequestIDMiddleware.ReturnType;
export declare namespace unstable_createRequestIDMiddleware {
interface Options {
/**
* The name of the header to read the request ID from.
*
* @default "X-Request-ID"
*/
header?: string;
/**
* The length of the request ID.
*
* @default 255
*/
limitLength?: number;
/**
* A function to generate a request ID.
*
* @default () => crypto.randomUUID()
*/
generator?(): string;
}
type ReturnType = [
unstable_MiddlewareFunction<Response>,
unstable_MiddlewareGetter<string>
];
}