UNPKG

@itg/rivet

Version:

Suite of utilities for working with the Rivet consumer-driven API contacts testing model.

50 lines (49 loc) 1.6 kB
"use strict"; 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; };