UNPKG

textlint

Version:

The pluggable linting tool for text and markdown.

88 lines 3.23 kB
// LICENSE : MIT "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.loadRulesConfigFromPresets = exports.createFlatPresetRulesConfigFromRawPresetRuleConfig = exports.createFlatRulesConfigFromRawRulesConfig = void 0; const module_interop_1 = require("@textlint/module-interop"); const utils_1 = require("@textlint/utils"); const config_util_1 = require("./config-util"); /** * Convert config of preset to rawRulesConfig flat path format. * * This function convert Preset nesting rule to flat path * ``` * { * "x" : true * "preset-a" : { "rule-name": "value" } * } * ``` * => * ``` * { "x": true } * { "a/rule-name": "value" } * ``` * * @param rawRulesConfig * @returns {{string: string}} */ function createFlatRulesConfigFromRawRulesConfig(rawRulesConfig) { if (!rawRulesConfig) { return {}; } const rulesConfig = {}; Object.keys(rawRulesConfig).forEach((key) => { if ((0, config_util_1.isPresetRuleKey)(key)) { // <preset>/<rule> const presetName = key; const presetRuleConfig = rawRulesConfig[key]; Object.assign(rulesConfig, createFlatPresetRulesConfigFromRawPresetRuleConfig(presetRuleConfig, presetName)); return; } rulesConfig[key] = rawRulesConfig[key]; }); return rulesConfig; } exports.createFlatRulesConfigFromRawRulesConfig = createFlatRulesConfigFromRawRulesConfig; /** * create flat `<plugin>/<rule>` option * @param {Object} [rulesConfig] * @param {string} presetName * @returns {Object} */ function createFlatPresetRulesConfigFromRawPresetRuleConfig(rulesConfig, presetName) { const mapped = {}; // missing "rulesConfig" if (rulesConfig === undefined || typeof rulesConfig !== "object") { return mapped; } Object.keys(rulesConfig).forEach((ruleName) => { const normalizedKey = (0, utils_1.normalizeTextlintPresetSubRuleKey)({ preset: presetName, rule: ruleName }); mapped[normalizedKey] = rulesConfig[ruleName]; }); return mapped; } exports.createFlatPresetRulesConfigFromRawPresetRuleConfig = createFlatPresetRulesConfigFromRawPresetRuleConfig; const hasOwnProperty = Object.prototype.hasOwnProperty; /** * * @param presetNames * @param {TextLintModuleResolver} moduleResolver * @returns {{}} */ function loadRulesConfigFromPresets(presetNames = [], moduleResolver) { const presetRulesConfig = {}; presetNames.forEach((presetName) => { const pkgPath = moduleResolver.resolvePresetPackageName(presetName); const preset = (0, module_interop_1.moduleInterop)(require(pkgPath)); if (!hasOwnProperty.call(preset, "rules")) { throw new Error(`${presetName} has not rules`); } if (!hasOwnProperty.call(preset, "rulesConfig")) { throw new Error(`${presetName} has not rulesConfig`); } // set config of <rule> to "<preset>/<rule>" Object.assign(presetRulesConfig, createFlatPresetRulesConfigFromRawPresetRuleConfig(preset.rulesConfig, presetName)); }); return presetRulesConfig; } exports.loadRulesConfigFromPresets = loadRulesConfigFromPresets; //# sourceMappingURL=preset-loader.js.map