The data contained in this repository can be downloaded to your computer using one of several clients.
Please see the documentation of your version control software client for more information.

Please select the desired protocol below to get the URL.

This URL has Read-Only access.

Statistics
| Branch: | Revision:

main_repo / deps / npm / node_modules / npmconf / config-defs.js @ 5aef65a9

History | View | Annotate | Download (13.3 KB)

1
// defaults, types, and shorthands.
2

    
3

    
4
var path = require("path")
5
  , url = require("url")
6
  , Stream = require("stream").Stream
7
  , semver = require("semver")
8
  , stableFamily = semver.parse(process.version)
9
  , nopt = require("nopt")
10
  , osenv = require("osenv")
11

    
12
try {
13
  var log = require("npmlog")
14
} catch (er) {
15
  var util = require('util')
16
  var log = { warn: function (m) {
17
    console.warn(m + util.format.apply(util, [].slice.call(arguments, 1)))
18
  } }
19
}
20

    
21
exports.Octal = Octal
22
function Octal () {}
23
function validateOctal (data, k, val) {
24
  // must be either an integer or an octal string.
25
  if (typeof val === "number") {
26
    data[k] = val
27
    return true
28
  }
29

    
30
  if (typeof val === "string") {
31
    if (val.charAt(0) !== "0" || isNaN(val)) return false
32
    data[k] = parseInt(val, 8).toString(8)
33
  }
34
}
35

    
36
function validateSemver (data, k, val) {
37
  if (!semver.valid(val)) return false
38
  data[k] = semver.valid(val)
39
}
40

    
41
function validateStream (data, k, val) {
42
  if (!(val instanceof Stream)) return false
43
  data[k] = val
44
}
45

    
46
nopt.typeDefs.semver = { type: semver, validate: validateSemver }
47
nopt.typeDefs.Octal = { type: Octal, validate: validateOctal }
48
nopt.typeDefs.Stream = { type: Stream, validate: validateStream }
49

    
50
nopt.invalidHandler = function (k, val, type, data) {
51
  log.warn("invalid config", k + "=" + JSON.stringify(val))
52

    
53
  if (Array.isArray(type)) {
54
    if (type.indexOf(url) !== -1) type = url
55
    else if (type.indexOf(path) !== -1) type = path
56
  }
57

    
58
  switch (type) {
59
    case Octal:
60
      log.warn("invalid config", "Must be octal number, starting with 0")
61
      break
62
    case url:
63
      log.warn("invalid config", "Must be a full url with 'http://'")
64
      break
65
    case path:
66
      log.warn("invalid config", "Must be a valid filesystem path")
67
      break
68
    case Number:
69
      log.warn("invalid config", "Must be a numeric value")
70
      break
71
    case Stream:
72
      log.warn("invalid config", "Must be an instance of the Stream class")
73
      break
74
  }
75
}
76

    
77
if (!stableFamily || (+stableFamily[2] % 2)) stableFamily = null
78
else stableFamily = stableFamily[1] + "." + stableFamily[2]
79

    
80
var defaults
81

    
82
var temp = osenv.tmpdir()
83
var home = osenv.home()
84

    
85
var uidOrPid = process.getuid ? process.getuid() : process.pid
86

    
87
if (home) process.env.HOME = home
88
else home = path.resolve(temp, "npm-" + uidOrPid)
89

    
90
var cacheExtra = process.platform === "win32" ? "npm-cache" : ".npm"
91
var cacheRoot = process.platform === "win32" && process.env.APPDATA || home
92
var cache = path.resolve(cacheRoot, cacheExtra)
93

    
94

    
95
var globalPrefix
96
Object.defineProperty(exports, "defaults", {get: function () {
97
  if (defaults) return defaults
98

    
99
  if (process.env.PREFIX) {
100
    globalPrefix = process.env.PREFIX
101
  } else if (process.platform === "win32") {
102
    // c:\node\node.exe --> prefix=c:\node\
103
    globalPrefix = path.dirname(process.execPath)
104
  } else {
105
    // /usr/local/bin/node --> prefix=/usr/local
106
    globalPrefix = path.dirname(path.dirname(process.execPath))
107

    
108
    // destdir only is respected on Unix
109
    if (process.env.DESTDIR) {
110
      globalPrefix = path.join(process.env.DESTDIR, globalPrefix)
111
    }
112
  }
113

    
114
  return defaults =
115
    { "always-auth" : false
116
    , "bin-links" : true
117
    , browser : null
118

    
119
    , ca : // the npm CA certificate.
120
      [ "-----BEGIN CERTIFICATE-----\n"+
121
        "MIIChzCCAfACCQDauvz/KHp8ejANBgkqhkiG9w0BAQUFADCBhzELMAkGA1UEBhMC\n"+
122
        "VVMxCzAJBgNVBAgTAkNBMRAwDgYDVQQHEwdPYWtsYW5kMQwwCgYDVQQKEwNucG0x\n"+
123
        "IjAgBgNVBAsTGW5wbSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxDjAMBgNVBAMTBW5w\n"+
124
        "bUNBMRcwFQYJKoZIhvcNAQkBFghpQGl6cy5tZTAeFw0xMTA5MDUwMTQ3MTdaFw0y\n"+
125
        "MTA5MDIwMTQ3MTdaMIGHMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExEDAOBgNV\n"+
126
        "BAcTB09ha2xhbmQxDDAKBgNVBAoTA25wbTEiMCAGA1UECxMZbnBtIENlcnRpZmlj\n"+
127
        "YXRlIEF1dGhvcml0eTEOMAwGA1UEAxMFbnBtQ0ExFzAVBgkqhkiG9w0BCQEWCGlA\n"+
128
        "aXpzLm1lMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDLI4tIqPpRW+ACw9GE\n"+
129
        "OgBlJZwK5f8nnKCLK629Pv5yJpQKs3DENExAyOgDcyaF0HD0zk8zTp+ZsLaNdKOz\n"+
130
        "Gn2U181KGprGKAXP6DU6ByOJDWmTlY6+Ad1laYT0m64fERSpHw/hjD3D+iX4aMOl\n"+
131
        "y0HdbT5m1ZGh6SJz3ZqxavhHLQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAC4ySDbC\n"+
132
        "l7W1WpLmtLGEQ/yuMLUf6Jy/vr+CRp4h+UzL+IQpCv8FfxsYE7dhf/bmWTEupBkv\n"+
133
        "yNL18lipt2jSvR3v6oAHAReotvdjqhxddpe5Holns6EQd1/xEZ7sB1YhQKJtvUrl\n"+
134
        "ZNufy1Jf1r0ldEGeA+0ISck7s+xSh9rQD2Op\n"+
135
        "-----END CERTIFICATE-----\n",
136

    
137
        // "GlobalSign Root CA"
138
        "-----BEGIN CERTIFICATE-----\n"+
139
        "MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx\n"+
140
        "GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds\n"+
141
        "b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV\n"+
142
        "BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD\n"+
143
        "VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa\n"+
144
        "DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc\n"+
145
        "THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb\n"+
146
        "Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP\n"+
147
        "c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX\n"+
148
        "gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV\n"+
149
        "HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF\n"+
150
        "AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj\n"+
151
        "Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG\n"+
152
        "j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH\n"+
153
        "hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC\n"+
154
        "X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==\n"+
155
        "-----END CERTIFICATE-----\n",
156

    
157
        // "GlobalSign Root CA - R2"
158
        "-----BEGIN CERTIFICATE-----\n"+
159
        "MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv\n"+
160
        "YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh\n"+
161
        "bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT\n"+
162
        "aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln\n"+
163
        "bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6\n"+
164
        "ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp\n"+
165
        "s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN\n"+
166
        "S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL\n"+
167
        "TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C\n"+
168
        "ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E\n"+
169
        "FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i\n"+
170
        "YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN\n"+
171
        "BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp\n"+
172
        "9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu\n"+
173
        "01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7\n"+
174
        "9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7\n"+
175
        "TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==\n"+
176
        "-----END CERTIFICATE-----\n" ]
177

    
178

    
179
    , cache : cache
180

    
181
    , "cache-lock-stale": 60000
182
    , "cache-lock-retries": 10
183
    , "cache-lock-wait": 10000
184

    
185
    , "cache-max": Infinity
186
    , "cache-min": 10
187

    
188
    , color : true
189
    , coverage: false
190
    , depth: Infinity
191
    , description : true
192
    , dev : false
193
    , editor : osenv.editor()
194
    , "engine-strict": false
195
    , force : false
196

    
197
    , "fetch-retries": 2
198
    , "fetch-retry-factor": 10
199
    , "fetch-retry-mintimeout": 10000
200
    , "fetch-retry-maxtimeout": 60000
201

    
202
    , git: "git"
203

    
204
    , global : false
205
    , globalconfig : path.resolve(globalPrefix, "etc", "npmrc")
206
    , globalignorefile : path.resolve( globalPrefix, "etc", "npmignore")
207
    , group : process.platform === "win32" ? 0
208
            : process.env.SUDO_GID || (process.getgid && process.getgid())
209
    , ignore: ""
210
    , "init-module": path.resolve(home, '.npm-init.js')
211
    , "init.version" : "0.0.0"
212
    , "init.author.name" : ""
213
    , "init.author.email" : ""
214
    , "init.author.url" : ""
215
    , json: false
216
    , link: false
217
    , loglevel : "http"
218
    , logstream : process.stderr
219
    , long : false
220
    , message : "%s"
221
    , "node-version" : process.version
222
    , npaturl : "http://npat.npmjs.org/"
223
    , npat : false
224
    , "onload-script" : false
225
    , optional: true
226
    , parseable : false
227
    , pre: false
228
    , prefix : globalPrefix
229
    , production: process.env.NODE_ENV === "production"
230
    , "proprietary-attribs": true
231
    , proxy : process.env.HTTP_PROXY || process.env.http_proxy || null
232
    , "https-proxy" : process.env.HTTPS_PROXY || process.env.https_proxy ||
233
                      process.env.HTTP_PROXY || process.env.http_proxy || null
234
    , "user-agent" : "node/" + process.version
235
                     + ' ' + process.platform
236
                     + ' ' + process.arch
237
    , "rebuild-bundle" : true
238
    , registry : "https://registry.npmjs.org/"
239
    , rollback : true
240
    , save : false
241
    , "save-bundle": false
242
    , "save-dev" : false
243
    , "save-optional" : false
244
    , searchopts: ""
245
    , searchexclude: null
246
    , searchsort: "name"
247
    , shell : osenv.shell()
248
    , "sign-git-tag": false
249
    , "strict-ssl": true
250
    , tag : "latest"
251
    , tmp : temp
252
    , unicode : true
253
    , "unsafe-perm" : process.platform === "win32"
254
                    || process.platform === "cygwin"
255
                    || !( process.getuid && process.setuid
256
                       && process.getgid && process.setgid )
257
                    || process.getuid() !== 0
258
    , usage : false
259
    , user : process.platform === "win32" ? 0 : "nobody"
260
    , username : ""
261
    , userconfig : path.resolve(home, ".npmrc")
262
    , userignorefile : path.resolve(home, ".npmignore")
263
    , umask: 022
264
    , version : false
265
    , versions : false
266
    , viewer: process.platform === "win32" ? "browser" : "man"
267
    , yes: null
268

    
269
    , _exit : true
270
    }
271
}})
272

    
273
exports.types =
274
  { "always-auth" : Boolean
275
  , "bin-links": Boolean
276
  , browser : [null, String]
277
  , ca: [null, String, Array]
278
  , cache : path
279
  , "cache-lock-stale": Number
280
  , "cache-lock-retries": Number
281
  , "cache-lock-wait": Number
282
  , "cache-max": Number
283
  , "cache-min": Number
284
  , color : ["always", Boolean]
285
  , coverage: Boolean
286
  , depth : Number
287
  , description : Boolean
288
  , dev : Boolean
289
  , editor : String
290
  , "engine-strict": Boolean
291
  , force : Boolean
292
  , "fetch-retries": Number
293
  , "fetch-retry-factor": Number
294
  , "fetch-retry-mintimeout": Number
295
  , "fetch-retry-maxtimeout": Number
296
  , git: String
297
  , global : Boolean
298
  , globalconfig : path
299
  , globalignorefile: path
300
  , group : [Number, String]
301
  , "https-proxy" : [null, url]
302
  , "user-agent" : String
303
  , ignore : String
304
  , "init-module": path
305
  , "init.version" : [null, semver]
306
  , "init.author.name" : String
307
  , "init.author.email" : String
308
  , "init.author.url" : ["", url]
309
  , json: Boolean
310
  , link: Boolean
311
  , loglevel : ["silent","win","error","warn","http","info","verbose","silly"]
312
  , logstream : Stream
313
  , long : Boolean
314
  , message: String
315
  , "node-version" : [null, semver]
316
  , npaturl : url
317
  , npat : Boolean
318
  , "onload-script" : [null, String]
319
  , optional: Boolean
320
  , parseable : Boolean
321
  , pre: Boolean
322
  , prefix: path
323
  , production: Boolean
324
  , "proprietary-attribs": Boolean
325
  , proxy : [null, url]
326
  , "rebuild-bundle" : Boolean
327
  , registry : [null, url]
328
  , rollback : Boolean
329
  , save : Boolean
330
  , "save-bundle": Boolean
331
  , "save-dev" : Boolean
332
  , "save-optional" : Boolean
333
  , searchopts : String
334
  , searchexclude: [null, String]
335
  , searchsort: [ "name", "-name"
336
                , "description", "-description"
337
                , "author", "-author"
338
                , "date", "-date"
339
                , "keywords", "-keywords" ]
340
  , shell : String
341
  , "sign-git-tag": Boolean
342
  , "strict-ssl": Boolean
343
  , tag : String
344
  , tmp : path
345
  , unicode : Boolean
346
  , "unsafe-perm" : Boolean
347
  , usage : Boolean
348
  , user : [Number, String]
349
  , username : String
350
  , userconfig : path
351
  , userignorefile : path
352
  , umask: Octal
353
  , version : Boolean
354
  , versions : Boolean
355
  , viewer: String
356
  , yes: [false, null, Boolean]
357
  , _exit : Boolean
358
  , _password: String
359
  }
