| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 | 'use strict';const configurationError = require('./utils/configurationError');const path = require('path');const { augmentConfigFull } = require('./augmentConfig');const { cosmiconfig } = require('cosmiconfig');const IS_TEST = process.env.NODE_ENV === 'test';const STOP_DIR = IS_TEST ? process.cwd() : undefined;/** @typedef {import('stylelint').InternalApi} StylelintInternalApi *//** @typedef {import('stylelint').Config} StylelintConfig *//** @typedef {import('stylelint').CosmiconfigResult} StylelintCosmiconfigResult *//** * @param {StylelintInternalApi} stylelint * @param {string} [searchPath] * @param {string} [filePath] * @returns {Promise<StylelintCosmiconfigResult>} */module.exports = async function getConfigForFile(	stylelint,	searchPath = stylelint._options.cwd,	filePath,) {	const optionsConfig = stylelint._options.config;	const cwd = stylelint._options.cwd;	if (optionsConfig !== undefined) {		const cached = stylelint._specifiedConfigCache.get(optionsConfig);		// If config has overrides the resulting config might be different for some files.		// Cache results only if resulted config is the same for all linted files.		if (cached && !optionsConfig.overrides) {			return cached;		}		const augmentedResult = augmentConfigFull(stylelint, filePath, {			config: optionsConfig,			// Add the extra path part so that we can get the directory without being			// confused			filepath: path.join(cwd, 'argument-config'),		});		stylelint._specifiedConfigCache.set(optionsConfig, augmentedResult);		return augmentedResult;	}	const configExplorer = cosmiconfig('stylelint', {		transform: (cosmiconfigResult) => augmentConfigFull(stylelint, filePath, cosmiconfigResult),		stopDir: STOP_DIR,	});	let config = stylelint._options.configFile		? await configExplorer.load(stylelint._options.configFile)		: await configExplorer.search(searchPath);	if (!config) {		config = await configExplorer.search(cwd);	}	if (!config) {		return Promise.reject(			configurationError(`No configuration provided${searchPath ? ` for ${searchPath}` : ''}`),		);	}	return config;};
 |