UNPKG

harden-react-markdown

Version:

A security-focused wrapper for react-markdown that filters URLs based on allowed prefixes

13 lines (12 loc) 866 B
import { ComponentType, ComponentProps } from "react"; import type { Options } from "react-markdown"; interface HardenReactMarkdownOptions { defaultOrigin?: string; allowedLinkPrefixes?: string[]; allowedImagePrefixes?: string[]; } type MarkdownComponentProps<T extends ComponentType<Options>> = ComponentProps<T>; type ValidateMarkdownComponent<T extends ComponentType<Options>> = ComponentProps<T> extends Options ? T : never; type StrictMarkdownComponent<T extends ComponentType<Options>> = T extends ComponentType<infer P> ? P extends Options ? ValidateMarkdownComponent<T> : never : never; export default function hardenReactMarkdown<TMarkdownComponent extends ComponentType<Options>>(MarkdownComponent: StrictMarkdownComponent<TMarkdownComponent>): ComponentType<MarkdownComponentProps<TMarkdownComponent> & HardenReactMarkdownOptions>; export {};