UNPKG

1.13 kBJavaScriptView Raw
1// @ts-nocheck
2
3'use strict';
4
5const _ = require('lodash');
6const functionArgumentsSearch = require('../../utils/functionArgumentsSearch');
7const isStandardSyntaxUrl = require('../../utils/isStandardSyntaxUrl');
8const report = require('../../utils/report');
9const ruleMessages = require('../../utils/ruleMessages');
10const validateOptions = require('../../utils/validateOptions');
11
12const ruleName = 'function-url-no-scheme-relative';
13
14const messages = ruleMessages(ruleName, {
15 rejected: 'Unexpected scheme-relative url',
16});
17
18function rule(actual) {
19 return (root, result) => {
20 const validOptions = validateOptions(result, ruleName, { actual });
21
22 if (!validOptions) {
23 return;
24 }
25
26 root.walkDecls((decl) => {
27 functionArgumentsSearch(decl.toString().toLowerCase(), 'url', (args, index) => {
28 const url = _.trim(args, ' \'"');
29
30 if (!isStandardSyntaxUrl(url) || !url.startsWith('//')) {
31 return;
32 }
33
34 report({
35 message: messages.rejected,
36 node: decl,
37 index,
38 result,
39 ruleName,
40 });
41 });
42 });
43 };
44}
45
46rule.ruleName = ruleName;
47rule.messages = messages;
48module.exports = rule;