Skip to content

Commit 457bfc1

Browse files
change response for seneca actions
1 parent 4eb83de commit 457bfc1

File tree

1 file changed

+33
-11
lines changed

1 file changed

+33
-11
lines changed

lib/npm.js

+33-11
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,21 @@ module.exports = function (options) {
2323
}
2424

2525
function 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

Comments
 (0)