'use strict';

const fs = require('fs');
const path = require('path');

/**
 * importJSON() Function to safely fetch and parse a JSON file
 *
 * @param {string} filename - The filename of the json file to be loaded
 * @param {string} [dir='config'] - The directory to find the JSON file in
 *
 * @return {Object} The loaded object from the file
 */
function importJSON(filename, dir='config') {
	const fullFilename = `${filename}.json`;
	const pathToFile = path.join(__dirname, '..', dir, fullFilename);

	// Validate that a file exists with that name within the config dir
	if (!fs.existsSync(pathToFile))
		throw new Error(`Missing file (${pathToFile})`);

	// Import the file
	let file;
	try {
		file = require(pathToFile);
	} catch {
		throw new Error(`Malformed file (${pathToFile})`);
	}

	return file;
}

module.exports = importJSON;
