Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(deps): update dependency react-markdown to v9 #3285

Closed
wants to merge 1 commit into from

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Sep 3, 2024

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
react-markdown ^2.5.0 -> ^9.0.0 age adoption passing confidence

Release Notes

remarkjs/react-markdown (react-markdown)

v9.0.1

Compare Source

  • d8e3787 Fix double encoding in new url transform
  • 55d8d83 Refactor docs to use createRoot

Full Changelog: remarkjs/react-markdown@9.0.0...9.0.1

v9.0.0

Compare Source

  • b67d714
    Change to require Node.js 16
    migrate: update too
  • ec2b134
    Change to require React 18
    migrate: update too
  • bf5824f
    Change to use exports
    migrate: don’t use private APIs
  • c383a45
    Update @types/hast, utilities, plugins, etc
    migrate: update too
  • eca5e6b
    08ead9e
    Replace transformImageUri, transformLinkUri w/ urlTransform
    migrate: see “Add urlTransform” below
  • de29396
    Remove linkTarget option
    migrate: see “Remove linkTarget” below
  • 4346276
    Remove support for passing custom props to components
    migrate: see “Remove includeElementIndex”, “Remove rawSourcePos”,
    “Remove sourcePos”, “Remove extra props passed to certain components”
    below
  • c0dfbd6
    Remove UMD bundle from package
    migrate: use esm.sh or a CDN or so
  • e12b5e9
    Remove prop-types
    migrate: use TypeScript
  • 4eb7aa0
    Change to throw errors for removed props
    migrate: don’t pass options that don’t do things
  • 8aabf74
    Change to improve error messages
    migrate: expect better messages
Add urlTransform

The transformImageUri and transformLinkUri were removed.
Having two functions is a bit much, particularly because there are more URLs
you might want to change (or which might be unsafe so we make them safe).
And their name and APIs were a bit weird.
You can use the new urlTransform prop instead to change all your URLs.

Remove linkTarget

The linkTarget option was removed; you should likely not set targets.
If you want to, use
rehype-external-links.

Remove includeElementIndex

The includeElementIndex option was removed, so index is never passed to
components.
Write a plugin to pass index:

Show example of plugin
import {visit} from 'unist-util-visit'

function rehypePluginAddingIndex() {
  /**
   * @​param {import('hast').Root} tree
   * @​returns {undefined}
   */
  return function (tree) {
    visit(tree, function (node, index) {
      if (node.type === 'element' && typeof index === 'number') {
        node.properties === index
      }
    })
  }
}
Remove rawSourcePos

The rawSourcePos option was removed, so sourcePos is never passed to
components.
All components are passed node, so you can get node.position from them.

Remove sourcePos

The sourcePos option was removed, so data-sourcepos is never passed to
elements.
Write a plugin to pass index:

Show example of plugin
import {stringifyPosition} from 'unist-util-stringify-position'
import {visit} from 'unist-util-visit'

function rehypePluginAddingIndex() {
  /**
   * @​param {import('hast').Root} tree
   * @​returns {undefined}
   */
  return function (tree) {
    visit(tree, function (node) {
      if (node.type === 'element') {
        node.properties.dataSourcepos = stringifyPosition(node.position)
      }
    })
  }
}
Remove extra props passed to certain components

When overwriting components, these props are no longer passed:

  • inline on code
    — create a plugin or use pre for the block
  • level on h1, h2, h3, h4, h5, h6
    — check node.tagName instead
  • checked on li
    — check task-list-item class or check props.children
  • index on li
    — create a plugin
  • ordered on li
    — create a plugin or check the parent
  • depth on ol, ul
    — create a plugin
  • ordered on ol, ul
    — check node.tagName instead
  • isHeader on td, th
    — check node.tagName instead
  • isHeader on tr
    — create a plugin or check children

v8.0.7

Compare Source

Perf
Docs

Full Changelog: remarkjs/react-markdown@8.0.6...8.0.7

v8.0.6

Compare Source

v8.0.5

Compare Source

v8.0.4

Compare Source

v8.0.3

Compare Source

v8.0.2

Compare Source

v8.0.1

Compare Source

v8.0.0

Compare Source

  • cd845c9
    Remove deprecated plugins option
    (migrate by renaming it to remarkPlugins)
  • 36e4916
    Update remark-rehype,
    add support for passing it options
    by @​peolic
    in #​669
    (migrate by removing remark-footnotes and updating remark-gfm if you
    were using them, otherwise you shouldn’t notice this
    )

