| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- // NOTICE: This file is generated by Rollup. To modify it,
- // please instead edit the ESM counterpart and rebuild with Rollup (npm run build).
- 'use strict';
- const node_module = require('node:module');
- const cssParserAlgorithms = require('@csstools/css-parser-algorithms');
- const cssTokenizer = require('@csstools/css-tokenizer');
- const validateTypes = require('../../utils/validateTypes.cjs');
- const nodeFieldIndices = require('../../utils/nodeFieldIndices.cjs');
- const isCustomFunction = require('../../utils/isCustomFunction.cjs');
- const isStandardSyntaxValue = require('../../utils/isStandardSyntaxValue.cjs');
- const optionsMatches = require('../../utils/optionsMatches.cjs');
- const report = require('../../utils/report.cjs');
- const ruleMessages = require('../../utils/ruleMessages.cjs');
- const validateOptions = require('../../utils/validateOptions.cjs');
- var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
- /** @todo leverage import attributes once support for Node.js v18.19 is dropped */
- const require$1 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('lib/rules/function-no-unknown/index.cjs', document.baseURI).href)));
- const functionsList = require$1('css-functions-list/index.json');
- const FUNCTIONS = [
- ...functionsList,
- // https://drafts.csswg.org/css-values-5/#if-notation
- 'if',
- 'media',
- 'style',
- 'supports',
- // niksy/css-functions-list#10
- 'content',
- 'running',
- 'string',
- // https://drafts.csswg.org/css-values-5/#tree-counting
- 'sibling-count',
- 'sibling-index',
- // https://drafts.csswg.org/css-color-5/#contrast-color
- 'contrast-color',
- ];
- const ruleName = 'function-no-unknown';
- const messages = ruleMessages(ruleName, {
- rejected: (name) => `Unexpected unknown function "${name}"`,
- });
- const meta = {
- url: 'https://stylelint.io/user-guide/rules/function-no-unknown',
- };
- /** @type {import('stylelint').CoreRules[ruleName]} */
- const rule = (primary, secondaryOptions) => {
- return (root, result) => {
- const validOptions = validateOptions(
- result,
- ruleName,
- { actual: primary },
- {
- actual: secondaryOptions,
- possible: {
- ignoreFunctions: [validateTypes.isString, validateTypes.isRegExp],
- },
- optional: true,
- },
- );
- if (!validOptions) {
- return;
- }
- root.walkDecls((decl) => {
- const { value } = decl;
- if (!value.includes('(')) return;
- if (!isStandardSyntaxValue(value)) return;
- cssParserAlgorithms.walk(cssParserAlgorithms.parseListOfComponentValues(cssTokenizer.tokenize({ css: value })), ({ node }) => {
- if (!cssParserAlgorithms.isFunctionNode(node)) return;
- const name = node.getName();
- if (isCustomFunction(name)) return;
- if (optionsMatches(secondaryOptions, 'ignoreFunctions', name)) return;
- if (FUNCTIONS.includes(name.toLowerCase())) return;
- const declIndex = nodeFieldIndices.declarationValueIndex(decl);
- const index = declIndex + node.name[2];
- const endIndex = declIndex + node.name[3];
- report({
- message: messages.rejected,
- messageArgs: [name],
- node: decl,
- index,
- endIndex,
- result,
- ruleName,
- });
- });
- });
- };
- };
- rule.ruleName = ruleName;
- rule.messages = messages;
- rule.meta = meta;
- module.exports = rule;
|