summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/hosted-git-info/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/node_modules/hosted-git-info/index.js')
-rw-r--r--deps/npm/node_modules/hosted-git-info/index.js32
1 files changed, 17 insertions, 15 deletions
diff --git a/deps/npm/node_modules/hosted-git-info/index.js b/deps/npm/node_modules/hosted-git-info/index.js
index c1c2cc8996..adae4604c4 100644
--- a/deps/npm/node_modules/hosted-git-info/index.js
+++ b/deps/npm/node_modules/hosted-git-info/index.js
@@ -2,17 +2,18 @@
var url = require('url')
var gitHosts = require('./git-host-info.js')
var GitHost = module.exports = require('./git-host.js')
+var LRU = require('lru-cache')
+var cache = new LRU({max: 1000})
var protocolToRepresentationMap = {
- 'git+ssh': 'sshurl',
- 'git+https': 'https',
- 'ssh': 'sshurl',
- 'git': 'git'
+ 'git+ssh:': 'sshurl',
+ 'git+https:': 'https',
+ 'ssh:': 'sshurl',
+ 'git:': 'git'
}
function protocolToRepresentation (protocol) {
- if (protocol.substr(-1) === ':') protocol = protocol.slice(0, -1)
- return protocolToRepresentationMap[protocol] || protocol
+ return protocolToRepresentationMap[protocol] || protocol.slice(0, -1)
}
var authProtocols = {
@@ -23,17 +24,15 @@ var authProtocols = {
'git+http:': true
}
-var cache = {}
-
module.exports.fromUrl = function (giturl, opts) {
if (typeof giturl !== 'string') return
var key = giturl + JSON.stringify(opts || {})
- if (!(key in cache)) {
- cache[key] = fromUrl(giturl, opts)
+ if (!cache.has(key)) {
+ cache.set(key, fromUrl(giturl, opts))
}
- return cache[key]
+ return cache.get(key)
}
function fromUrl (giturl, opts) {
@@ -65,13 +64,17 @@ function fromUrl (giturl, opts) {
var pathmatch = gitHostInfo.pathmatch
var matched = parsed.path.match(pathmatch)
if (!matched) return
- if (matched[1] != null) user = decodeURIComponent(matched[1].replace(/^:/, ''))
- if (matched[2] != null) project = decodeURIComponent(matched[2])
+ if (matched[1] !== null && matched[1] !== undefined) {
+ user = decodeURIComponent(matched[1].replace(/^:/, ''))
+ }
+ project = decodeURIComponent(matched[2])
defaultRepresentation = protocolToRepresentation(parsed.protocol)
}
return new GitHost(gitHostName, user, auth, project, committish, defaultRepresentation, opts)
} catch (ex) {
- if (!(ex instanceof URIError)) throw ex
+ /* istanbul ignore else */
+ if (ex instanceof URIError) {
+ } else throw ex
}
}).filter(function (gitHostInfo) { return gitHostInfo })
if (matches.length !== 1) return
@@ -101,7 +104,6 @@ function fixupUnqualifiedGist (giturl) {
}
function parseGitUrl (giturl) {
- if (typeof giturl !== 'string') giturl = '' + giturl
var matched = giturl.match(/^([^@]+)@([^:/]+):[/]?((?:[^/]+[/])?[^/]+?)(?:[.]git)?(#.*)?$/)
if (!matched) return url.parse(giturl)
return {