intradoc
Version:
In-place document content replacer CLI utility.
76 lines (72 loc) • 1.98 kB
JavaScript
;
var node_path = require('node:path');
var json5 = require('json5');
var yaml = require('yaml');
var index = require('../utils/index.js');
const loadData = async (options) => {
const cwd = options.cwd;
let loadedData = {};
let numDataSources = 0;
for await (const data of options.data) {
const path = node_path.join(cwd, data);
if (!await index.fileExists(path)) {
const error = new Error(`File "${path}" doesn't exist.`);
error.$metadata = {
cwd,
path
};
throw error;
}
const { extension, content } = await index.loadFile(path);
const $metadata = {
cwd,
path,
extension,
content
};
let parsedObject = {};
let error = false;
switch (extension) {
case 'json':
case 'json5':
try {
parsedObject = json5.parse(content);
}
catch (e) {
error = e;
}
break;
case 'yml':
case 'yaml':
try {
parsedObject = yaml.parse(content, {
logLevel: 'error'
});
}
catch (e) {
error = e;
}
break;
}
if (error !== false) {
const err = new Error(`File "${path}" error.`);
err.$metadata = {
...$metadata,
error
};
throw err;
}
loadedData = {
...loadedData,
...parsedObject
};
numDataSources++;
}
return {
data: loadedData,
numKeys: Object.keys(loadedData).length,
numDataSources
};
};
exports.loadData = loadData;
//# sourceMappingURL=loadData.js.map