@oclif/config
Version:
base config object and standard interfaces for oclif components
55 lines (54 loc) • 1.48 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const fs = require("fs");
const debug = require('debug')('@oclif/config');
function flatMap(arr, fn) {
return arr.reduce((arr, i) => arr.concat(fn(i)), []);
}
exports.flatMap = flatMap;
function mapValues(obj, fn) {
return Object.entries(obj)
.reduce((o, [k, v]) => {
o[k] = fn(v, k);
return o;
}, {});
}
exports.mapValues = mapValues;
function exists(path) {
return new Promise(resolve => resolve(fs.existsSync(path)));
}
exports.exists = exists;
function resolvePackage(id, paths) {
return require.resolve(id, paths);
}
exports.resolvePackage = resolvePackage;
function loadJSON(path) {
debug('loadJSON %s', path);
// let loadJSON
// try { loadJSON = require('load-json-file') } catch {}
// if (loadJSON) return loadJSON.sync(path)
return new Promise((resolve, reject) => {
fs.readFile(path, 'utf8', (err, d) => {
try {
if (err)
reject(err);
else
resolve(JSON.parse(d));
}
catch (error) {
reject(error);
}
});
});
}
exports.loadJSON = loadJSON;
function compact(a) {
return a.filter((a) => Boolean(a));
}
exports.compact = compact;
function uniq(arr) {
return arr.filter((a, i) => {
return !arr.find((b, j) => j > i && b === a);
});
}
exports.uniq = uniq;