fsevents 1.2.6 → 1.2.7

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of fsevents might be problematic. Click here for more details.

Files changed (526) hide show
  1. package/node_modules/abbrev/LICENSE +46 -0
  2. package/node_modules/abbrev/README.md +23 -0
  3. package/node_modules/abbrev/abbrev.js +61 -0
  4. package/node_modules/abbrev/package.json +57 -0
  5. package/node_modules/ansi-regex/index.js +4 -0
  6. package/node_modules/ansi-regex/license +21 -0
  7. package/node_modules/ansi-regex/package.json +108 -0
  8. package/node_modules/ansi-regex/readme.md +39 -0
  9. package/node_modules/aproba/LICENSE +14 -0
  10. package/node_modules/aproba/README.md +94 -0
  11. package/node_modules/aproba/index.js +105 -0
  12. package/node_modules/aproba/package.json +62 -0
  13. package/node_modules/are-we-there-yet/CHANGES.md +37 -0
  14. package/node_modules/are-we-there-yet/LICENSE +5 -0
  15. package/node_modules/are-we-there-yet/README.md +195 -0
  16. package/node_modules/are-we-there-yet/index.js +4 -0
  17. package/node_modules/are-we-there-yet/package.json +63 -0
  18. package/node_modules/are-we-there-yet/tracker-base.js +11 -0
  19. package/node_modules/are-we-there-yet/tracker-group.js +107 -0
  20. package/node_modules/are-we-there-yet/tracker-stream.js +36 -0
  21. package/node_modules/are-we-there-yet/tracker.js +30 -0
  22. package/node_modules/balanced-match/.npmignore +5 -0
  23. package/node_modules/balanced-match/LICENSE.md +21 -0
  24. package/node_modules/balanced-match/README.md +91 -0
  25. package/node_modules/balanced-match/index.js +59 -0
  26. package/node_modules/balanced-match/package.json +77 -0
  27. package/node_modules/brace-expansion/LICENSE +21 -0
  28. package/node_modules/brace-expansion/README.md +129 -0
  29. package/node_modules/brace-expansion/index.js +201 -0
  30. package/node_modules/brace-expansion/package.json +75 -0
  31. package/node_modules/chownr/LICENSE +15 -0
  32. package/node_modules/chownr/README.md +3 -0
  33. package/node_modules/chownr/chownr.js +88 -0
  34. package/node_modules/chownr/package.json +59 -0
  35. package/node_modules/code-point-at/index.js +32 -0
  36. package/node_modules/code-point-at/license +21 -0
  37. package/node_modules/code-point-at/package.json +70 -0
  38. package/node_modules/code-point-at/readme.md +32 -0
  39. package/node_modules/concat-map/.travis.yml +4 -0
  40. package/node_modules/concat-map/LICENSE +18 -0
  41. package/node_modules/concat-map/README.markdown +62 -0
  42. package/node_modules/concat-map/example/map.js +6 -0
  43. package/node_modules/concat-map/index.js +13 -0
  44. package/node_modules/concat-map/package.json +88 -0
  45. package/node_modules/concat-map/test/map.js +39 -0
  46. package/node_modules/console-control-strings/LICENSE +13 -0
  47. package/node_modules/console-control-strings/README.md +145 -0
  48. package/node_modules/console-control-strings/README.md~ +140 -0
  49. package/node_modules/console-control-strings/index.js +125 -0
  50. package/node_modules/console-control-strings/package.json +61 -0
  51. package/node_modules/core-util-is/LICENSE +19 -0
  52. package/node_modules/core-util-is/README.md +3 -0
  53. package/node_modules/core-util-is/float.patch +604 -0
  54. package/node_modules/core-util-is/lib/util.js +107 -0
  55. package/node_modules/core-util-is/package.json +62 -0
  56. package/node_modules/core-util-is/test.js +68 -0
  57. package/node_modules/debug/.coveralls.yml +1 -0
  58. package/node_modules/debug/.eslintrc +11 -0
  59. package/node_modules/debug/.npmignore +9 -0
  60. package/node_modules/debug/.travis.yml +14 -0
  61. package/node_modules/debug/CHANGELOG.md +362 -0
  62. package/node_modules/debug/LICENSE +19 -0
  63. package/node_modules/debug/Makefile +50 -0
  64. package/node_modules/debug/README.md +312 -0
  65. package/node_modules/debug/component.json +19 -0
  66. package/node_modules/debug/karma.conf.js +70 -0
  67. package/node_modules/debug/node.js +1 -0
  68. package/node_modules/debug/package.json +88 -0
  69. package/node_modules/debug/src/browser.js +185 -0
  70. package/node_modules/debug/src/debug.js +202 -0
  71. package/node_modules/debug/src/index.js +10 -0
  72. package/node_modules/debug/src/inspector-log.js +15 -0
  73. package/node_modules/debug/src/node.js +248 -0
  74. package/node_modules/deep-extend/CHANGELOG.md +46 -0
  75. package/node_modules/deep-extend/LICENSE +20 -0
  76. package/node_modules/deep-extend/README.md +91 -0
  77. package/node_modules/deep-extend/index.js +1 -0
  78. package/node_modules/deep-extend/lib/deep-extend.js +150 -0
  79. package/node_modules/deep-extend/package.json +92 -0
  80. package/node_modules/delegates/.npmignore +1 -0
  81. package/node_modules/delegates/History.md +22 -0
  82. package/node_modules/delegates/License +20 -0
  83. package/node_modules/delegates/Makefile +8 -0
  84. package/node_modules/delegates/Readme.md +94 -0
  85. package/node_modules/delegates/index.js +121 -0
  86. package/node_modules/delegates/package.json +48 -0
  87. package/node_modules/delegates/test/index.js +94 -0
  88. package/node_modules/detect-libc/.npmignore +7 -0
  89. package/node_modules/detect-libc/LICENSE +201 -0
  90. package/node_modules/detect-libc/README.md +78 -0
  91. package/node_modules/detect-libc/bin/detect-libc.js +18 -0
  92. package/node_modules/detect-libc/lib/detect-libc.js +92 -0
  93. package/node_modules/detect-libc/package.json +70 -0
  94. package/node_modules/fs-minipass/LICENSE +15 -0
  95. package/node_modules/fs-minipass/README.md +70 -0
  96. package/node_modules/fs-minipass/index.js +386 -0
  97. package/node_modules/fs-minipass/package.json +62 -0
  98. package/node_modules/fs.realpath/LICENSE +43 -0
  99. package/node_modules/fs.realpath/README.md +33 -0
  100. package/node_modules/fs.realpath/index.js +66 -0
  101. package/node_modules/fs.realpath/old.js +303 -0
  102. package/node_modules/fs.realpath/package.json +59 -0
  103. package/node_modules/gauge/CHANGELOG.md +160 -0
  104. package/node_modules/gauge/LICENSE +13 -0
  105. package/node_modules/gauge/README.md +399 -0
  106. package/node_modules/gauge/base-theme.js +14 -0
  107. package/node_modules/gauge/error.js +24 -0
  108. package/node_modules/gauge/has-color.js +12 -0
  109. package/node_modules/gauge/index.js +233 -0
  110. package/node_modules/gauge/package.json +91 -0
  111. package/node_modules/gauge/plumbing.js +48 -0
  112. package/node_modules/gauge/process.js +3 -0
  113. package/node_modules/gauge/progress-bar.js +35 -0
  114. package/node_modules/gauge/render-template.js +181 -0
  115. package/node_modules/gauge/set-immediate.js +7 -0
  116. package/node_modules/gauge/set-interval.js +3 -0
  117. package/node_modules/gauge/spin.js +5 -0
  118. package/node_modules/gauge/template-item.js +73 -0
  119. package/node_modules/gauge/theme-set.js +115 -0
  120. package/node_modules/gauge/themes.js +54 -0
  121. package/node_modules/gauge/wide-truncate.js +25 -0
  122. package/node_modules/glob/LICENSE +15 -0
  123. package/node_modules/glob/README.md +368 -0
  124. package/node_modules/glob/changelog.md +67 -0
  125. package/node_modules/glob/common.js +240 -0
  126. package/node_modules/glob/glob.js +790 -0
  127. package/node_modules/glob/package.json +76 -0
  128. package/node_modules/glob/sync.js +486 -0
  129. package/node_modules/has-unicode/LICENSE +14 -0
  130. package/node_modules/has-unicode/README.md +43 -0
  131. package/node_modules/has-unicode/index.js +16 -0
  132. package/node_modules/has-unicode/package.json +58 -0
  133. package/node_modules/iconv-lite/Changelog.md +162 -0
  134. package/node_modules/iconv-lite/LICENSE +21 -0
  135. package/node_modules/iconv-lite/README.md +156 -0
  136. package/node_modules/iconv-lite/encodings/dbcs-codec.js +555 -0
  137. package/node_modules/iconv-lite/encodings/dbcs-data.js +176 -0
  138. package/node_modules/iconv-lite/encodings/index.js +22 -0
  139. package/node_modules/iconv-lite/encodings/internal.js +188 -0
  140. package/node_modules/iconv-lite/encodings/sbcs-codec.js +72 -0
  141. package/node_modules/iconv-lite/encodings/sbcs-data-generated.js +451 -0
  142. package/node_modules/iconv-lite/encodings/sbcs-data.js +174 -0
  143. package/node_modules/iconv-lite/encodings/tables/big5-added.json +122 -0
  144. package/node_modules/iconv-lite/encodings/tables/cp936.json +264 -0
  145. package/node_modules/iconv-lite/encodings/tables/cp949.json +273 -0
  146. package/node_modules/iconv-lite/encodings/tables/cp950.json +177 -0
  147. package/node_modules/iconv-lite/encodings/tables/eucjp.json +182 -0
  148. package/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +1 -0
  149. package/node_modules/iconv-lite/encodings/tables/gbk-added.json +55 -0
  150. package/node_modules/iconv-lite/encodings/tables/shiftjis.json +125 -0
  151. package/node_modules/iconv-lite/encodings/utf16.js +177 -0
  152. package/node_modules/iconv-lite/encodings/utf7.js +290 -0
  153. package/node_modules/iconv-lite/lib/bom-handling.js +52 -0
  154. package/node_modules/iconv-lite/lib/extend-node.js +217 -0
  155. package/node_modules/iconv-lite/lib/index.d.ts +24 -0
  156. package/node_modules/iconv-lite/lib/index.js +153 -0
  157. package/node_modules/iconv-lite/lib/streams.js +121 -0
  158. package/node_modules/iconv-lite/package.json +76 -0
  159. package/node_modules/ignore-walk/LICENSE +15 -0
  160. package/node_modules/ignore-walk/README.md +60 -0
  161. package/node_modules/ignore-walk/index.js +265 -0
  162. package/node_modules/ignore-walk/package.json +71 -0
  163. package/node_modules/inflight/LICENSE +15 -0
  164. package/node_modules/inflight/README.md +37 -0
  165. package/node_modules/inflight/inflight.js +54 -0
  166. package/node_modules/inflight/package.json +58 -0
  167. package/node_modules/inherits/LICENSE +16 -0
  168. package/node_modules/inherits/README.md +42 -0
  169. package/node_modules/inherits/inherits.js +7 -0
  170. package/node_modules/inherits/inherits_browser.js +23 -0
  171. package/node_modules/inherits/package.json +64 -0
  172. package/node_modules/ini/LICENSE +15 -0
  173. package/node_modules/ini/README.md +102 -0
  174. package/node_modules/ini/ini.js +194 -0
  175. package/node_modules/ini/package.json +63 -0
  176. package/node_modules/is-fullwidth-code-point/index.js +46 -0
  177. package/node_modules/is-fullwidth-code-point/license +21 -0
  178. package/node_modules/is-fullwidth-code-point/package.json +77 -0
  179. package/node_modules/is-fullwidth-code-point/readme.md +39 -0
  180. package/node_modules/isarray/.npmignore +1 -0
  181. package/node_modules/isarray/.travis.yml +4 -0
  182. package/node_modules/isarray/Makefile +6 -0
  183. package/node_modules/isarray/README.md +60 -0
  184. package/node_modules/isarray/component.json +19 -0
  185. package/node_modules/isarray/index.js +5 -0
  186. package/node_modules/isarray/package.json +73 -0
  187. package/node_modules/isarray/test.js +20 -0
  188. package/node_modules/minimatch/LICENSE +15 -0
  189. package/node_modules/minimatch/README.md +209 -0
  190. package/node_modules/minimatch/minimatch.js +923 -0
  191. package/node_modules/minimatch/package.json +64 -0
  192. package/node_modules/minimist/.travis.yml +4 -0
  193. package/node_modules/minimist/LICENSE +18 -0
  194. package/node_modules/minimist/example/parse.js +2 -0
  195. package/node_modules/minimist/index.js +187 -0
  196. package/node_modules/minimist/package.json +71 -0
  197. package/node_modules/minimist/readme.markdown +73 -0
  198. package/node_modules/minimist/test/dash.js +24 -0
  199. package/node_modules/minimist/test/default_bool.js +20 -0
  200. package/node_modules/minimist/test/dotted.js +16 -0
  201. package/node_modules/minimist/test/long.js +31 -0
  202. package/node_modules/minimist/test/parse.js +318 -0
  203. package/node_modules/minimist/test/parse_modified.js +9 -0
  204. package/node_modules/minimist/test/short.js +67 -0
  205. package/node_modules/minimist/test/whitespace.js +8 -0
  206. package/node_modules/minipass/LICENSE +15 -0
  207. package/node_modules/minipass/README.md +124 -0
  208. package/node_modules/minipass/index.js +375 -0
  209. package/node_modules/minipass/package.json +69 -0
  210. package/node_modules/minizlib/LICENSE +26 -0
  211. package/node_modules/minizlib/README.md +44 -0
  212. package/node_modules/minizlib/constants.js +46 -0
  213. package/node_modules/minizlib/index.js +335 -0
  214. package/node_modules/minizlib/package.json +71 -0
  215. package/node_modules/mkdirp/.travis.yml +8 -0
  216. package/node_modules/mkdirp/LICENSE +21 -0
  217. package/node_modules/mkdirp/bin/cmd.js +33 -0
  218. package/node_modules/mkdirp/bin/usage.txt +12 -0
  219. package/node_modules/mkdirp/examples/pow.js +6 -0
  220. package/node_modules/mkdirp/index.js +98 -0
  221. package/node_modules/mkdirp/package.json +64 -0
  222. package/node_modules/mkdirp/readme.markdown +100 -0
  223. package/node_modules/mkdirp/test/chmod.js +41 -0
  224. package/node_modules/mkdirp/test/clobber.js +38 -0
  225. package/node_modules/mkdirp/test/mkdirp.js +28 -0
  226. package/node_modules/mkdirp/test/opts_fs.js +29 -0
  227. package/node_modules/mkdirp/test/opts_fs_sync.js +27 -0
  228. package/node_modules/mkdirp/test/perm.js +32 -0
  229. package/node_modules/mkdirp/test/perm_sync.js +36 -0
  230. package/node_modules/mkdirp/test/race.js +37 -0
  231. package/node_modules/mkdirp/test/rel.js +32 -0
  232. package/node_modules/mkdirp/test/return.js +25 -0
  233. package/node_modules/mkdirp/test/return_sync.js +24 -0
  234. package/node_modules/mkdirp/test/root.js +19 -0
  235. package/node_modules/mkdirp/test/sync.js +32 -0
  236. package/node_modules/mkdirp/test/umask.js +28 -0
  237. package/node_modules/mkdirp/test/umask_sync.js +32 -0
  238. package/node_modules/ms/index.js +152 -0
  239. package/node_modules/ms/license.md +21 -0
  240. package/node_modules/ms/package.json +69 -0
  241. package/node_modules/ms/readme.md +51 -0
  242. package/node_modules/needle/README.md +594 -0
  243. package/node_modules/needle/bin/needle +40 -0
  244. package/node_modules/needle/examples/deflated-stream.js +22 -0
  245. package/node_modules/needle/examples/digest-auth.js +16 -0
  246. package/node_modules/needle/examples/download-to-file.js +18 -0
  247. package/node_modules/needle/examples/multipart-stream.js +25 -0
  248. package/node_modules/needle/examples/parsed-stream.js +23 -0
  249. package/node_modules/needle/examples/parsed-stream2.js +21 -0
  250. package/node_modules/needle/examples/stream-events.js +23 -0
  251. package/node_modules/needle/examples/stream-to-file.js +14 -0
  252. package/node_modules/needle/examples/upload-image.js +51 -0
  253. package/node_modules/needle/lib/auth.js +110 -0
  254. package/node_modules/needle/lib/cookies.js +79 -0
  255. package/node_modules/needle/lib/decoder.js +53 -0
  256. package/node_modules/needle/lib/multipart.js +98 -0
  257. package/node_modules/needle/lib/needle.js +795 -0
  258. package/node_modules/needle/lib/parsers.js +120 -0
  259. package/node_modules/needle/lib/querystring.js +49 -0
  260. package/node_modules/needle/license.txt +19 -0
  261. package/node_modules/needle/note.xml +7 -0
  262. package/node_modules/needle/note.xml.1 +7 -0
  263. package/node_modules/needle/package.json +102 -0
  264. package/node_modules/needle/test/basic_auth_spec.js +196 -0
  265. package/node_modules/needle/test/compression_spec.js +94 -0
  266. package/node_modules/needle/test/cookies_spec.js +305 -0
  267. package/node_modules/needle/test/decoder_spec.js +86 -0
  268. package/node_modules/needle/test/errors_spec.js +286 -0
  269. package/node_modules/needle/test/headers_spec.js +198 -0
  270. package/node_modules/needle/test/helpers.js +72 -0
  271. package/node_modules/needle/test/long_string_spec.js +34 -0
  272. package/node_modules/needle/test/output_spec.js +254 -0
  273. package/node_modules/needle/test/parsing_spec.js +494 -0
  274. package/node_modules/needle/test/post_data_spec.js +1021 -0
  275. package/node_modules/needle/test/proxy_spec.js +202 -0
  276. package/node_modules/needle/test/querystring_spec.js +128 -0
  277. package/node_modules/needle/test/redirect_spec.js +392 -0
  278. package/node_modules/needle/test/redirect_with_timeout.js +45 -0
  279. package/node_modules/needle/test/request_stream_spec.js +202 -0
  280. package/node_modules/needle/test/response_stream_spec.js +139 -0
  281. package/node_modules/needle/test/socket_pool_spec.js +66 -0
  282. package/node_modules/needle/test/url_spec.js +155 -0
  283. package/node_modules/needle/test/utils/formidable.js +17 -0
  284. package/node_modules/needle/test/utils/proxy.js +62 -0
  285. package/node_modules/needle/test/utils/test.js +104 -0
  286. package/node_modules/node-pre-gyp/CHANGELOG.md +422 -0
  287. package/node_modules/node-pre-gyp/LICENSE +27 -0
  288. package/node_modules/node-pre-gyp/README.md +658 -0
  289. package/node_modules/node-pre-gyp/appveyor.yml +30 -0
  290. package/node_modules/node-pre-gyp/bin/node-pre-gyp +134 -0
  291. package/node_modules/node-pre-gyp/bin/node-pre-gyp.cmd +2 -0
  292. package/node_modules/node-pre-gyp/contributing.md +10 -0
  293. package/node_modules/node-pre-gyp/lib/build.js +51 -0
  294. package/node_modules/node-pre-gyp/lib/clean.js +32 -0
  295. package/node_modules/node-pre-gyp/lib/configure.js +52 -0
  296. package/node_modules/node-pre-gyp/lib/info.js +40 -0
  297. package/node_modules/node-pre-gyp/lib/install.js +243 -0
  298. package/node_modules/node-pre-gyp/lib/node-pre-gyp.js +203 -0
  299. package/node_modules/node-pre-gyp/lib/package.js +56 -0
  300. package/node_modules/node-pre-gyp/lib/pre-binding.js +30 -0
  301. package/node_modules/node-pre-gyp/lib/publish.js +79 -0
  302. package/node_modules/node-pre-gyp/lib/rebuild.js +21 -0
  303. package/node_modules/node-pre-gyp/lib/reinstall.js +20 -0
  304. package/node_modules/node-pre-gyp/lib/reveal.js +33 -0
  305. package/node_modules/node-pre-gyp/lib/testbinary.js +81 -0
  306. package/node_modules/node-pre-gyp/lib/testpackage.js +55 -0
  307. package/node_modules/node-pre-gyp/lib/unpublish.js +43 -0
  308. package/node_modules/node-pre-gyp/lib/util/abi_crosswalk.json +1782 -0
  309. package/node_modules/node-pre-gyp/lib/util/compile.js +87 -0
  310. package/node_modules/node-pre-gyp/lib/util/handle_gyp_opts.js +100 -0
  311. package/node_modules/node-pre-gyp/lib/util/napi.js +156 -0
  312. package/node_modules/node-pre-gyp/lib/util/nw-pre-gyp/index.html +26 -0
  313. package/node_modules/node-pre-gyp/lib/util/nw-pre-gyp/package.json +9 -0
  314. package/node_modules/node-pre-gyp/lib/util/s3_setup.js +27 -0
  315. package/node_modules/node-pre-gyp/lib/util/versioning.js +330 -0
  316. package/node_modules/node-pre-gyp/package.json +86 -0
  317. package/node_modules/nopt/.npmignore +1 -0
  318. package/node_modules/nopt/.travis.yml +8 -0
  319. package/node_modules/nopt/CHANGELOG.md +58 -0
  320. package/node_modules/nopt/LICENSE +15 -0
  321. package/node_modules/nopt/README.md +213 -0
  322. package/node_modules/nopt/bin/nopt.js +54 -0
  323. package/node_modules/nopt/examples/my-program.js +30 -0
  324. package/node_modules/nopt/lib/nopt.js +436 -0
  325. package/node_modules/nopt/package.json +58 -0
  326. package/node_modules/nopt/test/basic.js +303 -0
  327. package/node_modules/npm-bundled/LICENSE +15 -0
  328. package/node_modules/npm-bundled/README.md +48 -0
  329. package/node_modules/npm-bundled/index.js +229 -0
  330. package/node_modules/npm-bundled/package.json +60 -0
  331. package/node_modules/npm-packlist/LICENSE +15 -0
  332. package/node_modules/npm-packlist/README.md +68 -0
  333. package/node_modules/npm-packlist/index.js +229 -0
  334. package/node_modules/npm-packlist/package.json +66 -0
  335. package/node_modules/npmlog/CHANGELOG.md +49 -0
  336. package/node_modules/npmlog/LICENSE +15 -0
  337. package/node_modules/npmlog/README.md +216 -0
  338. package/node_modules/npmlog/log.js +309 -0
  339. package/node_modules/npmlog/package.json +61 -0
  340. package/node_modules/number-is-nan/index.js +4 -0
  341. package/node_modules/number-is-nan/license +21 -0
  342. package/node_modules/number-is-nan/package.json +67 -0
  343. package/node_modules/number-is-nan/readme.md +28 -0
  344. package/node_modules/object-assign/index.js +90 -0
  345. package/node_modules/object-assign/license +21 -0
  346. package/node_modules/object-assign/package.json +74 -0
  347. package/node_modules/object-assign/readme.md +61 -0
  348. package/node_modules/once/LICENSE +15 -0
  349. package/node_modules/once/README.md +79 -0
  350. package/node_modules/once/once.js +42 -0
  351. package/node_modules/once/package.json +67 -0
  352. package/node_modules/os-homedir/index.js +24 -0
  353. package/node_modules/os-homedir/license +21 -0
  354. package/node_modules/os-homedir/package.json +73 -0
  355. package/node_modules/os-homedir/readme.md +31 -0
  356. package/node_modules/os-tmpdir/index.js +25 -0
  357. package/node_modules/os-tmpdir/license +21 -0
  358. package/node_modules/os-tmpdir/package.json +73 -0
  359. package/node_modules/os-tmpdir/readme.md +32 -0
  360. package/node_modules/osenv/LICENSE +15 -0
  361. package/node_modules/osenv/README.md +63 -0
  362. package/node_modules/osenv/osenv.js +72 -0
  363. package/node_modules/osenv/package.json +73 -0
  364. package/node_modules/path-is-absolute/index.js +20 -0
  365. package/node_modules/path-is-absolute/license +21 -0
  366. package/node_modules/path-is-absolute/package.json +75 -0
  367. package/node_modules/path-is-absolute/readme.md +59 -0
  368. package/node_modules/process-nextick-args/index.js +44 -0
  369. package/node_modules/process-nextick-args/license.md +19 -0
  370. package/node_modules/process-nextick-args/package.json +50 -0
  371. package/node_modules/process-nextick-args/readme.md +18 -0
  372. package/node_modules/rc/LICENSE.APACHE2 +15 -0
  373. package/node_modules/rc/LICENSE.BSD +26 -0
  374. package/node_modules/rc/LICENSE.MIT +24 -0
  375. package/node_modules/rc/README.md +227 -0
  376. package/node_modules/rc/browser.js +7 -0
  377. package/node_modules/rc/cli.js +4 -0
  378. package/node_modules/rc/index.js +53 -0
  379. package/node_modules/rc/lib/utils.js +104 -0
  380. package/node_modules/rc/node_modules/minimist/.travis.yml +8 -0
  381. package/node_modules/rc/node_modules/minimist/LICENSE +18 -0
  382. package/node_modules/rc/node_modules/minimist/example/parse.js +2 -0
  383. package/node_modules/rc/node_modules/minimist/index.js +236 -0
  384. package/node_modules/rc/node_modules/minimist/package.json +73 -0
  385. package/node_modules/rc/node_modules/minimist/readme.markdown +91 -0
  386. package/node_modules/rc/node_modules/minimist/test/all_bool.js +32 -0
  387. package/node_modules/rc/node_modules/minimist/test/bool.js +166 -0
  388. package/node_modules/rc/node_modules/minimist/test/dash.js +31 -0
  389. package/node_modules/rc/node_modules/minimist/test/default_bool.js +35 -0
  390. package/node_modules/rc/node_modules/minimist/test/dotted.js +22 -0
  391. package/node_modules/rc/node_modules/minimist/test/kv_short.js +16 -0
  392. package/node_modules/rc/node_modules/minimist/test/long.js +31 -0
  393. package/node_modules/rc/node_modules/minimist/test/num.js +36 -0
  394. package/node_modules/rc/node_modules/minimist/test/parse.js +197 -0
  395. package/node_modules/rc/node_modules/minimist/test/parse_modified.js +9 -0
  396. package/node_modules/rc/node_modules/minimist/test/short.js +67 -0
  397. package/node_modules/rc/node_modules/minimist/test/stop_early.js +15 -0
  398. package/node_modules/rc/node_modules/minimist/test/unknown.js +102 -0
  399. package/node_modules/rc/node_modules/minimist/test/whitespace.js +8 -0
  400. package/node_modules/rc/package.json +64 -0
  401. package/node_modules/rc/test/ini.js +16 -0
  402. package/node_modules/rc/test/nested-env-vars.js +50 -0
  403. package/node_modules/rc/test/test.js +59 -0
  404. package/node_modules/readable-stream/.travis.yml +55 -0
  405. package/node_modules/readable-stream/CONTRIBUTING.md +38 -0
  406. package/node_modules/readable-stream/GOVERNANCE.md +136 -0
  407. package/node_modules/readable-stream/LICENSE +47 -0
  408. package/node_modules/readable-stream/README.md +58 -0
  409. package/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +60 -0
  410. package/node_modules/readable-stream/duplex-browser.js +1 -0
  411. package/node_modules/readable-stream/duplex.js +1 -0
  412. package/node_modules/readable-stream/lib/_stream_duplex.js +131 -0
  413. package/node_modules/readable-stream/lib/_stream_passthrough.js +47 -0
  414. package/node_modules/readable-stream/lib/_stream_readable.js +1019 -0
  415. package/node_modules/readable-stream/lib/_stream_transform.js +214 -0
  416. package/node_modules/readable-stream/lib/_stream_writable.js +687 -0
  417. package/node_modules/readable-stream/lib/internal/streams/BufferList.js +79 -0
  418. package/node_modules/readable-stream/lib/internal/streams/destroy.js +74 -0
  419. package/node_modules/readable-stream/lib/internal/streams/stream-browser.js +1 -0
  420. package/node_modules/readable-stream/lib/internal/streams/stream.js +1 -0
  421. package/node_modules/readable-stream/package.json +81 -0
  422. package/node_modules/readable-stream/passthrough.js +1 -0
  423. package/node_modules/readable-stream/readable-browser.js +7 -0
  424. package/node_modules/readable-stream/readable.js +19 -0
  425. package/node_modules/readable-stream/transform.js +1 -0
  426. package/node_modules/readable-stream/writable-browser.js +1 -0
  427. package/node_modules/readable-stream/writable.js +8 -0
  428. package/node_modules/rimraf/LICENSE +15 -0
  429. package/node_modules/rimraf/README.md +101 -0
  430. package/node_modules/rimraf/bin.js +50 -0
  431. package/node_modules/rimraf/package.json +67 -0
  432. package/node_modules/rimraf/rimraf.js +364 -0
  433. package/node_modules/safe-buffer/LICENSE +21 -0
  434. package/node_modules/safe-buffer/README.md +584 -0
  435. package/node_modules/safe-buffer/index.d.ts +187 -0
  436. package/node_modules/safe-buffer/index.js +62 -0
  437. package/node_modules/safe-buffer/package.json +65 -0
  438. package/node_modules/safer-buffer/LICENSE +21 -0
  439. package/node_modules/safer-buffer/Porting-Buffer.md +268 -0
  440. package/node_modules/safer-buffer/Readme.md +156 -0
  441. package/node_modules/safer-buffer/dangerous.js +58 -0
  442. package/node_modules/safer-buffer/package.json +60 -0
  443. package/node_modules/safer-buffer/safer.js +77 -0
  444. package/node_modules/safer-buffer/tests.js +406 -0
  445. package/node_modules/sax/LICENSE +41 -0
  446. package/node_modules/sax/README.md +225 -0
  447. package/node_modules/sax/lib/sax.js +1565 -0
  448. package/node_modules/sax/package.json +61 -0
  449. package/node_modules/semver/LICENSE +15 -0
  450. package/node_modules/semver/README.md +399 -0
  451. package/node_modules/semver/bin/semver +153 -0
  452. package/node_modules/semver/package.json +54 -0
  453. package/node_modules/semver/range.bnf +16 -0
  454. package/node_modules/semver/semver.js +1352 -0
  455. package/node_modules/set-blocking/CHANGELOG.md +26 -0
  456. package/node_modules/set-blocking/LICENSE.txt +14 -0
  457. package/node_modules/set-blocking/README.md +31 -0
  458. package/node_modules/set-blocking/index.js +7 -0
  459. package/node_modules/set-blocking/package.json +70 -0
  460. package/node_modules/signal-exit/CHANGELOG.md +27 -0
  461. package/node_modules/signal-exit/LICENSE.txt +16 -0
  462. package/node_modules/signal-exit/README.md +40 -0
  463. package/node_modules/signal-exit/index.js +157 -0
  464. package/node_modules/signal-exit/package.json +66 -0
  465. package/node_modules/signal-exit/signals.js +53 -0
  466. package/node_modules/string-width/index.js +37 -0
  467. package/node_modules/string-width/license +21 -0
  468. package/node_modules/string-width/package.json +89 -0
  469. package/node_modules/string-width/readme.md +42 -0
  470. package/node_modules/string_decoder/.travis.yml +50 -0
  471. package/node_modules/string_decoder/LICENSE +48 -0
  472. package/node_modules/string_decoder/README.md +47 -0
  473. package/node_modules/string_decoder/lib/string_decoder.js +296 -0
  474. package/node_modules/string_decoder/package.json +59 -0
  475. package/node_modules/strip-ansi/index.js +6 -0
  476. package/node_modules/strip-ansi/license +21 -0
  477. package/node_modules/strip-ansi/package.json +102 -0
  478. package/node_modules/strip-ansi/readme.md +33 -0
  479. package/node_modules/strip-json-comments/index.js +70 -0
  480. package/node_modules/strip-json-comments/license +21 -0
  481. package/node_modules/strip-json-comments/package.json +74 -0
  482. package/node_modules/strip-json-comments/readme.md +64 -0
  483. package/node_modules/tar/LICENSE +15 -0
  484. package/node_modules/tar/README.md +954 -0
  485. package/node_modules/tar/index.js +18 -0
  486. package/node_modules/tar/lib/buffer.js +11 -0
  487. package/node_modules/tar/lib/create.js +105 -0
  488. package/node_modules/tar/lib/extract.js +112 -0
  489. package/node_modules/tar/lib/header.js +289 -0
  490. package/node_modules/tar/lib/high-level-opt.js +29 -0
  491. package/node_modules/tar/lib/large-numbers.js +92 -0
  492. package/node_modules/tar/lib/list.js +130 -0
  493. package/node_modules/tar/lib/mkdir.js +206 -0
  494. package/node_modules/tar/lib/mode-fix.js +14 -0
  495. package/node_modules/tar/lib/pack.js +404 -0
  496. package/node_modules/tar/lib/parse.js +423 -0
  497. package/node_modules/tar/lib/pax.js +146 -0
  498. package/node_modules/tar/lib/read-entry.js +94 -0
  499. package/node_modules/tar/lib/replace.js +220 -0
  500. package/node_modules/tar/lib/types.js +44 -0
  501. package/node_modules/tar/lib/unpack.js +621 -0
  502. package/node_modules/tar/lib/update.js +36 -0
  503. package/node_modules/tar/lib/warn-mixin.js +14 -0
  504. package/node_modules/tar/lib/winchars.js +23 -0
  505. package/node_modules/tar/lib/write-entry.js +422 -0
  506. package/node_modules/tar/package.json +78 -0
  507. package/node_modules/util-deprecate/History.md +16 -0
  508. package/node_modules/util-deprecate/LICENSE +24 -0
  509. package/node_modules/util-deprecate/README.md +53 -0
  510. package/node_modules/util-deprecate/browser.js +67 -0
  511. package/node_modules/util-deprecate/node.js +6 -0
  512. package/node_modules/util-deprecate/package.json +56 -0
  513. package/node_modules/wide-align/LICENSE +14 -0
  514. package/node_modules/wide-align/README.md +47 -0
  515. package/node_modules/wide-align/align.js +65 -0
  516. package/node_modules/wide-align/package.json +66 -0
  517. package/node_modules/wrappy/LICENSE +15 -0
  518. package/node_modules/wrappy/README.md +36 -0
  519. package/node_modules/wrappy/package.json +59 -0
  520. package/node_modules/wrappy/wrappy.js +33 -0
  521. package/node_modules/yallist/LICENSE +15 -0
  522. package/node_modules/yallist/README.md +204 -0
  523. package/node_modules/yallist/iterator.js +8 -0
  524. package/node_modules/yallist/package.json +63 -0
  525. package/node_modules/yallist/yallist.js +376 -0
  526. package/package.json +1 -1
