async function getSaveRuleConfig()

in server/src/eslintServer.ts [556:596]


async function getSaveRuleConfig(uri: string, settings: TextDocumentSettings  & { library: ESLintModule }): Promise<SaveRuleConfigItem | undefined> {
	const filePath = getFilePath(uri);
	let result = saveRuleConfigCache.get(uri);
	if (filePath === undefined || result === null) {
		return undefined;
	}
	if (result !== undefined) {
		return result;
	}
	const rules = settings.codeActionOnSave.rules;
	result = await withESLintClass(async (eslint) => {
		if (rules === undefined || eslint.isCLIEngine) {
			return undefined;
		}
		const config = await eslint.calculateConfigForFile(filePath);
		if (config === undefined || config.rules === undefined || config.rules.length === 0) {
			return undefined;
		}
		const offRules: Set<string> = new Set();
		const onRules: Set<string> = new Set();
		if (rules.length === 0) {
			Object.keys(config.rules).forEach(ruleId => offRules.add(ruleId));
		} else {
			for (const ruleId of Object.keys(config.rules)) {
				if (isOff(ruleId, rules)) {
					offRules.add(ruleId);
				} else {
					onRules.add(ruleId);
				}
			}
		}
		return offRules.size > 0 ? { offRules, onRules } : undefined;
	}, settings);
	if (result === undefined || result === null) {
		saveRuleConfigCache.set(uri, null);
		return undefined;
	} else {
		saveRuleConfigCache.set(uri, result);
		return result;
	}
}