loadConnection = async (sourceDir) => {
	const connParamsRaw = await fs
		.readFile(path.join(sourceDir, 'connection.yaml'))
		.then((r) => r.toString())
		.catch(
			/** @returns {false} */
			(e) => {
				console.warn(
					chalk.yellow(`[!] ${sourceDir} is not a valid source (no connection.yaml); skipping`)
				);
				console.warn(e.message);
				return false;
			}
		);
	if (connParamsRaw === false) return false;

	let connParamsUnchecked;
	try {
		connParamsUnchecked = yaml.parse(connParamsRaw);
	} catch (e) {
		throw new EvidenceError(`Error parsing connection.yaml file; ${sourceDir}`, undefined, {
			cause: e
		});
	}

	const validationResult = DatasourceSpecFileSchema.safeParse(connParamsUnchecked);
	if (!validationResult.success) {
		const formattedError = cleanZodErrors(validationResult.error.format());
		const context = [
			chalk.bold.red(`[!] connection.yaml has errors (${sourceDir}`),
			chalk.red('|   Discovered Errors:'),
			`${redPipe}   ${yaml.stringify(formattedError).replace(/\n/g, `\n${redPipe}   `)}`
		];
		throw new EvidenceError('Unable to load connection.yaml', context);
	}

	return validationResult.data;
}
@param {string} sourceDir
@deprecated Use loadSourceConfig
@returns {Promise<import('./schemas/datasource.schema.js').DatasourceSpec | false>}