@itg/rivet
Version:
Suite of utilities for working with the Rivet consumer-driven API contacts testing model.
50 lines (49 loc) • 1.6 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var path = require("path");
var glob = require("glob");
var PREFIX = 'rivet';
var POSSIBLE_EXTENSIONS = [
'*.ts',
'*.js',
'*.json',
'rc',
];
exports.getFiles = function (prefix, extensions, options) {
var globOptions = {
cwd: path.resolve(options.cwd),
dot: true,
ignore: ['**/node_modules/**/*'],
};
var combinedPaths = extensions.map(function (extension) {
return "" + prefix + extension;
}).join('|');
var globPath = "?(.)*(" + combinedPaths + ")";
return glob.sync(globPath, globOptions);
};
exports.getPkgConfig = function (options) {
var fullFilePath = path.resolve(options.cwd, 'package.json');
delete require.cache[fullFilePath];
return require(fullFilePath).rivet || {};
};
exports.loadFiles = function (paths, options) {
var configs = paths.map(function (filePath) {
try {
var fullFilePath = path.resolve(options.cwd, filePath);
delete require.cache[fullFilePath];
var config = require(fullFilePath);
return config;
}
catch (error) {
throw new Error(error);
}
});
return configs;
};
exports.load = function (cwd) {
var configFiles = exports.getFiles(PREFIX, POSSIBLE_EXTENSIONS, { cwd: cwd });
var configs = exports.loadFiles(configFiles, { cwd: cwd }).concat(exports.getPkgConfig({ cwd: cwd })).reduce(function (result, config) {
return Object.assign({}, result, config);
}, {});
return configs;
};