From 18db2aff783b457cfd995b826ac91a52650abb44 Mon Sep 17 00:00:00 2001 From: Jackson Tian Date: Fri, 18 Dec 2015 10:57:21 +0800 Subject: [PATCH 01/37] buffer: faster case for create buffer from empty string When create Buffer from empty string will touch C++ binding also. This patch can improve edge case ~70% faster. PR-URL: https://github.com/nodejs/node/pull/4414 Reviewed-By: Trevor Norris Reviewed-By: James M Snell --- benchmark/buffers/buffer_zero.js | 15 ++++++++++----- lib/buffer.js | 4 ++++ 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/benchmark/buffers/buffer_zero.js b/benchmark/buffers/buffer_zero.js index 461378758b5951..e624bbbcd43283 100644 --- a/benchmark/buffers/buffer_zero.js +++ b/benchmark/buffers/buffer_zero.js @@ -3,16 +3,21 @@ const common = require('../common.js'); const bench = common.createBenchmark(main, { - n: [1024] + n: [1024], + type: ['buffer', 'string'] }); -const zero = new Buffer(0); +const zeroBuffer = Buffer.alloc(0); +const zeroString = ''; function main(conf) { var n = +conf.n; bench.start(); - for (let i = 0; i < n * 1024; i++) { - new Buffer(zero); - } + + if (conf.type === 'buffer') + for (let i = 0; i < n * 1024; i++) Buffer.from(zeroBuffer); + else if (conf.type === 'string') + for (let i = 0; i < n * 1024; i++) Buffer.from(zeroString); + bench.end(n); } diff --git a/lib/buffer.js b/lib/buffer.js index 4c98c0cdb52ef0..ef7176367f31be 100644 --- a/lib/buffer.js +++ b/lib/buffer.js @@ -192,6 +192,10 @@ function fromString(string, encoding) { encoding = 'utf8'; var length = byteLength(string, encoding); + + if (length === 0) + return Buffer.alloc(0); + if (length >= (Buffer.poolSize >>> 1)) return binding.createFromString(string, encoding); From 6e4d9b35308053e34d48a5db3dffe8070f678aba Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Mon, 28 Mar 2016 17:03:06 -0400 Subject: [PATCH 02/37] build: enable compilation for linuxOne MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Changes to Node core in order to allow compilation for linuxOne. The ../archs/linux32-s390x/opensslconf.h and ../archs/linux64-s390x/opensslconf.h were automatically generated by running make linux-ppc linux-ppc64 in the deps/openssl/config directory as per our standard practice After these changes we still need a version of v8 which supports linuxOne but that will be coming soon in the 5.1 version of v8. Until then with these changes we'll be able to create a hybrid build which pulls in v8 from the http://github/andrewlow repo. PR-URL: https://github.com/nodejs/node/pull/5941 Reviewed-By: Johan Bergström Reviewed-By: Ben Noordhuis --- Makefile | 8 + common.gypi | 8 + configure | 7 +- deps/openssl/config/Makefile | 3 +- .../config/archs/linux32-s390x/opensslconf.h | 270 ++++++++++++++++++ .../config/archs/linux64-s390x/opensslconf.h | 270 ++++++++++++++++++ deps/openssl/config/opensslconf.h | 8 + tools/test.py | 3 +- tools/utils.py | 2 + 9 files changed, 575 insertions(+), 4 deletions(-) create mode 100644 deps/openssl/config/archs/linux32-s390x/opensslconf.h create mode 100644 deps/openssl/config/archs/linux64-s390x/opensslconf.h diff --git a/Makefile b/Makefile index 77aef5c497dbc5..93aedc8c2722f1 100644 --- a/Makefile +++ b/Makefile @@ -332,12 +332,20 @@ else ifeq ($(DESTCPU),ppc) ARCH=ppc else +ifeq ($(DESTCPU),s390) +ARCH=s390 +else +ifeq ($(DESTCPU),s390x) +ARCH=s390x +else ARCH=x86 endif endif endif endif endif +endif +endif # node and v8 use different arch names (e.g. node 'x86' vs v8 'ia32'). # pass the proper v8 arch name to $V8_ARCH based on user-specified $DESTCPU. diff --git a/common.gypi b/common.gypi index 5b8b2c09d6b4a9..5e694bf3e26975 100644 --- a/common.gypi +++ b/common.gypi @@ -254,6 +254,14 @@ 'cflags': [ '-m64', '-mminimal-toc' ], 'ldflags': [ '-m64' ], }], + [ 'target_arch=="s390"', { + 'cflags': [ '-m31' ], + 'ldflags': [ '-m31' ], + }], + [ 'target_arch=="s390x"', { + 'cflags': [ '-m64' ], + 'ldflags': [ '-m64' ], + }], [ 'OS=="solaris"', { 'cflags': [ '-pthreads' ], 'ldflags': [ '-pthreads' ], diff --git a/configure b/configure index 2d767c77e3e819..8202fa37ecd0c8 100755 --- a/configure +++ b/configure @@ -28,7 +28,7 @@ parser = optparse.OptionParser() valid_os = ('win', 'mac', 'solaris', 'freebsd', 'openbsd', 'linux', 'android', 'aix') valid_arch = ('arm', 'arm64', 'ia32', 'mips', 'mipsel', 'ppc', 'ppc64', 'x32', - 'x64', 'x86') + 'x64', 'x86', 's390', 's390x') valid_arm_float_abi = ('soft', 'softfp', 'hard') valid_arm_fpu = ('vfp', 'vfpv3', 'vfpv3-d16', 'neon') valid_mips_arch = ('loongson', 'r1', 'r2', 'r6', 'rx') @@ -601,6 +601,8 @@ def host_arch_cc(): '__PPC64__' : 'ppc64', '__PPC__' : 'ppc', '__x86_64__' : 'x64', + '__s390__' : 's390', + '__s390x__' : 's390x', } rtn = 'ia32' # default @@ -608,7 +610,8 @@ def host_arch_cc(): for i in matchup: if i in k and k[i] != '0': rtn = matchup[i] - break + if rtn != 's390': + break return rtn diff --git a/deps/openssl/config/Makefile b/deps/openssl/config/Makefile index b56e9004c3b732..c8155b16d8dcfb 100644 --- a/deps/openssl/config/Makefile +++ b/deps/openssl/config/Makefile @@ -5,7 +5,8 @@ COPT = no-shared no-symlinks ARCHS = aix-gcc aix64-gcc BSD-x86 BSD-x86_64 VC-WIN32 \ VC-WIN64A darwin64-x86_64-cc darwin-i386-cc linux-aarch64 \ linux-armv4 linux-elf linux-x32 linux-x86_64 linux-ppc \ -linux-ppc64 solaris-x86-gcc solaris64-x86_64-gcc +linux-ppc64 linux32-s390x linux64-s390x solaris-x86-gcc \ +solaris64-x86_64-gcc CFG = opensslconf.h SRC_CFG = ../openssl/crypto/$(CFG) diff --git a/deps/openssl/config/archs/linux32-s390x/opensslconf.h b/deps/openssl/config/archs/linux32-s390x/opensslconf.h new file mode 100644 index 00000000000000..e0d0f8fa613456 --- /dev/null +++ b/deps/openssl/config/archs/linux32-s390x/opensslconf.h @@ -0,0 +1,270 @@ +/* opensslconf.h */ +/* WARNING: Generated automatically from opensslconf.h.in by Configure. */ + +#ifdef __cplusplus +extern "C" { +#endif +/* OpenSSL was configured with the following options: */ +#ifndef OPENSSL_DOING_MAKEDEPEND + + +#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 +# define OPENSSL_NO_EC_NISTP_64_GCC_128 +#endif +#ifndef OPENSSL_NO_GMP +# define OPENSSL_NO_GMP +#endif +#ifndef OPENSSL_NO_JPAKE +# define OPENSSL_NO_JPAKE +#endif +#ifndef OPENSSL_NO_KRB5 +# define OPENSSL_NO_KRB5 +#endif +#ifndef OPENSSL_NO_LIBUNBOUND +# define OPENSSL_NO_LIBUNBOUND +#endif +#ifndef OPENSSL_NO_MD2 +# define OPENSSL_NO_MD2 +#endif +#ifndef OPENSSL_NO_RC5 +# define OPENSSL_NO_RC5 +#endif +#ifndef OPENSSL_NO_RFC3779 +# define OPENSSL_NO_RFC3779 +#endif +#ifndef OPENSSL_NO_SCTP +# define OPENSSL_NO_SCTP +#endif +#ifndef OPENSSL_NO_SSL_TRACE +# define OPENSSL_NO_SSL_TRACE +#endif +#ifndef OPENSSL_NO_SSL2 +# define OPENSSL_NO_SSL2 +#endif +#ifndef OPENSSL_NO_STORE +# define OPENSSL_NO_STORE +#endif +#ifndef OPENSSL_NO_UNIT_TEST +# define OPENSSL_NO_UNIT_TEST +#endif +#ifndef OPENSSL_NO_WEAK_SSL_CIPHERS +# define OPENSSL_NO_WEAK_SSL_CIPHERS +#endif + +#endif /* OPENSSL_DOING_MAKEDEPEND */ + +#ifndef OPENSSL_THREADS +# define OPENSSL_THREADS +#endif +#ifndef OPENSSL_NO_DYNAMIC_ENGINE +# define OPENSSL_NO_DYNAMIC_ENGINE +#endif + +/* The OPENSSL_NO_* macros are also defined as NO_* if the application + asks for it. This is a transient feature that is provided for those + who haven't had the time to do the appropriate changes in their + applications. */ +#ifdef OPENSSL_ALGORITHM_DEFINES +# if defined(OPENSSL_NO_EC_NISTP_64_GCC_128) && !defined(NO_EC_NISTP_64_GCC_128) +# define NO_EC_NISTP_64_GCC_128 +# endif +# if defined(OPENSSL_NO_GMP) && !defined(NO_GMP) +# define NO_GMP +# endif +# if defined(OPENSSL_NO_JPAKE) && !defined(NO_JPAKE) +# define NO_JPAKE +# endif +# if defined(OPENSSL_NO_KRB5) && !defined(NO_KRB5) +# define NO_KRB5 +# endif +# if defined(OPENSSL_NO_LIBUNBOUND) && !defined(NO_LIBUNBOUND) +# define NO_LIBUNBOUND +# endif +# if defined(OPENSSL_NO_MD2) && !defined(NO_MD2) +# define NO_MD2 +# endif +# if defined(OPENSSL_NO_RC5) && !defined(NO_RC5) +# define NO_RC5 +# endif +# if defined(OPENSSL_NO_RFC3779) && !defined(NO_RFC3779) +# define NO_RFC3779 +# endif +# if defined(OPENSSL_NO_SCTP) && !defined(NO_SCTP) +# define NO_SCTP +# endif +# if defined(OPENSSL_NO_SSL_TRACE) && !defined(NO_SSL_TRACE) +# define NO_SSL_TRACE +# endif +# if defined(OPENSSL_NO_SSL2) && !defined(NO_SSL2) +# define NO_SSL2 +# endif +# if defined(OPENSSL_NO_STORE) && !defined(NO_STORE) +# define NO_STORE +# endif +# if defined(OPENSSL_NO_UNIT_TEST) && !defined(NO_UNIT_TEST) +# define NO_UNIT_TEST +# endif +# if defined(OPENSSL_NO_WEAK_SSL_CIPHERS) && !defined(NO_WEAK_SSL_CIPHERS) +# define NO_WEAK_SSL_CIPHERS +# endif +#endif + + + +/* crypto/opensslconf.h.in */ + +/* Generate 80386 code? */ +#undef I386_ONLY + +#if !(defined(VMS) || defined(__VMS)) /* VMS uses logical names instead */ +#if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR) +#define ENGINESDIR "/usr/local/ssl/lib/engines" +#define OPENSSLDIR "/usr/local/ssl" +#endif +#endif + +#undef OPENSSL_UNISTD +#define OPENSSL_UNISTD + +#undef OPENSSL_EXPORT_VAR_AS_FUNCTION + +#if defined(HEADER_IDEA_H) && !defined(IDEA_INT) +#define IDEA_INT unsigned int +#endif + +#if defined(HEADER_MD2_H) && !defined(MD2_INT) +#define MD2_INT unsigned int +#endif + +#if defined(HEADER_RC2_H) && !defined(RC2_INT) +/* I need to put in a mod for the alpha - eay */ +#define RC2_INT unsigned int +#endif + +#if defined(HEADER_RC4_H) +#if !defined(RC4_INT) +/* using int types make the structure larger but make the code faster + * on most boxes I have tested - up to %20 faster. */ +/* + * I don't know what does "most" mean, but declaring "int" is a must on: + * - Intel P6 because partial register stalls are very expensive; + * - elder Alpha because it lacks byte load/store instructions; + */ +#define RC4_INT unsigned char +#endif +#if !defined(RC4_CHUNK) +/* + * This enables code handling data aligned at natural CPU word + * boundary. See crypto/rc4/rc4_enc.c for further details. + */ +#define RC4_CHUNK unsigned long +#endif +#endif + +#if (defined(HEADER_NEW_DES_H) || defined(HEADER_DES_H)) && !defined(DES_LONG) +/* If this is set to 'unsigned int' on a DEC Alpha, this gives about a + * %20 speed up (longs are 8 bytes, int's are 4). */ +#ifndef DES_LONG +#define DES_LONG unsigned int +#endif +#endif + +#if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H) +#define CONFIG_HEADER_BN_H +#define BN_LLONG + +/* Should we define BN_DIV2W here? */ + +/* Only one for the following should be defined */ +#undef SIXTY_FOUR_BIT_LONG +#undef SIXTY_FOUR_BIT +#define THIRTY_TWO_BIT +#endif + +#if defined(HEADER_RC4_LOCL_H) && !defined(CONFIG_HEADER_RC4_LOCL_H) +#define CONFIG_HEADER_RC4_LOCL_H +/* if this is defined data[i] is used instead of *data, this is a %20 + * speedup on x86 */ +#undef RC4_INDEX +#endif + +#if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H) +#define CONFIG_HEADER_BF_LOCL_H +#undef BF_PTR +#endif /* HEADER_BF_LOCL_H */ + +#if defined(HEADER_DES_LOCL_H) && !defined(CONFIG_HEADER_DES_LOCL_H) +#define CONFIG_HEADER_DES_LOCL_H +#ifndef DES_DEFAULT_OPTIONS +/* the following is tweaked from a config script, that is why it is a + * protected undef/define */ +#ifndef DES_PTR +#undef DES_PTR +#endif + +/* This helps C compiler generate the correct code for multiple functional + * units. It reduces register dependancies at the expense of 2 more + * registers */ +#ifndef DES_RISC1 +#undef DES_RISC1 +#endif + +#ifndef DES_RISC2 +#undef DES_RISC2 +#endif + +#if defined(DES_RISC1) && defined(DES_RISC2) +#error YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!! +#endif + +/* Unroll the inner loop, this sometimes helps, sometimes hinders. + * Very mucy CPU dependant */ +#ifndef DES_UNROLL +#define DES_UNROLL +#endif + +/* These default values were supplied by + * Peter Gutman + * They are only used if nothing else has been defined */ +#if !defined(DES_PTR) && !defined(DES_RISC1) && !defined(DES_RISC2) && !defined(DES_UNROLL) +/* Special defines which change the way the code is built depending on the + CPU and OS. For SGI machines you can use _MIPS_SZLONG (32 or 64) to find + even newer MIPS CPU's, but at the moment one size fits all for + optimization options. Older Sparc's work better with only UNROLL, but + there's no way to tell at compile time what it is you're running on */ + +#if defined( __sun ) || defined ( sun ) /* Newer Sparc's */ +# define DES_PTR +# define DES_RISC1 +# define DES_UNROLL +#elif defined( __ultrix ) /* Older MIPS */ +# define DES_PTR +# define DES_RISC2 +# define DES_UNROLL +#elif defined( __osf1__ ) /* Alpha */ +# define DES_PTR +# define DES_RISC2 +#elif defined ( _AIX ) /* RS6000 */ + /* Unknown */ +#elif defined( __hpux ) /* HP-PA */ + /* Unknown */ +#elif defined( __aux ) /* 68K */ + /* Unknown */ +#elif defined( __dgux ) /* 88K (but P6 in latest boxes) */ +# define DES_UNROLL +#elif defined( __sgi ) /* Newer MIPS */ +# define DES_PTR +# define DES_RISC2 +# define DES_UNROLL +#elif defined(i386) || defined(__i386__) /* x86 boxes, should be gcc */ +# define DES_PTR +# define DES_RISC1 +# define DES_UNROLL +#endif /* Systems-specific speed defines */ +#endif + +#endif /* DES_DEFAULT_OPTIONS */ +#endif /* HEADER_DES_LOCL_H */ +#ifdef __cplusplus +} +#endif diff --git a/deps/openssl/config/archs/linux64-s390x/opensslconf.h b/deps/openssl/config/archs/linux64-s390x/opensslconf.h new file mode 100644 index 00000000000000..dbb03486798275 --- /dev/null +++ b/deps/openssl/config/archs/linux64-s390x/opensslconf.h @@ -0,0 +1,270 @@ +/* opensslconf.h */ +/* WARNING: Generated automatically from opensslconf.h.in by Configure. */ + +#ifdef __cplusplus +extern "C" { +#endif +/* OpenSSL was configured with the following options: */ +#ifndef OPENSSL_DOING_MAKEDEPEND + + +#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 +# define OPENSSL_NO_EC_NISTP_64_GCC_128 +#endif +#ifndef OPENSSL_NO_GMP +# define OPENSSL_NO_GMP +#endif +#ifndef OPENSSL_NO_JPAKE +# define OPENSSL_NO_JPAKE +#endif +#ifndef OPENSSL_NO_KRB5 +# define OPENSSL_NO_KRB5 +#endif +#ifndef OPENSSL_NO_LIBUNBOUND +# define OPENSSL_NO_LIBUNBOUND +#endif +#ifndef OPENSSL_NO_MD2 +# define OPENSSL_NO_MD2 +#endif +#ifndef OPENSSL_NO_RC5 +# define OPENSSL_NO_RC5 +#endif +#ifndef OPENSSL_NO_RFC3779 +# define OPENSSL_NO_RFC3779 +#endif +#ifndef OPENSSL_NO_SCTP +# define OPENSSL_NO_SCTP +#endif +#ifndef OPENSSL_NO_SSL_TRACE +# define OPENSSL_NO_SSL_TRACE +#endif +#ifndef OPENSSL_NO_SSL2 +# define OPENSSL_NO_SSL2 +#endif +#ifndef OPENSSL_NO_STORE +# define OPENSSL_NO_STORE +#endif +#ifndef OPENSSL_NO_UNIT_TEST +# define OPENSSL_NO_UNIT_TEST +#endif +#ifndef OPENSSL_NO_WEAK_SSL_CIPHERS +# define OPENSSL_NO_WEAK_SSL_CIPHERS +#endif + +#endif /* OPENSSL_DOING_MAKEDEPEND */ + +#ifndef OPENSSL_THREADS +# define OPENSSL_THREADS +#endif +#ifndef OPENSSL_NO_DYNAMIC_ENGINE +# define OPENSSL_NO_DYNAMIC_ENGINE +#endif + +/* The OPENSSL_NO_* macros are also defined as NO_* if the application + asks for it. This is a transient feature that is provided for those + who haven't had the time to do the appropriate changes in their + applications. */ +#ifdef OPENSSL_ALGORITHM_DEFINES +# if defined(OPENSSL_NO_EC_NISTP_64_GCC_128) && !defined(NO_EC_NISTP_64_GCC_128) +# define NO_EC_NISTP_64_GCC_128 +# endif +# if defined(OPENSSL_NO_GMP) && !defined(NO_GMP) +# define NO_GMP +# endif +# if defined(OPENSSL_NO_JPAKE) && !defined(NO_JPAKE) +# define NO_JPAKE +# endif +# if defined(OPENSSL_NO_KRB5) && !defined(NO_KRB5) +# define NO_KRB5 +# endif +# if defined(OPENSSL_NO_LIBUNBOUND) && !defined(NO_LIBUNBOUND) +# define NO_LIBUNBOUND +# endif +# if defined(OPENSSL_NO_MD2) && !defined(NO_MD2) +# define NO_MD2 +# endif +# if defined(OPENSSL_NO_RC5) && !defined(NO_RC5) +# define NO_RC5 +# endif +# if defined(OPENSSL_NO_RFC3779) && !defined(NO_RFC3779) +# define NO_RFC3779 +# endif +# if defined(OPENSSL_NO_SCTP) && !defined(NO_SCTP) +# define NO_SCTP +# endif +# if defined(OPENSSL_NO_SSL_TRACE) && !defined(NO_SSL_TRACE) +# define NO_SSL_TRACE +# endif +# if defined(OPENSSL_NO_SSL2) && !defined(NO_SSL2) +# define NO_SSL2 +# endif +# if defined(OPENSSL_NO_STORE) && !defined(NO_STORE) +# define NO_STORE +# endif +# if defined(OPENSSL_NO_UNIT_TEST) && !defined(NO_UNIT_TEST) +# define NO_UNIT_TEST +# endif +# if defined(OPENSSL_NO_WEAK_SSL_CIPHERS) && !defined(NO_WEAK_SSL_CIPHERS) +# define NO_WEAK_SSL_CIPHERS +# endif +#endif + + + +/* crypto/opensslconf.h.in */ + +/* Generate 80386 code? */ +#undef I386_ONLY + +#if !(defined(VMS) || defined(__VMS)) /* VMS uses logical names instead */ +#if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR) +#define ENGINESDIR "/usr/local/ssl/lib/engines" +#define OPENSSLDIR "/usr/local/ssl" +#endif +#endif + +#undef OPENSSL_UNISTD +#define OPENSSL_UNISTD + +#undef OPENSSL_EXPORT_VAR_AS_FUNCTION + +#if defined(HEADER_IDEA_H) && !defined(IDEA_INT) +#define IDEA_INT unsigned int +#endif + +#if defined(HEADER_MD2_H) && !defined(MD2_INT) +#define MD2_INT unsigned int +#endif + +#if defined(HEADER_RC2_H) && !defined(RC2_INT) +/* I need to put in a mod for the alpha - eay */ +#define RC2_INT unsigned int +#endif + +#if defined(HEADER_RC4_H) +#if !defined(RC4_INT) +/* using int types make the structure larger but make the code faster + * on most boxes I have tested - up to %20 faster. */ +/* + * I don't know what does "most" mean, but declaring "int" is a must on: + * - Intel P6 because partial register stalls are very expensive; + * - elder Alpha because it lacks byte load/store instructions; + */ +#define RC4_INT unsigned char +#endif +#if !defined(RC4_CHUNK) +/* + * This enables code handling data aligned at natural CPU word + * boundary. See crypto/rc4/rc4_enc.c for further details. + */ +#define RC4_CHUNK unsigned long +#endif +#endif + +#if (defined(HEADER_NEW_DES_H) || defined(HEADER_DES_H)) && !defined(DES_LONG) +/* If this is set to 'unsigned int' on a DEC Alpha, this gives about a + * %20 speed up (longs are 8 bytes, int's are 4). */ +#ifndef DES_LONG +#define DES_LONG unsigned int +#endif +#endif + +#if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H) +#define CONFIG_HEADER_BN_H +#undef BN_LLONG + +/* Should we define BN_DIV2W here? */ + +/* Only one for the following should be defined */ +#define SIXTY_FOUR_BIT_LONG +#undef SIXTY_FOUR_BIT +#undef THIRTY_TWO_BIT +#endif + +#if defined(HEADER_RC4_LOCL_H) && !defined(CONFIG_HEADER_RC4_LOCL_H) +#define CONFIG_HEADER_RC4_LOCL_H +/* if this is defined data[i] is used instead of *data, this is a %20 + * speedup on x86 */ +#undef RC4_INDEX +#endif + +#if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H) +#define CONFIG_HEADER_BF_LOCL_H +#undef BF_PTR +#endif /* HEADER_BF_LOCL_H */ + +#if defined(HEADER_DES_LOCL_H) && !defined(CONFIG_HEADER_DES_LOCL_H) +#define CONFIG_HEADER_DES_LOCL_H +#ifndef DES_DEFAULT_OPTIONS +/* the following is tweaked from a config script, that is why it is a + * protected undef/define */ +#ifndef DES_PTR +#undef DES_PTR +#endif + +/* This helps C compiler generate the correct code for multiple functional + * units. It reduces register dependancies at the expense of 2 more + * registers */ +#ifndef DES_RISC1 +#undef DES_RISC1 +#endif + +#ifndef DES_RISC2 +#undef DES_RISC2 +#endif + +#if defined(DES_RISC1) && defined(DES_RISC2) +#error YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!! +#endif + +/* Unroll the inner loop, this sometimes helps, sometimes hinders. + * Very mucy CPU dependant */ +#ifndef DES_UNROLL +#define DES_UNROLL +#endif + +/* These default values were supplied by + * Peter Gutman + * They are only used if nothing else has been defined */ +#if !defined(DES_PTR) && !defined(DES_RISC1) && !defined(DES_RISC2) && !defined(DES_UNROLL) +/* Special defines which change the way the code is built depending on the + CPU and OS. For SGI machines you can use _MIPS_SZLONG (32 or 64) to find + even newer MIPS CPU's, but at the moment one size fits all for + optimization options. Older Sparc's work better with only UNROLL, but + there's no way to tell at compile time what it is you're running on */ + +#if defined( __sun ) || defined ( sun ) /* Newer Sparc's */ +# define DES_PTR +# define DES_RISC1 +# define DES_UNROLL +#elif defined( __ultrix ) /* Older MIPS */ +# define DES_PTR +# define DES_RISC2 +# define DES_UNROLL +#elif defined( __osf1__ ) /* Alpha */ +# define DES_PTR +# define DES_RISC2 +#elif defined ( _AIX ) /* RS6000 */ + /* Unknown */ +#elif defined( __hpux ) /* HP-PA */ + /* Unknown */ +#elif defined( __aux ) /* 68K */ + /* Unknown */ +#elif defined( __dgux ) /* 88K (but P6 in latest boxes) */ +# define DES_UNROLL +#elif defined( __sgi ) /* Newer MIPS */ +# define DES_PTR +# define DES_RISC2 +# define DES_UNROLL +#elif defined(i386) || defined(__i386__) /* x86 boxes, should be gcc */ +# define DES_PTR +# define DES_RISC1 +# define DES_UNROLL +#endif /* Systems-specific speed defines */ +#endif + +#endif /* DES_DEFAULT_OPTIONS */ +#endif /* HEADER_DES_LOCL_H */ +#ifdef __cplusplus +} +#endif diff --git a/deps/openssl/config/opensslconf.h b/deps/openssl/config/opensslconf.h index 9a7cda94543e68..9b20fb6485aa84 100644 --- a/deps/openssl/config/opensslconf.h +++ b/deps/openssl/config/opensslconf.h @@ -27,6 +27,8 @@ | linux | arm64 | linux-aarch64 | o | | linux | ppc | linux-ppc | o | | linux | ppc64 | linux-ppc64 | o | + | linux | s390 | linux32-s390x | o | + | linux | s390x | linux64-s390x | o | | mac | ia32 | darwin-i386-cc | o | | mac | x64 | darwin64-x86-cc | o | | win | ia32 | VC-WIN32 | - | @@ -68,6 +70,8 @@ | | _ARCH_PPC | | ppc64 | __PPC64__ | | | _ARCH_PPC64 | + | s390 | __s390__ | + | s390x | __s390x__ | These are the list which is not implemented yet. @@ -124,6 +128,10 @@ # include "./archs/aix64-gcc/opensslconf.h" #elif defined(_AIX) && !defined(_ARCH_PPC64) && defined(_ARCH_PPC) # include "./archs/aix-gcc/opensslconf.h" +#elif defined(OPENSSL_LINUX) && defined(__s390x__) +# include "./archs/linux64-s390x/opensslconf.h" +#elif defined(OPENSSL_LINUX) && defined(__s390__) +# include "./archs/linux32-s390x/opensslconf.h" #else # include "./archs/linux-elf/opensslconf.h" #endif diff --git a/tools/test.py b/tools/test.py index 1c10c624f70242..9b5dcd735f892b 100755 --- a/tools/test.py +++ b/tools/test.py @@ -773,7 +773,8 @@ def GetTestStatus(self, context, sections, defs): 'armv6' : { 'debug' : 12, 'release' : 3 }, # The ARM buildbots are slow. 'arm' : { 'debug' : 8, 'release' : 2 }, 'ia32' : { 'debug' : 4, 'release' : 1 }, - 'ppc' : { 'debug' : 4, 'release' : 1 } } + 'ppc' : { 'debug' : 4, 'release' : 1 }, + 's390' : { 'debug' : 4, 'release' : 1 } } class Context(object): diff --git a/tools/utils.py b/tools/utils.py index c77ab8edafcbe3..dd5ce3fcb629a4 100644 --- a/tools/utils.py +++ b/tools/utils.py @@ -89,6 +89,8 @@ def GuessArchitecture(): return 'ia32' elif id.startswith('ppc'): return 'ppc' + elif id == 's390x': + return 's390' else: id = platform.processor() if id == 'powerpc': From f56d6ad31c99c651f6f9218e2e9ca033d3a59b81 Mon Sep 17 00:00:00 2001 From: Fedor Indutny Date: Sat, 26 Mar 2016 20:23:07 -0400 Subject: [PATCH 03/37] build: add missing `openssl_fips%` to common.gypi MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See: atom/node@cba512d493d968afb203e28ed01e8d345fc9c9f4 PR-URL: https://github.com/nodejs/node/pull/5919 Reviewed-By: Johan Bergström --- common.gypi | 2 ++ 1 file changed, 2 insertions(+) diff --git a/common.gypi b/common.gypi index 5e694bf3e26975..5a07332100d024 100644 --- a/common.gypi +++ b/common.gypi @@ -14,6 +14,8 @@ 'node_tag%': '', 'uv_library%': 'static_library', + 'openssl_fips%': '', + # Default to -O0 for debug builds. 'v8_optimized_debug%': 0, From 09dc4cc4fa9fb2c295bcb6ae181819951abe9d75 Mon Sep 17 00:00:00 2001 From: Robert Chiras Date: Thu, 3 Mar 2016 17:13:12 +0200 Subject: [PATCH 04/37] build: add script to create Android .mk files The create_android_makefiles script will create .mk files for node and all of its dependencies ready to be build using Android build system. Signed-off-by: Robert Chiras PR-URL: https://github.com/nodejs/node/pull/5544 Reviewed-By: Ben Noordhuis --- tools/create_android_makefiles | 46 ++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100755 tools/create_android_makefiles diff --git a/tools/create_android_makefiles b/tools/create_android_makefiles new file mode 100755 index 00000000000000..abf2ecf083c307 --- /dev/null +++ b/tools/create_android_makefiles @@ -0,0 +1,46 @@ +#!/bin/bash +# Run this script ONLY inside an Android build system +# and after you ran lunch command! + +if [ -z "$ANDROID_BUILD_TOP" ]; then + echo "Run lunch before running this script!" + exit 1 +fi + +if [ -z "$1" ]; then + ARCH="arm" +else + ARCH="$1" +fi + +if [ $ARCH = "x86" ]; then + TARGET_ARCH="ia32" +else + TARGET_ARCH="$ARCH" +fi + +cd $(dirname $0)/.. + +./configure \ + --without-snapshot \ + --openssl-no-asm \ + --dest-cpu=$TARGET_ARCH \ + --dest-os=android + +export GYP_GENERATORS="android" +export GYP_GENERATOR_FLAGS="limit_to_target_all=true" +GYP_DEFINES="target_arch=$TARGET_ARCH" +GYP_DEFINES+=" v8_target_arch=$TARGET_ARCH" +GYP_DEFINES+=" android_target_arch=$ARCH" +GYP_DEFINES+=" host_os=linux OS=android" +export GYP_DEFINES + +./deps/npm/node_modules/node-gyp/gyp/gyp \ + -Icommon.gypi \ + -Iconfig.gypi \ + --depth=. \ + -Dcomponent=static_library \ + -Dlibrary=static_library \ + node.gyp + +echo -e "LOCAL_PATH := \$(call my-dir)\n\ninclude \$(LOCAL_PATH)/GypAndroid.mk" > Android.mk From 882fa255e42ea9bbc7b4e3b06cb453bc9013088a Mon Sep 17 00:00:00 2001 From: Robert Chiras Date: Thu, 3 Mar 2016 12:02:44 +0200 Subject: [PATCH 05/37] build: add suport for x86 architecture Modified android-configure script to support also x86 arch. Currently added support only for ia32 target arch. Also, compile openssl without asm, since using the asm sources will make node fail to run on Android, because it adds text relocations. Signed-off-by: Robert Chiras PR-URL: https://github.com/nodejs/node/pull/5544 Reviewed-By: Ben Noordhuis --- android-configure | 47 +++++++++++++++++++++++++++++++++++++++-------- common.gypi | 8 ++++++++ 2 files changed, 47 insertions(+), 8 deletions(-) diff --git a/android-configure b/android-configure index 5cdfa70bbafba7..cbf137f47174c7 100755 --- a/android-configure +++ b/android-configure @@ -1,18 +1,49 @@ #!/bin/bash +if [ -z "$2" ]; then + ARCH=arm +else + ARCH="$2" +fi + +CC_VER="4.9" +case $ARCH in + arm) + DEST_CPU="$ARCH" + SUFFIX="$ARCH-linux-androideabi" + TOOLCHAIN_NAME="$SUFFIX" + ;; + x86) + DEST_CPU="ia32" + SUFFIX="i686-linux-android" + TOOLCHAIN_NAME="$ARCH" + ;; + x86_64) + DEST_CPU="ia32" + SUFFIX="$ARCH-linux-android" + TOOLCHAIN_NAME="$ARCH" + ;; + *) + echo "Unsupported architecture provided: $ARCH" + exit 1 + ;; +esac + export TOOLCHAIN=$PWD/android-toolchain mkdir -p $TOOLCHAIN $1/build/tools/make-standalone-toolchain.sh \ - --toolchain=arm-linux-androideabi-4.9 \ - --arch=arm \ + --toolchain=$TOOLCHAIN_NAME-$CC_VER \ + --arch=$ARCH \ --install-dir=$TOOLCHAIN \ --platform=android-21 export PATH=$TOOLCHAIN/bin:$PATH -export AR=$TOOLCHAIN/bin/arm-linux-androideabi-ar -export CC=$TOOLCHAIN/bin/arm-linux-androideabi-gcc -export CXX=$TOOLCHAIN/bin/arm-linux-androideabi-g++ -export LINK=$TOOLCHAIN/bin/arm-linux-androideabi-g++ +export AR=$TOOLCHAIN/bin/$SUFFIX-ar +export CC=$TOOLCHAIN/bin/$SUFFIX-gcc +export CXX=$TOOLCHAIN/bin/$SUFFIX-g++ +export LINK=$TOOLCHAIN/bin/$SUFFIX-g++ ./configure \ - --dest-cpu=arm \ - --dest-os=android + --dest-cpu=$DEST_CPU \ + --dest-os=android \ + --without-snapshot \ + --openssl-no-asm diff --git a/common.gypi b/common.gypi index 5a07332100d024..811a7b3da3d502 100644 --- a/common.gypi +++ b/common.gypi @@ -70,6 +70,10 @@ 'cflags': [ '-gxcoff' ], 'ldflags': [ '-Wl,-bbigtoc' ], }], + ['OS == "android"', { + 'cflags': [ '-fPIE' ], + 'ldflags': [ '-fPIE', '-pie' ] + }] ], 'msvs_settings': { 'VCCLCompilerTool': { @@ -103,6 +107,10 @@ ['OS!="mac" and OS!="win"', { 'cflags': [ '-fno-omit-frame-pointer' ], }], + ['OS == "android"', { + 'cflags': [ '-fPIE' ], + 'ldflags': [ '-fPIE', '-pie' ] + }] ], 'msvs_settings': { 'VCCLCompilerTool': { From 459a7d6b40a498e80eafbe3af0da119df71c42b6 Mon Sep 17 00:00:00 2001 From: Benjamin Gruenbaum Date: Wed, 23 Mar 2016 11:49:12 +0200 Subject: [PATCH 06/37] child_process: refactor self=this in socket_list The socket list module (used by child_process) currently uses the `var self = this;` pattern for context in several places, this PR replaces this with arrow functions or passing a parameter in where appropriate. Note that the `var self = this` in the _request is intentioanlly left in place since it is not trivial to refactor it and the current pattern isn't bad given the use case. PR-URL: https://github.com/nodejs/node/pull/5860 Reviewed-By: Colin Ihrig Reviewed-By: James M Snell Reviewed-By: Brian White --- lib/internal/socket_list.js | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/lib/internal/socket_list.js b/lib/internal/socket_list.js index 950d632a26360d..0f4be6df239dd6 100644 --- a/lib/internal/socket_list.js +++ b/lib/internal/socket_list.js @@ -58,13 +58,11 @@ SocketListSend.prototype.getConnections = function getConnections(callback) { function SocketListReceive(slave, key) { EventEmitter.call(this); - var self = this; - this.connections = 0; this.key = key; this.slave = slave; - function onempty() { + function onempty(self) { if (!self.slave.connected) return; self.slave.send({ @@ -73,21 +71,21 @@ function SocketListReceive(slave, key) { }); } - this.slave.on('internalMessage', function(msg) { - if (msg.key !== self.key) return; + this.slave.on('internalMessage', (msg) => { + if (msg.key !== this.key) return; if (msg.cmd === 'NODE_SOCKET_NOTIFY_CLOSE') { // Already empty - if (self.connections === 0) return onempty(); + if (this.connections === 0) return onempty(this); // Wait for sockets to get closed - self.once('empty', onempty); + this.once('empty', onempty); } else if (msg.cmd === 'NODE_SOCKET_GET_COUNT') { - if (!self.slave.connected) return; - self.slave.send({ + if (!this.slave.connected) return; + this.slave.send({ cmd: 'NODE_SOCKET_COUNT', - key: self.key, - count: self.connections + key: this.key, + count: this.connections }); } }); @@ -95,14 +93,12 @@ function SocketListReceive(slave, key) { util.inherits(SocketListReceive, EventEmitter); SocketListReceive.prototype.add = function(obj) { - var self = this; - this.connections++; // Notify previous owner of socket about its state change - obj.socket.once('close', function() { - self.connections--; + obj.socket.once('close', () => { + this.connections--; - if (self.connections === 0) self.emit('empty'); + if (this.connections === 0) this.emit('empty', this); }); }; From 37f4df439bbec8ef45d514c04eb910fd2620fb91 Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Sun, 6 Mar 2016 12:12:22 +0100 Subject: [PATCH 07/37] deps: backport 8d00c2c from v8 upstream Original commit message: Unbreak --gdbjit for embedders. Embedders don't use d8.cc. Move gdbjit initialization to api.cc. Review URL: https://codereview.chromium.org/1710253002 Fixes: https://github.com/nodejs/node/issues/2076 PR-URL: https://github.com/nodejs/node/pull/5577 Reviewed-By: Ali Ijaz Sheikh --- deps/v8/src/api.cc | 11 +++++++++-- deps/v8/src/d8.cc | 9 --------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/deps/v8/src/api.cc b/deps/v8/src/api.cc index a2feebea45545b..eac27192aacb1b 100644 --- a/deps/v8/src/api.cc +++ b/deps/v8/src/api.cc @@ -31,6 +31,7 @@ #include "src/debug/debug.h" #include "src/deoptimizer.h" #include "src/execution.h" +#include "src/gdb-jit.h" #include "src/global-handles.h" #include "src/heap-profiler.h" #include "src/heap-snapshot-generator-inl.h" @@ -7102,10 +7103,16 @@ Isolate* Isolate::New(const Isolate::CreateParams& params) { if (params.entry_hook) { isolate->set_function_entry_hook(params.entry_hook); } - if (params.code_event_handler) { + auto code_event_handler = params.code_event_handler; +#ifdef ENABLE_GDB_JIT_INTERFACE + if (code_event_handler == nullptr && i::FLAG_gdbjit) { + code_event_handler = i::GDBJITInterface::EventHandler; + } +#endif // ENABLE_GDB_JIT_INTERFACE + if (code_event_handler) { isolate->InitializeLoggingAndCounters(); isolate->logger()->SetCodeEventHandler(kJitCodeEventDefault, - params.code_event_handler); + code_event_handler); } if (params.counter_lookup_callback) { v8_isolate->SetCounterFunction(params.counter_lookup_callback); diff --git a/deps/v8/src/d8.cc b/deps/v8/src/d8.cc index 58b59c890fac87..81b3a944103df3 100644 --- a/deps/v8/src/d8.cc +++ b/deps/v8/src/d8.cc @@ -26,10 +26,6 @@ #include "include/v8-testing.h" #endif // V8_SHARED -#if !defined(V8_SHARED) && defined(ENABLE_GDB_JIT_INTERFACE) -#include "src/gdb-jit.h" -#endif - #ifdef ENABLE_VTUNE_JIT_INTERFACE #include "src/third_party/vtune/v8-vtune.h" #endif @@ -2389,11 +2385,6 @@ int Shell::Main(int argc, char* argv[]) { Shell::array_buffer_allocator = &shell_array_buffer_allocator; } create_params.array_buffer_allocator = Shell::array_buffer_allocator; -#if !defined(V8_SHARED) && defined(ENABLE_GDB_JIT_INTERFACE) - if (i::FLAG_gdbjit) { - create_params.code_event_handler = i::GDBJITInterface::EventHandler; - } -#endif #ifdef ENABLE_VTUNE_JIT_INTERFACE create_params.code_event_handler = vTune::GetVtuneCodeEventHandler(); #endif From 648e0c3e1633c8c7f6971303d7f77e5cc24fdbee Mon Sep 17 00:00:00 2001 From: Benjamin Gruenbaum Date: Tue, 22 Mar 2016 15:40:36 +0200 Subject: [PATCH 08/37] dns: Use object without protoype for map MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently we use `{}` for the `lookup` function to find the relevant resolver to the dns.resolve function. It is preferable to use an object without a Object.prototype, currently for example you can do something like: ```js dns.resolve("google.com", "toString", console.log); ``` And get `[Object undefined]` logged and the callback would never be called. This is unexpected and strange behavior in my opinion. In addition, if someone adds a property to `Object.prototype` might also create unexpected results. This pull request fixes it, with it an appropriate error is thrown. PR-URL: https://github.com/nodejs/node/pull/5843 Reviewed-By: James M Snell Reviewed-By: Michaël Zasso Reviewed-By: Colin Ihrig --- lib/dns.js | 2 +- test/parallel/test-c-ares.js | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/dns.js b/lib/dns.js index 96c9ca59206289..dad4353ea2a5b7 100644 --- a/lib/dns.js +++ b/lib/dns.js @@ -240,7 +240,7 @@ function resolver(bindingName) { } -var resolveMap = {}; +var resolveMap = Object.create(null); exports.resolve4 = resolveMap.A = resolver('queryA'); exports.resolve6 = resolveMap.AAAA = resolver('queryAaaa'); exports.resolveCname = resolveMap.CNAME = resolver('queryCname'); diff --git a/test/parallel/test-c-ares.js b/test/parallel/test-c-ares.js index b7802881f8e47c..9a061bab1acb01 100644 --- a/test/parallel/test-c-ares.js +++ b/test/parallel/test-c-ares.js @@ -27,6 +27,11 @@ assert.throws(function() { dns.resolve('www.google.com', 'HI'); }, /Unknown type/); +// Try calling resolve with an unsupported type that's an object key +assert.throws(function() { + dns.resolve('www.google.com', 'toString'); +}, /Unknown type/); + // Windows doesn't usually have an entry for localhost 127.0.0.1 in // C:\Windows\System32\drivers\etc\hosts // so we disable this test on Windows. From 4916fff6fc40228909c39eca29ef4a66eb6062b2 Mon Sep 17 00:00:00 2001 From: Benjamin Gruenbaum Date: Tue, 22 Mar 2016 11:36:05 +0200 Subject: [PATCH 09/37] dns: Refactor forEach to map MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Refactor a forEach to a `map` in the `setServers` function of the dns module - simplifying the code. In addition, use more descriptive variable names and `const` over `var` where possible. PR-URL: https://github.com/nodejs/node/pull/5803 Reviewed-By: Colin Ihrig Reviewed-By: Сковорода Никита Андреевич --- lib/dns.js | 36 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/lib/dns.js b/lib/dns.js index dad4353ea2a5b7..6940c51d29e19b 100644 --- a/lib/dns.js +++ b/lib/dns.js @@ -281,41 +281,37 @@ exports.getServers = function() { exports.setServers = function(servers) { // cache the original servers because in the event of an error setting the // servers cares won't have any servers available for resolution - var orig = cares.getServers(); + const orig = cares.getServers(); - var newSet = []; - - servers.forEach(function(serv) { - var ver = isIP(serv); - - if (ver) - return newSet.push([ver, serv]); - - var match = serv.match(/\[(.*)\](:\d+)?/); + const newSet = servers.map((serv) => { + var ipVersion = isIP(serv); + if (ipVersion !== 0) + return [ipVersion, serv]; + const match = serv.match(/\[(.*)\](:\d+)?/); // we have an IPv6 in brackets if (match) { - ver = isIP(match[1]); - if (ver) - return newSet.push([ver, match[1]]); + ipVersion = isIP(match[1]); + if (ipVersion !== 0) + return [ipVersion, match[1]]; } - var s = serv.split(/:\d+$/)[0]; - ver = isIP(s); + const s = serv.split(/:\d+$/)[0]; + ipVersion = isIP(s); - if (ver) - return newSet.push([ver, s]); + if (ipVersion !== 0) + return [ipVersion, s]; throw new Error(`IP address is not properly formatted: ${serv}`); }); - var r = cares.setServers(newSet); + const errorNumber = cares.setServers(newSet); - if (r) { + if (errorNumber !== 0) { // reset the servers to the old servers, because ares probably unset them cares.setServers(orig.join(',')); - var err = cares.strerror(r); + var err = cares.strerror(errorNumber); throw new Error(`c-ares failed to set servers: "${err}" [${servers}]`); } }; From 715ba18822337d971702ad624f256104732b5457 Mon Sep 17 00:00:00 2001 From: ghaiklor Date: Thu, 24 Mar 2016 20:45:43 +0200 Subject: [PATCH 10/37] doc: fix doc for Buffer.readInt32LE() Update example of readInt32LE method. buf.readInt32LE(1) is supposed to throw an error as it has only four elements and it tries to read 32 bits from three bytes. Fixes: https://github.com/nodejs/node/issues/5889 PR-URL: https://github.com/nodejs/node/pull/5890 Reviewed-By: James M Snell Reviewed-By: Colin Ihrig Reviewed-By: Sakthipriyan Vairamani --- doc/api/buffer.markdown | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/api/buffer.markdown b/doc/api/buffer.markdown index 52b6956d0c019a..88891c68a42ac3 100644 --- a/doc/api/buffer.markdown +++ b/doc/api/buffer.markdown @@ -1054,8 +1054,10 @@ const buf = Buffer.from([1,-2,3,4]); buf.readInt32BE(); // returns 33424132 -buf.readInt32LE(1); +buf.readInt32LE(); // returns 67370497 +buf.readInt32LE(1); + // throws RangeError: Index out of range ``` ### buf.readIntBE(offset, byteLength[, noAssert]) From 0da59efd63394b6374f03e03250b6c4fd49d9972 Mon Sep 17 00:00:00 2001 From: Jeremiah Senkpiel Date: Wed, 23 Mar 2016 14:47:12 -0400 Subject: [PATCH 11/37] doc: add instructions to only sign a release PR-URL: https://github.com/nodejs/node/pull/5876 Reviewed-By: Myles Borins Reviewed-By: Colin Ihrig Reviewed-By: James M Snell --- doc/releases.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/releases.md b/doc/releases.md index 1c77b91a014e00..512deb34acf84d 100644 --- a/doc/releases.md +++ b/doc/releases.md @@ -246,6 +246,8 @@ Use `tools/release.sh` to promote and sign the build. When run, it will perform If you didn't wait for ARM builds in the previous step before promoting the release, you should re-run `tools/release.sh` after the ARM builds have finished. That will move the ARM artifacts into the correct location. You will be prompted to re-sign SHASUMS256.txt. +Note: it is possible to only sign a release by running `./tools/release.sh -s vX.Y.Z`. + ### 13. Check the Release Your release should be available at and . Check that the appropriate files are in place. You may want to check that the binaries are working as appropriate and have the right internal version strings. Check that the API docs are available at . Check that the release catalog files are correct at and . From b9682af4eda36b20d83c44febf5c01f72a37e932 Mon Sep 17 00:00:00 2001 From: firedfox Date: Thu, 3 Mar 2016 16:18:09 +0800 Subject: [PATCH 12/37] doc: fix order of end tags of list after heading Current html result of a list after heading is
    ...
