UNPKG

cloverfield

Version:

A next generation JavaScript project boilerplate

71 lines (59 loc) 2.36 kB
'use strict'; 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;