UNPKG

@sourcegraph/stylelint-plugin-sourcegraph

Version:

Custom stylelint rules for Sourcegraph

54 lines 2.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.filenameMatchRegexRule = exports.messages = exports.ruleName = void 0; const tslib_1 = require("tslib"); const path_1 = (0, tslib_1.__importDefault)(require("path")); const stylelint_1 = (0, tslib_1.__importDefault)(require("stylelint")); const utils_1 = require("../../utils"); exports.ruleName = '@sourcegraph/filenames-match-regex'; exports.messages = stylelint_1.default.utils.ruleMessages(exports.ruleName, { expected: fileName => { return `Filename ${String(fileName)} does not match the regular expression.`; }, }); exports.filenameMatchRegexRule = (0, utils_1.createPlugin)(exports.ruleName, (isEnabled, config) => { if (!config) { throw new Error(`The ${exports.ruleName} rule configuration is not provided!`); } const regexp = new RegExp(config.regexp); return function (postcssRoot, postcssResult) { if (!isEnabled) { return; } const areOptionsValid = stylelint_1.default.utils.validateOptions(postcssResult, exports.ruleName, { actual: isEnabled, optional: false, possible: [true, false], }, { actual: config, optional: false, possible: { regexp: [utils_1.isString], }, }); if (!areOptionsValid) { return; } const filePath = postcssRoot.source?.input.from; if (!filePath || !postcssRoot.first) { return; } const fileName = path_1.default.basename(filePath); const isRegexMatch = regexp.test(fileName); if (!isRegexMatch) { stylelint_1.default.utils.report({ message: exports.messages.expected(fileName), ruleName: exports.ruleName, node: postcssRoot.first, result: postcssResult, line: 1, }); } }; }); //# sourceMappingURL=filenames-match-regex.js.map