v7.1.2

Compare Source

v7.1.1

Compare Source

v7.1.0

Compare Source

v7.0.1

Compare Source

  • ec387c2
    Add improved type for linkTarget as string
  • 5af6bc7
    Fix to correctly compile intrinsic types

v7.0.0

Compare Source

Welcome to version 7.
This a major release and therefore contains breaking changes.

Breaking changes
Internals

v6.0.3

Compare Source

  • 13367ed
    Fix types to include each element w/ its properties
  • 0a1931a
    Fix to add min version of property-information

v6.0.2

Compare Source

  • cefc02d
    Add string type for classNames
  • 6355e45
    Fix to pass vfile to plugins
  • 5cf6e1b
    Fix to add warning when non-strings are given as children

v6.0.1

Compare Source

  • 2e956be
    Fix whitespace in table elements
  • d36048a
    Add architecture section to readme

v6.0.0

Compare Source

Welcome to version 6.
This a major release and therefore contains breaking changes.

Change renderers to components

react-markdown used to let you define components for markdown constructs
(link, delete, break, etc).
This proved complex as users didn’t know about those names or markdown
peculiarities (such as that there are fully formed links and link references).

See GH-549 for more
on why this changed.
See Appendix B: Components in
readme.md

for more on components.

Show example of needed change

Before (broken):

<Markdown
  renderers={{
    // Use a fancy hr
    thematicBreak: ({node, ...props}) => <MyFancyRule {...props} />
  }}
>{`***`}</Markdown>

Now (fixed):

<Markdown
  components={{
    // Use a fancy hr
    hr: ({node, ...props}) => <MyFancyRule {...props} />
  }}
>{`***`}</Markdown>
Show conversion table
Type (renderers) Tag names (components)
blockquote blockquote
break br
code, inlineCode code, pre​*​
definition
delete del
emphasis em
heading h1, h2, h3, h4, h5, h6§
html, parsedHtml, virtualHtml
image, imageReference img
link, linkReference a
list ol, ul
listItem li
paragraph p
root ​**​
strong strong
table table
tableHead thead
tableBody tbody
tableRow tr
tableCell td, th
text
thematicBreak hr
  • ​*​ It’s possible to differentiate between code based on the inline
    prop.
    Block code is also wrapped in a pre
  • Resource ([text](url)) and reference ([text][id]) style links and
    images (and their definitions) are now resolved and treated the same
  • Available when using
    remark-gfm
  • § It’s possible to differentiate between heading based on the level
    prop
  • When using rehype-raw (see below), components for those elements
    can also be used (for example, abbr for
    <abbr title="HyperText Markup Language">HTML</abbr>)
  • It’s possible to differentiate between lists based on the ordered
    prop
  • ​**​ Wrap ReactMarkdown in a component instead
Add rehypePlugins

We’ve added another plugin system:
rehype.
It’s similar to remark (what we’re using for markdown) but for HTML.

There are many rehype plugins.
Some examples are
@mapbox/rehype-prism
(syntax highlighting with Prism),
rehype-katex
(rendering math with KaTeX), or
rehype-autolink-headings
(adding links to headings).

See List of plugins
for more plugins.

Show example of feature
import rehypeHighlight from 'rehype-highlight'

<Markdown rehypePlugins={[rehypeHighlight]}>{`~~~js
console.log(1)
~~~`}</Markdown>
Remove buggy HTML in markdown parser

In a lot of cases, you should not use HTML in markdown: it’s most always unsafe.
And it defeats much of the purpose of this project (not relying on
dangerouslySetInnerHTML).

react-markdown used to have an opt-in HTML parser with a bunch of bugs.
As we now support rehype plugins, we can defer that work to a rehype plugin.
To support HTML in markdown with react-markdown, use
rehype-raw.
The astPlugins and allowDangerousHtml (previously called escapeHtml) props
are no longer needed and were removed.

When using rehype-raw, you should probably use
rehype-sanitize
too.

Show example of needed change

Before (broken):

import MarkdownWithHtml from 'react-markdown/with-html'

<MarkdownWithHtml>{`# Hello, <i>world</i>!`}</MarkdownWithHtml>

Now (fixed):

