aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/app.js2
-rw-r--r--lib/render-msg.js12
-rw-r--r--lib/serve.js7
3 files changed, 21 insertions, 0 deletions
diff --git a/lib/app.js b/lib/app.js
index cbbc74e..fbdbb8f 100644
--- a/lib/app.js
+++ b/lib/app.js
@@ -17,6 +17,7 @@ var proc = require('child_process')
var toPull = require('stream-to-pull-stream')
var BoxStream = require('pull-box-stream')
var crypto = require('crypto')
+var SsbNpmRegistry = require('ssb-npm-registry')
var zeros = new Buffer(24); zeros.fill(0)
@@ -65,6 +66,7 @@ function App(sbot, config) {
this.git = new Git(this.sbot, this.config)
this.contacts = new Contacts(this.sbot)
this.follows = new Follows(this.sbot, this.contacts)
+ this.serveSsbNpmRegistry = SsbNpmRegistry.respond(this.sbot, this.config)
this.monitorBlobWants()
}
diff --git a/lib/render-msg.js b/lib/render-msg.js
index b4ba87a..684ea40 100644
--- a/lib/render-msg.js
+++ b/lib/render-msg.js
@@ -1111,12 +1111,24 @@ RenderMsg.prototype.npmPackages = function (cb) {
function renderIdLink(id) {
return [h('a', {href: self.toUrl(id)}, truncate(id, 8)), ' ']
}
+ var singlePkg = self.c.mentions
+ && self.c.mentions.length === 1
+ && self.c.mentions[0]
+ var m = singlePkg && /^npm:(.*?):(.*?):/.exec(singlePkg.name)
+ var singlePkgSpec = m && (m[1] + (m[2] ? '@' + m[2] : ''))
self.render.npmPackageMentions(self.c.mentions, function (err, el) {
if (err) return cb(err)
var dependencyLinks = u.toArray(self.c.dependencyBranch)
var versionLinks = u.toArray(self.c.versionBranch)
self.wrap(h('div', [
el,
+ singlePkg ? h('p',
+ h('code',
+ 'npm install --registry=' +
+ 'http://' + self.app.host + ':' + self.app.port +
+ '/npm-registry/' + encodeURIComponent(self.msg.key) + ' ' +
+ singlePkgSpec),
+ ) : '',
dependencyLinks.length ? h('div',
'dependencies via: ', dependencyLinks.map(renderIdLink)
) : '',
diff --git a/lib/serve.js b/lib/serve.js
index 0e497ea..4b9eb1b 100644
--- a/lib/serve.js
+++ b/lib/serve.js
@@ -352,6 +352,7 @@ Serve.prototype.path = function (url) {
case '/npm': return this.npm(m[2])
case '/npm-prebuilds': return this.npmPrebuilds(m[2])
case '/npm-readme': return this.npmReadme(m[2])
+ case '/npm-registry': return this.npmRegistry(m[2])
case '/markdown': return this.markdown(m[2])
case '/zip': return this.zip(m[2])
case '/web': return this.web(m[2])
@@ -2534,6 +2535,12 @@ Serve.prototype.npmReadme = function (url) {
)
}
+Serve.prototype.npmRegistry = function (url) {
+ var self = this
+ self.req.url = url
+ self.app.serveSsbNpmRegistry(self.req, self.res)
+}
+
Serve.prototype.markdown = function (url) {
var self = this
var id = decodeURIComponent(url.substr(1))