UNPKG

remix-utils

Version:

This package contains simple utility functions to use with [React Router](https://reactrouter.com/).

87 lines (86 loc) 3.03 kB
/** * 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> ]; }