. Correct it to
    ...
. PR-URL: https://github.com/nodejs/node/pull/5874 Fixes: https://github.com/nodejs/node/issues/5873 Reviewed-By: Roman Reiss --- tools/doc/html.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/doc/html.js b/tools/doc/html.js index 8de9f49987c000..327c9f080e2bfe 100644 --- a/tools/doc/html.js +++ b/tools/doc/html.js @@ -159,11 +159,11 @@ function parseLists(input) { } if (tok.type === 'list_end') { depth--; + output.push(tok); if (depth === 0) { state = null; output.push({ type:'html', text: '' }); } - output.push(tok); return; } if (tok.text) { From fc6513d37516009a2e95db3258bc6c85b0a783fe Mon Sep 17 00:00:00 2001 From: Benjamin Gruenbaum Date: Tue, 22 Mar 2016 23:21:46 +0200 Subject: [PATCH 13/37] doc: use consistent event name parameter Implementing the suggestion in https://github.com/nodejs/node/issues/4554 this pull request renames the parameter name in all the places that accept an event name as a parameter. Previously, the parameter has been called `event` or `type`. Now as suggested it is consistently called `eventName`. PR-URL: https://github.com/nodejs/node/pull/5850 Reviewed-By: James M Snell Reviewed-By: Colin Ihrig Reviewed-By: Jeremiah Senkpiel --- doc/api/events.markdown | 60 +++++++++++++++++++++-------------------- 1 file changed, 31 insertions(+), 29 deletions(-) diff --git a/doc/api/events.markdown b/doc/api/events.markdown index 797b969ecc2824..7b7ff57ee028f5 100644 --- a/doc/api/events.markdown +++ b/doc/api/events.markdown @@ -201,7 +201,7 @@ added and `'removeListener'` when a listener is removed. ### Event: 'newListener' -* `event` {String|Symbol} The event name +* `eventName` {String|Symbol} The name of the event being listened for * `listener` {Function} The event handler function The `EventEmitter` instance will emit it's own `'newListener'` event *before* @@ -237,16 +237,16 @@ myEmitter.emit('event'); ### Event: 'removeListener' -* `event` {String|Symbol} The event name +* `eventName` {String|Symbol} The event name * `listener` {Function} The event handler function The `'removeListener'` event is emitted *after* a listener is removed. -### EventEmitter.listenerCount(emitter, event) +### EventEmitter.listenerCount(emitter, eventName) Stability: 0 - Deprecated: Use [`emitter.listenerCount()`][] instead. -A class method that returns the number of listeners for the given `event` +A class method that returns the number of listeners for the given `eventName` registered on the given `emitter`. ```js @@ -284,16 +284,17 @@ emitter.once('event', () => { }); ``` -### emitter.addListener(event, listener) +### emitter.addListener(eventName, listener) -Alias for `emitter.on(event, listener)`. +Alias for `emitter.on(eventName, listener)`. -### emitter.emit(event[, arg1][, arg2][, ...]) +### emitter.emit(eventName[, arg1][, arg2][, ...]) -Synchronously calls each of the listeners registered for `event`, in the order -they were registered, passing the supplied arguments to each. +Synchronously calls each of the listeners registered for the event named +`eventName`, in the order they were registered, passing the supplied arguments +to each. -Returns `true` if event had listeners, `false` otherwise. +Returns `true` if the event had listeners, `false` otherwise. ### emitter.getMaxListeners() @@ -301,15 +302,15 @@ Returns the current max listener value for the `EventEmitter` which is either set by [`emitter.setMaxListeners(n)`][] or defaults to [`EventEmitter.defaultMaxListeners`][]. -### emitter.listenerCount(event) +### emitter.listenerCount(eventName) -* `event` {Value} The type of event +* `eventName` {Value} The name of the event being listened for -Returns the number of listeners listening to the `event` type. +Returns the number of listeners listening to the event named `eventName`. -### emitter.listeners(event) +### emitter.listeners(eventName) -Returns a copy of the array of listeners for the specified `event`. +Returns a copy of the array of listeners for the event named `eventName`. ```js server.on('connection', (stream) => { @@ -319,12 +320,12 @@ console.log(util.inspect(server.listeners('connection'))); // Prints: [ [Function] ] ``` -### emitter.on(event, listener) +### emitter.on(eventName, listener) Adds the `listener` function to the end of the listeners array for the -specified `event`. No checks are made to see if the `listener` has already -been added. Multiple calls passing the same combination of `event` and -`listener` will result in the `listener` being added, and called, multiple +event named `eventName`. No checks are made to see if the `listener` has +already been added. Multiple calls passing the same combination of `eventName` +and `listener` will result in the `listener` being added, and called, multiple times. ```js @@ -335,10 +336,11 @@ server.on('connection', (stream) => { Returns a reference to the `EventEmitter` so calls can be chained. -### emitter.once(event, listener) +### emitter.once(eventName, listener) -Adds a **one time** `listener` function for the `event`. This listener is -invoked only the next time `event` is triggered, after which it is removed. +Adds a **one time** `listener` function for the event named `eventName`. This +listener is invoked only the next time `eventName` is triggered, after which +it is removed. ```js server.once('connection', (stream) => { @@ -348,9 +350,9 @@ server.once('connection', (stream) => { Returns a reference to the `EventEmitter` so calls can be chained. -### emitter.removeAllListeners([event]) +### emitter.removeAllListeners([eventName]) -Removes all listeners, or those of the specified `event`. +Removes all listeners, or those of the specified `eventName`. Note that it is bad practice to remove listeners added elsewhere in the code, particularly when the `EventEmitter` instance was created by some other @@ -358,10 +360,10 @@ component or module (e.g. sockets or file streams). Returns a reference to the `EventEmitter` so calls can be chained. -### emitter.removeListener(event, listener) +### emitter.removeListener(eventName, listener) -Removes the specified `listener` from the listener array for the specified -`event`. +Removes the specified `listener` from the listener array for the event named +`eventName`. ```js var callback = (stream) => { @@ -374,8 +376,8 @@ server.removeListener('connection', callback); `removeListener` will remove, at most, one instance of a listener from the listener array. If any single listener has been added multiple times to the -listener array for the specified `event`, then `removeListener` must be called -multiple times to remove each instance. +listener array for the specified `eventName`, then `removeListener` must be +called multiple times to remove each instance. Note that once an event has been emitted, all listeners attached to it at the time of emitting will be called in order. This implies that any `removeListener()` From 93638e121a86d39022e65a33e29f17119db10bf5 Mon Sep 17 00:00:00 2001 From: John Eversole Date: Sat, 19 Mar 2016 09:59:15 -0700 Subject: [PATCH 14/37] doc: explain path.format expected properties Explain the expected properties in path.format Fixes: https://github.com/nodejs/node/issues/5746 PR-URL: https://github.com/nodejs/node/pull/5801 Reviewed-By: Rich Trott Reviewed-By: Benjamin Gruenbaum --- doc/api/path.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/api/path.markdown b/doc/api/path.markdown index 655f90ec21b1bb..b1110e7f21aa0b 100644 --- a/doc/api/path.markdown +++ b/doc/api/path.markdown @@ -85,9 +85,9 @@ path.extname('.index') Returns a path string from an object. This is the opposite of [`path.parse`][]. -If `pathObject` has all expected properties, the returned string will be a -concatenation of the `dir` property, the platform-dependent path separator, and -the `base` property. +If `pathObject` has `dir` and `base` properties, the returned string will +be a concatenation of the `dir` property, the platform-dependent path separator, +and the `base` property. If the `dir` property is not supplied, the `root` property will be used as the `dir` property. However, it will be assumed that the `root` property already From 9e5fe2b00c739271759fb088162f4ef3a7caf1e6 Mon Sep 17 00:00:00 2001 From: Corey Kosak Date: Tue, 22 Mar 2016 17:18:02 -0400 Subject: [PATCH 15/37] doc: typo: interal->internal. Fixes a copy typo in the events.md docs. PR-URL: https://github.com/nodejs/node/pull/5849 Reviewed-By: Benjamin Gruenbaum Reviewed-By: James M Snell --- doc/api/events.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/api/events.markdown b/doc/api/events.markdown index 7b7ff57ee028f5..500d046f9e59f7 100644 --- a/doc/api/events.markdown +++ b/doc/api/events.markdown @@ -402,14 +402,14 @@ myEmitter.on('event', callbackA); myEmitter.on('event', callbackB); // callbackA removes listener callbackB but it will still be called. -// Interal listener array at time of emit [callbackA, callbackB] +// Internal listener array at time of emit [callbackA, callbackB] myEmitter.emit('event'); // Prints: // A // B // callbackB is now removed. -// Interal listener array [callbackA] +// Internal listener array [callbackA] myEmitter.emit('event'); // Prints: // A From 8df627e035e3e8967dcf556d1056dd2380e4eb93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Reis?= Date: Wed, 16 Mar 2016 16:31:18 +0000 Subject: [PATCH 16/37] etw: fix descriptors of events 9 and 23 Event 9 must include the string terminator in the last descriptor. Event 23 must be published with no descriptors, in accordance with the manifest. PR-URL: https://github.com/nodejs/node/pull/5742 Reviewed-By: Ben Noordhuis Reviewed-By: James M Snell --- src/node_win32_etw_provider-inl.h | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/node_win32_etw_provider-inl.h b/src/node_win32_etw_provider-inl.h index de53203cb3c15f..3fef20cc1488c1 100644 --- a/src/node_win32_etw_provider-inl.h +++ b/src/node_win32_etw_provider-inl.h @@ -94,6 +94,13 @@ extern int events_enabled; dataDescriptors); \ CHECK_EQ(status, ERROR_SUCCESS); +#define ETW_WRITE_EMPTY_EVENT(eventDescriptor) \ + DWORD status = event_write(node_provider, \ + &eventDescriptor, \ + 0, \ + NULL); \ + CHECK_EQ(status, ERROR_SUCCESS); + void NODE_HTTP_SERVER_REQUEST(node_dtrace_http_server_request_t* req, node_dtrace_connection_t* conn, const char *remote, int port, @@ -189,10 +196,7 @@ void NODE_V8SYMBOL_MOVE(const void* addr1, const void* addr2) { void NODE_V8SYMBOL_RESET() { if (events_enabled > 0) { - int val = 0; - EVENT_DATA_DESCRIPTOR descriptors[1]; - ETW_WRITE_INT32_DATA(descriptors, &val); - ETW_WRITE_EVENT(NODE_V8SYMBOL_RESET_EVENT, descriptors); + ETW_WRITE_EMPTY_EVENT(NODE_V8SYMBOL_RESET_EVENT); } } @@ -244,7 +248,7 @@ void NODE_V8SYMBOL_ADD(LPCSTR symbol, line, col, symbuf, - symbol_len * sizeof(symbuf[0])); + (symbol_len + 1) * sizeof(symbuf[0])); ETW_WRITE_EVENT(MethodLoad, descriptors); } } From 1490a4517fb4ad22b6c448e158b928d0cbdf698c Mon Sep 17 00:00:00 2001 From: Florian MARGAINE Date: Wed, 24 Feb 2016 22:17:44 +0100 Subject: [PATCH 17/37] fs: add the fs.mkdtemp() function. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This uses libuv's mkdtemp function to provide a way to create a temporary folder, using a prefix as the path. The prefix is appended six random characters. The callback function will receive the name of the folder that was created. Usage example: fs.mkdtemp('/tmp/foo-', function(err, folder) { console.log(folder); // Prints: /tmp/foo-Tedi42 }); The fs.mkdtempSync version is also provided. Usage example: console.log(fs.mkdtemp('/tmp/foo-')); // Prints: tmp/foo-Tedi42 This pull request also includes the relevant documentation changes and tests. PR-URL: https://github.com/nodejs/node/pull/5333 Reviewed-By: Sakthipriyan Vairamani Reviewed-By: Trevor Norris Reviewed-By: Saúl Ibarra Corretgé Reviewed-By: James M Snell --- doc/api/fs.markdown | 24 ++++++++++++++++++++++++ lib/fs.js | 21 +++++++++++++++++++++ src/node_file.cc | 26 ++++++++++++++++++++++++++ test/parallel/test-fs-mkdtemp.js | 27 +++++++++++++++++++++++++++ 4 files changed, 98 insertions(+) create mode 100644 test/parallel/test-fs-mkdtemp.js diff --git a/doc/api/fs.markdown b/doc/api/fs.markdown index e8ec2f9563098b..61430cf6573b1c 100644 --- a/doc/api/fs.markdown +++ b/doc/api/fs.markdown @@ -532,6 +532,30 @@ to the completion callback. `mode` defaults to `0o777`. Synchronous mkdir(2). Returns `undefined`. +## fs.mkdtemp(prefix, callback) + +Creates a unique temporary directory. + +Generates six random characters to be appended behind a required +`prefix` to create a unique temporary directory. + +The created folder path is passed as a string to the callback's second +parameter. + +Example: + +```js +fs.mkdtemp('/tmp/foo-', (err, folder) => { + console.log(folder); + // Prints: /tmp/foo-itXde2 +}); +``` + +## fs.mkdtempSync(template) + +The synchronous version of [`fs.mkdtemp()`][]. Returns the created +folder path. + ## fs.open(path, flags[, mode], callback) Asynchronous file open. See open(2). `flags` can be: diff --git a/lib/fs.js b/lib/fs.js index 42a5098cd578ce..5a3176158f6718 100644 --- a/lib/fs.js +++ b/lib/fs.js @@ -2078,3 +2078,24 @@ SyncWriteStream.prototype.destroy = function() { }; SyncWriteStream.prototype.destroySoon = SyncWriteStream.prototype.destroy; + +fs.mkdtemp = function(prefix, callback) { + if (typeof callback !== 'function') { + throw new TypeError('"callback" argument must be a function'); + } + + if (!nullCheck(prefix, callback)) { + return; + } + + var req = new FSReqWrap(); + req.oncomplete = callback; + + binding.mkdtemp(prefix + 'XXXXXX', req); +}; + +fs.mkdtempSync = function(prefix) { + nullCheck(prefix); + + return binding.mkdtemp(prefix + 'XXXXXX'); +}; diff --git a/src/node_file.cc b/src/node_file.cc index 5c1b39864c5508..3fbec265663910 100644 --- a/src/node_file.cc +++ b/src/node_file.cc @@ -200,6 +200,11 @@ static void After(uv_fs_t *req) { static_cast(req->ptr)); break; + case UV_FS_MKDTEMP: + argv[1] = String::NewFromUtf8(env->isolate(), + static_cast(req->path)); + break; + case UV_FS_READLINK: argv[1] = String::NewFromUtf8(env->isolate(), static_cast(req->ptr)); @@ -1291,6 +1296,25 @@ static void FUTimes(const FunctionCallbackInfo& args) { } } +static void Mkdtemp(const FunctionCallbackInfo& args) { + Environment* env = Environment::GetCurrent(args); + + if (args.Length() < 1) + return TYPE_ERROR("template is required"); + if (!args[0]->IsString()) + return TYPE_ERROR("template must be a string"); + + node::Utf8Value tmpl(env->isolate(), args[0]); + + if (args[1]->IsObject()) { + ASYNC_CALL(mkdtemp, args[1], *tmpl); + } else { + SYNC_CALL(mkdtemp, *tmpl, *tmpl); + args.GetReturnValue().Set(String::NewFromUtf8(env->isolate(), + SYNC_REQ.path)); + } +} + void FSInitialize(const FunctionCallbackInfo& args) { Local stats_constructor = args[0].As(); CHECK(stats_constructor->IsFunction()); @@ -1344,6 +1368,8 @@ void InitFs(Local target, env->SetMethod(target, "utimes", UTimes); env->SetMethod(target, "futimes", FUTimes); + env->SetMethod(target, "mkdtemp", Mkdtemp); + StatWatcher::Initialize(env, target); // Create FunctionTemplate for FSReqWrap diff --git a/test/parallel/test-fs-mkdtemp.js b/test/parallel/test-fs-mkdtemp.js new file mode 100644 index 00000000000000..ad8a6cb46e02eb --- /dev/null +++ b/test/parallel/test-fs-mkdtemp.js @@ -0,0 +1,27 @@ +'use strict'; + +const common = require('../common'); +const assert = require('assert'); +const fs = require('fs'); +const path = require('path'); +const Buffer = require('buffer').Buffer; + +common.refreshTmpDir(); + +const tmpFolder = fs.mkdtempSync(path.join(common.tmpDir, 'foo.')); + +assert(path.basename(tmpFolder).length === 'foo.XXXXXX'.length); +assert(common.fileExists(tmpFolder)); + +const utf8 = fs.mkdtempSync(path.join(common.tmpDir, '\u0222abc.')); +assert.equal(Buffer.byteLength(path.basename(utf8)), + Buffer.byteLength('\u0222abc.XXXXXX')); +assert(common.fileExists(utf8)); + +fs.mkdtemp( + path.join(common.tmpDir, 'bar.'), + common.mustCall(function(err, folder) { + assert.ifError(err); + assert(common.fileExists(folder)); + }) +); From f2751764fea8f772eb416249bbd283f3c6fa1e89 Mon Sep 17 00:00:00 2001 From: Jackson Tian Date: Thu, 21 Jan 2016 15:53:20 +0800 Subject: [PATCH 18/37] http: speed up checkIsHttpToken The Regex implementation is not faster than ascii code compare. the field name is shorter, the speed is faster. benchmark result here: https://bitbucket.org/snippets/JacksonTian/Rnbad/benchmark-result PR-URL: https://github.com/nodejs/node/pull/4790 Reviewed-By: James M Snell Reviewed-By: Brian White --- benchmark/http/check_is_http_token.js | 52 +++++++++++++++++++++++++++ lib/_http_common.js | 50 ++++++++++++++++++++++++-- 2 files changed, 100 insertions(+), 2 deletions(-) create mode 100644 benchmark/http/check_is_http_token.js diff --git a/benchmark/http/check_is_http_token.js b/benchmark/http/check_is_http_token.js new file mode 100644 index 00000000000000..9e0b8279b58ed0 --- /dev/null +++ b/benchmark/http/check_is_http_token.js @@ -0,0 +1,52 @@ +'use strict'; + +const common = require('../common.js'); +const _checkIsHttpToken = require('_http_common')._checkIsHttpToken; + +const bench = common.createBenchmark(main, { + key: [ + 'TCN', + 'ETag', + 'date', + 'Vary', + 'server', + 'Server', + 'status', + 'version', + 'Expires', + 'alt-svc', + 'location', + 'Connection', + 'Keep-Alive', + 'content-type', + 'Content-Type', + 'Cache-Control', + 'Last-Modified', + 'Accept-Ranges', + 'content-length', + 'x-frame-options', + 'x-xss-protection', + 'Content-Encoding', + 'Content-Location', + 'Transfer-Encoding', + 'alternate-protocol', + ':', // invalid input + '@@', + '中文呢', // unicode + '((((())))', // invalid + ':alternate-protocol', // fast bailout + 'alternate-protocol:' // slow bailout + ], + n: [1e6], +}); + +function main(conf) { + var n = +conf.n; + var key = conf.key; + + bench.start(); + for (var i = 0; i < n; i++) { + _checkIsHttpToken(key); + } + bench.end(n); +} diff --git a/lib/_http_common.js b/lib/_http_common.js index 328b6eea8affba..08f93d8c4d04a2 100644 --- a/lib/_http_common.js +++ b/lib/_http_common.js @@ -225,10 +225,56 @@ exports.httpSocketSetup = httpSocketSetup; /** * Verifies that the given val is a valid HTTP token * per the rules defined in RFC 7230 + * See https://tools.ietf.org/html/rfc7230#section-3.2.6 + * + * This implementation of checkIsHttpToken() loops over the string instead of + * using a regular expression since the former is up to 180% faster with v8 4.9 + * depending on the string length (the shorter the string, the larger the + * performance difference) **/ -const token = /^[a-zA-Z0-9_!#$%&'*+.^`|~-]+$/; function checkIsHttpToken(val) { - return typeof val === 'string' && token.test(val); + if (typeof val !== 'string' || val.length === 0) + return false; + + for (var i = 0, len = val.length; i < len; i++) { + var ch = val.charCodeAt(i); + + if (ch >= 65 && ch <= 90) // A-Z + continue; + + if (ch >= 97 && ch <= 122) // a-z + continue; + + // ^ => 94 + // _ => 95 + // ` => 96 + // | => 124 + // ~ => 126 + if (ch === 94 || ch === 95 || ch === 96 || ch === 124 || ch === 126) + continue; + + if (ch >= 48 && ch <= 57) // 0-9 + continue; + + // ! => 33 + // # => 35 + // $ => 36 + // % => 37 + // & => 38 + // ' => 39 + // * => 42 + // + => 43 + // - => 45 + // . => 46 + if (ch >= 33 && ch <= 46) { + if (ch === 34 || ch === 40 || ch === 41 || ch === 44) + return false; + continue; + } + + return false; + } + return true; } exports._checkIsHttpToken = checkIsHttpToken; From 1d4c751ab0c95a1c9b47a3944320cf89f3bd4541 Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Wed, 23 Mar 2016 11:45:38 +0100 Subject: [PATCH 19/37] zlib: Fix handling of gzip magic bytes mid-file Only treat the gzip magic bytes, when encountered within the file after reading a single block, as the start of a new member when the previous member has ended. Add test files that reliably reproduce #5852. The gzipped file in test/fixtures/pseudo-multimember-gzip.gz contains the gzip magic bytes exactly at the position that node encounters after having read a single block, leading it to believe that a new data member is starting. Fixes: https://github.com/nodejs/node/issues/5852 PR-URL: https://github.com/nodejs/node/pull/5863 Reviewed-By: Ben Noordhuis Reviewed-By: Colin Ihrig Reviewed-By: James M Snell Reviewed-By: Jeremiah Senkpiel --- src/node_zlib.cc | 3 ++- test/fixtures/pseudo-multimember-gzip.gz | Bin 0 -> 161 bytes test/fixtures/pseudo-multimember-gzip.z | Bin 0 -> 148 bytes .../test-zlib-from-concatenated-gzip.js | 22 ++++++++++++++++++ 4 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 test/fixtures/pseudo-multimember-gzip.gz create mode 100644 test/fixtures/pseudo-multimember-gzip.z diff --git a/src/node_zlib.cc b/src/node_zlib.cc index 4984989bb44066..0712f8feec6f08 100644 --- a/src/node_zlib.cc +++ b/src/node_zlib.cc @@ -258,7 +258,8 @@ class ZCtx : public AsyncWrap { } } while (ctx->strm_.avail_in >= GZIP_MIN_HEADER_SIZE && - ctx->mode_ == GUNZIP) { + ctx->mode_ == GUNZIP && + ctx->err_ == Z_STREAM_END) { // Bytes remain in input buffer. Perhaps this is another compressed // member in the same archive, or just trailing garbage. // Check the header to find out. diff --git a/test/fixtures/pseudo-multimember-gzip.gz b/test/fixtures/pseudo-multimember-gzip.gz new file mode 100644 index 0000000000000000000000000000000000000000..a019c484d854820da00e478ed3d8509b626523e9 GIT binary patch literal 161 zcmb2|=3qF}^(l;r`RzeNMg|6kLkqt8zfI&_0A!*9`EFD`ZFzZ8bsY2l|6*hS01{gc ACjbBd literal 0 HcmV?d00001 diff --git a/test/fixtures/pseudo-multimember-gzip.z b/test/fixtures/pseudo-multimember-gzip.z new file mode 100644 index 0000000000000000000000000000000000000000..e87b13ab534fbca0aed4ef958fef8bd67644969e GIT binary patch literal 148 jcmb=J^Y)-2BLf4&p#@+4-{!L|05S&-G#LNpV_*aTG13WI literal 0 HcmV?d00001 diff --git a/test/parallel/test-zlib-from-concatenated-gzip.js b/test/parallel/test-zlib-from-concatenated-gzip.js index 9bee905b33836b..36650e7b3b737f 100644 --- a/test/parallel/test-zlib-from-concatenated-gzip.js +++ b/test/parallel/test-zlib-from-concatenated-gzip.js @@ -4,6 +4,8 @@ const common = require('../common'); const assert = require('assert'); const zlib = require('zlib'); +const path = require('path'); +const fs = require('fs'); const data = Buffer.concat([ zlib.gzipSync('abc'), @@ -16,3 +18,23 @@ zlib.gunzip(data, common.mustCall((err, result) => { assert.ifError(err); assert.equal(result, 'abcdef', 'result should match original string'); })); + +// files that have the "right" magic bytes for starting a new gzip member +// in the middle of themselves, even if they are part of a single +// regularly compressed member +const pmmFileZlib = path.join(common.fixturesDir, 'pseudo-multimember-gzip.z'); +const pmmFileGz = path.join(common.fixturesDir, 'pseudo-multimember-gzip.gz'); + +const pmmExpected = zlib.inflateSync(fs.readFileSync(pmmFileZlib)); +const pmmResultBuffers = []; + +fs.createReadStream(pmmFileGz) + .pipe(zlib.createGunzip()) + .on('error', (err) => { + assert.ifError(err); + }) + .on('data', (data) => pmmResultBuffers.push(data)) + .on('finish', common.mustCall(() => { + assert.deepStrictEqual(Buffer.concat(pmmResultBuffers), pmmExpected, + 'result should match original random garbage'); + })); From 5b5cb7ee2b0f58fefa6188db560f3c810c9df638 Mon Sep 17 00:00:00 2001 From: Bogdan Lobor Date: Thu, 24 Mar 2016 09:52:27 +0200 Subject: [PATCH 20/37] win,build: build and test add-ons on test-ci MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added build-addons task, it allows to build and test native addons during test-ci task. Basically it should work in same way like Makefile "build-addons" task. Reviewed-By: Rod Vagg Reviewed-By: João Reis PR-URL: https://github.com/nodejs/node/pull/5886 Fixes: https://github.com/nodejs/node/issues/2537 --- vcbuild.bat | 34 ++++++++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/vcbuild.bat b/vcbuild.bat index d5612979e3b28e..144e5420634fdb 100644 --- a/vcbuild.bat +++ b/vcbuild.bat @@ -36,6 +36,7 @@ set release_urls_arg= set build_release= set enable_vtune_arg= set configure_flags= +set build_addons= :next-arg if "%1"=="" goto args-done @@ -54,8 +55,9 @@ if /i "%1"=="nosnapshot" set nosnapshot=1&goto arg-ok if /i "%1"=="noetw" set noetw=1&goto arg-ok if /i "%1"=="noperfctr" set noperfctr=1&goto arg-ok if /i "%1"=="licensertf" set licensertf=1&goto arg-ok -if /i "%1"=="test" set test_args=%test_args% sequential parallel message -J&set jslint=1&goto arg-ok -if /i "%1"=="test-ci" set test_args=%test_args% %test_ci_args% -p tap --logfile test.tap message sequential parallel&goto arg-ok +if /i "%1"=="test" set test_args=%test_args% addons sequential parallel message -J&set jslint=1&set build_addons=1&goto arg-ok +if /i "%1"=="test-ci" set test_args=%test_args% %test_ci_args% -p tap --logfile test.tap addons message sequential parallel&set build_addons=1&goto arg-ok +if /i "%1"=="test-addons" set test_args=%test_args% addons&set build_addons=1&goto arg-ok if /i "%1"=="test-simple" set test_args=%test_args% sequential parallel -J&goto arg-ok if /i "%1"=="test-message" set test_args=%test_args% message&goto arg-ok if /i "%1"=="test-gc" set test_args=%test_args% gc&set buildnodeweak=1&goto arg-ok @@ -91,6 +93,9 @@ if defined build_release ( set i18n_arg=small-icu ) +:: assign path to node_exe +set "node_exe=%config%\node.exe" + if "%config%"=="Debug" set configure_flags=%configure_flags% --debug if defined nosnapshot set configure_flags=%configure_flags% --without-snapshot if defined noetw set configure_flags=%configure_flags% --without-etw& set noetw_msi_arg=/p:NoETW=1 @@ -240,15 +245,36 @@ ssh -F %SSHCONFIG% %STAGINGSERVER% "touch nodejs/%DISTTYPEDIR%/v%FULLVERSION%/no :build-node-weak @rem Build node-weak if required -if "%buildnodeweak%"=="" goto run-tests +if "%buildnodeweak%"=="" goto build-addons "%config%\node" deps\npm\node_modules\node-gyp\bin\node-gyp rebuild --directory="%~dp0test\gc\node_modules\weak" --nodedir="%~dp0." if errorlevel 1 goto build-node-weak-failed -goto run-tests +goto build-addons :build-node-weak-failed echo Failed to build node-weak. goto exit +:build-addons +if not defined build_addons goto run-tests +if not exist "%node_exe%" ( + echo Failed to find node.exe + goto run-tests +) +echo Building add-ons +:: clear +for /d %%F in (test\addons\??_*) do ( + rd /s /q %%F +) +:: generate +"%node_exe%" tools\doc\addon-verify.js +:: building addons +for /d %%F in (test\addons\*) do ( + "%node_exe%" deps\npm\node_modules\node-gyp\bin\node-gyp rebuild ^ + --directory="%%F" ^ + --nodedir="%cd%" +) +goto run-tests + :run-tests if "%test_args%"=="" goto jslint if "%config%"=="Debug" set test_args=--mode=debug %test_args% From dddd36508845772dca6b71c65110fce87927c3cd Mon Sep 17 00:00:00 2001 From: firedfox Date: Tue, 29 Mar 2016 18:42:17 +0800 Subject: [PATCH 21/37] tools: fix json doc generation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Current processList function in tools/doc/json.js does not recognise {"type":"loose_item_start"}. Fix it. PR-URL: https://github.com/nodejs/node/pull/5943 Fixes: https://github.com/nodejs/node/issues/5942 Reviewed-By: Roman Reiss Reviewed-By: Robert Lindstädt --- tools/doc/json.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/doc/json.js b/tools/doc/json.js index 299c8ed9fd84ad..a80c7efb1f43cc 100644 --- a/tools/doc/json.js +++ b/tools/doc/json.js @@ -183,7 +183,7 @@ function processList(section) { list.forEach(function(tok) { var type = tok.type; if (type === 'space') return; - if (type === 'list_item_start') { + if (type === 'list_item_start' || type === 'loose_item_start') { var n = {}; if (!current) { values.push(n); From cebb8d7df0f93da0ec49133a295a8bbcfb683f3b Mon Sep 17 00:00:00 2001 From: Kyle Simpson Date: Sat, 22 Aug 2015 13:46:36 -0500 Subject: [PATCH 22/37] timers: fixing API refs to use safe internal refs Added safe internal references for 'clearTimeout(..)', 'active(..)', and 'unenroll(..)'. Changed various API refs from 'export.*' to use these safe internal references. Now, overwriting the global API identifiers does not create potential breakage and/or race conditions. See Issue #2493. PR-URL: https://github.com/nodejs/node/pull/5882 Reviewed-By: James M Snell Reviewed-By: Jeremiah Senkpiel Fixes: https://github.com/nodejs/node/issues/2493 --- lib/timers.js | 16 ++++++++-------- test/parallel/test-timers-api-refs.js | 20 ++++++++++++++++++++ 2 files changed, 28 insertions(+), 8 deletions(-) create mode 100644 test/parallel/test-timers-api-refs.js diff --git a/lib/timers.js b/lib/timers.js index 2d17bdf27a5d55..c02798f068968f 100644 --- a/lib/timers.js +++ b/lib/timers.js @@ -100,7 +100,7 @@ const unrefedLists = {}; // Schedule or re-schedule a timer. // The item must have been enroll()'d first. -exports.active = function(item) { +const active = exports.active = function(item) { insert(item, false); }; @@ -346,19 +346,19 @@ exports.setTimeout = function(callback, after) { if (process.domain) timer.domain = process.domain; - exports.active(timer); + active(timer); return timer; }; -exports.clearTimeout = function(timer) { +const clearTimeout = exports.clearTimeout = function(timer) { if (timer && (timer[kOnTimeout] || timer._onTimeout)) { timer[kOnTimeout] = timer._onTimeout = null; if (timer instanceof Timeout) { timer.close(); // for after === 0 } else { - exports.unenroll(timer); + unenroll(timer); } } }; @@ -400,7 +400,7 @@ exports.setInterval = function(callback, repeat) { timer._repeat = ontimeout; if (process.domain) timer.domain = process.domain; - exports.active(timer); + active(timer); return timer; @@ -416,7 +416,7 @@ exports.setInterval = function(callback, repeat) { this._handle.start(repeat, 0); } else { timer._idleTimeout = repeat; - exports.active(timer); + active(timer); } } }; @@ -459,7 +459,7 @@ Timeout.prototype.unref = function() { // Prevent running cb again when unref() is called during the same cb if (this._called && !this._repeat) { - exports.unenroll(this); + unenroll(this); return; } @@ -487,7 +487,7 @@ Timeout.prototype.close = function() { this._handle[kOnTimeout] = null; this._handle.close(); } else { - exports.unenroll(this); + unenroll(this); } return this; }; diff --git a/test/parallel/test-timers-api-refs.js b/test/parallel/test-timers-api-refs.js new file mode 100644 index 00000000000000..00d1c1355fe045 --- /dev/null +++ b/test/parallel/test-timers-api-refs.js @@ -0,0 +1,20 @@ +'use strict'; +const common = require('../common'); +const assert = require('assert'); + +// don't verify the globals for this test +common.globalCheck = false; + +// try overriding global APIs to make sure +// they're not relied on by the timers +global.clearTimeout = assert.fail; + +// run timeouts/intervals through the paces +const intv = setInterval(function() {}, 1); + +setTimeout(function() { + clearInterval(intv); +}, 100); + +setTimeout(function() {}, 2); + From cc85dd70d36a24ac47248b30d422f504b99f8362 Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Tue, 22 Mar 2016 15:11:53 -0700 Subject: [PATCH 23/37] test: fix test-debugger-client.js Fix long-broken test-debugger-client by adding missing `\r\n\r\n` separator. PR-URL: https://github.com/nodejs/node/pull/5851 Reviewed-By: James M Snell Reviewed-By: Colin Ihrig --- test/debugger/test-debugger-client.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/debugger/test-debugger-client.js b/test/debugger/test-debugger-client.js index 972c94707ee56b..fe65405c8583ce 100644 --- a/test/debugger/test-debugger-client.js +++ b/test/debugger/test-debugger-client.js @@ -73,7 +73,7 @@ var d = 'Content-Length: 466\r\n\r\n' + '"context":{"ref":0},"text":"dns.js (lines: 241)"}},"refs":' + '[{"handle":0' + ',"type":"context","text":"#"}],"running":true}' + - 'Content-Length: 119\r\n\r\n' + + '\r\n\r\nContent-Length: 119\r\n\r\n' + '{"seq":11,"type":"event","event":"scriptCollected","success":true,' + '"body":{"script":{"id":26}},"refs":[],"running":true}'; p.execute(d); From ee8de3f0c49b92d14a85b153b582d0bd87ce620e Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Tue, 22 Mar 2016 20:12:45 -0700 Subject: [PATCH 24/37] test: fix flaky test-http-set-timeout Increase timeout on Raspberry Pi to alleviate flakiness. Fixes: https://github.com/nodejs/node/issues/5854 PR-URL: https://github.com/nodejs/node/pull/5856 Reviewed-By: James M Snell Reviewed-By: Colin Ihrig --- test/parallel/test-http-set-timeout.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/parallel/test-http-set-timeout.js b/test/parallel/test-http-set-timeout.js index 9bda60b2226443..ca238de43144e2 100644 --- a/test/parallel/test-http-set-timeout.js +++ b/test/parallel/test-http-set-timeout.js @@ -20,7 +20,7 @@ server.listen(common.PORT, function() { var errorTimer = setTimeout(function() { throw new Error('Timeout was not successful'); - }, 2000); + }, common.platformTimeout(2000)); var x = http.get({port: common.PORT, path: '/'}); x.on('error', function() { From 42903cc52ede40cfe7c836a23d5b32fbb5dd731b Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Fri, 25 Mar 2016 18:40:09 +0100 Subject: [PATCH 25/37] test: move dns test to test/internet parallel/test-dns-cares-domains needs a working internet connection to function (or a local DNS resolver that returns an answer quickly), otherwise it times out. Move it to test/internet. PR-URL: https://github.com/nodejs/node/pull/5905 Reviewed-By: Colin Ihrig Reviewed-By: James M Snell --- test/{parallel => internet}/test-dns-cares-domains.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename test/{parallel => internet}/test-dns-cares-domains.js (100%) diff --git a/test/parallel/test-dns-cares-domains.js b/test/internet/test-dns-cares-domains.js similarity index 100% rename from test/parallel/test-dns-cares-domains.js rename to test/internet/test-dns-cares-domains.js From 25244c1d2d4bc85d89e9e2cf23c5fd697fae75a1 Mon Sep 17 00:00:00 2001 From: Brian White Date: Thu, 24 Mar 2016 18:05:48 -0400 Subject: [PATCH 26/37] test: fix flaky test-net-socket-timeout Fixes: https://github.com/nodejs/node/issues/5892 PR-URL: https://github.com/nodejs/node/pull/5902 Reviewed-By: Ben Noordhuis Reviewed-By: James M Snell --- test/parallel/test-net-socket-timeout.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/parallel/test-net-socket-timeout.js b/test/parallel/test-net-socket-timeout.js index f15b20c023194f..7cae61d71bc4a5 100644 --- a/test/parallel/test-net-socket-timeout.js +++ b/test/parallel/test-net-socket-timeout.js @@ -41,7 +41,7 @@ server.listen(common.PORT, function() { }); var timer = setTimeout(function() { process.exit(1); - }, 200); + }, common.platformTimeout(200)); }); process.on('exit', function() { From f616adb12c996cb789e8790e66fcb4ff0058ba3f Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Thu, 24 Mar 2016 15:11:36 -0700 Subject: [PATCH 27/37] test: confirm globals not used internally PR-URL: https://github.com/nodejs/node/pull/5882 Reviewed-By: James M Snell Reviewed-By: Jeremiah Senkpiel --- test/parallel/test-timers-api-refs.js | 29 ++++++++++++++------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/test/parallel/test-timers-api-refs.js b/test/parallel/test-timers-api-refs.js index 00d1c1355fe045..c062369444b1e0 100644 --- a/test/parallel/test-timers-api-refs.js +++ b/test/parallel/test-timers-api-refs.js @@ -1,20 +1,21 @@ 'use strict'; const common = require('../common'); -const assert = require('assert'); +const timers = require('timers'); -// don't verify the globals for this test -common.globalCheck = false; +// delete global APIs to make sure they're not relied on by the internal timers +// code +delete global.setTimeout; +delete global.clearTimeout; +delete global.setInterval; +delete global.clearInterval; +delete global.setImmediate; +delete global.clearImmediate; -// try overriding global APIs to make sure -// they're not relied on by the timers -global.clearTimeout = assert.fail; +const timeoutCallback = () => { timers.clearTimeout(timeout); }; +const timeout = timers.setTimeout(common.mustCall(timeoutCallback), 1); -// run timeouts/intervals through the paces -const intv = setInterval(function() {}, 1); - -setTimeout(function() { - clearInterval(intv); -}, 100); - -setTimeout(function() {}, 2); +const intervalCallback = () => { timers.clearInterval(interval); }; +const interval = timers.setInterval(common.mustCall(intervalCallback), 1); +const immediateCallback = () => { timers.clearImmediate(immediate); }; +const immediate = timers.setImmediate(immediateCallback); From 5dc8df22158ce4a9a540a74231104260f4cb38a2 Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Mon, 28 Mar 2016 15:36:53 -0400 Subject: [PATCH 28/37] test: exclude new fs watch test for AIX As per https://github.com/nodejs/node/issues/5085 exclude new test from AIX until we have fixes for libuv for fs watching on AIX. Excluding test so AIX tests are green and we don't miss other regressions PR-URL: https://github.com/nodejs/node/pull/5937 Reviewed-By: James M Snell Reviewed-By: Colin Ihrig Reviewed-By: Ben Noordhuis --- test/parallel/parallel.status | 1 + 1 file changed, 1 insertion(+) diff --git a/test/parallel/parallel.status b/test/parallel/parallel.status index fb3d39e9f40286..792f036ec0abee 100644 --- a/test/parallel/parallel.status +++ b/test/parallel/parallel.status @@ -24,3 +24,4 @@ test-tick-processor : PASS,FLAKY # regressions until this work is complete [$system==aix] test-fs-watch-enoent : FAIL, PASS +test-fs-watch-encoding : FAIL, PASS From 5822f4799a1e9514690ccccfb17fd07a1c0ccf8d Mon Sep 17 00:00:00 2001 From: Santiago Gimeno Date: Wed, 16 Mar 2016 23:21:11 +0100 Subject: [PATCH 29/37] test: remove the use of curl in the test suite MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There were 2 tests using curl: `test-http-304.js` is removed because it was initially included to test that the 304 response does not contain a body, and this is already covered by `test-http-chunked-304.js`. `test-http-curl-chunk-problem` has been renamed and refactored so instead of using curl, it uses 2 child node processes: one for sending the HTTP request and the other to calculate the sha1sum. Originally, this test was introduced to fix a bug in `nodejs@0.2.x`, and it was not fixed until `nodejs@0.2.5`. A modified version of this test has been run with `nodejs@0.2.0` and reproduces the problem. This same test has been run with `nodejs@0.2.6` and runs correctly. Fixes: https://github.com/nodejs/node/issues/5174 PR-URL: https://github.com/nodejs/node/pull/5750 Reviewed-By: Ben Noordhuis Reviewed-By: Johan Bergström Reviewed-By: Rich Trott Reviewed-By: Jeremiah Senkpiel --- test/parallel/test-http-304.js | 18 ---- test/parallel/test-http-chunk-problem.js | 93 +++++++++++++++++++ test/parallel/test-http-curl-chunk-problem.js | 71 -------------- 3 files changed, 93 insertions(+), 89 deletions(-) delete mode 100644 test/parallel/test-http-304.js create mode 100644 test/parallel/test-http-chunk-problem.js delete mode 100644 test/parallel/test-http-curl-chunk-problem.js diff --git a/test/parallel/test-http-304.js b/test/parallel/test-http-304.js deleted file mode 100644 index 6ac1c68d0d3665..00000000000000 --- a/test/parallel/test-http-304.js +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; -var common = require('../common'); - -var http = require('http'); -var childProcess = require('child_process'); - -var s = http.createServer(function(request, response) { - response.writeHead(304); - response.end(); -}); - -s.listen(common.PORT, function() { - childProcess.exec('curl -i http://127.0.0.1:' + common.PORT + '/', - function(err, stdout, stderr) { - if (err) throw err; - s.close(); - }); -}); diff --git a/test/parallel/test-http-chunk-problem.js b/test/parallel/test-http-chunk-problem.js new file mode 100644 index 00000000000000..6a5710e38e9f1b --- /dev/null +++ b/test/parallel/test-http-chunk-problem.js @@ -0,0 +1,93 @@ +'use strict'; +// http://groups.google.com/group/nodejs/browse_thread/thread/f66cd3c960406919 +const common = require('../common'); +const assert = require('assert'); +if (!common.hasCrypto) { + console.log('1..0 # Skipped: missing crypto'); + return; +} + +if (process.argv[2] === 'request') { + const http = require('http'); + const options = { + port: common.PORT, + path : '/' + }; + + http.get(options, (res) => { + res.pipe(process.stdout); + }); + + return; +} + +if (process.argv[2] === 'shasum') { + const crypto = require('crypto'); + const shasum = crypto.createHash('sha1'); + process.stdin.on('data', (d) => { + shasum.update(d); + }); + + process.stdin.on('close', () => { + process.stdout.write(shasum.digest('hex')); + }); + + return; +} + +const http = require('http'); +const cp = require('child_process'); + +const filename = require('path').join(common.tmpDir, 'big'); + +function executeRequest(cb) { + cp.exec([process.execPath, + __filename, + 'request', + '|', + process.execPath, + __filename, + 'shasum' ].join(' '), + (err, stdout, stderr) => { + if (err) throw err; + assert.equal('8c206a1a87599f532ce68675536f0b1546900d7a', + stdout.slice(0, 40)); + cb(); + } + ); +} + + +common.refreshTmpDir(); + +const ddcmd = common.ddCommand(filename, 10240); + +cp.exec(ddcmd, function(err, stdout, stderr) { + if (err) throw err; + const server = http.createServer(function(req, res) { + res.writeHead(200); + + // Create the subprocess + const cat = cp.spawn('cat', [filename]); + + // Stream the data through to the response as binary chunks + cat.stdout.on('data', (data) => { + res.write(data); + }); + + cat.stdout.on('end', () => res.end()); + + // End the response on exit (and log errors) + cat.on('exit', (code) => { + if (code !== 0) { + console.error('subprocess exited with code ' + code); + process.exit(1); + } + }); + + }); + + server.listen(common.PORT, () => { + executeRequest(() => server.close()); + }); +}); diff --git a/test/parallel/test-http-curl-chunk-problem.js b/test/parallel/test-http-curl-chunk-problem.js deleted file mode 100644 index f3e3a243287ce1..00000000000000 --- a/test/parallel/test-http-curl-chunk-problem.js +++ /dev/null @@ -1,71 +0,0 @@ -'use strict'; -var common = require('../common'); -var assert = require('assert'); -if (!common.opensslCli) { - console.log('1..0 # Skipped: node compiled without OpenSSL CLI.'); - return; -} - -// http://groups.google.com/group/nodejs/browse_thread/thread/f66cd3c960406919 -var http = require('http'); -var cp = require('child_process'); -var fs = require('fs'); - -var filename = require('path').join(common.tmpDir, 'big'); - -var count = 0; -function maybeMakeRequest() { - if (++count < 2) return; - console.log('making curl request'); - var cmd = 'curl http://127.0.0.1:' + common.PORT + '/ | ' + - '"' + common.opensslCli + '" sha1'; - cp.exec(cmd, function(err, stdout, stderr) { - if (err) throw err; - var hex = stdout.match(/([A-Fa-f0-9]{40})/)[0]; - assert.equal('8c206a1a87599f532ce68675536f0b1546900d7a', hex); - console.log('got the correct response'); - fs.unlink(filename); - server.close(); - }); -} - - -common.refreshTmpDir(); - -var ddcmd = common.ddCommand(filename, 10240); -console.log('dd command: ', ddcmd); - -cp.exec(ddcmd, function(err, stdout, stderr) { - if (err) throw err; - maybeMakeRequest(); -}); - - -var server = http.createServer(function(req, res) { - res.writeHead(200); - - // Create the subprocess - var cat = cp.spawn('cat', [filename]); - - // Stream the data through to the response as binary chunks - cat.stdout.on('data', function(data) { - res.write(data); - }); - - cat.stdout.on('end', function onStdoutEnd() { - res.end(); - }); - - // End the response on exit (and log errors) - cat.on('exit', function(code) { - if (code !== 0) { - console.error('subprocess exited with code ' + code); - process.exit(1); - } - }); - -}); - -server.listen(common.PORT, maybeMakeRequest); - -console.log('Server running at http://localhost:8080'); From b8415add9450fae7d148e6715e999a44b1d38cf0 Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Tue, 29 Mar 2016 23:02:47 +0200 Subject: [PATCH 30/37] test: add test for piping large input from stdin Check that piping a large chunk of data from `process.stdin` into `process.stdout` does not lose any data by verifying that the output has the same size as the input. This is a regression test for #5927 and fails for the commits in the range [ace100945..89abe8680). PR-URL: https://github.com/nodejs/node/pull/5949 Reviewed-By: Ben Noordhuis Reviewed-By: Colin Ihrig Reviewed-By: Matteo Collina --- test/parallel/test-stdin-pipe-large.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 test/parallel/test-stdin-pipe-large.js diff --git a/test/parallel/test-stdin-pipe-large.js b/test/parallel/test-stdin-pipe-large.js new file mode 100644 index 00000000000000..5f4a2f10c8dd6d --- /dev/null +++ b/test/parallel/test-stdin-pipe-large.js @@ -0,0 +1,23 @@ +'use strict'; +// See https://github.com/nodejs/node/issues/5927 + +const common = require('../common'); +const assert = require('assert'); +const spawn = require('child_process').spawn; + +if (process.argv[2] === 'child') { + process.stdin.pipe(process.stdout); + return; +} + +const child = spawn(process.execPath, [__filename, 'child'], { stdio: 'pipe' }); + +const expectedBytes = 1024 * 1024; +let readBytes = 0; + +child.stdin.end(Buffer.alloc(expectedBytes)); + +child.stdout.on('data', (chunk) => readBytes += chunk.length); +child.stdout.on('end', common.mustCall(() => { + assert.strictEqual(readBytes, expectedBytes); +})); From 3f6fbaf7ea107858d3938cca504768108ea36592 Mon Sep 17 00:00:00 2001 From: Tom Gallacher Date: Fri, 18 Dec 2015 12:24:56 +0000 Subject: [PATCH 31/37] src: override v8 thread defaults using cli options Based on the conversation in #4243 this implements a way to increase and decrease the size of the thread pool used in v8. Currently v8 restricts the thread pool size to `kMaxThreadPoolSize` which at this commit is (4). So it is only possible to decrease the thread pool size at the time of this commit. However with changes upstream this could change at a later date. If set to 0 then v8 would choose an appropriate size of the thread pool based on the number of online processors. PR-URL: https://github.com/nodejs/node/pull/4344 Reviewed-By: James M Snell Reviewed-By: Fedor Indutny Reviewed-By: Colin Ihrig --- doc/node.1 | 8 +++++++- src/node.cc | 9 ++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/doc/node.1 b/doc/node.1 index e1b2f77dd9b307..b2ea38eb59b726 100644 --- a/doc/node.1 +++ b/doc/node.1 @@ -99,6 +99,13 @@ Process v8 profiler output generated using the v8 option \fB\-\-prof\fR .BR \-\-v8\-options Print v8 command line options. +.TP +.BR \-\-v8\-pool\-size =\fInum\fR +Set v8's thread pool size which will be used to allocate background jobs. +If set to 0 then v8 will choose an appropriate size of the thread pool based +on the number of online processors. If the value provided is larger than v8's +max then the largest value will be chosen. + .TP .BR \-\-tls\-cipher\-list =\fIlist\fR Specify an alternative default TLS cipher list. (Requires Node.js to be built with crypto support. (Default)) @@ -115,7 +122,6 @@ Force FIPS-compliant crypto on startup. (Cannot be disabled from script code.) ( .BR \-\-icu\-data\-dir =\fIfile\fR Specify ICU data load path. (overrides \fBNODE_ICU_DATA\fR) - .SH ENVIRONMENT VARIABLES .TP diff --git a/src/node.cc b/src/node.cc index b5bffa113156df..a3dd6c0bd8e1e9 100644 --- a/src/node.cc +++ b/src/node.cc @@ -145,6 +145,8 @@ static const char** preload_modules = nullptr; static bool use_debug_agent = false; static bool debug_wait_connect = false; static int debug_port = 5858; +static const int v8_default_thread_pool_size = 4; +static int v8_thread_pool_size = v8_default_thread_pool_size; static bool prof_process = false; static bool v8_is_profiling = false; static bool node_is_initialized = false; @@ -169,7 +171,6 @@ static uv_async_t dispatch_debug_messages_async; static node::atomic node_isolate; static v8::Platform* default_platform; - static void PrintErrorString(const char* format, ...) { va_list ap; va_start(ap, format); @@ -3316,6 +3317,7 @@ static void PrintHelp() { " --zero-fill-buffers automatically zero-fill all newly allocated\n" " Buffer and SlowBuffer instances\n" " --v8-options print v8 command line options\n" + " --v8-pool-size=num set v8's thread pool size\n" #if HAVE_OPENSSL " --tls-cipher-list=val use an alternative default TLS cipher list\n" #endif @@ -3459,6 +3461,8 @@ static void ParseArgs(int* argc, } else if (strcmp(arg, "--v8-options") == 0) { new_v8_argv[new_v8_argc] = "--help"; new_v8_argc += 1; + } else if (strncmp(arg, "--v8-pool-size=", 15) == 0) { + v8_thread_pool_size = atoi(arg + 15); #if HAVE_OPENSSL } else if (strncmp(arg, "--tls-cipher-list=", 18) == 0) { default_cipher_list = arg + 18; @@ -4266,8 +4270,7 @@ int Start(int argc, char** argv) { V8::SetEntropySource(crypto::EntropySource); #endif - const int thread_pool_size = 4; - default_platform = v8::platform::CreateDefaultPlatform(thread_pool_size); + default_platform = v8::platform::CreateDefaultPlatform(v8_thread_pool_size); V8::InitializePlatform(default_platform); V8::Initialize(); From 58de7681838672d92b1484937d44dd5f3a418d68 Mon Sep 17 00:00:00 2001 From: Prince J Wesley Date: Mon, 7 Mar 2016 10:31:33 +0530 Subject: [PATCH 32/37] repl: support standalone blocks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Enable support for standalone block statements. ```js node 🙈 ₹ git:(upstream ⚡ bare-block) ./node > { var x = 3; console.log(x); } 3 undefined > {} {} > { x:1, y:"why not", z: function() {} } { x: 1, y: 'why not', z: [Function] } > ``` For the ambiguous inputs like `{ x }`, the existing REPL behaviour (ES6 literal shorthand) is preserved (prefers expression over statement). Fixes: https://github.com/nodejs/node/issues/5576 PR-URL: https://github.com/nodejs/node/pull/5581 Reviewed-By: James M Snell Reviewed-By: Evan Lucas --- lib/repl.js | 23 +++++++++++++++++------ test/parallel/test-repl.js | 2 ++ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/lib/repl.js b/lib/repl.js index 35cde4c1df0ec0..7b3b7d11739add 100644 --- a/lib/repl.js +++ b/lib/repl.js @@ -220,7 +220,7 @@ function REPLServer(prompt, eval_ = eval_ || defaultEval; function defaultEval(code, context, file, cb) { - var err, result, retry = false; + var err, result, retry = false, input = code, wrappedErr; // first, create the Script object to check the syntax while (true) { try { @@ -238,14 +238,23 @@ function REPLServer(prompt, debug('parse error %j', code, e); if (self.replMode === exports.REPL_MODE_MAGIC && e.message === BLOCK_SCOPED_ERROR && - !retry) { - retry = true; + !retry || self.wrappedCmd) { + if (self.wrappedCmd) { + self.wrappedCmd = false; + // unwrap and try again + code = `${input.substring(1, input.length - 2)}\n`; + wrappedErr = e; + } else { + retry = true; + } continue; } - if (isRecoverableError(e, self)) - err = new Recoverable(e); + // preserve original error for wrapped command + const error = wrappedErr || e; + if (isRecoverableError(error, self)) + err = new Recoverable(error); else - err = e; + err = error; } break; } @@ -418,6 +427,7 @@ function REPLServer(prompt, // to wrap it in parentheses, so that it will be interpreted as // an expression. evalCmd = '(' + evalCmd + ')\n'; + self.wrappedCmd = true; } else { // otherwise we just append a \n so that it will be either // terminated, or continued onto the next expression if it's an @@ -435,6 +445,7 @@ function REPLServer(prompt, debug('finish', e, ret); self.memory(cmd); + self.wrappedCmd = false; if (e && !self.bufferedCommand && cmd.trim().match(/^npm /)) { self.outputStream.write('npm should be run outside of the ' + 'node repl, in your normal shell.\n' + diff --git a/test/parallel/test-repl.js b/test/parallel/test-repl.js index 7ec9f1c3637349..ab7df802ada8d5 100644 --- a/test/parallel/test-repl.js +++ b/test/parallel/test-repl.js @@ -323,6 +323,8 @@ function error_test() { { client: client_unix, send: 'function x(s) {\nreturn s.replace(/.*/,"");\n}', expect: prompt_multiline + prompt_multiline + 'undefined\n' + prompt_unix }, + { client: client_unix, send: '{ var x = 4; }', + expect: 'undefined\n' + prompt_unix }, ]); } From 6ea6b640c05fc855d4015fb930555014d98446fc Mon Sep 17 00:00:00 2001 From: Brian White Date: Wed, 23 Mar 2016 04:45:46 -0400 Subject: [PATCH 33/37] querystring: don't stringify bad surrogate pair Fixes: https://github.com/nodejs/node/issues/3702 PR-URL: https://github.com/nodejs/node/pull/5858 Reviewed-By: Ben Noordhuis Reviewed-By: Benjamin Gruenbaum Reviewed-By: Colin Ihrig Reviewed-By: James M Snell --- lib/querystring.js | 2 +- test/parallel/test-querystring.js | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/querystring.js b/lib/querystring.js index b56ad77012d035..b88e685b677c70 100644 --- a/lib/querystring.js +++ b/lib/querystring.js @@ -141,7 +141,7 @@ QueryString.escape = function(str) { if (i < str.length) c2 = str.charCodeAt(i) & 0x3FF; else - c2 = 0; + throw new URIError('URI malformed'); lastPos = i + 1; c = 0x10000 + (((c & 0x3FF) << 10) | c2); out += hexTable[0xF0 | (c >> 18)] + diff --git a/test/parallel/test-querystring.js b/test/parallel/test-querystring.js index c8e9cc7050af5b..24992b4c69a33a 100644 --- a/test/parallel/test-querystring.js +++ b/test/parallel/test-querystring.js @@ -139,6 +139,11 @@ qsWeirdObjects.forEach(function(testCase) { assert.equal(testCase[1], qs.stringify(testCase[0])); }); +// invalid surrogate pair throws URIError +assert.throws(function() { + qs.stringify({ foo: '\udc00' }); +}, URIError); + // coerce numbers to string assert.strictEqual('foo=0', qs.stringify({ foo: 0 })); assert.strictEqual('foo=0', qs.stringify({ foo: -0 })); From d1483f0f3053c4a40d572fa0300985ef8f0e5755 Mon Sep 17 00:00:00 2001 From: HUANG Wei Date: Tue, 8 Mar 2016 15:39:16 +0800 Subject: [PATCH 34/37] net: emit host in lookup event Previously, we emitted ip and addressType. This change includes the host as the last argument to the lookup event. PR-URL: https://github.com/nodejs/node/pull/5598 Reviewed-By: Colin Ihrig Reviewed-By: James M Snell Reviewed-By: Evan Lucas --- doc/api/net.markdown | 1 + lib/net.js | 2 +- test/parallel/test-net-dns-lookup.js | 14 ++++++++------ 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/doc/api/net.markdown b/doc/api/net.markdown index 655475bdaa0349..451b5f44ab36ac 100644 --- a/doc/api/net.markdown +++ b/doc/api/net.markdown @@ -317,6 +317,7 @@ Not applicable to UNIX sockets. * `err` {Error|Null} The error object. See [`dns.lookup()`][]. * `address` {String} The IP address. * `family` {String|Null} The address type. See [`dns.lookup()`][]. +* `host` {String} The hostname. ### Event: 'timeout' diff --git a/lib/net.js b/lib/net.js index 563827eb307db5..6731380d002b6b 100644 --- a/lib/net.js +++ b/lib/net.js @@ -963,7 +963,7 @@ function lookupAndConnect(self, options) { self._host = host; var lookup = options.lookup || dns.lookup; lookup(host, dnsopts, function(err, ip, addressType) { - self.emit('lookup', err, ip, addressType); + self.emit('lookup', err, ip, addressType, host); // It's possible we were destroyed while looking this up. // XXX it would be great if we could cancel the promise returned by diff --git a/test/parallel/test-net-dns-lookup.js b/test/parallel/test-net-dns-lookup.js index 2bcff9143c092d..097bdf8ecae0e0 100644 --- a/test/parallel/test-net-dns-lookup.js +++ b/test/parallel/test-net-dns-lookup.js @@ -10,12 +10,14 @@ var server = net.createServer(function(client) { }); server.listen(common.PORT, '127.0.0.1', function() { - net.connect(common.PORT, 'localhost').on('lookup', function(err, ip, type) { - assert.equal(err, null); - assert.equal(ip, '127.0.0.1'); - assert.equal(type, '4'); - ok = true; - }); + net.connect(common.PORT, 'localhost') + .on('lookup', function(err, ip, type, host) { + assert.equal(err, null); + assert.equal(ip, '127.0.0.1'); + assert.equal(type, '4'); + assert.equal(host, 'localhost'); + ok = true; + }); }); process.on('exit', function() { From 8982d09dcf7e82fc9bfd57730158c917606e650f Mon Sep 17 00:00:00 2001 From: Forrest L Norvell Date: Tue, 29 Mar 2016 23:30:51 -0700 Subject: [PATCH 35/37] deps: upgrade npm to 3.8.3 --- deps/npm/.mailmap | 2 + deps/npm/.npmignore | 1 + deps/npm/.travis.yml | 2 +- deps/npm/AUTHORS | 18 + deps/npm/CHANGELOG.md | 476 ++++- deps/npm/Makefile | 13 +- deps/npm/bin/npm | 7 + deps/npm/doc/cli/npm-adduser.md | 10 +- deps/npm/doc/cli/npm-bugs.md | 2 + deps/npm/doc/cli/npm-config.md | 2 + deps/npm/doc/cli/npm-dedupe.md | 2 + deps/npm/doc/cli/npm-dist-tag.md | 2 + deps/npm/doc/cli/npm-help-search.md | 2 +- deps/npm/doc/cli/npm-install.md | 9 +- deps/npm/doc/cli/npm-link.md | 11 +- deps/npm/doc/cli/npm-logout.md | 9 +- deps/npm/doc/cli/npm-owner.md | 2 + deps/npm/doc/cli/npm-search.md | 11 +- deps/npm/doc/cli/npm-test.md | 3 +- deps/npm/doc/cli/npm-update.md | 8 +- deps/npm/doc/cli/npm.md | 8 +- deps/npm/doc/files/package.json.md | 31 +- deps/npm/doc/misc/npm-config.md | 8 + deps/npm/doc/misc/npm-scope.md | 2 +- deps/npm/html/doc/README.html | 2 +- deps/npm/html/doc/cli/npm-access.html | 2 +- deps/npm/html/doc/cli/npm-adduser.html | 12 +- deps/npm/html/doc/cli/npm-bin.html | 2 +- deps/npm/html/doc/cli/npm-bugs.html | 4 +- deps/npm/html/doc/cli/npm-build.html | 2 +- deps/npm/html/doc/cli/npm-bundle.html | 2 +- deps/npm/html/doc/cli/npm-cache.html | 2 +- deps/npm/html/doc/cli/npm-completion.html | 2 +- deps/npm/html/doc/cli/npm-config.html | 4 +- deps/npm/html/doc/cli/npm-dedupe.html | 4 +- deps/npm/html/doc/cli/npm-deprecate.html | 2 +- deps/npm/html/doc/cli/npm-dist-tag.html | 4 +- deps/npm/html/doc/cli/npm-docs.html | 2 +- deps/npm/html/doc/cli/npm-edit.html | 2 +- deps/npm/html/doc/cli/npm-explore.html | 2 +- deps/npm/html/doc/cli/npm-help-search.html | 4 +- deps/npm/html/doc/cli/npm-help.html | 2 +- deps/npm/html/doc/cli/npm-init.html | 2 +- deps/npm/html/doc/cli/npm-install-test.html | 2 +- deps/npm/html/doc/cli/npm-install.html | 11 +- deps/npm/html/doc/cli/npm-link.html | 13 +- deps/npm/html/doc/cli/npm-logout.html | 12 +- deps/npm/html/doc/cli/npm-ls.html | 4 +- deps/npm/html/doc/cli/npm-outdated.html | 2 +- deps/npm/html/doc/cli/npm-owner.html | 4 +- deps/npm/html/doc/cli/npm-pack.html | 2 +- deps/npm/html/doc/cli/npm-ping.html | 2 +- deps/npm/html/doc/cli/npm-prefix.html | 2 +- deps/npm/html/doc/cli/npm-prune.html | 2 +- deps/npm/html/doc/cli/npm-publish.html | 2 +- deps/npm/html/doc/cli/npm-rebuild.html | 2 +- deps/npm/html/doc/cli/npm-repo.html | 2 +- deps/npm/html/doc/cli/npm-restart.html | 2 +- deps/npm/html/doc/cli/npm-root.html | 2 +- deps/npm/html/doc/cli/npm-run-script.html | 2 +- deps/npm/html/doc/cli/npm-search.html | 12 +- deps/npm/html/doc/cli/npm-shrinkwrap.html | 2 +- deps/npm/html/doc/cli/npm-star.html | 2 +- deps/npm/html/doc/cli/npm-stars.html | 2 +- deps/npm/html/doc/cli/npm-start.html | 2 +- deps/npm/html/doc/cli/npm-stop.html | 2 +- deps/npm/html/doc/cli/npm-tag.html | 2 +- deps/npm/html/doc/cli/npm-team.html | 2 +- deps/npm/html/doc/cli/npm-test.html | 5 +- deps/npm/html/doc/cli/npm-uninstall.html | 2 +- deps/npm/html/doc/cli/npm-unpublish.html | 2 +- deps/npm/html/doc/cli/npm-update.html | 10 +- deps/npm/html/doc/cli/npm-version.html | 2 +- deps/npm/html/doc/cli/npm-view.html | 2 +- deps/npm/html/doc/cli/npm-whoami.html | 2 +- deps/npm/html/doc/cli/npm.html | 14 +- deps/npm/html/doc/files/npm-folders.html | 2 +- deps/npm/html/doc/files/npm-global.html | 2 +- deps/npm/html/doc/files/npm-json.html | 25 +- deps/npm/html/doc/files/npmrc.html | 2 +- deps/npm/html/doc/files/package.json.html | 25 +- deps/npm/html/doc/index.html | 2 +- deps/npm/html/doc/misc/npm-coding-style.html | 2 +- deps/npm/html/doc/misc/npm-config.html | 9 +- deps/npm/html/doc/misc/npm-developers.html | 2 +- deps/npm/html/doc/misc/npm-disputes.html | 8 +- deps/npm/html/doc/misc/npm-index.html | 2 +- deps/npm/html/doc/misc/npm-orgs.html | 2 +- deps/npm/html/doc/misc/npm-registry.html | 2 +- deps/npm/html/doc/misc/npm-scope.html | 4 +- deps/npm/html/doc/misc/npm-scripts.html | 2 +- deps/npm/html/doc/misc/removing-npm.html | 2 +- deps/npm/html/doc/misc/semver.html | 2 +- deps/npm/lib/cache.js | 2 +- deps/npm/lib/cache/caching-client.js | 3 +- deps/npm/lib/config.js | 19 + deps/npm/lib/config/cmd-list.js | 115 ++ deps/npm/lib/config/defaults.js | 2 + deps/npm/lib/config/get-credentials-by-uri.js | 15 +- deps/npm/lib/help.js | 5 +- deps/npm/lib/install.js | 13 +- .../npm/lib/install/filter-invalid-actions.js | 2 +- deps/npm/lib/logout.js | 16 +- deps/npm/lib/ls.js | 46 +- deps/npm/lib/npm.js | 116 +- deps/npm/lib/outdated.js | 2 +- deps/npm/lib/update.js | 2 +- deps/npm/lib/utils/lifecycle.js | 5 + deps/npm/lib/utils/map-to-registry.js | 48 +- deps/npm/lib/view.js | 35 +- deps/npm/man/man1/npm-README.1 | 2 +- deps/npm/man/man1/npm-access.1 | 2 +- deps/npm/man/man1/npm-adduser.1 | 12 +- deps/npm/man/man1/npm-bin.1 | 2 +- deps/npm/man/man1/npm-bugs.1 | 4 +- deps/npm/man/man1/npm-build.1 | 2 +- deps/npm/man/man1/npm-bundle.1 | 2 +- deps/npm/man/man1/npm-cache.1 | 2 +- deps/npm/man/man1/npm-completion.1 | 2 +- deps/npm/man/man1/npm-config.1 | 4 +- deps/npm/man/man1/npm-dedupe.1 | 4 +- deps/npm/man/man1/npm-deprecate.1 | 2 +- deps/npm/man/man1/npm-dist-tag.1 | 4 +- deps/npm/man/man1/npm-docs.1 | 2 +- deps/npm/man/man1/npm-edit.1 | 2 +- deps/npm/man/man1/npm-explore.1 | 2 +- deps/npm/man/man1/npm-help-search.1 | 4 +- deps/npm/man/man1/npm-help.1 | 2 +- deps/npm/man/man1/npm-init.1 | 2 +- deps/npm/man/man1/npm-install-test.1 | 2 +- deps/npm/man/man1/npm-install.1 | 11 +- deps/npm/man/man1/npm-link.1 | 13 +- deps/npm/man/man1/npm-logout.1 | 11 +- deps/npm/man/man1/npm-ls.1 | 4 +- deps/npm/man/man1/npm-outdated.1 | 2 +- deps/npm/man/man1/npm-owner.1 | 4 +- deps/npm/man/man1/npm-pack.1 | 2 +- deps/npm/man/man1/npm-ping.1 | 2 +- deps/npm/man/man1/npm-prefix.1 | 2 +- deps/npm/man/man1/npm-prune.1 | 2 +- deps/npm/man/man1/npm-publish.1 | 2 +- deps/npm/man/man1/npm-rebuild.1 | 2 +- deps/npm/man/man1/npm-repo.1 | 2 +- deps/npm/man/man1/npm-restart.1 | 2 +- deps/npm/man/man1/npm-root.1 | 2 +- deps/npm/man/man1/npm-run-script.1 | 2 +- deps/npm/man/man1/npm-search.1 | 16 +- deps/npm/man/man1/npm-shrinkwrap.1 | 2 +- deps/npm/man/man1/npm-star.1 | 2 +- deps/npm/man/man1/npm-stars.1 | 2 +- deps/npm/man/man1/npm-start.1 | 2 +- deps/npm/man/man1/npm-stop.1 | 2 +- deps/npm/man/man1/npm-tag.1 | 2 +- deps/npm/man/man1/npm-team.1 | 2 +- deps/npm/man/man1/npm-test.1 | 5 +- deps/npm/man/man1/npm-uninstall.1 | 2 +- deps/npm/man/man1/npm-unpublish.1 | 2 +- deps/npm/man/man1/npm-update.1 | 10 +- deps/npm/man/man1/npm-version.1 | 2 +- deps/npm/man/man1/npm-view.1 | 2 +- deps/npm/man/man1/npm-whoami.1 | 2 +- deps/npm/man/man1/npm.1 | 15 +- deps/npm/man/man5/npm-folders.5 | 2 +- deps/npm/man/man5/npm-global.5 | 2 +- deps/npm/man/man5/npm-json.5 | 35 +- deps/npm/man/man5/npmrc.5 | 2 +- deps/npm/man/man5/package.json.5 | 35 +- deps/npm/man/man7/npm-coding-style.7 | 2 +- deps/npm/man/man7/npm-config.7 | 13 +- deps/npm/man/man7/npm-developers.7 | 2 +- deps/npm/man/man7/npm-disputes.7 | 2 +- deps/npm/man/man7/npm-index.7 | 2 +- deps/npm/man/man7/npm-orgs.7 | 2 +- deps/npm/man/man7/npm-registry.7 | 2 +- deps/npm/man/man7/npm-scope.7 | 4 +- deps/npm/man/man7/npm-scripts.7 | 2 +- deps/npm/man/man7/removing-npm.7 | 2 +- deps/npm/man/man7/semver.7 | 2 +- deps/npm/node_modules/glob/README.md | 6 + deps/npm/node_modules/glob/changelog.md | 67 + deps/npm/node_modules/glob/common.js | 15 +- deps/npm/node_modules/glob/glob.js | 23 +- .../node_modules/brace-expansion/index.js | 2 +- .../node_modules/brace-expansion/package.json | 46 +- deps/npm/node_modules/glob/package.json | 57 +- deps/npm/node_modules/glob/sync.js | 9 +- .../node_modules/glob}/LICENSE | 0 .../node_modules/glob/README.md | 359 ++++ .../node_modules/glob/common.js | 226 +++ .../node_modules/glob/glob.js | 765 ++++++++ .../glob/node_modules/minimatch}/LICENSE | 8 +- .../glob/node_modules/minimatch/README.md | 216 +++ .../glob/node_modules/minimatch/minimatch.js | 912 +++++++++ .../node_modules/brace-expansion/.npmignore | 3 + .../node_modules/brace-expansion/README.md | 122 ++ .../node_modules/brace-expansion/example.js | 7 + .../node_modules/brace-expansion/index.js | 190 ++ .../node_modules/balanced-match}/.npmignore | 3 +- .../node_modules/balanced-match/.travis.yml | 3 + .../node_modules/balanced-match/LICENSE.md | 21 + .../node_modules/balanced-match/Makefile | 5 + .../node_modules/balanced-match/README.md | 89 + .../node_modules/balanced-match/example.js | 4 + .../node_modules/balanced-match/index.js | 50 + .../node_modules/balanced-match/package.json | 100 + .../balanced-match/test/balanced.js | 84 + .../node_modules/concat-map/.travis.yml | 4 + .../node_modules/concat-map/LICENSE | 18 + .../node_modules/concat-map/README.markdown | 62 + .../node_modules/concat-map/example/map.js | 6 + .../node_modules/concat-map/index.js | 13 + .../node_modules/concat-map/package.json | 111 ++ .../node_modules/concat-map/test/map.js | 39 + .../node_modules/brace-expansion/package.json | 106 ++ .../glob/node_modules/minimatch/package.json | 87 + .../node_modules/path-is-absolute/index.js | 20 + .../node_modules/path-is-absolute/license | 21 + .../path-is-absolute/package.json | 99 + .../node_modules/path-is-absolute/readme.md | 51 + .../node_modules/glob/package.json | 98 + .../node_modules/glob/sync.js | 460 +++++ .../npm/node_modules/lodash._baseuniq/LICENSE | 37 +- .../node_modules/lodash._baseuniq/README.md | 10 +- .../node_modules/lodash._baseuniq/index.js | 188 +- .../node_modules/lodash._createset/LICENSE | 23 + .../node_modules/lodash._createset/README.md | 18 + .../node_modules/lodash._createset/index.js | 260 +++ .../lodash._createset}/package.json | 45 +- .../node_modules/lodash._setcache/LICENSE | 23 + .../node_modules/lodash._setcache/README.md | 4 +- .../node_modules/lodash._setcache}/index.js | 68 +- .../lodash._setcache/package.json | 50 +- .../lodash._baseuniq/package.json | 137 +- .../npm/node_modules/lodash.clonedeep/LICENSE | 33 +- .../node_modules/lodash.clonedeep/README.md | 4 +- .../node_modules/lodash.clonedeep/index.js | 794 +------- .../lodash._arrayeach/LICENSE.txt | 22 - .../node_modules/lodash._arrayeach/README.md | 20 - .../node_modules/lodash._arrayeach/index.js | 31 - .../lodash._arrayeach/package.json | 99 - .../node_modules/lodash._baseclone/LICENSE | 23 + .../node_modules/lodash._baseclone/README.md | 18 + .../node_modules/lodash._baseclone/index.js | 1644 +++++++++++++++++ .../package.json | 58 +- .../node_modules/lodash._basefor/LICENSE | 22 - .../node_modules/lodash._basefor/README.md | 18 - .../node_modules/lodash._basefor/index.js | 48 - .../node_modules/lodash._basefor/package.json | 97 - .../node_modules/lodash._root/LICENSE | 22 - .../node_modules/lodash._root/README.md | 18 - .../node_modules/lodash._root/index.js | 53 - .../node_modules/lodash._root/package.json | 94 - .../node_modules/lodash._stack/LICENSE | 22 - .../node_modules/lodash._stack/README.md | 18 - .../node_modules/lodash._stack/index.js | 249 --- .../node_modules/lodash._mapcache/LICENSE | 22 - .../node_modules/lodash._mapcache/README.md | 18 - .../lodash.clonedeep/package.json | 44 +- .../node_modules/lodash.isarguments/LICENSE | 22 - .../node_modules/lodash.isarguments/README.md | 18 - .../node_modules/lodash.isarguments/index.js | 245 --- .../lodash.isarguments/package.json | 112 -- deps/npm/node_modules/lodash.keys/LICENSE | 33 +- deps/npm/node_modules/lodash.keys/README.md | 4 +- deps/npm/node_modules/lodash.keys/index.js | 17 +- .../npm/node_modules/lodash.keys/package.json | 57 +- deps/npm/node_modules/lodash.union/LICENSE | 33 +- deps/npm/node_modules/lodash.union/README.md | 4 +- deps/npm/node_modules/lodash.union/index.js | 299 +-- .../lodash._arrayincludes/LICENSE | 22 - .../lodash._arrayincludes/README.md | 18 - .../lodash._arrayincludes/index.js | 69 - .../lodash._arrayincludes/package.json | 89 - .../lodash._arrayincludeswith/LICENSE | 22 - .../lodash._arrayincludeswith/README.md | 18 - .../lodash._arrayincludeswith/index.js | 32 - .../lodash._arrayincludeswith/package.json | 89 - .../node_modules/lodash._baseflatten/LICENSE | 33 +- .../lodash._baseflatten/README.md | 4 +- .../node_modules/lodash._baseflatten/index.js | 19 +- .../lodash._baseflatten/package.json | 36 +- .../node_modules/lodash._cachehas/LICENSE | 22 - .../node_modules/lodash._cachehas/README.md | 18 - .../node_modules/lodash._cachehas/index.js | 45 - .../lodash._cachehas/package.json | 89 - .../node_modules/lodash._root/LICENSE | 22 - .../node_modules/lodash._root/README.md | 18 - .../node_modules/lodash._root/index.js | 53 - .../node_modules/lodash._setcache/LICENSE | 22 - .../node_modules/lodash._setcache/index.js | 68 - .../node_modules/lodash._mapcache/LICENSE | 22 - .../node_modules/lodash._mapcache/README.md | 18 - .../node_modules/lodash._mapcache/index.js | 492 ----- .../lodash._setcache/package.json | 99 - .../node_modules/lodash.union/package.json | 38 +- deps/npm/node_modules/lodash.uniq/LICENSE | 33 +- deps/npm/node_modules/lodash.uniq/README.md | 4 +- deps/npm/node_modules/lodash.uniq/index.js | 289 +-- .../lodash._arrayincludes/LICENSE | 22 - .../lodash._arrayincludes/README.md | 18 - .../lodash._arrayincludes/index.js | 69 - .../lodash._arrayincludes/package.json | 89 - .../lodash._arrayincludeswith/LICENSE | 22 - .../lodash._arrayincludeswith/README.md | 18 - .../lodash._arrayincludeswith/index.js | 32 - .../lodash._arrayincludeswith/package.json | 89 - .../node_modules/lodash._cachehas/LICENSE | 22 - .../node_modules/lodash._cachehas/README.md | 18 - .../node_modules/lodash._cachehas/index.js | 45 - .../lodash._cachehas/package.json | 89 - .../node_modules/lodash._root/LICENSE | 22 - .../node_modules/lodash._root/README.md | 18 - .../node_modules/lodash._root/index.js | 53 - .../node_modules/lodash._root/package.json | 94 - .../node_modules/lodash._setcache/LICENSE | 22 - .../node_modules/lodash._setcache/index.js | 68 - .../node_modules/lodash._mapcache/LICENSE | 22 - .../node_modules/lodash._mapcache/README.md | 18 - .../node_modules/lodash._mapcache/index.js | 492 ----- .../npm/node_modules/lodash.uniq/package.json | 40 +- deps/npm/node_modules/lodash.without/LICENSE | 33 +- .../npm/node_modules/lodash.without/README.md | 4 +- deps/npm/node_modules/lodash.without/index.js | 93 +- .../lodash._arrayincludes/LICENSE | 22 - .../lodash._arrayincludes/README.md | 18 - .../lodash._arrayincludes/index.js | 69 - .../lodash._arrayincludes/package.json | 89 - .../lodash._arrayincludeswith/LICENSE | 22 - .../lodash._arrayincludeswith/README.md | 18 - .../lodash._arrayincludeswith/index.js | 32 - .../lodash._arrayincludeswith/package.json | 89 - .../node_modules/lodash._arraymap/LICENSE.txt | 22 - .../node_modules/lodash._arraymap/README.md | 20 - .../node_modules/lodash._arraymap/index.js | 30 - .../lodash._arraymap/package.json | 99 - .../lodash._basedifference/LICENSE | 23 + .../lodash._basedifference/README.md | 18 + .../lodash._basedifference/index.js | 218 +++ .../node_modules/lodash._setcache/LICENSE | 23 + .../node_modules/lodash._setcache/README.md | 4 +- .../node_modules/lodash._setcache}/index.js | 112 +- .../lodash._setcache/package.json | 50 +- .../lodash._basedifference}/package.json | 40 +- .../node_modules/lodash._cachehas/LICENSE | 22 - .../node_modules/lodash._cachehas/README.md | 18 - .../node_modules/lodash._cachehas/index.js | 45 - .../lodash._cachehas/package.json | 89 - .../node_modules/lodash._setcache/LICENSE | 22 - .../node_modules/lodash._setcache/README.md | 18 - .../node_modules/lodash._setcache/index.js | 68 - .../node_modules/lodash._mapcache/LICENSE | 22 - .../node_modules/lodash._mapcache/README.md | 18 - .../lodash._mapcache/package.json | 101 - .../node_modules/lodash.without/package.json | 56 +- deps/npm/node_modules/node-gyp/CHANGELOG.md | 23 + deps/npm/node_modules/node-gyp/addon.gypi | 3 +- .../gyp/pylib/gyp/generator/android.py | 4 +- deps/npm/node_modules/node-gyp/lib/install.js | 117 +- .../npm/node_modules/node-gyp/lib/node-gyp.js | 1 + .../node-gyp/lib/process-release.js | 30 +- .../node_modules/brace-expansion/index.js | 2 +- .../node_modules/brace-expansion/package.json | 50 +- .../node-gyp/node_modules/npmlog/README.md | 195 -- .../node-gyp/node_modules/npmlog/example.js | 39 - .../node-gyp/node_modules/npmlog/log.js | 247 --- .../npmlog/node_modules/ansi/.jshintrc | 4 - .../npmlog/node_modules/ansi/History.md | 23 - .../npmlog/node_modules/ansi/LICENSE | 24 - .../npmlog/node_modules/ansi/README.md | 98 - .../node_modules/ansi/examples/beep/index.js | 16 - .../node_modules/ansi/examples/clear/index.js | 15 - .../ansi/examples/cursorPosition.js | 32 - .../ansi/examples/progress/index.js | 87 - .../npmlog/node_modules/ansi/lib/ansi.js | 405 ---- .../npmlog/node_modules/ansi/lib/newlines.js | 71 - .../npmlog/node_modules/ansi/package.json | 86 - .../node_modules/are-we-there-yet/LICENSE | 5 - .../node_modules/are-we-there-yet/README.md | 184 -- .../node_modules/are-we-there-yet/index.js | 130 -- .../node_modules/delegates/.npmignore | 1 - .../node_modules/delegates/History.md | 16 - .../node_modules/delegates/Makefile | 8 - .../node_modules/delegates/Readme.md | 94 - .../node_modules/delegates/index.js | 121 -- .../node_modules/delegates/package.json | 48 - .../node_modules/delegates/test/index.js | 94 - .../are-we-there-yet/package.json | 77 - .../are-we-there-yet/test/tracker.js | 56 - .../are-we-there-yet/test/trackergroup.js | 87 - .../are-we-there-yet/test/trackerstream.js | 65 - .../npmlog/node_modules/gauge/.npmignore | 32 - .../npmlog/node_modules/gauge/README.md | 166 -- .../npmlog/node_modules/gauge/example.png | Bin 19689 -> 0 bytes .../gauge/node_modules/lodash.pad/LICENSE | 22 - .../gauge/node_modules/lodash.pad/README.md | 18 - .../node_modules/lodash.repeat/LICENSE | 22 - .../node_modules/lodash.repeat/index.js | 307 --- .../node_modules/lodash.repeat/package.json | 104 -- .../node_modules/lodash.pad/package.json | 106 -- .../node_modules/lodash.padleft/LICENSE.txt | 22 - .../node_modules/lodash.padleft/README.md | 20 - .../node_modules/lodash.padleft/index.js | 50 - .../node_modules/lodash._basetostring/LICENSE | 22 - .../lodash._basetostring/README.md | 20 - .../lodash._basetostring/index.js | 22 - .../lodash._basetostring/package.json | 88 - .../lodash._createpadding/LICENSE | 22 - .../lodash._createpadding/README.md | 20 - .../lodash._createpadding/index.js | 37 - .../node_modules/lodash.repeat/LICENSE | 22 - .../node_modules/lodash.repeat/index.js | 307 --- .../node_modules/lodash.repeat/package.json | 106 -- .../lodash._createpadding/package.json | 91 - .../node_modules/lodash.padleft/package.json | 98 - .../node_modules/lodash.padright/LICENSE.txt | 22 - .../node_modules/lodash.padright/README.md | 20 - .../node_modules/lodash.padright/index.js | 50 - .../node_modules/lodash._basetostring/LICENSE | 22 - .../lodash._basetostring/README.md | 20 - .../lodash._basetostring/index.js | 22 - .../lodash._basetostring/package.json | 88 - .../lodash._createpadding/LICENSE | 22 - .../lodash._createpadding/README.md | 20 - .../lodash._createpadding/index.js | 37 - .../node_modules/lodash.repeat/LICENSE | 22 - .../node_modules/lodash.repeat/README.md | 18 - .../node_modules/lodash.repeat/package.json | 106 -- .../lodash._createpadding/package.json | 91 - .../node_modules/lodash.padright/package.json | 98 - .../npmlog/node_modules/gauge/package.json | 84 - .../npmlog/node_modules/gauge/progress-bar.js | 226 --- .../node_modules/gauge/test/progress-bar.js | 176 -- .../node-gyp/node_modules/npmlog/package.json | 58 - .../node_modules/npmlog/test/basic.js | 228 --- .../node_modules/npmlog/test/progress.js | 114 -- deps/npm/node_modules/node-gyp/package.json | 78 +- deps/npm/node_modules/node-gyp/test/docker.sh | 31 +- .../node-gyp/test/fixtures/ca-bundle.crt | 40 + .../node-gyp/test/fixtures/ca.crt | 21 + .../node-gyp/test/fixtures/server.crt | 19 + .../node-gyp/test/fixtures/server.key | 28 + .../node-gyp/test/test-download.js | 102 + .../node-gyp/test/test-process-release.js | 207 ++- .../npm-registry-client/README.md | 6 +- .../node_modules/npm-registry-client/index.js | 1 + .../npm-registry-client/lib/initialize.js | 33 +- .../npm-registry-client/package.json | 103 +- .../@npm/npm-registry-client/cache.json | 1 + .../test/fixtures/underscore/1.3.3/cache.json | 1 + .../fixtures/underscore/1.3.3/package.tgz | Bin 0 -> 58692 bytes .../test/fixtures/underscore/cache.json | 1 + .../npm-registry-client/test/initialize.js | 34 + deps/npm/node_modules/npmlog/log.js | 5 +- .../node_modules/are-we-there-yet/CHANGES.md | 19 + .../node_modules/are-we-there-yet/README.md | 14 +- .../node_modules/are-we-there-yet/index.js | 136 +- .../are-we-there-yet/package.json | 41 +- .../are-we-there-yet/test/lib/test-event.js | 29 + .../are-we-there-yet/test/tracker.js | 87 +- .../are-we-there-yet/test/trackergroup.js | 133 +- .../are-we-there-yet/test/trackerstream.js | 66 +- .../are-we-there-yet/tracker-base.js | 11 + .../are-we-there-yet/tracker-group.js | 107 ++ .../are-we-there-yet/tracker-stream.js | 35 + .../node_modules/are-we-there-yet/tracker.js | 30 + .../npmlog/node_modules/gauge/README.md | 2 +- .../gauge/node_modules/lodash.pad/LICENSE | 33 +- .../gauge/node_modules/lodash.pad/README.md | 4 +- .../gauge/node_modules/lodash.pad/index.js | 104 +- .../node_modules/lodash.repeat/LICENSE | 33 +- .../node_modules/lodash.repeat/README.md | 4 +- .../node_modules/lodash.repeat/index.js | 102 +- .../node_modules/lodash.repeat/package.json | 59 +- .../node_modules/lodash.tostring/LICENSE | 23 + .../node_modules/lodash.tostring/README.md | 18 + .../node_modules/lodash.tostring/index.js | 164 ++ .../node_modules/lodash.tostring/package.json | 106 ++ .../node_modules/lodash.pad/package.json | 58 +- .../gauge/node_modules/lodash.padend/LICENSE | 23 + .../node_modules/lodash.padend/README.md | 18 + .../node_modules/lodash.padend}/index.js | 150 +- .../node_modules/lodash.repeat/LICENSE | 23 + .../node_modules/lodash.repeat/README.md | 4 +- .../node_modules/lodash.repeat/index.js | 102 +- .../node_modules/lodash.repeat/package.json | 65 +- .../node_modules/lodash.tostring/LICENSE | 23 + .../node_modules/lodash.tostring/README.md | 18 + .../node_modules/lodash.tostring/index.js | 164 ++ .../node_modules/lodash.tostring/package.json | 108 ++ .../node_modules/lodash.padend}/package.json | 49 +- .../node_modules/lodash.padleft/LICENSE.txt | 22 - .../node_modules/lodash.padleft/README.md | 20 - .../node_modules/lodash.padleft/index.js | 50 - .../node_modules/lodash._basetostring/LICENSE | 22 - .../lodash._basetostring/README.md | 20 - .../lodash._basetostring/index.js | 22 - .../lodash._basetostring/package.json | 88 - .../lodash._createpadding/LICENSE | 22 - .../lodash._createpadding/README.md | 20 - .../lodash._createpadding/index.js | 37 - .../node_modules/lodash.repeat/LICENSE | 22 - .../node_modules/lodash.repeat/README.md | 18 - .../lodash._createpadding/package.json | 91 - .../node_modules/lodash.padleft/package.json | 98 - .../node_modules/lodash.padright/LICENSE.txt | 22 - .../node_modules/lodash.padright/README.md | 20 - .../node_modules/lodash.padright/index.js | 50 - .../node_modules/lodash._basetostring/LICENSE | 22 - .../lodash._basetostring/README.md | 20 - .../lodash._basetostring/index.js | 22 - .../lodash._basetostring/package.json | 88 - .../lodash._createpadding/LICENSE | 22 - .../lodash._createpadding/README.md | 20 - .../lodash._createpadding/index.js | 37 - .../node_modules/lodash.repeat/LICENSE | 22 - .../node_modules/lodash.repeat/README.md | 18 - .../lodash._createpadding/package.json | 91 - .../node_modules/lodash.padright/package.json | 98 - .../node_modules/lodash.padstart/LICENSE | 23 + .../node_modules/lodash.padstart/README.md | 18 + .../node_modules/lodash.padstart}/index.js | 232 ++- .../node_modules/lodash.repeat/LICENSE | 23 + .../node_modules/lodash.repeat/README.md | 4 +- .../node_modules/lodash.repeat/index.js | 102 +- .../node_modules/lodash.repeat/package.json | 65 +- .../node_modules/lodash.tostring/LICENSE | 23 + .../node_modules/lodash.tostring/README.md | 18 + .../node_modules/lodash.tostring/index.js | 164 ++ .../node_modules/lodash.tostring/package.json | 108 ++ .../lodash.padstart}/package.json | 49 +- .../npmlog/node_modules/gauge/package.json | 36 +- .../npmlog/node_modules/gauge/progress-bar.js | 4 +- deps/npm/node_modules/npmlog/package.json | 51 +- deps/npm/node_modules/npmlog/test/progress.js | 33 +- .../node_modules/glob/LICENSE | 15 + .../node_modules/glob/README.md | 359 ++++ .../node_modules/glob/common.js | 226 +++ .../node_modules/glob/glob.js | 765 ++++++++ .../glob/node_modules/minimatch/LICENSE | 15 + .../glob/node_modules/minimatch/README.md | 216 +++ .../glob/node_modules/minimatch/minimatch.js | 912 +++++++++ .../node_modules/brace-expansion/.npmignore | 3 + .../node_modules/brace-expansion/README.md | 122 ++ .../node_modules/brace-expansion/example.js | 7 + .../node_modules/brace-expansion/index.js | 190 ++ .../node_modules/balanced-match/.npmignore | 2 + .../node_modules/balanced-match/.travis.yml | 3 + .../node_modules/balanced-match/LICENSE.md | 21 + .../node_modules/balanced-match/Makefile | 5 + .../node_modules/balanced-match/README.md | 89 + .../node_modules/balanced-match/example.js | 4 + .../node_modules/balanced-match/index.js | 50 + .../node_modules/balanced-match/package.json | 100 + .../balanced-match/test/balanced.js | 84 + .../node_modules/concat-map/.travis.yml | 4 + .../node_modules/concat-map/LICENSE | 18 + .../node_modules/concat-map/README.markdown | 62 + .../node_modules/concat-map/example/map.js | 6 + .../node_modules/concat-map/index.js | 13 + .../node_modules/concat-map/package.json | 111 ++ .../node_modules/concat-map/test/map.js | 39 + .../node_modules/brace-expansion/package.json | 106 ++ .../glob/node_modules/minimatch/package.json | 87 + .../node_modules/path-is-absolute/index.js | 20 + .../node_modules/path-is-absolute/license | 21 + .../path-is-absolute/package.json | 99 + .../node_modules/path-is-absolute/readme.md | 51 + .../node_modules/glob/package.json | 98 + .../node_modules/glob/sync.js | 460 +++++ .../node_modules/readable-stream/.travis.yml | 34 +- .../node_modules/readable-stream/README.md | 2 +- .../readable-stream/doc/stream.markdown | 838 +++++---- .../readable-stream/lib/_stream_duplex.js | 33 +- .../lib/_stream_passthrough.js | 7 +- .../readable-stream/lib/_stream_readable.js | 315 ++-- .../readable-stream/lib/_stream_transform.js | 59 +- .../readable-stream/lib/_stream_writable.js | 229 ++- .../node_modules/isarray}/.npmignore | 0 .../node_modules/isarray/.travis.yml | 4 + .../node_modules/isarray/Makefile | 5 + .../node_modules/isarray/README.md | 6 + .../node_modules/isarray/build/build.js | 208 --- .../node_modules/isarray/index.js | 4 +- .../node_modules/isarray/package.json | 60 +- .../node_modules/isarray/test.js | 19 + .../node_modules/readable-stream/package.json | 69 +- deps/npm/node_modules/request/.eslintrc | 45 + .../request/node_modules/aws4/.tern-port | 1 + deps/npm/node_modules/rimraf/package.json | 41 +- .../node_modules/sorted-object/LICENSE.txt | 2 +- .../sorted-object/lib/sorted-object.js | 2 +- .../node_modules/sorted-object/package.json | 110 +- deps/npm/node_modules/strip-ansi/package.json | 123 +- deps/npm/node_modules/strip-ansi/readme.md | 10 +- deps/npm/package.json | 37 +- deps/npm/scripts/changelog.js | 7 +- .../test/disabled/bundlerecurs/package.json | 4 - deps/npm/test/disabled/change-bin-1/bin/foo | 2 - .../test/disabled/change-bin-1/package.json | 3 - deps/npm/test/disabled/change-bin-2/bin/bar | 2 - .../test/disabled/change-bin-2/package.json | 3 - deps/npm/test/disabled/failer/package.json | 5 - deps/npm/test/disabled/fast/package.json | 9 - .../test/disabled/package-bar/package.json | 7 - .../test/disabled/package-config/package.json | 4 - deps/npm/test/disabled/package-config/test.js | 20 - .../test/disabled/package-foo/package.json | 4 - deps/npm/test/disabled/slow/package.json | 9 - .../test/fixtures/config/userconfig-with-gc | 2 +- .../test/packages/npm-test-array-bin/README | 1 - .../packages/npm-test-array-bin/bin/array-bin | 2 - .../packages/npm-test-array-bin/package.json | 4 - .../test/packages/npm-test-array-bin/test.js | 5 - deps/npm/test/packages/npm-test-blerg/README | 1 - .../test/packages/npm-test-blerg/package.json | 5 - deps/npm/test/packages/npm-test-blerg/test.js | 4 - deps/npm/test/packages/npm-test-blerg3/README | 1 - .../packages/npm-test-blerg3/package.json | 5 - .../npm/test/packages/npm-test-blerg3/test.js | 4 - .../test/packages/npm-test-bundled-git/README | 1 - .../minimatch-expected.json | 28 - .../npm-test-bundled-git/package.json | 5 - .../packages/npm-test-bundled-git/test.js | 6 - .../npm/test/packages/npm-test-dir-bin/README | 1 - .../packages/npm-test-dir-bin/bin/dir-bin | 2 - .../packages/npm-test-dir-bin/package.json | 4 - .../test/packages/npm-test-dir-bin/test.js | 5 - .../test/packages/npm-test-env-reader/README | 1 - .../packages/npm-test-env-reader/package.json | 14 - .../test/packages/npm-test-env-reader/test.js | 9 - .../test/packages/npm-test-files/.npmignore | 7 - .../npm/test/packages/npm-test-files/include4 | 0 .../test/packages/npm-test-files/package.json | 10 - .../test/packages/npm-test-files/sub/include | 0 .../test/packages/npm-test-files/sub/include2 | 0 .../test/packages/npm-test-files/sub/include4 | 1 - deps/npm/test/packages/npm-test-files/test.sh | 27 - .../packages/npm-test-ignore-nested-nm/README | 1 - .../lib/node_modules/foo | 1 - .../npm-test-ignore-nested-nm/package.json | 3 - .../npm-test-ignore-nested-nm/test.js | 2 - .../test/packages/npm-test-ignore/.npmignore | 7 - deps/npm/test/packages/npm-test-ignore/README | 1 - .../test/packages/npm-test-ignore/include4 | 0 .../packages/npm-test-ignore/package.json | 3 - .../test/packages/npm-test-ignore/sub/include | 0 .../packages/npm-test-ignore/sub/include2 | 0 .../packages/npm-test-ignore/sub/include4 | 1 - .../npm/test/packages/npm-test-ignore/test.sh | 29 - .../packages/npm-test-missing-bindir/README | 1 - .../npm-test-missing-bindir/package.json | 4 - .../packages/npm-test-missing-bindir/test.js | 4 - .../packages/npm-test-optional-deps/README | 1 - .../npm-test-optional-deps/package.json | 11 - .../packages/npm-test-optional-deps/test.js | 9 - .../packages/npm-test-platform-all/README | 1 - .../npm-test-platform-all/package.json | 5 - .../test/packages/npm-test-platform/README | 1 - .../packages/npm-test-platform/package.json | 5 - .../npm/test/packages/npm-test-private/README | 1 - .../packages/npm-test-private/package.json | 4 - .../test/packages/npm-test-shrinkwrap/README | 1 - .../npm-test-shrinkwrap/npm-shrinkwrap.json | 49 - .../packages/npm-test-shrinkwrap/package.json | 13 - .../test/packages/npm-test-shrinkwrap/test.js | 37 - .../packages/npm-test-test-package/README | 1 - .../npm-test-test-package/package.json | 5 - .../npm/test/packages/npm-test-url-dep/README | 1 - .../packages/npm-test-url-dep/package.json | 7 - deps/npm/test/run.js | 194 -- deps/npm/test/tap/bearer-token-check.js | 118 ++ deps/npm/test/tap/config-credentials.js | 2 +- deps/npm/test/tap/config-list.js | 43 + deps/npm/test/tap/files-and-ignores.js | 558 ++++++ .../test/tap/install-cli-production-nosave.js | 69 + .../test/tap/install-report-just-installed.js | 76 + deps/npm/test/tap/legacy-array-bin.js | 80 + deps/npm/test/tap/legacy-bundled-git.js | 103 ++ deps/npm/test/tap/legacy-dir-bin.js | 79 + deps/npm/test/tap/legacy-ignore-nested-nm.js | 64 + deps/npm/test/tap/legacy-missing-bindir.js | 82 + deps/npm/test/tap/legacy-no-auth-leak.js | 75 + deps/npm/test/tap/legacy-npm-self-install.js | 107 ++ deps/npm/test/tap/legacy-optional-deps.js | 79 + deps/npm/test/tap/legacy-platform-all.js | 73 + deps/npm/test/tap/legacy-platform.js | 64 + deps/npm/test/tap/legacy-private.js | 58 + deps/npm/test/tap/legacy-shrinkwrap.js | 132 ++ deps/npm/test/tap/legacy-test-package.js | 76 + deps/npm/test/tap/legacy-url-dep.js | 61 + deps/npm/test/tap/lifecycle-signal.js | 28 +- deps/npm/test/tap/logout-scoped.js | 70 + deps/npm/test/tap/ls-depth-cli.js | 44 + deps/npm/test/tap/ls-production-and-dev.js | 26 +- deps/npm/test/tap/map-to-registry.js | 81 +- deps/npm/test/tap/progress-config.js | 24 + deps/npm/test/tap/run-script.js | 67 +- deps/npm/test/tap/shrinkwrap-scoped-auth.js | 1 - deps/npm/test/tap/update-symlink.js | 91 + deps/npm/test/tap/view.js | 54 +- deps/npm/test/update-test.sh | 59 - 701 files changed, 19551 insertions(+), 17311 deletions(-) create mode 100644 deps/npm/lib/config/cmd-list.js create mode 100644 deps/npm/node_modules/glob/changelog.md rename deps/npm/node_modules/{node-gyp/node_modules/npmlog => init-package-json/node_modules/glob}/LICENSE (100%) create mode 100644 deps/npm/node_modules/init-package-json/node_modules/glob/README.md create mode 100644 deps/npm/node_modules/init-package-json/node_modules/glob/common.js create mode 100644 deps/npm/node_modules/init-package-json/node_modules/glob/glob.js rename deps/npm/node_modules/{node-gyp/node_modules/npmlog/node_modules/gauge => init-package-json/node_modules/glob/node_modules/minimatch}/LICENSE (81%) create mode 100644 deps/npm/node_modules/init-package-json/node_modules/glob/node_modules/minimatch/README.md create mode 100644 deps/npm/node_modules/init-package-json/node_modules/glob/node_modules/minimatch/minimatch.js create mode 100644 deps/npm/node_modules/init-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.npmignore create mode 100644 deps/npm/node_modules/init-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/README.md create mode 100644 deps/npm/node_modules/init-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/example.js create mode 100644 deps/npm/node_modules/init-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js rename deps/npm/node_modules/{node-gyp/node_modules/npmlog/node_modules/are-we-there-yet => init-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match}/.npmignore (56%) create mode 100644 deps/npm/node_modules/init-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.travis.yml create mode 100644 deps/npm/node_modules/init-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/LICENSE.md create mode 100644 deps/npm/node_modules/init-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/Makefile create mode 100644 deps/npm/node_modules/init-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md create mode 100644 deps/npm/node_modules/init-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/example.js create mode 100644 deps/npm/node_modules/init-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js create mode 100644 deps/npm/node_modules/init-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json create mode 100644 deps/npm/node_modules/init-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/test/balanced.js create mode 100644 deps/npm/node_modules/init-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/.travis.yml create mode 100644 deps/npm/node_modules/init-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/LICENSE create mode 100644 deps/npm/node_modules/init-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/README.markdown create mode 100644 deps/npm/node_modules/init-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/example/map.js create mode 100644 deps/npm/node_modules/init-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/index.js create mode 100644 deps/npm/node_modules/init-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json create mode 100644 deps/npm/node_modules/init-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/test/map.js create mode 100644 deps/npm/node_modules/init-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json create mode 100644 deps/npm/node_modules/init-package-json/node_modules/glob/node_modules/minimatch/package.json create mode 100644 deps/npm/node_modules/init-package-json/node_modules/glob/node_modules/path-is-absolute/index.js create mode 100644 deps/npm/node_modules/init-package-json/node_modules/glob/node_modules/path-is-absolute/license create mode 100644 deps/npm/node_modules/init-package-json/node_modules/glob/node_modules/path-is-absolute/package.json create mode 100644 deps/npm/node_modules/init-package-json/node_modules/glob/node_modules/path-is-absolute/readme.md create mode 100644 deps/npm/node_modules/init-package-json/node_modules/glob/package.json create mode 100644 deps/npm/node_modules/init-package-json/node_modules/glob/sync.js create mode 100644 deps/npm/node_modules/lodash._baseuniq/node_modules/lodash._createset/LICENSE create mode 100644 deps/npm/node_modules/lodash._baseuniq/node_modules/lodash._createset/README.md create mode 100644 deps/npm/node_modules/lodash._baseuniq/node_modules/lodash._createset/index.js rename deps/npm/node_modules/{lodash.union/node_modules/lodash._root => lodash._baseuniq/node_modules/lodash._createset}/package.json (58%) create mode 100644 deps/npm/node_modules/lodash._baseuniq/node_modules/lodash._setcache/LICENSE rename deps/npm/node_modules/{lodash.union => lodash._baseuniq}/node_modules/lodash._setcache/README.md (81%) rename deps/npm/node_modules/{lodash.without/node_modules/lodash._setcache/node_modules/lodash._mapcache => lodash._baseuniq/node_modules/lodash._setcache}/index.js (91%) rename deps/npm/node_modules/{lodash.uniq => lodash._baseuniq}/node_modules/lodash._setcache/package.json (68%) delete mode 100644 deps/npm/node_modules/lodash.clonedeep/node_modules/lodash._arrayeach/LICENSE.txt delete mode 100644 deps/npm/node_modules/lodash.clonedeep/node_modules/lodash._arrayeach/README.md delete mode 100644 deps/npm/node_modules/lodash.clonedeep/node_modules/lodash._arrayeach/index.js delete mode 100644 deps/npm/node_modules/lodash.clonedeep/node_modules/lodash._arrayeach/package.json create mode 100644 deps/npm/node_modules/lodash.clonedeep/node_modules/lodash._baseclone/LICENSE create mode 100644 deps/npm/node_modules/lodash.clonedeep/node_modules/lodash._baseclone/README.md create mode 100644 deps/npm/node_modules/lodash.clonedeep/node_modules/lodash._baseclone/index.js rename deps/npm/node_modules/lodash.clonedeep/node_modules/{lodash._stack => lodash._baseclone}/package.json (59%) delete mode 100644 deps/npm/node_modules/lodash.clonedeep/node_modules/lodash._basefor/LICENSE delete mode 100644 deps/npm/node_modules/lodash.clonedeep/node_modules/lodash._basefor/README.md delete mode 100644 deps/npm/node_modules/lodash.clonedeep/node_modules/lodash._basefor/index.js delete mode 100644 deps/npm/node_modules/lodash.clonedeep/node_modules/lodash._basefor/package.json delete mode 100644 deps/npm/node_modules/lodash.clonedeep/node_modules/lodash._root/LICENSE delete mode 100644 deps/npm/node_modules/lodash.clonedeep/node_modules/lodash._root/README.md delete mode 100644 deps/npm/node_modules/lodash.clonedeep/node_modules/lodash._root/index.js delete mode 100644 deps/npm/node_modules/lodash.clonedeep/node_modules/lodash._root/package.json delete mode 100644 deps/npm/node_modules/lodash.clonedeep/node_modules/lodash._stack/LICENSE delete mode 100644 deps/npm/node_modules/lodash.clonedeep/node_modules/lodash._stack/README.md delete mode 100644 deps/npm/node_modules/lodash.clonedeep/node_modules/lodash._stack/index.js delete mode 100644 deps/npm/node_modules/lodash.clonedeep/node_modules/lodash._stack/node_modules/lodash._mapcache/LICENSE delete mode 100644 deps/npm/node_modules/lodash.clonedeep/node_modules/lodash._stack/node_modules/lodash._mapcache/README.md delete mode 100644 deps/npm/node_modules/lodash.isarguments/LICENSE delete mode 100644 deps/npm/node_modules/lodash.isarguments/README.md delete mode 100644 deps/npm/node_modules/lodash.isarguments/index.js delete mode 100644 deps/npm/node_modules/lodash.isarguments/package.json delete mode 100644 deps/npm/node_modules/lodash.union/node_modules/lodash._arrayincludes/LICENSE delete mode 100644 deps/npm/node_modules/lodash.union/node_modules/lodash._arrayincludes/README.md delete mode 100644 deps/npm/node_modules/lodash.union/node_modules/lodash._arrayincludes/index.js delete mode 100644 deps/npm/node_modules/lodash.union/node_modules/lodash._arrayincludes/package.json delete mode 100644 deps/npm/node_modules/lodash.union/node_modules/lodash._arrayincludeswith/LICENSE delete mode 100644 deps/npm/node_modules/lodash.union/node_modules/lodash._arrayincludeswith/README.md delete mode 100644 deps/npm/node_modules/lodash.union/node_modules/lodash._arrayincludeswith/index.js delete mode 100644 deps/npm/node_modules/lodash.union/node_modules/lodash._arrayincludeswith/package.json delete mode 100644 deps/npm/node_modules/lodash.union/node_modules/lodash._cachehas/LICENSE delete mode 100644 deps/npm/node_modules/lodash.union/node_modules/lodash._cachehas/README.md delete mode 100644 deps/npm/node_modules/lodash.union/node_modules/lodash._cachehas/index.js delete mode 100644 deps/npm/node_modules/lodash.union/node_modules/lodash._cachehas/package.json delete mode 100644 deps/npm/node_modules/lodash.union/node_modules/lodash._root/LICENSE delete mode 100644 deps/npm/node_modules/lodash.union/node_modules/lodash._root/README.md delete mode 100644 deps/npm/node_modules/lodash.union/node_modules/lodash._root/index.js delete mode 100644 deps/npm/node_modules/lodash.union/node_modules/lodash._setcache/LICENSE delete mode 100644 deps/npm/node_modules/lodash.union/node_modules/lodash._setcache/index.js delete mode 100644 deps/npm/node_modules/lodash.union/node_modules/lodash._setcache/node_modules/lodash._mapcache/LICENSE delete mode 100644 deps/npm/node_modules/lodash.union/node_modules/lodash._setcache/node_modules/lodash._mapcache/README.md delete mode 100644 deps/npm/node_modules/lodash.union/node_modules/lodash._setcache/node_modules/lodash._mapcache/index.js delete mode 100644 deps/npm/node_modules/lodash.union/node_modules/lodash._setcache/package.json delete mode 100644 deps/npm/node_modules/lodash.uniq/node_modules/lodash._arrayincludes/LICENSE delete mode 100644 deps/npm/node_modules/lodash.uniq/node_modules/lodash._arrayincludes/README.md delete mode 100644 deps/npm/node_modules/lodash.uniq/node_modules/lodash._arrayincludes/index.js delete mode 100644 deps/npm/node_modules/lodash.uniq/node_modules/lodash._arrayincludes/package.json delete mode 100644 deps/npm/node_modules/lodash.uniq/node_modules/lodash._arrayincludeswith/LICENSE delete mode 100644 deps/npm/node_modules/lodash.uniq/node_modules/lodash._arrayincludeswith/README.md delete mode 100644 deps/npm/node_modules/lodash.uniq/node_modules/lodash._arrayincludeswith/index.js delete mode 100644 deps/npm/node_modules/lodash.uniq/node_modules/lodash._arrayincludeswith/package.json delete mode 100644 deps/npm/node_modules/lodash.uniq/node_modules/lodash._cachehas/LICENSE delete mode 100644 deps/npm/node_modules/lodash.uniq/node_modules/lodash._cachehas/README.md delete mode 100644 deps/npm/node_modules/lodash.uniq/node_modules/lodash._cachehas/index.js delete mode 100644 deps/npm/node_modules/lodash.uniq/node_modules/lodash._cachehas/package.json delete mode 100644 deps/npm/node_modules/lodash.uniq/node_modules/lodash._root/LICENSE delete mode 100644 deps/npm/node_modules/lodash.uniq/node_modules/lodash._root/README.md delete mode 100644 deps/npm/node_modules/lodash.uniq/node_modules/lodash._root/index.js delete mode 100644 deps/npm/node_modules/lodash.uniq/node_modules/lodash._root/package.json delete mode 100644 deps/npm/node_modules/lodash.uniq/node_modules/lodash._setcache/LICENSE delete mode 100644 deps/npm/node_modules/lodash.uniq/node_modules/lodash._setcache/index.js delete mode 100644 deps/npm/node_modules/lodash.uniq/node_modules/lodash._setcache/node_modules/lodash._mapcache/LICENSE delete mode 100644 deps/npm/node_modules/lodash.uniq/node_modules/lodash._setcache/node_modules/lodash._mapcache/README.md delete mode 100644 deps/npm/node_modules/lodash.uniq/node_modules/lodash._setcache/node_modules/lodash._mapcache/index.js delete mode 100644 deps/npm/node_modules/lodash.without/node_modules/lodash._arrayincludes/LICENSE delete mode 100644 deps/npm/node_modules/lodash.without/node_modules/lodash._arrayincludes/README.md delete mode 100644 deps/npm/node_modules/lodash.without/node_modules/lodash._arrayincludes/index.js delete mode 100644 deps/npm/node_modules/lodash.without/node_modules/lodash._arrayincludes/package.json delete mode 100644 deps/npm/node_modules/lodash.without/node_modules/lodash._arrayincludeswith/LICENSE delete mode 100644 deps/npm/node_modules/lodash.without/node_modules/lodash._arrayincludeswith/README.md delete mode 100644 deps/npm/node_modules/lodash.without/node_modules/lodash._arrayincludeswith/index.js delete mode 100644 deps/npm/node_modules/lodash.without/node_modules/lodash._arrayincludeswith/package.json delete mode 100644 deps/npm/node_modules/lodash.without/node_modules/lodash._arraymap/LICENSE.txt delete mode 100644 deps/npm/node_modules/lodash.without/node_modules/lodash._arraymap/README.md delete mode 100644 deps/npm/node_modules/lodash.without/node_modules/lodash._arraymap/index.js delete mode 100644 deps/npm/node_modules/lodash.without/node_modules/lodash._arraymap/package.json create mode 100644 deps/npm/node_modules/lodash.without/node_modules/lodash._basedifference/LICENSE create mode 100644 deps/npm/node_modules/lodash.without/node_modules/lodash._basedifference/README.md create mode 100644 deps/npm/node_modules/lodash.without/node_modules/lodash._basedifference/index.js create mode 100644 deps/npm/node_modules/lodash.without/node_modules/lodash._basedifference/node_modules/lodash._setcache/LICENSE rename deps/npm/node_modules/{lodash.uniq => lodash.without/node_modules/lodash._basedifference}/node_modules/lodash._setcache/README.md (81%) rename deps/npm/node_modules/{lodash.clonedeep/node_modules/lodash._stack/node_modules/lodash._mapcache => lodash.without/node_modules/lodash._basedifference/node_modules/lodash._setcache}/index.js (81%) rename deps/npm/node_modules/lodash.without/node_modules/{ => lodash._basedifference/node_modules}/lodash._setcache/package.json (66%) rename deps/npm/node_modules/{lodash.uniq/node_modules/lodash._setcache/node_modules/lodash._mapcache => lodash.without/node_modules/lodash._basedifference}/package.json (61%) delete mode 100644 deps/npm/node_modules/lodash.without/node_modules/lodash._cachehas/LICENSE delete mode 100644 deps/npm/node_modules/lodash.without/node_modules/lodash._cachehas/README.md delete mode 100644 deps/npm/node_modules/lodash.without/node_modules/lodash._cachehas/index.js delete mode 100644 deps/npm/node_modules/lodash.without/node_modules/lodash._cachehas/package.json delete mode 100644 deps/npm/node_modules/lodash.without/node_modules/lodash._setcache/LICENSE delete mode 100644 deps/npm/node_modules/lodash.without/node_modules/lodash._setcache/README.md delete mode 100644 deps/npm/node_modules/lodash.without/node_modules/lodash._setcache/index.js delete mode 100644 deps/npm/node_modules/lodash.without/node_modules/lodash._setcache/node_modules/lodash._mapcache/LICENSE delete mode 100644 deps/npm/node_modules/lodash.without/node_modules/lodash._setcache/node_modules/lodash._mapcache/README.md delete mode 100644 deps/npm/node_modules/lodash.without/node_modules/lodash._setcache/node_modules/lodash._mapcache/package.json delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/README.md delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/example.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/log.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/ansi/.jshintrc delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/ansi/History.md delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/ansi/LICENSE delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/ansi/README.md delete mode 100755 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/ansi/examples/beep/index.js delete mode 100755 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/ansi/examples/clear/index.js delete mode 100755 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/ansi/examples/cursorPosition.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/ansi/examples/progress/index.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/ansi/lib/ansi.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/ansi/lib/newlines.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/ansi/package.json delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/are-we-there-yet/LICENSE delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/are-we-there-yet/README.md delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/are-we-there-yet/index.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/delegates/.npmignore delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/delegates/History.md delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/delegates/Makefile delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/delegates/Readme.md delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/delegates/index.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/delegates/package.json delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/delegates/test/index.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/are-we-there-yet/package.json delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/are-we-there-yet/test/tracker.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/are-we-there-yet/test/trackergroup.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/are-we-there-yet/test/trackerstream.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/.npmignore delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/README.md delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/example.png delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.pad/LICENSE delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.pad/README.md delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.pad/node_modules/lodash.repeat/LICENSE delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.pad/node_modules/lodash.repeat/index.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.pad/node_modules/lodash.repeat/package.json delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.pad/package.json delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padleft/LICENSE.txt delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padleft/README.md delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padleft/index.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padleft/node_modules/lodash._basetostring/LICENSE delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padleft/node_modules/lodash._basetostring/README.md delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padleft/node_modules/lodash._basetostring/index.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padleft/node_modules/lodash._basetostring/package.json delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padleft/node_modules/lodash._createpadding/LICENSE delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padleft/node_modules/lodash._createpadding/README.md delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padleft/node_modules/lodash._createpadding/index.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padleft/node_modules/lodash._createpadding/node_modules/lodash.repeat/LICENSE delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padleft/node_modules/lodash._createpadding/node_modules/lodash.repeat/index.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padleft/node_modules/lodash._createpadding/node_modules/lodash.repeat/package.json delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padleft/node_modules/lodash._createpadding/package.json delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padleft/package.json delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padright/LICENSE.txt delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padright/README.md delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padright/index.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padright/node_modules/lodash._basetostring/LICENSE delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padright/node_modules/lodash._basetostring/README.md delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padright/node_modules/lodash._basetostring/index.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padright/node_modules/lodash._basetostring/package.json delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padright/node_modules/lodash._createpadding/LICENSE delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padright/node_modules/lodash._createpadding/README.md delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padright/node_modules/lodash._createpadding/index.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padright/node_modules/lodash._createpadding/node_modules/lodash.repeat/LICENSE delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padright/node_modules/lodash._createpadding/node_modules/lodash.repeat/README.md delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padright/node_modules/lodash._createpadding/node_modules/lodash.repeat/package.json delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padright/node_modules/lodash._createpadding/package.json delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padright/package.json delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/package.json delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/progress-bar.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/node_modules/gauge/test/progress-bar.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/package.json delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/test/basic.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/npmlog/test/progress.js create mode 100644 deps/npm/node_modules/node-gyp/test/fixtures/ca-bundle.crt create mode 100644 deps/npm/node_modules/node-gyp/test/fixtures/ca.crt create mode 100644 deps/npm/node_modules/node-gyp/test/fixtures/server.crt create mode 100644 deps/npm/node_modules/node-gyp/test/fixtures/server.key create mode 100644 deps/npm/node_modules/node-gyp/test/test-download.js create mode 100644 deps/npm/node_modules/npm-registry-client/test/fixtures/@npm/npm-registry-client/cache.json create mode 100644 deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/1.3.3/cache.json create mode 100644 deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/1.3.3/package.tgz create mode 100644 deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/cache.json create mode 100644 deps/npm/node_modules/npmlog/node_modules/are-we-there-yet/CHANGES.md create mode 100644 deps/npm/node_modules/npmlog/node_modules/are-we-there-yet/test/lib/test-event.js create mode 100644 deps/npm/node_modules/npmlog/node_modules/are-we-there-yet/tracker-base.js create mode 100644 deps/npm/node_modules/npmlog/node_modules/are-we-there-yet/tracker-group.js create mode 100644 deps/npm/node_modules/npmlog/node_modules/are-we-there-yet/tracker-stream.js create mode 100644 deps/npm/node_modules/npmlog/node_modules/are-we-there-yet/tracker.js create mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.pad/node_modules/lodash.tostring/LICENSE create mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.pad/node_modules/lodash.tostring/README.md create mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.pad/node_modules/lodash.tostring/index.js create mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.pad/node_modules/lodash.tostring/package.json create mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padend/LICENSE create mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padend/README.md rename deps/npm/node_modules/{node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.pad => npmlog/node_modules/gauge/node_modules/lodash.padend}/index.js (66%) create mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padend/node_modules/lodash.repeat/LICENSE rename deps/npm/node_modules/{node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.pad => npmlog/node_modules/gauge/node_modules/lodash.padend}/node_modules/lodash.repeat/README.md (80%) rename deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/{lodash.padright/node_modules/lodash._createpadding => lodash.padend}/node_modules/lodash.repeat/index.js (67%) rename deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/{lodash.padright/node_modules/lodash._createpadding => lodash.padend}/node_modules/lodash.repeat/package.json (65%) create mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padend/node_modules/lodash.tostring/LICENSE create mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padend/node_modules/lodash.tostring/README.md create mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padend/node_modules/lodash.tostring/index.js create mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padend/node_modules/lodash.tostring/package.json rename deps/npm/node_modules/{lodash.union/node_modules/lodash._setcache/node_modules/lodash._mapcache => npmlog/node_modules/gauge/node_modules/lodash.padend}/package.json (59%) delete mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padleft/LICENSE.txt delete mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padleft/README.md delete mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padleft/index.js delete mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padleft/node_modules/lodash._basetostring/LICENSE delete mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padleft/node_modules/lodash._basetostring/README.md delete mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padleft/node_modules/lodash._basetostring/index.js delete mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padleft/node_modules/lodash._basetostring/package.json delete mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padleft/node_modules/lodash._createpadding/LICENSE delete mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padleft/node_modules/lodash._createpadding/README.md delete mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padleft/node_modules/lodash._createpadding/index.js delete mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padleft/node_modules/lodash._createpadding/node_modules/lodash.repeat/LICENSE delete mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padleft/node_modules/lodash._createpadding/node_modules/lodash.repeat/README.md delete mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padleft/node_modules/lodash._createpadding/package.json delete mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padleft/package.json delete mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padright/LICENSE.txt delete mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padright/README.md delete mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padright/index.js delete mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padright/node_modules/lodash._basetostring/LICENSE delete mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padright/node_modules/lodash._basetostring/README.md delete mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padright/node_modules/lodash._basetostring/index.js delete mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padright/node_modules/lodash._basetostring/package.json delete mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padright/node_modules/lodash._createpadding/LICENSE delete mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padright/node_modules/lodash._createpadding/README.md delete mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padright/node_modules/lodash._createpadding/index.js delete mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padright/node_modules/lodash._createpadding/node_modules/lodash.repeat/LICENSE delete mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padright/node_modules/lodash._createpadding/node_modules/lodash.repeat/README.md delete mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padright/node_modules/lodash._createpadding/package.json delete mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padright/package.json create mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padstart/LICENSE create mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padstart/README.md rename deps/npm/node_modules/{node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padright/node_modules/lodash._createpadding/node_modules/lodash.repeat => npmlog/node_modules/gauge/node_modules/lodash.padstart}/index.js (53%) create mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padstart/node_modules/lodash.repeat/LICENSE rename deps/npm/node_modules/{node-gyp/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padleft/node_modules/lodash._createpadding => npmlog/node_modules/gauge/node_modules/lodash.padstart}/node_modules/lodash.repeat/README.md (80%) rename deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/{lodash.padleft/node_modules/lodash._createpadding => lodash.padstart}/node_modules/lodash.repeat/index.js (67%) rename deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/{lodash.padleft/node_modules/lodash._createpadding => lodash.padstart}/node_modules/lodash.repeat/package.json (65%) create mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padstart/node_modules/lodash.tostring/LICENSE create mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padstart/node_modules/lodash.tostring/README.md create mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padstart/node_modules/lodash.tostring/index.js create mode 100644 deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/lodash.padstart/node_modules/lodash.tostring/package.json rename deps/npm/node_modules/{lodash.clonedeep/node_modules/lodash._stack/node_modules/lodash._mapcache => npmlog/node_modules/gauge/node_modules/lodash.padstart}/package.json (59%) create mode 100644 deps/npm/node_modules/read-package-json/node_modules/glob/LICENSE create mode 100644 deps/npm/node_modules/read-package-json/node_modules/glob/README.md create mode 100644 deps/npm/node_modules/read-package-json/node_modules/glob/common.js create mode 100644 deps/npm/node_modules/read-package-json/node_modules/glob/glob.js create mode 100644 deps/npm/node_modules/read-package-json/node_modules/glob/node_modules/minimatch/LICENSE create mode 100644 deps/npm/node_modules/read-package-json/node_modules/glob/node_modules/minimatch/README.md create mode 100644 deps/npm/node_modules/read-package-json/node_modules/glob/node_modules/minimatch/minimatch.js create mode 100644 deps/npm/node_modules/read-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.npmignore create mode 100644 deps/npm/node_modules/read-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/README.md create mode 100644 deps/npm/node_modules/read-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/example.js create mode 100644 deps/npm/node_modules/read-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js create mode 100644 deps/npm/node_modules/read-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.npmignore create mode 100644 deps/npm/node_modules/read-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.travis.yml create mode 100644 deps/npm/node_modules/read-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/LICENSE.md create mode 100644 deps/npm/node_modules/read-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/Makefile create mode 100644 deps/npm/node_modules/read-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md create mode 100644 deps/npm/node_modules/read-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/example.js create mode 100644 deps/npm/node_modules/read-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js create mode 100644 deps/npm/node_modules/read-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json create mode 100644 deps/npm/node_modules/read-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/test/balanced.js create mode 100644 deps/npm/node_modules/read-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/.travis.yml create mode 100644 deps/npm/node_modules/read-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/LICENSE create mode 100644 deps/npm/node_modules/read-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/README.markdown create mode 100644 deps/npm/node_modules/read-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/example/map.js create mode 100644 deps/npm/node_modules/read-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/index.js create mode 100644 deps/npm/node_modules/read-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json create mode 100644 deps/npm/node_modules/read-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/test/map.js create mode 100644 deps/npm/node_modules/read-package-json/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json create mode 100644 deps/npm/node_modules/read-package-json/node_modules/glob/node_modules/minimatch/package.json create mode 100644 deps/npm/node_modules/read-package-json/node_modules/glob/node_modules/path-is-absolute/index.js create mode 100644 deps/npm/node_modules/read-package-json/node_modules/glob/node_modules/path-is-absolute/license create mode 100644 deps/npm/node_modules/read-package-json/node_modules/glob/node_modules/path-is-absolute/package.json create mode 100644 deps/npm/node_modules/read-package-json/node_modules/glob/node_modules/path-is-absolute/readme.md create mode 100644 deps/npm/node_modules/read-package-json/node_modules/glob/package.json create mode 100644 deps/npm/node_modules/read-package-json/node_modules/glob/sync.js rename deps/npm/node_modules/{node-gyp/node_modules/npmlog/node_modules/ansi => readable-stream/node_modules/isarray}/.npmignore (100%) create mode 100644 deps/npm/node_modules/readable-stream/node_modules/isarray/.travis.yml create mode 100644 deps/npm/node_modules/readable-stream/node_modules/isarray/Makefile delete mode 100644 deps/npm/node_modules/readable-stream/node_modules/isarray/build/build.js create mode 100644 deps/npm/node_modules/readable-stream/node_modules/isarray/test.js create mode 100644 deps/npm/node_modules/request/.eslintrc create mode 100644 deps/npm/node_modules/request/node_modules/aws4/.tern-port delete mode 100644 deps/npm/test/disabled/bundlerecurs/package.json delete mode 100644 deps/npm/test/disabled/change-bin-1/bin/foo delete mode 100644 deps/npm/test/disabled/change-bin-1/package.json delete mode 100644 deps/npm/test/disabled/change-bin-2/bin/bar delete mode 100644 deps/npm/test/disabled/change-bin-2/package.json delete mode 100644 deps/npm/test/disabled/failer/package.json delete mode 100644 deps/npm/test/disabled/fast/package.json delete mode 100644 deps/npm/test/disabled/package-bar/package.json delete mode 100644 deps/npm/test/disabled/package-config/package.json delete mode 100755 deps/npm/test/disabled/package-config/test.js delete mode 100644 deps/npm/test/disabled/package-foo/package.json delete mode 100644 deps/npm/test/disabled/slow/package.json delete mode 100644 deps/npm/test/packages/npm-test-array-bin/README delete mode 100644 deps/npm/test/packages/npm-test-array-bin/bin/array-bin delete mode 100644 deps/npm/test/packages/npm-test-array-bin/package.json delete mode 100644 deps/npm/test/packages/npm-test-array-bin/test.js delete mode 100644 deps/npm/test/packages/npm-test-blerg/README delete mode 100644 deps/npm/test/packages/npm-test-blerg/package.json delete mode 100644 deps/npm/test/packages/npm-test-blerg/test.js delete mode 100644 deps/npm/test/packages/npm-test-blerg3/README delete mode 100644 deps/npm/test/packages/npm-test-blerg3/package.json delete mode 100644 deps/npm/test/packages/npm-test-blerg3/test.js delete mode 100644 deps/npm/test/packages/npm-test-bundled-git/README delete mode 100644 deps/npm/test/packages/npm-test-bundled-git/minimatch-expected.json delete mode 100644 deps/npm/test/packages/npm-test-bundled-git/package.json delete mode 100644 deps/npm/test/packages/npm-test-bundled-git/test.js delete mode 100644 deps/npm/test/packages/npm-test-dir-bin/README delete mode 100644 deps/npm/test/packages/npm-test-dir-bin/bin/dir-bin delete mode 100644 deps/npm/test/packages/npm-test-dir-bin/package.json delete mode 100644 deps/npm/test/packages/npm-test-dir-bin/test.js delete mode 100644 deps/npm/test/packages/npm-test-env-reader/README delete mode 100644 deps/npm/test/packages/npm-test-env-reader/package.json delete mode 100755 deps/npm/test/packages/npm-test-env-reader/test.js delete mode 100644 deps/npm/test/packages/npm-test-files/.npmignore delete mode 100644 deps/npm/test/packages/npm-test-files/include4 delete mode 100644 deps/npm/test/packages/npm-test-files/package.json delete mode 100644 deps/npm/test/packages/npm-test-files/sub/include delete mode 100644 deps/npm/test/packages/npm-test-files/sub/include2 delete mode 100644 deps/npm/test/packages/npm-test-files/sub/include4 delete mode 100644 deps/npm/test/packages/npm-test-files/test.sh delete mode 100644 deps/npm/test/packages/npm-test-ignore-nested-nm/README delete mode 100644 deps/npm/test/packages/npm-test-ignore-nested-nm/lib/node_modules/foo delete mode 100644 deps/npm/test/packages/npm-test-ignore-nested-nm/package.json delete mode 100644 deps/npm/test/packages/npm-test-ignore-nested-nm/test.js delete mode 100644 deps/npm/test/packages/npm-test-ignore/.npmignore delete mode 100644 deps/npm/test/packages/npm-test-ignore/README delete mode 100644 deps/npm/test/packages/npm-test-ignore/include4 delete mode 100644 deps/npm/test/packages/npm-test-ignore/package.json delete mode 100644 deps/npm/test/packages/npm-test-ignore/sub/include delete mode 100644 deps/npm/test/packages/npm-test-ignore/sub/include2 delete mode 100644 deps/npm/test/packages/npm-test-ignore/sub/include4 delete mode 100644 deps/npm/test/packages/npm-test-ignore/test.sh delete mode 100644 deps/npm/test/packages/npm-test-missing-bindir/README delete mode 100644 deps/npm/test/packages/npm-test-missing-bindir/package.json delete mode 100644 deps/npm/test/packages/npm-test-missing-bindir/test.js delete mode 100644 deps/npm/test/packages/npm-test-optional-deps/README delete mode 100644 deps/npm/test/packages/npm-test-optional-deps/package.json delete mode 100644 deps/npm/test/packages/npm-test-optional-deps/test.js delete mode 100644 deps/npm/test/packages/npm-test-platform-all/README delete mode 100644 deps/npm/test/packages/npm-test-platform-all/package.json delete mode 100644 deps/npm/test/packages/npm-test-platform/README delete mode 100644 deps/npm/test/packages/npm-test-platform/package.json delete mode 100644 deps/npm/test/packages/npm-test-private/README delete mode 100644 deps/npm/test/packages/npm-test-private/package.json delete mode 100644 deps/npm/test/packages/npm-test-shrinkwrap/README delete mode 100644 deps/npm/test/packages/npm-test-shrinkwrap/npm-shrinkwrap.json delete mode 100644 deps/npm/test/packages/npm-test-shrinkwrap/package.json delete mode 100644 deps/npm/test/packages/npm-test-shrinkwrap/test.js delete mode 100644 deps/npm/test/packages/npm-test-test-package/README delete mode 100644 deps/npm/test/packages/npm-test-test-package/package.json delete mode 100644 deps/npm/test/packages/npm-test-url-dep/README delete mode 100644 deps/npm/test/packages/npm-test-url-dep/package.json delete mode 100644 deps/npm/test/run.js create mode 100644 deps/npm/test/tap/bearer-token-check.js create mode 100644 deps/npm/test/tap/config-list.js create mode 100644 deps/npm/test/tap/files-and-ignores.js create mode 100644 deps/npm/test/tap/install-cli-production-nosave.js create mode 100644 deps/npm/test/tap/install-report-just-installed.js create mode 100644 deps/npm/test/tap/legacy-array-bin.js create mode 100644 deps/npm/test/tap/legacy-bundled-git.js create mode 100644 deps/npm/test/tap/legacy-dir-bin.js create mode 100644 deps/npm/test/tap/legacy-ignore-nested-nm.js create mode 100644 deps/npm/test/tap/legacy-missing-bindir.js create mode 100644 deps/npm/test/tap/legacy-no-auth-leak.js create mode 100644 deps/npm/test/tap/legacy-npm-self-install.js create mode 100644 deps/npm/test/tap/legacy-optional-deps.js create mode 100644 deps/npm/test/tap/legacy-platform-all.js create mode 100644 deps/npm/test/tap/legacy-platform.js create mode 100644 deps/npm/test/tap/legacy-private.js create mode 100644 deps/npm/test/tap/legacy-shrinkwrap.js create mode 100644 deps/npm/test/tap/legacy-test-package.js create mode 100644 deps/npm/test/tap/legacy-url-dep.js create mode 100644 deps/npm/test/tap/logout-scoped.js create mode 100644 deps/npm/test/tap/update-symlink.js delete mode 100755 deps/npm/test/update-test.sh diff --git a/deps/npm/.mailmap b/deps/npm/.mailmap index 8cf192015c3541..06eb16cff3ee50 100644 --- a/deps/npm/.mailmap +++ b/deps/npm/.mailmap @@ -23,6 +23,7 @@ Forbes Lindesay Forrest L Norvell Gabriel Barros Geoff Flarity +Ifeanyi Oraelosi Isaac Z. Schlueter Isaac Z. Schlueter isaacs Jake Verbaten @@ -59,3 +60,4 @@ Will Elwood Wout Mertens Yeonghoon Park Zeke Sikelianos +Zoujie Wzj diff --git a/deps/npm/.npmignore b/deps/npm/.npmignore index a128c9b604b34d..6f97b5dc0dcb48 100644 --- a/deps/npm/.npmignore +++ b/deps/npm/.npmignore @@ -7,6 +7,7 @@ npm-debug.log /test/packages/npm-test-depends-on-spark/which-spark.log /test/packages/test-package/random-data.txt /test/root +/test/npm_cache node_modules/marked node_modules/ronn node_modules/tap diff --git a/deps/npm/.travis.yml b/deps/npm/.travis.yml index 07c64af858ad41..02765e737b8d44 100644 --- a/deps/npm/.travis.yml +++ b/deps/npm/.travis.yml @@ -13,6 +13,6 @@ before_install: - "node . install -g ." - "mkdir -p /var/run/couchdb" sudo: false -script: "npm run-script test-all" +script: "npm test" notifications: slack: npm-inc:kRqQjto7YbINqHPb1X6nS3g8 diff --git a/deps/npm/AUTHORS b/deps/npm/AUTHORS index 9e2c60ebc7672a..ba4b123ef94d33 100644 --- a/deps/npm/AUTHORS +++ b/deps/npm/AUTHORS @@ -364,3 +364,21 @@ Jan Schär Xcat Liu harryh Prayag Verma +Neil Kistner +Zoujie Wzj +Ryan Hendrickson +Arturo Coronel +Hutson Betts +Lewis Cowper +Adam Byrne +Ifeanyi Oraelosi +Robert Ludwig +Chris Warren +Scott Plumlee +Daniel Pedersen +rhgb +doug.wade +Zac +GriffinSchneider +Andres Kalle +thefourtheye diff --git a/deps/npm/CHANGELOG.md b/deps/npm/CHANGELOG.md index a4507bcc264688..bcd44fff6691de 100644 --- a/deps/npm/CHANGELOG.md +++ b/deps/npm/CHANGELOG.md @@ -1,3 +1,465 @@ +### v3.8.3 (2016-03-17): + +#### PERFORMANCE IMPROVEMENTS + +The updated [`are-we-there-yet`](https://npm.com/package/are-we-there-yet) +changes how it tracks how complete things are to be much more efficient. +The summary is that `are-we-there-yet` was refactored to remove an expensive +tree walk. + +The result for you should be faster installs when working with very large trees. + +Previously `are-we-there-yet` computed this when you asked by passing the request down +its tree of progress indicators, totaling up the results. In doing so, it had to walk the +entire tree of progress indicators. + +By contrast, `are-we-there-yet` now updates a running total when a change +is made, bubbling that up the tree from whatever branch made progress. This +bubbling was already going on so there was nearly no cost associated with taking advantage of it. + +* [`32f2bd0`](https://github.com/npm/npm/commit/32f2bd0e26116db253e619d67c4feae1de3ad2c2) + `npmlog@2.0.3`: + Bring in substantial performance improvements from `are-we-there-yet`. + ([@iarna](https://github.com/iarna)) + +#### DUCT TAPE FOR BUGS + +* [`473d324`](https://github.com/npm/npm/commit/473d3244a8ddfd6b260d0aa0d395b119d595bf97) + [#11947](https://github.com/npm/npm/pull/11947) + Guard against bugs that could cause the installer to crash with errors like: + + ``` + TypeError: Cannot read property 'target' of null + ``` + + This doesn't fix the bugs, but it does at least make the installer less + likely to explode. + ([@thefourtheye](https://github.com/thefourtheye)) + +#### DOC FIXES + +* [`ffa428a`](https://github.com/npm/npm/commit/ffa428a4eee482aa620819bc8df994a76fad7b0c) + [#11880](https://github.com/npm/npm/pull/11880) + Fix typo in `npm install` documentation. + ([@watilde](https://github.com/watilde)) + +#### DEPENDENCY UPDATES + +* [`7537fe1`](https://github.com/npm/npm/commit/7537fe1748c27e6f1144b279b256cd3376d5c41c) + `sorted-object@2.0.0`: + Create objects with `{}` instead of `Object.create(null)` to make the results + strictly equal to what, say, parsed JSON would provide. + ([@domenic](https://github.com/domenic)) +* [`8defb0f`](https://github.com/npm/npm/commit/8defb0f7b3ebdbe15c9ef5036052c10eda7e3161) + `readable-stream@2.0.6`: + Fix sync write issue on 0.10. + ([@calvinmetcalf](https://github.com/calvinmetcalf)) + +#### TEST FIXES FOR THE SELF TESTS + +* [`c3edeab`](https://github.com/npm/npm/commit/c3edeabece4400308264e7cf4bc4448bd2729f55) + [#11912](https://github.com/npm/npm/pull/11912) + Change the self installation test to do its work in `/tmp`. + Previously this was installing into a temp subdir in `test/tap`, which + wouldn't catch the case where a module was installed in the local + `node_modules` folder but not in dependencies, as node would look up + the tree and use the copy from the version of npm being tested. + ([@iarna](https://github.com/iarna)) + +### v3.8.2 (2016-03-10): + +#### HAVING TROUBLE INSTALLING C MODULES ON ANDROID? + +This release includes an updated `node-gyp` with fixes for Android. + +* [`634ecba`](https://github.com/npm/npm/commit/634ecba320fb5a3287e8b7debfd8b931827b9e19) + `node-gyp@3.3.1`: + Fix bug in builds for Android. + ([@bnoordhuis](https://github.com/bnoordhuis)) + +#### NPM LOGOUT CLEANS UP BETTER + +* [`460ed21`](https://github.com/npm/npm/commit/460ed217876ac78d21477c288f1c06563fb770b4) + [#10529](https://github.com/npm/npm/issues/10529) + If you ran `npm logout` with a scope, while we did invalidate your auth + token, we weren't removing the auth token from your config file. This patch causes + the auth token to be removed. + ([@wyze](https://github.com/wyze)) + +#### HELP MORE HELPFUL + +* [`d1d0233`](https://github.com/npm/npm/commit/d1d02335d297da2734b538de44d8967bdcd354cf) + [#11003](https://github.com/npm/npm/issues/11003) + Update help to only show command names and their shortcuts. Previously + some typo corrections were shown, along with various alternate + spellings. + ([@watilde](https://github.com/watilde)) +* [`47928cd`](https://github.com/npm/npm/commit/47928cd6264e1d6d0ef67435b71c66d01bea664a) + [#11003](https://github.com/npm/npm/issues/11003) + Remove "verison" typo from the help listing. + ([@doug-wade](https://github.com/doug-wade)) + +#### MORE COMPLETE CONFIG LISTINGS + +* [`cf5fd40`](https://github.com/npm/npm/commit/cf5fd401494d96325d74a8bb8c326aa0045a714c) + [#11472](https://github.com/npm/npm/issues/11472) + Make `npm config list` include the per-project `.npmrc` in the output. + ([@mjomble](https://github.com/mjomble)) + +#### DEPTH LIMITED PARSEABLE DEP LISTINGS + +* [`611070f`](https://github.com/npm/npm/commit/611070f0f7a1e185c75cadae46179194084b398f) + [#11495](https://github.com/npm/npm/issues/11495) + Made `npm ls --parseable` honor the `--depth=#` option. + ([@zacdoe](https://github.com/zacdoe)) + +#### PROGRESS FOR THE (NON) UNICODE REVOLUTION + +* [`ff90382`](https://github.com/npm/npm/commit/ff9038227a1976b5e936442716d9877f43c6c9b4) + [#11781](https://github.com/npm/npm/issues/11781) + Make the progress bars honor the unicode option. + ([@watilde](https://github.com/watilde)) + +#### `npm view --json`, NOW ACTUALLY JSON + +* [`24ab70a`](https://github.com/npm/npm/commit/24ab70a4ccfeaa005b80252da313bb589510668e) + [#11808](https://github.com/npm/npm/issues/11808) + Make `npm view` produce valid JSON when requested with `--json`. + Previously `npm view` produced some sort of weird hybrid output, with multiple + JSON docs. + ([@doug-wade](https://github.com/doug-wade)) + +#### DOCUMENTATION CHANGES + +* [`6fb0499`](https://github.com/npm/npm/commit/6fb0499bea868fdc637656d210c94f051481ecd4) + [#11726](https://github.com/npm/npm/issues/11726) + Previously we patched the `npm update` docs to suggest using `--depth + Infinity` instead of `--depth 9999`, but that was a mistake. We forgot + that `npm outdated` (on which `npm update` is built) has a special + case where it treats `Infinity` as `0`. This reverts that patch. + ([@GriffinSchneider](https://github.com/GriffinSchneider)) +* [`f0bf684`](https://github.com/npm/npm/commit/f0bf684a87ea5eea03432a17f38678fed4960d43) + [#11748](https://github.com/npm/npm/pull/11748) + Document all of the various aliases for commands in the documentation + for those commands. + ([@watilde](https://github.com/watilde)) +* [`fe04443`](https://github.com/npm/npm/commit/fe04443d8988e2e41bd4047078e06a26d05d380d) + [#10968](https://github.com/npm/npm/issues/10968) + The `npm-scope` document notes that scopes have been available on the + public registry for a while. This adds that you'll need `npm@2` or later + to use them. + ([@doug-wade](https://github.com/doug-wade)) +* [`3db37a5`](https://github.com/npm/npm/commit/3db37a52b2b2e3193ef250ad2cf96dfd2def2777) + [#11820](https://github.com/npm/npm/pull/11820) + The command `npm link` should be linking package from local folder to + global, and `npm link package-name` should be from global to local. The + description in the documentation was reversed and this fixes that. + ([@rhgb](https://github.com/rhgb)) + +#### GLOB FOR THE GLOB THRONE + +* [`be55882`](https://github.com/npm/npm/commit/be55882dc4ee5ce0777b4badc9141dab5bf5be4d) + `glob@7.0.3`: + Fix a race condition and some windows edge cases. + ([@isaacs](https://github.com/isaacs)) + +### v3.8.1 (2016-03-03): + +This week the install summary got better, killing your npm process now +also kills the scripts it was running and a rarely used search flag got +documented. + +Our improvements on the test suite on Windows are beginning to pick up +steam, you can follow along by +[watching the PR](https://github.com/npm/npm/pull/11444). + +#### BETTER INSTALL SUMMARIES + +* [`e40d457`](https://github.com/npm/npm/commit/e40d4572cc98db06757df5b8bb6b7dbd0546d3d7) + [#11699](https://github.com/npm/npm/issues/11699) + Ensure that flags like `--production` passed to install don't result in + the summary at the end being incorrectly filtered. That summary is + produced by the same code as `npm ls` and therefore responds to flags + the same way it does. This is undesirable when it's an install summary, + however, as we don't want it to filter anything. + + This fixes an issue where `npm install --production ` would + result in npm exiting with an error code. The `--production` flag would + make `npm ls` filter out `` as it wasn't saved to the + `package.json` and thus wasn't a production dependency. The install + report is limited to show just the modules installed, so with that + filtered out nothing is available. With nothing available `npm ls` + would set `npm` to exit with an error code. + ([@ixalon](https://github.com/ixalon)) +* [`99337b4`](https://github.com/npm/npm/commit/99337b469163a4b211b9c6ff1aa9712ae0d601d2) + [#11600](https://github.com/npm/npm/pull/11600) + Make the report of installed modules really only show those modules + that were installed. Previously it selected which modules from your + tree to display based on `name@version` which worked great when your + tree was deduped but would list things it hadn't touched when there + were duplicates. + ([@iarna](https://github.com/iarna)) + +#### SCRIPTS BETTER FOLLOW THE LEADER + +* [`5454347`](https://github.com/npm/npm/commit/545434766eb3681d3f40b745f9f3187ed63f310a) + [#10868](https://github.com/npm/npm/pull/10868) + When running a lifecycle script, say through `npm start`, killing npm + wouldn't forward that on to the children. It does now. + ([@daniel-pedersen](https://github.com/daniel-pedersen)) + +#### SEARCHING SPECIFIC REGISTRIES + +* [`6020447`](https://github.com/npm/npm/commit/60204479f76458a9864aa530cda2b3333f95c2b0) + [#11490](https://github.com/npm/npm/pull/11490) + Add docs for using the `--registry` flag with search. + ([@plumlee](https://github.com/plumlee)) + +#### LODASH UPDATES + +* [`bb14204`](https://github.com/npm/npm/commit/bb14204183dad620a6650452a26cdc64111f8136) + `lodash.without@4.1.1` + ([@jdalton](https://github.com/jdalton)) +* [`0089059`](https://github.com/npm/npm/commit/0089059c562aee9ad0398e55d2c12c68a6150e79) + `lodash.keys@4.0.5` + ([@jdalton](https://github.com/jdalton)) +* [`6ee1de4`](https://github.com/npm/npm/commit/6ee1de4474d9683a1f7023067d440780eeb10311) + `lodash.clonedeep@4.3.1` + ([@jdalton](https://github.com/jdalton)) + +### v3.8.0 (2016-02-25): + +This week brings a quality of life improvement for some Windows users, and +an important knob to be tuned for folks experiencing network problems. + +#### LIMIT CONCURRENT REQUESTS + +We've long known that `npm`'s tendency to try to request all your +dependencies simultaneously upset some network hardware (particular, +consumer grade routers & proxies of all sorts). One of the reasons that we're +planning to write our own npm specific version of `request` is to be able to +more easily control this sort of thing. + +But fortunately, you don't have to wait for that. +[@misterbyrne](https://github.com/misterbyrne) took a look at our existing +code and realized it could be added painlessly TODAY. The new default +maximum is `50`, instead of `Infinity`. If you're having network issues you +can try setting that value down to something lower (if you do, please let us +know... the default is subject to tuning). + +* [`910f9ac`](https://github.com/npm/npm/commit/910f9accf398466b8497952bee9f566ab50ade8c) + [`f7be667`](https://github.com/npm/npm/commit/f7be667548a132ec190ac9d60a31885a7b4fe2b3) + Add a new config option, `maxsockets` and `npm-registry-client@7.1.0` to + take advantage of it. + ([@misterbyrne](https://github.com/misterbyrne)) + +#### WINDOWS GIT BASH + +We think it's pretty keen too, we were making it really hard to actually +upgrade if you were using it. NO MORE! + +* [`d60351c`](https://github.com/npm/npm/commit/d60351ccae87d71a5f5eac73e3085c6290b52a69) + [#11524](https://github.com/npm/npm/issues/11524) + Prefer locally installed npm in Git Bash -- previous behavior was to use + the global one. This was done previously for other shells, but not for Git + Bash. + ([@destroyerofbuilds](https://github.com/destroyerofbuilds)) + +#### DOCUMENTATION IMPROVEMENTS + +* [`b63de3c`](https://github.com/npm/npm/commit/b63de3c97c4c27078944249a4d5bbe1c502c23bc) + [#11636](https://github.com/npm/npm/issues/11636) + Document `--save-bundle` option in main install page. + ([@datyayu](https://github.com/datyayu)) +* [`3d26453`](https://github.com/npm/npm/commit/3d264532d6d9df60420e985334aebb53c668d32b) + [#11644](https://github.com/npm/npm/pull/11644) + Add `directories.test` to the `package.json` documentation. + ([@lewiscowper](https://github.com/lewiscowper)) +* [`b64d124`](https://github.com/npm/npm/commit/b64d12432fdad344199b678d700306340d3607eb) + [#11441](https://github.com/npm/npm/pull/11441) + Add a link in documentation to the contribution guidelines. + ([@watilde](https://github.com/watilde)) +* [`82fc548`](https://github.com/npm/npm/commit/82fc548b0e2abbdc4f7968c20b118c30cca79a24) + [#11441](https://github.com/npm/npm/pull/11441/commits) + Remove mentions of the long defunct Google group. + ([@watilde](https://github.com/watilde)) +* [`c6ad091`](https://github.com/npm/npm/commit/c6ad09131af2e2766d6034257a8fcaa294184121) + [#11474](https://github.com/npm/npm/pull/11474) + Correct invalid JSON in npm-update docs. + ([@robludwig](https://github.com/robludwig)) +* [`4906c90`](https://github.com/npm/npm/commit/4906c90ed2668adf59ebee759c7ebb811aa46e57) + Expand on the documentation for `bundlededDependencies`, explaining what they are + and when you might want to use them. + ([@gnerkus](https://github.com/gnerkus)) + +#### DEPENDENCY UPDATES + +* [`93cdc25`](https://github.com/npm/npm/commit/93cdc25432b71cbc9c25c54ae316770e18f4b01e) + `strip-ansi@3.0.1`: + Non-user visible tests & maintainer doc updates. + ([@jbnicolai](https://github.com/jbnicolai)) +* [`3b2ccef`](https://github.com/npm/npm/commit/3b2ccef30dc2038b99ba93cd1404a1d01dac8790) + `lodash.keys@4.0.4` + ([@jdalton](https://github.com/jdalton)) +* [`30e9eb9`](https://github.com/npm/npm/commit/30e9eb97397a8f85081d328ea9aa54c2a7852613) + `lodash._baseuniq@4.5.0` + ([@jdalton](https://github.com/jdalton)) + + +### v3.7.5 (2016-02-22): + +A quick fixup release because when I updated glob, I missed the subdep copies of itself +that it installed deeper in the tree. =/ + +This only effected people trying to update to `3.7.4` from `npm@2` or `npm@1`. Updates from +`npm@3` worked fine (as it fixes up the missing subdeps during installation). + +#### OH MY GLOB + +* [`63fa704`](https://github.com/npm/npm/commit/63fa7044569127e6e29510dc499a865189806076) + [#11633](https://github.com/npm/npm/issues/11633) + When updating the top level `npm` to `glob@7`, the subdeps that + still depended on `glob@6` got new versions installed but they + weren't added to the commit. This adds them back in. + ([@iarna](https://github.com/iarna)) + +### v3.7.4 (2016-02-18): + +I'm ([@iarna](https://github.com/iarna)) back from vacation in the frozen +wastes of Maine! This release sees a couple of bug fixes, some +documentation updates, a bunch of dependency updates and improvements to our +test suite. + +#### FIXES FOR `update`, FIXES FOR `ls` + +* [`53cdb96`](https://github.com/npm/npm/commit/53cdb96634fc329378b4ea4e767ba9987986a76e) + [#11362](https://github.com/npm/npm/issues/11362) + Make `npm update` stop trying to update linked packages. + ([@rhendric](https://github.com/rhendric)) +* [`8d90d25`](https://github.com/npm/npm/commit/8d90d25b3da086843ce43911329c9572bd109078) + [#11559](https://github.com/npm/npm/issues/11559) + Only list runtime dependencies when doing `npm ls --production`. + ([@yibn2008](https://github.com/yibn2008)) + +#### @wyze, DOCUMENTATION HERO OF THE PEOPLE, GETS THEIR OWN HEADER + +* [`b78b301`](https://github.com/npm/npm/commit/b78b30171038ab737eff0b070281277e35af25b4) + [#11416](https://github.com/npm/npm/pull/11416) + Logout docs were using a section copy-pasted from the adduser docs. + ([@wyze](https://github.com/wyze)) +* [`649e28f`](https://github.com/npm/npm/commit/649e28f50aa323e75202eeedb824434535a0a4a0) + [#11414](https://github.com/npm/npm/pull/11414) + Add colon for consistency. + ([@wyze](https://github.com/wyze)) + +#### WHITTLING AWAY AT PATH LENGTHS + +So for all of you who don't know -- Node.js does, in fact, support long Windows +paths. Unfortunately, depending on the tool and the Windows version, a lot of +external tooling does not. This means, for example, that some (all?) versions of +Windows Explorer *can literally never delete npm from their system entirely +because of deeply-nested npm dependencies*. Which is pretty gnarly. + +Incidentally, if you run into that in particularly, you can use +[rimraf](npm.im/rimraf) to remove such files 💁. + +The latest victim of this issue was the Node.js CI setup for testing on Windows, +which uses some tooling or another that croaks on the usual path length limit +for that OS: 255 characters. + +This isn't ordinarily an issue with `npm@3` as it produces mostly flat +trees, but you may be surprised to learn that `npm`'s own distribution isn't +flat, due to needing to be compatible with `npm@1.2`, which ships with +`node@0.8`! + +We've taken another baby step towards alleviating this in this release by +updating a couple of dependencies that were preventing `npmlog` from deduping, +and then doing a dedupe on that and `gauge`. Hopefully it helps. + +* [`f3c32bc`](https://github.com/npm/npm/commit/f3c32bc3127301741d2fa3a26be6f5f127a35908) + [#11528](https://github.com/npm/npm/pull/11528) + `node-gyp@3.3.0`: + Update to a more recent version that uses a version of npmlog compatible + with npm itself. Also adds: AIX support, new `gyp`, `--cafile` command + line option, and allows configuration of Node.js and io.js mirrors. + ([@rvagg](https://github.com/rvagg)) + +#### INTERNAL TEST IMPROVEMENTS + +The `npm` core team's time recently has been sunk into `npm`'s many years of +tech debt. Specifically, we've been working on improving the test suite. +This isn't user visible, but in future should mean a more stable, easier to +contribute to `npm`. Ordinarily we don't report these kinds of changes in +the change log, but I thought I might share this week as this chunk is +bigger than usual. + +* [`07f020a`](https://github.com/npm/npm/commit/07f020a09e94ae393c67526985444e128ef6f83c) + [#11292](https://github.com/npm/npm/pull/11292) + `tacks@1.0.9`: + Add a package that provides a tool to generate fixtures from folders and, relatedly, + a module that an create and tear down filesystem fixtures easily. + ([@iarna](https://github.com/iarna)) +* [`0837346`](https://github.com/npm/npm/commit/083734631f9b11b17c08bca8ba8cb736a7b1e3fb) + [#11292](https://github.com/npm/npm/pull/11292) + Remove all the relatively cryptic legacy tests and creates new tap tests + that check the same functionality. The *legacy* tests were tests that + were originally a shell script that was ported to javascript early in + `npm`'s history. + ([@iarna](https://github.com/iarna)) + ([@zkat](https://github.com/zkat)) +* [`5a701e7`](https://github.com/npm/npm/commit/5a701e71a0130787fb98450f9de92117b4ef88e1) + [#11292](https://github.com/npm/npm/pull/11292) + Test that we don't leak auth info into the environment. + ([@zkat](https://github.com/zkat)) +* [`502d7d0`](https://github.com/npm/npm/commit/502d7d0628f08b09d8d13538ebccc63de8b3edf5) + [#11292](https://github.com/npm/npm/pull/11292) + Test that env vars properly passed into scripts. + ([@zkat](https://github.com/zkat)) +* [`420f267`](https://github.com/npm/npm/commit/420f2672ee8c909f18bee10b1fc7d4ad91cf328b) + [#11292](https://github.com/npm/npm/pull/11292) + Test that npm's distribution binary is complete and can be installed and used. + ([@iarna](https://github.com/iarna)) +* [`b7e99be`](https://github.com/npm/npm/commit/b7e99be1b1086f2d6098c653c1e20791269c9177) + [#11292](https://github.com/npm/npm/pull/11292) + Test that the `package.json` `files` section and `.npmignore` do what + they're supposed to. + ([@zkat](https://github.com/zkat)) + +#### DEPENDENCY UPDATES + +* [`4611098`](https://github.com/npm/npm/commit/4611098fd8c65d61a0645deb05bf38c81300ffca) + `rimraf@2.5.2`: + Use `glob@7.0.0`. + ([@isaacs](https://github.com/isaacs)) +* [`41b2772`](https://github.com/npm/npm/commit/41b2772cb83627f3b5b926cf81e150e7148cb124) + `glob@7.0.0`: + Raise error if `options.cwd` is specified, and not a directory. + ([@isaacs](https://github.com/isaacs)) +* [`c14e74a`](https://github.com/npm/npm/commit/c14e74ab5d17c764f3aa37123a9632fa965f8760) + `gauge@1.2.7`: Update to newer lodash versions, for a smaller tree. + ([@iarna](https://github.com/iarna)) +* [`d629363`](https://github.com/npm/npm/commit/d6293630ddc25bfa26d19b6be4fd2685976d7358) + `lodash.without@4.1.0` + ([@jdalton](https://github.com/jdalton)) +* [`3ea4c80`](https://github.com/npm/npm/commit/3ea4c8049ca8df9f64426b1db8a29b9579950134) + `lodash.uniq@4.2.0` + ([@jdalton](https://github.com/jdalton)) +* [`8ddcc8d`](https://github.com/npm/npm/commit/8ddcc8deb554660a3f7f474fae9758c967d94552) + `lodash.union@4.2.0` + ([@jdalton](https://github.com/jdalton)) +* [`2b656a6`](https://github.com/npm/npm/commit/2b656a672d351f32ee2af24dcee528356dcd64f4) + `lodash.keys@4.0.3` + ([@jdalton](https://github.com/jdalton)) +* [`ac171f8`](https://github.com/npm/npm/commit/ac171f8f0318a7dd3c515f3b83502dfa9e87adb8) + `lodash.isarguments@3.0.7` + ([@jdalton](https://github.com/jdalton)) +* [`bcccd90`](https://github.com/npm/npm/commit/bcccd9057b75d800c799ab15f00924f700415d3e) + `lodash.clonedeep@4.3.0` + ([@jdalton](https://github.com/jdalton)) +* [`8165bca`](https://github.com/npm/npm/commit/8165bca537d86305a3d08f080f86223a26615aa8) + `lodash._baseuniq@4.4.0` + ([@jdalton](https://github.com/jdalton)) + ### v3.7.3 (2016-02-11): Hey all! We've got a pretty small release this week -- just documentation @@ -389,7 +851,7 @@ version of Node.js and now suppress those other warnings. ([@chrisirhc](https://github.com/chrisirhc)) * [`00720db`](https://github.com/npm/npm/commit/00720db2c326cf8f968c662444a4575ae8c3020a) [#11158](https://github.com/npm/npm/pull/11158) - On windows, the `node-gyp` wrapper would fail if your path to `node-gyp` + On Windows, the `node-gyp` wrapper would fail if your path to `node-gyp` contained spaces. This fixes that problem by quoting use of that path. ([@orangemocha](https://github.com/orangemocha)) * [`69ac933`](https://github.com/npm/npm/commit/69ac9333506752bf2e5af70b3b3e03c6181de3e7) @@ -520,13 +982,13 @@ particularly with Windows, so there's not too much to call out here. `glob@6.0.3`: Remove deprecated features and fix a bunch of bugs. ([@isaacs](https://github.com/isaacs)) * [`5b820c4`](https://github.com/npm/npm/commit/5b820c4e17c907fa8c23771c0cd8e74dd5fdaa51) - `has-unicode@2.0.0`: Change the default on windows to be false, as - international windows installs often install to non-unicode codepages and + `has-unicode@2.0.0`: Change the default on Windows to be false, as + international Windows installs often install to non-unicode codepages and there's no way to detect this short of a system call or a call to a command line program. ([@iarna](https://github.com/iarna)) * [`238fe84`](https://github.com/npm/npm/commit/238fe84ac61297f1d71701d80368afaa40463305) - `which@1.2.1`: Fixed bugs with uid/gid checks and with quoted windows PATH + `which@1.2.1`: Fixed bugs with uid/gid checks and with quoted Windows PATH parts. ([@isaacs](https://github.com/isaacs)) * [`5e510e1`](https://github.com/npm/npm/commit/5e510e13d022a22d58742b126482d3b38a14cc83) @@ -1624,7 +2086,7 @@ Unix-specific, so on Windows it just threw up its hands and stopped removing installed binaries at all. Not great. So today we're fixing that– it let us maintain the same safety -that we added in #9198, but ALSO works with windows. +that we added in #9198, but ALSO works with Windows. * [`25fbaed`](https://github.com/npm/npm/commit/25fbaed) [#9394](https://github.com/npm/npm/issues/9394) @@ -1653,7 +2115,7 @@ release candidate. * [`6665e54`](https://github.com/npm/npm/commit/6665e54) [#9505](https://github.com/npm/npm/pull/9505) - Allow npm link to run on windows with prerelease versions of + Allow npm link to run on Windows with prerelease versions of node ([@jon-hall](https://github.com/jon-hall)) @@ -2614,7 +3076,7 @@ nesting. You'll only see modules nested underneath one another when two (or more) modules have conflicting dependencies. * [#3697](https://github.com/npm/npm/issues/3697) - This will hopefully eliminate most cases where windows users ended up + This will hopefully eliminate most cases where Windows users ended up with paths that were too long for Explorer and other standard tools to deal with. * [#6912](https://github.com/npm/npm/issues/6912) diff --git a/deps/npm/Makefile b/deps/npm/Makefile index ba84072b192786..bea8138becf4c8 100644 --- a/deps/npm/Makefile +++ b/deps/npm/Makefile @@ -160,18 +160,23 @@ test: doc tag: npm tag npm@$(PUBLISHTAG) latest -publish: link doc +ls-ok: + node . ls >/dev/null + +gitclean: + git clean -fd + +publish: gitclean ls-ok link doc @git push origin :v$(shell npm -v) 2>&1 || true - git clean -fd &&\ git push origin $(BRANCH) &&\ git push origin --tags &&\ npm publish --tag=$(PUBLISHTAG) -release: markedclean marked-manclean doc-clean doc +release: gitclean ls-ok markedclean marked-manclean doc-clean doc node cli.js prune --production @bash scripts/release.sh sandwich: @[ $$(whoami) = "root" ] && (echo "ok"; echo "ham" > sandwich) || (echo "make it yourself" && exit 13) -.PHONY: all latest install dev link doc clean uninstall test man doc-clean docclean release +.PHONY: all latest install dev link doc clean uninstall test man doc-clean docclean release ls-ok realclean diff --git a/deps/npm/bin/npm b/deps/npm/bin/npm index 45e8e41031cd27..5acd6fb61a7985 100755 --- a/deps/npm/bin/npm +++ b/deps/npm/bin/npm @@ -15,6 +15,13 @@ fi NPM_CLI_JS="$basedir/node_modules/npm/bin/npm-cli.js" case `uname` in + *MINGW*) + NPM_PREFIX=`"$NODE_EXE" "$NPM_CLI_JS" prefix -g` + NPM_PREFIX_NPM_CLI_JS="$NPM_PREFIX/node_modules/npm/bin/npm-cli.js" + if [ -f "$NPM_PREFIX_NPM_CLI_JS" ]; then + NPM_CLI_JS="$NPM_PREFIX_NPM_CLI_JS" + fi + ;; *CYGWIN*) NPM_PREFIX=`"$NODE_EXE" "$NPM_CLI_JS" prefix -g` NPM_PREFIX_NPM_CLI_JS="$NPM_PREFIX/node_modules/npm/bin/npm-cli.js" diff --git a/deps/npm/doc/cli/npm-adduser.md b/deps/npm/doc/cli/npm-adduser.md index 24d3611e61c604..9afece598faf95 100644 --- a/deps/npm/doc/cli/npm-adduser.md +++ b/deps/npm/doc/cli/npm-adduser.md @@ -5,6 +5,8 @@ npm-adduser(1) -- Add a registry user account npm adduser [--registry=url] [--scope=@orgname] [--always-auth] + aliases: login, add-user + ## DESCRIPTION Create or verify a user named `` in the specified registry, and @@ -57,9 +59,11 @@ registries. Can be used with `--registry` and / or `--scope`, e.g. npm adduser --registry=http://private-registry.example.com --always-auth This will ensure that all requests to that registry (including for tarballs) -include an authorization header. See `always-auth` in `npm-config(7)` for more -details on always-auth. Registry-specific configuration of `always-auth` takes -precedence over any global configuration. +include an authorization header. This setting may be necessary for use with +private registries where metadata and package tarballs are stored on hosts with +different hostnames. See `always-auth` in `npm-config(7)` for more details on +always-auth. Registry-specific configuration of `always-auth` takes precedence +over any global configuration. ## SEE ALSO diff --git a/deps/npm/doc/cli/npm-bugs.md b/deps/npm/doc/cli/npm-bugs.md index d2ad534fa3501a..55bce12f23fa37 100644 --- a/deps/npm/doc/cli/npm-bugs.md +++ b/deps/npm/doc/cli/npm-bugs.md @@ -5,6 +5,8 @@ npm-bugs(1) -- Bugs for a package in a web browser maybe npm bugs [] + aliases: issues + ## DESCRIPTION This command tries to guess at the likely location of a package's diff --git a/deps/npm/doc/cli/npm-config.md b/deps/npm/doc/cli/npm-config.md index ec5c4eb14be8ab..5aecb2c3acbb97 100644 --- a/deps/npm/doc/cli/npm-config.md +++ b/deps/npm/doc/cli/npm-config.md @@ -11,6 +11,8 @@ npm-config(1) -- Manage the npm configuration files npm get npm set [-g|--global] + aliases: c + ## DESCRIPTION npm gets its config settings from the command line, environment diff --git a/deps/npm/doc/cli/npm-dedupe.md b/deps/npm/doc/cli/npm-dedupe.md index ed8dca81f5d14c..d68832145f0a56 100644 --- a/deps/npm/doc/cli/npm-dedupe.md +++ b/deps/npm/doc/cli/npm-dedupe.md @@ -6,6 +6,8 @@ npm-dedupe(1) -- Reduce duplication npm dedupe npm ddp + aliases: find-dupes, ddp + ## DESCRIPTION Searches the local package tree and attempts to simplify the overall diff --git a/deps/npm/doc/cli/npm-dist-tag.md b/deps/npm/doc/cli/npm-dist-tag.md index 06721bbae6ab3b..a88fc35a5e8e7a 100644 --- a/deps/npm/doc/cli/npm-dist-tag.md +++ b/deps/npm/doc/cli/npm-dist-tag.md @@ -7,6 +7,8 @@ npm-dist-tag(1) -- Modify package distribution tags npm dist-tag rm npm dist-tag ls [] + aliases: dist-tags + ## DESCRIPTION Add, remove, and enumerate distribution tags on a package: diff --git a/deps/npm/doc/cli/npm-help-search.md b/deps/npm/doc/cli/npm-help-search.md index 0a40f1c43b9167..f1d883acd9a82d 100644 --- a/deps/npm/doc/cli/npm-help-search.md +++ b/deps/npm/doc/cli/npm-help-search.md @@ -21,7 +21,7 @@ command directly. ### long * Type: Boolean -* Default false +* Default: false If true, the "long" flag will cause help-search to output context around where the terms were found in the documentation. diff --git a/deps/npm/doc/cli/npm-install.md b/deps/npm/doc/cli/npm-install.md index eca4e2c3bf8de6..f9c54c056a6915 100644 --- a/deps/npm/doc/cli/npm-install.md +++ b/deps/npm/doc/cli/npm-install.md @@ -13,7 +13,7 @@ npm-install(1) -- Install a package npm install alias: npm i - common options: [-S|--save|-D|--save-dev|-O|--save-optional] [-E|--save-exact] [--dry-run] + common options: [-S|--save|-D|--save-dev|-O|--save-optional] [-E|--save-exact] [-B|--save-bundle] [--dry-run] ## DESCRIPTION @@ -97,12 +97,14 @@ after packing it up into a tarball (b). * `-O, --save-optional`: Package will appear in your `optionalDependencies`. When using any of the above options to save dependencies to your - package.json, there is an additional, optional flag: + package.json, there are two additional, optional flags: * `-E, --save-exact`: Saved dependencies will be configured with an exact version rather than using npm's default semver range operator. + * `-B, --save-bundle`: Saved dependencies will also be added to your `bundleDependencies` list. + Further, if you have an `npm-shrinkwrap.json` then it will be updated as well. @@ -122,6 +124,7 @@ after packing it up into a tarball (b). npm install node-tap --save-dev npm install dtrace-provider --save-optional npm install readable-stream --save --save-exact + npm install ansi-regex --save --save-bundle **Note**: If there is a file or folder named `` in the current @@ -266,7 +269,7 @@ The `--global-style` argument will cause npm to install the package into your local `node_modules` folder with the same layout it uses with the global `node_modules` folder. Only your direct dependencies will show in `node_modules` and everything they depend on will be flattened in their -`node_modules` folders. This obviously will elminate some deduping. +`node_modules` folders. This obviously will eliminate some deduping. The `--legacy-bundling` argument will cause npm to install the package such that versions of npm prior to 1.4, such as the one included with node 0.8, diff --git a/deps/npm/doc/cli/npm-link.md b/deps/npm/doc/cli/npm-link.md index 344fcbf1a742bb..b5749f889c7a42 100644 --- a/deps/npm/doc/cli/npm-link.md +++ b/deps/npm/doc/cli/npm-link.md @@ -12,12 +12,13 @@ npm-link(1) -- Symlink a package folder Package linking is a two-step process. -First, `npm link` in a package folder will create a globally-installed -symbolic link from `prefix/package-name` to the current folder (see -`npm-config(7)` for the value of `prefix`). +First, `npm link` in a package folder will create a symlink in the global folder +`{prefix}/lib/node_modules/` that links to the package where the `npm +link` command was executed. (see `npm-config(7)` for the value of `prefix`). Next, in some other location, `npm link package-name` will create a -symlink from the local `node_modules` folder to the global symlink. +symbolic link from globally-installed `package-name` to `node_modules/` +of the current folder. Note that `package-name` is taken from `package.json`, not from directory name. @@ -40,7 +41,7 @@ For example: Now, any changes to ~/projects/node-redis will be reflected in ~/projects/node-bloggy/node_modules/node-redis/. Note that the link should -be to the package name, not the directory name for that package. +be to the package name, not the directory name for that package. You may also shortcut the two steps in one. For example, to do the above use-case in a shorter way: diff --git a/deps/npm/doc/cli/npm-logout.md b/deps/npm/doc/cli/npm-logout.md index 59f49cc25a4e3f..0841adfbf847f0 100644 --- a/deps/npm/doc/cli/npm-logout.md +++ b/deps/npm/doc/cli/npm-logout.md @@ -31,14 +31,9 @@ it takes precedence. Default: none -If specified, the user and login credentials given will be associated -with the specified scope. See `npm-scope(7)`. You can use both at the same time, -e.g. +If specified, you will be logged out of the specified scope. See `npm-scope(7)`. - npm adduser --registry=http://myregistry.example.com --scope=@myco - -This will set a registry for the given scope and login or create a user for -that registry at the same time. + npm logout --scope=@myco ## SEE ALSO diff --git a/deps/npm/doc/cli/npm-owner.md b/deps/npm/doc/cli/npm-owner.md index 1047a09bb8a053..43929cb3322aed 100644 --- a/deps/npm/doc/cli/npm-owner.md +++ b/deps/npm/doc/cli/npm-owner.md @@ -7,6 +7,8 @@ npm-owner(1) -- Manage package owners npm owner rm [<@scope>/] npm owner ls [<@scope>/] + aliases: author + ## DESCRIPTION Manage ownership of published packages. diff --git a/deps/npm/doc/cli/npm-search.md b/deps/npm/doc/cli/npm-search.md index a14b9c353de24c..78967f14eb019f 100644 --- a/deps/npm/doc/cli/npm-search.md +++ b/deps/npm/doc/cli/npm-search.md @@ -5,7 +5,7 @@ npm-search(1) -- Search for packages npm search [-l|--long] [search terms ...] - aliases: s, se + aliases: s, se, find ## DESCRIPTION @@ -27,6 +27,15 @@ lines. When disabled (default) search results are truncated to fit neatly on a single line. Modules with extremely long names will fall on multiple lines. +### registry + + * Default: https://registry.npmjs.org/ + * Type : url + +Search the specified registry for modules. If you have configured npm to point to a different default registry, +such as your internal private module repository, `npm search` will default to that registry when searching. +Pass a different registry url such as the default above in order to override this setting. + ## SEE ALSO * npm-registry(7) diff --git a/deps/npm/doc/cli/npm-test.md b/deps/npm/doc/cli/npm-test.md index c2267082dfbe98..fe746cc73f17ff 100644 --- a/deps/npm/doc/cli/npm-test.md +++ b/deps/npm/doc/cli/npm-test.md @@ -4,7 +4,8 @@ npm-test(1) -- Test a package ## SYNOPSIS npm test [-- ] - npm tst [-- ] + + aliases: t, tst ## DESCRIPTION diff --git a/deps/npm/doc/cli/npm-update.md b/deps/npm/doc/cli/npm-update.md index 5271ac16d3fae8..d6ec30d2ae6154 100644 --- a/deps/npm/doc/cli/npm-update.md +++ b/deps/npm/doc/cli/npm-update.md @@ -5,6 +5,8 @@ npm-update(1) -- Update a package npm update [-g] [...] + aliases: up, upgrade + ## DESCRIPTION This command will update all the packages listed to the latest version @@ -22,7 +24,7 @@ or local) will be updated. As of `npm@2.6.1`, the `npm update` will only inspect top-level packages. Prior versions of `npm` would also recursively inspect all dependencies. -To get the old behavior, use `npm --depth Infinity update`. +To get the old behavior, use `npm --depth 9999 update`. ## EXAMPLES @@ -36,7 +38,7 @@ on dependencies, `dep1` (`dep2`, .. etc.). The published versions of `dep1` are ``` { "dist-tags": { "latest": "1.2.2" }, - "versions": { + "versions": [ "1.2.2", "1.2.1", "1.2.0", @@ -46,7 +48,7 @@ on dependencies, `dep1` (`dep2`, .. etc.). The published versions of `dep1` are "0.4.1", "0.4.0", "0.2.0" - } + ] } ``` diff --git a/deps/npm/doc/cli/npm.md b/deps/npm/doc/cli/npm.md index 9746a15fc0cec5..6c4cdd42bb2fa3 100644 --- a/deps/npm/doc/cli/npm.md +++ b/deps/npm/doc/cli/npm.md @@ -127,11 +127,11 @@ Patches welcome! Contributors are listed in npm's `package.json` file. You can view them easily by doing `npm view npm contributors`. -If you would like to contribute, but don't know what to work on, check -the issues list or ask on the mailing list. +If you would like to contribute, but don't know what to work on, read +the contributing guidelines and check the issues list. +* https://github.com/npm/npm/wiki/Contributing-Guidelines * -* ## BUGS @@ -139,8 +139,6 @@ When you find issues, please report them: * web: -* email: - Be sure to include *all* of the output from the npm command that didn't work as expected. The `npm-debug.log` file is also helpful to provide. diff --git a/deps/npm/doc/files/package.json.md b/deps/npm/doc/files/package.json.md index 50d268f32dc59d..3c61d8b88e593d 100644 --- a/deps/npm/doc/files/package.json.md +++ b/deps/npm/doc/files/package.json.md @@ -329,6 +329,11 @@ maybe, someday. Put example scripts in here. Someday, it might be exposed in some clever way. +### directories.test + +Put your tests in here. It is currently not exposed, but it might be in the +future. + ## repository Specify the place where your code lives. This is helpful for people who @@ -573,7 +578,31 @@ this. If you depend on features introduced in 1.5.2, use `">= 1.5.2 < 2"`. ## bundledDependencies -Array of package names that will be bundled when publishing the package. +This defines an array of package names that will be bundled when publishing +the package. + +In cases where you need to preserve npm packages locally or have them +available through a single file download, you can bundle the packages in a +tarball file by specifying the package names in the `bundledDependencies` +array and executing `npm pack`. + +For example: + +If we define a package.json like this: + +``` +{ + "name": "awesome-web-framework", + "version": "1.0.0", + "bundledDependencies": [ + 'renderized', 'super-streams' + ] +} +``` +we can obtain `awesome-web-framework-1.0.0.tgz` file by running `npm pack`. +This file contains the dependencies `renderized` and `super-streams` which +can be installed in a new project by executing `npm install +awesome-web-framework-1.0.0.tgz`. If this is spelled `"bundleDependencies"`, then that is also honored. diff --git a/deps/npm/doc/misc/npm-config.md b/deps/npm/doc/misc/npm-config.md index 3d10ddf882e97a..0642a3010a0333 100644 --- a/deps/npm/doc/misc/npm-config.md +++ b/deps/npm/doc/misc/npm-config.md @@ -571,6 +571,14 @@ colored output if it is a TTY. Show extended information in `npm ls` and `npm search`. +### maxsockets + +* Default: 50 +* Type: Number + +The maximum number of connections to use per origin (protocol/host/port +combination). Passed to the `http` `Agent` used to make the request. + ### message * Default: "%s" diff --git a/deps/npm/doc/misc/npm-scope.md b/deps/npm/doc/misc/npm-scope.md index f1e4da1f1fab0a..7431e62129343b 100644 --- a/deps/npm/doc/misc/npm-scope.md +++ b/deps/npm/doc/misc/npm-scope.md @@ -54,7 +54,7 @@ just specifying to require the module `mypackage` in the folder called `@myorg`. Scoped packages can be published to any registry that supports them, including the public npm registry. -(As of 2015-04-19, the public npm registry **does** support scoped packages) +(As of 2015-04-19, and with npm 2.0 or better, the public npm registry **does** support scoped packages) If you wish, you may associate a scope with a registry; see below. diff --git a/deps/npm/html/doc/README.html b/deps/npm/html/doc/README.html index be20e31c390a79..0490b345d88b87 100644 --- a/deps/npm/html/doc/README.html +++ b/deps/npm/html/doc/README.html @@ -127,5 +127,5 @@