import Markdown from 'react-markdown'
import rehypeRaw from 'rehype-raw'
import rehypeSanitize from 'rehype-sanitize'

<Markdown rehypePlugins={[rehypeRaw, rehypeSanitize]}>{`# Hello, <i>world</i>!`}</Markdown>
Change source to children

Instead of passing a source pass children instead:

Show example of needed change

Before (broken):

<Markdown source="some\nmarkdown"></Markdown>

Now (fixed):

<Markdown>{`some
markdown`}</Markdown>

Or (also fixed):

<Markdown children={`some
markdown`} />
Replace allowNode, allowedTypes, and disallowedTypes

Similar to the renderers to components change, the filtering options
also changed from being based on markdown names towards being based on HTML
names: allowNode to allowElement, allowedTypes to allowedElements, and
disallowedTypes to disallowedElements.

Show example of needed change

Before (broken):

<Markdown
  // Skip images
  disallowedTypes={['image']}
>{`![alt text](./image.url)`}</Markdown>

Now (fixed):

<Markdown
  // Skip images
  disallowedElements={['img']}
>{`![alt text](./image.url)`}</Markdown>

Before (broken):

<Markdown
  // Skip h1
  allowNode={(node) => node.type !== 'heading' || node.depth !== 1}
>{`# main heading`}</Markdown>

Now (fixed):

<Markdown
  // Skip h1
  allowElement={(element) => element.tagName !== 'h1'}
>{`# main heading`}</Markdown>
Change includeNodeIndex to includeElementIndex

Similar to the renderers to components change, this option to pass more info
to components also changed from being based on markdown to being based on HTML.

Show example of needed change

Before (broken):

<Markdown
  includeNodeIndex={true}
  renderers={{
    paragraph({node, index, parentChildCount, ...props}) => <MyFancyParagraph {...props} />
  }}
>{`Some text`}</Markdown>

Now (fixed):

<Markdown
  includeElementIndex={true}
  components={{
    p({node, index, siblingsCount, ...props}) => <MyFancyParagraph {...props} />
  }}
>{`Some text`}</Markdown>
Change signature of transformLinkUri, linkTarget

The second parameter of these functions (to rewrite href on a or to define
target on a) are now hast (HTML AST)
instead of mdast (markdown AST).

Change signature of transformImageUri

The second parameter of this function was always undefined and the fourth was
the alt (string) on the image.
The second parameter is now that alt.

Remove support for React 15, IE11

We now use ES2015 (such as Object.assign) and removed certain hacks to work
with React 15 and older.

v5.0.3

Compare Source

  • bb0bdde
    Unlock peer dependency on React to allow v17
  • 24e42bd
    Fix exception on missing element from html-to-react
  • 3d363e9
    Fix umd browser build

v5.0.2

Compare Source

  • 4dadaba
    Fix to allow combining allowedTypes, unwrapDisallowed in types

v5.0.1

Compare Source

  • c3dc5ee
    Fix to not crash on empty text nodes

v5.0.0

Compare Source

BREAKING
Maintained by unified

This project is now maintained by the unified collective, which also houses the
underlying tools used in react-markdown: hundreds of projects for working with
markdown and markup related things (including MDX).
We have cleaned the project: updated dependencies, improved
docs/tests/coverage/types, cleaned the issue tracker, and fixed a couple of
bugs, but otherwise much should be the same.

Upgrade remark-parse

The parser used in react-markdown has been upgraded to the latest version.
It is now 100% CommonMark compliant: that means it works the same as in other
places, such as Discourse, Reddit, Stack Overflow, and GitHub.
Note that GitHub does extend CommonMark: to match how Markdown works on GitHub,
use the remark-gfm plugin.

New serializer property: node

A new node prop is passed to all non-tag/non-fragment renderers.
This contains the raw mdast AST node,
which opens up a number of interesting possibilities.
The breaking change is for renderers which blindly spread their props to an
underlying component/tag.
For instance:

<ReactMarkdown renderers={{link: props => <a {...props} />}}  />

Should now be written as:

<ReactMarkdown renderers={{link: ({node, ...props}) => <a {...props} />}}  />
List/list item tight property replaced by spread

Previously, the tight property would hint as to whether or not list items
should be wrapped in paragraphs.
This logic has now been replaced by a new spread property, which behaves
slightly differently.
Read more.

v4.3.1

Compare Source