@@ -0,0 +1,795 @@
1
+ //////////////////////////////////////////
2
+ // Needle -- HTTP Client for Node.js
3
+ // Written by Tomás Pollak <tomas@forkhq.com>
4
+ // (c) 2012-2017 - Fork Ltd.
5
+ // MIT Licensed
6
+ //////////////////////////////////////////
7
+
8
+ var fs = require('fs'),
9
+ http = require('http'),
10
+ https = require('https'),
11
+ url = require('url'),
12
+ stream = require('stream'),
13
+ debug = require('debug')('needle'),
14
+ stringify = require('./querystring').build,
15
+ multipart = require('./multipart'),
16
+ auth = require('./auth'),
17
+ cookies = require('./cookies'),
18
+ parsers = require('./parsers'),
19
+ decoder = require('./decoder');
20
+
21
+ //////////////////////////////////////////
22
+ // variabilia
23
+
24
+ var version = require('../package.json').version;
25
+
26
+ var user_agent = 'Needle/' + version;
27
+ user_agent += ' (Node.js ' + process.version + '; ' + process.platform + ' ' + process.arch + ')';
28
+
29
+ var tls_options = 'agent pfx key passphrase cert ca ciphers rejectUnauthorized secureProtocol checkServerIdentity';
30
+
31
+ // older versions of node (< 0.11.4) prevent the runtime from exiting
32
+ // because of connections in keep-alive state. so if this is the case
33
+ // we'll default new requests to set a Connection: close header.
34
+ var close_by_default = !http.Agent || http.Agent.defaultMaxSockets != Infinity;
35
+
36
+ // see if we have Object.assign. otherwise fall back to util._extend
37
+ var extend = Object.assign ? Object.assign : require('util')._extend;
38
+
39
+ // these are the status codes that Needle interprets as redirects.
40
+ var redirect_codes = [301, 302, 303, 307];
41
+
42
+ //////////////////////////////////////////
43
+ // decompressors for gzip/deflate bodies
44
+
45
+ var decompressors = {};
46
+
47
+ try {
48
+
49
+ var zlib = require('zlib');
50
+ decompressors['x-deflate'] = zlib.Inflate;
51
+ decompressors['deflate'] = zlib.Inflate;
52
+ decompressors['x-gzip'] = zlib.Gunzip;
53
+ decompressors['gzip'] = zlib.Gunzip;
54
+
55
+ // Enable Z_SYNC_FLUSH to avoid Z_BUF_ERROR errors (Node PR #2595)
56
+ var zlib_options = {
57
+ flush: zlib.Z_SYNC_FLUSH,
58
+ finishFlush: zlib.Z_SYNC_FLUSH
59
+ }
60
+
61
+ } catch(e) { /* zlib not available */ }
62
+
63
+ //////////////////////////////////////////
64
+ // options and aliases
65
+
66
+ var defaults = {
67
+ // data
68
+ boundary : '--------------------NODENEEDLEHTTPCLIENT',
69
+ encoding : 'utf8',
70
+ parse_response : 'all', // same as true. valid options: 'json', 'xml' or false/null
71
+ proxy : null,
72
+
73
+ // headers
74
+ accept : '*/*',
75
+ user_agent : user_agent,
76
+
77
+ // numbers
78
+ open_timeout : 10000,
79
+ response_timeout : 0,
80
+ read_timeout : 0,
81
+ follow_max : 0,
82
+ stream_length : -1,
83
+
84
+ // booleans
85
+ decode_response : true,
86
+ parse_cookies : true,
87
+ follow_set_cookies : false,
88
+ follow_set_referer : false,
89
+ follow_keep_method : false,
90
+ follow_if_same_host : false,
91
+ follow_if_same_protocol : false
92
+ }
93
+
94
+ var aliased = {
95
+ options: {
96
+ decode : 'decode_response',
97
+ parse : 'parse_response',
98
+ timeout : 'open_timeout',
99
+ follow : 'follow_max'
100
+ },
101
+ inverted: {}
102
+ }
103
+
104
+ // only once, invert aliased keys so we can get passed options.
105
+ Object.keys(aliased.options).map(function(k) {
106
+ var value = aliased.options[k];
107
+ aliased.inverted[value] = k;
108
+ });
109
+
110
+ //////////////////////////////////////////
111
+ // helpers
112
+
113
+ function keys_by_type(type) {
114
+ return Object.keys(defaults).map(function(el) {
115
+ if (defaults[el] !== null && defaults[el].constructor == type)
116
+ return el;
117
+ }).filter(function(el) { return el })
118
+ }
119
+
120
+ function parse_content_type(header) {
121
+ if (!header || header === '') return {};
122
+
123
+ var found, charset = 'iso-8859-1', arr = header.split(';');
124
+
125
+ if (arr.length > 1 && (found = arr[1].match(/charset=(.+)/)))
126
+ charset = found[1];
127
+
128
+ return { type: arr[0], charset: charset };
129
+ }
130
+
131
+ function is_stream(obj) {
132
+ return typeof obj.pipe === 'function';
133
+ }
134
+
135
+ function get_stream_length(stream, given_length, cb) {
136
+ if (given_length > 0)
137
+ return cb(given_length);
138
+
139
+ if (stream.end !== void 0 && stream.end !== Infinity && stream.start !== void 0)
140
+ return cb((stream.end + 1) - (stream.start || 0));
141
+
142
+ fs.stat(stream.path, function(err, stat) {
143
+ cb(stat ? stat.size - (stream.start || 0) : null);
144
+ });
145
+ }
146
+
147
+ //////////////////////////////////////////
148
+ // the main act
149
+
150
+ function Needle(method, uri, data, options, callback) {
151
+ // if (!(this instanceof Needle)) {
152
+ // return new Needle(method, uri, data, options, callback);
153
+ // }
154
+
155
+ if (typeof uri !== 'string')
156
+ throw new TypeError('URL must be a string, not ' + uri);
157
+
158
+ this.method = method;
159
+ this.uri = uri;
160
+ this.data = data;
161
+
162
+ if (typeof options == 'function') {
163
+ this.callback = options;
164
+ this.options = {};
165
+ } else {
166
+ this.callback = callback;
167
+ this.options = options;
168
+ }
169
+
170
+ }
171
+
172
+ Needle.prototype.setup = function(uri, options) {
173
+
174
+ function get_option(key, fallback) {
175
+ // if original is in options, return that value
176
+ if (typeof options[key] != 'undefined') return options[key];
177
+
178
+ // otherwise, return value from alias or fallback/undefined
179
+ return typeof options[aliased.inverted[key]] != 'undefined'
180
+ ? options[aliased.inverted[key]] : fallback;
181
+ }
182
+
183
+ function check_value(expected, key) {
184
+ var value = get_option(key),
185
+ type = typeof value;
186
+
187
+ if (type != 'undefined' && type != expected)
188
+ throw new TypeError(type + ' received for ' + key + ', but expected a ' + expected);
189
+
190
+ return (type == expected) ? value : defaults[key];
191
+ }
192
+
193
+ //////////////////////////////////////////////////
194
+ // the basics
195
+
196
+ var config = {
197
+ http_opts : {
198
+ localAddress: get_option('localAddress', undefined)
199
+ }, // passed later to http.request() directly
200
+ output : options.output,
201
+ proxy : get_option('proxy', defaults.proxy),
202
+ parser : get_option('parse_response', defaults.parse_response),
203
+ encoding : options.encoding || (options.multipart ? 'binary' : defaults.encoding)
204
+ }
205
+
206
+ keys_by_type(Boolean).forEach(function(key) {
207
+ config[key] = check_value('boolean', key);
208
+ })
209
+
210
+ keys_by_type(Number).forEach(function(key) {
211
+ config[key] = check_value('number', key);
212
+ })
213
+
214
+ // populate http_opts with given TLS options
215
+ tls_options.split(' ').forEach(function(key) {
216
+ if (typeof options[key] != 'undefined') {
217
+ config.http_opts[key] = options[key];
218
+ if (typeof options.agent == 'undefined')
219
+ config.http_opts.agent = false; // otherwise tls options are skipped
220
+ }
221
+ });
222
+
223
+ //////////////////////////////////////////////////
224
+ // headers, cookies
225
+
226
+ config.headers = {
227
+ 'accept' : options.accept || defaults.accept,
228
+ 'user-agent' : options.user_agent || defaults.user_agent
229
+ }
230
+
231
+ if (options.content_type)
232
+ config.headers['content-type'] = options.content_type;
233
+
234
+ // set connection header if opts.connection was passed, or if node < 0.11.4 (close)
235
+ if (options.connection || close_by_default)
236
+ config.headers['connection'] = options.connection || 'close';
237
+
238
+ if ((options.compressed || defaults.compressed) && typeof zlib != 'undefined')
239
+ config.headers['accept-encoding'] = 'gzip,deflate';
240
+
241
+ if (options.cookies)
242
+ config.headers['cookie'] = cookies.write(options.cookies);
243
+
244
+ //////////////////////////////////////////////////
245
+ // basic/digest auth
246
+
247
+ if (uri.match(/[^\/]@/)) { // url contains user:pass@host, so parse it.
248
+ var parts = (url.parse(uri).auth || '').split(':');
249
+ options.username = parts[0];
250
+ options.password = parts[1];
251
+ }
252
+
253
+ if (options.username) {
254
+ if (options.auth && (options.auth == 'auto' || options.auth == 'digest')) {
255
+ config.credentials = [options.username, options.password];
256
+ } else {
257
+ config.headers['authorization'] = auth.basic(options.username, options.password);
258
+ }
259
+ }
260
+
261
+ // if proxy is present, set auth header from either url or proxy_user option.
262
+ if (config.proxy) {
263
+ if (config.proxy.indexOf('http') === -1)
264
+ config.proxy = 'http://' + config.proxy;
265
+
266
+ if (config.proxy.indexOf('@') !== -1) {
267
+ var proxy = (url.parse(config.proxy).auth || '').split(':');
268
+ options.proxy_user = proxy[0];
269
+ options.proxy_pass = proxy[1];
270
+ }
271
+
272
+ if (options.proxy_user)
273
+ config.headers['proxy-authorization'] = auth.basic(options.proxy_user, options.proxy_pass);
274
+ }
275
+
276
+ // now that all our headers are set, overwrite them if instructed.
277
+ for (var h in options.headers)
278
+ config.headers[h.toLowerCase()] = options.headers[h];
279
+
280
+ return config;
281
+ }
282
+
283
+ Needle.prototype.start = function() {
284
+
285
+ var out = new stream.PassThrough({ objectMode: false }),
286
+ uri = this.uri,
287
+ data = this.data,
288
+ method = this.method,
289
+ callback = (typeof this.options == 'function') ? this.options : this.callback,
290
+ options = this.options || {};
291
+
292
+ // if no 'http' is found on URL, prepend it.
293
+ if (uri.indexOf('http') === -1)
294
+ uri = uri.replace(/^(\/\/)?/, 'http://');
295
+
296
+ var self = this, body, waiting = false, config = this.setup(uri, options);
297
+
298
+ // unless options.json was set to false, assume boss also wants JSON if content-type matches.
299
+ var json = options.json || (options.json !== false && config.headers['content-type'] == 'application/json');
300
+
301
+ if (data) {
302
+
303
+ if (options.multipart) { // boss says we do multipart. so we do it.
304
+ var boundary = options.boundary || defaults.boundary;
305
+
306
+ waiting = true;
307
+ multipart.build(data, boundary, function(err, parts) {
308
+ if (err) throw(err);
309
+
310
+ config.headers['content-type'] = 'multipart/form-data; boundary=' + boundary;
311
+ next(parts);
312
+ });
313
+
314
+ } else if (is_stream(data)) {
315
+
316
+ if (method.toUpperCase() == 'GET')
317
+ throw new Error('Refusing to pipe() a stream via GET. Did you mean .post?');
318
+
319
+ if (config.stream_length > 0 || (config.stream_length === 0 && data.path)) {
320
+ // ok, let's get the stream's length and set it as the content-length header.
321
+ // this prevents some servers from cutting us off before all the data is sent.
322
+ waiting = true;
323
+ get_stream_length(data, config.stream_length, function(length) {
324
+ data.length = length;
325
+ next(data);
326
+ })
327
+
328
+ } else {
329
+ // if the boss doesn't want us to get the stream's length, or if it doesn't
330
+ // have a file descriptor for that purpose, then just head on.
331
+ body = data;
332
+ }
333
+
334
+ } else if (Buffer.isBuffer(data)) {
335
+
336
+ body = data; // use the raw buffer as request body.
337
+
338
+ } else if (method.toUpperCase() == 'GET' && !json) {
339
+
340
+ // append the data to the URI as a querystring.
341
+ uri = uri.replace(/\?.*|$/, '?' + stringify(data));
342
+
343
+ } else { // string or object data, no multipart.
344
+
345
+ // if string, leave it as it is, otherwise, stringify.
346
+ body = (typeof(data) === 'string') ? data
347
+ : json ? JSON.stringify(data) : stringify(data);
348
+
349
+ // ensure we have a buffer so bytecount is correct.
350
+ body = new Buffer(body, config.encoding);
351
+ }
352
+
353
+ }
354
+
355
+ function next(body) {
356
+ if (body) {
357
+ if (body.length) config.headers['content-length'] = body.length;
358
+
359
+ // if no content-type was passed, determine if json or not.
360
+ if (!config.headers['content-type']) {
361
+ config.headers['content-type'] = json
362
+ ? 'application/json; charset=utf-8'
363
+ : 'application/x-www-form-urlencoded'; // no charset says W3 spec.
364
+ }
365
+ }
366
+
367
+ // unless a specific accept header was set, assume json: true wants JSON back.
368
+ if (options.json && (!options.accept && !(options.headers || {}).accept))
369
+ config.headers['accept'] = 'application/json';
370
+
371
+ self.send_request(1, method, uri, config, body, out, callback);
372
+ }
373
+
374
+ if (!waiting) next(body);
375
+ return out;
376
+ }
377
+
378
+ Needle.prototype.get_request_opts = function(method, uri, config) {
379
+ var opts = config.http_opts,
380
+ proxy = config.proxy,
381
+ remote = proxy ? url.parse(proxy) : url.parse(uri);
382
+
383
+ opts.protocol = remote.protocol;
384
+ opts.host = remote.hostname;
385
+ opts.port = remote.port || (remote.protocol == 'https:' ? 443 : 80);
386
+ opts.path = proxy ? uri : remote.pathname + (remote.search || '');
387
+ opts.method = method;
388
+ opts.headers = config.headers;
389
+
390
+ if (!opts.headers['host']) {
391
+ // if using proxy, make sure the host header shows the final destination
392
+ var target = proxy ? url.parse(uri) : remote;
393
+ opts.headers['host'] = target.hostname;
394
+
395
+ // and if a non standard port was passed, append it to the port header
396
+ if (target.port && [80, 443].indexOf(target.port) === -1) {
397
+ opts.headers['host'] += ':' + target.port;
398
+ }
399
+ }
400
+
401
+ return opts;
402
+ }
403
+
404
+ Needle.prototype.should_follow = function(location, config, original) {
405
+ if (!location) return false;
406
+
407
+ // returns true if location contains matching property (host or protocol)
408
+ function matches(property) {
409
+ var property = original[property];
410
+ return location.indexOf(property) !== -1;
411
+ }
412
+
413
+ // first, check whether the requested location is actually different from the original
414
+ if (location === original)
415
+ return false;
416
+
417
+ if (config.follow_if_same_host && !matches('host'))
418
+ return false; // host does not match, so not following
419
+
420
+ if (config.follow_if_same_protocol && !matches('protocol'))
421
+ return false; // procotol does not match, so not following
422
+
423
+ return true;
424
+ }
425
+
426
+ Needle.prototype.send_request = function(count, method, uri, config, post_data, out, callback) {
427
+
428
+ var timer,
429
+ returned = 0,
430
+ self = this,
431
+ request_opts = this.get_request_opts(method, uri, config),
432
+ protocol = request_opts.protocol == 'https:' ? https : http;
433
+
434
+ function done(err, resp) {
435
+ if (returned++ > 0)
436
+ return debug('Already finished, stopping here.');
437
+
438
+ if (timer) clearTimeout(timer);
439
+ request.removeListener('error', had_error);
440
+
441
+ if (callback)
442
+ return callback(err, resp, resp ? resp.body : undefined);
443
+
444
+ // NOTE: this event used to be called 'end', but the behaviour was confusing
445
+ // when errors ocurred, because the stream would still emit an 'end' event.
446
+ out.emit('done', err);
447
+ }
448
+
449
+ function had_error(err) {
450
+ debug('Request error', err);
451
+ out.emit('err', err);
452
+ done(err || new Error('Unknown error when making request.'));
453
+ }
454
+
455
+ function set_timeout(type, milisecs) {
456
+ if (timer) clearTimeout(timer);
457
+ if (milisecs <= 0) return;
458
+
459
+ timer = setTimeout(function() {
460
+ out.emit('timeout', type);
461
+ request.abort();
462
+ // also invoke done() to terminate job on read_timeout
463
+ if (type == 'read') done(new Error(type + ' timeout'));
464
+ }, milisecs);
465
+ }
466
+
467
+ // handle errors on the underlying socket, that may be closed while writing
468
+ // for an example case, see test/long_string_spec.js. we make sure this
469
+ // scenario ocurred by verifying the socket's writable & destroyed states.
470
+ function on_socket_end() {
471
+ if (!this.writable && this.destroyed === false) {
472
+ this.destroy();
473
+ had_error(new Error('Remote end closed socket abruptly.'))
474
+ }
475
+ }
476
+
477
+ debug('Making request #' + count, request_opts);
478
+ var request = protocol.request(request_opts, function(resp) {
479
+
480
+ var headers = resp.headers;
481
+ debug('Got response', resp.statusCode, headers);
482
+ out.emit('response', resp);
483
+
484
+ set_timeout('read', config.read_timeout);
485
+
486
+ // if we got cookies, parse them unless we were instructed not to. make sure to include any
487
+ // cookies that might have been set on previous redirects.
488
+ if (config.parse_cookies && (headers['set-cookie'] || config.stored_cookies)) {
489
+ resp.cookies = extend(config.stored_cookies || {}, cookies.read(headers['set-cookie']));
490
+ debug('Got cookies', resp.cookies);
491
+ }
492
+
493
+ // if redirect code is found, determine if we should follow it according to the given options.
494
+ if (redirect_codes.indexOf(resp.statusCode) !== -1 && self.should_follow(headers.location, config, uri)) {
495
+ // clear timer before following redirects to prevent unexpected setTimeout consequence
496
+ clearTimeout(timer);
497
+
498
+ if (count <= config.follow_max) {
499
+ out.emit('redirect', headers.location);
500
+
501
+ // unless 'follow_keep_method' is true, rewrite the request to GET before continuing.
502
+ if (!config.follow_keep_method) {
503
+ method = 'GET';
504
+ post_data = null;
505
+ delete config.headers['content-length']; // in case the original was a multipart POST request.
506
+ }
507
+
508
+ // if follow_set_cookies is true, make sure to put any cookies in the next request's headers.
509
+ if (config.follow_set_cookies && resp.cookies) {
510
+ config.stored_cookies = resp.cookies;
511
+ config.headers['cookie'] = cookies.write(resp.cookies);
512
+ }
513
+
514
+ if (config.follow_set_referer)
515
+ config.headers['referer'] = encodeURI(uri); // the original, not the destination URL.
516
+
517
+ config.headers['host'] = null; // clear previous Host header to avoid conflicts.
518
+
519
+ debug('Redirecting to ' + url.resolve(uri, headers.location));
520
+ return self.send_request(++count, method, url.resolve(uri, headers.location), config, post_data, out, callback);
521
+ } else if (config.follow_max > 0) {
522
+ return done(new Error('Max redirects reached. Possible loop in: ' + headers.location));
523
+ }
524
+ }
525
+
526
+ // if auth is requested and credentials were not passed, resend request, provided we have user/pass.
527
+ if (resp.statusCode == 401 && headers['www-authenticate'] && config.credentials) {
528
+ if (!config.headers['authorization']) { // only if authentication hasn't been sent
529
+ var auth_header = auth.header(headers['www-authenticate'], config.credentials, request_opts);
530
+
531
+ if (auth_header) {
532
+ config.headers['authorization'] = auth_header;
533
+ return self.send_request(count, method, uri, config, post_data, out, callback);
534
+ }
535
+ }
536
+ }
537
+
538
+ // ok, so we got a valid (non-redirect & authorized) response. let's notify the stream guys.
539
+ out.emit('header', resp.statusCode, headers);
540
+ out.emit('headers', headers);
541
+
542
+ var pipeline = [],
543
+ mime = parse_content_type(headers['content-type']),
544
+ text_response = mime.type && mime.type.indexOf('text/') != -1;
545
+
546
+ // To start, if our body is compressed and we're able to inflate it, do it.
547
+ if (headers['content-encoding'] && decompressors[headers['content-encoding']]) {
548
+
549
+ var decompressor = decompressors[headers['content-encoding']](zlib_options);
550
+
551
+ // make sure we catch errors triggered by the decompressor.
552
+ decompressor.on('error', had_error);
553
+ pipeline.push(decompressor);
554
+ }
555
+
556
+ // If parse is enabled and we have a parser for it, then go for it.
557
+ if (config.parser && parsers[mime.type]) {
558
+
559
+ // If a specific parser was requested, make sure we don't parse other types.
560
+ var parser_name = config.parser.toString().toLowerCase();
561
+ if (['xml', 'json'].indexOf(parser_name) == -1 || parsers[mime.type].name == parser_name) {
562
+
563
+ // OK, so either we're parsing all content types or the one requested matches.
564
+ out.parser = parsers[mime.type].name;
565
+ pipeline.push(parsers[mime.type].fn());
566
+
567
+ // Set objectMode on out stream to improve performance.
568
+ out._writableState.objectMode = true;
569
+ out._readableState.objectMode = true;
570
+ }
571
+
572
+ // If we're not parsing, and unless decoding was disabled, we'll try
573
+ // decoding non UTF-8 bodies to UTF-8, using the iconv-lite library.
574
+ } else if (text_response && config.decode_response
575
+ && mime.charset && !mime.charset.match(/utf-?8$/i)) {
576
+ pipeline.push(decoder(mime.charset));
577
+ }
578
+
579
+ // And `out` is the stream we finally push the decoded/parsed output to.
580
+ pipeline.push(out);
581
+
582
+ // Now, release the kraken!
583
+ var tmp = resp;
584
+ while (pipeline.length) {
585
+ tmp = tmp.pipe(pipeline.shift());
586
+ }
587
+
588
+ // If the user has requested and output file, pipe the output stream to it.
589
+ // In stream mode, we will still get the response stream to play with.
590
+ if (config.output && resp.statusCode == 200) {
591
+
592
+ // for some reason, simply piping resp to the writable stream doesn't
593
+ // work all the time (stream gets cut in the middle with no warning).
594
+ // so we'll manually need to do the readable/write(chunk) trick.
595
+ var file = fs.createWriteStream(config.output);
596
+ file.on('error', had_error);
597
+
598
+ out.on('end', function() {
599
+ if (file.writable) file.end();
600
+ });
601
+
602
+ file.on('close', function() {
603
+ delete out.file;
604
+ })
605
+
606
+ out.on('readable', function() {
607
+ var chunk;
608
+ while ((chunk = this.read()) !== null) {
609
+ if (file.writable) file.write(chunk);
610
+
611
+ // if callback was requested, also push it to resp.body
612
+ if (resp.body) resp.body.push(chunk);
613
+ }
614
+ })
615
+
616
+ out.file = file;
617
+ }
618
+
619
+ // Only aggregate the full body if a callback was requested.
620
+ if (callback) {
621
+ resp.raw = [];
622
+ resp.body = [];
623
+ resp.bytes = 0;
624
+
625
+ // Gather and count the amount of (raw) bytes using a PassThrough stream.
626
+ var clean_pipe = new stream.PassThrough();
627
+ resp.pipe(clean_pipe);
628
+
629
+ clean_pipe.on('readable', function() {
630
+ var chunk;
631
+ while ((chunk = this.read()) != null) {
632
+ resp.bytes += chunk.length;
633
+ resp.raw.push(chunk);
634
+ }
635
+ })
636
+
637
+ // Listen on the 'readable' event to aggregate the chunks, but only if
638
+ // file output wasn't requested. Otherwise we'd have two stream readers.
639
+ if (!config.output || resp.statusCode != 200) {
640
+ out.on('readable', function() {
641
+ var chunk;
642
+ while ((chunk = this.read()) !== null) {
643
+ // We're either pushing buffers or objects, never strings.
644
+ if (typeof chunk == 'string') chunk = new Buffer(chunk);
645
+
646
+ // Push all chunks to resp.body. We'll bind them in resp.end().
647
+ resp.body.push(chunk);
648
+ }
649
+ })
650
+ }
651
+ }
652
+
653
+ // And set the .body property once all data is in.
654
+ out.on('end', function() {
655
+ if (resp.body) { // callback mode
656
+
657
+ // we want to be able to access to the raw data later, so keep a reference.
658
+ resp.raw = Buffer.concat(resp.raw);
659
+
660
+ // if parse was successful, we should have an array with one object
661
+ if (resp.body[0] !== undefined && !Buffer.isBuffer(resp.body[0])) {
662
+
663
+ // that's our body right there.
664
+ resp.body = resp.body[0];
665
+
666
+ // set the parser property on our response. we may want to check.
667
+ if (out.parser) resp.parser = out.parser;
668
+
669
+ } else { // we got one or several buffers. string or binary.
670
+ resp.body = Buffer.concat(resp.body);
671
+
672
+ // if we're here and parsed is true, it means we tried to but it didn't work.
673
+ // so given that we got a text response, let's stringify it.
674
+ if (text_response || out.parser) {
675
+ resp.body = resp.body.toString();
676
+ }
677
+ }
678
+ }
679
+
680
+ // if an output file is being written to, make sure the callback
681
+ // is triggered after all data has been written to it.
682
+ if (out.file) {
683
+ out.file.on('close', function() {
684
+ done(null, resp, resp.body);
685
+ })
686
+ } else { // elvis has left the building.
687
+ done(null, resp, resp.body);
688
+ }
689
+
690
+ });
691
+
692
+ }); // end request call
693
+
694
+ // unless open_timeout was disabled, set a timeout to abort the request.
695
+ set_timeout('open', config.open_timeout);
696
+
697
+ // handle errors on the request object. things might get bumpy.
698
+ request.on('error', had_error);
699
+
700
+ // make sure timer is cleared if request is aborted (issue #257)
701
+ request.once('abort', function() {
702
+ if (timer) clearTimeout(timer);
703
+ })
704
+
705
+ // handle socket 'end' event to ensure we don't get delayed EPIPE errors.
706
+ request.once('socket', function(socket) {
707
+ if (socket.connecting) {
708
+ socket.once('connect', function() {
709
+ set_timeout('response', config.response_timeout);
710
+ })
711
+ } else {
712
+ set_timeout('response', config.response_timeout);
713
+ }
714
+
715
+ // console.log(socket);
716
+ if (!socket.on_socket_end) {
717
+ socket.on_socket_end = on_socket_end;
718
+ socket.once('end', function() { process.nextTick(on_socket_end.bind(socket)) });
719
+ }
720
+ })
721
+
722
+ if (post_data) {
723
+ if (is_stream(post_data)) {
724
+ post_data.pipe(request);
725
+ } else {
726
+ request.write(post_data, config.encoding);
727
+ request.end();
728
+ }
729
+ } else {
730
+ request.end();
731
+ }
732
+
733
+ out.request = request;
734
+ return out;
735
+ }
736
+
737
+ //////////////////////////////////////////
738
+ // exports
739
+
740
+ if (typeof Promise !== 'undefined') {
741
+ module.exports = function() {
742
+ var verb, args = [].slice.call(arguments);
743
+
744
+ if (args[0].match(/\.|\//)) // first argument looks like a URL
745
+ verb = (args.length > 2) ? 'post' : 'get';
746
+ else
747
+ verb = args.shift();
748
+
749
+ if (verb.match(/get|head/) && args.length == 2)
750
+ args.splice(1, 0, null); // assume no data if head/get with two args (url, options)
751
+
752
+ return new Promise(function(resolve, reject) {
753
+ module.exports.request(verb, args[0], args[1], args[2], function(err, resp) {
754
+ return err ? reject(err) : resolve(resp);
755
+ });
756
+ })
757
+ }
758
+ }
759
+
760
+ module.exports.version = version;
761
+
762
+ module.exports.defaults = function(obj) {
763
+ for (var key in obj) {
764
+ var target_key = aliased.options[key] || key;
765
+
766
+ if (defaults.hasOwnProperty(target_key) && typeof obj[key] != 'undefined') {
767
+ if (target_key != 'parse_response' && target_key != 'proxy') {
768
+ // ensure type matches the original, except for proxy/parse_response that can be null/bool or string
769
+ var valid_type = defaults[target_key].constructor.name;
770
+
771
+ if (obj[key].constructor.name != valid_type)
772
+ throw new TypeError('Invalid type for ' + key + ', should be ' + valid_type);
773
+ }
774
+ defaults[target_key] = obj[key];
775
+ }
776
+ }
777
+
778
+ return defaults;
779
+ }
780
+
781
+ 'head get'.split(' ').forEach(function(method) {
782
+ module.exports[method] = function(uri, options, callback) {
783
+ return new Needle(method, uri, null, options, callback).start();
784
+ }
785
+ })
786
+
787
+ 'post put patch delete'.split(' ').forEach(function(method) {
788
+ module.exports[method] = function(uri, data, options, callback) {
789
+ return new Needle(method, uri, data, options, callback).start();
790
+ }
791
+ })
792
+
793
+ module.exports.request = function(method, uri, data, opts, callback) {
794
+ return new Needle(method, uri, data, opts, callback).start();
795
+ };