Commit fa946a64685781d58a9266937da0e1d9c30a20d6
Generate _npmUser in response
Put the feed id and name for the "npm view" command to show.cel committed on 8/31/2018, 2:32:11 AM
Parent: 87875a4f00604b64bb80b480a5764b44885eef80
Files changed
index.js | changed |
index.js | ||
---|---|---|
@@ -338,8 +338,9 @@ | ||
338 | 338 … | this.host = this.npmConfig.host || 'localhost' |
339 | 339 … | this.fetchAll = this.npmConfig.fetchAll |
340 | 340 … | this.needShasum = this.npmConfig.needShasum |
341 | 341 … | this.getMsg = memo({cache: lru(100)}, this.getMsg) |
342 … | + this.getFeedName = memo({cache: lru(100)}, this.getFeedName) | |
342 | 343 … | } |
343 | 344 … | |
344 | 345 … | SsbNpmRegistryServer.prototype = Object.create(http.Server.prototype) |
345 | 346 … | SsbNpmRegistryServer.prototype.constructor = SsbNpmRegistryServer |
@@ -412,8 +413,47 @@ | ||
412 | 413 … | cb(null, {key: id, value: value}) |
413 | 414 … | }) |
414 | 415 … | } |
415 | 416 … | |
417 … | +SsbNpmRegistryServer.prototype.getFeedName = function (id, cb) { | |
418 … | + var self = this | |
419 … | + if (self.sbot.names && self.sbot.names.getSignifier) { | |
420 … | + self.sbot.names.getSignifier(id, function (err, name) { | |
421 … | + if (err || !name) tryLinks() | |
422 … | + else cb(null, name) | |
423 … | + }) | |
424 … | + } else { | |
425 … | + tryLinks() | |
426 … | + } | |
427 … | + function tryLinks() { | |
428 … | + if (!self.sbot.links) return nope() | |
429 … | + pull( | |
430 … | + self.sbot.links({ | |
431 … | + source: id, | |
432 … | + dest: id, | |
433 … | + rel: 'about', | |
434 … | + values: true, | |
435 … | + limit: 1, | |
436 … | + reverse: true, | |
437 … | + keys: false, | |
438 … | + meta: false | |
439 … | + }), | |
440 … | + pull.map(function (value) { | |
441 … | + return value && value.content && value.content.name | |
442 … | + }), | |
443 … | + pull.filter(Boolean), | |
444 … | + pull.take(1), | |
445 … | + pull.collect(function (err, names) { | |
446 … | + if (err || !names.length) return nope() | |
447 … | + cb(null, names[0]) | |
448 … | + }) | |
449 … | + ) | |
450 … | + } | |
451 … | + function nope() { | |
452 … | + cb(null, '') | |
453 … | + } | |
454 … | +} | |
455 … | + | |
416 | 456 … | SsbNpmRegistryServer.prototype.streamTree = function (heads, prop) { |
417 | 457 … | var self = this |
418 | 458 … | var stack = heads.slice() |
419 | 459 … | var seen = {} |
@@ -1025,9 +1065,9 @@ | ||
1025 | 1065 … | // correct. |
1026 | 1066 … | obj.dependencies = deps |
1027 | 1067 … | obj.bundledDependencies = bundledDeps |
1028 | 1068 … | if (shasum) obj.dist.shasum = obj._shasum = shasum |
1029 | - cb(null, obj) | |
1069 … | + next(obj) | |
1030 | 1070 … | } else { |
1031 | 1071 … | // get dependencies from the tarball |
1032 | 1072 … | getPackageJsonFromTarballBlob(self.server.sbot, blobId, function (err, pkg) { |
1033 | 1073 … | if (err) return cb(err) |
@@ -1036,13 +1076,24 @@ | ||
1036 | 1076 … | pkg.author = pkg.author || obj.author |
1037 | 1077 … | pkg.version = pkg.version || obj.version |
1038 | 1078 … | pkg.name = pkg.name || obj.name |
1039 | 1079 … | pkg.license = pkg.license || obj.license |
1040 | - cb(null, pkg) | |
1080 … | + next(pkg) | |
1041 | 1081 … | }) |
1042 | 1082 … | } |
1043 | 1083 … | }) |
1044 | 1084 … | ) |
1085 … | + function next(pkg) { | |
1086 … | + var feedId = obj.author.url | |
1087 … | + self.server.getFeedName(feedId, function (err, name) { | |
1088 … | + if (err) console.error('[npm-registry]', err.stack || err), name = '' | |
1089 … | + pkg._npmUser = { | |
1090 … | + email: feedId, | |
1091 … | + name: name | |
1092 … | + } | |
1093 … | + cb(null, pkg) | |
1094 … | + }) | |
1095 … | + } | |
1045 | 1096 … | } |
1046 | 1097 … | |
1047 | 1098 … | function getPackageJsonFromTarballBlob(sbot, id, cb) { |
1048 | 1099 … | var self = this |
Built with git-ssb-web