extensions/typescript-language-features/src/languageFeatures/tsconfig.ts/getTsconfigPath
async function getTsconfigPath(baseDirUri: vscode.Uri, extendsValue: string): Promise<vscode.Uri | undefined> {
	// Don't take into account a case, where tsconfig might be resolved from the root (see the reference)
	// e.g. C:/projects/shared-tsconfig/tsconfig.json (note that C: prefix is optional)

	const isRelativePath = ['./', '../'].some(str => extendsValue.startsWith(str));
	if (isRelativePath) {
		const absolutePath = vscode.Uri.joinPath(baseDirUri, extendsValue);
		if (await exists(absolutePath) || absolutePath.path.endsWith('.json')) {
			return absolutePath;
		}
		return absolutePath.with({
			path: `${absolutePath.path}.json`
		});
	}

	// Otherwise resolve like a module
	return resolveNodeModulesPath(baseDirUri, [
		extendsValue,
		...extendsValue.endsWith('.json') ? [] : [
			`${extendsValue}.json`,
			`${extendsValue}/tsconfig.json`,
		]
	]);
}