stylelint-plugin-import
Version:
Stylelint plugin for managing imports.
63 lines (62 loc) • 2.59 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.importAsReferenceRule = void 0;
const stylelint_rule_creator_1 = require("stylelint-rule-creator");
const plugin_util_1 = require("../../plugin-util");
const messages = {
referenceRequired(line) {
return `Missing "(reference)" in ${line}`;
},
referenceBlocked(line) {
return `"(reference)" not allowed in ${line}`;
},
};
const paramReferenceCheckString = '(reference)';
exports.importAsReferenceRule = (0, stylelint_rule_creator_1.createDefaultRule)({
ruleName: `${plugin_util_1.prefix}/import-as-reference`,
messages,
defaultOptions: {
mode: stylelint_rule_creator_1.DefaultOptionMode.REQUIRE,
},
ruleCallback: (report, messages, { ruleOptions, root, context, exceptionRegExps }) => {
root.walkAtRules('import', (atRule) => {
var _a;
if ((0, stylelint_rule_creator_1.doesMatchLineExceptions)(atRule, exceptionRegExps)) {
return;
}
const hasReference = atRule.params.startsWith(paramReferenceCheckString);
if (ruleOptions.mode === stylelint_rule_creator_1.DefaultOptionMode.REQUIRE && !hasReference) {
if (context.fix) {
const newNode = atRule.clone();
newNode.params =
paramReferenceCheckString +
((_a = newNode.raws.afterName) !== null && _a !== void 0 ? _a : ' ') +
newNode.params;
newNode.raws.afterName = ' ';
atRule.replaceWith(newNode);
}
else {
report({
message: messages.referenceRequired(atRule.toString()),
node: atRule,
word: atRule.toString(),
});
}
}
else if (ruleOptions.mode === stylelint_rule_creator_1.DefaultOptionMode.BLOCK && hasReference) {
if (context.fix) {
const newNode = atRule.clone();
newNode.params = newNode.params.replace(/\(reference\) ?/, '');
atRule.replaceWith(newNode);
}
else {
report({
message: messages.referenceBlocked(atRule.toString()),
node: atRule,
word: atRule.toString(),
});
}
}
});
},
});