This repository has been archived by the owner on Aug 11, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3k
/
index.js
69 lines (57 loc) · 1.9 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
// utilities for working with the js-registry site.
module.exports = RegClient
var fs = require('fs')
, url = require('url')
, path = require('path')
, CouchLogin = require('couch-login')
, npmlog
try {
npmlog = require("npmlog")
} catch (er) {
npmlog = { error: noop, warn: noop, info: noop,
verbose: noop, silly: noop, http: noop,
pause: noop, resume: noop }
}
function noop () {}
function RegClient (conf) {
// accept either a plain-jane object, or a npmconf object
// with a "get" method.
if (typeof conf.get !== 'function') {
var data = conf
conf = { get: function (k) { return data[k] }
, set: function (k, v) { data[k] = v }
, del: function (k) { delete data[k] } }
}
this.conf = conf
// if provided, then the registry needs to be a url.
// if it's not provided, then we're just using the cache only.
var registry = conf.get('registry')
if (registry) {
registry = url.parse(registry)
if (!registry.protocol) throw new Error(
'Invalid registry: ' + registry.url)
registry = registry.href
if (registry.slice(-1) !== '/') {
registry += '/'
}
this.conf.set('registry', registry)
} else {
registry = null
}
if (!conf.get('cache')) throw new Error("Cache dir is required")
var auth = this.conf.get('_auth')
var alwaysAuth = this.conf.get('always-auth')
if (auth && !alwaysAuth && registry) {
// if we're always authing, then we just send the
// user/pass on every thing. otherwise, create a
// session, and use that.
var token = this.conf.get('_token')
this.couchLogin = new CouchLogin(registry, token)
this.couchLogin.proxy = this.conf.get('proxy')
}
this.log = conf.log || conf.get('log') || npmlog
}
require('fs').readdirSync(__dirname + "/lib").forEach(function (f) {
if (!f.match(/\.js$/)) return
RegClient.prototype[f.replace(/\.js$/, '')] = require('./lib/' + f)
})