| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 | 'use strict';const hasLessInterpolation = require('../utils/hasLessInterpolation');const hasPsvInterpolation = require('../utils/hasPsvInterpolation');const hasScssInterpolation = require('../utils/hasScssInterpolation');const hasTplInterpolation = require('../utils/hasTplInterpolation');/** * Check whether a URL is standard * * @param {string} url * @returns {boolean} */module.exports = function isStandardSyntaxUrl(url) {	if (url.length === 0) {		return true;	}	// Sass interpolation works anywhere	if (hasScssInterpolation(url) || hasTplInterpolation(url) || hasPsvInterpolation(url)) {		return false;	}	// Inside `'` and `"` work only LESS interpolation	if ((url.startsWith(`'`) && url.endsWith(`'`)) || (url.startsWith(`"`) && url.endsWith(`"`))) {		if (hasLessInterpolation(url)) {			return false;		}		return true;	}	// Less variable works only at the beginning	// Check is less variable, allow use '@url/some/path'	// https://github.com/less/less.js/blob/3.x/lib/less/parser/parser.js#L547	if (url.startsWith('@') && /^@@?[\w-]+$/.test(url)) {		return false;	}	// In url without quotes scss variable can be everywhere	// But in this case it is allowed to use only specific characters	// Also forbidden "/" at the end of url	if (url.includes('$') && /^[$\s\w+\-,./*'"]+$/.test(url) && !url.endsWith('/')) {		return false;	}	return true;};
 |