@@ -23,14 +23,21 @@ module.exports = function (options) {
2323}
2424
2525function cmdGet ( msg , done ) {
26- var cache = opts . cache
26+ let cache = opts . cache
27+ let context = this
2728
2829 cache . load$ ( msg . name , ( err , npm ) => {
29- if ( err ) return done ( err )
30+ if ( err ) {
31+ context . log . debug ( `Cannot load from cache module ${ msg . name } , try now to get it remotely` )
32+ }
3033
3134 function complete ( err , entity ) {
32- if ( err ) return done ( err )
33- else done ( null , entity . data$ ( entity ) )
35+ if ( err ) {
36+ return done ( null , { ok : false , err : err } )
37+ }
38+ else {
39+ done ( null , { ok : true , data : entity . data$ ( entity ) } )
40+ }
3441 }
3542
3643 if ( npm && ! msg . update ) {
@@ -40,9 +47,19 @@ function cmdGet (msg, done) {
4047 var registry = opts . registry + msg . name
4148
4249 Request . get ( { url : registry , gzip : true } , ( err , res , body ) => {
43- if ( err ) return done ( err )
50+ if ( err ) {
51+ return complete ( err )
52+ }
53+
54+ var data = null
55+
56+ try {
57+ data = JSON . parse ( body )
58+ }
59+ catch ( e ) {
60+ return complete ( e )
61+ }
4462
45- var data = JSON . parse ( body )
4663 var distTags = data [ 'dist-tags' ] || { }
4764 var latest = ( ( data . versions || { } ) [ distTags . latest ] ) || { }
4865 var repository = latest . repository || { }
@@ -77,7 +94,7 @@ function cmdGet (msg, done) {
7794 }
7895 }
7996 else {
80- return done ( new Error ( 'not found on npm' ) )
97+ return done ( null , { ok : false , err : new Error ( 'not found on npm' ) } )
8198 }
8299 } )
83100 } )
@@ -87,11 +104,16 @@ function aliasGet (msg, done) {
87104 var seneca = this
88105 var payload = { name : msg . name }
89106
90- seneca . act ( 'role:npm,cmd:get' , payload , ( err , data ) => {
91- if ( err ) return done ( err )
107+ seneca . act ( 'role:npm,cmd:get' , payload , ( err , res ) => {
108+ if ( err ) {
109+ return done ( null , { ok : false , err : err } )
110+ }
111+
112+ if ( res && res . ok ) {
113+ payload . data = res . data
114+ seneca . act ( 'role:info,res:part,part:npm' , payload )
115+ }
92116
93- payload . data = data
94- seneca . act ( 'role:info,res:part,part:npm' , payload )
95117 done ( null , { ok : true } )
96118 } )
97119}
0 commit comments