summaryrefslogtreecommitdiff
path: root/deps
diff options
context:
space:
mode:
authorisaacs <i@izs.me>2013-03-28 11:35:12 -0700
committerisaacs <i@izs.me>2013-03-28 11:35:12 -0700
commitdea0634f60887e6a72a8636b92d7c95e003b8e4f (patch)
tree7d4e52230e8d2fa9a68d236d9df69b6ecc33a97d /deps
parent4580be088238853ac84d600a56a05159190c1729 (diff)
downloadnode-dea0634f60887e6a72a8636b92d7c95e003b8e4f.tar.gz
npm: Upgrade to v1.2.15
Diffstat (limited to 'deps')
-rw-r--r--deps/npm/doc/cli/disputes.md21
-rw-r--r--deps/npm/html/doc/disputes.html21
-rw-r--r--deps/npm/lib/cache.js10
-rw-r--r--deps/npm/man/man1/disputes.125
-rw-r--r--deps/npm/node_modules/lru-cache/README.md12
-rw-r--r--deps/npm/node_modules/lru-cache/lib/lru-cache.js54
-rw-r--r--deps/npm/node_modules/lru-cache/package.json9
-rw-r--r--deps/npm/node_modules/lru-cache/s.js25
-rw-r--r--deps/npm/node_modules/lru-cache/test/basic.js28
-rw-r--r--deps/npm/node_modules/node-gyp/addon.gypi7
-rw-r--r--deps/npm/node_modules/node-gyp/lib/build.js29
-rw-r--r--deps/npm/node_modules/node-gyp/lib/configure.js15
-rw-r--r--deps/npm/node_modules/node-gyp/lib/install.js2
-rw-r--r--deps/npm/node_modules/node-gyp/lib/node-gyp.js1
-rw-r--r--deps/npm/node_modules/node-gyp/package.json20
-rw-r--r--deps/npm/node_modules/tar/package.json13
-rw-r--r--deps/npm/node_modules/tar/test/pack.js3
-rw-r--r--deps/npm/package.json6
18 files changed, 218 insertions, 83 deletions
diff --git a/deps/npm/doc/cli/disputes.md b/deps/npm/doc/cli/disputes.md
index 751e804f8..52d2a2e56 100644
--- a/deps/npm/doc/cli/disputes.md
+++ b/deps/npm/doc/cli/disputes.md
@@ -15,9 +15,9 @@ There sometimes arise cases where a user publishes a module, and then
later, some other user wants to use that name. Here are some common
ways that happens (each of these is based on actual events.)
-1. Bob writes a JavaScript module `foo`, which is not node-specific.
- Bob doesn't use node at all. Joe wants to use `foo` in node, so he
- wraps it in an npm module. Some time later, Bob starts using node,
+1. Joe writes a JavaScript module `foo`, which is not node-specific.
+ Joe doesn't use node at all. Bob wants to use `foo` in node, so he
+ wraps it in an npm module. Some time later, Joe starts using node,
and wants to take over management of his program.
2. Bob writes an npm module `foo`, and publishes it. Perhaps much
later, Joe finds a bug in `foo`, and fixes it. He sends a pull
@@ -49,7 +49,8 @@ Joe's appropriate course of action in each case is the same.
the `foo` package.
3. After a reasonable amount of time, if Bob has not responded, or if
Bob and Joe can't come to any sort of resolution, email isaacs
- <i@izs.me> and we'll sort it out.
+ <i@izs.me> and we'll sort it out. ("Reasonable" is usually about 4
+ weeks, but extra time is allowed around common holidays.)
## REASONING
@@ -71,17 +72,23 @@ Some things are not allowed, and will be removed without discussion if
they are brought to the attention of the npm registry admins, including
but not limited to:
-1. Malware (that is, a module designed to exploit or harm the machine on
- which it is installed)
+1. Malware (that is, a package designed to exploit or harm the machine on
+ which it is installed).
2. Violations of copyright or licenses (for example, cloning an
MIT-licensed program, and then removing or changing the copyright and
- license statement)
+ license statement).
3. Illegal content.
4. "Squatting" on a package name that you *plan* to use, but aren't
actually using. Sorry, I don't care how great the name is, or how
perfect a fit it is for the thing that someday might happen. If
someone wants to use it today, and you're just taking up space with
an empty tarball, you're going to be evicted.
+5. Putting empty packages in the registry. Packages must have SOME
+ functionality. It can be silly, but it can't be *nothing*. (See
+ also: squatting.)
+6. Doing weird things with the registry, like using it as your own
+ personal application database or otherwise putting non-packagey
+ things into it.
If you see bad behavior like this, please report it right away.
diff --git a/deps/npm/html/doc/disputes.html b/deps/npm/html/doc/disputes.html
index f42aa39db..6cbebc988 100644
--- a/deps/npm/html/doc/disputes.html
+++ b/deps/npm/html/doc/disputes.html
@@ -20,9 +20,9 @@
later, some other user wants to use that name. Here are some common
ways that happens (each of these is based on actual events.)</p>
-<ol><li>Bob writes a JavaScript module <code>foo</code>, which is not node-specific.
-Bob doesn&#39;t use node at all. Joe wants to use <code>foo</code> in node, so he
-wraps it in an npm module. Some time later, Bob starts using node,
+<ol><li>Joe writes a JavaScript module <code>foo</code>, which is not node-specific.
+Joe doesn&#39;t use node at all. Bob wants to use <code>foo</code> in node, so he
+wraps it in an npm module. Some time later, Joe starts using node,
and wants to take over management of his program.</li><li>Bob writes an npm module <code>foo</code>, and publishes it. Perhaps much
later, Joe finds a bug in <code>foo</code>, and fixes it. He sends a pull
request to Bob, but Bob doesn&#39;t have the time to deal with it,
@@ -49,7 +49,8 @@ isaacs <a href="mailto:i@izs.me">i@izs.me</a> to the CC list of the email. Ment
that Bob can run <code>npm owner add joe foo</code> to add Joe as an owner of
the <code>foo</code> package.</li><li>After a reasonable amount of time, if Bob has not responded, or if
Bob and Joe can&#39;t come to any sort of resolution, email isaacs
-<a href="mailto:i@izs.me">i@izs.me</a> and we&#39;ll sort it out.</li></ol>
+<a href="mailto:i@izs.me">i@izs.me</a> and we&#39;ll sort it out. (&quot;Reasonable&quot; is usually about 4
+weeks, but extra time is allowed around common holidays.)</li></ol>
<h2 id="REASONING">REASONING</h2>
@@ -71,14 +72,18 @@ feeling good about the interaction.</p>
they are brought to the attention of the npm registry admins, including
but not limited to:</p>
-<ol><li>Malware (that is, a module designed to exploit or harm the machine on
-which it is installed)</li><li>Violations of copyright or licenses (for example, cloning an
+<ol><li>Malware (that is, a package designed to exploit or harm the machine on
+which it is installed).</li><li>Violations of copyright or licenses (for example, cloning an
MIT-licensed program, and then removing or changing the copyright and
-license statement)</li><li>Illegal content.</li><li>&quot;Squatting&quot; on a package name that you <em>plan</em> to use, but aren&#39;t
+license statement).</li><li>Illegal content.</li><li>&quot;Squatting&quot; on a package name that you <em>plan</em> to use, but aren&#39;t
actually using. Sorry, I don&#39;t care how great the name is, or how
perfect a fit it is for the thing that someday might happen. If
someone wants to use it today, and you&#39;re just taking up space with
-an empty tarball, you&#39;re going to be evicted.</li></ol>
+an empty tarball, you&#39;re going to be evicted.</li><li>Putting empty packages in the registry. Packages must have SOME
+functionality. It can be silly, but it can&#39;t be <em>nothing</em>. (See
+also: squatting.)</li><li>Doing weird things with the registry, like using it as your own
+personal application database or otherwise putting non-packagey
+things into it.</li></ol>
<p>If you see bad behavior like this, please report it right away.</p>
diff --git a/deps/npm/lib/cache.js b/deps/npm/lib/cache.js
index 4f8fbc4fe..200744224 100644
--- a/deps/npm/lib/cache.js
+++ b/deps/npm/lib/cache.js
@@ -140,6 +140,7 @@ function read (name, ver, forceBypass, cb) {
}
readJson(jsonFile, function (er, data) {
+ er = needName(er, data)
er = needVersion(er, data)
if (er && er.code !== "ENOENT" && er.code !== "ENOTDIR") return cb(er)
if (er) return addNamed(name, ver, c)
@@ -722,6 +723,7 @@ function addNameVersion (name, ver, data, cb) {
if (!er) readJson( path.join( npm.cache, name, ver
, "package", "package.json" )
, function (er, data) {
+ er = needName(er, data)
er = needVersion(er, data)
if (er && er.code !== "ENOENT" && er.code !== "ENOTDIR") return cb(er)
if (er) return fetchit()
@@ -1011,6 +1013,7 @@ function addPlacedTarball_ (p, name, uid, gid, resolvedSum, cb) {
return cb(er)
}
readJson(path.join(folder, "package.json"), function (er, data) {
+ er = needName(er, data)
er = needVersion(er, data)
if (er) {
log.error("addPlacedTarball", "Couldn't read json in %j"
@@ -1057,6 +1060,7 @@ function addLocalDirectory (p, name, shasum, cb) {
if (p.indexOf(npm.cache) === 0) return cb(new Error(
"Adding a cache directory to the cache will make the world implode."))
readJson(path.join(p, "package.json"), function (er, data) {
+ er = needName(er, data)
er = needVersion(er, data)
if (er) return cb(er)
deprCheck(data)
@@ -1183,6 +1187,12 @@ function unlock (u, cb) {
lockFile.unlock(lockFileName(u), cb)
}
+function needName(er, data) {
+ return er ? er
+ : (data && !data.name) ? new Error("No name provided")
+ : null
+}
+
function needVersion(er, data) {
return er ? er
: (data && !data.version) ? new Error("No version provided")
diff --git a/deps/npm/man/man1/disputes.1 b/deps/npm/man/man1/disputes.1
index e5e2f194f..162b94a25 100644
--- a/deps/npm/man/man1/disputes.1
+++ b/deps/npm/man/man1/disputes.1
@@ -28,9 +28,9 @@ later, some other user wants to use that name\. Here are some common
ways that happens (each of these is based on actual events\.)
.
.IP "1" 4
-Bob writes a JavaScript module \fBfoo\fR, which is not node\-specific\.
-Bob doesn\'t use node at all\. Joe wants to use \fBfoo\fR in node, so he
-wraps it in an npm module\. Some time later, Bob starts using node,
+Joe writes a JavaScript module \fBfoo\fR, which is not node\-specific\.
+Joe doesn\'t use node at all\. Bob wants to use \fBfoo\fR in node, so he
+wraps it in an npm module\. Some time later, Joe starts using node,
and wants to take over management of his program\.
.
.IP "2" 4
@@ -75,7 +75,8 @@ the \fBfoo\fR package\.
.
.IP "3" 4
After a reasonable amount of time, if Bob has not responded, or if
-Bob and Joe can\'t come to any sort of resolution, email isaacs \fIi@izs\.me\fR and we\'ll sort it out\.
+Bob and Joe can\'t come to any sort of resolution, email isaacs \fIi@izs\.me\fR and we\'ll sort it out\. ("Reasonable" is usually about 4
+weeks, but extra time is allowed around common holidays\.)
.
.IP "" 0
.
@@ -99,13 +100,13 @@ they are brought to the attention of the npm registry admins, including
but not limited to:
.
.IP "1" 4
-Malware (that is, a module designed to exploit or harm the machine on
-which it is installed)
+Malware (that is, a package designed to exploit or harm the machine on
+which it is installed)\.
.
.IP "2" 4
Violations of copyright or licenses (for example, cloning an
MIT\-licensed program, and then removing or changing the copyright and
-license statement)
+license statement)\.
.
.IP "3" 4
Illegal content\.
@@ -117,6 +118,16 @@ perfect a fit it is for the thing that someday might happen\. If
someone wants to use it today, and you\'re just taking up space with
an empty tarball, you\'re going to be evicted\.
.
+.IP "5" 4
+Putting empty packages in the registry\. Packages must have SOME
+functionality\. It can be silly, but it can\'t be \fInothing\fR\|\. (See
+also: squatting\.)
+.
+.IP "6" 4
+Doing weird things with the registry, like using it as your own
+personal application database or otherwise putting non\-packagey
+things into it\.
+.
.IP "" 0
.
.P
diff --git a/deps/npm/node_modules/lru-cache/README.md b/deps/npm/node_modules/lru-cache/README.md
index ac48e49ac..03ee0f985 100644
--- a/deps/npm/node_modules/lru-cache/README.md
+++ b/deps/npm/node_modules/lru-cache/README.md
@@ -26,7 +26,8 @@ away.
## Options
-* `max` The maximum number of items. Not setting this is kind of
+* `max` The maximum size of the cache, checked by applying the length
+ function to all values in the cache. Not setting this is kind of
silly, since that's the whole purpose of this lib, but it defaults
to `Infinity`.
* `maxAge` Maximum age in ms. Items are not pro-actively pruned out
@@ -59,6 +60,15 @@ away.
Both of these will update the "recently used"-ness of the key.
They do what you think.
+* `peek(key)`
+
+ Returns the key value (or `undefined` if not found) without
+ updating the "recently used"-ness of the key.
+
+ (If you find yourself using this a lot, you *might* be using the
+ wrong sort of data structure, but there are some use cases where
+ it's handy.)
+
* `del(key)`
Deletes a key out of the cache.
diff --git a/deps/npm/node_modules/lru-cache/lib/lru-cache.js b/deps/npm/node_modules/lru-cache/lib/lru-cache.js
index b8fd86085..8c80853fd 100644
--- a/deps/npm/node_modules/lru-cache/lib/lru-cache.js
+++ b/deps/npm/node_modules/lru-cache/lib/lru-cache.js
@@ -48,6 +48,7 @@ function LRUCache (options) {
var cache = Object.create(null) // hash of items by key
, lruList = Object.create(null) // list of items in order of use recency
, mru = 0 // most recently used
+ , lru = 0 // least recently used
, length = 0 // number of items in the list
, itemCount = 0
@@ -138,6 +139,7 @@ function LRUCache (options) {
}
cache = {}
lruList = {}
+ lru = 0
mru = 0
length = 0
itemCount = 0
@@ -191,38 +193,54 @@ function LRUCache (options) {
}
this.get = function (key) {
- if (!hOP(cache, key)) return
+ return get(key, true)
+ }
+
+ this.peek = function (key) {
+ return get(key, false)
+ }
+
+ function get (key, doUse) {
var hit = cache[key]
- if (maxAge && (Date.now() - hit.now > maxAge)) {
- this.del(key)
- return allowStale ? hit.value : undefined
+ if (hit) {
+ if (maxAge && (Date.now() - hit.now > maxAge)) {
+ del(hit)
+ if (!allowStale) hit = undefined
+ } else {
+ if (doUse) use(hit)
+ }
+ if (hit) hit = hit.value
}
- delete lruList[hit.lu]
+ return hit
+ }
+
+ function use (hit) {
+ shiftLU(hit)
hit.lu = mru ++
lruList[hit.lu] = hit
- return hit.value
}
this.del = function (key) {
- if (!hOP(cache, key)) return
- var hit = cache[key]
- if (dispose) dispose(key, hit.value)
- delete cache[key]
- delete lruList[hit.lu]
- length -= hit.length
- itemCount --
+ del(cache[key])
}
function trim () {
- if (length <= max) return
- for (var k in lruList) {
- if (length <= max) break;
- var hit = lruList[k]
+ while (lru < mru && length > max)
+ del(lruList[lru])
+ }
+
+ function shiftLU(hit) {
+ delete lruList[ hit.lu ]
+ while (lru < mru && !lruList[lru]) lru ++
+ }
+
+ function del(hit) {
+ if (hit) {
if (dispose) dispose(hit.key, hit.value)
length -= hit.length
itemCount --
delete cache[ hit.key ]
- delete lruList[k]
+ shiftLU(hit)
}
}
}
diff --git a/deps/npm/node_modules/lru-cache/package.json b/deps/npm/node_modules/lru-cache/package.json
index b0ee3f93a..d5a4e8c6d 100644
--- a/deps/npm/node_modules/lru-cache/package.json
+++ b/deps/npm/node_modules/lru-cache/package.json
@@ -1,7 +1,7 @@
{
"name": "lru-cache",
"description": "A cache object that deletes the least-recently-used items.",
- "version": "2.2.2",
+ "version": "2.3.0",
"author": {
"name": "Isaac Z. Schlueter",
"email": "i@izs.me"
@@ -15,7 +15,8 @@
"url": "git://github.com/isaacs/node-lru-cache.git"
},
"devDependencies": {
- "tap": ""
+ "tap": "",
+ "weak": ""
},
"license": {
"type": "MIT",
@@ -51,8 +52,8 @@
"email": "jesse.dailey@gmail.com"
}
],
- "readme": "# lru cache\n\nA cache object that deletes the least-recently-used items.\n\n## Usage:\n\n```javascript\nvar LRU = require(\"lru-cache\")\n , options = { max: 500\n , length: function (n) { return n * 2 }\n , dispose: function (key, n) { n.close() }\n , maxAge: 1000 * 60 * 60 }\n , cache = LRU(options)\n , otherCache = LRU(50) // sets just the max size\n\ncache.set(\"key\", \"value\")\ncache.get(\"key\") // \"value\"\n\ncache.reset() // empty the cache\n```\n\nIf you put more stuff in it, then items will fall out.\n\nIf you try to put an oversized thing in it, then it'll fall out right\naway.\n\n## Options\n\n* `max` The maximum number of items. Not setting this is kind of\n silly, since that's the whole purpose of this lib, but it defaults\n to `Infinity`.\n* `maxAge` Maximum age in ms. Items are not pro-actively pruned out\n as they age, but if you try to get an item that is too old, it'll\n drop it and return undefined instead of giving it to you.\n* `length` Function that is used to calculate the length of stored\n items. If you're storing strings or buffers, then you probably want\n to do something like `function(n){return n.length}`. The default is\n `function(n){return 1}`, which is fine if you want to store `n`\n like-sized things.\n* `dispose` Function that is called on items when they are dropped\n from the cache. This can be handy if you want to close file\n descriptors or do other cleanup tasks when items are no longer\n accessible. Called with `key, value`. It's called *before*\n actually removing the item from the internal cache, so if you want\n to immediately put it back in, you'll have to do that in a\n `nextTick` or `setTimeout` callback or it won't do anything.\n* `stale` By default, if you set a `maxAge`, it'll only actually pull\n stale items out of the cache when you `get(key)`. (That is, it's\n not pre-emptively doing a `setTimeout` or anything.) If you set\n `stale:true`, it'll return the stale value before deleting it. If\n you don't set this, then it'll return `undefined` when you try to\n get a stale entry, as if it had already been deleted.\n\n## API\n\n* `set(key, value)`\n* `get(key) => value`\n\n Both of these will update the \"recently used\"-ness of the key.\n They do what you think.\n\n* `del(key)`\n\n Deletes a key out of the cache.\n\n* `reset()`\n\n Clear the cache entirely, throwing away all values.\n\n* `has(key)`\n\n Check if a key is in the cache, without updating the recent-ness\n or deleting it for being stale.\n\n* `forEach(function(value,key,cache), [thisp])`\n\n Just like `Array.prototype.forEach`. Iterates over all the keys\n in the cache, in order of recent-ness. (Ie, more recently used\n items are iterated over first.)\n\n* `keys()`\n\n Return an array of the keys in the cache.\n\n* `values()`\n\n Return an array of the values in the cache.\n",
+ "readme": "# lru cache\n\nA cache object that deletes the least-recently-used items.\n\n## Usage:\n\n```javascript\nvar LRU = require(\"lru-cache\")\n , options = { max: 500\n , length: function (n) { return n * 2 }\n , dispose: function (key, n) { n.close() }\n , maxAge: 1000 * 60 * 60 }\n , cache = LRU(options)\n , otherCache = LRU(50) // sets just the max size\n\ncache.set(\"key\", \"value\")\ncache.get(\"key\") // \"value\"\n\ncache.reset() // empty the cache\n```\n\nIf you put more stuff in it, then items will fall out.\n\nIf you try to put an oversized thing in it, then it'll fall out right\naway.\n\n## Options\n\n* `max` The maximum size of the cache, checked by applying the length\n function to all values in the cache. Not setting this is kind of\n silly, since that's the whole purpose of this lib, but it defaults\n to `Infinity`.\n* `maxAge` Maximum age in ms. Items are not pro-actively pruned out\n as they age, but if you try to get an item that is too old, it'll\n drop it and return undefined instead of giving it to you.\n* `length` Function that is used to calculate the length of stored\n items. If you're storing strings or buffers, then you probably want\n to do something like `function(n){return n.length}`. The default is\n `function(n){return 1}`, which is fine if you want to store `n`\n like-sized things.\n* `dispose` Function that is called on items when they are dropped\n from the cache. This can be handy if you want to close file\n descriptors or do other cleanup tasks when items are no longer\n accessible. Called with `key, value`. It's called *before*\n actually removing the item from the internal cache, so if you want\n to immediately put it back in, you'll have to do that in a\n `nextTick` or `setTimeout` callback or it won't do anything.\n* `stale` By default, if you set a `maxAge`, it'll only actually pull\n stale items out of the cache when you `get(key)`. (That is, it's\n not pre-emptively doing a `setTimeout` or anything.) If you set\n `stale:true`, it'll return the stale value before deleting it. If\n you don't set this, then it'll return `undefined` when you try to\n get a stale entry, as if it had already been deleted.\n\n## API\n\n* `set(key, value)`\n* `get(key) => value`\n\n Both of these will update the \"recently used\"-ness of the key.\n They do what you think.\n\n* `peek(key)`\n\n Returns the key value (or `undefined` if not found) without\n updating the \"recently used\"-ness of the key.\n\n (If you find yourself using this a lot, you *might* be using the\n wrong sort of data structure, but there are some use cases where\n it's handy.)\n\n* `del(key)`\n\n Deletes a key out of the cache.\n\n* `reset()`\n\n Clear the cache entirely, throwing away all values.\n\n* `has(key)`\n\n Check if a key is in the cache, without updating the recent-ness\n or deleting it for being stale.\n\n* `forEach(function(value,key,cache), [thisp])`\n\n Just like `Array.prototype.forEach`. Iterates over all the keys\n in the cache, in order of recent-ness. (Ie, more recently used\n items are iterated over first.)\n\n* `keys()`\n\n Return an array of the keys in the cache.\n\n* `values()`\n\n Return an array of the values in the cache.\n",
"readmeFilename": "README.md",
- "_id": "lru-cache@2.2.2",
+ "_id": "lru-cache@2.3.0",
"_from": "lru-cache@latest"
}
diff --git a/deps/npm/node_modules/lru-cache/s.js b/deps/npm/node_modules/lru-cache/s.js
new file mode 100644
index 000000000..c2a9e548f
--- /dev/null
+++ b/deps/npm/node_modules/lru-cache/s.js
@@ -0,0 +1,25 @@
+var LRU = require('lru-cache');
+
+var max = +process.argv[2] || 10240;
+var more = 1024;
+
+var cache = LRU({
+ max: max, maxAge: 86400e3
+});
+
+// fill cache
+for (var i = 0; i < max; ++i) {
+ cache.set(i, {});
+}
+
+var start = process.hrtime();
+
+// adding more items
+for ( ; i < max+more; ++i) {
+ cache.set(i, {});
+}
+
+var end = process.hrtime(start);
+var msecs = end[0] * 1E3 + end[1] / 1E6;
+
+console.log('adding %d items took %d ms', more, msecs.toPrecision(5));
diff --git a/deps/npm/node_modules/lru-cache/test/basic.js b/deps/npm/node_modules/lru-cache/test/basic.js
index dad13a894..70f3f8beb 100644
--- a/deps/npm/node_modules/lru-cache/test/basic.js
+++ b/deps/npm/node_modules/lru-cache/test/basic.js
@@ -299,3 +299,31 @@ test("stale", function(t) {
t.end()
}, 15)
})
+
+test("lru update via set", function(t) {
+ var cache = LRU({ max: 2 });
+
+ cache.set('foo', 1);
+ cache.set('bar', 2);
+ cache.del('bar');
+ cache.set('baz', 3);
+ cache.set('qux', 4);
+
+ t.equal(cache.get('foo'), undefined)
+ t.equal(cache.get('bar'), undefined)
+ t.equal(cache.get('baz'), 3)
+ t.equal(cache.get('qux'), 4)
+ t.end()
+})
+
+test("least recently set w/ peek", function (t) {
+ var cache = new LRU(2)
+ cache.set("a", "A")
+ cache.set("b", "B")
+ t.equal(cache.peek("a"), "A")
+ cache.set("c", "C")
+ t.equal(cache.get("c"), "C")
+ t.equal(cache.get("b"), "B")
+ t.equal(cache.get("a"), undefined)
+ t.end()
+})
diff --git a/deps/npm/node_modules/node-gyp/addon.gypi b/deps/npm/node_modules/node-gyp/addon.gypi
index 5f7415516..065b975d4 100644
--- a/deps/npm/node_modules/node-gyp/addon.gypi
+++ b/deps/npm/node_modules/node-gyp/addon.gypi
@@ -12,7 +12,12 @@
['_type=="loadable_module"', {
'product_extension': 'node',
'defines': [ 'BUILDING_NODE_EXTENSION' ],
- }]
+ }],
+ ['_type=="static_library"', {
+ # set to `1` to *disable* the -T thin archive 'ld' flag.
+ # older linkers don't support this flag.
+ 'standalone_static_library': '<(standalone_static_library)'
+ }],
],
'conditions': [
diff --git a/deps/npm/node_modules/node-gyp/lib/build.js b/deps/npm/node_modules/node-gyp/lib/build.js
index ec3b9e04d..bf2716984 100644
--- a/deps/npm/node_modules/node-gyp/lib/build.js
+++ b/deps/npm/node_modules/node-gyp/lib/build.js
@@ -119,22 +119,33 @@ function build (gyp, argv, callback) {
function findMsbuild () {
log.verbose('could not find "msbuild.exe" in PATH - finding location in registry')
var notfoundErr = new Error('Can\'t find "msbuild.exe". Do you have Microsoft Visual Studio C++ 2008+ installed?')
- exec('reg query "HKLM\\Software\\Microsoft\\MSBuild\\ToolsVersions" /s', function (err, stdout, stderr) {
- var reVers = /Software\\Microsoft\\MSBuild\\ToolsVersions\\([^\r]+)\r\n\s+MSBuildToolsPath\s+REG_SZ\s+([^\r]+)/gi
+ var cmd = 'reg query "HKLM\\Software\\Microsoft\\MSBuild\\ToolsVersions" /s'
+ if (process.arch !== 'ia32')
+ cmd += ' /reg:32'
+ exec(cmd, function (err, stdout, stderr) {
+ var reVers = /ToolsVersions\\([^\\]+)$/i
+ , rePath = /\r\n[ \t]+MSBuildToolsPath[ \t]+REG_SZ[ \t]+([^\r]+)/i
, msbuilds = []
, r
, msbuildPath
if (err) {
return callback(notfoundErr)
}
- while (r = reVers.exec(stdout)) {
- if (parseFloat(r[1], 10) >= 3.5) {
- msbuilds.push({
- version: parseFloat(r[1], 10),
- path: r[2]
- })
+ stdout.split('\r\n\r\n').forEach(function(l) {
+ if (!l) return
+ l = l.trim()
+ if (r = reVers.exec(l.substring(0, l.indexOf('\r\n')))) {
+ var ver = parseFloat(r[1], 10)
+ if (ver >= 3.5) {
+ if (r = rePath.exec(l)) {
+ msbuilds.push({
+ version: ver,
+ path: r[1]
+ })
+ }
+ }
}
- }
+ })
msbuilds.sort(function (x, y) {
return (x.version < y.version ? -1 : 1)
})
diff --git a/deps/npm/node_modules/node-gyp/lib/configure.js b/deps/npm/node_modules/node-gyp/lib/configure.js
index e3200998f..437b839ca 100644
--- a/deps/npm/node_modules/node-gyp/lib/configure.js
+++ b/deps/npm/node_modules/node-gyp/lib/configure.js
@@ -14,7 +14,6 @@ var fs = require('graceful-fs')
, semver = require('semver')
, mkdirp = require('mkdirp')
, cp = require('child_process')
- , exec = cp.exec
, spawn = cp.spawn
, execFile = cp.execFile
, win = process.platform == 'win32'
@@ -91,7 +90,8 @@ function configure (gyp, argv, callback) {
}
function checkPythonVersion () {
- execFile(python, ['-c', 'import platform; print(platform.python_version());'], function (err, stdout) {
+ var env = { TERM: 'dumb', PATH: process.env.PATH };
+ execFile(python, ['-c', 'import platform; print(platform.python_version());'], { env: env }, function (err, stdout) {
if (err) {
return callback(err)
}
@@ -166,11 +166,7 @@ function configure (gyp, argv, callback) {
var cp = spawn('cmd', ['/C', '%WINDIR%\\SysWOW64\\reg', 'query', 'HKLM\\Software\\Microsoft\\VCExpress\\10.0\\Setup\\VC', '/v', 'ProductDir'])
cp.on('exit', function (code) {
hasVCExpress = (code === 0)
- if (code !== 0) {
- checkVC2012Express(cb)
- } else {
- cb()
- }
+ checkVC2012Express(cb)
})
}
@@ -180,7 +176,7 @@ function configure (gyp, argv, callback) {
if (code !== 0) {
checkVCExpress64(cb)
} else {
- cb()
+ checkVC2012Express(cb)
}
})
}
@@ -291,6 +287,9 @@ function configure (gyp, argv, callback) {
// don't copy dev libraries with nodedir option
variables.copy_dev_lib = !gyp.opts.nodedir
+ // disable -T "thin" static archives by default
+ variables.standalone_static_library = gyp.opts.thin ? 0 : 1;
+
// loop through the rest of the opts and add the unknown ones as variables.
// this allows for module-specific configure flags like:
//
diff --git a/deps/npm/node_modules/node-gyp/lib/install.js b/deps/npm/node_modules/node-gyp/lib/install.js
index ffa6076c6..d6b7c4201 100644
--- a/deps/npm/node_modules/node-gyp/lib/install.js
+++ b/deps/npm/node_modules/node-gyp/lib/install.js
@@ -38,7 +38,7 @@ function install (gyp, argv, callback) {
}
}
- var distUrl = gyp.opts['dist-url'] || 'http://nodejs.org/dist'
+ var distUrl = gyp.opts['dist-url'] || gyp.opts.disturl || 'http://nodejs.org/dist'
// Determine which node dev files version we are installing
diff --git a/deps/npm/node_modules/node-gyp/lib/node-gyp.js b/deps/npm/node_modules/node-gyp/lib/node-gyp.js
index 9a88b21ff..fae8e1391 100644
--- a/deps/npm/node_modules/node-gyp/lib/node-gyp.js
+++ b/deps/npm/node_modules/node-gyp/lib/node-gyp.js
@@ -86,6 +86,7 @@ proto.configDefs = {
, python: String // 'configure'
, 'dist-url': String // 'install'
, jobs: String // 'build'
+ , thin: String // 'configure'
}
/**
diff --git a/deps/npm/node_modules/node-gyp/package.json b/deps/npm/node_modules/node-gyp/package.json
index 97fd17c09..3a785f236 100644
--- a/deps/npm/node_modules/node-gyp/package.json
+++ b/deps/npm/node_modules/node-gyp/package.json
@@ -10,7 +10,7 @@
"bindings",
"gyp"
],
- "version": "0.8.5",
+ "version": "0.9.3",
"installVersion": 9,
"author": {
"name": "Nathan Rajlich",
@@ -29,16 +29,16 @@
"dependencies": {
"glob": "3",
"graceful-fs": "1",
- "fstream": "~0.1.13",
- "minimatch": "0.2",
- "mkdirp": "0.3",
+ "fstream": "0",
+ "minimatch": "0",
+ "mkdirp": "0",
"nopt": "2",
"npmlog": "0",
"osenv": "0",
- "request": "2.9",
+ "request": "2",
"rimraf": "2",
"semver": "1",
- "tar": "~0.1.12",
+ "tar": "0",
"which": "1"
},
"engines": {
@@ -46,6 +46,10 @@
},
"readme": "node-gyp\n=========\n### Node.js native addon build tool\n\n`node-gyp` is a cross-platform command-line tool written in Node.js for compiling\nnative addon modules for Node.js, which takes away the pain of dealing with the\nvarious differences in build platforms. It is the replacement to the `node-waf`\nprogram which is removed for node `v0.8`. If you have a native addon for node that\nstill has a `wscript` file, then you should definitely add a `binding.gyp` file\nto support the latest versions of node.\n\nMultiple target versions of node are supported (i.e. `0.6`, `0.7`,..., `1.0`,\netc.), regardless of what version of node is actually installed on your system\n(`node-gyp` downloads the necessary development files for the target version).\n\n#### Features:\n\n * Easy to use, consistent interface\n * Same commands to build your module on every platform\n * Supports multiple target versions of Node\n\n\nInstallation\n------------\n\nYou can install with `npm`:\n\n``` bash\n$ npm install -g node-gyp\n```\n\nYou will also need to install:\n\n * On Unix:\n * `python`\n * `make`\n * A proper C/C++ compiler toolchain, like GCC\n * On Windows:\n * [Python][windows-python] ([`v2.7.3`][windows-python-v2.7.3] recommended, `v3.x.x` is __*not*__ supported)\n * Windows XP/Vista/7:\n * Microsoft Visual Studio C++ 2010 ([Express][msvc2010] version works well)\n * For 64-bit builds of node and native modules you will _**also**_ need the [Windows 7 64-bit SDK][win7sdk]\n * If the install fails, try uninstalling any C++ 2010 x64&x86 Redistributable that you have installed first.\n * If you get errors that the 64-bit compilers are not installed you may also need the [compiler update for the Windows SDK 7.1]\n * Windows 8:\n * Microsoft Visual Studio C++ 2012 for Windows Desktop ([Express][msvc2012] version works well)\n\nNote that OS X is just a flavour of Unix and so needs `python`, `make`, and C/C++.\nAn easy way to obtain these is to install XCode from Apple,\nand then use it to install the command line tools (under Preferences -> Downloads).\n\nHow to Use\n----------\n\nTo compile your native addon, first go to its root directory:\n\n``` bash\n$ cd my_node_addon\n```\n\nThe next step is to generate the appropriate project build files for the current\nplatform. Use `configure` for that:\n\n``` bash\n$ node-gyp configure\n```\n\n__Note__: The `configure` step looks for the `binding.gyp` file in the current\ndirectory to processs. See below for instructions on creating the `binding.gyp` file.\n\nNow you will have either a `Makefile` (on Unix platforms) or a `vcxproj` file\n(on Windows) in the `build/` directory. Next invoke the `build` command:\n\n``` bash\n$ node-gyp build\n```\n\nNow you have your compiled `.node` bindings file! The compiled bindings end up\nin `build/Debug/` or `build/Release/`, depending on the build mode. At this point\nyou can require the `.node` file with Node and run your tests!\n\n__Note:__ To create a _Debug_ build of the bindings file, pass the `--debug` (or\n`-d`) switch when running the either `configure` or `build` command.\n\n\nThe \"binding.gyp\" file\n----------------------\n\nPreviously when node had `node-waf` you had to write a `wscript` file. The\nreplacement for that is the `binding.gyp` file, which describes the configuration\nto build your module in a JSON-like format. This file gets placed in the root of\nyour package, alongside the `package.json` file.\n\nA barebones `gyp` file appropriate for building a node addon looks like:\n\n``` json\n{\n \"targets\": [\n {\n \"target_name\": \"binding\",\n \"sources\": [ \"src/binding.cc\" ]\n }\n ]\n}\n```\n\nSome additional resources for writing `gyp` files:\n\n * [\"Hello World\" node addon example](https://github.com/joyent/node/tree/master/test/addons/hello-world)\n * [gyp user documentation](http://code.google.com/p/gyp/wiki/GypUserDocumentation)\n * [gyp input format reference](http://code.google.com/p/gyp/wiki/InputFormatReference)\n * [*\"binding.gyp\" files out in the wild* wiki page](https://github.com/TooTallNate/node-gyp/wiki/%22binding.gyp%22-files-out-in-the-wild)\n\n\nCommands\n--------\n\n`node-gyp` responds to the following commands:\n\n| **Command** | **Description**\n|:--------------|:---------------------------------------------------------------\n| `build` | Invokes `make`/`msbuild.exe` and builds the native addon\n| `clean` | Removes any the `build` dir if it exists\n| `configure` | Generates project build files for the current platform\n| `rebuild` | Runs \"clean\", \"configure\" and \"build\" all in a row\n| `install` | Installs node development header files for the given version\n| `list` | Lists the currently installed node development file versions\n| `remove` | Removes the node development header files for the given version\n\n\nLicense\n-------\n\n(The MIT License)\n\nCopyright (c) 2012 Nathan Rajlich &lt;nathan@tootallnate.net&gt;\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n[windows-python]: http://www.python.org/getit/windows\n[windows-python-v2.7.3]: http://www.python.org/download/releases/2.7.3#download\n[msvc2010]: http://go.microsoft.com/?linkid=9709949\n[msvc2012]: http://go.microsoft.com/?linkid=9816758\n[win7sdk]: http://www.microsoft.com/en-us/download/details.aspx?id=8279\n[compiler update for the Windows SDK 7.1]: http://www.microsoft.com/en-us/download/details.aspx?id=4422\n",
"readmeFilename": "README.md",
- "_id": "node-gyp@0.8.5",
- "_from": "node-gyp@latest"
+ "_id": "node-gyp@0.9.3",
+ "dist": {
+ "shasum": "575868f6bded377c5904e8acffb4921d2f077fbe"
+ },
+ "_from": "node-gyp@0.9.3",
+ "_resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-0.9.3.tgz"
}
diff --git a/deps/npm/node_modules/tar/package.json b/deps/npm/node_modules/tar/package.json
index 9959135dd..36eae3de6 100644
--- a/deps/npm/node_modules/tar/package.json
+++ b/deps/npm/node_modules/tar/package.json
@@ -6,7 +6,7 @@
},
"name": "tar",
"description": "tar for node",
- "version": "0.1.16",
+ "version": "0.1.17",
"repository": {
"type": "git",
"url": "git://github.com/isaacs/node-tar.git"
@@ -15,9 +15,6 @@
"scripts": {
"test": "tap test/*.js"
},
- "engines": {
- "node": "~0.5.9 || 0.6 || 0.7 || 0.8"
- },
"dependencies": {
"inherits": "1.x",
"block-stream": "*",
@@ -30,6 +27,10 @@
"license": "BSD",
"readme": "# node-tar\n\nTar for Node.js.\n\n## Goals of this project\n\n1. Be able to parse and reasonably extract the contents of any tar file\n created by any program that creates tar files, period.\n\n At least, this includes every version of:\n\n * bsdtar\n * gnutar\n * solaris posix tar\n * Joerg Schilling's star (\"Schilly tar\")\n\n2. Create tar files that can be extracted by any of the following tar\n programs:\n\n * bsdtar/libarchive version 2.6.2\n * gnutar 1.15 and above\n * SunOS Posix tar\n * Joerg Schilling's star (\"Schilly tar\")\n\n3. 100% test coverage. Speed is important. Correctness is slightly\n more important.\n\n4. Create the kind of tar interface that Node users would want to use.\n\n5. Satisfy npm's needs for a portable tar implementation with a\n JavaScript interface.\n\n6. No excuses. No complaining. No tolerance for failure.\n\n## But isn't there already a tar.js?\n\nYes, there are a few. This one is going to be better, and it will be\nfanatically maintained, because npm will depend on it.\n\nThat's why I need to write it from scratch. Creating and extracting\ntarballs is such a large part of what npm does, I simply can't have it\nbe a black box any longer.\n\n## Didn't you have something already? Where'd it go?\n\nIt's in the \"old\" folder. It's not functional. Don't use it.\n\nIt was a useful exploration to learn the issues involved, but like most\nsoftware of any reasonable complexity, node-tar won't be useful until\nit's been written at least 3 times.\n",
"readmeFilename": "README.md",
- "_id": "tar@0.1.16",
- "_from": "tar@~0.1.12"
+ "_id": "tar@0.1.17",
+ "dist": {
+ "shasum": "408c8a95deb8e78a65b59b1a51a333183a32badc"
+ },
+ "_from": "tar@0.1.17",
+ "_resolved": "https://registry.npmjs.org/tar/-/tar-0.1.17.tgz"
}
diff --git a/deps/npm/node_modules/tar/test/pack.js b/deps/npm/node_modules/tar/test/pack.js
index 8be4178bb..0f5099458 100644
--- a/deps/npm/node_modules/tar/test/pack.js
+++ b/deps/npm/node_modules/tar/test/pack.js
@@ -50,8 +50,7 @@ var tap = require("tap")
"NODETAR.repository.type": pkg.repository.type,
"NODETAR.repository.url": pkg.repository.url,
"NODETAR.main": pkg.main,
- "NODETAR.scripts.test": pkg.scripts.test,
- "NODETAR.engines.node": pkg.engines.node } ]
+ "NODETAR.scripts.test": pkg.scripts.test } ]
, [ 'entry',
{ path: 'fixtures/',
diff --git a/deps/npm/package.json b/deps/npm/package.json
index 8c9999a7b..b77c0753c 100644
--- a/deps/npm/package.json
+++ b/deps/npm/package.json
@@ -44,14 +44,14 @@
"rimraf": "2",
"request": "~2.9",
"which": "1",
- "tar": "~0.1.12",
+ "tar": "~0.1.17",
"fstream": "~0.1.22",
"block-stream": "*",
"inherits": "1",
"mkdirp": "~0.3.3",
"read": "~1.0.4",
- "lru-cache": "~2.2.2",
- "node-gyp": "~0.8.5",
+ "lru-cache": "~2.3.0",
+ "node-gyp": "~0.9.3",
"fstream-npm": "~0.1.3",
"uid-number": "0",
"archy": "0",