This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

@@ -1,5 +1,5 @@
{
"version": "1.3.23",
"version": "1.3.25",
"name": "npm",
"publishConfig": {
"proprietary-attribs": false
@@ -50,23 +50,23 @@
"mkdirp": "~0.3.5",
"read": "~1.0.4",
"lru-cache": "~2.5.0",
"node-gyp": "~0.12.0",
"node-gyp": "~0.12.2",
"fstream-npm": "~0.1.6",
"uid-number": "0",
"archy": "0",
"chownr": "0",
"npmlog": "0.0.6",
"ansi": "~0.2.1",
"npm-registry-client": "~0.3.2",
"read-package-json": "~1.1.4",
"npm-registry-client": "~0.3.3",
"read-package-json": "~1.1.6",
"read-installed": "~0.2.2",
"glob": "~3.2.6",
"init-package-json": "0.0.14",
"osenv": "0",
"lockfile": "~0.4.0",
"retry": "~0.6.0",
"once": "~1.3.0",
"npmconf": "~0.1.7",
"npmconf": "~0.1.12",
"opener": "~1.3.0",
"chmodr": "~0.1.0",
"cmd-shim": "~1.1.1",
@@ -79,7 +79,8 @@
"text-table": "~0.2.0",
"ansicolors": "~0.3.2",
"ansistyles": "~0.1.3",
"path-is-inside": "~1.0.0"
"path-is-inside": "~1.0.0",
"columnify": "0.1.2"
},
"bundleDependencies": [
"semver",
@@ -129,7 +130,8 @@
"text-table",
"ansicolors",
"ansistyles",
"path-is-inside"
"path-is-inside",
"columnify"
],
"devDependencies": {
"ronn": "~0.3.6",
@@ -0,0 +1,125 @@
var common = require('../common-tap.js')
var test = require('tap').test
var osenv = require('osenv')
var npm = require.resolve("../../bin/npm-cli.js")
var node = process.execPath
var path = require('path')
var fs = require('fs')
var rimraf = require('rimraf')
var mkdirp = require('mkdirp')
var pkg = path.resolve(__dirname, 'ignore-install-link')
var spawn = require('child_process').spawn
var linkDir = path.resolve(osenv.tmpdir(), 'npm-link-issue')

test('ignore-install-link: ignore install if a package is linked', function(t) {
setup(function(err) {
if (err) {
t.ifError(err)
t.end()
return
}

var p = path.resolve(pkg, 'node_modules', 'npm-link-issue')
fs.lstat(p, function(err, s) {
t.ifError(err)

t.ok(true === s.isSymbolicLink(), 'child is a symlink')
t.end()
})
})
})

test('cleanup', function(t) {
process.chdir(osenv.tmpdir())
rimraf.sync(pkg)
rimraf.sync(linkDir)
t.end()
})


function setup(cb) {
rimraf.sync(linkDir)
mkdirp.sync(pkg)
mkdirp.sync(path.resolve(pkg, 'cache'))
mkdirp.sync(path.resolve(pkg, 'node_modules'))
mkdirp.sync(linkDir)
fs.writeFileSync(path.resolve(pkg, 'package.json'), JSON.stringify({
author: 'Evan Lucas',
name: 'ignore-install-link',
version: '0.0.0',
description: 'Test for ignoring install when a package has been linked',
dependencies: {
'npm-link-issue': 'git+https://github.com/lancefisher/npm-link-issue.git#0.0.1'
}
}), 'utf8')
fs.writeFileSync(path.resolve(linkDir, 'package.json'), JSON.stringify({
author: 'lancefisher',
name: 'npm-link-issue',
version: '0.0.1',
description: 'Sample Dependency'
}), 'utf8')

clone(cb)
}

function clone (cb) {
var child = createChild(process.cwd(), 'git', ['--git-dir', linkDir, 'init'])
child.on('close', function(c) {
if (c !== 0)
return cb(new Error('Failed to init the git repository'))

console.log('Successfully inited the git repository')
process.chdir(linkDir)
performLink(cb)
})
}

function performLink (cb) {
var child = createChild(linkDir, node, [npm, 'link', '.'])
child.on('close', function(c) {
if (c !== 0)
return cb(new Error('Failed to link ' + linkDir + ' globally'))

console.log('Successfully linked ' + linkDir + ' globally')
performLink2(cb)
})
}

function performLink2 (cb) {
var child = createChild(pkg, node, [npm, 'link', 'npm-link-issue'])
child.on('close', function(c) {
if (c !== 0)
return cb(new Error('Failed to link ' + linkDir + ' to local node_modules'))

console.log('Successfully linked ' + linkDir + ' to local node_modules')
performInstall(cb)
})
}

function performInstall (cb) {
var child = createChild(pkg, node, [npm, 'install'])
child.on('close', function(c) {
if (c !== 0)
return cb(new Error('Failed to install'))

console.log('Successfully installed')
cb()
})
}

function createChild (cwd, cmd, args) {
var env = {
HOME: process.env.HOME,
Path: process.env.PATH,
PATH: process.env.PATH
}

if (process.platform === "win32")
env.npm_config_cache = "%APPDATA%\\npm-cache"

return spawn(cmd, args, {
cwd: cwd,
stdio: "inherit",
env: env
})
}
@@ -12,12 +12,13 @@ mkdirp.sync(pkg + "/cache")

test("dicovers new versions in outdated", function (t) {
process.chdir(pkg)
t.plan(3)
t.plan(4)
npm.load({cache: pkg + "/cache", registry: common.registry}, function () {
npm.outdated(function (er, d) {
t.equal('git', d[0][3])
t.equal('git', d[0][4])
t.equal('git://github.com/robertkowalski/foo-private.git', d[0][5])
t.equal('git://user:pass@github.com/robertkowalski/foo-private.git', d[1][5])
})
})
})
@@ -5,6 +5,7 @@
"version": "0.0.1",
"main": "index.js",
"dependencies": {
"foo-private": "git://github.com/robertkowalski/foo-private.git"
"foo-private": "git://github.com/robertkowalski/foo-private.git",
"foo-private-credentials": "git://user:pass@github.com/robertkowalski/foo-private.git"
}
}
@@ -4,10 +4,11 @@ var common = require("../common-tap.js")
, npm = require("../../")
, mr = require("npm-registry-mock")
, path = require("path")
, osenv = require("osenv")
, spawn = require('child_process').spawn
, node = process.execPath
, npmc = require.resolve('../../')
, pkg = __dirname + '/outdated-new-versions'
, pkg = path.resolve(__dirname, 'outdated-new-versions')
, args = [ npmc
, 'outdated'
, '--json'
@@ -65,6 +66,8 @@ test("cleanup", function (t) {
})

function cleanup () {
// windows fix for locked files
process.chdir(osenv.tmpdir())
rimraf.sync(pkg + "/node_modules")
rimraf.sync(pkg + "/cache")
}
@@ -58,16 +58,21 @@ test('test', function (t) {
env: env
})
child.stdout.setEncoding('utf8')
child.stderr.on('data', function(chunk) {
throw new Error('got stderr data: ' + JSON.stringify('' + chunk))
})
child.stderr.on('data', onerr)
child.stdout.on('data', ondata)
child.on('close', onend)
var c = ''
, e = ''
function ondata (chunk) {
c += chunk
}
function onerr (chunk) {
e += chunk
}
function onend () {
if (e) {
throw new Error('got stderr data: ' + JSON.stringify('' + e))
}
c = c.trim()
var regex = new RegExp("" +
"> npm-test-prepublish@1.2.5 prepublish [^\\r\\n]+\\r?\\n" +
@@ -0,0 +1,71 @@
var test = require('tap').test
var path = require('path')
var npm = path.resolve(__dirname, '../../cli.js')
var pkg = __dirname + '/scripts-whitespace-windows'
var tmp = pkg + '/tmp'
var cache = pkg + '/cache'
var modules = pkg + '/node_modules'
var dep = pkg + '/dep'

var mkdirp = require('mkdirp')
var rimraf = require('rimraf')
var node = process.execPath
var spawn = require('child_process').spawn

test('setup', function (t) {
mkdirp.sync(cache)
mkdirp.sync(tmp)
rimraf.sync(modules)

var env = {
npm_config_cache: cache,
npm_config_tmp: tmp,
npm_config_prefix: pkg,
npm_config_global: 'false'
}

var child = spawn(node, [npm, 'i', dep], {
cwd: pkg,
env: env
})

child.stdout.setEncoding('utf8')
child.stderr.on('data', function(chunk) {
throw new Error('got stderr data: ' + JSON.stringify('' + chunk))
})
child.on('close', function () {
t.end()
})
})

test('test', function (t) {

var child = spawn(node, [npm, 'run', 'foo'], {
cwd: pkg,
env: process.env
})

child.stdout.setEncoding('utf8')
child.stderr.on('data', function(chunk) {
throw new Error('got stderr data: ' + JSON.stringify('' + chunk))
})
child.stdout.on('data', ondata)
child.on('close', onend)
var c = ''
function ondata (chunk) {
c += chunk
}
function onend () {
c = c.trim()

t.ok(/npm-test-fine/.test(c))
t.end()
}
})

test('cleanup', function (t) {
rimraf.sync(cache)
rimraf.sync(tmp)
rimraf.sync(modules)
t.end()
})
@@ -0,0 +1 @@
# Hi
@@ -0,0 +1 @@
# Hi!
@@ -0,0 +1,4 @@
#!/usr/bin/env node

if (process.argv.length === 8)
console.log('npm-test-fine')
@@ -0,0 +1,6 @@
{
"name": "scripts-whitespace-windows-dep",
"version": "0.0.1",
"bin": [ "bin/foo" ],
"repository": "git://github.com/robertkowalski/bogusfixture"
}
@@ -0,0 +1,11 @@
{
"name": "scripts-whitespace-windows",
"scripts": {
"foo": "foo --title \"Analysis of\" --recurse -d report src"
},
"description": "a test",
"repository": "git://github.com/robertkowalski/bogus",
"dependencies": {
"scripts-whitespace-windows-dep": "0.0.1"
}
}
@@ -12,20 +12,24 @@ var common = require('../common-tap')

function run (command, t, parse) {
var c = ''
, e = ''
, node = process.execPath
, child = spawn(node, [npm, command], {
cwd: pkg
})

child.stderr.on('data', function (chunk) {
throw new Error('npm ' + command + ' stderr: ' + chunk.toString())
e += chunk
})

child.stdout.on('data', function (chunk) {
c += chunk
})

child.stdout.on('end', function () {
if (e) {
throw new Error('npm ' + command + ' stderr: ' + e.toString())
}
if (parse) {
// custom parsing function
c = parse(c)
@@ -535,7 +535,7 @@ amount of data allowed on stdout or stderr - if this value is exceeded then
the child process is killed.


## child_process.execFile(file, args, options, callback)
## child_process.execFile(file, [args], [options], [callback])

* `file` {String} The filename of the program to run
* `args` {Array} List of string arguments
@@ -568,8 +568,10 @@ leaner than `child_process.exec`. It has the same options.
* `execPath` {String} Executable used to create the child process
* `execArgv` {Array} List of string arguments passed to the executable
(Default: `process.execArgv`)
* `silent` {Boolean} If true, prevent stdout and stderr in the spawned node
process from being associated with the parent's (default is false)
* `silent` {Boolean} If true, stdin, stdout, and stderr of the child will be
piped to the parent, otherwise they will be inherited from the parent, see
the "pipe" and "inherit" options for `spawn()`'s `stdio` for more details
(default is false)
* Return: ChildProcess object

This is a special case of the `spawn()` functionality for spawning Node
@@ -140,9 +140,9 @@ Note:
`SIGHUP` is to terminate node, but once a listener has been installed its
default behaviour will be removed.
- `SIGTERM` is not supported on Windows, it can be listened on.
- `SIGINT` is supported on all platforms, and can usually be generated with
`CTRL+C` (though this may be configurable). It is not generated when terminal
raw mode is enabled.
- `SIGINT` from the terminal is supported on all platforms, and can usually be
generated with `CTRL+C` (though this may be configurable). It is not generated
when terminal raw mode is enabled.
- `SIGBREAK` is delivered on Windows when `CTRL+BREAK` is pressed, on non-Windows
platforms it can be listened on, but there is no way to send or generate it.
- `SIGWINCH` is delivered when the console has been resized. On Windows, this will
@@ -152,6 +152,12 @@ Note:
node on all platforms.
- `SIGSTOP` cannot have a listener installed.

Note that Windows does not support sending Signals, but node offers some
emulation with `process.kill()`, and `child_process.kill()`:
- Sending signal `0` can be used to search for the existence of a process
- Sending `SIGINT`, `SIGTERM`, and `SIGKILL` cause the unconditional exit of the
target process.

## process.stdout

A `Writable Stream` to `stdout`.
@@ -483,7 +489,7 @@ An example of the possible output looks like:
Send a signal to a process. `pid` is the process id and `signal` is the
string describing the signal to send. Signal names are strings like
'SIGINT' or 'SIGHUP'. If omitted, the signal will be 'SIGTERM'.
See kill(2) for more information.
See [Signal Events](#process_signal_events) and kill(2) for more information.

Will throw an error if target does not exist, and as a special case, a signal of
`0` can be used to test for the existence of a process.
@@ -39,7 +39,7 @@ the following values:
treated like a TTY, and have ANSI/VT100 escape codes written to it.
Defaults to checking `isTTY` on the `output` stream upon instantiation.

The `completer` function is given a the current line entered by the user, and
The `completer` function is given the current line entered by the user, and
is supposed to return an Array with 2 entries:

1. An Array with matching entries for the completion.
@@ -0,0 +1,52 @@
title: Node.js and the Road Ahead
date: Thu Jan 16 15:00:00 PST 2014
author: Timothy J Fontaine
slug: nodejs-road-ahead

As the new project lead for Node.js I am excited for our future, and want to
give you an update on where we are.

One of Node's major goals is to provide a small core, one that provides the
right amount of surface area for consumers to achieve and innovate, without
Node itself getting in the way. That ethos is alive and well, we're going to
continue to provide a small, simple, and stable set of APIs that facilitate the
amazing uses the community finds for Node. We're going to keep providing
backward compatible APIs, so code you write today will continue to work on
future versions of Node. And of course, performance tuning and bug fixing will
always be an important part of every release cycle.

The release of Node v0.12 is imminent, and a lot of significant work has gone
into this release. There's streams3, a better keep alive agent for http, the vm
module is now based on contextify, and significant performance work done in
core features (Buffers, TLS, streams). We have a few APIs that are still being
ironed out before we can feature freeze and branch (execSync, AsyncListeners,
user definable instrumentation). We are definitely in the home stretch.

But Node is far from done. In the short term there will be new releases of v8
that we'll need to track, as well as integrating the new ABI stable C module
interface. There are interesting language features that we can use to extend
Node APIs (extend not replace). We need to write more tooling, we need to
expose more interfaces to further enable innovation. We can explore
functionality to embed Node in your existing project.

The list can go on and on. Yet, Node is larger than the software itself. Node
is also the community, the businesses, the ecosystems, and their related
events. With that in mind there are things we can work to improve.

The core team will be improving its procedures such that we can quickly and
efficiently communicate with you. We want to provide high quality and timely
responses to issues, describe our development roadmap, as well as provide our
progress during each release cycle. We know you're interested in our plans for
Node, and it's important we're able to provide that information. Communication
should be bidirectional: we want to continue to receive feedback about how
you're using Node, and what your pain points are.

After the release of v0.12 we will facilitate the community to contribute and
curate content for nodejs.org. Allowing the community to continue to invest in
Node will ensure nodejs.org is an excellent starting point and the primary
resource for tutorials, documentation, and materials regarding Node. We have an
awesome and engaged community, and they're paramount to our success.

I'm excited for Node's future, to see new and interesting use cases, and to
continue to help businesses scale and innovate with Node. We have a lot we can
accomplish together, and I look forward to seeing those results.
@@ -0,0 +1,72 @@
date: Thu Jan 23 11:43:30 PST 2014
version: 0.10.25
category: release
title: Node v0.10.25 (Stable)
slug: node-v0-10-25-stable

2014.01.23, Version 0.10.25 (Stable)

* uv: Upgrade to v0.10.23

* npm: Upgrade to v1.3.24

* v8: Fix enumeration for objects with lots of properties

* child_process: fix spawn() optional arguments (Sam Roberts)

* cluster: report more errors to workers (Fedor Indutny)

* domains: exit() only affects active domains (Ryan Graham)

* src: OnFatalError handler must abort() (Timothy J Fontaine)

* stream: writes may return false but forget to emit drain (Yang Tianyang)


Source Code: http://nodejs.org/dist/v0.10.25/node-v0.10.25.tar.gz

Macintosh Installer (Universal): http://nodejs.org/dist/v0.10.25/node-v0.10.25.pkg

Windows Installer: http://nodejs.org/dist/v0.10.25/node-v0.10.25-x86.msi

Windows x64 Installer: http://nodejs.org/dist/v0.10.25/x64/node-v0.10.25-x64.msi

Windows x64 Files: http://nodejs.org/dist/v0.10.25/x64/

Linux 32-bit Binary: http://nodejs.org/dist/v0.10.25/node-v0.10.25-linux-x86.tar.gz

Linux 64-bit Binary: http://nodejs.org/dist/v0.10.25/node-v0.10.25-linux-x64.tar.gz

Solaris 32-bit Binary: http://nodejs.org/dist/v0.10.25/node-v0.10.25-sunos-x86.tar.gz

Solaris 64-bit Binary: http://nodejs.org/dist/v0.10.25/node-v0.10.25-sunos-x64.tar.gz

Other release files: http://nodejs.org/dist/v0.10.25/

Website: http://nodejs.org/docs/v0.10.25/

Documentation: http://nodejs.org/docs/v0.10.25/api/

Shasums:
```
b347508376ceef724b464e6009ec2daead7ea572 node-v0.10.25-darwin-x64.tar.gz
f7b3c7a36b45a83360bcd9e541e64bf18ef29272 node-v0.10.25-darwin-x86.tar.gz
7c75e7e13561be1222bddd438a84a8f228fe1bc3 node-v0.10.25-linux-x64.tar.gz
16a2c861de5b27ef907dc18253fcd4f33d506662 node-v0.10.25-linux-x86.tar.gz
05bdc1cd7933ccfa95c2f1f058ff0125eacbdc2d node-v0.10.25-sunos-x64.tar.gz
250a48c9a2b6c6a8a6feebb0d7d33f96bf8d82f4 node-v0.10.25-sunos-x86.tar.gz
ce78cc8b49e339f71888f627c4e985dda0a83e27 node-v0.10.25-x86.msi
abab975e86250b51a7434d229d13b30acdf4e82e node-v0.10.25.pkg
1e330b4fbb6f7bb858a0b37d8573dd4956f40885 node-v0.10.25.tar.gz
e3779ed14a68dc6f711ead628fe11a127d09547c node.exe
35521b6142d39fa371aba7d1fda87a1836db78e4 node.exp
35eb46e5d04fdb1c1417876d1712b85eea6be03c node.lib
cc749498572b4cf4b277225404beefdd75a4e903 node.pdb
9bf1bf3a59a3f0dc0fd32f9504e8011e5b4ebc42 pkgsrc/nodejs-ia32-0.10.25.tgz
f4a6e7d561c321b917c1b6a021fe38cd330a374e pkgsrc/nodejs-x64-0.10.25.tgz
aab984860cc02e1d27a0932c4c8d34e5e3551ebf x64/node-v0.10.25-x64.msi
d2f884d75d5f30693f62625787f27fb2a8824178 x64/node.exe
75cdbe43984c9a9f6c5f1e5875fa7422c97b2d62 x64/node.exp
108c2d9dd6ecf7cad83c4cb5cd62303f51c5570a x64/node.lib
a7c37dadc994c281d08f6a55bfbd01ecf738fe66 x64/node.pdb
```
@@ -777,8 +777,16 @@ exports.execFile = function(file /* args, options, callback */) {
};


var spawn = exports.spawn = function(file, args, options) {
args = args ? args.slice(0) : [];
var spawn = exports.spawn = function(file /*, args, options*/) {
var args, options;
if (Array.isArray(arguments[1])) {
args = arguments[1].slice(0);
options = arguments[2];
} else {
args = [];
options = arguments[1];
}

args.unshift(file);

var env = (options ? options.env : null) || process.env;