Socket
Socket
Sign inDemoInstall

react-markdown

Package Overview
Dependencies
Maintainers
2
Versions
92
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-markdown - npm Package Compare versions

Comparing version 6.0.2 to 6.0.3

11

package.json
{
"name": "react-markdown",
"version": "6.0.2",
"version": "6.0.3",
"description": "Render Markdown as React components",

@@ -82,3 +82,3 @@ "license": "MIT",

"prop-types": "^15.7.2",
"property-information": "^5.0.0",
"property-information": "^5.3.0",
"react-is": "^17.0.0",

@@ -103,6 +103,6 @@ "remark-parse": "^9.0.0",

"@rollup/plugin-babel": "^5.0.0",
"@rollup/plugin-commonjs": "^18.0.0",
"@rollup/plugin-commonjs": "^19.0.0",
"@rollup/plugin-json": "^4.0.0",
"@rollup/plugin-node-resolve": "^13.0.0",
"@testing-library/react": "^11.0.0",
"@testing-library/react": "^12.0.0",
"@types/jest": "^26.0.0",

@@ -119,3 +119,3 @@ "@types/react": "^17.0.0",

"eslint-plugin-security": "^1.0.0",
"jest": "^26.0.0",
"jest": "^27.0.0",
"katex": "^0.13.0",

@@ -173,2 +173,3 @@ "npm-run-all": "^4.0.0",

"jest": {
"testEnvironment": "jsdom",
"coverageThreshold": {

@@ -175,0 +176,0 @@ "global": {

@@ -258,3 +258,5 @@ # react-markdown

) : (
<code className={className} {...props} />
<code className={className} {...props}>
{children}
</code>
)

@@ -261,0 +263,0 @@ }

@@ -55,11 +55,7 @@ export type IntrinsicElements = JSX.IntrinsicElements

title: string | null
) => string
export type ReactMarkdownNames = keyof IntrinsicElements
) => string | undefined
/**
* To do: is `data-sourcepos` typeable?
*/
export type ReactBaseProps = {
[key: string]: unknown
className?: string
}
export type ReactMarkdownNames = keyof IntrinsicElements
export type ReactMarkdownProps = {

@@ -72,17 +68,14 @@ node: Element

*/
sourcePosition?: Position | null
sourcePosition?: import('unist').Position | null | undefined
/**
* Passed when `options.includeElementIndex` is given
*/
index?: number
index?: number | undefined
/**
* Passed when `options.includeElementIndex` is given
*/
siblingCount?: number
siblingCount?: number | undefined
}
export type NormalComponent = (
props: ReactBaseProps & ReactMarkdownProps
) => ReactNode
export type CodeComponent = (
props: ReactBaseProps &
props: JSX.IntrinsicElements['code'] &
ReactMarkdownProps & {

@@ -93,3 +86,3 @@ inline?: boolean

export type HeadingComponent = (
props: ReactBaseProps &
props: JSX.IntrinsicElements['h1'] &
ReactMarkdownProps & {

@@ -100,3 +93,3 @@ level: number

export type LiComponent = (
props: ReactBaseProps &
props: JSX.IntrinsicElements['li'] &
ReactMarkdownProps & {

@@ -109,3 +102,3 @@ checked: boolean | null

export type OrderedListComponent = (
props: ReactBaseProps &
props: JSX.IntrinsicElements['ol'] &
ReactMarkdownProps & {

@@ -117,3 +110,3 @@ depth: number

export type TableCellComponent = (
props: ReactBaseProps &
props: JSX.IntrinsicElements['table'] &
ReactMarkdownProps & {

@@ -127,3 +120,3 @@ style?: {

export type TableRowComponent = (
props: ReactBaseProps &
props: JSX.IntrinsicElements['tr'] &
ReactMarkdownProps & {

@@ -134,3 +127,3 @@ isHeader: boolean

export type UnorderedListComponent = (
props: ReactBaseProps &
props: JSX.IntrinsicElements['ul'] &
ReactMarkdownProps & {

@@ -156,16 +149,1116 @@ depth: number

}
export type NormalComponents = Record<
Exclude<ReactMarkdownNames, keyof SpecialComponents>,
NormalComponent | ReactMarkdownNames
export type NormalComponents = {
a:
| 'a'
| ((
props: React.ClassAttributes<HTMLAnchorElement> &
React.AnchorHTMLAttributes<HTMLAnchorElement> &
ReactMarkdownProps
) => ReactNode)
abbr:
| 'abbr'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
address:
| 'address'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
area:
| 'area'
| ((
props: React.ClassAttributes<HTMLAreaElement> &
React.AreaHTMLAttributes<HTMLAreaElement> &
ReactMarkdownProps
) => ReactNode)
article:
| 'article'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
aside:
| 'aside'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
audio:
| 'audio'
| ((
props: React.ClassAttributes<HTMLAudioElement> &
React.AudioHTMLAttributes<HTMLAudioElement> &
ReactMarkdownProps
) => ReactNode)
b:
| 'b'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
base:
| 'base'
| ((
props: React.ClassAttributes<HTMLBaseElement> &
React.BaseHTMLAttributes<HTMLBaseElement> &
ReactMarkdownProps
) => ReactNode)
bdi:
| 'bdi'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
bdo:
| 'bdo'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
big:
| 'big'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
blockquote:
| 'blockquote'
| ((
props: React.ClassAttributes<HTMLElement> &
React.BlockquoteHTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
body:
| 'body'
| ((
props: React.ClassAttributes<HTMLBodyElement> &
React.HTMLAttributes<HTMLBodyElement> &
ReactMarkdownProps
) => ReactNode)
br:
| 'br'
| ((
props: React.ClassAttributes<HTMLBRElement> &
React.HTMLAttributes<HTMLBRElement> &
ReactMarkdownProps
) => ReactNode)
button:
| 'button'
| ((
props: React.ClassAttributes<HTMLButtonElement> &
React.ButtonHTMLAttributes<HTMLButtonElement> &
ReactMarkdownProps
) => ReactNode)
canvas:
| 'canvas'
| ((
props: React.ClassAttributes<HTMLCanvasElement> &
React.CanvasHTMLAttributes<HTMLCanvasElement> &
ReactMarkdownProps
) => ReactNode)
caption:
| 'caption'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
cite:
| 'cite'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
code:
| 'code'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
col:
| 'col'
| ((
props: React.ClassAttributes<HTMLTableColElement> &
React.ColHTMLAttributes<HTMLTableColElement> &
ReactMarkdownProps
) => ReactNode)
colgroup:
| 'colgroup'
| ((
props: React.ClassAttributes<HTMLTableColElement> &
React.ColgroupHTMLAttributes<HTMLTableColElement> &
ReactMarkdownProps
) => ReactNode)
data:
| 'data'
| ((
props: React.ClassAttributes<HTMLDataElement> &
React.DataHTMLAttributes<HTMLDataElement> &
ReactMarkdownProps
) => ReactNode)
datalist:
| 'datalist'
| ((
props: React.ClassAttributes<HTMLDataListElement> &
React.HTMLAttributes<HTMLDataListElement> &
ReactMarkdownProps
) => ReactNode)
dd:
| 'dd'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
del:
| 'del'
| ((
props: React.ClassAttributes<HTMLElement> &
React.DelHTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
details:
| 'details'
| ((
props: React.ClassAttributes<HTMLElement> &
React.DetailsHTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
dfn:
| 'dfn'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
dialog:
| 'dialog'
| ((
props: React.ClassAttributes<HTMLDialogElement> &
React.DialogHTMLAttributes<HTMLDialogElement> &
ReactMarkdownProps
) => ReactNode)
div:
| 'div'
| ((
props: React.ClassAttributes<HTMLDivElement> &
React.HTMLAttributes<HTMLDivElement> &
ReactMarkdownProps
) => ReactNode)
dl:
| 'dl'
| ((
props: React.ClassAttributes<HTMLDListElement> &
React.HTMLAttributes<HTMLDListElement> &
ReactMarkdownProps
) => ReactNode)
dt:
| 'dt'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
em:
| 'em'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
embed:
| 'embed'
| ((
props: React.ClassAttributes<HTMLEmbedElement> &
React.EmbedHTMLAttributes<HTMLEmbedElement> &
ReactMarkdownProps
) => ReactNode)
fieldset:
| 'fieldset'
| ((
props: React.ClassAttributes<HTMLFieldSetElement> &
React.FieldsetHTMLAttributes<HTMLFieldSetElement> &
ReactMarkdownProps
) => ReactNode)
figcaption:
| 'figcaption'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
figure:
| 'figure'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
footer:
| 'footer'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
form:
| 'form'
| ((
props: React.ClassAttributes<HTMLFormElement> &
React.FormHTMLAttributes<HTMLFormElement> &
ReactMarkdownProps
) => ReactNode)
h1:
| 'h1'
| ((
props: React.ClassAttributes<HTMLHeadingElement> &
React.HTMLAttributes<HTMLHeadingElement> &
ReactMarkdownProps
) => ReactNode)
h2:
| 'h2'
| ((
props: React.ClassAttributes<HTMLHeadingElement> &
React.HTMLAttributes<HTMLHeadingElement> &
ReactMarkdownProps
) => ReactNode)
h3:
| 'h3'
| ((
props: React.ClassAttributes<HTMLHeadingElement> &
React.HTMLAttributes<HTMLHeadingElement> &
ReactMarkdownProps
) => ReactNode)
h4:
| 'h4'
| ((
props: React.ClassAttributes<HTMLHeadingElement> &
React.HTMLAttributes<HTMLHeadingElement> &
ReactMarkdownProps
) => ReactNode)
h5:
| 'h5'
| ((
props: React.ClassAttributes<HTMLHeadingElement> &
React.HTMLAttributes<HTMLHeadingElement> &
ReactMarkdownProps
) => ReactNode)
h6:
| 'h6'
| ((
props: React.ClassAttributes<HTMLHeadingElement> &
React.HTMLAttributes<HTMLHeadingElement> &
ReactMarkdownProps
) => ReactNode)
head:
| 'head'
| ((
props: React.ClassAttributes<HTMLHeadElement> &
React.HTMLAttributes<HTMLHeadElement> &
ReactMarkdownProps
) => ReactNode)
header:
| 'header'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
hgroup:
| 'hgroup'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
hr:
| 'hr'
| ((
props: React.ClassAttributes<HTMLHRElement> &
React.HTMLAttributes<HTMLHRElement> &
ReactMarkdownProps
) => ReactNode)
html:
| 'html'
| ((
props: React.ClassAttributes<HTMLHtmlElement> &
React.HtmlHTMLAttributes<HTMLHtmlElement> &
ReactMarkdownProps
) => ReactNode)
i:
| 'i'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
iframe:
| 'iframe'
| ((
props: React.ClassAttributes<HTMLIFrameElement> &
React.IframeHTMLAttributes<HTMLIFrameElement> &
ReactMarkdownProps
) => ReactNode)
img:
| 'img'
| ((
props: React.ClassAttributes<HTMLImageElement> &
React.ImgHTMLAttributes<HTMLImageElement> &
ReactMarkdownProps
) => ReactNode)
input:
| 'input'
| ((
props: React.ClassAttributes<HTMLInputElement> &
React.InputHTMLAttributes<HTMLInputElement> &
ReactMarkdownProps
) => ReactNode)
ins:
| 'ins'
| ((
props: React.ClassAttributes<HTMLModElement> &
React.InsHTMLAttributes<HTMLModElement> &
ReactMarkdownProps
) => ReactNode)
kbd:
| 'kbd'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
keygen:
| 'keygen'
| ((
props: React.ClassAttributes<HTMLElement> &
React.KeygenHTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
label:
| 'label'
| ((
props: React.ClassAttributes<HTMLLabelElement> &
React.LabelHTMLAttributes<HTMLLabelElement> &
ReactMarkdownProps
) => ReactNode)
legend:
| 'legend'
| ((
props: React.ClassAttributes<HTMLLegendElement> &
React.HTMLAttributes<HTMLLegendElement> &
ReactMarkdownProps
) => ReactNode)
li:
| 'li'
| ((
props: React.ClassAttributes<HTMLLIElement> &
React.LiHTMLAttributes<HTMLLIElement> &
ReactMarkdownProps
) => ReactNode)
link:
| 'link'
| ((
props: React.ClassAttributes<HTMLLinkElement> &
React.LinkHTMLAttributes<HTMLLinkElement> &
ReactMarkdownProps
) => ReactNode)
main:
| 'main'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
map:
| 'map'
| ((
props: React.ClassAttributes<HTMLMapElement> &
React.MapHTMLAttributes<HTMLMapElement> &
ReactMarkdownProps
) => ReactNode)
mark:
| 'mark'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
menu:
| 'menu'
| ((
props: React.ClassAttributes<HTMLElement> &
React.MenuHTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
menuitem:
| 'menuitem'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
meta:
| 'meta'
| ((
props: React.ClassAttributes<HTMLMetaElement> &
React.MetaHTMLAttributes<HTMLMetaElement> &
ReactMarkdownProps
) => ReactNode)
meter:
| 'meter'
| ((
props: React.ClassAttributes<HTMLElement> &
React.MeterHTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
nav:
| 'nav'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
noindex:
| 'noindex'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
noscript:
| 'noscript'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
object:
| 'object'
| ((
props: React.ClassAttributes<HTMLObjectElement> &
React.ObjectHTMLAttributes<HTMLObjectElement> &
ReactMarkdownProps
) => ReactNode)
ol:
| 'ol'
| ((
props: React.ClassAttributes<HTMLOListElement> &
React.OlHTMLAttributes<HTMLOListElement> &
ReactMarkdownProps
) => ReactNode)
optgroup:
| 'optgroup'
| ((
props: React.ClassAttributes<HTMLOptGroupElement> &
React.OptgroupHTMLAttributes<HTMLOptGroupElement> &
ReactMarkdownProps
) => ReactNode)
option:
| 'option'
| ((
props: React.ClassAttributes<HTMLOptionElement> &
React.OptionHTMLAttributes<HTMLOptionElement> &
ReactMarkdownProps
) => ReactNode)
output:
| 'output'
| ((
props: React.ClassAttributes<HTMLElement> &
React.OutputHTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
p:
| 'p'
| ((
props: React.ClassAttributes<HTMLParagraphElement> &
React.HTMLAttributes<HTMLParagraphElement> &
ReactMarkdownProps
) => ReactNode)
param:
| 'param'
| ((
props: React.ClassAttributes<HTMLParamElement> &
React.ParamHTMLAttributes<HTMLParamElement> &
ReactMarkdownProps
) => ReactNode)
picture:
| 'picture'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
pre:
| 'pre'
| ((
props: React.ClassAttributes<HTMLPreElement> &
React.HTMLAttributes<HTMLPreElement> &
ReactMarkdownProps
) => ReactNode)
progress:
| 'progress'
| ((
props: React.ClassAttributes<HTMLProgressElement> &
React.ProgressHTMLAttributes<HTMLProgressElement> &
ReactMarkdownProps
) => ReactNode)
q:
| 'q'
| ((
props: React.ClassAttributes<HTMLQuoteElement> &
React.QuoteHTMLAttributes<HTMLQuoteElement> &
ReactMarkdownProps
) => ReactNode)
rp:
| 'rp'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
rt:
| 'rt'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
ruby:
| 'ruby'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
s:
| 's'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
samp:
| 'samp'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
slot:
| 'slot'
| ((
props: React.ClassAttributes<HTMLSlotElement> &
React.SlotHTMLAttributes<HTMLSlotElement> &
ReactMarkdownProps
) => ReactNode)
script:
| 'script'
| ((
props: React.ClassAttributes<HTMLScriptElement> &
React.ScriptHTMLAttributes<HTMLScriptElement> &
ReactMarkdownProps
) => ReactNode)
section:
| 'section'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
select:
| 'select'
| ((
props: React.ClassAttributes<HTMLSelectElement> &
React.SelectHTMLAttributes<HTMLSelectElement> &
ReactMarkdownProps
) => ReactNode)
small:
| 'small'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
source:
| 'source'
| ((
props: React.ClassAttributes<HTMLSourceElement> &
React.SourceHTMLAttributes<HTMLSourceElement> &
ReactMarkdownProps
) => ReactNode)
span:
| 'span'
| ((
props: React.ClassAttributes<HTMLSpanElement> &
React.HTMLAttributes<HTMLSpanElement> &
ReactMarkdownProps
) => ReactNode)
strong:
| 'strong'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
style:
| 'style'
| ((
props: React.ClassAttributes<HTMLStyleElement> &
React.StyleHTMLAttributes<HTMLStyleElement> &
ReactMarkdownProps
) => ReactNode)
sub:
| 'sub'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
summary:
| 'summary'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
sup:
| 'sup'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
table:
| 'table'
| ((
props: React.ClassAttributes<HTMLTableElement> &
React.TableHTMLAttributes<HTMLTableElement> &
ReactMarkdownProps
) => ReactNode)
template:
| 'template'
| ((
props: React.ClassAttributes<HTMLTemplateElement> &
React.HTMLAttributes<HTMLTemplateElement> &
ReactMarkdownProps
) => ReactNode)
tbody:
| 'tbody'
| ((
props: React.ClassAttributes<HTMLTableSectionElement> &
React.HTMLAttributes<HTMLTableSectionElement> &
ReactMarkdownProps
) => ReactNode)
td:
| 'td'
| ((
props: React.ClassAttributes<HTMLTableDataCellElement> &
React.TdHTMLAttributes<HTMLTableDataCellElement> &
ReactMarkdownProps
) => ReactNode)
textarea:
| 'textarea'
| ((
props: React.ClassAttributes<HTMLTextAreaElement> &
React.TextareaHTMLAttributes<HTMLTextAreaElement> &
ReactMarkdownProps
) => ReactNode)
tfoot:
| 'tfoot'
| ((
props: React.ClassAttributes<HTMLTableSectionElement> &
React.HTMLAttributes<HTMLTableSectionElement> &
ReactMarkdownProps
) => ReactNode)
th:
| 'th'
| ((
props: React.ClassAttributes<HTMLTableHeaderCellElement> &
React.ThHTMLAttributes<HTMLTableHeaderCellElement> &
ReactMarkdownProps
) => ReactNode)
thead:
| 'thead'
| ((
props: React.ClassAttributes<HTMLTableSectionElement> &
React.HTMLAttributes<HTMLTableSectionElement> &
ReactMarkdownProps
) => ReactNode)
time:
| 'time'
| ((
props: React.ClassAttributes<HTMLElement> &
React.TimeHTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
title:
| 'title'
| ((
props: React.ClassAttributes<HTMLTitleElement> &
React.HTMLAttributes<HTMLTitleElement> &
ReactMarkdownProps
) => ReactNode)
tr:
| 'tr'
| ((
props: React.ClassAttributes<HTMLTableRowElement> &
React.HTMLAttributes<HTMLTableRowElement> &
ReactMarkdownProps
) => ReactNode)
track:
| 'track'
| ((
props: React.ClassAttributes<HTMLTrackElement> &
React.TrackHTMLAttributes<HTMLTrackElement> &
ReactMarkdownProps
) => ReactNode)
u:
| 'u'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
ul:
| 'ul'
| ((
props: React.ClassAttributes<HTMLUListElement> &
React.HTMLAttributes<HTMLUListElement> &
ReactMarkdownProps
) => ReactNode)
var:
| 'var'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
video:
| 'video'
| ((
props: React.ClassAttributes<HTMLVideoElement> &
React.VideoHTMLAttributes<HTMLVideoElement> &
ReactMarkdownProps
) => ReactNode)
wbr:
| 'wbr'
| ((
props: React.ClassAttributes<HTMLElement> &
React.HTMLAttributes<HTMLElement> &
ReactMarkdownProps
) => ReactNode)
webview:
| 'webview'
| ((
props: React.ClassAttributes<HTMLWebViewElement> &
React.WebViewHTMLAttributes<HTMLWebViewElement> &
ReactMarkdownProps
) => ReactNode)
svg:
| 'svg'
| ((props: React.SVGProps<SVGSVGElement> & ReactMarkdownProps) => ReactNode)
animate:
| 'animate'
| ((props: React.SVGProps<SVGElement> & ReactMarkdownProps) => ReactNode)
animateMotion:
| 'animateMotion'
| ((props: React.SVGProps<SVGElement> & ReactMarkdownProps) => ReactNode)
animateTransform:
| 'animateTransform'
| ((props: React.SVGProps<SVGElement> & ReactMarkdownProps) => ReactNode)
circle:
| 'circle'
| ((
props: React.SVGProps<SVGCircleElement> & ReactMarkdownProps
) => ReactNode)
clipPath:
| 'clipPath'
| ((
props: React.SVGProps<SVGClipPathElement> & ReactMarkdownProps
) => ReactNode)
defs:
| 'defs'
| ((
props: React.SVGProps<SVGDefsElement> & ReactMarkdownProps
) => ReactNode)
desc:
| 'desc'
| ((
props: React.SVGProps<SVGDescElement> & ReactMarkdownProps
) => ReactNode)
ellipse:
| 'ellipse'
| ((
props: React.SVGProps<SVGEllipseElement> & ReactMarkdownProps
) => ReactNode)
feBlend:
| 'feBlend'
| ((
props: React.SVGProps<SVGFEBlendElement> & ReactMarkdownProps
) => ReactNode)
feColorMatrix:
| 'feColorMatrix'
| ((
props: React.SVGProps<SVGFEColorMatrixElement> & ReactMarkdownProps
) => ReactNode)
feComponentTransfer:
| 'feComponentTransfer'
| ((
props: React.SVGProps<SVGFEComponentTransferElement> &
ReactMarkdownProps
) => ReactNode)
feComposite:
| 'feComposite'
| ((
props: React.SVGProps<SVGFECompositeElement> & ReactMarkdownProps
) => ReactNode)
feConvolveMatrix:
| 'feConvolveMatrix'
| ((
props: React.SVGProps<SVGFEConvolveMatrixElement> & ReactMarkdownProps
) => ReactNode)
feDiffuseLighting:
| 'feDiffuseLighting'
| ((
props: React.SVGProps<SVGFEDiffuseLightingElement> & ReactMarkdownProps
) => ReactNode)
feDisplacementMap:
| 'feDisplacementMap'
| ((
props: React.SVGProps<SVGFEDisplacementMapElement> & ReactMarkdownProps
) => ReactNode)
feDistantLight:
| 'feDistantLight'
| ((
props: React.SVGProps<SVGFEDistantLightElement> & ReactMarkdownProps
) => ReactNode)
feDropShadow:
| 'feDropShadow'
| ((
props: React.SVGProps<SVGFEDropShadowElement> & ReactMarkdownProps
) => ReactNode)
feFlood:
| 'feFlood'
| ((
props: React.SVGProps<SVGFEFloodElement> & ReactMarkdownProps
) => ReactNode)
feFuncA:
| 'feFuncA'
| ((
props: React.SVGProps<SVGFEFuncAElement> & ReactMarkdownProps
) => ReactNode)
feFuncB:
| 'feFuncB'
| ((
props: React.SVGProps<SVGFEFuncBElement> & ReactMarkdownProps
) => ReactNode)
feFuncG:
| 'feFuncG'
| ((
props: React.SVGProps<SVGFEFuncGElement> & ReactMarkdownProps
) => ReactNode)
feFuncR:
| 'feFuncR'
| ((
props: React.SVGProps<SVGFEFuncRElement> & ReactMarkdownProps
) => ReactNode)
feGaussianBlur:
| 'feGaussianBlur'
| ((
props: React.SVGProps<SVGFEGaussianBlurElement> & ReactMarkdownProps
) => ReactNode)
feImage:
| 'feImage'
| ((
props: React.SVGProps<SVGFEImageElement> & ReactMarkdownProps
) => ReactNode)
feMerge:
| 'feMerge'
| ((
props: React.SVGProps<SVGFEMergeElement> & ReactMarkdownProps
) => ReactNode)
feMergeNode:
| 'feMergeNode'
| ((
props: React.SVGProps<SVGFEMergeNodeElement> & ReactMarkdownProps
) => ReactNode)
feMorphology:
| 'feMorphology'
| ((
props: React.SVGProps<SVGFEMorphologyElement> & ReactMarkdownProps
) => ReactNode)
feOffset:
| 'feOffset'
| ((
props: React.SVGProps<SVGFEOffsetElement> & ReactMarkdownProps
) => ReactNode)
fePointLight:
| 'fePointLight'
| ((
props: React.SVGProps<SVGFEPointLightElement> & ReactMarkdownProps
) => ReactNode)
feSpecularLighting:
| 'feSpecularLighting'
| ((
props: React.SVGProps<SVGFESpecularLightingElement> & ReactMarkdownProps
) => ReactNode)
feSpotLight:
| 'feSpotLight'
| ((
props: React.SVGProps<SVGFESpotLightElement> & ReactMarkdownProps
) => ReactNode)
feTile:
| 'feTile'
| ((
props: React.SVGProps<SVGFETileElement> & ReactMarkdownProps
) => ReactNode)
feTurbulence:
| 'feTurbulence'
| ((
props: React.SVGProps<SVGFETurbulenceElement> & ReactMarkdownProps
) => ReactNode)
filter:
| 'filter'
| ((
props: React.SVGProps<SVGFilterElement> & ReactMarkdownProps
) => ReactNode)
foreignObject:
| 'foreignObject'
| ((
props: React.SVGProps<SVGForeignObjectElement> & ReactMarkdownProps
) => ReactNode)
g:
| 'g'
| ((props: React.SVGProps<SVGGElement> & ReactMarkdownProps) => ReactNode)
image:
| 'image'
| ((
props: React.SVGProps<SVGImageElement> & ReactMarkdownProps
) => ReactNode)
line:
| 'line'
| ((
props: React.SVGProps<SVGLineElement> & ReactMarkdownProps
) => ReactNode)
linearGradient:
| 'linearGradient'
| ((
props: React.SVGProps<SVGLinearGradientElement> & ReactMarkdownProps
) => ReactNode)
marker:
| 'marker'
| ((
props: React.SVGProps<SVGMarkerElement> & ReactMarkdownProps
) => ReactNode)
mask:
| 'mask'
| ((
props: React.SVGProps<SVGMaskElement> & ReactMarkdownProps
) => ReactNode)
metadata:
| 'metadata'
| ((
props: React.SVGProps<SVGMetadataElement> & ReactMarkdownProps
) => ReactNode)
mpath:
| 'mpath'
| ((props: React.SVGProps<SVGElement> & ReactMarkdownProps) => ReactNode)
path:
| 'path'
| ((
props: React.SVGProps<SVGPathElement> & ReactMarkdownProps
) => ReactNode)
pattern:
| 'pattern'
| ((
props: React.SVGProps<SVGPatternElement> & ReactMarkdownProps
) => ReactNode)
polygon:
| 'polygon'
| ((
props: React.SVGProps<SVGPolygonElement> & ReactMarkdownProps
) => ReactNode)
polyline:
| 'polyline'
| ((
props: React.SVGProps<SVGPolylineElement> & ReactMarkdownProps
) => ReactNode)
radialGradient:
| 'radialGradient'
| ((
props: React.SVGProps<SVGRadialGradientElement> & ReactMarkdownProps
) => ReactNode)
rect:
| 'rect'
| ((
props: React.SVGProps<SVGRectElement> & ReactMarkdownProps
) => ReactNode)
stop:
| 'stop'
| ((
props: React.SVGProps<SVGStopElement> & ReactMarkdownProps
) => ReactNode)
switch:
| 'switch'
| ((
props: React.SVGProps<SVGSwitchElement> & ReactMarkdownProps
) => ReactNode)
symbol:
| 'symbol'
| ((
props: React.SVGProps<SVGSymbolElement> & ReactMarkdownProps
) => ReactNode)
text:
| 'text'
| ((
props: React.SVGProps<SVGTextElement> & ReactMarkdownProps
) => ReactNode)
textPath:
| 'textPath'
| ((
props: React.SVGProps<SVGTextPathElement> & ReactMarkdownProps
) => ReactNode)
tspan:
| 'tspan'
| ((
props: React.SVGProps<SVGTSpanElement> & ReactMarkdownProps
) => ReactNode)
use:
| 'use'
| ((props: React.SVGProps<SVGUseElement> & ReactMarkdownProps) => ReactNode)
view:
| 'view'
| ((
props: React.SVGProps<SVGViewElement> & ReactMarkdownProps
) => ReactNode)
}
export type Components = Partial<
Omit<NormalComponents, keyof SpecialComponents> & SpecialComponents
>
export type Components = Partial<NormalComponents & SpecialComponents>
export type TransformOptions = {
sourcePos?: boolean
rawSourcePos?: boolean
skipHtml?: boolean
includeElementIndex?: boolean
transformLinkUri?: false | TransformLink
transformImageUri?: TransformImage
linkTarget?: string | TransformLinkTarget
components?: Components
sourcePos?: boolean | undefined
rawSourcePos?: boolean | undefined
skipHtml?: boolean | undefined
includeElementIndex?: boolean | undefined
transformLinkUri?: false | TransformLink | null | undefined
transformImageUri?: TransformImage | undefined
linkTarget?: string | TransformLinkTarget | undefined
components?:
| Partial<
Omit<NormalComponents, keyof SpecialComponents> & SpecialComponents
>
| undefined
}

@@ -172,0 +1265,0 @@ /**

@@ -5,11 +5,6 @@ 'use strict'

const ReactIs = require('react-is')
// @ts-ignore remove when typed
const svg = require('property-information/svg')
// @ts-ignore remove when typed
const find = require('property-information/find')
// @ts-ignore remove when typed
const hastToReact = require('property-information/hast-to-react.json')
// @ts-ignore remove when typed
const spaces = require('space-separated-tokens')
// @ts-ignore remove when typed
const commas = require('comma-separated-tokens')

@@ -33,3 +28,3 @@ const style = require('style-to-object')

/**
* @typedef {Object} Info
* @typedef Info
* @property {string?} space

@@ -48,3 +43,3 @@ * @property {string?} attribute

*
* @typedef {Object} Schema
* @typedef Schema
* @property {Object.<string, Info>} property

@@ -54,7 +49,7 @@ * @property {Object.<string, string>} normal

*
* @typedef {Object} Raw
* @typedef Raw
* @property {'raw'} type
* @property {string} value
*
* @typedef {Object} Context
* @typedef Context
* @property {TransformOptions} options

@@ -80,11 +75,9 @@ * @property {Schema} schema

* @param {string?} title
* @returns {string}
* @returns {string|undefined}
*
* @typedef {keyof IntrinsicElements} ReactMarkdownNames
*
* @typedef {{ [key: string]: unknown, className?: string }} ReactBaseProps
*
* To do: is `data-sourcepos` typeable?
*
* @typedef {Object} ReactMarkdownProps
* @typedef ReactMarkdownProps
* @property {Element} node

@@ -97,35 +90,31 @@ * @property {string} key

*
* @callback NormalComponent
* @param {ReactBaseProps & ReactMarkdownProps} props
* @returns {ReactNode}
*
* @callback CodeComponent
* @param {ReactBaseProps & ReactMarkdownProps & {inline?: boolean}} props
* @param {JSX.IntrinsicElements['code'] & ReactMarkdownProps & {inline?: boolean}} props
* @returns {ReactNode}
*
* @callback HeadingComponent
* @param {ReactBaseProps & ReactMarkdownProps & {level: number}} props
* @param {JSX.IntrinsicElements['h1'] & ReactMarkdownProps & {level: number}} props
* @returns {ReactNode}
*
* @callback LiComponent
* @param {ReactBaseProps & ReactMarkdownProps & {checked: boolean|null, index: number, ordered: boolean}} props
* @param {JSX.IntrinsicElements['li'] & ReactMarkdownProps & {checked: boolean|null, index: number, ordered: boolean}} props
* @returns {ReactNode}
*
* @callback OrderedListComponent
* @param {ReactBaseProps & ReactMarkdownProps & {depth: number, ordered: true}} props
* @param {JSX.IntrinsicElements['ol'] & ReactMarkdownProps & {depth: number, ordered: true}} props
* @returns {ReactNode}
*
* @callback TableCellComponent
* @param {ReactBaseProps & ReactMarkdownProps & {style?: Object.<string, unknown>, isHeader: boolean}} props
* @param {JSX.IntrinsicElements['table'] & ReactMarkdownProps & {style?: Object.<string, unknown>, isHeader: boolean}} props
* @returns {ReactNode}
*
* @callback TableRowComponent
* @param {ReactBaseProps & ReactMarkdownProps & {isHeader: boolean}} props
* @param {JSX.IntrinsicElements['tr'] & ReactMarkdownProps & {isHeader: boolean}} props
* @returns {ReactNode}
*
* @callback UnorderedListComponent
* @param {ReactBaseProps & ReactMarkdownProps & {depth: number, ordered: false}} props
* @param {JSX.IntrinsicElements['ul'] & ReactMarkdownProps & {depth: number, ordered: false}} props
* @returns {ReactNode}
*
* @typedef {Object} SpecialComponents
* @typedef SpecialComponents
* @property {CodeComponent|ReactMarkdownNames} code

@@ -145,8 +134,8 @@ * @property {HeadingComponent|ReactMarkdownNames} h1

*
* @typedef {Record<Exclude<ReactMarkdownNames, keyof SpecialComponents>, NormalComponent|ReactMarkdownNames>} NormalComponents
* @typedef {Partial<NormalComponents & SpecialComponents>} Components
* @typedef {{[TagName in keyof IntrinsicElements]: TagName | ((props: IntrinsicElements[TagName] & ReactMarkdownProps) => ReactNode)}} NormalComponents
* @typedef {Partial<Omit<NormalComponents, keyof SpecialComponents> & SpecialComponents>} Components
*/
/**
* @typedef {Object} TransformOptions
* @typedef TransformOptions
* @property {boolean} [sourcePos=false]

@@ -156,3 +145,3 @@ * @property {boolean} [rawSourcePos=false]

* @property {boolean} [includeElementIndex=false]
* @property {false|TransformLink} [transformLinkUri]
* @property {null|false|TransformLink} [transformLinkUri]
* @property {TransformImage} [transformImageUri]

@@ -196,6 +185,6 @@ * @property {string|TransformLinkTarget} [linkTarget]

}
// @ts-ignore `raw` nodes are non-standard
// @ts-expect-error `raw` nodes are non-standard
else if (child.type === 'raw' && !context.options.skipHtml) {
// Default behavior is to show (encoded) HTML.
// @ts-ignore `raw` nodes are non-standard
// @ts-expect-error `raw` nodes are non-standard
children.push(child.value)

@@ -218,3 +207,3 @@ }

/** @type {ReactMarkdownNames} */
// @ts-ignore assume a known HTML/SVG element.
// @ts-expect-error assume a known HTML/SVG element.
const name = node.tagName

@@ -232,6 +221,9 @@ /** @type {Object.<string, unknown>} */

for (property in node.properties) {
/* istanbul ignore else - prototype polution. */
if (own.call(node.properties, property)) {
addProperty(properties, property, node.properties[property], context)
/* istanbul ignore else - types say they’re optional. */
if (node.properties) {
for (property in node.properties) {
/* istanbul ignore else - prototype polution. */
if (own.call(node.properties, property)) {
addProperty(properties, property, node.properties[property], context)
}
}

@@ -259,3 +251,2 @@ }

}
/** @type {NormalComponent|SpecialComponents[keyof SpecialComponents]|ReactMarkdownNames} */
const component =

@@ -283,3 +274,3 @@ options.components && own.call(options.components, name)

typeof options.linkTarget === 'function'
? // @ts-ignore assume `href` is a string
? // @ts-expect-error assume `href` is a string
options.linkTarget(properties.href, node.children, properties.title)

@@ -291,3 +282,3 @@ : options.linkTarget

properties.href = options.transformLinkUri(
// @ts-ignore assume `href` is a string
// @ts-expect-error assume `href` is a string
properties.href,

@@ -299,3 +290,8 @@ node.children,

if (!basic && name === 'code' && parent.tagName !== 'pre') {
if (
!basic &&
name === 'code' &&
parent.type === 'element' &&
parent.tagName !== 'pre'
) {
properties.inline = true

@@ -318,3 +314,3 @@ }

properties.src = options.transformImageUri(
// @ts-ignore assume `src` is a string
// @ts-expect-error assume `src` is a string
properties.src,

@@ -326,5 +322,6 @@ properties.alt,

if (!basic && name === 'li') {
if (!basic && name === 'li' && parent.type === 'element') {
const input = getInputElement(node)
properties.checked = input ? Boolean(input.properties.checked) : null
properties.checked =
input && input.properties ? Boolean(input.properties.checked) : null
properties.index = getElementsBeforeCount(parent, node)

@@ -342,3 +339,3 @@ properties.ordered = parent.tagName === 'ol'

if (!properties.style) properties.style = {}
// @ts-ignore assume `style` is an object
// @ts-expect-error assume `style` is an object
properties.style.textAlign = properties.align

@@ -353,3 +350,3 @@ delete properties.align

if (!basic && name === 'tr') {
if (!basic && name === 'tr' && parent.type === 'element') {
properties.isHeader = Boolean(parent.tagName === 'thead')

@@ -446,3 +443,4 @@ }

if (info.space) {
/* istanbul ignore else - types say they’re optional. */
if (info.space && info.property) {
props[

@@ -453,3 +451,3 @@ own.call(hastToReact, info.property)

] = result
} else {
} else if (info.attribute) {
props[info.attribute] = result

@@ -469,3 +467,3 @@ }

style(value, iterator)
} catch (/** @type {Error} */ _) {
} catch (/** @type {unknown} */ _) {
// Silent.

@@ -495,3 +493,3 @@ }

/**
* @param {Position} pos
* @param {Position|{start: {line: null, column: null, offset: null}, end: {line: null, column: null, offset: null}}} pos
* @returns {string}

@@ -498,0 +496,0 @@ */

@@ -38,7 +38,7 @@ export = ReactMarkdown

const allowElement: PropTypes.Requireable<(...args: any[]) => any>
const allowedElements: PropTypes.Requireable<string[]>
const disallowedElements: PropTypes.Requireable<string[]>
const allowedElements: PropTypes.Requireable<(string | null | undefined)[]>
const disallowedElements: PropTypes.Requireable<(string | null | undefined)[]>
const unwrapDisallowed: PropTypes.Requireable<boolean>
const remarkPlugins: PropTypes.Requireable<object[]>
const rehypePlugins: PropTypes.Requireable<object[]>
const remarkPlugins: PropTypes.Requireable<(object | null | undefined)[]>
const rehypePlugins: PropTypes.Requireable<(object | null | undefined)[]>
const sourcePos: PropTypes.Requireable<boolean>

@@ -55,3 +55,3 @@ const rawSourcePos: PropTypes.Requireable<boolean>

}
import uriTransformer = require('./uri-transformer')
import uriTransformer = require('./uri-transformer.js')
type ReactNode = import('react').ReactNode

@@ -69,13 +69,13 @@ type PluggableList = import('unified').PluggableList

*/
plugins?: PluggableList
remarkPlugins?: PluggableList
rehypePlugins?: PluggableList
plugins?: PluggableList | undefined
remarkPlugins?: PluggableList | undefined
rehypePlugins?: PluggableList | undefined
}
type LayoutOptions = {
className?: string
className?: string | undefined
}
type Deprecation = {
id: string
to?: string
to?: string | undefined
}
import PropTypes = require('prop-types')

@@ -9,6 +9,5 @@ 'use strict'

const PropTypes = require('prop-types')
// @ts-ignore remove when typed
const html = require('property-information/html')
const filter = require('./rehype-filter')
const uriTransformer = require('./uri-transformer')
const filter = require('./rehype-filter.js')
const uriTransformer = require('./uri-transformer.js')
const childrenToReact = require('./ast-to-react.js').hastChildrenToReact

@@ -24,6 +23,6 @@

*
* @typedef {Object} CoreOptions
* @typedef CoreOptions
* @property {string} children
*
* @typedef {Object} PluginOptions
* @typedef PluginOptions
* @property {PluggableList} [plugins=[]] **deprecated**: use `remarkPlugins` instead

@@ -33,3 +32,3 @@ * @property {PluggableList} [remarkPlugins=[]]

*
* @typedef {Object} LayoutOptions
* @typedef LayoutOptions
* @property {string} [className]

@@ -47,3 +46,3 @@ *

/**
* @typedef {Object} Deprecation
* @typedef Deprecation
* @property {string} id

@@ -122,3 +121,3 @@ * @property {string} [to]

/** @type {Root} */
// @ts-ignore we’ll throw if it isn’t a root next.
// @ts-expect-error we’ll throw if it isn’t a root next.
const hastNode = processor.runSync(processor.parse(file), file)

@@ -125,0 +124,0 @@

export = rehypeFilter
/**
* @typedef {import('unist').Node} Node
* @typedef {import('hast').Root} Root

@@ -10,5 +11,5 @@ * @typedef {import('hast').Element} Element

* @param {Element|Root} parent
* @returns {boolean}
* @returns {boolean|undefined}
*
* @typedef {Object} RehypeFilterOptions
* @typedef RehypeFilterOptions
* @property {Array.<string>} [allowedElements]

@@ -20,16 +21,17 @@ * @property {Array.<string>} [disallowedElements=[]]

/**
* @param {RehypeFilterOptions} options
* @type {import('unified').Plugin<[RehypeFilterOptions]>}
*/
declare function rehypeFilter(
options: RehypeFilterOptions
): (tree: Root) => void
): void | import('unified').Transformer
declare namespace rehypeFilter {
export {Root, Element, AllowElement, RehypeFilterOptions}
export {Node, Root, Element, AllowElement, RehypeFilterOptions}
}
type RehypeFilterOptions = {
allowedElements?: Array<string>
disallowedElements?: Array<string>
allowElement?: AllowElement
unwrapDisallowed?: boolean
allowedElements?: string[] | undefined
disallowedElements?: string[] | undefined
allowElement?: AllowElement | undefined
unwrapDisallowed?: boolean | undefined
}
type Node = import('unist').Node
type Root = import('hast').Root

@@ -41,2 +43,2 @@ type Element = import('hast').Element

parent: Element | Root
) => boolean
) => boolean | undefined
const visit = require('unist-util-visit')
const splice = [].splice
module.exports = rehypeFilter
/**
* @typedef {import('unist').Node} Node
* @typedef {import('hast').Root} Root

@@ -15,5 +14,5 @@ * @typedef {import('hast').Element} Element

* @param {Element|Root} parent
* @returns {boolean}
* @returns {boolean|undefined}
*
* @typedef {Object} RehypeFilterOptions
* @typedef RehypeFilterOptions
* @property {Array.<string>} [allowedElements]

@@ -26,3 +25,3 @@ * @property {Array.<string>} [disallowedElements=[]]

/**
* @param {RehypeFilterOptions} options
* @type {import('unified').Plugin<[RehypeFilterOptions]>}
*/

@@ -36,23 +35,23 @@ function rehypeFilter(options) {

return options.allowedElements ||
if (
options.allowedElements ||
options.disallowedElements ||
options.allowElement
? transform
: undefined
/**
* @param {Root} tree
*/
function transform(tree) {
visit(tree, 'element', onelement)
) {
return (tree) => {
const node = /** @type {Root} */ (tree)
visit(node, 'element', onelement)
}
}
/**
* @param {Element} node
* @param {number} index
* @param {Element|Root} parent
* @param {Node} node_
* @param {number|null|undefined} index
* @param {Node|null|undefined} parent_
* @returns {number|void}
*/
function onelement(node, index, parent) {
/** @type {boolean} */
function onelement(node_, index, parent_) {
const node = /** @type {Element} */ (node_)
const parent = /** @type {Element|Root} */ (parent_)
/** @type {boolean|undefined} */
let remove

@@ -66,15 +65,13 @@

if (!remove && options.allowElement) {
if (!remove && options.allowElement && typeof index === 'number') {
remove = !options.allowElement(node, index, parent)
}
if (remove) {
/** @type {Array.<unknown>} */
let parameters = [index, 1]
if (remove && typeof index === 'number') {
if (options.unwrapDisallowed && node.children) {
parameters = parameters.concat(node.children)
parent.children.splice(index, 1, ...node.children)
} else {
parent.children.splice(index, 1)
}
splice.apply(parent.children, parameters)
return index

@@ -81,0 +78,0 @@ }

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc