@@ -23,14 +23,21 @@ module.exports = function (options) {
23
23
}
24
24
25
25
function cmdGet ( msg , done ) {
26
- var cache = opts . cache
26
+ let cache = opts . cache
27
+ let context = this
27
28
28
29
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
+ }
30
33
31
34
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
+ }
34
41
}
35
42
36
43
if ( npm && ! msg . update ) {
@@ -40,9 +47,19 @@ function cmdGet (msg, done) {
40
47
var registry = opts . registry + msg . name
41
48
42
49
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
+ }
44
62
45
- var data = JSON . parse ( body )
46
63
var distTags = data [ 'dist-tags' ] || { }
47
64
var latest = ( ( data . versions || { } ) [ distTags . latest ] ) || { }
48
65
var repository = latest . repository || { }
@@ -77,7 +94,7 @@ function cmdGet (msg, done) {
77
94
}
78
95
}
79
96
else {
80
- return done ( new Error ( 'not found on npm' ) )
97
+ return done ( null , { ok : false , err : new Error ( 'not found on npm' ) } )
81
98
}
82
99
} )
83
100
} )
@@ -87,11 +104,16 @@ function aliasGet (msg, done) {
87
104
var seneca = this
88
105
var payload = { name : msg . name }
89
106
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
+ }
92
116
93
- payload . data = data
94
- seneca . act ( 'role:info,res:part,part:npm' , payload )
95
117
done ( null , { ok : true } )
96
118
} )
97
119
}
0 commit comments