// 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 path = require('node:path'); const process = require('node:process'); const cosmiconfig = require('cosmiconfig'); const augmentConfig = require('./augmentConfig.cjs'); const configurationError = require('./utils/configurationError.cjs'); const IS_TEST = process.env.NODE_ENV === 'test'; const STOP_DIR = IS_TEST ? process.cwd() : undefined; /** @import {Config as StylelintConfig, CosmiconfigResult as StylelintCosmiconfigResult, InternalApi as StylelintInternalApi} from 'stylelint' */ /** * @param {StylelintInternalApi} stylelint * @param {string} [searchPath] * @param {string} [filePath] * @returns {Promise} */ async function getConfigForFile( stylelint, searchPath = stylelint._options.cwd, filePath, ) { const optionsConfig = stylelint._options.config; const cwd = stylelint._options.cwd; if (optionsConfig) { const filePathAsCacheKey = filePath ?? ''; /** @type {Map} */ const cachedForFiles = stylelint._specifiedConfigCache.get(optionsConfig) ?? new Map(); const cached = cachedForFiles.get(filePathAsCacheKey); if (cached) { return cached; } const augmentedResult = await augmentConfig.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'), }); cachedForFiles.set(filePathAsCacheKey, augmentedResult); stylelint._specifiedConfigCache.set(optionsConfig, cachedForFiles); return augmentedResult; } const configExplorer = cosmiconfig.cosmiconfig('stylelint', { transform: (cosmiconfigResult) => augmentConfig.augmentConfigFull(stylelint, filePath, cosmiconfigResult), stopDir: STOP_DIR, searchStrategy: 'global', // for backward compatibility }); 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; } module.exports = getConfigForFile;