atom-nuclide
Version:
A unified developer experience for web and mobile development, built as a suite of features on top of Atom to provide hackability and the support of an active community.
63 lines (53 loc) • 2.44 kB
JavaScript
Object.defineProperty(exports, '__esModule', {
value: true
});
exports.default = loadServicesConfig;
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } }
/**
* Load service configs, and resolve all of the paths to absolute paths.
*/
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
/*
* Copyright (c) 2015-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the license found in the LICENSE file in
* the root directory of this source tree.
*/
var _fs2;
function _fs() {
return _fs2 = _interopRequireDefault(require('fs'));
}
var _commonsNodeNuclideUri2;
function _commonsNodeNuclideUri() {
return _commonsNodeNuclideUri2 = _interopRequireDefault(require('../../commons-node/nuclideUri'));
}
function loadServicesConfig(dirname) {
return [(_commonsNodeNuclideUri2 || _commonsNodeNuclideUri()).default.resolve(dirname, './services-3.json'), (_commonsNodeNuclideUri2 || _commonsNodeNuclideUri()).default.resolve(dirname, './fb-services-3.json')].reduce(function (acc, servicePath) {
if ((_fs2 || _fs()).default.existsSync(servicePath)) {
var basedir = (_commonsNodeNuclideUri2 || _commonsNodeNuclideUri()).default.dirname(servicePath);
var src = (_fs2 || _fs()).default.readFileSync(servicePath, 'utf8');
var jsonConfig = JSON.parse(src);
acc.push.apply(acc, _toConsumableArray(createServiceConfigObject(basedir, jsonConfig)));
}
return acc;
}, []);
}
/**
* Takes the contents of a service config JSON file, and formats each entry into
* a ConfigEntry.
* Service paths must either be absolute or relative to the service config
* config file.
*/
function createServiceConfigObject(basedir, jsonConfig) {
return jsonConfig.map(function (config) {
return {
name: config.name,
// TODO(peterhal): Remove this once all services have had their def files removed.
definition: (_commonsNodeNuclideUri2 || _commonsNodeNuclideUri()).default.resolve(basedir, config.definition || config.implementation),
implementation: (_commonsNodeNuclideUri2 || _commonsNodeNuclideUri()).default.resolve(basedir, config.implementation),
preserveFunctionNames: config.preserveFunctionNames === true
};
});
}
module.exports = exports.default;