New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

cleverstack-cli

Package Overview
Dependencies
Maintainers
2
Versions
80
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

cleverstack-cli - npm Package Compare versions

Comparing version 0.0.7 to 0.0.8

8

lib/repos.js

@@ -79,6 +79,2 @@ var https = require( 'https' )

if (repo.homepage !== undefined) {
title.push( repo.homepage );
}
if (repo.type === undefined || repo.type === "backend") {

@@ -90,4 +86,4 @@ utils.warn( title.join( ' ' ) );

if (repo.url !== null) {
console.log( colors.gray( repo.url ) );
if (repo.url !== null || repo.homepage !== null) {
console.log( colors.gray( repo.url || repo.homepage ) );
}

@@ -94,0 +90,0 @@

var path = require( 'path' )
, Promise = require( 'bluebird' )
, async = require( 'async' )
, npmconf = require( 'npmconf' )
, semver = require( 'semver' )
, _ = require( 'lodash' )
, utils = require( path.join( __dirname, 'utils' ) )
, RegClient = require('npm-registry-client')
, RegistryClient = require( 'bower-registry-client' )
, registry = new RegistryClient( );
, request = require( 'request' )
, utils = require( path.join( __dirname, 'utils' ) );
var _keywordRequired = ['cleverstack module', 'cleverstack-module', 'cleverstack seed', 'cleverstack-seed']
, _keywordType = ['cleverstack-backend', 'cleverstack backend', 'cleverstack-frontend', 'cleverstack frontend', 'frontend', 'backend', 'seed'];
var _keywordRequired = ['cleverstack module', 'cleverstack-module', 'cleverstack seed', 'cleverstack-seed'];
var searchNPM = exports.npm = function ( queries ) {
var def = Promise.defer( )
function searchNPMRegistry ( queries ) {
var def = Promise.defer( )
, repos = [];
utils.info( 'Searching through NPM packages...' );
async.each( queries, function ( q, next ) {
var search = q.split( '@' );
if (typeof search[1] === "undefined") {
search[1] = '*';
}
npmconf.load( {}, function ( er, conf ) {
var client = new RegClient( conf );
request( {
url: 'http://registry.npmjs.org/' + encodeURIComponent( search[ 0 ] ),
json: true
},
function ( err, response, res ) {
if (!!err || (res.error && res.error === "not_found")) {
return next( );
}
async.each( queries, function ( q, next ) {
var search = q.split( '@' );
if (typeof search[1] === "undefined") {
search[1] = '*';
var versions = Object.keys( res.versions );
var maxVersion = semver.maxSatisfying( versions, search[1] );
var pkg = res.versions[maxVersion];
if (typeof pkg === "undefined") {
return next( );
}
client.get( search[0], 10000, false, true, function ( err, res ) {
if (!!err) {
if (err.code === 'E404') {
return next( );
}
return next( err );
if (_.intersection( pkg.keywords, _keywordRequired ).length > 0) {
if (typeof pkg.repository === "object" && pkg.repository.hasOwnProperty( 'url' )) {
pkg.homepage = pkg.repository.url;
}
var versions = Object.keys( res.versions );
var maxVersion = semver.maxSatisfying( versions, search[1] );
repos.push( pkg );
}
var pkg = res.versions[maxVersion];
if (typeof pkg === "undefined") {
return next( );
}
next( );
} );
}, function ( err ) {
if (!!err) {
return def.reject( err );
}
if (_.intersection( pkg.keywords, _keywordRequired ).length > 0) {
if (typeof pkg.repository === "object" && pkg.repository.hasOwnProperty( 'url' )) {
pkg.homepage = pkg.repository.url;
}
def.resolve( repos );
} );
repos.push( pkg );
return def.promise;
}
var list = exports.list = function ( ) {
var def = Promise.defer( );
request.get( {
url: 'https://registry.npmjs.org/-/_view/byKeyword?startkey=["cleverstack"]&endkey=["cleverstack",{}]&group_level=2',
json: true
},
function ( err, res, body ) {
var rows = body.rows.map( function ( r ) {
return r.key[1];
} );
searchNPMRegistry( rows ).then( function ( response ) {
def.resolve( response );
} )
.catch( function ( err ) {
def.reject( err );
} );
} );
return def.promise;
}
var searchNPM = exports.npm = function ( queries ) {
var def = Promise.defer( );
utils.info( 'Searching through NPM packages...' );
if (queries.length < 1) {
list( ).then( function ( res ) {
def.resolve( res )
} )
.catch( function ( err ) {
def.reject( err );
} );
} else {
searchNPMRegistry( queries ).then( function ( res ) {
def.resolve( res );
} )
.catch( function ( err ) {
def.reject( err );
} );
}
return def.promise;
}
function listBower( ) {
var def = Promise.defer( )
, repos = [ ];
utils.info( 'Searching through Bower packages' );
request( {
url: 'https://bower-component-list.herokuapp.com/keyword/cleverstack',
json: true
},
function ( err, res, body ) {
async.each( body, function ( module, next ) {
request( {
url: 'https://bower.herokuapp.com/packages/' + encodeURIComponent( module.name ),
json: true
},
function ( e, response, bower ) {
if (!bower || !bower.url) {
return next( );
}
module.url = bower.url;
repos.push( module );
next( );
} );
}, function ( err ) {
if (!!err) {
return def.reject( err );
}
def.resolve( repos );
} );
} );
return def.promise;

@@ -73,8 +144,12 @@ }

registry.search( query, function ( err, res ) {
if (!!err) {
return def.reject( err );
request( {
url: 'https://bower.herokuapp.com/packages/' + encodeURIComponent( query ),
json: true
},
function ( e, response, bower ) {
if (!!e) {
return def.reject( e );
}
def.resolve( res );
def.resolve( bower );
} );

@@ -90,2 +165,3 @@

all.push( searchNPM( args ) );
all.push( listBower( ) );

@@ -98,13 +174,17 @@ args.forEach( function ( arg ) {

var npm = results[0].map( function ( r ) { r.type = 'backend'; return r; } )
, keys = results[1]
, repos = [];
results.shift( );
results.shift( );
// Bower is pretty limiting in terms of keywords, etc.
// Note: We'll need to figure out a way to allow external frontend projects
// to be added to seeds.. I'm fairly certain we can take Sam's idea of just fetching
// from raw.github.com (limited to just github though...) and look into package.json
console.log('res', results);
results[0].forEach( function ( rep ) {
if (!!rep.url && rep.url.match(/^git:\/\/github\.com\/(clevertech|CleverStack)\//) !== null) {
var bower = ( args.length < 1 ? results[0] : results ).filter( function ( res ) {
return typeof res === "object" && res.hasOwnProperty( 'url' );
} ).forEach( function ( rep ) {
var cleverStackBower = _.find( keys, function ( key ) {
return key.name === rep.name;
} );
if (cleverStackBower) {
rep = _.merge( cleverStackBower, rep );
rep.type = 'frontend';

@@ -117,5 +197,7 @@ repos.push( rep );

} )
.error( def.reject );
.catch( function ( err ) {
def.reject( err );
} );
return def.promise;
}
{
"name": "cleverstack-cli",
"version": "0.0.7",
"version": "0.0.8",
"description": "Command line interface for CleverTech's CleverStack",

@@ -37,3 +37,2 @@ "main": "./index.js",

"lodash": "~2.4.1",
"bower-registry-client": "~0.1.6",
"tab": "~0.1.0",

@@ -51,3 +50,2 @@ "progress": "~1.1.3",

"request": "~2.33.0",
"npm-registry-client": "~0.3.3",
"hat": "0.0.3",

@@ -54,0 +52,0 @@ "npmconf": "~0.1.12"

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc