@sourcegraph/stylelint-plugin-sourcegraph
Version:
Custom stylelint rules for Sourcegraph
54 lines • 2.04 kB
JavaScript
;
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