cloverfield
Version:
A next generation JavaScript project boilerplate
71 lines (59 loc) • 2.36 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var isScaffold = function isScaffold(_ref2) {
var _ref2$keywords = _ref2.keywords;
var keywords = _ref2$keywords === undefined ? [] : _ref2$keywords;
var name = _ref2.name;
return name && (name.substr(0, 3) === 'cf-' || keywords.indexOf('cloverfield-scaffold') !== -1 || keywords.indexOf('cloverfield') !== -1 && keywords.indexOf('scaffold') !== -1);
};
var modulesReady = function modulesReady(resolve, reject) {
return function (error, tree) {
if (error) {
return reject(error);
}
var deps = tree.dependencies;
var scaffolds = Object.keys(deps).reduce(function (result, key) {
return(
// Search only for Cloverfield Scaffolds
_extends(result, isScaffold(deps[key]) ? _defineProperty({}, deps[key].name.replace(/^cf-/, ''), deps[key].realPath) : {})
);
}, {});
resolve(scaffolds);
};
};
var loaded = function loaded(npm) {
return function (resolve, reject) {
return function (error) {
if (error) {
return reject(error);
}
// List all npm dependencies
return npm.commands.ls([], true, modulesReady(resolve, reject));
};
};
};
// TODO: add caching
var findScaffolds = function findScaffolds(npm) {
return function (options) {
return function () {
return(
// Configure npm to search for dependencies globally or locally with minimal depth
new Promise(function () {
return npm.load(_extends({ silent: true, depth: 0 }, options), loaded(npm).apply(undefined, arguments));
})
);
};
};
};
var findLocal = function findLocal(npm) {
return findScaffolds(npm)({ global: false });
};
exports.findLocal = findLocal;
var findGlobal = function findGlobal(npm) {
return findScaffolds(npm)({ global: true });
};
exports.findGlobal = findGlobal;