Fixes
  • (Typings) Fix incorrect typescript definitions (Peng Guanwen)

v4.3.0

Compare Source

Fixes
  • (Typings) Add typings for react-markdown/html-parser (Peng Guanwen)

v4.2.2

Compare Source

Fixes
  • (Typings) Inline RemarkParseOptions for now (Espen Hovlandsdal)

v4.2.1

Compare Source

Fixes
  • (Typings) Fix incorrect import - RemarkParseOptions (Jakub Chrzanowski)

v4.2.0

Compare Source

Added
  • Add support for plugins that use AST transformations (Frankie Ali)
Fixes
  • (Typings) Add parserOptions to type defintions (Ted Piotrowski)
  • Allow renderer to be any React element type (Nathan Bierema)

v4.1.0

Compare Source

Added
  • Add prop parserOptions to specify options for remark-parse (Kelvin Chan)

v4.0.9

Compare Source

Fixes
  • (Typings) Make transformLinkUri & transformImageUri actually nullable
    (Florentin Luca Rieger)

v4.0.8

Compare Source

Fixes
  • Fix HTML parsing of elements with a single child vs. multiple children
    (Nicolas Venegas)

v4.0.7

Compare Source

Fixes
  • Fix matching of replaced non-void elements in HTML parser plugin (Nicolas
    Venegas)
  • Fix HTML parsing of multiple void elements (Nicolas Venegas)
  • Fix void element children invariant violation (Nicolas Venegas)

v4.0.6

Compare Source

Fixes
  • Mitigate regex ddos by upgrading html-to-react (Christoph Werner)
  • Update typings to allow arbitrary node types (Jesse Pinho)
  • Readme: Add note about only parsing plugins working (Vincent Tunru)

v4.0.5

Compare Source

v4.0.4

Compare Source

Changed
  • Upgrade dependencies (Espen Hovlandsdal)

v4.0.3

Compare Source

Fixes
  • Output paragraph element for last item in loose list (Jeremy Moseley)

v4.0.2

Compare Source

Fixes
  • Fix text rendering in React versions lower than or equal to 15 (Espen
    Hovlandsdal)

v4.0.1

Compare Source

Fixes
  • [TypeScript] Fix TypeScript index signature for renderers (Linus Unnebäck)

v4.0.0

Compare Source

BREAKING
  • text is now a first-class node + renderer
    — if you are using allowedNodes, it needs to be included in this list.
    Since it is now a React component, it will be passed an object of props
    instead of the old approach where a string was passed.
    children will contain the actual text string.
  • On React >= 16.2, if no className prop is provided, a fragment will be
    used instead of a div.
    To always render a div, pass 'div' as the root renderer.
  • On React >= 16.2, escaped HTML will no longer be rendered with div/span
    containers
  • The UMD bundle now exports the component as window.ReactMarkdown instead
    of window.reactMarkdown
Added
  • HTML parser plugin for full HTML compatibility (Espen Hovlandsdal)
Fixes
  • URI transformer allows uppercase http/https URLs (Liam Kennedy)
  • [TypeScript] Strongly type the keys of renderers (Linus Unnebäck)

v3.6.0

Compare Source

Added
  • Add support for passing index info to renderers (Beau Roberts)

v3.5.0

Compare Source

Added
  • Allow specifying target attribute for links (Marshall Smith)

v3.4.1

Compare Source

Fixes
  • Bump dependency for mdast-add-list-metadata as it was using ES6 features
    (Espen Hovlandsdal)

v3.4.0

Compare Source

Added
  • Add more metadata props to list and listItem (André Staltz)
    • list: depth
    • listItem: ordered, index
Fixes
  • Make source property optional in typescript definition (gRoberts84)

v3.3.4

Compare Source

Fixes
  • Fix bug where rendering empty link references ([][]) would fail (Dennis S)

v3.3.3

Compare Source

Fixes
  • Fix bug where unwrapping certain disallowed nodes would fail (Petr Gazarov)

v3.3.2

Compare Source

Changes
  • Add rawSourcePos property for passing structured source position info to
    renderers (Espen Hovlandsdal)

v3.3.1

Compare Source

Changes
  • Pass properties of unknown nodes directly to renderer (Jesse Pinho)
  • Update TypeScript definition and prop types (ClassicDarkChocolate)

v3.3.0

Compare Source

Added
  • Add support for fragment renderers (Benjamim Sonntag)

