summaryrefslogtreecommitdiff
path: root/deps/npm/test
diff options
context:
space:
mode:
authorKat Marchán <kzm@zkat.tech>2019-01-29 14:43:00 -0800
committerMyles Borins <mylesborins@google.com>2019-02-12 00:06:29 -0800
commit43dd49c9782848c25e5b03448c8a0f923f13c158 (patch)
treef7ac5d645019b2b844f26be66c291bbae734d097 /deps/npm/test
parentb361f9577fbd72e518438d3fa0b01f7d34d814a5 (diff)
downloadandroid-node-v8-43dd49c9782848c25e5b03448c8a0f923f13c158.tar.gz
android-node-v8-43dd49c9782848c25e5b03448c8a0f923f13c158.tar.bz2
android-node-v8-43dd49c9782848c25e5b03448c8a0f923f13c158.zip
deps: upgrade npm to 6.7.0
PR-URL: https://github.com/nodejs/node/pull/25804 Reviewed-By: Myles Borins <myles.borins@gmail.com>
Diffstat (limited to 'deps/npm/test')
-rw-r--r--deps/npm/test/fake-registry.md6
-rw-r--r--deps/npm/test/fixtures/config/userconfig-with-gc21
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha1/07/07/8db5f6377f6321fceaaedf497de124dc9465bin0 -> 4025 bytes
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha1/28/eb/847a949e71eb9041fd6567a36c9acfcf2bedbin0 -> 55415 bytes
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha1/2a/77/307e108bfb57107c4c334abb5ef5395dc68abin0 -> 364 bytes
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha1/35/6a/192b7913b04c54574d18c28d46e6395428ab1
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha1/41/c8/0b2b6f5432c60cddb81932ab56563b444f52bin0 -> 6288 bytes
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha1/45/c8/a39b626c1f83f8b8f53007c2f60eb98eee9dbin0 -> 372 bytes
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha1/69/42/4826f3405f79f142e6fc3d9ae58d4dbb9200bin0 -> 12142 bytes
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha1/82/f3/ccba11914dc88bcb185ee3b1b33b564272bcbin0 -> 220 bytes
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha1/b6/bb/e0b0674b9d719708ca38de8c237cb526c3d1bin0 -> 15772 bytes
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha1/b7/96/69bb42ecb409f83d583cad52ca17eaa1643fbin0 -> 13772 bytes
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha1/c2/7a/36bf00f3a7a3d24a8fbc7853f06fce4e9c86bin0 -> 7954 bytes
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha1/ca/43/09dadee6b54cc0b8d247e8d7c7a0975bdc9bbin0 -> 1519 bytes
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha1/d2/bd/e817d176ffade894ab71458e682a14b86dc9bin0 -> 22746 bytes
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha1/d7/aa/327bcecf518f9106ac6b8f003fa3bcea8566bin0 -> 5977 bytes
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha1/e0/50/08f3ff82b34f17b1e972454a0ab70a269c7dbin0 -> 371 bytes
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha1/ee/56/8a2b1efaeb95bec4d9e59e5301fc63339866bin0 -> 4733 bytes
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/0b/61/241d7c17bcbb1baee7094d14b7c451efecc7ffcbd92598a0f13d313cc9ebc2a07e61f007baf58fbf94ff9a8695bdd5cae7ce03bbf1e94e93613a00f25f211
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/15/ad/34853f1149526d97f08b50c3aaa9ec84031a7ebfb7bb59e3f2317d5c306286528cb91bf53dc596802d316762e5ba4641764b2680945ba3f620d3cf798a051
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/21/82/eac4f83e50f3b6aa8bea561c5dfebdc1d66941e2da785af406e045de56a0fc422034ca7fa2ab5fa99022c6b860203eb4853ce85f15f26b96c84b8d9e73201
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/22/fe/eed42d3bab5ff699721346f9c5fa7a70ac2748ee0ced75bc0b8f6e8aba924f53a93404b30fa8d28e0d64c14922e8f0d1ed1c212ef3f15d00e9527b17b9b9bin0 -> 15108 bytes
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/2c/ec/8afad096618ae60ad9cd1cf2d2d9d5597b68010cc087c9a78765ef0dacd25c13a0e36948949317f09f667274ee5fa714abdc1b158e5cfea5ca5401663425bin0 -> 5787 bytes
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/2e/36/48f976830aeaba0724b382a09a6a6736dfd4c755963a4f462f963f9ecb211c2258f00766dc3aa68664f66d3a01cb2789b2cf614aeb292dbeb4afe0b206ccbin0 -> 4733 bytes
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/32/c8/6992ba4671408a292bb3f2fae4cd10416dcedb6a214c169054af6bcc792b6ea56f7245333357cc59e4f84660380604b5ff338258ad46973218d864799b5e1
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/35/39/721f705f621cffe30dbc828be387e253c50ed05fb0a8e3f418769996bdde1dd1cb8af2e47dfe9417aab7ac3d238d1f036ef2e9adb898c386f0cda9b6861e1
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/35/aa/ea2b3a5902264c14606117b00e20425af14560c323e92859dd86f4cc552146fc06548a31ea59ba6edd569b6a41a201781f6a39900082feaac81923a12e571
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/37/27/2f58378ed591197373f46d3be148bfc82649dbb213be14a2b1ac47f50d7d4804cb105590935a7bcd02dfae3a2421c939cafb586b9f1b6c492fdfe09aca86bin0 -> 55415 bytes
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/3a/f5/ac6e34332259d456779c882d9d0db472befe84fd8043ac328bf51e1bdcd47437b17eff4d92df4ad8e999b2c2e140779cde81f69475d8d4591808103b964b1
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/52/3a/902538a5ebd3ce129087f262bf0a1663c2fdb6a636acd7660e386fbf2f8d097946cda07518bbd9b9fc9c5be725e8ae6041e62c9e9e81de5585e900328b091
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/54/95/fe840edbf5d18dfc27c5f4d9b359e8ab81a4741f62b0deb20979359843828ae50112bac4e25a3fc1089d260fd9b8236e434a3a55580b7aaba369e6f8ba87bin0 -> 283 bytes
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/5a/64/0274b5cfdc4e0635bdd262c5830de7faf9c02d3c5ef66a60ac58ed20fcb324f85d7ef7b6e85210d8209122096191893f662db33d0569837305388bad35bf1
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/5d/29/d6e1add2536379abc1eba52f83824a6091a5af9ffba1479cf404f478f36f06504f6643db8631e0b6f057e55140d84489cacc140627e012824fa073f975681
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/6f/c7/3dd4508c2d9f17eeb1cfd288276948a1689ebdf6a8d3f4f7516d4c68be639063e7e5437ef7ff72547aabe86b49a6b1bf5c733bdece3877d82bc8bc1a9a7d1
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/76/39/4b378512c68bf209b433e06b71df27a45f7e7be35f174a0f83bce7799628b74dbe993c18b1c12e899a1ed7b159470b382180d1f0a5c4098ac6092cda1a8f1
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/79/ec/4625bec1a13aaefdcd4e7cf18f1c5575879d80e8bdba063cc962c959c48526a0c1c9e3766c95ec9ea1cf10cd954968f3bfec136f0d3aa87009db05cf46661
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/83/a4/d747b806caae7385778145bcf999fae69eeb6f14343f6801b79b6b7853538961694ac8b4791c7675c27928b5495d12d2f944867db1105e424d5fa9b1e0151
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/87/44/66cb46d039cc912bd3ee29bfae97ac7f4dd4051cd240c1b25548747f9f1c6fdc3a2a9e65b058ab28f0a22b4aaee58075e0c77fd00ddf656536bc543290be1
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/88/49/914fc692dc5441fec8231a33caec98409b6d522fa46bed4a673127876224b9cb8bc35e51e251c8a897a1d71dd9d7f46b6217ec8ef30ec4d83f4b9a43098d1
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/9d/5b/15d0ad75fc513f4a327b5e441803dd220edeb4f9660e454fe9d263b543ba356c71330a5964f864d1c24aada16bea028eb40106762b142b30d448cdc08593bin0 -> 27629 bytes
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/9d/b3/095447c9b53fe88bbf190fb6a324c7a42a84bf51d3c345fc88cdeea00f026167ad7329b42369d79a67812738a2324b7aae42d4feeac49a2b895c57b481681
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/a0/f8/5ae8b484bc71fb13ef636b9aee45f548ab6357488369ffb02f239f9473c6b94c5c2a5ef3b1b96e16ce6158dc05f13ef88bcef32de3bc415a48cdc55003551
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/a1/a1/072cae616c1f6479110e3e3ee54fa16978c081d8032999d62d207e5cd6c7643e463d73d3ff4b218ad717724c918013e03954f9729192cbdfa1d0bed6fd391
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/aa/86/730ec932cdb0f05db2f35e1e456fc986db19f83fb3f8140a5851411fbcf44966328479ab280cc80ae2d740cdc01f8f880836a00c66743565acd2e8352e7abin0 -> 151 bytes
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/ad/a1/cd9122e6beb95de36bb8dc10c255a6a7d7b8bfbe21b72843ab6db402ee8cb8bde5fb2d050a7eb96ea330e8be1a394c4c7c444c8b541f8e180b7f12506fe81
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/b4/8a/454c55f95fa0351cca479761f5ff792f8f7ab4448f2b1399a3ac3778a60a293f71feeda29678ce15b71712b0803f9866e92c0cbc4549b4807435dcf7a767bin0 -> 143 bytes
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/c9/a2/065bb9746e574a541af061b7880948d30e47db1dc356c314bd934b0169894d696e833bd63b6c53cb973d14b8064b5b04177c402e347770ddfbbbc7c906cbbin0 -> 184 bytes
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/cd/eb/0f5065be03e89547a33e064d911969953c45eb05df664ca4d537b970dc9f768123463a6f75ce6b836d50ee73c18ac7a25e763f2b9869612cdbf427195d4b1
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/d4/45/ed72e65ed0b9fec5a6a41794caadda951ba79a0541648e259c8021b3fc96487d2caedf869ac142b4b0f31998c436f171d98a9a1740e3ac8eebb5c1103c531
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/dc/2a/a4df42cd435623f4c2c3e274fa081cc942ff45dcfa98cdf4a9324b6a21c3721c34bb97e6809ee28051fc10f57749cff60aa970a1e38c7a6c354a9403554e1
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/dc/68/8298544a3867cf399b04cc60c38c6519dae6096c5ba1917bb78a489baa9d6bad39649e16e00367e7cd02ac14ba7cd64f3acd56e21b984630f823ad9c96631
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/e7/06/de9d8e6ce16152be537cbccdf26321b3d678394ce42fb56aa4e69a37aba9d54df284700d066f7e6d005e461ab41d220fd6f268ff889e405809108a7b86761
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/e8/36/89a9c21ac93c2a0efc7e536925004e528bd3bfeba708cf5216db999c5efce0d7138a7e6ecedb125e43ba2aeb475d5958a2ca31f48c6a1442f164e90a3a221
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/ed/fc/2d79d0d55bf4ea02b74ecc3657ea833bc6d0578adb2e1f5ae0d733b09a484f8e7287901578c7bdaa5d6fd30ac4dea48773a610ca6ee1e09e31f6147e921d1
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/f3/e8/2d6a0b75ad5cebd09177d93f572dbd8b877ee9f1505b2e84e03810fa0412e4904060be7d2a4df4221b1bb92884db886826bf8cd26634667a2d103a9994381
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/f5/91/da7ce6e308dcaa672b8625ca0491cafed6726ceda16ffbcdd3f7661e5eb5b1aae2bd99960acb3a2fcc61a14edff79dd7bd610b27c57fea8aff535dbc519f1
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/f5/bd/a6b78fcf204b1ec0e6069045b44f6669e9aab878bfc891b946e4cecb843f4e87e428b6771ae7b4a2ce8f303e97746763b0642faf89a9b00425297dc78d6a1
-rw-r--r--deps/npm/test/npm_cache/_cacache/content-v2/sha512/fd/37/65c30143da9bd36758e4f19cce0984aac9f6a6a90a2a1ea79ab8acec84841b7b2af4b20e52051d585ac12bef1930d35234d6556319315d5656391257472d1
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/06/90/5e61e746e7d543d4bffbfeead5822d45a4e7089a414fbe6f1be007f6cd483
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/0b/5a/62ce62a24edca98b341182e328ec6d451a459b384cac489f57771ed7e74a2
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/0e/d4/8aa7d55331a48f04b5218bb50c1c639e7a3600893f62fde6191d2563e6df5
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/13/b5/0178cbb8a4a3e25b821dbdd82db862373a457bbab3fee9c0e305b4f83b372
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/14/7e/33640d7ecca75f94fce8a3c3b46e111bc08921520f7b2cce032bf88621073
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/15/bf/92c5cbc5f2b5bb51971d6f7d04cf0b3871bdde88a368eed466901917d6363
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/18/1f/b15fb9d4fbd32e771ad6afadda07bc566c24b4b589c6bbc5c3e996c7a3db3
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/19/db/491ce5fd3b8f5521f62a3d208c8b91325f3f8fe347347649e2e7cb8c10b23
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/1c/05/419d1e706cbe2c4b49cddcc72c47c6fbcde4ff2cdbb76da7c1defd09d6d67
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/1d/95/be47aca6f275eae3f3b2d5c35a85f51736f1403d8fd3790ab0e354238f685
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/1e/c1/c1f0fea37e015610f77e0486d0c90745de8da2029e042c59f6197901f5fb13
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/1f/4c/7c6c652ccd8d9b32c0b4ef03e8a114c823d405df62054797ae8e510155d25
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/21/69/cf895689c136d0f667f13d167389f0bdff113e4a85c2d0a34e8420953fb02
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/21/90/97d7c2a8081808dcd3d6fc97011bebe11fc8e308eaff2d4224c21477d1d52
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/24/d3/c242b6ced69f0f27995a54c44c2c4ef172a4c3a0e7c91e0b8da7b9c418f83
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/29/89/d8ec4f471f8b2f7110ade5b17475bf87d30ec77a66a68a3481fbcb2299ca3
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/2d/22/47328dfeb3a9f00c15c20ec3ebdaa0e12382c5c6badfa30fb7b376f6a5802
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/2f/ee/99c47a7b4b5d997bbdb8d0095b14f1940fbdde0e7515bc19ccfcfbccec493
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/32/2d/90e41f3ad9eeece7d8bafb5672197db1ee77ca9aa734a3e77692efcf77162
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/34/f7/495a783848aed5199e0583f72c91d67d20fa9f5f5604755719bc421195dd3
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/35/d4/4f8776a16f1d67cec7136a104fc757d4d7719d47a6b5d71c1b3075cc1b693
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/4b/fa/51a839f22632c42d66d63607a55048be00c0a16bcf8dc96b9aadb85115705
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/4c/94/5f2a94150990b1ee4ecadd4897498d69b3141e0d72f1ccc1f3bd703a4c753
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/4c/9f/92b75e7965b407ec25a6d5770af0d18432dbca32e8a2a9958dd413e3b7765
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/4d/ed/ee7db809a7dfddfb87fc4055ac06876c63165a517fc12011046fc2cc4a9f3
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/4e/ce/f2fe3deddf79eb0c8c03828e46b026559f16671fbad7c36d5e0a1bd28a7f13
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/52/26/16d800e2651582fd96b18d4ff02085c52be8b7b4b739d0da2431222083293
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/53/b9/a3f54151106c138d93ef4e411f13d971ff84939f5a96a1d58262449273993
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/54/c7/bd7b2edde99a50402386dc89dd492bc0e1c9c57727fbf97333ab23450cc65
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/55/94/6aae1bf2eae7384bbf56a2610deec22135ab5102d53f8dc5bb1359585a5c5
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/56/a3/d63cf88aff86698120f294331ca4785e2ef41b621d746ef1047eaf34e1223
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/58/cd/24c1bfea16737029dabb2e41b34b7a019b657b6db6c972a30870f33183444
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/58/fc/50f89b2f236774e4b33eda6968cde18196e800153a6162d5f73df18895fa3
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/59/28/f3ffadce8db4fdb922343ee79cb0ab6d1b2f500885d3a7d93bbb4b24e7115
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/59/5d/20f410f92d365ec2b34c98856ae075582e2842b381809c76ffd12d24c4503
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/59/8d/bede4978235a53fade60aedbfe40200d189691fae9d90c694f654422738c5
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/5e/04/1f94a3a706d4fc86a4e28c064e5182f98631dbc1156be71fa734471d1b312
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/5e/25/544dc931f40d3c9ec02d15a7754abc281ff227d3d4436045fc19bded3abb9
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/5f/dc/61605b7783855ffa612d4a7dbf1f5e94e01b700897b6a69b1700a95759055
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/60/3b/12bd2d0346c46847789322cfa6781845b7bac7c9830246b89d040ab35bfa5
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/61/41/453946604fdfa210a19eb38d07610e8ad7007ffc3f0f3b25da20b9af281d2
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/61/5a/c55f3eb9bc8031cdde40de9f1b4244b118714d5d156afca81319c4ed13be3
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/64/32/09fccfaff76a1d99becccff3c9a0701f54d94e18ea19ff39aeb0a235d8334
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/69/d2/6f1c982c4935f9c4a3b7181092bc6213963acf08be267556eed18c1ffcca4
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/6b/27/515478d59b0ba28fcdaffd08317ec59071d08bdedd169a5f40c3b1fbb48611
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/6f/d4/db68ad12df42b50094e39edbd34fc9713c6c020ca44a5a0b426ff048428d2
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/6f/ed/7f64617d06ba2145efd7117d088c8431300750cd1c934e227cfecffa01f53
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/77/52/b7394cb3a27a44448e3ac4d6834e73ca79c301c7108c94b0ba23ca97b71c3
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/80/e4/0b59aa33a0f8b0f183dcbcdf1d48b9436619bf5b6fd10474ef86e41a8c6f3
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/87/c9/f8b19f8ad4e5648c18927a0d7d21e557756b443699e6929fe420d5aa82a22
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/89/eb/a7a81ab3eeec3076546f7e1fce3892c4e717a9379d4ad43a7111b5dc8cc23
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/8b/2e/99af1be8f0aa3d6223b000c96edea31a1e6d923f7f3daf1ff06e04899cbb3
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/8c/cf/08c44da29714d229eaceaad1d0ca321b8e5cc8080001efa90bd6e7cf2d103
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/8e/53/8602d3aab48229cac8aeeb996d0c850341d8e832b38df45ce8b79f2d7f6a5
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/93/4e/425c049345ed549becd9e42f3ca7ad942331f73dd73c3e6f5549e910679b3
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/96/66/5a9f2d90e8428d5b30418640b55c06029c2d36a3dc34ee91b90483a9973d3
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/9b/00/38d905a4cf8b1a291d0a7bca660b3b4f409bea196a8cea3f3e66c5a8e84b5
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/9b/03/54636aae9cb55a079d1cc7f9caf4f3e654df7abd1fc8279dde9f935c76aa5
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/9c/df/2bf910aa7cba3cae28d9c34ba6cd492e2a0053b4aeea258df6763e8cd8a29
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/9f/3f/3bc8b783702f297c0e0f134ecf35495d997ad1c67532fe520ac6709d28c54
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/9f/5f/7b93b3b7f757730e79213f4cb7e73c072a15544da364e543df7bef989d9c3
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/a2/4a/41538002c219a054a1ecf2e6be6e66dac4d4feb5407eb6ecb26af41a4de812
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/a2/ff/2fbedd19724625ef6060f72129b8494625e3e6fd08f7fd5886f65bf82e0d2
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/a6/c9/dbe7acc04b7cea7b99c68f3821cf6d7f49caba301e383b31143bd9670f285
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/a8/15/13afeacd20fdb82b59ceeaa57b4d135c5def8209619ca09751fdae5bd8033
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/a8/88/3a6a0c55cde913db472fd92adee9edf0f507c4ea02b2703d926b069473413
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/ad/29/4a034c1908dcd263dce381384f50b395b52e2addd35285efab8ec8f5b3033
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/ad/e9/1d8533ddd67b495ca9cffd992a45de09faf0f0fe2ad2c446353a58288f6b2
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/b1/78/4ff2f1383234ce5feb54cec21589dfd82db09bd3c7016d436760a3e94f603
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/b2/47/c8196ddf74a5111fedbaf5abf24d446c017f7bfba330c19d63fc240002772
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/b3/36/c25c35e75c8973f821f5a05ce4803a44826a0112390460da66c8c3c5de695
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/b4/2c/2aec38b0351146be02fc91be78e935c68f4608824732a06091fcf7cb550a3
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/b4/a9/95ce79090bb3e6ab5e8a85aaef872bf4eca492fac6cab144fb2e45ffbd743
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/b7/1c/f06201305985169fc251111ddb9fa636ef144ff9fad15784c1e9620b0dac2
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/b8/16/bf6e49afbd1323783f2f5a63b3d871adc66f517669450807aec3b62e71b22
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/ba/41/d137c2778ea0d7167fbc730827a0a2c453ffea82d07c7b1481a46f7b11944
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/be/6a/458105f31e845d57376ed2b2019e46a63cff8cbb76981a37eac2100c8e553
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/c4/08/207afc5ca1803fa593124554206657c17eb6b2809df9f5ec1c10007a64653
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/c7/6a/1f6606232f53d41a78bcb0a155df04211a49d1fdb1b67e59ccb47e20c3535
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/ca/2f/42a626cb16aeb63c2dc04be95e67db8ea33ce033a3fadf0ba1061c174d3e3
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/d0/a2/9b5933a9df317b031c4407f0d9cae19a4d56f253f7746786597a52daa76d2
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/d2/0a/0834f8c04d97b43d0f99901f9c56c3654221987030a0f86aac7f7caecccc3
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/d8/8f/1bf51f3ab635ab46a8693c919a915102645335a143056a5f12cafef915c09
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/de/9f/35f1c704459881fb3c9e83a59e80c3482dd62f626939323f2b6bf511b53d3
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/df/88/3ff6bf48df44c29ce1193e883193e034208d95b6028728ef3902b78b694d5
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/e8/1b/a9b0963bde9d8cb31e0fe8762eac5e3d3c2cd27e8bb1fbcdc22399c3d89e2
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/ec/6e/39493289897b28d06119b515a4d107ae1cd16ef94cdbbbd34a1c5687e07d2
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/ed/27/eea30d253f59f5df5e11155392ad66e8ee2a352798e5fe782b98c941c2c63
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/ed/4a/09a226827d40ba61648afad16c456d1d0fbce7e14fc1c7a9dba42620f68a3
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/ee/20/77825ded7fe59483cde11169fc083be6367490e46bce28208b4f7b5cb2f82
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/f2/8a/d9e34baa5c3e47b2bf8e975217eae2e4816c2a8e9cdee330a1e2acfbd7a63
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/f2/dd/746a6d5b6232e793f562d37f6471e6bd96641b1670b43d01fca9e23884e32
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/f6/6a/1afded1007145f766ff1dbaa948bd898062da50bed98d5b04f317278fa4813
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/fc/88/41f0501b29bfe9117061c190df783256e332cab7782a7484078354ddbb0f3
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/fd/a9/67911fbad568af62425934e3a7938145b60af92641734e54a8f50a418c032
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/fe/7e/e4d136986019ebc5360c54baee7ae9bec37f513387665b57ac2bcd167b702
-rw-r--r--deps/npm/test/npm_cache/_cacache/index-v5/ff/d3/eca629ba696cac5a91e13f61bb768d7cbf82072f798d17071572ab3943f22
-rw-r--r--deps/npm/test/npm_cache/_logs/2019-01-18T17_41_24_580Z-debug.log54
-rw-r--r--deps/npm/test/npm_cache/_logs/2019-01-18T17_41_26_268Z-debug.log56
-rw-r--r--deps/npm/test/npm_cache/_logs/2019-01-18T17_41_28_020Z-debug.log53
-rw-r--r--deps/npm/test/npm_cache/_logs/2019-01-18T17_41_39_719Z-debug.log27
-rw-r--r--deps/npm/test/npm_cache/_logs/2019-01-18T17_41_40_242Z-debug.log34
-rw-r--r--deps/npm/test/npm_cache/_logs/2019-01-18T17_41_47_912Z-debug.log21
-rw-r--r--deps/npm/test/npm_cache/_logs/2019-01-18T17_41_48_220Z-debug.log21
-rw-r--r--deps/npm/test/npm_cache/_logs/2019-01-18T17_41_57_730Z-debug.log26
-rw-r--r--deps/npm/test/npm_cache/_logs/2019-01-18T17_42_14_004Z-debug.log111
-rw-r--r--deps/npm/test/npm_cache/anonymous-cli-metrics.json1
-rw-r--r--deps/npm/test/tap/404-private-registry-scoped.js2
-rw-r--r--deps/npm/test/tap/404-private-registry.js2
-rw-r--r--deps/npm/test/tap/access.js50
-rw-r--r--deps/npm/test/tap/all-package-metadata-cache-stream-unit.js125
-rw-r--r--deps/npm/test/tap/all-package-metadata-entry-stream-unit.js195
-rw-r--r--deps/npm/test/tap/all-package-metadata-update-stream-unit.js145
-rw-r--r--deps/npm/test/tap/all-package-metadata-write-stream-unit.js124
-rw-r--r--deps/npm/test/tap/all-package-metadata.js64
-rw-r--r--deps/npm/test/tap/cache-add-unpublished.js2
-rw-r--r--deps/npm/test/tap/config-meta.js19
-rw-r--r--deps/npm/test/tap/dist-tag.js45
-rw-r--r--deps/npm/test/tap/get.js103
-rw-r--r--deps/npm/test/tap/install-dep-classification.js167
-rw-r--r--deps/npm/test/tap/map-to-registry.js166
-rw-r--r--deps/npm/test/tap/org.js136
-rw-r--r--deps/npm/test/tap/ping.js35
-rw-r--r--deps/npm/test/tap/publish-config.js12
-rw-r--r--deps/npm/test/tap/search.all-package-search.js61
-rw-r--r--deps/npm/test/tap/search.esearch.js192
-rw-r--r--deps/npm/test/tap/search.js104
-rw-r--r--deps/npm/test/tap/team.js39
-rw-r--r--deps/npm/test/tap/view.js2
187 files changed, 1725 insertions, 906 deletions
diff --git a/deps/npm/test/fake-registry.md b/deps/npm/test/fake-registry.md
index 5eb469f2a0..766c0972dc 100644
--- a/deps/npm/test/fake-registry.md
+++ b/deps/npm/test/fake-registry.md
@@ -35,7 +35,7 @@ would be to use its singleton.
```
const common = require('../common-tap.js')
-const mr = common.mockRegistry
+const mr = common.fakeRegistry
```
If you have need of multiple registries at the same time, you can construct
@@ -43,7 +43,7 @@ them by hand:
```
const common = require('../common-tap.js')
-const FakeRegistry = common.mockRegistry.FakeRegistry
+const FakeRegistry = common.fakeRegistry.FakeRegistry
const mr = new FakeRegistry(opts)
```
@@ -150,7 +150,7 @@ If no route can be found then a `404` response will be provided.
## Construction
const common = require('../common-tap.js')
-const mr = common.mockRegistry.compat
+const mr = common.fakeRegistry.compat
### mr(options[, callback]) → Promise(server)
diff --git a/deps/npm/test/fixtures/config/userconfig-with-gc b/deps/npm/test/fixtures/config/userconfig-with-gc
new file mode 100644
index 0000000000..0fc64f6946
--- /dev/null
+++ b/deps/npm/test/fixtures/config/userconfig-with-gc
@@ -0,0 +1,21 @@
+globalconfig=/Users/zkat/Documents/code/work/npm/test/fixtures/config/globalconfig
+email=i@izs.me
+env-thing=asdf
+init.author.name=Isaac Z. Schlueter
+init.author.email=i@izs.me
+init.author.url=http://blog.izs.me/
+init.version=1.2.3
+npm:publishtest=true
+_npmjs.org:couch=https://admin:password@localhost:5984/registry
+npm-www:nocache=1
+sign-git-tag=false
+message=v%s
+strict-ssl=false
+_auth="dXNlcm5hbWU6cGFzc3dvcmQ="
+
+[_token]
+AuthSession=yabba-dabba-doodle
+version=1
+expires=1345001053415
+path=/
+httponly=true
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/07/07/8db5f6377f6321fceaaedf497de124dc9465 b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/07/07/8db5f6377f6321fceaaedf497de124dc9465
new file mode 100644
index 0000000000..cbd0cddbac
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/07/07/8db5f6377f6321fceaaedf497de124dc9465
Binary files differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/28/eb/847a949e71eb9041fd6567a36c9acfcf2bed b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/28/eb/847a949e71eb9041fd6567a36c9acfcf2bed
new file mode 100644
index 0000000000..d98a345996
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/28/eb/847a949e71eb9041fd6567a36c9acfcf2bed
Binary files differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/2a/77/307e108bfb57107c4c334abb5ef5395dc68a b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/2a/77/307e108bfb57107c4c334abb5ef5395dc68a
new file mode 100644
index 0000000000..94a4f0f107
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/2a/77/307e108bfb57107c4c334abb5ef5395dc68a
Binary files differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/35/6a/192b7913b04c54574d18c28d46e6395428ab b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/35/6a/192b7913b04c54574d18c28d46e6395428ab
new file mode 100644
index 0000000000..56a6051ca2
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/35/6a/192b7913b04c54574d18c28d46e6395428ab
@@ -0,0 +1 @@
+1 \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/41/c8/0b2b6f5432c60cddb81932ab56563b444f52 b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/41/c8/0b2b6f5432c60cddb81932ab56563b444f52
new file mode 100644
index 0000000000..99e003fb37
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/41/c8/0b2b6f5432c60cddb81932ab56563b444f52
Binary files differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/45/c8/a39b626c1f83f8b8f53007c2f60eb98eee9d b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/45/c8/a39b626c1f83f8b8f53007c2f60eb98eee9d
new file mode 100644
index 0000000000..4e09b38d52
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/45/c8/a39b626c1f83f8b8f53007c2f60eb98eee9d
Binary files differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/69/42/4826f3405f79f142e6fc3d9ae58d4dbb9200 b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/69/42/4826f3405f79f142e6fc3d9ae58d4dbb9200
new file mode 100644
index 0000000000..4390da71ae
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/69/42/4826f3405f79f142e6fc3d9ae58d4dbb9200
Binary files differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/82/f3/ccba11914dc88bcb185ee3b1b33b564272bc b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/82/f3/ccba11914dc88bcb185ee3b1b33b564272bc
new file mode 100644
index 0000000000..56dfd8ddd7
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/82/f3/ccba11914dc88bcb185ee3b1b33b564272bc
Binary files differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/b6/bb/e0b0674b9d719708ca38de8c237cb526c3d1 b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/b6/bb/e0b0674b9d719708ca38de8c237cb526c3d1
new file mode 100644
index 0000000000..6a47bd6809
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/b6/bb/e0b0674b9d719708ca38de8c237cb526c3d1
Binary files differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/b7/96/69bb42ecb409f83d583cad52ca17eaa1643f b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/b7/96/69bb42ecb409f83d583cad52ca17eaa1643f
new file mode 100644
index 0000000000..e41d108f17
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/b7/96/69bb42ecb409f83d583cad52ca17eaa1643f
Binary files differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/c2/7a/36bf00f3a7a3d24a8fbc7853f06fce4e9c86 b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/c2/7a/36bf00f3a7a3d24a8fbc7853f06fce4e9c86
new file mode 100644
index 0000000000..08aafb5726
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/c2/7a/36bf00f3a7a3d24a8fbc7853f06fce4e9c86
Binary files differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/ca/43/09dadee6b54cc0b8d247e8d7c7a0975bdc9b b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/ca/43/09dadee6b54cc0b8d247e8d7c7a0975bdc9b
new file mode 100644
index 0000000000..8334356982
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/ca/43/09dadee6b54cc0b8d247e8d7c7a0975bdc9b
Binary files differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/d2/bd/e817d176ffade894ab71458e682a14b86dc9 b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/d2/bd/e817d176ffade894ab71458e682a14b86dc9
new file mode 100644
index 0000000000..0d0648c17a
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/d2/bd/e817d176ffade894ab71458e682a14b86dc9
Binary files differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/d7/aa/327bcecf518f9106ac6b8f003fa3bcea8566 b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/d7/aa/327bcecf518f9106ac6b8f003fa3bcea8566
new file mode 100644
index 0000000000..be0f7640fa
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/d7/aa/327bcecf518f9106ac6b8f003fa3bcea8566
Binary files differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/e0/50/08f3ff82b34f17b1e972454a0ab70a269c7d b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/e0/50/08f3ff82b34f17b1e972454a0ab70a269c7d
new file mode 100644
index 0000000000..40d8213d36
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/e0/50/08f3ff82b34f17b1e972454a0ab70a269c7d
Binary files differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/ee/56/8a2b1efaeb95bec4d9e59e5301fc63339866 b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/ee/56/8a2b1efaeb95bec4d9e59e5301fc63339866
new file mode 100644
index 0000000000..c4b25ccf69
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/ee/56/8a2b1efaeb95bec4d9e59e5301fc63339866
Binary files differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/0b/61/241d7c17bcbb1baee7094d14b7c451efecc7ffcbd92598a0f13d313cc9ebc2a07e61f007baf58fbf94ff9a8695bdd5cae7ce03bbf1e94e93613a00f25f21 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/0b/61/241d7c17bcbb1baee7094d14b7c451efecc7ffcbd92598a0f13d313cc9ebc2a07e61f007baf58fbf94ff9a8695bdd5cae7ce03bbf1e94e93613a00f25f21
new file mode 100644
index 0000000000..945c9b46d6
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/0b/61/241d7c17bcbb1baee7094d14b7c451efecc7ffcbd92598a0f13d313cc9ebc2a07e61f007baf58fbf94ff9a8695bdd5cae7ce03bbf1e94e93613a00f25f21
@@ -0,0 +1 @@
+. \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/15/ad/34853f1149526d97f08b50c3aaa9ec84031a7ebfb7bb59e3f2317d5c306286528cb91bf53dc596802d316762e5ba4641764b2680945ba3f620d3cf798a05 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/15/ad/34853f1149526d97f08b50c3aaa9ec84031a7ebfb7bb59e3f2317d5c306286528cb91bf53dc596802d316762e5ba4641764b2680945ba3f620d3cf798a05
new file mode 100644
index 0000000000..1efc06603f
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/15/ad/34853f1149526d97f08b50c3aaa9ec84031a7ebfb7bb59e3f2317d5c306286528cb91bf53dc596802d316762e5ba4641764b2680945ba3f620d3cf798a05
@@ -0,0 +1 @@
+{"_id":"underscore","_rev":"131-e6bd048b180d8ca3830d5242e6bd93fa","name":"underscore","description":"JavaScript's functional programming helper library.","dist-tags":{"latest":"1.5.1","stable":"1.5.1"},"versions":{"1.0.3":{"name":"underscore","description":"Functional programming aid for JavaScript. Works well with jQuery.","url":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"lib":".","main":"underscore","version":"1.0.3","_id":"underscore@1.0.3","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://localhost:1337/underscore/-/underscore-1.0.3.tgz","shasum":"7793a6f776dffa491d224eaf1d819824d4dc288a"},"directories":{},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.0.4":{"name":"underscore","description":"Functional programming aid for JavaScript. Works well with jQuery.","url":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"lib":".","main":"underscore","version":"1.0.4","_id":"underscore@1.0.4","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://localhost:1337/underscore/-/underscore-1.0.4.tgz","shasum":"563141126b4e412f6c12c2ae2fb44ef0edd23fb2"},"directories":{},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.1.0":{"name":"underscore","description":"Functional programming aid for JavaScript. Works well with jQuery.","url":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"lib":".","main":"underscore","version":"1.1.0","_id":"underscore@1.1.0","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://localhost:1337/underscore/-/underscore-1.1.0.tgz","shasum":"8bf44d9cc8c3a614d7940035522e1f95b682b071"},"directories":{},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.1.1":{"name":"underscore","description":"Functional programming aid for JavaScript. Works well with jQuery.","url":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"lib":".","main":"underscore","version":"1.1.1","_id":"underscore@1.1.1","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://localhost:1337/underscore/-/underscore-1.1.1.tgz","shasum":"65dddb8cd0ee3f0094f46db72ea269d5a4f5fca4"},"directories":{},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.1.2":{"name":"underscore","description":"Functional programming aid for JavaScript. Works well with jQuery.","url":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"lib":".","main":"underscore","version":"1.1.2","_id":"underscore@1.1.2","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://localhost:1337/underscore/-/underscore-1.1.2.tgz","shasum":"8cf4ae3900c32f3e3f06579d473a45ad768251e8"},"directories":{},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.1.3":{"name":"underscore","description":"Functional programming aid for JavaScript. Works well with jQuery.","url":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"lib":".","main":"underscore","version":"1.1.3","_id":"underscore@1.1.3","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.8-1","_nodeVersion":"v0.2.5","dist":{"tarball":"http://localhost:1337/underscore/-/underscore-1.1.3.tgz","shasum":"6bd1969042a65bd3966d8924c14909f2284631dd"},"directories":{},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.1.4":{"name":"underscore","description":"Functional programming aid for JavaScript. Works well with jQuery.","url":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"lib":".","main":"underscore.js","version":"1.1.4","_id":"underscore@1.1.4","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.9","_nodeVersion":"v0.5.0-pre","dist":{"shasum":"9e82274902865625b3a6d4c315a38ffd80047dae","tarball":"http://localhost:1337/underscore/-/underscore-1.1.4.tgz"},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.1.5":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.1.5","_id":"underscore@1.1.5","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.16","_nodeVersion":"v0.4.2","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"23601d62c75619998b2f0db24938102793336a56","tarball":"http://localhost:1337/underscore/-/underscore-1.1.5.tgz"},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.1.6":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.1.6","_id":"underscore@1.1.6","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.18","_nodeVersion":"v0.4.2","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"6868da1bdd72d75285be0b4e50f228e70d001a2c","tarball":"http://localhost:1337/underscore/-/underscore-1.1.6.tgz"},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.1.7":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.1.7","devDependencies":{},"_id":"underscore@1.1.7","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.3","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"40bab84bad19d230096e8d6ef628bff055d83db0","tarball":"http://localhost:1337/underscore/-/underscore-1.1.7.tgz"},"scripts":{},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.2.0":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.2.0","_npmJsonOpts":{"file":"/Users/jashkenas/.npm/underscore/1.2.0/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"underscore@1.2.0","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.22","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"b32ce32c8c118caa8031c10b54c7f65ab3b557fd","tarball":"http://localhost:1337/underscore/-/underscore-1.2.0.tgz"},"scripts":{},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"directories":{}},"1.2.1":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.2.1","_npmJsonOpts":{"file":"/Users/jashkenas/.npm/underscore/1.2.1/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"underscore@1.2.1","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.22","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"fc5c6b0765673d92a2d4ac8b4dc0aa88702e2bd4","tarball":"http://localhost:1337/underscore/-/underscore-1.2.1.tgz"},"scripts":{},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"directories":{}},"1.2.2":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.2.2","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"underscore@1.2.2","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"74dd40e9face84e724eb2edae945b8aedc233ba3","tarball":"http://localhost:1337/underscore/-/underscore-1.2.2.tgz"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.2.3":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.2.3","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"underscore@1.2.3","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"11b874da70f4683d7d48bba2b44be1e600d2f6cf","tarball":"http://localhost:1337/underscore/-/underscore-1.2.3.tgz"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.2.4":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.2.4","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"underscore@1.2.4","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"e8da6241aa06f64df2473bb2590b8c17c84c3c7e","tarball":"http://localhost:1337/underscore/-/underscore-1.2.4.tgz"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.3.0":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.3.0","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"underscore@1.3.0","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"253b2d79b7bb67943ced0fc744eb18267963ede8","tarball":"http://localhost:1337/underscore/-/underscore-1.3.0.tgz"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.3.1":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.3.1","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"underscore@1.3.1","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"6cb8aad0e77eb5dbbfb54b22bcd8697309cf9641","tarball":"http://localhost:1337/underscore/-/underscore-1.3.1.tgz"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.3.2":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.3.2","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"underscore@1.3.2","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"1b4e455089ab1d1d38ab6794ffe6cf08f764394a","tarball":"http://localhost:1337/underscore/-/underscore-1.3.2.tgz"},"readme":" __ \n /\\ \\ __ \n __ __ ___ \\_\\ \\ __ _ __ ____ ___ ___ _ __ __ /\\_\\ ____ \n /\\ \\/\\ \\ /' _ `\\ /'_ \\ /'__`\\/\\ __\\/ ,__\\ / ___\\ / __`\\/\\ __\\/'__`\\ \\/\\ \\ /',__\\ \n \\ \\ \\_\\ \\/\\ \\/\\ \\/\\ \\ \\ \\/\\ __/\\ \\ \\//\\__, `\\/\\ \\__//\\ \\ \\ \\ \\ \\//\\ __/ __ \\ \\ \\/\\__, `\\\n \\ \\____/\\ \\_\\ \\_\\ \\___,_\\ \\____\\\\ \\_\\\\/\\____/\\ \\____\\ \\____/\\ \\_\\\\ \\____\\/\\_\\ _\\ \\ \\/\\____/\n \\/___/ \\/_/\\/_/\\/__,_ /\\/____/ \\/_/ \\/___/ \\/____/\\/___/ \\/_/ \\/____/\\/_//\\ \\_\\ \\/___/ \n \\ \\____/ \n \\/___/\n \nUnderscore.js is a utility-belt library for JavaScript that provides \nsupport for the usual functional suspects (each, map, reduce, filter...) \nwithout extending any core JavaScript objects.\n\nFor Docs, License, Tests, and pre-packed downloads, see:\nhttp://documentcloud.github.com/underscore/\n\nMany thanks to our contributors:\nhttps://github.com/documentcloud/underscore/contributors\n","maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.3.3":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.3.3","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"underscore@1.3.3","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"47ac53683daf832bfa952e1774417da47817ae42","tarball":"http://localhost:1337/underscore/-/underscore-1.3.3.tgz"},"readme":" __ \n /\\ \\ __ \n __ __ ___ \\_\\ \\ __ _ __ ____ ___ ___ _ __ __ /\\_\\ ____ \n /\\ \\/\\ \\ /' _ `\\ /'_ \\ /'__`\\/\\ __\\/ ,__\\ / ___\\ / __`\\/\\ __\\/'__`\\ \\/\\ \\ /',__\\ \n \\ \\ \\_\\ \\/\\ \\/\\ \\/\\ \\ \\ \\/\\ __/\\ \\ \\//\\__, `\\/\\ \\__//\\ \\ \\ \\ \\ \\//\\ __/ __ \\ \\ \\/\\__, `\\\n \\ \\____/\\ \\_\\ \\_\\ \\___,_\\ \\____\\\\ \\_\\\\/\\____/\\ \\____\\ \\____/\\ \\_\\\\ \\____\\/\\_\\ _\\ \\ \\/\\____/\n \\/___/ \\/_/\\/_/\\/__,_ /\\/____/ \\/_/ \\/___/ \\/____/\\/___/ \\/_/ \\/____/\\/_//\\ \\_\\ \\/___/ \n \\ \\____/ \n \\/___/\n \nUnderscore.js is a utility-belt library for JavaScript that provides \nsupport for the usual functional suspects (each, map, reduce, filter...) \nwithout extending any core JavaScript objects.\n\nFor Docs, License, Tests, and pre-packed downloads, see:\nhttp://documentcloud.github.com/underscore/\n\nMany thanks to our contributors:\nhttps://github.com/documentcloud/underscore/contributors\n","maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.4.0":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://underscorejs.org","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.4.0","readme":" __\n /\\ \\ __\n __ __ ___ \\_\\ \\ __ _ __ ____ ___ ___ _ __ __ /\\_\\ ____\n /\\ \\/\\ \\ /' _ `\\ /'_ \\ /'__`\\/\\ __\\/ ,__\\ / ___\\ / __`\\/\\ __\\/'__`\\ \\/\\ \\ /',__\\\n \\ \\ \\_\\ \\/\\ \\/\\ \\/\\ \\ \\ \\/\\ __/\\ \\ \\//\\__, `\\/\\ \\__//\\ \\ \\ \\ \\ \\//\\ __/ __ \\ \\ \\/\\__, `\\\n \\ \\____/\\ \\_\\ \\_\\ \\___,_\\ \\____\\\\ \\_\\\\/\\____/\\ \\____\\ \\____/\\ \\_\\\\ \\____\\/\\_\\ _\\ \\ \\/\\____/\n \\/___/ \\/_/\\/_/\\/__,_ /\\/____/ \\/_/ \\/___/ \\/____/\\/___/ \\/_/ \\/____/\\/_//\\ \\_\\ \\/___/\n \\ \\____/\n \\/___/\n\nUnderscore.js is a utility-belt library for JavaScript that provides\nsupport for the usual functional suspects (each, map, reduce, filter...)\nwithout extending any core JavaScript objects.\n\nFor Docs, License, Tests, and pre-packed downloads, see:\nhttp://underscorejs.org\n\nMany thanks to our contributors:\nhttps://github.com/documentcloud/underscore/contributors\n","_id":"underscore@1.4.0","dist":{"shasum":"caaf510c272cbb53748a225dcfd906e5f5a5ccdd","tarball":"http://localhost:1337/underscore/-/underscore-1.4.0.tgz"},"_npmVersion":"1.1.49","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.4.1":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://underscorejs.org","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.4.1","readme":" __\n /\\ \\ __\n __ __ ___ \\_\\ \\ __ _ __ ____ ___ ___ _ __ __ /\\_\\ ____\n /\\ \\/\\ \\ /' _ `\\ /'_ \\ /'__`\\/\\ __\\/ ,__\\ / ___\\ / __`\\/\\ __\\/'__`\\ \\/\\ \\ /',__\\\n \\ \\ \\_\\ \\/\\ \\/\\ \\/\\ \\ \\ \\/\\ __/\\ \\ \\//\\__, `\\/\\ \\__//\\ \\ \\ \\ \\ \\//\\ __/ __ \\ \\ \\/\\__, `\\\n \\ \\____/\\ \\_\\ \\_\\ \\___,_\\ \\____\\\\ \\_\\\\/\\____/\\ \\____\\ \\____/\\ \\_\\\\ \\____\\/\\_\\ _\\ \\ \\/\\____/\n \\/___/ \\/_/\\/_/\\/__,_ /\\/____/ \\/_/ \\/___/ \\/____/\\/___/ \\/_/ \\/____/\\/_//\\ \\_\\ \\/___/\n \\ \\____/\n \\/___/\n\nUnderscore.js is a utility-belt library for JavaScript that provides\nsupport for the usual functional suspects (each, map, reduce, filter...)\nwithout extending any core JavaScript objects.\n\nFor Docs, License, Tests, and pre-packed downloads, see:\nhttp://underscorejs.org\n\nMany thanks to our contributors:\nhttps://github.com/documentcloud/underscore/contributors\n","_id":"underscore@1.4.1","dist":{"shasum":"f6a25ffe5d6d3ed4fe8fef37c3a9bfe689b16bb9","tarball":"http://localhost:1337/underscore/-/underscore-1.4.1.tgz"},"_npmVersion":"1.1.49","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.4.2":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://underscorejs.org","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.4.2","readme":" __\n /\\ \\ __\n __ __ ___ \\_\\ \\ __ _ __ ____ ___ ___ _ __ __ /\\_\\ ____\n /\\ \\/\\ \\ /' _ `\\ /'_ \\ /'__`\\/\\ __\\/ ,__\\ / ___\\ / __`\\/\\ __\\/'__`\\ \\/\\ \\ /',__\\\n \\ \\ \\_\\ \\/\\ \\/\\ \\/\\ \\ \\ \\/\\ __/\\ \\ \\//\\__, `\\/\\ \\__//\\ \\ \\ \\ \\ \\//\\ __/ __ \\ \\ \\/\\__, `\\\n \\ \\____/\\ \\_\\ \\_\\ \\___,_\\ \\____\\\\ \\_\\\\/\\____/\\ \\____\\ \\____/\\ \\_\\\\ \\____\\/\\_\\ _\\ \\ \\/\\____/\n \\/___/ \\/_/\\/_/\\/__,_ /\\/____/ \\/_/ \\/___/ \\/____/\\/___/ \\/_/ \\/____/\\/_//\\ \\_\\ \\/___/\n \\ \\____/\n \\/___/\n\nUnderscore.js is a utility-belt library for JavaScript that provides\nsupport for the usual functional suspects (each, map, reduce, filter...)\nwithout extending any core JavaScript objects.\n\nFor Docs, License, Tests, and pre-packed downloads, see:\nhttp://underscorejs.org\n\nMany thanks to our contributors:\nhttps://github.com/documentcloud/underscore/contributors\n","_id":"underscore@1.4.2","dist":{"shasum":"cb2aae6a7999a89fd55aaee75bce0311698cebfb","tarball":"http://localhost:1337/underscore/-/underscore-1.4.2.tgz"},"_npmVersion":"1.1.49","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.4.3":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://underscorejs.org","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.4.3","readme":" __\n /\\ \\ __\n __ __ ___ \\_\\ \\ __ _ __ ____ ___ ___ _ __ __ /\\_\\ ____\n /\\ \\/\\ \\ /' _ `\\ /'_ \\ /'__`\\/\\ __\\/ ,__\\ / ___\\ / __`\\/\\ __\\/'__`\\ \\/\\ \\ /',__\\\n \\ \\ \\_\\ \\/\\ \\/\\ \\/\\ \\ \\ \\/\\ __/\\ \\ \\//\\__, `\\/\\ \\__//\\ \\ \\ \\ \\ \\//\\ __/ __ \\ \\ \\/\\__, `\\\n \\ \\____/\\ \\_\\ \\_\\ \\___,_\\ \\____\\\\ \\_\\\\/\\____/\\ \\____\\ \\____/\\ \\_\\\\ \\____\\/\\_\\ _\\ \\ \\/\\____/\n \\/___/ \\/_/\\/_/\\/__,_ /\\/____/ \\/_/ \\/___/ \\/____/\\/___/ \\/_/ \\/____/\\/_//\\ \\_\\ \\/___/\n \\ \\____/\n \\/___/\n\nUnderscore.js is a utility-belt library for JavaScript that provides\nsupport for the usual functional suspects (each, map, reduce, filter...)\nwithout extending any core JavaScript objects.\n\nFor Docs, License, Tests, and pre-packed downloads, see:\nhttp://underscorejs.org\n\nMany thanks to our contributors:\nhttps://github.com/documentcloud/underscore/contributors\n","_id":"underscore@1.4.3","dist":{"shasum":"b3d0aaa1ee74d886ea4f2648021a4f8ad779ed1d","tarball":"http://localhost:1337/underscore/-/underscore-1.4.3.tgz"},"_npmVersion":"1.1.63","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.4.4":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://underscorejs.org","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.4.4","devDependencies":{"phantomjs":"0.2.2"},"scripts":{"test":"phantomjs test/vendor/runner.js test/index.html?noglobals=true"},"readme":" __\n /\\ \\ __\n __ __ ___ \\_\\ \\ __ _ __ ____ ___ ___ _ __ __ /\\_\\ ____\n /\\ \\/\\ \\ /' _ `\\ /'_ \\ /'__`\\/\\ __\\/ ,__\\ / ___\\ / __`\\/\\ __\\/'__`\\ \\/\\ \\ /',__\\\n \\ \\ \\_\\ \\/\\ \\/\\ \\/\\ \\ \\ \\/\\ __/\\ \\ \\//\\__, `\\/\\ \\__//\\ \\ \\ \\ \\ \\//\\ __/ __ \\ \\ \\/\\__, `\\\n \\ \\____/\\ \\_\\ \\_\\ \\___,_\\ \\____\\\\ \\_\\\\/\\____/\\ \\____\\ \\____/\\ \\_\\\\ \\____\\/\\_\\ _\\ \\ \\/\\____/\n \\/___/ \\/_/\\/_/\\/__,_ /\\/____/ \\/_/ \\/___/ \\/____/\\/___/ \\/_/ \\/____/\\/_//\\ \\_\\ \\/___/\n \\ \\____/\n \\/___/\n\nUnderscore.js is a utility-belt library for JavaScript that provides\nsupport for the usual functional suspects (each, map, reduce, filter...)\nwithout extending any core JavaScript objects.\n\nFor Docs, License, Tests, and pre-packed downloads, see:\nhttp://underscorejs.org\n\nMany thanks to our contributors:\nhttps://github.com/documentcloud/underscore/contributors\n","_id":"underscore@1.4.4","dist":{"shasum":"61a6a32010622afa07963bf325203cf12239d604","tarball":"http://localhost:1337/underscore/-/underscore-1.4.4.tgz"},"_npmVersion":"1.1.63","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.5.0":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://underscorejs.org","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.5.0","devDependencies":{"phantomjs":"1.9.0-1"},"scripts":{"test":"phantomjs test/vendor/runner.js test/index.html?noglobals=true"},"license":"MIT","readme":" __\n /\\ \\ __\n __ __ ___ \\_\\ \\ __ _ __ ____ ___ ___ _ __ __ /\\_\\ ____\n /\\ \\/\\ \\ /' _ `\\ /'_ \\ /'__`\\/\\ __\\/ ,__\\ / ___\\ / __`\\/\\ __\\/'__`\\ \\/\\ \\ /',__\\\n \\ \\ \\_\\ \\/\\ \\/\\ \\/\\ \\ \\ \\/\\ __/\\ \\ \\//\\__, `\\/\\ \\__//\\ \\ \\ \\ \\ \\//\\ __/ __ \\ \\ \\/\\__, `\\\n \\ \\____/\\ \\_\\ \\_\\ \\___,_\\ \\____\\\\ \\_\\\\/\\____/\\ \\____\\ \\____/\\ \\_\\\\ \\____\\/\\_\\ _\\ \\ \\/\\____/\n \\/___/ \\/_/\\/_/\\/__,_ /\\/____/ \\/_/ \\/___/ \\/____/\\/___/ \\/_/ \\/____/\\/_//\\ \\_\\ \\/___/\n \\ \\____/\n \\/___/\n\nUnderscore.js is a utility-belt library for JavaScript that provides\nsupport for the usual functional suspects (each, map, reduce, filter...)\nwithout extending any core JavaScript objects.\n\nFor Docs, License, Tests, and pre-packed downloads, see:\nhttp://underscorejs.org\n\nMany thanks to our contributors:\nhttps://github.com/documentcloud/underscore/contributors\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/documentcloud/underscore/issues"},"_id":"underscore@1.5.0","dist":{"shasum":"90c57994d1de16aab8938142e3c5b43547019362","tarball":"http://localhost:1337/underscore/-/underscore-1.5.0.tgz"},"_from":".","_npmVersion":"1.2.24","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.5.1":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://underscorejs.org","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/jashkenas/underscore.git"},"main":"underscore.js","version":"1.5.1","devDependencies":{"phantomjs":"1.9.0-1"},"scripts":{"test":"phantomjs test/vendor/runner.js test/index.html?noglobals=true"},"license":"MIT","readme":" __\n /\\ \\ __\n __ __ ___ \\_\\ \\ __ _ __ ____ ___ ___ _ __ __ /\\_\\ ____\n /\\ \\/\\ \\ /' _ `\\ /'_ \\ /'__`\\/\\ __\\/ ,__\\ / ___\\ / __`\\/\\ __\\/'__`\\ \\/\\ \\ /',__\\\n \\ \\ \\_\\ \\/\\ \\/\\ \\/\\ \\ \\ \\/\\ __/\\ \\ \\//\\__, `\\/\\ \\__//\\ \\ \\ \\ \\ \\//\\ __/ __ \\ \\ \\/\\__, `\\\n \\ \\____/\\ \\_\\ \\_\\ \\___,_\\ \\____\\\\ \\_\\\\/\\____/\\ \\____\\ \\____/\\ \\_\\\\ \\____\\/\\_\\ _\\ \\ \\/\\____/\n \\/___/ \\/_/\\/_/\\/__,_ /\\/____/ \\/_/ \\/___/ \\/____/\\/___/ \\/_/ \\/____/\\/_//\\ \\_\\ \\/___/\n \\ \\____/\n \\/___/\n\nUnderscore.js is a utility-belt library for JavaScript that provides\nsupport for the usual functional suspects (each, map, reduce, filter...)\nwithout extending any core JavaScript objects.\n\nFor Docs, License, Tests, and pre-packed downloads, see:\nhttp://underscorejs.org\n\nUnderscore is an open-sourced component of DocumentCloud:\nhttps://github.com/documentcloud\n\nMany thanks to our contributors:\nhttps://github.com/jashkenas/underscore/contributors\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/jashkenas/underscore/issues"},"_id":"underscore@1.5.1","dist":{"shasum":"d2bde817d176ffade894ab71458e682a14b86dc9","tarball":"http://localhost:1337/underscore/-/underscore-1.5.1.tgz"},"_from":".","_npmVersion":"1.2.24","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}}},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"time":{"1.0.3":"2011-12-07T15:12:18.045Z","1.0.4":"2011-12-07T15:12:18.045Z","1.1.0":"2011-12-07T15:12:18.045Z","1.1.1":"2011-12-07T15:12:18.045Z","1.1.2":"2011-12-07T15:12:18.045Z","1.1.3":"2011-12-07T15:12:18.045Z","1.1.4":"2011-12-07T15:12:18.045Z","1.1.5":"2011-12-07T15:12:18.045Z","1.1.6":"2011-12-07T15:12:18.045Z","1.1.7":"2011-12-07T15:12:18.045Z","1.2.0":"2011-12-07T15:12:18.045Z","1.2.1":"2011-12-07T15:12:18.045Z","1.2.2":"2011-11-14T20:28:47.115Z","1.2.3":"2011-12-07T15:12:18.045Z","1.2.4":"2012-01-09T17:23:14.818Z","1.3.0":"2012-01-11T16:41:38.459Z","1.3.1":"2012-01-23T22:57:36.474Z","1.3.2":"2012-04-09T18:38:14.345Z","1.3.3":"2012-04-10T14:43:48.089Z","1.4.0":"2012-09-27T22:02:55.267Z","1.4.1":"2012-10-01T17:20:22.595Z","1.4.2":"2012-10-07T03:05:02.986Z","1.4.3":"2012-12-04T18:47:36.401Z","1.4.4":"2013-01-30T02:12:42.969Z","1.5.0":"2013-07-06T18:05:58.721Z","1.5.1":"2013-07-08T08:38:10.051Z"},"repository":{"type":"git","url":"git://github.com/jashkenas/underscore.git"},"users":{"vesln":true,"mvolkmann":true,"lancehunt":true,"mikl":true,"linus":true,"vasc":true,"bat":true,"dmalam":true,"mbrevoort":true,"danielr":true,"rsimoes":true,"thlorenz":true,"jharding":true,"tellnes":true,"fgribreau":true,"pid":true,"tylerstalder":true,"graemef":true,"gillesruppert":true,"travishorn":true,"m42am":true,"af":true,"bencevans":true,"Scryptonite":true,"konklone":true,"esp":true,"bryanburgers":true,"ehershey":true,"freethenation":true,"dannydulai":true,"megadrive":true,"lupomontero":true,"cj.nichols":true,"dbrockman":true,"maxmaximov":true,"hyqhyq_3":true,"zonetti":true,"cparker15":true,"lemulot":true,"mlowe":true,"chilts":true,"shanewholloway":true,"elgs":true,"eins78":true,"moonpyk":true},"_attachments":{"underscore-1.5.1.tgz":{"content_type":"application/octet-stream","revpos":129,"digest":"md5-jEzAnjdRfcazh9PKAMa1kw==","length":22746,"stub":true},"underscore-1.5.0.tgz":{"content_type":"application/octet-stream","revpos":126,"digest":"md5-JiqbW+htmCdz6yVjqaz44Q==","length":22907,"stub":true},"underscore-1.4.4.tgz":{"content_type":"application/octet-stream","revpos":104,"digest":"md5-s/MrjCiRarwh7tZ9DX+RyA==","length":41763,"stub":true},"underscore-1.4.3.tgz":{"content_type":"application/octet-stream","revpos":97,"digest":"md5-SbGx702k/T8yuag+j/VjCg==","length":62294,"stub":true},"underscore-1.4.2.tgz":{"content_type":"application/octet-stream","revpos":91,"digest":"md5-vSAO6RpJID3UCJkAWMEIjg==","length":61836,"stub":true},"underscore-1.4.1.tgz":{"content_type":"application/octet-stream","revpos":88,"digest":"md5-O72hIvWp7cVwkiA/2eF6rg==","length":61692,"stub":true},"underscore-1.4.0.tgz":{"content_type":"application/octet-stream","revpos":85,"digest":"md5-26PeH3uwZlxMzfzwS4LmMg==","length":61579,"stub":true},"underscore-1.3.3.tgz":{"content_type":"application/octet-stream","revpos":69,"digest":"md5-lRWlaQvCPiUt9CVTCTbZqQ==","length":58692,"stub":true},"underscore-1.3.2.tgz":{"content_type":"application/octet-stream","revpos":66,"digest":"md5-yS3kcu5U31CO0KAJcBJ9yA==","length":58699,"stub":true},"underscore-1.3.1.tgz":{"content_type":"application/octet-stream","revpos":60,"digest":"md5-Y4Z1Vvv7gZoZtJ9mTz0zSQ==","length":61440,"stub":true},"underscore-1.3.0.tgz":{"content_type":"application/octet-stream","revpos":56,"digest":"md5-eIPIVGdK7Fzup3CU/AMO4g==","length":61440,"stub":true},"underscore-1.2.4.tgz":{"content_type":"application/octet-stream","revpos":54,"digest":"md5-jCUzsaWc+tlE/lQNsuLQBA==","length":61440,"stub":true},"underscore-1.2.3.tgz":{"content_type":"application/octet-stream","revpos":41,"digest":"md5-bP9hXPsRRpFAWlmUNIY+jA==","length":40960,"stub":true},"underscore-1.2.2.tgz":{"content_type":"application/octet-stream","revpos":38,"digest":"md5-78/kFlhnF2WL94pdo/dfww==","length":40960,"stub":true},"underscore-1.2.1.tgz":{"content_type":"application/octet-stream","revpos":35,"digest":"md5-gNzWgJppZn3xUj8LCQcJ+Q==","length":31879,"stub":true},"underscore-1.2.0.tgz":{"content_type":"application/octet-stream","revpos":33,"digest":"md5-WYSTx/McoA2yFB6GmQ5KnA==","length":31310,"stub":true},"underscore-1.1.7.tgz":{"content_type":"application/octet-stream","revpos":29,"digest":"md5-BxaNPc3JexY2qLOK3gDhgw==","length":29052,"stub":true},"underscore-1.1.6.tgz":{"content_type":"application/octet-stream","revpos":27,"digest":"md5-U11VsMTDu6BEZDKJlZidTw==","length":25592,"stub":true},"underscore-1.1.5.tgz":{"content_type":"application/octet-stream","revpos":25,"digest":"md5-rpLusI4XejA3uVROFAZg1A==","length":25038,"stub":true},"underscore-1.1.4.tgz":{"content_type":"application/octet-stream","revpos":23,"digest":"md5-VrXC+bUYmxwzr2CQH4oq0w==","length":86233,"stub":true},"underscore-1.1.3.tgz":{"content_type":"application/octet-stream","revpos":17,"digest":"md5-sdTV7zbtYfhAAanQLEcziw==","length":86107,"stub":true},"underscore-1.1.2.tgz":{"content_type":"application/octet-stream","revpos":11,"digest":"md5-SSm/3w/usRqR+0SrSyCr8A==","length":85482,"stub":true},"underscore-1.1.1.tgz":{"content_type":"application/octet-stream","revpos":9,"digest":"md5-UW8pTfPbkrRFTiwM6AFlVA==","length":85214,"stub":true},"underscore-1.1.0.tgz":{"content_type":"application/octet-stream","revpos":7,"digest":"md5-YJcA44Oj1Dm2imfD7dHLag==","length":71266,"stub":true},"underscore-1.0.4.tgz":{"content_type":"application/octet-stream","revpos":5,"digest":"md5-nRJu+q0L17u8DZqPxVvQKQ==","length":71018,"stub":true},"underscore-1.0.3.tgz":{"content_type":"application/octet-stream","revpos":3,"digest":"md5-pwgll4db7l4cg7fPTrgVTw==","length":70285,"stub":true}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/21/82/eac4f83e50f3b6aa8bea561c5dfebdc1d66941e2da785af406e045de56a0fc422034ca7fa2ab5fa99022c6b860203eb4853ce85f15f26b96c84b8d9e7320 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/21/82/eac4f83e50f3b6aa8bea561c5dfebdc1d66941e2da785af406e045de56a0fc422034ca7fa2ab5fa99022c6b860203eb4853ce85f15f26b96c84b8d9e7320
new file mode 100644
index 0000000000..a568011ff7
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/21/82/eac4f83e50f3b6aa8bea561c5dfebdc1d66941e2da785af406e045de56a0fc422034ca7fa2ab5fa99022c6b860203eb4853ce85f15f26b96c84b8d9e7320
@@ -0,0 +1 @@
+{"versions":{"1.0.0":{"name":"inherits","version":"1.0.0","dependencies":{},"devDependencies":{},"_hasShrinkwrap":false,"directories":{},"dist":{"shasum":"38e1975285bf1f7ba9c84da102bb12771322ac48","tarball":"https://registry.npmjs.org/inherits/-/inherits-1.0.0.tgz"},"engines":{"node":"*"}},"2.0.0":{"name":"inherits","version":"2.0.0","_hasShrinkwrap":false,"directories":{},"dist":{"shasum":"76c81b3b1c10ddee3a60bf2c247162bc369f8ba8","tarball":"https://registry.npmjs.org/inherits/-/inherits-2.0.0.tgz"}},"2.0.1":{"name":"inherits","version":"2.0.1","_hasShrinkwrap":false,"directories":{},"dist":{"shasum":"b17d08d326b4423e568eff719f91b0b1cbdf69f1","tarball":"https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"}},"1.0.1":{"name":"inherits","version":"1.0.1","_hasShrinkwrap":false,"directories":{},"dist":{"shasum":"1bdf16c6ff8266cb858c6da2baf3637a99fb3d87","tarball":"https://registry.npmjs.org/inherits/-/inherits-1.0.1.tgz"}},"1.0.2":{"name":"inherits","version":"1.0.2","_hasShrinkwrap":false,"directories":{},"dist":{"shasum":"ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b","tarball":"https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz"}},"2.0.3":{"name":"inherits","version":"2.0.3","devDependencies":{"tap":"^7.1.0"},"_hasShrinkwrap":false,"directories":{},"dist":{"shasum":"633c2c83e3da42a502f52466022480f4208261de","tarball":"https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz"}}},"name":"inherits","dist-tags":{"latest":"2.0.3"},"modified":"2018-08-03T00:38:03.803Z"} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/22/fe/eed42d3bab5ff699721346f9c5fa7a70ac2748ee0ced75bc0b8f6e8aba924f53a93404b30fa8d28e0d64c14922e8f0d1ed1c212ef3f15d00e9527b17b9b9 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/22/fe/eed42d3bab5ff699721346f9c5fa7a70ac2748ee0ced75bc0b8f6e8aba924f53a93404b30fa8d28e0d64c14922e8f0d1ed1c212ef3f15d00e9527b17b9b9
new file mode 100644
index 0000000000..9ed5bd97f8
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/22/fe/eed42d3bab5ff699721346f9c5fa7a70ac2748ee0ced75bc0b8f6e8aba924f53a93404b30fa8d28e0d64c14922e8f0d1ed1c212ef3f15d00e9527b17b9b9
Binary files differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/2c/ec/8afad096618ae60ad9cd1cf2d2d9d5597b68010cc087c9a78765ef0dacd25c13a0e36948949317f09f667274ee5fa714abdc1b158e5cfea5ca5401663425 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/2c/ec/8afad096618ae60ad9cd1cf2d2d9d5597b68010cc087c9a78765ef0dacd25c13a0e36948949317f09f667274ee5fa714abdc1b158e5cfea5ca5401663425
new file mode 100644
index 0000000000..6f66c55bd1
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/2c/ec/8afad096618ae60ad9cd1cf2d2d9d5597b68010cc087c9a78765ef0dacd25c13a0e36948949317f09f667274ee5fa714abdc1b158e5cfea5ca5401663425
Binary files differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/2e/36/48f976830aeaba0724b382a09a6a6736dfd4c755963a4f462f963f9ecb211c2258f00766dc3aa68664f66d3a01cb2789b2cf614aeb292dbeb4afe0b206cc b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/2e/36/48f976830aeaba0724b382a09a6a6736dfd4c755963a4f462f963f9ecb211c2258f00766dc3aa68664f66d3a01cb2789b2cf614aeb292dbeb4afe0b206cc
new file mode 100644
index 0000000000..c4b25ccf69
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/2e/36/48f976830aeaba0724b382a09a6a6736dfd4c755963a4f462f963f9ecb211c2258f00766dc3aa68664f66d3a01cb2789b2cf614aeb292dbeb4afe0b206cc
Binary files differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/32/c8/6992ba4671408a292bb3f2fae4cd10416dcedb6a214c169054af6bcc792b6ea56f7245333357cc59e4f84660380604b5ff338258ad46973218d864799b5e b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/32/c8/6992ba4671408a292bb3f2fae4cd10416dcedb6a214c169054af6bcc792b6ea56f7245333357cc59e4f84660380604b5ff338258ad46973218d864799b5e
new file mode 100644
index 0000000000..80ee92c785
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/32/c8/6992ba4671408a292bb3f2fae4cd10416dcedb6a214c169054af6bcc792b6ea56f7245333357cc59e4f84660380604b5ff338258ad46973218d864799b5e
@@ -0,0 +1 @@
+{"myorg:myteam":"write","myorg:anotherteam":"read"} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/35/39/721f705f621cffe30dbc828be387e253c50ed05fb0a8e3f418769996bdde1dd1cb8af2e47dfe9417aab7ac3d238d1f036ef2e9adb898c386f0cda9b6861e b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/35/39/721f705f621cffe30dbc828be387e253c50ed05fb0a8e3f418769996bdde1dd1cb8af2e47dfe9417aab7ac3d238d1f036ef2e9adb898c386f0cda9b6861e
new file mode 100644
index 0000000000..fa4c213ed2
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/35/39/721f705f621cffe30dbc828be387e253c50ed05fb0a8e3f418769996bdde1dd1cb8af2e47dfe9417aab7ac3d238d1f036ef2e9adb898c386f0cda9b6861e
@@ -0,0 +1 @@
+{"latest":"2.0.0","a":"0.0.2","b":"0.6.0","c":"7.7.7"} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/35/aa/ea2b3a5902264c14606117b00e20425af14560c323e92859dd86f4cc552146fc06548a31ea59ba6edd569b6a41a201781f6a39900082feaac81923a12e57 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/35/aa/ea2b3a5902264c14606117b00e20425af14560c323e92859dd86f4cc552146fc06548a31ea59ba6edd569b6a41a201781f6a39900082feaac81923a12e57
new file mode 100644
index 0000000000..5808c97a4f
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/35/aa/ea2b3a5902264c14606117b00e20425af14560c323e92859dd86f4cc552146fc06548a31ea59ba6edd569b6a41a201781f6a39900082feaac81923a12e57
@@ -0,0 +1 @@
+{"_id":"test-repo-url-http","_rev":"2-ab911ee92af4c4ad93d44a61b09e073b","name":"test-repo-url-http","description":"Test repo with non-github http repository url","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"test-repo-url-http","version":"0.0.1","description":"Test repo with non-github http repository url","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"http://gitlab.com/evanlucas/test-repo-url-http.git"},"author":{"name":"Evan Lucas","email":"evanlucas@me.com"},"license":"ISC","_id":"test-repo-url-http@0.0.1","dist":{"shasum":"45c8a39b626c1f83f8b8f53007c2f60eb98eee9d","tarball":"http://localhost:1337/test-repo-url-http/-/test-repo-url-http-0.0.1.tgz"},"_from":".","_npmVersion":"1.4.2","_npmUser":{"name":"evanlucas","email":"evanlucas@me.com"},"maintainers":[{"name":"evanlucas","email":"evanlucas@me.com"}],"directories":{}}},"readme":"ERROR: No README data found!","maintainers":[{"name":"evanlucas","email":"evanlucas@me.com"}],"time":{"0.0.1":"2014-02-16T19:23:06.941Z"},"readmeFilename":"","_attachments":{}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/37/27/2f58378ed591197373f46d3be148bfc82649dbb213be14a2b1ac47f50d7d4804cb105590935a7bcd02dfae3a2421c939cafb586b9f1b6c492fdfe09aca86 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/37/27/2f58378ed591197373f46d3be148bfc82649dbb213be14a2b1ac47f50d7d4804cb105590935a7bcd02dfae3a2421c939cafb586b9f1b6c492fdfe09aca86
new file mode 100644
index 0000000000..d98a345996
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/37/27/2f58378ed591197373f46d3be148bfc82649dbb213be14a2b1ac47f50d7d4804cb105590935a7bcd02dfae3a2421c939cafb586b9f1b6c492fdfe09aca86
Binary files differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/3a/f5/ac6e34332259d456779c882d9d0db472befe84fd8043ac328bf51e1bdcd47437b17eff4d92df4ad8e999b2c2e140779cde81f69475d8d4591808103b964b b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/3a/f5/ac6e34332259d456779c882d9d0db472befe84fd8043ac328bf51e1bdcd47437b17eff4d92df4ad8e999b2c2e140779cde81f69475d8d4591808103b964b
new file mode 100644
index 0000000000..4087ab3f3c
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/3a/f5/ac6e34332259d456779c882d9d0db472befe84fd8043ac328bf51e1bdcd47437b17eff4d92df4ad8e999b2c2e140779cde81f69475d8d4591808103b964b
@@ -0,0 +1 @@
+{"_id":"test-repo-url-https","_rev":"4-252d9ae747df7201a8e870dc60464829","name":"test-repo-url-https","description":"Test repo with non-github https repository url","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.0":{"name":"test-repo-url-https","version":"0.0.0","description":"Test repo with non-github https repository url","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"http://gitlab.com/evanlucas/test-repo-url-https.git"},"author":{"name":"Evan Lucas","email":"evanlucas@me.com"},"license":"ISC","_id":"test-repo-url-https@0.0.0","dist":{"shasum":"de1a007b42c5741892aa734921fa1279bf4db2f6","tarball":"http://localhost:1337/test-repo-url-https/-/test-repo-url-https-0.0.0.tgz"},"_from":".","_npmVersion":"1.4.2","_npmUser":{"name":"evanlucas","email":"evanlucas@me.com"},"maintainers":[{"name":"evanlucas","email":"evanlucas@me.com"}],"directories":{}},"0.0.1":{"name":"test-repo-url-https","version":"0.0.1","description":"Test repo with non-github https repository url","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"https://gitlab.com/evanlucas/test-repo-url-https.git"},"author":{"name":"Evan Lucas","email":"evanlucas@me.com"},"license":"ISC","_id":"test-repo-url-https@0.0.1","dist":{"shasum":"e05008f3ff82b34f17b1e972454a0ab70a269c7d","tarball":"http://localhost:1337/test-repo-url-https/-/test-repo-url-https-0.0.1.tgz"},"_from":".","_npmVersion":"1.4.2","_npmUser":{"name":"evanlucas","email":"evanlucas@me.com"},"maintainers":[{"name":"evanlucas","email":"evanlucas@me.com"}],"directories":{}}},"readme":"ERROR: No README data found!","maintainers":[{"name":"evanlucas","email":"evanlucas@me.com"}],"time":{"0.0.0":"2014-02-16T18:38:39.564Z","0.0.1":"2014-02-16T18:42:28.053Z"},"readmeFilename":"","_attachments":{}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/52/3a/902538a5ebd3ce129087f262bf0a1663c2fdb6a636acd7660e386fbf2f8d097946cda07518bbd9b9fc9c5be725e8ae6041e62c9e9e81de5585e900328b09 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/52/3a/902538a5ebd3ce129087f262bf0a1663c2fdb6a636acd7660e386fbf2f8d097946cda07518bbd9b9fc9c5be725e8ae6041e62c9e9e81de5585e900328b09
new file mode 100644
index 0000000000..6b74362771
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/52/3a/902538a5ebd3ce129087f262bf0a1663c2fdb6a636acd7660e386fbf2f8d097946cda07518bbd9b9fc9c5be725e8ae6041e62c9e9e81de5585e900328b09
@@ -0,0 +1 @@
+{"_id":"wordwrap","_rev":"6-961a85500434fed15d9749919ec35e34","name":"wordwrap","description":"Wrap those words. Show them at what columns to start and stop.","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"wordwrap","description":"Wrap those words. Show them at what columns to start and stop.","version":"0.0.1","repository":{"type":"git","url":"git://github.com/substack/node-wordwrap.git"},"main":"./index.js","keywords":["word","wrap","rule","format","column"],"directories":{"lib":".","example":"example","test":"test"},"scripts":{"test":"expresso"},"devDependencies":{"expresso":"=0.7.x"},"engines":{"node":">=0.4.0"},"license":"MIT/X11","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"dependencies":{},"_id":"wordwrap@0.0.1","_engineSupported":true,"_npmVersion":"1.0.6","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"ac9b6dfa49e1147523055c5ef490c069cdd61f3e","tarball":"http://localhost:1337/wordwrap/-/wordwrap-0.0.1.tgz"}},"0.0.2":{"name":"wordwrap","description":"Wrap those words. Show them at what columns to start and stop.","version":"0.0.2","repository":{"type":"git","url":"git://github.com/substack/node-wordwrap.git"},"main":"./index.js","keywords":["word","wrap","rule","format","column"],"directories":{"lib":".","example":"example","test":"test"},"scripts":{"test":"expresso"},"devDependencies":{"expresso":"=0.7.x"},"engines":{"node":">=0.4.0"},"license":"MIT/X11","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"_id":"wordwrap@0.0.2","dependencies":{},"_engineSupported":true,"_npmVersion":"1.0.10","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"b79669bb42ecb409f83d583cad52ca17eaa1643f","tarball":"http://localhost:1337/wordwrap/-/wordwrap-0.0.2.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]}},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"time":{"0.0.1":"2011-05-30T01:46:34.944Z","0.0.2":"2011-08-26T10:17:09.949Z"},"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"repository":{"type":"git","url":"git://github.com/substack/node-wordwrap.git"},"users":{"fgribreau":true},"_attachments":{"wordwrap-0.0.2.tgz":{"content_type":"application/octet-stream","revpos":5,"digest":"md5-M3sB+fx52fvpmBznCtNNbw==","length":13772,"stub":true},"wordwrap-0.0.1.tgz":{"content_type":"application/octet-stream","revpos":3,"digest":"md5-EwWHDiAQRyEetK/Xt78gPA==","length":13067,"stub":true}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/54/95/fe840edbf5d18dfc27c5f4d9b359e8ab81a4741f62b0deb20979359843828ae50112bac4e25a3fc1089d260fd9b8236e434a3a55580b7aaba369e6f8ba87 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/54/95/fe840edbf5d18dfc27c5f4d9b359e8ab81a4741f62b0deb20979359843828ae50112bac4e25a3fc1089d260fd9b8236e434a3a55580b7aaba369e6f8ba87
new file mode 100644
index 0000000000..2608065a4c
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/54/95/fe840edbf5d18dfc27c5f4d9b359e8ab81a4741f62b0deb20979359843828ae50112bac4e25a3fc1089d260fd9b8236e434a3a55580b7aaba369e6f8ba87
Binary files differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/5a/64/0274b5cfdc4e0635bdd262c5830de7faf9c02d3c5ef66a60ac58ed20fcb324f85d7ef7b6e85210d8209122096191893f662db33d0569837305388bad35bf b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/5a/64/0274b5cfdc4e0635bdd262c5830de7faf9c02d3c5ef66a60ac58ed20fcb324f85d7ef7b6e85210d8209122096191893f662db33d0569837305388bad35bf
new file mode 100644
index 0000000000..c35d7fea14
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/5a/64/0274b5cfdc4e0635bdd262c5830de7faf9c02d3c5ef66a60ac58ed20fcb324f85d7ef7b6e85210d8209122096191893f662db33d0569837305388bad35bf
@@ -0,0 +1 @@
+{"_id":"cond","_rev":"19-d458a706de1740662cd7728d7d7ddf07","name":"cond","time":{"modified":"2015-02-13T07:33:58.120Z","created":"2014-03-16T20:52:52.236Z","0.0.0":"2014-03-16T20:52:52.236Z","0.0.1":"2014-03-16T21:12:33.393Z","0.0.2":"2014-03-16T21:15:25.430Z"},"versions":{"0.0.0":{},"0.0.1":{},"0.0.2":{}},"dist-tags":{"latest":"0.0.2"},"description":"Restartable error handling system","license":"CC0"} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/5d/29/d6e1add2536379abc1eba52f83824a6091a5af9ffba1479cf404f478f36f06504f6643db8631e0b6f057e55140d84489cacc140627e012824fa073f97568 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/5d/29/d6e1add2536379abc1eba52f83824a6091a5af9ffba1479cf404f478f36f06504f6643db8631e0b6f057e55140d84489cacc140627e012824fa073f97568
new file mode 100644
index 0000000000..0d0d28776e
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/5d/29/d6e1add2536379abc1eba52f83824a6091a5af9ffba1479cf404f478f36f06504f6643db8631e0b6f057e55140d84489cacc140627e012824fa073f97568
@@ -0,0 +1 @@
+{"versions":{"1.0.0":{"name":"graceful-fs","version":"1.0.0","dependencies":{},"devDependencies":{},"directories":{},"dist":{"shasum":"ba8e39479ec46658d59eb305f878f8b0820fa8e5","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.0.0.tgz"},"engines":{"node":"0.4 || 0.5"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.0.1":{"name":"graceful-fs","version":"1.0.1","dependencies":{},"devDependencies":{},"directories":{},"dist":{"shasum":"63647ef7ca9bf0abc561cdb72d2a58704a11cc2f","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.0.1.tgz"},"engines":{"node":"0.4 || 0.5"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.0.2":{"name":"graceful-fs","version":"1.0.2","dependencies":{},"devDependencies":{},"directories":{},"dist":{"shasum":"79ac9f685c97c391d88a95e4cde5a1313c3807de","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.0.2.tgz"},"engines":{"node":"0.4 || 0.5 || 0.6"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.1.0":{"name":"graceful-fs","version":"1.1.0","dependencies":{"fast-list":"1"},"devDependencies":{},"directories":{},"dist":{"shasum":"c36f1d3b31d71b4cef3da303b784074f6d578037","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.0.tgz"},"engines":{"node":"0.4 || 0.5 || 0.6"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.1.1":{"name":"graceful-fs","version":"1.1.1","dependencies":{"fast-list":"1"},"devDependencies":{},"directories":{},"dist":{"shasum":"2f10989f7e9addfcea6592d95f52bb0c2d7e5bd2","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.1.tgz"},"engines":{"node":"0.4 || 0.5 || 0.6"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.1.2":{"name":"graceful-fs","version":"1.1.2","dependencies":{"fast-list":"1"},"devDependencies":{},"directories":{},"dist":{"shasum":"e82181f54de6620c67034e736fbc0d8fee8c1ffa","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.2.tgz"},"engines":{"node":"0.4 || 0.5 || 0.6"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.1.3":{"name":"graceful-fs","version":"1.1.3","dependencies":{"fast-list":"1"},"optionalDependencies":{},"devDependencies":{},"directories":{},"dist":{"shasum":"7c5264a5fd5888cf02545898e402502ff01150ae","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.3.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.1.4":{"name":"graceful-fs","version":"1.1.4","dependencies":{"fast-list":"1"},"optionalDependencies":{},"devDependencies":{},"directories":{},"dist":{"shasum":"d53940783394758e59b24e10d355cbcf8c225103","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.4.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.1.5":{"name":"graceful-fs","version":"1.1.5","dependencies":{"fast-list":"1"},"optionalDependencies":{},"devDependencies":{},"directories":{},"dist":{"shasum":"0e4692e2240d3951c135587ff7dc8c557186d037","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.5.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.1.6":{"name":"graceful-fs","version":"1.1.6","dependencies":{},"optionalDependencies":{},"devDependencies":{},"directories":{},"dist":{"shasum":"cb87fa245e5669fb7b1da44ceef5920054052e24","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.6.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.1.7":{"name":"graceful-fs","version":"1.1.7","dependencies":{},"optionalDependencies":{},"devDependencies":{},"directories":{},"dist":{"shasum":"e5cfd7904de546273c1c461ddd053e44e84bc0d7","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.7.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.1.8":{"name":"graceful-fs","version":"1.1.8","dependencies":{},"optionalDependencies":{},"devDependencies":{},"directories":{},"dist":{"shasum":"7c9b7cd96f16b83230f61d522156306500914888","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.8.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.1.9":{"name":"graceful-fs","version":"1.1.9","devDependencies":{},"directories":{},"dist":{"shasum":"2d8916e828b906a921d7e7de8fc2ba148f03b18a","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.9.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.1.10":{"name":"graceful-fs","version":"1.1.10","dependencies":{},"devDependencies":{},"directories":{"test":"test"},"dist":{"shasum":"388a63917e823bc695afd57c76d7f3ee3db54ad3","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.10.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.1.11":{"name":"graceful-fs","version":"1.1.11","dependencies":{},"devDependencies":{},"directories":{"test":"test"},"dist":{"shasum":"3a3de260cc4cc80ae13debf31b71f73c2c5eb5e5","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.11.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.1.12":{"name":"graceful-fs","version":"1.1.12","dependencies":{"mkdirp":"~0.3.4"},"devDependencies":{},"directories":{"test":"test"},"dist":{"shasum":"baff9d5d87b722ecef6615ea301a5cb9e2860038","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.12.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.1.13":{"name":"graceful-fs","version":"1.1.13","directories":{"test":"test"},"dist":{"shasum":"a91e1d8231dc083bdaa227983fbdf5010944ca14","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.13.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.1.14":{"name":"graceful-fs","version":"1.1.14","directories":{"test":"test"},"dist":{"shasum":"07078db5f6377f6321fceaaedf497de124dc9465","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.14.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.2.0":{"name":"graceful-fs","version":"1.2.0","directories":{"test":"test"},"dist":{"shasum":"fe2d82a295e30de4e1d1c04ec159e10061140704","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.0.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.2.1":{"name":"graceful-fs","version":"1.2.1","directories":{"test":"test"},"dist":{"shasum":"b35cc6e623576fc2a278cba12c00dda6a1758d2d","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.1.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.2.2":{"name":"graceful-fs","version":"1.2.2","directories":{"test":"test"},"dist":{"shasum":"2643e33eaed1c7277decd37377ff9fb394689cf5","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.2.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.2.3":{"name":"graceful-fs","version":"1.2.3","directories":{"test":"test"},"dist":{"shasum":"15a4806a57547cb2d2dbf27f42e89a8c3451b364","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"2.0.0":{"name":"graceful-fs","version":"2.0.0","directories":{"test":"test"},"dist":{"shasum":"c9a206f6f5f4b94e1046dfaaccfe9e12d0ab8cef","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.0.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"2.0.1":{"name":"graceful-fs","version":"2.0.1","directories":{"test":"test"},"dist":{"shasum":"7fd6e0a4837c35d0cc15330294d9584a3898cf84","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.1.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"2.0.2":{"name":"graceful-fs","version":"2.0.2","directories":{"test":"test"},"dist":{"shasum":"26806eaca4bff8fc5dbc935e696135792175c46f","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.2.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"2.0.3":{"name":"graceful-fs","version":"2.0.3","directories":{"test":"test"},"dist":{"shasum":"7cd2cdb228a4a3f36e95efa6cc142de7d1a136d0","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"3.0.0":{"name":"graceful-fs","version":"3.0.0","directories":{"test":"test"},"dist":{"shasum":"5792ffae0ed7e318060ebf9f6e7a6e6cf5139327","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.0.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"3.0.1":{"name":"graceful-fs","version":"3.0.1","directories":{"test":"test"},"dist":{"shasum":"93352b5b951b009ef541271204122b612e46edaf","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.1.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"3.0.2":{"name":"graceful-fs","version":"3.0.2","directories":{"test":"test"},"dist":{"shasum":"2cb5bf7f742bea8ad47c754caeee032b7e71a577","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.2.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"3.0.3":{"name":"graceful-fs","version":"3.0.3","directories":{"test":"test"},"dist":{"shasum":"277141085e739ae7d54361119a62797b08a1d8c0","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.3.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"3.0.4":{"name":"graceful-fs","version":"3.0.4","devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^0.4.13"},"directories":{"test":"test"},"dist":{"shasum":"a0306d9b0940e0fc512d33b5df1014e88e0637a3","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.4.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"3.0.5":{"name":"graceful-fs","version":"3.0.5","devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^0.4.13"},"directories":{"test":"test"},"dist":{"shasum":"4a880474bdeb716fe3278cf29792dec38dfac418","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.5.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"3.0.6":{"name":"graceful-fs","version":"3.0.6","devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^0.4.13"},"directories":{"test":"test"},"dist":{"shasum":"dce3a18351cb94cdc82e688b2e3dd2842d1b09bb","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.6.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"3.0.7":{"name":"graceful-fs","version":"3.0.7","devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^0.4.13"},"directories":{"test":"test"},"dist":{"shasum":"e935be4b3e57892d289dc3bef7be8c02779d2b54","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.7.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"3.0.8":{"name":"graceful-fs","version":"3.0.8","devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^1.2.0"},"directories":{"test":"test"},"dist":{"shasum":"ce813e725fa82f7e6147d51c9a5ca68270551c22","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"4.1.0":{"name":"graceful-fs","version":"4.1.0","devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^1.2.0"},"directories":{"test":"test"},"dist":{"shasum":"6be6119244f64d6417fe303cc36ab497b5756cc1","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.0.tgz"},"engines":{"node":">=0.4.0"}},"4.1.1":{"name":"graceful-fs","version":"4.1.1","devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^1.2.0"},"directories":{"test":"test"},"dist":{"shasum":"db940cb46e47bd719314a876bace802ea3e90d3c","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.1.tgz"},"engines":{"node":">=0.4.0"}},"4.1.2":{"name":"graceful-fs","version":"4.1.2","devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^1.2.0"},"directories":{"test":"test"},"dist":{"shasum":"fe2239b7574972e67e41f808823f9bfa4a991e37","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.2.tgz"},"engines":{"node":">=0.4.0"}},"4.1.3":{"name":"graceful-fs","version":"4.1.3","devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^5.4.2"},"directories":{"test":"test"},"dist":{"shasum":"92033ce11113c41e2628d61fdfa40bc10dc0155c","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.3.tgz"},"engines":{"node":">=0.4.0"}},"4.1.4":{"name":"graceful-fs","version":"4.1.4","devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^5.4.2"},"directories":{"test":"test"},"dist":{"shasum":"ef089d2880f033b011823ce5c8fae798da775dbd","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.4.tgz"},"engines":{"node":">=0.4.0"}},"4.1.5":{"name":"graceful-fs","version":"4.1.5","devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^5.4.2"},"directories":{"test":"test"},"dist":{"shasum":"f4745e8caed5e0dd2ef21bb5e2d229a32e8093c0","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz"},"engines":{"node":">=0.4.0"}},"3.0.9":{"name":"graceful-fs","version":"3.0.9","devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^1.2.0"},"directories":{"test":"test"},"dist":{"shasum":"44e10a870a068e892485bace909520905b08ba24","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.9.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"4.1.6":{"name":"graceful-fs","version":"4.1.6","devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^5.4.2"},"directories":{"test":"test"},"dist":{"shasum":"514c38772b31bee2e08bedc21a0aeb3abf54c19e","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.6.tgz"},"engines":{"node":">=0.4.0"}},"3.0.10":{"name":"graceful-fs","version":"3.0.10","dependencies":{"natives":"^1.0.1"},"devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^1.2.0"},"directories":{"test":"test"},"dist":{"shasum":"5268b37746ff73a549708f3ce47fb54c84d5b0f0","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.10.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"3.0.11":{"name":"graceful-fs","version":"3.0.11","dependencies":{"natives":"^1.1.0"},"devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^1.2.0"},"directories":{"test":"test"},"dist":{"shasum":"7613c778a1afea62f25c630a086d7f3acbbdd818","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"4.1.7":{"name":"graceful-fs","version":"4.1.7","devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^5.4.2"},"directories":{"test":"test"},"dist":{"shasum":"f8b39fe797b022ae88024cff94a3613197141f32","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.7.tgz"},"engines":{"node":">=0.4.0"}},"4.1.8":{"name":"graceful-fs","version":"4.1.8","devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^5.4.2"},"directories":{"test":"test"},"dist":{"shasum":"da3e11135eb2168bdd374532c4e2649751672890","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.8.tgz"},"engines":{"node":">=0.4.0"}},"4.1.9":{"name":"graceful-fs","version":"4.1.9","devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^5.4.2"},"directories":{"test":"test"},"dist":{"shasum":"baacba37d19d11f9d146d3578bc99958c3787e29","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.9.tgz"},"engines":{"node":">=0.4.0"}},"4.1.10":{"name":"graceful-fs","version":"4.1.10","devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^5.4.2"},"directories":{"test":"test"},"dist":{"shasum":"f2d720c22092f743228775c75e3612632501f131","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.10.tgz"},"engines":{"node":">=0.4.0"}},"4.1.11":{"name":"graceful-fs","version":"4.1.11","devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^5.4.2"},"directories":{"test":"test"},"dist":{"shasum":"0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz"},"engines":{"node":">=0.4.0"}},"4.1.12":{"name":"graceful-fs","version":"4.1.12","devDependencies":{"import-fresh":"^2.0.0","mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^12.0.1"},"_hasShrinkwrap":false,"directories":{"test":"test"},"dist":{"integrity":"sha512-E1kqZR391RPU4xZ4uJSKm42R1ZsN8qcolVVlMKDZ1yGa0HVRcNwhjJ74VGDTriDcOHa/LNzFCDHAOx/jq4F63A==","shasum":"5f732cae9d5023c66371362e72685e9c6cd42326","tarball":"https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.12.tgz","fileCount":6,"unpackedSize":25559,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3LkMCRA9TVsSAnZWagAAizkP/3ROSu1bgKvgHuJ3BP7Q\nFA6TmxzkoAH9K55guUge0xxR7SCZI5YxiwImggAmklVXopSQXLl/jo7EfOpR\nHqyiUwIVnDlBKn9AB7CWRgPkIZRH4rGuu0JMiRqCHXdXboDUKn4qONTfI6mj\nfcAoVpAXpwumAP7LJD2olEnHE1j2fUca8RIaJlAAqw8LSiZd5Hdn/+JpLlp2\nK/9kM54BpPL9xM+IfaM07O59+6/TaNL1OcUb06wa1Qj0MP9jMqQPjrOxSOmQ\noKvOu2Vg6jsRTUkaIMRgsWO9puzhz74LLHe+DzBKqa8wVX97EEDd4Pldxeyx\n8UUzmLqQlSmdiNCY6dkR1F7yOQnbWMT3FBp9+tqlW6/IAA1vLnIwbofj1jJX\nBY0F8wi632qdE2gNti8puFqu79JedDLa/FQKyWppJ1pcLSOCrZK7dd6mGipr\nSmsQZPTXFOJuX9BJxH4sFnps/5hU47dpcnVPcPnTQneifVG1FN7l0Wqd+kpj\nxxbnOAnIZ+0q4L/Ppat1ks7c9R2OrknZM7+Ye8wAMT6VCgUkfxOjFWS11wad\nZ3iAZc6o2WZ1N4FJCsWchMXhceeevDhBhgCuGoOedYFXNKcfa3jPeR7oWRTV\no2/A9bryp6dmYYw+rpKi60xhqV/9Islf0bSfR028kfRBuIpohIGNkxhQqQtT\nic6a\r\n=7wOy\r\n-----END PGP SIGNATURE-----\r\n"},"engines":{"node":">=6"}},"4.1.13":{"name":"graceful-fs","version":"4.1.13","devDependencies":{"import-fresh":"^2.0.0","mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^12.0.1"},"_hasShrinkwrap":false,"directories":{"test":"test"},"dist":{"integrity":"sha512-a3u3Sck0c7/X622CIqiU0q/eRmhEOssVa3jkrfRRxxHPzaW1EcZgsQt87zKipdteGmFEKGGBvIBPr13pCB2HYw==","shasum":"9291d55cf899209ec0c2c8445d0ff7f6cc0e2df1","tarball":"https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.13.tgz","fileCount":7,"unpackedSize":25976,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3MFwCRA9TVsSAnZWagAAivkP/AlHtY1y8mmXNgKdLPov\n0ULfG8zMLkNfnKx437uFEHjcyjClOFrrV2nOuQnNBR/HYvWp6kSRoRJMX6eB\nzPhPN7bsR2SZGdIqOKwkoweDyFjrA/BPMaHLYPeoY+OkMZ8SdHcOQ4EelvWM\nmRtXMGjB+6W1KOsBjFxqvRKi7eMmkaJf6tyFRsEhju1RUGmhw1VY+F9fS67s\nbn/DCTujUAHxMhzvmcsBscoiI7WN6q/vP1W8cRHSKe+5INPwISp/M4bo+gU3\ng7XwafgK9bMHgSsC2a7sE0i6zPzlre55bEAvDemE7WsORGagrM2AHJw5Ow1n\nnGulaYd5rit5f2++DPGQ50FaGJtlEFqOqS+J1XldGB69KSvKIqjgyqmoG4VH\nBLv9DflSyO5kJJZggtXKMqqwf/GlXCRij4s5sZVyVqUQ8VK1N95MCF+IWm51\nvyVlyg+ZgnuT8LEiDyxDMx27KbwwxUcN3QPLXvp5zuvDsqlePVMg9AzmsF01\niB6tX/ZddeMF2yTbOV8FRZ7bD23jqbWfSapilKNZBgvLpi2ah3Li9suu1B8v\nz2t/oAU6aqC8PQ1D59Eq8t0eq4wYlKWpIHL24Z/Fj+LUdHw/GnpUy60Tu0GW\npwCoqmZVmP9K9THjahagpXKWxsYaewHr+MhBca+DJ9vjCHv40MrOmgauB7g6\nwCoN\r\n=t9Oq\r\n-----END PGP SIGNATURE-----\r\n"},"engines":{"node":">=6"}},"4.1.14":{"name":"graceful-fs","version":"4.1.14","devDependencies":{"import-fresh":"^2.0.0","mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^12.0.1"},"_hasShrinkwrap":false,"directories":{"test":"test"},"dist":{"integrity":"sha512-ns/IGcSmmGNPP085JCheg0Nombh1QPvSCnlx+2V+byQWRQEIL4ZB5jXJMNIHOFVS1roi85HIi5Ka0h43iWXfcQ==","shasum":"1b6e8362ef8c5ecb5da799901f39297e3054773a","tarball":"https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.14.tgz","fileCount":7,"unpackedSize":25976,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3NtKCRA9TVsSAnZWagAAn50P/R41gvttUFl7OysdDnVH\nTUFoUzk5WrVSQMO76cf8gQZ46xC4du+1BQhDFJ3gYvpmv57+6MDsgh2IFfCl\ntm0KsuBFnP9C3z8I47YdIqlMoUG+paoIRPrk0YIlqZddnaaf/BRO/9yr1Hb/\nm0mA4puWt+ceJh+pdSu3UzPFNoSSXr/+ViuVQiDVcxFOHHrWCxyXBrRLFc+8\nVTAinVmUEGLi9CkjlwIz99QbjizBd7INzRGCvCFm17XQlRHeT7e3EtRO2ySM\nvOU7o0K02vrP1XWtW7rXvGDATVJnTACM1yPZIhIXdZVxgD5zAEsTjqvvOAYJ\nfY3vqkHE1uoDTbf3mdT24ZmmaMRrOcOwmUPTa5ZxnIqAwOInOeVSwLUMIN+z\nqK+A4nL98U5L568OxpHlbAtbAgIHCPYADg+fT+8Xj7mIGtx/HBN+75h1WHaq\naGVvkK2kclgXFKXzHzCKfDlHe268rvqoRy+6Q9a1d5Cth1aArO6kTNajc4AX\nfco+TDCEg/oMDgCikHI4qL6zXwQ6aQiJjeuHONprnyrwrRhS9iCFD1DSC37Q\nsglCxNioVpd7TlfDg0v3yDFr8gZqo7a2ELoRmog3rwzgGYZ/VA/FJO/ztfE4\nkPH4rW2tbDldWc8bZ3FkH2TFHgwEw2qTgziPSFwE+V7G0GaDrbFjHslABMaP\nvlOn\r\n=G/Sv\r\n-----END PGP SIGNATURE-----\r\n"},"engines":{"node":">=6"}},"4.1.15":{"name":"graceful-fs","version":"4.1.15","devDependencies":{"import-fresh":"^2.0.0","mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^12.0.1"},"_hasShrinkwrap":false,"directories":{"test":"test"},"dist":{"integrity":"sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==","shasum":"ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00","tarball":"https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz","fileCount":7,"unpackedSize":25938,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb31vrCRA9TVsSAnZWagAAjMYP/2AwGCPcxbX+2ZBkpyRq\nJ85zkTLDdO2AhSNpgApHrPFbvQ2MYSedMmA/tuNOILCd2zulEvadRZLSW5zI\nHUkRFdU20ByFJoLMvoGm8EY9gEnQ3lpIvh6lmgNSYhQhm5khE0XHQ4sAs9YW\nV61Qr4yqKvkxXrMpElTgzkCfEZ79pNzZ58lE0Qvqmcp3OTczsOimh+w5UIUu\nt/GMZpsmLC4VHTj+hSRqYsh8HJFt9Nl2ahXK08eGAroZMRgRY5hA/9aJ2bA7\nHpuyqMH2wjbaJRnT8ORLfgfJ9a8xO+VzIp0ueAWpAjAaCtbC2dKF3/YJ8Bn6\nZUaCWMM1PZG1BIM/4g/q++OV7o9NgJvqjvjMmVZKanzUMBwfD9ygwFcP8oNF\nlLSR4GU6itDJo2oqdtsrTsfDe35sNTl3kwyhMqZPWFlNJ5C02jmeH2qPtc9s\n69lGDH5JNBBKOmJXV9WKfN+mOSXniBnUsUVu0vAm/y9nY1GZQiAlI5MfIW+T\n1a+K2cGakv6c+b2bO6ExwnIjWPwEpKNlPYHdjLv01GoT9qZRh2guD5RBJqDj\nbNToHu3zR6po45ekShHykoFDz3F+mOKWKyfQ1F3Z+z+8udFk7xbO4vxRTC4M\nq1HSgomC6uFS+RRNVhmTS2L4S1izPDbozKOUU+rpk4hQMBhTLgf7nQ0Bates\nG+db\r\n=Fpd7\r\n-----END PGP SIGNATURE-----\r\n"}}},"name":"graceful-fs","dist-tags":{"latest":"4.1.15","old":"3.0.11"},"modified":"2018-11-04T20:51:57.343Z"} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/6f/c7/3dd4508c2d9f17eeb1cfd288276948a1689ebdf6a8d3f4f7516d4c68be639063e7e5437ef7ff72547aabe86b49a6b1bf5c733bdece3877d82bc8bc1a9a7d b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/6f/c7/3dd4508c2d9f17eeb1cfd288276948a1689ebdf6a8d3f4f7516d4c68be639063e7e5437ef7ff72547aabe86b49a6b1bf5c733bdece3877d82bc8bc1a9a7d
new file mode 100644
index 0000000000..24c60e2ca6
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/6f/c7/3dd4508c2d9f17eeb1cfd288276948a1689ebdf6a8d3f4f7516d4c68be639063e7e5437ef7ff72547aabe86b49a6b1bf5c733bdece3877d82bc8bc1a9a7d
@@ -0,0 +1 @@
+{"otheruser":"admin"} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/76/39/4b378512c68bf209b433e06b71df27a45f7e7be35f174a0f83bce7799628b74dbe993c18b1c12e899a1ed7b159470b382180d1f0a5c4098ac6092cda1a8f b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/76/39/4b378512c68bf209b433e06b71df27a45f7e7be35f174a0f83bce7799628b74dbe993c18b1c12e899a1ed7b159470b382180d1f0a5c4098ac6092cda1a8f
new file mode 100644
index 0000000000..3ae97a65db
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/76/39/4b378512c68bf209b433e06b71df27a45f7e7be35f174a0f83bce7799628b74dbe993c18b1c12e899a1ed7b159470b382180d1f0a5c4098ac6092cda1a8f
@@ -0,0 +1 @@
+{"objects":[{"id":"foo","type":"package","name":"@foo/pkg","endpoint":"foo.com"},{"id":"bar","type":"owner","name":"bar","endpoint":"bar.com"},{"id":"baz","type":"scope","name":"baz","endpoint":"baz.com"}]} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/79/ec/4625bec1a13aaefdcd4e7cf18f1c5575879d80e8bdba063cc962c959c48526a0c1c9e3766c95ec9ea1cf10cd954968f3bfec136f0d3aa87009db05cf4666 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/79/ec/4625bec1a13aaefdcd4e7cf18f1c5575879d80e8bdba063cc962c959c48526a0c1c9e3766c95ec9ea1cf10cd954968f3bfec136f0d3aa87009db05cf4666
new file mode 100644
index 0000000000..2e95263ba3
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/79/ec/4625bec1a13aaefdcd4e7cf18f1c5575879d80e8bdba063cc962c959c48526a0c1c9e3766c95ec9ea1cf10cd954968f3bfec136f0d3aa87009db05cf4666
@@ -0,0 +1 @@
+{"_id":"clean","_rev":"33-7bb9012e61b414bbf93c168b5e95108c","name":"clean","description":"clean parses and santitize argv or options for node, supporting fully extendable types, shorthands, validatiors and setters.","dist-tags":{"latest":"2.1.6"},"versions":{"0.0.0":{"name":"clean","version":"0.0.0","description":"","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":"","license":"MIT","readme":"ERROR: No README data found!","_id":"clean@0.0.0","dist":{"shasum":"86cb7c9efff672cd768b54039c133057f4b810f2","tarball":"http://localhost:1337/clean/-/clean-0.0.0.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"kael","email":"i@kael.me"},"maintainers":[{"name":"kael","email":"i@kael.me"}],"directories":{}},"1.1.4":{"name":"clean","version":"1.1.4","description":"clean parses and santitize argv or options for node, supporting fully extendable types, shorthands, validatiors and setters.","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git@github.com:kaelzhang/node-clean.git"},"keywords":["argv","parser","argument-vector","cleaner","simple"],"author":{"name":"Kael"},"license":"MIT","readmeFilename":"README.md","bugs":{"url":"https://github.com/kaelzhang/node-clean/issues"},"dependencies":{"checker":"~0.5.1","minimist":"~0.0.5"},"devDependencies":{"mocha":"~1.13.0","chai":"~1.8.0"},"readme":"[![Build Status](https://travis-ci.org/kaelzhang/node-clean.png?branch=master)](https://travis-ci.org/kaelzhang/node-clean)\n\n# Argv-parser\n\n> Argv-parser is a small and simple node.js module to parse `process.argv`\n\nArgv-parser is designed to be simple and will do nothing about:\n\n- option registration\n- description of options\n- output\n\n## Installation\n\n```sh\nnpm install argv-parser --save\n```\n\n## Usage\n\n```js\nvar parser = require('argv-parser');\n```\n\n## parser.parse(argv, options)\n\nParse argument vector (argv) or something like argv.\n\n##### Returns `ret` `Object`\n\n- parsed: `Object` the parsed object\n- warnings: `Object` the warnings of each option. If not exists, `ret.warning` will be an empty object\n- errors: `Object` the errors of each option.\n\n##### argv `Array`\n\n`process.argv` or something like that.\n\n##### options `Object`\n\n- rules: `Object` an extended `nopt` rules\n- offset: `Number` (optional, default to `2`) the offset from which the parser should start to parse.\n\n\n## parser.clean(data, options)\n\n##### Returns\n\nThe same as `parser.parse`\n\n##### options `Object`\n\n- rules: `Object`\n- types: `Object` (optional) type definitions. For most cases, you needn't this option\n\n\n## options.rules\n\n\n## Example\n\ntest.js\n\n```js\nvar rules = {\n open: {\n type: Boolean,\n value: true\n },\n\n port: {\n type: Number,\n short: 'p',\n value: function(port, parsed, tool) {\n if(!port){\n port = 9230;\n }\n\n if(port < 8000){\n tool.warn('port < 8000 which is dangerous');\n \n if(port < 1000){\n \ttool.error('port < 100 which is forbidden');\n \t\t\treturn;\n }\n }\n\n return port;\n }\n },\n\n html: {\n type: 'html',\n },\n\n name: {\n type: String\n }\n};\n\nvar data = parser.parse(process.argv, {\n\trules: rules\n});\n```\n\nDefault values:\n\n```\n$ node test.js\n> data.parsed.open; // true\n> data.parsed.port; // 9230\n\n```\n\nType limitation:\n\n```\n$ node test.js --port 8888 --no-open --name name<script>alert(123)</script>\n> data.parsed.open; // false\n> data.parsed.port; // 8888\n> data.parsed.name; // 'namealert(123)'; -> stripped\n> data.errors; // {}\n> data.warnings; // {}\n```\n\nWarnings and errors:\n\n```\n$ node test.js --port 888 --no-open --name name<script>alert(123)</script>\n> data.parsed.open; // false\n> data.parsed.port; // undefined; -> error\n> data.parsed.name; // 'name<script>alert(123)</script>'\n> data.errors; // {port: ['port < 100 which is forbidden']}\n> data.warnings; // {port: ['port < 8000 which is dangerous']}\n```\n\n\n\n\n\n\n","_id":"clean@1.1.4","dist":{"shasum":"5fe3f1d48a22842316eba0a19c51f26428015c80","tarball":"http://localhost:1337/clean/-/clean-1.1.4.tgz"},"maintainers":[{"name":"kael","email":"i@kael.me"}],"directories":{}},"2.1.1":{"name":"clean","version":"2.1.1","description":"clean parses and santitize argv or options for node, supporting fully extendable types, shorthands, validatiors and setters.","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git@github.com:kaelzhang/node-clean.git"},"keywords":["argv","parser","argument-vector","cleaner","simple"],"author":{"name":"Kael"},"license":"MIT","readmeFilename":"README.md","bugs":{"url":"https://github.com/kaelzhang/node-clean/issues"},"dependencies":{"checker":"~0.5.1","minimist":"~0.0.5"},"devDependencies":{"mocha":"~1.13.0","chai":"~1.8.0"},"readme":"[![Build Status](https://travis-ci.org/kaelzhang/node-clean.png?branch=master)](https://travis-ci.org/kaelzhang/node-clean)\n\n# clean\n\nClean is small but powerful node.js module that parses and santitize argv or options for node, supporting:\n\n- fully extendable types\n- shorthands\n- validatiors\n- setters\n\n# Installation and Usage\n\n```sh\nnpm install clean --save\n```\n\n```js\nvar clean = require('clean')(options);\n```\n\n# Usage\n\n## Argv Shorthands\n\nWe can define shorthands with the option `options.shorthands`.\n\n```js\nvar shorthands = {\n\t// if `String`, define a shorthand for a key name\n\tc: 'cwd',\n\t// if `Array`, define a pattern slice of argv\n\tnr: ['--no-recursive'],\n\t// if `Object`, define a specific value\n\tr3: {\n\t\tretry: 3,\n\t\tstrict: false\n\t}\n};\nclean({\n\tshorthands: shorthands\n}).argv(['node', 'xxx', '-c', 'abc', '--nr', '--r3']); \n// notice that '-nr' will be considered as '-n -r'\n// The result is:\n// {\n//\t\tcwd: 'abc',\n//\t\trecursive: false,\n//\t\tretry: 3,\n//\t\tstrict: false \n// }\n```\n\n## Types\n\n```js\nclean({\n\tschema: {\n\t\tcwd: {\n\t\t\ttype: require('path')\n\t\t},\n\t\t\n\t\tretry: {\n\t\t\ttype: Boolean\n\t\t}\t\t\n\t}\n}).parseArgv(\n\t['node', 'xxx', '--cwd', 'abc', 'retry', 'false'], \n\tfunction(err, results, details){\n\t\tconsole.log(results.cwd); // the `path.resolved()`d 'abc'\n\t\tconsole.log(results.retry === false); // is a boolean, not a string\n\t}\n)\n```\n\nHow to extend a custom type ? See the \"advanced section\".\n\n## Validators and Setters\n\nValidators and setters of `clean` is implemented by `[checker](https://github.com/kaelzhang/node-checker)`, check the apis of `checker` for details.\n\nYou could check out the demo located at \"example/clean.js\". That is a very complicated situation of usage.\n\n```sh\nnode example/clean.js --username guest\n```\n\n\n\n# Programatical Details\n\n## constructor: clean(schema, options)\n\n\n### options\n\n#### options.offset `Number=`\n\nThe offset from which the parser should start to parse. Optional. Default to `2`.\n\n#### options.shorthands `Object=`\n\nThe shorthands used to parse the argv.\n\n#### options.schema `Object=`\n\nThe schema used to clean the given object or the parsred argv\n\n#### options.check_all `Boolean=false`\n\n#### options.parallel `Boolean=false`\n\n#### options.limit `Boolean=false`\n\n\n## .argv(argv)\n\nParses the argument vector, without cleaning the data.\n\n### argv `Array`\n\n### returns `Object`\n\nThe parsed object with shorthand rules applied.\n\n\n## .clean(data, callback)\n\nCleans the given data according to the `schema`.\n\n### data `Object`\n\nThe given data.\n\n### callback `function(err, results, details)`\n\n\n## .parseArgv(argv, callback)\n\nParses argument vector (argv) or something like argv, and cleans the parsed data according to the `schema`.\n\nThis method is equivalent to `c.clean(c.argv(argv), callback)`.\n\n# Advanced Section\n\n## .registerType(type, typeDef)\n\n\n\n\n\n\n","_id":"clean@2.1.1","dist":{"shasum":"f78cb9f6a9b3156e537fc2cbb7caf271636ecb09","tarball":"http://localhost:1337/clean/-/clean-2.1.1.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"kael","email":"i@kael.me"},"maintainers":[{"name":"kael","email":"i@kael.me"}],"directories":{}},"2.1.2":{"name":"clean","version":"2.1.2","description":"clean parses and santitize argv or options for node, supporting fully extendable types, shorthands, validatiors and setters.","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git@github.com:kaelzhang/node-clean.git"},"keywords":["argv","parser","argument-vector","cleaner","simple"],"author":{"name":"Kael"},"license":"MIT","readmeFilename":"README.md","bugs":{"url":"https://github.com/kaelzhang/node-clean/issues"},"dependencies":{"checker":"~0.5.1","minimist":"~0.0.5"},"devDependencies":{"mocha":"~1.13.0","chai":"~1.8.0"},"readme":"[![NPM version](https://badge.fury.io/js/clean.png)](http://badge.fury.io/js/clean)\n[![Build Status](https://travis-ci.org/kaelzhang/node-clean.png?branch=master)](https://travis-ci.org/kaelzhang/node-clean)\n[![Dependency Status](https://gemnasium.com/kaelzhang/node-clean.png)](https://gemnasium.com/kaelzhang/node-clean)\n\n# clean\n\nClean is small but powerful node.js module that parses and santitize argv or options for node, supporting:\n\n- fully extendable types\n- shorthands\n- validatiors\n- setters\n\n# Installation and Usage\n\n```sh\nnpm install clean --save\n```\n\n```js\nvar clean = require('clean')(options);\n```\n\n# Usage\n\n## Argv Shorthands\n\nWe can define shorthands with the option `options.shorthands`.\n\n```js\nvar shorthands = {\n\t// if `String`, define a shorthand for a key name\n\tc: 'cwd',\n\t// if `Array`, define a pattern slice of argv\n\tnr: ['--no-recursive'],\n\t// if `Object`, define a specific value\n\tr3: {\n\t\tretry: 3,\n\t\tstrict: false\n\t}\n};\nclean({\n\tshorthands: shorthands\n}).argv(['node', 'xxx', '-c', 'abc', '--nr', '--r3']); \n// notice that '-nr' will be considered as '-n -r'\n// The result is:\n// {\n//\t\tcwd: 'abc',\n//\t\trecursive: false,\n//\t\tretry: 3,\n//\t\tstrict: false \n// }\n```\n\n## Types\n\n```js\nclean({\n\tschema: {\n\t\tcwd: {\n\t\t\ttype: require('path')\n\t\t},\n\t\t\n\t\tretry: {\n\t\t\ttype: Boolean\n\t\t}\t\t\n\t}\n}).parseArgv(\n\t['node', 'xxx', '--cwd', 'abc', 'retry', 'false'], \n\tfunction(err, results, details){\n\t\tconsole.log(results.cwd); // the `path.resolved()`d 'abc'\n\t\tconsole.log(results.retry === false); // is a boolean, not a string\n\t}\n)\n```\n\nHow to extend a custom type ? See the \"advanced section\".\n\n## Validators and Setters\n\nValidators and setters of `clean` is implemented by `[checker](https://github.com/kaelzhang/node-checker)`, check the apis of `checker` for details.\n\nYou could check out the demo located at \"example/clean.js\". That is a very complicated situation of usage.\n\n```sh\nnode example/clean.js --username guest\n```\n\n\n\n# Programatical Details\n\n## constructor: clean(schema, options)\n\n\n### options\n\n#### options.offset `Number=`\n\nThe offset from which the parser should start to parse. Optional. Default to `2`.\n\n#### options.shorthands `Object=`\n\nThe shorthands used to parse the argv.\n\n#### options.schema `Object=`\n\nThe schema used to clean the given object or the parsred argv\n\n#### options.check_all `Boolean=false`\n\n#### options.parallel `Boolean=false`\n\n#### options.limit `Boolean=false`\n\n\n## .argv(argv)\n\nParses the argument vector, without cleaning the data.\n\n### argv `Array`\n\n### returns `Object`\n\nThe parsed object with shorthand rules applied.\n\n\n## .clean(data, callback)\n\nCleans the given data according to the `schema`.\n\n### data `Object`\n\nThe given data.\n\n### callback `function(err, results, details)`\n\n\n## .parseArgv(argv, callback)\n\nParses argument vector (argv) or something like argv, and cleans the parsed data according to the `schema`.\n\nThis method is equivalent to `c.clean(c.argv(argv), callback)`.\n\n# Advanced Section\n\n## .registerType(type, typeDef)\n\n\n\n\n\n\n","_id":"clean@2.1.2","dist":{"shasum":"1b331a23e2352a0ef4e145a72cfce1b461f36c41","tarball":"http://localhost:1337/clean/-/clean-2.1.2.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"kael","email":"i@kael.me"},"maintainers":[{"name":"kael","email":"i@kael.me"}],"directories":{}},"2.1.3":{"name":"clean","version":"2.1.3","description":"clean parses and santitize argv or options for node, supporting fully extendable types, shorthands, validatiors and setters.","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git@github.com:kaelzhang/node-clean.git"},"keywords":["argv","parser","argument-vector","cleaner","simple"],"author":{"name":"Kael"},"license":"MIT","readmeFilename":"README.md","bugs":{"url":"https://github.com/kaelzhang/node-clean/issues"},"dependencies":{"checker":"~0.5.1","minimist":"~0.0.5"},"devDependencies":{"mocha":"~1.13.0","chai":"~1.8.0"},"readme":"[![NPM version](https://badge.fury.io/js/clean.png)](http://badge.fury.io/js/clean)\n[![Build Status](https://travis-ci.org/kaelzhang/node-clean.png?branch=master)](https://travis-ci.org/kaelzhang/node-clean)\n[![Dependency Status](https://gemnasium.com/kaelzhang/node-clean.png)](https://gemnasium.com/kaelzhang/node-clean)\n\n# clean\n\nClean is small but powerful node.js module that parses and santitize argv or options for node, supporting:\n\n- fully extendable types\n- shorthands\n- validatiors\n- setters\n\n# Installation and Usage\n\n```sh\nnpm install clean --save\n```\n\n```js\nvar clean = require('clean')(options);\n```\n\n# Usage\n\n## Argv Shorthands\n\nWe can define shorthands with the option `options.shorthands`.\n\n```js\nvar shorthands = {\n\t// if `String`, define a shorthand for a key name\n\tc: 'cwd',\n\t// if `Array`, define a pattern slice of argv\n\tnr: ['--no-recursive'],\n\t// if `Object`, define a specific value\n\tr3: {\n\t\tretry: 3,\n\t\tstrict: false\n\t}\n};\nclean({\n\tshorthands: shorthands\n}).argv(['node', 'xxx', '-c', 'abc', '--nr', '--r3']); \n// notice that '-nr' will be considered as '-n -r'\n// The result is:\n// {\n//\t\tcwd: 'abc',\n//\t\trecursive: false,\n//\t\tretry: 3,\n//\t\tstrict: false \n// }\n```\n\n## Types\n\n```js\nclean({\n\tschema: {\n\t\tcwd: {\n\t\t\ttype: require('path')\n\t\t},\n\t\t\n\t\tretry: {\n\t\t\ttype: Boolean\n\t\t}\t\t\n\t}\n}).parseArgv(\n\t['node', 'xxx', '--cwd', 'abc', 'retry', 'false'], \n\tfunction(err, results, details){\n\t\tconsole.log(results.cwd); // the `path.resolved()`d 'abc'\n\t\tconsole.log(results.retry === false); // is a boolean, not a string\n\t}\n)\n```\n\nHow to extend a custom type ? See the \"advanced section\".\n\n## Validators and Setters\n\nValidators and setters of `clean` is implemented by `[checker](https://github.com/kaelzhang/node-checker)`, check the apis of `checker` for details.\n\nYou could check out the demo located at \"example/clean.js\". That is a very complicated situation of usage.\n\n```sh\nnode example/clean.js --username guest\n```\n\n\n\n# Programatical Details\n\n## constructor: clean(schema, options)\n\n\n### options\n\n#### options.offset `Number=`\n\nThe offset from which the parser should start to parse. Optional. Default to `2`.\n\n#### options.shorthands `Object=`\n\nThe shorthands used to parse the argv.\n\n#### options.schema `Object=`\n\nThe schema used to clean the given object or the parsred argv\n\n#### options.check_all `Boolean=false`\n\n#### options.parallel `Boolean=false`\n\n#### options.limit `Boolean=false`\n\n\n## .argv(argv)\n\nParses the argument vector, without cleaning the data.\n\n### argv `Array`\n\n### returns `Object`\n\nThe parsed object with shorthand rules applied.\n\n\n## .clean(data, callback)\n\nCleans the given data according to the `schema`.\n\n### data `Object`\n\nThe given data.\n\n### callback `function(err, results, details)`\n\n\n## .parseArgv(argv, callback)\n\nParses argument vector (argv) or something like argv, and cleans the parsed data according to the `schema`.\n\nThis method is equivalent to `c.clean(c.argv(argv), callback)`.\n\n# Advanced Section\n\n## .registerType(type, typeDef)\n\n\n\n\n\n\n","_id":"clean@2.1.3","dist":{"shasum":"b7cc64b5f6254daed3a285ae6845a826f1e16c71","tarball":"http://localhost:1337/clean/-/clean-2.1.3.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"kael","email":"i@kael.me"},"maintainers":[{"name":"kael","email":"i@kael.me"}],"directories":{}},"2.1.4":{"name":"clean","version":"2.1.4","description":"clean parses and santitize argv or options for node, supporting fully extendable types, shorthands, validatiors and setters.","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git@github.com:kaelzhang/node-clean.git"},"keywords":["argv","parser","argument-vector","cleaner","simple"],"author":{"name":"Kael"},"license":"MIT","readmeFilename":"README.md","bugs":{"url":"https://github.com/kaelzhang/node-clean/issues"},"dependencies":{"checker":"~0.5.1","minimist":"~0.0.5"},"devDependencies":{"mocha":"~1.13.0","chai":"~1.8.0"},"readme":"[![NPM version](https://badge.fury.io/js/clean.png)](http://badge.fury.io/js/clean)\n[![Build Status](https://travis-ci.org/kaelzhang/node-clean.png?branch=master)](https://travis-ci.org/kaelzhang/node-clean)\n[![Dependency Status](https://gemnasium.com/kaelzhang/node-clean.png)](https://gemnasium.com/kaelzhang/node-clean)\n\n# clean\n\nClean is small but powerful node.js module that parses and santitize argv or options for node, supporting:\n\n- fully extendable types\n- shorthands\n- validatiors\n- setters\n\n# Installation and Usage\n\n```sh\nnpm install clean --save\n```\n\n```js\nvar clean = require('clean')(options);\n```\n\n# Usage\n\n## Argv Shorthands\n\nWe can define shorthands with the option `options.shorthands`.\n\n```js\nvar shorthands = {\n\t// if `String`, define a shorthand for a key name\n\tc: 'cwd',\n\t// if `Array`, define a pattern slice of argv\n\tnr: ['--no-recursive'],\n\t// if `Object`, define a specific value\n\tr3: {\n\t\tretry: 3,\n\t\tstrict: false\n\t}\n};\nclean({\n\tshorthands: shorthands\n}).argv(['node', 'xxx', '-c', 'abc', '--nr', '--r3']); \n// notice that '-nr' will be considered as '-n -r'\n// The result is:\n// {\n//\t\tcwd: 'abc',\n//\t\trecursive: false,\n//\t\tretry: 3,\n//\t\tstrict: false \n// }\n```\n\n## Types\n\n```js\nclean({\n\tschema: {\n\t\tcwd: {\n\t\t\ttype: require('path')\n\t\t},\n\t\t\n\t\tretry: {\n\t\t\ttype: Boolean\n\t\t}\t\t\n\t}\n}).parseArgv(\n\t['node', 'xxx', '--cwd', 'abc', 'retry', 'false'], \n\tfunction(err, results, details){\n\t\tconsole.log(results.cwd); // the `path.resolved()`d 'abc'\n\t\tconsole.log(results.retry === false); // is a boolean, not a string\n\t}\n)\n```\n\nHow to extend a custom type ? See the \"advanced section\".\n\n## Validators and Setters\n\nValidators and setters of `clean` is implemented by `[checker](https://github.com/kaelzhang/node-checker)`, check the apis of `checker` for details.\n\nYou could check out the demo located at \"example/clean.js\". That is a very complicated situation of usage.\n\n```sh\nnode example/clean.js --username guest\n```\n\n\n\n# Programatical Details\n\n## constructor: clean(schema, options)\n\n\n### options\n\n#### options.offset `Number=`\n\nThe offset from which the parser should start to parse. Optional. Default to `2`.\n\n#### options.shorthands `Object=`\n\nThe shorthands used to parse the argv.\n\n#### options.schema `Object=`\n\nThe schema used to clean the given object or the parsred argv\n\n#### options.check_all `Boolean=false`\n\n#### options.parallel `Boolean=false`\n\n#### options.limit `Boolean=false`\n\n\n## .argv(argv)\n\nParses the argument vector, without cleaning the data.\n\n### argv `Array`\n\n### returns `Object`\n\nThe parsed object with shorthand rules applied.\n\n\n## .clean(data, callback)\n\nCleans the given data according to the `schema`.\n\n### data `Object`\n\nThe given data.\n\n### callback `function(err, results, details)`\n\n\n## .parseArgv(argv, callback)\n\nParses argument vector (argv) or something like argv, and cleans the parsed data according to the `schema`.\n\nThis method is equivalent to `c.clean(c.argv(argv), callback)`.\n\n# Advanced Section\n\n## .registerType(type, typeDef)\n\n\n\n\n\n\n","_id":"clean@2.1.4","dist":{"shasum":"4c93d479f635b64e0df1230729811030b71ed2e0","tarball":"http://localhost:1337/clean/-/clean-2.1.4.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"kael","email":"i@kael.me"},"maintainers":[{"name":"kael","email":"i@kael.me"}],"directories":{}},"2.1.5":{"name":"clean","version":"2.1.5","description":"clean parses and santitize argv or options for node, supporting fully extendable types, shorthands, validatiors and setters.","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git@github.com:kaelzhang/node-clean.git"},"keywords":["argv","parser","argument-vector","cleaner","simple"],"author":{"name":"Kael"},"license":"MIT","readmeFilename":"README.md","bugs":{"url":"https://github.com/kaelzhang/node-clean/issues"},"dependencies":{"checker":"~0.5.1","minimist":"~0.0.5"},"devDependencies":{"mocha":"~1.13.0","chai":"~1.8.0"},"readme":"[![NPM version](https://badge.fury.io/js/clean.png)](http://badge.fury.io/js/clean)\n[![Build Status](https://travis-ci.org/kaelzhang/node-clean.png?branch=master)](https://travis-ci.org/kaelzhang/node-clean)\n[![Dependency Status](https://gemnasium.com/kaelzhang/node-clean.png)](https://gemnasium.com/kaelzhang/node-clean)\n\n# clean\n\nClean is small but powerful node.js module that parses and santitize argv or options for node, supporting:\n\n- fully extendable types\n- shorthands\n- validatiors\n- setters\n\n# Installation and Usage\n\n```sh\nnpm install clean --save\n```\n\n```js\nvar clean = require('clean')(options);\n```\n\n# Usage\n\n## Argv Shorthands\n\nWe can define shorthands with the option `options.shorthands`.\n\n```js\nvar shorthands = {\n\t// if `String`, define a shorthand for a key name\n\tc: 'cwd',\n\t// if `Array`, define a pattern slice of argv\n\tnr: ['--no-recursive'],\n\t// if `Object`, define a specific value\n\tr3: {\n\t\tretry: 3,\n\t\tstrict: false\n\t}\n};\nclean({\n\tshorthands: shorthands\n}).argv(['node', 'xxx', '-c', 'abc', '--nr', '--r3']); \n// notice that '-nr' will be considered as '-n -r'\n// The result is:\n// {\n//\t\tcwd: 'abc',\n//\t\trecursive: false,\n//\t\tretry: 3,\n//\t\tstrict: false \n// }\n```\n\n## Types\n\n```js\nclean({\n\tschema: {\n\t\tcwd: {\n\t\t\ttype: require('path')\n\t\t},\n\t\t\n\t\tretry: {\n\t\t\ttype: Boolean\n\t\t}\t\t\n\t}\n}).parseArgv(\n\t['node', 'xxx', '--cwd', 'abc', 'retry', 'false'], \n\tfunction(err, results, details){\n\t\tconsole.log(results.cwd); // the `path.resolved()`d 'abc'\n\t\tconsole.log(results.retry === false); // is a boolean, not a string\n\t}\n)\n```\n\nHow to extend a custom type ? See the \"advanced section\".\n\n## Validators and Setters\n\nValidators and setters of `clean` is implemented by `[checker](https://github.com/kaelzhang/node-checker)`, check the apis of `checker` for details.\n\nYou could check out the demo located at \"example/clean.js\". That is a very complicated situation of usage.\n\n```sh\nnode example/clean.js --username guest\n```\n\n\n\n# Programatical Details\n\n## constructor: clean(schema, options)\n\n\n### options\n\n#### options.offset `Number=`\n\nThe offset from which the parser should start to parse. Optional. Default to `2`.\n\n#### options.shorthands `Object=`\n\nThe shorthands used to parse the argv.\n\n#### options.schema `Object=`\n\nThe schema used to clean the given object or the parsred argv\n\n#### options.check_all `Boolean=false`\n\n#### options.parallel `Boolean=false`\n\n#### options.limit `Boolean=false`\n\n\n## .argv(argv)\n\nParses the argument vector, without cleaning the data.\n\n### argv `Array`\n\n### returns `Object`\n\nThe parsed object with shorthand rules applied.\n\n\n## .clean(data, callback)\n\nCleans the given data according to the `schema`.\n\n### data `Object`\n\nThe given data.\n\n### callback `function(err, results, details)`\n\n\n## .parseArgv(argv, callback)\n\nParses argument vector (argv) or something like argv, and cleans the parsed data according to the `schema`.\n\nThis method is equivalent to `c.clean(c.argv(argv), callback)`.\n\n# Advanced Section\n\n## .registerType(type, typeDef)\n\n\n\n\n\n\n","_id":"clean@2.1.5","dist":{"shasum":"62c230d6c08ab4d21388b9cbdfd2519bfd43bde9","tarball":"http://localhost:1337/clean/-/clean-2.1.5.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"kael","email":"i@kael.me"},"maintainers":[{"name":"kael","email":"i@kael.me"}],"directories":{}},"2.1.6":{"name":"clean","version":"2.1.6","description":"clean parses and santitize argv or options for node, supporting fully extendable types, shorthands, validatiors and setters.","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git@github.com:kaelzhang/node-clean.git"},"keywords":["argv","parser","argument-vector","cleaner","simple"],"author":{"name":"Kael"},"license":"MIT","readmeFilename":"README.md","bugs":{"url":"https://github.com/kaelzhang/node-clean/issues"},"dependencies":{"checker":"~0.5.1","minimist":"~0.0.5"},"devDependencies":{"mocha":"~1.13.0","chai":"~1.8.0"},"readme":"[![NPM version](https://badge.fury.io/js/clean.png)](http://badge.fury.io/js/clean)\n[![Build Status](https://travis-ci.org/kaelzhang/node-clean.png?branch=master)](https://travis-ci.org/kaelzhang/node-clean)\n[![Dependency Status](https://gemnasium.com/kaelzhang/node-clean.png)](https://gemnasium.com/kaelzhang/node-clean)\n\n# clean\n\nClean is small but powerful node.js module that parses and santitize argv or options for node, supporting:\n\n- fully extendable types\n- shorthands\n- validatiors\n- setters\n\n# Installation and Usage\n\n```sh\nnpm install clean --save\n```\n\n```js\nvar clean = require('clean')(options);\n```\n\n# Usage\n\n## Argv Shorthands\n\nWe can define shorthands with the option `options.shorthands`.\n\n```js\nvar shorthands = {\n\t// if `String`, define a shorthand for a key name\n\tc: 'cwd',\n\t// if `Array`, define a pattern slice of argv\n\tnr: ['--no-recursive'],\n\t// if `Object`, define a specific value\n\tr3: {\n\t\tretry: 3,\n\t\tstrict: false\n\t}\n};\nclean({\n\tshorthands: shorthands\n}).argv(['node', 'xxx', '-c', 'abc', '--nr', '--r3']); \n// notice that '-nr' will be considered as '-n -r'\n// The result is:\n// {\n//\t\tcwd: 'abc',\n//\t\trecursive: false,\n//\t\tretry: 3,\n//\t\tstrict: false \n// }\n```\n\n## Types\n\n```js\nclean({\n\tschema: {\n\t\tcwd: {\n\t\t\ttype: require('path')\n\t\t},\n\t\t\n\t\tretry: {\n\t\t\ttype: Boolean\n\t\t}\t\t\n\t}\n}).parseArgv(\n\t['node', 'xxx', '--cwd', 'abc', 'retry', 'false'], \n\tfunction(err, results, details){\n\t\tconsole.log(results.cwd); // the `path.resolved()`d 'abc'\n\t\tconsole.log(results.retry === false); // is a boolean, not a string\n\t}\n)\n```\n\nHow to extend a custom type ? See the \"advanced section\".\n\n## Validators and Setters\n\nValidators and setters of `clean` is implemented by `[checker](https://github.com/kaelzhang/node-checker)`, check the apis of `checker` for details.\n\nYou could check out the demo located at \"example/clean.js\". That is a very complicated situation of usage.\n\n```sh\nnode example/clean.js --username guest\n```\n\n\n\n# Programatical Details\n\n## constructor: clean(schema, options)\n\n\n### options\n\n#### options.offset `Number=`\n\nThe offset from which the parser should start to parse. Optional. Default to `2`.\n\n#### options.shorthands `Object=`\n\nThe shorthands used to parse the argv.\n\n#### options.schema `Object=`\n\nThe schema used to clean the given object or the parsred argv\n\n#### options.check_all `Boolean=false`\n\n#### options.parallel `Boolean=false`\n\n#### options.limit `Boolean=false`\n\n\n## .argv(argv)\n\nParses the argument vector, without cleaning the data.\n\n### argv `Array`\n\n### returns `Object`\n\nThe parsed object with shorthand rules applied.\n\n\n## .clean(data, callback)\n\nCleans the given data according to the `schema`.\n\n### data `Object`\n\nThe given data.\n\n### callback `function(err, results, details)`\n\n\n## .parseArgv(argv, callback)\n\nParses argument vector (argv) or something like argv, and cleans the parsed data according to the `schema`.\n\nThis method is equivalent to `c.clean(c.argv(argv), callback)`.\n\n# Advanced Section\n\n## .registerType(type, typeDef)\n\n\n\n\n\n\n","_id":"clean@2.1.6","dist":{"shasum":"41c80b2b6f5432c60cddb81932ab56563b444f52","tarball":"http://localhost:1337/clean/-/clean-2.1.6.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"kael","email":"i@kael.me"},"maintainers":[{"name":"kael","email":"i@kael.me"}],"directories":{}}},"readme":"ERROR: No README data found!","maintainers":[{"name":"kael","email":"i@kael.me"}],"time":{"modified":"2013-10-29T10:27:09.584Z","created":"2013-10-09T14:58:35.029Z","0.0.0":"2013-10-09T14:58:56.786Z","1.1.3":"2013-10-09T17:11:53.515Z","1.1.4":"2013-10-09T17:14:02.537Z","2.1.1":"2013-10-10T04:10:32.004Z","2.1.2":"2013-10-14T13:43:09.309Z","2.1.3":"2013-10-14T15:49:01.158Z","2.1.4":"2013-10-17T03:15:37.028Z","2.1.5":"2013-10-17T03:21:04.145Z","2.1.6":"2013-10-29T10:27:09.584Z"},"author":{"name":"Kael"},"repository":{"type":"git","url":"git@github.com:kaelzhang/node-clean.git"},"_attachments":{}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/83/a4/d747b806caae7385778145bcf999fae69eeb6f14343f6801b79b6b7853538961694ac8b4791c7675c27928b5495d12d2f944867db1105e424d5fa9b1e015 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/83/a4/d747b806caae7385778145bcf999fae69eeb6f14343f6801b79b6b7853538961694ac8b4791c7675c27928b5495d12d2f944867db1105e424d5fa9b1e015
new file mode 100644
index 0000000000..3dd7b75801
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/83/a4/d747b806caae7385778145bcf999fae69eeb6f14343f6801b79b6b7853538961694ac8b4791c7675c27928b5495d12d2f944867db1105e424d5fa9b1e015
@@ -0,0 +1 @@
+{"_id":"minimist","_rev":"14-5a3ee715a591f6fb1267503070d3d114","name":"minimist","description":"parse argument options","dist-tags":{"latest":"0.0.5"},"versions":{"0.0.0":{"name":"minimist","version":"0.0.0","description":"parse argument options","main":"index.js","devDependencies":{"tape":"~1.0.4","tap":"~0.4.0"},"scripts":{"test":"tap test/*.js"},"testling":{"files":"test/*.js","browsers":["ie/6..latest","ff/3.6","firefox/latest","chrome/10","chrome/latest","safari/5.1","safari/latest","opera/12"]},"repository":{"type":"git","url":"git://github.com/substack/minimist.git"},"homepage":"https://github.com/substack/minimist","keywords":["argv","getopt","parser","optimist"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT","readme":"# minimist\n\nparse argument options\n\nThis module is the guts of optimist's argument parser without all the\nfanciful decoration.\n\n[![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist)\n\n[![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist)\n\n# example\n\n``` js\nvar argv = require('minimist')(process.argv.slice(2));\nconsole.dir(argv);\n```\n\n```\n$ node example/parse.js -a beep -b boop\n{ _: [], a: 'beep', b: 'boop' }\n```\n\n```\n$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz\n{ _: [ 'foo', 'bar', 'baz' ],\n x: 3,\n y: 4,\n n: 5,\n a: true,\n b: true,\n c: true,\n beep: 'boop' }\n```\n\n# methods\n\n``` js\nvar parseArgs = require('minimist')\n```\n\n## var argv = parseArgs(args, opts={})\n\nReturn an argument object `argv` populated with the array arguments from `args`.\n\n`argv._` contains all the arguments that didn't have an option associated with\nthem.\n\nNumeric-looking arguments will be returned as numbers unless `opts.string` or\n`opts.boolean` is set for that argument name.\n\nAny arguments after `'--'` will not be parsed and will end up in `argv._`.\n\noptions can be:\n\n* `opts.string` - a string or array of strings argument names to always treat as\nstrings\n* `opts.boolean` - a string or array of strings to always treat as booleans\n* `opts.alias` - an object mapping string names to strings or arrays of string\nargument names to use as aliases\n* `opts.default` - an object mapping string argument names to default values\n\n# install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install minimist\n```\n\n# license\n\nMIT\n","readmeFilename":"readme.markdown","bugs":{"url":"https://github.com/substack/minimist/issues"},"_id":"minimist@0.0.0","dist":{"shasum":"0f62459b3333ea881e554e400243e130ef123568","tarball":"http://localhost:1337/minimist/-/minimist-0.0.0.tgz"},"_from":".","_npmVersion":"1.3.0","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}},"0.0.1":{"name":"minimist","version":"0.0.1","description":"parse argument options","main":"index.js","devDependencies":{"tape":"~1.0.4","tap":"~0.4.0"},"scripts":{"test":"tap test/*.js"},"testling":{"files":"test/*.js","browsers":["ie/6..latest","ff/3.6","firefox/latest","chrome/10","chrome/latest","safari/5.1","safari/latest","opera/12"]},"repository":{"type":"git","url":"git://github.com/substack/minimist.git"},"homepage":"https://github.com/substack/minimist","keywords":["argv","getopt","parser","optimist"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT","readme":"# minimist\n\nparse argument options\n\nThis module is the guts of optimist's argument parser without all the\nfanciful decoration.\n\n[![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist)\n\n[![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist)\n\n# example\n\n``` js\nvar argv = require('minimist')(process.argv.slice(2));\nconsole.dir(argv);\n```\n\n```\n$ node example/parse.js -a beep -b boop\n{ _: [], a: 'beep', b: 'boop' }\n```\n\n```\n$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz\n{ _: [ 'foo', 'bar', 'baz' ],\n x: 3,\n y: 4,\n n: 5,\n a: true,\n b: true,\n c: true,\n beep: 'boop' }\n```\n\n# methods\n\n``` js\nvar parseArgs = require('minimist')\n```\n\n## var argv = parseArgs(args, opts={})\n\nReturn an argument object `argv` populated with the array arguments from `args`.\n\n`argv._` contains all the arguments that didn't have an option associated with\nthem.\n\nNumeric-looking arguments will be returned as numbers unless `opts.string` or\n`opts.boolean` is set for that argument name.\n\nAny arguments after `'--'` will not be parsed and will end up in `argv._`.\n\noptions can be:\n\n* `opts.string` - a string or array of strings argument names to always treat as\nstrings\n* `opts.boolean` - a string or array of strings to always treat as booleans\n* `opts.alias` - an object mapping string names to strings or arrays of string\nargument names to use as aliases\n* `opts.default` - an object mapping string argument names to default values\n\n# install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install minimist\n```\n\n# license\n\nMIT\n","readmeFilename":"readme.markdown","bugs":{"url":"https://github.com/substack/minimist/issues"},"_id":"minimist@0.0.1","dist":{"shasum":"fa2439fbf7da8525c51b2a74e2815b380abc8ab6","tarball":"http://localhost:1337/minimist/-/minimist-0.0.1.tgz"},"_from":".","_npmVersion":"1.3.0","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}},"0.0.2":{"name":"minimist","version":"0.0.2","description":"parse argument options","main":"index.js","devDependencies":{"tape":"~1.0.4","tap":"~0.4.0"},"scripts":{"test":"tap test/*.js"},"testling":{"files":"test/*.js","browsers":["ie/6..latest","ff/5","firefox/latest","chrome/10","chrome/latest","safari/5.1","safari/latest","opera/12"]},"repository":{"type":"git","url":"git://github.com/substack/minimist.git"},"homepage":"https://github.com/substack/minimist","keywords":["argv","getopt","parser","optimist"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT","readme":"# minimist\n\nparse argument options\n\nThis module is the guts of optimist's argument parser without all the\nfanciful decoration.\n\n[![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist)\n\n[![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist)\n\n# example\n\n``` js\nvar argv = require('minimist')(process.argv.slice(2));\nconsole.dir(argv);\n```\n\n```\n$ node example/parse.js -a beep -b boop\n{ _: [], a: 'beep', b: 'boop' }\n```\n\n```\n$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz\n{ _: [ 'foo', 'bar', 'baz' ],\n x: 3,\n y: 4,\n n: 5,\n a: true,\n b: true,\n c: true,\n beep: 'boop' }\n```\n\n# methods\n\n``` js\nvar parseArgs = require('minimist')\n```\n\n## var argv = parseArgs(args, opts={})\n\nReturn an argument object `argv` populated with the array arguments from `args`.\n\n`argv._` contains all the arguments that didn't have an option associated with\nthem.\n\nNumeric-looking arguments will be returned as numbers unless `opts.string` or\n`opts.boolean` is set for that argument name.\n\nAny arguments after `'--'` will not be parsed and will end up in `argv._`.\n\noptions can be:\n\n* `opts.string` - a string or array of strings argument names to always treat as\nstrings\n* `opts.boolean` - a string or array of strings to always treat as booleans\n* `opts.alias` - an object mapping string names to strings or arrays of string\nargument names to use as aliases\n* `opts.default` - an object mapping string argument names to default values\n\n# install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install minimist\n```\n\n# license\n\nMIT\n","readmeFilename":"readme.markdown","bugs":{"url":"https://github.com/substack/minimist/issues"},"_id":"minimist@0.0.2","dist":{"shasum":"3297e0500be195b8fcb56668c45b925bc9bca7ab","tarball":"http://localhost:1337/minimist/-/minimist-0.0.2.tgz"},"_from":".","_npmVersion":"1.3.7","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}},"0.0.3":{"name":"minimist","version":"0.0.3","description":"parse argument options","main":"index.js","devDependencies":{"tape":"~1.0.4","tap":"~0.4.0"},"scripts":{"test":"tap test/*.js"},"testling":{"files":"test/*.js","browsers":["ie/6..latest","ff/5","firefox/latest","chrome/10","chrome/latest","safari/5.1","safari/latest","opera/12"]},"repository":{"type":"git","url":"git://github.com/substack/minimist.git"},"homepage":"https://github.com/substack/minimist","keywords":["argv","getopt","parser","optimist"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT","readme":"# minimist\n\nparse argument options\n\nThis module is the guts of optimist's argument parser without all the\nfanciful decoration.\n\n[![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist)\n\n[![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist)\n\n# example\n\n``` js\nvar argv = require('minimist')(process.argv.slice(2));\nconsole.dir(argv);\n```\n\n```\n$ node example/parse.js -a beep -b boop\n{ _: [], a: 'beep', b: 'boop' }\n```\n\n```\n$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz\n{ _: [ 'foo', 'bar', 'baz' ],\n x: 3,\n y: 4,\n n: 5,\n a: true,\n b: true,\n c: true,\n beep: 'boop' }\n```\n\n# methods\n\n``` js\nvar parseArgs = require('minimist')\n```\n\n## var argv = parseArgs(args, opts={})\n\nReturn an argument object `argv` populated with the array arguments from `args`.\n\n`argv._` contains all the arguments that didn't have an option associated with\nthem.\n\nNumeric-looking arguments will be returned as numbers unless `opts.string` or\n`opts.boolean` is set for that argument name.\n\nAny arguments after `'--'` will not be parsed and will end up in `argv._`.\n\noptions can be:\n\n* `opts.string` - a string or array of strings argument names to always treat as\nstrings\n* `opts.boolean` - a string or array of strings to always treat as booleans\n* `opts.alias` - an object mapping string names to strings or arrays of string\nargument names to use as aliases\n* `opts.default` - an object mapping string argument names to default values\n\n# install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install minimist\n```\n\n# license\n\nMIT\n","readmeFilename":"readme.markdown","bugs":{"url":"https://github.com/substack/minimist/issues"},"_id":"minimist@0.0.3","dist":{"shasum":"a7a2ef8fbafecbae6c1baa4e56ad81e77acacb94","tarball":"http://localhost:1337/minimist/-/minimist-0.0.3.tgz"},"_from":".","_npmVersion":"1.3.7","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}},"0.0.4":{"name":"minimist","version":"0.0.4","description":"parse argument options","main":"index.js","devDependencies":{"tape":"~1.0.4","tap":"~0.4.0"},"scripts":{"test":"tap test/*.js"},"testling":{"files":"test/*.js","browsers":["ie/6..latest","ff/5","firefox/latest","chrome/10","chrome/latest","safari/5.1","safari/latest","opera/12"]},"repository":{"type":"git","url":"git://github.com/substack/minimist.git"},"homepage":"https://github.com/substack/minimist","keywords":["argv","getopt","parser","optimist"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT","readme":"# minimist\n\nparse argument options\n\nThis module is the guts of optimist's argument parser without all the\nfanciful decoration.\n\n[![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist)\n\n[![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist)\n\n# example\n\n``` js\nvar argv = require('minimist')(process.argv.slice(2));\nconsole.dir(argv);\n```\n\n```\n$ node example/parse.js -a beep -b boop\n{ _: [], a: 'beep', b: 'boop' }\n```\n\n```\n$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz\n{ _: [ 'foo', 'bar', 'baz' ],\n x: 3,\n y: 4,\n n: 5,\n a: true,\n b: true,\n c: true,\n beep: 'boop' }\n```\n\n# methods\n\n``` js\nvar parseArgs = require('minimist')\n```\n\n## var argv = parseArgs(args, opts={})\n\nReturn an argument object `argv` populated with the array arguments from `args`.\n\n`argv._` contains all the arguments that didn't have an option associated with\nthem.\n\nNumeric-looking arguments will be returned as numbers unless `opts.string` or\n`opts.boolean` is set for that argument name.\n\nAny arguments after `'--'` will not be parsed and will end up in `argv._`.\n\noptions can be:\n\n* `opts.string` - a string or array of strings argument names to always treat as\nstrings\n* `opts.boolean` - a string or array of strings to always treat as booleans\n* `opts.alias` - an object mapping string names to strings or arrays of string\nargument names to use as aliases\n* `opts.default` - an object mapping string argument names to default values\n\n# install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install minimist\n```\n\n# license\n\nMIT\n","readmeFilename":"readme.markdown","bugs":{"url":"https://github.com/substack/minimist/issues"},"_id":"minimist@0.0.4","dist":{"shasum":"db41b1028484927a9425765b954075f5082f5048","tarball":"http://localhost:1337/minimist/-/minimist-0.0.4.tgz"},"_from":".","_npmVersion":"1.3.7","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}},"0.0.5":{"name":"minimist","version":"0.0.5","description":"parse argument options","main":"index.js","devDependencies":{"tape":"~1.0.4","tap":"~0.4.0"},"scripts":{"test":"tap test/*.js"},"testling":{"files":"test/*.js","browsers":["ie/6..latest","ff/5","firefox/latest","chrome/10","chrome/latest","safari/5.1","safari/latest","opera/12"]},"repository":{"type":"git","url":"git://github.com/substack/minimist.git"},"homepage":"https://github.com/substack/minimist","keywords":["argv","getopt","parser","optimist"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT","readme":"# minimist\n\nparse argument options\n\nThis module is the guts of optimist's argument parser without all the\nfanciful decoration.\n\n[![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist)\n\n[![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist)\n\n# example\n\n``` js\nvar argv = require('minimist')(process.argv.slice(2));\nconsole.dir(argv);\n```\n\n```\n$ node example/parse.js -a beep -b boop\n{ _: [], a: 'beep', b: 'boop' }\n```\n\n```\n$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz\n{ _: [ 'foo', 'bar', 'baz' ],\n x: 3,\n y: 4,\n n: 5,\n a: true,\n b: true,\n c: true,\n beep: 'boop' }\n```\n\n# methods\n\n``` js\nvar parseArgs = require('minimist')\n```\n\n## var argv = parseArgs(args, opts={})\n\nReturn an argument object `argv` populated with the array arguments from `args`.\n\n`argv._` contains all the arguments that didn't have an option associated with\nthem.\n\nNumeric-looking arguments will be returned as numbers unless `opts.string` or\n`opts.boolean` is set for that argument name.\n\nAny arguments after `'--'` will not be parsed and will end up in `argv._`.\n\noptions can be:\n\n* `opts.string` - a string or array of strings argument names to always treat as\nstrings\n* `opts.boolean` - a string or array of strings to always treat as booleans\n* `opts.alias` - an object mapping string names to strings or arrays of string\nargument names to use as aliases\n* `opts.default` - an object mapping string argument names to default values\n\n# install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install minimist\n```\n\n# license\n\nMIT\n","readmeFilename":"readme.markdown","bugs":{"url":"https://github.com/substack/minimist/issues"},"_id":"minimist@0.0.5","dist":{"shasum":"d7aa327bcecf518f9106ac6b8f003fa3bcea8566","tarball":"http://localhost:1337/minimist/-/minimist-0.0.5.tgz"},"_from":".","_npmVersion":"1.3.7","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}}},"readme":"# minimist\n\nparse argument options\n\nThis module is the guts of optimist's argument parser without all the\nfanciful decoration.\n\n[![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist)\n\n[![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist)\n\n# example\n\n``` js\nvar argv = require('minimist')(process.argv.slice(2));\nconsole.dir(argv);\n```\n\n```\n$ node example/parse.js -a beep -b boop\n{ _: [], a: 'beep', b: 'boop' }\n```\n\n```\n$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz\n{ _: [ 'foo', 'bar', 'baz' ],\n x: 3,\n y: 4,\n n: 5,\n a: true,\n b: true,\n c: true,\n beep: 'boop' }\n```\n\n# methods\n\n``` js\nvar parseArgs = require('minimist')\n```\n\n## var argv = parseArgs(args, opts={})\n\nReturn an argument object `argv` populated with the array arguments from `args`.\n\n`argv._` contains all the arguments that didn't have an option associated with\nthem.\n\nNumeric-looking arguments will be returned as numbers unless `opts.string` or\n`opts.boolean` is set for that argument name.\n\nAny arguments after `'--'` will not be parsed and will end up in `argv._`.\n\noptions can be:\n\n* `opts.string` - a string or array of strings argument names to always treat as\nstrings\n* `opts.boolean` - a string or array of strings to always treat as booleans\n* `opts.alias` - an object mapping string names to strings or arrays of string\nargument names to use as aliases\n* `opts.default` - an object mapping string argument names to default values\n\n# install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install minimist\n```\n\n# license\n\nMIT\n","maintainers":[{"name":"substack","email":"mail@substack.net"}],"time":{"0.0.0":"2013-06-25T08:17:18.123Z","0.0.1":"2013-06-25T08:22:05.384Z","0.0.2":"2013-08-28T23:00:17.595Z","0.0.3":"2013-09-12T16:27:07.340Z","0.0.4":"2013-09-17T15:13:28.184Z","0.0.5":"2013-09-19T06:45:40.016Z"},"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"repository":{"type":"git","url":"git://github.com/substack/minimist.git"},"users":{"chrisdickinson":true},"_attachments":{"minimist-0.0.5.tgz":{"content_type":"application/octet-stream","revpos":12,"digest":"md5-7fj5eF/2Az1v1uUELt0w5Q==","length":5977,"stub":true},"minimist-0.0.4.tgz":{"content_type":"application/octet-stream","revpos":10,"digest":"md5-qnJpUhb/cbsf0S5JujcKvA==","length":5952,"stub":true},"minimist-0.0.3.tgz":{"content_type":"application/octet-stream","revpos":8,"digest":"md5-2LmD2Da9atq7rqeguE/HPQ==","length":5871,"stub":true},"minimist-0.0.2.tgz":{"content_type":"application/octet-stream","revpos":6,"digest":"md5-8HHOFLuI1T4ko3lvq362pA==","length":5821,"stub":true},"minimist-0.0.1.tgz":{"content_type":"application/octet-stream","revpos":4,"digest":"md5-sEDD6p3usslEbK4/f4Rbpw==","length":5691,"stub":true},"minimist-0.0.0.tgz":{"content_type":"application/octet-stream","revpos":2,"digest":"md5-g7dzol87egGxtducC9bdFw==","length":5687,"stub":true}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/87/44/66cb46d039cc912bd3ee29bfae97ac7f4dd4051cd240c1b25548747f9f1c6fdc3a2a9e65b058ab28f0a22b4aaee58075e0c77fd00ddf656536bc543290be b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/87/44/66cb46d039cc912bd3ee29bfae97ac7f4dd4051cd240c1b25548747f9f1c6fdc3a2a9e65b058ab28f0a22b4aaee58075e0c77fd00ddf656536bc543290be
new file mode 100644
index 0000000000..b4e8a5f74e
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/87/44/66cb46d039cc912bd3ee29bfae97ac7f4dd4051cd240c1b25548747f9f1c6fdc3a2a9e65b058ab28f0a22b4aaee58075e0c77fd00ddf656536bc543290be
@@ -0,0 +1 @@
+{"_id":"npm-test-peer-deps","_rev":"2-fb584f2e7674d4ae2a93f2f9086e7268","name":"npm-test-peer-deps","dist-tags":{"latest":"0.0.0"},"versions":{"0.0.0":{"author":{"name":"Domenic Denicola"},"name":"npm-test-peer-deps","version":"0.0.0","peerDependencies":{"request":"0.9.x"},"dependencies":{"underscore":"1.3.1"},"_id":"npm-test-peer-deps@0.0.0","dist":{"shasum":"82f3ccba11914dc88bcb185ee3b1b33b564272bc","tarball":"http://localhost:1337/npm-test-peer-deps/-/npm-test-peer-deps-0.0.0.tgz"},"_from":".","_npmVersion":"1.3.25","_npmUser":{"name":"domenic","email":"domenic@domenicdenicola.com"},"maintainers":[{"name":"domenic","email":"domenic@domenicdenicola.com"}],"directories":{}}},"readme":"ERROR: No README data found!","maintainers":[{"name":"domenic","email":"domenic@domenicdenicola.com"}],"time":{"0.0.0":"2014-02-08T04:56:36.743Z"},"readmeFilename":"","_attachments":{}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/88/49/914fc692dc5441fec8231a33caec98409b6d522fa46bed4a673127876224b9cb8bc35e51e251c8a897a1d71dd9d7f46b6217ec8ef30ec4d83f4b9a43098d b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/88/49/914fc692dc5441fec8231a33caec98409b6d522fa46bed4a673127876224b9cb8bc35e51e251c8a897a1d71dd9d7f46b6217ec8ef30ec4d83f4b9a43098d
new file mode 100644
index 0000000000..9de484272a
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/88/49/914fc692dc5441fec8231a33caec98409b6d522fa46bed4a673127876224b9cb8bc35e51e251c8a897a1d71dd9d7f46b6217ec8ef30ec4d83f4b9a43098d
@@ -0,0 +1 @@
+{"name":"add-named-update-protocol-porti","versions":{"0.0.0":{"name":"add-named-update-protocol-porti","version":"0.0.0","dist":{"tarball":"http://127.0.0.1:1338/registry/add-named-update-protocol-porti/-/add-named-update-protocol-porti-0.0.0.tgz","shasum":"356a192b7913b04c54574d18c28d46e6395428ab"}}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/9d/5b/15d0ad75fc513f4a327b5e441803dd220edeb4f9660e454fe9d263b543ba356c71330a5964f864d1c24aada16bea028eb40106762b142b30d448cdc08593 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/9d/5b/15d0ad75fc513f4a327b5e441803dd220edeb4f9660e454fe9d263b543ba356c71330a5964f864d1c24aada16bea028eb40106762b142b30d448cdc08593
new file mode 100644
index 0000000000..b4bac32b24
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/9d/5b/15d0ad75fc513f4a327b5e441803dd220edeb4f9660e454fe9d263b543ba356c71330a5964f864d1c24aada16bea028eb40106762b142b30d448cdc08593
Binary files differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/9d/b3/095447c9b53fe88bbf190fb6a324c7a42a84bf51d3c345fc88cdeea00f026167ad7329b42369d79a67812738a2324b7aae42d4feeac49a2b895c57b48168 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/9d/b3/095447c9b53fe88bbf190fb6a324c7a42a84bf51d3c345fc88cdeea00f026167ad7329b42369d79a67812738a2324b7aae42d4feeac49a2b895c57b48168
new file mode 100644
index 0000000000..f80dde8f72
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/9d/b3/095447c9b53fe88bbf190fb6a324c7a42a84bf51d3c345fc88cdeea00f026167ad7329b42369d79a67812738a2324b7aae42d4feeac49a2b895c57b48168
@@ -0,0 +1 @@
+{"_rev":"3-deadcafebabebeef"} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/a0/f8/5ae8b484bc71fb13ef636b9aee45f548ab6357488369ffb02f239f9473c6b94c5c2a5ef3b1b96e16ce6158dc05f13ef88bcef32de3bc415a48cdc5500355 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/a0/f8/5ae8b484bc71fb13ef636b9aee45f548ab6357488369ffb02f239f9473c6b94c5c2a5ef3b1b96e16ce6158dc05f13ef88bcef32de3bc415a48cdc5500355
new file mode 100644
index 0000000000..09b8eb5c18
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/a0/f8/5ae8b484bc71fb13ef636b9aee45f548ab6357488369ffb02f239f9473c6b94c5c2a5ef3b1b96e16ce6158dc05f13ef88bcef32de3bc415a48cdc5500355
@@ -0,0 +1 @@
+{"latest":"4.0.0"} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/a1/a1/072cae616c1f6479110e3e3ee54fa16978c081d8032999d62d207e5cd6c7643e463d73d3ff4b218ad717724c918013e03954f9729192cbdfa1d0bed6fd39 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/a1/a1/072cae616c1f6479110e3e3ee54fa16978c081d8032999d62d207e5cd6c7643e463d73d3ff4b218ad717724c918013e03954f9729192cbdfa1d0bed6fd39
new file mode 100644
index 0000000000..679abe4ac1
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/a1/a1/072cae616c1f6479110e3e3ee54fa16978c081d8032999d62d207e5cd6c7643e463d73d3ff4b218ad717724c918013e03954f9729192cbdfa1d0bed6fd39
@@ -0,0 +1 @@
+{"latest":"2.0.0","b":"0.6.0"} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/aa/86/730ec932cdb0f05db2f35e1e456fc986db19f83fb3f8140a5851411fbcf44966328479ab280cc80ae2d740cdc01f8f880836a00c66743565acd2e8352e7a b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/aa/86/730ec932cdb0f05db2f35e1e456fc986db19f83fb3f8140a5851411fbcf44966328479ab280cc80ae2d740cdc01f8f880836a00c66743565acd2e8352e7a
new file mode 100644
index 0000000000..b83cc30a62
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/aa/86/730ec932cdb0f05db2f35e1e456fc986db19f83fb3f8140a5851411fbcf44966328479ab280cc80ae2d740cdc01f8f880836a00c66743565acd2e8352e7a
Binary files differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/ad/a1/cd9122e6beb95de36bb8dc10c255a6a7d7b8bfbe21b72843ab6db402ee8cb8bde5fb2d050a7eb96ea330e8be1a394c4c7c444c8b541f8e180b7f12506fe8 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/ad/a1/cd9122e6beb95de36bb8dc10c255a6a7d7b8bfbe21b72843ab6db402ee8cb8bde5fb2d050a7eb96ea330e8be1a394c4c7c444c8b541f8e180b7f12506fe8
new file mode 100644
index 0000000000..009905080b
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/ad/a1/cd9122e6beb95de36bb8dc10c255a6a7d7b8bfbe21b72843ab6db402ee8cb8bde5fb2d050a7eb96ea330e8be1a394c4c7c444c8b541f8e180b7f12506fe8
@@ -0,0 +1 @@
+{"_id":"async","_rev":"223-5df87f4f3d2584f561ccb40c7361a399","name":"async","description":"Higher-order functions and common patterns for asynchronous code","dist-tags":{"latest":"0.2.10"},"versions":{"0.1.0":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.0","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"web":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_id":"async@0.1.0","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://localhost:1337/async/-/async-0.1.0.tgz","shasum":"ab8ece0c40627e4e8f0e09c8fcf7c19ed0c4241c"},"directories":{}},"0.1.1":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.1","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"web":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_id":"async@0.1.1","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://localhost:1337/async/-/async-0.1.1.tgz","shasum":"fb965e70dbea44c8a4b8a948472dee7d27279d5e"},"directories":{}},"0.1.2":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.2","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"web":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_id":"async@0.1.2","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://localhost:1337/async/-/async-0.1.2.tgz","shasum":"be761882a64d3dc81a669f9ee3d5c28497382691"},"directories":{}},"0.1.3":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.3","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"web":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_id":"async@0.1.3","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://localhost:1337/async/-/async-0.1.3.tgz","shasum":"629ca2357112d90cafc33872366b14f2695a1fbc"},"directories":{}},"0.1.4":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.4","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"web":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_id":"async@0.1.4","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://localhost:1337/async/-/async-0.1.4.tgz","shasum":"29de4b98712ab8858411d8d8e3361a986c3b2c18"},"directories":{}},"0.1.5":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.5","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"web":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_id":"async@0.1.5","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://localhost:1337/async/-/async-0.1.5.tgz","shasum":"9d83e3d4adb9c962fc4a30e7dd04bf1206c28ea5"},"directories":{}},"0.1.6":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.6","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"web":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_id":"async@0.1.6","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://localhost:1337/async/-/async-0.1.6.tgz","shasum":"2dfb4fa1915f86056060c2e2f35a7fb8549907cc"},"directories":{}},"0.1.7":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.7","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"web":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_id":"async@0.1.7","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.4-1","_nodeVersion":"v0.2.5","dist":{"tarball":"http://localhost:1337/async/-/async-0.1.7.tgz","shasum":"e9268d0d8cd8dcfe0db0895b27dcc4bcc5c739a5"},"directories":{}},"0.1.8":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.8","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"web":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_id":"async@0.1.8","engines":{"node":"*"},"_nodeSupported":true,"dist":{"tarball":"http://localhost:1337/async/-/async-0.1.8.tgz","shasum":"52f2df6c0aa6a7f8333e1fbac0fbd93670cf6758"},"directories":{}},"0.1.9":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.9","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"dependencies":{},"devDependencies":{},"_id":"async@0.1.9","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.1rc7","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"f984d0739b5382c949cc3bea702d21d0dbd52040","tarball":"http://localhost:1337/async/-/async-0.1.9.tgz"},"directories":{}},"0.1.10":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.10","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_npmJsonOpts":{"file":"/home/caolan/.npm/async/0.1.10/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"async@0.1.10","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.27","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"12b32bf098fa7fc51ae3ac51441b8ba15f437cf1","tarball":"http://localhost:1337/async/-/async-0.1.10.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.11":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.11","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_npmJsonOpts":{"file":"/home/caolan/.npm/async/0.1.11/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"async@0.1.11","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.27","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"a397a69c6febae232d20a76a5b10d8742e2b8215","tarball":"http://localhost:1337/async/-/async-0.1.11.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.12":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.12","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_npmJsonOpts":{"file":"/home/caolan/.npm/async/0.1.12/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"async@0.1.12","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.27","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"ab36be6611dc63d91657128e1d65102b959d4afe","tarball":"http://localhost:1337/async/-/async-0.1.12.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.13":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.13","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.13","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.101","_nodeVersion":"v0.4.9","_defaultsLoaded":true,"dist":{"shasum":"f1e53ad69dab282d8e75cbec5e2c5524b6195eab","tarball":"http://localhost:1337/async/-/async-0.1.13.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.14":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.14","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.14","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.101","_nodeVersion":"v0.4.9","_defaultsLoaded":true,"dist":{"shasum":"0fcfaf089229fc657798203d1a4544102f7d26dc","tarball":"http://localhost:1337/async/-/async-0.1.14.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.15":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.15","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.15","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.101","_nodeVersion":"v0.4.9","_defaultsLoaded":true,"dist":{"shasum":"2180eaca2cf2a6ca5280d41c0585bec9b3e49bd3","tarball":"http://localhost:1337/async/-/async-0.1.15.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.16":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.16","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.16","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"b3a61fdc1a9193d4f64755c7600126e254223186","tarball":"http://localhost:1337/async/-/async-0.1.16.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.17":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.17","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"dependencies":{"uglify-js":"1.2.x"},"devDependencies":{"nodeunit":">0.0.0","nodelint":">0.0.0"},"scripts":{"preinstall":"make clean","install":"make build","test":"make test"},"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.17","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"03524a379e974dc9ee5c811c6ee3815d7bc54f6e","tarball":"http://localhost:1337/async/-/async-0.1.17.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.18":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.18","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.18","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"c59c923920b76d5bf23248c04433920c4d45086a","tarball":"http://localhost:1337/async/-/async-0.1.18.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.19":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.19","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.19","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"4fd6125a70f841fb10b14aeec6e23cf1479c71a7","tarball":"http://localhost:1337/async/-/async-0.1.19.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.20":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.20","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.20","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"ba0e47b08ae972e04b5215de28539b313482ede5","tarball":"http://localhost:1337/async/-/async-0.1.20.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.21":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.21","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.21","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"b5b12e985f09ab72c202fa00f623cd9d997e9464","tarball":"http://localhost:1337/async/-/async-0.1.21.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.22":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.22","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.22","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"0fc1aaa088a0e3ef0ebe2d8831bab0dcf8845061","tarball":"http://localhost:1337/async/-/async-0.1.22.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.0":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.0","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"_id":"async@0.2.0","dist":{"shasum":"db1c645337bab79d0ca93d95f5c72d9605be0fce","tarball":"http://localhost:1337/async/-/async-0.2.0.tgz"},"_npmVersion":"1.2.0","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.1":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.1","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"_id":"async@0.2.1","dist":{"shasum":"4e37d08391132f79657a99ca73aa4eb471a6f771","tarball":"http://localhost:1337/async/-/async-0.2.1.tgz"},"_npmVersion":"1.2.0","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.2":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.2","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"]},"_id":"async@0.2.2","dist":{"shasum":"8414ee47da7548126b4d3d923850d54e68a72b28","tarball":"http://localhost:1337/async/-/async-0.2.2.tgz"},"_npmVersion":"1.2.0","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.3":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.3","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"]},"_id":"async@0.2.3","dist":{"shasum":"79bf601d723a2e8c3e91cb6bb08f152dca309fb3","tarball":"http://localhost:1337/async/-/async-0.2.3.tgz"},"_npmVersion":"1.2.0","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.4":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.4","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"]},"_id":"async@0.2.4","dist":{"shasum":"0550e510cf43b83e2fcf1cb96399f03f1efd50eb","tarball":"http://localhost:1337/async/-/async-0.2.4.tgz"},"_npmVersion":"1.2.0","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.5":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.5","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"]},"_id":"async@0.2.5","dist":{"shasum":"45f05da480749ba4c1dcd8cd3a3747ae7b36fe52","tarball":"http://localhost:1337/async/-/async-0.2.5.tgz"},"_npmVersion":"1.2.0","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.6":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.6","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"]},"scripts":{"test":"nodeunit test/test-async.js"},"_id":"async@0.2.6","dist":{"shasum":"ad3f373d9249ae324881565582bc90e152abbd68","tarball":"http://localhost:1337/async/-/async-0.2.6.tgz"},"_from":".","_npmVersion":"1.2.11","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.7":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.7","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"]},"scripts":{"test":"nodeunit test/test-async.js"},"_id":"async@0.2.7","dist":{"shasum":"44c5ee151aece6c4bf5364cfc7c28fe4e58f18df","tarball":"http://localhost:1337/async/-/async-0.2.7.tgz"},"_from":".","_npmVersion":"1.2.11","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.8":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.8","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"]},"scripts":{"test":"nodeunit test/test-async.js"},"_id":"async@0.2.8","dist":{"shasum":"ba1b3ffd1e6cdb1e999aca76ef6ecee8e7f55f53","tarball":"http://localhost:1337/async/-/async-0.2.8.tgz"},"_from":".","_npmVersion":"1.2.11","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.9":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.9","repository":{"type":"git","url":"https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"https://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"]},"scripts":{"test":"nodeunit test/test-async.js"},"_id":"async@0.2.9","dist":{"shasum":"df63060fbf3d33286a76aaf6d55a2986d9ff8619","tarball":"http://localhost:1337/async/-/async-0.2.9.tgz"},"_from":".","_npmVersion":"1.2.23","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.10":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.10","repository":{"type":"git","url":"https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"https://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"]},"scripts":{"test":"nodeunit test/test-async.js"},"_id":"async@0.2.10","dist":{"shasum":"b6bbe0b0674b9d719708ca38de8c237cb526c3d1","tarball":"http://localhost:1337/async/-/async-0.2.10.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}}},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"author":{"name":"Caolan McMahon"},"repository":{"type":"git","url":"https://github.com/caolan/async.git"},"time":{"modified":"2014-03-13T17:04:44.914Z","created":"2010-12-19T16:41:51.765Z","0.1.0":"2010-12-19T16:41:51.765Z","0.1.1":"2010-12-19T16:41:51.765Z","0.1.2":"2010-12-19T16:41:51.765Z","0.1.3":"2010-12-19T16:41:51.765Z","0.1.4":"2010-12-19T16:41:51.765Z","0.1.5":"2010-12-19T16:41:51.765Z","0.1.6":"2010-12-19T16:41:51.765Z","0.1.7":"2010-12-19T16:41:51.765Z","0.1.8":"2011-01-18T09:56:53.975Z","0.1.9":"2011-04-27T20:48:08.634Z","0.1.10":"2011-09-19T04:40:01.573Z","0.1.11":"2011-10-14T17:07:28.752Z","0.1.12":"2011-10-14T17:19:19.452Z","0.1.13":"2011-10-29T22:33:52.448Z","0.1.14":"2011-10-29T22:40:14.486Z","0.1.15":"2011-11-01T23:05:01.415Z","0.1.16":"2012-02-13T04:56:23.926Z","0.1.17":"2012-02-27T02:40:58.997Z","0.1.18":"2012-02-27T16:51:02.109Z","0.1.19":"2012-05-24T06:51:06.109Z","0.1.20":"2012-05-24T06:53:39.997Z","0.1.21":"2012-05-24T07:16:16.753Z","0.1.22":"2012-05-30T18:26:44.821Z","0.1.23":"2012-10-04T13:52:08.947Z","0.2.0":"2013-02-04T11:38:08.943Z","0.2.1":"2013-02-04T11:52:34.110Z","0.2.2":"2013-02-05T15:55:23.202Z","0.2.3":"2013-02-06T12:48:37.415Z","0.2.4":"2013-02-07T17:26:22.236Z","0.2.5":"2013-02-10T22:42:00.162Z","0.2.6":"2013-03-03T11:29:52.674Z","0.2.7":"2013-04-09T20:50:04.712Z","0.2.8":"2013-05-01T10:04:07.430Z","0.2.9":"2013-05-28T07:50:48.795Z","0.2.10":"2014-01-23T16:23:57.271Z"},"users":{"thejh":true,"avianflu":true,"dylang":true,"ragingwind":true,"mvolkmann":true,"mikl":true,"linus":true,"pvorb":true,"dodo":true,"danielr":true,"suor":true,"dolphin278":true,"kurijov":true,"langpavel":true,"alexindigo":true,"fgribreau":true,"hughsk":true,"pid":true,"tylerstalder":true,"gillesruppert":true,"coiscir":true,"xenomuta":true,"jgoodall":true,"jswartwood":true,"drudge":true,"cpsubrian":true,"joeferner":true,"bencevans":true,"Scryptonite":true,"damonoehlman":true,"glukki":true,"tivac":true,"shama":true,"gimenete":true,"bryanburgers":true,"hij1nx":true,"sandeepmistry":true,"minddiaper":true,"fiws":true,"ljharb":true,"popeindustries":true,"charmander":true,"dbrockman":true,"eknkc":true,"booyaa":true,"afc163":true,"maxmaximov":true,"meryn":true,"hfcorriez":true,"hyqhyq_3":true,"zonetti":true,"cmilhench":true,"cparker15":true,"jfromaniello":true,"ExxKA":true,"devoidfury":true,"cedrickchee":true,"niftymonkey":true,"paulj":true,"leesei":true,"jamesmgreene":true,"igorissen":true,"zaphod1984":true,"moonpyk":true,"joliva":true,"netroy":true,"chrisweb":true,"cuprobot":true,"tmaximini":true,"lupomontero":true,"john.pinch":true,"everywhere.js":true,"frankblizzard":true,"alanshaw":true,"forivall":true,"kubakubula":true,"doliveira":true,"dstokes":true,"pana":true,"irae":true,"mhaidarh":true,"feross":true,"tetsu3a":true,"qubyte":true,"darosh":true,"pragmadash":true,"denisix":true,"samuelrn":true,"tigefa":true,"tcrowe":true,"tpwk":true,"eins78":true,"sierrasoftworks":true,"yoavf":true,"irakli":true,"hypergeometric":true,"gammasoft":true,"youxiachai":true,"kahboom":true,"elisee":true,"soroush":true,"thomas-so":true,"shenaor":true,"dannynemer":true,"paulomcnally":true,"timur.shemsedinov":true,"slianfeng":true,"ettalea":true,"mananvaghasiya":true,"daniel7912":true,"themiddleman":true,"jacques":true,"kerimdzhanov":true,"jorgemsrs":true,"ivandimanov":true,"vegera":true,"aselzer":true,"kentcdodds":true,"putaoshu":true,"imdsm":true,"cilindrox":true},"readme":"# Async.js\n\nAsync is a utility module which provides straight-forward, powerful functions\nfor working with asynchronous JavaScript. Although originally designed for\nuse with [node.js](http://nodejs.org), it can also be used directly in the\nbrowser. Also supports [component](https://github.com/component/component).\n\nAsync provides around 20 functions that include the usual 'functional'\nsuspects (map, reduce, filter, each…) as well as some common patterns\nfor asynchronous control flow (parallel, series, waterfall…). All these\nfunctions assume you follow the node.js convention of providing a single\ncallback as the last argument of your async function.\n\n\n## Quick Examples\n\n```javascript\nasync.map(['file1','file2','file3'], fs.stat, function(err, results){\n // results is now an array of stats for each file\n});\n\nasync.filter(['file1','file2','file3'], fs.exists, function(results){\n // results now equals an array of the existing files\n});\n\nasync.parallel([\n function(){ ... },\n function(){ ... }\n], callback);\n\nasync.series([\n function(){ ... },\n function(){ ... }\n]);\n```\n\nThere are many more functions available so take a look at the docs below for a\nfull list. This module aims to be comprehensive, so if you feel anything is\nmissing please create a GitHub issue for it.\n\n## Common Pitfalls\n\n### Binding a context to an iterator\n\nThis section is really about bind, not about async. If you are wondering how to\nmake async execute your iterators in a given context, or are confused as to why\na method of another library isn't working as an iterator, study this example:\n\n```js\n// Here is a simple object with an (unnecessarily roundabout) squaring method\nvar AsyncSquaringLibrary = {\n squareExponent: 2,\n square: function(number, callback){ \n var result = Math.pow(number, this.squareExponent);\n setTimeout(function(){\n callback(null, result);\n }, 200);\n }\n};\n\nasync.map([1, 2, 3], AsyncSquaringLibrary.square, function(err, result){\n // result is [NaN, NaN, NaN]\n // This fails because the `this.squareExponent` expression in the square\n // function is not evaluated in the context of AsyncSquaringLibrary, and is\n // therefore undefined.\n});\n\nasync.map([1, 2, 3], AsyncSquaringLibrary.square.bind(AsyncSquaringLibrary), function(err, result){\n // result is [1, 4, 9]\n // With the help of bind we can attach a context to the iterator before\n // passing it to async. Now the square function will be executed in its \n // 'home' AsyncSquaringLibrary context and the value of `this.squareExponent`\n // will be as expected.\n});\n```\n\n## Download\n\nThe source is available for download from\n[GitHub](http://github.com/caolan/async).\nAlternatively, you can install using Node Package Manager (npm):\n\n npm install async\n\n__Development:__ [async.js](https://github.com/caolan/async/raw/master/lib/async.js) - 29.6kb Uncompressed\n\n## In the Browser\n\nSo far it's been tested in IE6, IE7, IE8, FF3.6 and Chrome 5. Usage:\n\n```html\n<script type=\"text/javascript\" src=\"async.js\"></script>\n<script type=\"text/javascript\">\n\n async.map(data, asyncProcess, function(err, results){\n alert(results);\n });\n\n</script>\n```\n\n## Documentation\n\n### Collections\n\n* [each](#each)\n* [eachSeries](#eachSeries)\n* [eachLimit](#eachLimit)\n* [map](#map)\n* [mapSeries](#mapSeries)\n* [mapLimit](#mapLimit)\n* [filter](#filter)\n* [filterSeries](#filterSeries)\n* [reject](#reject)\n* [rejectSeries](#rejectSeries)\n* [reduce](#reduce)\n* [reduceRight](#reduceRight)\n* [detect](#detect)\n* [detectSeries](#detectSeries)\n* [sortBy](#sortBy)\n* [some](#some)\n* [every](#every)\n* [concat](#concat)\n* [concatSeries](#concatSeries)\n\n### Control Flow\n\n* [series](#series)\n* [parallel](#parallel)\n* [parallelLimit](#parallellimittasks-limit-callback)\n* [whilst](#whilst)\n* [doWhilst](#doWhilst)\n* [until](#until)\n* [doUntil](#doUntil)\n* [forever](#forever)\n* [waterfall](#waterfall)\n* [compose](#compose)\n* [applyEach](#applyEach)\n* [applyEachSeries](#applyEachSeries)\n* [queue](#queue)\n* [cargo](#cargo)\n* [auto](#auto)\n* [iterator](#iterator)\n* [apply](#apply)\n* [nextTick](#nextTick)\n* [times](#times)\n* [timesSeries](#timesSeries)\n\n### Utils\n\n* [memoize](#memoize)\n* [unmemoize](#unmemoize)\n* [log](#log)\n* [dir](#dir)\n* [noConflict](#noConflict)\n\n\n## Collections\n\n<a name=\"forEach\" />\n<a name=\"each\" />\n### each(arr, iterator, callback)\n\nApplies an iterator function to each item in an array, in parallel.\nThe iterator is called with an item from the list and a callback for when it\nhas finished. If the iterator passes an error to this callback, the main\ncallback for the each function is immediately called with the error.\n\nNote, that since this function applies the iterator to each item in parallel\nthere is no guarantee that the iterator functions will complete in order.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback(err) which must be called once it has \n completed. If no error has occured, the callback should be run without \n arguments or with an explicit null argument.\n* callback(err) - A callback which is called after all the iterator functions\n have finished, or an error has occurred.\n\n__Example__\n\n```js\n// assuming openFiles is an array of file names and saveFile is a function\n// to save the modified contents of that file:\n\nasync.each(openFiles, saveFile, function(err){\n // if any of the saves produced an error, err would equal that error\n});\n```\n\n---------------------------------------\n\n<a name=\"forEachSeries\" />\n<a name=\"eachSeries\" />\n### eachSeries(arr, iterator, callback)\n\nThe same as each only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. This means the iterator functions will complete in order.\n\n\n---------------------------------------\n\n<a name=\"forEachLimit\" />\n<a name=\"eachLimit\" />\n### eachLimit(arr, limit, iterator, callback)\n\nThe same as each only no more than \"limit\" iterators will be simultaneously \nrunning at any time.\n\nNote that the items are not processed in batches, so there is no guarantee that\n the first \"limit\" iterator functions will complete before any others are \nstarted.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* limit - The maximum number of iterators to run at any time.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback(err) which must be called once it has \n completed. If no error has occured, the callback should be run without \n arguments or with an explicit null argument.\n* callback(err) - A callback which is called after all the iterator functions\n have finished, or an error has occurred.\n\n__Example__\n\n```js\n// Assume documents is an array of JSON objects and requestApi is a\n// function that interacts with a rate-limited REST api.\n\nasync.eachLimit(documents, 20, requestApi, function(err){\n // if any of the saves produced an error, err would equal that error\n});\n```\n\n---------------------------------------\n\n<a name=\"map\" />\n### map(arr, iterator, callback)\n\nProduces a new array of values by mapping each value in the given array through\nthe iterator function. The iterator is called with an item from the array and a\ncallback for when it has finished processing. The callback takes 2 arguments, \nan error and the transformed item from the array. If the iterator passes an\nerror to this callback, the main callback for the map function is immediately\ncalled with the error.\n\nNote, that since this function applies the iterator to each item in parallel\nthere is no guarantee that the iterator functions will complete in order, however\nthe results array will be in the same order as the original array.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback(err, transformed) which must be called once \n it has completed with an error (which can be null) and a transformed item.\n* callback(err, results) - A callback which is called after all the iterator\n functions have finished, or an error has occurred. Results is an array of the\n transformed items from the original array.\n\n__Example__\n\n```js\nasync.map(['file1','file2','file3'], fs.stat, function(err, results){\n // results is now an array of stats for each file\n});\n```\n\n---------------------------------------\n\n<a name=\"mapSeries\" />\n### mapSeries(arr, iterator, callback)\n\nThe same as map only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. The results array will be in the same order as the original.\n\n\n---------------------------------------\n\n<a name=\"mapLimit\" />\n### mapLimit(arr, limit, iterator, callback)\n\nThe same as map only no more than \"limit\" iterators will be simultaneously \nrunning at any time.\n\nNote that the items are not processed in batches, so there is no guarantee that\n the first \"limit\" iterator functions will complete before any others are \nstarted.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* limit - The maximum number of iterators to run at any time.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback(err, transformed) which must be called once \n it has completed with an error (which can be null) and a transformed item.\n* callback(err, results) - A callback which is called after all the iterator\n functions have finished, or an error has occurred. Results is an array of the\n transformed items from the original array.\n\n__Example__\n\n```js\nasync.mapLimit(['file1','file2','file3'], 1, fs.stat, function(err, results){\n // results is now an array of stats for each file\n});\n```\n\n---------------------------------------\n\n<a name=\"filter\" />\n### filter(arr, iterator, callback)\n\n__Alias:__ select\n\nReturns a new array of all the values which pass an async truth test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like fs.exists. This operation is\nperformed in parallel, but the results array will be in the same order as the\noriginal.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n The iterator is passed a callback(truthValue) which must be called with a \n boolean argument once it has completed.\n* callback(results) - A callback which is called after all the iterator\n functions have finished.\n\n__Example__\n\n```js\nasync.filter(['file1','file2','file3'], fs.exists, function(results){\n // results now equals an array of the existing files\n});\n```\n\n---------------------------------------\n\n<a name=\"filterSeries\" />\n### filterSeries(arr, iterator, callback)\n\n__alias:__ selectSeries\n\nThe same as filter only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. The results array will be in the same order as the original.\n\n---------------------------------------\n\n<a name=\"reject\" />\n### reject(arr, iterator, callback)\n\nThe opposite of filter. Removes values that pass an async truth test.\n\n---------------------------------------\n\n<a name=\"rejectSeries\" />\n### rejectSeries(arr, iterator, callback)\n\nThe same as reject, only the iterator is applied to each item in the array\nin series.\n\n\n---------------------------------------\n\n<a name=\"reduce\" />\n### reduce(arr, memo, iterator, callback)\n\n__aliases:__ inject, foldl\n\nReduces a list of values into a single value using an async iterator to return\neach successive step. Memo is the initial state of the reduction. This\nfunction only operates in series. For performance reasons, it may make sense to\nsplit a call to this function into a parallel map, then use the normal\nArray.prototype.reduce on the results. This function is for situations where\neach step in the reduction needs to be async, if you can get the data before\nreducing it then it's probably a good idea to do so.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* memo - The initial state of the reduction.\n* iterator(memo, item, callback) - A function applied to each item in the\n array to produce the next step in the reduction. The iterator is passed a\n callback(err, reduction) which accepts an optional error as its first \n argument, and the state of the reduction as the second. If an error is \n passed to the callback, the reduction is stopped and the main callback is \n immediately called with the error.\n* callback(err, result) - A callback which is called after all the iterator\n functions have finished. Result is the reduced value.\n\n__Example__\n\n```js\nasync.reduce([1,2,3], 0, function(memo, item, callback){\n // pointless async:\n process.nextTick(function(){\n callback(null, memo + item)\n });\n}, function(err, result){\n // result is now equal to the last value of memo, which is 6\n});\n```\n\n---------------------------------------\n\n<a name=\"reduceRight\" />\n### reduceRight(arr, memo, iterator, callback)\n\n__Alias:__ foldr\n\nSame as reduce, only operates on the items in the array in reverse order.\n\n\n---------------------------------------\n\n<a name=\"detect\" />\n### detect(arr, iterator, callback)\n\nReturns the first value in a list that passes an async truth test. The\niterator is applied in parallel, meaning the first iterator to return true will\nfire the detect callback with that result. That means the result might not be\nthe first item in the original array (in terms of order) that passes the test.\n\nIf order within the original array is important then look at detectSeries.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n The iterator is passed a callback(truthValue) which must be called with a \n boolean argument once it has completed.\n* callback(result) - A callback which is called as soon as any iterator returns\n true, or after all the iterator functions have finished. Result will be\n the first item in the array that passes the truth test (iterator) or the\n value undefined if none passed.\n\n__Example__\n\n```js\nasync.detect(['file1','file2','file3'], fs.exists, function(result){\n // result now equals the first file in the list that exists\n});\n```\n\n---------------------------------------\n\n<a name=\"detectSeries\" />\n### detectSeries(arr, iterator, callback)\n\nThe same as detect, only the iterator is applied to each item in the array\nin series. This means the result is always the first in the original array (in\nterms of array order) that passes the truth test.\n\n\n---------------------------------------\n\n<a name=\"sortBy\" />\n### sortBy(arr, iterator, callback)\n\nSorts a list by the results of running each value through an async iterator.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback(err, sortValue) which must be called once it\n has completed with an error (which can be null) and a value to use as the sort\n criteria.\n* callback(err, results) - A callback which is called after all the iterator\n functions have finished, or an error has occurred. Results is the items from\n the original array sorted by the values returned by the iterator calls.\n\n__Example__\n\n```js\nasync.sortBy(['file1','file2','file3'], function(file, callback){\n fs.stat(file, function(err, stats){\n callback(err, stats.mtime);\n });\n}, function(err, results){\n // results is now the original array of files sorted by\n // modified date\n});\n```\n\n---------------------------------------\n\n<a name=\"some\" />\n### some(arr, iterator, callback)\n\n__Alias:__ any\n\nReturns true if at least one element in the array satisfies an async test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like fs.exists. Once any iterator\ncall returns true, the main callback is immediately called.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n The iterator is passed a callback(truthValue) which must be called with a \n boolean argument once it has completed.\n* callback(result) - A callback which is called as soon as any iterator returns\n true, or after all the iterator functions have finished. Result will be\n either true or false depending on the values of the async tests.\n\n__Example__\n\n```js\nasync.some(['file1','file2','file3'], fs.exists, function(result){\n // if result is true then at least one of the files exists\n});\n```\n\n---------------------------------------\n\n<a name=\"every\" />\n### every(arr, iterator, callback)\n\n__Alias:__ all\n\nReturns true if every element in the array satisfies an async test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like fs.exists.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n The iterator is passed a callback(truthValue) which must be called with a \n boolean argument once it has completed.\n* callback(result) - A callback which is called after all the iterator\n functions have finished. Result will be either true or false depending on\n the values of the async tests.\n\n__Example__\n\n```js\nasync.every(['file1','file2','file3'], fs.exists, function(result){\n // if result is true then every file exists\n});\n```\n\n---------------------------------------\n\n<a name=\"concat\" />\n### concat(arr, iterator, callback)\n\nApplies an iterator to each item in a list, concatenating the results. Returns the\nconcatenated list. The iterators are called in parallel, and the results are\nconcatenated as they return. There is no guarantee that the results array will\nbe returned in the original order of the arguments passed to the iterator function.\n\n__Arguments__\n\n* arr - An array to iterate over\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback(err, results) which must be called once it \n has completed with an error (which can be null) and an array of results.\n* callback(err, results) - A callback which is called after all the iterator\n functions have finished, or an error has occurred. Results is an array containing\n the concatenated results of the iterator function.\n\n__Example__\n\n```js\nasync.concat(['dir1','dir2','dir3'], fs.readdir, function(err, files){\n // files is now a list of filenames that exist in the 3 directories\n});\n```\n\n---------------------------------------\n\n<a name=\"concatSeries\" />\n### concatSeries(arr, iterator, callback)\n\nSame as async.concat, but executes in series instead of parallel.\n\n\n## Control Flow\n\n<a name=\"series\" />\n### series(tasks, [callback])\n\nRun an array of functions in series, each one running once the previous\nfunction has completed. If any functions in the series pass an error to its\ncallback, no more functions are run and the callback for the series is\nimmediately called with the value of the error. Once the tasks have completed,\nthe results are passed to the final callback as an array.\n\nIt is also possible to use an object instead of an array. Each property will be\nrun as a function and the results will be passed to the final callback as an object\ninstead of an array. This can be a more readable way of handling results from\nasync.series.\n\n\n__Arguments__\n\n* tasks - An array or object containing functions to run, each function is passed\n a callback(err, result) it must call on completion with an error (which can\n be null) and an optional result value.\n* callback(err, results) - An optional callback to run once all the functions\n have completed. This function gets a results array (or object) containing all \n the result arguments passed to the task callbacks.\n\n__Example__\n\n```js\nasync.series([\n function(callback){\n // do some stuff ...\n callback(null, 'one');\n },\n function(callback){\n // do some more stuff ...\n callback(null, 'two');\n }\n],\n// optional callback\nfunction(err, results){\n // results is now equal to ['one', 'two']\n});\n\n\n// an example using an object instead of an array\nasync.series({\n one: function(callback){\n setTimeout(function(){\n callback(null, 1);\n }, 200);\n },\n two: function(callback){\n setTimeout(function(){\n callback(null, 2);\n }, 100);\n }\n},\nfunction(err, results) {\n // results is now equal to: {one: 1, two: 2}\n});\n```\n\n---------------------------------------\n\n<a name=\"parallel\" />\n### parallel(tasks, [callback])\n\nRun an array of functions in parallel, without waiting until the previous\nfunction has completed. If any of the functions pass an error to its\ncallback, the main callback is immediately called with the value of the error.\nOnce the tasks have completed, the results are passed to the final callback as an\narray.\n\nIt is also possible to use an object instead of an array. Each property will be\nrun as a function and the results will be passed to the final callback as an object\ninstead of an array. This can be a more readable way of handling results from\nasync.parallel.\n\n\n__Arguments__\n\n* tasks - An array or object containing functions to run, each function is passed \n a callback(err, result) it must call on completion with an error (which can\n be null) and an optional result value.\n* callback(err, results) - An optional callback to run once all the functions\n have completed. This function gets a results array (or object) containing all \n the result arguments passed to the task callbacks.\n\n__Example__\n\n```js\nasync.parallel([\n function(callback){\n setTimeout(function(){\n callback(null, 'one');\n }, 200);\n },\n function(callback){\n setTimeout(function(){\n callback(null, 'two');\n }, 100);\n }\n],\n// optional callback\nfunction(err, results){\n // the results array will equal ['one','two'] even though\n // the second function had a shorter timeout.\n});\n\n\n// an example using an object instead of an array\nasync.parallel({\n one: function(callback){\n setTimeout(function(){\n callback(null, 1);\n }, 200);\n },\n two: function(callback){\n setTimeout(function(){\n callback(null, 2);\n }, 100);\n }\n},\nfunction(err, results) {\n // results is now equals to: {one: 1, two: 2}\n});\n```\n\n---------------------------------------\n\n<a name=\"parallel\" />\n### parallelLimit(tasks, limit, [callback])\n\nThe same as parallel only the tasks are executed in parallel with a maximum of \"limit\" \ntasks executing at any time.\n\nNote that the tasks are not executed in batches, so there is no guarantee that \nthe first \"limit\" tasks will complete before any others are started.\n\n__Arguments__\n\n* tasks - An array or object containing functions to run, each function is passed \n a callback(err, result) it must call on completion with an error (which can\n be null) and an optional result value.\n* limit - The maximum number of tasks to run at any time.\n* callback(err, results) - An optional callback to run once all the functions\n have completed. This function gets a results array (or object) containing all \n the result arguments passed to the task callbacks.\n\n---------------------------------------\n\n<a name=\"whilst\" />\n### whilst(test, fn, callback)\n\nRepeatedly call fn, while test returns true. Calls the callback when stopped,\nor an error occurs.\n\n__Arguments__\n\n* test() - synchronous truth test to perform before each execution of fn.\n* fn(callback) - A function to call each time the test passes. The function is\n passed a callback(err) which must be called once it has completed with an \n optional error argument.\n* callback(err) - A callback which is called after the test fails and repeated\n execution of fn has stopped.\n\n__Example__\n\n```js\nvar count = 0;\n\nasync.whilst(\n function () { return count < 5; },\n function (callback) {\n count++;\n setTimeout(callback, 1000);\n },\n function (err) {\n // 5 seconds have passed\n }\n);\n```\n\n---------------------------------------\n\n<a name=\"doWhilst\" />\n### doWhilst(fn, test, callback)\n\nThe post check version of whilst. To reflect the difference in the order of operations `test` and `fn` arguments are switched. `doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript.\n\n---------------------------------------\n\n<a name=\"until\" />\n### until(test, fn, callback)\n\nRepeatedly call fn, until test returns true. Calls the callback when stopped,\nor an error occurs.\n\nThe inverse of async.whilst.\n\n---------------------------------------\n\n<a name=\"doUntil\" />\n### doUntil(fn, test, callback)\n\nLike doWhilst except the test is inverted. Note the argument ordering differs from `until`.\n\n---------------------------------------\n\n<a name=\"forever\" />\n### forever(fn, callback)\n\nCalls the asynchronous function 'fn' repeatedly, in series, indefinitely.\nIf an error is passed to fn's callback then 'callback' is called with the\nerror, otherwise it will never be called.\n\n---------------------------------------\n\n<a name=\"waterfall\" />\n### waterfall(tasks, [callback])\n\nRuns an array of functions in series, each passing their results to the next in\nthe array. However, if any of the functions pass an error to the callback, the\nnext function is not executed and the main callback is immediately called with\nthe error.\n\n__Arguments__\n\n* tasks - An array of functions to run, each function is passed a \n callback(err, result1, result2, ...) it must call on completion. The first\n argument is an error (which can be null) and any further arguments will be \n passed as arguments in order to the next task.\n* callback(err, [results]) - An optional callback to run once all the functions\n have completed. This will be passed the results of the last task's callback.\n\n\n\n__Example__\n\n```js\nasync.waterfall([\n function(callback){\n callback(null, 'one', 'two');\n },\n function(arg1, arg2, callback){\n callback(null, 'three');\n },\n function(arg1, callback){\n // arg1 now equals 'three'\n callback(null, 'done');\n }\n], function (err, result) {\n // result now equals 'done' \n});\n```\n\n---------------------------------------\n<a name=\"compose\" />\n### compose(fn1, fn2...)\n\nCreates a function which is a composition of the passed asynchronous\nfunctions. Each function consumes the return value of the function that\nfollows. Composing functions f(), g() and h() would produce the result of\nf(g(h())), only this version uses callbacks to obtain the return values.\n\nEach function is executed with the `this` binding of the composed function.\n\n__Arguments__\n\n* functions... - the asynchronous functions to compose\n\n\n__Example__\n\n```js\nfunction add1(n, callback) {\n setTimeout(function () {\n callback(null, n + 1);\n }, 10);\n}\n\nfunction mul3(n, callback) {\n setTimeout(function () {\n callback(null, n * 3);\n }, 10);\n}\n\nvar add1mul3 = async.compose(mul3, add1);\n\nadd1mul3(4, function (err, result) {\n // result now equals 15\n});\n```\n\n---------------------------------------\n<a name=\"applyEach\" />\n### applyEach(fns, args..., callback)\n\nApplies the provided arguments to each function in the array, calling the\ncallback after all functions have completed. If you only provide the first\nargument then it will return a function which lets you pass in the\narguments as if it were a single function call.\n\n__Arguments__\n\n* fns - the asynchronous functions to all call with the same arguments\n* args... - any number of separate arguments to pass to the function\n* callback - the final argument should be the callback, called when all\n functions have completed processing\n\n\n__Example__\n\n```js\nasync.applyEach([enableSearch, updateSchema], 'bucket', callback);\n\n// partial application example:\nasync.each(\n buckets,\n async.applyEach([enableSearch, updateSchema]),\n callback\n);\n```\n\n---------------------------------------\n\n<a name=\"applyEachSeries\" />\n### applyEachSeries(arr, iterator, callback)\n\nThe same as applyEach only the functions are applied in series.\n\n---------------------------------------\n\n<a name=\"queue\" />\n### queue(worker, concurrency)\n\nCreates a queue object with the specified concurrency. Tasks added to the\nqueue will be processed in parallel (up to the concurrency limit). If all\nworkers are in progress, the task is queued until one is available. Once\na worker has completed a task, the task's callback is called.\n\n__Arguments__\n\n* worker(task, callback) - An asynchronous function for processing a queued\n task, which must call its callback(err) argument when finished, with an \n optional error as an argument.\n* concurrency - An integer for determining how many worker functions should be\n run in parallel.\n\n__Queue objects__\n\nThe queue object returned by this function has the following properties and\nmethods:\n\n* length() - a function returning the number of items waiting to be processed.\n* concurrency - an integer for determining how many worker functions should be\n run in parallel. This property can be changed after a queue is created to\n alter the concurrency on-the-fly.\n* push(task, [callback]) - add a new task to the queue, the callback is called\n once the worker has finished processing the task.\n instead of a single task, an array of tasks can be submitted. the respective callback is used for every task in the list.\n* unshift(task, [callback]) - add a new task to the front of the queue.\n* saturated - a callback that is called when the queue length hits the concurrency and further tasks will be queued\n* empty - a callback that is called when the last item from the queue is given to a worker\n* drain - a callback that is called when the last item from the queue has returned from the worker\n\n__Example__\n\n```js\n// create a queue object with concurrency 2\n\nvar q = async.queue(function (task, callback) {\n console.log('hello ' + task.name);\n callback();\n}, 2);\n\n\n// assign a callback\nq.drain = function() {\n console.log('all items have been processed');\n}\n\n// add some items to the queue\n\nq.push({name: 'foo'}, function (err) {\n console.log('finished processing foo');\n});\nq.push({name: 'bar'}, function (err) {\n console.log('finished processing bar');\n});\n\n// add some items to the queue (batch-wise)\n\nq.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function (err) {\n console.log('finished processing bar');\n});\n\n// add some items to the front of the queue\n\nq.unshift({name: 'bar'}, function (err) {\n console.log('finished processing bar');\n});\n```\n\n---------------------------------------\n\n<a name=\"cargo\" />\n### cargo(worker, [payload])\n\nCreates a cargo object with the specified payload. Tasks added to the\ncargo will be processed altogether (up to the payload limit). If the\nworker is in progress, the task is queued until it is available. Once\nthe worker has completed some tasks, each callback of those tasks is called.\n\n__Arguments__\n\n* worker(tasks, callback) - An asynchronous function for processing an array of\n queued tasks, which must call its callback(err) argument when finished, with \n an optional error as an argument.\n* payload - An optional integer for determining how many tasks should be\n processed per round; if omitted, the default is unlimited.\n\n__Cargo objects__\n\nThe cargo object returned by this function has the following properties and\nmethods:\n\n* length() - a function returning the number of items waiting to be processed.\n* payload - an integer for determining how many tasks should be\n process per round. This property can be changed after a cargo is created to\n alter the payload on-the-fly.\n* push(task, [callback]) - add a new task to the queue, the callback is called\n once the worker has finished processing the task.\n instead of a single task, an array of tasks can be submitted. the respective callback is used for every task in the list.\n* saturated - a callback that is called when the queue length hits the concurrency and further tasks will be queued\n* empty - a callback that is called when the last item from the queue is given to a worker\n* drain - a callback that is called when the last item from the queue has returned from the worker\n\n__Example__\n\n```js\n// create a cargo object with payload 2\n\nvar cargo = async.cargo(function (tasks, callback) {\n for(var i=0; i<tasks.length; i++){\n console.log('hello ' + tasks[i].name);\n }\n callback();\n}, 2);\n\n\n// add some items\n\ncargo.push({name: 'foo'}, function (err) {\n console.log('finished processing foo');\n});\ncargo.push({name: 'bar'}, function (err) {\n console.log('finished processing bar');\n});\ncargo.push({name: 'baz'}, function (err) {\n console.log('finished processing baz');\n});\n```\n\n---------------------------------------\n\n<a name=\"auto\" />\n### auto(tasks, [callback])\n\nDetermines the best order for running functions based on their requirements.\nEach function can optionally depend on other functions being completed first,\nand each function is run as soon as its requirements are satisfied. If any of\nthe functions pass an error to their callback, that function will not complete\n(so any other functions depending on it will not run) and the main callback\nwill be called immediately with the error. Functions also receive an object\ncontaining the results of functions which have completed so far.\n\nNote, all functions are called with a results object as a second argument, \nso it is unsafe to pass functions in the tasks object which cannot handle the\nextra argument. For example, this snippet of code:\n\n```js\nasync.auto({\n readData: async.apply(fs.readFile, 'data.txt', 'utf-8')\n}, callback);\n```\n\nwill have the effect of calling readFile with the results object as the last\nargument, which will fail:\n\n```js\nfs.readFile('data.txt', 'utf-8', cb, {});\n```\n\nInstead, wrap the call to readFile in a function which does not forward the \nresults object:\n\n```js\nasync.auto({\n readData: function(cb, results){\n fs.readFile('data.txt', 'utf-8', cb);\n }\n}, callback);\n```\n\n__Arguments__\n\n* tasks - An object literal containing named functions or an array of\n requirements, with the function itself the last item in the array. The key\n used for each function or array is used when specifying requirements. The \n function receives two arguments: (1) a callback(err, result) which must be \n called when finished, passing an error (which can be null) and the result of \n the function's execution, and (2) a results object, containing the results of\n the previously executed functions.\n* callback(err, results) - An optional callback which is called when all the\n tasks have been completed. The callback will receive an error as an argument\n if any tasks pass an error to their callback. Results will always be passed\n\tbut if an error occurred, no other tasks will be performed, and the results\n\tobject will only contain partial results.\n \n\n__Example__\n\n```js\nasync.auto({\n get_data: function(callback){\n // async code to get some data\n },\n make_folder: function(callback){\n // async code to create a directory to store a file in\n // this is run at the same time as getting the data\n },\n write_file: ['get_data', 'make_folder', function(callback){\n // once there is some data and the directory exists,\n // write the data to a file in the directory\n callback(null, filename);\n }],\n email_link: ['write_file', function(callback, results){\n // once the file is written let's email a link to it...\n // results.write_file contains the filename returned by write_file.\n }]\n});\n```\n\nThis is a fairly trivial example, but to do this using the basic parallel and\nseries functions would look like this:\n\n```js\nasync.parallel([\n function(callback){\n // async code to get some data\n },\n function(callback){\n // async code to create a directory to store a file in\n // this is run at the same time as getting the data\n }\n],\nfunction(err, results){\n async.series([\n function(callback){\n // once there is some data and the directory exists,\n // write the data to a file in the directory\n },\n function(callback){\n // once the file is written let's email a link to it...\n }\n ]);\n});\n```\n\nFor a complicated series of async tasks using the auto function makes adding\nnew tasks much easier and makes the code more readable.\n\n\n---------------------------------------\n\n<a name=\"iterator\" />\n### iterator(tasks)\n\nCreates an iterator function which calls the next function in the array,\nreturning a continuation to call the next one after that. It's also possible to\n'peek' the next iterator by doing iterator.next().\n\nThis function is used internally by the async module but can be useful when\nyou want to manually control the flow of functions in series.\n\n__Arguments__\n\n* tasks - An array of functions to run.\n\n__Example__\n\n```js\nvar iterator = async.iterator([\n function(){ sys.p('one'); },\n function(){ sys.p('two'); },\n function(){ sys.p('three'); }\n]);\n\nnode> var iterator2 = iterator();\n'one'\nnode> var iterator3 = iterator2();\n'two'\nnode> iterator3();\n'three'\nnode> var nextfn = iterator2.next();\nnode> nextfn();\n'three'\n```\n\n---------------------------------------\n\n<a name=\"apply\" />\n### apply(function, arguments..)\n\nCreates a continuation function with some arguments already applied, a useful\nshorthand when combined with other control flow functions. Any arguments\npassed to the returned function are added to the arguments originally passed\nto apply.\n\n__Arguments__\n\n* function - The function you want to eventually apply all arguments to.\n* arguments... - Any number of arguments to automatically apply when the\n continuation is called.\n\n__Example__\n\n```js\n// using apply\n\nasync.parallel([\n async.apply(fs.writeFile, 'testfile1', 'test1'),\n async.apply(fs.writeFile, 'testfile2', 'test2'),\n]);\n\n\n// the same process without using apply\n\nasync.parallel([\n function(callback){\n fs.writeFile('testfile1', 'test1', callback);\n },\n function(callback){\n fs.writeFile('testfile2', 'test2', callback);\n }\n]);\n```\n\nIt's possible to pass any number of additional arguments when calling the\ncontinuation:\n\n```js\nnode> var fn = async.apply(sys.puts, 'one');\nnode> fn('two', 'three');\none\ntwo\nthree\n```\n\n---------------------------------------\n\n<a name=\"nextTick\" />\n### nextTick(callback)\n\nCalls the callback on a later loop around the event loop. In node.js this just\ncalls process.nextTick, in the browser it falls back to setImmediate(callback)\nif available, otherwise setTimeout(callback, 0), which means other higher priority\nevents may precede the execution of the callback.\n\nThis is used internally for browser-compatibility purposes.\n\n__Arguments__\n\n* callback - The function to call on a later loop around the event loop.\n\n__Example__\n\n```js\nvar call_order = [];\nasync.nextTick(function(){\n call_order.push('two');\n // call_order now equals ['one','two']\n});\ncall_order.push('one')\n```\n\n<a name=\"times\" />\n### times(n, callback)\n\nCalls the callback n times and accumulates results in the same manner\nyou would use with async.map.\n\n__Arguments__\n\n* n - The number of times to run the function.\n* callback - The function to call n times.\n\n__Example__\n\n```js\n// Pretend this is some complicated async factory\nvar createUser = function(id, callback) {\n callback(null, {\n id: 'user' + id\n })\n}\n// generate 5 users\nasync.times(5, function(n, next){\n createUser(n, function(err, user) {\n next(err, user)\n })\n}, function(err, users) {\n // we should now have 5 users\n});\n```\n\n<a name=\"timesSeries\" />\n### timesSeries(n, callback)\n\nThe same as times only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. The results array will be in the same order as the original.\n\n\n## Utils\n\n<a name=\"memoize\" />\n### memoize(fn, [hasher])\n\nCaches the results of an async function. When creating a hash to store function\nresults against, the callback is omitted from the hash and an optional hash\nfunction can be used.\n\nThe cache of results is exposed as the `memo` property of the function returned\nby `memoize`.\n\n__Arguments__\n\n* fn - the function you to proxy and cache results from.\n* hasher - an optional function for generating a custom hash for storing\n results, it has all the arguments applied to it apart from the callback, and\n must be synchronous.\n\n__Example__\n\n```js\nvar slow_fn = function (name, callback) {\n // do something\n callback(null, result);\n};\nvar fn = async.memoize(slow_fn);\n\n// fn can now be used as if it were slow_fn\nfn('some name', function () {\n // callback\n});\n```\n\n<a name=\"unmemoize\" />\n### unmemoize(fn)\n\nUndoes a memoized function, reverting it to the original, unmemoized\nform. Comes handy in tests.\n\n__Arguments__\n\n* fn - the memoized function\n\n<a name=\"log\" />\n### log(function, arguments)\n\nLogs the result of an async function to the console. Only works in node.js or\nin browsers that support console.log and console.error (such as FF and Chrome).\nIf multiple arguments are returned from the async function, console.log is\ncalled on each argument in order.\n\n__Arguments__\n\n* function - The function you want to eventually apply all arguments to.\n* arguments... - Any number of arguments to apply to the function.\n\n__Example__\n\n```js\nvar hello = function(name, callback){\n setTimeout(function(){\n callback(null, 'hello ' + name);\n }, 1000);\n};\n```\n```js\nnode> async.log(hello, 'world');\n'hello world'\n```\n\n---------------------------------------\n\n<a name=\"dir\" />\n### dir(function, arguments)\n\nLogs the result of an async function to the console using console.dir to\ndisplay the properties of the resulting object. Only works in node.js or\nin browsers that support console.dir and console.error (such as FF and Chrome).\nIf multiple arguments are returned from the async function, console.dir is\ncalled on each argument in order.\n\n__Arguments__\n\n* function - The function you want to eventually apply all arguments to.\n* arguments... - Any number of arguments to apply to the function.\n\n__Example__\n\n```js\nvar hello = function(name, callback){\n setTimeout(function(){\n callback(null, {hello: name});\n }, 1000);\n};\n```\n```js\nnode> async.dir(hello, 'world');\n{hello: 'world'}\n```\n\n---------------------------------------\n\n<a name=\"noConflict\" />\n### noConflict()\n\nChanges the value of async back to its original value, returning a reference to the\nasync object.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/caolan/async/issues"},"_attachments":{}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/b4/8a/454c55f95fa0351cca479761f5ff792f8f7ab4448f2b1399a3ac3778a60a293f71feeda29678ce15b71712b0803f9866e92c0cbc4549b4807435dcf7a767 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/b4/8a/454c55f95fa0351cca479761f5ff792f8f7ab4448f2b1399a3ac3778a60a293f71feeda29678ce15b71712b0803f9866e92c0cbc4549b4807435dcf7a767
new file mode 100644
index 0000000000..0866e68dc0
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/b4/8a/454c55f95fa0351cca479761f5ff792f8f7ab4448f2b1399a3ac3778a60a293f71feeda29678ce15b71712b0803f9866e92c0cbc4549b4807435dcf7a767
Binary files differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/c9/a2/065bb9746e574a541af061b7880948d30e47db1dc356c314bd934b0169894d696e833bd63b6c53cb973d14b8064b5b04177c402e347770ddfbbbc7c906cb b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/c9/a2/065bb9746e574a541af061b7880948d30e47db1dc356c314bd934b0169894d696e833bd63b6c53cb973d14b8064b5b04177c402e347770ddfbbbc7c906cb
new file mode 100644
index 0000000000..d51082f7d5
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/c9/a2/065bb9746e574a541af061b7880948d30e47db1dc356c314bd934b0169894d696e833bd63b6c53cb973d14b8064b5b04177c402e347770ddfbbbc7c906cb
Binary files differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/cd/eb/0f5065be03e89547a33e064d911969953c45eb05df664ca4d537b970dc9f768123463a6f75ce6b836d50ee73c18ac7a25e763f2b9869612cdbf427195d4b b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/cd/eb/0f5065be03e89547a33e064d911969953c45eb05df664ca4d537b970dc9f768123463a6f75ce6b836d50ee73c18ac7a25e763f2b9869612cdbf427195d4b
new file mode 100644
index 0000000000..df235e9e79
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/cd/eb/0f5065be03e89547a33e064d911969953c45eb05df664ca4d537b970dc9f768123463a6f75ce6b836d50ee73c18ac7a25e763f2b9869612cdbf427195d4b
@@ -0,0 +1 @@
+{"_id":"test-repo-url-ssh","_rev":"2-cc990259d480838e6847fb520d305a9e","name":"test-repo-url-ssh","description":"Test repo with non-github ssh repository url","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"test-repo-url-ssh","version":"0.0.1","description":"Test repo with non-github ssh repository url","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git@gitlab.com:evanlucas/test-repo-url-ssh.git"},"author":{"name":"Evan Lucas","email":"evanlucas@me.com"},"license":"ISC","_id":"test-repo-url-ssh@0.0.1","dist":{"shasum":"2a77307e108bfb57107c4c334abb5ef5395dc68a","tarball":"http://localhost:1337/test-repo-url-ssh/-/test-repo-url-ssh-0.0.1.tgz"},"_from":".","_npmVersion":"1.4.2","_npmUser":{"name":"evanlucas","email":"evanlucas@me.com"},"maintainers":[{"name":"evanlucas","email":"evanlucas@me.com"}],"directories":{}}},"readme":"ERROR: No README data found!","maintainers":[{"name":"evanlucas","email":"evanlucas@me.com"}],"time":{"0.0.1":"2014-02-16T18:50:00.142Z"},"readmeFilename":"","_attachments":{}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/d4/45/ed72e65ed0b9fec5a6a41794caadda951ba79a0541648e259c8021b3fc96487d2caedf869ac142b4b0f31998c436f171d98a9a1740e3ac8eebb5c1103c53 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/d4/45/ed72e65ed0b9fec5a6a41794caadda951ba79a0541648e259c8021b3fc96487d2caedf869ac142b4b0f31998c436f171d98a9a1740e3ac8eebb5c1103c53
new file mode 100644
index 0000000000..11b928e5cd
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/d4/45/ed72e65ed0b9fec5a6a41794caadda951ba79a0541648e259c8021b3fc96487d2caedf869ac142b4b0f31998c436f171d98a9a1740e3ac8eebb5c1103c53
@@ -0,0 +1 @@
+{"_id":"checker","_rev":"23-39ff9491581c529b8b828651a196c7a3","name":"checker","description":"Checker is the collection of common abstract methods for validatiors and setters.","dist-tags":{"latest":"0.5.2"},"versions":{"0.0.0":{"name":"checker","version":"0.0.0","description":"","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":"","license":"MIT","readme":"ERROR: No README data found!","_id":"checker@0.0.0","dist":{"shasum":"6a7a3977bbe770560d4fcc86eb3a32a52c9b368d","tarball":"http://localhost:1337/checker/-/checker-0.0.0.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"kael","email":"i@kael.me"},"maintainers":[{"name":"kael","email":"i@kael.me"}],"directories":{}},"0.2.1":{"name":"checker","version":"0.2.1","description":"Checker is the collection of common abstract methods for validatiors and setters.","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/kaelzhang/node-checker.git"},"keywords":["checker","validator","validate","setter"],"author":{"name":"kael"},"license":"MIT","bugs":{"url":"https://github.com/kaelzhang/node-checker/issues"},"devDependencies":{"mocha":"~1.13.0","chai":"~1.8.0"},"dependencies":{"async":"~0.2.9"},"readme":"[![Build Status](https://travis-ci.org/kaelzhang/node-checker.png?branch=master)](https://travis-ci.org/kaelzhang/node-checker)\n\n(THIS DOCUMENTAION IS NOT FINISHED YET.)\n\n# checker\n\nChecker is the collection of common abstract node.js methods for validatiors and setters.\n\t\n# Usage\n```sh\nnpm install checker --save\n```\n\n```js\nvar checker = require('checker');\n```\n\n# Synopsis\n\n```js\nchecker(schema, options).check(data, callback);\n```\n\n# Validation, Error Messages\n\n## Simple synchronous validators\n\n```js\nvar schema = {\n\tusername: {\n\t\tvalidator: function(value){\n\t\t\treturn /^[a-zA-Z0-9]{6,}$/.test(value);\n\t\t},\n\t\tmessage: 'Username must only contain letters, numbers; Username must contain at least 6 charactors'\n\t}\n};\n\nvar c = checker(schema);\n\nc.check({\n\tusername: 'a'\n}, function(err){\n\tif(err){\n\t\tconsole.log(err); // Then, `schema.username.message` will be displayed.\n\t}\n});\n```\n\n## Regular expressions as validators\n\nThe error hint of the example above is bad, because we want to know the very certain reason why we are wrong.\n\nThe `schema` below is equivalent to the one of the previous section:\n\n```js\n{\n\tvalidator: [\n\t\tfunction(value){\n\t\t\treturn value && value.length > 5;\n\t\t}, \n\t\t/^[a-zA-Z0-9]+$/\n\t],\n\tmessage: [\n\t\t'Username must contain at least 6 charactors', \n\t\t'Username must only contain letters and numbers'\n\t];\n}\n```\n\n## Asynchronous validators\n\n```js\n{\n\tvalidator: function(value){\n\t\tvar done = this.async();\n\t\t// this is an async method, and takes sooooo long...\n\t\tremote_check(value, function(err){\n\t\t\tdone(err); // `err` will pass to the `callback`\n\t\t});\n\t}\n}\n```\n\n\n# Programmatical Details\n\n## Options\n\n#### options.default_message `String`\n\nDefault error message\n\n#### options.parallel `Boolean=false`\n\n#### options.limit `Boolean=false`\n\n#### options.check_all `Boolean=false`\n\n\n\n## Schema Structures \n\n```js\n{\n\t<name>: <rule>\n}\n```\n\n\nWhere `rule` might contains (all properties are optional):\n\n#### validator \n\n- `RegExp` The regular exp that input must matches against\n- `Function` Validation function. If `arguments.length === 3`, it will be considered as an async methods\n- `Array.<RegExp|Function>` Group of validations. Asks will check each validator one by one. If validation fails, the rest validators will be skipped.\n- See sections above for details\n\t\n#### setter `Function|Array.<Function>`\n\nSee sections above for details.\n\n#### message `String`\n\nDefault error message\n\n#### default: `String`\n","_id":"checker@0.2.1","dist":{"shasum":"f25a07a1429cd9cee4a668f19fa99fa7e380deda","tarball":"http://localhost:1337/checker/-/checker-0.2.1.tgz"},"maintainers":[{"name":"kael","email":"i@kael.me"}],"directories":{}},"0.3.1":{"name":"checker","version":"0.3.1","description":"Checker is the collection of common abstract methods for validatiors and setters.","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/kaelzhang/node-checker.git"},"keywords":["checker","validator","validate","setter"],"author":{"name":"kael"},"license":"MIT","bugs":{"url":"https://github.com/kaelzhang/node-checker/issues"},"devDependencies":{"mocha":"~1.13.0","chai":"~1.8.0"},"dependencies":{"async":"~0.2.9"},"readme":"[![Build Status](https://travis-ci.org/kaelzhang/node-checker.png?branch=master)](https://travis-ci.org/kaelzhang/node-checker)\n\n(THIS DOCUMENTAION IS NOT FINISHED YET.)\n\n# checker\n\nChecker is the collection of common abstract node.js methods for validatiors and setters.\n\t\n# Usage\n```sh\nnpm install checker --save\n```\n\n```js\nvar checker = require('checker');\n```\n\n# Synopsis\n\n```js\nchecker(schema, options).check(data, callback);\n```\n\n# Validation, Error Messages\n\n## Simple synchronous validators\n\n```js\nvar schema = {\n\tusername: {\n\t\tvalidator: function(value){\n\t\t\treturn /^[a-zA-Z0-9]{6,}$/.test(value);\n\t\t},\n\t\tmessage: 'Username must only contain letters, numbers; Username must contain at least 6 charactors'\n\t}\n};\n\nvar c = checker(schema);\n\nc.check({\n\tusername: 'a'\n}, function(err){\n\tif(err){\n\t\tconsole.log(err); // Then, `schema.username.message` will be displayed.\n\t}\n});\n```\n\n## Regular expressions as validators\n\nThe error hint of the example above is bad, because we want to know the very certain reason why we are wrong.\n\nThe `schema` below is equivalent to the one of the previous section:\n\n```js\n{\n\tvalidator: [\n\t\tfunction(value){\n\t\t\treturn value && value.length > 5;\n\t\t}, \n\t\t/^[a-zA-Z0-9]+$/\n\t],\n\tmessage: [\n\t\t'Username must contain at least 6 charactors', \n\t\t'Username must only contain letters and numbers'\n\t];\n}\n```\n\n## Asynchronous validators\n\n```js\n{\n\tvalidator: function(value){\n\t\tvar done = this.async();\n\t\t// this is an async method, and takes sooooo long...\n\t\tremote_check(value, function(err){\n\t\t\tdone(err); // `err` will pass to the `callback`\n\t\t});\n\t}\n}\n```\n\n\n# Programmatical Details\n\n## Options\n\n#### options.default_message `String`\n\nDefault error message\n\n#### options.parallel `Boolean=false`\n\n#### options.limit `Boolean=false`\n\n#### options.check_all `Boolean=false`\n\n\n\n## Schema Structures \n\n```js\n{\n\t<name>: <rule>\n}\n```\n\n\nWhere `rule` might contains (all properties are optional):\n\n#### validator \n\n- `RegExp` The regular exp that input must matches against\n- `Function` Validation function. If `arguments.length === 3`, it will be considered as an async methods\n- `Array.<RegExp|Function>` Group of validations. Asks will check each validator one by one. If validation fails, the rest validators will be skipped.\n- See sections above for details\n\t\n#### setter `Function|Array.<Function>`\n\nSee sections above for details.\n\n#### message `String`\n\nDefault error message\n\n#### default: `String`\n","_id":"checker@0.3.1","dist":{"shasum":"c285c3f3c29c4186156d9e94945ad3892e64c739","tarball":"http://localhost:1337/checker/-/checker-0.3.1.tgz"},"maintainers":[{"name":"kael","email":"i@kael.me"}],"directories":{}},"0.3.2":{"name":"checker","version":"0.3.2","description":"Checker is the collection of common abstract methods for validatiors and setters.","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/kaelzhang/node-checker.git"},"keywords":["checker","validator","validate","setter"],"author":{"name":"kael"},"license":"MIT","bugs":{"url":"https://github.com/kaelzhang/node-checker/issues"},"devDependencies":{"mocha":"~1.13.0","chai":"~1.8.0"},"dependencies":{"async":"~0.2.9"},"readme":"[![Build Status](https://travis-ci.org/kaelzhang/node-checker.png?branch=master)](https://travis-ci.org/kaelzhang/node-checker)\n\n# checker\n\nChecker is the collection of common abstract node.js methods for validatiors and setters.\n\t\n# Usage\n```sh\nnpm install checker --save\n```\n\n```js\nvar checker = require('checker');\n```\n\n# Synopsis\n\n```js\nchecker(schema, options).check(data, function(err, value, details){\n});\n```\n\n### err `mixed`\n\n### parsed `Object`\n\nThe cleaned and parsed `data`.\n\n### details `Object`\n\n```\n{\n\t<name>: <detail>\n}\n```\n\n- `detail.value` `mixed` the parsed value\n- `detail.is_default` `Boolean` if the current property is defined in `schema`, but the input data doesn't have it, then the value will be `true`\n- `detail.is_cooked` `Boolean` if there're any setters, it will be `true`\n- `detail.origin` the origin value of the property\n\n\n# Validation, Error Messages\n\n## Simple synchronous validators\n\n```js\nvar schema = {\n\tusername: {\n\t\tvalidator: function(value){\n\t\t\treturn /^[a-zA-Z0-9]{6,}$/.test(value);\n\t\t},\n\t\tmessage: 'Username must only contain letters, numbers; ' \n\t\t\t+ 'Username must contain at least 6 charactors'\n\t}\n};\n\nvar c = checker(schema);\n\nc.check({\n\tusername: 'a'\n}, function(err){\n\tif(err){\n\t\tconsole.log(err); // Then, `schema.username.message` will be displayed.\n\t}\n});\n```\n\n## Regular expressions as validators\n\nThe error hint of the example above is bad, because we want to know the very certain reason why we are wrong.\n\nThe `schema` below is equivalent to the one of the previous section:\n\n```js\n{\n\tvalidator: [\n\t\tfunction(value){\n\t\t\treturn value && value.length > 5;\n\t\t}, \n\t\t/^[a-zA-Z0-9]+$/\n\t],\n\tmessage: [\n\t\t'Username must contain at least 6 charactors', \n\t\t'Username must only contain letters and numbers'\n\t];\n}\n```\n\n## Asynchronous validators\n\n```js\n{\n\tvalidator: function(value){\n\t\tvar done = this.async();\n\t\t// this is an async method, and takes sooooo long...\n\t\tremote_check(value, function(err){\n\t\t\tdone(err); // `err` will pass to the `callback`\n\t\t});\n\t}\n}\n```\n\n\n# Programmatical Details\n\n## Options\n\n#### options.default_message `String`\n\nDefault error message\n\n#### options.parallel `Boolean=false`\n\nBy default, `checker` will check each properties in series, \n\n#### options.limit `Boolean=false`\n\nIf `options.limit` is `true` and a certain property of the input data is not defined in the `schema`, the property will be removed.\n\nDefault to `false`.\n\n#### options.check_all `Boolean=false`\n\nNot implemented yet.\n\n#### options.context `Object`\n\nSee sections below.\n\n## Schema Structures \n\n```js\n{\n\t<name>: <rule>\n}\n```\n\n\nWhere `rule` might contains (all properties are optional):\n\n#### validator \n\n- `RegExp` The regular exp that input must matches against\n- `Function` Validation function. If `arguments.length === 3`, it will be considered as an async methods\n- `Array.<RegExp|Function>` Group of validations. Asks will check each validator one by one. If validation fails, the rest validators will be skipped.\n- See sections above for details\n\t\n#### setter `Function|Array.<Function>`\n\nSee sections above for details.\n\n#### message `String`\n\nDefault error message\n\n#### default: `String`\n\n\n## `this` object inside validators and setters\n\nInside validators(`rule.validator`) and setters(`rule.setter`), there're several opaque methods\n\n### this.async()\n\nGenerate the `done` function to make the validator or setter become an async method.\n\n\tvar done = this.async();\n\t\nFor details, see the demos above.\n\n### this.get(name)\n\nThe value of the input object by name\n\n### this.set(name, value)\n\nChange the value of the specified property of the input object.\n\n```\n{\n\tusername: {\n\t},\n\t\n\tpassword: {\n\t\tvalidator: function(value){\n\t\t\tvar username = this.get('username');\n\t\t\t\n\t\t\t// Guests are welcome even without passwords\n\t\t\treturn value || username === 'guest';\n\t\t}\n\t}\n}\n```\n\nNotice that you'd better use `this.get` and `this.set` with the `options.parallel` setting as `false`(the default value). Otherwise, it might encounter unexpected situations, because the value of the object is ever changing due to the setter.\n\nSo, use them wisely.\n\n### this.context `Object`\n\nThe `options.context` itself.\n\n\n\n","_id":"checker@0.3.2","dist":{"shasum":"bc4b84036a5699c609e3c627923cb87d8058a79d","tarball":"http://localhost:1337/checker/-/checker-0.3.2.tgz"},"maintainers":[{"name":"kael","email":"i@kael.me"}],"directories":{}},"0.4.2":{"name":"checker","version":"0.4.2","description":"Checker is the collection of common abstract methods for validatiors and setters.","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/kaelzhang/node-checker.git"},"keywords":["checker","validator","validate","setter"],"author":{"name":"kael"},"license":"MIT","bugs":{"url":"https://github.com/kaelzhang/node-checker/issues"},"devDependencies":{"mocha":"~1.13.0","chai":"~1.8.0"},"dependencies":{"async":"~0.2.9"},"readme":"[![Build Status](https://travis-ci.org/kaelzhang/node-checker.png?branch=master)](https://travis-ci.org/kaelzhang/node-checker)\n\n# checker\n\nChecker is the collection of common abstract node.js methods for validatiors and setters.\n\t\n# Usage\n```sh\nnpm install checker --save\n```\n\n```js\nvar checker = require('checker');\n```\n\n# Synopsis\n\n```js\nchecker(schema, options).check(data, function(err, value, details){\n});\n```\n\n### err `mixed`\n\n### results `Object`\n\nThe parsed object.\n\n### details `Object`\n\n```\n{\n\t<name>: <detail>\n}\n```\n\n- `detail.value` `mixed` the parsed value\n- `detail.is_default` `Boolean` if the current property is defined in `schema`, but the input data doesn't have it, then the value will be `true`\n- `detail.is_cooked` `Boolean` if there're any setters, it will be `true`\n- `detail.origin` the origin value of the property\n- `detail.error` the error belongs to the current property. If not exists, it will be `null`\n\n\n# Validation, Error Messages\n\n## Simple synchronous validators\n\n```js\nvar schema = {\n\tusername: {\n\t\tvalidator: function(value){\n\t\t\treturn /^[a-zA-Z0-9]{6,}$/.test(value);\n\t\t},\n\t\tmessage: 'Username must only contain letters, numbers; ' \n\t\t\t+ 'Username must contain at least 6 charactors'\n\t}\n};\n\nvar c = checker(schema);\n\nc.check({\n\tusername: 'a'\n}, function(err){\n\tif(err){\n\t\tconsole.log(err); // Then, `schema.username.message` will be displayed.\n\t}\n});\n```\n\n## Regular expressions as validators\n\nThe error hint of the example above is bad, because we want to know the very certain reason why we are wrong.\n\nThe `schema` below is equivalent to the one of the previous section:\n\n```js\n{\n\tvalidator: [\n\t\tfunction(value){\n\t\t\treturn value && value.length > 5;\n\t\t}, \n\t\t/^[a-zA-Z0-9]+$/\n\t],\n\tmessage: [\n\t\t'Username must contain at least 6 charactors', \n\t\t'Username must only contain letters and numbers'\n\t];\n}\n```\n\n## Asynchronous validators\n\n```js\n{\n\tvalidator: function(value){\n\t\tvar done = this.async();\n\t\t// this is an async method, and takes sooooo long...\n\t\tremote_check(value, function(err){\n\t\t\tdone(err); // `err` will pass to the `callback`\n\t\t});\n\t}\n}\n```\n\n\n# Programmatical Details\n\n## Options\n\n#### options.default_message `String`\n\nDefault error message\n\n#### options.parallel `Boolean=false`\n\nBy default, `checker` will check each properties in series, \n\n#### options.limit `Boolean=false`\n\nIf `options.limit` is `true` and a certain property of the input data is not defined in the `schema`, the property will be removed.\n\nDefault to `false`.\n\n#### options.check_all `Boolean=false`\n\nBy default, `checker` will exit immediately at the first error. But if `options.check_all` is `true`, it will parse all the properties, and collect every possible error.\n\n#### options.context `Object`\n\nSee sections below.\n\n## Schema Structures \n\n```js\n{\n\t<name>: <rule>\n}\n```\n\n\nWhere `rule` might contains (all properties are optional):\n\n#### validator \n\n- `RegExp` The regular exp that input must matches against\n- `Function` Validation function. If `arguments.length === 3`, it will be considered as an async methods\n- `Array.<RegExp|Function>` Group of validations. Asks will check each validator one by one. If validation fails, the rest validators will be skipped.\n- See sections above for details\n\t\n#### setter `Function|Array.<Function>`\n\nSee sections above for details.\n\n#### message `String`\n\nDefault error message\n\n#### default: `String`\n\n\n## `this` object inside validators and setters\n\nInside validators(`rule.validator`) and setters(`rule.setter`), there're several opaque methods\n\n### this.async()\n\nGenerate the `done` function to make the validator or setter become an async method.\n\n\tvar done = this.async();\n\t\nFor details, see the demos above.\n\n### this.get(name)\n\nThe value of the input object by name\n\n### this.set(name, value)\n\nChange the value of the specified property of the input object.\n\n```\n{\n\tusername: {\n\t},\n\t\n\tpassword: {\n\t\tvalidator: function(value){\n\t\t\tvar username = this.get('username');\n\t\t\t\n\t\t\t// Guests are welcome even without passwords\n\t\t\treturn value || username === 'guest';\n\t\t}\n\t}\n}\n```\n\nNotice that you'd better use `this.get` and `this.set` with the `options.parallel` setting as `false`(the default value). Otherwise, it might encounter unexpected situations, because the value of the object is ever changing due to the setter.\n\nSo, use them wisely.\n\n### this.context `Object`\n\nThe `options.context` itself.\n\n\n\n","_id":"checker@0.4.2","dist":{"shasum":"7b033fdad0f000f88302ff1f5a8e59d8f466580e","tarball":"http://localhost:1337/checker/-/checker-0.4.2.tgz"},"maintainers":[{"name":"kael","email":"i@kael.me"}],"directories":{}},"0.5.1":{"name":"checker","version":"0.5.1","description":"Checker is the collection of common abstract methods for validatiors and setters.","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/kaelzhang/node-checker.git"},"keywords":["checker","validator","validate","setter"],"author":{"name":"kael"},"license":"MIT","bugs":{"url":"https://github.com/kaelzhang/node-checker/issues"},"devDependencies":{"mocha":"~1.13.0","chai":"~1.8.0"},"dependencies":{"async":"~0.2.9"},"readme":"[![Build Status](https://travis-ci.org/kaelzhang/node-checker.png?branch=master)](https://travis-ci.org/kaelzhang/node-checker)\n\n# checker\n\nChecker is the collection of common abstract node.js methods for validatiors and setters.\n\t\n# Usage\n```sh\nnpm install checker --save\n```\n\n```js\nvar checker = require('checker');\n```\n\n# Synopsis\n\n```js\nchecker(schema, options).check(data, function(err, value, details){\n});\n```\n\n### err `mixed`\n\n### results `Object`\n\nThe parsed object.\n\n### details `Object`\n\n```\n{\n\t<name>: <detail>\n}\n```\n\n- `detail.value` `mixed` the parsed value\n- `detail.is_default` `Boolean` if the current property is defined in `schema`, but the input data doesn't have it, then the value will be `true`\n- `detail.is_cooked` `Boolean` if there're any setters, it will be `true`\n- `detail.origin` the origin value of the property\n- `detail.error` the error belongs to the current property. If not exists, it will be `null`\n\n\n# Validation, Error Messages\n\n## Simple synchronous validators\n\n```js\nvar schema = {\n\tusername: {\n\t\tvalidator: function(value){\n\t\t\treturn /^[a-zA-Z0-9]{6,}$/.test(value);\n\t\t},\n\t\tmessage: 'Username must only contain letters, numbers; ' \n\t\t\t+ 'Username must contain at least 6 charactors'\n\t}\n};\n\nvar c = checker(schema);\n\nc.check({\n\tusername: 'a'\n}, function(err){\n\tif(err){\n\t\tconsole.log(err); // Then, `schema.username.message` will be displayed.\n\t}\n});\n```\n\n## Regular expressions as validators\n\nThe error hint of the example above is bad, because we want to know the very certain reason why we are wrong.\n\nThe `schema` below is equivalent to the one of the previous section:\n\n```js\n{\n\tvalidator: [\n\t\tfunction(value){\n\t\t\treturn value && value.length > 5;\n\t\t}, \n\t\t/^[a-zA-Z0-9]+$/\n\t],\n\tmessage: [\n\t\t'Username must contain at least 6 charactors', \n\t\t'Username must only contain letters and numbers'\n\t];\n}\n```\n\n## Asynchronous validators\n\n```js\n{\n\tvalidator: function(value){\n\t\tvar done = this.async();\n\t\t// this is an async method, and takes sooooo long...\n\t\tremote_check(value, function(err){\n\t\t\tdone(err); // `err` will pass to the `callback`\n\t\t});\n\t}\n}\n```\n\n\n# Programmatical Details\n\n## Options\n\n#### options.default_message `String`\n\nDefault error message\n\n#### options.parallel `Boolean=false`\n\nBy default, `checker` will check each properties in series, \n\n#### options.limit `Boolean=false`\n\nIf `options.limit` is `true` and a certain property of the input data is not defined in the `schema`, the property will be removed.\n\nDefault to `false`.\n\n#### options.check_all `Boolean=false`\n\nBy default, `checker` will exit immediately at the first error. But if `options.check_all` is `true`, it will parse all the properties, and collect every possible error.\n\n#### options.context `Object`\n\nSee sections below.\n\n## Schema Structures \n\n```js\n{\n\t<name>: <rule>\n}\n```\n\n\nWhere `rule` might contains (all properties are optional):\n\n#### validator \n\n- `RegExp` The regular exp that input must matches against\n- `Function` Validation function. If `arguments.length === 3`, it will be considered as an async methods\n- `Array.<RegExp|Function>` Group of validations. Asks will check each validator one by one. If validation fails, the rest validators will be skipped.\n- See sections above for details\n\t\n#### setter `Function|Array.<Function>`\n\nSee sections above for details.\n\n#### message `String`\n\nDefault error message\n\n#### default: `String`\n\n\n## `this` object inside validators and setters\n\nInside validators(`rule.validator`) and setters(`rule.setter`), there're several opaque methods\n\n### this.async()\n\nGenerate the `done` function to make the validator or setter become an async method.\n\n\tvar done = this.async();\n\t\nFor details, see the demos above.\n\n### this.get(name)\n\nThe value of the input object by name\n\n### this.set(name, value)\n\nChange the value of the specified property of the input object.\n\n```\n{\n\tusername: {\n\t},\n\t\n\tpassword: {\n\t\tvalidator: function(value){\n\t\t\tvar username = this.get('username');\n\t\t\t\n\t\t\t// Guests are welcome even without passwords\n\t\t\treturn value || username === 'guest';\n\t\t}\n\t}\n}\n```\n\nNotice that you'd better use `this.get` and `this.set` with the `options.parallel` setting as `false`(the default value). Otherwise, it might encounter unexpected situations, because the value of the object is ever changing due to the setter.\n\nSo, use them wisely.\n\n### this.context `Object`\n\nThe `options.context` itself.\n\n\n\n","readmeFilename":"README.md","_id":"checker@0.5.1","dist":{"shasum":"fef66f63d231ae2910f7dd7df291912a1e95e5d7","tarball":"http://localhost:1337/checker/-/checker-0.5.1.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"kael","email":"i@kael.me"},"maintainers":[{"name":"kael","email":"i@kael.me"}],"directories":{}},"0.5.2":{"name":"checker","version":"0.5.2","description":"Checker is the collection of common abstract methods for validatiors and setters.","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/kaelzhang/node-checker.git"},"keywords":["checker","validator","validate","setter"],"author":{"name":"kael"},"license":"MIT","bugs":{"url":"https://github.com/kaelzhang/node-checker/issues"},"devDependencies":{"mocha":"~1.13.0","chai":"~1.8.0"},"dependencies":{"async":"~0.2.9"},"readme":"[![NPM version](https://badge.fury.io/js/checker.png)](http://badge.fury.io/js/checker)\n[![Build Status](https://travis-ci.org/kaelzhang/node-checker.png?branch=master)](https://travis-ci.org/kaelzhang/node-checker)\n[![Dependency Status](https://gemnasium.com/kaelzhang/node-checker.png)](https://gemnasium.com/kaelzhang/node-checker)\n\n# checker\n\nChecker is the collection of common abstract node.js methods for validatiors and setters.\n\t\n# Usage\n```sh\nnpm install checker --save\n```\n\n```js\nvar checker = require('checker');\n```\n\n# Synopsis\n\n```js\nchecker(schema, options).check(data, function(err, value, details){\n});\n```\n\n### err `mixed`\n\n### results `Object`\n\nThe parsed object.\n\n### details `Object`\n\n```\n{\n\t<name>: <detail>\n}\n```\n\n- `detail.value` `mixed` the parsed value\n- `detail.is_default` `Boolean` if the current property is defined in `schema`, but the input data doesn't have it, then the value will be `true`\n- `detail.is_cooked` `Boolean` if there're any setters, it will be `true`\n- `detail.origin` the origin value of the property\n- `detail.error` the error belongs to the current property. If not exists, it will be `null`\n\n\n# Validation, Error Messages\n\n## Simple synchronous validators\n\n```js\nvar schema = {\n\tusername: {\n\t\tvalidator: function(value){\n\t\t\treturn /^[a-zA-Z0-9]{6,}$/.test(value);\n\t\t},\n\t\tmessage: 'Username must only contain letters, numbers; ' \n\t\t\t+ 'Username must contain at least 6 charactors'\n\t}\n};\n\nvar c = checker(schema);\n\nc.check({\n\tusername: 'a'\n}, function(err){\n\tif(err){\n\t\tconsole.log(err); // Then, `schema.username.message` will be displayed.\n\t}\n});\n```\n\n## Regular expressions as validators\n\nThe error hint of the example above is bad, because we want to know the very certain reason why we are wrong.\n\nThe `schema` below is equivalent to the one of the previous section:\n\n```js\n{\n\tvalidator: [\n\t\tfunction(value){\n\t\t\treturn value && value.length > 5;\n\t\t}, \n\t\t/^[a-zA-Z0-9]+$/\n\t],\n\tmessage: [\n\t\t'Username must contain at least 6 charactors', \n\t\t'Username must only contain letters and numbers'\n\t];\n}\n```\n\n## Asynchronous validators\n\n```js\n{\n\tvalidator: function(value){\n\t\tvar done = this.async();\n\t\t// this is an async method, and takes sooooo long...\n\t\tremote_check(value, function(err){\n\t\t\tdone(err); // `err` will pass to the `callback`\n\t\t});\n\t}\n}\n```\n\n\n# Programmatical Details\n\n## Options\n\n#### options.default_message `String`\n\nDefault error message\n\n#### options.parallel `Boolean=false`\n\nBy default, `checker` will check each properties in series, \n\n#### options.limit `Boolean=false`\n\nIf `options.limit` is `true` and a certain property of the input data is not defined in the `schema`, the property will be removed.\n\nDefault to `false`.\n\n#### options.check_all `Boolean=false`\n\nBy default, `checker` will exit immediately at the first error. But if `options.check_all` is `true`, it will parse all the properties, and collect every possible error.\n\n#### options.context `Object`\n\nSee sections below.\n\n## Schema Structures \n\n```js\n{\n\t<name>: <rule>\n}\n```\n\n\nWhere `rule` might contains (all properties are optional):\n\n#### validator \n\n- `RegExp` The regular exp that input must matches against\n- `Function` Validation function. If `arguments.length === 3`, it will be considered as an async methods\n- `Array.<RegExp|Function>` Group of validations. Asks will check each validator one by one. If validation fails, the rest validators will be skipped.\n- See sections above for details\n\t\n#### setter `Function|Array.<Function>`\n\nSee sections above for details.\n\n#### message `String`\n\nDefault error message\n\n#### default: `String`\n\n\n## `this` object inside validators and setters\n\nInside validators(`rule.validator`) and setters(`rule.setter`), there're several opaque methods\n\n### this.async()\n\nGenerate the `done` function to make the validator or setter become an async method.\n\n\tvar done = this.async();\n\t\nFor details, see the demos above.\n\n### this.get(name)\n\nThe value of the input object by name\n\n### this.set(name, value)\n\nChange the value of the specified property of the input object.\n\n```\n{\n\tusername: {\n\t},\n\t\n\tpassword: {\n\t\tvalidator: function(value){\n\t\t\tvar username = this.get('username');\n\t\t\t\n\t\t\t// Guests are welcome even without passwords\n\t\t\treturn value || username === 'guest';\n\t\t}\n\t}\n}\n```\n\nNotice that you'd better use `this.get` and `this.set` with the `options.parallel` setting as `false`(the default value). Otherwise, it might encounter unexpected situations, because the value of the object is ever changing due to the setter.\n\nSo, use them wisely.\n\n### this.context `Object`\n\nThe `options.context` itself.\n\n\n\n","readmeFilename":"README.md","_id":"checker@0.5.2","dist":{"shasum":"c27a36bf00f3a7a3d24a8fbc7853f06fce4e9c86","tarball":"http://localhost:1337/checker/-/checker-0.5.2.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"kael","email":"i@kael.me"},"maintainers":[{"name":"kael","email":"i@kael.me"}],"directories":{}}},"readme":"ERROR: No README data found!","maintainers":[{"name":"kael","email":"i@kael.me"}],"time":{"modified":"2013-10-17T03:05:51.738Z","created":"2013-10-07T13:53:26.836Z","0.0.0":"2013-10-07T14:00:18.706Z","0.2.1":"2013-10-08T13:10:06.237Z","0.3.1":"2013-10-08T14:00:33.456Z","0.3.2":"2013-10-08T14:36:07.451Z","0.4.2":"2013-10-09T10:02:48.711Z","0.5.1":"2013-10-09T16:43:25.048Z","0.5.2":"2013-10-17T03:05:51.738Z"},"author":{"name":"kael"},"repository":{"type":"git","url":"git://github.com/kaelzhang/node-checker.git"},"_attachments":{}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/dc/2a/a4df42cd435623f4c2c3e274fa081cc942ff45dcfa98cdf4a9324b6a21c3721c34bb97e6809ee28051fc10f57749cff60aa970a1e38c7a6c354a9403554e b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/dc/2a/a4df42cd435623f4c2c3e274fa081cc942ff45dcfa98cdf4a9324b6a21c3721c34bb97e6809ee28051fc10f57749cff60aa970a1e38c7a6c354a9403554e
new file mode 100644
index 0000000000..fa7bb7f467
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/dc/2a/a4df42cd435623f4c2c3e274fa081cc942ff45dcfa98cdf4a9324b6a21c3721c34bb97e6809ee28051fc10f57749cff60aa970a1e38c7a6c354a9403554e
@@ -0,0 +1 @@
+{"@foo/bar":"write","@foo/util":"read"} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/dc/68/8298544a3867cf399b04cc60c38c6519dae6096c5ba1917bb78a489baa9d6bad39649e16e00367e7cd02ac14ba7cd64f3acd56e21b984630f823ad9c9663 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/dc/68/8298544a3867cf399b04cc60c38c6519dae6096c5ba1917bb78a489baa9d6bad39649e16e00367e7cd02ac14ba7cd64f3acd56e21b984630f823ad9c9663
new file mode 100644
index 0000000000..4293310ab4
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/dc/68/8298544a3867cf399b04cc60c38c6519dae6096c5ba1917bb78a489baa9d6bad39649e16e00367e7cd02ac14ba7cd64f3acd56e21b984630f823ad9c9663
@@ -0,0 +1 @@
+{"name":"add-named-update-protocol-port","versions":{"0.0.0":{"name":"add-named-update-protocol-port","version":"0.0.0","dist":{"tarball":"https://localhost:1338/registry/add-named-update-protocol-port/-/add-named-update-protocol-port-0.0.0.tgz","shasum":"356a192b7913b04c54574d18c28d46e6395428ab"}}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/e7/06/de9d8e6ce16152be537cbccdf26321b3d678394ce42fb56aa4e69a37aba9d54df284700d066f7e6d005e461ab41d220fd6f268ff889e405809108a7b8676 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/e7/06/de9d8e6ce16152be537cbccdf26321b3d678394ce42fb56aa4e69a37aba9d54df284700d066f7e6d005e461ab41d220fd6f268ff889e405809108a7b8676
new file mode 100644
index 0000000000..a04cd09944
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/e7/06/de9d8e6ce16152be537cbccdf26321b3d678394ce42fb56aa4e69a37aba9d54df284700d066f7e6d005e461ab41d220fd6f268ff889e405809108a7b8676
@@ -0,0 +1 @@
+{"latest":"2.0.0","a":"0.0.2","b":"0.6.0"} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/e8/36/89a9c21ac93c2a0efc7e536925004e528bd3bfeba708cf5216db999c5efce0d7138a7e6ecedb125e43ba2aeb475d5958a2ca31f48c6a1442f164e90a3a22 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/e8/36/89a9c21ac93c2a0efc7e536925004e528bd3bfeba708cf5216db999c5efce0d7138a7e6ecedb125e43ba2aeb475d5958a2ca31f48c6a1442f164e90a3a22
new file mode 100644
index 0000000000..643beaec78
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/e8/36/89a9c21ac93c2a0efc7e536925004e528bd3bfeba708cf5216db999c5efce0d7138a7e6ecedb125e43ba2aeb475d5958a2ca31f48c6a1442f164e90a3a22
@@ -0,0 +1 @@
+{"username":"igotauthed"} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/ed/fc/2d79d0d55bf4ea02b74ecc3657ea833bc6d0578adb2e1f5ae0d733b09a484f8e7287901578c7bdaa5d6fd30ac4dea48773a610ca6ee1e09e31f6147e921d b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/ed/fc/2d79d0d55bf4ea02b74ecc3657ea833bc6d0578adb2e1f5ae0d733b09a484f8e7287901578c7bdaa5d6fd30ac4dea48773a610ca6ee1e09e31f6147e921d
new file mode 100644
index 0000000000..34df07b38c
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/ed/fc/2d79d0d55bf4ea02b74ecc3657ea833bc6d0578adb2e1f5ae0d733b09a484f8e7287901578c7bdaa5d6fd30ac4dea48773a610ca6ee1e09e31f6147e921d
@@ -0,0 +1 @@
+{"_id":"optimist","_rev":"147-993915d1034a2506e97797cd2d1bd171","name":"optimist","dist-tags":{"latest":"0.6.0"},"versions":{"0.0.1":{"name":"optimist","version":"0.0.1","descrption":"Light-weight option parsing","modules":{"index":"./optimist.js"},"repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"engine":["node >=0.1.100"],"_id":"optimist@0.0.1","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://localhost:1337/optimist/-/optimist-0.0.1.tgz","shasum":"be66175d8781290f1672ae96858814c88274c41c"},"directories":{}},"0.0.2":{"name":"optimist","version":"0.0.2","description":"Light-weight option parsing","modules":{"index":"./optimist.js"},"repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"engine":["node >=0.1.100"],"_id":"optimist@0.0.2","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://localhost:1337/optimist/-/optimist-0.0.2.tgz","shasum":"594ac6711315fa0d06887e3833567ff3fc7de4e1"},"directories":{}},"0.0.4":{"name":"optimist","version":"0.0.4","description":"Light-weight option parsing with an argv hash. No optstrings attached.","modules":{"index":"./lib/optimist.js"},"repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"license":"MIT/X11","engine":["node >=0.1.100"],"_id":"optimist@0.0.4","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://localhost:1337/optimist/-/optimist-0.0.4.tgz","shasum":"6d5a2516e5b9a4808a8477cd62086ef829f07f4e"},"directories":{}},"0.0.5":{"name":"optimist","version":"0.0.5","description":"Light-weight option parsing with an argv hash. No optstrings attached.","modules":{"index":"./lib/optimist.js"},"repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"license":"MIT/X11","engine":["node >=0.1.100"],"_id":"optimist@0.0.5","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://localhost:1337/optimist/-/optimist-0.0.5.tgz","shasum":"79f3bd7caf7c9002ace2a0600df80761fa459ea7"},"directories":{}},"0.0.6":{"name":"optimist","version":"0.0.6","description":"Light-weight option parsing with an argv hash. No optstrings attached.","modules":{"index":"./lib/optimist.js"},"repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"license":"MIT/X11","engine":["node >=0.1.100"],"_id":"optimist@0.0.6","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://localhost:1337/optimist/-/optimist-0.0.6.tgz","shasum":"1e00197a8f5c010ed02c9bed629af28422c51bdf"},"directories":{}},"0.0.7":{"name":"optimist","version":"0.0.7","description":"Light-weight option parsing with an argv hash. No optstrings attached.","modules":{"index":"./lib/optimist.js"},"repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"license":"MIT/X11","engine":["node >=0.1.100"],"_id":"optimist@0.0.7","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.10","_nodeVersion":"v0.2.5","dist":{"shasum":"5ffc1dce7ddfdfe57a61fabb2644d7bda57722b2","tarball":"http://localhost:1337/optimist/-/optimist-0.0.7.tgz"},"directories":{}},"0.1.0":{"name":"optimist","version":"0.1.0","description":"Light-weight option parsing with an argv hash. No optstrings attached.","modules":{"index":"./lib/optimist.js"},"repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"license":"MIT/X11","engine":["node >=0.1.100"],"_id":"optimist@0.1.0","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.10","_nodeVersion":"v0.2.5","dist":{"shasum":"b523820a36a51c35bf6098d2dc4b5aa001e0f541","tarball":"http://localhost:1337/optimist/-/optimist-0.1.0.tgz"},"directories":{}},"0.1.1":{"name":"optimist","version":"0.1.1","description":"Light-weight option parsing with an argv hash. No optstrings attached.","modules":{"index":"./lib/optimist.js"},"repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"license":"MIT/X11","engine":["node >=0.1.100"],"_id":"optimist@0.1.1","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.10","_nodeVersion":"v0.2.5","dist":{"shasum":"ed43041fe2196e9f36b9c0f75e301526ab751baa","tarball":"http://localhost:1337/optimist/-/optimist-0.1.1.tgz"},"directories":{}},"0.1.2":{"name":"optimist","version":"0.1.2","description":"Light-weight option parsing with an argv hash. No optstrings attached.","modules":{"index":"./lib/optimist.js"},"repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"keywords":["argument","option","parser","parsing"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":["node >=0.1.100"],"_id":"optimist@0.1.2","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.12-1","_nodeVersion":"v0.2.5","dist":{"shasum":"489780fb5350e8429e99a9e6e1305124eb3bbc8e","tarball":"http://localhost:1337/optimist/-/optimist-0.1.2.tgz"},"directories":{}},"0.1.3":{"name":"optimist","version":"0.1.3","description":"Light-weight option parsing with an argv hash. No optstrings attached.","modules":{"index":"./lib/optimist.js"},"repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"keywords":["argument","option","parser","parsing"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":["node >=0.1.100"],"_id":"optimist@0.1.3","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.12-1","_nodeVersion":"v0.2.5","dist":{"shasum":"90389a7e6807b5798b41c4b4112403a9691b98ff","tarball":"http://localhost:1337/optimist/-/optimist-0.1.3.tgz"},"directories":{}},"0.1.4":{"name":"optimist","version":"0.1.4","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index","repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"keywords":["argument","option","parser","parsing"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":["node >=0.1.100"],"_id":"optimist@0.1.4","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.2.16","_nodeVersion":"v0.3.8-pre","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"92496e1e378b46a24b6c027a612637cfc5fb543e","tarball":"http://localhost:1337/optimist/-/optimist-0.1.4.tgz"}},"0.1.5":{"name":"optimist","version":"0.1.5","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index","repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"keywords":["argument","option","parser","parsing"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":["node >=0.1.100"],"_id":"optimist@0.1.5","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.2.16","_nodeVersion":"v0.3.8-pre","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"f5b85dd7ba7928224db268f668419ffb1e7d2cec","tarball":"http://localhost:1337/optimist/-/optimist-0.1.5.tgz"}},"0.1.6":{"name":"optimist","version":"0.1.6","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index","repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"keywords":["argument","option","parser","parsing"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":["node >=0.1.100"],"_id":"optimist@0.1.6","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.2.16","_nodeVersion":"v0.3.8-pre","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"0f2f671dfec3365509dc335f098158aa90c80100","tarball":"http://localhost:1337/optimist/-/optimist-0.1.6.tgz"}},"0.1.7":{"name":"optimist","version":"0.1.7","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","repository":{"type":"git","url":"git://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":["node >=0.1.100"],"_id":"optimist@0.1.7","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.15","_nodeVersion":"v0.4.2","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"f83a9644634d446bf3934518257d55dd6d08e183","tarball":"http://localhost:1337/optimist/-/optimist-0.1.7.tgz"}},"0.1.8":{"name":"optimist","version":"0.1.8","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","repository":{"type":"git","url":"git://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":["node >=0.1.100"],"_id":"optimist@0.1.8","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.15","_nodeVersion":"v0.4.2","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"58d0adde9d61db67dfbe2c7467da8abf9c86bc94","tarball":"http://localhost:1337/optimist/-/optimist-0.1.8.tgz"}},"0.1.9":{"name":"optimist","version":"0.1.9","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","repository":{"type":"git","url":"git://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":["node >=0.1.100"],"dependencies":{},"devDependencies":{},"_id":"optimist@0.1.9","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.1rc8","_nodeVersion":"v0.4.2","_defaultsLoaded":true,"dist":{"shasum":"d88fd79743a88960a418f5754b3b2157252447cc","tarball":"http://localhost:1337/optimist/-/optimist-0.1.9.tgz"},"directories":{}},"0.0.3":{"name":"optimist","version":"0.0.3","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./optimist.js","repository":{"type":"git","url":"git://github.com/substack/node-optimist.git"},"license":"MIT/X11","engine":["node >=0.1.100"],"dependencies":{},"devDependencies":{},"_id":"optimist@0.0.3","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.6","_nodeVersion":"v0.4.8-pre","_defaultsLoaded":true,"dist":{"shasum":"323a5c625b708e0197b72c106aef6444ada0c515","tarball":"http://localhost:1337/optimist/-/optimist-0.0.3.tgz"},"scripts":{},"directories":{}},"0.2.0":{"name":"optimist","version":"0.2.0","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","repository":{"type":"git","url":"git://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"dependencies":{},"devDependencies":{},"_id":"optimist@0.2.0","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.3","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"1cb5b0e727009370f324765e2a5245ac0d806bfd","tarball":"http://localhost:1337/optimist/-/optimist-0.2.0.tgz"},"scripts":{},"directories":{}},"0.2.1":{"name":"optimist","version":"0.2.1","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","repository":{"type":"git","url":"git://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"dependencies":{},"devDependencies":{},"_id":"optimist@0.2.1","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.3","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"80a2d75b660d467f673599dcbc69c113f289554a","tarball":"http://localhost:1337/optimist/-/optimist-0.2.1.tgz"},"scripts":{},"directories":{}},"0.2.2":{"name":"optimist","version":"0.2.2","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","directories":{"lib":".","test":"test","example":"examples"},"dependencies":{"wordwrap":">=0.0.1 <0.1"},"devDependencies":{"expresso":"=0.7.x"},"repository":{"type":"git","url":"git://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"_id":"optimist@0.2.2","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.3","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"a6bb06ff1f8229a12ee9abcb8160eee35e629ef8","tarball":"http://localhost:1337/optimist/-/optimist-0.2.2.tgz"},"scripts":{}},"0.2.3":{"name":"optimist","version":"0.2.3","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","directories":{"lib":".","test":"test","example":"examples"},"dependencies":{"wordwrap":">=0.0.1 <0.1"},"devDependencies":{"expresso":"=0.7.x"},"repository":{"type":"git","url":"git://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"_id":"optimist@0.2.3","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.3","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"dc259cc0e5d73e1f3fcc2dea3526e52f19ed740c","tarball":"http://localhost:1337/optimist/-/optimist-0.2.3.tgz"},"scripts":{}},"0.2.4":{"name":"optimist","version":"0.2.4","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","directories":{"lib":".","test":"test","example":"examples"},"dependencies":{"wordwrap":">=0.0.1 <0.1"},"devDependencies":{"hashish":"0.0.x","expresso":"=0.7.x"},"repository":{"type":"git","url":"git://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"_id":"optimist@0.2.4","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.10","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"9d543b3444fe127e8c01891c11a38d20b886317b","tarball":"http://localhost:1337/optimist/-/optimist-0.2.4.tgz"},"scripts":{}},"0.2.5":{"name":"optimist","version":"0.2.5","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","directories":{"lib":".","test":"test","example":"examples"},"dependencies":{"wordwrap":">=0.0.1 <0.1"},"devDependencies":{"hashish":"0.0.x","expresso":"=0.7.x"},"repository":{"type":"git","url":"git://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"_id":"optimist@0.2.5","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.10","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"50e0127b8443da18f4fdb756aaca446f1c65d136","tarball":"http://localhost:1337/optimist/-/optimist-0.2.5.tgz"},"scripts":{}},"0.2.6":{"name":"optimist","version":"0.2.6","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","directories":{"lib":".","test":"test","example":"examples"},"dependencies":{"wordwrap":">=0.0.1 <0.1"},"devDependencies":{"hashish":"0.0.x","expresso":"=0.7.x"},"repository":{"type":"git","url":"git://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"_id":"optimist@0.2.6","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.10","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"c15b750c98274ea175d241b745edf4ddc88f177b","tarball":"http://localhost:1337/optimist/-/optimist-0.2.6.tgz"},"scripts":{}},"0.2.7":{"name":"optimist","version":"0.2.7","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","directories":{"lib":".","test":"test","example":"examples"},"dependencies":{"wordwrap":">=0.0.1 <0.1.0"},"devDependencies":{"hashish":"0.0.x","expresso":"0.7.x"},"repository":{"type":"git","url":"git://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"optimist@0.2.7","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.99","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"62945bcc760643d918a5c7649ade86e662144024","tarball":"http://localhost:1337/optimist/-/optimist-0.2.7.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.2.8":{"name":"optimist","version":"0.2.8","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","directories":{"lib":".","test":"test","example":"examples"},"dependencies":{"wordwrap":">=0.0.1 <0.1.0"},"devDependencies":{"hashish":"0.0.x","expresso":"0.7.x"},"scripts":{"test":"expresso"},"repository":{"type":"git","url":"git://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"optimist@0.2.8","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.99","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"e981ab7e268b457948593b55674c099a815cac31","tarball":"http://localhost:1337/optimist/-/optimist-0.2.8.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.3.0":{"name":"optimist","version":"0.3.0","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","directories":{"lib":".","test":"test","example":"examples"},"dependencies":{"wordwrap":">=0.0.1 <0.1.0"},"devDependencies":{"hashish":"0.0.x","expresso":"0.7.x"},"scripts":{"test":"expresso"},"repository":{"type":"git","url":"git://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"optimist@0.3.0","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"4458c1f02acf1e5c9ece36ce2fd4d338e56ee0f6","tarball":"http://localhost:1337/optimist/-/optimist-0.3.0.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.3.1":{"name":"optimist","version":"0.3.1","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","directories":{"lib":".","test":"test","example":"examples"},"dependencies":{"wordwrap":">=0.0.1 <0.1.0"},"devDependencies":{"hashish":"0.0.x","expresso":"0.7.x"},"scripts":{"test":"expresso"},"repository":{"type":"git","url":"git://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"optimist@0.3.1","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"6680d30560193af5a55eb64394883ed7bcb98f2e","tarball":"http://localhost:1337/optimist/-/optimist-0.3.1.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.3.3":{"name":"optimist","version":"0.3.3","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","directories":{"lib":".","test":"test","example":"example"},"dependencies":{"wordwrap":"~0.0.2"},"devDependencies":{"hashish":"~0.0.4","tap":"~0.2.4"},"scripts":{"test":"tap ./test/*.js"},"repository":{"type":"git","url":"git://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"optimist@0.3.3","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"d75701d48f37fe0e6f06f88e7b0cf0882a3ce394","tarball":"http://localhost:1337/optimist/-/optimist-0.3.3.tgz"},"readme":"","maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.3.4":{"name":"optimist","version":"0.3.4","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","directories":{"lib":".","test":"test","example":"example"},"dependencies":{"wordwrap":"~0.0.2"},"devDependencies":{"hashish":"~0.0.4","tap":"~0.2.4"},"scripts":{"test":"tap ./test/*.js"},"repository":{"type":"git","url":"git://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"optimist@0.3.4","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"4d6d0bd71ffad0da4ba4f6d876d5eeb04e07480b","tarball":"http://localhost:1337/optimist/-/optimist-0.3.4.tgz"},"readme":"","maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.3.5":{"name":"optimist","version":"0.3.5","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","directories":{"lib":".","test":"test","example":"example"},"dependencies":{"wordwrap":"~0.0.2"},"devDependencies":{"hashish":"~0.0.4","tap":"~0.2.4"},"scripts":{"test":"tap ./test/*.js"},"repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"readme":"optimist\n========\n\nOptimist is a node.js library for option parsing for people who hate option\nparsing. More specifically, this module is for people who like all the --bells\nand -whistlz of program usage but think optstrings are a waste of time.\n\nWith optimist, option parsing doesn't have to suck (as much).\n\n[![build status](https://secure.travis-ci.org/substack/node-optimist.png)](http://travis-ci.org/substack/node-optimist)\n\nexamples\n========\n\nWith Optimist, the options are just a hash! No optstrings attached.\n-------------------------------------------------------------------\n\nxup.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\n\nif (argv.rif - 5 * argv.xup > 7.138) {\n console.log('Buy more riffiwobbles');\n}\nelse {\n console.log('Sell the xupptumblers');\n}\n````\n\n***\n\n $ ./xup.js --rif=55 --xup=9.52\n Buy more riffiwobbles\n \n $ ./xup.js --rif 12 --xup 8.1\n Sell the xupptumblers\n\n![This one's optimistic.](http://substack.net/images/optimistic.png)\n\nBut wait! There's more! You can do short options:\n-------------------------------------------------\n \nshort.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\n````\n\n***\n\n $ ./short.js -x 10 -y 21\n (10,21)\n\nAnd booleans, both long and short (and grouped):\n----------------------------------\n\nbool.js:\n\n````javascript\n#!/usr/bin/env node\nvar util = require('util');\nvar argv = require('optimist').argv;\n\nif (argv.s) {\n util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: ');\n}\nconsole.log(\n (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '')\n);\n````\n\n***\n\n $ ./bool.js -s\n The cat says: meow\n \n $ ./bool.js -sp\n The cat says: meow.\n\n $ ./bool.js -sp --fr\n Le chat dit: miaou.\n\nAnd non-hypenated options too! Just use `argv._`!\n-------------------------------------------------\n \nnonopt.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\nconsole.log(argv._);\n````\n\n***\n\n $ ./nonopt.js -x 6.82 -y 3.35 moo\n (6.82,3.35)\n [ 'moo' ]\n \n $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz\n (0.54,1.12)\n [ 'foo', 'bar', 'baz' ]\n\nPlus, Optimist comes with .usage() and .demand()!\n-------------------------------------------------\n\ndivide.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .usage('Usage: $0 -x [num] -y [num]')\n .demand(['x','y'])\n .argv;\n\nconsole.log(argv.x / argv.y);\n````\n\n***\n \n $ ./divide.js -x 55 -y 11\n 5\n \n $ node ./divide.js -x 4.91 -z 2.51\n Usage: node ./divide.js -x [num] -y [num]\n\n Options:\n -x [required]\n -y [required]\n\n Missing required arguments: y\n\nEVEN MORE HOLY COW\n------------------\n\ndefault_singles.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .default('x', 10)\n .default('y', 10)\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_singles.js -x 5\n 15\n\ndefault_hash.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .default({ x : 10, y : 10 })\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_hash.js -y 7\n 17\n\nAnd if you really want to get all descriptive about it...\n---------------------------------------------------------\n\nboolean_single.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .boolean('v')\n .argv\n;\nconsole.dir(argv);\n````\n\n***\n\n $ ./boolean_single.js -v foo bar baz\n true\n [ 'bar', 'baz', 'foo' ]\n\nboolean_double.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .boolean(['x','y','z'])\n .argv\n;\nconsole.dir([ argv.x, argv.y, argv.z ]);\nconsole.dir(argv._);\n````\n\n***\n\n $ ./boolean_double.js -x -z one two three\n [ true, false, true ]\n [ 'one', 'two', 'three' ]\n\nOptimist is here to help...\n---------------------------\n\nYou can describe parameters for help messages and set aliases. Optimist figures\nout how to format a handy help string automatically.\n\nline_count.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .usage('Count the lines in a file.\\nUsage: $0')\n .demand('f')\n .alias('f', 'file')\n .describe('f', 'Load a file')\n .argv\n;\n\nvar fs = require('fs');\nvar s = fs.createReadStream(argv.file);\n\nvar lines = 0;\ns.on('data', function (buf) {\n lines += buf.toString().match(/\\n/g).length;\n});\n\ns.on('end', function () {\n console.log(lines);\n});\n````\n\n***\n\n $ node line_count.js\n Count the lines in a file.\n Usage: node ./line_count.js\n\n Options:\n -f, --file Load a file [required]\n\n Missing required arguments: f\n\n $ node line_count.js --file line_count.js \n 20\n \n $ node line_count.js -f line_count.js \n 20\n\nmethods\n=======\n\nBy itself,\n\n````javascript\nrequire('optimist').argv\n`````\n\nwill use `process.argv` array to construct the `argv` object.\n\nYou can pass in the `process.argv` yourself:\n\n````javascript\nrequire('optimist')([ '-x', '1', '-y', '2' ]).argv\n````\n\nor use .parse() to do the same thing:\n\n````javascript\nrequire('optimist').parse([ '-x', '1', '-y', '2' ])\n````\n\nThe rest of these methods below come in just before the terminating `.argv`.\n\n.alias(key, alias)\n------------------\n\nSet key names as equivalent such that updates to a key will propagate to aliases\nand vice-versa.\n\nOptionally `.alias()` can take an object that maps keys to aliases.\n\n.default(key, value)\n--------------------\n\nSet `argv[key]` to `value` if no option was specified on `process.argv`.\n\nOptionally `.default()` can take an object that maps keys to default values.\n\n.demand(key)\n------------\n\nIf `key` is a string, show the usage information and exit if `key` wasn't\nspecified in `process.argv`.\n\nIf `key` is a number, demand at least as many non-option arguments, which show\nup in `argv._`.\n\nIf `key` is an Array, demand each element.\n\n.describe(key, desc)\n--------------------\n\nDescribe a `key` for the generated usage information.\n\nOptionally `.describe()` can take an object that maps keys to descriptions.\n\n.options(key, opt)\n------------------\n\nInstead of chaining together `.alias().demand().default()`, you can specify\nkeys in `opt` for each of the chainable methods.\n\nFor example:\n\n````javascript\nvar argv = require('optimist')\n .options('f', {\n alias : 'file',\n default : '/etc/passwd',\n })\n .argv\n;\n````\n\nis the same as\n\n````javascript\nvar argv = require('optimist')\n .alias('f', 'file')\n .default('f', '/etc/passwd')\n .argv\n;\n````\n\nOptionally `.options()` can take an object that maps keys to `opt` parameters.\n\n.usage(message)\n---------------\n\nSet a usage message to show which commands to use. Inside `message`, the string\n`$0` will get interpolated to the current script name or node command for the\npresent script similar to how `$0` works in bash or perl.\n\n.check(fn)\n----------\n\nCheck that certain conditions are met in the provided arguments.\n\nIf `fn` throws or returns `false`, show the thrown error, usage information, and\nexit.\n\n.boolean(key)\n-------------\n\nInterpret `key` as a boolean. If a non-flag option follows `key` in\n`process.argv`, that string won't get set as the value of `key`.\n\nIf `key` never shows up as a flag in `process.arguments`, `argv[key]` will be\n`false`.\n\nIf `key` is an Array, interpret all the elements as booleans.\n\n.string(key)\n------------\n\nTell the parser logic not to interpret `key` as a number or boolean.\nThis can be useful if you need to preserve leading zeros in an input.\n\nIf `key` is an Array, interpret all the elements as strings.\n\n.wrap(columns)\n--------------\n\nFormat usage output to wrap at `columns` many columns.\n\n.help()\n-------\n\nReturn the generated usage string.\n\n.showHelp(fn=console.error)\n---------------------------\n\nPrint the usage data using `fn` for printing.\n\n.parse(args)\n------------\n\nParse `args` instead of `process.argv`. Returns the `argv` object.\n\n.argv\n-----\n\nGet the arguments as a plain old object.\n\nArguments without a corresponding flag show up in the `argv._` array.\n\nThe script name or node command is available at `argv.$0` similarly to how `$0`\nworks in bash or perl.\n\nparsing tricks\n==============\n\nstop parsing\n------------\n\nUse `--` to stop parsing flags and stuff the remainder into `argv._`.\n\n $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4\n { _: [ '-c', '3', '-d', '4' ],\n '$0': 'node ./examples/reflect.js',\n a: 1,\n b: 2 }\n\nnegate fields\n-------------\n\nIf you want to explicity set a field to false instead of just leaving it\nundefined or to override a default you can do `--no-key`.\n\n $ node examples/reflect.js -a --no-b\n { _: [],\n '$0': 'node ./examples/reflect.js',\n a: true,\n b: false }\n\nnumbers\n-------\n\nEvery argument that looks like a number (`!isNaN(Number(arg))`) is converted to\none. This way you can just `net.createConnection(argv.port)` and you can add\nnumbers out of `argv` with `+` without having that mean concatenation,\nwhich is super frustrating.\n\nduplicates\n----------\n\nIf you specify a flag multiple times it will get turned into an array containing\nall the values in order.\n\n $ node examples/reflect.js -x 5 -x 8 -x 0\n { _: [],\n '$0': 'node ./examples/reflect.js',\n x: [ 5, 8, 0 ] }\n\ndot notation\n------------\n\nWhen you use dots (`.`s) in argument names, an implicit object path is assumed.\nThis lets you organize arguments into nested objects.\n\n $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5\n { _: [],\n '$0': 'node ./examples/reflect.js',\n foo: { bar: { baz: 33 }, quux: 5 } }\n\ninstallation\n============\n\nWith [npm](http://github.com/isaacs/npm), just do:\n npm install optimist\n \nor clone this project on github:\n\n git clone http://github.com/substack/node-optimist.git\n\nTo run the tests with [expresso](http://github.com/visionmedia/expresso),\njust do:\n \n expresso\n\ninspired By\n===========\n\nThis module is loosely inspired by Perl's\n[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm).\n","_id":"optimist@0.3.5","dist":{"shasum":"03654b52417030312d109f39b159825b60309304","tarball":"http://localhost:1337/optimist/-/optimist-0.3.5.tgz"},"_npmVersion":"1.1.59","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.3.6":{"name":"optimist","version":"0.3.6","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","dependencies":{"wordwrap":"~0.0.2"},"devDependencies":{"hashish":"~0.0.4","tap":"~0.4.0"},"scripts":{"test":"tap ./test/*.js"},"repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"readme":"optimist\n========\n\nOptimist is a node.js library for option parsing for people who hate option\nparsing. More specifically, this module is for people who like all the --bells\nand -whistlz of program usage but think optstrings are a waste of time.\n\nWith optimist, option parsing doesn't have to suck (as much).\n\n[![build status](https://secure.travis-ci.org/substack/node-optimist.png)](http://travis-ci.org/substack/node-optimist)\n\nexamples\n========\n\nWith Optimist, the options are just a hash! No optstrings attached.\n-------------------------------------------------------------------\n\nxup.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\n\nif (argv.rif - 5 * argv.xup > 7.138) {\n console.log('Buy more riffiwobbles');\n}\nelse {\n console.log('Sell the xupptumblers');\n}\n````\n\n***\n\n $ ./xup.js --rif=55 --xup=9.52\n Buy more riffiwobbles\n \n $ ./xup.js --rif 12 --xup 8.1\n Sell the xupptumblers\n\n![This one's optimistic.](http://substack.net/images/optimistic.png)\n\nBut wait! There's more! You can do short options:\n-------------------------------------------------\n \nshort.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\n````\n\n***\n\n $ ./short.js -x 10 -y 21\n (10,21)\n\nAnd booleans, both long and short (and grouped):\n----------------------------------\n\nbool.js:\n\n````javascript\n#!/usr/bin/env node\nvar util = require('util');\nvar argv = require('optimist').argv;\n\nif (argv.s) {\n util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: ');\n}\nconsole.log(\n (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '')\n);\n````\n\n***\n\n $ ./bool.js -s\n The cat says: meow\n \n $ ./bool.js -sp\n The cat says: meow.\n\n $ ./bool.js -sp --fr\n Le chat dit: miaou.\n\nAnd non-hypenated options too! Just use `argv._`!\n-------------------------------------------------\n \nnonopt.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\nconsole.log(argv._);\n````\n\n***\n\n $ ./nonopt.js -x 6.82 -y 3.35 moo\n (6.82,3.35)\n [ 'moo' ]\n \n $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz\n (0.54,1.12)\n [ 'foo', 'bar', 'baz' ]\n\nPlus, Optimist comes with .usage() and .demand()!\n-------------------------------------------------\n\ndivide.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .usage('Usage: $0 -x [num] -y [num]')\n .demand(['x','y'])\n .argv;\n\nconsole.log(argv.x / argv.y);\n````\n\n***\n \n $ ./divide.js -x 55 -y 11\n 5\n \n $ node ./divide.js -x 4.91 -z 2.51\n Usage: node ./divide.js -x [num] -y [num]\n\n Options:\n -x [required]\n -y [required]\n\n Missing required arguments: y\n\nEVEN MORE HOLY COW\n------------------\n\ndefault_singles.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .default('x', 10)\n .default('y', 10)\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_singles.js -x 5\n 15\n\ndefault_hash.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .default({ x : 10, y : 10 })\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_hash.js -y 7\n 17\n\nAnd if you really want to get all descriptive about it...\n---------------------------------------------------------\n\nboolean_single.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .boolean('v')\n .argv\n;\nconsole.dir(argv);\n````\n\n***\n\n $ ./boolean_single.js -v foo bar baz\n true\n [ 'bar', 'baz', 'foo' ]\n\nboolean_double.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .boolean(['x','y','z'])\n .argv\n;\nconsole.dir([ argv.x, argv.y, argv.z ]);\nconsole.dir(argv._);\n````\n\n***\n\n $ ./boolean_double.js -x -z one two three\n [ true, false, true ]\n [ 'one', 'two', 'three' ]\n\nOptimist is here to help...\n---------------------------\n\nYou can describe parameters for help messages and set aliases. Optimist figures\nout how to format a handy help string automatically.\n\nline_count.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .usage('Count the lines in a file.\\nUsage: $0')\n .demand('f')\n .alias('f', 'file')\n .describe('f', 'Load a file')\n .argv\n;\n\nvar fs = require('fs');\nvar s = fs.createReadStream(argv.file);\n\nvar lines = 0;\ns.on('data', function (buf) {\n lines += buf.toString().match(/\\n/g).length;\n});\n\ns.on('end', function () {\n console.log(lines);\n});\n````\n\n***\n\n $ node line_count.js\n Count the lines in a file.\n Usage: node ./line_count.js\n\n Options:\n -f, --file Load a file [required]\n\n Missing required arguments: f\n\n $ node line_count.js --file line_count.js \n 20\n \n $ node line_count.js -f line_count.js \n 20\n\nmethods\n=======\n\nBy itself,\n\n````javascript\nrequire('optimist').argv\n`````\n\nwill use `process.argv` array to construct the `argv` object.\n\nYou can pass in the `process.argv` yourself:\n\n````javascript\nrequire('optimist')([ '-x', '1', '-y', '2' ]).argv\n````\n\nor use .parse() to do the same thing:\n\n````javascript\nrequire('optimist').parse([ '-x', '1', '-y', '2' ])\n````\n\nThe rest of these methods below come in just before the terminating `.argv`.\n\n.alias(key, alias)\n------------------\n\nSet key names as equivalent such that updates to a key will propagate to aliases\nand vice-versa.\n\nOptionally `.alias()` can take an object that maps keys to aliases.\n\n.default(key, value)\n--------------------\n\nSet `argv[key]` to `value` if no option was specified on `process.argv`.\n\nOptionally `.default()` can take an object that maps keys to default values.\n\n.demand(key)\n------------\n\nIf `key` is a string, show the usage information and exit if `key` wasn't\nspecified in `process.argv`.\n\nIf `key` is a number, demand at least as many non-option arguments, which show\nup in `argv._`.\n\nIf `key` is an Array, demand each element.\n\n.describe(key, desc)\n--------------------\n\nDescribe a `key` for the generated usage information.\n\nOptionally `.describe()` can take an object that maps keys to descriptions.\n\n.options(key, opt)\n------------------\n\nInstead of chaining together `.alias().demand().default()`, you can specify\nkeys in `opt` for each of the chainable methods.\n\nFor example:\n\n````javascript\nvar argv = require('optimist')\n .options('f', {\n alias : 'file',\n default : '/etc/passwd',\n })\n .argv\n;\n````\n\nis the same as\n\n````javascript\nvar argv = require('optimist')\n .alias('f', 'file')\n .default('f', '/etc/passwd')\n .argv\n;\n````\n\nOptionally `.options()` can take an object that maps keys to `opt` parameters.\n\n.usage(message)\n---------------\n\nSet a usage message to show which commands to use. Inside `message`, the string\n`$0` will get interpolated to the current script name or node command for the\npresent script similar to how `$0` works in bash or perl.\n\n.check(fn)\n----------\n\nCheck that certain conditions are met in the provided arguments.\n\nIf `fn` throws or returns `false`, show the thrown error, usage information, and\nexit.\n\n.boolean(key)\n-------------\n\nInterpret `key` as a boolean. If a non-flag option follows `key` in\n`process.argv`, that string won't get set as the value of `key`.\n\nIf `key` never shows up as a flag in `process.arguments`, `argv[key]` will be\n`false`.\n\nIf `key` is an Array, interpret all the elements as booleans.\n\n.string(key)\n------------\n\nTell the parser logic not to interpret `key` as a number or boolean.\nThis can be useful if you need to preserve leading zeros in an input.\n\nIf `key` is an Array, interpret all the elements as strings.\n\n.wrap(columns)\n--------------\n\nFormat usage output to wrap at `columns` many columns.\n\n.help()\n-------\n\nReturn the generated usage string.\n\n.showHelp(fn=console.error)\n---------------------------\n\nPrint the usage data using `fn` for printing.\n\n.parse(args)\n------------\n\nParse `args` instead of `process.argv`. Returns the `argv` object.\n\n.argv\n-----\n\nGet the arguments as a plain old object.\n\nArguments without a corresponding flag show up in the `argv._` array.\n\nThe script name or node command is available at `argv.$0` similarly to how `$0`\nworks in bash or perl.\n\nparsing tricks\n==============\n\nstop parsing\n------------\n\nUse `--` to stop parsing flags and stuff the remainder into `argv._`.\n\n $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4\n { _: [ '-c', '3', '-d', '4' ],\n '$0': 'node ./examples/reflect.js',\n a: 1,\n b: 2 }\n\nnegate fields\n-------------\n\nIf you want to explicity set a field to false instead of just leaving it\nundefined or to override a default you can do `--no-key`.\n\n $ node examples/reflect.js -a --no-b\n { _: [],\n '$0': 'node ./examples/reflect.js',\n a: true,\n b: false }\n\nnumbers\n-------\n\nEvery argument that looks like a number (`!isNaN(Number(arg))`) is converted to\none. This way you can just `net.createConnection(argv.port)` and you can add\nnumbers out of `argv` with `+` without having that mean concatenation,\nwhich is super frustrating.\n\nduplicates\n----------\n\nIf you specify a flag multiple times it will get turned into an array containing\nall the values in order.\n\n $ node examples/reflect.js -x 5 -x 8 -x 0\n { _: [],\n '$0': 'node ./examples/reflect.js',\n x: [ 5, 8, 0 ] }\n\ndot notation\n------------\n\nWhen you use dots (`.`s) in argument names, an implicit object path is assumed.\nThis lets you organize arguments into nested objects.\n\n $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5\n { _: [],\n '$0': 'node ./examples/reflect.js',\n foo: { bar: { baz: 33 }, quux: 5 } }\n\ninstallation\n============\n\nWith [npm](http://github.com/isaacs/npm), just do:\n npm install optimist\n \nor clone this project on github:\n\n git clone http://github.com/substack/node-optimist.git\n\nTo run the tests with [expresso](http://github.com/visionmedia/expresso),\njust do:\n \n expresso\n\ninspired By\n===========\n\nThis module is loosely inspired by Perl's\n[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm).\n","readmeFilename":"readme.markdown","_id":"optimist@0.3.6","dist":{"shasum":"816e0039f848fccf9db70cada5535ed9dd55f496","tarball":"http://localhost:1337/optimist/-/optimist-0.3.6.tgz"},"_from":".","_npmVersion":"1.2.2","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}},"0.3.7":{"name":"optimist","version":"0.3.7","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","dependencies":{"wordwrap":"~0.0.2"},"devDependencies":{"hashish":"~0.0.4","tap":"~0.4.0"},"scripts":{"test":"tap ./test/*.js"},"repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"readme":"optimist\n========\n\nOptimist is a node.js library for option parsing for people who hate option\nparsing. More specifically, this module is for people who like all the --bells\nand -whistlz of program usage but think optstrings are a waste of time.\n\nWith optimist, option parsing doesn't have to suck (as much).\n\n[![build status](https://secure.travis-ci.org/substack/node-optimist.png)](http://travis-ci.org/substack/node-optimist)\n\nexamples\n========\n\nWith Optimist, the options are just a hash! No optstrings attached.\n-------------------------------------------------------------------\n\nxup.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\n\nif (argv.rif - 5 * argv.xup > 7.138) {\n console.log('Buy more riffiwobbles');\n}\nelse {\n console.log('Sell the xupptumblers');\n}\n````\n\n***\n\n $ ./xup.js --rif=55 --xup=9.52\n Buy more riffiwobbles\n \n $ ./xup.js --rif 12 --xup 8.1\n Sell the xupptumblers\n\n![This one's optimistic.](http://substack.net/images/optimistic.png)\n\nBut wait! There's more! You can do short options:\n-------------------------------------------------\n \nshort.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\n````\n\n***\n\n $ ./short.js -x 10 -y 21\n (10,21)\n\nAnd booleans, both long and short (and grouped):\n----------------------------------\n\nbool.js:\n\n````javascript\n#!/usr/bin/env node\nvar util = require('util');\nvar argv = require('optimist').argv;\n\nif (argv.s) {\n util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: ');\n}\nconsole.log(\n (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '')\n);\n````\n\n***\n\n $ ./bool.js -s\n The cat says: meow\n \n $ ./bool.js -sp\n The cat says: meow.\n\n $ ./bool.js -sp --fr\n Le chat dit: miaou.\n\nAnd non-hypenated options too! Just use `argv._`!\n-------------------------------------------------\n \nnonopt.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\nconsole.log(argv._);\n````\n\n***\n\n $ ./nonopt.js -x 6.82 -y 3.35 moo\n (6.82,3.35)\n [ 'moo' ]\n \n $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz\n (0.54,1.12)\n [ 'foo', 'bar', 'baz' ]\n\nPlus, Optimist comes with .usage() and .demand()!\n-------------------------------------------------\n\ndivide.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .usage('Usage: $0 -x [num] -y [num]')\n .demand(['x','y'])\n .argv;\n\nconsole.log(argv.x / argv.y);\n````\n\n***\n \n $ ./divide.js -x 55 -y 11\n 5\n \n $ node ./divide.js -x 4.91 -z 2.51\n Usage: node ./divide.js -x [num] -y [num]\n\n Options:\n -x [required]\n -y [required]\n\n Missing required arguments: y\n\nEVEN MORE HOLY COW\n------------------\n\ndefault_singles.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .default('x', 10)\n .default('y', 10)\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_singles.js -x 5\n 15\n\ndefault_hash.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .default({ x : 10, y : 10 })\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_hash.js -y 7\n 17\n\nAnd if you really want to get all descriptive about it...\n---------------------------------------------------------\n\nboolean_single.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .boolean('v')\n .argv\n;\nconsole.dir(argv);\n````\n\n***\n\n $ ./boolean_single.js -v foo bar baz\n true\n [ 'bar', 'baz', 'foo' ]\n\nboolean_double.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .boolean(['x','y','z'])\n .argv\n;\nconsole.dir([ argv.x, argv.y, argv.z ]);\nconsole.dir(argv._);\n````\n\n***\n\n $ ./boolean_double.js -x -z one two three\n [ true, false, true ]\n [ 'one', 'two', 'three' ]\n\nOptimist is here to help...\n---------------------------\n\nYou can describe parameters for help messages and set aliases. Optimist figures\nout how to format a handy help string automatically.\n\nline_count.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .usage('Count the lines in a file.\\nUsage: $0')\n .demand('f')\n .alias('f', 'file')\n .describe('f', 'Load a file')\n .argv\n;\n\nvar fs = require('fs');\nvar s = fs.createReadStream(argv.file);\n\nvar lines = 0;\ns.on('data', function (buf) {\n lines += buf.toString().match(/\\n/g).length;\n});\n\ns.on('end', function () {\n console.log(lines);\n});\n````\n\n***\n\n $ node line_count.js\n Count the lines in a file.\n Usage: node ./line_count.js\n\n Options:\n -f, --file Load a file [required]\n\n Missing required arguments: f\n\n $ node line_count.js --file line_count.js \n 20\n \n $ node line_count.js -f line_count.js \n 20\n\nmethods\n=======\n\nBy itself,\n\n````javascript\nrequire('optimist').argv\n`````\n\nwill use `process.argv` array to construct the `argv` object.\n\nYou can pass in the `process.argv` yourself:\n\n````javascript\nrequire('optimist')([ '-x', '1', '-y', '2' ]).argv\n````\n\nor use .parse() to do the same thing:\n\n````javascript\nrequire('optimist').parse([ '-x', '1', '-y', '2' ])\n````\n\nThe rest of these methods below come in just before the terminating `.argv`.\n\n.alias(key, alias)\n------------------\n\nSet key names as equivalent such that updates to a key will propagate to aliases\nand vice-versa.\n\nOptionally `.alias()` can take an object that maps keys to aliases.\n\n.default(key, value)\n--------------------\n\nSet `argv[key]` to `value` if no option was specified on `process.argv`.\n\nOptionally `.default()` can take an object that maps keys to default values.\n\n.demand(key)\n------------\n\nIf `key` is a string, show the usage information and exit if `key` wasn't\nspecified in `process.argv`.\n\nIf `key` is a number, demand at least as many non-option arguments, which show\nup in `argv._`.\n\nIf `key` is an Array, demand each element.\n\n.describe(key, desc)\n--------------------\n\nDescribe a `key` for the generated usage information.\n\nOptionally `.describe()` can take an object that maps keys to descriptions.\n\n.options(key, opt)\n------------------\n\nInstead of chaining together `.alias().demand().default()`, you can specify\nkeys in `opt` for each of the chainable methods.\n\nFor example:\n\n````javascript\nvar argv = require('optimist')\n .options('f', {\n alias : 'file',\n default : '/etc/passwd',\n })\n .argv\n;\n````\n\nis the same as\n\n````javascript\nvar argv = require('optimist')\n .alias('f', 'file')\n .default('f', '/etc/passwd')\n .argv\n;\n````\n\nOptionally `.options()` can take an object that maps keys to `opt` parameters.\n\n.usage(message)\n---------------\n\nSet a usage message to show which commands to use. Inside `message`, the string\n`$0` will get interpolated to the current script name or node command for the\npresent script similar to how `$0` works in bash or perl.\n\n.check(fn)\n----------\n\nCheck that certain conditions are met in the provided arguments.\n\nIf `fn` throws or returns `false`, show the thrown error, usage information, and\nexit.\n\n.boolean(key)\n-------------\n\nInterpret `key` as a boolean. If a non-flag option follows `key` in\n`process.argv`, that string won't get set as the value of `key`.\n\nIf `key` never shows up as a flag in `process.arguments`, `argv[key]` will be\n`false`.\n\nIf `key` is an Array, interpret all the elements as booleans.\n\n.string(key)\n------------\n\nTell the parser logic not to interpret `key` as a number or boolean.\nThis can be useful if you need to preserve leading zeros in an input.\n\nIf `key` is an Array, interpret all the elements as strings.\n\n.wrap(columns)\n--------------\n\nFormat usage output to wrap at `columns` many columns.\n\n.help()\n-------\n\nReturn the generated usage string.\n\n.showHelp(fn=console.error)\n---------------------------\n\nPrint the usage data using `fn` for printing.\n\n.parse(args)\n------------\n\nParse `args` instead of `process.argv`. Returns the `argv` object.\n\n.argv\n-----\n\nGet the arguments as a plain old object.\n\nArguments without a corresponding flag show up in the `argv._` array.\n\nThe script name or node command is available at `argv.$0` similarly to how `$0`\nworks in bash or perl.\n\nparsing tricks\n==============\n\nstop parsing\n------------\n\nUse `--` to stop parsing flags and stuff the remainder into `argv._`.\n\n $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4\n { _: [ '-c', '3', '-d', '4' ],\n '$0': 'node ./examples/reflect.js',\n a: 1,\n b: 2 }\n\nnegate fields\n-------------\n\nIf you want to explicity set a field to false instead of just leaving it\nundefined or to override a default you can do `--no-key`.\n\n $ node examples/reflect.js -a --no-b\n { _: [],\n '$0': 'node ./examples/reflect.js',\n a: true,\n b: false }\n\nnumbers\n-------\n\nEvery argument that looks like a number (`!isNaN(Number(arg))`) is converted to\none. This way you can just `net.createConnection(argv.port)` and you can add\nnumbers out of `argv` with `+` without having that mean concatenation,\nwhich is super frustrating.\n\nduplicates\n----------\n\nIf you specify a flag multiple times it will get turned into an array containing\nall the values in order.\n\n $ node examples/reflect.js -x 5 -x 8 -x 0\n { _: [],\n '$0': 'node ./examples/reflect.js',\n x: [ 5, 8, 0 ] }\n\ndot notation\n------------\n\nWhen you use dots (`.`s) in argument names, an implicit object path is assumed.\nThis lets you organize arguments into nested objects.\n\n $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5\n { _: [],\n '$0': 'node ./examples/reflect.js',\n foo: { bar: { baz: 33 }, quux: 5 } }\n\ninstallation\n============\n\nWith [npm](http://github.com/isaacs/npm), just do:\n npm install optimist\n \nor clone this project on github:\n\n git clone http://github.com/substack/node-optimist.git\n\nTo run the tests with [expresso](http://github.com/visionmedia/expresso),\njust do:\n \n expresso\n\ninspired By\n===========\n\nThis module is loosely inspired by Perl's\n[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm).\n","readmeFilename":"readme.markdown","_id":"optimist@0.3.7","dist":{"shasum":"c90941ad59e4273328923074d2cf2e7cbc6ec0d9","tarball":"http://localhost:1337/optimist/-/optimist-0.3.7.tgz"},"_from":".","_npmVersion":"1.2.2","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}},"0.4.0":{"name":"optimist","version":"0.4.0","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","dependencies":{"wordwrap":"~0.0.2"},"devDependencies":{"hashish":"~0.0.4","tap":"~0.4.0"},"scripts":{"test":"tap ./test/*.js"},"repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"readme":"optimist\n========\n\nOptimist is a node.js library for option parsing for people who hate option\nparsing. More specifically, this module is for people who like all the --bells\nand -whistlz of program usage but think optstrings are a waste of time.\n\nWith optimist, option parsing doesn't have to suck (as much).\n\n[![build status](https://secure.travis-ci.org/substack/node-optimist.png)](http://travis-ci.org/substack/node-optimist)\n\nexamples\n========\n\nWith Optimist, the options are just a hash! No optstrings attached.\n-------------------------------------------------------------------\n\nxup.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\n\nif (argv.rif - 5 * argv.xup > 7.138) {\n console.log('Buy more riffiwobbles');\n}\nelse {\n console.log('Sell the xupptumblers');\n}\n````\n\n***\n\n $ ./xup.js --rif=55 --xup=9.52\n Buy more riffiwobbles\n \n $ ./xup.js --rif 12 --xup 8.1\n Sell the xupptumblers\n\n![This one's optimistic.](http://substack.net/images/optimistic.png)\n\nBut wait! There's more! You can do short options:\n-------------------------------------------------\n \nshort.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\n````\n\n***\n\n $ ./short.js -x 10 -y 21\n (10,21)\n\nAnd booleans, both long and short (and grouped):\n----------------------------------\n\nbool.js:\n\n````javascript\n#!/usr/bin/env node\nvar util = require('util');\nvar argv = require('optimist').argv;\n\nif (argv.s) {\n util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: ');\n}\nconsole.log(\n (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '')\n);\n````\n\n***\n\n $ ./bool.js -s\n The cat says: meow\n \n $ ./bool.js -sp\n The cat says: meow.\n\n $ ./bool.js -sp --fr\n Le chat dit: miaou.\n\nAnd non-hypenated options too! Just use `argv._`!\n-------------------------------------------------\n \nnonopt.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\nconsole.log(argv._);\n````\n\n***\n\n $ ./nonopt.js -x 6.82 -y 3.35 moo\n (6.82,3.35)\n [ 'moo' ]\n \n $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz\n (0.54,1.12)\n [ 'foo', 'bar', 'baz' ]\n\nPlus, Optimist comes with .usage() and .demand()!\n-------------------------------------------------\n\ndivide.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .usage('Usage: $0 -x [num] -y [num]')\n .demand(['x','y'])\n .argv;\n\nconsole.log(argv.x / argv.y);\n````\n\n***\n \n $ ./divide.js -x 55 -y 11\n 5\n \n $ node ./divide.js -x 4.91 -z 2.51\n Usage: node ./divide.js -x [num] -y [num]\n\n Options:\n -x [required]\n -y [required]\n\n Missing required arguments: y\n\nEVEN MORE HOLY COW\n------------------\n\ndefault_singles.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .default('x', 10)\n .default('y', 10)\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_singles.js -x 5\n 15\n\ndefault_hash.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .default({ x : 10, y : 10 })\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_hash.js -y 7\n 17\n\nAnd if you really want to get all descriptive about it...\n---------------------------------------------------------\n\nboolean_single.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .boolean('v')\n .argv\n;\nconsole.dir(argv);\n````\n\n***\n\n $ ./boolean_single.js -v foo bar baz\n true\n [ 'bar', 'baz', 'foo' ]\n\nboolean_double.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .boolean(['x','y','z'])\n .argv\n;\nconsole.dir([ argv.x, argv.y, argv.z ]);\nconsole.dir(argv._);\n````\n\n***\n\n $ ./boolean_double.js -x -z one two three\n [ true, false, true ]\n [ 'one', 'two', 'three' ]\n\nOptimist is here to help...\n---------------------------\n\nYou can describe parameters for help messages and set aliases. Optimist figures\nout how to format a handy help string automatically.\n\nline_count.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .usage('Count the lines in a file.\\nUsage: $0')\n .demand('f')\n .alias('f', 'file')\n .describe('f', 'Load a file')\n .argv\n;\n\nvar fs = require('fs');\nvar s = fs.createReadStream(argv.file);\n\nvar lines = 0;\ns.on('data', function (buf) {\n lines += buf.toString().match(/\\n/g).length;\n});\n\ns.on('end', function () {\n console.log(lines);\n});\n````\n\n***\n\n $ node line_count.js\n Count the lines in a file.\n Usage: node ./line_count.js\n\n Options:\n -f, --file Load a file [required]\n\n Missing required arguments: f\n\n $ node line_count.js --file line_count.js \n 20\n \n $ node line_count.js -f line_count.js \n 20\n\nmethods\n=======\n\nBy itself,\n\n````javascript\nrequire('optimist').argv\n`````\n\nwill use `process.argv` array to construct the `argv` object.\n\nYou can pass in the `process.argv` yourself:\n\n````javascript\nrequire('optimist')([ '-x', '1', '-y', '2' ]).argv\n````\n\nor use .parse() to do the same thing:\n\n````javascript\nrequire('optimist').parse([ '-x', '1', '-y', '2' ])\n````\n\nThe rest of these methods below come in just before the terminating `.argv`.\n\n.alias(key, alias)\n------------------\n\nSet key names as equivalent such that updates to a key will propagate to aliases\nand vice-versa.\n\nOptionally `.alias()` can take an object that maps keys to aliases.\n\n.default(key, value)\n--------------------\n\nSet `argv[key]` to `value` if no option was specified on `process.argv`.\n\nOptionally `.default()` can take an object that maps keys to default values.\n\n.demand(key)\n------------\n\nIf `key` is a string, show the usage information and exit if `key` wasn't\nspecified in `process.argv`.\n\nIf `key` is a number, demand at least as many non-option arguments, which show\nup in `argv._`.\n\nIf `key` is an Array, demand each element.\n\n.describe(key, desc)\n--------------------\n\nDescribe a `key` for the generated usage information.\n\nOptionally `.describe()` can take an object that maps keys to descriptions.\n\n.options(key, opt)\n------------------\n\nInstead of chaining together `.alias().demand().default()`, you can specify\nkeys in `opt` for each of the chainable methods.\n\nFor example:\n\n````javascript\nvar argv = require('optimist')\n .options('f', {\n alias : 'file',\n default : '/etc/passwd',\n })\n .argv\n;\n````\n\nis the same as\n\n````javascript\nvar argv = require('optimist')\n .alias('f', 'file')\n .default('f', '/etc/passwd')\n .argv\n;\n````\n\nOptionally `.options()` can take an object that maps keys to `opt` parameters.\n\n.usage(message)\n---------------\n\nSet a usage message to show which commands to use. Inside `message`, the string\n`$0` will get interpolated to the current script name or node command for the\npresent script similar to how `$0` works in bash or perl.\n\n.check(fn)\n----------\n\nCheck that certain conditions are met in the provided arguments.\n\nIf `fn` throws or returns `false`, show the thrown error, usage information, and\nexit.\n\n.boolean(key)\n-------------\n\nInterpret `key` as a boolean. If a non-flag option follows `key` in\n`process.argv`, that string won't get set as the value of `key`.\n\nIf `key` never shows up as a flag in `process.arguments`, `argv[key]` will be\n`false`.\n\nIf `key` is an Array, interpret all the elements as booleans.\n\n.string(key)\n------------\n\nTell the parser logic not to interpret `key` as a number or boolean.\nThis can be useful if you need to preserve leading zeros in an input.\n\nIf `key` is an Array, interpret all the elements as strings.\n\n.wrap(columns)\n--------------\n\nFormat usage output to wrap at `columns` many columns.\n\n.help()\n-------\n\nReturn the generated usage string.\n\n.showHelp(fn=console.error)\n---------------------------\n\nPrint the usage data using `fn` for printing.\n\n.parse(args)\n------------\n\nParse `args` instead of `process.argv`. Returns the `argv` object.\n\n.argv\n-----\n\nGet the arguments as a plain old object.\n\nArguments without a corresponding flag show up in the `argv._` array.\n\nThe script name or node command is available at `argv.$0` similarly to how `$0`\nworks in bash or perl.\n\nparsing tricks\n==============\n\nstop parsing\n------------\n\nUse `--` to stop parsing flags and stuff the remainder into `argv._`.\n\n $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4\n { _: [ '-c', '3', '-d', '4' ],\n '$0': 'node ./examples/reflect.js',\n a: 1,\n b: 2 }\n\nnegate fields\n-------------\n\nIf you want to explicity set a field to false instead of just leaving it\nundefined or to override a default you can do `--no-key`.\n\n $ node examples/reflect.js -a --no-b\n { _: [],\n '$0': 'node ./examples/reflect.js',\n a: true,\n b: false }\n\nnumbers\n-------\n\nEvery argument that looks like a number (`!isNaN(Number(arg))`) is converted to\none. This way you can just `net.createConnection(argv.port)` and you can add\nnumbers out of `argv` with `+` without having that mean concatenation,\nwhich is super frustrating.\n\nduplicates\n----------\n\nIf you specify a flag multiple times it will get turned into an array containing\nall the values in order.\n\n $ node examples/reflect.js -x 5 -x 8 -x 0\n { _: [],\n '$0': 'node ./examples/reflect.js',\n x: [ 5, 8, 0 ] }\n\ndot notation\n------------\n\nWhen you use dots (`.`s) in argument names, an implicit object path is assumed.\nThis lets you organize arguments into nested objects.\n\n $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5\n { _: [],\n '$0': 'node ./examples/reflect.js',\n foo: { bar: { baz: 33 }, quux: 5 } }\n\nshort numbers\n-------------\n\nShort numeric `head -n5` style argument work too:\n\n $ node reflect.js -n123 -m456\n { '3': true,\n '6': true,\n _: [],\n '$0': 'node ./reflect.js',\n n: 123,\n m: 456 }\n\ninstallation\n============\n\nWith [npm](http://github.com/isaacs/npm), just do:\n npm install optimist\n \nor clone this project on github:\n\n git clone http://github.com/substack/node-optimist.git\n\nTo run the tests with [expresso](http://github.com/visionmedia/expresso),\njust do:\n \n expresso\n\ninspired By\n===========\n\nThis module is loosely inspired by Perl's\n[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm).\n","readmeFilename":"readme.markdown","_id":"optimist@0.4.0","dist":{"shasum":"cb8ec37f2fe3aa9864cb67a275250e7e19620a25","tarball":"http://localhost:1337/optimist/-/optimist-0.4.0.tgz"},"_from":".","_npmVersion":"1.2.2","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}},"0.5.0":{"name":"optimist","version":"0.5.0","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","dependencies":{"wordwrap":"~0.0.2"},"devDependencies":{"hashish":"~0.0.4","tap":"~0.4.0"},"scripts":{"test":"tap ./test/*.js"},"repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"readme":"optimist\n========\n\nOptimist is a node.js library for option parsing for people who hate option\nparsing. More specifically, this module is for people who like all the --bells\nand -whistlz of program usage but think optstrings are a waste of time.\n\nWith optimist, option parsing doesn't have to suck (as much).\n\n[![build status](https://secure.travis-ci.org/substack/node-optimist.png)](http://travis-ci.org/substack/node-optimist)\n\nexamples\n========\n\nWith Optimist, the options are just a hash! No optstrings attached.\n-------------------------------------------------------------------\n\nxup.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\n\nif (argv.rif - 5 * argv.xup > 7.138) {\n console.log('Buy more riffiwobbles');\n}\nelse {\n console.log('Sell the xupptumblers');\n}\n````\n\n***\n\n $ ./xup.js --rif=55 --xup=9.52\n Buy more riffiwobbles\n \n $ ./xup.js --rif 12 --xup 8.1\n Sell the xupptumblers\n\n![This one's optimistic.](http://substack.net/images/optimistic.png)\n\nBut wait! There's more! You can do short options:\n-------------------------------------------------\n \nshort.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\n````\n\n***\n\n $ ./short.js -x 10 -y 21\n (10,21)\n\nAnd booleans, both long and short (and grouped):\n----------------------------------\n\nbool.js:\n\n````javascript\n#!/usr/bin/env node\nvar util = require('util');\nvar argv = require('optimist').argv;\n\nif (argv.s) {\n util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: ');\n}\nconsole.log(\n (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '')\n);\n````\n\n***\n\n $ ./bool.js -s\n The cat says: meow\n \n $ ./bool.js -sp\n The cat says: meow.\n\n $ ./bool.js -sp --fr\n Le chat dit: miaou.\n\nAnd non-hypenated options too! Just use `argv._`!\n-------------------------------------------------\n \nnonopt.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\nconsole.log(argv._);\n````\n\n***\n\n $ ./nonopt.js -x 6.82 -y 3.35 moo\n (6.82,3.35)\n [ 'moo' ]\n \n $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz\n (0.54,1.12)\n [ 'foo', 'bar', 'baz' ]\n\nPlus, Optimist comes with .usage() and .demand()!\n-------------------------------------------------\n\ndivide.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .usage('Usage: $0 -x [num] -y [num]')\n .demand(['x','y'])\n .argv;\n\nconsole.log(argv.x / argv.y);\n````\n\n***\n \n $ ./divide.js -x 55 -y 11\n 5\n \n $ node ./divide.js -x 4.91 -z 2.51\n Usage: node ./divide.js -x [num] -y [num]\n\n Options:\n -x [required]\n -y [required]\n\n Missing required arguments: y\n\nEVEN MORE HOLY COW\n------------------\n\ndefault_singles.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .default('x', 10)\n .default('y', 10)\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_singles.js -x 5\n 15\n\ndefault_hash.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .default({ x : 10, y : 10 })\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_hash.js -y 7\n 17\n\nAnd if you really want to get all descriptive about it...\n---------------------------------------------------------\n\nboolean_single.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .boolean('v')\n .argv\n;\nconsole.dir(argv);\n````\n\n***\n\n $ ./boolean_single.js -v foo bar baz\n true\n [ 'bar', 'baz', 'foo' ]\n\nboolean_double.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .boolean(['x','y','z'])\n .argv\n;\nconsole.dir([ argv.x, argv.y, argv.z ]);\nconsole.dir(argv._);\n````\n\n***\n\n $ ./boolean_double.js -x -z one two three\n [ true, false, true ]\n [ 'one', 'two', 'three' ]\n\nOptimist is here to help...\n---------------------------\n\nYou can describe parameters for help messages and set aliases. Optimist figures\nout how to format a handy help string automatically.\n\nline_count.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .usage('Count the lines in a file.\\nUsage: $0')\n .demand('f')\n .alias('f', 'file')\n .describe('f', 'Load a file')\n .argv\n;\n\nvar fs = require('fs');\nvar s = fs.createReadStream(argv.file);\n\nvar lines = 0;\ns.on('data', function (buf) {\n lines += buf.toString().match(/\\n/g).length;\n});\n\ns.on('end', function () {\n console.log(lines);\n});\n````\n\n***\n\n $ node line_count.js\n Count the lines in a file.\n Usage: node ./line_count.js\n\n Options:\n -f, --file Load a file [required]\n\n Missing required arguments: f\n\n $ node line_count.js --file line_count.js \n 20\n \n $ node line_count.js -f line_count.js \n 20\n\nmethods\n=======\n\nBy itself,\n\n````javascript\nrequire('optimist').argv\n`````\n\nwill use `process.argv` array to construct the `argv` object.\n\nYou can pass in the `process.argv` yourself:\n\n````javascript\nrequire('optimist')([ '-x', '1', '-y', '2' ]).argv\n````\n\nor use .parse() to do the same thing:\n\n````javascript\nrequire('optimist').parse([ '-x', '1', '-y', '2' ])\n````\n\nThe rest of these methods below come in just before the terminating `.argv`.\n\n.alias(key, alias)\n------------------\n\nSet key names as equivalent such that updates to a key will propagate to aliases\nand vice-versa.\n\nOptionally `.alias()` can take an object that maps keys to aliases.\n\n.default(key, value)\n--------------------\n\nSet `argv[key]` to `value` if no option was specified on `process.argv`.\n\nOptionally `.default()` can take an object that maps keys to default values.\n\n.demand(key)\n------------\n\nIf `key` is a string, show the usage information and exit if `key` wasn't\nspecified in `process.argv`.\n\nIf `key` is a number, demand at least as many non-option arguments, which show\nup in `argv._`.\n\nIf `key` is an Array, demand each element.\n\n.describe(key, desc)\n--------------------\n\nDescribe a `key` for the generated usage information.\n\nOptionally `.describe()` can take an object that maps keys to descriptions.\n\n.options(key, opt)\n------------------\n\nInstead of chaining together `.alias().demand().default()`, you can specify\nkeys in `opt` for each of the chainable methods.\n\nFor example:\n\n````javascript\nvar argv = require('optimist')\n .options('f', {\n alias : 'file',\n default : '/etc/passwd',\n })\n .argv\n;\n````\n\nis the same as\n\n````javascript\nvar argv = require('optimist')\n .alias('f', 'file')\n .default('f', '/etc/passwd')\n .argv\n;\n````\n\nOptionally `.options()` can take an object that maps keys to `opt` parameters.\n\n.usage(message)\n---------------\n\nSet a usage message to show which commands to use. Inside `message`, the string\n`$0` will get interpolated to the current script name or node command for the\npresent script similar to how `$0` works in bash or perl.\n\n.check(fn)\n----------\n\nCheck that certain conditions are met in the provided arguments.\n\nIf `fn` throws or returns `false`, show the thrown error, usage information, and\nexit.\n\n.boolean(key)\n-------------\n\nInterpret `key` as a boolean. If a non-flag option follows `key` in\n`process.argv`, that string won't get set as the value of `key`.\n\nIf `key` never shows up as a flag in `process.arguments`, `argv[key]` will be\n`false`.\n\nIf `key` is an Array, interpret all the elements as booleans.\n\n.string(key)\n------------\n\nTell the parser logic not to interpret `key` as a number or boolean.\nThis can be useful if you need to preserve leading zeros in an input.\n\nIf `key` is an Array, interpret all the elements as strings.\n\n.wrap(columns)\n--------------\n\nFormat usage output to wrap at `columns` many columns.\n\n.help()\n-------\n\nReturn the generated usage string.\n\n.showHelp(fn=console.error)\n---------------------------\n\nPrint the usage data using `fn` for printing.\n\n.parse(args)\n------------\n\nParse `args` instead of `process.argv`. Returns the `argv` object.\n\n.argv\n-----\n\nGet the arguments as a plain old object.\n\nArguments without a corresponding flag show up in the `argv._` array.\n\nThe script name or node command is available at `argv.$0` similarly to how `$0`\nworks in bash or perl.\n\nparsing tricks\n==============\n\nstop parsing\n------------\n\nUse `--` to stop parsing flags and stuff the remainder into `argv._`.\n\n $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4\n { _: [ '-c', '3', '-d', '4' ],\n '$0': 'node ./examples/reflect.js',\n a: 1,\n b: 2 }\n\nnegate fields\n-------------\n\nIf you want to explicity set a field to false instead of just leaving it\nundefined or to override a default you can do `--no-key`.\n\n $ node examples/reflect.js -a --no-b\n { _: [],\n '$0': 'node ./examples/reflect.js',\n a: true,\n b: false }\n\nnumbers\n-------\n\nEvery argument that looks like a number (`!isNaN(Number(arg))`) is converted to\none. This way you can just `net.createConnection(argv.port)` and you can add\nnumbers out of `argv` with `+` without having that mean concatenation,\nwhich is super frustrating.\n\nduplicates\n----------\n\nIf you specify a flag multiple times it will get turned into an array containing\nall the values in order.\n\n $ node examples/reflect.js -x 5 -x 8 -x 0\n { _: [],\n '$0': 'node ./examples/reflect.js',\n x: [ 5, 8, 0 ] }\n\ndot notation\n------------\n\nWhen you use dots (`.`s) in argument names, an implicit object path is assumed.\nThis lets you organize arguments into nested objects.\n\n $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5\n { _: [],\n '$0': 'node ./examples/reflect.js',\n foo: { bar: { baz: 33 }, quux: 5 } }\n\nshort numbers\n-------------\n\nShort numeric `head -n5` style argument work too:\n\n $ node reflect.js -n123 -m456\n { '3': true,\n '6': true,\n _: [],\n '$0': 'node ./reflect.js',\n n: 123,\n m: 456 }\n\ninstallation\n============\n\nWith [npm](http://github.com/isaacs/npm), just do:\n npm install optimist\n \nor clone this project on github:\n\n git clone http://github.com/substack/node-optimist.git\n\nTo run the tests with [expresso](http://github.com/visionmedia/expresso),\njust do:\n \n expresso\n\ninspired By\n===========\n\nThis module is loosely inspired by Perl's\n[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm).\n","readmeFilename":"readme.markdown","_id":"optimist@0.5.0","dist":{"shasum":"d9c60da4c34811418d183390623f8046f134a2d4","tarball":"http://localhost:1337/optimist/-/optimist-0.5.0.tgz"},"_from":".","_npmVersion":"1.2.2","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}},"0.5.1":{"name":"optimist","version":"0.5.1","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","dependencies":{"wordwrap":"~0.0.2"},"devDependencies":{"hashish":"~0.0.4","tap":"~0.4.0"},"scripts":{"test":"tap ./test/*.js"},"repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"readme":"optimist\n========\n\nOptimist is a node.js library for option parsing for people who hate option\nparsing. More specifically, this module is for people who like all the --bells\nand -whistlz of program usage but think optstrings are a waste of time.\n\nWith optimist, option parsing doesn't have to suck (as much).\n\n[![build status](https://secure.travis-ci.org/substack/node-optimist.png)](http://travis-ci.org/substack/node-optimist)\n\nexamples\n========\n\nWith Optimist, the options are just a hash! No optstrings attached.\n-------------------------------------------------------------------\n\nxup.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\n\nif (argv.rif - 5 * argv.xup > 7.138) {\n console.log('Buy more riffiwobbles');\n}\nelse {\n console.log('Sell the xupptumblers');\n}\n````\n\n***\n\n $ ./xup.js --rif=55 --xup=9.52\n Buy more riffiwobbles\n \n $ ./xup.js --rif 12 --xup 8.1\n Sell the xupptumblers\n\n![This one's optimistic.](http://substack.net/images/optimistic.png)\n\nBut wait! There's more! You can do short options:\n-------------------------------------------------\n \nshort.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\n````\n\n***\n\n $ ./short.js -x 10 -y 21\n (10,21)\n\nAnd booleans, both long and short (and grouped):\n----------------------------------\n\nbool.js:\n\n````javascript\n#!/usr/bin/env node\nvar util = require('util');\nvar argv = require('optimist').argv;\n\nif (argv.s) {\n util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: ');\n}\nconsole.log(\n (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '')\n);\n````\n\n***\n\n $ ./bool.js -s\n The cat says: meow\n \n $ ./bool.js -sp\n The cat says: meow.\n\n $ ./bool.js -sp --fr\n Le chat dit: miaou.\n\nAnd non-hypenated options too! Just use `argv._`!\n-------------------------------------------------\n \nnonopt.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\nconsole.log(argv._);\n````\n\n***\n\n $ ./nonopt.js -x 6.82 -y 3.35 moo\n (6.82,3.35)\n [ 'moo' ]\n \n $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz\n (0.54,1.12)\n [ 'foo', 'bar', 'baz' ]\n\nPlus, Optimist comes with .usage() and .demand()!\n-------------------------------------------------\n\ndivide.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .usage('Usage: $0 -x [num] -y [num]')\n .demand(['x','y'])\n .argv;\n\nconsole.log(argv.x / argv.y);\n````\n\n***\n \n $ ./divide.js -x 55 -y 11\n 5\n \n $ node ./divide.js -x 4.91 -z 2.51\n Usage: node ./divide.js -x [num] -y [num]\n\n Options:\n -x [required]\n -y [required]\n\n Missing required arguments: y\n\nEVEN MORE HOLY COW\n------------------\n\ndefault_singles.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .default('x', 10)\n .default('y', 10)\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_singles.js -x 5\n 15\n\ndefault_hash.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .default({ x : 10, y : 10 })\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_hash.js -y 7\n 17\n\nAnd if you really want to get all descriptive about it...\n---------------------------------------------------------\n\nboolean_single.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .boolean('v')\n .argv\n;\nconsole.dir(argv);\n````\n\n***\n\n $ ./boolean_single.js -v foo bar baz\n true\n [ 'bar', 'baz', 'foo' ]\n\nboolean_double.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .boolean(['x','y','z'])\n .argv\n;\nconsole.dir([ argv.x, argv.y, argv.z ]);\nconsole.dir(argv._);\n````\n\n***\n\n $ ./boolean_double.js -x -z one two three\n [ true, false, true ]\n [ 'one', 'two', 'three' ]\n\nOptimist is here to help...\n---------------------------\n\nYou can describe parameters for help messages and set aliases. Optimist figures\nout how to format a handy help string automatically.\n\nline_count.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .usage('Count the lines in a file.\\nUsage: $0')\n .demand('f')\n .alias('f', 'file')\n .describe('f', 'Load a file')\n .argv\n;\n\nvar fs = require('fs');\nvar s = fs.createReadStream(argv.file);\n\nvar lines = 0;\ns.on('data', function (buf) {\n lines += buf.toString().match(/\\n/g).length;\n});\n\ns.on('end', function () {\n console.log(lines);\n});\n````\n\n***\n\n $ node line_count.js\n Count the lines in a file.\n Usage: node ./line_count.js\n\n Options:\n -f, --file Load a file [required]\n\n Missing required arguments: f\n\n $ node line_count.js --file line_count.js \n 20\n \n $ node line_count.js -f line_count.js \n 20\n\nmethods\n=======\n\nBy itself,\n\n````javascript\nrequire('optimist').argv\n`````\n\nwill use `process.argv` array to construct the `argv` object.\n\nYou can pass in the `process.argv` yourself:\n\n````javascript\nrequire('optimist')([ '-x', '1', '-y', '2' ]).argv\n````\n\nor use .parse() to do the same thing:\n\n````javascript\nrequire('optimist').parse([ '-x', '1', '-y', '2' ])\n````\n\nThe rest of these methods below come in just before the terminating `.argv`.\n\n.alias(key, alias)\n------------------\n\nSet key names as equivalent such that updates to a key will propagate to aliases\nand vice-versa.\n\nOptionally `.alias()` can take an object that maps keys to aliases.\n\n.default(key, value)\n--------------------\n\nSet `argv[key]` to `value` if no option was specified on `process.argv`.\n\nOptionally `.default()` can take an object that maps keys to default values.\n\n.demand(key)\n------------\n\nIf `key` is a string, show the usage information and exit if `key` wasn't\nspecified in `process.argv`.\n\nIf `key` is a number, demand at least as many non-option arguments, which show\nup in `argv._`.\n\nIf `key` is an Array, demand each element.\n\n.describe(key, desc)\n--------------------\n\nDescribe a `key` for the generated usage information.\n\nOptionally `.describe()` can take an object that maps keys to descriptions.\n\n.options(key, opt)\n------------------\n\nInstead of chaining together `.alias().demand().default()`, you can specify\nkeys in `opt` for each of the chainable methods.\n\nFor example:\n\n````javascript\nvar argv = require('optimist')\n .options('f', {\n alias : 'file',\n default : '/etc/passwd',\n })\n .argv\n;\n````\n\nis the same as\n\n````javascript\nvar argv = require('optimist')\n .alias('f', 'file')\n .default('f', '/etc/passwd')\n .argv\n;\n````\n\nOptionally `.options()` can take an object that maps keys to `opt` parameters.\n\n.usage(message)\n---------------\n\nSet a usage message to show which commands to use. Inside `message`, the string\n`$0` will get interpolated to the current script name or node command for the\npresent script similar to how `$0` works in bash or perl.\n\n.check(fn)\n----------\n\nCheck that certain conditions are met in the provided arguments.\n\nIf `fn` throws or returns `false`, show the thrown error, usage information, and\nexit.\n\n.boolean(key)\n-------------\n\nInterpret `key` as a boolean. If a non-flag option follows `key` in\n`process.argv`, that string won't get set as the value of `key`.\n\nIf `key` never shows up as a flag in `process.arguments`, `argv[key]` will be\n`false`.\n\nIf `key` is an Array, interpret all the elements as booleans.\n\n.string(key)\n------------\n\nTell the parser logic not to interpret `key` as a number or boolean.\nThis can be useful if you need to preserve leading zeros in an input.\n\nIf `key` is an Array, interpret all the elements as strings.\n\n.wrap(columns)\n--------------\n\nFormat usage output to wrap at `columns` many columns.\n\n.help()\n-------\n\nReturn the generated usage string.\n\n.showHelp(fn=console.error)\n---------------------------\n\nPrint the usage data using `fn` for printing.\n\n.parse(args)\n------------\n\nParse `args` instead of `process.argv`. Returns the `argv` object.\n\n.argv\n-----\n\nGet the arguments as a plain old object.\n\nArguments without a corresponding flag show up in the `argv._` array.\n\nThe script name or node command is available at `argv.$0` similarly to how `$0`\nworks in bash or perl.\n\nparsing tricks\n==============\n\nstop parsing\n------------\n\nUse `--` to stop parsing flags and stuff the remainder into `argv._`.\n\n $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4\n { _: [ '-c', '3', '-d', '4' ],\n '$0': 'node ./examples/reflect.js',\n a: 1,\n b: 2 }\n\nnegate fields\n-------------\n\nIf you want to explicity set a field to false instead of just leaving it\nundefined or to override a default you can do `--no-key`.\n\n $ node examples/reflect.js -a --no-b\n { _: [],\n '$0': 'node ./examples/reflect.js',\n a: true,\n b: false }\n\nnumbers\n-------\n\nEvery argument that looks like a number (`!isNaN(Number(arg))`) is converted to\none. This way you can just `net.createConnection(argv.port)` and you can add\nnumbers out of `argv` with `+` without having that mean concatenation,\nwhich is super frustrating.\n\nduplicates\n----------\n\nIf you specify a flag multiple times it will get turned into an array containing\nall the values in order.\n\n $ node examples/reflect.js -x 5 -x 8 -x 0\n { _: [],\n '$0': 'node ./examples/reflect.js',\n x: [ 5, 8, 0 ] }\n\ndot notation\n------------\n\nWhen you use dots (`.`s) in argument names, an implicit object path is assumed.\nThis lets you organize arguments into nested objects.\n\n $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5\n { _: [],\n '$0': 'node ./examples/reflect.js',\n foo: { bar: { baz: 33 }, quux: 5 } }\n\nshort numbers\n-------------\n\nShort numeric `head -n5` style argument work too:\n\n $ node reflect.js -n123 -m456\n { '3': true,\n '6': true,\n _: [],\n '$0': 'node ./reflect.js',\n n: 123,\n m: 456 }\n\ninstallation\n============\n\nWith [npm](http://github.com/isaacs/npm), just do:\n npm install optimist\n \nor clone this project on github:\n\n git clone http://github.com/substack/node-optimist.git\n\nTo run the tests with [expresso](http://github.com/visionmedia/expresso),\njust do:\n \n expresso\n\ninspired By\n===========\n\nThis module is loosely inspired by Perl's\n[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm).\n","readmeFilename":"readme.markdown","_id":"optimist@0.5.1","dist":{"shasum":"9f6a34014ca8344a60a5d39734436f49d2bbe4f5","tarball":"http://localhost:1337/optimist/-/optimist-0.5.1.tgz"},"_from":".","_npmVersion":"1.2.2","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}},"0.5.2":{"name":"optimist","version":"0.5.2","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","dependencies":{"wordwrap":"~0.0.2"},"devDependencies":{"hashish":"~0.0.4","tap":"~0.4.0"},"scripts":{"test":"tap ./test/*.js"},"repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"readme":"optimist\n========\n\nOptimist is a node.js library for option parsing for people who hate option\nparsing. More specifically, this module is for people who like all the --bells\nand -whistlz of program usage but think optstrings are a waste of time.\n\nWith optimist, option parsing doesn't have to suck (as much).\n\n[![build status](https://secure.travis-ci.org/substack/node-optimist.png)](http://travis-ci.org/substack/node-optimist)\n\nexamples\n========\n\nWith Optimist, the options are just a hash! No optstrings attached.\n-------------------------------------------------------------------\n\nxup.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\n\nif (argv.rif - 5 * argv.xup > 7.138) {\n console.log('Buy more riffiwobbles');\n}\nelse {\n console.log('Sell the xupptumblers');\n}\n````\n\n***\n\n $ ./xup.js --rif=55 --xup=9.52\n Buy more riffiwobbles\n \n $ ./xup.js --rif 12 --xup 8.1\n Sell the xupptumblers\n\n![This one's optimistic.](http://substack.net/images/optimistic.png)\n\nBut wait! There's more! You can do short options:\n-------------------------------------------------\n \nshort.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\n````\n\n***\n\n $ ./short.js -x 10 -y 21\n (10,21)\n\nAnd booleans, both long and short (and grouped):\n----------------------------------\n\nbool.js:\n\n````javascript\n#!/usr/bin/env node\nvar util = require('util');\nvar argv = require('optimist').argv;\n\nif (argv.s) {\n util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: ');\n}\nconsole.log(\n (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '')\n);\n````\n\n***\n\n $ ./bool.js -s\n The cat says: meow\n \n $ ./bool.js -sp\n The cat says: meow.\n\n $ ./bool.js -sp --fr\n Le chat dit: miaou.\n\nAnd non-hypenated options too! Just use `argv._`!\n-------------------------------------------------\n \nnonopt.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\nconsole.log(argv._);\n````\n\n***\n\n $ ./nonopt.js -x 6.82 -y 3.35 moo\n (6.82,3.35)\n [ 'moo' ]\n \n $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz\n (0.54,1.12)\n [ 'foo', 'bar', 'baz' ]\n\nPlus, Optimist comes with .usage() and .demand()!\n-------------------------------------------------\n\ndivide.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .usage('Usage: $0 -x [num] -y [num]')\n .demand(['x','y'])\n .argv;\n\nconsole.log(argv.x / argv.y);\n````\n\n***\n \n $ ./divide.js -x 55 -y 11\n 5\n \n $ node ./divide.js -x 4.91 -z 2.51\n Usage: node ./divide.js -x [num] -y [num]\n\n Options:\n -x [required]\n -y [required]\n\n Missing required arguments: y\n\nEVEN MORE HOLY COW\n------------------\n\ndefault_singles.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .default('x', 10)\n .default('y', 10)\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_singles.js -x 5\n 15\n\ndefault_hash.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .default({ x : 10, y : 10 })\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_hash.js -y 7\n 17\n\nAnd if you really want to get all descriptive about it...\n---------------------------------------------------------\n\nboolean_single.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .boolean('v')\n .argv\n;\nconsole.dir(argv);\n````\n\n***\n\n $ ./boolean_single.js -v foo bar baz\n true\n [ 'bar', 'baz', 'foo' ]\n\nboolean_double.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .boolean(['x','y','z'])\n .argv\n;\nconsole.dir([ argv.x, argv.y, argv.z ]);\nconsole.dir(argv._);\n````\n\n***\n\n $ ./boolean_double.js -x -z one two three\n [ true, false, true ]\n [ 'one', 'two', 'three' ]\n\nOptimist is here to help...\n---------------------------\n\nYou can describe parameters for help messages and set aliases. Optimist figures\nout how to format a handy help string automatically.\n\nline_count.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .usage('Count the lines in a file.\\nUsage: $0')\n .demand('f')\n .alias('f', 'file')\n .describe('f', 'Load a file')\n .argv\n;\n\nvar fs = require('fs');\nvar s = fs.createReadStream(argv.file);\n\nvar lines = 0;\ns.on('data', function (buf) {\n lines += buf.toString().match(/\\n/g).length;\n});\n\ns.on('end', function () {\n console.log(lines);\n});\n````\n\n***\n\n $ node line_count.js\n Count the lines in a file.\n Usage: node ./line_count.js\n\n Options:\n -f, --file Load a file [required]\n\n Missing required arguments: f\n\n $ node line_count.js --file line_count.js \n 20\n \n $ node line_count.js -f line_count.js \n 20\n\nmethods\n=======\n\nBy itself,\n\n````javascript\nrequire('optimist').argv\n`````\n\nwill use `process.argv` array to construct the `argv` object.\n\nYou can pass in the `process.argv` yourself:\n\n````javascript\nrequire('optimist')([ '-x', '1', '-y', '2' ]).argv\n````\n\nor use .parse() to do the same thing:\n\n````javascript\nrequire('optimist').parse([ '-x', '1', '-y', '2' ])\n````\n\nThe rest of these methods below come in just before the terminating `.argv`.\n\n.alias(key, alias)\n------------------\n\nSet key names as equivalent such that updates to a key will propagate to aliases\nand vice-versa.\n\nOptionally `.alias()` can take an object that maps keys to aliases.\n\n.default(key, value)\n--------------------\n\nSet `argv[key]` to `value` if no option was specified on `process.argv`.\n\nOptionally `.default()` can take an object that maps keys to default values.\n\n.demand(key)\n------------\n\nIf `key` is a string, show the usage information and exit if `key` wasn't\nspecified in `process.argv`.\n\nIf `key` is a number, demand at least as many non-option arguments, which show\nup in `argv._`.\n\nIf `key` is an Array, demand each element.\n\n.describe(key, desc)\n--------------------\n\nDescribe a `key` for the generated usage information.\n\nOptionally `.describe()` can take an object that maps keys to descriptions.\n\n.options(key, opt)\n------------------\n\nInstead of chaining together `.alias().demand().default()`, you can specify\nkeys in `opt` for each of the chainable methods.\n\nFor example:\n\n````javascript\nvar argv = require('optimist')\n .options('f', {\n alias : 'file',\n default : '/etc/passwd',\n })\n .argv\n;\n````\n\nis the same as\n\n````javascript\nvar argv = require('optimist')\n .alias('f', 'file')\n .default('f', '/etc/passwd')\n .argv\n;\n````\n\nOptionally `.options()` can take an object that maps keys to `opt` parameters.\n\n.usage(message)\n---------------\n\nSet a usage message to show which commands to use. Inside `message`, the string\n`$0` will get interpolated to the current script name or node command for the\npresent script similar to how `$0` works in bash or perl.\n\n.check(fn)\n----------\n\nCheck that certain conditions are met in the provided arguments.\n\nIf `fn` throws or returns `false`, show the thrown error, usage information, and\nexit.\n\n.boolean(key)\n-------------\n\nInterpret `key` as a boolean. If a non-flag option follows `key` in\n`process.argv`, that string won't get set as the value of `key`.\n\nIf `key` never shows up as a flag in `process.arguments`, `argv[key]` will be\n`false`.\n\nIf `key` is an Array, interpret all the elements as booleans.\n\n.string(key)\n------------\n\nTell the parser logic not to interpret `key` as a number or boolean.\nThis can be useful if you need to preserve leading zeros in an input.\n\nIf `key` is an Array, interpret all the elements as strings.\n\n.wrap(columns)\n--------------\n\nFormat usage output to wrap at `columns` many columns.\n\n.help()\n-------\n\nReturn the generated usage string.\n\n.showHelp(fn=console.error)\n---------------------------\n\nPrint the usage data using `fn` for printing.\n\n.parse(args)\n------------\n\nParse `args` instead of `process.argv`. Returns the `argv` object.\n\n.argv\n-----\n\nGet the arguments as a plain old object.\n\nArguments without a corresponding flag show up in the `argv._` array.\n\nThe script name or node command is available at `argv.$0` similarly to how `$0`\nworks in bash or perl.\n\nparsing tricks\n==============\n\nstop parsing\n------------\n\nUse `--` to stop parsing flags and stuff the remainder into `argv._`.\n\n $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4\n { _: [ '-c', '3', '-d', '4' ],\n '$0': 'node ./examples/reflect.js',\n a: 1,\n b: 2 }\n\nnegate fields\n-------------\n\nIf you want to explicity set a field to false instead of just leaving it\nundefined or to override a default you can do `--no-key`.\n\n $ node examples/reflect.js -a --no-b\n { _: [],\n '$0': 'node ./examples/reflect.js',\n a: true,\n b: false }\n\nnumbers\n-------\n\nEvery argument that looks like a number (`!isNaN(Number(arg))`) is converted to\none. This way you can just `net.createConnection(argv.port)` and you can add\nnumbers out of `argv` with `+` without having that mean concatenation,\nwhich is super frustrating.\n\nduplicates\n----------\n\nIf you specify a flag multiple times it will get turned into an array containing\nall the values in order.\n\n $ node examples/reflect.js -x 5 -x 8 -x 0\n { _: [],\n '$0': 'node ./examples/reflect.js',\n x: [ 5, 8, 0 ] }\n\ndot notation\n------------\n\nWhen you use dots (`.`s) in argument names, an implicit object path is assumed.\nThis lets you organize arguments into nested objects.\n\n $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5\n { _: [],\n '$0': 'node ./examples/reflect.js',\n foo: { bar: { baz: 33 }, quux: 5 } }\n\nshort numbers\n-------------\n\nShort numeric `head -n5` style argument work too:\n\n $ node reflect.js -n123 -m456\n { '3': true,\n '6': true,\n _: [],\n '$0': 'node ./reflect.js',\n n: 123,\n m: 456 }\n\ninstallation\n============\n\nWith [npm](http://github.com/isaacs/npm), just do:\n npm install optimist\n \nor clone this project on github:\n\n git clone http://github.com/substack/node-optimist.git\n\nTo run the tests with [expresso](http://github.com/visionmedia/expresso),\njust do:\n \n expresso\n\ninspired By\n===========\n\nThis module is loosely inspired by Perl's\n[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm).\n","readmeFilename":"readme.markdown","_id":"optimist@0.5.2","dist":{"shasum":"85c8c1454b3315e4a78947e857b1df033450bfbc","tarball":"http://localhost:1337/optimist/-/optimist-0.5.2.tgz"},"_from":".","_npmVersion":"1.2.2","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}},"0.6.0":{"name":"optimist","version":"0.6.0","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","dependencies":{"wordwrap":"~0.0.2","minimist":"~0.0.1"},"devDependencies":{"hashish":"~0.0.4","tap":"~0.4.0"},"scripts":{"test":"tap ./test/*.js"},"repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"readme":"optimist\n========\n\nOptimist is a node.js library for option parsing for people who hate option\nparsing. More specifically, this module is for people who like all the --bells\nand -whistlz of program usage but think optstrings are a waste of time.\n\nWith optimist, option parsing doesn't have to suck (as much).\n\n[![build status](https://secure.travis-ci.org/substack/node-optimist.png)](http://travis-ci.org/substack/node-optimist)\n\nexamples\n========\n\nWith Optimist, the options are just a hash! No optstrings attached.\n-------------------------------------------------------------------\n\nxup.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\n\nif (argv.rif - 5 * argv.xup > 7.138) {\n console.log('Buy more riffiwobbles');\n}\nelse {\n console.log('Sell the xupptumblers');\n}\n````\n\n***\n\n $ ./xup.js --rif=55 --xup=9.52\n Buy more riffiwobbles\n \n $ ./xup.js --rif 12 --xup 8.1\n Sell the xupptumblers\n\n![This one's optimistic.](http://substack.net/images/optimistic.png)\n\nBut wait! There's more! You can do short options:\n-------------------------------------------------\n \nshort.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\n````\n\n***\n\n $ ./short.js -x 10 -y 21\n (10,21)\n\nAnd booleans, both long and short (and grouped):\n----------------------------------\n\nbool.js:\n\n````javascript\n#!/usr/bin/env node\nvar util = require('util');\nvar argv = require('optimist').argv;\n\nif (argv.s) {\n util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: ');\n}\nconsole.log(\n (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '')\n);\n````\n\n***\n\n $ ./bool.js -s\n The cat says: meow\n \n $ ./bool.js -sp\n The cat says: meow.\n\n $ ./bool.js -sp --fr\n Le chat dit: miaou.\n\nAnd non-hypenated options too! Just use `argv._`!\n-------------------------------------------------\n \nnonopt.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\nconsole.log(argv._);\n````\n\n***\n\n $ ./nonopt.js -x 6.82 -y 3.35 moo\n (6.82,3.35)\n [ 'moo' ]\n \n $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz\n (0.54,1.12)\n [ 'foo', 'bar', 'baz' ]\n\nPlus, Optimist comes with .usage() and .demand()!\n-------------------------------------------------\n\ndivide.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .usage('Usage: $0 -x [num] -y [num]')\n .demand(['x','y'])\n .argv;\n\nconsole.log(argv.x / argv.y);\n````\n\n***\n \n $ ./divide.js -x 55 -y 11\n 5\n \n $ node ./divide.js -x 4.91 -z 2.51\n Usage: node ./divide.js -x [num] -y [num]\n\n Options:\n -x [required]\n -y [required]\n\n Missing required arguments: y\n\nEVEN MORE HOLY COW\n------------------\n\ndefault_singles.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .default('x', 10)\n .default('y', 10)\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_singles.js -x 5\n 15\n\ndefault_hash.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .default({ x : 10, y : 10 })\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_hash.js -y 7\n 17\n\nAnd if you really want to get all descriptive about it...\n---------------------------------------------------------\n\nboolean_single.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .boolean('v')\n .argv\n;\nconsole.dir(argv);\n````\n\n***\n\n $ ./boolean_single.js -v foo bar baz\n true\n [ 'bar', 'baz', 'foo' ]\n\nboolean_double.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .boolean(['x','y','z'])\n .argv\n;\nconsole.dir([ argv.x, argv.y, argv.z ]);\nconsole.dir(argv._);\n````\n\n***\n\n $ ./boolean_double.js -x -z one two three\n [ true, false, true ]\n [ 'one', 'two', 'three' ]\n\nOptimist is here to help...\n---------------------------\n\nYou can describe parameters for help messages and set aliases. Optimist figures\nout how to format a handy help string automatically.\n\nline_count.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .usage('Count the lines in a file.\\nUsage: $0')\n .demand('f')\n .alias('f', 'file')\n .describe('f', 'Load a file')\n .argv\n;\n\nvar fs = require('fs');\nvar s = fs.createReadStream(argv.file);\n\nvar lines = 0;\ns.on('data', function (buf) {\n lines += buf.toString().match(/\\n/g).length;\n});\n\ns.on('end', function () {\n console.log(lines);\n});\n````\n\n***\n\n $ node line_count.js\n Count the lines in a file.\n Usage: node ./line_count.js\n\n Options:\n -f, --file Load a file [required]\n\n Missing required arguments: f\n\n $ node line_count.js --file line_count.js \n 20\n \n $ node line_count.js -f line_count.js \n 20\n\nmethods\n=======\n\nBy itself,\n\n````javascript\nrequire('optimist').argv\n`````\n\nwill use `process.argv` array to construct the `argv` object.\n\nYou can pass in the `process.argv` yourself:\n\n````javascript\nrequire('optimist')([ '-x', '1', '-y', '2' ]).argv\n````\n\nor use .parse() to do the same thing:\n\n````javascript\nrequire('optimist').parse([ '-x', '1', '-y', '2' ])\n````\n\nThe rest of these methods below come in just before the terminating `.argv`.\n\n.alias(key, alias)\n------------------\n\nSet key names as equivalent such that updates to a key will propagate to aliases\nand vice-versa.\n\nOptionally `.alias()` can take an object that maps keys to aliases.\n\n.default(key, value)\n--------------------\n\nSet `argv[key]` to `value` if no option was specified on `process.argv`.\n\nOptionally `.default()` can take an object that maps keys to default values.\n\n.demand(key)\n------------\n\nIf `key` is a string, show the usage information and exit if `key` wasn't\nspecified in `process.argv`.\n\nIf `key` is a number, demand at least as many non-option arguments, which show\nup in `argv._`.\n\nIf `key` is an Array, demand each element.\n\n.describe(key, desc)\n--------------------\n\nDescribe a `key` for the generated usage information.\n\nOptionally `.describe()` can take an object that maps keys to descriptions.\n\n.options(key, opt)\n------------------\n\nInstead of chaining together `.alias().demand().default()`, you can specify\nkeys in `opt` for each of the chainable methods.\n\nFor example:\n\n````javascript\nvar argv = require('optimist')\n .options('f', {\n alias : 'file',\n default : '/etc/passwd',\n })\n .argv\n;\n````\n\nis the same as\n\n````javascript\nvar argv = require('optimist')\n .alias('f', 'file')\n .default('f', '/etc/passwd')\n .argv\n;\n````\n\nOptionally `.options()` can take an object that maps keys to `opt` parameters.\n\n.usage(message)\n---------------\n\nSet a usage message to show which commands to use. Inside `message`, the string\n`$0` will get interpolated to the current script name or node command for the\npresent script similar to how `$0` works in bash or perl.\n\n.check(fn)\n----------\n\nCheck that certain conditions are met in the provided arguments.\n\nIf `fn` throws or returns `false`, show the thrown error, usage information, and\nexit.\n\n.boolean(key)\n-------------\n\nInterpret `key` as a boolean. If a non-flag option follows `key` in\n`process.argv`, that string won't get set as the value of `key`.\n\nIf `key` never shows up as a flag in `process.arguments`, `argv[key]` will be\n`false`.\n\nIf `key` is an Array, interpret all the elements as booleans.\n\n.string(key)\n------------\n\nTell the parser logic not to interpret `key` as a number or boolean.\nThis can be useful if you need to preserve leading zeros in an input.\n\nIf `key` is an Array, interpret all the elements as strings.\n\n.wrap(columns)\n--------------\n\nFormat usage output to wrap at `columns` many columns.\n\n.help()\n-------\n\nReturn the generated usage string.\n\n.showHelp(fn=console.error)\n---------------------------\n\nPrint the usage data using `fn` for printing.\n\n.parse(args)\n------------\n\nParse `args` instead of `process.argv`. Returns the `argv` object.\n\n.argv\n-----\n\nGet the arguments as a plain old object.\n\nArguments without a corresponding flag show up in the `argv._` array.\n\nThe script name or node command is available at `argv.$0` similarly to how `$0`\nworks in bash or perl.\n\nparsing tricks\n==============\n\nstop parsing\n------------\n\nUse `--` to stop parsing flags and stuff the remainder into `argv._`.\n\n $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4\n { _: [ '-c', '3', '-d', '4' ],\n '$0': 'node ./examples/reflect.js',\n a: 1,\n b: 2 }\n\nnegate fields\n-------------\n\nIf you want to explicity set a field to false instead of just leaving it\nundefined or to override a default you can do `--no-key`.\n\n $ node examples/reflect.js -a --no-b\n { _: [],\n '$0': 'node ./examples/reflect.js',\n a: true,\n b: false }\n\nnumbers\n-------\n\nEvery argument that looks like a number (`!isNaN(Number(arg))`) is converted to\none. This way you can just `net.createConnection(argv.port)` and you can add\nnumbers out of `argv` with `+` without having that mean concatenation,\nwhich is super frustrating.\n\nduplicates\n----------\n\nIf you specify a flag multiple times it will get turned into an array containing\nall the values in order.\n\n $ node examples/reflect.js -x 5 -x 8 -x 0\n { _: [],\n '$0': 'node ./examples/reflect.js',\n x: [ 5, 8, 0 ] }\n\ndot notation\n------------\n\nWhen you use dots (`.`s) in argument names, an implicit object path is assumed.\nThis lets you organize arguments into nested objects.\n\n $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5\n { _: [],\n '$0': 'node ./examples/reflect.js',\n foo: { bar: { baz: 33 }, quux: 5 } }\n\nshort numbers\n-------------\n\nShort numeric `head -n5` style argument work too:\n\n $ node reflect.js -n123 -m456\n { '3': true,\n '6': true,\n _: [],\n '$0': 'node ./reflect.js',\n n: 123,\n m: 456 }\n\ninstallation\n============\n\nWith [npm](http://github.com/isaacs/npm), just do:\n npm install optimist\n \nor clone this project on github:\n\n git clone http://github.com/substack/node-optimist.git\n\nTo run the tests with [expresso](http://github.com/visionmedia/expresso),\njust do:\n \n expresso\n\ninspired By\n===========\n\nThis module is loosely inspired by Perl's\n[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm).\n","readmeFilename":"readme.markdown","bugs":{"url":"https://github.com/substack/node-optimist/issues"},"_id":"optimist@0.6.0","dist":{"shasum":"69424826f3405f79f142e6fc3d9ae58d4dbb9200","tarball":"http://localhost:1337/optimist/-/optimist-0.6.0.tgz"},"_from":".","_npmVersion":"1.3.0","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}}},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"description":"Light-weight option parsing with an argv hash. No optstrings attached.","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"time":{"0.0.1":"2010-12-21T14:33:53.354Z","0.0.2":"2010-12-21T14:33:53.354Z","0.0.3":"2010-12-21T14:33:53.354Z","0.0.4":"2010-12-21T14:33:53.354Z","0.0.5":"2010-12-21T14:33:53.354Z","0.0.6":"2010-12-21T14:33:53.354Z","0.0.7":"2010-12-21T14:33:53.354Z","0.1.0":"2010-12-21T14:33:53.354Z","0.1.1":"2010-12-21T14:33:53.354Z","0.1.2":"2010-12-21T14:33:53.354Z","0.1.3":"2010-12-21T14:33:53.354Z","0.1.4":"2011-01-30T07:04:28.963Z","0.1.5":"2011-02-01T08:01:38.160Z","0.1.6":"2011-02-13T23:35:31.427Z","0.1.7":"2011-03-28T05:44:30.304Z","0.1.8":"2011-03-28T21:03:46.234Z","0.1.9":"2011-04-14T03:33:37.811Z","0.2.0":"2011-05-08T03:32:40.650Z","0.2.1":"2011-05-16T07:14:37.232Z","0.2.2":"2011-05-16T09:20:48.490Z","0.2.3":"2011-05-16T19:03:41.732Z","0.2.4":"2011-06-13T04:00:46.046Z","0.2.5":"2011-06-25T22:24:50.361Z","0.2.6":"2011-07-14T21:41:44.257Z","0.2.7":"2011-10-20T02:25:41.335Z","0.2.8":"2011-10-20T03:47:03.659Z","0.3.0":"2011-12-09T08:22:35.261Z","0.3.1":"2011-12-31T08:45:18.568Z","0.3.3":"2012-04-30T06:46:32.091Z","0.3.4":"2012-04-30T06:59:33.018Z","0.3.5":"2012-10-10T11:12:31.230Z","0.3.6":"2013-04-04T04:06:39.393Z","0.3.7":"2013-04-04T04:09:40.361Z","0.4.0":"2013-04-13T19:05:38.560Z","0.5.0":"2013-05-18T22:00:22.299Z","0.5.1":"2013-05-30T07:17:29.830Z","0.5.2":"2013-05-31T03:46:50.271Z","0.6.0":"2013-06-25T08:49:19.511Z"},"users":{"avianflu":true,"mvolkmann":true,"naholyr":true,"vtsvang":true,"linus":true,"pvorb":true,"matthiasg":true,"dshaw":true,"thlorenz":true,"MattiSG":true,"fgribreau":true,"clux":true,"hughsk":true,"pid":true,"gillesruppert":true,"jswartwood":true,"tokuhirom":true,"kennethjor":true,"chevex":true,"tivac":true,"konklone":true,"hij1nx":true,"luk":true,"booyaa":true,"megadrive":true,"nrn":true,"kastor":true,"joshthegeek":true,"charmander":true,"zaphod1984":true,"ljharb":true,"everywhere.js":true,"fiveisprime":true,"florianwendelborn":true,"lexa":true,"nak2k":true,"spekkionu":true,"conradz":true,"leesei":true,"pana":true},"_attachments":{"optimist-0.6.0.tgz":{"content_type":"application/octet-stream","revpos":132,"digest":"md5-I0ZgAx6amh/JRlF/tCQh0A==","length":12142,"stub":true},"optimist-0.5.2.tgz":{"content_type":"application/octet-stream","revpos":129,"digest":"md5-meoV8NdbCXOtbQcUb7qjUA==","length":13233,"stub":true},"optimist-0.5.1.tgz":{"content_type":"application/octet-stream","revpos":127,"digest":"md5-gE3NkJCbcKOoRQ1uMWn2nw==","length":13087,"stub":true},"optimist-0.5.0.tgz":{"content_type":"application/octet-stream","revpos":124,"digest":"md5-uQDzmYafvd/HvTJ3mUyLgw==","length":12984,"stub":true},"optimist-0.4.0.tgz":{"content_type":"application/octet-stream","revpos":121,"digest":"md5-Qka6k4uV5oWTww24Qt5P1Q==","length":12765,"stub":true},"optimist-0.3.7.tgz":{"content_type":"application/octet-stream","revpos":118,"digest":"md5-p4myQcSLDtU5PdiW3z137w==","length":12549,"stub":true},"optimist-0.3.6.tgz":{"content_type":"application/octet-stream","revpos":116,"digest":"md5-DueY6+6h+OTzM7P4iu5l9Q==","length":12598,"stub":true},"optimist-0.3.5.tgz":{"content_type":"application/octet-stream","revpos":101,"digest":"md5-5oFLAuVTvnhrV97GjqYmCA==","length":12463,"stub":true},"optimist-0.3.4.tgz":{"content_type":"application/octet-stream","revpos":88,"digest":"md5-kYOcoyFYV6OViKIqfMCxTA==","length":12538,"stub":true},"optimist-0.3.3.tgz":{"content_type":"application/octet-stream","revpos":83,"digest":"md5-Eq2+Ja5uGwC3gWW6Z0Z1gA==","length":12495,"stub":true},"optimist-0.3.1.tgz":{"content_type":"application/octet-stream","revpos":79,"digest":"md5-eFa9A+zxtlqYkE1zVnuUmA==","length":11800,"stub":true},"optimist-0.3.0.tgz":{"content_type":"application/octet-stream","revpos":75,"digest":"md5-ixo6YIBhoVFxqPN+KKyeuw==","length":11788,"stub":true},"optimist-0.2.8.tgz":{"content_type":"application/octet-stream","revpos":70,"digest":"md5-4LAF42qgFkJWg+BctkReNg==","length":11471,"stub":true},"optimist-0.2.7.tgz":{"content_type":"application/octet-stream","revpos":68,"digest":"md5-9GdCLdqH8jznVkbyjf/H8Q==","length":11337,"stub":true},"optimist-0.2.6.tgz":{"content_type":"application/octet-stream","revpos":64,"digest":"md5-t0BAQ1OFo1Sib+eStMAJxQ==","length":11308,"stub":true},"optimist-0.2.5.tgz":{"content_type":"application/octet-stream","revpos":62,"digest":"md5-QJVI872hENNvWGP+Ry+tLg==","length":11304,"stub":true},"optimist-0.2.4.tgz":{"content_type":"application/octet-stream","revpos":60,"digest":"md5-V4yDhXE3ifUaQzmOsLTgEg==","length":11161,"stub":true},"optimist-0.2.3.tgz":{"content_type":"application/octet-stream","revpos":58,"digest":"md5-NRVX0hVlcRjZdC92K6YIIw==","length":9713,"stub":true},"optimist-0.2.2.tgz":{"content_type":"application/octet-stream","revpos":56,"digest":"md5-fKrLoZrWtXw+5ITaXcXgBw==","length":9595,"stub":true},"optimist-0.2.1.tgz":{"content_type":"application/octet-stream","revpos":54,"digest":"md5-FpyRtmufNwNV17Lj3bE0VA==","length":9446,"stub":true},"optimist-0.2.0.tgz":{"content_type":"application/octet-stream","revpos":52,"digest":"md5-y8zpVGItFFYgNe3iNal2Jw==","length":8982,"stub":true},"optimist-0.0.3.tgz":{"content_type":"application/octet-stream","revpos":48,"digest":"md5-Gu0oCNCbD1Uki/2RcH2dEA==","length":3895,"stub":true},"optimist-0.1.9.tgz":{"content_type":"application/octet-stream","revpos":42,"digest":"md5-pEYFZ2Ayic4OVE+XnBgiFA==","length":7870,"stub":true},"optimist-0.1.8.tgz":{"content_type":"application/octet-stream","revpos":40,"digest":"md5-KSQ/QYT218dKyFforjobWw==","length":7740,"stub":true},"optimist-0.1.7.tgz":{"content_type":"application/octet-stream","revpos":38,"digest":"md5-kuMOFCqPA+3fZe5wAoJkvQ==","length":7650,"stub":true},"optimist-0.1.6.tgz":{"content_type":"application/octet-stream","revpos":36,"digest":"md5-VQGuFlwNqfW9dluVGAPung==","length":7547,"stub":true},"optimist-0.1.5.tgz":{"content_type":"application/octet-stream","revpos":34,"digest":"md5-s/q19VNxIBEt8kJMKIgLgQ==","length":7054,"stub":true},"optimist-0.1.4.tgz":{"content_type":"application/octet-stream","revpos":28,"digest":"md5-qo9j4yQZZ2bVphRNdykI/Q==","length":6431,"stub":true},"optimist-0.1.3.tgz":{"content_type":"application/octet-stream","revpos":26,"digest":"md5-gjKi5e08v+EsS4pgDok9cg==","length":6612,"stub":true},"optimist-0.1.2.tgz":{"content_type":"application/octet-stream","revpos":24,"digest":"md5-scvhz0+WQU6CQ9GOr4upWw==","length":6575,"stub":true},"optimist-0.1.1.tgz":{"content_type":"application/octet-stream","revpos":22,"digest":"md5-eRK/UJ1K8f2KzTRdzoS/Qw==","length":6179,"stub":true},"optimist-0.1.0.tgz":{"content_type":"application/octet-stream","revpos":20,"digest":"md5-pa99w4YezJSc5rwUaM8dvQ==","length":5809,"stub":true},"optimist-0.0.7.tgz":{"content_type":"application/octet-stream","revpos":18,"digest":"md5-pRDoQx+Kl+XL9l/O1NRV2A==","length":5470,"stub":true},"optimist-0.0.6.tgz":{"content_type":"application/octet-stream","revpos":13,"digest":"md5-prbC00jgIbKx0pRJk3H3Yw==","length":5470,"stub":true},"optimist-0.0.5.tgz":{"content_type":"application/octet-stream","revpos":11,"digest":"md5-zMnStZ7TmRET2xBnt2V4Qg==","length":5342,"stub":true},"optimist-0.0.4.tgz":{"content_type":"application/octet-stream","revpos":9,"digest":"md5-y7Y+/2R3qu0qa+5I0mJDRA==","length":5092,"stub":true},"optimist-0.0.2.tgz":{"content_type":"application/octet-stream","revpos":5,"digest":"md5-qhp0ch0rzo1O4GTFO0AOtg==","length":3128,"stub":true},"optimist-0.0.1.tgz":{"content_type":"application/octet-stream","revpos":3,"digest":"md5-cL87g7wfaP2HMV5LK9Gh+A==","length":3130,"stub":true}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/f3/e8/2d6a0b75ad5cebd09177d93f572dbd8b877ee9f1505b2e84e03810fa0412e4904060be7d2a4df4221b1bb92884db886826bf8cd26634667a2d103a999438 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/f3/e8/2d6a0b75ad5cebd09177d93f572dbd8b877ee9f1505b2e84e03810fa0412e4904060be7d2a4df4221b1bb92884db886826bf8cd26634667a2d103a999438
new file mode 100644
index 0000000000..9b3718b2d0
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/f3/e8/2d6a0b75ad5cebd09177d93f572dbd8b877ee9f1505b2e84e03810fa0412e4904060be7d2a4df4221b1bb92884db886826bf8cd26634667a2d103a999438
@@ -0,0 +1 @@
+{"objects":[{"id":"foo"},{"id":"bar"},{"id":"baz"}]} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/f5/91/da7ce6e308dcaa672b8625ca0491cafed6726ceda16ffbcdd3f7661e5eb5b1aae2bd99960acb3a2fcc61a14edff79dd7bd610b27c57fea8aff535dbc519f b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/f5/91/da7ce6e308dcaa672b8625ca0491cafed6726ceda16ffbcdd3f7661e5eb5b1aae2bd99960acb3a2fcc61a14edff79dd7bd610b27c57fea8aff535dbc519f
new file mode 100644
index 0000000000..cd9bffe29a
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/f5/91/da7ce6e308dcaa672b8625ca0491cafed6726ceda16ffbcdd3f7661e5eb5b1aae2bd99960acb3a2fcc61a14edff79dd7bd610b27c57fea8aff535dbc519f
@@ -0,0 +1 @@
+{"_id":"@scope/cond","_rev":"19-d458a706de1740662cd7728d7d7ddf07","name":"@scope/cond","time":{"modified":"2015-02-13T07:33:58.120Z","created":"2014-03-16T20:52:52.236Z","0.0.0":"2014-03-16T20:52:52.236Z","0.0.1":"2014-03-16T21:12:33.393Z","0.0.2":"2014-03-16T21:15:25.430Z"},"versions":{"0.0.0":{},"0.0.1":{},"0.0.2":{}},"dist-tags":{"latest":"0.0.2"},"description":"Restartable error handling system","license":"CC0"} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/f5/bd/a6b78fcf204b1ec0e6069045b44f6669e9aab878bfc891b946e4cecb843f4e87e428b6771ae7b4a2ce8f303e97746763b0642faf89a9b00425297dc78d6a b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/f5/bd/a6b78fcf204b1ec0e6069045b44f6669e9aab878bfc891b946e4cecb843f4e87e428b6771ae7b4a2ce8f303e97746763b0642faf89a9b00425297dc78d6a
new file mode 100644
index 0000000000..075750f868
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/f5/bd/a6b78fcf204b1ec0e6069045b44f6669e9aab878bfc891b946e4cecb843f4e87e428b6771ae7b4a2ce8f303e97746763b0642faf89a9b00425297dc78d6a
@@ -0,0 +1 @@
+{"latest":"1.0.0","a":"0.0.1","b":"0.5.0"} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/fd/37/65c30143da9bd36758e4f19cce0984aac9f6a6a90a2a1ea79ab8acec84841b7b2af4b20e52051d585ac12bef1930d35234d6556319315d5656391257472d b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/fd/37/65c30143da9bd36758e4f19cce0984aac9f6a6a90a2a1ea79ab8acec84841b7b2af4b20e52051d585ac12bef1930d35234d6556319315d5656391257472d
new file mode 100644
index 0000000000..fb33c40d37
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/fd/37/65c30143da9bd36758e4f19cce0984aac9f6a6a90a2a1ea79ab8acec84841b7b2af4b20e52051d585ac12bef1930d35234d6556319315d5656391257472d
@@ -0,0 +1 @@
+{"username":"admin","username2":"foo"} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/06/90/5e61e746e7d543d4bffbfeead5822d45a4e7089a414fbe6f1be007f6cd48 b/deps/npm/test/npm_cache/_cacache/index-v5/06/90/5e61e746e7d543d4bffbfeead5822d45a4e7089a414fbe6f1be007f6cd48
new file mode 100644
index 0000000000..0fb8891984
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/06/90/5e61e746e7d543d4bffbfeead5822d45a4e7089a414fbe6f1be007f6cd48
@@ -0,0 +1,3 @@
+
+f79f1f96542accdfe7c66e2adeebe6230b324be4 {"key":"pacote:tag-manifest:http://localhost:1337/test-repo-url-ssh/-/test-repo-url-ssh-0.0.1.tgz:sha1-KncwfhCL+1cQfEwzSrte9Tldxoo=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833049346,"size":1,"metadata":{"id":"test-repo-url-ssh@0.0.1","manifest":{"name":"test-repo-url-ssh","version":"0.0.1","description":"Test repo with non-github ssh repository url","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+ssh://git@gitlab.com/evanlucas/test-repo-url-ssh.git"},"author":{"name":"Evan Lucas","email":"evanlucas@me.com"},"license":"ISC","_id":"test-repo-url-ssh@0.0.1","dist":{"shasum":"2a77307e108bfb57107c4c334abb5ef5395dc68a","tarball":"http://localhost:1337/test-repo-url-ssh/-/test-repo-url-ssh-0.0.1.tgz"},"_from":".","_npmVersion":"1.4.2","_npmUser":{"name":"evanlucas","email":"evanlucas@me.com"},"maintainers":[{"name":"evanlucas","email":"evanlucas@me.com"}],"directories":{},"_integrity":"sha1-KncwfhCL+1cQfEwzSrte9Tldxoo=","_shasum":"2a77307e108bfb57107c4c334abb5ef5395dc68a","_resolved":"http://localhost:1337/test-repo-url-ssh/-/test-repo-url-ssh-0.0.1.tgz","dependencies":{},"optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_shrinkwrap":null,"bin":null,"bugs":{"url":"https://gitlab.com/evanlucas/test-repo-url-ssh/issues"},"homepage":"https://gitlab.com/evanlucas/test-repo-url-ssh#readme"},"type":"finalized-manifest"}}
+033be10c654046737e09e90415c78249d86bb129 {"key":"pacote:tag-manifest:http://localhost:1337/test-repo-url-ssh/-/test-repo-url-ssh-0.0.1.tgz:sha1-KncwfhCL+1cQfEwzSrte9Tldxoo=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833266232,"size":1,"metadata":{"id":"test-repo-url-ssh@0.0.1","manifest":{"name":"test-repo-url-ssh","version":"0.0.1","description":"Test repo with non-github ssh repository url","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+ssh://git@gitlab.com/evanlucas/test-repo-url-ssh.git"},"author":{"name":"Evan Lucas","email":"evanlucas@me.com"},"license":"ISC","_id":"test-repo-url-ssh@0.0.1","dist":{"shasum":"2a77307e108bfb57107c4c334abb5ef5395dc68a","tarball":"http://localhost:1337/test-repo-url-ssh/-/test-repo-url-ssh-0.0.1.tgz"},"_from":".","_npmVersion":"1.4.2","_npmUser":{"name":"evanlucas","email":"evanlucas@me.com"},"maintainers":[{"name":"evanlucas","email":"evanlucas@me.com"}],"directories":{},"_integrity":"sha1-KncwfhCL+1cQfEwzSrte9Tldxoo=","_shasum":"2a77307e108bfb57107c4c334abb5ef5395dc68a","_resolved":"http://localhost:1337/test-repo-url-ssh/-/test-repo-url-ssh-0.0.1.tgz","dependencies":{},"optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_shrinkwrap":null,"bin":null,"bugs":{"url":"https://gitlab.com/evanlucas/test-repo-url-ssh/issues"},"homepage":"https://gitlab.com/evanlucas/test-repo-url-ssh#readme"},"type":"finalized-manifest"}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/0b/5a/62ce62a24edca98b341182e328ec6d451a459b384cac489f57771ed7e74a b/deps/npm/test/npm_cache/_cacache/index-v5/0b/5a/62ce62a24edca98b341182e328ec6d451a459b384cac489f57771ed7e74a
new file mode 100644
index 0000000000..2225a6556e
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/0b/5a/62ce62a24edca98b341182e328ec6d451a459b384cac489f57771ed7e74a
@@ -0,0 +1,2 @@
+
+d58db47c718e3d30c4c86d7b5ea9fd867dbdbc68 {"key":"pacote:packed-dir:git://localhost:1234/child.git#aef7bbd091eeef812d6364c2e8250b1e4b39a5ba","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547833000938,"size":143} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/0e/d4/8aa7d55331a48f04b5218bb50c1c639e7a3600893f62fde6191d2563e6df b/deps/npm/test/npm_cache/_cacache/index-v5/0e/d4/8aa7d55331a48f04b5218bb50c1c639e7a3600893f62fde6191d2563e6df
new file mode 100644
index 0000000000..ae57211207
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/0e/d4/8aa7d55331a48f04b5218bb50c1c639e7a3600893f62fde6191d2563e6df
@@ -0,0 +1,5 @@
+
+74dc30109273ec856599bc20e75e4a7163722fa7 {"key":"pacote:packed-dir:git://localhost:1234/child.git#8da4c77141205e56a0a30c4a95a13aa221537ea9","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547833118351,"size":143}
+75e68abddffebaf55df7bb36f662ab7faa04b943 {"key":"pacote:packed-dir:git://localhost:1234/child.git#8da4c77141205e56a0a30c4a95a13aa221537ea9","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547833118616,"size":143}
+49f7029d1f223b3bd3eecb19428ace3310fd9f93 {"key":"pacote:packed-dir:git://localhost:1234/child.git#8da4c77141205e56a0a30c4a95a13aa221537ea9","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547833119692,"size":143}
+992f03d4d29fd112cef6fd6afb6af20ad7acfe0b {"key":"pacote:packed-dir:git://localhost:1234/child.git#8da4c77141205e56a0a30c4a95a13aa221537ea9","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547833119999,"size":143} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/13/b5/0178cbb8a4a3e25b821dbdd82db862373a457bbab3fee9c0e305b4f83b37 b/deps/npm/test/npm_cache/_cacache/index-v5/13/b5/0178cbb8a4a3e25b821dbdd82db862373a457bbab3fee9c0e305b4f83b37
new file mode 100644
index 0000000000..b0c1a79bb5
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/13/b5/0178cbb8a4a3e25b821dbdd82db862373a457bbab3fee9c0e305b4f83b37
@@ -0,0 +1,2 @@
+
+95c0e26dc337f0530229453e6eae5e768fc188d3 {"key":"make-fetch-happen:request-cache:http://localhost:1337/clean/-/clean-2.1.6.tgz","integrity":"sha1-QcgLK29UMsYM3bgZMqtWVjtET1I=","time":1547833073369,"size":6288,"metadata":{"url":"http://localhost:1337/clean/-/clean-2.1.6.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["871adf8f5053357c"],"referer":["install"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:clean@http://localhost:1337/clean/-/clean-2.1.6.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:53 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/14/7e/33640d7ecca75f94fce8a3c3b46e111bc08921520f7b2cce032bf8862107 b/deps/npm/test/npm_cache/_cacache/index-v5/14/7e/33640d7ecca75f94fce8a3c3b46e111bc08921520f7b2cce032bf8862107
new file mode 100644
index 0000000000..7546dee83e
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/14/7e/33640d7ecca75f94fce8a3c3b46e111bc08921520f7b2cce032bf8862107
@@ -0,0 +1,3 @@
+
+dda70cf10fd1b63cf6d5d008b56f3a199fea0741 {"key":"make-fetch-happen:request-cache:http://localhost:1337/underscore/-/underscore-1.5.1.tgz","integrity":"sha1-0r3oF9F2/63olKtxRY5oKhS4bck=","time":1547833045352,"size":22746,"metadata":{"url":"http://localhost:1337/underscore/-/underscore-1.5.1.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["4fa97a596a50fc65"],"referer":["bugs underscore"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:underscore@http://localhost:1337/underscore/-/underscore-1.5.1.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:25 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+920b6c736f7d6cfb695de62fc103db9fb5522b33 {"key":"make-fetch-happen:request-cache:http://localhost:1337/underscore/-/underscore-1.5.1.tgz","integrity":"sha1-0r3oF9F2/63olKtxRY5oKhS4bck=","time":1547833262764,"size":22746,"metadata":{"url":"http://localhost:1337/underscore/-/underscore-1.5.1.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["20080b2063fb2e2a"],"referer":["bugs underscore"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:underscore@http://localhost:1337/underscore/-/underscore-1.5.1.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:02 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/15/bf/92c5cbc5f2b5bb51971d6f7d04cf0b3871bdde88a368eed466901917d636 b/deps/npm/test/npm_cache/_cacache/index-v5/15/bf/92c5cbc5f2b5bb51971d6f7d04cf0b3871bdde88a368eed466901917d636
new file mode 100644
index 0000000000..a1c0e1e2b3
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/15/bf/92c5cbc5f2b5bb51971d6f7d04cf0b3871bdde88a368eed466901917d636
@@ -0,0 +1,3 @@
+
+994ba6103d857ed6f02b897b43c714147a25c7d1 {"key":"make-fetch-happen:request-cache:http://localhost:1337/async/-/async-0.2.10.tgz","integrity":"sha1-trvgsGdLnXGXCMo43owjfLUmw9E=","time":1547833073451,"size":15772,"metadata":{"url":"http://localhost:1337/async/-/async-0.2.10.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["871adf8f5053357c"],"referer":["install"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:async@http://localhost:1337/async/-/async-0.2.10.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:53 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+cf44917b107eb08c84c9345d5b79d2bed349755f {"key":"make-fetch-happen:request-cache:http://localhost:1337/async/-/async-0.2.10.tgz","integrity":"sha1-trvgsGdLnXGXCMo43owjfLUmw9E=","time":1547833093330,"size":15772,"metadata":{"url":"http://localhost:1337/async/-/async-0.2.10.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["fcd144259ba74815"],"referer":["install ."],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:async@http://localhost:1337/async/-/async-0.2.10.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:13 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/18/1f/b15fb9d4fbd32e771ad6afadda07bc566c24b4b589c6bbc5c3e996c7a3db b/deps/npm/test/npm_cache/_cacache/index-v5/18/1f/b15fb9d4fbd32e771ad6afadda07bc566c24b4b589c6bbc5c3e996c7a3db
new file mode 100644
index 0000000000..af0dae5043
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/18/1f/b15fb9d4fbd32e771ad6afadda07bc566c24b4b589c6bbc5c3e996c7a3db
@@ -0,0 +1,3 @@
+
+5872147226813473de0d5f3c9bf716a16e27a39e {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/org.couchdb.user:npm_oauth_auth_dummy_user","integrity":null,"time":1547833016269}
+e580567b82439b0fa590acaf46117d7ea73de06c {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/org.couchdb.user:npm_oauth_auth_dummy_user","integrity":null,"time":1547833235770} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/19/db/491ce5fd3b8f5521f62a3d208c8b91325f3f8fe347347649e2e7cb8c10b2 b/deps/npm/test/npm_cache/_cacache/index-v5/19/db/491ce5fd3b8f5521f62a3d208c8b91325f3f8fe347347649e2e7cb8c10b2
new file mode 100644
index 0000000000..9bbc8300f6
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/19/db/491ce5fd3b8f5521f62a3d208c8b91325f3f8fe347347649e2e7cb8c10b2
@@ -0,0 +1,3 @@
+
+9d3fbd26021863fa857a7b84ed1768b2b94f0366 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/npm/v1/hooks/hook","integrity":null,"time":1547833360547}
+a85a425bcdeb7c2ccf977d545f13cdd7f3cef331 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/npm/v1/hooks/hook","integrity":null,"time":1547833361187} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/1c/05/419d1e706cbe2c4b49cddcc72c47c6fbcde4ff2cdbb76da7c1defd09d6d6 b/deps/npm/test/npm_cache/_cacache/index-v5/1c/05/419d1e706cbe2c4b49cddcc72c47c6fbcde4ff2cdbb76da7c1defd09d6d6
new file mode 100644
index 0000000000..747abfcf59
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/1c/05/419d1e706cbe2c4b49cddcc72c47c6fbcde4ff2cdbb76da7c1defd09d6d6
@@ -0,0 +1,7 @@
+
+eab0846401a097a355ae6b40613e32a9d5bdd840 {"key":"make-fetch-happen:request-cache:http://localhost:1337/wordwrap","integrity":"sha512-UjqQJTil69POEpCH8mK/ChZjwv22pjas12YOOG+/L40JeUbNoHUYu9m5/Jxb5yXormBB5iyenoHeVYXpADKLCQ==","time":1547833073399,"size":2532,"metadata":{"url":"http://localhost:1337/wordwrap","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["871adf8f5053357c"],"referer":["install"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:wordwrap"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:53 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+dc32e815d94277f6d7fdc1b0ccc2988d624aec46 {"key":"make-fetch-happen:request-cache:http://localhost:1337/wordwrap","integrity":"sha512-UjqQJTil69POEpCH8mK/ChZjwv22pjas12YOOG+/L40JeUbNoHUYu9m5/Jxb5yXormBB5iyenoHeVYXpADKLCQ==","time":1547833079826,"size":2532,"metadata":{"url":"http://localhost:1337/wordwrap","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["d19ab2d4de48cace"],"referer":["install optimist"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:wordwrap"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:59 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+6e816008ddb2f41c3f1c121ffece8dbee86ef0b7 {"key":"make-fetch-happen:request-cache:http://localhost:1337/wordwrap","integrity":"sha512-UjqQJTil69POEpCH8mK/ChZjwv22pjas12YOOG+/L40JeUbNoHUYu9m5/Jxb5yXormBB5iyenoHeVYXpADKLCQ==","time":1547833093372,"size":2532,"metadata":{"url":"http://localhost:1337/wordwrap","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["fcd144259ba74815"],"referer":["install ."],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:wordwrap"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:13 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+d1063fca9f6ffeb5fc3cbb9f09d0324106467714 {"key":"make-fetch-happen:request-cache:http://localhost:1337/wordwrap","integrity":"sha512-UjqQJTil69POEpCH8mK/ChZjwv22pjas12YOOG+/L40JeUbNoHUYu9m5/Jxb5yXormBB5iyenoHeVYXpADKLCQ==","time":1547833294159,"size":2532,"metadata":{"url":"http://localhost:1337/wordwrap","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["0a92a1a2bc33028a"],"referer":["install"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:wordwrap"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:34 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+a73d8c131fb046e62332bca244be5323d0c1b54e {"key":"make-fetch-happen:request-cache:http://localhost:1337/wordwrap","integrity":"sha512-UjqQJTil69POEpCH8mK/ChZjwv22pjas12YOOG+/L40JeUbNoHUYu9m5/Jxb5yXormBB5iyenoHeVYXpADKLCQ==","time":1547833301219,"size":2532,"metadata":{"url":"http://localhost:1337/wordwrap","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["f4c81daeaa866c45"],"referer":["install optimist"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:wordwrap"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:41 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+93cb442b9ba3e5e64ff7047b96f76559172cc302 {"key":"make-fetch-happen:request-cache:http://localhost:1337/wordwrap","integrity":"sha512-UjqQJTil69POEpCH8mK/ChZjwv22pjas12YOOG+/L40JeUbNoHUYu9m5/Jxb5yXormBB5iyenoHeVYXpADKLCQ==","time":1547833314454,"size":2532,"metadata":{"url":"http://localhost:1337/wordwrap","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["ce2c0b941f6a62b8"],"referer":["install ."],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:wordwrap"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:54 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/1d/95/be47aca6f275eae3f3b2d5c35a85f51736f1403d8fd3790ab0e354238f68 b/deps/npm/test/npm_cache/_cacache/index-v5/1d/95/be47aca6f275eae3f3b2d5c35a85f51736f1403d8fd3790ab0e354238f68
new file mode 100644
index 0000000000..de0902ed8d
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/1d/95/be47aca6f275eae3f3b2d5c35a85f51736f1403d8fd3790ab0e354238f68
@@ -0,0 +1,5 @@
+
+09c3f181c0854f46273f41e916aedf906823cc22 {"key":"make-fetch-happen:request-cache:http://localhost:1338/-/user/org.couchdb.user:u","integrity":null,"time":1547833010390}
+90ced6633bb45047bdb8b1aae92c7cf9e5864c96 {"key":"make-fetch-happen:request-cache:http://localhost:1338/-/user/org.couchdb.user:u","integrity":null,"time":1547833011577}
+66dd2102e034752ab1aa68d91b0c66ba1894363c {"key":"make-fetch-happen:request-cache:http://localhost:1338/-/user/org.couchdb.user:u","integrity":null,"time":1547833230546}
+318a7ae8e8c3e1f64f4396ee1c893f80b9f9110e {"key":"make-fetch-happen:request-cache:http://localhost:1338/-/user/org.couchdb.user:u","integrity":null,"time":1547833231536} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/1e/c1/c1f0fea37e015610f77e0486d0c90745de8da2029e042c59f6197901f5fb b/deps/npm/test/npm_cache/_cacache/index-v5/1e/c1/c1f0fea37e015610f77e0486d0c90745de8da2029e042c59f6197901f5fb
new file mode 100644
index 0000000000..8659041e12
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/1e/c1/c1f0fea37e015610f77e0486d0c90745de8da2029e042c59f6197901f5fb
@@ -0,0 +1,13 @@
+
+d51b8401bfd296821844053e4d221c3e963f6a5c {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/org.couchdb.user:u","integrity":null,"time":1547833009024}
+b5a55946cc3765a670773a1ac1c61020efdfcc7c {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/org.couchdb.user:u","integrity":null,"time":1547833012658}
+296fdd1a10001bb18edea110f74ef314d16624dc {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/org.couchdb.user:u","integrity":null,"time":1547833013383}
+abb2b62b4b9b34c703d06944e5abfb2760c0189f {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/org.couchdb.user:u","integrity":null,"time":1547833014054}
+2c41be84ad4581319a0b1c5ee2d27c9ef07d2a27 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/org.couchdb.user:u","integrity":null,"time":1547833015086}
+dc098e0a677206db298b56e879f3571da00247d7 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/org.couchdb.user:u","integrity":"sha512-nbMJVEfJtT/oi78ZD7ajJMekKoS/UdPDRfyIze6gDwJhZ61zKbQjadeaZ4EnOKIyS3quQtT+6sSaK4lcV7SBaA==","time":1547833015108,"size":29,"metadata":{"url":"http://localhost:1337/-/user/org.couchdb.user:u?write=true","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["921f4dd388006bcd"],"referer":["adduser"],"authorization":["Basic dTp4"]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:36:55 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+18e85b94d32a66aa745c72800287b0737e64da56 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/org.couchdb.user:u","integrity":null,"time":1547833229649}
+52b8b6265052d06cb1b11701990b1cc867599a2f {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/org.couchdb.user:u","integrity":null,"time":1547833232612}
+4fe8d89414166b89a370517f3770037b7529ea5d {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/org.couchdb.user:u","integrity":null,"time":1547833233312}
+0c1b13b3cb55c753d9b44b35ef490e514cc8f219 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/org.couchdb.user:u","integrity":null,"time":1547833233899}
+9772baed148b319af55ee66915c9e7a5baf26b02 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/org.couchdb.user:u","integrity":null,"time":1547833234801}
+00845d6e9ad719f069dedc8971ebb25f8b31f30f {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/org.couchdb.user:u","integrity":"sha512-nbMJVEfJtT/oi78ZD7ajJMekKoS/UdPDRfyIze6gDwJhZ61zKbQjadeaZ4EnOKIyS3quQtT+6sSaK4lcV7SBaA==","time":1547833234821,"size":29,"metadata":{"url":"http://localhost:1337/-/user/org.couchdb.user:u?write=true","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["f5d540ebb7caafdf"],"referer":["adduser"],"authorization":["Basic dTp4"]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:40:34 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/1f/4c/7c6c652ccd8d9b32c0b4ef03e8a114c823d405df62054797ae8e510155d2 b/deps/npm/test/npm_cache/_cacache/index-v5/1f/4c/7c6c652ccd8d9b32c0b4ef03e8a114c823d405df62054797ae8e510155d2
new file mode 100644
index 0000000000..1b22356a3e
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/1f/4c/7c6c652ccd8d9b32c0b4ef03e8a114c823d405df62054797ae8e510155d2
@@ -0,0 +1,5 @@
+
+bec8fa8e08f78acec14ab9c9db47d7c10afcea82 {"key":"make-fetch-happen:request-cache:http://localhost:1337/checker","integrity":"sha512-1EXtcuZe0Ln+xaakF5TKrdqVG6eaBUFkjiWcgCGz/JZIfSyu34aawUK0sPMZmMQ28XHZipoXQOOsjuu1wRA8Uw==","time":1547833073399,"size":29837,"metadata":{"url":"http://localhost:1337/checker","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["871adf8f5053357c"],"referer":["install"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:checker"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:53 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+dd598597f8e43cf35bcd5cdd30fd47e607caa590 {"key":"make-fetch-happen:request-cache:http://localhost:1337/checker","integrity":"sha512-1EXtcuZe0Ln+xaakF5TKrdqVG6eaBUFkjiWcgCGz/JZIfSyu34aawUK0sPMZmMQ28XHZipoXQOOsjuu1wRA8Uw==","time":1547833093286,"size":29837,"metadata":{"url":"http://localhost:1337/checker","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["fcd144259ba74815"],"referer":["install ."],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:checker"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:13 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+d50082ec956f0b3a8fd90ea25c490bcf2e11deb7 {"key":"make-fetch-happen:request-cache:http://localhost:1337/checker","integrity":"sha512-1EXtcuZe0Ln+xaakF5TKrdqVG6eaBUFkjiWcgCGz/JZIfSyu34aawUK0sPMZmMQ28XHZipoXQOOsjuu1wRA8Uw==","time":1547833294158,"size":29837,"metadata":{"url":"http://localhost:1337/checker","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["0a92a1a2bc33028a"],"referer":["install"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:checker"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:34 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+12823d2665d82f3e3319f998b9e6cc5e849d90fa {"key":"make-fetch-happen:request-cache:http://localhost:1337/checker","integrity":"sha512-1EXtcuZe0Ln+xaakF5TKrdqVG6eaBUFkjiWcgCGz/JZIfSyu34aawUK0sPMZmMQ28XHZipoXQOOsjuu1wRA8Uw==","time":1547833314395,"size":29837,"metadata":{"url":"http://localhost:1337/checker","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["ce2c0b941f6a62b8"],"referer":["install ."],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:checker"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:54 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/21/69/cf895689c136d0f667f13d167389f0bdff113e4a85c2d0a34e8420953fb0 b/deps/npm/test/npm_cache/_cacache/index-v5/21/69/cf895689c136d0f667f13d167389f0bdff113e4a85c2d0a34e8420953fb0
new file mode 100644
index 0000000000..ee51d124d2
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/21/69/cf895689c136d0f667f13d167389f0bdff113e4a85c2d0a34e8420953fb0
@@ -0,0 +1,2 @@
+
+bcf2512c5444034125be184da64a4bc8f0c469ff {"key":"pacote:version-manifest:http://localhost:1337/minimist/-/minimist-0.0.5.tgz:sha1-16oye87PUY+RBqxrjwA/o7zqhWY=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833093354,"size":1,"metadata":{"id":"minimist@0.0.5","manifest":{"name":"minimist","version":"0.0.5","dependencies":{},"optionalDependencies":{},"devDependencies":{"tape":"~1.0.4","tap":"~0.4.0"},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"http://localhost:1337/minimist/-/minimist-0.0.5.tgz","_integrity":"sha1-16oye87PUY+RBqxrjwA/o7zqhWY=","_shasum":"d7aa327bcecf518f9106ac6b8f003fa3bcea8566","_shrinkwrap":null,"bin":null,"_id":"minimist@0.0.5"},"type":"finalized-manifest"}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/21/90/97d7c2a8081808dcd3d6fc97011bebe11fc8e308eaff2d4224c21477d1d5 b/deps/npm/test/npm_cache/_cacache/index-v5/21/90/97d7c2a8081808dcd3d6fc97011bebe11fc8e308eaff2d4224c21477d1d5
new file mode 100644
index 0000000000..2e8cbde1cf
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/21/90/97d7c2a8081808dcd3d6fc97011bebe11fc8e308eaff2d4224c21477d1d5
@@ -0,0 +1,2 @@
+
+068551101b5c24f7117897d030b63fc0e7bb83ff {"key":"pacote:remote-manifest:https://github.com/substack/jsonify/tarball/master:sha512-LjZI+XaDCuq6BySzgqCaamc239THVZY6T0Yvlj+eyyEcIljwB2bcOqaGZPZtOgHLJ4myz2FK6yktvrSv4LIGzA==","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1544485146885,"size":1,"metadata":{"id":"jsonify@0.0.0","manifest":{"name":"jsonify","version":"0.0.0","dependencies":{},"optionalDependencies":{},"devDependencies":{"tap":"0.4.x","garbage":"0.0.x"},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"https://github.com/substack/jsonify/tarball/master","_integrity":"sha512-LjZI+XaDCuq6BySzgqCaamc239THVZY6T0Yvlj+eyyEcIljwB2bcOqaGZPZtOgHLJ4myz2FK6yktvrSv4LIGzA==","_shasum":"ee568a2b1efaeb95bec4d9e59e5301fc63339866","_shrinkwrap":null,"bin":null,"_id":"jsonify@0.0.0"},"type":"finalized-manifest"}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/24/d3/c242b6ced69f0f27995a54c44c2c4ef172a4c3a0e7c91e0b8da7b9c418f8 b/deps/npm/test/npm_cache/_cacache/index-v5/24/d3/c242b6ced69f0f27995a54c44c2c4ef172a4c3a0e7c91e0b8da7b9c418f8
new file mode 100644
index 0000000000..f28910aab1
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/24/d3/c242b6ced69f0f27995a54c44c2c4ef172a4c3a0e7c91e0b8da7b9c418f8
@@ -0,0 +1,3 @@
+
+fe1b6996003d74fda794d1572ae3e1d9f91e3de0 {"key":"pacote:file-manifest:/Users/zkat/Documents/code/work/npm/test/tap/gently-rm-overeager/test-whoops-1.0.0.tgz:sha512-yaIGW7l0bldKVBrwYbeICUjTDkfbHcNWwxS9k0sBaYlNaW6DO9Y7bFPLlz0UuAZLWwQXfEAuNHdw3fu7x8kGyw==","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833112248,"size":1,"metadata":{"id":"@test/whoops@1.0.0","manifest":{"name":"@test/whoops","version":"1.0.0","dependencies":{},"optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"/Users/zkat/Documents/code/work/npm/test/tap/gently-rm-overeager/test-whoops-1.0.0.tgz","_integrity":"sha512-yaIGW7l0bldKVBrwYbeICUjTDkfbHcNWwxS9k0sBaYlNaW6DO9Y7bFPLlz0UuAZLWwQXfEAuNHdw3fu7x8kGyw==","_shasum":"fdccb81c7f8261e7ad23f8160293393b19c117a9","_shrinkwrap":null,"bin":null,"_id":"@test/whoops@1.0.0"},"type":"finalized-manifest"}}
+54837347024bdf594dbd5f7d2e0d9a9d26dfa5ec {"key":"pacote:file-manifest:/Users/zkat/Documents/code/work/npm/test/tap/gently-rm-overeager/test-whoops-1.0.0.tgz:sha512-yaIGW7l0bldKVBrwYbeICUjTDkfbHcNWwxS9k0sBaYlNaW6DO9Y7bFPLlz0UuAZLWwQXfEAuNHdw3fu7x8kGyw==","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833333874,"size":1,"metadata":{"id":"@test/whoops@1.0.0","manifest":{"name":"@test/whoops","version":"1.0.0","dependencies":{},"optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"/Users/zkat/Documents/code/work/npm/test/tap/gently-rm-overeager/test-whoops-1.0.0.tgz","_integrity":"sha512-yaIGW7l0bldKVBrwYbeICUjTDkfbHcNWwxS9k0sBaYlNaW6DO9Y7bFPLlz0UuAZLWwQXfEAuNHdw3fu7x8kGyw==","_shasum":"fdccb81c7f8261e7ad23f8160293393b19c117a9","_shrinkwrap":null,"bin":null,"_id":"@test/whoops@1.0.0"},"type":"finalized-manifest"}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/29/89/d8ec4f471f8b2f7110ade5b17475bf87d30ec77a66a68a3481fbcb2299ca b/deps/npm/test/npm_cache/_cacache/index-v5/29/89/d8ec4f471f8b2f7110ade5b17475bf87d30ec77a66a68a3481fbcb2299ca
new file mode 100644
index 0000000000..5b8d6a8f1d
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/29/89/d8ec4f471f8b2f7110ade5b17475bf87d30ec77a66a68a3481fbcb2299ca
@@ -0,0 +1,3 @@
+
+920d3ce83fe8dea3041db1157d39e26cd0490eef {"key":"make-fetch-happen:request-cache:http://localhost:1337/test-repo-url-http/-/test-repo-url-http-0.0.1.tgz","integrity":"sha1-Rcijm2JsH4P4uPUwB8L2DrmO7p0=","time":1547833047698,"size":372,"metadata":{"url":"http://localhost:1337/test-repo-url-http/-/test-repo-url-http-0.0.1.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["e139e9c1a8b0ded0"],"referer":["bugs test-repo-url-http"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:test-repo-url-http@http://localhost:1337/test-repo-url-http/-/test-repo-url-http-0.0.1.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:27 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+94ed1e8729c493f16b28a16b058bf28e58029638 {"key":"make-fetch-happen:request-cache:http://localhost:1337/test-repo-url-http/-/test-repo-url-http-0.0.1.tgz","integrity":"sha1-Rcijm2JsH4P4uPUwB8L2DrmO7p0=","time":1547833264863,"size":372,"metadata":{"url":"http://localhost:1337/test-repo-url-http/-/test-repo-url-http-0.0.1.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["11f83a1c99f277cb"],"referer":["bugs test-repo-url-http"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:test-repo-url-http@http://localhost:1337/test-repo-url-http/-/test-repo-url-http-0.0.1.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:04 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/2d/22/47328dfeb3a9f00c15c20ec3ebdaa0e12382c5c6badfa30fb7b376f6a580 b/deps/npm/test/npm_cache/_cacache/index-v5/2d/22/47328dfeb3a9f00c15c20ec3ebdaa0e12382c5c6badfa30fb7b376f6a580
new file mode 100644
index 0000000000..4882c2fc4e
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/2d/22/47328dfeb3a9f00c15c20ec3ebdaa0e12382c5c6badfa30fb7b376f6a580
@@ -0,0 +1,2 @@
+
+47afbed34e3296c3fb1c2c3c31dd4f6e008a611d {"key":"pacote:packed-dir:git://github.com/isaacs/node-glob.git#67bda227fd7a559cca5620307c7d30a6732a792f","integrity":"sha512-nVsV0K11/FE/SjJ7XkQYA90iDt60+WYORU/p0mO1Q7o1bHEzCllk+GTRwkqtoWvqAo60AQZ2KxQrMNRIzcCFkw==","time":1544485144332,"size":27629} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/2f/ee/99c47a7b4b5d997bbdb8d0095b14f1940fbdde0e7515bc19ccfcfbccec49 b/deps/npm/test/npm_cache/_cacache/index-v5/2f/ee/99c47a7b4b5d997bbdb8d0095b14f1940fbdde0e7515bc19ccfcfbccec49
new file mode 100644
index 0000000000..5fc55edfd6
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/2f/ee/99c47a7b4b5d997bbdb8d0095b14f1940fbdde0e7515bc19ccfcfbccec49
@@ -0,0 +1,3 @@
+
+821d0bccf89608b476114b6cf34478e48ed64c01 {"key":"pacote:tag-manifest:http://localhost:1337/npm-test-peer-deps/-/npm-test-peer-deps-0.0.0.tgz:sha1-gvPMuhGRTciLyxhe47GzO1ZCcrw=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833046970,"size":1,"metadata":{"id":"npm-test-peer-deps@0.0.0","manifest":{"author":{"name":"Domenic Denicola"},"name":"npm-test-peer-deps","version":"0.0.0","peerDependencies":{"request":"0.9.x"},"dependencies":{"underscore":"1.3.1"},"_id":"npm-test-peer-deps@0.0.0","dist":{"shasum":"82f3ccba11914dc88bcb185ee3b1b33b564272bc","tarball":"http://localhost:1337/npm-test-peer-deps/-/npm-test-peer-deps-0.0.0.tgz"},"_from":".","_npmVersion":"1.3.25","_npmUser":{"name":"domenic","email":"domenic@domenicdenicola.com"},"maintainers":[{"name":"domenic","email":"domenic@domenicdenicola.com"}],"directories":{},"_integrity":"sha1-gvPMuhGRTciLyxhe47GzO1ZCcrw=","_shasum":"82f3ccba11914dc88bcb185ee3b1b33b564272bc","_resolved":"http://localhost:1337/npm-test-peer-deps/-/npm-test-peer-deps-0.0.0.tgz","optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"deprecated":false,"_shrinkwrap":null,"bin":null},"type":"finalized-manifest"}}
+dc64a2c024b2011cd817a03f225f2ce1fd5bc3c2 {"key":"pacote:tag-manifest:http://localhost:1337/npm-test-peer-deps/-/npm-test-peer-deps-0.0.0.tgz:sha1-gvPMuhGRTciLyxhe47GzO1ZCcrw=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833264159,"size":1,"metadata":{"id":"npm-test-peer-deps@0.0.0","manifest":{"author":{"name":"Domenic Denicola"},"name":"npm-test-peer-deps","version":"0.0.0","peerDependencies":{"request":"0.9.x"},"dependencies":{"underscore":"1.3.1"},"_id":"npm-test-peer-deps@0.0.0","dist":{"shasum":"82f3ccba11914dc88bcb185ee3b1b33b564272bc","tarball":"http://localhost:1337/npm-test-peer-deps/-/npm-test-peer-deps-0.0.0.tgz"},"_from":".","_npmVersion":"1.3.25","_npmUser":{"name":"domenic","email":"domenic@domenicdenicola.com"},"maintainers":[{"name":"domenic","email":"domenic@domenicdenicola.com"}],"directories":{},"_integrity":"sha1-gvPMuhGRTciLyxhe47GzO1ZCcrw=","_shasum":"82f3ccba11914dc88bcb185ee3b1b33b564272bc","_resolved":"http://localhost:1337/npm-test-peer-deps/-/npm-test-peer-deps-0.0.0.tgz","optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"deprecated":false,"_shrinkwrap":null,"bin":null},"type":"finalized-manifest"}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/32/2d/90e41f3ad9eeece7d8bafb5672197db1ee77ca9aa734a3e77692efcf7716 b/deps/npm/test/npm_cache/_cacache/index-v5/32/2d/90e41f3ad9eeece7d8bafb5672197db1ee77ca9aa734a3e77692efcf7716
new file mode 100644
index 0000000000..b7a52d77b4
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/32/2d/90e41f3ad9eeece7d8bafb5672197db1ee77ca9aa734a3e77692efcf7716
@@ -0,0 +1,2 @@
+
+9c30652272faf34fb4c4f517d0252e59c247af3e {"key":"pacote:range-manifest:http://localhost:1337/wordwrap/-/wordwrap-0.0.2.tgz:sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833073434,"size":1,"metadata":{"id":"wordwrap@0.0.2","manifest":{"name":"wordwrap","version":"0.0.2","engines":{"node":">=0.4.0"},"dependencies":{},"optionalDependencies":{},"devDependencies":{"expresso":"=0.7.x"},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"http://localhost:1337/wordwrap/-/wordwrap-0.0.2.tgz","_integrity":"sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=","_shasum":"b79669bb42ecb409f83d583cad52ca17eaa1643f","_shrinkwrap":null,"bin":null,"_id":"wordwrap@0.0.2"},"type":"finalized-manifest"}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/34/f7/495a783848aed5199e0583f72c91d67d20fa9f5f5604755719bc421195dd b/deps/npm/test/npm_cache/_cacache/index-v5/34/f7/495a783848aed5199e0583f72c91d67d20fa9f5f5604755719bc421195dd
new file mode 100644
index 0000000000..1189abdea2
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/34/f7/495a783848aed5199e0583f72c91d67d20fa9f5f5604755719bc421195dd
@@ -0,0 +1,3 @@
+
+ff2ce690683c79e0df6daf181cfe0543239d9b0b {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/%40scoped%2Fanother/access","integrity":null,"time":1547832986290}
+e053044487b8a4c73b139c9f3441d9ed6d646135 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/%40scoped%2Fanother/access","integrity":null,"time":1547833210590} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/35/d4/4f8776a16f1d67cec7136a104fc757d4d7719d47a6b5d71c1b3075cc1b69 b/deps/npm/test/npm_cache/_cacache/index-v5/35/d4/4f8776a16f1d67cec7136a104fc757d4d7719d47a6b5d71c1b3075cc1b69
new file mode 100644
index 0000000000..a000ea1d27
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/35/d4/4f8776a16f1d67cec7136a104fc757d4d7719d47a6b5d71c1b3075cc1b69
@@ -0,0 +1,3 @@
+
+f9ae39b39ffa062b7f3c79830bf3f5666ced8f6a {"key":"make-fetch-happen:request-cache:http://localhost:1337/registry/add-named-update-protocol-port","integrity":"sha512-3GiCmFRKOGfPOZsEzGDDjGUZ2uYJbFuhkXu3ikibqp1rrTlknhbgA2fnzQKsFLp81k86zVbiG5hGMPgjrZyWYw==","time":1547832996619,"size":301,"metadata":{"url":"http://localhost:1337/registry/add-named-update-protocol-port","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["2b49fe996267b15d"],"referer":["cache add add-named-update-protocol-port@0.0.0"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:add-named-update-protocol-port"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:36:36 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+d7c26b3ee71fee8c9c16ec6525b081a4972ee922 {"key":"make-fetch-happen:request-cache:http://localhost:1337/registry/add-named-update-protocol-port","integrity":"sha512-3GiCmFRKOGfPOZsEzGDDjGUZ2uYJbFuhkXu3ikibqp1rrTlknhbgA2fnzQKsFLp81k86zVbiG5hGMPgjrZyWYw==","time":1547833219206,"size":301,"metadata":{"url":"http://localhost:1337/registry/add-named-update-protocol-port","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["302f70336b58dfc7"],"referer":["cache add add-named-update-protocol-port@0.0.0"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:add-named-update-protocol-port"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:40:19 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/4b/fa/51a839f22632c42d66d63607a55048be00c0a16bcf8dc96b9aadb8511570 b/deps/npm/test/npm_cache/_cacache/index-v5/4b/fa/51a839f22632c42d66d63607a55048be00c0a16bcf8dc96b9aadb8511570
new file mode 100644
index 0000000000..b01ea3b8b4
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/4b/fa/51a839f22632c42d66d63607a55048be00c0a16bcf8dc96b9aadb8511570
@@ -0,0 +1,5 @@
+
+6ed5c7aff973ebeb3d108482dfd58982c46c2e1c {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/%40scoped%2Fpkg/access","integrity":null,"time":1547832983691}
+8b3bb3243ae51532a265f0f56f77a2b120c6cac5 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/%40scoped%2Fpkg/access","integrity":null,"time":1547832985654}
+a76a484674e2e4cb0185c9c622f4894dcabc0fc7 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/%40scoped%2Fpkg/access","integrity":null,"time":1547833208503}
+417ea4dabdd7cadf16c11c19d3a321c54eb68f21 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/%40scoped%2Fpkg/access","integrity":null,"time":1547833210073} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/4c/94/5f2a94150990b1ee4ecadd4897498d69b3141e0d72f1ccc1f3bd703a4c75 b/deps/npm/test/npm_cache/_cacache/index-v5/4c/94/5f2a94150990b1ee4ecadd4897498d69b3141e0d72f1ccc1f3bd703a4c75
new file mode 100644
index 0000000000..8d1978120a
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/4c/94/5f2a94150990b1ee4ecadd4897498d69b3141e0d72f1ccc1f3bd703a4c75
@@ -0,0 +1,3 @@
+
+67a9de7796100032dc06f94a7f969dc9dbf6b66f {"key":"make-fetch-happen:request-cache:http://localhost:1337/wordwrap/-/wordwrap-0.0.2.tgz","integrity":"sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=","time":1547833073426,"size":13772,"metadata":{"url":"http://localhost:1337/wordwrap/-/wordwrap-0.0.2.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["871adf8f5053357c"],"referer":["install"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:wordwrap@http://localhost:1337/wordwrap/-/wordwrap-0.0.2.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:53 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+7b4401744a73e7d9d61a3cef29d9548dd30dff92 {"key":"make-fetch-happen:request-cache:http://localhost:1337/wordwrap/-/wordwrap-0.0.2.tgz","integrity":"sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=","time":1547833093386,"size":13772,"metadata":{"url":"http://localhost:1337/wordwrap/-/wordwrap-0.0.2.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["fcd144259ba74815"],"referer":["install ."],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:wordwrap@http://localhost:1337/wordwrap/-/wordwrap-0.0.2.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:13 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/4c/9f/92b75e7965b407ec25a6d5770af0d18432dbca32e8a2a9958dd413e3b776 b/deps/npm/test/npm_cache/_cacache/index-v5/4c/9f/92b75e7965b407ec25a6d5770af0d18432dbca32e8a2a9958dd413e3b776
new file mode 100644
index 0000000000..3fb97608f5
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/4c/9f/92b75e7965b407ec25a6d5770af0d18432dbca32e8a2a9958dd413e3b776
@@ -0,0 +1,5 @@
+
+65e2bd8d36bc6ef8dce26de8c55e0a213bab8d5a {"key":"make-fetch-happen:request-cache:http://localhost:1337/clean","integrity":"sha512-eexGJb7BoTqu/c1OfPGPHFV1h52A6L26BjzJYslZxIUmoMHJ43Zsleyeoc8QzZVJaPO/7BNvDTqocAnbBc9GZg==","time":1547833073341,"size":29623,"metadata":{"url":"http://localhost:1337/clean","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["871adf8f5053357c"],"referer":["install"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:clean"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:53 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+6a207e4d350e6a798c36a4e81135a280f6ba65e9 {"key":"make-fetch-happen:request-cache:http://localhost:1337/clean","integrity":"sha512-eexGJb7BoTqu/c1OfPGPHFV1h52A6L26BjzJYslZxIUmoMHJ43Zsleyeoc8QzZVJaPO/7BNvDTqocAnbBc9GZg==","time":1547833093274,"size":29623,"metadata":{"url":"http://localhost:1337/clean","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["fcd144259ba74815"],"referer":["install ."],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:clean"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:13 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+1dd2ce72056652f48dc6931ea01fab72e888a342 {"key":"make-fetch-happen:request-cache:http://localhost:1337/clean","integrity":"sha512-eexGJb7BoTqu/c1OfPGPHFV1h52A6L26BjzJYslZxIUmoMHJ43Zsleyeoc8QzZVJaPO/7BNvDTqocAnbBc9GZg==","time":1547833294122,"size":29623,"metadata":{"url":"http://localhost:1337/clean","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["0a92a1a2bc33028a"],"referer":["install"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:clean"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:34 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+091b191fc26665b124a1ebd27d91f5f5a70e18a9 {"key":"make-fetch-happen:request-cache:http://localhost:1337/clean","integrity":"sha512-eexGJb7BoTqu/c1OfPGPHFV1h52A6L26BjzJYslZxIUmoMHJ43Zsleyeoc8QzZVJaPO/7BNvDTqocAnbBc9GZg==","time":1547833314380,"size":29623,"metadata":{"url":"http://localhost:1337/clean","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["ce2c0b941f6a62b8"],"referer":["install ."],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:clean"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:54 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/4d/ed/ee7db809a7dfddfb87fc4055ac06876c63165a517fc12011046fc2cc4a9f b/deps/npm/test/npm_cache/_cacache/index-v5/4d/ed/ee7db809a7dfddfb87fc4055ac06876c63165a517fc12011046fc2cc4a9f
new file mode 100644
index 0000000000..9d55f4bb97
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/4d/ed/ee7db809a7dfddfb87fc4055ac06876c63165a517fc12011046fc2cc4a9f
@@ -0,0 +1,3 @@
+
+f907d57bfb7ff4880fc048a1703c6bee25d11de6 {"key":"make-fetch-happen:request-cache:http://localhost:1337/registry/add-named-update-protocol-porti","integrity":"sha512-iEmRT8aS3FRB/sgjGjPK7JhAm21SL6Rr7UpnMSeHYiS5y4vDXlHiUciol6HXHdnX9GtiF+yO8w7E2D9LmkMJjQ==","time":1547832997182,"size":304,"metadata":{"url":"http://localhost:1337/registry/add-named-update-protocol-porti","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["8cb41ddc499c27b6"],"referer":["cache add add-named-update-protocol-porti@0.0.0"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:add-named-update-protocol-porti"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:36:37 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+27ddad6023e6e5949796edad34e03de77ff584e4 {"key":"make-fetch-happen:request-cache:http://localhost:1337/registry/add-named-update-protocol-porti","integrity":"sha512-iEmRT8aS3FRB/sgjGjPK7JhAm21SL6Rr7UpnMSeHYiS5y4vDXlHiUciol6HXHdnX9GtiF+yO8w7E2D9LmkMJjQ==","time":1547833219768,"size":304,"metadata":{"url":"http://localhost:1337/registry/add-named-update-protocol-porti","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["87b598eff1cdd205"],"referer":["cache add add-named-update-protocol-porti@0.0.0"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:add-named-update-protocol-porti"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:40:19 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/4e/ce/f2fe3deddf79eb0c8c03828e46b026559f16671fbad7c36d5e0a1bd28a7f b/deps/npm/test/npm_cache/_cacache/index-v5/4e/ce/f2fe3deddf79eb0c8c03828e46b026559f16671fbad7c36d5e0a1bd28a7f
new file mode 100644
index 0000000000..46ff239a9a
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/4e/ce/f2fe3deddf79eb0c8c03828e46b026559f16671fbad7c36d5e0a1bd28a7f
@@ -0,0 +1,13 @@
+
+615a02b41b714e7944da18b9c8a4a62463b823f9 {"key":"make-fetch-happen:request-cache:http://localhost:1337/cond","integrity":"sha512-WmQCdLXP3E4GNb3SYsWDDef6+cAtPF72amCsWO0g/LMk+F1+97boUhDYIJEiCWGRiT9mLbM9BWmDcwU4i601vw==","time":1547833095212,"size":405,"metadata":{"url":"http://localhost:1337/cond?write=true","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["02b311f2b8b360bb"],"referer":["deprecate cond@0.0.1 make it dead"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:15 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+a876e349124d09b706740a5fc1a495f5bf0c32a2 {"key":"make-fetch-happen:request-cache:http://localhost:1337/cond","integrity":null,"time":1547833095221}
+74a45b087e8945624ff7f12c34c21da8e82210a5 {"key":"make-fetch-happen:request-cache:http://localhost:1337/cond","integrity":"sha512-WmQCdLXP3E4GNb3SYsWDDef6+cAtPF72amCsWO0g/LMk+F1+97boUhDYIJEiCWGRiT9mLbM9BWmDcwU4i601vw==","time":1547833096353,"size":405,"metadata":{"url":"http://localhost:1337/cond?write=true","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["2dc1d8ce7042f86e"],"referer":["deprecate cond@<0.0.2 make it dead"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:16 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+c0f7a970f72991a541e6e96b934f43f00a29b0e4 {"key":"make-fetch-happen:request-cache:http://localhost:1337/cond","integrity":null,"time":1547833096358}
+ff945e0c64b571a8018b102bb1bf6e6a3814391d {"key":"make-fetch-happen:request-cache:http://localhost:1337/cond","integrity":"sha512-WmQCdLXP3E4GNb3SYsWDDef6+cAtPF72amCsWO0g/LMk+F1+97boUhDYIJEiCWGRiT9mLbM9BWmDcwU4i601vw==","time":1547833097537,"size":405,"metadata":{"url":"http://localhost:1337/cond?write=true","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["8fcad2955426aecc"],"referer":["deprecate cond make it dead"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:17 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+a0bfcc705e18dcda52ad996ed6b93ee76b367dc3 {"key":"make-fetch-happen:request-cache:http://localhost:1337/cond","integrity":null,"time":1547833097544}
+04c50a42efd378ebf125165e24d0a56eaae2f814 {"key":"make-fetch-happen:request-cache:http://localhost:1337/cond","integrity":"sha512-WmQCdLXP3E4GNb3SYsWDDef6+cAtPF72amCsWO0g/LMk+F1+97boUhDYIJEiCWGRiT9mLbM9BWmDcwU4i601vw==","time":1547833316172,"size":405,"metadata":{"url":"http://localhost:1337/cond?write=true","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["0c1b36ee0c47d1ae"],"referer":["deprecate cond@0.0.1 make it dead"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:56 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+32965c869981124c26fcb3933106540045c69ae4 {"key":"make-fetch-happen:request-cache:http://localhost:1337/cond","integrity":null,"time":1547833316178}
+591f02138e8b4dbb841c65796f6da7928c1ca821 {"key":"make-fetch-happen:request-cache:http://localhost:1337/cond","integrity":"sha512-WmQCdLXP3E4GNb3SYsWDDef6+cAtPF72amCsWO0g/LMk+F1+97boUhDYIJEiCWGRiT9mLbM9BWmDcwU4i601vw==","time":1547833317223,"size":405,"metadata":{"url":"http://localhost:1337/cond?write=true","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["83346960af9afefb"],"referer":["deprecate cond@<0.0.2 make it dead"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:57 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+1c56dcec89793dace00808ad01cfcfae3d49a8de {"key":"make-fetch-happen:request-cache:http://localhost:1337/cond","integrity":null,"time":1547833317228}
+d66e3a04880e9d955736a5130058591b4c7acab4 {"key":"make-fetch-happen:request-cache:http://localhost:1337/cond","integrity":"sha512-WmQCdLXP3E4GNb3SYsWDDef6+cAtPF72amCsWO0g/LMk+F1+97boUhDYIJEiCWGRiT9mLbM9BWmDcwU4i601vw==","time":1547833318278,"size":405,"metadata":{"url":"http://localhost:1337/cond?write=true","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["74d74662562f8e40"],"referer":["deprecate cond make it dead"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:58 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+5f2eee7d6a675de32334da3735a9cd5918686f89 {"key":"make-fetch-happen:request-cache:http://localhost:1337/cond","integrity":null,"time":1547833318286} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/52/26/16d800e2651582fd96b18d4ff02085c52be8b7b4b739d0da243122208329 b/deps/npm/test/npm_cache/_cacache/index-v5/52/26/16d800e2651582fd96b18d4ff02085c52be8b7b4b739d0da243122208329
new file mode 100644
index 0000000000..015dce0106
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/52/26/16d800e2651582fd96b18d4ff02085c52be8b7b4b739d0da243122208329
@@ -0,0 +1,3 @@
+
+714a9469ff5844eb797bf3506abc20d4d452dec6 {"key":"make-fetch-happen:request-cache:http://localhost:1337/underscore","integrity":"sha512-Fa00hT8RSVJtl/CLUMOqqeyEAxp+v7e7WePyMX1cMGKGUoy5G/U9xZaALTFnYuW6RkF2SyaAlFuj9iDTz3mKBQ==","time":1547833045332,"size":40940,"metadata":{"url":"http://localhost:1337/underscore","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["4fa97a596a50fc65"],"referer":["bugs underscore"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:underscore"],"accept":["application/json"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:25 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+35349b250c2ac115dcd5abcd4ebba1151a71f888 {"key":"make-fetch-happen:request-cache:http://localhost:1337/underscore","integrity":"sha512-Fa00hT8RSVJtl/CLUMOqqeyEAxp+v7e7WePyMX1cMGKGUoy5G/U9xZaALTFnYuW6RkF2SyaAlFuj9iDTz3mKBQ==","time":1547833262745,"size":40940,"metadata":{"url":"http://localhost:1337/underscore","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["20080b2063fb2e2a"],"referer":["bugs underscore"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:underscore"],"accept":["application/json"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:02 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/53/b9/a3f54151106c138d93ef4e411f13d971ff84939f5a96a1d5826244927399 b/deps/npm/test/npm_cache/_cacache/index-v5/53/b9/a3f54151106c138d93ef4e411f13d971ff84939f5a96a1d5826244927399
new file mode 100644
index 0000000000..f3558b0d7a
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/53/b9/a3f54151106c138d93ef4e411f13d971ff84939f5a96a1d5826244927399
@@ -0,0 +1,3 @@
+
+8c49400cedb617b1a7a9dd9f93635b4f7546dd84 {"key":"pacote:tag-manifest:http://localhost:1337/test-repo-url-http/-/test-repo-url-http-0.0.1.tgz:sha1-Rcijm2JsH4P4uPUwB8L2DrmO7p0=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833047706,"size":1,"metadata":{"id":"test-repo-url-http@0.0.1","manifest":{"name":"test-repo-url-http","version":"0.0.1","description":"Test repo with non-github http repository url","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"http://gitlab.com/evanlucas/test-repo-url-http.git"},"author":{"name":"Evan Lucas","email":"evanlucas@me.com"},"license":"ISC","_id":"test-repo-url-http@0.0.1","dist":{"shasum":"45c8a39b626c1f83f8b8f53007c2f60eb98eee9d","tarball":"http://localhost:1337/test-repo-url-http/-/test-repo-url-http-0.0.1.tgz"},"_from":".","_npmVersion":"1.4.2","_npmUser":{"name":"evanlucas","email":"evanlucas@me.com"},"maintainers":[{"name":"evanlucas","email":"evanlucas@me.com"}],"directories":{},"_integrity":"sha1-Rcijm2JsH4P4uPUwB8L2DrmO7p0=","_shasum":"45c8a39b626c1f83f8b8f53007c2f60eb98eee9d","_resolved":"http://localhost:1337/test-repo-url-http/-/test-repo-url-http-0.0.1.tgz","dependencies":{},"optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_shrinkwrap":null,"bin":null},"type":"finalized-manifest"}}
+4fb5740938b9bf3eef72c65b21823d14dd9c2367 {"key":"pacote:tag-manifest:http://localhost:1337/test-repo-url-http/-/test-repo-url-http-0.0.1.tgz:sha1-Rcijm2JsH4P4uPUwB8L2DrmO7p0=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833264868,"size":1,"metadata":{"id":"test-repo-url-http@0.0.1","manifest":{"name":"test-repo-url-http","version":"0.0.1","description":"Test repo with non-github http repository url","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"http://gitlab.com/evanlucas/test-repo-url-http.git"},"author":{"name":"Evan Lucas","email":"evanlucas@me.com"},"license":"ISC","_id":"test-repo-url-http@0.0.1","dist":{"shasum":"45c8a39b626c1f83f8b8f53007c2f60eb98eee9d","tarball":"http://localhost:1337/test-repo-url-http/-/test-repo-url-http-0.0.1.tgz"},"_from":".","_npmVersion":"1.4.2","_npmUser":{"name":"evanlucas","email":"evanlucas@me.com"},"maintainers":[{"name":"evanlucas","email":"evanlucas@me.com"}],"directories":{},"_integrity":"sha1-Rcijm2JsH4P4uPUwB8L2DrmO7p0=","_shasum":"45c8a39b626c1f83f8b8f53007c2f60eb98eee9d","_resolved":"http://localhost:1337/test-repo-url-http/-/test-repo-url-http-0.0.1.tgz","dependencies":{},"optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_shrinkwrap":null,"bin":null},"type":"finalized-manifest"}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/54/c7/bd7b2edde99a50402386dc89dd492bc0e1c9c57727fbf97333ab23450cc6 b/deps/npm/test/npm_cache/_cacache/index-v5/54/c7/bd7b2edde99a50402386dc89dd492bc0e1c9c57727fbf97333ab23450cc6
new file mode 100644
index 0000000000..43146fe8ef
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/54/c7/bd7b2edde99a50402386dc89dd492bc0e1c9c57727fbf97333ab23450cc6
@@ -0,0 +1,5 @@
+
+b40a8c13bae09feb6652226e83377e1ecd65aaac {"key":"make-fetch-happen:request-cache:http://127.0.0.1:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz","integrity":"sha1-KOuEepSeceuQQf1lZ6Nsms/PK+0=","time":1547833041014,"size":55415,"metadata":{"url":"http://127.0.0.1:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["66dfca64d34790d3"],"referer":["install"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:undefined@http://127.0.0.1:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz"]},"resHeaders":{"date":["Fri, 18 Jan 2019 17:37:20 GMT"],"connection":["keep-alive"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+1e3f986dad6c99953d81d83d7938b389aa8e1793 {"key":"make-fetch-happen:request-cache:http://127.0.0.1:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz","integrity":"sha512-NycvWDeO1ZEZc3P0bTvhSL/IJknbshO+FKKxrEf1DX1IBMsQVZCTWnvNAt+uOiQhyTnK+1hrnxtsSS/f4JrKhg==","time":1547833041061,"size":55415,"metadata":{"url":"http://127.0.0.1:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["66dfca64d34790d3"],"referer":["install"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:undefined@http://127.0.0.1:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz"]},"resHeaders":{"date":["Fri, 18 Jan 2019 17:37:21 GMT"],"connection":["keep-alive"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+dd8f9ec163a26a6724431b7c5b5b26ffa874ebfb {"key":"make-fetch-happen:request-cache:http://127.0.0.1:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz","integrity":"sha1-KOuEepSeceuQQf1lZ6Nsms/PK+0=","time":1547833259078,"size":55415,"metadata":{"url":"http://127.0.0.1:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["971c11884a599dc1"],"referer":["install"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:undefined@http://127.0.0.1:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz"]},"resHeaders":{"date":["Fri, 18 Jan 2019 17:40:59 GMT"],"connection":["keep-alive"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+3eb068393054e489ac2faa2394c38673a8d26073 {"key":"make-fetch-happen:request-cache:http://127.0.0.1:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz","integrity":"sha1-KOuEepSeceuQQf1lZ6Nsms/PK+0=","time":1548718095636,"size":55415,"metadata":{"url":"http://127.0.0.1:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.7.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["1ff276f8555c3331"],"referer":["install"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:undefined@http://127.0.0.1:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz"]},"resHeaders":{"date":["Mon, 28 Jan 2019 23:28:15 GMT"],"connection":["keep-alive"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/55/94/6aae1bf2eae7384bbf56a2610deec22135ab5102d53f8dc5bb1359585a5c b/deps/npm/test/npm_cache/_cacache/index-v5/55/94/6aae1bf2eae7384bbf56a2610deec22135ab5102d53f8dc5bb1359585a5c
new file mode 100644
index 0000000000..eca0f3535f
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/55/94/6aae1bf2eae7384bbf56a2610deec22135ab5102d53f8dc5bb1359585a5c
@@ -0,0 +1,5 @@
+
+a2b116d83c5946d7ea2926dc2f964775ad99c33e {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/myorg/package","integrity":"sha512-3Cqk30LNQ1Yj9MLD4nT6CBzJQv9F3PqYzfSpMktqIcNyHDS7l+aAnuKAUfwQ9XdJz/YKqXCh44x6bDVKlANVTg==","time":1547832991512,"size":39,"metadata":{"url":"http://localhost:1337/-/user/myorg/package?format=cli","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["2942fcbe6b15bc39"],"referer":["access ls-packages myorg"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:36:31 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+ac58205d3eccdc2ae3c12d4fe9a36dfdbb773a1c {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/myorg/package","integrity":"sha512-3Cqk30LNQ1Yj9MLD4nT6CBzJQv9F3PqYzfSpMktqIcNyHDS7l+aAnuKAUfwQ9XdJz/YKqXCh44x6bDVKlANVTg==","time":1547832992340,"size":39,"metadata":{"url":"http://localhost:1337/-/user/myorg/package?format=cli","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["932157f8d5b366bf"],"referer":["access ls-packages myorg"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:36:32 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+9912b7634d0dbaf0ca67a4b70d5f39646fb9dc6d {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/myorg/package","integrity":"sha512-3Cqk30LNQ1Yj9MLD4nT6CBzJQv9F3PqYzfSpMktqIcNyHDS7l+aAnuKAUfwQ9XdJz/YKqXCh44x6bDVKlANVTg==","time":1547833215173,"size":39,"metadata":{"url":"http://localhost:1337/-/user/myorg/package?format=cli","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["affe1fe251e4fee3"],"referer":["access ls-packages myorg"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:40:15 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+ccc3fa29db9b00c42232defb85de668c64b7e566 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/myorg/package","integrity":"sha512-3Cqk30LNQ1Yj9MLD4nT6CBzJQv9F3PqYzfSpMktqIcNyHDS7l+aAnuKAUfwQ9XdJz/YKqXCh44x6bDVKlANVTg==","time":1547833215718,"size":39,"metadata":{"url":"http://localhost:1337/-/user/myorg/package?format=cli","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["d0ef5e47830054c8"],"referer":["access ls-packages myorg"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:40:15 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/56/a3/d63cf88aff86698120f294331ca4785e2ef41b621d746ef1047eaf34e122 b/deps/npm/test/npm_cache/_cacache/index-v5/56/a3/d63cf88aff86698120f294331ca4785e2ef41b621d746ef1047eaf34e122
new file mode 100644
index 0000000000..323aba91b0
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/56/a3/d63cf88aff86698120f294331ca4785e2ef41b621d746ef1047eaf34e122
@@ -0,0 +1,3 @@
+
+b49db14b91a87711dc8285af855701bdd5ed7d31 {"key":"pacote:tarball:file:/Users/zkat/Documents/code/work/npm/test/tap/bundled-dependencies-nonarray/a-bundled-dep-2.0.0.tgz","integrity":"sha512-qoZzDskyzbDwXbLzXh5Fb8mG2xn4P7P4FApYUUEfvPRJZjKEeasoDMgK4tdAzcAfj4gINqAMZnQ1ZazS6DUueg==","time":1547833057455,"size":151}
+a78edf067966dfa38715a7036b298d44373f88c2 {"key":"pacote:tarball:file:/Users/zkat/Documents/code/work/npm/test/tap/bundled-dependencies-nonarray/a-bundled-dep-2.0.0.tgz","integrity":"sha512-qoZzDskyzbDwXbLzXh5Fb8mG2xn4P7P4FApYUUEfvPRJZjKEeasoDMgK4tdAzcAfj4gINqAMZnQ1ZazS6DUueg==","time":1547833274122,"size":151} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/58/cd/24c1bfea16737029dabb2e41b34b7a019b657b6db6c972a30870f3318344 b/deps/npm/test/npm_cache/_cacache/index-v5/58/cd/24c1bfea16737029dabb2e41b34b7a019b657b6db6c972a30870f3318344
new file mode 100644
index 0000000000..9195ed434b
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/58/cd/24c1bfea16737029dabb2e41b34b7a019b657b6db6c972a30870f3318344
@@ -0,0 +1,4 @@
+
+45cef68fe8e13d96253fa955bb0343077d163666 {"key":"pacote:packed-dir:git+file:///Users/zkat/Documents/code/work/npm/test/tap/add-remote-git-file/child.git#244a79cc7d51cd727460a91fea694a700a414510","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547832998376,"size":143}
+53a8de5d4a72e643b5d250ff17f81dbc78704e42 {"key":"pacote:packed-dir:git+file:///Users/zkat/Documents/code/work/npm/test/tap/add-remote-git-file/child.git#244a79cc7d51cd727460a91fea694a700a414510","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547832998710,"size":143}
+178404c25dd4361196f30fd3a098349fe20d9e26 {"key":"pacote:packed-dir:git+file:///Users/zkat/Documents/code/work/npm/test/tap/add-remote-git-file/child.git#244a79cc7d51cd727460a91fea694a700a414510","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547832999024,"size":143} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/58/fc/50f89b2f236774e4b33eda6968cde18196e800153a6162d5f73df18895fa b/deps/npm/test/npm_cache/_cacache/index-v5/58/fc/50f89b2f236774e4b33eda6968cde18196e800153a6162d5f73df18895fa
new file mode 100644
index 0000000000..9893a7fe4d
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/58/fc/50f89b2f236774e4b33eda6968cde18196e800153a6162d5f73df18895fa
@@ -0,0 +1,3 @@
+
+c46aa948cd5c228a9e7222006ced1fb23b531de9 {"key":"pacote:tag-manifest:http://localhost:1337/underscore/-/underscore-1.5.1.tgz:sha1-0r3oF9F2/63olKtxRY5oKhS4bck=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833045360,"size":1,"metadata":{"id":"underscore@1.5.1","manifest":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://underscorejs.org","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/jashkenas/underscore.git"},"main":"underscore.js","version":"1.5.1","devDependencies":{"phantomjs":"1.9.0-1"},"scripts":{"test":"phantomjs test/vendor/runner.js test/index.html?noglobals=true"},"license":"MIT","readmeFilename":"README.md","bugs":{"url":"https://github.com/jashkenas/underscore/issues"},"_id":"underscore@1.5.1","dist":{"shasum":"d2bde817d176ffade894ab71458e682a14b86dc9","tarball":"http://localhost:1337/underscore/-/underscore-1.5.1.tgz"},"_from":".","_npmVersion":"1.2.24","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{},"_integrity":"sha1-0r3oF9F2/63olKtxRY5oKhS4bck=","_shasum":"d2bde817d176ffade894ab71458e682a14b86dc9","_resolved":"http://localhost:1337/underscore/-/underscore-1.5.1.tgz","dependencies":{},"optionalDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_shrinkwrap":null,"bin":null},"type":"finalized-manifest"}}
+eaffa59aa3c09ecc9f1ca6b49e7b24b33cf7c78b {"key":"pacote:tag-manifest:http://localhost:1337/underscore/-/underscore-1.5.1.tgz:sha1-0r3oF9F2/63olKtxRY5oKhS4bck=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833262771,"size":1,"metadata":{"id":"underscore@1.5.1","manifest":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://underscorejs.org","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/jashkenas/underscore.git"},"main":"underscore.js","version":"1.5.1","devDependencies":{"phantomjs":"1.9.0-1"},"scripts":{"test":"phantomjs test/vendor/runner.js test/index.html?noglobals=true"},"license":"MIT","readmeFilename":"README.md","bugs":{"url":"https://github.com/jashkenas/underscore/issues"},"_id":"underscore@1.5.1","dist":{"shasum":"d2bde817d176ffade894ab71458e682a14b86dc9","tarball":"http://localhost:1337/underscore/-/underscore-1.5.1.tgz"},"_from":".","_npmVersion":"1.2.24","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{},"_integrity":"sha1-0r3oF9F2/63olKtxRY5oKhS4bck=","_shasum":"d2bde817d176ffade894ab71458e682a14b86dc9","_resolved":"http://localhost:1337/underscore/-/underscore-1.5.1.tgz","dependencies":{},"optionalDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_shrinkwrap":null,"bin":null},"type":"finalized-manifest"}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/59/28/f3ffadce8db4fdb922343ee79cb0ab6d1b2f500885d3a7d93bbb4b24e711 b/deps/npm/test/npm_cache/_cacache/index-v5/59/28/f3ffadce8db4fdb922343ee79cb0ab6d1b2f500885d3a7d93bbb4b24e711
new file mode 100644
index 0000000000..54c80e1acc
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/59/28/f3ffadce8db4fdb922343ee79cb0ab6d1b2f500885d3a7d93bbb4b24e711
@@ -0,0 +1,5 @@
+
+e24beb7df1231c201db341f46ef1f8abb7752d80 {"key":"make-fetch-happen:request-cache:http://localhost:1338/-/v1/login","integrity":null,"time":1547833010372}
+ec88b3c9343b37dbf0c6c084946610bb7835774d {"key":"make-fetch-happen:request-cache:http://localhost:1338/-/v1/login","integrity":null,"time":1547833011560}
+318f091e15c70e6f29d4f0b1e663c2807a98524b {"key":"make-fetch-happen:request-cache:http://localhost:1338/-/v1/login","integrity":null,"time":1547833230533}
+ab714759e858dd475e99aa117986a040af48252a {"key":"make-fetch-happen:request-cache:http://localhost:1338/-/v1/login","integrity":null,"time":1547833231522} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/59/5d/20f410f92d365ec2b34c98856ae075582e2842b381809c76ffd12d24c450 b/deps/npm/test/npm_cache/_cacache/index-v5/59/5d/20f410f92d365ec2b34c98856ae075582e2842b381809c76ffd12d24c450
new file mode 100644
index 0000000000..24d3ba1616
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/59/5d/20f410f92d365ec2b34c98856ae075582e2842b381809c76ffd12d24c450
@@ -0,0 +1,3 @@
+
+b845de941681d8414d49bfff3b681b1c11b1ecea {"key":"make-fetch-happen:request-cache:http://localhost:1337/test-repo-url-http","integrity":"sha512-NarqKzpZAiZMFGBhF7AOIEJa8UVgwyPpKFndhvTMVSFG/AZUijHqWbpu3VabakGiAXgfajmQAIL+qsgZI6EuVw==","time":1547833047675,"size":1106,"metadata":{"url":"http://localhost:1337/test-repo-url-http","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["e139e9c1a8b0ded0"],"referer":["bugs test-repo-url-http"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:test-repo-url-http"],"accept":["application/json"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:27 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+3b718ed3038b2e438372411659ab06e9dc7fd729 {"key":"make-fetch-happen:request-cache:http://localhost:1337/test-repo-url-http","integrity":"sha512-NarqKzpZAiZMFGBhF7AOIEJa8UVgwyPpKFndhvTMVSFG/AZUijHqWbpu3VabakGiAXgfajmQAIL+qsgZI6EuVw==","time":1547833264847,"size":1106,"metadata":{"url":"http://localhost:1337/test-repo-url-http","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["11f83a1c99f277cb"],"referer":["bugs test-repo-url-http"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:test-repo-url-http"],"accept":["application/json"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:04 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/59/8d/bede4978235a53fade60aedbfe40200d189691fae9d90c694f654422738c b/deps/npm/test/npm_cache/_cacache/index-v5/59/8d/bede4978235a53fade60aedbfe40200d189691fae9d90c694f654422738c
new file mode 100644
index 0000000000..56a821f840
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/59/8d/bede4978235a53fade60aedbfe40200d189691fae9d90c694f654422738c
@@ -0,0 +1,5 @@
+
+fd58a22661b0d656d8825f579b89bef2f5b48d09 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/%40scoped%2Fanother/collaborators","integrity":"sha512-MshpkrpGcUCKKSuz8vrkzRBBbc7baiFMFpBUr2vMeStupW9yRTMzV8xZ5PhGYDgGBLX/M4JYrUaXMhjYZHmbXg==","time":1547832993749,"size":51,"metadata":{"url":"http://localhost:1337/-/package/%40scoped%2Fanother/collaborators?format=cli","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["b43ad0fff025ebdf"],"referer":["access ls-collaborators [REDACTED]"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:36:33 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+32f2da9079c97ea55aeb6068c7b0c79ed44e80f5 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/%40scoped%2Fanother/collaborators","integrity":"sha512-MshpkrpGcUCKKSuz8vrkzRBBbc7baiFMFpBUr2vMeStupW9yRTMzV8xZ5PhGYDgGBLX/M4JYrUaXMhjYZHmbXg==","time":1547832994448,"size":51,"metadata":{"url":"http://localhost:1337/-/package/%40scoped%2Fanother/collaborators?format=cli&user=zkat","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["e9916eb63e660f41"],"referer":["access ls-collaborators [REDACTED] zkat"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:36:34 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+1e7f2c2ce972add20f15798aac735bf0138599fa {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/%40scoped%2Fanother/collaborators","integrity":"sha512-MshpkrpGcUCKKSuz8vrkzRBBbc7baiFMFpBUr2vMeStupW9yRTMzV8xZ5PhGYDgGBLX/M4JYrUaXMhjYZHmbXg==","time":1547833216881,"size":51,"metadata":{"url":"http://localhost:1337/-/package/%40scoped%2Fanother/collaborators?format=cli","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["bb5528fa4898a9ac"],"referer":["access ls-collaborators [REDACTED]"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:40:16 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+217041f7ea524bd77d46ffa7dd880e59ca6fd581 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/%40scoped%2Fanother/collaborators","integrity":"sha512-MshpkrpGcUCKKSuz8vrkzRBBbc7baiFMFpBUr2vMeStupW9yRTMzV8xZ5PhGYDgGBLX/M4JYrUaXMhjYZHmbXg==","time":1547833217426,"size":51,"metadata":{"url":"http://localhost:1337/-/package/%40scoped%2Fanother/collaborators?format=cli&user=zkat","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["3d89cf1663234567"],"referer":["access ls-collaborators [REDACTED] zkat"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:40:17 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/5e/04/1f94a3a706d4fc86a4e28c064e5182f98631dbc1156be71fa734471d1b31 b/deps/npm/test/npm_cache/_cacache/index-v5/5e/04/1f94a3a706d4fc86a4e28c064e5182f98631dbc1156be71fa734471d1b31
new file mode 100644
index 0000000000..cd0bc97f25
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/5e/04/1f94a3a706d4fc86a4e28c064e5182f98631dbc1156be71fa734471d1b31
@@ -0,0 +1,2 @@
+
+65f5f4d2d391adc1d0ef104079246ecffd6736ae {"key":"pacote:packed-dir:git://localhost:1234/child.git#65974106d8883632964be1da34eec5e85beead3a","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547833223116,"size":143} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/5e/25/544dc931f40d3c9ec02d15a7754abc281ff227d3d4436045fc19bded3abb b/deps/npm/test/npm_cache/_cacache/index-v5/5e/25/544dc931f40d3c9ec02d15a7754abc281ff227d3d4436045fc19bded3abb
new file mode 100644
index 0000000000..7699b031bf
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/5e/25/544dc931f40d3c9ec02d15a7754abc281ff227d3d4436045fc19bded3abb
@@ -0,0 +1,9 @@
+
+86bc6c29fe0adc0d0b961ebe5427c43883b896eb {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/team/myorg/myteam/package","integrity":null,"time":1547832987480}
+dca685c6d7d2f7e331ebee4e67f7da67dcf622d9 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/team/myorg/myteam/package","integrity":null,"time":1547832988107}
+f471c72e7ec5b592533af18b692da5adf4cabf23 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/team/myorg/myteam/package","integrity":null,"time":1547832989180}
+20e661a1569f9c61f06c1e753d344f7f42f4b89b {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/team/myorg/myteam/package","integrity":"sha512-3Cqk30LNQ1Yj9MLD4nT6CBzJQv9F3PqYzfSpMktqIcNyHDS7l+aAnuKAUfwQ9XdJz/YKqXCh44x6bDVKlANVTg==","time":1547832990308,"size":39,"metadata":{"url":"http://localhost:1337/-/team/myorg/myteam/package?format=cli","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["cb9055f60b0e88f3"],"referer":["access ls-packages myorg:myteam"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:36:30 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+1edea5ab5acb2a3ffa7ee166e99c5a397358ed9c {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/team/myorg/myteam/package","integrity":null,"time":1547833211568}
+8e5098cf2f5a2fee34d396006ea2e083396608a6 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/team/myorg/myteam/package","integrity":null,"time":1547833212080}
+4c7dd36cf3e359243712dc145cbb681d713107b8 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/team/myorg/myteam/package","integrity":null,"time":1547833213058}
+4d9236c47a4c5b81a22542da0187135569b5f420 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/team/myorg/myteam/package","integrity":"sha512-3Cqk30LNQ1Yj9MLD4nT6CBzJQv9F3PqYzfSpMktqIcNyHDS7l+aAnuKAUfwQ9XdJz/YKqXCh44x6bDVKlANVTg==","time":1547833214108,"size":39,"metadata":{"url":"http://localhost:1337/-/team/myorg/myteam/package?format=cli","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["a18b23cf2e1926ff"],"referer":["access ls-packages myorg:myteam"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:40:14 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/5f/dc/61605b7783855ffa612d4a7dbf1f5e94e01b700897b6a69b1700a9575905 b/deps/npm/test/npm_cache/_cacache/index-v5/5f/dc/61605b7783855ffa612d4a7dbf1f5e94e01b700897b6a69b1700a9575905
new file mode 100644
index 0000000000..cd047f6688
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/5f/dc/61605b7783855ffa612d4a7dbf1f5e94e01b700897b6a69b1700a9575905
@@ -0,0 +1,5 @@
+
+ee14f65558fa8113fa92a2d1b9e51cc2eaf22abf {"key":"pacote:packed-dir:git://localhost:1234/child.git#e7cca1aeb6415ec51e938d6d26555a0aaa1a1c06","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547833340517,"size":143}
+42f6e39777d09e9e13f131e1484fd57ab61ac607 {"key":"pacote:packed-dir:git://localhost:1234/child.git#e7cca1aeb6415ec51e938d6d26555a0aaa1a1c06","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547833340825,"size":143}
+72e90600f6ae2c7fab275f68a155e0ace2ec205b {"key":"pacote:packed-dir:git://localhost:1234/child.git#e7cca1aeb6415ec51e938d6d26555a0aaa1a1c06","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547833342148,"size":143}
+39bafee4dfbccc66040a143fc9579626be6b6314 {"key":"pacote:packed-dir:git://localhost:1234/child.git#e7cca1aeb6415ec51e938d6d26555a0aaa1a1c06","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547833342505,"size":143} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/60/3b/12bd2d0346c46847789322cfa6781845b7bac7c9830246b89d040ab35bfa b/deps/npm/test/npm_cache/_cacache/index-v5/60/3b/12bd2d0346c46847789322cfa6781845b7bac7c9830246b89d040ab35bfa
new file mode 100644
index 0000000000..31528ee49d
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/60/3b/12bd2d0346c46847789322cfa6781845b7bac7c9830246b89d040ab35bfa
@@ -0,0 +1,5 @@
+
+645ac7bc79519c12afa34011d80e6d62b9018851 {"key":"make-fetch-happen:request-cache:http://localhost:1337/@scope%2fcond","integrity":"sha512-9ZHafObjCNyqZyuGJcoEkcr+1nJs7aFv+83T92YeXrWxquK9mZYKyzovzGGhTt/3nde9YQsnxX/qiv9TXbxRnw==","time":1547833095792,"size":419,"metadata":{"url":"http://localhost:1337/@scope%2fcond?write=true","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["d9d4d05d4ef8b79e"],"referer":["deprecate [REDACTED] make it dead"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:15 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+742ff4bf0e34e21880b460496a4c52a0468831ec {"key":"make-fetch-happen:request-cache:http://localhost:1337/@scope%2fcond","integrity":null,"time":1547833095797}
+0988bf9b72e018d90be88c7672d0cc06729a67fe {"key":"make-fetch-happen:request-cache:http://localhost:1337/@scope%2fcond","integrity":"sha512-9ZHafObjCNyqZyuGJcoEkcr+1nJs7aFv+83T92YeXrWxquK9mZYKyzovzGGhTt/3nde9YQsnxX/qiv9TXbxRnw==","time":1547833316699,"size":419,"metadata":{"url":"http://localhost:1337/@scope%2fcond?write=true","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["b7783e04af895db5"],"referer":["deprecate [REDACTED] make it dead"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:56 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+9c4251659fab821f2e477bdcfad27bd11d8a52e8 {"key":"make-fetch-happen:request-cache:http://localhost:1337/@scope%2fcond","integrity":null,"time":1547833316704} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/61/41/453946604fdfa210a19eb38d07610e8ad7007ffc3f0f3b25da20b9af281d b/deps/npm/test/npm_cache/_cacache/index-v5/61/41/453946604fdfa210a19eb38d07610e8ad7007ffc3f0f3b25da20b9af281d
new file mode 100644
index 0000000000..d0bfcbb8fe
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/61/41/453946604fdfa210a19eb38d07610e8ad7007ffc3f0f3b25da20b9af281d
@@ -0,0 +1,2 @@
+
+6f6eea4cf6aed6824de9fbea12656c898d2d35df {"key":"pacote:git-manifest:git://github.com/isaacs/node-glob.git#67bda227fd7a559cca5620307c7d30a6732a792f","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1544485144332,"size":1,"metadata":{"id":"glob@3.1.5","manifest":{"name":"glob","version":"3.1.5","engines":{"node":"*"},"dependencies":{"minimatch":"0.2","graceful-fs":"~1.1.2","inherits":"1"},"optionalDependencies":{},"devDependencies":{"tap":"~0.2.3","mkdirp":"0","rimraf":"1"},"bundleDependencies":["minimatch"],"peerDependencies":{},"deprecated":false,"_resolved":"git://github.com/isaacs/node-glob.git#67bda227fd7a559cca5620307c7d30a6732a792f","_integrity":null,"_shasum":null,"_shrinkwrap":null,"bin":null,"_id":"glob@3.1.5"},"type":"finalized-manifest"}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/61/5a/c55f3eb9bc8031cdde40de9f1b4244b118714d5d156afca81319c4ed13be b/deps/npm/test/npm_cache/_cacache/index-v5/61/5a/c55f3eb9bc8031cdde40de9f1b4244b118714d5d156afca81319c4ed13be
new file mode 100644
index 0000000000..df333419d2
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/61/5a/c55f3eb9bc8031cdde40de9f1b4244b118714d5d156afca81319c4ed13be
@@ -0,0 +1,3 @@
+
+7b8c6ab3bd4ba738ff44663616fde10740343f61 {"key":"pacote:tag-manifest:http://localhost:1337/optimist/-/optimist-0.6.0.tgz:sha1-aUJIJvNAX3nxQub8PZrljU27kgA=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833046158,"size":1,"metadata":{"id":"optimist@0.6.0","manifest":{"name":"optimist","version":"0.6.0","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","dependencies":{"wordwrap":"~0.0.2","minimist":"~0.0.1"},"devDependencies":{"hashish":"~0.0.4","tap":"~0.4.0"},"scripts":{"test":"tap ./test/*.js"},"repository":{"type":"git","url":"git+ssh://git@github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"readmeFilename":"readme.markdown","bugs":{"url":"https://github.com/substack/node-optimist/issues"},"_id":"optimist@0.6.0","dist":{"shasum":"69424826f3405f79f142e6fc3d9ae58d4dbb9200","tarball":"http://localhost:1337/optimist/-/optimist-0.6.0.tgz"},"_from":".","_npmVersion":"1.3.0","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{},"_integrity":"sha1-aUJIJvNAX3nxQub8PZrljU27kgA=","_shasum":"69424826f3405f79f142e6fc3d9ae58d4dbb9200","_resolved":"http://localhost:1337/optimist/-/optimist-0.6.0.tgz","optionalDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_shrinkwrap":null,"bin":null,"homepage":"https://github.com/substack/node-optimist#readme"},"type":"finalized-manifest"}}
+1540775aafe8f75c1484a63b8ffa068eb2b5a0ec {"key":"pacote:tag-manifest:http://localhost:1337/optimist/-/optimist-0.6.0.tgz:sha1-aUJIJvNAX3nxQub8PZrljU27kgA=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833263489,"size":1,"metadata":{"id":"optimist@0.6.0","manifest":{"name":"optimist","version":"0.6.0","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","dependencies":{"wordwrap":"~0.0.2","minimist":"~0.0.1"},"devDependencies":{"hashish":"~0.0.4","tap":"~0.4.0"},"scripts":{"test":"tap ./test/*.js"},"repository":{"type":"git","url":"git+ssh://git@github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"readmeFilename":"readme.markdown","bugs":{"url":"https://github.com/substack/node-optimist/issues"},"_id":"optimist@0.6.0","dist":{"shasum":"69424826f3405f79f142e6fc3d9ae58d4dbb9200","tarball":"http://localhost:1337/optimist/-/optimist-0.6.0.tgz"},"_from":".","_npmVersion":"1.3.0","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{},"_integrity":"sha1-aUJIJvNAX3nxQub8PZrljU27kgA=","_shasum":"69424826f3405f79f142e6fc3d9ae58d4dbb9200","_resolved":"http://localhost:1337/optimist/-/optimist-0.6.0.tgz","optionalDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_shrinkwrap":null,"bin":null,"homepage":"https://github.com/substack/node-optimist#readme"},"type":"finalized-manifest"}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/64/32/09fccfaff76a1d99becccff3c9a0701f54d94e18ea19ff39aeb0a235d833 b/deps/npm/test/npm_cache/_cacache/index-v5/64/32/09fccfaff76a1d99becccff3c9a0701f54d94e18ea19ff39aeb0a235d833
new file mode 100644
index 0000000000..38f2d89214
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/64/32/09fccfaff76a1d99becccff3c9a0701f54d94e18ea19ff39aeb0a235d833
@@ -0,0 +1,4 @@
+
+9be8adb9750c1eeda100a984b4c4ba96a2f823a8 {"key":"make-fetch-happen:request-cache:http://localhost:1337/minimist/-/minimist-0.0.5.tgz","integrity":"sha1-16oye87PUY+RBqxrjwA/o7zqhWY=","time":1547833073422,"size":5977,"metadata":{"url":"http://localhost:1337/minimist/-/minimist-0.0.5.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["871adf8f5053357c"],"referer":["install"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:minimist@http://localhost:1337/minimist/-/minimist-0.0.5.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:53 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+d93a297ad0b70077d34ae37fb280331124cbc8a3 {"key":"make-fetch-happen:request-cache:http://localhost:1337/minimist/-/minimist-0.0.5.tgz","integrity":"sha1-16oye87PUY+RBqxrjwA/o7zqhWY=","time":1547833073424,"size":5977,"metadata":{"url":"http://localhost:1337/minimist/-/minimist-0.0.5.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["871adf8f5053357c"],"referer":["install"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:minimist@http://localhost:1337/minimist/-/minimist-0.0.5.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:53 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+3395cf4593e324ddc0551640bbbb08ee5ffffabe {"key":"make-fetch-happen:request-cache:http://localhost:1337/minimist/-/minimist-0.0.5.tgz","integrity":"sha1-16oye87PUY+RBqxrjwA/o7zqhWY=","time":1547833093352,"size":5977,"metadata":{"url":"http://localhost:1337/minimist/-/minimist-0.0.5.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["fcd144259ba74815"],"referer":["install ."],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:minimist@http://localhost:1337/minimist/-/minimist-0.0.5.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:13 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/69/d2/6f1c982c4935f9c4a3b7181092bc6213963acf08be267556eed18c1ffcca b/deps/npm/test/npm_cache/_cacache/index-v5/69/d2/6f1c982c4935f9c4a3b7181092bc6213963acf08be267556eed18c1ffcca
new file mode 100644
index 0000000000..a4a87f5107
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/69/d2/6f1c982c4935f9c4a3b7181092bc6213963acf08be267556eed18c1ffcca
@@ -0,0 +1,4 @@
+
+96c65273a5ca1e21de2ce14438e44bb84f5d6cc9 {"key":"pacote:packed-dir:git+file:///Users/zkat/Documents/code/work/npm/test/tap/add-remote-git-file/child.git#0274b9beca938a08345b32346159404f4bfa11a6","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547833220799,"size":143}
+d9c9328edc8966662239117fb0fb28274ec71617 {"key":"pacote:packed-dir:git+file:///Users/zkat/Documents/code/work/npm/test/tap/add-remote-git-file/child.git#0274b9beca938a08345b32346159404f4bfa11a6","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547833221078,"size":143}
+61d7a4e8be9f49766fa77d1b77e50bb54f489957 {"key":"pacote:packed-dir:git+file:///Users/zkat/Documents/code/work/npm/test/tap/add-remote-git-file/child.git#0274b9beca938a08345b32346159404f4bfa11a6","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547833221359,"size":143} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/6b/27/515478d59b0ba28fcdaffd08317ec59071d08bdedd169a5f40c3b1fbb486 b/deps/npm/test/npm_cache/_cacache/index-v5/6b/27/515478d59b0ba28fcdaffd08317ec59071d08bdedd169a5f40c3b1fbb486
new file mode 100644
index 0000000000..6a82a8316c
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/6b/27/515478d59b0ba28fcdaffd08317ec59071d08bdedd169a5f40c3b1fbb486
@@ -0,0 +1,11 @@
+
+c6f1e919801eb202acec5e74928931bfc0143d31 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/v1/login","integrity":null,"time":1547833009006}
+81cb054ce7796a70d8eaded1dde6972fe29b8ec4 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/v1/login","integrity":null,"time":1547833012642}
+0ceb1208bc12f21a1d651c13bf6bcad472d4a6f1 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/v1/login","integrity":null,"time":1547833013368}
+dca7833202363dbffe65c00831707c67a235f345 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/v1/login","integrity":null,"time":1547833014038}
+6ad6d7cab6ef9889434ffecfdf63caeaf80e89bf {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/v1/login","integrity":null,"time":1547833015068}
+94adb474d9ee1b64473f30866b78ed74e5ea17dd {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/v1/login","integrity":null,"time":1547833229637}
+c6f5a95c906827450801dd0a40cbe608b21e4de4 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/v1/login","integrity":null,"time":1547833232597}
+e8203d86ee56303325ad8e3120905eb6466b63ce {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/v1/login","integrity":null,"time":1547833233300}
+ab06232cf2023f61b7c15b9e13d167add7978000 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/v1/login","integrity":null,"time":1547833233886}
+a737b363f7c939ce9cf107f81561bec15e3da935 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/v1/login","integrity":null,"time":1547833234785} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/6f/d4/db68ad12df42b50094e39edbd34fc9713c6c020ca44a5a0b426ff048428d b/deps/npm/test/npm_cache/_cacache/index-v5/6f/d4/db68ad12df42b50094e39edbd34fc9713c6c020ca44a5a0b426ff048428d
new file mode 100644
index 0000000000..ca32376a4c
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/6f/d4/db68ad12df42b50094e39edbd34fc9713c6c020ca44a5a0b426ff048428d
@@ -0,0 +1,2 @@
+
+962e11576a5c5c11ed45044a865b9b2ec3e5faa0 {"key":"pacote:range-manifest:http://localhost:1337/checker/-/checker-0.5.2.tgz:sha1-wno2vwDzp6PSSo+8eFPwb85OnIY=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833073433,"size":1,"metadata":{"id":"checker@0.5.2","manifest":{"name":"checker","version":"0.5.2","dependencies":{"async":"~0.2.9"},"optionalDependencies":{},"devDependencies":{"mocha":"~1.13.0","chai":"~1.8.0"},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"http://localhost:1337/checker/-/checker-0.5.2.tgz","_integrity":"sha1-wno2vwDzp6PSSo+8eFPwb85OnIY=","_shasum":"c27a36bf00f3a7a3d24a8fbc7853f06fce4e9c86","_shrinkwrap":null,"bin":null,"_id":"checker@0.5.2"},"type":"finalized-manifest"}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/6f/ed/7f64617d06ba2145efd7117d088c8431300750cd1c934e227cfecffa01f5 b/deps/npm/test/npm_cache/_cacache/index-v5/6f/ed/7f64617d06ba2145efd7117d088c8431300750cd1c934e227cfecffa01f5
new file mode 100644
index 0000000000..382f6a83f8
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/6f/ed/7f64617d06ba2145efd7117d088c8431300750cd1c934e227cfecffa01f5
@@ -0,0 +1,3 @@
+
+ab2809233a72dbf06c79d9a3b11458fc00e6c239 {"key":"make-fetch-happen:request-cache:http://localhost:1337/npm-test-peer-deps","integrity":"sha512-h0Rmy0bQOcyRK9PuKb+ul6x/TdQFHNJAwbJVSHR/nxxv3DoqnmWwWKso8KIrSq7lgHXgx3/QDd9lZTa8VDKQvg==","time":1547833046941,"size":880,"metadata":{"url":"http://localhost:1337/npm-test-peer-deps","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["ece3b5a000cc3f02"],"referer":["bugs npm-test-peer-deps"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:npm-test-peer-deps"],"accept":["application/json"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:26 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+7ffd6078274f24f79c05c5de54520938b245d5ba {"key":"make-fetch-happen:request-cache:http://localhost:1337/npm-test-peer-deps","integrity":"sha512-h0Rmy0bQOcyRK9PuKb+ul6x/TdQFHNJAwbJVSHR/nxxv3DoqnmWwWKso8KIrSq7lgHXgx3/QDd9lZTa8VDKQvg==","time":1547833264138,"size":880,"metadata":{"url":"http://localhost:1337/npm-test-peer-deps","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["836b89e1cc0594ec"],"referer":["bugs npm-test-peer-deps"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:npm-test-peer-deps"],"accept":["application/json"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:04 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/77/52/b7394cb3a27a44448e3ac4d6834e73ca79c301c7108c94b0ba23ca97b71c b/deps/npm/test/npm_cache/_cacache/index-v5/77/52/b7394cb3a27a44448e3ac4d6834e73ca79c301c7108c94b0ba23ca97b71c
new file mode 100644
index 0000000000..8f51fb1caa
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/77/52/b7394cb3a27a44448e3ac4d6834e73ca79c301c7108c94b0ba23ca97b71c
@@ -0,0 +1,3 @@
+
+63aa615e0b263925ea3c7db1d18d2d7bbc2a6bf1 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/npm/v1/hooks","integrity":"sha512-djlLN4USxovyCbQz4Gtx3yekX357418XSg+DvOd5lii3Tb6ZPBixwS6Jmh7XsVlHCzghgNHwpcQJisYJLNoajw==","time":1547833362916,"size":206,"metadata":{"url":"http://localhost:1337/-/npm/v1/hooks?package=%40npm%2Fhooks","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["ae73fff74c690e4c"],"referer":["hook ls [REDACTED]"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"date":["Fri, 18 Jan 2019 17:42:42 GMT"],"connection":["keep-alive"],"content-length":["206"],"x-fetch-attempts":["1"]}}}
+4fc4f4c828362c6649a93b7a68fc379f2154d781 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/npm/v1/hooks","integrity":"sha512-8+gtagt1rVzr0JF32T9XLb2Lh37p8VBbLoTgOBD6BBLkkEBgvn0qTfQiGxu5KITbiGgmv4zSZjRmei0QOpmUOA==","time":1547833363585,"size":52,"metadata":{"url":"http://localhost:1337/-/npm/v1/hooks?package=%40npm%2Fhooks","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["a9b65a6eaec4099e"],"referer":["hook ls [REDACTED]"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"date":["Fri, 18 Jan 2019 17:42:43 GMT"],"connection":["keep-alive"],"content-length":["52"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/80/e4/0b59aa33a0f8b0f183dcbcdf1d48b9436619bf5b6fd10474ef86e41a8c6f b/deps/npm/test/npm_cache/_cacache/index-v5/80/e4/0b59aa33a0f8b0f183dcbcdf1d48b9436619bf5b6fd10474ef86e41a8c6f
new file mode 100644
index 0000000000..9accb7b18d
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/80/e4/0b59aa33a0f8b0f183dcbcdf1d48b9436619bf5b6fd10474ef86e41a8c6f
@@ -0,0 +1,3 @@
+
+e36fdaa97d141c124f0a70c1724c460e93c338f4 {"key":"pacote:tag-manifest:http://localhost:1337/test-repo-url-https/-/test-repo-url-https-0.0.1.tgz:sha1-4FAI8/+Cs08XselyRUoKtwomnH0=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833048539,"size":1,"metadata":{"id":"test-repo-url-https@0.0.1","manifest":{"name":"test-repo-url-https","version":"0.0.1","description":"Test repo with non-github https repository url","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://gitlab.com/evanlucas/test-repo-url-https.git"},"author":{"name":"Evan Lucas","email":"evanlucas@me.com"},"license":"ISC","_id":"test-repo-url-https@0.0.1","dist":{"shasum":"e05008f3ff82b34f17b1e972454a0ab70a269c7d","tarball":"http://localhost:1337/test-repo-url-https/-/test-repo-url-https-0.0.1.tgz"},"_from":".","_npmVersion":"1.4.2","_npmUser":{"name":"evanlucas","email":"evanlucas@me.com"},"maintainers":[{"name":"evanlucas","email":"evanlucas@me.com"}],"directories":{},"_integrity":"sha1-4FAI8/+Cs08XselyRUoKtwomnH0=","_shasum":"e05008f3ff82b34f17b1e972454a0ab70a269c7d","_resolved":"http://localhost:1337/test-repo-url-https/-/test-repo-url-https-0.0.1.tgz","dependencies":{},"optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_shrinkwrap":null,"bin":null,"bugs":{"url":"https://gitlab.com/evanlucas/test-repo-url-https/issues"},"homepage":"https://gitlab.com/evanlucas/test-repo-url-https#readme"},"type":"finalized-manifest"}}
+47b05a03fabaabfdcb4df36e899d517be2ea80eb {"key":"pacote:tag-manifest:http://localhost:1337/test-repo-url-https/-/test-repo-url-https-0.0.1.tgz:sha1-4FAI8/+Cs08XselyRUoKtwomnH0=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833265549,"size":1,"metadata":{"id":"test-repo-url-https@0.0.1","manifest":{"name":"test-repo-url-https","version":"0.0.1","description":"Test repo with non-github https repository url","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://gitlab.com/evanlucas/test-repo-url-https.git"},"author":{"name":"Evan Lucas","email":"evanlucas@me.com"},"license":"ISC","_id":"test-repo-url-https@0.0.1","dist":{"shasum":"e05008f3ff82b34f17b1e972454a0ab70a269c7d","tarball":"http://localhost:1337/test-repo-url-https/-/test-repo-url-https-0.0.1.tgz"},"_from":".","_npmVersion":"1.4.2","_npmUser":{"name":"evanlucas","email":"evanlucas@me.com"},"maintainers":[{"name":"evanlucas","email":"evanlucas@me.com"}],"directories":{},"_integrity":"sha1-4FAI8/+Cs08XselyRUoKtwomnH0=","_shasum":"e05008f3ff82b34f17b1e972454a0ab70a269c7d","_resolved":"http://localhost:1337/test-repo-url-https/-/test-repo-url-https-0.0.1.tgz","dependencies":{},"optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_shrinkwrap":null,"bin":null,"bugs":{"url":"https://gitlab.com/evanlucas/test-repo-url-https/issues"},"homepage":"https://gitlab.com/evanlucas/test-repo-url-https#readme"},"type":"finalized-manifest"}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/87/c9/f8b19f8ad4e5648c18927a0d7d21e557756b443699e6929fe420d5aa82a2 b/deps/npm/test/npm_cache/_cacache/index-v5/87/c9/f8b19f8ad4e5648c18927a0d7d21e557756b443699e6929fe420d5aa82a2
new file mode 100644
index 0000000000..da95f703b8
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/87/c9/f8b19f8ad4e5648c18927a0d7d21e557756b443699e6929fe420d5aa82a2
@@ -0,0 +1,2 @@
+
+30ea947fa3199c5e9fa3c7117767f9437a1bf2e4 {"key":"pacote:version-manifest:http://localhost:1337/checker/-/checker-0.5.2.tgz:sha1-wno2vwDzp6PSSo+8eFPwb85OnIY=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833093307,"size":1,"metadata":{"id":"checker@0.5.2","manifest":{"name":"checker","version":"0.5.2","dependencies":{"async":"~0.2.9"},"optionalDependencies":{},"devDependencies":{"mocha":"~1.13.0","chai":"~1.8.0"},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"http://localhost:1337/checker/-/checker-0.5.2.tgz","_integrity":"sha1-wno2vwDzp6PSSo+8eFPwb85OnIY=","_shasum":"c27a36bf00f3a7a3d24a8fbc7853f06fce4e9c86","_shrinkwrap":null,"bin":null,"_id":"checker@0.5.2"},"type":"finalized-manifest"}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/89/eb/a7a81ab3eeec3076546f7e1fce3892c4e717a9379d4ad43a7111b5dc8cc2 b/deps/npm/test/npm_cache/_cacache/index-v5/89/eb/a7a81ab3eeec3076546f7e1fce3892c4e717a9379d4ad43a7111b5dc8cc2
new file mode 100644
index 0000000000..c8a7e1cc64
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/89/eb/a7a81ab3eeec3076546f7e1fce3892c4e717a9379d4ad43a7111b5dc8cc2
@@ -0,0 +1,3 @@
+
+7adceb1265ebb2ace488f13aa3b15b59f0f01dbf {"key":"pacote:packed-dir:git://github.com/isaacs/canonical-host.git#7d5ad6eda4ca2948f890b1d8169bc1029bf62364","integrity":"sha512-LOyK+tCWYYrmCtnNHPLS2dVZe2gBDMCHyaeHZe8NrNJcE6DjaUiUkxfwn2ZydO5fpxSr3BsVjlz+pcpUAWY0JQ==","time":1544485146869,"size":5787}
+98a0e48f468ef1264acc4ad8ca234465f95411af {"key":"pacote:packed-dir:git://github.com/isaacs/canonical-host.git#7d5ad6eda4ca2948f890b1d8169bc1029bf62364","integrity":"sha512-LOyK+tCWYYrmCtnNHPLS2dVZe2gBDMCHyaeHZe8NrNJcE6DjaUiUkxfwn2ZydO5fpxSr3BsVjlz+pcpUAWY0JQ==","time":1544485150074,"size":5787} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/8b/2e/99af1be8f0aa3d6223b000c96edea31a1e6d923f7f3daf1ff06e04899cbb b/deps/npm/test/npm_cache/_cacache/index-v5/8b/2e/99af1be8f0aa3d6223b000c96edea31a1e6d923f7f3daf1ff06e04899cbb
new file mode 100644
index 0000000000..8a60755207
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/8b/2e/99af1be8f0aa3d6223b000c96edea31a1e6d923f7f3daf1ff06e04899cbb
@@ -0,0 +1,3 @@
+
+2cde6a16e5c38cc59035af402d47d758775c332b {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/org/myorg/package","integrity":"sha512-3Cqk30LNQ1Yj9MLD4nT6CBzJQv9F3PqYzfSpMktqIcNyHDS7l+aAnuKAUfwQ9XdJz/YKqXCh44x6bDVKlANVTg==","time":1547832990867,"size":39,"metadata":{"url":"http://localhost:1337/-/org/myorg/package?format=cli","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["3130fc09c51bc7e6"],"referer":["access ls-packages myorg"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:36:30 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+f20d476c9d4375fd8d85195b984301b7795edbf2 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/org/myorg/package","integrity":"sha512-3Cqk30LNQ1Yj9MLD4nT6CBzJQv9F3PqYzfSpMktqIcNyHDS7l+aAnuKAUfwQ9XdJz/YKqXCh44x6bDVKlANVTg==","time":1547833214654,"size":39,"metadata":{"url":"http://localhost:1337/-/org/myorg/package?format=cli","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["bb74308033dfab7e"],"referer":["access ls-packages myorg"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:40:14 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/8c/cf/08c44da29714d229eaceaad1d0ca321b8e5cc8080001efa90bd6e7cf2d10 b/deps/npm/test/npm_cache/_cacache/index-v5/8c/cf/08c44da29714d229eaceaad1d0ca321b8e5cc8080001efa90bd6e7cf2d10
new file mode 100644
index 0000000000..4c93a0cfde
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/8c/cf/08c44da29714d229eaceaad1d0ca321b8e5cc8080001efa90bd6e7cf2d10
@@ -0,0 +1,3 @@
+
+afa0c7f53e253a126cb28e830d7a278045895c8c {"key":"pacote:file-manifest:/Users/zkat/Documents/code/work/npm/test/tap/bundled-dependencies-nonarray/a-bundled-dep-2.0.0.tgz:sha512-qoZzDskyzbDwXbLzXh5Fb8mG2xn4P7P4FApYUUEfvPRJZjKEeasoDMgK4tdAzcAfj4gINqAMZnQ1ZazS6DUueg==","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833057466,"size":1,"metadata":{"id":"a-bundled-dep@2.0.0","manifest":{"name":"a-bundled-dep","version":"2.0.0","dependencies":{},"optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"/Users/zkat/Documents/code/work/npm/test/tap/bundled-dependencies-nonarray/a-bundled-dep-2.0.0.tgz","_integrity":"sha512-qoZzDskyzbDwXbLzXh5Fb8mG2xn4P7P4FApYUUEfvPRJZjKEeasoDMgK4tdAzcAfj4gINqAMZnQ1ZazS6DUueg==","_shasum":"ffb9090887f8d12db11019efe29fd9c145533a64","_shrinkwrap":null,"bin":null,"_id":"a-bundled-dep@2.0.0"},"type":"finalized-manifest"}}
+61b8f5be08fc715ef01e281391909246cfcbf497 {"key":"pacote:file-manifest:/Users/zkat/Documents/code/work/npm/test/tap/bundled-dependencies-nonarray/a-bundled-dep-2.0.0.tgz:sha512-qoZzDskyzbDwXbLzXh5Fb8mG2xn4P7P4FApYUUEfvPRJZjKEeasoDMgK4tdAzcAfj4gINqAMZnQ1ZazS6DUueg==","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833274133,"size":1,"metadata":{"id":"a-bundled-dep@2.0.0","manifest":{"name":"a-bundled-dep","version":"2.0.0","dependencies":{},"optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"/Users/zkat/Documents/code/work/npm/test/tap/bundled-dependencies-nonarray/a-bundled-dep-2.0.0.tgz","_integrity":"sha512-qoZzDskyzbDwXbLzXh5Fb8mG2xn4P7P4FApYUUEfvPRJZjKEeasoDMgK4tdAzcAfj4gINqAMZnQ1ZazS6DUueg==","_shasum":"ffb9090887f8d12db11019efe29fd9c145533a64","_shrinkwrap":null,"bin":null,"_id":"a-bundled-dep@2.0.0"},"type":"finalized-manifest"}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/8e/53/8602d3aab48229cac8aeeb996d0c850341d8e832b38df45ce8b79f2d7f6a b/deps/npm/test/npm_cache/_cacache/index-v5/8e/53/8602d3aab48229cac8aeeb996d0c850341d8e832b38df45ce8b79f2d7f6a
new file mode 100644
index 0000000000..865ea6d95c
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/8e/53/8602d3aab48229cac8aeeb996d0c850341d8e832b38df45ce8b79f2d7f6a
@@ -0,0 +1,5 @@
+
+86d07b775b7611ca1aea90abb40520f70359c2db {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fanother/dist-tags/c","integrity":null,"time":1547833100971}
+fb2e849aa1afeb0f116eaf13831ec87542f606ad {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fanother/dist-tags/c","integrity":null,"time":1547833102196}
+043fc0b8159c4cc7a460fb822f806aae3e42f159 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fanother/dist-tags/c","integrity":null,"time":1547833321327}
+eb7ad592957eaef3efa2bf494179785031af811e {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fanother/dist-tags/c","integrity":null,"time":1547833322473} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/93/4e/425c049345ed549becd9e42f3ca7ad942331f73dd73c3e6f5549e910679b b/deps/npm/test/npm_cache/_cacache/index-v5/93/4e/425c049345ed549becd9e42f3ca7ad942331f73dd73c3e6f5549e910679b
new file mode 100644
index 0000000000..6467ee12d6
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/93/4e/425c049345ed549becd9e42f3ca7ad942331f73dd73c3e6f5549e910679b
@@ -0,0 +1,3 @@
+
+aa600b0670543e98b0c7d38abca19b04ab212c41 {"key":"make-fetch-happen:request-cache:https://codeload.github.com/substack/jsonify/legacy.tar.gz/master","integrity":"sha1-7laKKx7665W+xNnlnlMB/GMzmGY=","time":1544485146877,"size":4733,"metadata":{"url":"https://codeload.github.com/substack/jsonify/legacy.tar.gz/master","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.5.0 node/v10.14.1 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["8afff98d6d30632a"],"pacote-pkg-id":["registry:undefined@https://github.com/substack/jsonify/tarball/master"],"pacote-req-type":["tarball"],"referer":["install [REDACTED]"]},"resHeaders":{"transfer-encoding":["chunked"],"access-control-allow-origin":["https://render.githubusercontent.com"],"content-security-policy":["default-src 'none'; style-src 'unsafe-inline'; sandbox"],"strict-transport-security":["max-age=31536000"],"vary":["Authorization,Accept-Encoding"],"x-content-type-options":["nosniff"],"x-frame-options":["deny"],"x-xss-protection":["1; mode=block"],"etag":["\"7064ab53e5f73fa31e2ce7aa47d210c539662f16\""],"content-type":["application/x-gzip"],"content-disposition":["attachment; filename=substack-jsonify-7064ab5.tar.gz"],"x-geo-block-list":[""],"date":["Mon, 10 Dec 2018 23:39:06 GMT"],"x-github-request-id":["EE37:2F59:46593:BB61F:5C0EF91A"],"x-fetch-attempts":["1"]}}}
+daad1e6a48c667add8dbded2d3d19d15821df7a6 {"key":"make-fetch-happen:request-cache:https://codeload.github.com/substack/jsonify/legacy.tar.gz/master","integrity":"sha512-LjZI+XaDCuq6BySzgqCaamc239THVZY6T0Yvlj+eyyEcIljwB2bcOqaGZPZtOgHLJ4myz2FK6yktvrSv4LIGzA==","time":1544485149788,"size":4733,"metadata":{"url":"https://codeload.github.com/substack/jsonify/legacy.tar.gz/master","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.5.0 node/v10.14.1 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["8afff98d6d30632a"],"pacote-pkg-id":["registry:undefined@https://github.com/substack/jsonify/tarball/master"],"pacote-req-type":["tarball"],"referer":["install [REDACTED]"]},"resHeaders":{"transfer-encoding":["chunked"],"access-control-allow-origin":["https://render.githubusercontent.com"],"content-security-policy":["default-src 'none'; style-src 'unsafe-inline'; sandbox"],"strict-transport-security":["max-age=31536000"],"vary":["Authorization,Accept-Encoding"],"x-content-type-options":["nosniff"],"x-frame-options":["deny"],"x-xss-protection":["1; mode=block"],"etag":["\"7064ab53e5f73fa31e2ce7aa47d210c539662f16\""],"content-type":["application/x-gzip"],"content-disposition":["attachment; filename=substack-jsonify-7064ab5.tar.gz"],"x-geo-block-list":[""],"date":["Mon, 10 Dec 2018 23:39:09 GMT"],"x-github-request-id":["EE37:2F59:46596:BB622:5C0EF91A"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/96/66/5a9f2d90e8428d5b30418640b55c06029c2d36a3dc34ee91b90483a9973d b/deps/npm/test/npm_cache/_cacache/index-v5/96/66/5a9f2d90e8428d5b30418640b55c06029c2d36a3dc34ee91b90483a9973d
new file mode 100644
index 0000000000..7ac314ca71
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/96/66/5a9f2d90e8428d5b30418640b55c06029c2d36a3dc34ee91b90483a9973d
@@ -0,0 +1,3 @@
+
+7f23855ebb1664944fac018738f56c84f2dc5458 {"key":"make-fetch-happen:request-cache:http://localhost:1337/test-repo-url-ssh/-/test-repo-url-ssh-0.0.1.tgz","integrity":"sha1-KncwfhCL+1cQfEwzSrte9Tldxoo=","time":1547833049336,"size":364,"metadata":{"url":"http://localhost:1337/test-repo-url-ssh/-/test-repo-url-ssh-0.0.1.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["0057a2b51b6e5b0a"],"referer":["bugs test-repo-url-ssh"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:test-repo-url-ssh@http://localhost:1337/test-repo-url-ssh/-/test-repo-url-ssh-0.0.1.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:29 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+ef49c09f1ae22cfdd8adeb94e6204f473d793e39 {"key":"make-fetch-happen:request-cache:http://localhost:1337/test-repo-url-ssh/-/test-repo-url-ssh-0.0.1.tgz","integrity":"sha1-KncwfhCL+1cQfEwzSrte9Tldxoo=","time":1547833266224,"size":364,"metadata":{"url":"http://localhost:1337/test-repo-url-ssh/-/test-repo-url-ssh-0.0.1.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["1b2e5a88bc1db2e9"],"referer":["bugs test-repo-url-ssh"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:test-repo-url-ssh@http://localhost:1337/test-repo-url-ssh/-/test-repo-url-ssh-0.0.1.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:06 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/9b/00/38d905a4cf8b1a291d0a7bca660b3b4f409bea196a8cea3f3e66c5a8e84b b/deps/npm/test/npm_cache/_cacache/index-v5/9b/00/38d905a4cf8b1a291d0a7bca660b3b4f409bea196a8cea3f3e66c5a8e84b
new file mode 100644
index 0000000000..333f93067b
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/9b/00/38d905a4cf8b1a291d0a7bca660b3b4f409bea196a8cea3f3e66c5a8e84b
@@ -0,0 +1,5 @@
+
+81324d43613be05eddb8115659e2d90ef03496eb {"key":"pacote:packed-dir:git://localhost:1234/top.git#9e4db86f79e3dcb0cafe10d5f8f1e2de7a8cb9c9","integrity":"sha512-VJX+hA7b9dGN/CfF9NmzWeirgaR0H2Kw3rIJeTWYQ4KK5QESusTiWj/BCJ0mD9m4I25DSjpVWAt6q6Np5vi6hw==","time":1547833003642,"size":283}
+221db6f36f5ddc4a83a4249ec9a7b2ecec9b8590 {"key":"pacote:packed-dir:git://localhost:1234/top.git#9e4db86f79e3dcb0cafe10d5f8f1e2de7a8cb9c9","integrity":"sha512-VJX+hA7b9dGN/CfF9NmzWeirgaR0H2Kw3rIJeTWYQ4KK5QESusTiWj/BCJ0mD9m4I25DSjpVWAt6q6Np5vi6hw==","time":1547833004271,"size":283}
+35ea9b8ae3e33e5e3606f790fa48c1055e0b18b3 {"key":"pacote:packed-dir:git://localhost:1234/top.git#9e4db86f79e3dcb0cafe10d5f8f1e2de7a8cb9c9","integrity":"sha512-VJX+hA7b9dGN/CfF9NmzWeirgaR0H2Kw3rIJeTWYQ4KK5QESusTiWj/BCJ0mD9m4I25DSjpVWAt6q6Np5vi6hw==","time":1547833004908,"size":283}
+524e1e8e8d9a690cb02d5fbd029cf1b15b61cf9b {"key":"pacote:packed-dir:git://localhost:1234/top.git#9e4db86f79e3dcb0cafe10d5f8f1e2de7a8cb9c9","integrity":"sha512-VJX+hA7b9dGN/CfF9NmzWeirgaR0H2Kw3rIJeTWYQ4KK5QESusTiWj/BCJ0mD9m4I25DSjpVWAt6q6Np5vi6hw==","time":1547833005495,"size":283} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/9b/03/54636aae9cb55a079d1cc7f9caf4f3e654df7abd1fc8279dde9f935c76aa b/deps/npm/test/npm_cache/_cacache/index-v5/9b/03/54636aae9cb55a079d1cc7f9caf4f3e654df7abd1fc8279dde9f935c76aa
new file mode 100644
index 0000000000..bd9c30d6a2
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/9b/03/54636aae9cb55a079d1cc7f9caf4f3e654df7abd1fc8279dde9f935c76aa
@@ -0,0 +1,5 @@
+
+7b38c2b7bb46182c0bef0cad488df298d4cc4df1 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/whoami","integrity":"sha512-6DaJqcIayTwqDvx+U2klAE5Si9O/66cIz1IW25mcXvzg1xOKfm7O2xJeQ7oq60ddWViiyjH0jGoUQvFk6Qo6Ig==","time":1547833016915,"size":25,"metadata":{"url":"http://localhost:1337/-/whoami","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["1b1860266820cd60"],"referer":["adduser"],"authorization":["Bearer foo"]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:36:56 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+827995ba80d0a09d195f4c6ba887cfbbab632a08 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/whoami","integrity":"sha512-6DaJqcIayTwqDvx+U2klAE5Si9O/66cIz1IW25mcXvzg1xOKfm7O2xJeQ7oq60ddWViiyjH0jGoUQvFk6Qo6Ig==","time":1547833018622,"size":25,"metadata":{"url":"http://localhost:1337/-/whoami","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["17b1054485dce89c"],"referer":["adduser"],"authorization":["Bearer foo"]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:36:58 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+30d09ec90a7fc5c17cd4bf637cf0354f29bede2f {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/whoami","integrity":"sha512-6DaJqcIayTwqDvx+U2klAE5Si9O/66cIz1IW25mcXvzg1xOKfm7O2xJeQ7oq60ddWViiyjH0jGoUQvFk6Qo6Ig==","time":1547833236392,"size":25,"metadata":{"url":"http://localhost:1337/-/whoami","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["883d0ceea29e732e"],"referer":["adduser"],"authorization":["Bearer foo"]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:40:36 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+f4e40cd490abf1b55d3c5b747c37cf434fff61d1 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/whoami","integrity":"sha512-6DaJqcIayTwqDvx+U2klAE5Si9O/66cIz1IW25mcXvzg1xOKfm7O2xJeQ7oq60ddWViiyjH0jGoUQvFk6Qo6Ig==","time":1547833237880,"size":25,"metadata":{"url":"http://localhost:1337/-/whoami","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["9c397efd8f029f31"],"referer":["adduser"],"authorization":["Bearer foo"]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:40:37 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/9c/df/2bf910aa7cba3cae28d9c34ba6cd492e2a0053b4aeea258df6763e8cd8a2 b/deps/npm/test/npm_cache/_cacache/index-v5/9c/df/2bf910aa7cba3cae28d9c34ba6cd492e2a0053b4aeea258df6763e8cd8a2
new file mode 100644
index 0000000000..9c9e57d2da
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/9c/df/2bf910aa7cba3cae28d9c34ba6cd492e2a0053b4aeea258df6763e8cd8a2
@@ -0,0 +1,9 @@
+
+c8c512129461bf5bf6c12d3bf65d3db0dee072e5 {"key":"make-fetch-happen:request-cache:http://localhost:1337/optimist","integrity":"sha512-7fwtedDVW/TqArdOzDZX6oM7xtBXitsuH1rg1zOwmkhPjnKHkBV4x72qXW/TCsTepIdzphDKbuHgnjH2FH6SHQ==","time":1547833046108,"size":123815,"metadata":{"url":"http://localhost:1337/optimist","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["829b1dc23689fa30"],"referer":["bugs optimist"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:optimist"],"accept":["application/json"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:26 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+8143a4aff9dc3a1fe3e919397314168e02887d05 {"key":"make-fetch-happen:request-cache:http://localhost:1337/optimist","integrity":"sha512-7fwtedDVW/TqArdOzDZX6oM7xtBXitsuH1rg1zOwmkhPjnKHkBV4x72qXW/TCsTepIdzphDKbuHgnjH2FH6SHQ==","time":1547833073341,"size":123815,"metadata":{"url":"http://localhost:1337/optimist","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["871adf8f5053357c"],"referer":["install"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:optimist"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:53 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+22750763814933396f3b0af93f96699c2a461566 {"key":"make-fetch-happen:request-cache:http://localhost:1337/optimist","integrity":"sha512-7fwtedDVW/TqArdOzDZX6oM7xtBXitsuH1rg1zOwmkhPjnKHkBV4x72qXW/TCsTepIdzphDKbuHgnjH2FH6SHQ==","time":1547833079800,"size":123815,"metadata":{"url":"http://localhost:1337/optimist","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["d19ab2d4de48cace"],"referer":["install optimist"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:optimist"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:59 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+a43ce8446c2bc2394574224e4eab85ca71398f2d {"key":"make-fetch-happen:request-cache:http://localhost:1337/optimist","integrity":"sha512-7fwtedDVW/TqArdOzDZX6oM7xtBXitsuH1rg1zOwmkhPjnKHkBV4x72qXW/TCsTepIdzphDKbuHgnjH2FH6SHQ==","time":1547833093362,"size":123815,"metadata":{"url":"http://localhost:1337/optimist","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["fcd144259ba74815"],"referer":["install ."],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:optimist"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:13 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+c76762edb49942e9fd6ac9b94812e7e04c9209c2 {"key":"make-fetch-happen:request-cache:http://localhost:1337/optimist","integrity":"sha512-7fwtedDVW/TqArdOzDZX6oM7xtBXitsuH1rg1zOwmkhPjnKHkBV4x72qXW/TCsTepIdzphDKbuHgnjH2FH6SHQ==","time":1547833263459,"size":123815,"metadata":{"url":"http://localhost:1337/optimist","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["5735fc1a8674c7f7"],"referer":["bugs optimist"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:optimist"],"accept":["application/json"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:03 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+79c9c9829c39aabe6bfb55a6b4f8f314bfca8d65 {"key":"make-fetch-happen:request-cache:http://localhost:1337/optimist","integrity":"sha512-7fwtedDVW/TqArdOzDZX6oM7xtBXitsuH1rg1zOwmkhPjnKHkBV4x72qXW/TCsTepIdzphDKbuHgnjH2FH6SHQ==","time":1547833294122,"size":123815,"metadata":{"url":"http://localhost:1337/optimist","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["0a92a1a2bc33028a"],"referer":["install"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:optimist"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:34 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+832428c8a63fee4a20594fa4ed73f56f1bd686b0 {"key":"make-fetch-happen:request-cache:http://localhost:1337/optimist","integrity":"sha512-7fwtedDVW/TqArdOzDZX6oM7xtBXitsuH1rg1zOwmkhPjnKHkBV4x72qXW/TCsTepIdzphDKbuHgnjH2FH6SHQ==","time":1547833301193,"size":123815,"metadata":{"url":"http://localhost:1337/optimist","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["f4c81daeaa866c45"],"referer":["install optimist"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:optimist"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:41 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+149425ba494b07fca3f55079eef5dada2525c00a {"key":"make-fetch-happen:request-cache:http://localhost:1337/optimist","integrity":"sha512-7fwtedDVW/TqArdOzDZX6oM7xtBXitsuH1rg1zOwmkhPjnKHkBV4x72qXW/TCsTepIdzphDKbuHgnjH2FH6SHQ==","time":1547833314443,"size":123815,"metadata":{"url":"http://localhost:1337/optimist","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["ce2c0b941f6a62b8"],"referer":["install ."],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:optimist"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:54 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/9f/3f/3bc8b783702f297c0e0f134ecf35495d997ad1c67532fe520ac6709d28c5 b/deps/npm/test/npm_cache/_cacache/index-v5/9f/3f/3bc8b783702f297c0e0f134ecf35495d997ad1c67532fe520ac6709d28c5
new file mode 100644
index 0000000000..1a67dcf697
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/9f/3f/3bc8b783702f297c0e0f134ecf35495d997ad1c67532fe520ac6709d28c5
@@ -0,0 +1,4 @@
+
+8b72fc4a000ffb83714893ab799fbc8b84e035af {"key":"make-fetch-happen:request-cache:http://localhost:1337/optimist/-/optimist-0.6.0.tgz","integrity":"sha1-aUJIJvNAX3nxQub8PZrljU27kgA=","time":1547833046141,"size":12142,"metadata":{"url":"http://localhost:1337/optimist/-/optimist-0.6.0.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["829b1dc23689fa30"],"referer":["bugs optimist"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:optimist@http://localhost:1337/optimist/-/optimist-0.6.0.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:26 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+3d5e00fcad8a195890beaa5ebd8191db35438d03 {"key":"make-fetch-happen:request-cache:http://localhost:1337/optimist/-/optimist-0.6.0.tgz","integrity":"sha1-aUJIJvNAX3nxQub8PZrljU27kgA=","time":1547833073368,"size":12142,"metadata":{"url":"http://localhost:1337/optimist/-/optimist-0.6.0.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["871adf8f5053357c"],"referer":["install"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:optimist@http://localhost:1337/optimist/-/optimist-0.6.0.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:53 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+cbcbecbdc61e341bbef8203ba99b22f50edcbf61 {"key":"make-fetch-happen:request-cache:http://localhost:1337/optimist/-/optimist-0.6.0.tgz","integrity":"sha1-aUJIJvNAX3nxQub8PZrljU27kgA=","time":1547833263481,"size":12142,"metadata":{"url":"http://localhost:1337/optimist/-/optimist-0.6.0.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["5735fc1a8674c7f7"],"referer":["bugs optimist"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:optimist@http://localhost:1337/optimist/-/optimist-0.6.0.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:03 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/9f/5f/7b93b3b7f757730e79213f4cb7e73c072a15544da364e543df7bef989d9c b/deps/npm/test/npm_cache/_cacache/index-v5/9f/5f/7b93b3b7f757730e79213f4cb7e73c072a15544da364e543df7bef989d9c
new file mode 100644
index 0000000000..74398f08fb
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/9f/5f/7b93b3b7f757730e79213f4cb7e73c072a15544da364e543df7bef989d9c
@@ -0,0 +1,3 @@
+
+aa15a41bad294a56a31a8bcce8a25a879b1c5dbb {"key":"make-fetch-happen:request-cache:http://localhost:1337/test-repo-url-https","integrity":"sha512-OvWsbjQzIlnUVneciC2dDbRyvv6E/YBDrDKL9R4b3NR0N7F+/02S30rY6ZmywuFAd5zegfaUddjUWRgIEDuWSw==","time":1547833048509,"size":1871,"metadata":{"url":"http://localhost:1337/test-repo-url-https","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["fcfdb97957af4e03"],"referer":["bugs test-repo-url-https"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:test-repo-url-https"],"accept":["application/json"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:28 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+d3dc2f53b27389600b8b0dcb4ada9a6512cfc6e2 {"key":"make-fetch-happen:request-cache:http://localhost:1337/test-repo-url-https","integrity":"sha512-OvWsbjQzIlnUVneciC2dDbRyvv6E/YBDrDKL9R4b3NR0N7F+/02S30rY6ZmywuFAd5zegfaUddjUWRgIEDuWSw==","time":1547833265524,"size":1871,"metadata":{"url":"http://localhost:1337/test-repo-url-https","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["e76ebb11020bbcdd"],"referer":["bugs test-repo-url-https"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:test-repo-url-https"],"accept":["application/json"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:05 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/a2/4a/41538002c219a054a1ecf2e6be6e66dac4d4feb5407eb6ecb26af41a4de8 b/deps/npm/test/npm_cache/_cacache/index-v5/a2/4a/41538002c219a054a1ecf2e6be6e66dac4d4feb5407eb6ecb26af41a4de8
new file mode 100644
index 0000000000..054b7f8024
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/a2/4a/41538002c219a054a1ecf2e6be6e66dac4d4feb5407eb6ecb26af41a4de8
@@ -0,0 +1,12 @@
+
+6c5c990934e13926b51e6ab354f42e8d0779bf8f {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/org/myorg/user","integrity":null,"time":1547839103758}
+c207b5deb1770f1dc3c1df34e081ffd9478e8188 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/org/myorg/user","integrity":null,"time":1547839104211}
+0719d4a0a0cee9d90dd426594cac152fec62630d {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/org/myorg/user","integrity":null,"time":1547839104637}
+f3843f28e872291acf6c2d1e28d7df6e87faa173 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/org/myorg/user","integrity":null,"time":1547839105071}
+3cf344d77f10ce0dc25fe8de8bae90765df36f1a {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/org/myorg/user","integrity":null,"time":1547839105510}
+9ed5744249929413155c6b342f8403ffc4d1c582 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/org/myorg/user","integrity":null,"time":1547839105949}
+e209c7b8c5189b9a3004b4c190c1f522868a81d7 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/org/myorg/user","integrity":null,"time":1547839106387}
+1896b456ddf22502794469d37fc32f30684439f0 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/org/myorg/user","integrity":null,"time":1547839106824}
+91a0f1ced7d89fbc18eaf0b9aa8ce8ada9e090e8 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/org/myorg/user","integrity":null,"time":1547839107252}
+86e26814b6776ed9e565fb70bbff4db467688c5f {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/org/myorg/user","integrity":"sha512-b8c91FCMLZ8X7rHP0ognaUihaJ699qjT9PdRbUxovmOQY+flQ373/3JUeqvoa0mmsb9cczvezjh32CvIvBqafQ==","time":1547839107274,"size":21,"metadata":{"url":"http://localhost:1337/-/org/myorg/user","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["782279b862f30d85"],"referer":["org rm myorg myuser"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"date":["Fri, 18 Jan 2019 19:18:27 GMT"],"connection":["keep-alive"],"content-length":["21"],"x-fetch-attempts":["1"]}}}
+13b115c72fcda3731ffbd4076ac771992fdf690a {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/org/myorg/user","integrity":"sha512-/TdlwwFD2pvTZ1jk8ZzOCYSqyfamqQoqHqeauKzshIQbeyr0sg5SBR1YWsEr7xkw01I01lVjGTFdVlY5EldHLQ==","time":1547839107720,"size":38,"metadata":{"url":"http://localhost:1337/-/org/myorg/user","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["bb01753ed8b7a54a"],"referer":["org ls myorg"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"date":["Fri, 18 Jan 2019 19:18:27 GMT"],"connection":["keep-alive"],"content-length":["38"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/a2/ff/2fbedd19724625ef6060f72129b8494625e3e6fd08f7fd5886f65bf82e0d b/deps/npm/test/npm_cache/_cacache/index-v5/a2/ff/2fbedd19724625ef6060f72129b8494625e3e6fd08f7fd5886f65bf82e0d
new file mode 100644
index 0000000000..0f751b9230
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/a2/ff/2fbedd19724625ef6060f72129b8494625e3e6fd08f7fd5886f65bf82e0d
@@ -0,0 +1,2 @@
+
+8754c947aa648ac5a1e7d7bd750cf206f19ddf2a {"key":"pacote:version-manifest:http://localhost:1337/clean/-/clean-2.1.6.tgz:sha1-QcgLK29UMsYM3bgZMqtWVjtET1I=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833073374,"size":1,"metadata":{"id":"clean@2.1.6","manifest":{"name":"clean","version":"2.1.6","dependencies":{"checker":"~0.5.1","minimist":"~0.0.5"},"optionalDependencies":{},"devDependencies":{"mocha":"~1.13.0","chai":"~1.8.0"},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"http://localhost:1337/clean/-/clean-2.1.6.tgz","_integrity":"sha1-QcgLK29UMsYM3bgZMqtWVjtET1I=","_shasum":"41c80b2b6f5432c60cddb81932ab56563b444f52","_shrinkwrap":null,"bin":null,"_id":"clean@2.1.6"},"type":"finalized-manifest"}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/a6/c9/dbe7acc04b7cea7b99c68f3821cf6d7f49caba301e383b31143bd9670f28 b/deps/npm/test/npm_cache/_cacache/index-v5/a6/c9/dbe7acc04b7cea7b99c68f3821cf6d7f49caba301e383b31143bd9670f28
new file mode 100644
index 0000000000..7aee08fdb8
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/a6/c9/dbe7acc04b7cea7b99c68f3821cf6d7f49caba301e383b31143bd9670f28
@@ -0,0 +1,5 @@
+
+3002bf2472d538dd29ea7b342d57d5df22550e1b {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/npm/v1/hooks/hook/dead%40beef","integrity":null,"time":1547833361751}
+8c135f20bdfb585426caf7fd49188a735d252fe0 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/npm/v1/hooks/hook/dead%40beef","integrity":null,"time":1547833362326}
+95ae855df601d00c050d2a0aafffcfbbe7e512bf {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/npm/v1/hooks/hook/dead%40beef","integrity":null,"time":1547833364134}
+7ce3a872de3f712c0df4a401f404423e8728ab90 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/npm/v1/hooks/hook/dead%40beef","integrity":null,"time":1547833364692} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/a8/15/13afeacd20fdb82b59ceeaa57b4d135c5def8209619ca09751fdae5bd803 b/deps/npm/test/npm_cache/_cacache/index-v5/a8/15/13afeacd20fdb82b59ceeaa57b4d135c5def8209619ca09751fdae5bd803
new file mode 100644
index 0000000000..8b2d365594
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/a8/15/13afeacd20fdb82b59ceeaa57b4d135c5def8209619ca09751fdae5bd803
@@ -0,0 +1,3 @@
+
+30492be5d770c162fa1e38568cad83070b45d4cd {"key":"make-fetch-happen:request-cache:http://localhost:1337/test-repo-url-ssh","integrity":"sha512-zesPUGW+A+iVR6M+Bk2RGWmVPEXrBd9mTKTVN7lw3J92gSNGOm91zmuDbVDuc8GKx6Jedj8rmGlhLNv0JxldSw==","time":1547833049314,"size":1094,"metadata":{"url":"http://localhost:1337/test-repo-url-ssh","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["0057a2b51b6e5b0a"],"referer":["bugs test-repo-url-ssh"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:test-repo-url-ssh"],"accept":["application/json"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:29 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+aab489bc027e6f7280ac70934e3147555ed2ff15 {"key":"make-fetch-happen:request-cache:http://localhost:1337/test-repo-url-ssh","integrity":"sha512-zesPUGW+A+iVR6M+Bk2RGWmVPEXrBd9mTKTVN7lw3J92gSNGOm91zmuDbVDuc8GKx6Jedj8rmGlhLNv0JxldSw==","time":1547833266207,"size":1094,"metadata":{"url":"http://localhost:1337/test-repo-url-ssh","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["1b2e5a88bc1db2e9"],"referer":["bugs test-repo-url-ssh"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:test-repo-url-ssh"],"accept":["application/json"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:06 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/a8/88/3a6a0c55cde913db472fd92adee9edf0f507c4ea02b2703d926b06947341 b/deps/npm/test/npm_cache/_cacache/index-v5/a8/88/3a6a0c55cde913db472fd92adee9edf0f507c4ea02b2703d926b06947341
new file mode 100644
index 0000000000..9a7f8a3b57
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/a8/88/3a6a0c55cde913db472fd92adee9edf0f507c4ea02b2703d926b06947341
@@ -0,0 +1,3 @@
+
+dae0f572918acce3f6c847cef076673e992e3752 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/%40scoped%2Fpkg/collaborators","integrity":"sha512-MshpkrpGcUCKKSuz8vrkzRBBbc7baiFMFpBUr2vMeStupW9yRTMzV8xZ5PhGYDgGBLX/M4JYrUaXMhjYZHmbXg==","time":1547832993103,"size":51,"metadata":{"url":"http://localhost:1337/-/package/%40scoped%2Fpkg/collaborators?format=cli","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["9057e4dad1435f4e"],"referer":["access ls-collaborators"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:36:33 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+bf9a4b5940d5354ed240c9d19bf66aef181f6b37 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/%40scoped%2Fpkg/collaborators","integrity":"sha512-MshpkrpGcUCKKSuz8vrkzRBBbc7baiFMFpBUr2vMeStupW9yRTMzV8xZ5PhGYDgGBLX/M4JYrUaXMhjYZHmbXg==","time":1547833216272,"size":51,"metadata":{"url":"http://localhost:1337/-/package/%40scoped%2Fpkg/collaborators?format=cli","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["8c53f175b90e89fb"],"referer":["access ls-collaborators"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:40:16 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/ad/29/4a034c1908dcd263dce381384f50b395b52e2addd35285efab8ec8f5b303 b/deps/npm/test/npm_cache/_cacache/index-v5/ad/29/4a034c1908dcd263dce381384f50b395b52e2addd35285efab8ec8f5b303
new file mode 100644
index 0000000000..fdcee46164
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/ad/29/4a034c1908dcd263dce381384f50b395b52e2addd35285efab8ec8f5b303
@@ -0,0 +1,3 @@
+
+11e87811e2df676a2b3f709f580b0a51b7eef996 {"key":"pacote:range-manifest:http://localhost:1337/minimist/-/minimist-0.0.5.tgz:sha1-16oye87PUY+RBqxrjwA/o7zqhWY=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833073431,"size":1,"metadata":{"id":"minimist@0.0.5","manifest":{"name":"minimist","version":"0.0.5","dependencies":{},"optionalDependencies":{},"devDependencies":{"tape":"~1.0.4","tap":"~0.4.0"},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"http://localhost:1337/minimist/-/minimist-0.0.5.tgz","_integrity":"sha1-16oye87PUY+RBqxrjwA/o7zqhWY=","_shasum":"d7aa327bcecf518f9106ac6b8f003fa3bcea8566","_shrinkwrap":null,"bin":null,"_id":"minimist@0.0.5"},"type":"finalized-manifest"}}
+cf5b45eb3a283ea7041a23ef29c08de42ae86db3 {"key":"pacote:range-manifest:http://localhost:1337/minimist/-/minimist-0.0.5.tgz:sha1-16oye87PUY+RBqxrjwA/o7zqhWY=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833073432,"size":1,"metadata":{"id":"minimist@0.0.5","manifest":{"name":"minimist","version":"0.0.5","dependencies":{},"optionalDependencies":{},"devDependencies":{"tape":"~1.0.4","tap":"~0.4.0"},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"http://localhost:1337/minimist/-/minimist-0.0.5.tgz","_integrity":"sha1-16oye87PUY+RBqxrjwA/o7zqhWY=","_shasum":"d7aa327bcecf518f9106ac6b8f003fa3bcea8566","_shrinkwrap":null,"bin":null,"_id":"minimist@0.0.5"},"type":"finalized-manifest"}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/ad/e9/1d8533ddd67b495ca9cffd992a45de09faf0f0fe2ad2c446353a58288f6b b/deps/npm/test/npm_cache/_cacache/index-v5/ad/e9/1d8533ddd67b495ca9cffd992a45de09faf0f0fe2ad2c446353a58288f6b
new file mode 100644
index 0000000000..ce505cd943
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/ad/e9/1d8533ddd67b495ca9cffd992a45de09faf0f0fe2ad2c446353a58288f6b
@@ -0,0 +1,2 @@
+
+64365f703c777ce905630f8f2e6287ec0dc87d2d {"key":"pacote:version-manifest:http://localhost:1337/optimist/-/optimist-0.6.0.tgz:sha1-aUJIJvNAX3nxQub8PZrljU27kgA=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833073374,"size":1,"metadata":{"id":"optimist@0.6.0","manifest":{"name":"optimist","version":"0.6.0","dependencies":{"wordwrap":"~0.0.2","minimist":"~0.0.1"},"optionalDependencies":{},"devDependencies":{"hashish":"~0.0.4","tap":"~0.4.0"},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"http://localhost:1337/optimist/-/optimist-0.6.0.tgz","_integrity":"sha1-aUJIJvNAX3nxQub8PZrljU27kgA=","_shasum":"69424826f3405f79f142e6fc3d9ae58d4dbb9200","_shrinkwrap":null,"bin":null,"_id":"optimist@0.6.0"},"type":"finalized-manifest"}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/b1/78/4ff2f1383234ce5feb54cec21589dfd82db09bd3c7016d436760a3e94f60 b/deps/npm/test/npm_cache/_cacache/index-v5/b1/78/4ff2f1383234ce5feb54cec21589dfd82db09bd3c7016d436760a3e94f60
new file mode 100644
index 0000000000..73d8583ab2
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/b1/78/4ff2f1383234ce5feb54cec21589dfd82db09bd3c7016d436760a3e94f60
@@ -0,0 +1,3 @@
+
+7f02995173e0bd08a3af0b45d82442eddce0e57d {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/org.couchdb.user:npm_saml_auth_dummy_user","integrity":null,"time":1547833017995}
+d0f3ef244b97c22054244c059d888d9abd7693ed {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/org.couchdb.user:npm_saml_auth_dummy_user","integrity":null,"time":1547833237264} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/b2/47/c8196ddf74a5111fedbaf5abf24d446c017f7bfba330c19d63fc24000277 b/deps/npm/test/npm_cache/_cacache/index-v5/b2/47/c8196ddf74a5111fedbaf5abf24d446c017f7bfba330c19d63fc24000277
new file mode 100644
index 0000000000..7ce40d69c5
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/b2/47/c8196ddf74a5111fedbaf5abf24d446c017f7bfba330c19d63fc24000277
@@ -0,0 +1,2 @@
+
+c7a7b66fcdc42362855ee1ea0e4bacc86897cddb {"key":"pacote:git-manifest:git://localhost:1234/child.git#65974106d8883632964be1da34eec5e85beead3a","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833223116,"size":1,"metadata":{"id":"child@1.0.3","manifest":{"name":"child","version":"1.0.3","dependencies":{},"optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"git://localhost:1234/child.git#65974106d8883632964be1da34eec5e85beead3a","_integrity":null,"_shasum":null,"_shrinkwrap":null,"bin":null,"_id":"child@1.0.3"},"type":"finalized-manifest"}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/b3/36/c25c35e75c8973f821f5a05ce4803a44826a0112390460da66c8c3c5de69 b/deps/npm/test/npm_cache/_cacache/index-v5/b3/36/c25c35e75c8973f821f5a05ce4803a44826a0112390460da66c8c3c5de69
new file mode 100644
index 0000000000..36144f760f
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/b3/36/c25c35e75c8973f821f5a05ce4803a44826a0112390460da66c8c3c5de69
@@ -0,0 +1,5 @@
+
+2203ec8d87dfdc33ca3f91fee36d62d7583b9fc7 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fpkg/dist-tags","integrity":"sha512-9b2mt4/PIEsewOYGkEW0T2Zp6aq4eL/IkblG5M7LhD9Oh+Qotnca57Sizo8wPpd0Z2OwZC+viamwBCUpfceNag==","time":1547833098623,"size":42,"metadata":{"url":"http://localhost:1337/-/package/@scoped%2fpkg/dist-tags","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["5fe2532912b524f2"],"referer":["dist-tag ls"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:18 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+6822b31385528e21a07e23d5a812925b3094f1b3 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fpkg/dist-tags","integrity":"sha512-9b2mt4/PIEsewOYGkEW0T2Zp6aq4eL/IkblG5M7LhD9Oh+Qotnca57Sizo8wPpd0Z2OwZC+viamwBCUpfceNag==","time":1547833099266,"size":42,"metadata":{"url":"http://localhost:1337/-/package/@scoped%2fpkg/dist-tags","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["a0862a2bfbf103a4"],"referer":["dist-tag"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:19 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+b38156acf618625f7b1386e8ba1cafc433525145 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fpkg/dist-tags","integrity":"sha512-9b2mt4/PIEsewOYGkEW0T2Zp6aq4eL/IkblG5M7LhD9Oh+Qotnca57Sizo8wPpd0Z2OwZC+viamwBCUpfceNag==","time":1547833319191,"size":42,"metadata":{"url":"http://localhost:1337/-/package/@scoped%2fpkg/dist-tags","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["cd0330de647ee848"],"referer":["dist-tag ls"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:59 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+86f80933dda8c18895069da9865c5285038deef9 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fpkg/dist-tags","integrity":"sha512-9b2mt4/PIEsewOYGkEW0T2Zp6aq4eL/IkblG5M7LhD9Oh+Qotnca57Sizo8wPpd0Z2OwZC+viamwBCUpfceNag==","time":1547833319738,"size":42,"metadata":{"url":"http://localhost:1337/-/package/@scoped%2fpkg/dist-tags","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["f98d50799fc74c0a"],"referer":["dist-tag"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:59 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/b4/2c/2aec38b0351146be02fc91be78e935c68f4608824732a06091fcf7cb550a b/deps/npm/test/npm_cache/_cacache/index-v5/b4/2c/2aec38b0351146be02fc91be78e935c68f4608824732a06091fcf7cb550a
new file mode 100644
index 0000000000..8f0c7506e9
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/b4/2c/2aec38b0351146be02fc91be78e935c68f4608824732a06091fcf7cb550a
@@ -0,0 +1,3 @@
+
+20d59f6daec6eac2eb644733fe21c815e25ffaef {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/org/username/package","integrity":"sha512-3Cqk30LNQ1Yj9MLD4nT6CBzJQv9F3PqYzfSpMktqIcNyHDS7l+aAnuKAUfwQ9XdJz/YKqXCh44x6bDVKlANVTg==","time":1547832989714,"size":39,"metadata":{"url":"http://localhost:1337/-/org/username/package?format=cli","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["b8545df12738f01b"],"referer":["access ls-packages"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:36:29 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+704866f7d6302ba3b3aeca7e3260af11b4317155 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/org/username/package","integrity":"sha512-3Cqk30LNQ1Yj9MLD4nT6CBzJQv9F3PqYzfSpMktqIcNyHDS7l+aAnuKAUfwQ9XdJz/YKqXCh44x6bDVKlANVTg==","time":1547833213589,"size":39,"metadata":{"url":"http://localhost:1337/-/org/username/package?format=cli","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["29cf4d7ca0f7ff48"],"referer":["access ls-packages"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:40:13 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/b4/a9/95ce79090bb3e6ab5e8a85aaef872bf4eca492fac6cab144fb2e45ffbd74 b/deps/npm/test/npm_cache/_cacache/index-v5/b4/a9/95ce79090bb3e6ab5e8a85aaef872bf4eca492fac6cab144fb2e45ffbd74
new file mode 100644
index 0000000000..2ba32d7b4c
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/b4/a9/95ce79090bb3e6ab5e8a85aaef872bf4eca492fac6cab144fb2e45ffbd74
@@ -0,0 +1,3 @@
+
+135604e7716d4c2e6bd09f4398d108fbc29895c5 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/org.couchdb.user:u/-rev/3-deadcafebabebeef","integrity":null,"time":1547833015114}
+d4d193f0e535e597bd98b501f7c5a1da3251bbbe {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/org.couchdb.user:u/-rev/3-deadcafebabebeef","integrity":null,"time":1547833234827} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/b7/1c/f06201305985169fc251111ddb9fa636ef144ff9fad15784c1e9620b0dac b/deps/npm/test/npm_cache/_cacache/index-v5/b7/1c/f06201305985169fc251111ddb9fa636ef144ff9fad15784c1e9620b0dac
new file mode 100644
index 0000000000..0a33108574
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/b7/1c/f06201305985169fc251111ddb9fa636ef144ff9fad15784c1e9620b0dac
@@ -0,0 +1,2 @@
+
+614363c24691f80d387b90f697b435cba6cb5ba4 {"key":"pacote:range-manifest:https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz:sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1544485144527,"size":1,"metadata":{"id":"inherits@1.0.2","manifest":{"name":"inherits","version":"1.0.2","dependencies":{},"optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz","_integrity":"sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=","_shasum":"ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b","_shrinkwrap":null,"bin":null,"_id":"inherits@1.0.2"},"type":"finalized-manifest"}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/b8/16/bf6e49afbd1323783f2f5a63b3d871adc66f517669450807aec3b62e71b2 b/deps/npm/test/npm_cache/_cacache/index-v5/b8/16/bf6e49afbd1323783f2f5a63b3d871adc66f517669450807aec3b62e71b2
new file mode 100644
index 0000000000..2a92a341f1
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/b8/16/bf6e49afbd1323783f2f5a63b3d871adc66f517669450807aec3b62e71b2
@@ -0,0 +1,2 @@
+
+0fa6ae8d13ade52a785024d598ead22bc4a060df {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz","integrity":"sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=","time":1544485144635,"size":1519,"metadata":{"url":"https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.5.0 node/v10.14.1 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["28a99044412a2230"],"referer":["install [REDACTED]"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:inherits@https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"date":["Mon, 10 Dec 2018 23:39:04 GMT"],"content-type":["application/octet-stream"],"content-length":["1519"],"connection":["keep-alive"],"set-cookie":["__cfduid=defb20c5371b88093aa383ac8c884d4171544485144; expires=Tue, 10-Dec-19 23:39:04 GMT; path=/; domain=.registry.npmjs.org; HttpOnly"],"cf-cache-status":["HIT"],"cache-control":["max-age=432000"],"accept-ranges":["bytes"],"cf-ray":["48738c79cc526c7c-SJC"],"etag":["\"54a4d8823795a0d30b28479c10e3d486\""],"expect-ct":["max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\""],"last-modified":["Sun, 27 May 2018 04:40:10 GMT"],"vary":["Accept-Encoding"],"server":["cloudflare"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/ba/41/d137c2778ea0d7167fbc730827a0a2c453ffea82d07c7b1481a46f7b1194 b/deps/npm/test/npm_cache/_cacache/index-v5/ba/41/d137c2778ea0d7167fbc730827a0a2c453ffea82d07c7b1481a46f7b1194
new file mode 100644
index 0000000000..7f2979c9e7
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/ba/41/d137c2778ea0d7167fbc730827a0a2c453ffea82d07c7b1481a46f7b1194
@@ -0,0 +1,4 @@
+
+9c2b5138ca19cd78e19d07ada8b5b3abfd0f4292 {"key":"pacote:remote-manifest:http://127.0.0.1:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz:sha512-NycvWDeO1ZEZc3P0bTvhSL/IJknbshO+FKKxrEf1DX1IBMsQVZCTWnvNAt+uOiQhyTnK+1hrnxtsSS/f4JrKhg==","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833041019,"size":1,"metadata":{"id":"@scoped/underscore@1.3.1","manifest":{"name":"@scoped/underscore","version":"1.3.1","dependencies":{},"optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"http://127.0.0.1:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz","_integrity":"sha512-NycvWDeO1ZEZc3P0bTvhSL/IJknbshO+FKKxrEf1DX1IBMsQVZCTWnvNAt+uOiQhyTnK+1hrnxtsSS/f4JrKhg==","_shasum":"28eb847a949e71eb9041fd6567a36c9acfcf2bed","_shrinkwrap":null,"bin":null,"_id":"@scoped/underscore@1.3.1"},"type":"finalized-manifest"}}
+b3884f202f09e0fc0656eb1b740f68243c0a3d0b {"key":"pacote:remote-manifest:http://127.0.0.1:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz:sha512-NycvWDeO1ZEZc3P0bTvhSL/IJknbshO+FKKxrEf1DX1IBMsQVZCTWnvNAt+uOiQhyTnK+1hrnxtsSS/f4JrKhg==","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833259082,"size":1,"metadata":{"id":"@scoped/underscore@1.3.1","manifest":{"name":"@scoped/underscore","version":"1.3.1","dependencies":{},"optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"http://127.0.0.1:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz","_integrity":"sha512-NycvWDeO1ZEZc3P0bTvhSL/IJknbshO+FKKxrEf1DX1IBMsQVZCTWnvNAt+uOiQhyTnK+1hrnxtsSS/f4JrKhg==","_shasum":"28eb847a949e71eb9041fd6567a36c9acfcf2bed","_shrinkwrap":null,"bin":null,"_id":"@scoped/underscore@1.3.1"},"type":"finalized-manifest"}}
+ceebf365613b857c1d00a513f871286b7575841a {"key":"pacote:remote-manifest:http://127.0.0.1:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz:sha512-NycvWDeO1ZEZc3P0bTvhSL/IJknbshO+FKKxrEf1DX1IBMsQVZCTWnvNAt+uOiQhyTnK+1hrnxtsSS/f4JrKhg==","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1548718095641,"size":1,"metadata":{"id":"@scoped/underscore@1.3.1","manifest":{"name":"@scoped/underscore","version":"1.3.1","dependencies":{},"optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"http://127.0.0.1:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz","_integrity":"sha512-NycvWDeO1ZEZc3P0bTvhSL/IJknbshO+FKKxrEf1DX1IBMsQVZCTWnvNAt+uOiQhyTnK+1hrnxtsSS/f4JrKhg==","_shasum":"28eb847a949e71eb9041fd6567a36c9acfcf2bed","_shrinkwrap":null,"bin":null,"_id":"@scoped/underscore@1.3.1"},"type":"finalized-manifest"}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/be/6a/458105f31e845d57376ed2b2019e46a63cff8cbb76981a37eac2100c8e55 b/deps/npm/test/npm_cache/_cacache/index-v5/be/6a/458105f31e845d57376ed2b2019e46a63cff8cbb76981a37eac2100c8e55
new file mode 100644
index 0000000000..c7f616ca69
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/be/6a/458105f31e845d57376ed2b2019e46a63cff8cbb76981a37eac2100c8e55
@@ -0,0 +1,3 @@
+
+388060aca1924af6f5de8efc78b1292213e4e342 {"key":"pacote:packed-dir:github:isaacs/sax-js#5aee2163d55cff24b817bbf550bac44841f9df45","integrity":"sha512-Iv7u1C07q1/2mXITRvnF+npwrCdI7gztdbwLj26KupJPU6k0BLMPqNKODWTBSSLo8NHtHCEu8/FdAOlSexe5uQ==","time":1544485149568,"size":15108}
+0e88f843ada3834c0f11764113f4441e3fd22c97 {"key":"pacote:packed-dir:github:isaacs/sax-js#5aee2163d55cff24b817bbf550bac44841f9df45","integrity":"sha512-Iv7u1C07q1/2mXITRvnF+npwrCdI7gztdbwLj26KupJPU6k0BLMPqNKODWTBSSLo8NHtHCEu8/FdAOlSexe5uQ==","time":1544485151587,"size":15108} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/c4/08/207afc5ca1803fa593124554206657c17eb6b2809df9f5ec1c10007a6465 b/deps/npm/test/npm_cache/_cacache/index-v5/c4/08/207afc5ca1803fa593124554206657c17eb6b2809df9f5ec1c10007a6465
new file mode 100644
index 0000000000..79591a24fa
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/c4/08/207afc5ca1803fa593124554206657c17eb6b2809df9f5ec1c10007a6465
@@ -0,0 +1,3 @@
+
+d1bd3700ae4b819592862245ce99d2af2b6e95bb {"key":"pacote:tarball:file:/Users/zkat/Documents/code/work/npm/test/tap/gently-rm-overeager/test-whoops-1.0.0.tgz","integrity":"sha512-yaIGW7l0bldKVBrwYbeICUjTDkfbHcNWwxS9k0sBaYlNaW6DO9Y7bFPLlz0UuAZLWwQXfEAuNHdw3fu7x8kGyw==","time":1547833112237,"size":184}
+1703cbc1f1f6594798a79f0cdff31e60198cbb3c {"key":"pacote:tarball:file:/Users/zkat/Documents/code/work/npm/test/tap/gently-rm-overeager/test-whoops-1.0.0.tgz","integrity":"sha512-yaIGW7l0bldKVBrwYbeICUjTDkfbHcNWwxS9k0sBaYlNaW6DO9Y7bFPLlz0UuAZLWwQXfEAuNHdw3fu7x8kGyw==","time":1547833333861,"size":184} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/c7/6a/1f6606232f53d41a78bcb0a155df04211a49d1fdb1b67e59ccb47e20c353 b/deps/npm/test/npm_cache/_cacache/index-v5/c7/6a/1f6606232f53d41a78bcb0a155df04211a49d1fdb1b67e59ccb47e20c353
new file mode 100644
index 0000000000..3f8ca24885
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/c7/6a/1f6606232f53d41a78bcb0a155df04211a49d1fdb1b67e59ccb47e20c353
@@ -0,0 +1,5 @@
+
+7b180a577935e416bdf212a54bbccaaea00610b6 {"key":"pacote:packed-dir:git://localhost:1234/top.git#ade345938057607d9e1b50afa2d6f627b911e596","integrity":"sha512-VJX+hA7b9dGN/CfF9NmzWeirgaR0H2Kw3rIJeTWYQ4KK5QESusTiWj/BCJ0mD9m4I25DSjpVWAt6q6Np5vi6hw==","time":1547833225545,"size":283}
+214d8fe56262265b542137a1a6548a62487435f8 {"key":"pacote:packed-dir:git://localhost:1234/top.git#ade345938057607d9e1b50afa2d6f627b911e596","integrity":"sha512-VJX+hA7b9dGN/CfF9NmzWeirgaR0H2Kw3rIJeTWYQ4KK5QESusTiWj/BCJ0mD9m4I25DSjpVWAt6q6Np5vi6hw==","time":1547833226019,"size":283}
+4fdb441a9fc384e4ff88825e523cacde7214daea {"key":"pacote:packed-dir:git://localhost:1234/top.git#ade345938057607d9e1b50afa2d6f627b911e596","integrity":"sha512-VJX+hA7b9dGN/CfF9NmzWeirgaR0H2Kw3rIJeTWYQ4KK5QESusTiWj/BCJ0mD9m4I25DSjpVWAt6q6Np5vi6hw==","time":1547833226573,"size":283}
+a97ab2f9669f0bc0130eab10d42898af9ee4ae09 {"key":"pacote:packed-dir:git://localhost:1234/top.git#ade345938057607d9e1b50afa2d6f627b911e596","integrity":"sha512-VJX+hA7b9dGN/CfF9NmzWeirgaR0H2Kw3rIJeTWYQ4KK5QESusTiWj/BCJ0mD9m4I25DSjpVWAt6q6Np5vi6hw==","time":1547833227081,"size":283} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/ca/2f/42a626cb16aeb63c2dc04be95e67db8ea33ce033a3fadf0ba1061c174d3e b/deps/npm/test/npm_cache/_cacache/index-v5/ca/2f/42a626cb16aeb63c2dc04be95e67db8ea33ce033a3fadf0ba1061c174d3e
new file mode 100644
index 0000000000..d8c2490b51
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/ca/2f/42a626cb16aeb63c2dc04be95e67db8ea33ce033a3fadf0ba1061c174d3e
@@ -0,0 +1,3 @@
+
+ce8332445d8663fd141a36216e677bd10ff6b9d7 {"key":"pacote:packed-dir:git://localhost:1234/child.git#28b560148ea11a46c70defbce4c485581ced33d1","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547833007307,"size":143}
+6fab7ca434f22c424fe295ff514b366202edc994 {"key":"pacote:packed-dir:git://localhost:1234/child.git#28b560148ea11a46c70defbce4c485581ced33d1","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547833007721,"size":143} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/d0/a2/9b5933a9df317b031c4407f0d9cae19a4d56f253f7746786597a52daa76d b/deps/npm/test/npm_cache/_cacache/index-v5/d0/a2/9b5933a9df317b031c4407f0d9cae19a4d56f253f7746786597a52daa76d
new file mode 100644
index 0000000000..1e03e6602f
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/d0/a2/9b5933a9df317b031c4407f0d9cae19a4d56f253f7746786597a52daa76d
@@ -0,0 +1,2 @@
+
+a30822a420ac48487cedbaf87ca2a38d9813fd74 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/graceful-fs","integrity":"sha512-XSnW4a3SU2N5q8HrpS+DgkpgkaWvn/uhR5z0BPR4828GUE9mQ9uGMeC28FflUUDYRInKzBQGJ+ASgk+gc/l1aA==","time":1544485144512,"size":24332,"metadata":{"url":"https://registry.npmjs.org/graceful-fs","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.5.0 node/v10.14.1 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["28a99044412a2230"],"referer":["install [REDACTED]"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:graceful-fs"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"date":["Mon, 10 Dec 2018 23:39:04 GMT"],"content-type":["application/vnd.npm.install-v1+json"],"content-length":["24332"],"connection":["keep-alive"],"set-cookie":["__cfduid=defb20c5371b88093aa383ac8c884d4171544485144; expires=Tue, 10-Dec-19 23:39:04 GMT; path=/; domain=.registry.npmjs.org; HttpOnly"],"cf-cache-status":["HIT"],"cache-control":["max-age=300"],"accept-ranges":["bytes"],"cf-ray":["48738c790c166c7c-SJC"],"etag":["\"a61f5e425bc37e1f2ae6fff988a7f45c\""],"expect-ct":["max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\""],"last-modified":["Sun, 04 Nov 2018 20:51:58 GMT"],"vary":["accept-encoding, accept"],"x-amz-meta-rev":["204-3ea980c425725a63a5de5e3f020e8617"],"server":["cloudflare"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/d2/0a/0834f8c04d97b43d0f99901f9c56c3654221987030a0f86aac7f7caecccc b/deps/npm/test/npm_cache/_cacache/index-v5/d2/0a/0834f8c04d97b43d0f99901f9c56c3654221987030a0f86aac7f7caecccc
new file mode 100644
index 0000000000..b3e16f2bab
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/d2/0a/0834f8c04d97b43d0f99901f9c56c3654221987030a0f86aac7f7caecccc
@@ -0,0 +1,3 @@
+
+f560665c954f57c14f107bba0df77c536f9ddaa4 {"key":"make-fetch-happen:request-cache:http://localhost:1337/npm-test-peer-deps/-/npm-test-peer-deps-0.0.0.tgz","integrity":"sha1-gvPMuhGRTciLyxhe47GzO1ZCcrw=","time":1547833046964,"size":220,"metadata":{"url":"http://localhost:1337/npm-test-peer-deps/-/npm-test-peer-deps-0.0.0.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["ece3b5a000cc3f02"],"referer":["bugs npm-test-peer-deps"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:npm-test-peer-deps@http://localhost:1337/npm-test-peer-deps/-/npm-test-peer-deps-0.0.0.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:26 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+e80b143e8a12e4112be260e9e1880db7c72404f3 {"key":"make-fetch-happen:request-cache:http://localhost:1337/npm-test-peer-deps/-/npm-test-peer-deps-0.0.0.tgz","integrity":"sha1-gvPMuhGRTciLyxhe47GzO1ZCcrw=","time":1547833264155,"size":220,"metadata":{"url":"http://localhost:1337/npm-test-peer-deps/-/npm-test-peer-deps-0.0.0.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["836b89e1cc0594ec"],"referer":["bugs npm-test-peer-deps"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:npm-test-peer-deps@http://localhost:1337/npm-test-peer-deps/-/npm-test-peer-deps-0.0.0.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:04 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/d8/8f/1bf51f3ab635ab46a8693c919a915102645335a143056a5f12cafef915c0 b/deps/npm/test/npm_cache/_cacache/index-v5/d8/8f/1bf51f3ab635ab46a8693c919a915102645335a143056a5f12cafef915c0
new file mode 100644
index 0000000000..17c9e80e48
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/d8/8f/1bf51f3ab635ab46a8693c919a915102645335a143056a5f12cafef915c0
@@ -0,0 +1,9 @@
+
+5d6fb857bc4ef7fd6179300822ed60f39789695d {"key":"make-fetch-happen:request-cache:http://localhost:1337/minimist","integrity":"sha512-g6TXR7gGyq5zhXeBRbz5mfrmnutvFDQ/aAG3m2t4U1OJYWlKyLR5HHZ1wnkotUldEtL5RIZ9sRBeQk1fqbHgFQ==","time":1547833073399,"size":19834,"metadata":{"url":"http://localhost:1337/minimist","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["871adf8f5053357c"],"referer":["install"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:minimist"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:53 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+5d6fb857bc4ef7fd6179300822ed60f39789695d {"key":"make-fetch-happen:request-cache:http://localhost:1337/minimist","integrity":"sha512-g6TXR7gGyq5zhXeBRbz5mfrmnutvFDQ/aAG3m2t4U1OJYWlKyLR5HHZ1wnkotUldEtL5RIZ9sRBeQk1fqbHgFQ==","time":1547833073399,"size":19834,"metadata":{"url":"http://localhost:1337/minimist","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["871adf8f5053357c"],"referer":["install"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:minimist"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:53 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+f9f6f5b3805ab1d6047f104f2c0934da89029de3 {"key":"make-fetch-happen:request-cache:http://localhost:1337/minimist","integrity":"sha512-g6TXR7gGyq5zhXeBRbz5mfrmnutvFDQ/aAG3m2t4U1OJYWlKyLR5HHZ1wnkotUldEtL5RIZ9sRBeQk1fqbHgFQ==","time":1547833079826,"size":19834,"metadata":{"url":"http://localhost:1337/minimist","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["d19ab2d4de48cace"],"referer":["install optimist"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:minimist"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:59 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+0e670817744d3920a594bcd7a51151239cc6edb4 {"key":"make-fetch-happen:request-cache:http://localhost:1337/minimist","integrity":"sha512-g6TXR7gGyq5zhXeBRbz5mfrmnutvFDQ/aAG3m2t4U1OJYWlKyLR5HHZ1wnkotUldEtL5RIZ9sRBeQk1fqbHgFQ==","time":1547833093340,"size":19834,"metadata":{"url":"http://localhost:1337/minimist","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["fcd144259ba74815"],"referer":["install ."],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:minimist"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:13 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+6e3b3799d9593d6562149522f40f1bef85175ff5 {"key":"make-fetch-happen:request-cache:http://localhost:1337/minimist","integrity":"sha512-g6TXR7gGyq5zhXeBRbz5mfrmnutvFDQ/aAG3m2t4U1OJYWlKyLR5HHZ1wnkotUldEtL5RIZ9sRBeQk1fqbHgFQ==","time":1547833294159,"size":19834,"metadata":{"url":"http://localhost:1337/minimist","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["0a92a1a2bc33028a"],"referer":["install"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:minimist"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:34 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+6e3b3799d9593d6562149522f40f1bef85175ff5 {"key":"make-fetch-happen:request-cache:http://localhost:1337/minimist","integrity":"sha512-g6TXR7gGyq5zhXeBRbz5mfrmnutvFDQ/aAG3m2t4U1OJYWlKyLR5HHZ1wnkotUldEtL5RIZ9sRBeQk1fqbHgFQ==","time":1547833294159,"size":19834,"metadata":{"url":"http://localhost:1337/minimist","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["0a92a1a2bc33028a"],"referer":["install"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:minimist"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:34 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+aa4bf0541df5929840d07c70955c1ff23cfc6f5d {"key":"make-fetch-happen:request-cache:http://localhost:1337/minimist","integrity":"sha512-g6TXR7gGyq5zhXeBRbz5mfrmnutvFDQ/aAG3m2t4U1OJYWlKyLR5HHZ1wnkotUldEtL5RIZ9sRBeQk1fqbHgFQ==","time":1547833301219,"size":19834,"metadata":{"url":"http://localhost:1337/minimist","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["f4c81daeaa866c45"],"referer":["install optimist"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:minimist"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:41 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+be227b26dd91f727946a5e8ec671f62c400c2f84 {"key":"make-fetch-happen:request-cache:http://localhost:1337/minimist","integrity":"sha512-g6TXR7gGyq5zhXeBRbz5mfrmnutvFDQ/aAG3m2t4U1OJYWlKyLR5HHZ1wnkotUldEtL5RIZ9sRBeQk1fqbHgFQ==","time":1547833314424,"size":19834,"metadata":{"url":"http://localhost:1337/minimist","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["ce2c0b941f6a62b8"],"referer":["install ."],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:minimist"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:54 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/de/9f/35f1c704459881fb3c9e83a59e80c3482dd62f626939323f2b6bf511b53d b/deps/npm/test/npm_cache/_cacache/index-v5/de/9f/35f1c704459881fb3c9e83a59e80c3482dd62f626939323f2b6bf511b53d
new file mode 100644
index 0000000000..b41bc1a920
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/de/9f/35f1c704459881fb3c9e83a59e80c3482dd62f626939323f2b6bf511b53d
@@ -0,0 +1,3 @@
+
+7bb832e347dbc62f1198afb35f8f7551bceacd72 {"key":"make-fetch-happen:request-cache:http://localhost:1337/test-repo-url-https/-/test-repo-url-https-0.0.1.tgz","integrity":"sha1-4FAI8/+Cs08XselyRUoKtwomnH0=","time":1547833048530,"size":371,"metadata":{"url":"http://localhost:1337/test-repo-url-https/-/test-repo-url-https-0.0.1.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["fcfdb97957af4e03"],"referer":["bugs test-repo-url-https"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:test-repo-url-https@http://localhost:1337/test-repo-url-https/-/test-repo-url-https-0.0.1.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:28 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+ac50fa8a2ea2326ad7cf56bca893b374b5bebb2c {"key":"make-fetch-happen:request-cache:http://localhost:1337/test-repo-url-https/-/test-repo-url-https-0.0.1.tgz","integrity":"sha1-4FAI8/+Cs08XselyRUoKtwomnH0=","time":1547833265543,"size":371,"metadata":{"url":"http://localhost:1337/test-repo-url-https/-/test-repo-url-https-0.0.1.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["e76ebb11020bbcdd"],"referer":["bugs test-repo-url-https"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:test-repo-url-https@http://localhost:1337/test-repo-url-https/-/test-repo-url-https-0.0.1.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:05 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/df/88/3ff6bf48df44c29ce1193e883193e034208d95b6028728ef3902b78b694d b/deps/npm/test/npm_cache/_cacache/index-v5/df/88/3ff6bf48df44c29ce1193e883193e034208d95b6028728ef3902b78b694d
new file mode 100644
index 0000000000..9ac362316b
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/df/88/3ff6bf48df44c29ce1193e883193e034208d95b6028728ef3902b78b694d
@@ -0,0 +1,5 @@
+
+5608f36aeb6a5f59d34b08079615f760039073c5 {"key":"make-fetch-happen:request-cache:http://localhost:1337/async","integrity":"sha512-raHNkSLmvrld42u43BDCVaan17i/viG3KEOrbbQC7oy4veX7LQUKfrluozDovho5TEx8REyLVB+OGAt/ElBv6A==","time":1547833073441,"size":76163,"metadata":{"url":"http://localhost:1337/async","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["871adf8f5053357c"],"referer":["install"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:async"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:53 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+4e272da87db2d81cdf7e70054035943de9d7e693 {"key":"make-fetch-happen:request-cache:http://localhost:1337/async","integrity":"sha512-raHNkSLmvrld42u43BDCVaan17i/viG3KEOrbbQC7oy4veX7LQUKfrluozDovho5TEx8REyLVB+OGAt/ElBv6A==","time":1547833093317,"size":76163,"metadata":{"url":"http://localhost:1337/async","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["fcd144259ba74815"],"referer":["install ."],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:async"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:13 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+ae1039605ec582dd106d671660d7f190d91e3753 {"key":"make-fetch-happen:request-cache:http://localhost:1337/async","integrity":"sha512-raHNkSLmvrld42u43BDCVaan17i/viG3KEOrbbQC7oy4veX7LQUKfrluozDovho5TEx8REyLVB+OGAt/ElBv6A==","time":1547833294175,"size":76163,"metadata":{"url":"http://localhost:1337/async","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["0a92a1a2bc33028a"],"referer":["install"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:async"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:34 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+fb221ac87dd04ff1360ecfbe22be4df3e1033ad7 {"key":"make-fetch-happen:request-cache:http://localhost:1337/async","integrity":"sha512-raHNkSLmvrld42u43BDCVaan17i/viG3KEOrbbQC7oy4veX7LQUKfrluozDovho5TEx8REyLVB+OGAt/ElBv6A==","time":1547833314410,"size":76163,"metadata":{"url":"http://localhost:1337/async","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["ce2c0b941f6a62b8"],"referer":["install ."],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:async"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:54 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/e8/1b/a9b0963bde9d8cb31e0fe8762eac5e3d3c2cd27e8bb1fbcdc22399c3d89e b/deps/npm/test/npm_cache/_cacache/index-v5/e8/1b/a9b0963bde9d8cb31e0fe8762eac5e3d3c2cd27e8bb1fbcdc22399c3d89e
new file mode 100644
index 0000000000..87a7ff8957
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/e8/1b/a9b0963bde9d8cb31e0fe8762eac5e3d3c2cd27e8bb1fbcdc22399c3d89e
@@ -0,0 +1,2 @@
+
+253438baa1d440b6ce159e9f2875b750e6182cc1 {"key":"pacote:git-manifest:git://localhost:1234/child.git#aef7bbd091eeef812d6364c2e8250b1e4b39a5ba","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833000939,"size":1,"metadata":{"id":"child@1.0.3","manifest":{"name":"child","version":"1.0.3","dependencies":{},"optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"git://localhost:1234/child.git#aef7bbd091eeef812d6364c2e8250b1e4b39a5ba","_integrity":null,"_shasum":null,"_shrinkwrap":null,"bin":null,"_id":"child@1.0.3"},"type":"finalized-manifest"}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/ec/6e/39493289897b28d06119b515a4d107ae1cd16ef94cdbbbd34a1c5687e07d b/deps/npm/test/npm_cache/_cacache/index-v5/ec/6e/39493289897b28d06119b515a4d107ae1cd16ef94cdbbbd34a1c5687e07d
new file mode 100644
index 0000000000..52c1db7db9
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/ec/6e/39493289897b28d06119b515a4d107ae1cd16ef94cdbbbd34a1c5687e07d
@@ -0,0 +1,2 @@
+
+d76e587682077896d26831eff1e0a565de513e48 {"key":"pacote:range-manifest:http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.14.tgz:sha1-BweNtfY3f2Mh/Oqu30l94STclGU=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1544485144560,"size":1,"metadata":{"id":"graceful-fs@1.1.14","manifest":{"name":"graceful-fs","version":"1.1.14","engines":{"node":">=0.4.0"},"dependencies":{},"optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js","_resolved":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.14.tgz","_integrity":"sha1-BweNtfY3f2Mh/Oqu30l94STclGU=","_shasum":"07078db5f6377f6321fceaaedf497de124dc9465","_shrinkwrap":null,"bin":null,"_id":"graceful-fs@1.1.14"},"type":"finalized-manifest"}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/ed/27/eea30d253f59f5df5e11155392ad66e8ee2a352798e5fe782b98c941c2c6 b/deps/npm/test/npm_cache/_cacache/index-v5/ed/27/eea30d253f59f5df5e11155392ad66e8ee2a352798e5fe782b98c941c2c6
new file mode 100644
index 0000000000..ed9713ce31
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/ed/27/eea30d253f59f5df5e11155392ad66e8ee2a352798e5fe782b98c941c2c6
@@ -0,0 +1,3 @@
+
+eeca4d82c272dcf056ae5ccedbee1bc36d0016e5 {"key":"make-fetch-happen:request-cache:http://localhost:1337/checker/-/checker-0.5.2.tgz","integrity":"sha1-wno2vwDzp6PSSo+8eFPwb85OnIY=","time":1547833073425,"size":7954,"metadata":{"url":"http://localhost:1337/checker/-/checker-0.5.2.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["871adf8f5053357c"],"referer":["install"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:checker@http://localhost:1337/checker/-/checker-0.5.2.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:53 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+372d7d61d7b9afb8dc42427e73af7c095a7c0b99 {"key":"make-fetch-happen:request-cache:http://localhost:1337/checker/-/checker-0.5.2.tgz","integrity":"sha1-wno2vwDzp6PSSo+8eFPwb85OnIY=","time":1547833093304,"size":7954,"metadata":{"url":"http://localhost:1337/checker/-/checker-0.5.2.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["fcd144259ba74815"],"referer":["install ."],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:checker@http://localhost:1337/checker/-/checker-0.5.2.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:13 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/ed/4a/09a226827d40ba61648afad16c456d1d0fbce7e14fc1c7a9dba42620f68a b/deps/npm/test/npm_cache/_cacache/index-v5/ed/4a/09a226827d40ba61648afad16c456d1d0fbce7e14fc1c7a9dba42620f68a
new file mode 100644
index 0000000000..c60c0db477
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/ed/4a/09a226827d40ba61648afad16c456d1d0fbce7e14fc1c7a9dba42620f68a
@@ -0,0 +1,3 @@
+
+57d3cd9efcea5462da06a3e9cc811ce05f70f512 {"key":"make-fetch-happen:request-cache:http://localhost:1337/registry/add-named-update-protocol-port/-/add-named-update-protocol-port-0.0.0.tgz","integrity":"sha1-NWoZK3kTsExUV00Ywo1G5jlUKKs=","time":1547832996631,"size":1,"metadata":{"url":"http://localhost:1337/registry/add-named-update-protocol-port/-/add-named-update-protocol-port-0.0.0.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["2b49fe996267b15d"],"referer":["cache add add-named-update-protocol-port@0.0.0"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:add-named-update-protocol-port@http://localhost:1337/registry/add-named-update-protocol-port/-/add-named-update-protocol-port-0.0.0.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:36:36 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+297227923865262e10cdf85969912988683723cc {"key":"make-fetch-happen:request-cache:http://localhost:1337/registry/add-named-update-protocol-port/-/add-named-update-protocol-port-0.0.0.tgz","integrity":"sha1-NWoZK3kTsExUV00Ywo1G5jlUKKs=","time":1547833219219,"size":1,"metadata":{"url":"http://localhost:1337/registry/add-named-update-protocol-port/-/add-named-update-protocol-port-0.0.0.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["302f70336b58dfc7"],"referer":["cache add add-named-update-protocol-port@0.0.0"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:add-named-update-protocol-port@http://localhost:1337/registry/add-named-update-protocol-port/-/add-named-update-protocol-port-0.0.0.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:40:19 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/ee/20/77825ded7fe59483cde11169fc083be6367490e46bce28208b4f7b5cb2f8 b/deps/npm/test/npm_cache/_cacache/index-v5/ee/20/77825ded7fe59483cde11169fc083be6367490e46bce28208b4f7b5cb2f8
new file mode 100644
index 0000000000..a22def52c2
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/ee/20/77825ded7fe59483cde11169fc083be6367490e46bce28208b4f7b5cb2f8
@@ -0,0 +1,2 @@
+
+a18279e98f139d677e0afaef21df7110cd5d2407 {"key":"pacote:range-manifest:http://localhost:1337/async/-/async-0.2.10.tgz:sha1-trvgsGdLnXGXCMo43owjfLUmw9E=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833073453,"size":1,"metadata":{"id":"async@0.2.10","manifest":{"name":"async","version":"0.2.10","dependencies":{},"optionalDependencies":{},"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"http://localhost:1337/async/-/async-0.2.10.tgz","_integrity":"sha1-trvgsGdLnXGXCMo43owjfLUmw9E=","_shasum":"b6bbe0b0674b9d719708ca38de8c237cb526c3d1","_shrinkwrap":null,"bin":null,"_id":"async@0.2.10"},"type":"finalized-manifest"}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/f2/8a/d9e34baa5c3e47b2bf8e975217eae2e4816c2a8e9cdee330a1e2acfbd7a6 b/deps/npm/test/npm_cache/_cacache/index-v5/f2/8a/d9e34baa5c3e47b2bf8e975217eae2e4816c2a8e9cdee330a1e2acfbd7a6
new file mode 100644
index 0000000000..b2fbe3ca37
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/f2/8a/d9e34baa5c3e47b2bf8e975217eae2e4816c2a8e9cdee330a1e2acfbd7a6
@@ -0,0 +1,3 @@
+
+be8503a914b4a9eb05323f6589baa6e95ac1ace5 {"key":"pacote:packed-dir:git://localhost:1234/child.git#3c75176bfda09442604d2a1a23d56f3e73d4655d","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547833228437,"size":143}
+db82585066c86ab6739fbbd6d29417c3bf41b0af {"key":"pacote:packed-dir:git://localhost:1234/child.git#3c75176bfda09442604d2a1a23d56f3e73d4655d","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547833228736,"size":143} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/f2/dd/746a6d5b6232e793f562d37f6471e6bd96641b1670b43d01fca9e23884e3 b/deps/npm/test/npm_cache/_cacache/index-v5/f2/dd/746a6d5b6232e793f562d37f6471e6bd96641b1670b43d01fca9e23884e3
new file mode 100644
index 0000000000..6f87578c6a
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/f2/dd/746a6d5b6232e793f562d37f6471e6bd96641b1670b43d01fca9e23884e3
@@ -0,0 +1,2 @@
+
+1484b5a751a41026c82f5e15df79dad5b49ec0b0 {"key":"pacote:version-manifest:http://localhost:1337/wordwrap/-/wordwrap-0.0.2.tgz:sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833093388,"size":1,"metadata":{"id":"wordwrap@0.0.2","manifest":{"name":"wordwrap","version":"0.0.2","engines":{"node":">=0.4.0"},"dependencies":{},"optionalDependencies":{},"devDependencies":{"expresso":"=0.7.x"},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"http://localhost:1337/wordwrap/-/wordwrap-0.0.2.tgz","_integrity":"sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=","_shasum":"b79669bb42ecb409f83d583cad52ca17eaa1643f","_shrinkwrap":null,"bin":null,"_id":"wordwrap@0.0.2"},"type":"finalized-manifest"}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/f6/6a/1afded1007145f766ff1dbaa948bd898062da50bed98d5b04f317278fa48 b/deps/npm/test/npm_cache/_cacache/index-v5/f6/6a/1afded1007145f766ff1dbaa948bd898062da50bed98d5b04f317278fa48
new file mode 100644
index 0000000000..7d47a831f0
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/f6/6a/1afded1007145f766ff1dbaa948bd898062da50bed98d5b04f317278fa48
@@ -0,0 +1,13 @@
+
+c496bdab66ee640e57ac94ecc9d022045efa0842 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fanother/dist-tags","integrity":"sha512-5wbenY5s4WFSvlN8vM3yYyGz1ng5TOQvtWqk5po3q6nVTfKEcA0Gb35tAF5GGrQdIg/W8mj/iJ5AWAkQinuGdg==","time":1547833099859,"size":42,"metadata":{"url":"http://localhost:1337/-/package/@scoped%2fanother/dist-tags","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["b2a762637ebb6243"],"referer":["dist-tag ls [REDACTED]"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:19 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+7df52710572e8f306657a1d0dd6aabc3d8e7f5cc {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fanother/dist-tags","integrity":"sha512-5wbenY5s4WFSvlN8vM3yYyGz1ng5TOQvtWqk5po3q6nVTfKEcA0Gb35tAF5GGrQdIg/W8mj/iJ5AWAkQinuGdg==","time":1547833100433,"size":42,"metadata":{"url":"http://localhost:1337/-/package/@scoped%2fanother/dist-tags","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["7e0824b4d5754fe0"],"referer":["dist-tag [REDACTED]"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:20 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+21038ebd62c8b343b8e8f462cada4028f187e1d8 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fanother/dist-tags","integrity":"sha512-5wbenY5s4WFSvlN8vM3yYyGz1ng5TOQvtWqk5po3q6nVTfKEcA0Gb35tAF5GGrQdIg/W8mj/iJ5AWAkQinuGdg==","time":1547833100966,"size":42,"metadata":{"url":"http://localhost:1337/-/package/@scoped%2fanother/dist-tags","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["0aee77a11a611461"],"referer":["dist-tag add [REDACTED] c"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:20 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+d11897de6f93b8ee83147e14e3e94d21cb34fd86 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fanother/dist-tags","integrity":"sha512-oaEHLK5hbB9keREOPj7lT6FpeMCB2AMpmdYtIH5c1sdkPkY9c9P/SyGK1xdyTJGAE+A5VPlykZLL36HQvtb9OQ==","time":1547833101529,"size":30,"metadata":{"url":"http://localhost:1337/-/package/@scoped%2fanother/dist-tags","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["06964db6715165d3"],"referer":["dist-tag set [REDACTED] b"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:21 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+cf1322bf05e7a817e46edba40a374e330227821a {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fanother/dist-tags","integrity":"sha512-NTlyH3BfYhz/4w28govjh+JTxQ7QX7Co4/QYdpmWvd4d0cuK8uR9/pQXqresPSONHwNu8umtuJjDhvDNqbaGHg==","time":1547833102191,"size":54,"metadata":{"url":"http://localhost:1337/-/package/@scoped%2fanother/dist-tags","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["988ea95f43da9d36"],"referer":["dist-tag rm [REDACTED] c"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:22 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+9d153a064fd24e83593e524e4d4fe88cf33df00d {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fanother/dist-tags","integrity":"sha512-oPha6LSEvHH7E+9ja5ruRfVIq2NXSINp/7AvI5+Uc8a5TFwqXvOxuW4WzmFY3AXxPviLzvMt47xBWkjNxVADVQ==","time":1547833102764,"size":18,"metadata":{"url":"http://localhost:1337/-/package/@scoped%2fanother/dist-tags","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["b718f0bf6694646a"],"referer":["dist-tag rm [REDACTED] nonexistent"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:22 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+7891988ddf3d1f7d07a3b3fef3a1824bd55e7a13 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fanother/dist-tags","integrity":"sha512-5wbenY5s4WFSvlN8vM3yYyGz1ng5TOQvtWqk5po3q6nVTfKEcA0Gb35tAF5GGrQdIg/W8mj/iJ5AWAkQinuGdg==","time":1547833320255,"size":42,"metadata":{"url":"http://localhost:1337/-/package/@scoped%2fanother/dist-tags","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["184ec63f44d4f2af"],"referer":["dist-tag ls [REDACTED]"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:42:00 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+30f4ec8b2f2af36098df7b3092cf8605f09a2959 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fanother/dist-tags","integrity":"sha512-5wbenY5s4WFSvlN8vM3yYyGz1ng5TOQvtWqk5po3q6nVTfKEcA0Gb35tAF5GGrQdIg/W8mj/iJ5AWAkQinuGdg==","time":1547833320772,"size":42,"metadata":{"url":"http://localhost:1337/-/package/@scoped%2fanother/dist-tags","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["90674af1a572a629"],"referer":["dist-tag [REDACTED]"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:42:00 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+b6c279032b629776673d4e5cdc4424181e1acc3f {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fanother/dist-tags","integrity":"sha512-5wbenY5s4WFSvlN8vM3yYyGz1ng5TOQvtWqk5po3q6nVTfKEcA0Gb35tAF5GGrQdIg/W8mj/iJ5AWAkQinuGdg==","time":1547833321318,"size":42,"metadata":{"url":"http://localhost:1337/-/package/@scoped%2fanother/dist-tags","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["bfc4da9b2d97d1c7"],"referer":["dist-tag add [REDACTED] c"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:42:01 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+0fdfd60b28cb1869d83ca01b7b194e1b400a6bf3 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fanother/dist-tags","integrity":"sha512-oaEHLK5hbB9keREOPj7lT6FpeMCB2AMpmdYtIH5c1sdkPkY9c9P/SyGK1xdyTJGAE+A5VPlykZLL36HQvtb9OQ==","time":1547833321936,"size":30,"metadata":{"url":"http://localhost:1337/-/package/@scoped%2fanother/dist-tags","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["576fdd8ec20fae78"],"referer":["dist-tag set [REDACTED] b"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:42:01 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+4c7b732b7c0ca0c535817874a053b602ba0ffd78 {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fanother/dist-tags","integrity":"sha512-NTlyH3BfYhz/4w28govjh+JTxQ7QX7Co4/QYdpmWvd4d0cuK8uR9/pQXqresPSONHwNu8umtuJjDhvDNqbaGHg==","time":1547833322468,"size":54,"metadata":{"url":"http://localhost:1337/-/package/@scoped%2fanother/dist-tags","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["2b7cb98442d19d37"],"referer":["dist-tag rm [REDACTED] c"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:42:02 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+cbf1ecd55e1db2acc2575f79d62ab2527ff3b6ca {"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fanother/dist-tags","integrity":"sha512-oPha6LSEvHH7E+9ja5ruRfVIq2NXSINp/7AvI5+Uc8a5TFwqXvOxuW4WzmFY3AXxPviLzvMt47xBWkjNxVADVQ==","time":1547833323093,"size":18,"metadata":{"url":"http://localhost:1337/-/package/@scoped%2fanother/dist-tags","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["d321519b8d5f7e23"],"referer":["dist-tag rm [REDACTED] nonexistent"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:42:03 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/fc/88/41f0501b29bfe9117061c190df783256e332cab7782a7484078354ddbb0f b/deps/npm/test/npm_cache/_cacache/index-v5/fc/88/41f0501b29bfe9117061c190df783256e332cab7782a7484078354ddbb0f
new file mode 100644
index 0000000000..9701c3fb55
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/fc/88/41f0501b29bfe9117061c190df783256e332cab7782a7484078354ddbb0f
@@ -0,0 +1,3 @@
+
+e05851ada6a8b60a84358486f62dd100be2f8170 {"key":"make-fetch-happen:request-cache:http://127.0.0.1:1338/registry/add-named-update-protocol-porti/-/add-named-update-protocol-porti-0.0.0.tgz","integrity":"sha1-NWoZK3kTsExUV00Ywo1G5jlUKKs=","time":1547832997192,"size":1,"metadata":{"url":"http://127.0.0.1:1338/registry/add-named-update-protocol-porti/-/add-named-update-protocol-porti-0.0.0.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["8cb41ddc499c27b6"],"referer":["cache add add-named-update-protocol-porti@0.0.0"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:add-named-update-protocol-porti@http://127.0.0.1:1338/registry/add-named-update-protocol-porti/-/add-named-update-protocol-porti-0.0.0.tgz"]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:36:37 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
+bcd7495c1e69e7cbfd7cda387abb72f8454a0a9e {"key":"make-fetch-happen:request-cache:http://127.0.0.1:1338/registry/add-named-update-protocol-porti/-/add-named-update-protocol-porti-0.0.0.tgz","integrity":"sha1-NWoZK3kTsExUV00Ywo1G5jlUKKs=","time":1547833219779,"size":1,"metadata":{"url":"http://127.0.0.1:1338/registry/add-named-update-protocol-porti/-/add-named-update-protocol-porti-0.0.0.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["87b598eff1cdd205"],"referer":["cache add add-named-update-protocol-porti@0.0.0"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:add-named-update-protocol-porti@http://127.0.0.1:1338/registry/add-named-update-protocol-porti/-/add-named-update-protocol-porti-0.0.0.tgz"]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:40:19 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/fd/a9/67911fbad568af62425934e3a7938145b60af92641734e54a8f50a418c03 b/deps/npm/test/npm_cache/_cacache/index-v5/fd/a9/67911fbad568af62425934e3a7938145b60af92641734e54a8f50a418c03
new file mode 100644
index 0000000000..c035c359fd
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/fd/a9/67911fbad568af62425934e3a7938145b60af92641734e54a8f50a418c03
@@ -0,0 +1,2 @@
+
+cf643ea07623ca00c880b88ac8d9fbb1b1c76ba6 {"key":"pacote:version-manifest:http://localhost:1337/async/-/async-0.2.10.tgz:sha1-trvgsGdLnXGXCMo43owjfLUmw9E=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833093331,"size":1,"metadata":{"id":"async@0.2.10","manifest":{"name":"async","version":"0.2.10","dependencies":{},"optionalDependencies":{},"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"http://localhost:1337/async/-/async-0.2.10.tgz","_integrity":"sha1-trvgsGdLnXGXCMo43owjfLUmw9E=","_shasum":"b6bbe0b0674b9d719708ca38de8c237cb526c3d1","_shrinkwrap":null,"bin":null,"_id":"async@0.2.10"},"type":"finalized-manifest"}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/fe/7e/e4d136986019ebc5360c54baee7ae9bec37f513387665b57ac2bcd167b70 b/deps/npm/test/npm_cache/_cacache/index-v5/fe/7e/e4d136986019ebc5360c54baee7ae9bec37f513387665b57ac2bcd167b70
new file mode 100644
index 0000000000..7d5b158124
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/fe/7e/e4d136986019ebc5360c54baee7ae9bec37f513387665b57ac2bcd167b70
@@ -0,0 +1,2 @@
+
+8cdd51e878b62f99bcceb9269e1a21a0fa5474c3 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.14.tgz","integrity":"sha1-BweNtfY3f2Mh/Oqu30l94STclGU=","time":1544485144557,"size":4025,"metadata":{"url":"https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.14.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.5.0 node/v10.14.1 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["28a99044412a2230"],"referer":["install [REDACTED]"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:graceful-fs@https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.14.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"date":["Mon, 10 Dec 2018 23:39:04 GMT"],"content-type":["application/octet-stream"],"content-length":["4025"],"connection":["keep-alive"],"set-cookie":["__cfduid=d9119cbf97c872d57754e45bf35e112b91544485144; expires=Tue, 10-Dec-19 23:39:04 GMT; path=/; domain=.registry.npmjs.org; HttpOnly"],"cf-cache-status":["HIT"],"cache-control":["max-age=432000"],"accept-ranges":["bytes"],"cf-ray":["48738c79492b6c4c-SJC"],"etag":["\"fb46c820a063a666be04b2c416d51b29\""],"expect-ct":["max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\""],"last-modified":["Sun, 27 May 2018 02:39:27 GMT"],"vary":["Accept-Encoding"],"server":["cloudflare"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/ff/d3/eca629ba696cac5a91e13f61bb768d7cbf82072f798d17071572ab3943f2 b/deps/npm/test/npm_cache/_cacache/index-v5/ff/d3/eca629ba696cac5a91e13f61bb768d7cbf82072f798d17071572ab3943f2
new file mode 100644
index 0000000000..2df72adaac
--- /dev/null
+++ b/deps/npm/test/npm_cache/_cacache/index-v5/ff/d3/eca629ba696cac5a91e13f61bb768d7cbf82072f798d17071572ab3943f2
@@ -0,0 +1,2 @@
+
+f958db19324fd46983256770efb05e8753aac7f6 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/inherits","integrity":"sha512-IYLqxPg+UPO2qovqVhxd/r3B1mlB4tp4WvQG4EXeVqD8QiA0yn+iq1+pkCLGuGAgPrSFPOhfFfJrlshLjZ5zIA==","time":1544485144511,"size":1494,"metadata":{"url":"https://registry.npmjs.org/inherits","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.5.0 node/v10.14.1 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["28a99044412a2230"],"referer":["install [REDACTED]"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:inherits"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"date":["Mon, 10 Dec 2018 23:39:04 GMT"],"content-type":["application/vnd.npm.install-v1+json"],"content-length":["1494"],"connection":["keep-alive"],"set-cookie":["__cfduid=d9119cbf97c872d57754e45bf35e112b91544485144; expires=Tue, 10-Dec-19 23:39:04 GMT; path=/; domain=.registry.npmjs.org; HttpOnly"],"cf-cache-status":["HIT"],"cache-control":["max-age=300"],"accept-ranges":["bytes"],"cf-ray":["48738c7909076c4c-SJC"],"etag":["\"419f7e0699d401599186150793ffd002\""],"expect-ct":["max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\""],"last-modified":["Fri, 03 Aug 2018 00:38:04 GMT"],"vary":["accept-encoding, accept"],"server":["cloudflare"],"x-fetch-attempts":["1"]}}} \ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_24_580Z-debug.log b/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_24_580Z-debug.log
new file mode 100644
index 0000000000..c2cc5dbf59
--- /dev/null
+++ b/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_24_580Z-debug.log
@@ -0,0 +1,54 @@
+0 info it worked if it ends with ok
+1 verbose cli [ '/usr/local/bin/node',
+1 verbose cli '/Users/zkat/Documents/code/work/npm/bin/npm-cli.js',
+1 verbose cli 'install',
+1 verbose cli '--engine-strict',
+1 verbose cli '/Users/zkat/Documents/code/work/npm/test/tap/check-engine-reqs/from',
+1 verbose cli '--loglevel',
+1 verbose cli 'silly' ]
+2 info using npm@6.6.0
+3 info using node@v11.6.0
+4 verbose npm-session cf9ef66b93f6540b
+5 silly install loadCurrentTree
+6 silly install readLocalPackageData
+7 silly pacote directory manifest for undefined@file:/Users/zkat/Documents/code/work/npm/test/tap/check-engine-reqs/from fetched in 7ms
+8 timing stage:loadCurrentTree Completed in 22ms
+9 silly install loadIdealTree
+10 silly install cloneCurrentTreeToIdealTree
+11 timing stage:loadIdealTree:cloneCurrentTree Completed in 0ms
+12 silly install loadShrinkwrap
+13 timing stage:loadIdealTree:loadShrinkwrap Completed in 1ms
+14 silly install loadAllDepsIntoIdealTree
+15 timing stage:rollbackFailedOptional Completed in 0ms
+16 timing stage:runTopLevelLifecycles Completed in 26ms
+17 silly saveTree in
+18 verbose stack Error: Unsupported engine for check-engine-reqs@0.0.1: wanted: {"node":"1.0.0-not-a-real-version"} (current: {"node":"11.6.0","npm":"6.6.0"})
+18 verbose stack at checkEngine (/Users/zkat/Documents/code/work/npm/node_modules/npm-install-checks/index.js:13:14)
+18 verbose stack at module.exports.isInstallable (/Users/zkat/Documents/code/work/npm/lib/install/validate-args.js:49:3)
+18 verbose stack at Array.<anonymous> (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/bind-actor.js:15:8)
+18 verbose stack at LOOP (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/chain.js:15:14)
+18 verbose stack at /Users/zkat/Documents/code/work/npm/node_modules/slide/lib/chain.js:18:7
+18 verbose stack at checkSelf (/Users/zkat/Documents/code/work/npm/lib/install/validate-args.js:57:72)
+18 verbose stack at Array.<anonymous> (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/bind-actor.js:15:8)
+18 verbose stack at LOOP (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/chain.js:15:14)
+18 verbose stack at /Users/zkat/Documents/code/work/npm/node_modules/slide/lib/chain.js:18:7
+18 verbose stack at hasMinimumFields (/Users/zkat/Documents/code/work/npm/lib/install/validate-args.js:30:12)
+18 verbose stack at Array.<anonymous> (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/bind-actor.js:15:8)
+18 verbose stack at LOOP (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/chain.js:15:14)
+18 verbose stack at chain (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/chain.js:20:5)
+18 verbose stack at /Users/zkat/Documents/code/work/npm/lib/install/validate-args.js:16:5
+18 verbose stack at /Users/zkat/Documents/code/work/npm/node_modules/slide/lib/async-map.js:52:35
+18 verbose stack at Array.forEach (<anonymous>)
+19 verbose pkgid check-engine-reqs@0.0.1
+20 verbose cwd /Users/zkat/Documents/code/work/npm/test/tap/check-engine-reqs/in
+21 verbose Darwin 18.0.0
+22 verbose argv "/usr/local/bin/node" "/Users/zkat/Documents/code/work/npm/bin/npm-cli.js" "install" "--engine-strict" "/Users/zkat/Documents/code/work/npm/test/tap/check-engine-reqs/from" "--loglevel" "silly"
+23 verbose node v11.6.0
+24 verbose npm v6.6.0
+25 error code ENOTSUP
+26 error notsup Unsupported engine for check-engine-reqs@0.0.1: wanted: {"node":"1.0.0-not-a-real-version"} (current: {"node":"11.6.0","npm":"6.6.0"})
+27 error notsup Not compatible with your version of node/npm: check-engine-reqs@0.0.1
+28 error notsup Not compatible with your version of node/npm: check-engine-reqs@0.0.1
+28 error notsup Required: {"node":"1.0.0-not-a-real-version"}
+28 error notsup Actual: {"npm":"6.6.0","node":"11.6.0"}
+29 verbose exit [ 1, true ]
diff --git a/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_26_268Z-debug.log b/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_26_268Z-debug.log
new file mode 100644
index 0000000000..b8f0a259aa
--- /dev/null
+++ b/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_26_268Z-debug.log
@@ -0,0 +1,56 @@
+0 info it worked if it ends with ok
+1 verbose cli [ '/usr/local/bin/node',
+1 verbose cli '/Users/zkat/Documents/code/work/npm/bin/npm-cli.js',
+1 verbose cli 'install',
+1 verbose cli '/Users/zkat/Documents/code/work/npm/test/tap/check-install-self/from' ]
+2 info using npm@6.6.0
+3 info using node@v11.6.0
+4 verbose npm-session 61cb12d52a202aa0
+5 silly install loadCurrentTree
+6 silly install readLocalPackageData
+7 silly pacote directory manifest for undefined@file:/Users/zkat/Documents/code/work/npm/test/tap/check-install-self/from fetched in 5ms
+8 timing stage:loadCurrentTree Completed in 27ms
+9 silly install loadIdealTree
+10 silly install cloneCurrentTreeToIdealTree
+11 timing stage:loadIdealTree:cloneCurrentTree Completed in 1ms
+12 silly install loadShrinkwrap
+13 timing stage:loadIdealTree:loadShrinkwrap Completed in 0ms
+14 silly install loadAllDepsIntoIdealTree
+15 timing stage:rollbackFailedOptional Completed in 1ms
+16 timing stage:runTopLevelLifecycles Completed in 30ms
+17 silly saveTree check-install-self@0.0.1
+18 verbose stack Error: Refusing to install package with name "check-install-self" under a package
+18 verbose stack also called "check-install-self". Did you name your project the same
+18 verbose stack as the dependency you're installing?
+18 verbose stack
+18 verbose stack For more information, see:
+18 verbose stack <https://docs.npmjs.com/cli/install#limitations-of-npms-install-algorithm>
+18 verbose stack at checkSelf (/Users/zkat/Documents/code/work/npm/lib/install/validate-args.js:64:14)
+18 verbose stack at Array.<anonymous> (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/bind-actor.js:15:8)
+18 verbose stack at LOOP (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/chain.js:15:14)
+18 verbose stack at /Users/zkat/Documents/code/work/npm/node_modules/slide/lib/chain.js:18:7
+18 verbose stack at hasMinimumFields (/Users/zkat/Documents/code/work/npm/lib/install/validate-args.js:30:12)
+18 verbose stack at Array.<anonymous> (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/bind-actor.js:15:8)
+18 verbose stack at LOOP (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/chain.js:15:14)
+18 verbose stack at chain (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/chain.js:20:5)
+18 verbose stack at /Users/zkat/Documents/code/work/npm/lib/install/validate-args.js:16:5
+18 verbose stack at /Users/zkat/Documents/code/work/npm/node_modules/slide/lib/async-map.js:52:35
+18 verbose stack at Array.forEach (<anonymous>)
+18 verbose stack at /Users/zkat/Documents/code/work/npm/node_modules/slide/lib/async-map.js:52:11
+18 verbose stack at Array.forEach (<anonymous>)
+18 verbose stack at asyncMap (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/async-map.js:51:8)
+18 verbose stack at module.exports (/Users/zkat/Documents/code/work/npm/lib/install/validate-args.js:15:3)
+18 verbose stack at Array.<anonymous> (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/bind-actor.js:15:8)
+19 verbose cwd /Users/zkat/Documents/code/work/npm/test/tap/check-install-self/in
+20 verbose Darwin 18.0.0
+21 verbose argv "/usr/local/bin/node" "/Users/zkat/Documents/code/work/npm/bin/npm-cli.js" "install" "/Users/zkat/Documents/code/work/npm/test/tap/check-install-self/from"
+22 verbose node v11.6.0
+23 verbose npm v6.6.0
+24 error code ENOSELF
+25 error Refusing to install package with name "check-install-self" under a package
+25 error also called "check-install-self". Did you name your project the same
+25 error as the dependency you're installing?
+25 error
+25 error For more information, see:
+25 error <https://docs.npmjs.com/cli/install#limitations-of-npms-install-algorithm>
+26 verbose exit [ 1, true ]
diff --git a/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_28_020Z-debug.log b/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_28_020Z-debug.log
new file mode 100644
index 0000000000..27a7399a72
--- /dev/null
+++ b/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_28_020Z-debug.log
@@ -0,0 +1,53 @@
+0 info it worked if it ends with ok
+1 verbose cli [ '/usr/local/bin/node',
+1 verbose cli '/Users/zkat/Documents/code/work/npm/bin/npm-cli.js',
+1 verbose cli 'install',
+1 verbose cli '/Users/zkat/Documents/code/work/npm/test/tap/check-os-reqs/from',
+1 verbose cli '--loglevel',
+1 verbose cli 'silly' ]
+2 info using npm@6.6.0
+3 info using node@v11.6.0
+4 verbose npm-session 0d53651f554c2a7e
+5 silly install loadCurrentTree
+6 silly install readLocalPackageData
+7 silly pacote directory manifest for undefined@file:/Users/zkat/Documents/code/work/npm/test/tap/check-os-reqs/from fetched in 5ms
+8 timing stage:loadCurrentTree Completed in 20ms
+9 silly install loadIdealTree
+10 silly install cloneCurrentTreeToIdealTree
+11 timing stage:loadIdealTree:cloneCurrentTree Completed in 1ms
+12 silly install loadShrinkwrap
+13 timing stage:loadIdealTree:loadShrinkwrap Completed in 0ms
+14 silly install loadAllDepsIntoIdealTree
+15 timing stage:rollbackFailedOptional Completed in 1ms
+16 timing stage:runTopLevelLifecycles Completed in 23ms
+17 silly saveTree in
+18 verbose stack Error: Unsupported platform for check-os-reqs@0.0.1: wanted {"name":"check-os-reqs","version":"0.0.1","os":["fake-os"],"dependencies":{},"optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"/Users/zkat/Documents/code/work/npm/test/tap/check-os-reqs/from","_integrity":null,"_shasum":null,"_shrinkwrap":null,"bin":null,"_id":"check-os-reqs@0.0.1","_from":"file:/Users/zkat/Documents/code/work/npm/test/tap/check-os-reqs/from","_requested":{"type":"directory","where":"/Users/zkat/Documents/code/work/npm/test/tap/check-os-reqs/in","raw":"/Users/zkat/Documents/code/work/npm/test/tap/check-os-reqs/from","rawSpec":"/Users/zkat/Documents/code/work/npm/test/tap/check-os-reqs/from","saveSpec":"file:/Users/zkat/Documents/code/work/npm/test/tap/check-os-reqs/from","fetchSpec":"/Users/zkat/Documents/code/work/npm/test/tap/check-os-reqs/from"},"_spec":"/Users/zkat/Documents/code/work/npm/test/tap/check-os-reqs/from","_where":"/Users/zkat/Documents/code/work/npm/test/tap/check-os-reqs/in"} (current: {"os":"darwin","cpu":"x64"})
+18 verbose stack at checkPlatform (/Users/zkat/Documents/code/work/npm/node_modules/npm-install-checks/index.js:45:14)
+18 verbose stack at thenWarnEngineIssues (/Users/zkat/Documents/code/work/npm/lib/install/validate-args.js:52:5)
+18 verbose stack at a (/Users/zkat/Documents/code/work/npm/node_modules/iferr/iferr.js:3:64)
+18 verbose stack at checkEngine (/Users/zkat/Documents/code/work/npm/node_modules/npm-install-checks/index.js:10:20)
+18 verbose stack at module.exports.isInstallable (/Users/zkat/Documents/code/work/npm/lib/install/validate-args.js:49:3)
+18 verbose stack at Array.<anonymous> (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/bind-actor.js:15:8)
+18 verbose stack at LOOP (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/chain.js:15:14)
+18 verbose stack at /Users/zkat/Documents/code/work/npm/node_modules/slide/lib/chain.js:18:7
+18 verbose stack at checkSelf (/Users/zkat/Documents/code/work/npm/lib/install/validate-args.js:57:72)
+18 verbose stack at Array.<anonymous> (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/bind-actor.js:15:8)
+18 verbose stack at LOOP (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/chain.js:15:14)
+18 verbose stack at /Users/zkat/Documents/code/work/npm/node_modules/slide/lib/chain.js:18:7
+18 verbose stack at hasMinimumFields (/Users/zkat/Documents/code/work/npm/lib/install/validate-args.js:30:12)
+18 verbose stack at Array.<anonymous> (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/bind-actor.js:15:8)
+18 verbose stack at LOOP (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/chain.js:15:14)
+18 verbose stack at chain (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/chain.js:20:5)
+19 verbose pkgid check-os-reqs@0.0.1
+20 verbose cwd /Users/zkat/Documents/code/work/npm/test/tap/check-os-reqs/in
+21 verbose Darwin 18.0.0
+22 verbose argv "/usr/local/bin/node" "/Users/zkat/Documents/code/work/npm/bin/npm-cli.js" "install" "/Users/zkat/Documents/code/work/npm/test/tap/check-os-reqs/from" "--loglevel" "silly"
+23 verbose node v11.6.0
+24 verbose npm v6.6.0
+25 error code EBADPLATFORM
+26 error notsup Unsupported platform for check-os-reqs@0.0.1: wanted {"os":"fake-os","arch":"any"} (current: {"os":"darwin","arch":"x64"})
+27 error notsup Valid OS: fake-os
+27 error notsup Valid Arch: any
+27 error notsup Actual OS: darwin
+27 error notsup Actual Arch: x64
+28 verbose exit [ 1, true ]
diff --git a/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_39_719Z-debug.log b/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_39_719Z-debug.log
new file mode 100644
index 0000000000..078b12da87
--- /dev/null
+++ b/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_39_719Z-debug.log
@@ -0,0 +1,27 @@
+0 info it worked if it ends with ok
+1 verbose cli [ '/usr/local/bin/node',
+1 verbose cli '/Users/zkat/Documents/code/work/npm/bin/npm-cli.js',
+1 verbose cli 'ci',
+1 verbose cli '--registry',
+1 verbose cli 'http://localhost:1337',
+1 verbose cli '--loglevel',
+1 verbose cli 'warn' ]
+2 info using npm@6.6.0
+3 info using node@v11.6.0
+4 verbose npm-session ebc502d2075f4b06
+5 info prepare initializing installer
+6 verbose prepare starting workers
+7 verbose prepare installation prefix: /Users/zkat/Documents/code/work/npm/test/tap/ci
+8 verbose checkLock verifying package-lock data
+9 verbose teardown shutting down workers.
+10 info teardown Done in 0s
+11 verbose stack Error: cipm can only install packages with an existing package-lock.json or npm-shrinkwrap.json with lockfileVersion >= 1. Run an install with npm@5 or later to generate it, then try again.
+11 verbose stack at Installer.checkLock (/Users/zkat/Documents/code/work/npm/node_modules/libcipm/index.js:184:9)
+11 verbose stack at then.then.then.stat (/Users/zkat/Documents/code/work/npm/node_modules/libcipm/index.js:158:16)
+12 verbose cwd /Users/zkat/Documents/code/work/npm/test/tap/ci
+13 verbose Darwin 18.0.0
+14 verbose argv "/usr/local/bin/node" "/Users/zkat/Documents/code/work/npm/bin/npm-cli.js" "ci" "--registry" "http://localhost:1337" "--loglevel" "warn"
+15 verbose node v11.6.0
+16 verbose npm v6.6.0
+17 error cipm can only install packages with an existing package-lock.json or npm-shrinkwrap.json with lockfileVersion >= 1. Run an install with npm@5 or later to generate it, then try again.
+18 verbose exit [ 1, true ]
diff --git a/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_40_242Z-debug.log b/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_40_242Z-debug.log
new file mode 100644
index 0000000000..b88b1c08ce
--- /dev/null
+++ b/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_40_242Z-debug.log
@@ -0,0 +1,34 @@
+0 info it worked if it ends with ok
+1 verbose cli [ '/usr/local/bin/node',
+1 verbose cli '/Users/zkat/Documents/code/work/npm/bin/npm-cli.js',
+1 verbose cli 'ci',
+1 verbose cli '--registry',
+1 verbose cli 'http://localhost:1337',
+1 verbose cli '--loglevel',
+1 verbose cli 'warn' ]
+2 info using npm@6.6.0
+3 info using node@v11.6.0
+4 verbose npm-session 81dd68c6da560193
+5 info prepare initializing installer
+6 verbose prepare starting workers
+7 verbose prepare installation prefix: /Users/zkat/Documents/code/work/npm/test/tap/ci
+8 verbose prepare using package-lock.json
+9 verbose checkLock verifying package-lock data
+10 verbose teardown shutting down workers.
+11 info teardown Done in 0s
+12 verbose stack Error: cipm can only install packages when your package.json and package-lock.json or npm-shrinkwrap.json are in sync. Please update your lock file with `npm install` before continuing.
+12 verbose stack
+12 verbose stack
+12 verbose stack Missing: optimist@0.6.0
+12 verbose stack
+12 verbose stack at lockVerify.then.result (/Users/zkat/Documents/code/work/npm/node_modules/libcipm/index.js:191:15)
+13 verbose cwd /Users/zkat/Documents/code/work/npm/test/tap/ci
+14 verbose Darwin 18.0.0
+15 verbose argv "/usr/local/bin/node" "/Users/zkat/Documents/code/work/npm/bin/npm-cli.js" "ci" "--registry" "http://localhost:1337" "--loglevel" "warn"
+16 verbose node v11.6.0
+17 verbose npm v6.6.0
+18 error cipm can only install packages when your package.json and package-lock.json or npm-shrinkwrap.json are in sync. Please update your lock file with `npm install` before continuing.
+18 error
+18 error
+18 error Missing: optimist@0.6.0
+19 verbose exit [ 1, true ]
diff --git a/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_47_912Z-debug.log b/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_47_912Z-debug.log
new file mode 100644
index 0000000000..4013f3d68d
--- /dev/null
+++ b/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_47_912Z-debug.log
@@ -0,0 +1,21 @@
+0 info it worked if it ends with ok
+1 verbose cli [ '/usr/local/bin/node',
+1 verbose cli '/Users/zkat/Documents/code/work/npm/bin/npm-cli.js',
+1 verbose cli 'config',
+1 verbose cli 'get',
+1 verbose cli '_auth' ]
+2 info using npm@6.6.0
+3 info using node@v11.6.0
+4 verbose stack Error: ---sekretz---
+4 verbose stack at get (/Users/zkat/Documents/code/work/npm/lib/config.js:166:15)
+4 verbose stack at EventEmitter.config (/Users/zkat/Documents/code/work/npm/lib/config.js:68:14)
+4 verbose stack at Object.commandCache.(anonymous function) (/Users/zkat/Documents/code/work/npm/lib/npm.js:156:13)
+4 verbose stack at EventEmitter.<anonymous> (/Users/zkat/Documents/code/work/npm/bin/npm-cli.js:131:30)
+4 verbose stack at process.internalTickCallback (internal/process/next_tick.js:70:11)
+5 verbose cwd /Users/zkat/Documents/code/work/npm/test/tap/config-private
+6 verbose Darwin 18.0.0
+7 verbose argv "/usr/local/bin/node" "/Users/zkat/Documents/code/work/npm/bin/npm-cli.js" "config" "get" "_auth"
+8 verbose node v11.6.0
+9 verbose npm v6.6.0
+10 error ---sekretz---
+11 verbose exit [ 1, true ]
diff --git a/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_48_220Z-debug.log b/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_48_220Z-debug.log
new file mode 100644
index 0000000000..126eb27b68
--- /dev/null
+++ b/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_48_220Z-debug.log
@@ -0,0 +1,21 @@
+0 info it worked if it ends with ok
+1 verbose cli [ '/usr/local/bin/node',
+1 verbose cli '/Users/zkat/Documents/code/work/npm/bin/npm-cli.js',
+1 verbose cli 'config',
+1 verbose cli 'get',
+1 verbose cli '//registry.npmjs.org/:_password' ]
+2 info using npm@6.6.0
+3 info using node@v11.6.0
+4 verbose stack Error: ---sekretz---
+4 verbose stack at get (/Users/zkat/Documents/code/work/npm/lib/config.js:166:15)
+4 verbose stack at EventEmitter.config (/Users/zkat/Documents/code/work/npm/lib/config.js:68:14)
+4 verbose stack at Object.commandCache.(anonymous function) (/Users/zkat/Documents/code/work/npm/lib/npm.js:156:13)
+4 verbose stack at EventEmitter.<anonymous> (/Users/zkat/Documents/code/work/npm/bin/npm-cli.js:131:30)
+4 verbose stack at process.internalTickCallback (internal/process/next_tick.js:70:11)
+5 verbose cwd /Users/zkat/Documents/code/work/npm/test/tap/config-private
+6 verbose Darwin 18.0.0
+7 verbose argv "/usr/local/bin/node" "/Users/zkat/Documents/code/work/npm/bin/npm-cli.js" "config" "get" "//registry.npmjs.org/:_password"
+8 verbose node v11.6.0
+9 verbose npm v6.6.0
+10 error ---sekretz---
+11 verbose exit [ 1, true ]
diff --git a/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_57_730Z-debug.log b/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_57_730Z-debug.log
new file mode 100644
index 0000000000..23b9aeb897
--- /dev/null
+++ b/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_57_730Z-debug.log
@@ -0,0 +1,26 @@
+0 info it worked if it ends with ok
+1 verbose cli [ '/usr/local/bin/node',
+1 verbose cli '/Users/zkat/Documents/code/work/npm/bin/npm-cli.js',
+1 verbose cli 'deprecate',
+1 verbose cli 'cond@-9001',
+1 verbose cli 'make it dead',
+1 verbose cli '--registry',
+1 verbose cli 'http://localhost:1337' ]
+2 info using npm@6.6.0
+3 info using node@v11.6.0
+4 verbose npm-session 754b761c5653fbe8
+5 verbose stack Error: invalid version range: -9001
+5 verbose stack at BB.try (/Users/zkat/Documents/code/work/npm/lib/deprecate.js:52:13)
+5 verbose stack at tryCatcher (/Users/zkat/Documents/code/work/npm/node_modules/bluebird/js/release/util.js:16:23)
+5 verbose stack at Function.Promise.attempt.Promise.try (/Users/zkat/Documents/code/work/npm/node_modules/bluebird/js/release/method.js:39:29)
+5 verbose stack at EventEmitter.deprecate (/Users/zkat/Documents/code/work/npm/lib/deprecate.js:42:16)
+5 verbose stack at Object.commandCache.(anonymous function) (/Users/zkat/Documents/code/work/npm/lib/npm.js:156:13)
+5 verbose stack at EventEmitter.<anonymous> (/Users/zkat/Documents/code/work/npm/bin/npm-cli.js:131:30)
+5 verbose stack at process.internalTickCallback (internal/process/next_tick.js:70:11)
+6 verbose cwd /Users/zkat/Documents/code/work/npm
+7 verbose Darwin 18.0.0
+8 verbose argv "/usr/local/bin/node" "/Users/zkat/Documents/code/work/npm/bin/npm-cli.js" "deprecate" "cond@-9001" "make it dead" "--registry" "http://localhost:1337"
+9 verbose node v11.6.0
+10 verbose npm v6.6.0
+11 error invalid version range: -9001
+12 verbose exit [ 1, true ]
diff --git a/deps/npm/test/npm_cache/_logs/2019-01-18T17_42_14_004Z-debug.log b/deps/npm/test/npm_cache/_logs/2019-01-18T17_42_14_004Z-debug.log
new file mode 100644
index 0000000000..737b59e4b6
--- /dev/null
+++ b/deps/npm/test/npm_cache/_logs/2019-01-18T17_42_14_004Z-debug.log
@@ -0,0 +1,111 @@
+0 info it worked if it ends with ok
+1 verbose cli [ '/usr/local/bin/node',
+1 verbose cli '/Users/zkat/Documents/code/work/npm/bin/npm-cli.js',
+1 verbose cli 'install',
+1 verbose cli '--no-save',
+1 verbose cli '../test-whoops-1.0.0.tgz' ]
+2 info using npm@6.6.0
+3 info using node@v11.6.0
+4 verbose npm-session 6b1152dff5d8deaa
+5 silly install loadCurrentTree
+6 silly install readLocalPackageData
+7 silly pacote file manifest for undefined@file:../test-whoops-1.0.0.tgz fetched in 26ms
+8 timing stage:loadCurrentTree Completed in 40ms
+9 silly install loadIdealTree
+10 silly install cloneCurrentTreeToIdealTree
+11 timing stage:loadIdealTree:cloneCurrentTree Completed in 0ms
+12 silly install loadShrinkwrap
+13 timing stage:loadIdealTree:loadShrinkwrap Completed in 1ms
+14 silly install loadAllDepsIntoIdealTree
+15 silly resolveWithNewModule @test/whoops@1.0.0 checking installable status
+16 timing stage:loadIdealTree:loadAllDepsIntoIdealTree Completed in 5ms
+17 timing stage:loadIdealTree Completed in 7ms
+18 silly currentTree gently-rm-overeager
+19 silly idealTree gently-rm-overeager
+19 silly idealTree └── @test/whoops@1.0.0
+20 silly install generateActionsToTake
+21 timing stage:generateActionsToTake Completed in 4ms
+22 silly diffTrees action count 1
+23 silly diffTrees add @test/whoops@1.0.0
+24 silly decomposeActions action count 8
+25 silly decomposeActions fetch @test/whoops@1.0.0
+26 silly decomposeActions extract @test/whoops@1.0.0
+27 silly decomposeActions preinstall @test/whoops@1.0.0
+28 silly decomposeActions build @test/whoops@1.0.0
+29 silly decomposeActions install @test/whoops@1.0.0
+30 silly decomposeActions postinstall @test/whoops@1.0.0
+31 silly decomposeActions finalize @test/whoops@1.0.0
+32 silly decomposeActions refresh-package-json @test/whoops@1.0.0
+33 silly install executeActions
+34 silly doSerial global-install 8
+35 verbose correctMkdir /Users/zkat/Documents/code/work/npm/test/npm_cache/_locks correctMkdir not in flight; initializing
+36 verbose lock using /Users/zkat/Documents/code/work/npm/test/npm_cache/_locks/staging-6ede0a15658ba472.lock for /Users/zkat/Documents/code/work/npm/test/tap/gently-rm-overeager/gently-rm-overeager/node_modules/.staging
+37 silly doParallel extract 1
+38 silly extract @test/whoops@1.0.0
+39 silly tarball trying file:../test-whoops-1.0.0.tgz by hash: sha512-yaIGW7l0bldKVBrwYbeICUjTDkfbHcNWwxS9k0sBaYlNaW6DO9Y7bFPLlz0UuAZLWwQXfEAuNHdw3fu7x8kGyw==
+40 silly extract file:../test-whoops-1.0.0.tgz extracted to /Users/zkat/Documents/code/work/npm/test/tap/gently-rm-overeager/gently-rm-overeager/node_modules/.staging/@test/whoops-283f4c1a (13ms)
+41 timing action:extract Completed in 16ms
+42 silly doReverseSerial unbuild 8
+43 silly doSerial remove 8
+44 silly doSerial move 8
+45 silly doSerial finalize 8
+46 silly finalize /Users/zkat/Documents/code/work/npm/test/tap/gently-rm-overeager/gently-rm-overeager/node_modules/@test/whoops
+47 timing action:finalize Completed in 4ms
+48 silly doParallel refresh-package-json 1
+49 silly refresh-package-json /Users/zkat/Documents/code/work/npm/test/tap/gently-rm-overeager/gently-rm-overeager/node_modules/@test/whoops
+50 timing action:refresh-package-json Completed in 7ms
+51 silly doParallel preinstall 1
+52 silly preinstall @test/whoops@1.0.0
+53 info lifecycle @test/whoops@1.0.0~preinstall: @test/whoops@1.0.0
+54 timing action:preinstall Completed in 1ms
+55 silly doSerial build 8
+56 silly build @test/whoops@1.0.0
+57 info linkStuff @test/whoops@1.0.0
+58 silly linkStuff @test/whoops@1.0.0 has /Users/zkat/Documents/code/work/npm/test/tap/gently-rm-overeager/gently-rm-overeager/node_modules as its parent node_modules
+59 timing action:build Completed in 1ms
+60 silly doSerial global-link 8
+61 silly doParallel update-linked 0
+62 silly doSerial install 8
+63 silly install @test/whoops@1.0.0
+64 info lifecycle @test/whoops@1.0.0~install: @test/whoops@1.0.0
+65 timing action:install Completed in 1ms
+66 silly doSerial postinstall 8
+67 silly postinstall @test/whoops@1.0.0
+68 info lifecycle @test/whoops@1.0.0~postinstall: @test/whoops@1.0.0
+69 verbose lifecycle @test/whoops@1.0.0~postinstall: unsafe-perm in lifecycle true
+70 verbose lifecycle @test/whoops@1.0.0~postinstall: PATH: /Users/zkat/Documents/code/work/npm/node_modules/npm-lifecycle/node-gyp-bin:/Users/zkat/Documents/code/work/npm/test/tap/gently-rm-overeager/gently-rm-overeager/node_modules/@test/whoops/node_modules/.bin:/Users/zkat/Documents/code/work/npm/test/tap/gently-rm-overeager/gently-rm-overeager/node_modules/.bin:/Users/zkat/Documents/code/work/npm/node_modules/npm-lifecycle/node-gyp-bin:/Users/zkat/Documents/code/work/npm/node_modules/.bin:/Users/zkat/Documents/code/work/npm/node_modules/npm-lifecycle/node-gyp-bin:/Users/zkat/Documents/code/work/npm/node_modules/.bin:/Users/zkat/Documents/code/work/npm/node_modules/npm-lifecycle/node-gyp-bin:/Users/zkat/Documents/code/work/npm/node_modules/.bin:/Users/zkat/bin:/usr/local/opt/coreutils/libexec/gnubin:/Users/zkat/.cargo/bin:/usr/local/heroku/bin:/usr/local/bin:/Users/zkat/bin:/Applications/Postgres.app/Contents/MacOS/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/local/bin:/opt/local/sbin:/opt/X11/bin
+71 verbose lifecycle @test/whoops@1.0.0~postinstall: CWD: /Users/zkat/Documents/code/work/npm/test/tap/gently-rm-overeager/gently-rm-overeager/node_modules/@test/whoops
+72 silly lifecycle @test/whoops@1.0.0~postinstall: Args: [ '-c', "echo 'nope' && exit 1" ]
+73 silly lifecycle @test/whoops@1.0.0~postinstall: Returned: code: 1 signal: null
+74 info lifecycle @test/whoops@1.0.0~postinstall: Failed to exec postinstall script
+75 timing action:postinstall Completed in 70ms
+76 verbose unlock done using /Users/zkat/Documents/code/work/npm/test/npm_cache/_locks/staging-6ede0a15658ba472.lock for /Users/zkat/Documents/code/work/npm/test/tap/gently-rm-overeager/gently-rm-overeager/node_modules/.staging
+77 timing stage:rollbackFailedOptional Completed in 3ms
+78 timing stage:runTopLevelLifecycles Completed in 163ms
+79 warn enoent ENOENT: no such file or directory, open '/Users/zkat/Documents/code/work/npm/test/tap/gently-rm-overeager/gently-rm-overeager/package.json'
+80 verbose enoent This is related to npm not being able to find a file.
+81 warn gently-rm-overeager No description
+82 warn gently-rm-overeager No repository field.
+83 warn gently-rm-overeager No README data
+84 warn gently-rm-overeager No license field.
+85 verbose stack Error: @test/whoops@1.0.0 postinstall: `echo 'nope' && exit 1`
+85 verbose stack Exit status 1
+85 verbose stack at EventEmitter.<anonymous> (/Users/zkat/Documents/code/work/npm/node_modules/npm-lifecycle/index.js:301:16)
+85 verbose stack at EventEmitter.emit (events.js:188:13)
+85 verbose stack at ChildProcess.<anonymous> (/Users/zkat/Documents/code/work/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
+85 verbose stack at ChildProcess.emit (events.js:188:13)
+85 verbose stack at maybeClose (internal/child_process.js:978:16)
+85 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:265:5)
+86 verbose pkgid @test/whoops@1.0.0
+87 verbose cwd /Users/zkat/Documents/code/work/npm/test/tap/gently-rm-overeager/gently-rm-overeager
+88 verbose Darwin 18.0.0
+89 verbose argv "/usr/local/bin/node" "/Users/zkat/Documents/code/work/npm/bin/npm-cli.js" "install" "--no-save" "../test-whoops-1.0.0.tgz"
+90 verbose node v11.6.0
+91 verbose npm v6.6.0
+92 error code ELIFECYCLE
+93 error errno 1
+94 error @test/whoops@1.0.0 postinstall: `echo 'nope' && exit 1`
+94 error Exit status 1
+95 error Failed at the @test/whoops@1.0.0 postinstall script.
+95 error This is probably not a problem with npm. There is likely additional logging output above.
+96 verbose exit [ 1, true ]
diff --git a/deps/npm/test/npm_cache/anonymous-cli-metrics.json b/deps/npm/test/npm_cache/anonymous-cli-metrics.json
new file mode 100644
index 0000000000..11494d570f
--- /dev/null
+++ b/deps/npm/test/npm_cache/anonymous-cli-metrics.json
@@ -0,0 +1 @@
+{"metricId":"74dc70f8-4d64-41cc-827f-aaa481242c7d","metrics":{"from":"2018-12-10T23:39:04.702Z","to":"2019-01-28T23:28:15.706Z","successfulInstalls":66,"failedInstalls":13}} \ No newline at end of file
diff --git a/deps/npm/test/tap/404-private-registry-scoped.js b/deps/npm/test/tap/404-private-registry-scoped.js
index 48889376ca..f8a8c5b05a 100644
--- a/deps/npm/test/tap/404-private-registry-scoped.js
+++ b/deps/npm/test/tap/404-private-registry-scoped.js
@@ -3,7 +3,7 @@ var path = require('path')
var mkdirp = require('mkdirp')
var rimraf = require('rimraf')
var common = require('../common-tap.js')
-var mr = require('npm-registry-mock')
+var mr = common.fakeRegistry.compat
var server
var testdir = path.join(__dirname, path.basename(__filename, '.js'))
diff --git a/deps/npm/test/tap/404-private-registry.js b/deps/npm/test/tap/404-private-registry.js
index a38fa02c12..da6e446918 100644
--- a/deps/npm/test/tap/404-private-registry.js
+++ b/deps/npm/test/tap/404-private-registry.js
@@ -3,7 +3,7 @@ var path = require('path')
var mkdirp = require('mkdirp')
var rimraf = require('rimraf')
var common = require('../common-tap.js')
-var mr = require('npm-registry-mock')
+var mr = common.fakeRegistry.compat
var server
var packageName = path.basename(__filename, '.js')
diff --git a/deps/npm/test/tap/access.js b/deps/npm/test/tap/access.js
index 4bed4b4b25..6a21ccc8fb 100644
--- a/deps/npm/test/tap/access.js
+++ b/deps/npm/test/tap/access.js
@@ -1,16 +1,18 @@
-var fs = require('fs')
-var path = require('path')
-var mkdirp = require('mkdirp')
-var rimraf = require('rimraf')
-var mr = require('npm-registry-mock')
+'use strict'
-var test = require('tap').test
-var common = require('../common-tap.js')
+const fs = require('fs')
+const path = require('path')
+const mkdirp = require('mkdirp')
+const rimraf = require('rimraf')
+const mr = require('npm-registry-mock')
-var pkg = path.resolve(__dirname, 'access')
-var server
+const test = require('tap').test
+const common = require('../common-tap.js')
-var scoped = {
+const pkg = path.resolve(__dirname, 'access')
+let server
+
+const scoped = {
name: '@scoped/pkg',
version: '1.1.1'
}
@@ -160,19 +162,22 @@ test('npm change access on unscoped package', function (t) {
function (er, code, stdout, stderr) {
t.ok(code, 'exited with Error')
t.matches(
- stderr, /access commands are only accessible for scoped packages/)
+ stderr, /only available for scoped packages/)
t.end()
}
)
})
test('npm access grant read-only', function (t) {
- server.put('/-/team/myorg/myteam/package', {
- permissions: 'read-only',
- package: '@scoped/another'
- }).reply(201, {
- accessChaged: true
+ server.filteringRequestBody((body) => {
+ const data = JSON.parse(body)
+ t.deepEqual(data, {
+ permissions: 'read-only',
+ package: '@scoped/another'
+ }, 'got the right body')
+ return true
})
+ server.put('/-/team/myorg/myteam/package', true).reply(201)
common.npm(
[
'access',
@@ -191,12 +196,15 @@ test('npm access grant read-only', function (t) {
})
test('npm access grant read-write', function (t) {
- server.put('/-/team/myorg/myteam/package', {
- permissions: 'read-write',
- package: '@scoped/another'
- }).reply(201, {
- accessChaged: true
+ server.filteringRequestBody((body) => {
+ const data = JSON.parse(body)
+ t.deepEqual(data, {
+ permissions: 'read-write',
+ package: '@scoped/another'
+ }, 'got the right body')
+ return true
})
+ server.put('/-/team/myorg/myteam/package', true).reply(201)
common.npm(
[
'access',
diff --git a/deps/npm/test/tap/all-package-metadata-cache-stream-unit.js b/deps/npm/test/tap/all-package-metadata-cache-stream-unit.js
index 51be836769..0b4dd0e26d 100644
--- a/deps/npm/test/tap/all-package-metadata-cache-stream-unit.js
+++ b/deps/npm/test/tap/all-package-metadata-cache-stream-unit.js
@@ -1,18 +1,20 @@
'use strict'
require('../common-tap.js')
-var test = require('tap').test
-var mkdirp = require('mkdirp')
-var rimraf = require('rimraf')
-var path = require('path')
-var ms = require('mississippi')
-var Tacks = require('tacks')
-var File = Tacks.File
-var _createCacheEntryStream = require('../../lib/search/all-package-metadata.js')._createCacheEntryStream
+const getStream = require('get-stream')
+const mkdirp = require('mkdirp')
+const path = require('path')
+const rimraf = require('rimraf')
+const Tacks = require('tacks')
+const {test} = require('tap')
-var PKG_DIR = path.resolve(__dirname, 'create-cache-entry-stream')
-var CACHE_DIR = path.resolve(PKG_DIR, 'cache')
+const {File} = Tacks
+
+const _createCacheEntryStream = require('../../lib/search/all-package-metadata.js')._createCacheEntryStream
+
+const PKG_DIR = path.resolve(__dirname, 'create-cache-entry-stream')
+const CACHE_DIR = path.resolve(PKG_DIR, 'cache')
function setup () {
mkdirp.sync(CACHE_DIR)
@@ -22,10 +24,10 @@ function cleanup () {
rimraf.sync(PKG_DIR)
}
-test('createCacheEntryStream basic', function (t) {
+test('createCacheEntryStream basic', t => {
setup()
- var cachePath = path.join(CACHE_DIR, '.cache.json')
- var fixture = new Tacks(File({
+ const cachePath = path.join(CACHE_DIR, '.cache.json')
+ const fixture = new Tacks(File({
'_updated': 1234,
bar: {
name: 'bar',
@@ -37,16 +39,13 @@ test('createCacheEntryStream basic', function (t) {
}
}))
fixture.create(cachePath)
- _createCacheEntryStream(cachePath, function (err, stream, latest) {
- if (err) throw err
+ return _createCacheEntryStream(cachePath, {}).then(({
+ updateStream: stream,
+ updatedLatest: latest
+ }) => {
t.equals(latest, 1234, '`latest` correctly extracted')
t.ok(stream, 'returned a stream')
- var results = []
- stream.on('data', function (pkg) {
- results.push(pkg)
- })
- ms.finished(stream, function (err) {
- if (err) throw err
+ return getStream.array(stream).then(results => {
t.deepEquals(results, [{
name: 'bar',
version: '1.0.0'
@@ -55,82 +54,54 @@ test('createCacheEntryStream basic', function (t) {
version: '1.0.0'
}])
cleanup()
- t.done()
})
})
})
-test('createCacheEntryStream empty cache', function (t) {
+test('createCacheEntryStream empty cache', t => {
setup()
- var cachePath = path.join(CACHE_DIR, '.cache.json')
- var fixture = new Tacks(File({}))
+ const cachePath = path.join(CACHE_DIR, '.cache.json')
+ const fixture = new Tacks(File({}))
fixture.create(cachePath)
- _createCacheEntryStream(cachePath, function (err, stream, latest) {
- t.ok(err, 'returned an error because there was no _updated')
- t.match(err.message, /Empty or invalid stream/, 'useful error message')
- t.notOk(stream, 'no stream returned')
- t.notOk(latest, 'no latest returned')
- cleanup()
- t.done()
- })
+ return _createCacheEntryStream(cachePath, {}).then(
+ () => { throw new Error('should not succeed') },
+ err => {
+ t.ok(err, 'returned an error because there was no _updated')
+ t.match(err.message, /Empty or invalid stream/, 'useful error message')
+ cleanup()
+ }
+ )
})
-test('createCacheEntryStream no entry cache', function (t) {
+test('createCacheEntryStream no entry cache', t => {
setup()
- var cachePath = path.join(CACHE_DIR, '.cache.json')
- var fixture = new Tacks(File({
+ const cachePath = path.join(CACHE_DIR, '.cache.json')
+ const fixture = new Tacks(File({
'_updated': 1234
}))
fixture.create(cachePath)
- _createCacheEntryStream(cachePath, function (err, stream, latest) {
- if (err) throw err
+ return _createCacheEntryStream(cachePath, {}).then(({
+ updateStream: stream,
+ updatedLatest: latest
+ }) => {
t.equals(latest, 1234, '`latest` correctly extracted')
t.ok(stream, 'returned a stream')
- var results = []
- stream.on('data', function (pkg) {
- results.push(pkg)
- })
- ms.finished(stream, function (err) {
- if (err) throw err
+ return getStream.array(stream).then(results => {
t.deepEquals(results, [], 'no results')
cleanup()
- t.done()
})
})
})
-test('createCacheEntryStream missing cache', function (t) {
+test('createCacheEntryStream missing cache', t => {
setup()
- var cachePath = path.join(CACHE_DIR, '.cache.json')
- _createCacheEntryStream(cachePath, function (err, stream, latest) {
- t.ok(err, 'returned an error because there was no cache')
- t.equals(err.code, 'ENOENT', 'useful error message')
- t.notOk(stream, 'no stream returned')
- t.notOk(latest, 'no latest returned')
- cleanup()
- t.done()
- })
-})
-
-test('createCacheEntryStream bad syntax', function (t) {
- setup()
- var cachePath = path.join(CACHE_DIR, '.cache.json')
- var fixture = new Tacks(File('{"_updated": 1234, uh oh'))
- fixture.create(cachePath)
- _createCacheEntryStream(cachePath, function (err, stream, latest) {
- if (err) throw err
- t.equals(latest, 1234, '`latest` correctly extracted')
- t.ok(stream, 'returned a stream')
- var results = []
- stream.on('data', function (pkg) {
- results.push(pkg)
- })
- ms.finished(stream, function (err) {
- t.ok(err, 'stream errored')
- t.match(err.message, /Invalid JSON/i, 'explains there\'s a syntax error')
- t.deepEquals(results, [], 'no results')
+ const cachePath = path.join(CACHE_DIR, '.cache.json')
+ return _createCacheEntryStream(cachePath, {}).then(
+ () => { throw new Error('should not succeed') },
+ err => {
+ t.ok(err, 'returned an error because there was no cache')
+ t.equals(err.code, 'ENOENT', 'useful error message')
cleanup()
- t.done()
- })
- })
+ }
+ )
})
diff --git a/deps/npm/test/tap/all-package-metadata-entry-stream-unit.js b/deps/npm/test/tap/all-package-metadata-entry-stream-unit.js
index 0e02f84824..4e916229cd 100644
--- a/deps/npm/test/tap/all-package-metadata-entry-stream-unit.js
+++ b/deps/npm/test/tap/all-package-metadata-entry-stream-unit.js
@@ -1,23 +1,23 @@
'use strict'
-var common = require('../common-tap.js')
-var npm = require('../../')
-var test = require('tap').test
-var mkdirp = require('mkdirp')
-var rimraf = require('rimraf')
-var path = require('path')
-var mr = require('npm-registry-mock')
-var ms = require('mississippi')
-var Tacks = require('tacks')
-var File = Tacks.File
+const common = require('../common-tap.js')
+const getStream = require('get-stream')
+const mkdirp = require('mkdirp')
+const mr = require('npm-registry-mock')
+const npm = require('../../')
+const path = require('path')
+const rimraf = require('rimraf')
+const Tacks = require('tacks')
+const test = require('tap').test
-var _createEntryStream = require('../../lib/search/all-package-metadata.js')._createEntryStream
+const {File} = Tacks
-var ALL = common.registry + '/-/all'
-var PKG_DIR = path.resolve(__dirname, 'create-entry-update-stream')
-var CACHE_DIR = path.resolve(PKG_DIR, 'cache')
+const _createEntryStream = require('../../lib/search/all-package-metadata.js')._createEntryStream
-var server
+const PKG_DIR = path.resolve(__dirname, 'create-entry-update-stream')
+const CACHE_DIR = path.resolve(PKG_DIR, 'cache')
+
+let server
function setup () {
mkdirp.sync(CACHE_DIR)
@@ -27,10 +27,11 @@ function cleanup () {
rimraf.sync(PKG_DIR)
}
-test('setup', function (t) {
- mr({port: common.port, throwOnUnmatched: true}, function (err, s) {
+test('setup', t => {
+ cleanup()
+ mr({port: common.port, throwOnUnmatched: true}, (err, s) => {
t.ifError(err, 'registry mocked successfully')
- npm.load({ cache: CACHE_DIR, registry: common.registry }, function (err) {
+ npm.load({ cache: CACHE_DIR, registry: common.registry }, err => {
t.ifError(err, 'npm loaded successfully')
server = s
t.pass('all set up')
@@ -39,10 +40,10 @@ test('setup', function (t) {
})
})
-test('createEntryStream full request', function (t) {
+test('createEntryStream full request', t => {
setup()
- var cachePath = path.join(CACHE_DIR, '.cache.json')
- var dataTime = +(new Date())
+ const cachePath = path.join(CACHE_DIR, '.cache.json')
+ const dataTime = +(new Date())
server.get('/-/all').once().reply(200, {
'_updated': dataTime,
'bar': { name: 'bar', version: '1.0.0' },
@@ -50,37 +51,36 @@ test('createEntryStream full request', function (t) {
}, {
date: 1234 // should never be used.
})
- _createEntryStream(cachePath, ALL, {}, 600, function (err, stream, latest, newEntries) {
- if (err) throw err
+ return _createEntryStream(cachePath, 600, {
+ registry: common.registry
+ }).then(({
+ entryStream: stream,
+ latest,
+ newEntries
+ }) => {
t.equals(latest, dataTime, '`latest` correctly extracted')
t.ok(newEntries, 'new entries need to be written to cache')
t.ok(stream, 'returned a stream')
- var results = []
- stream.on('data', function (pkg) {
- results.push(pkg)
- })
- ms.finished(stream, function (err) {
- if (err) throw err
- t.deepEquals(results, [{
- name: 'bar',
- version: '1.0.0'
- }, {
- name: 'foo',
- version: '1.0.0'
- }])
- server.done()
- cleanup()
- t.end()
- })
+ return getStream.array(stream)
+ }).then(results => {
+ t.deepEquals(results, [{
+ name: 'bar',
+ version: '1.0.0'
+ }, {
+ name: 'foo',
+ version: '1.0.0'
+ }])
+ server.done()
+ cleanup()
})
})
test('createEntryStream cache only', function (t) {
setup()
- var now = Date.now()
- var cacheTime = now - 100000
- var cachePath = path.join(CACHE_DIR, '.cache.json')
- var fixture = new Tacks(File({
+ const now = Date.now()
+ const cacheTime = now - 100000
+ const cachePath = path.join(CACHE_DIR, '.cache.json')
+ const fixture = new Tacks(File({
'_updated': cacheTime,
bar: { name: 'bar', version: '1.0.0' },
cool: { name: 'cool', version: '1.0.0' },
@@ -88,33 +88,32 @@ test('createEntryStream cache only', function (t) {
other: { name: 'other', version: '1.0.0' }
}))
fixture.create(cachePath)
- _createEntryStream(cachePath, ALL, {}, 600, function (err, stream, latest, newEntries) {
- if (err) throw err
+ return _createEntryStream(cachePath, 600, {
+ registry: common.registry
+ }).then(({
+ entryStream: stream,
+ latest,
+ newEntries
+ }) => {
t.equals(latest, cacheTime, '`latest` is cache time')
t.ok(stream, 'returned a stream')
t.notOk(newEntries, 'cache only means no need to write to cache')
- var results = []
- stream.on('data', function (pkg) {
- results.push(pkg)
- })
- ms.finished(stream, function (err) {
- t.ifError(err, 'stream finished without error')
- t.deepEquals(
- results.map(function (pkg) { return pkg.name }),
- ['bar', 'cool', 'foo', 'other'],
- 'packages deduped and sorted'
- )
- server.done()
- cleanup()
- t.end()
- })
+ return getStream.array(stream)
+ }).then(results => {
+ t.deepEquals(
+ results.map(function (pkg) { return pkg.name }),
+ ['bar', 'cool', 'foo', 'other'],
+ 'packages deduped and sorted'
+ )
+ server.done()
+ cleanup()
})
})
test('createEntryStream merged stream', function (t) {
setup()
- var now = Date.now()
- var cacheTime = now - 6000000
+ const now = Date.now()
+ const cacheTime = now - 6000000
server.get('/-/all/since?stale=update_after&startkey=' + cacheTime).once().reply(200, {
'bar': { name: 'bar', version: '2.0.0' },
'car': { name: 'car', version: '1.0.0' },
@@ -122,8 +121,8 @@ test('createEntryStream merged stream', function (t) {
}, {
date: (new Date(now)).toISOString()
})
- var cachePath = path.join(CACHE_DIR, '.cache.json')
- var fixture = new Tacks(File({
+ const cachePath = path.join(CACHE_DIR, '.cache.json')
+ const fixture = new Tacks(File({
'_updated': cacheTime,
bar: { name: 'bar', version: '1.0.0' },
cool: { name: 'cool', version: '1.0.0' },
@@ -131,50 +130,54 @@ test('createEntryStream merged stream', function (t) {
other: { name: 'other', version: '1.0.0' }
}))
fixture.create(cachePath)
- _createEntryStream(cachePath, ALL, {}, 600, function (err, stream, latest, newEntries) {
- if (err) throw err
+ return _createEntryStream(cachePath, 600, {
+ registry: common.registry
+ }).then(({
+ entryStream: stream,
+ latest,
+ newEntries
+ }) => {
t.equals(latest, now, '`latest` correctly extracted from header')
t.ok(stream, 'returned a stream')
t.ok(newEntries, 'cache update means entries should be written')
- var results = []
- stream.on('data', function (pkg) {
- results.push(pkg)
- })
- ms.finished(stream, function (err) {
- t.ifError(err, 'stream finished without error')
- t.deepEquals(
- results.map(function (pkg) { return pkg.name }),
- ['bar', 'car', 'cool', 'foo', 'other'],
- 'packages deduped and sorted'
- )
- t.deepEquals(results[0], {
- name: 'bar',
- version: '2.0.0'
- }, 'update stream version wins on dedupe')
- t.deepEquals(results[3], {
- name: 'foo',
- version: '1.0.0'
- }, 'update stream version wins on dedupe even when the newer one has a lower semver.')
- server.done()
- cleanup()
- t.end()
- })
+ return getStream.array(stream)
+ }).then(results => {
+ t.deepEquals(
+ results.map(function (pkg) { return pkg.name }),
+ ['bar', 'car', 'cool', 'foo', 'other'],
+ 'packages deduped and sorted'
+ )
+ t.deepEquals(results[0], {
+ name: 'bar',
+ version: '2.0.0'
+ }, 'update stream version wins on dedupe')
+ t.deepEquals(results[3], {
+ name: 'foo',
+ version: '1.0.0'
+ }, 'update stream version wins on dedupe even when the newer one has a lower semver.')
+ server.done()
+ cleanup()
})
})
test('createEntryStream no sources', function (t) {
setup()
- var cachePath = path.join(CACHE_DIR, '.cache.json')
+ const cachePath = path.join(CACHE_DIR, '.cache.json')
server.get('/-/all').once().reply(404, {})
- _createEntryStream(cachePath, ALL, {}, 600, function (err, stream, latest, newEntries) {
+ return _createEntryStream(cachePath, 600, {
+ registry: common.registry
+ }).then(({
+ entryStream: stream,
+ latest,
+ newEntries
+ }) => {
+ throw new Error('should not succeed')
+ }, err => {
t.ok(err, 'no sources, got an error')
- t.notOk(stream, 'no stream returned')
- t.notOk(latest, 'no latest returned')
- t.notOk(newEntries, 'no entries need to be written')
t.match(err.message, /No search sources available/, 'useful error message')
+ }).then(() => {
server.done()
cleanup()
- t.end()
})
})
diff --git a/deps/npm/test/tap/all-package-metadata-update-stream-unit.js b/deps/npm/test/tap/all-package-metadata-update-stream-unit.js
index b9cf337eb9..2c08ac347e 100644
--- a/deps/npm/test/tap/all-package-metadata-update-stream-unit.js
+++ b/deps/npm/test/tap/all-package-metadata-update-stream-unit.js
@@ -1,17 +1,16 @@
'use strict'
-var common = require('../common-tap.js')
-var npm = require('../../')
-var test = require('tap').test
-var mkdirp = require('mkdirp')
-var rimraf = require('rimraf')
-var path = require('path')
-var mr = require('npm-registry-mock')
-var ms = require('mississippi')
+const common = require('../common-tap.js')
+const getStream = require('get-stream')
+const npm = require('../../')
+const test = require('tap').test
+const mkdirp = require('mkdirp')
+const rimraf = require('rimraf')
+const path = require('path')
+const mr = require('npm-registry-mock')
var _createEntryUpdateStream = require('../../lib/search/all-package-metadata.js')._createEntryUpdateStream
-var ALL = common.registry + '/-/all'
var PKG_DIR = path.resolve(__dirname, 'create-entry-update-stream')
var CACHE_DIR = path.resolve(PKG_DIR, 'cache')
@@ -46,27 +45,25 @@ test('createEntryUpdateStream full request', function (t) {
}, {
date: Date.now() // should never be used.
})
- _createEntryUpdateStream(ALL, {}, 600, 0, function (err, stream, latest) {
- if (err) throw err
+ return _createEntryUpdateStream(600, 0, {
+ registry: common.registry
+ }).then(({
+ updateStream: stream,
+ updatedLatest: latest
+ }) => {
t.equals(latest, 1234, '`latest` correctly extracted')
t.ok(stream, 'returned a stream')
- var results = []
- stream.on('data', function (pkg) {
- results.push(pkg)
- })
- ms.finished(stream, function (err) {
- if (err) throw err
- t.deepEquals(results, [{
- name: 'bar',
- version: '1.0.0'
- }, {
- name: 'foo',
- version: '1.0.0'
- }])
- server.done()
- cleanup()
- t.end()
- })
+ return getStream.array(stream)
+ }).then(results => {
+ t.deepEquals(results, [{
+ name: 'bar',
+ version: '1.0.0'
+ }, {
+ name: 'foo',
+ version: '1.0.0'
+ }])
+ server.done()
+ cleanup()
})
})
@@ -79,27 +76,25 @@ test('createEntryUpdateStream partial update', function (t) {
}, {
date: (new Date(now)).toISOString()
})
- _createEntryUpdateStream(ALL, {}, 600, 1234, function (err, stream, latest) {
- if (err) throw err
+ return _createEntryUpdateStream(600, 1234, {
+ registry: common.registry
+ }).then(({
+ updateStream: stream,
+ updatedLatest: latest
+ }) => {
t.equals(latest, now, '`latest` correctly extracted from header')
t.ok(stream, 'returned a stream')
- var results = []
- stream.on('data', function (pkg) {
- results.push(pkg)
- })
- ms.finished(stream, function (err) {
- if (err) throw err
- t.deepEquals(results, [{
- name: 'bar',
- version: '1.0.0'
- }, {
- name: 'foo',
- version: '1.0.0'
- }])
- server.done()
- cleanup()
- t.end()
- })
+ return getStream.array(stream)
+ }).then(results => {
+ t.deepEquals(results, [{
+ name: 'bar',
+ version: '1.0.0'
+ }, {
+ name: 'foo',
+ version: '1.0.0'
+ }])
+ server.done()
+ cleanup()
})
})
@@ -113,27 +108,26 @@ test('createEntryUpdateStream authed request', function (t) {
}, {
date: Date.now() // should never be used.
})
- _createEntryUpdateStream(ALL, { token: token }, 600, 0, function (err, stream, latest) {
- if (err) throw err
+ return _createEntryUpdateStream(600, 0, {
+ registry: common.registry,
+ token
+ }).then(({
+ updateStream: stream,
+ updatedLatest: latest
+ }) => {
t.equals(latest, 1234, '`latest` correctly extracted')
t.ok(stream, 'returned a stream')
- var results = []
- stream.on('data', function (pkg) {
- results.push(pkg)
- })
- ms.finished(stream, function (err) {
- if (err) throw err
- t.deepEquals(results, [{
- name: 'bar',
- version: '1.0.0'
- }, {
- name: 'foo',
- version: '1.0.0'
- }])
- server.done()
- cleanup()
- t.end()
- })
+ return getStream.array(stream)
+ }).then(results => {
+ t.deepEquals(results, [{
+ name: 'bar',
+ version: '1.0.0'
+ }, {
+ name: 'foo',
+ version: '1.0.0'
+ }])
+ server.done()
+ cleanup()
})
})
@@ -143,14 +137,17 @@ test('createEntryUpdateStream bad auth', function (t) {
server.get('/-/all', { authorization: 'Bearer ' + token }).once().reply(401, {
error: 'unauthorized search request'
})
- _createEntryUpdateStream(ALL, { token: token }, 600, 0, function (err, stream, latest) {
+ return _createEntryUpdateStream(600, 0, {
+ registry: common.registry,
+ token
+ }).then(() => {
+ throw new Error('should not succeed')
+ }, err => {
t.ok(err, 'got an error from auth failure')
- t.notOk(stream, 'no stream returned')
- t.notOk(latest, 'no latest returned')
t.match(err, /unauthorized/, 'failure message from request used')
+ }).then(() => {
server.done()
cleanup()
- t.end()
})
})
@@ -158,8 +155,12 @@ test('createEntryUpdateStream not stale', function (t) {
setup()
var now = Date.now()
var staleness = 600
- _createEntryUpdateStream(ALL, {}, staleness, now, function (err, stream, latest) {
- t.ifError(err, 'completed successfully')
+ return _createEntryUpdateStream(staleness, now, {
+ registry: common.registry
+ }).then(({
+ updateStream: stream,
+ updatedLatest: latest
+ }) => {
t.notOk(stream, 'no stream returned')
t.notOk(latest, 'no latest returned')
server.done()
diff --git a/deps/npm/test/tap/all-package-metadata-write-stream-unit.js b/deps/npm/test/tap/all-package-metadata-write-stream-unit.js
index 410f7f9e9d..94bb7413f1 100644
--- a/deps/npm/test/tap/all-package-metadata-write-stream-unit.js
+++ b/deps/npm/test/tap/all-package-metadata-write-stream-unit.js
@@ -1,18 +1,19 @@
'use strict'
-var common = require('../common-tap.js')
-var npm = require('../../')
-var test = require('tap').test
-var mkdirp = require('mkdirp')
-var rimraf = require('rimraf')
-var path = require('path')
-var fs = require('fs')
-var ms = require('mississippi')
+const common = require('../common-tap.js')
+const getStream = require('get-stream')
+const npm = require('../../')
+const test = require('tap').test
+const mkdirp = require('mkdirp')
+const rimraf = require('rimraf')
+const path = require('path')
+const fs = require('fs')
+const ms = require('mississippi')
-var _createCacheWriteStream = require('../../lib/search/all-package-metadata.js')._createCacheWriteStream
+const _createCacheWriteStream = require('../../lib/search/all-package-metadata.js')._createCacheWriteStream
-var PKG_DIR = path.resolve(__dirname, 'create-cache-write-stream')
-var CACHE_DIR = path.resolve(PKG_DIR, 'cache')
+const PKG_DIR = path.resolve(__dirname, 'create-cache-write-stream')
+const CACHE_DIR = path.resolve(PKG_DIR, 'cache')
function setup () {
mkdirp.sync(CACHE_DIR)
@@ -46,60 +47,54 @@ test('createCacheEntryStream basic', function (t) {
{ name: 'foo', version: '1.0.0' }
]
var srcStream = fromArray(src)
- _createCacheWriteStream(cachePath, latest, function (err, stream) {
- if (err) throw err
+ return _createCacheWriteStream(cachePath, latest, {
+ cache: CACHE_DIR
+ }).then(stream => {
t.ok(stream, 'returned a stream')
stream = ms.pipeline.obj(srcStream, stream)
- var results = []
- stream.on('data', function (pkg) {
- results.push(pkg)
- })
- ms.finished(stream, function (err) {
- if (err) throw err
- t.deepEquals(results, [{
+ return getStream.array(stream)
+ }).then(results => {
+ t.deepEquals(results, [{
+ name: 'bar',
+ version: '1.0.0'
+ }, {
+ name: 'foo',
+ version: '1.0.0'
+ }])
+ var fileData = JSON.parse(fs.readFileSync(cachePath))
+ t.ok(fileData, 'cache contents written to the right file')
+ t.deepEquals(fileData, {
+ '_updated': latest,
+ bar: {
name: 'bar',
version: '1.0.0'
- }, {
+ },
+ foo: {
name: 'foo',
version: '1.0.0'
- }])
- var fileData = JSON.parse(fs.readFileSync(cachePath))
- t.ok(fileData, 'cache contents written to the right file')
- t.deepEquals(fileData, {
- '_updated': latest,
- bar: {
- name: 'bar',
- version: '1.0.0'
- },
- foo: {
- name: 'foo',
- version: '1.0.0'
- }
- }, 'cache contents based on what was written')
- cleanup()
- t.done()
- })
+ }
+ }, 'cache contents based on what was written')
+ cleanup()
})
})
test('createCacheEntryStream no entries', function (t) {
- cleanup() // wipe out the cache dir
- var cachePath = path.join(CACHE_DIR, '.cache.json')
+ setup()
+ const cachePath = path.join(CACHE_DIR, '.cache.json')
var latest = 12345
- var src = []
- var srcStream = fromArray(src)
- _createCacheWriteStream(cachePath, latest, function (err, stream) {
- if (err) throw err
+ const src = []
+ const srcStream = fromArray(src)
+ return _createCacheWriteStream(cachePath, latest, {
+ cache: CACHE_DIR
+ }).then(stream => {
t.ok(stream, 'returned a stream')
stream = ms.pipeline.obj(srcStream, stream)
stream.resume()
- ms.finished(stream, function (err) {
- if (err) throw err
- var fileData = JSON.parse(fs.readFileSync(cachePath))
- t.ok(fileData, 'cache file exists and has stuff in it')
- cleanup()
- t.done()
- })
+ return getStream(stream)
+ }).then(() => {
+ const fileData = JSON.parse(fs.readFileSync(cachePath))
+ t.ok(fileData, 'cache file exists and has stuff in it')
+ cleanup()
})
})
@@ -109,22 +104,19 @@ test('createCacheEntryStream missing cache dir', function (t) {
var latest = 12345
var src = []
var srcStream = fromArray(src)
- _createCacheWriteStream(cachePath, latest, function (err, stream) {
- if (err) throw err
+ return _createCacheWriteStream(cachePath, latest, {
+ cache: CACHE_DIR
+ }).then(stream => {
t.ok(stream, 'returned a stream')
stream = ms.pipeline.obj(srcStream, stream)
- stream.on('data', function (pkg) {
- t.notOk(pkg, 'stream should not have output any data')
- })
- ms.finished(stream, function (err) {
- if (err) throw err
- var fileData = JSON.parse(fs.readFileSync(cachePath))
- t.ok(fileData, 'cache contents written to the right file')
- t.deepEquals(fileData, {
- '_updated': latest
- }, 'cache still contains `_updated`')
- cleanup()
- t.done()
- })
+ return getStream.array(stream)
+ }).then(res => {
+ t.deepEqual(res, [], 'no data returned')
+ var fileData = JSON.parse(fs.readFileSync(cachePath))
+ t.ok(fileData, 'cache contents written to the right file')
+ t.deepEquals(fileData, {
+ '_updated': latest
+ }, 'cache still contains `_updated`')
+ cleanup()
})
})
diff --git a/deps/npm/test/tap/all-package-metadata.js b/deps/npm/test/tap/all-package-metadata.js
index 9b60822e4e..99d3fa26c5 100644
--- a/deps/npm/test/tap/all-package-metadata.js
+++ b/deps/npm/test/tap/all-package-metadata.js
@@ -1,26 +1,26 @@
'use strict'
-var common = require('../common-tap.js')
-var npm = require('../../')
-var test = require('tap').test
-var mkdirp = require('mkdirp')
-var rimraf = require('rimraf')
-var path = require('path')
-var fs = require('fs')
-var cacheFile = require('npm-cache-filename')
-var mr = require('npm-registry-mock')
-var ms = require('mississippi')
-var Tacks = require('tacks')
-var File = Tacks.File
+const common = require('../common-tap.js')
+const npm = require('../../')
+const test = require('tap').test
+const mkdirp = require('mkdirp')
+const rimraf = require('rimraf')
+const path = require('path')
+const fs = require('fs')
+const cacheFile = require('npm-cache-filename')
+const mr = require('npm-registry-mock')
+const ms = require('mississippi')
+const Tacks = require('tacks')
+const File = Tacks.File
-var allPackageMetadata = require('../../lib/search/all-package-metadata.js')
+const allPackageMetadata = require('../../lib/search/all-package-metadata.js')
-var PKG_DIR = path.resolve(__dirname, 'update-index')
-var CACHE_DIR = path.resolve(PKG_DIR, 'cache')
-var cacheBase
-var cachePath
+const PKG_DIR = path.resolve(__dirname, path.basename(__filename, '.js'), 'update-index')
+const CACHE_DIR = path.resolve(PKG_DIR, 'cache', '_cacache')
+let cacheBase
+let cachePath
-var server
+let server
function setup () {
mkdirp.sync(cacheBase)
@@ -33,9 +33,9 @@ function cleanup () {
test('setup', function (t) {
mr({port: common.port, throwOnUnmatched: true}, function (err, s) {
t.ifError(err, 'registry mocked successfully')
- npm.load({ cache: CACHE_DIR, registry: common.registry }, function (err) {
+ npm.load({ cache: path.dirname(CACHE_DIR), registry: common.registry }, function (err) {
t.ifError(err, 'npm loaded successfully')
- npm.config.set('cache', CACHE_DIR)
+ npm.config.set('cache', path.dirname(CACHE_DIR))
cacheBase = cacheFile(npm.config.get('cache'))(common.registry + '/-/all')
cachePath = path.join(cacheBase, '.cache.json')
server = s
@@ -55,7 +55,11 @@ test('allPackageMetadata full request', function (t) {
}, {
date: updated
})
- var stream = allPackageMetadata(600)
+ var stream = allPackageMetadata({
+ cache: CACHE_DIR,
+ registry: common.registry,
+ staleness: 600
+ })
t.ok(stream, 'returned a stream')
var results = []
stream.on('data', function (pkg) {
@@ -101,7 +105,11 @@ test('allPackageMetadata cache only', function (t) {
}
var fixture = new Tacks(File(cacheContents))
fixture.create(cachePath)
- var stream = allPackageMetadata(10000000)
+ var stream = allPackageMetadata({
+ cache: CACHE_DIR,
+ registry: common.registry,
+ staleness: 10000000
+ })
t.ok(stream, 'returned a stream')
var results = []
stream.on('data', function (pkg) {
@@ -143,7 +151,11 @@ test('createEntryStream merged stream', function (t) {
other: { name: 'other', version: '1.0.0' }
}))
fixture.create(cachePath)
- var stream = allPackageMetadata(600)
+ var stream = allPackageMetadata({
+ cache: CACHE_DIR,
+ registry: common.registry,
+ staleness: 600
+ })
t.ok(stream, 'returned a stream')
var results = []
stream.on('data', function (pkg) {
@@ -184,7 +196,11 @@ test('createEntryStream merged stream', function (t) {
test('allPackageMetadata no sources', function (t) {
setup()
server.get('/-/all').once().reply(404, {})
- var stream = allPackageMetadata(600)
+ var stream = allPackageMetadata({
+ cache: CACHE_DIR,
+ registry: common.registry,
+ staleness: 600
+ })
ms.finished(stream, function (err) {
t.ok(err, 'no sources, got an error')
t.match(err.message, /No search sources available/, 'useful error message')
diff --git a/deps/npm/test/tap/cache-add-unpublished.js b/deps/npm/test/tap/cache-add-unpublished.js
index 8966e43ae4..0e8a9de8bf 100644
--- a/deps/npm/test/tap/cache-add-unpublished.js
+++ b/deps/npm/test/tap/cache-add-unpublished.js
@@ -18,7 +18,7 @@ test('cache add', function (t) {
if (er) throw er
t.ok(c, 'got non-zero exit code')
t.equal(so, '', 'nothing printed to stdout')
- t.similar(se, /404 Not Found: superfoo/, 'got expected error')
+ t.similar(se, /404 Not Found.*superfoo/, 'got expected error')
s.close()
t.end()
}
diff --git a/deps/npm/test/tap/config-meta.js b/deps/npm/test/tap/config-meta.js
index 735c161fb8..97918b8897 100644
--- a/deps/npm/test/tap/config-meta.js
+++ b/deps/npm/test/tap/config-meta.js
@@ -110,25 +110,26 @@ test('check configs', function (t) {
}
}
- for (var c2 in DOC) {
- if (c2 !== 'versions' && c2 !== 'version' && c2 !== 'init.version' && c2 !== 'ham-it-up') {
- t.ok(CONFS[c2], 'config in doc should be used somewhere ' + c2)
- t.ok(types.indexOf(c2) !== -1, 'should be defined in npmconf ' + c2)
- t.ok(defaults.indexOf(c2) !== -1, 'should have default in npmconf ' + c2)
- }
- }
+ // TODO - needs better figgy-pudding introspection
+ // for (var c2 in DOC) {
+ // if (c2 !== 'versions' && c2 !== 'version' && c2 !== 'init.version' && c2 !== 'ham-it-up') {
+ // t.ok(CONFS[c2], 'config in doc should be used somewhere ' + c2)
+ // t.ok(types.indexOf(c2) !== -1, 'should be defined in npmconf ' + c2)
+ // t.ok(defaults.indexOf(c2) !== -1, 'should have default in npmconf ' + c2)
+ // }
+ // }
types.forEach(function (c) {
if (!c.match(/^_/) && c !== 'argv' && !c.match(/^versions?$/) && c !== 'ham-it-up') {
t.ok(DOC[c], 'defined type should be documented ' + c)
- t.ok(CONFS[c], 'defined type should be used ' + c)
+ // t.ok(CONFS[c], 'defined type should be used ' + c)
}
})
defaults.forEach(function (c) {
if (!c.match(/^_/) && c !== 'argv' && !c.match(/^versions?$/) && c !== 'ham-it-up') {
t.ok(DOC[c], 'defaulted type should be documented ' + c)
- t.ok(CONFS[c], 'defaulted type should be used ' + c)
+ // t.ok(CONFS[c], 'defaulted type should be used ' + c)
}
})
diff --git a/deps/npm/test/tap/dist-tag.js b/deps/npm/test/tap/dist-tag.js
index 651639f32a..3631a598e9 100644
--- a/deps/npm/test/tap/dist-tag.js
+++ b/deps/npm/test/tap/dist-tag.js
@@ -20,10 +20,16 @@ function mocks (server) {
server.get('/-/package/@scoped%2fpkg/dist-tags')
.reply(200, { latest: '1.0.0', a: '0.0.1', b: '0.5.0' })
+ server.get('/-/package/@scoped%2fpkg/dist-tags')
+ .reply(200, { latest: '1.0.0', a: '0.0.1', b: '0.5.0' })
+
// ls named package
server.get('/-/package/@scoped%2fanother/dist-tags')
.reply(200, { latest: '2.0.0', a: '0.0.2', b: '0.6.0' })
+ server.get('/-/package/@scoped%2fanother/dist-tags')
+ .reply(200, { latest: '2.0.0', a: '0.0.2', b: '0.6.0' })
+
// add c
server.get('/-/package/@scoped%2fanother/dist-tags')
.reply(200, { latest: '2.0.0', a: '0.0.2', b: '0.6.0' })
@@ -83,6 +89,25 @@ test('npm dist-tags ls in current package', function (t) {
)
})
+test('npm dist-tags ls default in current package', function (t) {
+ common.npm(
+ [
+ 'dist-tags',
+ '--registry', common.registry,
+ '--loglevel', 'silent'
+ ],
+ { cwd: pkg },
+ function (er, code, stdout, stderr) {
+ t.ifError(er, 'npm access')
+ t.notOk(code, 'exited OK')
+ t.notOk(stderr, 'no error output')
+ t.equal(stdout, 'a: 0.0.1\nb: 0.5.0\nlatest: 1.0.0\n')
+
+ t.end()
+ }
+ )
+})
+
test('npm dist-tags ls on named package', function (t) {
common.npm(
[
@@ -103,6 +128,26 @@ test('npm dist-tags ls on named package', function (t) {
)
})
+test('npm dist-tags ls default, named package', function (t) {
+ common.npm(
+ [
+ 'dist-tags',
+ '@scoped/another',
+ '--registry', common.registry,
+ '--loglevel', 'silent'
+ ],
+ { cwd: pkg },
+ function (er, code, stdout, stderr) {
+ t.ifError(er, 'npm access')
+ t.notOk(code, 'exited OK')
+ t.notOk(stderr, 'no error output')
+ t.equal(stdout, 'a: 0.0.2\nb: 0.6.0\nlatest: 2.0.0\n')
+
+ t.end()
+ }
+ )
+})
+
test('npm dist-tags add @scoped/another@7.7.7 c', function (t) {
common.npm(
[
diff --git a/deps/npm/test/tap/get.js b/deps/npm/test/tap/get.js
deleted file mode 100644
index c939ed071e..0000000000
--- a/deps/npm/test/tap/get.js
+++ /dev/null
@@ -1,103 +0,0 @@
-var common = require('../common-tap.js')
-var test = require('tap').test
-var npm = require('../../')
-var rimraf = require('rimraf')
-var path = require('path')
-var mr = require('npm-registry-mock')
-
-function nop () {}
-
-var URI = 'https://npm.registry:8043/rewrite'
-var TIMEOUT = 3600
-var FOLLOW = false
-var STALE_OK = true
-var TOKEN = 'lolbutts'
-var AUTH = { token: TOKEN }
-var PARAMS = {
- timeout: TIMEOUT,
- follow: FOLLOW,
- staleOk: STALE_OK,
- auth: AUTH
-}
-var PKG_DIR = path.resolve(__dirname, 'get-basic')
-var BIGCO_SAMPLE = {
- name: '@bigco/sample',
- version: '1.2.3'
-}
-
-// mock server reference
-var server
-
-var mocks = {
- 'get': {
- '/@bigco%2fsample/1.2.3': [200, BIGCO_SAMPLE]
- }
-}
-
-test('setup', function (t) {
- mr({port: common.port, mocks: mocks}, function (er, s) {
- t.ifError(er)
- npm.load({registry: common.registry}, function (er) {
- t.ifError(er)
- server = s
- t.end()
- })
- })
-})
-
-test('get call contract', function (t) {
- t.throws(function () {
- npm.registry.get(undefined, PARAMS, nop)
- }, 'requires a URI')
-
- t.throws(function () {
- npm.registry.get([], PARAMS, nop)
- }, 'requires URI to be a string')
-
- t.throws(function () {
- npm.registry.get(URI, undefined, nop)
- }, 'requires params object')
-
- t.throws(function () {
- npm.registry.get(URI, '', nop)
- }, 'params must be object')
-
- t.throws(function () {
- npm.registry.get(URI, PARAMS, undefined)
- }, 'requires callback')
-
- t.throws(function () {
- npm.registry.get(URI, PARAMS, 'callback')
- }, 'callback must be function')
-
- t.end()
-})
-
-test('basic request', function (t) {
- t.plan(6)
-
- var versioned = common.registry + '/underscore/1.3.3'
- npm.registry.get(versioned, PARAMS, function (er, data) {
- t.ifError(er, 'loaded specified version underscore data')
- t.equal(data.version, '1.3.3')
- })
-
- var rollup = common.registry + '/underscore'
- npm.registry.get(rollup, PARAMS, function (er, data) {
- t.ifError(er, 'loaded all metadata')
- t.deepEqual(data.name, 'underscore')
- })
-
- var scoped = common.registry + '/@bigco%2fsample/1.2.3'
- npm.registry.get(scoped, PARAMS, function (er, data) {
- t.ifError(er, 'loaded all metadata')
- t.equal(data.name, '@bigco/sample')
- })
-})
-
-test('cleanup', function (t) {
- server.close()
- rimraf.sync(PKG_DIR)
-
- t.end()
-})
diff --git a/deps/npm/test/tap/install-dep-classification.js b/deps/npm/test/tap/install-dep-classification.js
new file mode 100644
index 0000000000..153a7f3927
--- /dev/null
+++ b/deps/npm/test/tap/install-dep-classification.js
@@ -0,0 +1,167 @@
+'use strict'
+const path = require('path')
+const test = require('tap').test
+const Tacks = require('tacks')
+const File = Tacks.File
+const Dir = Tacks.Dir
+const common = require('../common-tap.js')
+const fs = require('fs')
+
+const basedir = path.join(__dirname, path.basename(__filename, '.js'))
+const testdir = path.join(basedir, 'testdir')
+const cachedir = path.join(basedir, 'cache')
+const globaldir = path.join(basedir, 'global')
+const tmpdir = path.join(basedir, 'tmp')
+const optionaldir = path.join(testdir, 'optional')
+const devdir = path.join(testdir, 'dev')
+
+const env = common.newEnv().extend({
+ npm_config_cache: cachedir,
+ npm_config_tmp: tmpdir,
+ npm_config_prefix: globaldir,
+ npm_config_registry: common.registry,
+ npm_config_loglevel: 'error'
+})
+
+const fixture = new Tacks(Dir({
+ cache: Dir(),
+ global: Dir(),
+ tmp: Dir(),
+ testdir: Dir({
+ 'a-1.0.0.tgz': File(Buffer.from(
+ '1f8b0800000000000003edcfc10e82300c0660ce3ec5d2b38e4eb71d789b' +
+ '010d41e358187890f0ee56493c71319218937d977feb9aa50daebab886f2' +
+ 'b0a43cc7ce671b4344abb558ab3f2934223b198b4a598bdcc707a38f9c5b' +
+ '0fb2668c83eb79946fff597611effc131378772528c0c11e6ed4c7b6f37c' +
+ '53122572a5a640be265fb514a198a0e43729f3f2f06a9043738779defd7a' +
+ '89244992e4630fd69e456800080000',
+ 'hex'
+ )),
+ 'b-1.0.0.tgz': File(Buffer.from(
+ '1f8b08000000000000032b484cce4e4c4fd52f80d07a59c5f9790c540606' +
+ '06066626260ad8c4c1c0d85c81c1d8d4ccc0d0d0cccc00a80ec830353103' +
+ 'd2d4760836505a5c925804740aa5e640bca200a78708a856ca4bcc4d55b2' +
+ '524a52d2512a4b2d2acecccf03f20cf50cf40c946ab906da79a360148c82' +
+ '51300a680400106986b400080000',
+ 'hex'
+ )),
+ dev: Dir({
+ 'package.json': File({
+ name: 'dev',
+ version: '1.0.0',
+ devDependencies: {
+ example: '../example-1.0.0.tgz'
+ }
+ })
+ }),
+ 'example-1.0.0.tgz': File(Buffer.from(
+ '1f8b0800000000000003ed8fc10ac2300c8677f62946cedaa5d8f5e0db64' +
+ '5b1853d795758a38f6ee4607e261370722f4bbfce5cb4f493c9527aa39f3' +
+ '73aa63e85cb23288688d4997fc136d304df6b945adad45e9c923375a72ed' +
+ '4596b884817a59e5db7fe65bd277fe0923386a190ec0376afd99610b57ee' +
+ '43d339715aa14231157b7615bbb2e100871148664a65b47b15d450dfa554' +
+ 'ccb2f890d3b4f9f57d9148241259e60112d8208a00080000',
+ 'hex'
+ )),
+ optional: Dir({
+ 'package.json': File({
+ name: 'optional',
+ version: '1.0.0',
+ optionalDependencies: {
+ example: '../example-1.0.0.tgz'
+ }
+ })
+ })
+ })
+}))
+
+function setup () {
+ cleanup()
+ fixture.create(basedir)
+}
+
+function cleanup () {
+ fixture.remove(basedir)
+}
+
+test('setup', function (t) {
+ setup()
+ return common.fakeRegistry.listen()
+})
+
+test('optional dependency identification', function (t) {
+ return common.npm(['install', '--no-optional'], {cwd: optionaldir, env}).then(([code, stdout, stderr]) => {
+ t.is(code, 0, 'no error code')
+ t.is(stderr, '', 'no error output')
+ t.notOk(fs.existsSync(path.join(optionaldir, 'node_modules')), 'did not install anything')
+ t.similar(JSON.parse(fs.readFileSync(path.join(optionaldir, 'package-lock.json'), 'utf8')), {
+ dependencies: {
+ a: {
+ version: 'file:../a-1.0.0.tgz',
+ optional: true
+ },
+ b: {
+ version: 'file:../b-1.0.0.tgz',
+ optional: true
+ },
+ example: {
+ version: '1.0.0',
+ optional: true
+ }
+ }
+ }, 'locks dependencies as optional')
+ })
+})
+
+test('development dependency identification', function (t) {
+ return common.npm(['install', '--only=prod'], {cwd: devdir, env}).then(([code, stdout, stderr]) => {
+ t.is(code, 0, 'no error code')
+ t.is(stderr, '', 'no error output')
+ t.notOk(fs.existsSync(path.join(devdir, 'node_modules')), 'did not install anything')
+ t.similar(JSON.parse(fs.readFileSync(path.join(devdir, 'package-lock.json'), 'utf8')), {
+ dependencies: {
+ a: {
+ version: 'file:../a-1.0.0.tgz',
+ dev: true
+ },
+ b: {
+ version: 'file:../b-1.0.0.tgz',
+ dev: true
+ },
+ example: {
+ version: '1.0.0',
+ dev: true
+ }
+ }
+ }, 'locks dependencies as dev')
+ })
+})
+
+test('default dependency identification', function (t) {
+ return common.npm(['install'], {cwd: optionaldir, env}).then(([code, stdout, stderr]) => {
+ t.is(code, 0, 'no error code')
+ t.is(stderr, '', 'no error output')
+ t.similar(JSON.parse(fs.readFileSync(path.join(optionaldir, 'package-lock.json'), 'utf8')), {
+ dependencies: {
+ a: {
+ version: 'file:../a-1.0.0.tgz',
+ optional: true
+ },
+ b: {
+ version: 'file:../b-1.0.0.tgz',
+ optional: true
+ },
+ example: {
+ version: '1.0.0',
+ optional: true
+ }
+ }
+ }, 'locks dependencies as optional')
+ })
+})
+
+test('cleanup', function (t) {
+ common.fakeRegistry.close()
+ cleanup()
+ t.done()
+})
diff --git a/deps/npm/test/tap/map-to-registry.js b/deps/npm/test/tap/map-to-registry.js
deleted file mode 100644
index f6fdef5f10..0000000000
--- a/deps/npm/test/tap/map-to-registry.js
+++ /dev/null
@@ -1,166 +0,0 @@
-var test = require('tap').test
-var npm = require('../../')
-
-var common = require('../common-tap.js')
-var mapRegistry = require('../../lib/utils/map-to-registry.js')
-
-var creds = {
- '//registry.npmjs.org/:username': 'u',
- '//registry.npmjs.org/:_password': Buffer.from('p').toString('base64'),
- '//registry.npmjs.org/:email': 'e',
- cache: common.npm_config_cache
-}
-test('setup', function (t) {
- npm.load(creds, function (err) {
- t.ifError(err)
- t.end()
- })
-})
-
-test('mapRegistryToURI', function (t) {
- t.plan(16)
-
- mapRegistry('basic', npm.config, function (er, uri, auth, registry) {
- t.ifError(er, 'mapRegistryToURI worked')
- t.equal(uri, 'https://registry.npmjs.org/basic')
- t.deepEqual(auth, {
- scope: '//registry.npmjs.org/',
- token: undefined,
- username: 'u',
- password: 'p',
- email: 'e',
- auth: 'dTpw',
- alwaysAuth: false
- })
- t.equal(registry, 'https://registry.npmjs.org/')
- })
-
- npm.config.set('scope', 'test')
- npm.config.set('@test:registry', 'http://reg.npm/design/-/rewrite/')
- npm.config.set('//reg.npm/design/-/rewrite/:_authToken', 'a-token')
- mapRegistry('simple', npm.config, function (er, uri, auth, registry) {
- t.ifError(er, 'mapRegistryToURI worked')
- t.equal(uri, 'http://reg.npm/design/-/rewrite/simple')
- t.deepEqual(auth, {
- scope: '//reg.npm/design/-/rewrite/',
- token: 'a-token',
- username: undefined,
- password: undefined,
- email: undefined,
- auth: undefined,
- alwaysAuth: false
- })
- t.equal(registry, 'http://reg.npm/design/-/rewrite/')
- })
-
- npm.config.set('scope', '')
- npm.config.set('@test2:registry', 'http://reg.npm/-/rewrite/')
- npm.config.set('//reg.npm/-/rewrite/:_authToken', 'b-token')
- mapRegistry('@test2/easy', npm.config, function (er, uri, auth, registry) {
- t.ifError(er, 'mapRegistryToURI worked')
- t.equal(uri, 'http://reg.npm/-/rewrite/@test2%2feasy')
- t.deepEqual(auth, {
- scope: '//reg.npm/-/rewrite/',
- token: 'b-token',
- username: undefined,
- password: undefined,
- email: undefined,
- auth: undefined,
- alwaysAuth: false
- })
- t.equal(registry, 'http://reg.npm/-/rewrite/')
- })
-
- npm.config.set('scope', 'test')
- npm.config.set('@test3:registry', 'http://reg.npm/design/-/rewrite/relative')
- npm.config.set('//reg.npm/design/-/rewrite/:_authToken', 'c-token')
- mapRegistry('@test3/basic', npm.config, function (er, uri, auth, registry) {
- t.ifError(er, 'mapRegistryToURI worked')
- t.equal(uri, 'http://reg.npm/design/-/rewrite/relative/@test3%2fbasic')
- t.deepEqual(auth, {
- scope: '//reg.npm/design/-/rewrite/',
- token: 'c-token',
- username: undefined,
- password: undefined,
- email: undefined,
- auth: undefined,
- alwaysAuth: false
- })
- t.equal(registry, 'http://reg.npm/design/-/rewrite/relative/')
- })
-})
-
-test('mapToRegistry token scoping', function (t) {
- npm.config.set('scope', '')
- npm.config.set('registry', 'https://reg.npm/')
- npm.config.set('//reg.npm/:_authToken', 'r-token')
-
- t.test('pass token to registry host', function (t) {
- mapRegistry(
- 'https://reg.npm/packages/e/easy-1.0.0.tgz',
- npm.config,
- function (er, uri, auth, registry) {
- t.ifError(er, 'mapRegistryToURI worked')
- t.equal(uri, 'https://reg.npm/packages/e/easy-1.0.0.tgz')
- t.deepEqual(auth, {
- scope: '//reg.npm/',
- token: 'r-token',
- username: undefined,
- password: undefined,
- email: undefined,
- auth: undefined,
- alwaysAuth: false
- })
- t.equal(registry, 'https://reg.npm/')
- }
- )
- t.end()
- })
-
- t.test("don't pass token to non-registry host", function (t) {
- mapRegistry(
- 'https://butts.lol/packages/e/easy-1.0.0.tgz',
- npm.config,
- function (er, uri, auth, registry) {
- t.ifError(er, 'mapRegistryToURI worked')
- t.equal(uri, 'https://butts.lol/packages/e/easy-1.0.0.tgz')
- t.deepEqual(auth, {
- scope: '//reg.npm/',
- token: undefined,
- username: undefined,
- password: undefined,
- email: undefined,
- auth: undefined,
- alwaysAuth: false
- })
- t.equal(registry, 'https://reg.npm/')
- }
- )
- t.end()
- })
-
- t.test('pass token to non-registry host with always-auth', function (t) {
- npm.config.set('always-auth', true)
- mapRegistry(
- 'https://butts.lol/packages/e/easy-1.0.0.tgz',
- npm.config,
- function (er, uri, auth, registry) {
- t.ifError(er, 'mapRegistryToURI worked')
- t.equal(uri, 'https://butts.lol/packages/e/easy-1.0.0.tgz')
- t.deepEqual(auth, {
- scope: '//reg.npm/',
- token: 'r-token',
- username: undefined,
- password: undefined,
- email: undefined,
- auth: undefined,
- alwaysAuth: true
- })
- t.equal(registry, 'https://reg.npm/')
- }
- )
- t.end()
- })
-
- t.end()
-})
diff --git a/deps/npm/test/tap/org.js b/deps/npm/test/tap/org.js
new file mode 100644
index 0000000000..7315cf0b6f
--- /dev/null
+++ b/deps/npm/test/tap/org.js
@@ -0,0 +1,136 @@
+'use strict'
+
+var test = require('tap').test
+var common = require('../common-tap.js')
+
+var mr = common.fakeRegistry.compat
+
+var server
+
+test('setup', function (t) {
+ mr({port: common.port}, function (err, s) {
+ t.ifError(err, 'registry mocked successfully')
+ server = s
+ t.end()
+ })
+})
+
+const names = ['add', 'set']
+const roles = ['developer', 'admin', 'owner']
+
+names.forEach(function (name) {
+ test('org ' + name + ' [orgname] [username]: defaults to developer', function (t) {
+ const membershipData = {
+ org: {
+ name: 'myorg',
+ size: 1
+ },
+ user: 'myuser',
+ role: 'developer'
+ }
+ server.put('/-/org/myorg/user', JSON.stringify({
+ user: 'myuser'
+ })).reply(200, membershipData)
+ common.npm([
+ 'org', 'add', 'myorg', 'myuser',
+ '--json',
+ '--registry', common.registry,
+ '--loglevel', 'silent'
+ ], {}, function (err, code, stdout, stderr) {
+ t.ifError(err, 'npm org')
+
+ t.equal(code, 0, 'exited OK')
+ t.equal(stderr, '', 'no error output')
+
+ t.same(JSON.parse(stdout), membershipData)
+ t.end()
+ })
+ })
+
+ roles.forEach(function (role) {
+ test('org ' + name + ' [orgname] [username]: accepts role ' + role, function (t) {
+ const membershipData = {
+ org: {
+ name: 'myorg',
+ size: 1
+ },
+ user: 'myuser',
+ role: role
+ }
+ server.put('/-/org/myorg/user', JSON.stringify({
+ user: 'myuser'
+ })).reply(200, membershipData)
+ common.npm([
+ 'org', name, 'myorg', 'myuser',
+ '--json',
+ '--registry', common.registry,
+ '--loglevel', 'silent'
+ ], {}, function (err, code, stdout, stderr) {
+ t.ifError(err, 'npm org')
+
+ t.equal(code, 0, 'exited OK')
+ t.equal(stderr, '', 'no error output')
+
+ t.same(JSON.parse(stdout), membershipData)
+ t.end()
+ })
+ })
+ })
+})
+
+test('org rm [orgname] [username]', function (t) {
+ const membershipData = {
+ otheruser: 'admin'
+ }
+ server.delete('/-/org/myorg/user', JSON.stringify({
+ user: 'myuser'
+ })).reply(204, {})
+ server.get('/-/org/myorg/user')
+ .reply(200, membershipData)
+ common.npm([
+ 'org', 'rm', 'myorg', 'myuser',
+ '--json',
+ '--registry', common.registry,
+ '--loglevel', 'silent'
+ ], {}, function (err, code, stdout, stderr) {
+ t.ifError(err, 'npm org')
+
+ t.equal(code, 0, 'exited OK')
+ t.equal(stderr, '', 'no error output')
+ t.deepEqual(JSON.parse(stdout), {
+ user: 'myuser',
+ org: 'myorg',
+ deleted: true,
+ userCount: 1
+ }, 'got useful info')
+ t.end()
+ })
+})
+
+test('org ls [orgname]', function (t) {
+ const membershipData = {
+ username: 'admin',
+ username2: 'foo'
+ }
+ server.get('/-/org/myorg/user')
+ .reply(200, membershipData)
+ common.npm([
+ 'org', 'ls', 'myorg',
+ '--json',
+ '--registry', common.registry,
+ '--loglevel', 'silent'
+ ], {}, function (err, code, stdout, stderr) {
+ t.ifError(err, 'npm org')
+ t.equal(code, 0, 'exited OK')
+ t.equal(stderr, '', 'no error output')
+ t.same(JSON.parse(stdout), membershipData, 'outputs members')
+ t.end()
+ })
+})
+
+test('cleanup', function (t) {
+ t.pass('cleaned up')
+ server.done()
+ server.close()
+ t.end()
+})
diff --git a/deps/npm/test/tap/ping.js b/deps/npm/test/tap/ping.js
index 76d115a482..3562f25a3b 100644
--- a/deps/npm/test/tap/ping.js
+++ b/deps/npm/test/tap/ping.js
@@ -40,14 +40,41 @@ test('npm ping', function (t) {
common.npm([
'ping',
'--registry', common.registry,
- '--loglevel', 'silent',
+ '--loglevel', 'notice',
'--userconfig', outfile
- ], opts, function (err, code, stdout) {
+ ], opts, function (err, code, stdout, stderr) {
s.close()
- t.ifError(err, 'no error output')
+ t.ifError(err, 'command completed')
t.notOk(code, 'exited OK')
- t.same(stdout, 'Ping success: ' + JSON.stringify(pingResponse) + '\n')
+ t.match(stderr, /PING/, 'ping notification output')
+ t.match(stderr, /PONG/, 'pong response output')
+ t.end()
+ })
+ })
+})
+
+test('npm ping --json', function (t) {
+ mr({ port: common.port, plugin: mocks }, function (err, s) {
+ if (err) throw err
+
+ common.npm([
+ 'ping',
+ '--json',
+ '--registry', common.registry,
+ '--loglevel', 'notice',
+ '--userconfig', outfile
+ ], opts, function (err, code, stdout, stderr) {
+ s.close()
+ t.ifError(err, 'command completed')
+ t.notOk(code, 'exited OK')
+
+ const json = JSON.parse(stdout.trim())
+ t.similar(json, {
+ registry: common.registry,
+ details: pingResponse
+ }, 'JSON info returned')
+ t.equal(typeof json.time, 'number', 'got a timestamp')
t.end()
})
})
diff --git a/deps/npm/test/tap/publish-config.js b/deps/npm/test/tap/publish-config.js
index 0566795dbe..14fd40311a 100644
--- a/deps/npm/test/tap/publish-config.js
+++ b/deps/npm/test/tap/publish-config.js
@@ -47,9 +47,13 @@ test(function (t) {
// itself functions normally.
//
// Make sure that we don't sit around waiting for lock files
- child = common.npm(['publish', '--userconfig=' + pkg + '/fixture_npmrc', '--tag=beta'], {
+ child = common.npm([
+ 'publish',
+ '--userconfig=' + pkg + '/fixture_npmrc',
+ '--tag=beta',
+ '--loglevel', 'error'
+ ], {
cwd: pkg,
- stdio: 'inherit',
env: {
'npm_config_cache_lock_stale': 1000,
'npm_config_cache_lock_wait': 1000,
@@ -58,7 +62,9 @@ test(function (t) {
PATH: process.env.PATH,
USERPROFILE: osenv.home()
}
- }, function (err, code) {
+ }, function (err, code, stdout, stderr) {
+ t.comment(stdout)
+ t.comment(stderr)
t.ifError(err, 'publish command finished successfully')
t.notOk(code, 'npm install exited with code 0')
})
diff --git a/deps/npm/test/tap/search.all-package-search.js b/deps/npm/test/tap/search.all-package-search.js
index c70f4f8e7e..51c1ffcf90 100644
--- a/deps/npm/test/tap/search.all-package-search.js
+++ b/deps/npm/test/tap/search.all-package-search.js
@@ -1,21 +1,25 @@
-var path = require('path')
-var mkdirp = require('mkdirp')
-var mr = require('npm-registry-mock')
-var osenv = require('osenv')
-var rimraf = require('rimraf')
-var cacheFile = require('npm-cache-filename')
-var test = require('tap').test
-var Tacks = require('tacks')
-var File = Tacks.File
+'use strict'
-var common = require('../common-tap.js')
+const cacheFile = require('npm-cache-filename')
+const mkdirp = require('mkdirp')
+const mr = require('npm-registry-mock')
+const osenv = require('osenv')
+const path = require('path')
+const qs = require('querystring')
+const rimraf = require('rimraf')
+const Tacks = require('tacks')
+const test = require('tap').test
-var PKG_DIR = path.resolve(__dirname, 'search')
-var CACHE_DIR = path.resolve(PKG_DIR, 'cache')
-var cacheBase = cacheFile(CACHE_DIR)(common.registry + '/-/all')
-var cachePath = path.join(cacheBase, '.cache.json')
+const {File} = Tacks
-var server
+const common = require('../common-tap.js')
+
+const PKG_DIR = path.resolve(__dirname, 'search')
+const CACHE_DIR = path.resolve(PKG_DIR, 'cache')
+const cacheBase = cacheFile(CACHE_DIR)(common.registry + '/-/all')
+const cachePath = path.join(cacheBase, '.cache.json')
+
+let server
test('setup', function (t) {
mr({port: common.port, throwOnUnmatched: true}, function (err, s) {
@@ -26,7 +30,7 @@ test('setup', function (t) {
})
})
-var searches = [
+const searches = [
{
term: 'cool',
description: 'non-regex search',
@@ -139,19 +143,26 @@ var searches = [
searches.forEach(function (search) {
test(search.description, function (t) {
setup()
- server.get('/-/v1/search?text=' + encodeURIComponent(search.term) + '&size=20').once().reply(404, {})
- var now = Date.now()
- var cacheContents = {
+ const query = qs.stringify({
+ text: search.term,
+ size: 20,
+ quality: 0.65,
+ popularity: 0.98,
+ maintenance: 0.5
+ })
+ server.get(`/-/v1/search?${query}`).once().reply(404, {})
+ const now = Date.now()
+ const cacheContents = {
'_updated': now,
bar: { name: 'bar', version: '1.0.0' },
cool: { name: 'cool', version: '5.0.0' },
foo: { name: 'foo', version: '2.0.0' },
other: { name: 'other', version: '1.0.0' }
}
- for (var k in search.inject) {
+ for (let k in search.inject) {
cacheContents[k] = search.inject[k]
}
- var fixture = new Tacks(File(cacheContents))
+ const fixture = new Tacks(File(cacheContents))
fixture.create(cachePath)
common.npm([
'search', search.term,
@@ -167,12 +178,12 @@ searches.forEach(function (search) {
t.equal(code, 0, 'search finished successfully')
t.ifErr(err, 'search finished successfully')
// \033 == \u001B
- var markStart = '\u001B\\[[0-9][0-9]m'
- var markEnd = '\u001B\\[0m'
+ const markStart = '\u001B\\[[0-9][0-9]m'
+ const markEnd = '\u001B\\[0m'
- var re = new RegExp(markStart + '.*?' + markEnd)
+ const re = new RegExp(markStart + '.*?' + markEnd)
- var cnt = stdout.search(re)
+ const cnt = stdout.search(re)
t.equal(
cnt,
search.location,
diff --git a/deps/npm/test/tap/search.esearch.js b/deps/npm/test/tap/search.esearch.js
deleted file mode 100644
index d892aec957..0000000000
--- a/deps/npm/test/tap/search.esearch.js
+++ /dev/null
@@ -1,192 +0,0 @@
-var common = require('../common-tap.js')
-var finished = require('mississippi').finished
-var mkdirp = require('mkdirp')
-var mr = require('npm-registry-mock')
-var npm = require('../../')
-var osenv = require('osenv')
-var path = require('path')
-var rimraf = require('rimraf')
-var test = require('tap').test
-
-var SEARCH = '/-/v1/search'
-var PKG_DIR = path.resolve(__dirname, 'create-entry-update-stream')
-var CACHE_DIR = path.resolve(PKG_DIR, 'cache')
-
-var esearch = require('../../lib/search/esearch')
-
-var server
-
-function setup () {
- cleanup()
- mkdirp.sync(CACHE_DIR)
- process.chdir(CACHE_DIR)
-}
-
-function cleanup () {
- process.chdir(osenv.tmpdir())
- rimraf.sync(PKG_DIR)
-}
-
-test('setup', function (t) {
- mr({port: common.port, throwOnUnmatched: true}, function (err, s) {
- t.ifError(err, 'registry mocked successfully')
- npm.load({ cache: CACHE_DIR, registry: common.registry }, function (err) {
- t.ifError(err, 'npm loaded successfully')
- server = s
- t.pass('all set up')
- t.done()
- })
- })
-})
-
-test('basic test', function (t) {
- setup()
- server.get(SEARCH + '?text=oo&size=1').once().reply(200, {
- objects: [
- { package: { name: 'cool', version: '1.0.0' } },
- { package: { name: 'foo', version: '2.0.0' } }
- ]
- })
- var results = []
- var s = esearch({
- include: ['oo'],
- limit: 1
- })
- t.ok(s, 'got a stream')
- s.on('data', function (d) {
- results.push(d)
- })
- finished(s, function (err) {
- if (err) { throw err }
- t.ok(true, 'stream finished without error')
- t.deepEquals(results, [{
- name: 'cool',
- version: '1.0.0',
- description: null,
- maintainers: null,
- keywords: null,
- date: null
- }, {
- name: 'foo',
- version: '2.0.0',
- description: null,
- maintainers: null,
- keywords: null,
- date: null
- }])
- server.done()
- t.done()
- })
-})
-
-test('only returns certain fields for each package', function (t) {
- setup()
- var date = new Date()
- server.get(SEARCH + '?text=oo&size=1').once().reply(200, {
- objects: [{
- package: {
- name: 'cool',
- version: '1.0.0',
- description: 'desc',
- maintainers: [
- {username: 'x', email: 'a@b.c'},
- {username: 'y', email: 'c@b.a'}
- ],
- keywords: ['a', 'b', 'c'],
- date: date.toISOString(),
- extra: 'lol'
- }
- }]
- })
- var results = []
- var s = esearch({
- include: ['oo'],
- limit: 1
- })
- t.ok(s, 'got a stream')
- s.on('data', function (d) {
- results.push(d)
- })
- finished(s, function (err) {
- if (err) { throw err }
- t.ok(true, 'stream finished without error')
- t.deepEquals(results, [{
- name: 'cool',
- version: '1.0.0',
- description: 'desc',
- maintainers: [
- {username: 'x', email: 'a@b.c'},
- {username: 'y', email: 'c@b.a'}
- ],
- keywords: ['a', 'b', 'c'],
- date: date
- }])
- server.done()
- t.done()
- })
-})
-
-test('accepts a limit option', function (t) {
- setup()
- server.get(SEARCH + '?text=oo&size=3').once().reply(200, {
- objects: [
- { package: { name: 'cool', version: '1.0.0' } },
- { package: { name: 'cool', version: '1.0.0' } }
- ]
- })
- var results = 0
- var s = esearch({
- include: ['oo'],
- limit: 3
- })
- s.on('data', function () { results++ })
- finished(s, function (err) {
- if (err) { throw err }
- t.ok(true, 'request sent with correct size')
- t.equal(results, 2, 'behaves fine with fewer results than size')
- server.done()
- t.done()
- })
-})
-
-test('passes foo:bar syntax params directly', function (t) {
- setup()
- server.get(SEARCH + '?text=foo%3Abar&size=1').once().reply(200, {
- objects: []
- })
- var s = esearch({
- include: ['foo:bar'],
- limit: 1
- })
- s.on('data', function () {})
- finished(s, function (err) {
- if (err) { throw err }
- t.ok(true, 'request sent with correct params')
- server.done()
- t.done()
- })
-})
-
-test('space-separates and URI-encodes multiple search params', function (t) {
- setup()
- server.get(SEARCH + '?text=foo%20bar%3Abaz%20quux%3F%3D&size=1').once().reply(200, {
- objects: []
- })
- var s = esearch({
- include: ['foo', 'bar:baz', 'quux?='],
- limit: 1
- })
- s.on('data', function () {})
- finished(s, function (err) {
- if (err) { throw err }
- t.ok(true, 'request sent with correct params')
- server.done()
- t.done()
- })
-})
-
-test('cleanup', function (t) {
- server.close()
- cleanup()
- t.done()
-})
diff --git a/deps/npm/test/tap/search.js b/deps/npm/test/tap/search.js
index df7ff0fe37..bbd293c3a1 100644
--- a/deps/npm/test/tap/search.js
+++ b/deps/npm/test/tap/search.js
@@ -1,21 +1,25 @@
-var path = require('path')
-var mkdirp = require('mkdirp')
-var mr = require('npm-registry-mock')
-var osenv = require('osenv')
-var rimraf = require('rimraf')
-var cacheFile = require('npm-cache-filename')
-var test = require('tap').test
-var Tacks = require('tacks')
-var File = Tacks.File
+'use strict'
-var common = require('../common-tap.js')
+const cacheFile = require('npm-cache-filename')
+const mkdirp = require('mkdirp')
+const mr = require('npm-registry-mock')
+const osenv = require('osenv')
+const path = require('path')
+const qs = require('querystring')
+const rimraf = require('rimraf')
+const test = require('tap').test
-var PKG_DIR = path.resolve(__dirname, 'search')
-var CACHE_DIR = path.resolve(PKG_DIR, 'cache')
-var cacheBase = cacheFile(CACHE_DIR)(common.registry + '/-/all')
-var cachePath = path.join(cacheBase, '.cache.json')
+const Tacks = require('tacks')
+const File = Tacks.File
-var server
+const common = require('../common-tap.js')
+
+const PKG_DIR = path.resolve(__dirname, 'search')
+const CACHE_DIR = path.resolve(PKG_DIR, 'cache')
+const cacheBase = cacheFile(CACHE_DIR)(common.registry + '/-/all')
+const cachePath = path.join(cacheBase, '.cache.json')
+
+let server
test('setup', function (t) {
mr({port: common.port, throwOnUnmatched: true}, function (err, s) {
@@ -28,7 +32,14 @@ test('setup', function (t) {
test('notifies when there are no results', function (t) {
setup()
- server.get('/-/v1/search?text=none&size=20').once().reply(200, {
+ const query = qs.stringify({
+ text: 'none',
+ size: 20,
+ quality: 0.65,
+ popularity: 0.98,
+ maintenance: 0.5
+ })
+ server.get(`/-/v1/search?${query}`).once().reply(200, {
objects: []
})
common.npm([
@@ -46,10 +57,17 @@ test('notifies when there are no results', function (t) {
test('spits out a useful error when no cache nor network', function (t) {
setup()
- server.get('/-/v1/search?text=foo&size=20').once().reply(404, {})
+ const query = qs.stringify({
+ text: 'foo',
+ size: 20,
+ quality: 0.65,
+ popularity: 0.98,
+ maintenance: 0.5
+ })
+ server.get(`/-/v1/search?${query}`).once().reply(404, {})
server.get('/-/all').many().reply(404, {})
- var cacheContents = {}
- var fixture = new Tacks(File(cacheContents))
+ const cacheContents = {}
+ const fixture = new Tacks(File(cacheContents))
fixture.create(cachePath)
common.npm([
'search', 'foo',
@@ -70,7 +88,14 @@ test('spits out a useful error when no cache nor network', function (t) {
test('can switch to JSON mode', function (t) {
setup()
- server.get('/-/v1/search?text=oo&size=20').once().reply(200, {
+ const query = qs.stringify({
+ text: 'oo',
+ size: 20,
+ quality: 0.65,
+ popularity: 0.98,
+ maintenance: 0.5
+ })
+ server.get(`/-/v1/search?${query}`).once().reply(200, {
objects: [
{ package: { name: 'cool', version: '1.0.0' } },
{ package: { name: 'foo', version: '2.0.0' } }
@@ -86,9 +111,15 @@ test('can switch to JSON mode', function (t) {
if (err) throw err
t.equal(stderr, '', 'no error output')
t.equal(code, 0, 'search gives 0 error code even if no matches')
- t.deepEquals(JSON.parse(stdout), [
- { name: 'cool', version: '1.0.0', date: null },
- { name: 'foo', version: '2.0.0', date: null }
+ t.similar(JSON.parse(stdout), [
+ {
+ name: 'cool',
+ version: '1.0.0'
+ },
+ {
+ name: 'foo',
+ version: '2.0.0'
+ }
], 'results returned as valid json')
t.done()
})
@@ -96,7 +127,14 @@ test('can switch to JSON mode', function (t) {
test('JSON mode does not notify on empty', function (t) {
setup()
- server.get('/-/v1/search?text=oo&size=20').once().reply(200, {
+ const query = qs.stringify({
+ text: 'oo',
+ size: 20,
+ quality: 0.65,
+ popularity: 0.98,
+ maintenance: 0.5
+ })
+ server.get(`/-/v1/search?${query}`).once().reply(200, {
objects: []
})
common.npm([
@@ -116,7 +154,14 @@ test('JSON mode does not notify on empty', function (t) {
test('can switch to tab separated mode', function (t) {
setup()
- server.get('/-/v1/search?text=oo&size=20').once().reply(200, {
+ const query = qs.stringify({
+ text: 'oo',
+ size: 20,
+ quality: 0.65,
+ popularity: 0.98,
+ maintenance: 0.5
+ })
+ server.get(`/-/v1/search?${query}`).once().reply(200, {
objects: [
{ package: { name: 'cool', version: '1.0.0' } },
{ package: { name: 'foo', description: 'this\thas\ttabs', version: '2.0.0' } }
@@ -139,7 +184,14 @@ test('can switch to tab separated mode', function (t) {
test('tab mode does not notify on empty', function (t) {
setup()
- server.get('/-/v1/search?text=oo&size=20').once().reply(200, {
+ const query = qs.stringify({
+ text: 'oo',
+ size: 20,
+ quality: 0.65,
+ popularity: 0.98,
+ maintenance: 0.5
+ })
+ server.get(`/-/v1/search?${query}`).once().reply(200, {
objects: []
})
common.npm([
diff --git a/deps/npm/test/tap/team.js b/deps/npm/test/tap/team.js
index 38caadde53..939da45b77 100644
--- a/deps/npm/test/tap/team.js
+++ b/deps/npm/test/tap/team.js
@@ -22,17 +22,19 @@ test('team create basic', function (t) {
deleted: null
}
server.put('/-/org/myorg/team', JSON.stringify({
- name: teamData.name
+ name: teamData.name,
+ description: null
})).reply(200, teamData)
common.npm([
'team', 'create', 'myorg:' + teamData.name,
'--registry', common.registry,
- '--loglevel', 'silent'
+ '--loglevel', 'error',
+ '--json'
], {}, function (err, code, stdout, stderr) {
t.ifError(err, 'npm team')
t.equal(code, 0, 'exited OK')
t.equal(stderr, '', 'no error output')
- t.same(JSON.parse(stdout), teamData)
+ t.same(JSON.parse(stdout), {created: true, team: `myorg:${teamData.name}`})
t.end()
})
})
@@ -46,17 +48,19 @@ test('team create (allow optional @ prefix on scope)', function (t) {
deleted: null
}
server.put('/-/org/myorg/team', JSON.stringify({
- name: teamData.name
+ name: teamData.name,
+ description: null
})).reply(200, teamData)
common.npm([
'team', 'create', '@myorg:' + teamData.name,
'--registry', common.registry,
- '--loglevel', 'silent'
+ '--loglevel', 'silent',
+ '--json'
], {}, function (err, code, stdout, stderr) {
t.ifError(err, 'npm team')
t.equal(code, 0, 'exited OK')
t.equal(stderr, '', 'no error output')
- t.same(JSON.parse(stdout), teamData)
+ t.same(JSON.parse(stdout), {created: true, team: `myorg:${teamData.name}`})
t.end()
})
})
@@ -73,12 +77,13 @@ test('team destroy', function (t) {
common.npm([
'team', 'destroy', 'myorg:' + teamData.name,
'--registry', common.registry,
- '--loglevel', 'silent'
+ '--loglevel', 'silent',
+ '--json'
], {}, function (err, code, stdout, stderr) {
t.ifError(err, 'npm team')
t.equal(code, 0, 'exited OK')
t.equal(stderr, '', 'no error output')
- t.same(JSON.parse(stdout), teamData)
+ t.same(JSON.parse(stdout), {deleted: true, team: `myorg:${teamData.name}`})
t.end()
})
})
@@ -87,11 +92,12 @@ test('team add', function (t) {
var user = 'zkat'
server.put('/-/team/myorg/myteam/user', JSON.stringify({
user: user
- })).reply(200)
+ })).reply(200, {})
common.npm([
'team', 'add', 'myorg:myteam', user,
'--registry', common.registry,
- '--loglevel', 'silent'
+ '--loglevel', 'error',
+ '--json'
], {}, function (err, code, stdout, stderr) {
t.ifError(err, 'npm team')
t.equal(code, 0, 'exited OK')
@@ -104,11 +110,12 @@ test('team rm', function (t) {
var user = 'zkat'
server.delete('/-/team/myorg/myteam/user', JSON.stringify({
user: user
- })).reply(200)
+ })).reply(200, {})
common.npm([
'team', 'rm', 'myorg:myteam', user,
'--registry', common.registry,
- '--loglevel', 'silent'
+ '--loglevel', 'silent',
+ '--json'
], {}, function (err, code, stdout, stderr) {
t.ifError(err, 'npm team')
t.equal(code, 0, 'exited OK')
@@ -123,7 +130,8 @@ test('team ls (on org)', function (t) {
common.npm([
'team', 'ls', 'myorg',
'--registry', common.registry,
- '--loglevel', 'silent'
+ '--loglevel', 'silent',
+ '--json'
], {}, function (err, code, stdout, stderr) {
t.ifError(err, 'npm team')
t.equal(code, 0, 'exited OK')
@@ -139,12 +147,13 @@ test('team ls (on team)', function (t) {
common.npm([
'team', 'ls', 'myorg:myteam',
'--registry', common.registry,
- '--loglevel', 'silent'
+ '--loglevel', 'silent',
+ '--json'
], {}, function (err, code, stdout, stderr) {
t.ifError(err, 'npm team')
t.equal(code, 0, 'exited OK')
t.equal(stderr, '', 'no error output')
- t.same(JSON.parse(stdout), users)
+ t.same(JSON.parse(stdout).sort(), users.sort())
t.end()
})
})
diff --git a/deps/npm/test/tap/view.js b/deps/npm/test/tap/view.js
index 30ccdb471c..a01fa903a2 100644
--- a/deps/npm/test/tap/view.js
+++ b/deps/npm/test/tap/view.js
@@ -97,7 +97,7 @@ test('npm view . with no published package', function (t) {
], { cwd: t3dir }, function (err, code, stdout, stderr) {
t.ifError(err, 'view command finished successfully')
t.equal(code, 1, 'exit not ok')
- t.similar(stderr, /version not found/m)
+ t.similar(stderr, /not in the npm registry/m)
t.end()
})
})