UNPKG

stylelint-plugin-import

Version:
63 lines (62 loc) 2.59 kB
"use strict"; 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(), }); } } }); }, });