mirror of
https://github.com/nodejs/node-v0.x-archive.git
synced 2026-04-28 03:01:10 -04:00
Compare commits
2369 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
396b9deacd | ||
|
|
8fd350e357 | ||
|
|
418fc1a4d6 | ||
|
|
643a21c097 | ||
|
|
0c766cbdfe | ||
|
|
895c3647a2 | ||
|
|
d5edd68794 | ||
|
|
d3ff648997 | ||
|
|
a69205346b | ||
|
|
eeb08ca496 | ||
|
|
f82652e68e | ||
|
|
737ba482cb | ||
|
|
650d1355a5 | ||
|
|
15f0e0a596 | ||
|
|
066e97867a | ||
|
|
11d21f5b17 | ||
|
|
0dc2f4f82d | ||
|
|
f59ec645cb | ||
|
|
d55702e73d | ||
|
|
654267609b | ||
|
|
b93a51e3a6 | ||
|
|
10b6156bd2 | ||
|
|
1e9ad1f6a4 | ||
|
|
532f9ffca2 | ||
|
|
23c608ad40 | ||
|
|
faa042b4e4 | ||
|
|
4421bebc36 | ||
|
|
78fe7d0592 | ||
|
|
c421a5e66b | ||
|
|
653d4db71f | ||
|
|
826661f33a | ||
|
|
98a9089f5f | ||
|
|
42f926ece7 | ||
|
|
ccad4c7fbc | ||
|
|
ca3976726b | ||
|
|
c86b3815b5 | ||
|
|
1111880df4 | ||
|
|
1a39380ab4 | ||
|
|
7f52ee086a | ||
|
|
0b9bdb2bc7 | ||
|
|
a0837fd32e | ||
|
|
8a3d0c8b91 | ||
|
|
bf16141eeb | ||
|
|
6fad535c63 | ||
|
|
01626461e3 | ||
|
|
c1a1ab0677 | ||
|
|
71091f78f2 | ||
|
|
ba0ed00b5f | ||
|
|
4dc5b13861 | ||
|
|
600cd28167 | ||
|
|
0801a18890 | ||
|
|
49dcab933b | ||
|
|
b36aab16f0 | ||
|
|
c67f8d0500 | ||
|
|
f2f893b2a7 | ||
|
|
b2587b2678 | ||
|
|
1a95ce5214 | ||
|
|
84bb0ec613 | ||
|
|
2c41a80282 | ||
|
|
d5959c5cea | ||
|
|
3446157269 | ||
|
|
95871ac1db | ||
|
|
9c5812574f | ||
|
|
5c3c2ed945 | ||
|
|
d7a5f96fa5 | ||
|
|
67a4cb4fe8 | ||
|
|
80fb580936 | ||
|
|
277a2545d2 | ||
|
|
116d6c4402 | ||
|
|
4d809e297f | ||
|
|
532d9929c7 | ||
|
|
ecf9f606c9 | ||
|
|
a6a1659d85 | ||
|
|
426cbedb44 | ||
|
|
0b70a14abf | ||
|
|
7189b3ed33 | ||
|
|
be770a3839 | ||
|
|
f26362e938 | ||
|
|
50ba0f27d9 | ||
|
|
d032ff4954 | ||
|
|
d879042860 | ||
|
|
522668b5d9 | ||
|
|
82357b87eb | ||
|
|
fafb67c65b | ||
|
|
f8ae4446ee | ||
|
|
33e8e694e8 | ||
|
|
7b92b301fa | ||
|
|
530d8c05d4 | ||
|
|
ff540e19a4 | ||
|
|
b0e7dbf2c0 | ||
|
|
f9a0140ef1 | ||
|
|
22d3eff8f4 | ||
|
|
ef94521909 | ||
|
|
9d45b945f7 | ||
|
|
3267464586 | ||
|
|
3f38069acf | ||
|
|
01bff7e7a7 | ||
|
|
48521f1220 | ||
|
|
e10c75579b | ||
|
|
73be4608d9 | ||
|
|
987338fe31 | ||
|
|
c9dcf5718c | ||
|
|
3e2be6f39f | ||
|
|
aec6e93931 | ||
|
|
2e1ebbf2c5 | ||
|
|
82ad5fbe9a | ||
|
|
6dcadb9fc8 | ||
|
|
c4f418d035 | ||
|
|
2810b1ab00 | ||
|
|
e4d97b1dca | ||
|
|
255bc945c2 | ||
|
|
13897279ae | ||
|
|
ccf2712ee5 | ||
|
|
8caf6572b6 | ||
|
|
53978bdf42 | ||
|
|
5aef65a98a | ||
|
|
a86ebbe288 | ||
|
|
6b99fd2323 | ||
|
|
8d14668992 | ||
|
|
5fe05464cb | ||
|
|
9a488a667c | ||
|
|
1a87776be9 | ||
|
|
5abde8161a | ||
|
|
65249ccd9b | ||
|
|
72dd3b4e25 | ||
|
|
34131af606 | ||
|
|
7f6054ca81 | ||
|
|
13d86a86d6 | ||
|
|
d7bf7ed993 | ||
|
|
1c32eb4ae2 | ||
|
|
9c2c845463 | ||
|
|
4598a4c6dd | ||
|
|
f05cf3bea7 | ||
|
|
2c4eef0d97 | ||
|
|
4d32fc5964 | ||
|
|
1c35ee8695 | ||
|
|
7295bb9435 | ||
|
|
31583be042 | ||
|
|
e70d1bfe64 | ||
|
|
30e237041d | ||
|
|
08ac9fe016 | ||
|
|
498200b87c | ||
|
|
6b4a93577b | ||
|
|
a6b8f63660 | ||
|
|
45024e7b75 | ||
|
|
f3e78bd3c2 | ||
|
|
4c9de9d716 | ||
|
|
4fa3fd1cc0 | ||
|
|
8e37a589a6 | ||
|
|
be54423782 | ||
|
|
6d9ee4b184 | ||
|
|
1388171d96 | ||
|
|
daf4666963 | ||
|
|
c4b080f82d | ||
|
|
c50c33e939 | ||
|
|
ed825f4888 | ||
|
|
aa742ddf80 | ||
|
|
7a2ae4c930 | ||
|
|
ad6769fc92 | ||
|
|
872cb0d7fa | ||
|
|
50e88d0b66 | ||
|
|
acc085e131 | ||
|
|
44ceb5d8f5 | ||
|
|
a7cc53067d | ||
|
|
c2e71dd51d | ||
|
|
54740c8b24 | ||
|
|
6738e68592 | ||
|
|
d30e76e0e8 | ||
|
|
9d0103d22e | ||
|
|
0c867ae618 | ||
|
|
5a19c07c08 | ||
|
|
ba407ce410 | ||
|
|
04adf0e5a1 | ||
|
|
496c0bd936 | ||
|
|
53b826e6ae | ||
|
|
827b2a9b0b | ||
|
|
45cdb0e4c1 | ||
|
|
953673424a | ||
|
|
a18507ce11 | ||
|
|
1c9c6277d5 | ||
|
|
b09f97068e | ||
|
|
d65832ccd0 | ||
|
|
6e97b2cc17 | ||
|
|
65d824b488 | ||
|
|
92e92b0215 | ||
|
|
c79fd0e167 | ||
|
|
276245d26f | ||
|
|
e5649d4b3d | ||
|
|
22965da799 | ||
|
|
4d0fcd515f | ||
|
|
6772308883 | ||
|
|
acad8d9a77 | ||
|
|
c9f2531ae0 | ||
|
|
83161455bd | ||
|
|
122ac4e1f2 | ||
|
|
e773be6f90 | ||
|
|
9f51fd6b84 | ||
|
|
fdf91afb49 | ||
|
|
121ed91331 | ||
|
|
4cb17cb219 | ||
|
|
fb5c7f03a0 | ||
|
|
db008f7cce | ||
|
|
bb867c0fa6 | ||
|
|
7716828166 | ||
|
|
b3bfb6fbb6 | ||
|
|
9b22944b68 | ||
|
|
44dd2c392a | ||
|
|
326bce91d6 | ||
|
|
5f0a10ad21 | ||
|
|
7fe1671727 | ||
|
|
54e88b3d61 | ||
|
|
4379e49818 | ||
|
|
b00527fcf0 | ||
|
|
45a13d9674 | ||
|
|
d130bb060e | ||
|
|
648e38771e | ||
|
|
d269f7e48c | ||
|
|
ff4c974873 | ||
|
|
e1bdde05c7 | ||
|
|
822e13d375 | ||
|
|
c7b2e29e5e | ||
|
|
4b8629db37 | ||
|
|
28e6403a56 | ||
|
|
de0303d3ad | ||
|
|
82a72e9591 | ||
|
|
f34f1e30a6 | ||
|
|
626db18635 | ||
|
|
76a6c4bf2e | ||
|
|
29d12c7342 | ||
|
|
7413df0c1f | ||
|
|
b6b881378a | ||
|
|
49f0f618a9 | ||
|
|
9fa953d3e7 | ||
|
|
844a0058d0 | ||
|
|
de18e29784 | ||
|
|
82df345fbb | ||
|
|
627f0d27e8 | ||
|
|
cca15e8e33 | ||
|
|
1205734e69 | ||
|
|
28b0cc08b8 | ||
|
|
a7b5938715 | ||
|
|
4a23add90f | ||
|
|
b1e78cef09 | ||
|
|
323bbdb0cb | ||
|
|
58db21e6c5 | ||
|
|
b3536ae0a8 | ||
|
|
d411622814 | ||
|
|
38c72d4e29 | ||
|
|
218f08dbde | ||
|
|
99b2368a6c | ||
|
|
6a128e037e | ||
|
|
87518f1e3c | ||
|
|
eec8c2edaf | ||
|
|
be5a8e24c2 | ||
|
|
8c5f269f90 | ||
|
|
59c166cfba | ||
|
|
f826b3269d | ||
|
|
fbb0ee6f24 | ||
|
|
bf0bc3565b | ||
|
|
b0d04ffbd8 | ||
|
|
f624be4093 | ||
|
|
b90c1502e5 | ||
|
|
3b7312d23a | ||
|
|
f1722a280c | ||
|
|
fa912c246c | ||
|
|
d3e818cf8f | ||
|
|
33a5c8a814 | ||
|
|
c08320c957 | ||
|
|
dcc01df968 | ||
|
|
9877b8f414 | ||
|
|
a9429052c2 | ||
|
|
e1f39468fa | ||
|
|
b5db5fc9dc | ||
|
|
ec03c47c19 | ||
|
|
8ca44f9928 | ||
|
|
37869f1c9a | ||
|
|
02897bd8de | ||
|
|
0bc273da4f | ||
|
|
d05d6a35b6 | ||
|
|
ea2ceb731c | ||
|
|
411d46087f | ||
|
|
2a9a5e2318 | ||
|
|
e0e9f0c15a | ||
|
|
823e807b5b | ||
|
|
62c3879cfa | ||
|
|
202ecbc9c7 | ||
|
|
66638a4435 | ||
|
|
d2fb507556 | ||
|
|
09ac9d0b2c | ||
|
|
3568edf711 | ||
|
|
7651228ab2 | ||
|
|
83d39c8d53 | ||
|
|
d5e9895ce0 | ||
|
|
0f2ed2bc2c | ||
|
|
4a2670740c | ||
|
|
f536eb176b | ||
|
|
4165f736e6 | ||
|
|
0400571676 | ||
|
|
43a2b29182 | ||
|
|
39a0836d5c | ||
|
|
a08271c7a8 | ||
|
|
96ca59fbf3 | ||
|
|
db5c26e3b5 | ||
|
|
07804c7c9a | ||
|
|
1d52968d1d | ||
|
|
25c2940a08 | ||
|
|
451ff1540a | ||
|
|
58a5bc1ec7 | ||
|
|
4870a4e3da | ||
|
|
362189a5d3 | ||
|
|
d80de98e91 | ||
|
|
72d3124841 | ||
|
|
b88c3902b2 | ||
|
|
1c2982b94f | ||
|
|
6e0b8b169c | ||
|
|
e35cec5c05 | ||
|
|
005ae23250 | ||
|
|
41e1b171ec | ||
|
|
54a4c639e9 | ||
|
|
608898c15b | ||
|
|
fb383a0ad0 | ||
|
|
9a3521cb25 | ||
|
|
0087bc6370 | ||
|
|
052e63f27f | ||
|
|
c5e554dc7e | ||
|
|
4899116d4b | ||
|
|
6174ea6b4c | ||
|
|
9f57e422cf | ||
|
|
7dfa587d18 | ||
|
|
7d0543c128 | ||
|
|
d1eff9ab68 | ||
|
|
ea1cba6246 | ||
|
|
37f0eb8df3 | ||
|
|
6c5fdd5223 | ||
|
|
6b9425fe37 | ||
|
|
f347077e78 | ||
|
|
9603f08f21 | ||
|
|
b0d2795fe9 | ||
|
|
355c148427 | ||
|
|
a57d31595d | ||
|
|
dec16aa5c2 | ||
|
|
0ef1e5b5eb | ||
|
|
ef3617c6f8 | ||
|
|
2418434568 | ||
|
|
2786737417 | ||
|
|
84590f3fe9 | ||
|
|
2d0c1da975 | ||
|
|
752ac320ae | ||
|
|
59011448c0 | ||
|
|
7142b260c6 | ||
|
|
f8fd9aca8b | ||
|
|
985fdf2cb3 | ||
|
|
6c371c6a8c | ||
|
|
31ddd9516e | ||
|
|
1eab51412f | ||
|
|
45cd4e211e | ||
|
|
81b711ba0b | ||
|
|
422772f23b | ||
|
|
1597ce0eb3 | ||
|
|
99ad52ecbe | ||
|
|
0407ecfcfb | ||
|
|
0ccdedab79 | ||
|
|
0ee1760ee1 | ||
|
|
f90c9ce0e2 | ||
|
|
a299c97bbc | ||
|
|
c259499945 | ||
|
|
ee200942dd | ||
|
|
2e1f2b535e | ||
|
|
2f1985ca7d | ||
|
|
024f4b12a5 | ||
|
|
2bcb9ab7bc | ||
|
|
badbd1af27 | ||
|
|
7c75ca7182 | ||
|
|
ef0ca2affd | ||
|
|
2d9239359d | ||
|
|
d38d7bea6c | ||
|
|
b1ffbdc975 | ||
|
|
0844e2359b | ||
|
|
be3a77bd42 | ||
|
|
9918e5d4f6 | ||
|
|
9263213d8e | ||
|
|
e8fd808dfb | ||
|
|
060141c58a | ||
|
|
b7223abbdc | ||
|
|
73976b6c9d | ||
|
|
226d37bb68 | ||
|
|
f9df96b950 | ||
|
|
c0558ff774 | ||
|
|
073c7b4d08 | ||
|
|
25de1c1feb | ||
|
|
b6cf0454a9 | ||
|
|
f640c5d35c | ||
|
|
24ff8f4c79 | ||
|
|
86778607c9 | ||
|
|
afa57799e4 | ||
|
|
15c6c0eecc | ||
|
|
3ccee08759 | ||
|
|
2c13cbbc0b | ||
|
|
bcb5bdebe7 | ||
|
|
786e1e8712 | ||
|
|
100e163dda | ||
|
|
9f26130a0e | ||
|
|
6b18e88b68 | ||
|
|
4ef808ec0a | ||
|
|
64ac54a64d | ||
|
|
c82e2889e8 | ||
|
|
e8bc2edabf | ||
|
|
e8834dc1a1 | ||
|
|
0544a586ca | ||
|
|
f11a3dfcd6 | ||
|
|
093be8b16b | ||
|
|
caf69aa91a | ||
|
|
9badc002b4 | ||
|
|
a23df7710a | ||
|
|
cc6034ac86 | ||
|
|
dc818135a5 | ||
|
|
8b11f29cf3 | ||
|
|
dc9ae01ef7 | ||
|
|
eadc2ec5c8 | ||
|
|
bd10bf4418 | ||
|
|
42aac41b93 | ||
|
|
7a9db6cfb1 | ||
|
|
6bdd4d0205 | ||
|
|
bc7479d232 | ||
|
|
4ff56aa15e | ||
|
|
7bb814f9db | ||
|
|
93be4ffd4b | ||
|
|
3254caceef | ||
|
|
f4a4ef7a2d | ||
|
|
b48684c6f1 | ||
|
|
a7f3288a87 | ||
|
|
57f785151a | ||
|
|
110e499fe7 | ||
|
|
b21c8e0bfd | ||
|
|
5fdeebd94d | ||
|
|
585388bbd8 | ||
|
|
575c12bba3 | ||
|
|
02dae998c3 | ||
|
|
2bee3aeee9 | ||
|
|
9b86a4453f | ||
|
|
2dd710e7ea | ||
|
|
9315377693 | ||
|
|
37537d5720 | ||
|
|
f5c07b65a0 | ||
|
|
50e00de92a | ||
|
|
34c750d7a9 | ||
|
|
6db9e12de5 | ||
|
|
53f3b128f5 | ||
|
|
f1fba8d1f5 | ||
|
|
23f09d7e02 | ||
|
|
fd56981b4c | ||
|
|
fe659a6017 | ||
|
|
f70be41d80 | ||
|
|
cccce60b3e | ||
|
|
285a46d1ca | ||
|
|
af699c47d1 | ||
|
|
2981f01b46 | ||
|
|
9e2319f977 | ||
|
|
80ab9a891a | ||
|
|
de16da532e | ||
|
|
2eb6a62f4f | ||
|
|
f8dab6acb6 | ||
|
|
5b37da2ac0 | ||
|
|
b3cf3f35fc | ||
|
|
72bc4dcda4 | ||
|
|
aa0650f444 | ||
|
|
879d329a5a | ||
|
|
d559bed0d5 | ||
|
|
f70b138fcb | ||
|
|
90efdb3a5b | ||
|
|
b0c0111b04 | ||
|
|
9eddaebb79 | ||
|
|
b207e24bcd | ||
|
|
3d34590fba | ||
|
|
32141844f1 | ||
|
|
8656c2654e | ||
|
|
f98562fcd7 | ||
|
|
7fd3cb666b | ||
|
|
5809426d75 | ||
|
|
1513848f88 | ||
|
|
e4c9c9f412 | ||
|
|
2c487669f7 | ||
|
|
f4f0daa44d | ||
|
|
0a0002b480 | ||
|
|
43a0c88116 | ||
|
|
688859afc0 | ||
|
|
e06b5d7af7 | ||
|
|
bc30c90af6 | ||
|
|
42c6952edb | ||
|
|
50122fed8a | ||
|
|
5950db197c | ||
|
|
4aa09d1e0e | ||
|
|
e43fe5c833 | ||
|
|
eb2ca10462 | ||
|
|
53716eb0b5 | ||
|
|
1fa0bca2ad | ||
|
|
d9057cc090 | ||
|
|
f6484842b3 | ||
|
|
02ff9741cc | ||
|
|
4439f7b879 | ||
|
|
60bf2d6cb3 | ||
|
|
0c91b0e48e | ||
|
|
845b9e92d8 | ||
|
|
b2648934f0 | ||
|
|
5a5e128165 | ||
|
|
98b1ce91f6 | ||
|
|
beb7425c18 | ||
|
|
f6f2d42ee9 | ||
|
|
e8af340557 | ||
|
|
e1fb7b76e9 | ||
|
|
648fdc56a0 | ||
|
|
868ffed77c | ||
|
|
a0a0062d61 | ||
|
|
7397ab2cf1 | ||
|
|
c383befd25 | ||
|
|
d6b78d0e37 | ||
|
|
19aa05fab8 | ||
|
|
23dc099299 | ||
|
|
8721667a2f | ||
|
|
ef1b7dd3d7 | ||
|
|
9d4362403c | ||
|
|
acbfc40888 | ||
|
|
713b9249e1 | ||
|
|
3a6314dbe1 | ||
|
|
5d97d72753 | ||
|
|
c6bb361b84 | ||
|
|
202df30aab | ||
|
|
d2e40f66cc | ||
|
|
b6e916db58 | ||
|
|
1d99441d37 | ||
|
|
b40f813bab | ||
|
|
bf561c52a5 | ||
|
|
952e513379 | ||
|
|
17061d981e | ||
|
|
ae5a209b11 | ||
|
|
fecebe1dbf | ||
|
|
8146f2e607 | ||
|
|
71078f91ed | ||
|
|
a4da6300c8 | ||
|
|
9547ee90db | ||
|
|
6530310ed5 | ||
|
|
2a8380ce57 | ||
|
|
f4369d76c8 | ||
|
|
fba1e48fae | ||
|
|
63c2391984 | ||
|
|
5b5362aa8d | ||
|
|
bf539f9bfd | ||
|
|
d3d83d7b90 | ||
|
|
26f1bc8e8c | ||
|
|
cc6084b9ac | ||
|
|
c4e9226bdb | ||
|
|
1c1ad9bcf4 | ||
|
|
5b5c8b6005 | ||
|
|
3e5139fd2f | ||
|
|
c6843f40c8 | ||
|
|
c49888bd84 | ||
|
|
59a40fc8ed | ||
|
|
559a98f0d7 | ||
|
|
7accaeb490 | ||
|
|
8a9e8d60d2 | ||
|
|
2297d638c1 | ||
|
|
a9b0bcfafe | ||
|
|
c7bc4cacde | ||
|
|
4cfdc57712 | ||
|
|
7e7d5d38ea | ||
|
|
0b0b72c2fa | ||
|
|
e5bb8391a8 | ||
|
|
93d4259cf0 | ||
|
|
e11b6b8f75 | ||
|
|
ed7fb149a2 | ||
|
|
0dba28b5c2 | ||
|
|
0c47219a72 | ||
|
|
9126dd2d90 | ||
|
|
6a11f3edf4 | ||
|
|
4fbe7a5fab | ||
|
|
fc4e12b8f1 | ||
|
|
5da78905a6 | ||
|
|
b1cce04646 | ||
|
|
b731c96679 | ||
|
|
a0add91987 | ||
|
|
a25a27817f | ||
|
|
b53cd9798f | ||
|
|
f78ce087ba | ||
|
|
f315029268 | ||
|
|
7e5aeac28f | ||
|
|
b9abb64fbb | ||
|
|
bc71874262 | ||
|
|
cb64adaadc | ||
|
|
2134aa3d5c | ||
|
|
40f70673c6 | ||
|
|
b919e29871 | ||
|
|
5193d59219 | ||
|
|
103921dac0 | ||
|
|
1747eeff1a | ||
|
|
3e0757c101 | ||
|
|
3644b0bc96 | ||
|
|
c721604d25 | ||
|
|
f2a9ed4873 | ||
|
|
3ea2a618ad | ||
|
|
37bdd36d70 | ||
|
|
6531f187d8 | ||
|
|
be3afd0bec | ||
|
|
d5f13f6c08 | ||
|
|
9e72b7b65c | ||
|
|
0cdeb8ed96 | ||
|
|
f00c8bcef8 | ||
|
|
21aa0df8b2 | ||
|
|
1e50282ae8 | ||
|
|
69f594d22c | ||
|
|
10448487e5 | ||
|
|
401ff10295 | ||
|
|
06c82c5069 | ||
|
|
07e5877144 | ||
|
|
f60def5e9a | ||
|
|
74872b0dc9 | ||
|
|
3d51646c4b | ||
|
|
41a4b734d3 | ||
|
|
3f932c52b0 | ||
|
|
d7825b3c1d | ||
|
|
7823474022 | ||
|
|
b07b391304 | ||
|
|
5feea97b53 | ||
|
|
8b8a7a7f9b | ||
|
|
9a7158de18 | ||
|
|
839bf025a8 | ||
|
|
8a946c2ee7 | ||
|
|
38250f6403 | ||
|
|
1b114162ab | ||
|
|
2603cc564d | ||
|
|
d34fea59e1 | ||
|
|
91835966eb | ||
|
|
5565366a33 | ||
|
|
a1b274108f | ||
|
|
399731e3a0 | ||
|
|
2dccebd4b8 | ||
|
|
3bab12197f | ||
|
|
de89bbb00c | ||
|
|
441e792849 | ||
|
|
6014a62b3e | ||
|
|
ff2a1b86c3 | ||
|
|
38250f9aef | ||
|
|
9df5fda777 | ||
|
|
8f1a38d916 | ||
|
|
ddf52bd347 | ||
|
|
c6f7fd7e47 | ||
|
|
5ec056633f | ||
|
|
af52bc4fe6 | ||
|
|
fce7c958ed | ||
|
|
8988af58f4 | ||
|
|
48c3d20041 | ||
|
|
5b39929d47 | ||
|
|
260695afd0 | ||
|
|
6e5217d320 | ||
|
|
1bf704a571 | ||
|
|
8708bb0280 | ||
|
|
ef1ffcb717 | ||
|
|
f0ce98441f | ||
|
|
d98a8578d6 | ||
|
|
09150b0616 | ||
|
|
ae7a3cddae | ||
|
|
57d53a47e8 | ||
|
|
81a889fd88 | ||
|
|
6b8ae8e66d | ||
|
|
6b26583e84 | ||
|
|
fe464a2fea | ||
|
|
1d3d02c70d | ||
|
|
7887e68ff7 | ||
|
|
e4017402ef | ||
|
|
fbc2ad5815 | ||
|
|
26b11915b1 | ||
|
|
7a4dfb6aa8 | ||
|
|
3795d77113 | ||
|
|
41d5fefc10 | ||
|
|
a72120190a | ||
|
|
f105f2f2fd | ||
|
|
252f034b30 | ||
|
|
067be2b3fe | ||
|
|
3f687dbddf | ||
|
|
5e1d844f3d | ||
|
|
6ba1c625cd | ||
|
|
8a6ef65c2c | ||
|
|
7282ce9014 | ||
|
|
f94b85db83 | ||
|
|
bf682afb98 | ||
|
|
8966480c0e | ||
|
|
7de6eba061 | ||
|
|
edb62dd902 | ||
|
|
10fa526fa0 | ||
|
|
5cfe0b86d5 | ||
|
|
dd1c3d72e2 | ||
|
|
1b22f5376b | ||
|
|
f405517de1 | ||
|
|
1df222f179 | ||
|
|
de65ba7aba | ||
|
|
196207c228 | ||
|
|
0ef6cfd39b | ||
|
|
d0111aa0c4 | ||
|
|
0a89e8b838 | ||
|
|
057b80611f | ||
|
|
30ab1f567d | ||
|
|
1b7d23e81e | ||
|
|
f80513974e | ||
|
|
ff552ddbaa | ||
|
|
eef57dddf4 | ||
|
|
ae5b0e1fc1 | ||
|
|
6d70a4ae16 | ||
|
|
3db2e034c4 | ||
|
|
71a2a2caa6 | ||
|
|
b0b707cb6e | ||
|
|
d614d161c7 | ||
|
|
41421ff9da | ||
|
|
55ef9ef680 | ||
|
|
a90bc78534 | ||
|
|
91bf18fcc5 | ||
|
|
3a5798b097 | ||
|
|
e74a733024 | ||
|
|
8a068ce849 | ||
|
|
bc18bf4ec0 | ||
|
|
8d5c1201f2 | ||
|
|
bdd57f0756 | ||
|
|
145612c2f5 | ||
|
|
c49f3b5df6 | ||
|
|
2b15cf57dd | ||
|
|
de2eb600b3 | ||
|
|
1f93aa5d5d | ||
|
|
911b0fddd3 | ||
|
|
1e0ce5d1bd | ||
|
|
c6185c8484 | ||
|
|
a111390c56 | ||
|
|
8ccb3cbdba | ||
|
|
283d735e2b | ||
|
|
e72addcf8e | ||
|
|
032fc42e64 | ||
|
|
c9a1b5d162 | ||
|
|
13400e3e58 | ||
|
|
412c1ab5bc | ||
|
|
00247d53db | ||
|
|
c231321cd3 | ||
|
|
7f896889ba | ||
|
|
a0a5c4c5af | ||
|
|
8bec3febd8 | ||
|
|
f70fa3bae6 | ||
|
|
58b8b3fa07 | ||
|
|
ca003f4f3e | ||
|
|
c2c08196d8 | ||
|
|
dd85a8c183 | ||
|
|
34b0b6a613 | ||
|
|
39d2337859 | ||
|
|
05fe70b582 | ||
|
|
c752f6c013 | ||
|
|
511e328727 | ||
|
|
4a1698c6ba | ||
|
|
54b74b8e85 | ||
|
|
2701a6bd48 | ||
|
|
fac6c69456 | ||
|
|
ac64c9e546 | ||
|
|
48893af7bb | ||
|
|
50464cd4f4 | ||
|
|
09be360a0f | ||
|
|
37d75ba241 | ||
|
|
029e01bb80 | ||
|
|
6a8b5b36b4 | ||
|
|
35a1421e96 | ||
|
|
74c8041fb6 | ||
|
|
e733dc3bc3 | ||
|
|
0187b657ae | ||
|
|
a11bf99ce0 | ||
|
|
0dba4ad0f9 | ||
|
|
5209dad907 | ||
|
|
e4f4c63370 | ||
|
|
b866a96cfa | ||
|
|
10f85fadfe | ||
|
|
b53b8b8ae7 | ||
|
|
8963a5228d | ||
|
|
900196e135 | ||
|
|
a55faeac18 | ||
|
|
cbeeea62cf | ||
|
|
b615077bab | ||
|
|
0385b17ce0 | ||
|
|
408bfece51 | ||
|
|
bb2ce1a108 | ||
|
|
e3a2dd1b13 | ||
|
|
4eb2804db9 | ||
|
|
517cea3636 | ||
|
|
b27a4cbe2a | ||
|
|
094f742657 | ||
|
|
00ba1cbce1 | ||
|
|
6ce013dd4b | ||
|
|
d53cdc5378 | ||
|
|
cfa28690db | ||
|
|
2301eb69b1 | ||
|
|
33be3016fb | ||
|
|
2eb181d28c | ||
|
|
25e8ea17e1 | ||
|
|
1358632e67 | ||
|
|
e9aa57e8bd | ||
|
|
4f235ef87f | ||
|
|
8d9766a9df | ||
|
|
76f6a4abb4 | ||
|
|
5432a1d985 | ||
|
|
54a4f99c4e | ||
|
|
13198357e9 | ||
|
|
284816ee9f | ||
|
|
65242abc3b | ||
|
|
131a67e7ef | ||
|
|
424bca15c8 | ||
|
|
6332a4cf00 | ||
|
|
60b45dcbb6 | ||
|
|
535e109a3a | ||
|
|
77cfbd9f2d | ||
|
|
26f754d9dd | ||
|
|
c08357c32f | ||
|
|
940a6863ea | ||
|
|
569acea0ee | ||
|
|
4b021a3541 | ||
|
|
5046f8501c | ||
|
|
f62441367f | ||
|
|
0435f9b28c | ||
|
|
bd33fea732 | ||
|
|
1fb9cfcdb1 | ||
|
|
43ff46becf | ||
|
|
46b09e4190 | ||
|
|
3116522e7c | ||
|
|
f482236665 | ||
|
|
c45522df4c | ||
|
|
f9abf5e0e2 | ||
|
|
463d6bac8b | ||
|
|
c381662cac | ||
|
|
1285cd9011 | ||
|
|
79d77cfd81 | ||
|
|
b9c5eee7d9 | ||
|
|
5f41140535 | ||
|
|
debf552ed2 | ||
|
|
e5d3ea7771 | ||
|
|
28e851c169 | ||
|
|
c69d7f1a6c | ||
|
|
cb76999bad | ||
|
|
0a2076b26a | ||
|
|
27061cc9f4 | ||
|
|
cc0e7efb37 | ||
|
|
208d1715a7 | ||
|
|
0742f5629c | ||
|
|
b9e40fbaac | ||
|
|
cc36cc5999 | ||
|
|
4f6882e898 | ||
|
|
01432403af | ||
|
|
04e484c484 | ||
|
|
f0a561fe67 | ||
|
|
7161ecd31b | ||
|
|
0699f5bfb4 | ||
|
|
943448772e | ||
|
|
e2126e05e7 | ||
|
|
3b6a00b664 | ||
|
|
e0f5d8e86d | ||
|
|
eabf3c8d0f | ||
|
|
7946ad2634 | ||
|
|
cbdf3393a2 | ||
|
|
0262b6d2a5 | ||
|
|
9a998d5e24 | ||
|
|
9fe39ede9f | ||
|
|
8a52a16847 | ||
|
|
434404e3bb | ||
|
|
af98fc9d5f | ||
|
|
30a0e58d63 | ||
|
|
ccc854d14e | ||
|
|
b337577cf1 | ||
|
|
dc8b488bbe | ||
|
|
a9e40281e7 | ||
|
|
761e0c460a | ||
|
|
2ae9b69871 | ||
|
|
fa9aa1c961 | ||
|
|
782277f11a | ||
|
|
8a411bae66 | ||
|
|
719376730d | ||
|
|
0bd410a66a | ||
|
|
f721d02c8a | ||
|
|
c96df0e37a | ||
|
|
0fd2834539 | ||
|
|
1f3e4a76f9 | ||
|
|
82bcdbb8aa | ||
|
|
1fc2c3823c | ||
|
|
578f69bcf4 | ||
|
|
5ff2ae8389 | ||
|
|
7535e3930a | ||
|
|
24de89bd0e | ||
|
|
b4ed3c1969 | ||
|
|
66e12dbd69 | ||
|
|
078763a94c | ||
|
|
39e25528eb | ||
|
|
a2fcc47772 | ||
|
|
f079c0bd9f | ||
|
|
1358bac6d1 | ||
|
|
dff467d982 | ||
|
|
6e435da7f9 | ||
|
|
0888cdd412 | ||
|
|
989ae81c71 | ||
|
|
039fac633e | ||
|
|
a608f65b24 | ||
|
|
3f69c71157 | ||
|
|
2b9967fbcc | ||
|
|
45de259b43 | ||
|
|
81a4edcf6a | ||
|
|
968b49ba0a | ||
|
|
7865c5c51d | ||
|
|
ca642b020d | ||
|
|
75670d3f63 | ||
|
|
d0c010e39b | ||
|
|
b48f7f7eac | ||
|
|
a039bad299 | ||
|
|
18b94ea838 | ||
|
|
ccc4e547ea | ||
|
|
1a2255ab44 | ||
|
|
ee6c11876a | ||
|
|
a3753b496e | ||
|
|
9fc7283a40 | ||
|
|
c393853b4e | ||
|
|
564172510d | ||
|
|
3b95d88bf2 | ||
|
|
2cca7488bf | ||
|
|
3f3f958c14 | ||
|
|
4099d1eeba | ||
|
|
05b81f333c | ||
|
|
1665b4a2a3 | ||
|
|
dfcdd5b8aa | ||
|
|
643f00d3f9 | ||
|
|
faa4d9ff5f | ||
|
|
c9676c9147 | ||
|
|
9ae6d8fee3 | ||
|
|
f8519e10b8 | ||
|
|
9611354f08 | ||
|
|
e813e3491e | ||
|
|
88d7a10128 | ||
|
|
5f0406534c | ||
|
|
636add246c | ||
|
|
5164ae3838 | ||
|
|
01103d077b | ||
|
|
a98e845516 | ||
|
|
f19f980724 | ||
|
|
2498d15dde | ||
|
|
a3908f47f1 | ||
|
|
4ec77e2e28 | ||
|
|
f66f793c07 | ||
|
|
25aea2a072 | ||
|
|
d2eaabd0df | ||
|
|
4bc1d395de | ||
|
|
8068f9bf38 | ||
|
|
14a5b45c06 | ||
|
|
ea4b1c1c0c | ||
|
|
9b42d7daaf | ||
|
|
fb7348ae06 | ||
|
|
dceebbfa31 | ||
|
|
49f16c4575 | ||
|
|
d40415912f | ||
|
|
bd907174e8 | ||
|
|
a475e62a3e | ||
|
|
d91004a73d | ||
|
|
d8351a2ef4 | ||
|
|
5f9ffa17b1 | ||
|
|
38542f76a9 | ||
|
|
9239088e87 | ||
|
|
07d8a4650e | ||
|
|
884499d37e | ||
|
|
a811a4a130 | ||
|
|
cc8cfb145a | ||
|
|
12fc9fa8a7 | ||
|
|
68f63fe9ec | ||
|
|
928d28a7b3 | ||
|
|
52f0c37d09 | ||
|
|
07be9fc3a6 | ||
|
|
493beb23f2 | ||
|
|
3883f22ad1 | ||
|
|
bf9d8e9214 | ||
|
|
814033365b | ||
|
|
5979f096d1 | ||
|
|
e85927119c | ||
|
|
7d2e68fdbd | ||
|
|
b673d0670f | ||
|
|
ee437c0557 | ||
|
|
4624cf1214 | ||
|
|
27ddd14e9f | ||
|
|
726ebad9bc | ||
|
|
0e57aafbb1 | ||
|
|
4ddafbd563 | ||
|
|
7f68f256cf | ||
|
|
bb675baaa9 | ||
|
|
29b2fdb0c5 | ||
|
|
78e831a31c | ||
|
|
8c758e127c | ||
|
|
b4fbf6d275 | ||
|
|
e02af94947 | ||
|
|
1eb9fc5f33 | ||
|
|
34f05a3195 | ||
|
|
33a9ac6087 | ||
|
|
1858d1c340 | ||
|
|
3d84c3db25 | ||
|
|
1930772693 | ||
|
|
792d9a921d | ||
|
|
9f3c639a9c | ||
|
|
40c4beeb57 | ||
|
|
5871c81181 | ||
|
|
ceb51ddaa1 | ||
|
|
eaf607e88b | ||
|
|
8cd2b0e778 | ||
|
|
a62dd44b20 | ||
|
|
c1bf810108 | ||
|
|
cd8f82c007 | ||
|
|
436a9b69f3 | ||
|
|
c33d3174b8 | ||
|
|
01d146c29f | ||
|
|
1de43149bb | ||
|
|
a9fc63f7a1 | ||
|
|
0abe42a0f4 | ||
|
|
e63c7821d5 | ||
|
|
e4dd8dc28e | ||
|
|
5eac8d6739 | ||
|
|
2f93eb6102 | ||
|
|
0a414f4caa | ||
|
|
9164fa6aaa | ||
|
|
992e3464b8 | ||
|
|
fbe143d9cb | ||
|
|
4ced23deaf | ||
|
|
711ecdd54f | ||
|
|
aaf0453b7c | ||
|
|
719cd461d3 | ||
|
|
ab60efb535 | ||
|
|
d1effbb338 | ||
|
|
2fc528ce00 | ||
|
|
62c12d2161 | ||
|
|
ebd0f98e2b | ||
|
|
e3ceee2dce | ||
|
|
91120e0429 | ||
|
|
b7e8e35c0e | ||
|
|
ebbd4039bc | ||
|
|
75f2365558 | ||
|
|
e4a8d2617b | ||
|
|
6f82b9f482 | ||
|
|
df2c5fa81d | ||
|
|
4e290e48b2 | ||
|
|
47d6a94656 | ||
|
|
6b426a2edd | ||
|
|
c9be1d5ffd | ||
|
|
880219645e | ||
|
|
c3898f3c1f | ||
|
|
ee2291eb0d | ||
|
|
fb400b4868 | ||
|
|
bce68134b6 | ||
|
|
bfe9cdb7f2 | ||
|
|
b894521bd2 | ||
|
|
acf19500ee | ||
|
|
9f9c333cbc | ||
|
|
4bd54dad33 | ||
|
|
6ba3e68bd2 | ||
|
|
b45a10818e | ||
|
|
e747daf604 | ||
|
|
94f1feeb59 | ||
|
|
f4403f90f8 | ||
|
|
6cacb9a21e | ||
|
|
e02d5c9d41 | ||
|
|
c9e6d3696c | ||
|
|
f1f5de1c8d | ||
|
|
4e4860579e | ||
|
|
75c6255d16 | ||
|
|
89e311b1ae | ||
|
|
518d28c23a | ||
|
|
a1d193963d | ||
|
|
e5ef103b05 | ||
|
|
35bcb1d6a9 | ||
|
|
1ac05cc5ad | ||
|
|
248f552ab4 | ||
|
|
77c18d1e1b | ||
|
|
3bcbd14bb1 | ||
|
|
d2dd9d108d | ||
|
|
c8a10e97c8 | ||
|
|
db844b152a | ||
|
|
3546383cf0 | ||
|
|
ab072ee416 | ||
|
|
12a90e98bf | ||
|
|
55e4d54927 | ||
|
|
51e66ec410 | ||
|
|
0b75eee364 | ||
|
|
e221cd4a53 | ||
|
|
4e84dfa683 | ||
|
|
70635753a3 | ||
|
|
76de7c0c26 | ||
|
|
f405daa922 | ||
|
|
98b4596a46 | ||
|
|
5648d95c4a | ||
|
|
df6c12cdcc | ||
|
|
6292df659f | ||
|
|
ef3a874f41 | ||
|
|
0b5235e68c | ||
|
|
d9bad09ede | ||
|
|
48cdbffd24 | ||
|
|
ebfb8a5613 | ||
|
|
4359e8154d | ||
|
|
491c8d92b8 | ||
|
|
a64acd8baa | ||
|
|
ea50ebd36d | ||
|
|
e16021340d | ||
|
|
c0a9985da7 | ||
|
|
525253d50e | ||
|
|
da56c72f59 | ||
|
|
27dfb1d4c0 | ||
|
|
77c1cc0482 | ||
|
|
d91ef153e7 | ||
|
|
642945cc00 | ||
|
|
c21c51a6fc | ||
|
|
e67a0f80e0 | ||
|
|
c9a231db0e | ||
|
|
57148f54e1 | ||
|
|
c56d1559fc | ||
|
|
12f77440ef | ||
|
|
ecfe32e3a0 | ||
|
|
605927fbd9 | ||
|
|
3d69bbfa87 | ||
|
|
b12b2b83fc | ||
|
|
33c76f19de | ||
|
|
e5b787e84d | ||
|
|
ecca7525cc | ||
|
|
0fcb124602 | ||
|
|
889cbf9ada | ||
|
|
c2b47097c0 | ||
|
|
7b3fb22290 | ||
|
|
6bb9868271 | ||
|
|
6ed5ef5fe0 | ||
|
|
c8bbd13ea8 | ||
|
|
d2860a6c7d | ||
|
|
20143b359c | ||
|
|
d8b33dc147 | ||
|
|
37fd953378 | ||
|
|
079b81358b | ||
|
|
8559a4ae0f | ||
|
|
8673a4aa25 | ||
|
|
d4ed2e61f7 | ||
|
|
45c1d4f96f | ||
|
|
10ce3d129d | ||
|
|
963459d736 | ||
|
|
a26bee8fa1 | ||
|
|
db45b2ca02 | ||
|
|
e1dd570585 | ||
|
|
35c0cd219d | ||
|
|
91701c2db1 | ||
|
|
88f94fa28c | ||
|
|
ac1aaddc00 | ||
|
|
7407be896e | ||
|
|
80a55e9c83 | ||
|
|
e621250116 | ||
|
|
e28eb6de30 | ||
|
|
327286dbcd | ||
|
|
c5d35aca33 | ||
|
|
9c3559f0ad | ||
|
|
86bd9b6e70 | ||
|
|
718aa505c4 | ||
|
|
7cd1690f3d | ||
|
|
5bc07cc90b | ||
|
|
70005be4ff | ||
|
|
540a441259 | ||
|
|
b4626afb61 | ||
|
|
59e6b14395 | ||
|
|
0f95a93a2c | ||
|
|
0d13142332 | ||
|
|
21d2683976 | ||
|
|
48d52d85c3 | ||
|
|
5d69bbfbdb | ||
|
|
0f74729758 | ||
|
|
0c0f13eda4 | ||
|
|
69ca83f755 | ||
|
|
0a83b78ba8 | ||
|
|
3f4261276e | ||
|
|
f065c87bcf | ||
|
|
c945eae942 | ||
|
|
7ee15457ed | ||
|
|
d03b80bc12 | ||
|
|
93cefab1a3 | ||
|
|
b7b7b29f50 | ||
|
|
46acb09ed8 | ||
|
|
1444801374 | ||
|
|
16fca262be | ||
|
|
5b43c63c88 | ||
|
|
04271a5e93 | ||
|
|
1c88c3b3b5 | ||
|
|
916b5d1fff | ||
|
|
6cbed959e6 | ||
|
|
2639566c6e | ||
|
|
3694b6914a | ||
|
|
0f9d201183 | ||
|
|
30e7fb7307 | ||
|
|
aa5961a445 | ||
|
|
e9dcfd4bd2 | ||
|
|
3ec84a11f8 | ||
|
|
9b7a6c5238 | ||
|
|
fdeeabba78 | ||
|
|
e0660740d9 | ||
|
|
3ba9519faf | ||
|
|
8b82abb953 | ||
|
|
d0365fd21f | ||
|
|
7b71fd0c68 | ||
|
|
70a5b53e03 | ||
|
|
0db4dc0024 | ||
|
|
e8067cb685 | ||
|
|
163d3cdf14 | ||
|
|
f160a45b25 | ||
|
|
c75f71dd72 | ||
|
|
06ada03ed9 | ||
|
|
93eca95aec | ||
|
|
45b772d8cb | ||
|
|
08e2e570a7 | ||
|
|
57d722011a | ||
|
|
e81a5e9c9c | ||
|
|
ba055115e0 | ||
|
|
1330419446 | ||
|
|
c9f17305e6 | ||
|
|
cf75619bc3 | ||
|
|
331cd7c251 | ||
|
|
78eb174ea2 | ||
|
|
8652c11031 | ||
|
|
8752ceef13 | ||
|
|
ca8dea83a9 | ||
|
|
aab7cb7dfe | ||
|
|
e28f77cbad | ||
|
|
37ac5e52bf | ||
|
|
b9bfb1bc91 | ||
|
|
0b57fee3f8 | ||
|
|
1042a8d887 | ||
|
|
40b7302af8 | ||
|
|
f178f2ae3f | ||
|
|
d73b257d65 | ||
|
|
b6d6a54f80 | ||
|
|
052aaa4c4d | ||
|
|
3e8857271b | ||
|
|
2728dcc95b | ||
|
|
930fabe43f | ||
|
|
30994aad30 | ||
|
|
55e971e33d | ||
|
|
92c0c6953a | ||
|
|
ffee873941 | ||
|
|
08109367e8 | ||
|
|
01d46f3a20 | ||
|
|
cc15299c32 | ||
|
|
7bdeed2039 | ||
|
|
0965d2d9f6 | ||
|
|
a4a04f932e | ||
|
|
dee8c51547 | ||
|
|
bc834c395b | ||
|
|
1e577f347b | ||
|
|
2726c22f0b | ||
|
|
c26a0b5aab | ||
|
|
90ce5b3d41 | ||
|
|
407181538b | ||
|
|
7c02b5a58d | ||
|
|
1ab95a536a | ||
|
|
1e13a2d242 | ||
|
|
08032efed0 | ||
|
|
a58659cd4a | ||
|
|
9d1fde7519 | ||
|
|
036d907df7 | ||
|
|
3005965266 | ||
|
|
1a49df5fa9 | ||
|
|
9eacf93928 | ||
|
|
f86359cc3f | ||
|
|
32b2964eed | ||
|
|
8d3278b962 | ||
|
|
69ae75c66c | ||
|
|
6aa7f6f732 | ||
|
|
17524432ff | ||
|
|
db0a1dc7d9 | ||
|
|
8c97ad4c30 | ||
|
|
6986d9316c | ||
|
|
b82b4f2993 | ||
|
|
0f0557d78d | ||
|
|
5cda2542fd | ||
|
|
9a70d99980 | ||
|
|
7abbda8ba2 | ||
|
|
6ebe9e0c1d | ||
|
|
304f1fcf86 | ||
|
|
6aa755070a | ||
|
|
11770bf5e2 | ||
|
|
d7c96cf289 | ||
|
|
daa6b95b08 | ||
|
|
5e7cb68be9 | ||
|
|
44eb279ef8 | ||
|
|
26b6da134f | ||
|
|
238e12af22 | ||
|
|
b521ff3b4f | ||
|
|
af90faf198 | ||
|
|
4b64542fe0 | ||
|
|
8a15147bc5 | ||
|
|
cda3b6ff52 | ||
|
|
b031671138 | ||
|
|
973bbecf1a | ||
|
|
285d8c6589 | ||
|
|
67fc1dafd0 | ||
|
|
48bbdde66b | ||
|
|
eb1ff03418 | ||
|
|
208b230744 | ||
|
|
a33d1c959a | ||
|
|
b187e96ec9 | ||
|
|
228ddddc1c | ||
|
|
e7065eaa93 | ||
|
|
f41901cdf6 | ||
|
|
00224771e3 | ||
|
|
5e8c2b0768 | ||
|
|
698e795a5f | ||
|
|
aad12d0b26 | ||
|
|
ab518ae50e | ||
|
|
e7792e5d46 | ||
|
|
0dd8e0167d | ||
|
|
83aae35b8e | ||
|
|
066789a6e3 | ||
|
|
a7dce47854 | ||
|
|
dbd0e2b386 | ||
|
|
4515987058 | ||
|
|
75face6139 | ||
|
|
8727e5f2be | ||
|
|
2cf5f040a5 | ||
|
|
e513ffef75 | ||
|
|
d497bf845b | ||
|
|
76f31faa3b | ||
|
|
0dcc43316f | ||
|
|
249c3c165a | ||
|
|
d227084339 | ||
|
|
a7cd76bb3b | ||
|
|
67f1778065 | ||
|
|
e1199fa335 | ||
|
|
d1255914df | ||
|
|
ef046bf4f6 | ||
|
|
ea44d3031d | ||
|
|
feaa8a41c7 | ||
|
|
d2389f8fab | ||
|
|
c781f17742 | ||
|
|
81cd3a3cd6 | ||
|
|
4b1d492561 | ||
|
|
f2ebf2469b | ||
|
|
7817f48322 | ||
|
|
06a058d731 | ||
|
|
8517089b3e | ||
|
|
253ec6a63d | ||
|
|
415bff26fe | ||
|
|
18240193ba | ||
|
|
891f9defeb | ||
|
|
dce8682827 | ||
|
|
94d337eb0f | ||
|
|
d927fbc9ab | ||
|
|
ab32e9e043 | ||
|
|
89653cb32f | ||
|
|
7418905aef | ||
|
|
b6cb6ce0d3 | ||
|
|
f61d4b7a87 | ||
|
|
d8c4ecea0b | ||
|
|
fb47a337ba | ||
|
|
70e68893fe | ||
|
|
815169383e | ||
|
|
7bee98bae2 | ||
|
|
851b3970e7 | ||
|
|
d980620010 | ||
|
|
03077db45d | ||
|
|
44527e6023 | ||
|
|
5abcdc9671 | ||
|
|
76a771b749 | ||
|
|
46376888cd | ||
|
|
ec735cbce0 | ||
|
|
534264d209 | ||
|
|
90b785c09a | ||
|
|
6628a3b6ea | ||
|
|
0fb4fb4797 | ||
|
|
7cb0f5f84a | ||
|
|
11d8823791 | ||
|
|
95fd517431 | ||
|
|
bea2e15864 | ||
|
|
c7b8073afc | ||
|
|
928ea564d1 | ||
|
|
761a82bc9a | ||
|
|
78dc13fbf9 | ||
|
|
f9aa01de32 | ||
|
|
dc752327bb | ||
|
|
1a97998644 | ||
|
|
702b46c80d | ||
|
|
7fc835afe3 | ||
|
|
9a35656210 | ||
|
|
0113f5a72d | ||
|
|
19fd5301bf | ||
|
|
96e3be3aa3 | ||
|
|
b9bd2d3eb9 | ||
|
|
9726a259bf | ||
|
|
9f7f86b534 | ||
|
|
06bf0707f7 | ||
|
|
571a51989e | ||
|
|
f631c1d73b | ||
|
|
ad5a108dfd | ||
|
|
c834ef409e | ||
|
|
c12a1dc5d8 | ||
|
|
d2fba2bf35 | ||
|
|
35043ad8ac | ||
|
|
bda08bfa04 | ||
|
|
73c874698b | ||
|
|
f06abda6f5 | ||
|
|
10dc129a4b | ||
|
|
884a209ccf | ||
|
|
f9da776b33 | ||
|
|
f214758dd1 | ||
|
|
6b5a34cdf3 | ||
|
|
b7ddd30181 | ||
|
|
659d449460 | ||
|
|
4f63f9f327 | ||
|
|
109b16d488 | ||
|
|
8b79a31333 | ||
|
|
1cdadb1e3b | ||
|
|
1cecfee634 | ||
|
|
943c396b86 | ||
|
|
c15e6905c4 | ||
|
|
4e85257c6e | ||
|
|
e4fc2cbfd3 | ||
|
|
bcb0cc0b18 | ||
|
|
9701f1c4b2 | ||
|
|
531eba18a6 | ||
|
|
677c2c112c | ||
|
|
a10cfba766 | ||
|
|
c450ac343f | ||
|
|
f8ce384446 | ||
|
|
4472f7bbc3 | ||
|
|
79cbe1fdbb | ||
|
|
407ecc6b5f | ||
|
|
9b672bcaa2 | ||
|
|
36761b2055 | ||
|
|
ff4a9d381d | ||
|
|
8c02f9b7c8 | ||
|
|
2589d55611 | ||
|
|
296b7a580b | ||
|
|
9d72a742e3 | ||
|
|
0c68604823 | ||
|
|
31ad1d29c7 | ||
|
|
3733a85d8d | ||
|
|
daaccc7cb7 | ||
|
|
5ad0140f48 | ||
|
|
f82ef0f7c3 | ||
|
|
024451c65c | ||
|
|
c84b3c4b73 | ||
|
|
408f450286 | ||
|
|
150053b3fa | ||
|
|
fb53986a80 | ||
|
|
17da4242b0 | ||
|
|
d5fca08da4 | ||
|
|
b72d43cbf9 | ||
|
|
b6023905ff | ||
|
|
07c886f944 | ||
|
|
544e5ee1fb | ||
|
|
443071db57 | ||
|
|
1e9bcf26ce | ||
|
|
9ea5a4c468 | ||
|
|
59c3923672 | ||
|
|
39ce94276a | ||
|
|
1520c7bf5b | ||
|
|
e10bd5177f | ||
|
|
33f9074a62 | ||
|
|
8258bd467a | ||
|
|
5ebc05f560 | ||
|
|
5062741bd7 | ||
|
|
707863c1fb | ||
|
|
c97b4f1971 | ||
|
|
e0796b6f1f | ||
|
|
959a19e118 | ||
|
|
1d5b6f26fe | ||
|
|
5ca5ec33cc | ||
|
|
f1742c93d7 | ||
|
|
a42b4ad44e | ||
|
|
1d59a73fef | ||
|
|
cf6e4d82e7 | ||
|
|
2e487379ad | ||
|
|
f70be203e4 | ||
|
|
c368e46e7f | ||
|
|
3dfa98c991 | ||
|
|
2d44dcc8be | ||
|
|
4053c01b53 | ||
|
|
61be6844aa | ||
|
|
578ba76e6c | ||
|
|
d6f0ecc622 | ||
|
|
b6595c4d60 | ||
|
|
78db18739a | ||
|
|
2f256af412 | ||
|
|
353bfbaf93 | ||
|
|
48a2d34cfe | ||
|
|
ef5b0f4c8e | ||
|
|
b47ba2c431 | ||
|
|
2d6a076ab3 | ||
|
|
c0c4e008aa | ||
|
|
1bf3a14353 | ||
|
|
054127112c | ||
|
|
edea94c332 | ||
|
|
30b29d8f87 | ||
|
|
d8c5ba2185 | ||
|
|
0613af0a20 | ||
|
|
5e803219d8 | ||
|
|
9be20afeb5 | ||
|
|
67b10f816c | ||
|
|
3aa2fd3b2c | ||
|
|
8cdbf014bd | ||
|
|
a63ce6ea94 | ||
|
|
4ca3fd0a01 | ||
|
|
86d077da00 | ||
|
|
17db291b5c | ||
|
|
7bfa5cf284 | ||
|
|
674416fbc9 | ||
|
|
b34feeeb86 | ||
|
|
169b0820f0 | ||
|
|
3c195d04f3 | ||
|
|
c417de409d | ||
|
|
c2f6405a0f | ||
|
|
c0446edcc2 | ||
|
|
4ed05da2be | ||
|
|
8d1e5d3ae1 | ||
|
|
774c289ba8 | ||
|
|
8e22004cb5 | ||
|
|
d39297251f | ||
|
|
3b6c1d74c7 | ||
|
|
798f8a0dc1 | ||
|
|
e083720d54 | ||
|
|
3ce782b7f2 | ||
|
|
8a121fa0e7 | ||
|
|
e8ad5b9c1c | ||
|
|
e88a1ba74a | ||
|
|
c205d3b53a | ||
|
|
4f24b20fcb | ||
|
|
a62ec4437b | ||
|
|
2a6ff3f56b | ||
|
|
14d4fbb002 | ||
|
|
cacb28c92c | ||
|
|
db8c55e77c | ||
|
|
f775c5cea4 | ||
|
|
032b877f31 | ||
|
|
6738d82e38 | ||
|
|
03d6aa07ea | ||
|
|
d383954ffe | ||
|
|
5d4e3d2d0c | ||
|
|
df5be65415 | ||
|
|
d71f9944cc | ||
|
|
f28d482cd4 | ||
|
|
5824881e4a | ||
|
|
1a181315eb | ||
|
|
63629614cb | ||
|
|
8cd13eb74e | ||
|
|
ffcdcc7ff0 | ||
|
|
4051c2843b | ||
|
|
217bb47b02 | ||
|
|
bab59f33e7 | ||
|
|
ebb79cdaba | ||
|
|
7343f8e776 | ||
|
|
56cfcea4b4 | ||
|
|
4065b241e8 | ||
|
|
af7960b295 | ||
|
|
18acdff8d3 | ||
|
|
cd5d2473a4 | ||
|
|
63431796f4 | ||
|
|
44daa9836b | ||
|
|
29463cb60c | ||
|
|
692bcbe559 | ||
|
|
493a6bb19a | ||
|
|
7f58d207f3 | ||
|
|
ba0892ba91 | ||
|
|
483edbdf1a | ||
|
|
cacd651ec6 | ||
|
|
50cfeef65e | ||
|
|
412cebec9e | ||
|
|
2e24ded6d2 | ||
|
|
70a393ea9a | ||
|
|
4f8d7328a4 | ||
|
|
fde26002f1 | ||
|
|
f4641bd4de | ||
|
|
82ad1f87fa | ||
|
|
0e7dad3f6e | ||
|
|
7af2d6b985 | ||
|
|
909ea3008e | ||
|
|
5571c1aaa4 | ||
|
|
f9df88c6da | ||
|
|
f9e464f95a | ||
|
|
9fe92590b2 | ||
|
|
f4720d8dbd | ||
|
|
8e6086b403 | ||
|
|
a54b70a355 | ||
|
|
cf4700aff4 | ||
|
|
c9b35b9923 | ||
|
|
c4d6c7f829 | ||
|
|
f0694e1e0c | ||
|
|
03968739c5 | ||
|
|
94c6bcfdad | ||
|
|
dfdf09d43d | ||
|
|
728386bfb2 | ||
|
|
628bc835ae | ||
|
|
a52254d0d7 | ||
|
|
aef61ee367 | ||
|
|
0e752246d3 | ||
|
|
2fd5cb3d2e | ||
|
|
0cf7156f08 | ||
|
|
2806c6ce28 | ||
|
|
02e288b640 | ||
|
|
af7314e190 | ||
|
|
40190b7c92 | ||
|
|
ec02e82760 | ||
|
|
2f148845e8 | ||
|
|
9a0495a4b0 | ||
|
|
dd1b3b6dfd | ||
|
|
ab294ad93d | ||
|
|
6e51db1268 | ||
|
|
60aa852a03 | ||
|
|
97ee38707b | ||
|
|
44559a3211 | ||
|
|
24a2706a3b | ||
|
|
11d27367cd | ||
|
|
bd880e7f3f | ||
|
|
3bec62b012 | ||
|
|
3d5f7594b5 | ||
|
|
ac5e7072c9 | ||
|
|
7aee49d967 | ||
|
|
7d6d5e263e | ||
|
|
964d03bc3f | ||
|
|
cd4cb8e795 | ||
|
|
90fd70d284 | ||
|
|
aa35564ca1 | ||
|
|
3f1f2d1497 | ||
|
|
d03b8487c6 | ||
|
|
3c68c85f18 | ||
|
|
2d7b43f466 | ||
|
|
ae762b620e | ||
|
|
2f5e084147 | ||
|
|
db8940dae2 | ||
|
|
ca0986fbd1 | ||
|
|
d4d45a1757 | ||
|
|
27a937bcf8 | ||
|
|
b73ec84ce1 | ||
|
|
a84adad078 | ||
|
|
59ecf2ccf7 | ||
|
|
f492baa61d | ||
|
|
c5cbc3db47 | ||
|
|
d384b8b0d2 | ||
|
|
a9130222bd | ||
|
|
c1fcb1db99 | ||
|
|
491ec171ec | ||
|
|
58e5d69250 | ||
|
|
680d75af34 | ||
|
|
b92a919500 | ||
|
|
1b5048b288 | ||
|
|
d3b8372615 | ||
|
|
73806b56e5 | ||
|
|
9a6f936c8a | ||
|
|
92cb684e78 | ||
|
|
3502e45b6c | ||
|
|
defa637378 | ||
|
|
fd61bfc731 | ||
|
|
ac9fa2b846 | ||
|
|
e004721b48 | ||
|
|
e60b18bbdf | ||
|
|
7f94b5ccca | ||
|
|
35c1f682c1 | ||
|
|
3d1b670640 | ||
|
|
21374c3903 | ||
|
|
634b4de2c8 | ||
|
|
27d8b059fa | ||
|
|
5e3ca98155 | ||
|
|
186960fefb | ||
|
|
3817b12fec | ||
|
|
bae4018b30 | ||
|
|
c6019b8b4e | ||
|
|
080ffb8b2c | ||
|
|
b9127eb0a5 | ||
|
|
feff9bbb67 | ||
|
|
c6a04ce78f | ||
|
|
19133cac02 | ||
|
|
da908364a8 | ||
|
|
c6c6f98f1c | ||
|
|
3f4062309e | ||
|
|
f116e17a23 | ||
|
|
86f4846c21 | ||
|
|
0cebfc8ddb | ||
|
|
de5e3f6a6f | ||
|
|
f0c5165f81 | ||
|
|
b0c1541227 | ||
|
|
1109c8fc4e | ||
|
|
c3a9733ac1 | ||
|
|
b72277183f | ||
|
|
8d3c46daa8 | ||
|
|
999757983c | ||
|
|
7f4aba91d3 | ||
|
|
028043dd02 | ||
|
|
546870edd8 | ||
|
|
af4a96ce6e | ||
|
|
4af673e161 | ||
|
|
7ae0d473a6 | ||
|
|
d530ee62cd | ||
|
|
96338432e2 | ||
|
|
0cdf85e28d | ||
|
|
96a137a18a | ||
|
|
31721da4b1 | ||
|
|
c1f474010e | ||
|
|
0787287021 | ||
|
|
7864bb9eb8 | ||
|
|
23c4278e06 | ||
|
|
dfed2cef75 | ||
|
|
f73f07e126 | ||
|
|
1eb1fe3225 | ||
|
|
a2851b6234 | ||
|
|
4672872ddd | ||
|
|
977e211421 | ||
|
|
ae5e23310e | ||
|
|
9764bea97d | ||
|
|
4ed7b035bd | ||
|
|
a118f21728 | ||
|
|
7a1a62ec6e | ||
|
|
30e462e919 | ||
|
|
83fd1c1de5 | ||
|
|
2c07712860 | ||
|
|
8f2694bb53 | ||
|
|
d52f5020ce | ||
|
|
9364699be1 | ||
|
|
3415427dbf | ||
|
|
ef50bd2e54 | ||
|
|
ce485791db | ||
|
|
3bc3af0276 | ||
|
|
d91bc7cb09 | ||
|
|
077f9d7293 | ||
|
|
71e975669c | ||
|
|
1e425e3fa7 | ||
|
|
d653732157 | ||
|
|
6a2cb6c506 | ||
|
|
6141386f7e | ||
|
|
0685707bc6 | ||
|
|
de21de920c | ||
|
|
0a4f5e8473 | ||
|
|
14b20ffc30 | ||
|
|
b19b8836c3 | ||
|
|
1ce14eca44 | ||
|
|
9a0d90793e | ||
|
|
df236e75a2 | ||
|
|
a7af84f988 | ||
|
|
e7e4f2f3aa | ||
|
|
ef032cbe85 | ||
|
|
3a915b02e8 | ||
|
|
5041bc1b6c | ||
|
|
68a0c56a7d | ||
|
|
09ccbef3bb | ||
|
|
2e6ad62047 | ||
|
|
c3f176222a | ||
|
|
3f43b1c039 | ||
|
|
8a6576f764 | ||
|
|
a27320e00f | ||
|
|
2f759a7090 | ||
|
|
d3f6b094c7 | ||
|
|
e9adb7fbbc | ||
|
|
830d0fe95a | ||
|
|
c7771bc2ec | ||
|
|
c9f58cc595 | ||
|
|
a8f357629d | ||
|
|
38eec57aef | ||
|
|
d4ccdeaf00 | ||
|
|
cacd3ae004 | ||
|
|
163900dc68 | ||
|
|
9da830e895 | ||
|
|
e5ed6b91f4 | ||
|
|
02c1cb54aa | ||
|
|
9a6012edd9 | ||
|
|
e612143a89 | ||
|
|
99059aad8d | ||
|
|
349cab0b48 | ||
|
|
81d18398a8 | ||
|
|
09c296b44d | ||
|
|
0a347559bf | ||
|
|
986785c9d2 | ||
|
|
116835561d | ||
|
|
e5db01ee29 | ||
|
|
8be699494e | ||
|
|
23514fc946 | ||
|
|
1595a6e885 | ||
|
|
a20872045a | ||
|
|
5e1471c806 | ||
|
|
c2dc673eb5 | ||
|
|
832efb1e01 | ||
|
|
2e2df04b35 | ||
|
|
74a8215a86 | ||
|
|
7543c38dca | ||
|
|
a2cd31cbf1 | ||
|
|
0f0af55a0a | ||
|
|
11d1eca9f3 | ||
|
|
f64989e63b | ||
|
|
07a983a602 | ||
|
|
4671e54495 | ||
|
|
68db20656e | ||
|
|
9fb088e3ab | ||
|
|
74a2528bd7 | ||
|
|
051908e023 | ||
|
|
5937d02aed | ||
|
|
71527e3a55 | ||
|
|
465f57c56f | ||
|
|
30fd2f7bb2 | ||
|
|
7e40c7ddc9 | ||
|
|
f101f7c9ba | ||
|
|
67cd05472e | ||
|
|
e5ea6ad0f0 | ||
|
|
a661830569 | ||
|
|
5166758927 | ||
|
|
3deceaf6e7 | ||
|
|
a9723df1b7 | ||
|
|
ec79acb3a6 | ||
|
|
a3efcd2006 | ||
|
|
05471f5c2a | ||
|
|
bd21038078 | ||
|
|
18d179c2d8 | ||
|
|
7e0bf7d57d | ||
|
|
840229a825 | ||
|
|
db3c4efd1d | ||
|
|
35b3d15194 | ||
|
|
33b7fc250f | ||
|
|
fa490f6497 | ||
|
|
0ad2a9a2e0 | ||
|
|
03c4aa6aef | ||
|
|
42ea068a1a | ||
|
|
279e7e7341 | ||
|
|
88b919ea56 | ||
|
|
a94ffdaec5 | ||
|
|
26bfb6bea4 | ||
|
|
ff40253566 | ||
|
|
e97b961815 | ||
|
|
836344c90e | ||
|
|
3fd13c6426 | ||
|
|
b221fe9b29 | ||
|
|
52bd0f93bb | ||
|
|
5403a8ce4c | ||
|
|
e3c0c86b28 | ||
|
|
e4afb2f724 | ||
|
|
ca4b91a1d0 | ||
|
|
5756d7916a | ||
|
|
f19e20d33f | ||
|
|
4b6164ab49 | ||
|
|
22e23473ea | ||
|
|
38651521a8 | ||
|
|
14b7c4327f | ||
|
|
8a413b076e | ||
|
|
f98999cc16 | ||
|
|
85a86b5fd6 | ||
|
|
ff0f0aeb40 | ||
|
|
a0119af0e4 | ||
|
|
5c0f039c9c | ||
|
|
352febe251 | ||
|
|
f89beaf3ac | ||
|
|
c80abfa0e4 | ||
|
|
ccf7b41a69 | ||
|
|
27c85727ed | ||
|
|
e806ad39d0 | ||
|
|
5988872ff1 | ||
|
|
a6f3451e25 | ||
|
|
77f2cb66d1 | ||
|
|
a74354735a | ||
|
|
40879f33cd | ||
|
|
b1b16d117e | ||
|
|
2775c0e97e | ||
|
|
46e86aa803 | ||
|
|
986e612557 | ||
|
|
57ddf5f50a | ||
|
|
aef62a03ee | ||
|
|
9037decb28 | ||
|
|
6999fb3d1e | ||
|
|
fc6a9673c8 | ||
|
|
ed111975a0 | ||
|
|
f33a35e293 | ||
|
|
7b93eb0000 | ||
|
|
6768d2fc93 | ||
|
|
5c0d11b12a | ||
|
|
5d7577c71a | ||
|
|
4fd315192a | ||
|
|
831c8199f6 | ||
|
|
667aae596c | ||
|
|
2433eeb385 | ||
|
|
6c0c00a205 | ||
|
|
f5e742b264 | ||
|
|
ff512634ac | ||
|
|
9edb984274 | ||
|
|
827180097c | ||
|
|
93298afc4e | ||
|
|
f9014438c7 | ||
|
|
3df7c90c30 | ||
|
|
6d00c089e3 | ||
|
|
e10ed097cb | ||
|
|
56e34c2f81 | ||
|
|
f2b1f57f74 | ||
|
|
f749338e1e | ||
|
|
a38fd6056c | ||
|
|
08ab306afd | ||
|
|
de78922b12 | ||
|
|
35fe3eb5c7 | ||
|
|
40c93486e8 | ||
|
|
f9a47debfc | ||
|
|
f25ec0782e | ||
|
|
6b5853794d | ||
|
|
4e5247772d | ||
|
|
2156e5eca1 | ||
|
|
ec1d1ee61f | ||
|
|
d18cebaf8a | ||
|
|
4afc46d7bc | ||
|
|
0f33768059 | ||
|
|
90587b1ccb | ||
|
|
4fdec07bd8 | ||
|
|
e282c0a081 | ||
|
|
0ca30187cf | ||
|
|
f7b612550a | ||
|
|
d489a01f81 | ||
|
|
ad42a82df5 | ||
|
|
d44ce97909 | ||
|
|
091ab850aa | ||
|
|
29ce743385 | ||
|
|
e493b29598 | ||
|
|
4a38795b6f | ||
|
|
54ad2f6cbb | ||
|
|
892056bf97 | ||
|
|
4865063924 | ||
|
|
70884875c9 | ||
|
|
ca6ededbd1 | ||
|
|
1695332941 | ||
|
|
534df2f8d2 | ||
|
|
549443a7cc | ||
|
|
21dd53f9d3 | ||
|
|
6e76a7cb45 | ||
|
|
72cbb7492c | ||
|
|
9cc55dca6f | ||
|
|
716f5bc66b | ||
|
|
317ba9fb64 | ||
|
|
2c1025706b | ||
|
|
ab18d72b35 | ||
|
|
ca2a047b8e | ||
|
|
7584225873 | ||
|
|
25410096b4 | ||
|
|
95844451b6 | ||
|
|
60040a4f36 | ||
|
|
1afd0b52fe | ||
|
|
3d1476a316 | ||
|
|
d5047f5fe6 | ||
|
|
f0c629a36b | ||
|
|
03e689fae4 | ||
|
|
df62005ece | ||
|
|
23de33968f | ||
|
|
f1678bfc65 | ||
|
|
03cb903e7e | ||
|
|
8a98c2f1d8 | ||
|
|
93465d3051 | ||
|
|
220288725f | ||
|
|
e03b42d1bb | ||
|
|
f0c1376e07 | ||
|
|
766f609838 | ||
|
|
bd9fa2e841 | ||
|
|
f2ba4cef2a | ||
|
|
9ff86a2848 | ||
|
|
465e22e62f | ||
|
|
7dffbaf2ce | ||
|
|
247d0da188 | ||
|
|
71ae175319 | ||
|
|
89556f5a2f | ||
|
|
9e6957b0a5 | ||
|
|
07701e7cc8 | ||
|
|
8abb73ef58 | ||
|
|
b073989e17 | ||
|
|
c8108aad83 | ||
|
|
8cca30f31b | ||
|
|
290bc0c067 | ||
|
|
4d49469d0d | ||
|
|
e1b829d2a5 | ||
|
|
0ad2717fd8 | ||
|
|
2d8af39acc | ||
|
|
d4ee61ffc7 | ||
|
|
e6a30bd107 | ||
|
|
4cbcdb4b2c | ||
|
|
7cee968c21 | ||
|
|
6b2091b58a | ||
|
|
99679c6430 | ||
|
|
44e7033279 | ||
|
|
a5f74b4da7 | ||
|
|
97e4b3a7bf | ||
|
|
787f62de8c | ||
|
|
b28e700ebd | ||
|
|
b07acb3808 | ||
|
|
d5d043f2d7 | ||
|
|
8b28d599a7 | ||
|
|
cc5cea35b0 | ||
|
|
22d7fe1206 | ||
|
|
08a91acd76 | ||
|
|
c1a63a9e90 | ||
|
|
70033bd960 | ||
|
|
9a79bb694e | ||
|
|
472a72d27f | ||
|
|
0321adbcf4 | ||
|
|
39484f49ef | ||
|
|
df0edf5fe6 | ||
|
|
4b4d059791 | ||
|
|
9ef3c6238b | ||
|
|
57653added | ||
|
|
ff4096f958 | ||
|
|
d5a189acef | ||
|
|
d84a6ba3d1 | ||
|
|
bca88b2dc1 | ||
|
|
8e5674fb5c | ||
|
|
be67fa7e09 | ||
|
|
8bd80f4911 | ||
|
|
4a899c9274 | ||
|
|
dd9593ccc4 | ||
|
|
42281124d4 | ||
|
|
1e73e4c62f | ||
|
|
dadc30318f | ||
|
|
075acfa2d6 | ||
|
|
aa67b1f375 | ||
|
|
5b05429bf0 | ||
|
|
78dbb4b5b1 | ||
|
|
55c21970fd | ||
|
|
a993d22c0f | ||
|
|
760928bfad | ||
|
|
baebd30eee | ||
|
|
e2f1e50c60 | ||
|
|
5f08c3cfa1 | ||
|
|
3452477dcb | ||
|
|
e21643d618 | ||
|
|
f3da6c6c04 | ||
|
|
2cde498319 | ||
|
|
557fc396b4 | ||
|
|
c123ac05dc | ||
|
|
6f8839d2ac | ||
|
|
884f689efe | ||
|
|
41f2725639 | ||
|
|
c2fb062f60 | ||
|
|
8e57398b20 | ||
|
|
539598b11f | ||
|
|
8b2abed03d | ||
|
|
432a2e4d39 | ||
|
|
4b3824b682 | ||
|
|
c24276f008 | ||
|
|
3f5bb15f35 | ||
|
|
744ed46970 | ||
|
|
8c3a757ffc | ||
|
|
0c3b357985 | ||
|
|
add4cfcf5f | ||
|
|
fa43f04f6a | ||
|
|
25ca13ec1a | ||
|
|
cdb5864fc3 | ||
|
|
4428b70cba | ||
|
|
649dbbbd83 | ||
|
|
5fc0c27d5c | ||
|
|
20ba454ef9 | ||
|
|
dd0188ec08 | ||
|
|
40c98a977b | ||
|
|
f168f7d702 | ||
|
|
2c560c5405 | ||
|
|
a0f3eb015a | ||
|
|
268476549e | ||
|
|
4d02e77f44 | ||
|
|
4f46ee4400 | ||
|
|
863f17f68c | ||
|
|
45bb10cc32 | ||
|
|
6eeb59abf6 | ||
|
|
809fdf26fb | ||
|
|
ca19e792c6 | ||
|
|
ea97d6ed5f | ||
|
|
5866f1a9aa | ||
|
|
2df81c57f6 | ||
|
|
828bf50a0e | ||
|
|
eb6e60432b | ||
|
|
09dc577931 | ||
|
|
b3d4938e3e | ||
|
|
66116924ed | ||
|
|
356992fe4d | ||
|
|
e9f8e28426 | ||
|
|
bc7bae1d6b | ||
|
|
5427311ae6 | ||
|
|
9143b43e98 | ||
|
|
2afd20b542 | ||
|
|
59faab4330 | ||
|
|
b7c05e1b75 | ||
|
|
448c5e07ca | ||
|
|
d483acc5d9 | ||
|
|
b037c16f55 | ||
|
|
a848a3efbf | ||
|
|
b319699132 | ||
|
|
036e59394a | ||
|
|
533a455274 | ||
|
|
9d792f3183 | ||
|
|
c481f97a9c | ||
|
|
02f24f54ba | ||
|
|
87bb848268 | ||
|
|
8c476371f5 | ||
|
|
a8506c41c6 | ||
|
|
41062e71a7 | ||
|
|
2d8c1fe1ed | ||
|
|
1a433b9637 | ||
|
|
78a25696f1 | ||
|
|
39a492799d | ||
|
|
469cb1b7b7 | ||
|
|
d329fc7b09 | ||
|
|
3063ba0800 | ||
|
|
9d71e74491 | ||
|
|
3aadd4fe76 | ||
|
|
8a538ce372 | ||
|
|
9caeceef6d | ||
|
|
edbec3f8f3 | ||
|
|
a778a25cab | ||
|
|
39e2c469db | ||
|
|
2a7a2ca986 | ||
|
|
c3346f6760 | ||
|
|
0d5a6b2d9d | ||
|
|
e1c043f43a | ||
|
|
a337ac7584 | ||
|
|
b962ff35dd | ||
|
|
70e6f3f115 | ||
|
|
e6b6075024 | ||
|
|
7aa5924dc6 | ||
|
|
0de6ec5f08 | ||
|
|
ed5bad754c | ||
|
|
48a9a2d355 | ||
|
|
c2d9e62f16 | ||
|
|
e4731f8168 | ||
|
|
d85c85aac1 | ||
|
|
624f70e88f | ||
|
|
c6347dcfb4 | ||
|
|
cf2513e1aa | ||
|
|
b261e37a34 | ||
|
|
5976d58796 | ||
|
|
045bfe0da5 | ||
|
|
d8c178bc16 | ||
|
|
892ba87866 | ||
|
|
ef659192a1 | ||
|
|
6ac22bfb04 | ||
|
|
60a9e1e40f | ||
|
|
6029127cea | ||
|
|
f7f8af8420 | ||
|
|
73cf8e82e7 | ||
|
|
4eaf4ce26a | ||
|
|
07c27e040e | ||
|
|
a82f5389d9 | ||
|
|
b24c515dbf | ||
|
|
7a7f1062bf | ||
|
|
18b92201be | ||
|
|
7edfb02984 | ||
|
|
6c5f1f58f3 | ||
|
|
f4e34f1b76 | ||
|
|
b603578b53 | ||
|
|
348d8cd04a | ||
|
|
aac717da8d | ||
|
|
45605c9b39 | ||
|
|
f9994114ab | ||
|
|
5c7532e5b3 | ||
|
|
a805012d6f | ||
|
|
213b8af2f6 | ||
|
|
15d0fa6dc1 | ||
|
|
c65a91c96f | ||
|
|
d87f551f36 | ||
|
|
802c4c6a61 | ||
|
|
3966e4e7a5 | ||
|
|
21e7292ea0 | ||
|
|
07b1997388 | ||
|
|
80858761a8 | ||
|
|
a239ea0d40 | ||
|
|
b00b2f08bf | ||
|
|
b0388ccad0 | ||
|
|
07ad11916f | ||
|
|
c07edd90f5 | ||
|
|
d9377f5eb0 | ||
|
|
855f46677c | ||
|
|
ec11525d33 | ||
|
|
3f987cd925 | ||
|
|
926365c9f8 | ||
|
|
bb8f73419c | ||
|
|
ee0a7b928b | ||
|
|
4b455bafd0 | ||
|
|
f322bbe729 | ||
|
|
ec51bfc995 | ||
|
|
f2f30286bf | ||
|
|
6df7bdd954 | ||
|
|
b084322f52 | ||
|
|
10d92b3dcd | ||
|
|
c4d2244a09 | ||
|
|
a9f2c4aa30 | ||
|
|
d75de86e6d | ||
|
|
90fb81ad54 | ||
|
|
e61de70c96 | ||
|
|
64de69c1a4 | ||
|
|
1865b11dcb | ||
|
|
67e12a0f84 | ||
|
|
01e4fe5fbc | ||
|
|
a599aeb2a8 | ||
|
|
b9049d2f90 | ||
|
|
d6bae2cb95 | ||
|
|
666aa0a343 | ||
|
|
c744e925df | ||
|
|
4b123f9ca2 | ||
|
|
45822da46a | ||
|
|
500c8f45f5 | ||
|
|
cc2861ee44 | ||
|
|
88cc688731 | ||
|
|
da3356bb38 | ||
|
|
de5ba2db25 | ||
|
|
ee7313266a | ||
|
|
dd8018de95 | ||
|
|
9a059ea69e | ||
|
|
56f65e3c3e | ||
|
|
ae17e2d90a | ||
|
|
2240486d3d | ||
|
|
de3c16afae | ||
|
|
2255efa171 | ||
|
|
b04d4fff35 | ||
|
|
b3a7de15b7 | ||
|
|
be23c51f69 | ||
|
|
bb9316da28 | ||
|
|
f490934c33 | ||
|
|
1c3883bef2 | ||
|
|
97900776bb | ||
|
|
d29be0dfa2 | ||
|
|
43e91da074 | ||
|
|
ef12fa1bf7 | ||
|
|
bdd19ab40b | ||
|
|
321ec97d95 | ||
|
|
77f21787d4 | ||
|
|
d70ef199f1 | ||
|
|
b1b3dc62ff | ||
|
|
e90db17392 | ||
|
|
6e76fc2866 | ||
|
|
19a18add4e | ||
|
|
95b034e484 | ||
|
|
93188918ea | ||
|
|
8295c80618 | ||
|
|
e698dd38c3 | ||
|
|
5bbb4cadc3 | ||
|
|
06a22e2ea1 | ||
|
|
8e2c014e43 | ||
|
|
429efdd974 | ||
|
|
c5e51cead8 | ||
|
|
3d3f29cf06 | ||
|
|
cced79d4a8 | ||
|
|
b24cdb3d36 | ||
|
|
871194d5fd | ||
|
|
e10fd321e4 | ||
|
|
59055b227a | ||
|
|
e53e9c72cb | ||
|
|
22c2c34952 | ||
|
|
06d86ebe84 | ||
|
|
f8c335d0ca | ||
|
|
eef5d3257d | ||
|
|
e0a207c27a | ||
|
|
ebe0fb697a | ||
|
|
7547c7df1a | ||
|
|
fd29448be0 | ||
|
|
70bc2e32af | ||
|
|
23bb5986d4 | ||
|
|
57d2857938 | ||
|
|
2003593143 | ||
|
|
580e67015c | ||
|
|
e609195202 | ||
|
|
89e894b17a | ||
|
|
9023b0b3a2 | ||
|
|
cf20b6bf65 | ||
|
|
21d081fd7f | ||
|
|
6f86b9cb70 | ||
|
|
db273818f6 | ||
|
|
36815e4179 | ||
|
|
1a89c8d061 | ||
|
|
fdf180f9ce | ||
|
|
aeb124f7f3 | ||
|
|
a0fdd5f3f6 | ||
|
|
c50b0c9237 | ||
|
|
6cc94db653 | ||
|
|
60e26668b3 | ||
|
|
1cf26e2bf1 | ||
|
|
e90623edc2 | ||
|
|
46b6954acd | ||
|
|
ffc8110659 | ||
|
|
49ba55b100 | ||
|
|
3ebbdc6320 | ||
|
|
a29a7c72fa | ||
|
|
9170077f13 | ||
|
|
641f2bedf3 | ||
|
|
ded97eb892 | ||
|
|
e84edd2593 | ||
|
|
823a443321 | ||
|
|
1ad30a2af4 | ||
|
|
99c9d19184 | ||
|
|
dd4b280d8c | ||
|
|
ae648a44c4 | ||
|
|
9b4e8e0a0d | ||
|
|
0f6d3e22d9 | ||
|
|
3e7f4b0f82 | ||
|
|
d5f401147a | ||
|
|
61764613d1 | ||
|
|
d5feb1c280 | ||
|
|
3d22dbf27b | ||
|
|
03eb41c2ec | ||
|
|
3ca0517749 | ||
|
|
456dafc3c6 | ||
|
|
cf89beec6f | ||
|
|
f44d0b9044 | ||
|
|
b204006105 | ||
|
|
bbd976b8c4 | ||
|
|
754e23db27 | ||
|
|
260383215b | ||
|
|
eda15387a0 | ||
|
|
5fea00581b | ||
|
|
a033261f39 | ||
|
|
6ed721afd2 | ||
|
|
aab958b713 | ||
|
|
1c62e807e1 | ||
|
|
eba1f7b1a4 | ||
|
|
a5c51b4858 | ||
|
|
216019b72d | ||
|
|
e85a95dfa3 | ||
|
|
fc0a4c2781 | ||
|
|
5451ba3aa8 | ||
|
|
2445fb8bdd | ||
|
|
6392eba3f9 | ||
|
|
34f34e4411 | ||
|
|
1cf13bca19 | ||
|
|
3a160646df | ||
|
|
cffd0bb68d | ||
|
|
b159c6d62e | ||
|
|
2335c4bb41 | ||
|
|
b480cfaf34 | ||
|
|
a056ef1f39 | ||
|
|
5b014e0725 | ||
|
|
1f16a7b6e5 | ||
|
|
319580953d | ||
|
|
232e8e19a1 | ||
|
|
95eb729e6f | ||
|
|
236b217cd7 | ||
|
|
d51a0c353b | ||
|
|
55a8a3aad4 | ||
|
|
7244b9cee8 | ||
|
|
a639cf7d84 | ||
|
|
83152d174c | ||
|
|
86fba381fd | ||
|
|
cbcf4fe768 | ||
|
|
1db9a2adbe | ||
|
|
16889e22cc | ||
|
|
ce3ccc8d5a | ||
|
|
b906e85996 | ||
|
|
055a933fa9 | ||
|
|
e5cf3f9751 | ||
|
|
3ab15cde25 | ||
|
|
0ba78d5f36 | ||
|
|
6e1e9e2fcb | ||
|
|
246805d386 | ||
|
|
8595981195 | ||
|
|
3abebfea98 | ||
|
|
38c49fbc4a | ||
|
|
2cd5adc28b | ||
|
|
6035651fad | ||
|
|
b3f91f15b2 | ||
|
|
e543b0e95e | ||
|
|
7defbd27ef | ||
|
|
b488be127a | ||
|
|
05de01d707 | ||
|
|
4d05f56dcd | ||
|
|
3f862cf179 | ||
|
|
9d1bdbcf05 | ||
|
|
61e796decc | ||
|
|
585936157c | ||
|
|
a808ab4ac4 | ||
|
|
1b2d333ee3 | ||
|
|
48d21dd541 | ||
|
|
4f8d6d0834 | ||
|
|
29d8ff51c8 | ||
|
|
534e41b474 | ||
|
|
bed405cfea | ||
|
|
e258169666 | ||
|
|
4f38c5ece3 | ||
|
|
8f15582ef3 | ||
|
|
40cb398867 | ||
|
|
93dc713670 | ||
|
|
5d0b5a00aa | ||
|
|
cf2ee19049 | ||
|
|
b9e1bb3d92 | ||
|
|
14b04b06b4 |
13
.gitignore
vendored
13
.gitignore
vendored
@@ -1,4 +1,5 @@
|
||||
|
||||
core
|
||||
vgcore.*
|
||||
.waf*
|
||||
tags
|
||||
.lock-wscript
|
||||
@@ -17,6 +18,7 @@ node_g
|
||||
# various stuff that VC++ produces/uses
|
||||
Debug/
|
||||
Release/
|
||||
!doc/blog/**
|
||||
*.sln
|
||||
!nodemsi.sln
|
||||
*.suo
|
||||
@@ -30,7 +32,14 @@ ipch/
|
||||
*.sdf
|
||||
*.opensdf
|
||||
|
||||
/options.gypi
|
||||
/config.mk
|
||||
/config.gypi
|
||||
*-nodegyp*
|
||||
/gyp-mac-tool
|
||||
/dist-osx
|
||||
/npm.wxs
|
||||
/tools/msvs/npm.wixobj
|
||||
email.md
|
||||
deps/v8-*
|
||||
./node_modules
|
||||
.svn/
|
||||
104
.mailmap
Normal file
104
.mailmap
Normal file
@@ -0,0 +1,104 @@
|
||||
Aaron Heckmann <aaron.heckmann@gmail.com> <aaron.heckmann+github@gmail.com>
|
||||
Abe Fettig <abefettig@gmail.com> <abe@fettig.net>
|
||||
Alex Kocharin <rlidwka@kocharin.ru>
|
||||
Alex Kocharin <rlidwka@kocharin.ru> <alex@kocharin.ru>
|
||||
Alexis Sellier <self@cloudhead.net>
|
||||
Alexis Sellier <self@cloudhead.net> <alexis@cloudhead.io>
|
||||
Arlo Breault <arlolra@gmail.com>
|
||||
Artem Zaytsev <a.arepo@gmail.com>
|
||||
Atsuo Fukaya <fukayatsu@gmail.com>
|
||||
Ben Noordhuis <info@bnoordhuis.nl> <bnoordhuis@bender.(none)>
|
||||
Bert Belder <bertbelder@gmail.com> <bert@piscisaureus2.(none)>
|
||||
Bert Belder <bertbelder@gmail.com> <piscisaureus@Berts-MacBook-Pro.local>
|
||||
Brandon Benvie <brandon@bbenvie.com> <brandon@brandonbenvie.com>
|
||||
Brian White <mscdex@mscdex.net>
|
||||
Brian White <mscdex@mscdex.net> <mscdex@gmail.com>
|
||||
Chew Choon Keat <choonkeat@gmail.com>
|
||||
Christopher Lenz <cmlenz@gmail.com> <chris@lamech.local>
|
||||
Daniel Berger <code+node@dpbis.net>
|
||||
Daniel Chcouri <333222@gmail.com>
|
||||
Daniel Gröber <darklord@darkboxed.org>
|
||||
Daniel Gröber <darklord@darkboxed.org> <dxld@darkboxed.org>
|
||||
Daniel Pihlström <sciolist.se@gmail.com>
|
||||
David Siegel <david@artcom.de> <david.siegel@artcom.de>
|
||||
Domenic Denicola <domenic@domenicdenicola.com>
|
||||
Eduard Burtescu <eddy_me08@yahoo.com>
|
||||
Einar Otto Stangvik <einaros@gmail.com>
|
||||
Elliott Cable <me@ell.io>
|
||||
EungJun Yi <semtlenori@gmail.com>
|
||||
Evan Larkin <evan.larkin.il.com> <evan.larkin.iit@gmail.com>
|
||||
Farid Neshat <FaridN_SOAD@yahoo.com>
|
||||
Felix Geisendörfer <felix@debuggable.com>
|
||||
Felix Geisendörfer <felix@debuggable.com>
|
||||
Friedemann Altrock <frodenius@gmail.com>
|
||||
Fuji Goro <gfuji@cpan.org>
|
||||
Gabriel de Perthuis <g2p.code@gmail.com>
|
||||
Herbert Vojčík <herby@mailbox.sk>
|
||||
Igor Zinkovsky <igorzi@microsoft.com>
|
||||
Isaac Z. Schlueter <i@izs.me>
|
||||
Isaac Z. Schlueter <i@izs.me> <i@foohack.com>
|
||||
Jérémy Lal <kapouer@melix.org>
|
||||
Jérémy Lal <kapouer@melix.org> <holisme@gmail.com>
|
||||
Jered Schmidt <tr@nslator.jp>
|
||||
Joe Shaw <joe@joeshaw.org> <joeshaw@litl.com>
|
||||
Johan Bergström <bugs@bergstroem.nu>
|
||||
Johan Dahlberg <jfd@distrop.com> <dahlberg.johan@gmail.com>
|
||||
Jonas Pfenniger <jonas@pfenniger.name> <jonas@stvs.ch>
|
||||
Jonathan Rentzsch <jwr.git@redshed.net>
|
||||
Joshua S. Weinstein <josher19@users.sf.net>
|
||||
Koichi Kobayashi <koichik@improvement.jp>
|
||||
Kris Kowal <kris.kowal@cixar.com>
|
||||
Kyle Robinson Young <kyle@dontkry.com>
|
||||
Mathias Pettersson <mape@mape.me>
|
||||
Michael Bernstein <michaelrbernstein@gmail.com>
|
||||
Michael Wilber <gcr@sneakygcr.net>
|
||||
Micheil Smith <micheil@brandedcode.com> <micheil@yettobebranded.net>
|
||||
Mikael Bourges-Sevenier <mikeseven@gmail.com> <msevenier@motorola.com>
|
||||
Nebu Pookins<nebu@nebupookins.net>
|
||||
Nicholas Kinsey <pyrotechnick@feistystudios.com>
|
||||
Onne Gorter <onne@onnlucky.com>
|
||||
Paul Querna <pquerna@apache.org> <paul@querna.org>
|
||||
Ray Morgan <rmorgan@zappos.com>
|
||||
Ray Solomon <raybsolomon@gmail.com>
|
||||
Rick Olson <technoweenie@gmail.com>
|
||||
Ryan Dahl <ry@tinyclouds.org>
|
||||
Ryan Emery <seebees@gmail.com>
|
||||
Sam Shull <brickysam26@gmail.com> <brickysam26@samuel-shulls-computer.local>
|
||||
Sam Shull <brickysam26@gmail.com> <sshull@squaremouth.com>
|
||||
Sambasiva Suda <sambasivarao@gmail.com>
|
||||
San-Tai Hsu <v@fatpipi.com>
|
||||
Sergey Kryzhanovsky <skryzhanovsky@gmail.com> <another@dhcp199-223-red.yandex.net>
|
||||
Shannen Saez <shannenlaptop@gmail.com>
|
||||
Shigeki Ohtsu <ohtsu@d.jp> <ohtsu@iij.ad.jp>
|
||||
Siddharth Mahendraker <siddharth_mahen@hotmail.com> <siddharth_mahen@me.com>
|
||||
Simon Willison <simon@simonwillison.net>
|
||||
Stanislav Opichal <opichals@gmail.com>
|
||||
Stefan Bühler <stbuehler@web.de>
|
||||
Tadashi SAWADA <cesare@mayverse.jp>
|
||||
Takahiro ANDO <takahiro.ando@gmail.com>
|
||||
Ted Young <ted@radicaldesigns.org>
|
||||
Thomas Lee <thomas.lee@shinetech.com> <tom@tom-debian.sensis.com.au>
|
||||
Tim Caswell <tim@creationix.com> <tim@0-26-8-e9-4c-e1.dyn.utdallas.edu>
|
||||
Tim Smart <timehandgod@gmail.com> <tim@fostle.com>
|
||||
Tim Smart <timehandgod@gmail.com> <timehandgod@gmail.com>
|
||||
TJ Holowaychuk <tj@vision-media.ca>
|
||||
TJ Holowaychuk <tj@vision-media.ca> <tjholowayhuk@gmail.com>
|
||||
Trevor Burnham <trevor@databraid.com> <trevorburnham@gmail.com>
|
||||
Tyler Larson <talltyler@gmail.com>
|
||||
Vincent Voyer <v@fasterize.com>
|
||||
Yoshihiro KIKUCHI <yknetg@gmail.com>
|
||||
Yuichiro MASUI <masui@masuidrive.jp>
|
||||
Zachary Scott <zachary@zacharyscott.net> <zachary.s.scott@gmail.com>
|
||||
Zoran Tomicic <ztomicic@gmail.com>
|
||||
|
||||
# These people didn't contribute patches to node directly,
|
||||
# but we've landed their v8 patches in the node repository:
|
||||
Daniel Clifford <danno@chromium.org>
|
||||
Erik Corry <erik.corry@gmail.com>
|
||||
Jakob Kummerow <jkummerow@chromium.org>
|
||||
Kevin Millikin <kmillikin@chromium.org>
|
||||
Lasse R.H. Nielsen <lrn@chromium.org>
|
||||
Michael Starzinger <mstarzinger@chromium.org>
|
||||
Toon Verwaest <verwaest@chromium.org>
|
||||
Vyacheslav Egorov <vegorov@chromium.org>
|
||||
Yang Guo <yangguo@chromium.org>
|
||||
14
.travis.yml
Normal file
14
.travis.yml
Normal file
@@ -0,0 +1,14 @@
|
||||
language: node_js
|
||||
|
||||
before_script:
|
||||
- "./configure"
|
||||
- "make"
|
||||
|
||||
script:
|
||||
- "make test"
|
||||
|
||||
notifications:
|
||||
email: false
|
||||
irc:
|
||||
- "irc.freenode.net#libuv"
|
||||
|
||||
193
AUTHORS
193
AUTHORS
@@ -59,7 +59,7 @@ Arlo Breault <arlolra@gmail.com>
|
||||
Kris Kowal <kris.kowal@cixar.com>
|
||||
Jacek Becela <jacek.becela@gmail.com>
|
||||
Rob Ellis <kazoomer@gmail.com>
|
||||
Tim Smart <timehAndGod@gmail.com>
|
||||
Tim Smart <timehandgod@gmail.com>
|
||||
Herbert Vojčík <herby@mailbox.sk>
|
||||
Krishna Rajendran <krishna@emptybox.org>
|
||||
Nicholas Kinsey <pyrotechnick@feistystudios.com>
|
||||
@@ -98,8 +98,7 @@ Jerome Etienne <jerome.etienne@gmail.com>
|
||||
Dmitriy Shalashov <skaurus@gmail.com>
|
||||
Adam Wiggins <adam@heroku.com>
|
||||
Rick Olson <technoweenie@gmail.com>
|
||||
David Siegel <david.siegel@artcom.de>
|
||||
Sergey Kzyzhanovsky <skryzhanovsky@gmail.com>
|
||||
Sergey Kryzhanovsky <skryzhanovsky@gmail.com>
|
||||
Marco Rogers <marco.rogers@gmail.com>
|
||||
Benjamin Fritsch <beanie@benle.de>
|
||||
Jan Kassens <jan@kassens.net>
|
||||
@@ -144,13 +143,13 @@ Daniel Gröber <darklord@darkboxed.org>
|
||||
Travis Swicegood <development@domain51.com>
|
||||
Oleg Slobodskoi <oleg008@gmail.com>
|
||||
Jeremy Martin <jmar777@gmail.com>
|
||||
Michael W <gcr@sneakygcr.net>
|
||||
Michael Wilber <gcr@sneakygcr.net>
|
||||
Sean Braithwaite <brapse@gmail.com>
|
||||
Anders Conbere <aconbere@gmail.com>
|
||||
Devin Torres <devin@devintorres.com>
|
||||
Theo Schlossnagle <jesus@omniti.com>
|
||||
Kai Chen <kaichenxyz@gmail.com>
|
||||
Daniel C <333222@gmail.com>
|
||||
Daniel Chcouri <333222@gmail.com>
|
||||
Mihai Călin Bazon <mihai@bazon.net>
|
||||
Ali Farhadi <a.farhadi@gmail.com>
|
||||
Daniel Ennis <aikar@aikar.co>
|
||||
@@ -159,58 +158,69 @@ Greg Hughes <greg@ghughes.com>
|
||||
David Trejo <david.daniel.trejo@gmail.com>
|
||||
Joe Walnes <joe@walnes.com>
|
||||
Koichi Kobayashi <koichik@improvement.jp>
|
||||
Daniel Gröber <dxld@darkboxed.org>
|
||||
Konstantin Käfer <github@kkaefer.com>
|
||||
Richard Rodger <richard@ricebridge.com>
|
||||
Andreas Reich <andreas@reich.name>
|
||||
Tony Huang <cnwzhjs@gmail.com>
|
||||
Dean McNamee <dean@gmail.com>
|
||||
Trevor Burnham <trevor@databraid.com>
|
||||
Zachary Scott <zachary@zacharyscott.net>
|
||||
Arnout Kazemier <info@3rd-Eden.com>
|
||||
George Stagas <gstagas@gmail.com>
|
||||
Ben Weaver <ben@orangesoda.net>
|
||||
Scott McWhirter <scott.mcwhirter@joyent.com>
|
||||
Jakub Lekstan <jakub.lekstan@dreamlab.pl>
|
||||
Nick Campbell <nicholas.j.campbell@gmail.com>
|
||||
Nebu Pookins <nebu@nebupookins.net>
|
||||
Tim Baumann <tim@timbaumann.info>
|
||||
Robert Mustacchi <rm@joyent.com>
|
||||
George Miroshnykov <george.miroshnykov@gmail.com>
|
||||
Mark Cavage <mark.cavage@joyent.com>
|
||||
Håvard Stranden <havard.stranden@gmail.com>
|
||||
Marcel Laverdet <marcel@laverdet.com>
|
||||
Alexandre Marangone <a.marangone@gmail.com>
|
||||
Mark Cavage <mark.cavage@joyent.com>
|
||||
Ryan Petrello <lists@ryanpetrello.com>
|
||||
Fuji Goro <gfuji@cpan.org>
|
||||
Siddharth Mahendraker <siddharth_mahen@hotmail.com>
|
||||
Dave Pacheco <dap@joyent.com>
|
||||
Mathias Buus <m@ge.tt>
|
||||
Henry Rawas <henryr@schakra.com>
|
||||
Yoshihiro KIKUCHI <yknetg@gmail.com>
|
||||
Brett Kiefer <kiefer@gmail.com>
|
||||
Mariano Iglesias <mariano@cricava.com>
|
||||
Jörn Horstmann <git@jhorstmann.net>
|
||||
Joe Shaw <joeshaw@litl.com>
|
||||
Alex Xu <alex_y_xu@yahoo.ca>
|
||||
Kip Gebhardt <kip.gebhardt@voxer.com>
|
||||
Stefan Rusu <saltwaterc@gmail.com>
|
||||
Wojciech Wnętrzak <w.wnetrzak@gmail.com>
|
||||
Reid Burke <me@reidburke.com>
|
||||
Joe Shaw <joe@joeshaw.org>
|
||||
Niklas Fiekas <niklas.fiekas@googlemail.com>
|
||||
Adam Luikart <me@adamluikart.com>
|
||||
avz <a.arepo@gmail.com>
|
||||
Artem Zaytsev <a.arepo@gmail.com>
|
||||
Alex Xu <alex_y_xu@yahoo.ca>
|
||||
Jeremy Selier <jeremy@jolicloud.com>
|
||||
Igor Zinkovsky <igorzi@microsoft.com>
|
||||
Kip Gebhardt <kip.gebhardt@voxer.com>
|
||||
Stefan Rusu <saltwaterc@gmail.com>
|
||||
Shigeki Ohtsu <ohtsu@d.jp>
|
||||
vegorov@chromium.org <vegorov@chromium.org>
|
||||
Wojciech Wnętrzak <w.wnetrzak@gmail.com>
|
||||
Devon Govett <devongovett@gmail.com>
|
||||
Steve Engledow <steve.engledow@proxama.com>
|
||||
Pierre-Alexandre St-Jean <pierrealexandre.stjean@gmail.com>
|
||||
Reid Burke <me@reidburke.com>
|
||||
Vicente Jimenez Aguilar <googuy@gmail.com>
|
||||
SAWADA Tadashi <cesare@mayverse.jp>
|
||||
Logan Smyth <loganfsmyth@gmail.com>
|
||||
Christopher Wright <christopherwright@gmail.com>
|
||||
Mickaël Delahaye <mickael.delahaye@gmail.com>
|
||||
Tadashi SAWADA <cesare@mayverse.jp>
|
||||
Jeroen Janssen <jeroen.janssen@gmail.com>
|
||||
Daniel Pihlström <sciolist.se@gmail.com>
|
||||
Stefan Bühler <stbuehler@web.de>
|
||||
Alexander Uvarov <alexander.uvarov@gmail.com>
|
||||
Aku Kotkavuo <aku@hibana.net>
|
||||
Peter Bright <drpizza@quiscalusmexicanus.org>
|
||||
Logan Smyth <loganfsmyth@gmail.com>
|
||||
Christopher Wright <christopherwright@gmail.com>
|
||||
Glen Low <glen.low@pixelglow.com>
|
||||
Thomas Shinnick <tshinnic@gmail.com>
|
||||
Mickaël Delahaye <mickael.delahaye@gmail.com>
|
||||
Antranig Basman <antranig.basman@colorado.edu>
|
||||
Maciej Małecki <maciej.malecki@notimplemented.org>
|
||||
Evan Martin <martine@danga.com>
|
||||
Peter Lyons <pete@peterlyons.com>
|
||||
jkummerow@chromium.org <jkummerow@chromium.org>
|
||||
Jann Horn <jannhorn@googlemail.com>
|
||||
Abimanyu Raja <abimanyuraja@gmail.com>
|
||||
Karl Skomski <karl@skomski.com>
|
||||
@@ -218,7 +228,9 @@ Niclas Hoyer <niclas@verbugt.de>
|
||||
Michael Jackson <mjijackson@gmail.com>
|
||||
Ashok Mudukutore <ashok@lineratesystems.com>
|
||||
Sean Cunningham <sean.cunningham@mandiant.com>
|
||||
Vitor Balocco <vitorbal@gmail.com>
|
||||
Ben Leslie <benno@benno.id.au>
|
||||
Eric Lovett <etlovett@gmail.com>
|
||||
Christian Tellnes <christian@tellnes.no>
|
||||
Colton Baker <github@netrefuge.net>
|
||||
Tyler Larson <talltyler@gmail.com>
|
||||
@@ -228,10 +240,149 @@ Simen Brekken <simen.brekken@gmail.com>
|
||||
Guglielmo Ferri <44gatti@gmail.com>
|
||||
Thomas Parslow <tom@almostobsolete.net>
|
||||
Ryan Emery <seebees@gmail.com>
|
||||
Zachary Scott <zachary@zacharyscott.net>
|
||||
Jordan Sissel <jls@semicomplete.com>
|
||||
Matt Robenolt <matt@ydekproductions.com>
|
||||
Jacob H.C. Kragh <jhckragh@gmail.com>
|
||||
Benjamin Pasero <benjamin.pasero@gmail.com>
|
||||
Scott Anderson <sanderson7@gmail.com>
|
||||
Yoji SHIDARA <dara@shidara.net>
|
||||
Mathias Bynens <mathias@qiwi.be>
|
||||
Łukasz Walukiewicz <lukasz@walukiewicz.eu>
|
||||
Artur Adib <arturadib@gmail.com>
|
||||
E. Azer Koçulu <azer@kodfabrik.com>
|
||||
Paddy Byers <paddy.byers@gmail.com>
|
||||
Roman Shtylman <shtylman@gmail.com>
|
||||
Kyle Robinson Young <kyle@dontkry.com>
|
||||
Tim Oxley <secoif@gmail.com>
|
||||
Eduard Burtescu <eddy_me08@yahoo.com>
|
||||
Ingmar Runge <ingmar@irsoft.de>
|
||||
Russ Bradberry <rbradberry@gmail.com>
|
||||
Andreas Madsen <amwebdk@gmail.com>
|
||||
Adam Malcontenti-Wilson <adman.com@gmail.com>
|
||||
Avi Flax <avi@aviflax.com>
|
||||
Pedro Teixeira <pedro.teixeira@gmail.com>
|
||||
Johan Bergström <bugs@bergstroem.nu>
|
||||
James Hartig <james.hartig@grooveshark.com>
|
||||
Shannen Saez <shannenlaptop@gmail.com>
|
||||
Seong-Rak Choi <ragiragi@hanmail.net>
|
||||
Dave Irvine <davman99@gmail.com>
|
||||
Ju-yeong Park <interruptz@gmail.com>
|
||||
Phil Sung <psung@dnanexus.com>
|
||||
Damon Oehlman <damon.oehlman@sidelab.com>
|
||||
Mikael Bourges-Sevenier <mikeseven@gmail.com>
|
||||
Emerson Macedo <emerleite@gmail.com>
|
||||
Ryunosuke SATO <tricknotes.rs@gmail.com>
|
||||
Michael Bernstein <michaelrbernstein@gmail.com>
|
||||
Guillermo Rauch <rauchg@gmail.com>
|
||||
Dan Williams <dan@igniter.com>
|
||||
Brandon Benvie <brandon@bbenvie.com>
|
||||
Nicolas LaCasse <nlacasse@borderstylo.com>
|
||||
Dan VerWeire <dverweire@gmail.com>
|
||||
Matthew Fitzsimmons <matt@joyent.com>
|
||||
Philip Tellis <philip.tellis@gmail.com>
|
||||
Christopher Jeffrey <chjjeffrey@gmail.com>
|
||||
Seth Fitzsimmons <seth@mojodna.net>
|
||||
Einar Otto Stangvik <einaros@gmail.com>
|
||||
Paul Vorbach <paul@vorb.de>
|
||||
Luke Gallagher <notfornoone@gmail.com>
|
||||
Tomasz Buchert <tomek.buchert@gmail.com>
|
||||
Myles Byrne <myles@myles.id.au>
|
||||
T.C. Hollingsworth <tchollingsworth@gmail.com>
|
||||
Cam Pedersen <diffference@gmail.com>
|
||||
Roly Fentanes <roly426@gmail.com>
|
||||
Ted Young <ted@radicaldesigns.org>
|
||||
Joshua Holbrook <josh.holbrook@gmail.com>
|
||||
Blake Miner <miner.blake@gmail.com>
|
||||
Vincent Ollivier <contact@vincentollivier.com>
|
||||
Jimb Esser <jimb@railgun3d.com>
|
||||
Sambasiva Suda <sambasivarao@gmail.com>
|
||||
Sadique Ali <sadiqalikm@gmail.com>
|
||||
Dmitry Nizovtsev <dmitry@ukrteam.com>
|
||||
Alex Kocharin <rlidwka@kocharin.ru>
|
||||
Ming Liu <vmliu1@gmail.com>
|
||||
Shea Levy <shea@shealevy.com>
|
||||
Nao Iizuka <iizuka@kyu-mu.net>
|
||||
Christian Ress <christian@ressonline.de>
|
||||
Rod Vagg <rod@vagg.org>
|
||||
Matt Ezell <ezell.matt@gmail.com>
|
||||
Charlie McConnell <charlie@charlieistheman.com>
|
||||
Farid Neshat <FaridN_SOAD@yahoo.com>
|
||||
Johannes Wüller <johanneswueller@gmail.com>
|
||||
Erik Lundin <mjor.himself@gmail.com>
|
||||
Bryan Cantrill <bryan@joyent.com>
|
||||
Yosef Dinerstein <yosefd@microsoft.com>
|
||||
Nathan Friedly <nathan@nfriedly.com>
|
||||
Aaron Jacobs <jacobsa@google.com>
|
||||
Mustansir Golawala <mgolawala@gmail.com>
|
||||
Atsuo Fukaya <fukayatsu@gmail.com>
|
||||
Domenic Denicola <domenic@domenicdenicola.com>
|
||||
Joshua S. Weinstein <josher19@users.sf.net>
|
||||
Dane Springmeyer <dane@dbsgeo.com>
|
||||
Erik Dubbelboer <erik@dubbelboer.com>
|
||||
Malte-Thorben Bruns <skenqbx@googlemail.com>
|
||||
Michael Thomas <aelmalinka@gmail.com>
|
||||
Garen Torikian <gjtorikian@gmail.com>
|
||||
EungJun Yi <semtlenori@gmail.com>
|
||||
Vincent Voyer <v@fasterize.com>
|
||||
Takahiro ANDO <takahiro.ando@gmail.com>
|
||||
Erwin van der Koogh <github@koogh.com>
|
||||
Brian Schroeder <bts@gmail.com>
|
||||
J. Lee Coltrane <lee@projectmastermind.com>
|
||||
Javier Hernández <jhernandez@emergya.com>
|
||||
James Koval <james.ross.koval@gmail.com>
|
||||
Kevin Gadd <kevin.gadd@gmail.com>
|
||||
Ray Solomon <raybsolomon@gmail.com>
|
||||
Kevin Bowman <github@magicmonkey.org>
|
||||
Matt Gollob <mattgollob@gmail.com>
|
||||
Simon Sturmer <sstur@me.com>
|
||||
Joel Brandt <joelrbrandt@gmail.com>
|
||||
Marc Harter <wavded@gmail.com>
|
||||
Nuno Job <nunojobpinto@gmail.com>
|
||||
Ben Kelly <ben@wanderview.com>
|
||||
Felix Böhm <felixboehm55@googlemail.com>
|
||||
Gabriel de Perthuis <g2p.code@gmail.com>
|
||||
Tim Macfarlane <timmacfarlane@gmail.com>
|
||||
Jonas Westerlund <jonas.westerlund@me.com>
|
||||
Dominic Tarr <dominic.tarr@gmail.com>
|
||||
Justin Plock <jplock@gmail.com>
|
||||
Toshihiro Nakamura <toshihiro.nakamura@gmail.com>
|
||||
Ivan Torres <mexpolk@gmail.com>
|
||||
Philipp Hagemeister <phihag@phihag.de>
|
||||
George Shank <shankga@gmail.com>
|
||||
Mike Morearty <mike@morearty.com>
|
||||
Peter Rybin <peter.rybin@gmail.com>
|
||||
Eugen Dueck <eugen@dueck.org>
|
||||
Gil Pedersen <git@gpost.dk>
|
||||
Tyler Neylon <tylerneylon@gmail.com>
|
||||
Golo Roden <webmaster@goloroden.de>
|
||||
Ron Korving <rkorving@wizcorp.jp>
|
||||
Brandon Wilson <chlavois@gmail.com>
|
||||
Bearice Ren <bearice@gmail.com>
|
||||
Ankur Oberoi <aoberoi@gmail.com>
|
||||
Atsuya Takagi <atsuya.takagi@gmail.com>
|
||||
Pooya Karimian <pkarimian@sencha.com>
|
||||
Frédéric Germain <frederic.germain@gmail.com>
|
||||
Robin Lee <cheeselee@fedoraproject.org>
|
||||
Adam Blackburn <regality@gmail.com>
|
||||
Willi Eggeling <email@wje-online.de>
|
||||
Andrew Paprocki <andrew@ishiboo.com>
|
||||
Max Ogden <max@maxogden.com>
|
||||
Olivier Lalonde <olalonde@gmail.com>
|
||||
Francois Marier <francois@mozilla.com>
|
||||
Trevor Norris <trev.norris@gmail.com>
|
||||
Joshua Erickson <josh@snoj.us>
|
||||
Kai Sasaki Lewuathe <sasaki_kai@lewuathe.sakura.ne.jp>
|
||||
Nicolas Chambrier <naholyr@gmail.com>
|
||||
Tim Bradshaw <tfb@cley.com>
|
||||
Johannes Ewald <mail@johannesewald.de>
|
||||
Chris Dent <chris.dent@gmail.com>
|
||||
Dan Milon <danmilon@gmail.com>
|
||||
Jacob Gable <jacob.gable@gmail.com>
|
||||
Rick Yakubowski <richard@orpha-systems.com>
|
||||
Dan Kohn <dan@dankohn.com>
|
||||
Timothy J Fontaine <tjfontaine@gmail.com>
|
||||
Eugene Girshov <eugene.girshov@nixu.com>
|
||||
Raymond Feng <enjoyjava@gmail.com>
|
||||
Tobias Müllerleile <tobias@muellerleile.net>
|
||||
Daniel Chatfield <chatfielddaniel@gmail.com>
|
||||
cjihrig <cjihrig@gmail.com>
|
||||
|
||||
145
CONTRIBUTING.md
Normal file
145
CONTRIBUTING.md
Normal file
@@ -0,0 +1,145 @@
|
||||
# CONTRIBUTING
|
||||
|
||||
The node.js project welcomes new contributors. This document will guide you
|
||||
through the process.
|
||||
|
||||
|
||||
### FORK
|
||||
|
||||
Fork the project [on GitHub](https://github.com/joyent/node) and check out
|
||||
your copy.
|
||||
|
||||
```
|
||||
$ git clone git@github.com:username/node.git
|
||||
$ cd node
|
||||
$ git remote add upstream git://github.com/joyent/node.git
|
||||
```
|
||||
|
||||
Now decide if you want your feature or bug fix to go into the master branch
|
||||
or the stable branch. As a rule of thumb, bug fixes go into the stable branch
|
||||
while new features go into the master branch.
|
||||
|
||||
The stable branch is effectively frozen; patches that change the node.js
|
||||
API/ABI or affect the run-time behavior of applications get rejected.
|
||||
|
||||
The rules for the master branch are less strict; consult the
|
||||
[stability index page][] for details.
|
||||
|
||||
In a nutshell, modules are at varying levels of API stability. Bug fixes are
|
||||
always welcome but API or behavioral changes to modules at stability level 3
|
||||
and up are off-limits.
|
||||
|
||||
Node.js has several bundled dependencies in the deps/ and the tools/
|
||||
directories that are not part of the project proper. Any changes to files
|
||||
in those directories or its subdirectories should be sent to their respective
|
||||
projects. Do not send your patch to us, we cannot accept it.
|
||||
|
||||
In case of doubt, open an issue in the [issue tracker][], post your question
|
||||
to the [node.js mailing list][] or contact one of the [project maintainers][]
|
||||
on [IRC][].
|
||||
|
||||
Especially do so if you plan to work on something big. Nothing is more
|
||||
frustrating than seeing your hard work go to waste because your vision
|
||||
does not align with that of a project maintainer.
|
||||
|
||||
|
||||
### BRANCH
|
||||
|
||||
Okay, so you have decided on the proper branch. Create a feature branch
|
||||
and start hacking:
|
||||
|
||||
```
|
||||
$ git checkout -b my-feature-branch -t origin/v0.8
|
||||
```
|
||||
|
||||
(Where v0.8 is the latest stable branch as of this writing.)
|
||||
|
||||
|
||||
### COMMIT
|
||||
|
||||
Make sure git knows your name and email address:
|
||||
|
||||
```
|
||||
$ git config --global user.name "J. Random User"
|
||||
$ git config --global user.email "j.random.user@example.com"
|
||||
```
|
||||
|
||||
Writing good commit logs is important. A commit log should describe what
|
||||
changed and why. Follow these guidelines when writing one:
|
||||
|
||||
1. The first line should be 50 characters or less and contain a short
|
||||
description of the change.
|
||||
2. Keep the second line blank.
|
||||
3. Wrap all other lines at 72 columns.
|
||||
|
||||
A good commit log looks like this:
|
||||
|
||||
```
|
||||
Header line: explaining the commit in one line
|
||||
|
||||
Body of commit message is a few lines of text, explaining things
|
||||
in more detail, possibly giving some background about the issue
|
||||
being fixed, etc etc.
|
||||
|
||||
The body of the commit message can be several paragraphs, and
|
||||
please do proper word-wrap and keep columns shorter than about
|
||||
72 characters or so. That way `git log` will show things
|
||||
nicely even when it is indented.
|
||||
```
|
||||
|
||||
The header line should be meaningful; it is what other people see when they
|
||||
run `git shortlog` or `git log --oneline`.
|
||||
|
||||
Have a look at `git log` for inspiration.
|
||||
|
||||
|
||||
### REBASE
|
||||
|
||||
Use `git rebase` (not `git merge`) to sync your work from time to time.
|
||||
|
||||
```
|
||||
$ git fetch upstream
|
||||
$ git rebase upstream/v0.8 # or upstream/master
|
||||
```
|
||||
|
||||
|
||||
### TEST
|
||||
|
||||
Bug fixes and features should come with tests. Add your tests in the
|
||||
test/simple/ directory. Look at other tests to see how they should be
|
||||
structured (license boilerplate, common includes, etc.).
|
||||
|
||||
```
|
||||
$ make jslint test
|
||||
```
|
||||
|
||||
Make sure the linter is happy and that all tests pass. Please, do not submit
|
||||
patches that fail either check.
|
||||
|
||||
|
||||
### PUSH
|
||||
|
||||
```
|
||||
$ git push origin my-feature-branch
|
||||
```
|
||||
|
||||
Go to https://github.com/username/node and select your feature branch. Click
|
||||
the 'Pull Request' button and fill out the form.
|
||||
|
||||
Pull requests are usually reviewed within a few days. If there are comments
|
||||
to address, apply your changes in a separate commit and push that to your
|
||||
feature branch. Post a comment in the pull request afterwards; GitHub does
|
||||
not send out notifications when you add commits.
|
||||
|
||||
|
||||
### CONTRIBUTOR LICENSE AGREEMENT
|
||||
|
||||
Please visit http://nodejs.org/cla.html and sign the Contributor License
|
||||
Agreement. You only need to do that once.
|
||||
|
||||
|
||||
[stability index page]: https://github.com/joyent/node/blob/master/doc/api/documentation.markdown
|
||||
[issue tracker]: https://github.com/joyent/node/issues
|
||||
[node.js mailing list]: http://groups.google.com/group/nodejs
|
||||
[IRC]: http://webchat.freenode.net/?channels=node.js
|
||||
[project maintainers]: https://github.com/joyent/node/wiki/Project-Organization
|
||||
599
LICENSE
599
LICENSE
@@ -24,57 +24,580 @@ IN THE SOFTWARE.
|
||||
====
|
||||
|
||||
This license applies to all parts of Node that are not externally
|
||||
maintained libraries.
|
||||
maintained libraries. The externally maintained libraries used by Node are:
|
||||
|
||||
The externally maintained libraries used by Node are:
|
||||
- V8, located at deps/v8. V8's license follows:
|
||||
"""
|
||||
This license applies to all parts of V8 that are not externally
|
||||
maintained libraries. The externally maintained libraries used by V8
|
||||
are:
|
||||
|
||||
- v8, located at deps/v8. v8 is copyright Google, Inc, and released
|
||||
under a BSD license.
|
||||
- PCRE test suite, located in
|
||||
test/mjsunit/third_party/regexp-pcre.js. This is based on the
|
||||
test suite from PCRE-7.3, which is copyrighted by the University
|
||||
of Cambridge and Google, Inc. The copyright notice and license
|
||||
are embedded in regexp-pcre.js.
|
||||
|
||||
- libev, located at deps/libev, and libeio, located at deps/libeio. libev
|
||||
and libeio are copyright Marc Alexander Lehmann, and dual-licensed
|
||||
under the MIT license and GPL2.
|
||||
- Layout tests, located in test/mjsunit/third_party. These are
|
||||
based on layout tests from webkit.org which are copyrighted by
|
||||
Apple Computer, Inc. and released under a 3-clause BSD license.
|
||||
|
||||
- WAF build system, located at tools/waf. WAF is copyright Thomas Nagy,
|
||||
and released under the MIT license.
|
||||
- Strongtalk assembler, the basis of the files assembler-arm-inl.h,
|
||||
assembler-arm.cc, assembler-arm.h, assembler-ia32-inl.h,
|
||||
assembler-ia32.cc, assembler-ia32.h, assembler-x64-inl.h,
|
||||
assembler-x64.cc, assembler-x64.h, assembler-mips-inl.h,
|
||||
assembler-mips.cc, assembler-mips.h, assembler.cc and assembler.h.
|
||||
This code is copyrighted by Sun Microsystems Inc. and released
|
||||
under a 3-clause BSD license.
|
||||
|
||||
- The SCONS build system, located at tools/scons. SCONS is copyright
|
||||
the SCONS Foundation and released under the MIT license.
|
||||
- Valgrind client API header, located at third_party/valgrind/valgrind.h
|
||||
This is release under the BSD license.
|
||||
|
||||
- C-Ares, an asynchronous DNS client, located at deps/c-ares. C-Ares is
|
||||
copyright the Massachusetts Institute of Technology, authored by
|
||||
Greg Hudson, Daniel Stenberg and others, and released under the MIT
|
||||
license.
|
||||
These libraries have their own licenses; we recommend you read them,
|
||||
as their terms may differ from the terms below.
|
||||
|
||||
- Node, optionally, links to OpenSSL, it is located at deps/openssl.
|
||||
OpenSSL is cryptographic software written by Eric Young
|
||||
(eay@cryptsoft.com) to provide SSL/TLS encryption. OpenSSL is copyright
|
||||
The OpenSSL Project and released under the OpenSSL license.
|
||||
Copyright 2006-2012, the V8 project authors. All rights reserved.
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
- tools/doctool/markdown.js is copyright 2009-2010 Dominic Baggott and Ash
|
||||
Berli and released under the MIT license.
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above
|
||||
copyright notice, this list of conditions and the following
|
||||
disclaimer in the documentation and/or other materials provided
|
||||
with the distribution.
|
||||
* Neither the name of Google Inc. nor the names of its
|
||||
contributors may be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
- HTTP Parser, located at deps/http_parser, is a small C library
|
||||
copyright Ryan Lienhart Dahl and released under the MIT license.
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
"""
|
||||
|
||||
- src/platform_darwin_proctitle.cc, has code taken from the Chromium
|
||||
project copyright Google Inc. and released under a BSD license.
|
||||
- libev, located at deps/uv/src/unix/ev. libev's license follows:
|
||||
"""
|
||||
All files in libev are Copyright (C)2007,2008,2009 Marc Alexander Lehmann.
|
||||
|
||||
- tools/closure_linter is copyright The Closure Linter Authors and
|
||||
Google Inc. and released under the Apache License, version 2.0.
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
- tools/cpplint.py is copyright Google Inc. and released under a
|
||||
BSD license.
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
- lib/buffer_ieee754.js is copyright 2008 Fair Oaks Labs, Inc. and released
|
||||
under the New BSD license.
|
||||
* Redistributions in binary form must reproduce the above
|
||||
copyright notice, this list of conditions and the following
|
||||
disclaimer in the documentation and/or other materials provided
|
||||
with the distribution.
|
||||
|
||||
- lib/punycode.js is copyright 2011 Mathias Bynens <http://mathiasbynens.be/>
|
||||
and released under the MIT license.
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
- tools/gyp GYP is a meta-build system copyright 2009 Google Inc and
|
||||
licensed under the three clause BSD license. See tools/gyp/LICENSE.
|
||||
Alternatively, the contents of this package may be used under the terms
|
||||
of the GNU General Public License ("GPL") version 2 or any later version,
|
||||
in which case the provisions of the GPL are applicable instead of the
|
||||
above. If you wish to allow the use of your version of this package only
|
||||
under the terms of the GPL and not to allow others to use your version of
|
||||
this file under the BSD license, indicate your decision by deleting the
|
||||
provisions above and replace them with the notice and other provisions
|
||||
required by the GPL in this and the other files of this package. If you do
|
||||
not delete the provisions above, a recipient may use your version of this
|
||||
file under either the BSD or the GPL.
|
||||
"""
|
||||
|
||||
- deps/zlib copyright 1995-2010 Jean-loup Gailly and Mark Adler
|
||||
licensed under a permissive free software license. See
|
||||
deps/zlib/LICENSE.
|
||||
- libeio, located at deps/uv/src/unix/eio. libeio's license follows:
|
||||
"""
|
||||
All files in libeio are Copyright (C)2007,2008 Marc Alexander Lehmann.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above
|
||||
copyright notice, this list of conditions and the following
|
||||
disclaimer in the documentation and/or other materials provided
|
||||
with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
Alternatively, the contents of this package may be used under the terms
|
||||
of the GNU General Public License ("GPL") version 2 or any later version,
|
||||
in which case the provisions of the GPL are applicable instead of the
|
||||
above. If you wish to allow the use of your version of this package only
|
||||
under the terms of the GPL and not to allow others to use your version of
|
||||
this file under the BSD license, indicate your decision by deleting the
|
||||
provisions above and replace them with the notice and other provisions
|
||||
required by the GPL in this and the other files of this package. If you do
|
||||
not delete the provisions above, a recipient may use your version of this
|
||||
file under either the BSD or the GPL.
|
||||
"""
|
||||
|
||||
- WAF build system, located at tools/waf*. WAF's license follows:
|
||||
"""
|
||||
Copyright Thomas Nagy, 2005-2011
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
3. The name of the author may not be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
|
||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
|
||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
"""
|
||||
|
||||
- C-Ares, an asynchronous DNS client, located at deps/uv/src/ares. C-Ares license
|
||||
follows:
|
||||
"""
|
||||
/* Copyright 1998 by the Massachusetts Institute of Technology.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software and its documentation for any purpose and without
|
||||
* fee is hereby granted, provided that the above copyright
|
||||
* notice appear in all copies and that both that copyright
|
||||
* notice and this permission notice appear in supporting
|
||||
* documentation, and that the name of M.I.T. not be used in
|
||||
* advertising or publicity pertaining to distribution of the
|
||||
* software without specific, written prior permission.
|
||||
* M.I.T. makes no representations about the suitability of
|
||||
* this software for any purpose. It is provided "as is"
|
||||
* without express or implied warranty.
|
||||
"""
|
||||
|
||||
- OpenSSL located at deps/openssl. OpenSSL is cryptographic software written
|
||||
by Eric Young (eay@cryptsoft.com) to provide SSL/TLS encryption. OpenSSL's
|
||||
license follows:
|
||||
"""
|
||||
/* ====================================================================
|
||||
* Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* 3. All advertising materials mentioning features or use of this
|
||||
* software must display the following acknowledgment:
|
||||
* "This product includes software developed by the OpenSSL Project
|
||||
* for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
|
||||
*
|
||||
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
|
||||
* endorse or promote products derived from this software without
|
||||
* prior written permission. For written permission, please contact
|
||||
* openssl-core@openssl.org.
|
||||
*
|
||||
* 5. Products derived from this software may not be called "OpenSSL"
|
||||
* nor may "OpenSSL" appear in their names without prior written
|
||||
* permission of the OpenSSL Project.
|
||||
*
|
||||
* 6. Redistributions of any form whatsoever must retain the following
|
||||
* acknowledgment:
|
||||
* "This product includes software developed by the OpenSSL Project
|
||||
* for use in the OpenSSL Toolkit (http://www.openssl.org/)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
|
||||
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
|
||||
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
* ====================================================================
|
||||
*
|
||||
* This product includes cryptographic software written by Eric Young
|
||||
* (eay@cryptsoft.com). This product includes software written by Tim
|
||||
* Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
*/
|
||||
"""
|
||||
|
||||
- HTTP Parser, located at deps/http_parser. HTTP Parser's license follows:
|
||||
"""
|
||||
http_parser.c is based on src/http/ngx_http_parse.c from NGINX copyright
|
||||
Igor Sysoev.
|
||||
|
||||
Additional changes are licensed under the same terms as NGINX and
|
||||
copyright Joyent, Inc. and other Node contributors. All rights reserved.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to
|
||||
deal in the Software without restriction, including without limitation the
|
||||
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
sell copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
IN THE SOFTWARE.
|
||||
"""
|
||||
|
||||
- Closure Linter is located at tools/closure_linter. Closure's license
|
||||
follows:
|
||||
"""
|
||||
# Copyright (c) 2007, Google Inc.
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are
|
||||
# met:
|
||||
#
|
||||
# * Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
# * Redistributions in binary form must reproduce the above
|
||||
# copyright notice, this list of conditions and the following disclaimer
|
||||
# in the documentation and/or other materials provided with the
|
||||
# distribution.
|
||||
# * Neither the name of Google Inc. nor the names of its
|
||||
# contributors may be used to endorse or promote products derived from
|
||||
# this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
"""
|
||||
|
||||
- tools/cpplint.py is a C++ linter. Its license follows:
|
||||
"""
|
||||
# Copyright (c) 2009 Google Inc. All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are
|
||||
# met:
|
||||
#
|
||||
# * Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
# * Redistributions in binary form must reproduce the above
|
||||
# copyright notice, this list of conditions and the following disclaimer
|
||||
# in the documentation and/or other materials provided with the
|
||||
# distribution.
|
||||
# * Neither the name of Google Inc. nor the names of its
|
||||
# contributors may be used to endorse or promote products derived from
|
||||
# this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
"""
|
||||
|
||||
- lib/buffer_ieee754.js. Its license follows:
|
||||
"""
|
||||
// Copyright (c) 2008, Fair Oaks Labs, Inc.
|
||||
// All rights reserved.
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions are met:
|
||||
//
|
||||
// * Redistributions of source code must retain the above copyright notice,
|
||||
// this list of conditions and the following disclaimer.
|
||||
//
|
||||
// * Redistributions in binary form must reproduce the above copyright notice,
|
||||
// this list of conditions and the following disclaimer in the documentation
|
||||
// and/or other materials provided with the distribution.
|
||||
//
|
||||
// * Neither the name of Fair Oaks Labs, Inc. nor the names of its contributors
|
||||
// may be used to endorse or promote products derived from this software
|
||||
// without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
// POSSIBILITY OF SUCH DAMAGE.
|
||||
"""
|
||||
|
||||
- lib/punycode.js is copyright 2011 Mathias Bynens <http://mathiasbynens.be/>
|
||||
and released under the MIT license.
|
||||
"""
|
||||
* Punycode.js <http://mths.be/punycode>
|
||||
* Copyright 2011 Mathias Bynens <http://mathiasbynens.be/>
|
||||
* Available under MIT license <http://mths.be/mit>
|
||||
"""
|
||||
|
||||
- tools/gyp. GYP is a meta-build system. GYP's license follows:
|
||||
"""
|
||||
Copyright (c) 2009 Google Inc. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above
|
||||
copyright notice, this list of conditions and the following disclaimer
|
||||
in the documentation and/or other materials provided with the
|
||||
distribution.
|
||||
* Neither the name of Google Inc. nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
"""
|
||||
|
||||
- Zlib at deps/zlib. zlib's license follows:
|
||||
"""
|
||||
/* zlib.h -- interface of the 'zlib' general purpose compression library
|
||||
version 1.2.4, March 14th, 2010
|
||||
|
||||
Copyright (C) 1995-2010 Jean-loup Gailly and Mark Adler
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
|
||||
Jean-loup Gailly
|
||||
Mark Adler
|
||||
|
||||
*/
|
||||
"""
|
||||
|
||||
- npm is a package manager program located at deps/npm.
|
||||
npm's license follows:
|
||||
"""
|
||||
Copyright 2009-2012, Isaac Z. Schlueter (the "Original Author")
|
||||
All rights reserved.
|
||||
|
||||
MIT +no-false-attribs License
|
||||
|
||||
Permission is hereby granted, free of charge, to any person
|
||||
obtaining a copy of this software and associated documentation
|
||||
files (the "Software"), to deal in the Software without
|
||||
restriction, including without limitation the rights to use,
|
||||
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following
|
||||
conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
Distributions of all or part of the Software intended to be used
|
||||
by the recipients as they would use the unmodified Software,
|
||||
containing modifications that substantially alter, remove, or
|
||||
disable functionality of the Software, outside of the documented
|
||||
configuration mechanisms provided by the Software, shall be
|
||||
modified such that the Original Author's bug reporting email
|
||||
addresses and urls are either replaced with the contact information
|
||||
of the parties responsible for the changes, or removed entirely.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
|
||||
Except where noted, this license applies to any and all software
|
||||
programs and associated documentation files created by the
|
||||
Original Author, when distributed with the Software.
|
||||
|
||||
"Node.js" and "node" trademark Joyent, Inc. npm is not officially
|
||||
part of the Node.js project, and is neither owned by nor
|
||||
officially affiliated with Joyent, Inc.
|
||||
|
||||
Packages published in the npm registry are not part of npm
|
||||
itself, are the sole property of their respective maintainers,
|
||||
and are not covered by this license.
|
||||
|
||||
"npm Logo" created by Mathias Pettersson and Brian Hammond,
|
||||
used with permission.
|
||||
|
||||
"Gubblebum Blocky" font
|
||||
Copyright (c) 2007 by Tjarda Koster, http://jelloween.deviantart.com
|
||||
included for use in the npm website and documentation,
|
||||
used with permission.
|
||||
|
||||
This program uses "node-uuid", Copyright (c) 2010 Robert Kieffer,
|
||||
according to the terms of the MIT license.
|
||||
|
||||
This program uses "request", Copyright (c) 2011 Mikeal Rogers,
|
||||
according to the terms of the Apache license.
|
||||
|
||||
This program uses "mkdirp", Copyright (c) 2010 James Halliday,
|
||||
according to the terms of the MIT/X11 license.
|
||||
"""
|
||||
|
||||
- tools/doc/node_modules/marked. Marked is a Markdown parser. Marked's
|
||||
license follows:
|
||||
"""
|
||||
Copyright (c) 2011-2012, Christopher Jeffrey (https://github.com/chjj/)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
"""
|
||||
|
||||
- test/gc/node_modules/weak. Node-weak is a node.js addon that provides garbage
|
||||
collector notifications. Node-weak's license follows:
|
||||
"""
|
||||
Copyright (c) 2011, Ben Noordhuis <info@bnoordhuis.nl>
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted, provided that the above
|
||||
copyright notice and this permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
"""
|
||||
|
||||
- src/ngx-queue.h. ngx-queue.h is taken from the nginx source tree. nginx's
|
||||
license follows:
|
||||
"""
|
||||
Copyright (C) 2002-2012 Igor Sysoev
|
||||
Copyright (C) 2011,2012 Nginx, Inc.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGE.
|
||||
"""
|
||||
|
||||
290
Makefile
290
Makefile
@@ -1,82 +1,125 @@
|
||||
WAF=python tools/waf-light
|
||||
-include config.mk
|
||||
|
||||
web_root = node@nodejs.org:~/web/nodejs.org/
|
||||
BUILDTYPE ?= Release
|
||||
PYTHON ?= python
|
||||
DESTDIR ?=
|
||||
SIGN ?=
|
||||
|
||||
#
|
||||
# Because we recursively call make from waf we need to make sure that we are
|
||||
# using the correct make. Not all makes are GNU Make, but this likely only
|
||||
# works with gnu make. To deal with this we remember how the user invoked us
|
||||
# via a make builtin variable and use that in all subsequent operations
|
||||
#
|
||||
export NODE_MAKE := $(MAKE)
|
||||
# Default to verbose builds.
|
||||
# To do quiet/pretty builds, run `make V=` to set V to an empty string,
|
||||
# or set the V environment variable to an empty string.
|
||||
V ?= 1
|
||||
|
||||
all: program
|
||||
@-[ -f out/Release/node ] && ls -lh out/Release/node
|
||||
# BUILDTYPE=Debug builds both release and debug builds. If you want to compile
|
||||
# just the debug build, run `make -C out BUILDTYPE=Debug` instead.
|
||||
ifeq ($(BUILDTYPE),Release)
|
||||
all: out/Makefile node
|
||||
else
|
||||
all: out/Makefile node node_g
|
||||
endif
|
||||
|
||||
all-progress:
|
||||
@$(WAF) -p build
|
||||
# The .PHONY is needed to ensure that we recursively use the out/Makefile
|
||||
# to check for changes.
|
||||
.PHONY: node node_g
|
||||
|
||||
program:
|
||||
@$(WAF) --product-type=program build
|
||||
node: config.gypi out/Makefile
|
||||
$(MAKE) -C out BUILDTYPE=Release V=$(V)
|
||||
ln -fs out/Release/node node
|
||||
|
||||
staticlib:
|
||||
@$(WAF) --product-type=cstaticlib build
|
||||
node_g: config.gypi out/Makefile
|
||||
$(MAKE) -C out BUILDTYPE=Debug V=$(V)
|
||||
ln -fs out/Debug/node node_g
|
||||
|
||||
dynamiclib:
|
||||
@$(WAF) --product-type=cshlib build
|
||||
config.gypi: configure
|
||||
./configure
|
||||
|
||||
install:
|
||||
@$(WAF) install
|
||||
out/Debug/node:
|
||||
$(MAKE) -C out BUILDTYPE=Debug V=$(V)
|
||||
|
||||
out/Makefile: common.gypi deps/uv/uv.gyp deps/http_parser/http_parser.gyp deps/zlib/zlib.gyp deps/v8/build/common.gypi deps/v8/tools/gyp/v8.gyp node.gyp config.gypi
|
||||
$(PYTHON) tools/gyp_node -f make
|
||||
|
||||
install: all
|
||||
$(PYTHON) tools/install.py $@ $(DESTDIR)
|
||||
|
||||
uninstall:
|
||||
@$(WAF) uninstall
|
||||
$(PYTHON) tools/install.py $@ $(DESTDIR)
|
||||
|
||||
clean:
|
||||
-rm -rf out/Makefile node node_g out/$(BUILDTYPE)/node blog.html email.md
|
||||
-find out/ -name '*.o' -o -name '*.a' | xargs rm -rf
|
||||
-rm -rf node_modules
|
||||
|
||||
distclean:
|
||||
-rm -rf out
|
||||
-rm -f config.gypi
|
||||
-rm -f config.mk
|
||||
-rm -rf node node_g blog.html email.md
|
||||
-rm -rf node_modules
|
||||
|
||||
test: all
|
||||
python tools/test.py --mode=release simple message
|
||||
$(PYTHON) tools/test.py --mode=release simple message
|
||||
PYTHONPATH=tools/closure_linter/ $(PYTHON) tools/closure_linter/closure_linter/gjslint.py --unix_mode --strict --nojsdoc -r lib/ -r src/ --exclude_files lib/punycode.js
|
||||
|
||||
test-http1: all
|
||||
python tools/test.py --mode=release --use-http1 simple message
|
||||
$(PYTHON) tools/test.py --mode=release --use-http1 simple message
|
||||
|
||||
test-valgrind: all
|
||||
python tools/test.py --mode=release --valgrind simple message
|
||||
$(PYTHON) tools/test.py --mode=release --valgrind simple message
|
||||
|
||||
test-all: all
|
||||
python tools/test.py --mode=debug,release
|
||||
test/gc/node_modules/weak/build:
|
||||
@if [ ! -f node ]; then make all; fi
|
||||
./node deps/npm/node_modules/node-gyp/bin/node-gyp rebuild \
|
||||
--directory="$(shell pwd)/test/gc/node_modules/weak" \
|
||||
--nodedir="$(shell pwd)"
|
||||
|
||||
test-gc: all test/gc/node_modules/weak/build
|
||||
$(PYTHON) tools/test.py --mode=release gc
|
||||
|
||||
test-all: all test/gc/node_modules/weak/build
|
||||
$(PYTHON) tools/test.py --mode=debug,release
|
||||
make test-npm
|
||||
|
||||
test-all-http1: all
|
||||
python tools/test.py --mode=debug,release --use-http1
|
||||
$(PYTHON) tools/test.py --mode=debug,release --use-http1
|
||||
|
||||
test-all-valgrind: all
|
||||
python tools/test.py --mode=debug,release --valgrind
|
||||
$(PYTHON) tools/test.py --mode=debug,release --valgrind
|
||||
|
||||
test-release: all
|
||||
python tools/test.py --mode=release
|
||||
$(PYTHON) tools/test.py --mode=release
|
||||
|
||||
test-debug: all
|
||||
python tools/test.py --mode=debug
|
||||
$(PYTHON) tools/test.py --mode=debug
|
||||
|
||||
test-message: all
|
||||
python tools/test.py message
|
||||
$(PYTHON) tools/test.py message
|
||||
|
||||
test-simple: all
|
||||
python tools/test.py simple
|
||||
$(PYTHON) tools/test.py simple
|
||||
|
||||
test-pummel: all
|
||||
python tools/test.py pummel
|
||||
$(PYTHON) tools/test.py pummel
|
||||
|
||||
test-internet: all
|
||||
python tools/test.py internet
|
||||
$(PYTHON) tools/test.py internet
|
||||
|
||||
test-npm: node
|
||||
./node deps/npm/test/run.js
|
||||
|
||||
out/Release/node: all
|
||||
test-npm-publish: node
|
||||
npm_package_config_publishtest=true ./node deps/npm/test/run.js
|
||||
|
||||
apidoc_sources = $(wildcard doc/api/*.markdown)
|
||||
apidocs = $(addprefix out/,$(apidoc_sources:.markdown=.html))
|
||||
apidocs = $(addprefix out/,$(apidoc_sources:.markdown=.html)) \
|
||||
$(addprefix out/,$(apidoc_sources:.markdown=.json))
|
||||
|
||||
apidoc_dirs = out/doc out/doc/api/ out/doc/api/assets
|
||||
apidoc_dirs = out/doc out/doc/api/ out/doc/api/assets out/doc/about out/doc/community out/doc/download out/doc/logos out/doc/images
|
||||
|
||||
apiassets = $(subst api_assets,api/assets,$(addprefix out/,$(wildcard doc/api_assets/*)))
|
||||
|
||||
doc_images = $(addprefix out/,$(wildcard doc/images/* doc/*.jpg doc/*.png))
|
||||
|
||||
website_files = \
|
||||
out/doc/index.html \
|
||||
out/doc/v0.4_announcement.html \
|
||||
@@ -84,15 +127,23 @@ website_files = \
|
||||
out/doc/sh_main.js \
|
||||
out/doc/sh_javascript.min.js \
|
||||
out/doc/sh_vim-dark.css \
|
||||
out/doc/logo.png \
|
||||
out/doc/sponsored.png \
|
||||
out/doc/favicon.ico \
|
||||
out/doc/pipe.css
|
||||
out/doc/sh.css \
|
||||
out/doc/favicon.ico \
|
||||
out/doc/pipe.css \
|
||||
out/doc/about/index.html \
|
||||
out/doc/community/index.html \
|
||||
out/doc/download/index.html \
|
||||
out/doc/logos/index.html \
|
||||
out/doc/changelog.html \
|
||||
$(doc_images)
|
||||
|
||||
doc: doc
|
||||
doc: $(apidoc_dirs) $(website_files) $(apiassets) $(apidocs) tools/doc/ blog node
|
||||
|
||||
out/doc: out/Release/node $(apidoc_dirs) $(website_files) $(apiassets) $(apidocs)
|
||||
blogclean:
|
||||
rm -rf out/blog
|
||||
|
||||
blog: doc/blog out/Release/node tools/blog
|
||||
out/Release/node tools/blog/generate.js doc/blog/ out/blog/ doc/blog.html doc/rss.xml
|
||||
|
||||
$(apidoc_dirs):
|
||||
mkdir -p $@
|
||||
@@ -100,16 +151,40 @@ $(apidoc_dirs):
|
||||
out/doc/api/assets/%: doc/api_assets/% out/doc/api/assets/
|
||||
cp $< $@
|
||||
|
||||
out/doc/changelog.html: ChangeLog doc/changelog-head.html doc/changelog-foot.html tools/build-changelog.sh node
|
||||
bash tools/build-changelog.sh
|
||||
|
||||
out/doc/%.html: doc/%.html node
|
||||
cat $< | sed -e 's|__VERSION__|'$(VERSION)'|g' > $@
|
||||
|
||||
out/doc/%: doc/%
|
||||
cp $< $@
|
||||
cp -r $< $@
|
||||
|
||||
out/doc/api/%.html: doc/api/%.markdown out/Release/node $(apidoc_dirs) $(apiassets) tools/doctool/doctool.js
|
||||
out/Release/node tools/doctool/doctool.js doc/template.html $< > $@
|
||||
out/doc/api/%.json: doc/api/%.markdown node
|
||||
out/Release/node tools/doc/generate.js --format=json $< > $@
|
||||
|
||||
out/doc/%:
|
||||
out/doc/api/%.html: doc/api/%.markdown node
|
||||
out/Release/node tools/doc/generate.js --format=html --template=doc/template.html $< > $@
|
||||
|
||||
email.md: ChangeLog tools/email-footer.md
|
||||
bash tools/changelog-head.sh | sed 's|^\* #|* \\#|g' > $@
|
||||
cat tools/email-footer.md | sed -e 's|__VERSION__|'$(VERSION)'|g' >> $@
|
||||
|
||||
blog.html: email.md
|
||||
cat $< | ./node tools/doc/node_modules/.bin/marked > $@
|
||||
|
||||
blog-upload: blog
|
||||
rsync -r out/blog/ node@nodejs.org:~/web/nodejs.org/blog/
|
||||
|
||||
website-upload: doc
|
||||
scp -r out/doc/* $(web_root)
|
||||
rsync -r out/doc/ node@nodejs.org:~/web/nodejs.org/
|
||||
ssh node@nodejs.org '\
|
||||
rm -f ~/web/nodejs.org/dist/latest &&\
|
||||
ln -s $(VERSION) ~/web/nodejs.org/dist/latest &&\
|
||||
rm -f ~/web/nodejs.org/docs/latest &&\
|
||||
ln -s $(VERSION) ~/web/nodejs.org/docs/latest &&\
|
||||
rm -f ~/web/nodejs.org/dist/node-latest.tar.gz &&\
|
||||
ln -s $(VERSION)/node-$(VERSION).tar.gz ~/web/nodejs.org/dist/node-latest.tar.gz'
|
||||
|
||||
docopen: out/doc/api/all.html
|
||||
-google-chrome out/doc/api/all.html
|
||||
@@ -117,41 +192,103 @@ docopen: out/doc/api/all.html
|
||||
docclean:
|
||||
-rm -rf out/doc
|
||||
|
||||
clean:
|
||||
$(WAF) clean
|
||||
-find tools -name "*.pyc" | xargs rm -f
|
||||
|
||||
distclean: docclean
|
||||
-find tools -name "*.pyc" | xargs rm -f
|
||||
-rm -rf dist-osx
|
||||
-rm -rf out/ node node_g
|
||||
|
||||
check:
|
||||
@tools/waf-light check
|
||||
|
||||
VERSION=v$(shell python tools/getnodeversion.py)
|
||||
VERSION=v$(shell $(PYTHON) tools/getnodeversion.py)
|
||||
RELEASE=$(shell $(PYTHON) tools/getnodeisrelease.py)
|
||||
PLATFORM=$(shell uname | tr '[:upper:]' '[:lower:]')
|
||||
ifeq ($(findstring x86_64,$(shell uname -m)),x86_64)
|
||||
DESTCPU ?= x64
|
||||
else
|
||||
DESTCPU ?= ia32
|
||||
endif
|
||||
ifeq ($(DESTCPU),x64)
|
||||
ARCH=x64
|
||||
else
|
||||
ARCH=x86
|
||||
endif
|
||||
TARNAME=node-$(VERSION)
|
||||
TARBALL=$(TARNAME).tar.gz
|
||||
PKG=dist-osx/$(TARNAME).pkg
|
||||
BINARYNAME=$(TARNAME)-$(PLATFORM)-$(ARCH)
|
||||
BINARYTAR=$(BINARYNAME).tar.gz
|
||||
PKG=out/$(TARNAME).pkg
|
||||
packagemaker=/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker
|
||||
|
||||
#dist: doc/node.1 doc/api
|
||||
dist: $(TARBALL) $(PKG)
|
||||
dist: doc $(TARBALL) $(PKG)
|
||||
|
||||
$(PKG):
|
||||
-rm -rf dist-osx
|
||||
tools/osx-dist.sh
|
||||
PKGDIR=out/dist-osx
|
||||
|
||||
$(TARBALL): out/doc
|
||||
release-only:
|
||||
@if [ "$(shell git status --porcelain | egrep -v '^\?\? ')" = "" ]; then \
|
||||
exit 0 ; \
|
||||
else \
|
||||
echo "" >&2 ; \
|
||||
echo "The git repository is not clean." >&2 ; \
|
||||
echo "Please commit changes before building release tarball." >&2 ; \
|
||||
echo "" >&2 ; \
|
||||
git status --porcelain | egrep -v '^\?\?' >&2 ; \
|
||||
echo "" >&2 ; \
|
||||
exit 1 ; \
|
||||
fi
|
||||
@if [ "$(RELEASE)" = "1" ]; then \
|
||||
exit 0; \
|
||||
else \
|
||||
echo "" >&2 ; \
|
||||
echo "#NODE_VERSION_IS_RELEASE is set to $(RELEASE)." >&2 ; \
|
||||
echo "Did you remember to update src/node_version.cc?" >&2 ; \
|
||||
echo "" >&2 ; \
|
||||
exit 1 ; \
|
||||
fi
|
||||
|
||||
pkg: $(PKG)
|
||||
|
||||
$(PKG): release-only
|
||||
rm -rf $(PKGDIR)
|
||||
rm -rf out/deps out/Release
|
||||
./configure --prefix=$(PKGDIR)/32/usr/local --without-snapshot --dest-cpu=ia32
|
||||
$(MAKE) install V=$(V)
|
||||
rm -rf out/deps out/Release
|
||||
./configure --prefix=$(PKGDIR)/usr/local --without-snapshot --dest-cpu=x64
|
||||
$(MAKE) install V=$(V)
|
||||
SIGN="$(APP_SIGN)" PKGDIR="$(PKGDIR)" bash tools/osx-codesign.sh
|
||||
lipo $(PKGDIR)/32/usr/local/bin/node \
|
||||
$(PKGDIR)/usr/local/bin/node \
|
||||
-output $(PKGDIR)/usr/local/bin/node-universal \
|
||||
-create
|
||||
mv $(PKGDIR)/usr/local/bin/node-universal $(PKGDIR)/usr/local/bin/node
|
||||
rm -rf $(PKGDIR)/32
|
||||
$(packagemaker) \
|
||||
--id "org.nodejs.Node" \
|
||||
--doc tools/osx-pkg.pmdoc \
|
||||
--out $(PKG)
|
||||
SIGN="$(INT_SIGN)" PKG="$(PKG)" bash tools/osx-productsign.sh
|
||||
|
||||
$(TARBALL): release-only node doc
|
||||
git archive --format=tar --prefix=$(TARNAME)/ HEAD | tar xf -
|
||||
mkdir -p $(TARNAME)/doc
|
||||
mkdir -p $(TARNAME)/doc/api
|
||||
cp doc/node.1 $(TARNAME)/doc/node.1
|
||||
cp -r out/doc/api $(TARNAME)/doc/api
|
||||
cp -r out/doc/api/* $(TARNAME)/doc/api/
|
||||
rm -rf $(TARNAME)/deps/v8/test # too big
|
||||
rm -rf $(TARNAME)/doc/logos # too big
|
||||
rm -rf $(TARNAME)/doc/images # too big
|
||||
find $(TARNAME)/ -type l | xargs rm # annoying on windows
|
||||
tar -cf $(TARNAME).tar $(TARNAME)
|
||||
rm -rf $(TARNAME)
|
||||
gzip -f -9 $(TARNAME).tar
|
||||
|
||||
tar: $(TARBALL)
|
||||
|
||||
$(BINARYTAR): release-only
|
||||
rm -rf $(BINARYNAME)
|
||||
rm -rf out/deps out/Release
|
||||
./configure --prefix=/ --without-snapshot --dest-cpu=$(DESTCPU) $(CONFIG_FLAGS)
|
||||
$(MAKE) install DESTDIR=$(BINARYNAME) V=$(V) PORTABLE=1
|
||||
cp README.md $(BINARYNAME)
|
||||
cp LICENSE $(BINARYNAME)
|
||||
cp ChangeLog $(BINARYNAME)
|
||||
tar -cf $(BINARYNAME).tar $(BINARYNAME)
|
||||
rm -rf $(BINARYNAME)
|
||||
gzip -f -9 $(BINARYNAME).tar
|
||||
|
||||
binary: $(BINARYTAR)
|
||||
|
||||
dist-upload: $(TARBALL) $(PKG)
|
||||
ssh node@nodejs.org mkdir -p web/nodejs.org/dist/$(VERSION)
|
||||
scp $(TARBALL) node@nodejs.org:~/web/nodejs.org/dist/$(VERSION)/$(TARBALL)
|
||||
@@ -165,12 +302,15 @@ bench-idle:
|
||||
sleep 1
|
||||
./node benchmark/idle_clients.js &
|
||||
|
||||
jslintfix:
|
||||
PYTHONPATH=tools/closure_linter/ $(PYTHON) tools/closure_linter/closure_linter/fixjsstyle.py --strict --nojsdoc -r lib/ -r src/ --exclude_files lib/punycode.js
|
||||
|
||||
jslint:
|
||||
PYTHONPATH=tools/closure_linter/ python tools/closure_linter/closure_linter/gjslint.py --unix_mode --strict --nojsdoc -r lib/ -r src/ -r test/
|
||||
PYTHONPATH=tools/closure_linter/ $(PYTHON) tools/closure_linter/closure_linter/gjslint.py --unix_mode --strict --nojsdoc -r lib/ -r src/ --exclude_files lib/punycode.js
|
||||
|
||||
cpplint:
|
||||
@python tools/cpplint.py $(wildcard src/*.cc src/*.h src/*.c)
|
||||
@$(PYTHON) tools/cpplint.py $(wildcard src/*.cc src/*.h src/*.c)
|
||||
|
||||
lint: jslint cpplint
|
||||
|
||||
.PHONY: lint cpplint jslint bench clean docopen docclean doc dist distclean dist-upload check uninstall install all program staticlib dynamiclib test test-all website-upload
|
||||
.PHONY: lint cpplint jslint bench clean docopen docclean doc dist distclean check uninstall install install-includes install-bin all staticlib dynamiclib test test-all website-upload pkg blog blogclean tar binary release-only
|
||||
|
||||
319
Makefile-gyp
319
Makefile-gyp
@@ -1,319 +0,0 @@
|
||||
BUILDTYPE ?= Release
|
||||
|
||||
all: out/Makefile
|
||||
tools/gyp_node -f make
|
||||
$(MAKE) -C out BUILDTYPE=$(BUILDTYPE)
|
||||
-ln -fs out/Release/node node
|
||||
-ln -fs out/Debug/node node_g
|
||||
|
||||
out/Release/node: all
|
||||
|
||||
out/Makefile: node.gyp deps/uv/uv.gyp
|
||||
|
||||
clean:
|
||||
rm -rf out
|
||||
|
||||
distclean:
|
||||
rm -rf out
|
||||
|
||||
test: all
|
||||
python tools/test.py --mode=release simple message
|
||||
|
||||
test-http1: all
|
||||
python tools/test.py --mode=release --use-http1 simple message
|
||||
|
||||
test-valgrind: all
|
||||
python tools/test.py --mode=release --valgrind simple message
|
||||
|
||||
test-all: all
|
||||
python tools/test.py --mode=debug,release
|
||||
|
||||
test-all-http1: all
|
||||
python tools/test.py --mode=debug,release --use-http1
|
||||
|
||||
test-all-valgrind: all
|
||||
python tools/test.py --mode=debug,release --valgrind
|
||||
|
||||
test-release: all
|
||||
python tools/test.py --mode=release
|
||||
|
||||
test-debug: all
|
||||
python tools/test.py --mode=debug
|
||||
|
||||
test-message: all
|
||||
python tools/test.py message
|
||||
|
||||
test-simple: all
|
||||
python tools/test.py simple
|
||||
|
||||
test-pummel: all
|
||||
python tools/test.py pummel
|
||||
|
||||
test-internet: all
|
||||
python tools/test.py internet
|
||||
|
||||
UVTEST += simple/test-assert
|
||||
UVTEST += simple/test-buffer
|
||||
UVTEST += simple/test-c-ares
|
||||
UVTEST += simple/test-chdir
|
||||
UVTEST += simple/test-delayed-require
|
||||
UVTEST += simple/test-eio-race2
|
||||
UVTEST += simple/test-eio-race4
|
||||
UVTEST += simple/test-event-emitter-add-listeners
|
||||
UVTEST += simple/test-event-emitter-modify-in-emit
|
||||
UVTEST += simple/test-event-emitter-num-args
|
||||
UVTEST += simple/test-event-emitter-once
|
||||
UVTEST += simple/test-event-emitter-remove-all-listeners
|
||||
UVTEST += simple/test-event-emitter-remove-listeners
|
||||
UVTEST += simple/test-exception-handler
|
||||
UVTEST += simple/test-exception-handler2
|
||||
UVTEST += simple/test-exception-handler
|
||||
UVTEST += simple/test-executable-path
|
||||
UVTEST += simple/test-file-read-noexist
|
||||
UVTEST += simple/test-file-write-stream
|
||||
UVTEST += simple/test-fs-fsync
|
||||
UVTEST += simple/test-fs-open
|
||||
UVTEST += simple/test-fs-readfile-empty
|
||||
UVTEST += simple/test-fs-read-file-sync
|
||||
UVTEST += simple/test-fs-read-file-sync-hostname
|
||||
UVTEST += simple/test-fs-sir-writes-alot
|
||||
UVTEST += simple/test-fs-write
|
||||
UVTEST += simple/test-fs-write-buffer
|
||||
UVTEST += simple/test-fs-write-file
|
||||
UVTEST += simple/test-fs-write-file-buffer
|
||||
UVTEST += simple/test-fs-write-stream
|
||||
UVTEST += simple/test-fs-write-stream-end
|
||||
UVTEST += simple/test-fs-write-sync
|
||||
UVTEST += simple/test-global
|
||||
UVTEST += simple/test-http
|
||||
UVTEST += simple/test-http-1.0
|
||||
UVTEST += simple/test-http-abort-client
|
||||
UVTEST += simple/test-http-allow-req-after-204-res
|
||||
UVTEST += simple/test-http-blank-header
|
||||
UVTEST += simple/test-http-buffer-sanity
|
||||
UVTEST += simple/test-http-cat
|
||||
UVTEST += simple/test-http-chunked
|
||||
UVTEST += simple/test-http-client-abort
|
||||
UVTEST += simple/test-http-client-parse-error
|
||||
UVTEST += simple/test-http-client-race
|
||||
UVTEST += simple/test-http-client-race-2
|
||||
UVTEST += simple/test-http-client-upload
|
||||
UVTEST += simple/test-http-client-upload-buf
|
||||
UVTEST += simple/test-http-contentLength0
|
||||
UVTEST += simple/test-http-default-encoding
|
||||
UVTEST += simple/test-http-dns-fail
|
||||
UVTEST += simple/test-http-eof-on-connect
|
||||
UVTEST += simple/test-http-exceptions
|
||||
UVTEST += simple/test-http-expect-continue
|
||||
UVTEST += simple/test-http-extra-response
|
||||
UVTEST += simple/test-http-head-request
|
||||
UVTEST += simple/test-http-head-response-has-no-body
|
||||
UVTEST += simple/test-http-keep-alive
|
||||
UVTEST += simple/test-http-keep-alive-close-on-header
|
||||
UVTEST += simple/test-http-malformed-request
|
||||
UVTEST += simple/test-http-many-keep-alive-connections
|
||||
UVTEST += simple/test-http-mutable-headers
|
||||
UVTEST += simple/test-http-parser
|
||||
UVTEST += simple/test-http-proxy
|
||||
UVTEST += simple/test-http-request-end
|
||||
UVTEST += simple/test-http-response-close
|
||||
UVTEST += simple/test-http-response-readable
|
||||
UVTEST += simple/test-http-unix-socket
|
||||
UVTEST += simple/test-http-server
|
||||
UVTEST += simple/test-http-server-multiheaders
|
||||
UVTEST += simple/test-http-set-cookies
|
||||
UVTEST += simple/test-http-set-timeout
|
||||
UVTEST += simple/test-http-set-trailers
|
||||
UVTEST += simple/test-http-upgrade-agent
|
||||
UVTEST += simple/test-http-upgrade-client
|
||||
UVTEST += simple/test-http-upgrade-client2
|
||||
UVTEST += simple/test-http-upgrade-server
|
||||
UVTEST += simple/test-http-upgrade-server2
|
||||
UVTEST += simple/test-http-wget
|
||||
UVTEST += simple/test-http-write-empty-string
|
||||
UVTEST += simple/test-http-wget
|
||||
UVTEST += simple/test-mkdir-rmdir
|
||||
UVTEST += simple/test-net-binary
|
||||
UVTEST += simple/test-net-pingpong
|
||||
UVTEST += simple/test-net-can-reset-timeout
|
||||
UVTEST += simple/test-net-connect-buffer
|
||||
UVTEST += simple/test-net-connect-timeout
|
||||
UVTEST += simple/test-net-create-connection
|
||||
UVTEST += simple/test-net-eaddrinuse
|
||||
UVTEST += simple/test-net-isip
|
||||
UVTEST += simple/test-net-keepalive
|
||||
UVTEST += simple/test-net-pingpong
|
||||
UVTEST += simple/test-net-reconnect
|
||||
UVTEST += simple/test-net-remote-address-port
|
||||
UVTEST += simple/test-net-server-bind
|
||||
UVTEST += simple/test-net-server-max-connections
|
||||
UVTEST += simple/test-net-server-try-ports
|
||||
UVTEST += simple/test-net-stream
|
||||
UVTEST += simple/test-net-socket-timeout
|
||||
UVTEST += simple/test-next-tick
|
||||
UVTEST += simple/test-next-tick-doesnt-hang
|
||||
UVTEST += simple/test-next-tick-errors
|
||||
UVTEST += simple/test-next-tick-ordering
|
||||
UVTEST += simple/test-next-tick-ordering2
|
||||
UVTEST += simple/test-next-tick-starvation
|
||||
UVTEST += simple/test-module-load-list
|
||||
UVTEST += simple/test-path
|
||||
UVTEST += simple/test-pipe-stream
|
||||
UVTEST += simple/test-pump-file2tcp
|
||||
UVTEST += simple/test-pump-file2tcp-noexist
|
||||
UVTEST += simple/test-punycode
|
||||
UVTEST += simple/test-querystring
|
||||
UVTEST += simple/test-readdir
|
||||
UVTEST += simple/test-readdouble
|
||||
UVTEST += simple/test-readfloat
|
||||
UVTEST += simple/test-readint
|
||||
UVTEST += simple/test-readuint
|
||||
UVTEST += simple/test-regress-GH-819
|
||||
UVTEST += simple/test-regress-GH-897
|
||||
UVTEST += simple/test-regression-object-prototype
|
||||
UVTEST += simple/test-require-cache
|
||||
UVTEST += simple/test-require-cache-without-stat
|
||||
UVTEST += simple/test-require-exceptions
|
||||
UVTEST += simple/test-require-resolve
|
||||
UVTEST += simple/test-script-context
|
||||
UVTEST += simple/test-script-new
|
||||
UVTEST += simple/test-script-static-context
|
||||
UVTEST += simple/test-script-static-new
|
||||
UVTEST += simple/test-script-static-this
|
||||
UVTEST += simple/test-script-this
|
||||
UVTEST += simple/test-stream-pipe-cleanup
|
||||
UVTEST += simple/test-stream-pipe-error-handling
|
||||
UVTEST += simple/test-stream-pipe-event
|
||||
UVTEST += simple/test-stream-pipe-multi
|
||||
UVTEST += simple/test-string-decoder
|
||||
UVTEST += simple/test-sys
|
||||
UVTEST += simple/test-tcp-wrap
|
||||
UVTEST += simple/test-tcp-wrap-connect
|
||||
UVTEST += simple/test-tcp-wrap-listen
|
||||
UVTEST += simple/test-timers-linked-list
|
||||
UVTEST += simple/test-tty-stdout-end
|
||||
UVTEST += simple/test-url
|
||||
UVTEST += simple/test-utf8-scripts
|
||||
UVTEST += simple/test-vm-create-context-circular-reference
|
||||
UVTEST += simple/test-writedouble
|
||||
UVTEST += simple/test-writefloat
|
||||
UVTEST += simple/test-writeint
|
||||
UVTEST += simple/test-writeuint
|
||||
UVTEST += simple/test-zerolengthbufferbug
|
||||
UVTEST += pummel/test-http-client-reconnect-bug
|
||||
UVTEST += pummel/test-http-upload-timeout
|
||||
UVTEST += pummel/test-net-many-clients
|
||||
UVTEST += pummel/test-net-pause
|
||||
UVTEST += pummel/test-net-pingpong-delay
|
||||
UVTEST += pummel/test-net-timeout
|
||||
UVTEST += pummel/test-timers
|
||||
UVTEST += pummel/test-timer-wrap
|
||||
UVTEST += pummel/test-timer-wrap2
|
||||
UVTEST += pummel/test-vm-memleak
|
||||
UVTEST += internet/test-dns
|
||||
UVTEST += simple/test-tls-client-abort
|
||||
UVTEST += simple/test-tls-client-verify
|
||||
UVTEST += simple/test-tls-connect
|
||||
#UVTEST += simple/test-tls-ext-key-usage # broken
|
||||
UVTEST += simple/test-tls-junk-closes-server
|
||||
UVTEST += simple/test-tls-npn-server-client
|
||||
UVTEST += simple/test-tls-request-timeout
|
||||
#UVTEST += simple/test-tls-securepair-client # broken
|
||||
UVTEST += simple/test-tls-securepair-server
|
||||
#UVTEST += simple/test-tls-server-verify # broken
|
||||
UVTEST += simple/test-tls-set-encoding
|
||||
|
||||
# child_process
|
||||
UVTEST += simple/test-child-process-exit-code
|
||||
UVTEST += simple/test-child-process-buffering
|
||||
UVTEST += simple/test-child-process-exec-cwd
|
||||
UVTEST += simple/test-child-process-cwd
|
||||
UVTEST += simple/test-child-process-env
|
||||
UVTEST += simple/test-child-process-stdin
|
||||
UVTEST += simple/test-child-process-ipc
|
||||
UVTEST += simple/test-child-process-deprecated-api
|
||||
|
||||
|
||||
test-uv: all
|
||||
NODE_USE_UV=1 python tools/test.py $(UVTEST)
|
||||
|
||||
test-uv-debug: all
|
||||
NODE_USE_UV=1 python tools/test.py --mode=debug $(UVTEST)
|
||||
|
||||
|
||||
apidoc_sources = $(wildcard doc/api/*.markdown)
|
||||
apidocs = $(addprefix out/,$(apidoc_sources:.markdown=.html))
|
||||
|
||||
apidoc_dirs = out/doc out/doc/api/ out/doc/api/assets
|
||||
|
||||
apiassets = $(subst api_assets,api/assets,$(addprefix out/,$(wildcard doc/api_assets/*)))
|
||||
|
||||
website_files = \
|
||||
out/doc/index.html \
|
||||
out/doc/v0.4_announcement.html \
|
||||
out/doc/cla.html \
|
||||
out/doc/sh_main.js \
|
||||
out/doc/sh_javascript.min.js \
|
||||
out/doc/sh_vim-dark.css \
|
||||
out/doc/logo.png \
|
||||
out/doc/sponsored.png \
|
||||
out/doc/favicon.ico \
|
||||
out/doc/pipe.css
|
||||
|
||||
doc: out/Release/node $(apidoc_dirs) $(website_files) $(apiassets) $(apidocs)
|
||||
|
||||
$(apidoc_dirs):
|
||||
mkdir -p $@
|
||||
|
||||
out/doc/api/assets/%: doc/api_assets/% out/doc/api/assets/
|
||||
cp $< $@
|
||||
|
||||
out/doc/%: doc/%
|
||||
cp $< $@
|
||||
|
||||
out/doc/api/%.html: doc/api/%.markdown out/Release/node $(apidoc_dirs) $(apiassets) tools/doctool/doctool.js
|
||||
out/Release/node tools/doctool/doctool.js doc/template.html $< > $@
|
||||
|
||||
out/doc/%:
|
||||
|
||||
website-upload: doc
|
||||
scp -r out/doc/* $(web_root)
|
||||
|
||||
docopen: out/doc/api/all.html
|
||||
-google-chrome out/doc/api/all.html
|
||||
|
||||
docclean:
|
||||
-rm -rf out/doc
|
||||
|
||||
VERSION=$(shell git describe)
|
||||
TARNAME=node-$(VERSION)
|
||||
|
||||
#dist: doc/node.1 doc/api
|
||||
dist: doc
|
||||
git archive --format=tar --prefix=$(TARNAME)/ HEAD | tar xf -
|
||||
mkdir -p $(TARNAME)/doc
|
||||
cp doc/node.1 $(TARNAME)/doc/node.1
|
||||
cp -r out/doc/api $(TARNAME)/doc/api
|
||||
rm -rf $(TARNAME)/deps/v8/test # too big
|
||||
rm -rf $(TARNAME)/doc/logos # too big
|
||||
tar -cf $(TARNAME).tar $(TARNAME)
|
||||
rm -rf $(TARNAME)
|
||||
gzip -f -9 $(TARNAME).tar
|
||||
|
||||
bench:
|
||||
benchmark/http_simple_bench.sh
|
||||
|
||||
bench-idle:
|
||||
./node benchmark/idle_server.js &
|
||||
sleep 1
|
||||
./node benchmark/idle_clients.js &
|
||||
|
||||
jslint:
|
||||
PYTHONPATH=tools/closure_linter/ python tools/closure_linter/closure_linter/gjslint.py --unix_mode --strict --nojsdoc -r lib/ -r src/ -r test/
|
||||
|
||||
cpplint:
|
||||
@python tools/cpplint.py $(wildcard src/*.cc src/*.h src/*.c)
|
||||
|
||||
lint: jslint cpplint
|
||||
|
||||
.PHONY: lint cpplint jslint bench clean docopen docclean doc dist distclean check uninstall install all program staticlib dynamiclib test test-all website-upload
|
||||
18
README.md
18
README.md
@@ -1,14 +1,28 @@
|
||||
Evented I/O for V8 javascript.
|
||||
Evented I/O for V8 javascript. [](http://travis-ci.org/joyent/node)
|
||||
===
|
||||
|
||||
### To build:
|
||||
|
||||
Unix/Macintosh (requires python >= 2.5.2):
|
||||
Prerequisites (Unix only):
|
||||
|
||||
* Python 2.6 or 2.7
|
||||
* GNU Make 3.81 or newer
|
||||
* libexecinfo (FreeBSD and OpenBSD only)
|
||||
|
||||
Unix/Macintosh:
|
||||
|
||||
./configure
|
||||
make
|
||||
make install
|
||||
|
||||
If your python binary is in a non-standard location or has a
|
||||
non-standard name, run the following instead:
|
||||
|
||||
export PYTHON=/path/to/python
|
||||
$PYTHON ./configure
|
||||
make
|
||||
make install
|
||||
|
||||
Windows:
|
||||
|
||||
vcbuild.bat
|
||||
|
||||
80
benchmark/client_latency.js
Normal file
80
benchmark/client_latency.js
Normal file
@@ -0,0 +1,80 @@
|
||||
// first start node http_simple.js
|
||||
var http = require('http');
|
||||
|
||||
var latency = [];
|
||||
|
||||
var numRequests = parseInt(process.argv[2], 10) || 100;
|
||||
var maxSockets = parseInt(process.argv[3], 10) || 100;
|
||||
var runs = parseInt(process.argv[4], 10) || 100;
|
||||
var prefix = process.argv[5] || '';
|
||||
if (prefix) prefix += '_';
|
||||
var r = 0;
|
||||
|
||||
var port = parseInt(process.env.PORT, 10) || 8000;
|
||||
var host = process.env.HOST || '127.0.0.1';
|
||||
|
||||
http.globalAgent.maxSockets = maxSockets;
|
||||
|
||||
run();
|
||||
|
||||
function run() {
|
||||
if (r++ === runs) {
|
||||
return finish();
|
||||
}
|
||||
|
||||
// make numRequests in parallel
|
||||
// retain the order in which they are *made*. This requires trapping
|
||||
// each one in a closure, since otherwise, we'll of course end
|
||||
// up mostly sorting them in ascending order, since the cb from a
|
||||
// fast request will almost always be called before the cb from a
|
||||
// slow one.
|
||||
var c = numRequests;
|
||||
var lat = [];
|
||||
latency.push(lat);
|
||||
for (var i = 0; i < numRequests; i++) (function (i) {
|
||||
makeRequest(function(l) {
|
||||
lat[i] = l;
|
||||
c--;
|
||||
if (c === 0) run();
|
||||
});
|
||||
})(i);
|
||||
}
|
||||
|
||||
function makeRequest(cb) {
|
||||
var opts = { host: host,
|
||||
port: port,
|
||||
uri: 'http://'+host+':'+port+'/bytes/12',
|
||||
forever: true,
|
||||
path: '/bytes/12' };
|
||||
var pre = Date.now();
|
||||
var req = http.get(opts, function(res) {
|
||||
return cb(Date.now() - pre);
|
||||
});
|
||||
}
|
||||
|
||||
function finish() {
|
||||
var data = [];
|
||||
latency.forEach(function(run, i) {
|
||||
run.forEach(function(l, j) {
|
||||
data[j] = data[j] || [];
|
||||
data[j][i] = l;
|
||||
});
|
||||
});
|
||||
|
||||
data = data.map(function (l, i) {
|
||||
return l.join('\t')
|
||||
}).join('\n') + '\n';
|
||||
|
||||
var fname = prefix +
|
||||
'client_latency_' +
|
||||
numRequests + '_' +
|
||||
maxSockets + '_' +
|
||||
runs + '.tab';
|
||||
var path = require('path');
|
||||
fname = path.resolve(__dirname, '..', 'out', fname);
|
||||
fname = path.relative(process.cwd(), fname);
|
||||
require('fs').writeFile(fname, data, function(er) {
|
||||
if (er) throw er;
|
||||
console.log('written: %s', fname);
|
||||
});
|
||||
}
|
||||
72
benchmark/fs-readfile.js
Normal file
72
benchmark/fs-readfile.js
Normal file
@@ -0,0 +1,72 @@
|
||||
// Call fs.readFile over and over again really fast.
|
||||
// Then see how many times it got called.
|
||||
// Yes, this is a silly benchmark. Most benchmarks are silly.
|
||||
|
||||
var path = require('path');
|
||||
var filename = path.resolve(__dirname, 'http.sh');
|
||||
var fs = require('fs');
|
||||
var count = 0;
|
||||
var go = true;
|
||||
var len = -1;
|
||||
var assert = require('assert');
|
||||
|
||||
var concurrency = 1;
|
||||
var encoding = null;
|
||||
var time = 10;
|
||||
|
||||
for (var i = 2; i < process.argv.length; i++) {
|
||||
var arg = process.argv[i];
|
||||
if (arg.match(/^-e$/)) {
|
||||
encoding = process.argv[++i] || null;
|
||||
} else if (arg.match(/^-c$/)) {
|
||||
concurrency = ~~process.argv[++i];
|
||||
if (concurrency < 1) concurrency = 1;
|
||||
} else if (arg === '-t') {
|
||||
time = ~~process.argv[++i];
|
||||
if (time < 1) time = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
setTimeout(function() {
|
||||
go = false;
|
||||
}, time * 1000);
|
||||
|
||||
function round(n) {
|
||||
return Math.floor(n * 100) / 100;
|
||||
}
|
||||
|
||||
var start = process.hrtime();
|
||||
while (concurrency--) readFile();
|
||||
|
||||
function readFile() {
|
||||
if (!go) {
|
||||
process.stdout.write('\n');
|
||||
console.log('read the file %d times (higher is better)', count);
|
||||
var end = process.hrtime();
|
||||
var elapsed = [end[0] - start[0], end[1] - start[1]];
|
||||
var ns = elapsed[0] * 1E9 + elapsed[1];
|
||||
var nsper = round(ns / count);
|
||||
console.log('%d ns per read (lower is better)', nsper);
|
||||
var readsper = round(count / (ns / 1E9));
|
||||
console.log('%d reads per sec (higher is better)', readsper);
|
||||
process.exit(0);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!(count % 1000)) {
|
||||
process.stdout.write('.');
|
||||
}
|
||||
|
||||
if (encoding) fs.readFile(filename, encoding, then);
|
||||
else fs.readFile(filename, then);
|
||||
|
||||
function then(er, data) {
|
||||
assert.ifError(er);
|
||||
count++;
|
||||
// basic sanity test: we should get the same number of bytes each time.
|
||||
if (count === 1) len = data.length;
|
||||
else assert(len === data.length);
|
||||
readFile();
|
||||
}
|
||||
}
|
||||
43
benchmark/http.sh
Executable file
43
benchmark/http.sh
Executable file
@@ -0,0 +1,43 @@
|
||||
#!/bin/bash
|
||||
cd "$(dirname "$(dirname $0)")"
|
||||
|
||||
if type sysctl &>/dev/null; then
|
||||
# darwin and linux
|
||||
sudo sysctl -w net.ipv4.ip_local_port_range="12000 65535"
|
||||
sudo sysctl -w net.inet.ip.portrange.first=12000
|
||||
sudo sysctl -w net.inet.tcp.msl=1000
|
||||
sudo sysctl -w kern.maxfiles=1000000 kern.maxfilesperproc=1000000
|
||||
elif type /usr/sbin/ndd &>/dev/null; then
|
||||
# sunos
|
||||
/usr/sbin/ndd -set /dev/tcp tcp_smallest_anon_port 12000
|
||||
/usr/sbin/ndd -set /dev/tcp tcp_largest_anon_port 65535
|
||||
/usr/sbin/ndd -set /dev/tcp tcp_max_buf 2097152
|
||||
/usr/sbin/ndd -set /dev/tcp tcp_xmit_hiwat 1048576
|
||||
/usr/sbin/ndd -set /dev/tcp tcp_recv_hiwat 1048576
|
||||
fi
|
||||
|
||||
ulimit -n 100000
|
||||
|
||||
k=${KEEPALIVE}
|
||||
if [ "$k" = "no" ]; then
|
||||
k=""
|
||||
else
|
||||
k="-k"
|
||||
fi
|
||||
node=${NODE:-./node}
|
||||
|
||||
$node benchmark/http_simple.js &
|
||||
npid=$!
|
||||
|
||||
sleep 1
|
||||
|
||||
if [ "$k" = "-k" ]; then
|
||||
echo "using keepalive"
|
||||
fi
|
||||
|
||||
for i in a a a a a a a a a a a a a a a a a a a a; do
|
||||
ab $k -t 10 -c 100 http://127.0.0.1:8000/${TYPE:-bytes}/${LENGTH:-1024} \
|
||||
2>&1 | grep Req | egrep -o '[0-9\.]+'
|
||||
done
|
||||
|
||||
kill $npid
|
||||
127
benchmark/http_bench.js
Normal file
127
benchmark/http_bench.js
Normal file
@@ -0,0 +1,127 @@
|
||||
// Copyright Joyent, Inc. and other Node contributors.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
||||
// copy of this software and associated documentation files (the
|
||||
// "Software"), to deal in the Software without restriction, including
|
||||
// without limitation the rights to use, copy, modify, merge, publish,
|
||||
// distribute, sublicense, and/or sell copies of the Software, and to permit
|
||||
// persons to whom the Software is furnished to do so, subject to the
|
||||
// following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included
|
||||
// in all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
|
||||
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
||||
// USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
var spawn = require('child_process').spawn;
|
||||
var cluster = require('cluster');
|
||||
var http = require('http');
|
||||
|
||||
var options = {
|
||||
mode: 'master',
|
||||
host: '127.0.0.1',
|
||||
port: 22344,
|
||||
path: '/',
|
||||
servers: 1,
|
||||
clients: 1
|
||||
};
|
||||
|
||||
for (var i = 2; i < process.argv.length; ++i) {
|
||||
var args = process.argv[i].split('=', 2);
|
||||
var key = args[0];
|
||||
var val = args[1];
|
||||
options[key] = val;
|
||||
}
|
||||
|
||||
switch (options.mode) {
|
||||
case 'master': startMaster(); break;
|
||||
case 'server': startServer(); break;
|
||||
case 'client': startClient(); break;
|
||||
default: throw new Error('Bad mode: ' + options.mode);
|
||||
}
|
||||
|
||||
process.title = 'http_bench[' + options.mode + ']';
|
||||
|
||||
// monkey-patch the log functions so they include name + pid
|
||||
console.log = patch(console.log);
|
||||
console.trace = patch(console.trace);
|
||||
console.error = patch(console.error);
|
||||
|
||||
function patch(fun) {
|
||||
var prefix = process.title + '[' + process.pid + '] ';
|
||||
return function() {
|
||||
var args = Array.prototype.slice.call(arguments);
|
||||
args[0] = prefix + args[0];
|
||||
return fun.apply(console, args);
|
||||
};
|
||||
}
|
||||
|
||||
function startMaster() {
|
||||
if (!cluster.isMaster) return startServer();
|
||||
|
||||
for (var i = ~~options.servers; i > 0; --i) cluster.fork();
|
||||
|
||||
for (var i = ~~options.clients; i > 0; --i) {
|
||||
var cp = spawn(process.execPath, [__filename, 'mode=client']);
|
||||
cp.stdout.pipe(process.stdout);
|
||||
cp.stderr.pipe(process.stderr);
|
||||
}
|
||||
}
|
||||
|
||||
function startServer() {
|
||||
http.createServer(onRequest).listen(options.port, options.host);
|
||||
|
||||
var body = Array(1024).join('x');
|
||||
var headers = {'Content-Length': '' + body.length};
|
||||
|
||||
function onRequest(req, res) {
|
||||
req.on('error', onError);
|
||||
res.on('error', onError);
|
||||
res.writeHead(200, headers);
|
||||
res.end(body);
|
||||
}
|
||||
|
||||
function onError(err) {
|
||||
console.error(err.stack);
|
||||
}
|
||||
}
|
||||
|
||||
function startClient() {
|
||||
// send off a bunch of concurrent requests
|
||||
// TODO make configurable
|
||||
sendRequest();
|
||||
sendRequest();
|
||||
|
||||
function sendRequest() {
|
||||
var req = http.request(options, onConnection);
|
||||
req.on('error', onError);
|
||||
req.end();
|
||||
}
|
||||
|
||||
// add a little back-off to prevent EADDRNOTAVAIL errors, it's pretty easy
|
||||
// to exhaust the available port range
|
||||
function relaxedSendRequest() {
|
||||
setTimeout(sendRequest, 1);
|
||||
}
|
||||
|
||||
function onConnection(res) {
|
||||
res.on('error', onError);
|
||||
res.on('data', onData);
|
||||
res.on('end', relaxedSendRequest);
|
||||
}
|
||||
|
||||
function onError(err) {
|
||||
console.error(err.stack);
|
||||
relaxedSendRequest();
|
||||
}
|
||||
|
||||
function onData(data) {
|
||||
// this space intentionally left blank
|
||||
}
|
||||
}
|
||||
13
benchmark/http_server_lag.js
Normal file
13
benchmark/http_server_lag.js
Normal file
@@ -0,0 +1,13 @@
|
||||
var http = require('http');
|
||||
var port = parseInt(process.env.PORT, 10) || 8000;
|
||||
var defaultLag = parseInt(process.argv[2], 10) || 100;
|
||||
|
||||
http.createServer(function(req, res) {
|
||||
res.writeHead(200, { 'content-type': 'text/plain',
|
||||
'content-length': '2' });
|
||||
|
||||
var lag = parseInt(req.url.split("/").pop(), 10) || defaultLag;
|
||||
setTimeout(function() {
|
||||
res.end('ok');
|
||||
}, lag);
|
||||
}).listen(port, 'localhost');
|
||||
@@ -1,88 +1,124 @@
|
||||
path = require("path");
|
||||
exec = require("child_process").exec;
|
||||
http = require("http");
|
||||
var path = require('path'),
|
||||
exec = require('child_process').exec,
|
||||
http = require('http');
|
||||
|
||||
port = parseInt(process.env.PORT || 8000);
|
||||
var port = parseInt(process.env.PORT || 8000);
|
||||
|
||||
console.log('pid ' + process.pid);
|
||||
|
||||
fixed = ""
|
||||
for (var i = 0; i < 20*1024; i++) {
|
||||
fixed += "C";
|
||||
var fixed = makeString(20 * 1024, 'C'),
|
||||
storedBytes = {},
|
||||
storedBuffer = {},
|
||||
storedUnicode = {};
|
||||
|
||||
var useDomains = process.env.NODE_USE_DOMAINS;
|
||||
|
||||
// set up one global domain.
|
||||
if (useDomains) {
|
||||
var domain = require('domain');
|
||||
var gdom = domain.create();
|
||||
gdom.on('error', function(er) {
|
||||
console.log('Error on global domain', er);
|
||||
throw er;
|
||||
});
|
||||
gdom.enter();
|
||||
}
|
||||
|
||||
stored = {};
|
||||
storedBuffer = {};
|
||||
|
||||
var server = http.createServer(function (req, res) {
|
||||
var commands = req.url.split("/");
|
||||
if (useDomains) {
|
||||
var dom = domain.create();
|
||||
dom.add(req);
|
||||
dom.add(res);
|
||||
}
|
||||
|
||||
var commands = req.url.split('/');
|
||||
var command = commands[1];
|
||||
var body = "";
|
||||
var body = '';
|
||||
var arg = commands[2];
|
||||
var n_chunks = parseInt(commands[3], 10);
|
||||
var status = 200;
|
||||
|
||||
if (command == "bytes") {
|
||||
var n = parseInt(arg, 10)
|
||||
if (command == 'bytes') {
|
||||
var n = ~~arg;
|
||||
if (n <= 0)
|
||||
throw "bytes called with n <= 0"
|
||||
if (stored[n] === undefined) {
|
||||
console.log("create stored[n]");
|
||||
stored[n] = "";
|
||||
for (var i = 0; i < n; i++) {
|
||||
stored[n] += "C"
|
||||
}
|
||||
throw new Error('bytes called with n <= 0')
|
||||
if (storedBytes[n] === undefined) {
|
||||
console.log('create storedBytes[n]');
|
||||
storedBytes[n] = makeString(n, 'C');
|
||||
}
|
||||
body = stored[n];
|
||||
body = storedBytes[n];
|
||||
|
||||
} else if (command == "buffer") {
|
||||
var n = parseInt(arg, 10)
|
||||
if (n <= 0) throw new Error("bytes called with n <= 0");
|
||||
} else if (command == 'buffer') {
|
||||
var n = ~~arg;
|
||||
if (n <= 0)
|
||||
throw new Error('buffer called with n <= 0');
|
||||
if (storedBuffer[n] === undefined) {
|
||||
console.log("create storedBuffer[n]");
|
||||
console.log('create storedBuffer[n]');
|
||||
storedBuffer[n] = new Buffer(n);
|
||||
for (var i = 0; i < n; i++) {
|
||||
storedBuffer[n][i] = "C".charCodeAt(0);
|
||||
storedBuffer[n][i] = 'C'.charCodeAt(0);
|
||||
}
|
||||
}
|
||||
body = storedBuffer[n];
|
||||
|
||||
} else if (command == "quit") {
|
||||
res.connection.server.close();
|
||||
body = "quitting";
|
||||
} else if (command == 'unicode') {
|
||||
var n = ~~arg;
|
||||
if (n <= 0)
|
||||
throw new Error('unicode called with n <= 0');
|
||||
if (storedUnicode[n] === undefined) {
|
||||
console.log('create storedUnicode[n]');
|
||||
storedUnicode[n] = makeString(n, '\u263A');
|
||||
}
|
||||
body = storedUnicode[n];
|
||||
|
||||
} else if (command == "fixed") {
|
||||
} else if (command == 'quit') {
|
||||
res.connection.server.close();
|
||||
body = 'quitting';
|
||||
|
||||
} else if (command == 'fixed') {
|
||||
body = fixed;
|
||||
|
||||
} else if (command == 'echo') {
|
||||
res.writeHead(200, { 'Content-Type': 'text/plain',
|
||||
'Transfer-Encoding': 'chunked' });
|
||||
req.pipe(res);
|
||||
return;
|
||||
|
||||
} else {
|
||||
status = 404;
|
||||
body = "not found\n";
|
||||
body = 'not found\n';
|
||||
}
|
||||
|
||||
// example: http://localhost:port/bytes/512/4
|
||||
// sends a 512 byte body in 4 chunks of 128 bytes
|
||||
if (n_chunks > 0) {
|
||||
res.writeHead(status, { "Content-Type": "text/plain",
|
||||
"Transfer-Encoding": "chunked" });
|
||||
res.writeHead(status, { 'Content-Type': 'text/plain',
|
||||
'Transfer-Encoding': 'chunked' });
|
||||
// send body in chunks
|
||||
var len = body.length;
|
||||
var step = ~~(len / n_chunks) || len;
|
||||
var step = Math.floor(len / n_chunks) || 1;
|
||||
|
||||
for (var i = 0; i < len; i += step) {
|
||||
res.write(body.slice(i, i + step));
|
||||
for (var i = 0, n = (n_chunks - 1); i < n; ++i) {
|
||||
res.write(body.slice(i * step, i * step + step));
|
||||
}
|
||||
|
||||
res.end();
|
||||
res.end(body.slice((n_chunks - 1) * step));
|
||||
} else {
|
||||
var content_length = body.length.toString();
|
||||
|
||||
res.writeHead(status, { "Content-Type": "text/plain",
|
||||
"Content-Length": content_length });
|
||||
res.writeHead(status, { 'Content-Type': 'text/plain',
|
||||
'Content-Length': content_length });
|
||||
res.end(body);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
function makeString(size, c) {
|
||||
var s = '';
|
||||
while (s.length < size) {
|
||||
s += c;
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
server.listen(port, function () {
|
||||
console.log('Listening at http://127.0.0.1:'+port+'/');
|
||||
});
|
||||
|
||||
127
benchmark/http_simple_auto.js
Normal file
127
benchmark/http_simple_auto.js
Normal file
@@ -0,0 +1,127 @@
|
||||
//
|
||||
// Usage:
|
||||
// node benchmark/http_simple_auto.js <args> <target>
|
||||
//
|
||||
// Where:
|
||||
// <args> Arguments to pass to `ab`.
|
||||
// <target> Target to benchmark, e.g. `bytes/1024` or `buffer/8192`.
|
||||
//
|
||||
|
||||
var path = require("path");
|
||||
var http = require("http");
|
||||
var spawn = require("child_process").spawn;
|
||||
|
||||
var port = parseInt(process.env.PORT || 8000);
|
||||
|
||||
var fixed = ""
|
||||
for (var i = 0; i < 20*1024; i++) {
|
||||
fixed += "C";
|
||||
}
|
||||
|
||||
var stored = {};
|
||||
var storedBuffer = {};
|
||||
|
||||
var server = http.createServer(function (req, res) {
|
||||
var commands = req.url.split("/");
|
||||
var command = commands[1];
|
||||
var body = "";
|
||||
var arg = commands[2];
|
||||
var n_chunks = parseInt(commands[3], 10);
|
||||
var status = 200;
|
||||
|
||||
if (command == "bytes") {
|
||||
var n = parseInt(arg, 10)
|
||||
if (n <= 0)
|
||||
throw "bytes called with n <= 0"
|
||||
if (stored[n] === undefined) {
|
||||
stored[n] = "";
|
||||
for (var i = 0; i < n; i++) {
|
||||
stored[n] += "C"
|
||||
}
|
||||
}
|
||||
body = stored[n];
|
||||
|
||||
} else if (command == "buffer") {
|
||||
var n = parseInt(arg, 10)
|
||||
if (n <= 0) throw new Error("bytes called with n <= 0");
|
||||
if (storedBuffer[n] === undefined) {
|
||||
storedBuffer[n] = new Buffer(n);
|
||||
for (var i = 0; i < n; i++) {
|
||||
storedBuffer[n][i] = "C".charCodeAt(0);
|
||||
}
|
||||
}
|
||||
body = storedBuffer[n];
|
||||
|
||||
} else if (command == "quit") {
|
||||
res.connection.server.close();
|
||||
body = "quitting";
|
||||
|
||||
} else if (command == "fixed") {
|
||||
body = fixed;
|
||||
|
||||
} else if (command == "echo") {
|
||||
res.writeHead(200, { "Content-Type": "text/plain",
|
||||
"Transfer-Encoding": "chunked" });
|
||||
req.pipe(res);
|
||||
return;
|
||||
|
||||
} else {
|
||||
status = 404;
|
||||
body = "not found\n";
|
||||
}
|
||||
|
||||
// example: http://localhost:port/bytes/512/4
|
||||
// sends a 512 byte body in 4 chunks of 128 bytes
|
||||
if (n_chunks > 0) {
|
||||
res.writeHead(status, { "Content-Type": "text/plain",
|
||||
"Transfer-Encoding": "chunked" });
|
||||
// send body in chunks
|
||||
var len = body.length;
|
||||
var step = Math.floor(len / n_chunks) || 1;
|
||||
|
||||
for (var i = 0, n = (n_chunks - 1); i < n; ++i) {
|
||||
res.write(body.slice(i * step, i * step + step));
|
||||
}
|
||||
res.end(body.slice((n_chunks - 1) * step));
|
||||
} else {
|
||||
var content_length = body.length.toString();
|
||||
|
||||
res.writeHead(status, { "Content-Type": "text/plain",
|
||||
"Content-Length": content_length });
|
||||
res.end(body);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
server.listen(port, function () {
|
||||
var url = 'http://127.0.0.1:' + port + '/';
|
||||
|
||||
var n = process.argv.length - 1;
|
||||
process.argv[n] = url + process.argv[n];
|
||||
|
||||
var cp = spawn('ab', process.argv.slice(2));
|
||||
cp.stdout.pipe(process.stdout);
|
||||
cp.stderr.pipe(process.stderr);
|
||||
cp.on('exit', function() {
|
||||
server.close();
|
||||
process.nextTick(dump_mm_stats);
|
||||
});
|
||||
});
|
||||
|
||||
function dump_mm_stats() {
|
||||
if (typeof gc != 'function') return;
|
||||
|
||||
var before = process.memoryUsage();
|
||||
for (var i = 0; i < 10; ++i) gc();
|
||||
var after = process.memoryUsage();
|
||||
setTimeout(print_stats, 250); // give GC time to settle
|
||||
|
||||
function print_stats() {
|
||||
console.log('\nBEFORE / AFTER GC');
|
||||
['rss', 'heapTotal', 'heapUsed'].forEach(function(key) {
|
||||
var a = before[key] / (1024 * 1024);
|
||||
var b = after[key] / (1024 * 1024);
|
||||
console.log('%sM / %sM %s', a.toFixed(2), b.toFixed(2), key);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,7 @@ var os = require('os');
|
||||
|
||||
if (cluster.isMaster) {
|
||||
console.log('master running on pid %d', process.pid);
|
||||
for (var i = 1, n = os.cpus().length; i < n; ++i) cluster.fork();
|
||||
for (var i = 0, n = os.cpus().length; i < n; ++i) cluster.fork();
|
||||
} else {
|
||||
require(__dirname + '/http_simple.js');
|
||||
}
|
||||
|
||||
@@ -51,7 +51,6 @@ static void writetest(int size, size_t bsize)
|
||||
exit(254);
|
||||
}
|
||||
}
|
||||
close(fd);
|
||||
|
||||
#ifndef NSYNC
|
||||
# ifdef __linux__
|
||||
@@ -61,6 +60,8 @@ static void writetest(int size, size_t bsize)
|
||||
# endif
|
||||
#endif /* SYNC */
|
||||
|
||||
close(fd);
|
||||
|
||||
end = now();
|
||||
elapsed = (end - start) / 1e6;
|
||||
mbps = ((tsize/elapsed)) / 1048576;
|
||||
|
||||
@@ -62,7 +62,7 @@ function readtest(size, bsize) {
|
||||
|
||||
function wt(tsize, bsize, done) {
|
||||
var start = Date.now();
|
||||
s = writetest(tsize, bsizes[0]);
|
||||
s = writetest(tsize, bsize);
|
||||
s.addListener('close', function() {
|
||||
var end = Date.now();
|
||||
var diff = end - start;
|
||||
@@ -73,7 +73,7 @@ function wt(tsize, bsize, done) {
|
||||
|
||||
function rt(tsize, bsize, done) {
|
||||
var start = Date.now();
|
||||
s = readtest(tsize, bsizes[0]);
|
||||
s = readtest(tsize, bsize);
|
||||
s.addListener('close', function() {
|
||||
var end = Date.now();
|
||||
var diff = end - start;
|
||||
|
||||
41
benchmark/next-tick-2.js
Normal file
41
benchmark/next-tick-2.js
Normal file
@@ -0,0 +1,41 @@
|
||||
// Copyright Joyent, Inc. and other Node contributors.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
||||
// copy of this software and associated documentation files (the
|
||||
// "Software"), to deal in the Software without restriction, including
|
||||
// without limitation the rights to use, copy, modify, merge, publish,
|
||||
// distribute, sublicense, and/or sell copies of the Software, and to permit
|
||||
// persons to whom the Software is furnished to do so, subject to the
|
||||
// following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included
|
||||
// in all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
|
||||
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
||||
// USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
var count = 2e6,
|
||||
left = count,
|
||||
start;
|
||||
|
||||
function onNextTick() {
|
||||
if (--left) {
|
||||
process.nextTick(onNextTick);
|
||||
} else {
|
||||
finalize();
|
||||
}
|
||||
}
|
||||
|
||||
function finalize() {
|
||||
var duration = (new Date()).getTime() - start,
|
||||
ticksPerSec = count / duration * 1000;
|
||||
console.log("nextTick callbacks per second: " + Math.round(ticksPerSec));
|
||||
}
|
||||
|
||||
start = (new Date()).getTime();
|
||||
process.nextTick(onNextTick);
|
||||
86
benchmark/tls-connect.js
Normal file
86
benchmark/tls-connect.js
Normal file
@@ -0,0 +1,86 @@
|
||||
|
||||
var assert = require('assert'),
|
||||
fs = require('fs'),
|
||||
path = require('path'),
|
||||
tls = require('tls');
|
||||
|
||||
|
||||
var target_connections = 10000,
|
||||
concurrency = 10;
|
||||
|
||||
for (var i = 2; i < process.argv.length; i++) {
|
||||
switch (process.argv[i]) {
|
||||
case '-c':
|
||||
concurrency = ~~process.argv[++i];
|
||||
break;
|
||||
|
||||
case '-n':
|
||||
target_connections = ~~process.argv[++i];
|
||||
break;
|
||||
|
||||
default:
|
||||
throw new Error('Invalid flag: ' + process.argv[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var cert_dir = path.resolve(__dirname, '../test/fixtures'),
|
||||
options = { key: fs.readFileSync(cert_dir + '/test_key.pem'),
|
||||
cert: fs.readFileSync(cert_dir + '/test_cert.pem'),
|
||||
ca: [ fs.readFileSync(cert_dir + '/test_ca.pem') ] };
|
||||
|
||||
var server = tls.createServer(options, onConnection);
|
||||
server.listen(8000);
|
||||
|
||||
|
||||
var initiated_connections = 0,
|
||||
server_connections = 0,
|
||||
client_connections = 0,
|
||||
start = Date.now();
|
||||
|
||||
for (var i = 0; i < concurrency; i++)
|
||||
makeConnection();
|
||||
|
||||
|
||||
process.on('exit', onExit);
|
||||
|
||||
|
||||
function makeConnection() {
|
||||
if (initiated_connections >= target_connections)
|
||||
return;
|
||||
|
||||
initiated_connections++;
|
||||
|
||||
var conn = tls.connect(8000, function() {
|
||||
client_connections++;
|
||||
|
||||
if (client_connections % 100 === 0)
|
||||
console.log(client_connections + ' of ' + target_connections +
|
||||
' connections made');
|
||||
|
||||
conn.end();
|
||||
makeConnection();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
function onConnection(conn) {
|
||||
server_connections++;
|
||||
|
||||
if (server_connections === target_connections)
|
||||
server.close();
|
||||
}
|
||||
|
||||
|
||||
function onExit() {
|
||||
var end = Date.now(),
|
||||
s = (end - start) / 1000,
|
||||
persec = Math.round(target_connections / s);
|
||||
|
||||
assert.equal(initiated_connections, target_connections);
|
||||
assert.equal(client_connections, target_connections);
|
||||
assert.equal(server_connections, target_connections);
|
||||
|
||||
console.log('%d connections in %d s', target_connections, s);
|
||||
console.log('%d connections per second', persec);
|
||||
}
|
||||
63
benchmark/tls-fragmentation.js
Normal file
63
benchmark/tls-fragmentation.js
Normal file
@@ -0,0 +1,63 @@
|
||||
// Copyright Joyent, Inc. and other Node contributors.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
||||
// copy of this software and associated documentation files (the
|
||||
// "Software"), to deal in the Software without restriction, including
|
||||
// without limitation the rights to use, copy, modify, merge, publish,
|
||||
// distribute, sublicense, and/or sell copies of the Software, and to permit
|
||||
// persons to whom the Software is furnished to do so, subject to the
|
||||
// following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included
|
||||
// in all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
|
||||
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
||||
// USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
if (!process.versions.openssl) {
|
||||
console.error('Skipping because node compiled without OpenSSL.');
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
var common = require('../common');
|
||||
var assert = require('assert');
|
||||
var tls = require('tls');
|
||||
var fs = require('fs');
|
||||
var path = require('path');
|
||||
|
||||
var options = {
|
||||
key: fs.readFileSync(path.join(common.fixturesDir, 'test_key.pem')),
|
||||
cert: fs.readFileSync(path.join(common.fixturesDir, 'test_cert.pem'))
|
||||
};
|
||||
|
||||
var fragment = 'fr';
|
||||
var dataSize = 1024 * 1024;
|
||||
var sent = 0;
|
||||
var received = 0;
|
||||
|
||||
var server = tls.createServer(options, function (stream) {
|
||||
for (sent = 0; sent <= dataSize; sent += fragment.length) {
|
||||
stream.write(fragment);
|
||||
}
|
||||
stream.end();
|
||||
});
|
||||
|
||||
server.listen(common.PORT, function () {
|
||||
var client = tls.connect(common.PORT, function () {
|
||||
client.on('data', function (data) {
|
||||
received += data.length;
|
||||
});
|
||||
client.on('end', function () {
|
||||
server.close();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
process.on('exit', function () {
|
||||
assert.equal(sent, received);
|
||||
});
|
||||
113
common.gypi
113
common.gypi
@@ -3,28 +3,41 @@
|
||||
'visibility%': 'hidden', # V8's visibility setting
|
||||
'target_arch%': 'ia32', # set v8's target architecture
|
||||
'host_arch%': 'ia32', # set v8's host architecture
|
||||
'want_separate_host_toolset': 0, # V8 should not build target and host
|
||||
'library%': 'static_library', # allow override to 'shared_library' for DLL/.so builds
|
||||
'component%': 'static_library', # NB. these names match with what V8 expects
|
||||
'msvs_multi_core_compile': '0', # we do enable multicore compiles, but not using the V8 way
|
||||
'gcc_version%': 'unknown',
|
||||
'clang%': 0,
|
||||
|
||||
# Turn on optimizations that may trigger compiler bugs.
|
||||
# Use at your own risk. Do *NOT* report bugs if this option is enabled.
|
||||
'node_unsafe_optimizations%': 0,
|
||||
|
||||
# Enable V8's post-mortem debugging only on unix flavors.
|
||||
'conditions': [
|
||||
['OS != "win"', {
|
||||
'v8_postmortem_support': 'true'
|
||||
}]
|
||||
],
|
||||
},
|
||||
|
||||
'target_defaults': {
|
||||
'default_configuration': 'Debug',
|
||||
'default_configuration': 'Release',
|
||||
'configurations': {
|
||||
'Debug': {
|
||||
'defines': [ 'DEBUG', '_DEBUG' ],
|
||||
'cflags': [ '-g', '-O0' ],
|
||||
'conditions': [
|
||||
['target_arch=="x64"', {
|
||||
'msvs_configuration_platform': 'x64',
|
||||
}],
|
||||
],
|
||||
'msvs_settings': {
|
||||
'VCCLCompilerTool': {
|
||||
'target_conditions': [
|
||||
['library=="static_library"', {
|
||||
'RuntimeLibrary': 1, # static debug
|
||||
}, {
|
||||
'RuntimeLibrary': 3, # DLL debug
|
||||
}],
|
||||
],
|
||||
'RuntimeLibrary': 1, # static debug
|
||||
'Optimization': 0, # /Od, no optimization
|
||||
'MinimalRebuild': 'true',
|
||||
'MinimalRebuild': 'false',
|
||||
'OmitFramePointers': 'false',
|
||||
'BasicRuntimeChecks': 3, # /RTC1
|
||||
},
|
||||
@@ -34,17 +47,42 @@
|
||||
},
|
||||
},
|
||||
'Release': {
|
||||
'defines': [ 'NDEBUG' ],
|
||||
'cflags': [ '-O3', '-fomit-frame-pointer', '-fdata-sections', '-ffunction-sections' ],
|
||||
'msvs_settings': {
|
||||
'VCCLCompilerTool': {
|
||||
'target_conditions': [
|
||||
['library=="static_library"', {
|
||||
'RuntimeLibrary': 0, # static release
|
||||
'conditions': [
|
||||
['target_arch=="x64"', {
|
||||
'msvs_configuration_platform': 'x64',
|
||||
}],
|
||||
['node_unsafe_optimizations==1', {
|
||||
'cflags': [ '-O3', '-ffunction-sections', '-fdata-sections' ],
|
||||
'ldflags': [ '-Wl,--gc-sections' ],
|
||||
}, {
|
||||
'cflags': [ '-O2', '-fno-strict-aliasing' ],
|
||||
'cflags!': [ '-O3', '-fstrict-aliasing' ],
|
||||
'conditions': [
|
||||
# Required by the dtrace post-processor. Unfortunately,
|
||||
# some gcc/binutils combos generate bad code when
|
||||
# -ffunction-sections is enabled. Let's hope for the best.
|
||||
['OS=="solaris"', {
|
||||
'cflags': [ '-ffunction-sections', '-fdata-sections' ],
|
||||
}, {
|
||||
'RuntimeLibrary': 2, # debug release
|
||||
'cflags!': [ '-ffunction-sections', '-fdata-sections' ],
|
||||
}],
|
||||
['clang == 0 and gcc_version >= 40', {
|
||||
'cflags': [ '-fno-tree-vrp' ],
|
||||
}],
|
||||
['clang == 0 and gcc_version <= 44', {
|
||||
'cflags': [ '-fno-tree-sink' ],
|
||||
}],
|
||||
],
|
||||
}],
|
||||
['OS=="solaris"', {
|
||||
'cflags': [ '-fno-omit-frame-pointer' ],
|
||||
# pull in V8's postmortem metadata
|
||||
'ldflags': [ '-Wl,-z,allextract' ]
|
||||
}],
|
||||
],
|
||||
'msvs_settings': {
|
||||
'VCCLCompilerTool': {
|
||||
'RuntimeLibrary': 0, # static release
|
||||
'Optimization': 3, # /Ox, full optimization
|
||||
'FavorSizeOrSpeed': 1, # /Ot, favour speed over size
|
||||
'InlineFunctionExpansion': 2, # /Ob2, inline anything eligible
|
||||
@@ -52,6 +90,8 @@
|
||||
'OmitFramePointers': 'true',
|
||||
'EnableFunctionLevelLinking': 'true',
|
||||
'EnableIntrinsicFunctions': 'true',
|
||||
'RuntimeTypeInfo': 'false',
|
||||
'ExceptionHandling': '0',
|
||||
'AdditionalOptions': [
|
||||
'/MP', # compile across multiple CPUs
|
||||
],
|
||||
@@ -83,6 +123,11 @@
|
||||
'VCLibrarianTool': {
|
||||
},
|
||||
'VCLinkerTool': {
|
||||
'conditions': [
|
||||
['target_arch=="x64"', {
|
||||
'TargetMachine' : 17 # /MACHINE:X64
|
||||
}],
|
||||
],
|
||||
'GenerateDebugInformation': 'true',
|
||||
'RandomizedBaseAddress': 2, # enable ASLR
|
||||
'DataExecutionPrevention': 2, # enable DEP
|
||||
@@ -109,25 +154,35 @@
|
||||
'BUILDING_V8_SHARED=1',
|
||||
'BUILDING_UV_SHARED=1',
|
||||
],
|
||||
}, {
|
||||
'defines': [
|
||||
'_LARGEFILE_SOURCE',
|
||||
'_FILE_OFFSET_BITS=64',
|
||||
],
|
||||
}],
|
||||
[ 'OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris"', {
|
||||
'cflags': [ '-Wall', '-pthread', ],
|
||||
'cflags_cc': [ '-fno-rtti', '-fno-exceptions' ],
|
||||
'ldflags': [ '-pthread', ],
|
||||
'ldflags': [ '-pthread', '-rdynamic' ],
|
||||
'conditions': [
|
||||
[ 'target_arch=="ia32"', {
|
||||
'cflags': [ '-m32' ],
|
||||
'ldflags': [ '-m32' ],
|
||||
}],
|
||||
[ 'OS=="linux"', {
|
||||
'cflags': [ '-ansi' ],
|
||||
[ 'target_arch=="x64"', {
|
||||
'cflags': [ '-m64' ],
|
||||
'ldflags': [ '-m64' ],
|
||||
}],
|
||||
[ 'visibility=="hidden"', {
|
||||
'cflags': [ '-fvisibility=hidden' ],
|
||||
[ 'OS=="solaris"', {
|
||||
'cflags': [ '-pthreads' ],
|
||||
'ldflags': [ '-pthreads' ],
|
||||
'cflags!': [ '-pthread' ],
|
||||
'ldflags!': [ '-pthread' ],
|
||||
}],
|
||||
],
|
||||
}],
|
||||
['OS=="mac"', {
|
||||
'defines': ['_DARWIN_USE_64_BIT_INODE=1'],
|
||||
'xcode_settings': {
|
||||
'ALWAYS_SEARCH_USER_PATHS': 'NO',
|
||||
'GCC_CW_ASM_SYNTAX': 'NO', # No -fasm-blocks
|
||||
@@ -136,14 +191,10 @@
|
||||
'GCC_ENABLE_CPP_EXCEPTIONS': 'NO', # -fno-exceptions
|
||||
'GCC_ENABLE_CPP_RTTI': 'NO', # -fno-rtti
|
||||
'GCC_ENABLE_PASCAL_STRINGS': 'NO', # No -mpascal-strings
|
||||
# GCC_INLINES_ARE_PRIVATE_EXTERN maps to -fvisibility-inlines-hidden
|
||||
'GCC_INLINES_ARE_PRIVATE_EXTERN': 'YES',
|
||||
'GCC_SYMBOLS_PRIVATE_EXTERN': 'YES', # -fvisibility=hidden
|
||||
'GCC_THREADSAFE_STATICS': 'NO', # -fno-threadsafe-statics
|
||||
'GCC_VERSION': '4.2',
|
||||
'GCC_WARN_ABOUT_MISSING_NEWLINE': 'YES', # -Wnewline-eof
|
||||
'MACOSX_DEPLOYMENT_TARGET': '10.4', # -mmacosx-version-min=10.4
|
||||
'PREBINDING': 'NO', # No -Wl,-prebind
|
||||
'MACOSX_DEPLOYMENT_TARGET': '10.5', # -mmacosx-version-min=10.5
|
||||
'USE_HEADERMAP': 'NO',
|
||||
'OTHER_CFLAGS': [
|
||||
'-fno-strict-aliasing',
|
||||
@@ -160,6 +211,14 @@
|
||||
'xcode_settings': {'OTHER_LDFLAGS': ['-Wl,-search_paths_first']},
|
||||
}],
|
||||
],
|
||||
'conditions': [
|
||||
['target_arch=="ia32"', {
|
||||
'xcode_settings': {'ARCHS': ['i386']},
|
||||
}],
|
||||
['target_arch=="x64"', {
|
||||
'xcode_settings': {'ARCHS': ['x86_64']},
|
||||
}],
|
||||
],
|
||||
}],
|
||||
],
|
||||
}
|
||||
|
||||
518
configure
vendored
518
configure
vendored
@@ -1,21 +1,507 @@
|
||||
#! /bin/sh
|
||||
#!/usr/bin/env python
|
||||
import optparse
|
||||
import os
|
||||
import pprint
|
||||
import re
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
# v8 doesn't like ccache
|
||||
if [ ! -z "`echo $CC | grep ccache`" ]; then
|
||||
echo "Error: V8 doesn't like ccache. Please set your CC env var to 'gcc'"
|
||||
echo " (ba)sh: export CC=gcc"
|
||||
exit 1
|
||||
fi
|
||||
CC = os.environ.get('CC', 'cc')
|
||||
|
||||
CUR_DIR=$PWD
|
||||
root_dir = os.path.dirname(__file__)
|
||||
sys.path.insert(0, os.path.join(root_dir, 'deps', 'v8', 'tools'))
|
||||
|
||||
#possible relative path
|
||||
WORKINGDIR=`dirname $0`
|
||||
cd "$WORKINGDIR"
|
||||
#abs path
|
||||
WORKINGDIR=`pwd`
|
||||
cd "$CUR_DIR"
|
||||
# parse our options
|
||||
parser = optparse.OptionParser()
|
||||
|
||||
"${WORKINGDIR}/tools/waf-light" --jobs=1 configure $*
|
||||
parser.add_option("--debug",
|
||||
action="store_true",
|
||||
dest="debug",
|
||||
help="Also build debug build")
|
||||
|
||||
exit $?
|
||||
parser.add_option("--prefix",
|
||||
action="store",
|
||||
dest="prefix",
|
||||
help="Select the install prefix (defaults to /usr/local)")
|
||||
|
||||
parser.add_option("--without-npm",
|
||||
action="store_true",
|
||||
dest="without_npm",
|
||||
help="Don\'t install the bundled npm package manager")
|
||||
|
||||
parser.add_option("--without-waf",
|
||||
action="store_true",
|
||||
dest="without_waf",
|
||||
help="Don\'t install node-waf")
|
||||
|
||||
parser.add_option("--without-ssl",
|
||||
action="store_true",
|
||||
dest="without_ssl",
|
||||
help="Build without SSL")
|
||||
|
||||
parser.add_option("--without-snapshot",
|
||||
action="store_true",
|
||||
dest="without_snapshot",
|
||||
help="Build without snapshotting V8 libraries. You might want to set"
|
||||
" this for cross-compiling. [Default: False]")
|
||||
|
||||
parser.add_option("--shared-v8",
|
||||
action="store_true",
|
||||
dest="shared_v8",
|
||||
help="Link to a shared V8 DLL instead of static linking")
|
||||
|
||||
parser.add_option("--shared-v8-includes",
|
||||
action="store",
|
||||
dest="shared_v8_includes",
|
||||
help="Directory containing V8 header files")
|
||||
|
||||
parser.add_option("--shared-v8-libpath",
|
||||
action="store",
|
||||
dest="shared_v8_libpath",
|
||||
help="A directory to search for the shared V8 DLL")
|
||||
|
||||
parser.add_option("--shared-v8-libname",
|
||||
action="store",
|
||||
dest="shared_v8_libname",
|
||||
help="Alternative lib name to link to (default: 'v8')")
|
||||
|
||||
parser.add_option("--shared-openssl",
|
||||
action="store_true",
|
||||
dest="shared_openssl",
|
||||
help="Link to a shared OpenSSl DLL instead of static linking")
|
||||
|
||||
parser.add_option("--shared-openssl-includes",
|
||||
action="store",
|
||||
dest="shared_openssl_includes",
|
||||
help="Directory containing OpenSSL header files")
|
||||
|
||||
parser.add_option("--shared-openssl-libpath",
|
||||
action="store",
|
||||
dest="shared_openssl_libpath",
|
||||
help="A directory to search for the shared OpenSSL DLLs")
|
||||
|
||||
parser.add_option("--shared-openssl-libname",
|
||||
action="store",
|
||||
dest="shared_openssl_libname",
|
||||
help="Alternative lib name to link to (default: 'crypto,ssl')")
|
||||
|
||||
# deprecated
|
||||
parser.add_option("--openssl-use-sys",
|
||||
action="store_true",
|
||||
dest="shared_openssl",
|
||||
help=optparse.SUPPRESS_HELP)
|
||||
|
||||
# deprecated
|
||||
parser.add_option("--openssl-includes",
|
||||
action="store",
|
||||
dest="shared_openssl_includes",
|
||||
help=optparse.SUPPRESS_HELP)
|
||||
|
||||
# deprecated
|
||||
parser.add_option("--openssl-libpath",
|
||||
action="store",
|
||||
dest="shared_openssl_libpath",
|
||||
help=optparse.SUPPRESS_HELP)
|
||||
|
||||
parser.add_option("--no-ssl2",
|
||||
action="store_true",
|
||||
dest="no_ssl2",
|
||||
help="Disable OpenSSL v2")
|
||||
|
||||
parser.add_option("--shared-zlib",
|
||||
action="store_true",
|
||||
dest="shared_zlib",
|
||||
help="Link to a shared zlib DLL instead of static linking")
|
||||
|
||||
parser.add_option("--shared-zlib-includes",
|
||||
action="store",
|
||||
dest="shared_zlib_includes",
|
||||
help="Directory containing zlib header files")
|
||||
|
||||
parser.add_option("--shared-zlib-libpath",
|
||||
action="store",
|
||||
dest="shared_zlib_libpath",
|
||||
help="A directory to search for the shared zlib DLL")
|
||||
|
||||
parser.add_option("--shared-zlib-libname",
|
||||
action="store",
|
||||
dest="shared_zlib_libname",
|
||||
help="Alternative lib name to link to (default: 'z')")
|
||||
|
||||
parser.add_option("--with-dtrace",
|
||||
action="store_true",
|
||||
dest="with_dtrace",
|
||||
help="Build with DTrace (default is true on supported systems)")
|
||||
|
||||
parser.add_option("--without-dtrace",
|
||||
action="store_true",
|
||||
dest="without_dtrace",
|
||||
help="Build without DTrace")
|
||||
|
||||
parser.add_option("--with-etw",
|
||||
action="store_true",
|
||||
dest="with_etw",
|
||||
help="Build with ETW (default is true on Windows)")
|
||||
|
||||
parser.add_option("--without-etw",
|
||||
action="store_true",
|
||||
dest="without_etw",
|
||||
help="Build without ETW")
|
||||
|
||||
# CHECKME does this still work with recent releases of V8?
|
||||
parser.add_option("--gdb",
|
||||
action="store_true",
|
||||
dest="gdb",
|
||||
help="add gdb support")
|
||||
|
||||
parser.add_option("--dest-cpu",
|
||||
action="store",
|
||||
dest="dest_cpu",
|
||||
help="CPU architecture to build for. Valid values are: arm, ia32, x64")
|
||||
|
||||
parser.add_option("--dest-os",
|
||||
action="store",
|
||||
dest="dest_os",
|
||||
help="Operating system to build for. Valid values are: "
|
||||
"win, mac, solaris, freebsd, linux")
|
||||
|
||||
parser.add_option("--no-ifaddrs",
|
||||
action="store_true",
|
||||
dest="no_ifaddrs",
|
||||
help="Use on deprecated SunOS systems that do not support ifaddrs.h")
|
||||
|
||||
parser.add_option("--with-arm-float-abi",
|
||||
action="store",
|
||||
dest="arm_float_abi",
|
||||
help="Specifies which floating-point ABI to use. Valid values are: "
|
||||
"soft, softfp, hard")
|
||||
|
||||
# Using --unsafe-optimizations voids your warranty.
|
||||
parser.add_option("--unsafe-optimizations",
|
||||
action="store_true",
|
||||
dest="unsafe_optimizations",
|
||||
help=optparse.SUPPRESS_HELP)
|
||||
|
||||
parser.add_option("--tag",
|
||||
action="store",
|
||||
dest="tag",
|
||||
help="Custom build tag")
|
||||
|
||||
(options, args) = parser.parse_args()
|
||||
|
||||
|
||||
def b(value):
|
||||
"""Returns the string 'true' if value is truthy, 'false' otherwise."""
|
||||
if value:
|
||||
return 'true'
|
||||
else:
|
||||
return 'false'
|
||||
|
||||
|
||||
def pkg_config(pkg):
|
||||
cmd = os.popen('pkg-config --libs %s' % pkg, 'r')
|
||||
libs = cmd.readline().strip()
|
||||
ret = cmd.close()
|
||||
if (ret): return None
|
||||
|
||||
cmd = os.popen('pkg-config --cflags %s' % pkg, 'r')
|
||||
cflags = cmd.readline().strip()
|
||||
ret = cmd.close()
|
||||
if (ret): return None
|
||||
|
||||
return (libs, cflags)
|
||||
|
||||
|
||||
def cc_macros():
|
||||
"""Checks predefined macros using the CC command."""
|
||||
|
||||
try:
|
||||
p = subprocess.Popen(CC.split() + ['-dM', '-E', '-'],
|
||||
stdin=subprocess.PIPE,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE)
|
||||
except OSError:
|
||||
print '''Node.js configure error: No acceptable C compiler found!
|
||||
|
||||
Please make sure you have a C compiler installed on your system and/or
|
||||
consider adjusting the CC environment variable if you installed
|
||||
it in a non-standard prefix.
|
||||
'''
|
||||
sys.exit()
|
||||
|
||||
p.stdin.write('\n')
|
||||
out = p.communicate()[0]
|
||||
|
||||
out = str(out).split('\n')
|
||||
|
||||
k = {}
|
||||
for line in out:
|
||||
import shlex
|
||||
lst = shlex.split(line)
|
||||
if len(lst) > 2:
|
||||
key = lst[1]
|
||||
val = lst[2]
|
||||
k[key] = val
|
||||
return k
|
||||
|
||||
|
||||
def is_arch_armv7():
|
||||
"""Check for ARMv7 instructions"""
|
||||
cc_macros_cache = cc_macros()
|
||||
return ('__ARM_ARCH_7__' in cc_macros_cache or
|
||||
'__ARM_ARCH_7A__' in cc_macros_cache or
|
||||
'__ARM_ARCH_7R__' in cc_macros_cache or
|
||||
'__ARM_ARCH_7M__' in cc_macros_cache)
|
||||
|
||||
|
||||
def arm_hard_float_abi():
|
||||
"""Check for hardfloat or softfloat eabi on ARM"""
|
||||
# GCC versions 4.6 and above define __ARM_PCS or __ARM_PCS_VFP to specify
|
||||
# the Floating Point ABI used (PCS stands for Procedure Call Standard).
|
||||
# We use these as well as a couple of other defines to statically determine
|
||||
# what FP ABI used.
|
||||
# GCC versions 4.4 and below don't support hard-fp.
|
||||
# GCC versions 4.5 may support hard-fp without defining __ARM_PCS or
|
||||
# __ARM_PCS_VFP.
|
||||
|
||||
if compiler_version() >= (4, 6, 0):
|
||||
return '__ARM_PCS_VFP' in cc_macros()
|
||||
elif compiler_version() < (4, 5, 0):
|
||||
return False
|
||||
elif '__ARM_PCS_VFP' in cc_macros():
|
||||
return True
|
||||
elif ('__ARM_PCS' in cc_macros() or
|
||||
'__SOFTFP' in cc_macros() or
|
||||
not '__VFP_FP__' in cc_macros()):
|
||||
return False
|
||||
else:
|
||||
print '''Node.js configure error: Your version of GCC does not report
|
||||
the Floating-Point ABI to compile for your hardware
|
||||
|
||||
Please manually specify which floating-point ABI to use with the
|
||||
--with-arm-float-abi option.
|
||||
'''
|
||||
sys.exit()
|
||||
|
||||
|
||||
def host_arch_cc():
|
||||
"""Host architecture check using the CC command."""
|
||||
|
||||
k = cc_macros()
|
||||
|
||||
matchup = {
|
||||
'__x86_64__' : 'x64',
|
||||
'__i386__' : 'ia32',
|
||||
'__arm__' : 'arm',
|
||||
}
|
||||
|
||||
rtn = 'ia32' # default
|
||||
|
||||
for i in matchup:
|
||||
if i in k and k[i] != '0':
|
||||
rtn = matchup[i]
|
||||
break
|
||||
|
||||
return rtn
|
||||
|
||||
|
||||
def host_arch_win():
|
||||
"""Host architecture check using environ vars (better way to do this?)"""
|
||||
|
||||
arch = os.environ.get('PROCESSOR_ARCHITECTURE', 'x86')
|
||||
|
||||
matchup = {
|
||||
'AMD64' : 'x64',
|
||||
'x86' : 'ia32',
|
||||
'arm' : 'arm',
|
||||
}
|
||||
|
||||
return matchup.get(arch, 'ia32')
|
||||
|
||||
|
||||
def compiler_version():
|
||||
try:
|
||||
proc = subprocess.Popen(CC.split() + ['--version'], stdout=subprocess.PIPE)
|
||||
except WindowsError:
|
||||
return (0, False)
|
||||
|
||||
is_clang = 'clang' in proc.communicate()[0].split('\n')[0]
|
||||
|
||||
proc = subprocess.Popen(CC.split() + ['-dumpversion'], stdout=subprocess.PIPE)
|
||||
version = tuple(map(int, proc.communicate()[0].split('.')))
|
||||
|
||||
return (version, is_clang)
|
||||
|
||||
|
||||
def configure_arm(o):
|
||||
# V8 on ARM requires that armv7 is set. CPU Model detected by
|
||||
# the presence of __ARM_ARCH_7__ and the like defines in compiler
|
||||
if options.arm_float_abi:
|
||||
hard_float = options.arm_float_abi == 'hard'
|
||||
else:
|
||||
hard_float = arm_hard_float_abi()
|
||||
o['variables']['v8_use_arm_eabi_hardfloat'] = b(hard_float)
|
||||
|
||||
armv7 = is_arch_armv7()
|
||||
if armv7:
|
||||
# CHECKME VFPv3 implies ARMv7+ but is the reverse true as well?
|
||||
o['variables']['arm_fpu'] = 'vfpv3'
|
||||
o['variables']['arm_neon'] = 0
|
||||
o['variables']['armv7'] = int(armv7)
|
||||
|
||||
|
||||
def configure_node(o):
|
||||
# TODO add gdb
|
||||
o['variables']['v8_no_strict_aliasing'] = 1 # work around compiler bugs
|
||||
o['variables']['node_prefix'] = os.path.expanduser(options.prefix or '')
|
||||
o['variables']['node_install_npm'] = b(not options.without_npm)
|
||||
o['variables']['node_install_waf'] = b(not options.without_waf)
|
||||
o['variables']['node_unsafe_optimizations'] = (
|
||||
1 if options.unsafe_optimizations else 0)
|
||||
o['default_configuration'] = 'Debug' if options.debug else 'Release'
|
||||
|
||||
host_arch = host_arch_win() if os.name == 'nt' else host_arch_cc()
|
||||
target_arch = options.dest_cpu or host_arch
|
||||
o['variables']['host_arch'] = host_arch
|
||||
o['variables']['target_arch'] = target_arch
|
||||
|
||||
if target_arch == 'arm':
|
||||
configure_arm(o)
|
||||
|
||||
cc_version, is_clang = compiler_version()
|
||||
o['variables']['clang'] = 1 if is_clang else 0
|
||||
|
||||
if not is_clang and cc_version != 0:
|
||||
o['variables']['gcc_version'] = 10 * cc_version[0] + cc_version[1]
|
||||
|
||||
# clang has always supported -fvisibility=hidden, right?
|
||||
if not is_clang and cc_version < (4,0,0):
|
||||
o['variables']['visibility'] = ''
|
||||
|
||||
# By default, enable DTrace on SunOS systems. Don't allow it on other
|
||||
# systems, since it won't work. (The MacOS build process is different than
|
||||
# SunOS, and we haven't implemented it.)
|
||||
if sys.platform.startswith('sunos'):
|
||||
o['variables']['node_use_dtrace'] = b(not options.without_dtrace)
|
||||
elif b(options.with_dtrace) == 'true':
|
||||
raise Exception('DTrace is currently only supported on SunOS systems.')
|
||||
else:
|
||||
o['variables']['node_use_dtrace'] = 'false'
|
||||
|
||||
if options.no_ifaddrs:
|
||||
o['defines'] += ['SUNOS_NO_IFADDRS']
|
||||
|
||||
# By default, enable ETW on Windows.
|
||||
if sys.platform.startswith('win32'):
|
||||
o['variables']['node_use_etw'] = b(not options.without_etw);
|
||||
elif b(options.with_etw) == 'true':
|
||||
raise Exception('ETW is only supported on Windows.')
|
||||
else:
|
||||
o['variables']['node_use_etw'] = 'false'
|
||||
|
||||
if options.tag:
|
||||
o['variables']['node_tag'] = '-' + options.tag
|
||||
else:
|
||||
o['variables']['node_tag'] = ''
|
||||
|
||||
|
||||
def configure_libz(o):
|
||||
o['variables']['node_shared_zlib'] = b(options.shared_zlib)
|
||||
|
||||
# assume shared_zlib if one of these is set?
|
||||
if options.shared_zlib_libpath:
|
||||
o['libraries'] += ['-L%s' % options.shared_zlib_libpath]
|
||||
if options.shared_zlib_libname:
|
||||
o['libraries'] += ['-l%s' % options.shared_zlib_libname]
|
||||
elif options.shared_zlib:
|
||||
o['libraries'] += ['-lz']
|
||||
if options.shared_zlib_includes:
|
||||
o['include_dirs'] += [options.shared_zlib_includes]
|
||||
|
||||
|
||||
def configure_v8(o):
|
||||
o['variables']['v8_use_snapshot'] = b(not options.without_snapshot)
|
||||
o['variables']['node_shared_v8'] = b(options.shared_v8)
|
||||
|
||||
# assume shared_v8 if one of these is set?
|
||||
if options.shared_v8_libpath:
|
||||
o['libraries'] += ['-L%s' % options.shared_v8_libpath]
|
||||
if options.shared_v8_libname:
|
||||
o['libraries'] += ['-l%s' % options.shared_v8_libname]
|
||||
elif options.shared_v8:
|
||||
o['libraries'] += ['-lv8']
|
||||
if options.shared_v8_includes:
|
||||
o['include_dirs'] += [options.shared_v8_includes]
|
||||
|
||||
|
||||
def configure_openssl(o):
|
||||
o['variables']['node_use_openssl'] = b(not options.without_ssl)
|
||||
o['variables']['node_shared_openssl'] = b(options.shared_openssl)
|
||||
|
||||
if options.without_ssl:
|
||||
return
|
||||
|
||||
if options.no_ssl2:
|
||||
o['defines'] += ['OPENSSL_NO_SSL2=1']
|
||||
|
||||
if options.shared_openssl:
|
||||
(libs, cflags) = pkg_config('openssl') or ('-lssl -lcrypto', '')
|
||||
|
||||
if options.shared_openssl_libpath:
|
||||
o['libraries'] += ['-L%s' % options.shared_openssl_libpath]
|
||||
|
||||
if options.shared_openssl_libname:
|
||||
libnames = options.shared_openssl_libname.split(',')
|
||||
o['libraries'] += ['-l%s' % s for s in libnames]
|
||||
else:
|
||||
o['libraries'] += libs.split()
|
||||
|
||||
if options.shared_openssl_includes:
|
||||
o['include_dirs'] += [options.shared_openssl_includes]
|
||||
else:
|
||||
o['cflags'] += cflags.split()
|
||||
|
||||
|
||||
output = {
|
||||
'variables': {},
|
||||
'include_dirs': [],
|
||||
'libraries': [],
|
||||
'defines': [],
|
||||
'cflags': [],
|
||||
}
|
||||
|
||||
configure_node(output)
|
||||
configure_libz(output)
|
||||
configure_v8(output)
|
||||
configure_openssl(output)
|
||||
|
||||
# variables should be a root level element,
|
||||
# move everything else to target_defaults
|
||||
variables = output['variables']
|
||||
del output['variables']
|
||||
output = {
|
||||
'variables': variables,
|
||||
'target_defaults': output
|
||||
}
|
||||
pprint.pprint(output, indent=2)
|
||||
|
||||
def write(filename, data):
|
||||
filename = os.path.join(root_dir, filename)
|
||||
print "creating ", filename
|
||||
f = open(filename, 'w+')
|
||||
f.write(data)
|
||||
|
||||
write('config.gypi', "# Do not edit. Generated by the configure script.\n" +
|
||||
pprint.pformat(output, indent=2) + "\n")
|
||||
|
||||
write('config.mk', "# Do not edit. Generated by the configure script.\n" +
|
||||
("BUILDTYPE=%s\n" % ('Debug' if options.debug else 'Release')))
|
||||
|
||||
if os.name == 'nt':
|
||||
gyp_args = ['-f', 'msvs', '-G', 'msvs_version=2010']
|
||||
elif options.dest_os:
|
||||
gyp_args = ['-f', 'make-' + options.dest_os]
|
||||
else:
|
||||
gyp_args = ['-f', 'make']
|
||||
|
||||
subprocess.call([sys.executable, 'tools/gyp_node'] + gyp_args)
|
||||
|
||||
247
configure-gyp
247
configure-gyp
@@ -1,247 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import optparse
|
||||
import os
|
||||
import json
|
||||
import sys
|
||||
|
||||
root_dir = os.path.dirname(__file__)
|
||||
sys.path.insert(0, os.path.join(root_dir, 'deps', 'v8', 'tools'))
|
||||
import utils # GuessArchitecture
|
||||
|
||||
# parse our options
|
||||
parser = optparse.OptionParser()
|
||||
|
||||
parser.add_option("--debug",
|
||||
action="store_true",
|
||||
dest="debug",
|
||||
help="Also build debug build")
|
||||
|
||||
parser.add_option("--prefix",
|
||||
action="store",
|
||||
dest="prefix",
|
||||
help="Select the install prefix (defaults to /usr/local)")
|
||||
|
||||
parser.add_option("--without-ssl",
|
||||
action="store_true",
|
||||
dest="without_ssl",
|
||||
help="Build without SSL")
|
||||
|
||||
parser.add_option("--without-snapshot",
|
||||
action="store_true",
|
||||
dest="without_snapshot",
|
||||
help="Build without snapshotting V8 libraries. You might want to set"
|
||||
" this for cross-compiling. [Default: False]")
|
||||
|
||||
parser.add_option("--shared-v8",
|
||||
action="store_true",
|
||||
dest="shared_v8",
|
||||
help="Link to a shared V8 DLL instead of static linking")
|
||||
|
||||
parser.add_option("--shared-v8-includes",
|
||||
action="store",
|
||||
dest="shared_v8_includes",
|
||||
help="Directory containing V8 header files")
|
||||
|
||||
parser.add_option("--shared-v8-libpath",
|
||||
action="store",
|
||||
dest="shared_v8_libpath",
|
||||
help="A directory to search for the shared V8 DLL")
|
||||
|
||||
parser.add_option("--shared-v8-libname",
|
||||
action="store",
|
||||
dest="shared_v8_libname",
|
||||
help="Alternative lib name to link to (default: 'v8')")
|
||||
|
||||
parser.add_option("--openssl-includes",
|
||||
action="store",
|
||||
dest="openssl_includes",
|
||||
help="A directory to search for the OpenSSL includes")
|
||||
|
||||
parser.add_option("--openssl-libpath",
|
||||
action="store",
|
||||
dest="openssl_libpath",
|
||||
help="A directory to search for the OpenSSL libraries")
|
||||
|
||||
parser.add_option("--no-ssl2",
|
||||
action="store_true",
|
||||
dest="no_ssl2",
|
||||
help="Disable OpenSSL v2")
|
||||
|
||||
parser.add_option("--shared-cares",
|
||||
action="store_true",
|
||||
dest="shared_cares",
|
||||
help="Link to a shared C-Ares DLL instead of static linking")
|
||||
|
||||
parser.add_option("--shared-cares-includes",
|
||||
action="store",
|
||||
dest="shared_cares_includes",
|
||||
help="Directory containing C-Ares header files")
|
||||
|
||||
parser.add_option("--shared-cares-libpath",
|
||||
action="store",
|
||||
dest="shared_cares_libpath",
|
||||
help="A directory to search for the shared C-Ares DLL")
|
||||
|
||||
parser.add_option("--with-dtrace",
|
||||
action="store_true",
|
||||
dest="with_dtrace",
|
||||
help="Build with DTrace (experimental)")
|
||||
|
||||
# CHECKME does this still work with recent releases of V8?
|
||||
parser.add_option("--gdb",
|
||||
action="store_true",
|
||||
dest="gdb",
|
||||
help="add gdb support")
|
||||
|
||||
parser.add_option("--dest-cpu",
|
||||
action="store",
|
||||
dest="dest_cpu",
|
||||
help="CPU architecture to build for. Valid values are: arm, ia32, x64")
|
||||
|
||||
(options, args) = parser.parse_args()
|
||||
|
||||
|
||||
def pkg_config(pkg):
|
||||
cmd = os.popen('pkg-config --libs %s' % pkg, 'r')
|
||||
libs = cmd.readline().strip()
|
||||
ret = cmd.close()
|
||||
if (ret): return None
|
||||
|
||||
cmd = os.popen('pkg-config --cflags %s' % pkg, 'r')
|
||||
cflags = cmd.readline().strip()
|
||||
ret = cmd.close()
|
||||
if (ret): return None
|
||||
|
||||
return (libs, cflags)
|
||||
|
||||
|
||||
def uname(switch):
|
||||
f = os.popen('uname %s' % switch)
|
||||
s = f.read().strip()
|
||||
f.close()
|
||||
return s
|
||||
|
||||
|
||||
def host_arch():
|
||||
"""Host architecture. One of arm, ia32 or x64."""
|
||||
arch = uname('-p')
|
||||
|
||||
if arch == 'unknown':
|
||||
arch = uname('-m')
|
||||
|
||||
return {
|
||||
'arm': 'arm',
|
||||
'x86': 'ia32',
|
||||
'i386': 'ia32',
|
||||
'x86_64': 'x64',
|
||||
}.get(arch, 'ia32')
|
||||
|
||||
|
||||
def target_arch():
|
||||
# TODO act on options.dest_cpu
|
||||
return host_arch()
|
||||
|
||||
|
||||
def configure_node(o):
|
||||
# TODO add gdb and dest_cpu
|
||||
o['variables']['node_debug'] = 'true' if options.debug else 'false'
|
||||
o['variables']['node_prefix'] = options.prefix if options.prefix else ''
|
||||
o['variables']['node_use_dtrace'] = 'true' if options.with_dtrace else 'false'
|
||||
o['variables']['host_arch'] = host_arch()
|
||||
o['variables']['target_arch'] = target_arch()
|
||||
|
||||
# TODO move to node.gyp
|
||||
if sys.platform == 'sunos5':
|
||||
o['variables']['visibility'] = '' # FIXME -fvisibility=hidden, should be a gcc check
|
||||
|
||||
|
||||
def configure_libz(o):
|
||||
o['libraries'] += ['-lz']
|
||||
|
||||
|
||||
def configure_v8(o):
|
||||
o['variables']['v8_use_snapshot'] = 'true' if not options.without_snapshot else 'false'
|
||||
o['variables']['node_shared_v8'] = 'true' if options.shared_v8 else 'false'
|
||||
|
||||
# assume shared_v8 if one of these is set?
|
||||
if options.shared_v8_libpath:
|
||||
o['libraries'] += ['-L%s' % options.shared_v8_libpath]
|
||||
if options.shared_v8_libname:
|
||||
o['libraries'] += ['-l%s' % options.shared_v8_libname]
|
||||
if options.shared_v8_includes:
|
||||
o['include_dirs'] += [options.shared_v8_includes]
|
||||
|
||||
|
||||
def configure_cares(o):
|
||||
o['variables']['node_shared_cares'] = 'true' if options.shared_cares else 'false'
|
||||
|
||||
# assume shared_cares if one of these is set?
|
||||
if options.shared_cares_libpath:
|
||||
o['libraries'] += ['-L%s' % options.shared_cares_libpath]
|
||||
if options.shared_cares_includes:
|
||||
o['include_dirs'] += [options.shared_cares_includes]
|
||||
|
||||
|
||||
def configure_openssl(o):
|
||||
o['variables']['node_use_openssl'] = 'false' if options.without_ssl else 'true'
|
||||
|
||||
if options.without_ssl:
|
||||
return
|
||||
|
||||
if options.no_ssl2:
|
||||
o['defines'] += ['OPENSSL_NO_SSL2=1']
|
||||
|
||||
out = pkg_config('openssl')
|
||||
(libs, cflags) = out if out else ('', '')
|
||||
|
||||
if options.openssl_libpath:
|
||||
o['libraries'] += ['-L%s' % options.openssl_libpath, '-lssl', '-lcrypto']
|
||||
else:
|
||||
o['libraries'] += libs.split()
|
||||
|
||||
if options.openssl_includes:
|
||||
o['include_dirs'] += [options.openssl_includes]
|
||||
else:
|
||||
o['cflags'] += cflags.split()
|
||||
|
||||
if libs or cflags or options.openssl_libpath or options.openssl_includes:
|
||||
o['variables']['node_use_system_openssl'] = 'true'
|
||||
else:
|
||||
o['variables']['node_use_system_openssl'] = 'false'
|
||||
|
||||
|
||||
print "configure options:", options
|
||||
|
||||
output = {
|
||||
'variables': {},
|
||||
'include_dirs': [],
|
||||
'libraries': [],
|
||||
'defines': [],
|
||||
'cflags': [],
|
||||
}
|
||||
|
||||
configure_node(output)
|
||||
configure_libz(output)
|
||||
configure_v8(output)
|
||||
configure_cares(output)
|
||||
configure_openssl(output)
|
||||
|
||||
# variables should be a root level element,
|
||||
# move everything else to target_defaults
|
||||
variables = output['variables']
|
||||
del output['variables']
|
||||
output = {
|
||||
'variables': variables,
|
||||
'target_defaults': output
|
||||
}
|
||||
|
||||
fn = os.path.join(root_dir, 'options.gypi')
|
||||
print "creating ", fn
|
||||
|
||||
f = open(fn, 'w+')
|
||||
f.write("# Do not edit. Generated by the configure script.\n")
|
||||
json.dump(output, f, indent=2, skipkeys=True)
|
||||
f.write("\n")
|
||||
f.close()
|
||||
|
||||
6
deps/http_parser/.gitignore
vendored
6
deps/http_parser/.gitignore
vendored
@@ -1,8 +1,8 @@
|
||||
core
|
||||
tags
|
||||
*.o
|
||||
test
|
||||
test_g
|
||||
test_fast
|
||||
http_parser.Makefile
|
||||
http_parser.target.mk
|
||||
test.target.mk
|
||||
*.mk
|
||||
*.Makefile
|
||||
|
||||
4
deps/http_parser/.mailmap
vendored
Normal file
4
deps/http_parser/.mailmap
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
# update AUTHORS with:
|
||||
# git log --all --reverse --format='%aN <%aE>' | perl -ne 'BEGIN{print "# Authors ordered by first contribution.\n"} print unless $h{$_}; $h{$_} = 1' > AUTHORS
|
||||
Ryan Dahl <ry@tinyclouds.org>
|
||||
Salman Haq <salman.haq@asti-usa.com>
|
||||
32
deps/http_parser/AUTHORS
vendored
Normal file
32
deps/http_parser/AUTHORS
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
# Authors ordered by first contribution.
|
||||
Ryan Dahl <ry@tinyclouds.org>
|
||||
Jeremy Hinegardner <jeremy@hinegardner.org>
|
||||
Sergey Shepelev <temotor@gmail.com>
|
||||
Joe Damato <ice799@gmail.com>
|
||||
tomika <tomika_nospam@freemail.hu>
|
||||
Phoenix Sol <phoenix@burninglabs.com>
|
||||
Cliff Frey <cliff@meraki.com>
|
||||
Ewen Cheslack-Postava <ewencp@cs.stanford.edu>
|
||||
Santiago Gala <sgala@apache.org>
|
||||
Tim Becker <tim.becker@syngenio.de>
|
||||
Jeff Terrace <jterrace@gmail.com>
|
||||
Ben Noordhuis <info@bnoordhuis.nl>
|
||||
Nathan Rajlich <nathan@tootallnate.net>
|
||||
Mark Nottingham <mnot@mnot.net>
|
||||
Aman Gupta <aman@tmm1.net>
|
||||
Tim Becker <tim.becker@kuriositaet.de>
|
||||
Sean Cunningham <sean.cunningham@mandiant.com>
|
||||
Peter Griess <pg@std.in>
|
||||
Salman Haq <salman.haq@asti-usa.com>
|
||||
Cliff Frey <clifffrey@gmail.com>
|
||||
Jon Kolb <jon@b0g.us>
|
||||
Fouad Mardini <f.mardini@gmail.com>
|
||||
Paul Querna <pquerna@apache.org>
|
||||
Felix Geisendörfer <felix@debuggable.com>
|
||||
koichik <koichik@improvement.jp>
|
||||
Andre Caron <andre.l.caron@gmail.com>
|
||||
Ivo Raisr <ivosh@ivosh.net>
|
||||
James McLaughlin <jamie@lacewing-project.org>
|
||||
David Gwynne <loki@animata.net>
|
||||
LE ROUX Thomas <thomas@procheo.fr>
|
||||
Randy Rizun <rrizun@ortivawireless.com>
|
||||
2
deps/http_parser/CMakeLists.txt
vendored
2
deps/http_parser/CMakeLists.txt
vendored
@@ -1,2 +0,0 @@
|
||||
include_directories (.)
|
||||
add_library (http_parser http_parser.c)
|
||||
10
deps/http_parser/Makefile
vendored
10
deps/http_parser/Makefile
vendored
@@ -10,7 +10,7 @@ CPPFLAGS_FAST += $(CPPFLAGS_FAST_EXTRA)
|
||||
CFLAGS += -Wall -Wextra -Werror
|
||||
CFLAGS_DEBUG = $(CFLAGS) -O0 -g $(CFLAGS_DEBUG_EXTRA)
|
||||
CFLAGS_FAST = $(CFLAGS) -O3 $(CFLAGS_FAST_EXTRA)
|
||||
|
||||
CFLAGS_LIB = $(CFLAGS_FAST) -fPIC
|
||||
|
||||
test: test_g test_fast
|
||||
./test_g
|
||||
@@ -40,6 +40,12 @@ test-run-timed: test_fast
|
||||
test-valgrind: test_g
|
||||
valgrind ./test_g
|
||||
|
||||
libhttp_parser.o: http_parser.c http_parser.h Makefile
|
||||
$(CC) $(CPPFLAGS_FAST) $(CFLAGS_LIB) -c http_parser.c -o libhttp_parser.o
|
||||
|
||||
library: libhttp_parser.o
|
||||
$(CC) -shared -o libhttp_parser.so libhttp_parser.o
|
||||
|
||||
package: http_parser.o
|
||||
$(AR) rcs libhttp_parser.a http_parser.o
|
||||
|
||||
@@ -47,6 +53,6 @@ tags: http_parser.c http_parser.h test.c
|
||||
ctags $^
|
||||
|
||||
clean:
|
||||
rm -f *.o *.a test test_fast test_g http_parser.tar tags
|
||||
rm -f *.o *.a test test_fast test_g http_parser.tar tags libhttp_parser.so libhttp_parser.o
|
||||
|
||||
.PHONY: clean package test-run test-run-timed test-valgrind
|
||||
|
||||
11
deps/http_parser/README.md
vendored
11
deps/http_parser/README.md
vendored
@@ -164,8 +164,15 @@ and apply following logic:
|
||||
------------------------ ------------ --------------------------------------------
|
||||
|
||||
|
||||
Parsing URLs
|
||||
------------
|
||||
|
||||
A simplistic zero-copy URL parser is provided as `http_parser_parse_url()`.
|
||||
Users of this library may wish to use it to parse URLs constructed from
|
||||
consecutive `on_url` callbacks.
|
||||
|
||||
See examples of reading in headers:
|
||||
|
||||
* [partial example](http://gist.github.com/155877) in C
|
||||
* [from http-parser tests](http://github.com/ry/http-parser/blob/37a0ff8928fb0d83cec0d0d8909c5a4abcd221af/test.c#L403) in C
|
||||
* [from Node library](http://github.com/ry/node/blob/842eaf446d2fdcb33b296c67c911c32a0dabc747/src/http.js#L284) in Javascript
|
||||
* [from http-parser tests](http://github.com/joyent/http-parser/blob/37a0ff8/test.c#L403) in C
|
||||
* [from Node library](http://github.com/joyent/node/blob/842eaf4/src/http.js#L284) in Javascript
|
||||
|
||||
1367
deps/http_parser/http_parser.c
vendored
1367
deps/http_parser/http_parser.c
vendored
File diff suppressed because it is too large
Load Diff
61
deps/http_parser/http_parser.gyp
vendored
61
deps/http_parser/http_parser.gyp
vendored
@@ -5,24 +5,69 @@
|
||||
# ./gyp/gyp -f make --depth=`pwd` http_parser.gyp
|
||||
# ./out/Debug/test
|
||||
{
|
||||
'target_defaults': {
|
||||
'default_configuration': 'Debug',
|
||||
'configurations': {
|
||||
# TODO: hoist these out and put them somewhere common, because
|
||||
# RuntimeLibrary MUST MATCH across the entire project
|
||||
'Debug': {
|
||||
'defines': [ 'DEBUG', '_DEBUG' ],
|
||||
'msvs_settings': {
|
||||
'VCCLCompilerTool': {
|
||||
'RuntimeLibrary': 1, # static debug
|
||||
},
|
||||
},
|
||||
},
|
||||
'Release': {
|
||||
'defines': [ 'NDEBUG' ],
|
||||
'msvs_settings': {
|
||||
'VCCLCompilerTool': {
|
||||
'RuntimeLibrary': 0, # static release
|
||||
},
|
||||
},
|
||||
}
|
||||
},
|
||||
'msvs_settings': {
|
||||
'VCCLCompilerTool': {
|
||||
},
|
||||
'VCLibrarianTool': {
|
||||
},
|
||||
'VCLinkerTool': {
|
||||
'GenerateDebugInformation': 'true',
|
||||
},
|
||||
},
|
||||
'conditions': [
|
||||
['OS == "win"', {
|
||||
'defines': [
|
||||
'WIN32'
|
||||
],
|
||||
}]
|
||||
],
|
||||
},
|
||||
|
||||
'targets': [
|
||||
{
|
||||
'target_name': 'http_parser',
|
||||
'type': '<(library)',
|
||||
'type': 'static_library',
|
||||
'include_dirs': [ '.' ],
|
||||
'direct_dependent_settings': {
|
||||
'include_dirs': [ '.' ],
|
||||
},
|
||||
'defines': [ 'HTTP_PARSER_STRICT=0' ],
|
||||
'sources': [ './http_parser.c', ],
|
||||
'msvs_settings': {
|
||||
'VCCLCompilerTool': {
|
||||
# Compile as C++. http_parser.c is actually C99, but C++ is
|
||||
# close enough in this case.
|
||||
'CompileAs': 2, # compile as C++
|
||||
},
|
||||
},
|
||||
'conditions': [
|
||||
['OS=="win"', {
|
||||
'msvs_settings': {
|
||||
'VCCLCompilerTool': {
|
||||
# Compile as C++. http_parser.c is actually C99, but C++ is
|
||||
# close enough in this case.
|
||||
'CompileAs': 2,
|
||||
},
|
||||
},
|
||||
}]
|
||||
],
|
||||
},
|
||||
|
||||
{
|
||||
'target_name': 'test',
|
||||
'type': 'executable',
|
||||
|
||||
128
deps/http_parser/http_parser.h
vendored
128
deps/http_parser/http_parser.h
vendored
@@ -28,7 +28,7 @@ extern "C" {
|
||||
#define HTTP_PARSER_VERSION_MINOR 0
|
||||
|
||||
#include <sys/types.h>
|
||||
#if defined(_WIN32) && !defined(__MINGW32__) && !defined(_MSC_VER)
|
||||
#if defined(_WIN32) && !defined(__MINGW32__) && (!defined(_MSC_VER) || _MSC_VER<1600)
|
||||
typedef __int8 int8_t;
|
||||
typedef unsigned __int8 uint8_t;
|
||||
typedef __int16 int16_t;
|
||||
@@ -65,7 +65,6 @@ typedef int ssize_t;
|
||||
|
||||
typedef struct http_parser http_parser;
|
||||
typedef struct http_parser_settings http_parser_settings;
|
||||
typedef struct http_parser_result http_parser_result;
|
||||
|
||||
|
||||
/* Callbacks should return non-zero to indicate an error. The parser will
|
||||
@@ -86,36 +85,44 @@ typedef int (*http_cb) (http_parser*);
|
||||
|
||||
|
||||
/* Request Methods */
|
||||
#define HTTP_METHOD_MAP(XX) \
|
||||
XX(0, DELETE, DELETE) \
|
||||
XX(1, GET, GET) \
|
||||
XX(2, HEAD, HEAD) \
|
||||
XX(3, POST, POST) \
|
||||
XX(4, PUT, PUT) \
|
||||
/* pathological */ \
|
||||
XX(5, CONNECT, CONNECT) \
|
||||
XX(6, OPTIONS, OPTIONS) \
|
||||
XX(7, TRACE, TRACE) \
|
||||
/* webdav */ \
|
||||
XX(8, COPY, COPY) \
|
||||
XX(9, LOCK, LOCK) \
|
||||
XX(10, MKCOL, MKCOL) \
|
||||
XX(11, MOVE, MOVE) \
|
||||
XX(12, PROPFIND, PROPFIND) \
|
||||
XX(13, PROPPATCH, PROPPATCH) \
|
||||
XX(14, SEARCH, SEARCH) \
|
||||
XX(15, UNLOCK, UNLOCK) \
|
||||
/* subversion */ \
|
||||
XX(16, REPORT, REPORT) \
|
||||
XX(17, MKACTIVITY, MKACTIVITY) \
|
||||
XX(18, CHECKOUT, CHECKOUT) \
|
||||
XX(19, MERGE, MERGE) \
|
||||
/* upnp */ \
|
||||
XX(20, MSEARCH, M-SEARCH) \
|
||||
XX(21, NOTIFY, NOTIFY) \
|
||||
XX(22, SUBSCRIBE, SUBSCRIBE) \
|
||||
XX(23, UNSUBSCRIBE, UNSUBSCRIBE) \
|
||||
/* RFC-5789 */ \
|
||||
XX(24, PATCH, PATCH) \
|
||||
XX(25, PURGE, PURGE) \
|
||||
|
||||
enum http_method
|
||||
{ HTTP_DELETE = 0
|
||||
, HTTP_GET
|
||||
, HTTP_HEAD
|
||||
, HTTP_POST
|
||||
, HTTP_PUT
|
||||
/* pathological */
|
||||
, HTTP_CONNECT
|
||||
, HTTP_OPTIONS
|
||||
, HTTP_TRACE
|
||||
/* webdav */
|
||||
, HTTP_COPY
|
||||
, HTTP_LOCK
|
||||
, HTTP_MKCOL
|
||||
, HTTP_MOVE
|
||||
, HTTP_PROPFIND
|
||||
, HTTP_PROPPATCH
|
||||
, HTTP_UNLOCK
|
||||
/* subversion */
|
||||
, HTTP_REPORT
|
||||
, HTTP_MKACTIVITY
|
||||
, HTTP_CHECKOUT
|
||||
, HTTP_MERGE
|
||||
/* upnp */
|
||||
, HTTP_MSEARCH
|
||||
, HTTP_NOTIFY
|
||||
, HTTP_SUBSCRIBE
|
||||
, HTTP_UNSUBSCRIBE
|
||||
/* RFC-5789 */
|
||||
, HTTP_PATCH
|
||||
{
|
||||
#define XX(num, name, string) HTTP_##name = num,
|
||||
HTTP_METHOD_MAP(XX)
|
||||
#undef XX
|
||||
};
|
||||
|
||||
|
||||
@@ -143,10 +150,7 @@ enum flags
|
||||
\
|
||||
/* Callback-related errors */ \
|
||||
XX(CB_message_begin, "the on_message_begin callback failed") \
|
||||
XX(CB_path, "the on_path callback failed") \
|
||||
XX(CB_query_string, "the on_query_string callback failed") \
|
||||
XX(CB_url, "the on_url callback failed") \
|
||||
XX(CB_fragment, "the on_fragment callback failed") \
|
||||
XX(CB_header_field, "the on_header_field callback failed") \
|
||||
XX(CB_header_value, "the on_header_value callback failed") \
|
||||
XX(CB_headers_complete, "the on_headers_complete callback failed") \
|
||||
@@ -177,6 +181,7 @@ enum flags
|
||||
XX(INVALID_CONSTANT, "invalid constant string") \
|
||||
XX(INVALID_INTERNAL_STATE, "encountered unexpected internal state")\
|
||||
XX(STRICT, "strict mode assertion failed") \
|
||||
XX(PAUSED, "parser is paused") \
|
||||
XX(UNKNOWN, "an unknown error occurred")
|
||||
|
||||
|
||||
@@ -201,20 +206,20 @@ enum http_errno {
|
||||
|
||||
struct http_parser {
|
||||
/** PRIVATE **/
|
||||
unsigned char type : 2;
|
||||
unsigned char flags : 6; /* F_* values from 'flags' enum; semi-public */
|
||||
unsigned char state;
|
||||
unsigned char header_state;
|
||||
unsigned char index;
|
||||
unsigned char type : 2; /* enum http_parser_type */
|
||||
unsigned char flags : 6; /* F_* values from 'flags' enum; semi-public */
|
||||
unsigned char state; /* enum state from http_parser.c */
|
||||
unsigned char header_state; /* enum header_state from http_parser.c */
|
||||
unsigned char index; /* index into current matcher */
|
||||
|
||||
uint32_t nread;
|
||||
int64_t content_length;
|
||||
uint32_t nread; /* # bytes read in various scenarios */
|
||||
uint64_t content_length; /* # bytes in body (0 if no Content-Length header) */
|
||||
|
||||
/** READ-ONLY **/
|
||||
unsigned short http_major;
|
||||
unsigned short http_minor;
|
||||
unsigned short status_code; /* responses only */
|
||||
unsigned char method; /* requests only */
|
||||
unsigned char method; /* requests only */
|
||||
unsigned char http_errno : 7;
|
||||
|
||||
/* 1 = Upgrade header was present and the parser has exited because of that.
|
||||
@@ -222,7 +227,7 @@ struct http_parser {
|
||||
* Should be checked when http_parser_execute() returns in addition to
|
||||
* error checking.
|
||||
*/
|
||||
char upgrade : 1;
|
||||
unsigned char upgrade : 1;
|
||||
|
||||
#if HTTP_PARSER_DEBUG
|
||||
uint32_t error_lineno;
|
||||
@@ -244,6 +249,35 @@ struct http_parser_settings {
|
||||
};
|
||||
|
||||
|
||||
enum http_parser_url_fields
|
||||
{ UF_SCHEMA = 0
|
||||
, UF_HOST = 1
|
||||
, UF_PORT = 2
|
||||
, UF_PATH = 3
|
||||
, UF_QUERY = 4
|
||||
, UF_FRAGMENT = 5
|
||||
, UF_MAX = 6
|
||||
};
|
||||
|
||||
|
||||
/* Result structure for http_parser_parse_url().
|
||||
*
|
||||
* Callers should index into field_data[] with UF_* values iff field_set
|
||||
* has the relevant (1 << UF_*) bit set. As a courtesy to clients (and
|
||||
* because we probably have padding left over), we convert any port to
|
||||
* a uint16_t.
|
||||
*/
|
||||
struct http_parser_url {
|
||||
uint16_t field_set; /* Bitmask of (1 << UF_*) values */
|
||||
uint16_t port; /* Converted UF_PORT string */
|
||||
|
||||
struct {
|
||||
uint16_t off; /* Offset into buffer in which field starts */
|
||||
uint16_t len; /* Length of run in buffer */
|
||||
} field_data[UF_MAX];
|
||||
};
|
||||
|
||||
|
||||
void http_parser_init(http_parser *parser, enum http_parser_type type);
|
||||
|
||||
|
||||
@@ -270,6 +304,14 @@ const char *http_errno_name(enum http_errno err);
|
||||
/* Return a string description of the given error */
|
||||
const char *http_errno_description(enum http_errno err);
|
||||
|
||||
/* Parse a URL; return nonzero on failure */
|
||||
int http_parser_parse_url(const char *buf, size_t buflen,
|
||||
int is_connect,
|
||||
struct http_parser_url *u);
|
||||
|
||||
/* Pause or un-pause the parser; a nonzero value pauses */
|
||||
void http_parser_pause(http_parser *parser, int paused);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
18
deps/http_parser/test.c
vendored
18
deps/http_parser/test.c
vendored
@@ -1041,8 +1041,24 @@ const struct message responses[] =
|
||||
,.body= ""
|
||||
}
|
||||
|
||||
|
||||
#define HTTP_VERSION_0_9 12
|
||||
/* Should handle HTTP/0.9 */
|
||||
, {.name= "http version 0.9"
|
||||
,.type= HTTP_RESPONSE
|
||||
,.raw= "HTTP/0.9 200 OK\r\n"
|
||||
"\r\n"
|
||||
,.should_keep_alive= FALSE
|
||||
,.message_complete_on_eof= TRUE
|
||||
,.http_major= 0
|
||||
,.http_minor= 9
|
||||
,.status_code= 200
|
||||
,.num_headers= 0
|
||||
,.headers=
|
||||
{}
|
||||
,.body= ""
|
||||
}
|
||||
, {.name= NULL } /* sentinel */
|
||||
|
||||
};
|
||||
|
||||
int
|
||||
|
||||
25
deps/npm/.npmignore
vendored
Normal file
25
deps/npm/.npmignore
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
*.swp
|
||||
.*.swp
|
||||
npm-debug.log
|
||||
/test/bin
|
||||
/test/output.log
|
||||
/test/packages/*/node_modules
|
||||
/test/packages/npm-test-depends-on-spark/which-spark.log
|
||||
/test/packages/test-package/random-data.txt
|
||||
/test/root
|
||||
node_modules/ronn
|
||||
node_modules/tap
|
||||
node_modules/.bin
|
||||
/npmrc
|
||||
/release/
|
||||
|
||||
# don't need these in the npm package.
|
||||
html/*.png
|
||||
|
||||
# don't ignore .npmignore files
|
||||
# these are used in some tests.
|
||||
!.npmignore
|
||||
|
||||
/npm-*.tgz
|
||||
|
||||
*.pyc
|
||||
7
deps/npm/.tern-project
vendored
Normal file
7
deps/npm/.tern-project
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"libs": [
|
||||
],
|
||||
"plugins": {
|
||||
"node": {}
|
||||
}
|
||||
}
|
||||
92
deps/npm/AUTHORS
vendored
Normal file
92
deps/npm/AUTHORS
vendored
Normal file
@@ -0,0 +1,92 @@
|
||||
# Authors sorted by whether or not they're me
|
||||
Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)
|
||||
Steve Steiner <ssteinerX@gmail.com> (http://websaucesoftware.com/blog/)
|
||||
Mikeal Rogers <mikeal.rogers@gmail.com> (http://www.mikealrogers.com/)
|
||||
Aaron Blohowiak <aaron.blohowiak@gmail.com> (http://aaronblohowiak.com/)
|
||||
Martyn Smith <martyn@dollyfish.net.nz> (http://dollyfish.net.nz/)
|
||||
Mathias Pettersson <mape@mape.me> (http://mape.me/)
|
||||
Brian Hammond <brian@fictorial.com> (http://fictorial.com/)
|
||||
Charlie Robbins <charlie.robbins@gmail.com> (http://www.charlierobbins.com/)
|
||||
Francisco Treacy <francisco.treacy@gmail.com> (http://franciscotreacy.com/)
|
||||
Cliffano Subagio <cliffano@gmail.com> (http://blog.cliffano.com/)
|
||||
Christian Eager <christian.eager@nokia.com> (http://perpenduum.com)
|
||||
Dav Glass <davglass@gmail.com> (http://blog.davglass.com)
|
||||
Alex K. Wolfe <alexkwolfe@gmail.com>
|
||||
James Sanders <jimmyjazz14@gmail.com> (http://james-sanders.com/)
|
||||
Reid Burke <me@reidburke.com> (http://reidburke.com/)
|
||||
Arlo Breault <arlolra@gmail.com> (http://thoughtherder.com/)
|
||||
Timo Derstappen <teemow@gmail.com> (http://teemow.com)
|
||||
Bradley Meck <bradley.meck@gmail.com>
|
||||
Bart Teeuwisse <bart.teeuwisse@thecodemill.biz> (http://thecodemill.biz/)
|
||||
Ben Noordhuis <info@bnoordhuis.nl> (http://bnoordhuis.nl/)
|
||||
Tor Valamo <tor.valamo@gmail.com> (http://www.magnimedia.no/)
|
||||
Whyme.Lyu <5longluna@gmail.com> (http://whyme.kuantu.com/)
|
||||
Olivier Melcher <olivier.melcher@gmail.com>
|
||||
Tomaž Muraus <kami@k5-storitve.net> (http://www.tomaz-muraus.info)
|
||||
Evan Meagher <evan.meagher@gmail.com> (http://evanmeagher.net/)
|
||||
Orlando Vazquez <ovazquez@gmail.com> (http://2wycked.net/)
|
||||
George Miroshnykov <gmiroshnykov@lohika.com>
|
||||
Geoff Flarity (http://ca.linkedin.com/pub/geoff-flarity/a/536/43a)
|
||||
Pete Kruckenberg <pete@kruckenberg.com>
|
||||
Laurie Harper <laurie@holoweb.net> (http://laurie.holoweb.net/)
|
||||
Chris Wong <chris@chriswongstudio.com>
|
||||
Max Goodman <c@chromacode.com> (http://chromacode.com/)
|
||||
Scott Bronson <brons_github@rinspin.com>
|
||||
Federico Romero <federomero@gmail.com>
|
||||
Visnu Pitiyanuvath <visnupx@gmail.com> (http://visnup.com)
|
||||
Irakli Gozalishvili <rfobic@gmail.com> (http://jeditoolkit.com/)
|
||||
Mark Cahill <mark@tiemonster.info> (http://www.tiemonster.info/)
|
||||
Zearin <zearin@gonk.net>
|
||||
Iain Sproat <iainsproat@gmail.com>
|
||||
Trent Mick <trentm@gmail.com> (http://trentm.com/)
|
||||
Felix Geisendörfer <felix@debuggable.com> (http://www.debuggable.com/)
|
||||
Conny Brunnkvist <cbrunnkvist@gmail.com> (http://twitter.com/connyb)
|
||||
Will Elwood <w.elwood08@gmail.com> (https://github.com/welwood08)
|
||||
Oleg Efimov <efimovov@gmail.com> (http://sannis.ru)
|
||||
Martin Cooper <mfncooper@gmail.com>
|
||||
Jameson Little <t.jameson.little@gmail.com>
|
||||
cspotcode <cspotcode@gmail.com>
|
||||
Maciej Małecki <maciej.malecki@notimplemented.org>
|
||||
Stephen Sugden <glurgle@gmail.com>
|
||||
Gautham Pai <buzypi@gmail.com>
|
||||
David Trejo <david.daniel.trejo@gmail.com>
|
||||
Paul Vorbach <paul@vorb.de>
|
||||
George Ornbo <george@shapeshed.com>
|
||||
Tim Oxley <secoif@gmail.com>
|
||||
Tyler Green <tyler.green2@gmail.com>
|
||||
atomizer <danila.gerasimov@gmail.com>
|
||||
Rod Vagg <rod@vagg.org>
|
||||
Christian Howe <coderarity@gmail.com>
|
||||
Andrew Lunny <alunny@gmail.com>
|
||||
Henrik Hodne <dvyjones@binaryhex.com>
|
||||
Adam Blackburn <regality@gmail.com>
|
||||
Kris Windham <kriswindham@gmail.com>
|
||||
Jens Grunert <jens.grunert@gmail.com>
|
||||
Joost-Wim Boekesteijn <joost-wim@boekesteijn.nl>
|
||||
Dalmais Maxence <github@maxired.fr>
|
||||
Marcus Ekwall <marcus.ekwall@gmail.com>
|
||||
Aaron Stacy <aaron.r.stacy@gmail.com>
|
||||
Phillip Howell <phowell@cothm.org>
|
||||
Domenic Denicola <domenic@domenicdenicola.com>
|
||||
James Halliday <mail@substack.net>
|
||||
Jeremy Cantrell <jmcantrell@gmail.com>
|
||||
Ribettes <patlogan29@gmail.com>
|
||||
Einar Otto Stangvik <einaros@gmail.com>
|
||||
Don Park <donpark@docuverse.com>
|
||||
Kei Son <heyacct@gmail.com>
|
||||
Nicolas Morel <marsup@gmail.com>
|
||||
Mark Dube <markisdee@gmail.com>
|
||||
Nathan Rajlich <nathan@tootallnate.net>
|
||||
Maxim Bogushevich <boga1@mail.ru>
|
||||
Justin Beckwith <justbe@microsoft.com>
|
||||
Meaglin <Meaglin.wasabi@gmail.com>
|
||||
Ben Evans <ben@bensbit.co.uk>
|
||||
Nathan Zadoks <nathan@nathan7.eu>
|
||||
Brian White <mscdex@gmail.com>
|
||||
Jed Schmidt <tr@nslator.jp>
|
||||
Ian Livingstone <ianl@cs.dal.ca>
|
||||
Patrick Pfeiffer <patrick@buzzle.at>
|
||||
Paul Miller <paul@paulmillr.com>
|
||||
seebees <seebees@gmail.com>
|
||||
Carl Lange <carl@flax.ie>
|
||||
Jan Lehnardt <jan@apache.org>
|
||||
65
deps/npm/LICENSE
vendored
Normal file
65
deps/npm/LICENSE
vendored
Normal file
@@ -0,0 +1,65 @@
|
||||
Copyright (c) Isaac Z. Schlueter (the "Original Author")
|
||||
All rights reserved.
|
||||
|
||||
MIT +no-false-attribs License
|
||||
|
||||
Permission is hereby granted, free of charge, to any person
|
||||
obtaining a copy of this software and associated documentation
|
||||
files (the "Software"), to deal in the Software without
|
||||
restriction, including without limitation the rights to use,
|
||||
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following
|
||||
conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
Distributions of all or part of the Software intended to be used
|
||||
by the recipients as they would use the unmodified Software,
|
||||
containing modifications that substantially alter, remove, or
|
||||
disable functionality of the Software, outside of the documented
|
||||
configuration mechanisms provided by the Software, shall be
|
||||
modified such that the Original Author's bug reporting email
|
||||
addresses and urls are either replaced with the contact information
|
||||
of the parties responsible for the changes, or removed entirely.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
|
||||
Except where noted, this license applies to any and all software
|
||||
programs and associated documentation files created by the
|
||||
Original Author, when distributed with the Software.
|
||||
|
||||
"Node.js" and "node" trademark Joyent, Inc. npm is not officially
|
||||
part of the Node.js project, and is neither owned by nor
|
||||
officially affiliated with Joyent, Inc.
|
||||
|
||||
Packages published in the npm registry (other than the Software and
|
||||
its included dependencies) are not part of npm itself, are the sole
|
||||
property of their respective maintainers, and are not covered by
|
||||
this license.
|
||||
|
||||
"npm Logo" created by Mathias Pettersson and Brian Hammond,
|
||||
used with permission.
|
||||
|
||||
"Gubblebum Blocky" font
|
||||
Copyright (c) by Tjarda Koster, http://jelloween.deviantart.com
|
||||
included for use in the npm website and documentation,
|
||||
used with permission.
|
||||
|
||||
This program uses "request", Copyright (c) Mikeal Rogers,
|
||||
according to the terms of the Apache license.
|
||||
|
||||
This program uses "mkdirp", Copyright (c) James Halliday,
|
||||
according to the terms of the MIT/X11 license.
|
||||
|
||||
This program uses "opener", Copyright (c) Domenic Denicola,
|
||||
according to the terms of the DWTFPL2 license.
|
||||
138
deps/npm/Makefile
vendored
Normal file
138
deps/npm/Makefile
vendored
Normal file
@@ -0,0 +1,138 @@
|
||||
SHELL = bash
|
||||
|
||||
markdowns = $(shell find doc -name '*.md' | grep -v 'index') README.md
|
||||
|
||||
cli_mandocs = $(shell find doc/cli -name '*.md' \
|
||||
|sed 's|.md|.1|g' \
|
||||
|sed 's|doc/cli/|man/man1/|g' ) \
|
||||
man/man1/README.1 \
|
||||
man/man1/index.1
|
||||
|
||||
api_mandocs = $(shell find doc/api -name '*.md' \
|
||||
|sed 's|.md|.3|g' \
|
||||
|sed 's|doc/api/|man/man3/|g' )
|
||||
|
||||
cli_htmldocs = $(shell find doc/cli -name '*.md' \
|
||||
|grep -v 'index.md' \
|
||||
|sed 's|.md|.html|g' \
|
||||
|sed 's|doc/cli/|html/doc/|g' ) \
|
||||
html/doc/README.html \
|
||||
html/doc/index.html
|
||||
|
||||
api_htmldocs = $(shell find doc/api -name '*.md' \
|
||||
|sed 's|.md|.html|g' \
|
||||
|sed 's|doc/api/|html/api/|g' )
|
||||
|
||||
mandocs = $(api_mandocs) $(cli_mandocs)
|
||||
|
||||
htmldocs = $(api_htmldocs) $(cli_htmldocs)
|
||||
|
||||
all: doc
|
||||
|
||||
latest:
|
||||
@echo "Installing latest published npm"
|
||||
@echo "Use 'make install' or 'make link' to install the code"
|
||||
@echo "in this folder that you're looking at right now."
|
||||
node cli.js install -g -f npm
|
||||
|
||||
install: all
|
||||
node cli.js install -g -f
|
||||
|
||||
# backwards compat
|
||||
dev: install
|
||||
|
||||
link: uninstall
|
||||
node cli.js link -f
|
||||
|
||||
clean: doc-clean uninstall
|
||||
rm npmrc
|
||||
node cli.js cache clean
|
||||
|
||||
uninstall:
|
||||
node cli.js rm npm -g -f
|
||||
|
||||
doc: $(mandocs) $(htmldocs)
|
||||
|
||||
docclean: doc-clean
|
||||
doc-clean:
|
||||
rm -rf \
|
||||
node_modules/ronn \
|
||||
node_modules/.bin/ronn \
|
||||
.building_ronn \
|
||||
doc/cli/index.md \
|
||||
doc/api/index.md \
|
||||
$(api_mandocs) \
|
||||
$(cli_mandocs) \
|
||||
$(api_htmldocs) \
|
||||
$(cli_htmldocs) \
|
||||
&>/dev/null || true
|
||||
|
||||
# use `npm install ronn` for this to work.
|
||||
man/man1/README.1: README.md scripts/doc-build.sh package.json
|
||||
scripts/doc-build.sh $< $@
|
||||
|
||||
man/man1/%.1: doc/cli/%.md scripts/doc-build.sh package.json
|
||||
@[ -d man/man1 ] || mkdir -p man/man1
|
||||
scripts/doc-build.sh $< $@
|
||||
|
||||
man/man3/%.3: doc/api/%.md scripts/doc-build.sh package.json
|
||||
@[ -d man/man3 ] || mkdir -p man/man3
|
||||
scripts/doc-build.sh $< $@
|
||||
|
||||
html/doc/README.html: README.md html/dochead.html html/docfoot.html scripts/doc-build.sh package.json
|
||||
scripts/doc-build.sh $< $@
|
||||
|
||||
html/doc/%.html: doc/cli/%.md html/dochead.html html/docfoot.html scripts/doc-build.sh package.json
|
||||
scripts/doc-build.sh $< $@
|
||||
|
||||
html/api/%.html: doc/api/%.md html/dochead.html html/docfoot.html scripts/doc-build.sh package.json
|
||||
scripts/doc-build.sh $< $@
|
||||
|
||||
doc/cli/index.md: $(markdowns) scripts/index-build.js scripts/doc-build.sh package.json
|
||||
node scripts/index-build.js > $@
|
||||
|
||||
node_modules/.bin/ronn:
|
||||
node cli.js install ronn
|
||||
|
||||
doc: man
|
||||
|
||||
man: $(cli_docs) $(api_docs)
|
||||
|
||||
test:
|
||||
node cli.js test
|
||||
|
||||
publish: link doc
|
||||
@git push origin :v$(shell npm -v) || true
|
||||
@npm unpublish npm@$(shell npm -v) || true
|
||||
git clean -fd
|
||||
git push origin --tags &&\
|
||||
npm publish &&\
|
||||
npm tag npm@$(shell npm -v) $(shell npm -v | awk -F. '{print $$1 "." $$2}') &&\
|
||||
make doc-publish &&\
|
||||
make zip-publish
|
||||
|
||||
docpublish: doc-publish
|
||||
doc-publish: doc
|
||||
rsync -vazu --stats --no-implied-dirs --delete \
|
||||
html/doc/ \
|
||||
node@npmjs.org:/home/node/npm-www/doc
|
||||
rsync -vazu --stats --no-implied-dirs --delete \
|
||||
html/api/ \
|
||||
node@npmjs.org:/home/node/npm-www/api
|
||||
rsync -vazu --stats --no-implied-dirs --delete \
|
||||
html/static/webfonts/ \
|
||||
node@npmjs.org:/home/node/npm-www/static/webfonts
|
||||
rsync -vazu --stats --no-implied-dirs --delete \
|
||||
html/static/style.css \
|
||||
node@npmjs.org:/home/node/npm-www/static/
|
||||
|
||||
zip-publish: release
|
||||
scp release/* node@nodejs.org:dist/npm/
|
||||
|
||||
release:
|
||||
@bash scripts/release.sh
|
||||
|
||||
sandwich:
|
||||
@[ $$(whoami) = "root" ] && (echo "ok"; echo "ham" > sandwich) || echo "make it yourself" && exit 13
|
||||
|
||||
.PHONY: all latest install dev link doc clean uninstall test man doc-publish doc-clean docclean docpublish release zip-publish
|
||||
239
deps/npm/README.md
vendored
Normal file
239
deps/npm/README.md
vendored
Normal file
@@ -0,0 +1,239 @@
|
||||
npm(1) -- node package manager
|
||||
==============================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
This is just enough info to get you up and running.
|
||||
|
||||
Much more info available via `npm help` once it's installed.
|
||||
|
||||
## IMPORTANT
|
||||
|
||||
**You need node v0.8 or higher to run this program.**
|
||||
|
||||
To install an old **and unsupported** version of npm that works on node 0.3
|
||||
and prior, clone the git repo and dig through the old tags and branches.
|
||||
|
||||
## Super Easy Install
|
||||
|
||||
npm comes with node now.
|
||||
|
||||
### Windows Computers
|
||||
|
||||
Get the MSI. npm is in it.
|
||||
|
||||
### Apple Macintosh Computers
|
||||
|
||||
Get the pkg. npm is in it.
|
||||
|
||||
### Other Sorts of Unices
|
||||
|
||||
Run `make install`. npm will be installed with node.
|
||||
|
||||
If you want a more fancy pants install (a different version, customized
|
||||
paths, etc.) then read on.
|
||||
|
||||
## Fancy Install (Unix)
|
||||
|
||||
There's a pretty robust install script at
|
||||
<https://npmjs.org/install.sh>. You can download that and run it.
|
||||
|
||||
### Slightly Fancier
|
||||
|
||||
You can set any npm configuration params with that script:
|
||||
|
||||
npm_config_prefix=/some/path sh install.sh
|
||||
|
||||
Or, you can run it in uber-debuggery mode:
|
||||
|
||||
npm_debug=1 sh install.sh
|
||||
|
||||
### Even Fancier
|
||||
|
||||
Get the code with git. Use `make` to build the docs and do other stuff.
|
||||
If you plan on hacking on npm, `make link` is your friend.
|
||||
|
||||
If you've got the npm source code, you can also semi-permanently set
|
||||
arbitrary config keys using the `./configure --key=val ...`, and then
|
||||
run npm commands by doing `node cli.js <cmd> <args>`. (This is helpful
|
||||
for testing, or running stuff without actually installing npm itself.)
|
||||
|
||||
## Fancy Windows Install
|
||||
|
||||
You can download a zip file from <https://npmjs.org/dist/>, and unpack it
|
||||
in the same folder where node.exe lives.
|
||||
|
||||
If that's not fancy enough for you, then you can fetch the code with
|
||||
git, and mess with it directly.
|
||||
|
||||
## Installing on Cygwin
|
||||
|
||||
No.
|
||||
|
||||
## Permissions when Using npm to Install Other Stuff
|
||||
|
||||
**tl;dr**
|
||||
|
||||
* Use `sudo` for greater safety. Or don't, if you prefer not to.
|
||||
* npm will downgrade permissions if it's root before running any build
|
||||
scripts that package authors specified.
|
||||
|
||||
### More details...
|
||||
|
||||
As of version 0.3, it is recommended to run npm as root.
|
||||
This allows npm to change the user identifier to the `nobody` user prior
|
||||
to running any package build or test commands.
|
||||
|
||||
If you are not the root user, or if you are on a platform that does not
|
||||
support uid switching, then npm will not attempt to change the userid.
|
||||
|
||||
If you would like to ensure that npm **always** runs scripts as the
|
||||
"nobody" user, and have it fail if it cannot downgrade permissions, then
|
||||
set the following configuration param:
|
||||
|
||||
npm config set unsafe-perm false
|
||||
|
||||
This will prevent running in unsafe mode, even as non-root users.
|
||||
|
||||
## Uninstalling
|
||||
|
||||
So sad to see you go.
|
||||
|
||||
sudo npm uninstall npm -g
|
||||
|
||||
Or, if that fails,
|
||||
|
||||
sudo make uninstall
|
||||
|
||||
## More Severe Uninstalling
|
||||
|
||||
Usually, the above instructions are sufficient. That will remove
|
||||
npm, but leave behind anything you've installed.
|
||||
|
||||
If you would like to remove all the packages that you have installed,
|
||||
then you can use the `npm ls` command to find them, and then `npm rm` to
|
||||
remove them.
|
||||
|
||||
To remove cruft left behind by npm 0.x, you can use the included
|
||||
`clean-old.sh` script file. You can run it conveniently like this:
|
||||
|
||||
npm explore npm -g -- sh scripts/clean-old.sh
|
||||
|
||||
npm uses two configuration files, one for per-user configs, and another
|
||||
for global (every-user) configs. You can view them by doing:
|
||||
|
||||
npm config get userconfig # defaults to ~/.npmrc
|
||||
npm config get globalconfig # defaults to /usr/local/etc/npmrc
|
||||
|
||||
Uninstalling npm does not remove configuration files by default. You
|
||||
must remove them yourself manually if you want them gone. Note that
|
||||
this means that future npm installs will not remember the settings that
|
||||
you have chosen.
|
||||
|
||||
## Using npm Programmatically
|
||||
|
||||
If you would like to use npm programmatically, you can do that.
|
||||
It's not very well documented, but it *is* rather simple.
|
||||
|
||||
Most of the time, unless you actually want to do all the things that
|
||||
npm does, you should try using one of npm's dependencies rather than
|
||||
using npm itself, if possible.
|
||||
|
||||
Eventually, npm will be just a thin cli wrapper around the modules
|
||||
that it depends on, but for now, there are some things that you must
|
||||
use npm itself to do.
|
||||
|
||||
var npm = require("npm")
|
||||
npm.load(myConfigObject, function (er) {
|
||||
if (er) return handlError(er)
|
||||
npm.commands.install(["some", "args"], function (er, data) {
|
||||
if (er) return commandFailed(er)
|
||||
// command succeeded, and data might have some info
|
||||
})
|
||||
npm.on("log", function (message) { .... })
|
||||
})
|
||||
|
||||
The `load` function takes an object hash of the command-line configs.
|
||||
The various `npm.commands.<cmd>` functions take an **array** of
|
||||
positional argument **strings**. The last argument to any
|
||||
`npm.commands.<cmd>` function is a callback. Some commands take other
|
||||
optional arguments. Read the source.
|
||||
|
||||
You cannot set configs individually for any single npm function at this
|
||||
time. Since `npm` is a singleton, any call to `npm.config.set` will
|
||||
change the value for *all* npm commands in that process.
|
||||
|
||||
See `./bin/npm-cli.js` for an example of pulling config values off of the
|
||||
command line arguments using nopt. You may also want to check out `npm
|
||||
help config` to learn about all the options you can set there.
|
||||
|
||||
## More Docs
|
||||
|
||||
Check out the [docs](https://npmjs.org/doc/),
|
||||
especially the [faq](https://npmjs.org/doc/faq.html).
|
||||
|
||||
You can use the `npm help` command to read any of them.
|
||||
|
||||
If you're a developer, and you want to use npm to publish your program,
|
||||
you should [read this](https://npmjs.org/doc/developers.html)
|
||||
|
||||
## Legal Stuff
|
||||
|
||||
"npm" and "the npm registry" are owned by Isaac Z. Schlueter. All
|
||||
rights not explicitly granted in the MIT license are reserved. See the
|
||||
included LICENSE file for more details.
|
||||
|
||||
"Node.js" and "node" are trademarks owned by Joyent, Inc. npm is not
|
||||
officially part of the Node.js project, and is neither owned by nor
|
||||
officially affiliated with Joyent, Inc.
|
||||
|
||||
The packages in the npm registry are not part of npm itself, and are the
|
||||
sole property of their respective maintainers. While every effort is
|
||||
made to ensure accountability, there is absolutely no guarantee,
|
||||
warrantee, or assertion made as to the quality, fitness for a specific
|
||||
purpose, or lack of malice in any given npm package. Modules
|
||||
published on the npm registry are not affiliated with or endorsed by
|
||||
Joyent, Inc., Isaac Z. Schlueter, Ryan Dahl, or the Node.js project.
|
||||
|
||||
If you have a complaint about a package in the npm registry, and cannot
|
||||
resolve it with the package owner, please express your concerns to
|
||||
Isaac Z. Schlueter at <i@izs.me>.
|
||||
|
||||
### In plain english
|
||||
|
||||
This is mine; not my employer's, not Node's, not Joyent's, not Ryan
|
||||
Dahl's.
|
||||
|
||||
If you publish something, it's yours, and you are solely accountable
|
||||
for it. Not me, not Node, not Joyent, not Ryan Dahl.
|
||||
|
||||
If other people publish something, it's theirs. Not mine, not Node's,
|
||||
not Joyent's, not Ryan Dahl's.
|
||||
|
||||
Yes, you can publish something evil. It will be removed promptly if
|
||||
reported, and we'll lose respect for you. But there is no vetting
|
||||
process for published modules.
|
||||
|
||||
If this concerns you, inspect the source before using packages.
|
||||
|
||||
## BUGS
|
||||
|
||||
When you find issues, please report them:
|
||||
|
||||
* web:
|
||||
<https://github.com/isaacs/npm/issues>
|
||||
* email:
|
||||
<npm-@googlegroups.com>
|
||||
|
||||
Be sure to include *all* of the output from the npm command that didn't work
|
||||
as expected. The `npm-debug.log` file is also helpful to provide.
|
||||
|
||||
You can also look for isaacs in #node.js on irc://irc.freenode.net. He
|
||||
will no doubt tell you to put the output in a gist or email.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
* npm(1)
|
||||
* npm-faq(1)
|
||||
* npm-help(1)
|
||||
* npm-index(1)
|
||||
2
deps/npm/bin/node-gyp-bin/node-gyp
vendored
Executable file
2
deps/npm/bin/node-gyp-bin/node-gyp
vendored
Executable file
@@ -0,0 +1,2 @@
|
||||
#!/usr/bin/env sh
|
||||
node "`dirname "$0"`/../../node_modules/node-gyp/bin/node-gyp.js" "$@"
|
||||
1
deps/npm/bin/node-gyp-bin/node-gyp.cmd
vendored
Executable file
1
deps/npm/bin/node-gyp-bin/node-gyp.cmd
vendored
Executable file
@@ -0,0 +1 @@
|
||||
node "%~dp0\..\..\node_modules\node-gyp\bin\node-gyp.js" %*
|
||||
13
deps/npm/bin/npm
vendored
Executable file
13
deps/npm/bin/npm
vendored
Executable file
@@ -0,0 +1,13 @@
|
||||
#!/bin/sh
|
||||
|
||||
basedir=`dirname "$0"`
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node.exe" ]; then
|
||||
"$basedir/node.exe" "$basedir/node_modules/npm/bin/npm-cli.js" "$@"
|
||||
else
|
||||
node "$basedir/node_modules/npm/bin/npm-cli.js" "$@"
|
||||
fi
|
||||
86
deps/npm/bin/npm-cli.js
vendored
Executable file
86
deps/npm/bin/npm-cli.js
vendored
Executable file
@@ -0,0 +1,86 @@
|
||||
#!/usr/bin/env node
|
||||
;(function () { // wrapper in case we're in module_context mode
|
||||
|
||||
// windows: running "npm blah" in this folder will invoke WSH, not node.
|
||||
if (typeof WScript !== "undefined") {
|
||||
WScript.echo("npm does not work when run\n"
|
||||
+"with the Windows Scripting Host\n\n"
|
||||
+"'cd' to a different directory,\n"
|
||||
+"or type 'npm.cmd <args>',\n"
|
||||
+"or type 'node npm <args>'.")
|
||||
WScript.quit(1)
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
process.title = "npm"
|
||||
|
||||
var log = require("npmlog")
|
||||
log.pause() // will be unpaused when config is loaded.
|
||||
log.info("it worked if it ends with", "ok")
|
||||
|
||||
var fs = require("graceful-fs")
|
||||
, path = require("path")
|
||||
, npm = require("../lib/npm.js")
|
||||
, npmconf = require("npmconf")
|
||||
, errorHandler = require("../lib/utils/error-handler.js")
|
||||
|
||||
, configDefs = npmconf.defs
|
||||
, shorthands = configDefs.shorthands
|
||||
, types = configDefs.types
|
||||
, nopt = require("nopt")
|
||||
|
||||
// if npm is called as "npmg" or "npm_g", then
|
||||
// run in global mode.
|
||||
if (path.basename(process.argv[1]).slice(-1) === "g") {
|
||||
process.argv.splice(1, 1, "npm", "-g")
|
||||
}
|
||||
|
||||
log.verbose("cli", process.argv)
|
||||
|
||||
var conf = nopt(types, shorthands)
|
||||
npm.argv = conf.argv.remain
|
||||
if (npm.deref(npm.argv[0])) npm.command = npm.argv.shift()
|
||||
else conf.usage = true
|
||||
|
||||
|
||||
if (conf.version) {
|
||||
console.log(npm.version)
|
||||
return
|
||||
}
|
||||
|
||||
if (conf.versions) {
|
||||
npm.command = "version"
|
||||
conf.usage = false
|
||||
npm.argv = []
|
||||
}
|
||||
|
||||
log.info("using", "npm@%s", npm.version)
|
||||
log.info("using", "node@%s", process.version)
|
||||
|
||||
// make sure that this version of node works with this version of npm.
|
||||
var semver = require("semver")
|
||||
, nodeVer = process.version
|
||||
, reqVer = npm.nodeVersionRequired
|
||||
if (reqVer && !semver.satisfies(nodeVer, reqVer)) {
|
||||
return errorHandler(new Error(
|
||||
"npm doesn't work with node " + nodeVer
|
||||
+ "\nRequired: node@" + reqVer), true)
|
||||
}
|
||||
|
||||
process.on("uncaughtException", errorHandler)
|
||||
|
||||
if (conf.usage && npm.command !== "help") {
|
||||
npm.argv.unshift(npm.command)
|
||||
npm.command = "help"
|
||||
}
|
||||
|
||||
// now actually fire up npm and run the command.
|
||||
// this is how to use npm programmatically:
|
||||
conf._exit = true
|
||||
npm.load(conf, function (er) {
|
||||
if (er) return errorHandler(er)
|
||||
npm.commands[npm.command](npm.argv, errorHandler)
|
||||
})
|
||||
|
||||
})()
|
||||
6
deps/npm/bin/npm.cmd
vendored
Normal file
6
deps/npm/bin/npm.cmd
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
:: Created by npm, please don't edit manually.
|
||||
@IF EXIST "%~dp0\node.exe" (
|
||||
"%~dp0\node.exe" "%~dp0\.\node_modules\npm\bin\npm-cli.js" %*
|
||||
) ELSE (
|
||||
node "%~dp0\.\node_modules\npm\bin\npm-cli.js" %*
|
||||
)
|
||||
22
deps/npm/bin/read-package-json.js
vendored
Executable file
22
deps/npm/bin/read-package-json.js
vendored
Executable file
@@ -0,0 +1,22 @@
|
||||
var argv = process.argv
|
||||
if (argv.length < 3) {
|
||||
console.error("Usage: read-package.json <file> [<fields> ...]")
|
||||
process.exit(1)
|
||||
}
|
||||
|
||||
var fs = require("fs")
|
||||
, file = argv[2]
|
||||
, readJson = require("read-package-json")
|
||||
|
||||
readJson(file, function (er, data) {
|
||||
if (er) throw er
|
||||
if (argv.length === 3) console.log(data)
|
||||
else argv.slice(3).forEach(function (field) {
|
||||
field = field.split(".")
|
||||
var val = data
|
||||
field.forEach(function (f) {
|
||||
val = val[f]
|
||||
})
|
||||
console.log(val)
|
||||
})
|
||||
})
|
||||
2
deps/npm/cli.js
vendored
Executable file
2
deps/npm/cli.js
vendored
Executable file
@@ -0,0 +1,2 @@
|
||||
#!/usr/bin/env node
|
||||
require("./bin/npm-cli.js")
|
||||
33
deps/npm/configure
vendored
Executable file
33
deps/npm/configure
vendored
Executable file
@@ -0,0 +1,33 @@
|
||||
#!/bin/bash
|
||||
|
||||
# set configurations that will be "sticky" on this system,
|
||||
# surviving npm self-updates.
|
||||
|
||||
CONFIGS=()
|
||||
i=0
|
||||
|
||||
# get the location of this file.
|
||||
unset CDPATH
|
||||
CONFFILE=$(cd $(dirname "$0"); pwd -P)/npmrc
|
||||
|
||||
while [ $# -gt 0 ]; do
|
||||
conf="$1"
|
||||
case $conf in
|
||||
--help)
|
||||
echo "./configure --param=value ..."
|
||||
exit 0
|
||||
;;
|
||||
--*)
|
||||
CONFIGS[$i]="${conf:2}"
|
||||
;;
|
||||
*)
|
||||
CONFIGS[$i]="$conf"
|
||||
;;
|
||||
esac
|
||||
let i++
|
||||
shift
|
||||
done
|
||||
|
||||
for c in "${CONFIGS[@]}"; do
|
||||
echo "$c" >> "$CONFFILE"
|
||||
done
|
||||
13
deps/npm/doc/api/bin.md
vendored
Normal file
13
deps/npm/doc/api/bin.md
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
npm-bin(3) -- Display npm bin folder
|
||||
====================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands.bin(args, cb)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
Print the folder where npm will install executables.
|
||||
|
||||
This function should not be used programmatically. Instead, just refer
|
||||
to the `npm.bin` member.
|
||||
19
deps/npm/doc/api/bugs.md
vendored
Normal file
19
deps/npm/doc/api/bugs.md
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
npm-bugs(3) -- Bugs for a package in a web browser maybe
|
||||
========================================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands.bugs(package, callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
This command tries to guess at the likely location of a package's
|
||||
bug tracker URL, and then tries to open it using the `--browser`
|
||||
config param.
|
||||
|
||||
Like other commands, the first parameter is an array. This command only
|
||||
uses the first element, which is expected to be a package name with an
|
||||
optional version number.
|
||||
|
||||
This command will launch a browser, so this command may not be the most
|
||||
friendly for programmatic use.
|
||||
22
deps/npm/doc/api/commands.md
vendored
Normal file
22
deps/npm/doc/api/commands.md
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
npm-commands(3) -- npm commands
|
||||
===============================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands[<command>](args, callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
npm comes with a full set of commands, and each of the commands takes a
|
||||
similar set of arguments.
|
||||
|
||||
In general, all commands on the command object take an **array** of positional
|
||||
argument **strings**. The last argument to any function is a callback. Some
|
||||
commands are special and take other optional arguments.
|
||||
|
||||
All commands have their own man page. See `man npm-<command>` for command-line
|
||||
usage, or `man 3 npm-<command>` for programmatic usage.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
* npm-index(1)
|
||||
45
deps/npm/doc/api/config.md
vendored
Normal file
45
deps/npm/doc/api/config.md
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
npm-config(3) -- Manage the npm configuration files
|
||||
===================================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands.config(args, callback)
|
||||
var val = npm.config.get(key)
|
||||
npm.config.set(key, val)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
This function acts much the same way as the command-line version. The first
|
||||
element in the array tells config what to do. Possible values are:
|
||||
|
||||
* `set`
|
||||
|
||||
Sets a config parameter. The second element in `args` is interpreted as the
|
||||
key, and the third element is interpreted as the value.
|
||||
|
||||
* `get`
|
||||
|
||||
Gets the value of a config parameter. The second element in `args` is the
|
||||
key to get the value of.
|
||||
|
||||
* `delete` (`rm` or `del`)
|
||||
|
||||
Deletes a parameter from the config. The second element in `args` is the
|
||||
key to delete.
|
||||
|
||||
* `list` (`ls`)
|
||||
|
||||
Show all configs that aren't secret. No parameters necessary.
|
||||
|
||||
* `edit`:
|
||||
|
||||
Opens the config file in the default editor. This command isn't very useful
|
||||
programmatically, but it is made available.
|
||||
|
||||
To programmatically access npm configuration settings, or set them for
|
||||
the duration of a program, use the `npm.config.set` and `npm.config.get`
|
||||
functions instead.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
* npm(3)
|
||||
34
deps/npm/doc/api/deprecate.md
vendored
Normal file
34
deps/npm/doc/api/deprecate.md
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
npm-deprecate(3) -- Deprecate a version of a package
|
||||
====================================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands.deprecate(args, callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
This command will update the npm registry entry for a package, providing
|
||||
a deprecation warning to all who attempt to install it.
|
||||
|
||||
The 'args' parameter must have exactly two elements:
|
||||
|
||||
* `package[@version]`
|
||||
|
||||
The `version` portion is optional, and may be either a range, or a
|
||||
specific version, or a tag.
|
||||
|
||||
* `message`
|
||||
|
||||
The warning message that will be printed whenever a user attempts to
|
||||
install the package.
|
||||
|
||||
Note that you must be the package owner to deprecate something. See the
|
||||
`owner` and `adduser` help topics.
|
||||
|
||||
To un-deprecate a package, specify an empty string (`""`) for the `message` argument.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
* npm-publish(3)
|
||||
* npm-unpublish(3)
|
||||
* npm-registry(1)
|
||||
19
deps/npm/doc/api/docs.md
vendored
Normal file
19
deps/npm/doc/api/docs.md
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
npm-docs(3) -- Docs for a package in a web browser maybe
|
||||
========================================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands.docs(package, callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
This command tries to guess at the likely location of a package's
|
||||
documentation URL, and then tries to open it using the `--browser`
|
||||
config param.
|
||||
|
||||
Like other commands, the first parameter is an array. This command only
|
||||
uses the first element, which is expected to be a package name with an
|
||||
optional version number.
|
||||
|
||||
This command will launch a browser, so this command may not be the most
|
||||
friendly for programmatic use.
|
||||
24
deps/npm/doc/api/edit.md
vendored
Normal file
24
deps/npm/doc/api/edit.md
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
npm-edit(3) -- Edit an installed package
|
||||
========================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands.edit(package, callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
Opens the package folder in the default editor (or whatever you've
|
||||
configured as the npm `editor` config -- see `npm help config`.)
|
||||
|
||||
After it has been edited, the package is rebuilt so as to pick up any
|
||||
changes in compiled packages.
|
||||
|
||||
For instance, you can do `npm install connect` to install connect
|
||||
into your package, and then `npm.commands.edit(["connect"], callback)`
|
||||
to make a few changes to your locally installed copy.
|
||||
|
||||
The first parameter is a string array with a single element, the package
|
||||
to open. The package can optionally have a version number attached.
|
||||
|
||||
Since this command opens an editor in a new process, be careful about where
|
||||
and how this is used.
|
||||
18
deps/npm/doc/api/explore.md
vendored
Normal file
18
deps/npm/doc/api/explore.md
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
npm-explore(3) -- Browse an installed package
|
||||
=============================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands.explore(args, callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
Spawn a subshell in the directory of the installed package specified.
|
||||
|
||||
If a command is specified, then it is run in the subshell, which then
|
||||
immediately terminates.
|
||||
|
||||
Note that the package is *not* automatically rebuilt afterwards, so be
|
||||
sure to use `npm rebuild <pkg>` if you make any changes.
|
||||
|
||||
The first element in the 'args' parameter must be a package name. After that is the optional command, which can be any number of strings. All of the strings will be combined into one, space-delimited command.
|
||||
30
deps/npm/doc/api/help-search.md
vendored
Normal file
30
deps/npm/doc/api/help-search.md
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
npm-help-search(3) -- Search the help pages
|
||||
===========================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands.helpSearch(args, [silent,] callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
This command is rarely useful, but it exists in the rare case that it is.
|
||||
|
||||
This command takes an array of search terms and returns the help pages that
|
||||
match in order of best match.
|
||||
|
||||
If there is only one match, then npm displays that help section. If there
|
||||
are multiple results, the results are printed to the screen formatted and the
|
||||
array of results is returned. Each result is an object with these properties:
|
||||
|
||||
* hits:
|
||||
A map of args to number of hits on that arg. For example, {"npm": 3}
|
||||
* found:
|
||||
Total number of unique args that matched.
|
||||
* totalHits:
|
||||
Total number of hits.
|
||||
* lines:
|
||||
An array of all matching lines (and some adjacent lines).
|
||||
* file:
|
||||
Name of the file that matched
|
||||
|
||||
The silent parameter is not neccessary not used, but it may in the future.
|
||||
29
deps/npm/doc/api/init.md
vendored
Normal file
29
deps/npm/doc/api/init.md
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
npm init(3) -- Interactively create a package.json file
|
||||
=======================================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands.init(args, callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
This will ask you a bunch of questions, and then write a package.json for you.
|
||||
|
||||
It attempts to make reasonable guesses about what you want things to be set to,
|
||||
and then writes a package.json file with the options you've selected.
|
||||
|
||||
If you already have a package.json file, it'll read that first, and default to
|
||||
the options in there.
|
||||
|
||||
It is strictly additive, so it does not delete options from your package.json
|
||||
without a really good reason to do so.
|
||||
|
||||
Since this function expects to be run on the command-line, it doesn't work very
|
||||
well as a programmatically. The best option is to roll your own, and since
|
||||
JavaScript makes it stupid simple to output formatted JSON, that is the
|
||||
preferred method. If you're sure you want to handle command-line prompting,
|
||||
then go ahead and use this programmatically.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
npm-json(1)
|
||||
19
deps/npm/doc/api/install.md
vendored
Normal file
19
deps/npm/doc/api/install.md
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
npm-install(3) -- install a package programmatically
|
||||
====================================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands.install([where,] packages, callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
This acts much the same ways as installing on the command-line.
|
||||
|
||||
The 'where' parameter is optional and only used internally, and it specifies
|
||||
where the packages should be installed to.
|
||||
|
||||
The 'packages' parameter is an array of strings. Each element in the array is
|
||||
the name of a package to be installed.
|
||||
|
||||
Finally, 'callback' is a function that will be called when all packages have been
|
||||
installed or when an error has been encountered.
|
||||
33
deps/npm/doc/api/link.md
vendored
Normal file
33
deps/npm/doc/api/link.md
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
npm-link(3) -- Symlink a package folder
|
||||
=======================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.command.link(callback)
|
||||
npm.command.link(packages, callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
Package linking is a two-step process.
|
||||
|
||||
Without parameters, link will create a globally-installed
|
||||
symbolic link from `prefix/package-name` to the current folder.
|
||||
|
||||
With a parameters, link will create a symlink from the local `node_modules`
|
||||
folder to the global symlink.
|
||||
|
||||
When creating tarballs for `npm publish`, the linked packages are
|
||||
"snapshotted" to their current state by resolving the symbolic links.
|
||||
|
||||
This is
|
||||
handy for installing your own stuff, so that you can work on it and test it
|
||||
iteratively without having to continually rebuild.
|
||||
|
||||
For example:
|
||||
|
||||
npm.commands.link(cb) # creates global link from the cwd
|
||||
# (say redis package)
|
||||
npm.commands.link('redis', cb) # link-install the package
|
||||
|
||||
Now, any changes to the redis package will be reflected in
|
||||
the package in the current working directory
|
||||
26
deps/npm/doc/api/load.md
vendored
Normal file
26
deps/npm/doc/api/load.md
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
npm-load(3) -- Load config settings
|
||||
===================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.load(conf, cb)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
npm.load() must be called before any other function call. Both parameters are
|
||||
optional, but the second is recommended.
|
||||
|
||||
The first parameter is an object hash of command-line config params, and the
|
||||
second parameter is a callback that will be called when npm is loaded and
|
||||
ready to serve.
|
||||
|
||||
The first parameter should follow a similar structure as the package.json
|
||||
config object.
|
||||
|
||||
For example, to emulate the --dev flag, pass an object that looks like this:
|
||||
|
||||
{
|
||||
"dev": true
|
||||
}
|
||||
|
||||
For a list of all the available command-line configs, see `npm help config`
|
||||
56
deps/npm/doc/api/ls.md
vendored
Normal file
56
deps/npm/doc/api/ls.md
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
npm-ls(3) -- List installed packages
|
||||
======================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands.ls(args, [silent,] callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
This command will print to stdout all the versions of packages that are
|
||||
installed, as well as their dependencies, in a tree-structure. It will also
|
||||
return that data using the callback.
|
||||
|
||||
This command does not take any arguments, but args must be defined.
|
||||
Beyond that, if any arguments are passed in, npm will politely warn that it
|
||||
does not take positional arguments, though you may set config flags
|
||||
like with any other command, such as `global` to list global packages.
|
||||
|
||||
It will print out extraneous, missing, and invalid packages.
|
||||
|
||||
If the silent parameter is set to true, nothing will be output to the screen,
|
||||
but the data will still be returned.
|
||||
|
||||
Callback is provided an error if one occurred, the full data about which
|
||||
packages are installed and which dependencies they will receive, and a
|
||||
"lite" data object which just shows which versions are installed where.
|
||||
Note that the full data object is a circular structure, so care must be
|
||||
taken if it is serialized to JSON.
|
||||
|
||||
## CONFIGURATION
|
||||
|
||||
### long
|
||||
|
||||
* Default: false
|
||||
* Type: Boolean
|
||||
|
||||
Show extended information.
|
||||
|
||||
### parseable
|
||||
|
||||
* Default: false
|
||||
* Type: Boolean
|
||||
|
||||
Show parseable output instead of tree view.
|
||||
|
||||
### global
|
||||
|
||||
* Default: false
|
||||
* Type: Boolean
|
||||
|
||||
List packages in the global install prefix instead of in the current
|
||||
project.
|
||||
|
||||
Note, if parseable is set or long isn't set, then duplicates will be trimmed.
|
||||
This means that if a submodule a same dependency as a parent module, then the
|
||||
dependency will only be output once.
|
||||
116
deps/npm/doc/api/npm.md
vendored
Normal file
116
deps/npm/doc/api/npm.md
vendored
Normal file
@@ -0,0 +1,116 @@
|
||||
npm(3) -- node package manager
|
||||
==============================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
var npm = require("npm")
|
||||
npm.load([configObject,] function (er, npm) {
|
||||
// use the npm object, now that it's loaded.
|
||||
|
||||
npm.config.set(key, val)
|
||||
val = npm.config.get(key)
|
||||
|
||||
console.log("prefix = %s", npm.prefix)
|
||||
|
||||
npm.commands.install(["package"], cb)
|
||||
})
|
||||
|
||||
## VERSION
|
||||
|
||||
@VERSION@
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
This is the API documentation for npm.
|
||||
To find documentation of the command line
|
||||
client, see `npm(1)`.
|
||||
|
||||
Prior to using npm's commands, `npm.load()` must be called.
|
||||
If you provide `configObject` as an object hash of top-level
|
||||
configs, they override the values stored in the various config
|
||||
locations. In the npm command line client, this set of configs
|
||||
is parsed from the command line options. Additional configuration
|
||||
params are loaded from two configuration files. See `npm-config(1)`
|
||||
for more information.
|
||||
|
||||
After that, each of the functions are accessible in the
|
||||
commands object: `npm.commands.<cmd>`. See `npm-index(1)` for a list of
|
||||
all possible commands.
|
||||
|
||||
All commands on the command object take an **array** of positional argument
|
||||
**strings**. The last argument to any function is a callback. Some
|
||||
commands take other optional arguments.
|
||||
|
||||
Configs cannot currently be set on a per function basis, as each call to
|
||||
npm.config.set will change the value for *all* npm commands in that process.
|
||||
|
||||
To find API documentation for a specific command, run the `npm apihelp`
|
||||
command.
|
||||
|
||||
## METHODS AND PROPERTIES
|
||||
|
||||
* `npm.load(configs, cb)`
|
||||
|
||||
Load the configuration params, and call the `cb` function once the
|
||||
globalconfig and userconfig files have been loaded as well, or on
|
||||
nextTick if they've already been loaded.
|
||||
|
||||
* `npm.config`
|
||||
|
||||
An object for accessing npm configuration parameters.
|
||||
|
||||
* `npm.config.get(key)`
|
||||
* `npm.config.set(key, val)`
|
||||
* `npm.config.del(key)`
|
||||
|
||||
* `npm.dir` or `npm.root`
|
||||
|
||||
The `node_modules` directory where npm will operate.
|
||||
|
||||
* `npm.prefix`
|
||||
|
||||
The prefix where npm is operating. (Most often the current working
|
||||
directory.)
|
||||
|
||||
* `npm.cache`
|
||||
|
||||
The place where npm keeps JSON and tarballs it fetches from the
|
||||
registry (or uploads to the registry).
|
||||
|
||||
* `npm.tmp`
|
||||
|
||||
npm's temporary working directory.
|
||||
|
||||
* `npm.deref`
|
||||
|
||||
Get the "real" name for a command that has either an alias or
|
||||
abbreviation.
|
||||
|
||||
## MAGIC
|
||||
|
||||
For each of the methods in the `npm.commands` hash, a method is added to
|
||||
the npm object, which takes a set of positional string arguments rather
|
||||
than an array and a callback.
|
||||
|
||||
If the last argument is a callback, then it will use the supplied
|
||||
callback. However, if no callback is provided, then it will print out
|
||||
the error or results.
|
||||
|
||||
For example, this would work in a node repl:
|
||||
|
||||
> npm = require("npm")
|
||||
> npm.load() // wait a sec...
|
||||
> npm.install("dnode", "express")
|
||||
|
||||
Note that that *won't* work in a node program, since the `install`
|
||||
method will get called before the configuration load is completed.
|
||||
|
||||
## ABBREVS
|
||||
|
||||
In order to support `npm ins foo` instead of `npm install foo`, the
|
||||
`npm.commands` object has a set of abbreviations as well as the full
|
||||
method names. Use the `npm.deref` method to find the real name.
|
||||
|
||||
For example:
|
||||
|
||||
var cmd = npm.deref("unp") // cmd === "unpublish"
|
||||
13
deps/npm/doc/api/outdated.md
vendored
Normal file
13
deps/npm/doc/api/outdated.md
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
npm-outdated(3) -- Check for outdated packages
|
||||
==============================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands.outdated([packages,] callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
This command will check the registry to see if the specified packages are
|
||||
currently outdated.
|
||||
|
||||
If the 'packages' parameter is left out, npm will check all packages.
|
||||
31
deps/npm/doc/api/owner.md
vendored
Normal file
31
deps/npm/doc/api/owner.md
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
npm-owner(3) -- Manage package owners
|
||||
=====================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands.owner(args, callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
The first element of the 'args' parameter defines what to do, and the subsequent
|
||||
elements depend on the action. Possible values for the action are (order of
|
||||
parameters are given in parenthesis):
|
||||
|
||||
* ls (package):
|
||||
List all the users who have access to modify a package and push new versions.
|
||||
Handy when you need to know who to bug for help.
|
||||
* add (user, package):
|
||||
Add a new user as a maintainer of a package. This user is enabled to modify
|
||||
metadata, publish new versions, and add other owners.
|
||||
* rm (user, package):
|
||||
Remove a user from the package owner list. This immediately revokes their
|
||||
privileges.
|
||||
|
||||
Note that there is only one level of access. Either you can modify a package,
|
||||
or you can't. Future versions may contain more fine-grained access levels, but
|
||||
that is not implemented at this time.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
* npm-publish(3)
|
||||
* npm-registry(1)
|
||||
19
deps/npm/doc/api/pack.md
vendored
Normal file
19
deps/npm/doc/api/pack.md
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
npm-pack(3) -- Create a tarball from a package
|
||||
==============================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands.pack([packages,] callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
For anything that's installable (that is, a package folder, tarball,
|
||||
tarball url, name@tag, name@version, or name), this command will fetch
|
||||
it to the cache, and then copy the tarball to the current working
|
||||
directory as `<name>-<version>.tgz`, and then write the filenames out to
|
||||
stdout.
|
||||
|
||||
If the same package is specified multiple times, then the file will be
|
||||
overwritten the second time.
|
||||
|
||||
If no arguments are supplied, then npm packs the current package folder.
|
||||
15
deps/npm/doc/api/prefix.md
vendored
Normal file
15
deps/npm/doc/api/prefix.md
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
npm-prefix(3) -- Display prefix
|
||||
===============================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands.prefix(args, callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
Print the prefix to standard out.
|
||||
|
||||
'args' is never used and callback is never called with data.
|
||||
'args' must be present or things will break.
|
||||
|
||||
This function is not useful programmatically
|
||||
17
deps/npm/doc/api/prune.md
vendored
Normal file
17
deps/npm/doc/api/prune.md
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
npm-prune(3) -- Remove extraneous packages
|
||||
==========================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands.prune([packages,] callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
This command removes "extraneous" packages.
|
||||
|
||||
The first parameter is optional, and it specifies packages to be removed.
|
||||
|
||||
No packages are specified, then all packages will be checked.
|
||||
|
||||
Extraneous packages are packages that are not listed on the parent
|
||||
package's dependencies list.
|
||||
30
deps/npm/doc/api/publish.md
vendored
Normal file
30
deps/npm/doc/api/publish.md
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
npm-publish(3) -- Publish a package
|
||||
===================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands.publish([packages,] callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
Publishes a package to the registry so that it can be installed by name.
|
||||
Possible values in the 'packages' array are:
|
||||
|
||||
* `<folder>`:
|
||||
A folder containing a package.json file
|
||||
|
||||
* `<tarball>`:
|
||||
A url or file path to a gzipped tar archive containing a single folder
|
||||
with a package.json file inside.
|
||||
|
||||
If the package array is empty, npm will try to publish something in the
|
||||
current working directory.
|
||||
|
||||
This command could fails if one of the packages specified already exists in
|
||||
the registry. Overwrites when the "force" environment variable is set.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
* npm-registry(1)
|
||||
* npm-adduser(1)
|
||||
* npm-owner(3)
|
||||
16
deps/npm/doc/api/rebuild.md
vendored
Normal file
16
deps/npm/doc/api/rebuild.md
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
npm-rebuild(3) -- Rebuild a package
|
||||
===================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands.rebuild([packages,] callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
This command runs the `npm build` command on each of the matched packages. This is useful
|
||||
when you install a new version of node, and must recompile all your C++ addons with
|
||||
the new binary. If no 'packages' parameter is specify, every package will be rebuilt.
|
||||
|
||||
## CONFIGURATION
|
||||
|
||||
See `npm help build`
|
||||
22
deps/npm/doc/api/restart.md
vendored
Normal file
22
deps/npm/doc/api/restart.md
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
npm-restart(3) -- Start a package
|
||||
=================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands.restart(packages, callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
This runs a package's "restart" script, if one was provided.
|
||||
Otherwise it runs package's "stop" script, if one was provided, and then
|
||||
the "start" script.
|
||||
|
||||
If no version is specified, then it restarts the "active" version.
|
||||
|
||||
npm can run tests on multiple packages. Just specify multiple packages
|
||||
in the `packages` parameter.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
* npm-start(3)
|
||||
* npm-stop(3)
|
||||
15
deps/npm/doc/api/root.md
vendored
Normal file
15
deps/npm/doc/api/root.md
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
npm-root(3) -- Display npm root
|
||||
===============================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands.root(args, callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
Print the effective `node_modules` folder to standard out.
|
||||
|
||||
'args' is never used and callback is never called with data.
|
||||
'args' must be present or things will break.
|
||||
|
||||
This function is not useful programmatically.
|
||||
27
deps/npm/doc/api/run-script.md
vendored
Normal file
27
deps/npm/doc/api/run-script.md
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
npm-run-script(3) -- Run arbitrary package scripts
|
||||
==================================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands.run-script(args, callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
This runs an arbitrary command from a package's "scripts" object.
|
||||
|
||||
It is used by the test, start, restart, and stop commands, but can be
|
||||
called directly, as well.
|
||||
|
||||
The 'args' parameter is an array of strings. Behavior depends on the number
|
||||
of elements. If there is only one element, npm assumes that the element
|
||||
represents a command to be run on the local repository. If there is more than
|
||||
one element, then the first is assumed to be the package and the second is
|
||||
assumed to be the command to run. All other elements are ignored.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
* npm-scripts(1)
|
||||
* npm-test(3)
|
||||
* npm-start(3)
|
||||
* npm-restart(3)
|
||||
* npm-stop(3)
|
||||
35
deps/npm/doc/api/search.md
vendored
Normal file
35
deps/npm/doc/api/search.md
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
npm-search(3) -- Search for packages
|
||||
====================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands.search(searchTerms, [silent,] [staleness,] callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
Search the registry for packages matching the search terms. The available parameters are:
|
||||
|
||||
* searchTerms:
|
||||
Array of search terms. These terms are case-insensitive.
|
||||
* silent:
|
||||
If true, npm will not log anything to the console.
|
||||
* staleness:
|
||||
This is the threshold for stale packages. "Fresh" packages are not refreshed
|
||||
from the registry. This value is measured in seconds.
|
||||
* callback:
|
||||
Returns an object where each key is the name of a package, and the value
|
||||
is information about that package along with a 'words' property, which is
|
||||
a space-delimited string of all of the interesting words in that package.
|
||||
The only properties included are those that are searched, which generally include:
|
||||
|
||||
* name
|
||||
* description
|
||||
* maintainers
|
||||
* url
|
||||
* keywords
|
||||
|
||||
A search on the registry excludes any result that does not match all of the
|
||||
search terms. It also removes any items from the results that contain an
|
||||
excluded term (the "searchexclude" config). The search is case insensitive
|
||||
and doesn't try to read your mind (it doesn't do any verb tense matching or the
|
||||
like).
|
||||
20
deps/npm/doc/api/shrinkwrap.md
vendored
Normal file
20
deps/npm/doc/api/shrinkwrap.md
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
npm-shrinkwrap(3) -- programmatically generate package shrinkwrap file
|
||||
====================================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands.shrinkwrap(args, [silent,] callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
This acts much the same ways as shrinkwrapping on the command-line.
|
||||
|
||||
This command does not take any arguments, but 'args' must be defined.
|
||||
Beyond that, if any arguments are passed in, npm will politely warn that it
|
||||
does not take positional arguments.
|
||||
|
||||
If the 'silent' parameter is set to true, nothing will be output to the screen,
|
||||
but the shrinkwrap file will still be written.
|
||||
|
||||
Finally, 'callback' is a function that will be called when the shrinkwrap has
|
||||
been saved.
|
||||
13
deps/npm/doc/api/start.md
vendored
Normal file
13
deps/npm/doc/api/start.md
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
npm-start(3) -- Start a package
|
||||
===============================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands.start(packages, callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
This runs a package's "start" script, if one was provided.
|
||||
|
||||
npm can run tests on multiple packages. Just specify multiple packages
|
||||
in the `packages` parameter.
|
||||
13
deps/npm/doc/api/stop.md
vendored
Normal file
13
deps/npm/doc/api/stop.md
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
npm-stop(3) -- Stop a package
|
||||
=============================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands.stop(packages, callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
This runs a package's "stop" script, if one was provided.
|
||||
|
||||
npm can run stop on multiple packages. Just specify multiple packages
|
||||
in the `packages` parameter.
|
||||
28
deps/npm/doc/api/submodule.md
vendored
Normal file
28
deps/npm/doc/api/submodule.md
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
npm-submodule(3) -- Add a package as a git submodule
|
||||
====================================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands.submodule(packages, callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
For each package specified, npm will check if it has a git repository url
|
||||
in its package.json description then add it as a git submodule at
|
||||
`node_modules/<pkg name>`.
|
||||
|
||||
This is a convenience only. From then on, it's up to you to manage
|
||||
updates by using the appropriate git commands. npm will stubbornly
|
||||
refuse to update, modify, or remove anything with a `.git` subfolder
|
||||
in it.
|
||||
|
||||
This command also does not install missing dependencies, if the package
|
||||
does not include them in its git repository. If `npm ls` reports that
|
||||
things are missing, you can either install, link, or submodule them yourself,
|
||||
or you can do `npm explore <pkgname> -- npm install` to install the
|
||||
dependencies into the submodule folder.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
* npm help json
|
||||
* git help submodule
|
||||
23
deps/npm/doc/api/tag.md
vendored
Normal file
23
deps/npm/doc/api/tag.md
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
npm-tag(3) -- Tag a published version
|
||||
=====================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands.tag(package@version, tag, callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
Tags the specified version of the package with the specified tag, or the
|
||||
`--tag` config if not specified.
|
||||
|
||||
The 'package@version' is an array of strings, but only the first two elements are
|
||||
currently used.
|
||||
|
||||
The first element must be in the form package@version, where package
|
||||
is the package name and version is the version number (much like installing a
|
||||
specific version).
|
||||
|
||||
The second element is the name of the tag to tag this version with. If this
|
||||
parameter is missing or falsey (empty), the default froom the config will be
|
||||
used. For more information about how to set this config, check
|
||||
`man 3 npm-config` for programmatic usage or `man npm-config` for cli usage.
|
||||
16
deps/npm/doc/api/test.md
vendored
Normal file
16
deps/npm/doc/api/test.md
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
npm-test(3) -- Test a package
|
||||
=============================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands.test(packages, callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
This runs a package's "test" script, if one was provided.
|
||||
|
||||
To run tests as a condition of installation, set the `npat` config to
|
||||
true.
|
||||
|
||||
npm can run tests on multiple packages. Just specify multiple packages
|
||||
in the `packages` parameter.
|
||||
16
deps/npm/doc/api/uninstall.md
vendored
Normal file
16
deps/npm/doc/api/uninstall.md
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
npm-uninstall(3) -- uninstall a package programmatically
|
||||
========================================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands.uninstall(packages, callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
This acts much the same ways as uninstalling on the command-line.
|
||||
|
||||
The 'packages' parameter is an array of strings. Each element in the array is
|
||||
the name of a package to be uninstalled.
|
||||
|
||||
Finally, 'callback' is a function that will be called when all packages have been
|
||||
uninstalled or when an error has been encountered.
|
||||
20
deps/npm/doc/api/unpublish.md
vendored
Normal file
20
deps/npm/doc/api/unpublish.md
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
npm-unpublish(3) -- Remove a package from the registry
|
||||
======================================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands.unpublish(package, callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
This removes a package version from the registry, deleting its
|
||||
entry and removing the tarball.
|
||||
|
||||
The package parameter must be defined.
|
||||
|
||||
Only the first element in the package parameter is used. If there is no first
|
||||
element, then npm assumes that the package at the current working directory
|
||||
is what is meant.
|
||||
|
||||
If no version is specified, or if all versions are removed then
|
||||
the root package entry is removed from the registry entirely.
|
||||
11
deps/npm/doc/api/update.md
vendored
Normal file
11
deps/npm/doc/api/update.md
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
npm-update(3) -- Update a package
|
||||
=================================
|
||||
|
||||
## SYNOPSIS
|
||||
npm.commands.update(packages, callback)
|
||||
|
||||
# DESCRIPTION
|
||||
|
||||
Updates a package, upgrading it to the latest version. It also installs any missing packages.
|
||||
|
||||
The 'packages' argument is an array of packages to update. The 'callback' parameter will be called when done or when an error occurs.
|
||||
18
deps/npm/doc/api/version.md
vendored
Normal file
18
deps/npm/doc/api/version.md
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
npm-version(3) -- Bump a package version
|
||||
========================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands.version(newversion, callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
Run this in a package directory to bump the version and write the new
|
||||
data back to the package.json file.
|
||||
|
||||
If run in a git repo, it will also create a version commit and tag, and
|
||||
fail if the repo is not clean.
|
||||
|
||||
Like all other commands, this function takes a string array as its first
|
||||
parameter. The difference, however, is this function will fail if it does
|
||||
not have exactly one element. The only element should be a version number.
|
||||
93
deps/npm/doc/api/view.md
vendored
Normal file
93
deps/npm/doc/api/view.md
vendored
Normal file
@@ -0,0 +1,93 @@
|
||||
npm-view(3) -- View registry info
|
||||
=================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands.view(args, [silent,] callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
This command shows data about a package and prints it to the stream
|
||||
referenced by the `outfd` config, which defaults to stdout.
|
||||
|
||||
The "args" parameter is an ordered list that closely resembles the command-line
|
||||
usage. The elements should be ordered such that the first element is
|
||||
the package and version (package@version). The version is optional. After that,
|
||||
the rest of the parameters are fields with optional subfields ("field.subfield")
|
||||
which can be used to get only the information desired from the registry.
|
||||
|
||||
The callback will be passed all of the data returned by the query.
|
||||
|
||||
For example, to get the package registry entry for the `connect` package,
|
||||
you can do this:
|
||||
|
||||
npm.commands.view(["connect"], callback)
|
||||
|
||||
If no version is specified, "latest" is assumed.
|
||||
|
||||
Field names can be specified after the package descriptor.
|
||||
For example, to show the dependencies of the `ronn` package at version
|
||||
0.3.5, you could do the following:
|
||||
|
||||
npm.commands.view(["ronn@0.3.5", "dependencies"], callback)
|
||||
|
||||
You can view child field by separating them with a period.
|
||||
To view the git repository URL for the latest version of npm, you could
|
||||
do this:
|
||||
|
||||
npm.commands.view(["npm", "repository.url"], callback)
|
||||
|
||||
For fields that are arrays, requesting a non-numeric field will return
|
||||
all of the values from the objects in the list. For example, to get all
|
||||
the contributor names for the "express" project, you can do this:
|
||||
|
||||
npm.commands.view(["express", "contributors.email"], callback)
|
||||
|
||||
You may also use numeric indices in square braces to specifically select
|
||||
an item in an array field. To just get the email address of the first
|
||||
contributor in the list, you can do this:
|
||||
|
||||
npm.commands.view(["express", "contributors[0].email"], callback)
|
||||
|
||||
Multiple fields may be specified, and will be printed one after another.
|
||||
For exampls, to get all the contributor names and email addresses, you
|
||||
can do this:
|
||||
|
||||
npm.commands.view(["express", "contributors.name", "contributors.email"], callback)
|
||||
|
||||
"Person" fields are shown as a string if they would be shown as an
|
||||
object. So, for example, this will show the list of npm contributors in
|
||||
the shortened string format. (See `npm help json` for more on this.)
|
||||
|
||||
npm.commands.view(["npm", "contributors"], callback)
|
||||
|
||||
If a version range is provided, then data will be printed for every
|
||||
matching version of the package. This will show which version of jsdom
|
||||
was required by each matching version of yui3:
|
||||
|
||||
npm.commands.view(["yui3@'>0.5.4'", "dependencies.jsdom"], callback)
|
||||
|
||||
## OUTPUT
|
||||
|
||||
If only a single string field for a single version is output, then it
|
||||
will not be colorized or quoted, so as to enable piping the output to
|
||||
another command.
|
||||
|
||||
If the version range matches multiple versions, than each printed value
|
||||
will be prefixed with the version it applies to.
|
||||
|
||||
If multiple fields are requested, than each of them are prefixed with
|
||||
the field name.
|
||||
|
||||
Console output can be disabled by setting the 'silent' parameter to true.
|
||||
|
||||
## RETURN VALUE
|
||||
|
||||
The data returned will be an object in this formation:
|
||||
|
||||
{ <version>:
|
||||
{ <field>: <value>
|
||||
, ... }
|
||||
, ... }
|
||||
|
||||
corresponding to the list of fields selected.
|
||||
15
deps/npm/doc/api/whoami.md
vendored
Normal file
15
deps/npm/doc/api/whoami.md
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
npm-whoami(3) -- Display npm username
|
||||
=====================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands.whoami(args, callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
Print the `username` config to standard output.
|
||||
|
||||
'args' is never used and callback is never called with data.
|
||||
'args' must be present or things will break.
|
||||
|
||||
This function is not useful programmatically
|
||||
36
deps/npm/doc/cli/adduser.md
vendored
Normal file
36
deps/npm/doc/cli/adduser.md
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
npm-adduser(1) -- Add a registry user account
|
||||
=============================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm adduser
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
Create or verify a user named `<username>` in the npm registry, and
|
||||
save the credentials to the `.npmrc` file.
|
||||
|
||||
The username, password, and email are read in from prompts.
|
||||
|
||||
You may use this command to change your email address, but not username
|
||||
or password.
|
||||
|
||||
To reset your password, go to <http://admin.npmjs.org/>
|
||||
|
||||
You may use this command multiple times with the same user account to
|
||||
authorize on a new machine.
|
||||
|
||||
## CONFIGURATION
|
||||
|
||||
### registry
|
||||
|
||||
Default: http://registry.npmjs.org/
|
||||
|
||||
The base URL of the npm package registry.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
* npm-registry(1)
|
||||
* npm-config(1)
|
||||
* npm-owner(1)
|
||||
* npm-whoami(1)
|
||||
17
deps/npm/doc/cli/bin.md
vendored
Normal file
17
deps/npm/doc/cli/bin.md
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
npm-bin(1) -- Display npm bin folder
|
||||
====================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm bin
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
Print the folder where npm will install executables.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
* npm-prefix(1)
|
||||
* npm-root(1)
|
||||
* npm-folders(1)
|
||||
* npm-config(1)
|
||||
38
deps/npm/doc/cli/bugs.md
vendored
Normal file
38
deps/npm/doc/cli/bugs.md
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
npm-bugs(1) -- Bugs for a package in a web browser maybe
|
||||
========================================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm bugs <pkgname>
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
This command tries to guess at the likely location of a package's
|
||||
bug tracker URL, and then tries to open it using the `--browser`
|
||||
config param.
|
||||
|
||||
## CONFIGURATION
|
||||
|
||||
### browser
|
||||
|
||||
* Default: OS X: `"open"`, Windows: `"start"`, Others: `"xdg-open"`
|
||||
* Type: String
|
||||
|
||||
The browser that is called by the `npm bugs` command to open websites.
|
||||
|
||||
### registry
|
||||
|
||||
* Default: https://registry.npmjs.org/
|
||||
* Type: url
|
||||
|
||||
The base URL of the npm package registry.
|
||||
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
* npm-docs(1)
|
||||
* npm-view(1)
|
||||
* npm-publish(1)
|
||||
* npm-registry(1)
|
||||
* npm-config(1)
|
||||
* npm-json(1)
|
||||
22
deps/npm/doc/cli/build.md
vendored
Normal file
22
deps/npm/doc/cli/build.md
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
npm-build(1) -- Build a package
|
||||
===============================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm build <package-folder>
|
||||
|
||||
* `<package-folder>`:
|
||||
A folder containing a `package.json` file in its root.
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
This is the plumbing command called by `npm link` and `npm install`.
|
||||
|
||||
It should generally not be called directly.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
* npm-install(1)
|
||||
* npm-link(1)
|
||||
* npm-scripts(1)
|
||||
* npm-json(1)
|
||||
14
deps/npm/doc/cli/bundle.md
vendored
Normal file
14
deps/npm/doc/cli/bundle.md
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
npm-bundle(1) -- REMOVED
|
||||
========================
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
The `npm bundle` command has been removed in 1.0, for the simple reason
|
||||
that it is no longer necessary, as the default behavior is now to
|
||||
install packages into the local space.
|
||||
|
||||
Just use `npm install` now to do what `npm bundle` used to do.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
* npm-install(1)
|
||||
70
deps/npm/doc/cli/cache.md
vendored
Normal file
70
deps/npm/doc/cli/cache.md
vendored
Normal file
@@ -0,0 +1,70 @@
|
||||
npm-cache(1) -- Manipulates packages cache
|
||||
==========================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm cache add <tarball file>
|
||||
npm cache add <folder>
|
||||
npm cache add <tarball url>
|
||||
npm cache add <name>@<version>
|
||||
|
||||
npm cache ls [<path>]
|
||||
|
||||
npm cache clean [<path>]
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
Used to add, list, or clear the npm cache folder.
|
||||
|
||||
* add:
|
||||
Add the specified package to the local cache. This command is primarily
|
||||
intended to be used internally by npm, but it can provide a way to
|
||||
add data to the local installation cache explicitly.
|
||||
|
||||
* ls:
|
||||
Show the data in the cache. Argument is a path to show in the cache
|
||||
folder. Works a bit like the `find` program, but limited by the
|
||||
`depth` config.
|
||||
|
||||
* clean:
|
||||
Delete data out of the cache folder. If an argument is provided, then
|
||||
it specifies a subpath to delete. If no argument is provided, then
|
||||
the entire cache is cleared.
|
||||
|
||||
## DETAILS
|
||||
|
||||
npm stores cache data in `$HOME/.npm`. For each package that is added
|
||||
to the cache, three pieces of information are stored in
|
||||
`{cache}/{name}/{version}`:
|
||||
|
||||
* .../package/:
|
||||
A folder containing the package contents as they appear in the tarball.
|
||||
* .../package.json:
|
||||
The package.json file, as npm sees it, with overlays applied and a _id attribute.
|
||||
* .../package.tgz:
|
||||
The tarball for that version.
|
||||
|
||||
Additionally, whenever a registry request is made, a `.cache.json` file
|
||||
is placed at the corresponding URI, to store the ETag and the requested
|
||||
data.
|
||||
|
||||
Commands that make non-essential registry requests (such as `search` and
|
||||
`view`, or the completion scripts) generally specify a minimum timeout.
|
||||
If the `.cache.json` file is younger than the specified timeout, then
|
||||
they do not make an HTTP request to the registry.
|
||||
|
||||
## CONFIGURATION
|
||||
|
||||
### cache
|
||||
|
||||
Default: `$HOME/.npm` on Posix, or `$HOME/npm-cache` on Windows.
|
||||
|
||||
The root cache folder.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
* npm-folders(1)
|
||||
* npm-config(1)
|
||||
* npm-install(1)
|
||||
* npm-publish(1)
|
||||
* npm-pack(1)
|
||||
80
deps/npm/doc/cli/changelog.md
vendored
Normal file
80
deps/npm/doc/cli/changelog.md
vendored
Normal file
@@ -0,0 +1,80 @@
|
||||
npm-changelog(1) -- Changes
|
||||
===========================
|
||||
|
||||
## HISTORY
|
||||
|
||||
### 1.1.3, 1.1.4
|
||||
|
||||
* Update request to support HTTPS-over-HTTP proxy tunneling
|
||||
* Throw on undefined envs in config settings
|
||||
* Update which to 1.0.5
|
||||
* Fix windows UNC busyloop in findPrefix
|
||||
* Bundle nested bundleDependencies properly
|
||||
* Alias adduser to add-user
|
||||
* Doc updates (Christian Howe, Henrik Hodne, Andrew Lunny)
|
||||
* ignore logfd/outfd streams in makeEnv() (Rod Vagg)
|
||||
* shrinkwrap: Behave properly with url-installed deps
|
||||
* install: Support --save with url install targets
|
||||
* Support installing naked tars or single-file modules from urls etc.
|
||||
* init: Don't add engines section
|
||||
* Don't run make clean on rebuild
|
||||
* Added missing unicode replacement (atomizer)
|
||||
|
||||
### 1.1.2
|
||||
|
||||
Dave Pacheco (2):
|
||||
add "npm shrinkwrap"
|
||||
|
||||
Martin Cooper (1):
|
||||
Fix #1753 Make a copy of the cached objects we'll modify.
|
||||
|
||||
Tim Oxley (1):
|
||||
correctly remove readme from default npm view command.
|
||||
|
||||
Tyler Green (1):
|
||||
fix #2187 set terminal columns to Infinity if 0
|
||||
|
||||
isaacs (19):
|
||||
update minimatch
|
||||
update request
|
||||
Experimental: single-file modules
|
||||
Fix #2172 Don't remove global mans uninstalling local pkgs
|
||||
Add --versions flag to show the version of node as well
|
||||
Support --json flag for ls output
|
||||
update request to 2.9.151
|
||||
|
||||
### 1.1
|
||||
* Replace system tar dependency with a JS tar
|
||||
* Continue to refine
|
||||
|
||||
### 1.0
|
||||
* Greatly simplified folder structure
|
||||
* Install locally (bundle by default)
|
||||
* Drastic rearchitecture
|
||||
|
||||
### 0.3
|
||||
* More correct permission/uid handling when running as root
|
||||
* Require node 0.4.0
|
||||
* Reduce featureset
|
||||
* Packages without "main" modules don't export modules
|
||||
* Remove support for invalid JSON (since node doesn't support it)
|
||||
|
||||
### 0.2
|
||||
* First allegedly "stable" release
|
||||
* Most functionality implemented
|
||||
* Used shim files and `name@version` symlinks
|
||||
* Feature explosion
|
||||
* Kind of a mess
|
||||
|
||||
### 0.1
|
||||
* push to beta, and announce
|
||||
* Solaris and Cygwin support
|
||||
|
||||
### 0.0
|
||||
* Lots of sketches and false starts; abandoned a few times
|
||||
* Core functionality established
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
* npm(1)
|
||||
* npm-faq(1)
|
||||
181
deps/npm/doc/cli/coding-style.md
vendored
Normal file
181
deps/npm/doc/cli/coding-style.md
vendored
Normal file
@@ -0,0 +1,181 @@
|
||||
npm-coding-style(1) -- npm's "funny" coding style
|
||||
=================================================
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
npm's coding style is a bit unconventional. It is not different for
|
||||
difference's sake, but rather a carefully crafted style that is
|
||||
designed to reduce visual clutter and make bugs more apparent.
|
||||
|
||||
If you want to contribute to npm (which is very encouraged), you should
|
||||
make your code conform to npm's style.
|
||||
|
||||
Note: this concerns npm's code not the specific packages at npmjs.org
|
||||
|
||||
## Line Length
|
||||
|
||||
Keep lines shorter than 80 characters. It's better for lines to be
|
||||
too short than to be too long. Break up long lists, objects, and other
|
||||
statements onto multiple lines.
|
||||
|
||||
## Indentation
|
||||
|
||||
Two-spaces. Tabs are better, but they look like hell in web browsers
|
||||
(and on github), and node uses 2 spaces, so that's that.
|
||||
|
||||
Configure your editor appropriately.
|
||||
|
||||
## Curly braces
|
||||
|
||||
Curly braces belong on the same line as the thing that necessitates them.
|
||||
|
||||
Bad:
|
||||
|
||||
function ()
|
||||
{
|
||||
|
||||
Good:
|
||||
|
||||
function () {
|
||||
|
||||
If a block needs to wrap to the next line, use a curly brace. Don't
|
||||
use it if it doesn't.
|
||||
|
||||
Bad:
|
||||
|
||||
if (foo) { bar() }
|
||||
while (foo)
|
||||
bar()
|
||||
|
||||
Good:
|
||||
|
||||
if (foo) bar()
|
||||
while (foo) {
|
||||
bar()
|
||||
}
|
||||
|
||||
## Semicolons
|
||||
|
||||
Don't use them except in four situations:
|
||||
|
||||
* `for (;;)` loops. They're actually required.
|
||||
* null loops like: `while (something) ;` (But you'd better have a good
|
||||
reason for doing that.)
|
||||
* `case "foo": doSomething(); break`
|
||||
* In front of a leading `(` or `[` at the start of the line.
|
||||
This prevents the expression from being interpreted
|
||||
as a function call or property access, respectively.
|
||||
|
||||
Some examples of good semicolon usage:
|
||||
|
||||
;(x || y).doSomething()
|
||||
;[a, b, c].forEach(doSomething)
|
||||
for (var i = 0; i < 10; i ++) {
|
||||
switch (state) {
|
||||
case "begin": start(); continue
|
||||
case "end": finish(); break
|
||||
default: throw new Error("unknown state")
|
||||
}
|
||||
end()
|
||||
}
|
||||
|
||||
Note that starting lines with `-` and `+` also should be prefixed
|
||||
with a semicolon, but this is much less common.
|
||||
|
||||
## Comma First
|
||||
|
||||
If there is a list of things separated by commas, and it wraps
|
||||
across multiple lines, put the comma at the start of the next
|
||||
line, directly below the token that starts the list. Put the
|
||||
final token in the list on a line by itself. For example:
|
||||
|
||||
var magicWords = [ "abracadabra"
|
||||
, "gesundheit"
|
||||
, "ventrilo"
|
||||
]
|
||||
, spells = { "fireball" : function () { setOnFire() }
|
||||
, "water" : function () { putOut() }
|
||||
}
|
||||
, a = 1
|
||||
, b = "abc"
|
||||
, etc
|
||||
, somethingElse
|
||||
|
||||
## Whitespace
|
||||
|
||||
Put a single space in front of ( for anything other than a function call.
|
||||
Also use a single space wherever it makes things more readable.
|
||||
|
||||
Don't leave trailing whitespace at the end of lines. Don't indent empty
|
||||
lines. Don't use more spaces than are helpful.
|
||||
|
||||
## Functions
|
||||
|
||||
Use named functions. They make stack traces a lot easier to read.
|
||||
|
||||
## Callbacks, Sync/async Style
|
||||
|
||||
Use the asynchronous/non-blocking versions of things as much as possible.
|
||||
It might make more sense for npm to use the synchronous fs APIs, but this
|
||||
way, the fs and http and child process stuff all uses the same callback-passing
|
||||
methodology.
|
||||
|
||||
The callback should always be the last argument in the list. Its first
|
||||
argument is the Error or null.
|
||||
|
||||
Be very careful never to ever ever throw anything. It's worse than useless.
|
||||
Just send the error message back as the first argument to the callback.
|
||||
|
||||
## Errors
|
||||
|
||||
Always create a new Error object with your message. Don't just return a
|
||||
string message to the callback. Stack traces are handy.
|
||||
|
||||
## Logging
|
||||
|
||||
Logging is done using the [npmlog](https://github.com/isaacs/npmlog)
|
||||
utility.
|
||||
|
||||
Please clean up logs when they are no longer helpful. In particular,
|
||||
logging the same object over and over again is not helpful. Logs should
|
||||
report what's happening so that it's easier to track down where a fault
|
||||
occurs.
|
||||
|
||||
Use appropriate log levels. See `npm-config(1)` and search for
|
||||
"loglevel".
|
||||
|
||||
## Case, naming, etc.
|
||||
|
||||
Use `lowerCamelCase` for multiword identifiers when they refer to objects,
|
||||
functions, methods, members, or anything not specified in this section.
|
||||
|
||||
Use `UpperCamelCase` for class names (things that you'd pass to "new").
|
||||
|
||||
Use `all-lower-hyphen-css-case` for multiword filenames and config keys.
|
||||
|
||||
Use named functions. They make stack traces easier to follow.
|
||||
|
||||
Use `CAPS_SNAKE_CASE` for constants, things that should never change
|
||||
and are rarely used.
|
||||
|
||||
Use a single uppercase letter for function names where the function
|
||||
would normally be anonymous, but needs to call itself recursively. It
|
||||
makes it clear that it's a "throwaway" function.
|
||||
|
||||
## null, undefined, false, 0
|
||||
|
||||
Boolean variables and functions should always be either `true` or
|
||||
`false`. Don't set it to 0 unless it's supposed to be a number.
|
||||
|
||||
When something is intentionally missing or removed, set it to `null`.
|
||||
|
||||
Don't set things to `undefined`. Reserve that value to mean "not yet
|
||||
set to anything."
|
||||
|
||||
Boolean objects are verboten.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
* npm-developers(1)
|
||||
* npm-faq(1)
|
||||
* npm(1)
|
||||
29
deps/npm/doc/cli/completion.md
vendored
Normal file
29
deps/npm/doc/cli/completion.md
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
npm-completion(1) -- Tab Completion for npm
|
||||
===========================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
. <(npm completion)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
Enables tab-completion in all npm commands.
|
||||
|
||||
The synopsis above
|
||||
loads the completions into your current shell. Adding it to
|
||||
your ~/.bashrc or ~/.zshrc will make the completions available
|
||||
everywhere.
|
||||
|
||||
You may of course also pipe the output of npm completion to a file
|
||||
such as `/usr/local/etc/bash_completion.d/npm` if you have a system
|
||||
that will read that file for you.
|
||||
|
||||
When `COMP_CWORD`, `COMP_LINE`, and `COMP_POINT` are defined in the
|
||||
environment, `npm completion` acts in "plumbing mode", and outputs
|
||||
completions based on the arguments.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
* npm-developers(1)
|
||||
* npm-faq(1)
|
||||
* npm(1)
|
||||
882
deps/npm/doc/cli/config.md
vendored
Normal file
882
deps/npm/doc/cli/config.md
vendored
Normal file
@@ -0,0 +1,882 @@
|
||||
npm-config(1) -- Manage the npm configuration file
|
||||
==================================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm config set <key> <value> [--global]
|
||||
npm config get <key>
|
||||
npm config delete <key>
|
||||
npm config list
|
||||
npm config edit
|
||||
npm get <key>
|
||||
npm set <key> <value> [--global]
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
npm gets its configuration values from 6 sources, in this priority:
|
||||
|
||||
### Command Line Flags
|
||||
|
||||
Putting `--foo bar` on the command line sets the
|
||||
`foo` configuration parameter to `"bar"`. A `--` argument tells the cli
|
||||
parser to stop reading flags. A `--flag` parameter that is at the *end* of
|
||||
the command will be given the value of `true`.
|
||||
|
||||
### Environment Variables
|
||||
|
||||
Any environment variables that start with `npm_config_` will be interpreted
|
||||
as a configuration parameter. For example, putting `npm_config_foo=bar` in
|
||||
your environment will set the `foo` configuration parameter to `bar`. Any
|
||||
environment configurations that are not given a value will be given the value
|
||||
of `true`. Config values are case-insensitive, so `NPM_CONFIG_FOO=bar` will
|
||||
work the same.
|
||||
|
||||
### Per-user config file
|
||||
|
||||
`$HOME/.npmrc` (or the `userconfig` param, if set above)
|
||||
|
||||
This file is an ini-file formatted list of `key = value` parameters.
|
||||
Environment variables can be replaced using `${VARIABLE_NAME}`. For example:
|
||||
|
||||
prefix = ${HOME}/.npm-packages
|
||||
|
||||
### Global config file
|
||||
|
||||
`$PREFIX/etc/npmrc` (or the `globalconfig` param, if set above):
|
||||
This file is an ini-file formatted list of `key = value` parameters.
|
||||
Environment variables can be replaced as above.
|
||||
|
||||
### Built-in config file
|
||||
|
||||
`path/to/npm/itself/npmrc`
|
||||
|
||||
This is an unchangeable "builtin"
|
||||
configuration file that npm keeps consistent across updates. Set
|
||||
fields in here using the `./configure` script that comes with npm.
|
||||
This is primarily for distribution maintainers to override default
|
||||
configs in a standard and consistent manner.
|
||||
|
||||
### Default Configs
|
||||
|
||||
A set of configuration parameters that are internal to npm, and are
|
||||
defaults if nothing else is specified.
|
||||
|
||||
## Sub-commands
|
||||
|
||||
Config supports the following sub-commands:
|
||||
|
||||
### set
|
||||
|
||||
npm config set key value
|
||||
|
||||
Sets the config key to the value.
|
||||
|
||||
If value is omitted, then it sets it to "true".
|
||||
|
||||
### get
|
||||
|
||||
npm config get key
|
||||
|
||||
Echo the config value to stdout.
|
||||
|
||||
### list
|
||||
|
||||
npm config list
|
||||
|
||||
Show all the config settings.
|
||||
|
||||
### delete
|
||||
|
||||
npm config delete key
|
||||
|
||||
Deletes the key from all configuration files.
|
||||
|
||||
### edit
|
||||
|
||||
npm config edit
|
||||
|
||||
Opens the config file in an editor. Use the `--global` flag to edit the
|
||||
global config.
|
||||
|
||||
## Shorthands and Other CLI Niceties
|
||||
|
||||
The following shorthands are parsed on the command-line:
|
||||
|
||||
* `-v`: `--version`
|
||||
* `-h`, `-?`, `--help`, `-H`: `--usage`
|
||||
* `-s`, `--silent`: `--loglevel silent`
|
||||
* `-q`, `--quiet`: `--loglevel warn`
|
||||
* `-d`: `--loglevel info`
|
||||
* `-dd`, `--verbose`: `--loglevel verbose`
|
||||
* `-ddd`: `--loglevel silly`
|
||||
* `-g`: `--global`
|
||||
* `-l`: `--long`
|
||||
* `-m`: `--message`
|
||||
* `-p`, `--porcelain`: `--parseable`
|
||||
* `-reg`: `--registry`
|
||||
* `-v`: `--version`
|
||||
* `-f`: `--force`
|
||||
* `-desc`: `--description`
|
||||
* `-S`: `--save`
|
||||
* `-D`: `--save-dev`
|
||||
* `-O`: `--save-optional`
|
||||
* `-B`: `--save-bundle`
|
||||
* `-y`: `--yes`
|
||||
* `-n`: `--yes false`
|
||||
* `ll` and `la` commands: `ls --long`
|
||||
|
||||
If the specified configuration param resolves unambiguously to a known
|
||||
configuration parameter, then it is expanded to that configuration
|
||||
parameter. For example:
|
||||
|
||||
npm ls --par
|
||||
# same as:
|
||||
npm ls --parseable
|
||||
|
||||
If multiple single-character shorthands are strung together, and the
|
||||
resulting combination is unambiguously not some other configuration
|
||||
param, then it is expanded to its various component pieces. For
|
||||
example:
|
||||
|
||||
npm ls -gpld
|
||||
# same as:
|
||||
npm ls --global --parseable --long --loglevel info
|
||||
|
||||
## Per-Package Config Settings
|
||||
|
||||
When running scripts (see `npm-scripts(1)`)
|
||||
the package.json "config" keys are overwritten in the environment if
|
||||
there is a config param of `<name>[@<version>]:<key>`. For example, if
|
||||
the package.json has this:
|
||||
|
||||
{ "name" : "foo"
|
||||
, "config" : { "port" : "8080" }
|
||||
, "scripts" : { "start" : "node server.js" } }
|
||||
|
||||
and the server.js is this:
|
||||
|
||||
http.createServer(...).listen(process.env.npm_package_config_port)
|
||||
|
||||
then the user could change the behavior by doing:
|
||||
|
||||
npm config set foo:port 80
|
||||
|
||||
## Config Settings
|
||||
|
||||
### always-auth
|
||||
|
||||
* Default: false
|
||||
* Type: Boolean
|
||||
|
||||
Force npm to always require authentication when accessing the registry,
|
||||
even for `GET` requests.
|
||||
|
||||
### bin-links
|
||||
|
||||
* Default: `true`
|
||||
* Type: Boolean
|
||||
|
||||
Tells npm to create symlinks (or `.cmd` shims on Windows) for package
|
||||
executables.
|
||||
|
||||
Set to false to have it not do this. This can be used to work around
|
||||
the fact that some file systems don't support symlinks, even on
|
||||
ostensibly Unix systems.
|
||||
|
||||
### browser
|
||||
|
||||
* Default: OS X: `"open"`, Windows: `"start"`, Others: `"xdg-open"`
|
||||
* Type: String
|
||||
|
||||
The browser that is called by the `npm docs` command to open websites.
|
||||
|
||||
### ca
|
||||
|
||||
* Default: The npm CA certificate
|
||||
* Type: String or null
|
||||
|
||||
The Certificate Authority signing certificate that is trusted for SSL
|
||||
connections to the registry.
|
||||
|
||||
Set to `null` to only allow "known" registrars, or to a specific CA cert
|
||||
to trust only that specific signing authority.
|
||||
|
||||
See also the `strict-ssl` config.
|
||||
|
||||
### cache
|
||||
|
||||
* Default: Windows: `%APPDATA%\npm-cache`, Posix: `~/.npm`
|
||||
* Type: path
|
||||
|
||||
The location of npm's cache directory. See `npm-cache(1)`
|
||||
|
||||
### cache-lock-stale
|
||||
|
||||
* Default: 60000 (1 minute)
|
||||
* Type: Number
|
||||
|
||||
The number of ms before cache folder lockfiles are considered stale.
|
||||
|
||||
### cache-lock-retries
|
||||
|
||||
* Default: 10
|
||||
* Type: Number
|
||||
|
||||
Number of times to retry to acquire a lock on cache folder lockfiles.
|
||||
|
||||
### cache-lock-wait
|
||||
|
||||
* Default: 10000 (10 seconds)
|
||||
* Type: Number
|
||||
|
||||
Number of ms to wait for cache lock files to expire.
|
||||
|
||||
### cache-max
|
||||
|
||||
* Default: Infinity
|
||||
* Type: Number
|
||||
|
||||
The maximum time (in seconds) to keep items in the registry cache before
|
||||
re-checking against the registry.
|
||||
|
||||
Note that no purging is done unless the `npm cache clean` command is
|
||||
explicitly used, and that only GET requests use the cache.
|
||||
|
||||
### cache-min
|
||||
|
||||
* Default: 10
|
||||
* Type: Number
|
||||
|
||||
The minimum time (in seconds) to keep items in the registry cache before
|
||||
re-checking against the registry.
|
||||
|
||||
Note that no purging is done unless the `npm cache clean` command is
|
||||
explicitly used, and that only GET requests use the cache.
|
||||
|
||||
### color
|
||||
|
||||
* Default: true on Posix, false on Windows
|
||||
* Type: Boolean or `"always"`
|
||||
|
||||
If false, never shows colors. If `"always"` then always shows colors.
|
||||
If true, then only prints color codes for tty file descriptors.
|
||||
|
||||
### coverage
|
||||
|
||||
* Default: false
|
||||
* Type: Boolean
|
||||
|
||||
A flag to tell test-harness to run with their coverage options enabled,
|
||||
if they respond to the `npm_config_coverage` environment variable.
|
||||
|
||||
### depth
|
||||
|
||||
* Default: Infinity
|
||||
* Type: Number
|
||||
|
||||
The depth to go when recursing directories for `npm ls` and
|
||||
`npm cache ls`.
|
||||
|
||||
### description
|
||||
|
||||
* Default: true
|
||||
* Type: Boolean
|
||||
|
||||
Show the description in `npm search`
|
||||
|
||||
### dev
|
||||
|
||||
* Default: false
|
||||
* Type: Boolean
|
||||
|
||||
Install `dev-dependencies` along with packages.
|
||||
|
||||
Note that `dev-dependencies` are also installed if the `npat` flag is
|
||||
set.
|
||||
|
||||
### editor
|
||||
|
||||
* Default: `EDITOR` environment variable if set, or `"vi"` on Posix,
|
||||
or `"notepad"` on Windows.
|
||||
* Type: path
|
||||
|
||||
The command to run for `npm edit` or `npm config edit`.
|
||||
|
||||
### engine-strict
|
||||
|
||||
* Default: false
|
||||
* Type: Boolean
|
||||
|
||||
If set to true, then npm will stubbornly refuse to install (or even
|
||||
consider installing) any package that claims to not be compatible with
|
||||
the current Node.js version.
|
||||
|
||||
### force
|
||||
|
||||
* Default: false
|
||||
* Type: Boolean
|
||||
|
||||
Makes various commands more forceful.
|
||||
|
||||
* lifecycle script failure does not block progress.
|
||||
* publishing clobbers previously published versions.
|
||||
* skips cache when requesting from the registry.
|
||||
* prevents checks against clobbering non-npm files.
|
||||
|
||||
### fetch-retries
|
||||
|
||||
* Default: 2
|
||||
* Type: Number
|
||||
|
||||
The "retries" config for the `retry` module to use when fetching
|
||||
packages from the registry.
|
||||
|
||||
### fetch-retry-factor
|
||||
|
||||
* Default: 10
|
||||
* Type: Number
|
||||
|
||||
The "factor" config for the `retry` module to use when fetching
|
||||
packages.
|
||||
|
||||
### fetch-retry-mintimeout
|
||||
|
||||
* Default: 10000 (10 seconds)
|
||||
* Type: Number
|
||||
|
||||
The "minTimeout" config for the `retry` module to use when fetching
|
||||
packages.
|
||||
|
||||
### fetch-retry-maxtimeout
|
||||
|
||||
* Default: 60000 (1 minute)
|
||||
* Type: Number
|
||||
|
||||
The "maxTimeout" config for the `retry` module to use when fetching
|
||||
packages.
|
||||
|
||||
### git
|
||||
|
||||
* Default: `"git"`
|
||||
* Type: String
|
||||
|
||||
The command to use for git commands. If git is installed on the
|
||||
computer, but is not in the `PATH`, then set this to the full path to
|
||||
the git binary.
|
||||
|
||||
### global
|
||||
|
||||
* Default: false
|
||||
* Type: Boolean
|
||||
|
||||
Operates in "global" mode, so that packages are installed into the
|
||||
`prefix` folder instead of the current working directory. See
|
||||
`npm-folders(1)` for more on the differences in behavior.
|
||||
|
||||
* packages are installed into the `{prefix}/lib/node_modules` folder, instead of the
|
||||
current working directory.
|
||||
* bin files are linked to `{prefix}/bin`
|
||||
* man pages are linked to `{prefix}/share/man`
|
||||
|
||||
### globalconfig
|
||||
|
||||
* Default: {prefix}/etc/npmrc
|
||||
* Type: path
|
||||
|
||||
The config file to read for global config options.
|
||||
|
||||
### globalignorefile
|
||||
|
||||
* Default: {prefix}/etc/npmignore
|
||||
* Type: path
|
||||
|
||||
The config file to read for global ignore patterns to apply to all users
|
||||
and all projects.
|
||||
|
||||
If not found, but there is a "gitignore" file in the
|
||||
same directory, then that will be used instead.
|
||||
|
||||
### group
|
||||
|
||||
* Default: GID of the current process
|
||||
* Type: String or Number
|
||||
|
||||
The group to use when running package scripts in global mode as the root
|
||||
user.
|
||||
|
||||
### https-proxy
|
||||
|
||||
* Default: the `HTTPS_PROXY` or `https_proxy` or `HTTP_PROXY` or
|
||||
`http_proxy` environment variables.
|
||||
* Type: url
|
||||
|
||||
A proxy to use for outgoing https requests.
|
||||
|
||||
### user-agent
|
||||
|
||||
* Default: node/{process.version} {process.platform} {process.arch}
|
||||
* Type: String
|
||||
|
||||
Sets a User-Agent to the request header
|
||||
|
||||
### ignore
|
||||
|
||||
* Default: ""
|
||||
* Type: string
|
||||
|
||||
A white-space separated list of glob patterns of files to always exclude
|
||||
from packages when building tarballs.
|
||||
|
||||
### init-module
|
||||
|
||||
* Default: ~/.npm-init.js
|
||||
* Type: path
|
||||
|
||||
A module that will be loaded by the `npm init` command. See the
|
||||
documentation for the
|
||||
[init-package-json](https://github.com/isaacs/init-package-json) module
|
||||
for more information, or npm-init(1).
|
||||
|
||||
### init.version
|
||||
|
||||
* Default: "0.0.0"
|
||||
* Type: semver
|
||||
|
||||
The value `npm init` should use by default for the package version.
|
||||
|
||||
### init.author.name
|
||||
|
||||
* Default: ""
|
||||
* Type: String
|
||||
|
||||
The value `npm init` should use by default for the package author's name.
|
||||
|
||||
### init.author.email
|
||||
|
||||
* Default: ""
|
||||
* Type: String
|
||||
|
||||
The value `npm init` should use by default for the package author's email.
|
||||
|
||||
### init.author.url
|
||||
|
||||
* Default: ""
|
||||
* Type: String
|
||||
|
||||
The value `npm init` should use by default for the package author's homepage.
|
||||
|
||||
### json
|
||||
|
||||
* Default: false
|
||||
* Type: Boolean
|
||||
|
||||
Whether or not to output JSON data, rather than the normal output.
|
||||
|
||||
This feature is currently experimental, and the output data structures
|
||||
for many commands is either not implemented in JSON yet, or subject to
|
||||
change. Only the output from `npm ls --json` is currently valid.
|
||||
|
||||
### link
|
||||
|
||||
* Default: false
|
||||
* Type: Boolean
|
||||
|
||||
If true, then local installs will link if there is a suitable globally
|
||||
installed package.
|
||||
|
||||
Note that this means that local installs can cause things to be
|
||||
installed into the global space at the same time. The link is only done
|
||||
if one of the two conditions are met:
|
||||
|
||||
* The package is not already installed globally, or
|
||||
* the globally installed version is identical to the version that is
|
||||
being installed locally.
|
||||
|
||||
### loglevel
|
||||
|
||||
* Default: "http"
|
||||
* Type: String
|
||||
* Values: "silent", "win", "error", "warn", "http", "info", "verbose", "silly"
|
||||
|
||||
What level of logs to report. On failure, *all* logs are written to
|
||||
`npm-debug.log` in the current working directory.
|
||||
|
||||
Any logs of a higher level than the setting are shown.
|
||||
The default is "http", which shows http, warn, and error output.
|
||||
|
||||
### logstream
|
||||
|
||||
* Default: process.stderr
|
||||
* Type: Stream
|
||||
|
||||
This is the stream that is passed to the
|
||||
[npmlog](https://github.com/isaacs/npmlog) module at run time.
|
||||
|
||||
It cannot be set from the command line, but if you are using npm
|
||||
programmatically, you may wish to send logs to somewhere other than
|
||||
stderr.
|
||||
|
||||
If the `color` config is set to true, then this stream will receive
|
||||
colored output if it is a TTY.
|
||||
|
||||
### long
|
||||
|
||||
* Default: false
|
||||
* Type: Boolean
|
||||
|
||||
Show extended information in `npm ls`
|
||||
|
||||
### message
|
||||
|
||||
* Default: "%s"
|
||||
* Type: String
|
||||
|
||||
Commit message which is used by `npm version` when creating version commit.
|
||||
|
||||
Any "%s" in the message will be replaced with the version number.
|
||||
|
||||
### node-version
|
||||
|
||||
* Default: process.version
|
||||
* Type: semver or false
|
||||
|
||||
The node version to use when checking package's "engines" hash.
|
||||
|
||||
### npat
|
||||
|
||||
* Default: false
|
||||
* Type: Boolean
|
||||
|
||||
Run tests on installation and report results to the
|
||||
`npaturl`.
|
||||
|
||||
### npaturl
|
||||
|
||||
* Default: Not yet implemented
|
||||
* Type: url
|
||||
|
||||
The url to report npat test results.
|
||||
|
||||
### onload-script
|
||||
|
||||
* Default: false
|
||||
* Type: path
|
||||
|
||||
A node module to `require()` when npm loads. Useful for programmatic
|
||||
usage.
|
||||
|
||||
### optional
|
||||
|
||||
* Default: true
|
||||
* Type: Boolean
|
||||
|
||||
Attempt to install packages in the `optionalDependencies` hash. Note
|
||||
that if these packages fail to install, the overall installation
|
||||
process is not aborted.
|
||||
|
||||
### parseable
|
||||
|
||||
* Default: false
|
||||
* Type: Boolean
|
||||
|
||||
Output parseable results from commands that write to
|
||||
standard output.
|
||||
|
||||
### prefix
|
||||
|
||||
* Default: see npm-folders(1)
|
||||
* Type: path
|
||||
|
||||
The location to install global items. If set on the command line, then
|
||||
it forces non-global commands to run in the specified folder.
|
||||
|
||||
### production
|
||||
|
||||
* Default: false
|
||||
* Type: Boolean
|
||||
|
||||
Set to true to run in "production" mode.
|
||||
|
||||
1. devDependencies are not installed at the topmost level when running
|
||||
local `npm install` without any arguments.
|
||||
2. Set the NODE_ENV="production" for lifecycle scripts.
|
||||
|
||||
### proprietary-attribs
|
||||
|
||||
* Default: true
|
||||
* Type: Boolean
|
||||
|
||||
Whether or not to include proprietary extended attributes in the
|
||||
tarballs created by npm.
|
||||
|
||||
Unless you are expecting to unpack package tarballs with something other
|
||||
than npm -- particularly a very outdated tar implementation -- leave
|
||||
this as true.
|
||||
|
||||
### proxy
|
||||
|
||||
* Default: `HTTP_PROXY` or `http_proxy` environment variable, or null
|
||||
* Type: url
|
||||
|
||||
A proxy to use for outgoing http requests.
|
||||
|
||||
### rebuild-bundle
|
||||
|
||||
* Default: true
|
||||
* Type: Boolean
|
||||
|
||||
Rebuild bundled dependencies after installation.
|
||||
|
||||
### registry
|
||||
|
||||
* Default: https://registry.npmjs.org/
|
||||
* Type: url
|
||||
|
||||
The base URL of the npm package registry.
|
||||
|
||||
### rollback
|
||||
|
||||
* Default: true
|
||||
* Type: Boolean
|
||||
|
||||
Remove failed installs.
|
||||
|
||||
### save
|
||||
|
||||
* Default: false
|
||||
* Type: Boolean
|
||||
|
||||
Save installed packages to a package.json file as dependencies.
|
||||
|
||||
When used with the `npm rm` command, it removes it from the dependencies
|
||||
hash.
|
||||
|
||||
Only works if there is already a package.json file present.
|
||||
|
||||
### save-bundle
|
||||
|
||||
* Default: false
|
||||
* Type: Boolean
|
||||
|
||||
If a package would be saved at install time by the use of `--save`,
|
||||
`--save-dev`, or `--save-optional`, then also put it in the
|
||||
`bundleDependencies` list.
|
||||
|
||||
When used with the `npm rm` command, it removes it from the
|
||||
bundledDependencies list.
|
||||
|
||||
### save-dev
|
||||
|
||||
* Default: false
|
||||
* Type: Boolean
|
||||
|
||||
Save installed packages to a package.json file as devDependencies.
|
||||
|
||||
When used with the `npm rm` command, it removes it from the devDependencies
|
||||
hash.
|
||||
|
||||
Only works if there is already a package.json file present.
|
||||
|
||||
### save-optional
|
||||
|
||||
* Default: false
|
||||
* Type: Boolean
|
||||
|
||||
Save installed packages to a package.json file as optionalDependencies.
|
||||
|
||||
When used with the `npm rm` command, it removes it from the devDependencies
|
||||
hash.
|
||||
|
||||
Only works if there is already a package.json file present.
|
||||
|
||||
### searchopts
|
||||
|
||||
* Default: ""
|
||||
* Type: String
|
||||
|
||||
Space-separated options that are always passed to search.
|
||||
|
||||
### searchexclude
|
||||
|
||||
* Default: ""
|
||||
* Type: String
|
||||
|
||||
Space-separated options that limit the results from search.
|
||||
|
||||
### searchsort
|
||||
|
||||
* Default: "name"
|
||||
* Type: String
|
||||
* Values: "name", "-name", "date", "-date", "description",
|
||||
"-description", "keywords", "-keywords"
|
||||
|
||||
Indication of which field to sort search results by. Prefix with a `-`
|
||||
character to indicate reverse sort.
|
||||
|
||||
### shell
|
||||
|
||||
* Default: SHELL environment variable, or "bash" on Posix, or "cmd" on
|
||||
Windows
|
||||
* Type: path
|
||||
|
||||
The shell to run for the `npm explore` command.
|
||||
|
||||
### shrinkwrap
|
||||
|
||||
* Default: true
|
||||
* Type: Boolean
|
||||
|
||||
If set to false, then ignore `npm-shrinkwrap.json` files when
|
||||
installing.
|
||||
|
||||
### sign-git-tag
|
||||
|
||||
* Default: false
|
||||
* Type: Boolean
|
||||
|
||||
If set to true, then the `npm version` command will tag the version
|
||||
using `-s` to add a signature.
|
||||
|
||||
Note that git requires you to have set up GPG keys in your git configs
|
||||
for this to work properly.
|
||||
|
||||
### strict-ssl
|
||||
|
||||
* Default: true
|
||||
* Type: Boolean
|
||||
|
||||
Whether or not to do SSL key validation when making requests to the
|
||||
registry via https.
|
||||
|
||||
See also the `ca` config.
|
||||
|
||||
### tag
|
||||
|
||||
* Default: latest
|
||||
* Type: String
|
||||
|
||||
If you ask npm to install a package and don't tell it a specific version, then
|
||||
it will install the specified tag.
|
||||
|
||||
Also the tag that is added to the package@version specified by the `npm
|
||||
tag` command, if no explicit tag is given.
|
||||
|
||||
### tmp
|
||||
|
||||
* Default: TMPDIR environment variable, or "/tmp"
|
||||
* Type: path
|
||||
|
||||
Where to store temporary files and folders. All temp files are deleted
|
||||
on success, but left behind on failure for forensic purposes.
|
||||
|
||||
### unicode
|
||||
|
||||
* Default: true
|
||||
* Type: Boolean
|
||||
|
||||
When set to true, npm uses unicode characters in the tree output. When
|
||||
false, it uses ascii characters to draw trees.
|
||||
|
||||
### unsafe-perm
|
||||
|
||||
* Default: false if running as root, true otherwise
|
||||
* Type: Boolean
|
||||
|
||||
Set to true to suppress the UID/GID switching when running package
|
||||
scripts. If set explicitly to false, then installing as a non-root user
|
||||
will fail.
|
||||
|
||||
### usage
|
||||
|
||||
* Default: false
|
||||
* Type: Boolean
|
||||
|
||||
Set to show short usage output (like the -H output)
|
||||
instead of complete help when doing `npm-help(1)`.
|
||||
|
||||
### user
|
||||
|
||||
* Default: "nobody"
|
||||
* Type: String or Number
|
||||
|
||||
The UID to set to when running package scripts as root.
|
||||
|
||||
### username
|
||||
|
||||
* Default: null
|
||||
* Type: String
|
||||
|
||||
The username on the npm registry. Set with `npm adduser`
|
||||
|
||||
### userconfig
|
||||
|
||||
* Default: ~/.npmrc
|
||||
* Type: path
|
||||
|
||||
The location of user-level configuration settings.
|
||||
|
||||
### userignorefile
|
||||
|
||||
* Default: ~/.npmignore
|
||||
* Type: path
|
||||
|
||||
The location of a user-level ignore file to apply to all packages.
|
||||
|
||||
If not found, but there is a .gitignore file in the same directory, then
|
||||
that will be used instead.
|
||||
|
||||
### umask
|
||||
|
||||
* Default: 022
|
||||
* Type: Octal numeric string
|
||||
|
||||
The "umask" value to use when setting the file creation mode on files
|
||||
and folders.
|
||||
|
||||
Folders and executables are given a mode which is `0777` masked against
|
||||
this value. Other files are given a mode which is `0666` masked against
|
||||
this value. Thus, the defaults are `0755` and `0644` respectively.
|
||||
|
||||
### version
|
||||
|
||||
* Default: false
|
||||
* Type: boolean
|
||||
|
||||
If true, output the npm version and exit successfully.
|
||||
|
||||
Only relevant when specified explicitly on the command line.
|
||||
|
||||
### versions
|
||||
|
||||
* Default: false
|
||||
* Type: boolean
|
||||
|
||||
If true, output the npm version as well as node's `process.versions`
|
||||
hash, and exit successfully.
|
||||
|
||||
Only relevant when specified explicitly on the command line.
|
||||
|
||||
### viewer
|
||||
|
||||
* Default: "man" on Posix, "browser" on Windows
|
||||
* Type: path
|
||||
|
||||
The program to use to view help content.
|
||||
|
||||
Set to `"browser"` to view html help content in the default web browser.
|
||||
|
||||
### yes
|
||||
|
||||
* Default: null
|
||||
* Type: Boolean or null
|
||||
|
||||
If set to `null`, then prompt the user for responses in some
|
||||
circumstances.
|
||||
|
||||
If set to `true`, then answer "yes" to any prompt. If set to `false`
|
||||
then answer "no" to any prompt.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
* npm-folders(1)
|
||||
* npm(1)
|
||||
53
deps/npm/doc/cli/dedupe.md
vendored
Normal file
53
deps/npm/doc/cli/dedupe.md
vendored
Normal file
@@ -0,0 +1,53 @@
|
||||
npm-dedupe(1) -- Reduce duplication
|
||||
===================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm dedupe [package names...]
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
Searches the local package tree and attempts to simplify the overall
|
||||
structure by moving dependencies further up the tree, where they can
|
||||
be more effectively shared by multiple dependent packages.
|
||||
|
||||
For example, consider this dependency graph:
|
||||
|
||||
a
|
||||
+-- b <-- depends on c@1.0.x
|
||||
| `-- c@1.0.3
|
||||
`-- d <-- depends on c@~1.0.9
|
||||
`-- c@1.0.10
|
||||
|
||||
In this case, `npm-dedupe(1)` will transform the tree to:
|
||||
|
||||
a
|
||||
+-- b
|
||||
+-- d
|
||||
`-- c@1.0.10
|
||||
|
||||
Because of the hierarchical nature of node's module lookup, b and d
|
||||
will both get their dependency met by the single c package at the root
|
||||
level of the tree.
|
||||
|
||||
If a suitable version exists at the target location in the tree
|
||||
already, then it will be left untouched, but the other duplicates will
|
||||
be deleted.
|
||||
|
||||
If no suitable version can be found, then a warning is printed, and
|
||||
nothing is done.
|
||||
|
||||
If any arguments are supplied, then they are filters, and only the
|
||||
named packages will be touched.
|
||||
|
||||
Note that this operation transforms the dependency tree, and may
|
||||
result in packages getting updated versions, perhaps from the npm
|
||||
registry.
|
||||
|
||||
This feature is experimental, and may change in future versions.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
* npm-ls(1)
|
||||
* npm-update(1)
|
||||
* npm-install(1)
|
||||
26
deps/npm/doc/cli/deprecate.md
vendored
Normal file
26
deps/npm/doc/cli/deprecate.md
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
npm-deprecate(1) -- Deprecate a version of a package
|
||||
====================================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm deprecate <name>[@<version>] <message>
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
This command will update the npm registry entry for a package, providing
|
||||
a deprecation warning to all who attempt to install it.
|
||||
|
||||
It works on version ranges as well as specific versions, so you can do
|
||||
something like this:
|
||||
|
||||
npm deprecate my-thing@"< 0.2.3" "critical bug fixed in v0.2.3"
|
||||
|
||||
Note that you must be the package owner to deprecate something. See the
|
||||
`owner` and `adduser` help topics.
|
||||
|
||||
To un-deprecate a package, specify an empty string (`""`) for the `message` argument.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
* npm-publish(1)
|
||||
* npm-registry(1)
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user