mirror of https://github.com/nodejs/node.git
71 lines
1.8 KiB
JavaScript
71 lines
1.8 KiB
JavaScript
|
|
// utilities for working with the js-registry site.
|
|
|
|
module.exports = RegClient
|
|
|
|
var fs = require('fs')
|
|
, url = require('url')
|
|
, path = require('path')
|
|
, npmlog
|
|
|
|
try {
|
|
npmlog = require("npmlog")
|
|
} catch (er) {
|
|
npmlog = { error: noop, warn: noop, info: noop,
|
|
verbose: noop, silly: noop, http: silly,
|
|
pause: noop, resume: noop }
|
|
}
|
|
|
|
function noop () {}
|
|
|
|
function RegClient (options) {
|
|
// a registry url must be provided.
|
|
var registry = url.parse(options.registry)
|
|
if (!registry.protocol) throw new Error(
|
|
'Invalid registry: ' + registry.url)
|
|
this.registry = registry.href
|
|
|
|
this.retries = options.retries || 2
|
|
this.retryFactor = options.retryFactor || 10
|
|
this.retryMinTimeout = options.retryMinTimeout || 10000
|
|
this.retryMaxTimeout = options.retryMaxTimeout || 60000
|
|
|
|
this.cache = options.cache
|
|
if (!this.cache) throw new Error("Cache dir is required")
|
|
|
|
this.alwaysAuth = options.alwaysAuth || false
|
|
|
|
this.auth = options.auth || null
|
|
if (this.auth) {
|
|
var a = new Buffer(this.auth, "base64").toString()
|
|
a = a.split(":")
|
|
this.username = a.shift()
|
|
this.password = a.join(":")
|
|
}
|
|
this.email = options.email || null
|
|
this.defaultTag = options.tag || "latest"
|
|
|
|
this.ca = options.ca || null
|
|
|
|
this.strictSSL = options.strictSSL
|
|
if (this.strictSSL === undefined) this.strictSSL = true
|
|
|
|
this.userAgent = options.userAgent
|
|
if (this.userAgent === undefined) {
|
|
this.userAgent = 'node/' + process.version
|
|
}
|
|
|
|
this.cacheMin = options.cacheMin || 0
|
|
this.cacheMax = options.cacheMax || Infinity
|
|
|
|
this.proxy = options.proxy
|
|
this.httpsProxy = options.httpsProxy || options.proxy
|
|
|
|
this.log = options.log || npmlog
|
|
}
|
|
|
|
require('fs').readdirSync(__dirname + "/lib").forEach(function (f) {
|
|
if (!f.match(/\.js$/)) return
|
|
RegClient.prototype[f.replace(/\.js$/, '')] = require('./lib/' + f)
|
|
})
|