SEE ALSO

       -
+ diff --git a/deps/npm/html/doc/cli/npm-access.html b/deps/npm/html/doc/cli/npm-access.html index 2df767e0385acc..1ae9eb53a0cc8d 100644 --- a/deps/npm/html/doc/cli/npm-access.html +++ b/deps/npm/html/doc/cli/npm-access.html @@ -84,5 +84,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-adduser.html b/deps/npm/html/doc/cli/npm-adduser.html index 8267923eb4f837..9e34cb364081d6 100644 --- a/deps/npm/html/doc/cli/npm-adduser.html +++ b/deps/npm/html/doc/cli/npm-adduser.html @@ -12,6 +12,8 @@

npm-adduser

Add a registry user account

SYNOPSIS

npm adduser [--registry=url] [--scope=@orgname] [--always-auth]
+
+aliases: login, add-user
 

DESCRIPTION

Create or verify a user named <username> in the specified registry, and save the credentials to the .npmrc file. If no registry is specified, @@ -44,9 +46,11 @@

always-auth

registries. Can be used with --registry and / or --scope, e.g.

npm adduser --registry=http://private-registry.example.com --always-auth
 

This will ensure that all requests to that registry (including for tarballs) -include an authorization header. See always-auth in npm-config(7) for more -details on always-auth. Registry-specific configuration of always-auth takes -precedence over any global configuration.

+include an authorization header. This setting may be necessary for use with +private registries where metadata and package tarballs are stored on hosts with +different hostnames. See always-auth in npm-config(7) for more details on +always-auth. Registry-specific configuration of always-auth takes precedence +over any global configuration.

SEE ALSO