diff --git a/src/index.ts b/src/index.ts index d6c20e8..b8a28c1 100644 --- a/src/index.ts +++ b/src/index.ts @@ -15,7 +15,7 @@ import rehypeReact, { Options as RehypeReactOptions } from 'rehype-react'; type PartialBy = Omit & Partial>; -export interface UseRemarkOptions { +export interface UseRemarkSyncOptions { remarkParseOptions?: Partial; remarkToRehypeOptions?: RemarkRehypeOptions; rehypeReactOptions?: PartialBy< @@ -24,6 +24,31 @@ export interface UseRemarkOptions { >; remarkPlugins?: PluggableList; rehypePlugins?: PluggableList; +} + +export const useRemarkSync = ( + source: string, + { + remarkParseOptions, + remarkToRehypeOptions, + rehypeReactOptions, + remarkPlugins = [], + rehypePlugins = [], + }: UseRemarkOptions = {} +): ReactElement => + unified() + .use(remarkParse, remarkParseOptions) + .use(remarkPlugins) + .use(remarkToRehype, remarkToRehypeOptions) + .use(rehypePlugins) + .use(rehypeReact, { + createElement, + Fragment, + ...rehypeReactOptions, + } as RehypeReactOptions) + .processSync(source).result as ReactElement; + +export interface UseRemarkOptions extends UseRemarkSyncOptions { onError?: (err: Error) => void; }