v3.2.2

Compare Source

Fixes
  • Fix language escaping in code blocks (Espen Hovlandsdal)

v3.2.1

Compare Source

Fixes
  • Pass the React key into an overridden text renderer (vanchagreen)

v3.2.0

Compare Source

Added
  • Allow overriding text renderer (Thibaud Courtoison)

v3.1.5

Compare Source

Fixes
  • Only use first language from code block (Espen Hovlandsdal)

v3.1.4

Compare Source

Fixes
  • Enable transformImageUri for image references (evoye)

v3.1.3

Compare Source

Fixes
  • Exclude babel config from npm package (Espen Hovlandsdal)

v3.1.2

Compare Source

Fixes
  • Fixed partial table exception (Alexander Wong)

v3.1.1

Compare Source

Fixes
  • Add readOnly property to checkboxes (Phil Rajchgot)

v3.1.0

Compare Source

Added
  • Support for checkbox lists (Espen Hovlandsdal)
Fixes
  • Better typings (Igor Kamyshev)

v3.0.2

Compare Source

v3.0.1

Compare Source

Added
  • Experimental support for plugins (Espen Hovlandsdal)
Changes
  • Provide more arguments to transformLinkUri/transformImageUri (children,
    title, alt) (mudrz)

v3.0.0

Compare Source

Notes
  • FULL REWRITE.
    Changed parser from CommonMark to Markdown.
    Big, breaking changes.
    See BREAKING below.
Added
  • Table support!
    • New types: table, tableHead, tableBody, tableRow, tableCell
  • New type: delete (~~foo~~)
  • New type: imageReference
  • New type: linkReference
  • New type: definition
  • Hacky, but basic support for React-native rendering of attributeless HTML
    nodes (<kbd>, <sub>, etc)
BREAKING
  • Container props removed (containerTagName, containerProps), override
    root renderer instead
  • softBreak option removed.
    New solution will be added at some point in the future.
  • escapeHtml is now TRUE by default
  • HtmlInline/HtmlBlock are now named html (use isBlock prop to check
    if inline or block)
  • Renderer names are camelcased and in certain cases, renamed.
    For instance:
    • Emph => emphasis
    • Item => listItem
    • Code => inlineCode
    • CodeBlock => code
    • linebreak/hardbreak => break
  • All renderers: literal prop is now called value* List renderer: type
    prop is now a boolean named ordered (Bullet => false, Ordered =>
    true)
  • walker prop removed.
    Code depending on this will have to be rewritten to use the astPlugins
    prop, which functions differently.
  • allowNode has new arguments (node, index, parent)
    — node has different props, see renderer props
  • childBefore and childAfter props removed.
    Use root renderer instead.
  • parserOptions removed (new parser, so the old options doesn’t make sense
    anymore)

Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

Copy link
Contributor Author

renovate bot commented Sep 3, 2024

⚠️ Artifact update problem

Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.

♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: package-lock.json
npm error code ERESOLVE
npm error ERESOLVE unable to resolve dependency tree
npm error
npm error While resolving: [email protected]
npm error Found: [email protected]
npm error node_modules/react
npm error   react@"^16.8.6" from the root project
npm error
npm error Could not resolve dependency:
npm error peer react@">=18" from [email protected]
npm error node_modules/react-markdown
npm error   react-markdown@"^9.0.0" from the root project
npm error
npm error Fix the upstream dependency conflict, or retry
npm error this command with --force or --legacy-peer-deps
npm error to accept an incorrect (and potentially broken) dependency resolution.
npm error
npm error
npm error For a full report see:
npm error /tmp/renovate/cache/others/npm/_logs/2024-09-03T09_40_26_724Z-eresolve-report.txt
npm error A complete log of this run can be found in: /tmp/renovate/cache/others/npm/_logs/2024-09-03T09_40_26_724Z-debug-0.log

Copy link
Contributor Author

renovate bot commented Sep 4, 2024

Renovate Ignore Notification

Because you closed this PR without merging, Renovate will ignore this update. You will not get PRs for any future 9.x releases. But if you manually upgrade to 9.x then Renovate will re-enable minor and patch updates automatically.

If you accidentally closed this PR, or if you changed your mind: rename this PR to get a fresh replacement PR.

@renovate renovate bot deleted the renovate/major-remark branch September 4, 2024 19:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant