Refactor RegExps to avoid the possibility of polynomial backtracking (fixes #657).

This commit is contained in:
David Anson 2024-10-05 18:07:45 -07:00
parent 9b1840a5a4
commit e0219411c6
8 changed files with 14 additions and 16 deletions

View file

@ -92,7 +92,7 @@ function freezeToken(token) {
/**
* Annotate tokens with line/lineNumber and freeze them.
*
* @param {import("markdown-it").Token[]} tokens Array of markdown-it tokens.
* @param {Object[]} tokens Array of markdown-it tokens.
* @param {string[]} lines Lines of Markdown content.
* @returns {void}
*/
@ -151,18 +151,18 @@ function annotateAndFreezeTokens(tokens, lines) {
* @param {import("./markdownlint").Plugin[]} markdownItPlugins Additional plugins.
* @param {string} content Markdown content.
* @param {string[]} lines Lines of Markdown content.
* @returns {import("markdown-it").Token[]} Array of markdown-it tokens.
* @returns {import("../lib/markdownlint").MarkdownItToken} Array of markdown-it tokens.
*/
function getMarkdownItTokens(markdownItPlugins, content, lines) {
const markdownit = require("markdown-it");
const md = markdownit({ "html": true });
// const markdownItPlugins = options.markdownItPlugins || [];
for (const plugin of markdownItPlugins) {
// @ts-ignore
md.use(...plugin);
}
const tokens = md.parse(content, {});
annotateAndFreezeTokens(tokens, lines);
// @ts-ignore
return tokens;
};