diff options
Diffstat (limited to 'assets/node_modules/stylelint/lib/rules/function-url-scheme-blacklist/index.js')
-rw-r--r-- | assets/node_modules/stylelint/lib/rules/function-url-scheme-blacklist/index.js | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/assets/node_modules/stylelint/lib/rules/function-url-scheme-blacklist/index.js b/assets/node_modules/stylelint/lib/rules/function-url-scheme-blacklist/index.js new file mode 100644 index 0000000..e715ceb --- /dev/null +++ b/assets/node_modules/stylelint/lib/rules/function-url-scheme-blacklist/index.js @@ -0,0 +1,64 @@ +'use strict'; + +const _ = require('lodash'); +const functionArgumentsSearch = require('../../utils/functionArgumentsSearch'); +const getSchemeFromUrl = require('../../utils/getSchemeFromUrl'); +const isStandardSyntaxUrl = require('../../utils/isStandardSyntaxUrl'); +const matchesStringOrRegExp = require('../../utils/matchesStringOrRegExp'); +const report = require('../../utils/report'); +const ruleMessages = require('../../utils/ruleMessages'); +const validateOptions = require('../../utils/validateOptions'); + +const ruleName = 'function-url-scheme-blacklist'; + +const messages = ruleMessages(ruleName, { + rejected: (scheme) => `Unexpected URL scheme "${scheme}:"`, +}); + +function rule(blacklist) { + return (root, result) => { + const validOptions = validateOptions(result, ruleName, { + actual: blacklist, + possible: [_.isString, _.isRegExp], + }); + + if (!validOptions) { + return; + } + + root.walkDecls(function(decl) { + functionArgumentsSearch(decl.toString().toLowerCase(), 'url', (args, index) => { + const unspacedUrlString = _.trim(args, ' '); + + if (!isStandardSyntaxUrl(unspacedUrlString)) { + return; + } + + const urlString = _.trim(unspacedUrlString, '\'"'); + const scheme = getSchemeFromUrl(urlString); + + if (scheme === null) { + return; + } + + if (!matchesStringOrRegExp(scheme, blacklist)) { + return; + } + + report({ + message: messages.rejected(scheme), + node: decl, + index, + result, + ruleName, + }); + }); + }); + }; +} + +rule.primaryOptionArray = true; + +rule.ruleName = ruleName; +rule.messages = messages; +module.exports = rule; |