Move call to mapAliasToRuleNames higher in the stack to avoid re-computing multiple times for the same input.

This commit is contained in:
David Anson 2023-03-12 20:49:41 -07:00
parent 32324b7aea
commit e8a85c91f2
2 changed files with 22 additions and 7 deletions

View file

@ -2414,6 +2414,8 @@ function getEnabledRulesPerLineNumber(ruleList, lines, frontMatterLines, noInlin
* Lints a string containing Markdown content. * Lints a string containing Markdown content.
* *
* @param {Rule[]} ruleList List of rules. * @param {Rule[]} ruleList List of rules.
* @param {Object.<string, string[]>} aliasToRuleNames Map of alias to rule
* names.
* @param {string} name Identifier for the content. * @param {string} name Identifier for the content.
* @param {string} content Markdown content. * @param {string} content Markdown content.
* @param {Object} md Instance of markdown-it. * @param {Object} md Instance of markdown-it.
@ -2426,7 +2428,7 @@ function getEnabledRulesPerLineNumber(ruleList, lines, frontMatterLines, noInlin
* @param {Function} callback Callback (err, result) function. * @param {Function} callback Callback (err, result) function.
* @returns {void} * @returns {void}
*/ */
function lintContent(ruleList, name, content, md, config, configParsers, frontMatter, handleRuleFailures, noInlineConfig, resultVersion, callback) { function lintContent(ruleList, aliasToRuleNames, name, content, md, config, configParsers, frontMatter, handleRuleFailures, noInlineConfig, resultVersion, callback) {
// Remove UTF-8 byte order marker (if present) // Remove UTF-8 byte order marker (if present)
content = content.replace(/^\uFEFF/, ""); content = content.replace(/^\uFEFF/, "");
// Remove front matter // Remove front matter
@ -2434,7 +2436,7 @@ function lintContent(ruleList, name, content, md, config, configParsers, frontMa
var frontMatterLines = removeFrontMatterResult.frontMatterLines; var frontMatterLines = removeFrontMatterResult.frontMatterLines;
content = removeFrontMatterResult.content; content = removeFrontMatterResult.content;
// Get enabled rules per line (with HTML comments present) // Get enabled rules per line (with HTML comments present)
var _getEnabledRulesPerLi = getEnabledRulesPerLineNumber(ruleList, content.split(helpers.newLineRe), frontMatterLines, noInlineConfig, config, configParsers, mapAliasToRuleNames(ruleList)), var _getEnabledRulesPerLi = getEnabledRulesPerLineNumber(ruleList, content.split(helpers.newLineRe), frontMatterLines, noInlineConfig, config, configParsers, aliasToRuleNames),
effectiveConfig = _getEnabledRulesPerLi.effectiveConfig, effectiveConfig = _getEnabledRulesPerLi.effectiveConfig,
enabledRulesPerLineNumber = _getEnabledRulesPerLi.enabledRulesPerLineNumber; enabledRulesPerLineNumber = _getEnabledRulesPerLi.enabledRulesPerLineNumber;
// Parse content into parser tokens // Parse content into parser tokens
@ -2676,6 +2678,8 @@ function lintContent(ruleList, name, content, md, config, configParsers, frontMa
* Lints a file containing Markdown content. * Lints a file containing Markdown content.
* *
* @param {Rule[]} ruleList List of rules. * @param {Rule[]} ruleList List of rules.
* @param {Object.<string, string[]>} aliasToRuleNames Map of alias to rule
* names.
* @param {string} file Path of file to lint. * @param {string} file Path of file to lint.
* @param {Object} md Instance of markdown-it. * @param {Object} md Instance of markdown-it.
* @param {Configuration} config Configuration object. * @param {Configuration} config Configuration object.
@ -2689,13 +2693,13 @@ function lintContent(ruleList, name, content, md, config, configParsers, frontMa
* @param {Function} callback Callback (err, result) function. * @param {Function} callback Callback (err, result) function.
* @returns {void} * @returns {void}
*/ */
function lintFile(ruleList, file, md, config, configParsers, frontMatter, handleRuleFailures, noInlineConfig, resultVersion, fs, synchronous, callback) { function lintFile(ruleList, aliasToRuleNames, file, md, config, configParsers, frontMatter, handleRuleFailures, noInlineConfig, resultVersion, fs, synchronous, callback) {
// eslint-disable-next-line jsdoc/require-jsdoc // eslint-disable-next-line jsdoc/require-jsdoc
function lintContentWrapper(err, content) { function lintContentWrapper(err, content) {
if (err) { if (err) {
return callback(err); return callback(err);
} }
return lintContent(ruleList, file, content, md, config, configParsers, frontMatter, handleRuleFailures, noInlineConfig, resultVersion, callback); return lintContent(ruleList, aliasToRuleNames, file, content, md, config, configParsers, frontMatter, handleRuleFailures, noInlineConfig, resultVersion, callback);
} }
// Make a/synchronous call to read file // Make a/synchronous call to read file
if (synchronous) { if (synchronous) {
@ -2758,6 +2762,7 @@ function lintInput(options, synchronous, callback) {
_iterator24.f(); _iterator24.f();
} }
var fs = options.fs || __webpack_require__(/*! node:fs */ "?d0ee"); var fs = options.fs || __webpack_require__(/*! node:fs */ "?d0ee");
var aliasToRuleNames = mapAliasToRuleNames(ruleList);
var results = newResults(ruleList); var results = newResults(ruleList);
var done = false; var done = false;
var concurrency = 0; var concurrency = 0;
@ -2783,11 +2788,11 @@ function lintInput(options, synchronous, callback) {
// Lint next file // Lint next file
concurrency++; concurrency++;
currentItem = files.shift(); currentItem = files.shift();
lintFile(ruleList, currentItem, md, config, configParsers, frontMatter, handleRuleFailures, noInlineConfig, resultVersion, fs, synchronous, lintWorkerCallback); lintFile(ruleList, aliasToRuleNames, currentItem, md, config, configParsers, frontMatter, handleRuleFailures, noInlineConfig, resultVersion, fs, synchronous, lintWorkerCallback);
} else if (currentItem = stringsKeys.shift()) { } else if (currentItem = stringsKeys.shift()) {
// Lint next string // Lint next string
concurrency++; concurrency++;
lintContent(ruleList, currentItem, strings[currentItem] || "", md, config, configParsers, frontMatter, handleRuleFailures, noInlineConfig, resultVersion, lintWorkerCallback); lintContent(ruleList, aliasToRuleNames, currentItem, strings[currentItem] || "", md, config, configParsers, frontMatter, handleRuleFailures, noInlineConfig, resultVersion, lintWorkerCallback);
} else if (concurrency === 0) { } else if (concurrency === 0) {
// Finish // Finish
done = true; done = true;

View file

@ -509,6 +509,8 @@ function getEnabledRulesPerLineNumber(
* Lints a string containing Markdown content. * Lints a string containing Markdown content.
* *
* @param {Rule[]} ruleList List of rules. * @param {Rule[]} ruleList List of rules.
* @param {Object.<string, string[]>} aliasToRuleNames Map of alias to rule
* names.
* @param {string} name Identifier for the content. * @param {string} name Identifier for the content.
* @param {string} content Markdown content. * @param {string} content Markdown content.
* @param {Object} md Instance of markdown-it. * @param {Object} md Instance of markdown-it.
@ -523,6 +525,7 @@ function getEnabledRulesPerLineNumber(
*/ */
function lintContent( function lintContent(
ruleList, ruleList,
aliasToRuleNames,
name, name,
content, content,
md, md,
@ -548,7 +551,7 @@ function lintContent(
noInlineConfig, noInlineConfig,
config, config,
configParsers, configParsers,
mapAliasToRuleNames(ruleList) aliasToRuleNames
); );
// Parse content into parser tokens // Parse content into parser tokens
const markdownitTokens = md.parse(content, {}); const markdownitTokens = md.parse(content, {});
@ -792,6 +795,8 @@ function lintContent(
* Lints a file containing Markdown content. * Lints a file containing Markdown content.
* *
* @param {Rule[]} ruleList List of rules. * @param {Rule[]} ruleList List of rules.
* @param {Object.<string, string[]>} aliasToRuleNames Map of alias to rule
* names.
* @param {string} file Path of file to lint. * @param {string} file Path of file to lint.
* @param {Object} md Instance of markdown-it. * @param {Object} md Instance of markdown-it.
* @param {Configuration} config Configuration object. * @param {Configuration} config Configuration object.
@ -807,6 +812,7 @@ function lintContent(
*/ */
function lintFile( function lintFile(
ruleList, ruleList,
aliasToRuleNames,
file, file,
md, md,
config, config,
@ -825,6 +831,7 @@ function lintFile(
} }
return lintContent( return lintContent(
ruleList, ruleList,
aliasToRuleNames,
file, file,
content, content,
md, md,
@ -887,6 +894,7 @@ function lintInput(options, synchronous, callback) {
md.use(...plugin); md.use(...plugin);
} }
const fs = options.fs || require("node:fs"); const fs = options.fs || require("node:fs");
const aliasToRuleNames = mapAliasToRuleNames(ruleList);
const results = newResults(ruleList); const results = newResults(ruleList);
let done = false; let done = false;
let concurrency = 0; let concurrency = 0;
@ -914,6 +922,7 @@ function lintInput(options, synchronous, callback) {
currentItem = files.shift(); currentItem = files.shift();
lintFile( lintFile(
ruleList, ruleList,
aliasToRuleNames,
currentItem, currentItem,
md, md,
config, config,
@ -931,6 +940,7 @@ function lintInput(options, synchronous, callback) {
concurrency++; concurrency++;
lintContent( lintContent(
ruleList, ruleList,
aliasToRuleNames,
currentItem, currentItem,
strings[currentItem] || "", strings[currentItem] || "",
md, md,