360

    
361
exports.shorthands =
362
  { s : ["--loglevel", "silent"]
363
  , d : ["--loglevel", "info"]
364
  , dd : ["--loglevel", "verbose"]
365
  , ddd : ["--loglevel", "silly"]
366
  , noreg : ["--no-registry"]
367
  , reg : ["--registry"]
368
  , "no-reg" : ["--no-registry"]
369
  , silent : ["--loglevel", "silent"]
370
  , verbose : ["--loglevel", "verbose"]
371
  , quiet: ["--loglevel", "warn"]
372
  , q: ["--loglevel", "warn"]
373
  , h : ["--usage"]
374
  , H : ["--usage"]
375
  , "?" : ["--usage"]
376
  , help : ["--usage"]
377
  , v : ["--version"]
378
  , f : ["--force"]
379
  , gangster : ["--force"]
380
  , gangsta : ["--force"]
381
  , desc : ["--description"]
382
  , "no-desc" : ["--no-description"]
383
  , "local" : ["--no-global"]
384
  , l : ["--long"]
385
  , m : ["--message"]
386
  , p : ["--parseable"]
387
  , porcelain : ["--parseable"]
388
  , g : ["--global"]
389
  , S : ["--save"]
390
  , D : ["--save-dev"]
391
  , O : ["--save-optional"]
392
  , y : ["--yes"]
393
  , n : ["--no-yes"]
394
  , B : ["--save-bundle"]
395
  }