isomorfeus-puppetmaster 0.5.5 → 0.5.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (710) hide show
  1. checksums.yaml +4 -4
  2. data/lib/isomorfeus/puppetmaster/console_message.rb +18 -18
  3. data/lib/isomorfeus/puppetmaster/cookie.rb +46 -46
  4. data/lib/isomorfeus/puppetmaster/driver/puppeteer.rb +413 -415
  5. data/lib/isomorfeus/puppetmaster/driver/puppeteer_document.rb +953 -953
  6. data/lib/isomorfeus/puppetmaster/driver/puppeteer_node.rb +851 -851
  7. data/lib/isomorfeus/puppetmaster/errors.rb +90 -90
  8. data/lib/isomorfeus/puppetmaster/iframe.rb +16 -16
  9. data/lib/isomorfeus/puppetmaster/node/content_editable.rb +17 -17
  10. data/lib/isomorfeus/puppetmaster/node/input.rb +20 -20
  11. data/lib/isomorfeus/puppetmaster/node/select.rb +35 -35
  12. data/lib/isomorfeus/puppetmaster/node.rb +279 -279
  13. data/lib/isomorfeus/puppetmaster/request.rb +16 -16
  14. data/lib/isomorfeus/puppetmaster/response.rb +25 -25
  15. data/lib/isomorfeus/puppetmaster/self_forwardable.rb +38 -38
  16. data/lib/isomorfeus/puppetmaster/version.rb +3 -3
  17. data/lib/isomorfeus/puppetmaster.rb +85 -85
  18. data/lib/isomorfeus-puppetmaster.rb +1 -0
  19. data/node_modules/.bin/extract-zip +12 -12
  20. data/node_modules/.bin/extract-zip.ps1 +28 -28
  21. data/node_modules/.bin/rimraf +12 -12
  22. data/node_modules/.bin/rimraf.ps1 +28 -28
  23. data/node_modules/.package-lock.json +530 -585
  24. data/node_modules/@types/node/LICENSE +21 -21
  25. data/node_modules/@types/node/assert/strict.d.ts +8 -8
  26. data/node_modules/@types/node/assert.d.ts +912 -912
  27. data/node_modules/@types/node/async_hooks.d.ts +497 -497
  28. data/node_modules/@types/node/buffer.d.ts +2142 -2142
  29. data/node_modules/@types/node/child_process.d.ts +1355 -1355
  30. data/node_modules/@types/node/cluster.d.ts +414 -414
  31. data/node_modules/@types/node/console.d.ts +407 -407
  32. data/node_modules/@types/node/constants.d.ts +18 -18
  33. data/node_modules/@types/node/crypto.d.ts +3224 -3224
  34. data/node_modules/@types/node/dgram.d.ts +545 -545
  35. data/node_modules/@types/node/diagnostics_channel.d.ts +128 -128
  36. data/node_modules/@types/node/dns/promises.d.ts +357 -357
  37. data/node_modules/@types/node/dns.d.ts +643 -643
  38. data/node_modules/@types/node/domain.d.ts +169 -169
  39. data/node_modules/@types/node/events.d.ts +623 -623
  40. data/node_modules/@types/node/fs/promises.d.ts +997 -997
  41. data/node_modules/@types/node/fs.d.ts +3723 -3723
  42. data/node_modules/@types/node/globals.d.ts +285 -285
  43. data/node_modules/@types/node/globals.global.d.ts +1 -1
  44. data/node_modules/@types/node/http.d.ts +1358 -1358
  45. data/node_modules/@types/node/http2.d.ts +2100 -2100
  46. data/node_modules/@types/node/https.d.ts +391 -391
  47. data/node_modules/@types/node/index.d.ts +131 -131
  48. data/node_modules/@types/node/inspector.d.ts +2738 -2738
  49. data/node_modules/@types/node/module.d.ts +114 -114
  50. data/node_modules/@types/node/net.d.ts +783 -783
  51. data/node_modules/@types/node/os.d.ts +455 -455
  52. data/node_modules/@types/node/package.json +229 -229
  53. data/node_modules/@types/node/path.d.ts +172 -172
  54. data/node_modules/@types/node/perf_hooks.d.ts +555 -555
  55. data/node_modules/@types/node/process.d.ts +1477 -1477
  56. data/node_modules/@types/node/punycode.d.ts +117 -117
  57. data/node_modules/@types/node/querystring.d.ts +131 -131
  58. data/node_modules/@types/node/readline.d.ts +542 -542
  59. data/node_modules/@types/node/repl.d.ts +424 -424
  60. data/node_modules/@types/node/stream/consumers.d.ts +24 -24
  61. data/node_modules/@types/node/stream/promises.d.ts +42 -42
  62. data/node_modules/@types/node/stream/web.d.ts +6 -6
  63. data/node_modules/@types/node/stream.d.ts +1181 -1181
  64. data/node_modules/@types/node/string_decoder.d.ts +67 -67
  65. data/node_modules/@types/node/timers/promises.d.ts +68 -68
  66. data/node_modules/@types/node/timers.d.ts +94 -94
  67. data/node_modules/@types/node/tls.d.ts +1019 -1019
  68. data/node_modules/@types/node/trace_events.d.ts +161 -161
  69. data/node_modules/@types/node/tty.d.ts +206 -206
  70. data/node_modules/@types/node/url.d.ts +798 -798
  71. data/node_modules/@types/node/util.d.ts +1556 -1556
  72. data/node_modules/@types/node/v8.d.ts +378 -378
  73. data/node_modules/@types/node/vm.d.ts +504 -504
  74. data/node_modules/@types/node/wasi.d.ts +153 -153
  75. data/node_modules/@types/node/worker_threads.d.ts +649 -649
  76. data/node_modules/@types/node/zlib.d.ts +517 -517
  77. data/node_modules/@types/yauzl/LICENSE +21 -21
  78. data/node_modules/@types/yauzl/index.d.ts +98 -98
  79. data/node_modules/@types/yauzl/package.json +26 -26
  80. data/node_modules/agent-base/README.md +145 -145
  81. data/node_modules/agent-base/dist/src/index.d.ts +78 -78
  82. data/node_modules/agent-base/dist/src/index.js +202 -202
  83. data/node_modules/agent-base/dist/src/promisify.d.ts +4 -4
  84. data/node_modules/agent-base/dist/src/promisify.js +17 -17
  85. data/node_modules/agent-base/package.json +64 -64
  86. data/node_modules/agent-base/src/index.ts +345 -345
  87. data/node_modules/agent-base/src/promisify.ts +33 -33
  88. data/node_modules/balanced-match/.github/FUNDING.yml +2 -2
  89. data/node_modules/balanced-match/LICENSE.md +21 -21
  90. data/node_modules/balanced-match/README.md +97 -97
  91. data/node_modules/balanced-match/index.js +62 -62
  92. data/node_modules/balanced-match/package.json +48 -48
  93. data/node_modules/base64-js/LICENSE +21 -21
  94. data/node_modules/base64-js/README.md +34 -34
  95. data/node_modules/base64-js/index.d.ts +3 -3
  96. data/node_modules/base64-js/index.js +150 -150
  97. data/node_modules/base64-js/package.json +47 -47
  98. data/node_modules/bl/.travis.yml +17 -17
  99. data/node_modules/bl/BufferList.js +396 -396
  100. data/node_modules/bl/LICENSE.md +13 -13
  101. data/node_modules/bl/README.md +247 -247
  102. data/node_modules/bl/bl.js +84 -84
  103. data/node_modules/bl/package.json +37 -37
  104. data/node_modules/bl/test/convert.js +21 -21
  105. data/node_modules/bl/test/indexOf.js +492 -492
  106. data/node_modules/bl/test/isBufferList.js +32 -32
  107. data/node_modules/bl/test/test.js +869 -869
  108. data/node_modules/brace-expansion/LICENSE +21 -21
  109. data/node_modules/brace-expansion/README.md +129 -129
  110. data/node_modules/brace-expansion/index.js +201 -201
  111. data/node_modules/brace-expansion/package.json +47 -47
  112. data/node_modules/buffer/AUTHORS.md +70 -70
  113. data/node_modules/buffer/LICENSE +21 -21
  114. data/node_modules/buffer/README.md +410 -410
  115. data/node_modules/buffer/index.d.ts +186 -186
  116. data/node_modules/buffer/index.js +1817 -1817
  117. data/node_modules/buffer/package.json +96 -96
  118. data/node_modules/buffer-crc32/LICENSE +19 -19
  119. data/node_modules/buffer-crc32/README.md +47 -47
  120. data/node_modules/buffer-crc32/index.js +111 -111
  121. data/node_modules/buffer-crc32/package.json +39 -39
  122. data/node_modules/chownr/LICENSE +15 -15
  123. data/node_modules/chownr/README.md +3 -3
  124. data/node_modules/chownr/chownr.js +167 -167
  125. data/node_modules/chownr/package.json +29 -29
  126. data/node_modules/concat-map/.travis.yml +4 -4
  127. data/node_modules/concat-map/LICENSE +18 -18
  128. data/node_modules/concat-map/README.markdown +62 -62
  129. data/node_modules/concat-map/example/map.js +6 -6
  130. data/node_modules/concat-map/index.js +13 -13
  131. data/node_modules/concat-map/package.json +43 -43
  132. data/node_modules/concat-map/test/map.js +39 -39
  133. data/node_modules/debug/LICENSE +19 -19
  134. data/node_modules/debug/README.md +455 -455
  135. data/node_modules/debug/package.json +59 -59
  136. data/node_modules/debug/src/browser.js +269 -269
  137. data/node_modules/debug/src/common.js +274 -274
  138. data/node_modules/debug/src/index.js +10 -10
  139. data/node_modules/debug/src/node.js +263 -263
  140. data/node_modules/devtools-protocol/LICENSE +27 -27
  141. data/node_modules/devtools-protocol/README.md +12 -12
  142. data/node_modules/devtools-protocol/json/browser_protocol.json +20985 -20640
  143. data/node_modules/devtools-protocol/json/js_protocol.json +3531 -3580
  144. data/node_modules/devtools-protocol/package.json +17 -18
  145. data/node_modules/devtools-protocol/pdl/browser_protocol.pdl +9849 -9637
  146. data/node_modules/devtools-protocol/pdl/js_protocol.pdl +1653 -1678
  147. data/node_modules/devtools-protocol/types/protocol-mapping.d.ts +4333 -4321
  148. data/node_modules/devtools-protocol/types/protocol-proxy-api.d.ts +3695 -3683
  149. data/node_modules/devtools-protocol/types/protocol.d.ts +15714 -15538
  150. data/node_modules/end-of-stream/LICENSE +20 -20
  151. data/node_modules/end-of-stream/README.md +54 -54
  152. data/node_modules/end-of-stream/index.js +94 -94
  153. data/node_modules/end-of-stream/package.json +37 -37
  154. data/node_modules/extract-zip/LICENSE +23 -23
  155. data/node_modules/extract-zip/cli.js +19 -19
  156. data/node_modules/extract-zip/index.d.ts +21 -21
  157. data/node_modules/extract-zip/index.js +173 -173
  158. data/node_modules/extract-zip/package.json +80 -80
  159. data/node_modules/extract-zip/readme.md +57 -57
  160. data/node_modules/fd-slicer/.npmignore +2 -2
  161. data/node_modules/fd-slicer/.travis.yml +7 -7
  162. data/node_modules/fd-slicer/CHANGELOG.md +49 -49
  163. data/node_modules/fd-slicer/LICENSE +21 -21
  164. data/node_modules/fd-slicer/README.md +199 -199
  165. data/node_modules/fd-slicer/index.js +296 -296
  166. data/node_modules/fd-slicer/package.json +36 -36
  167. data/node_modules/fd-slicer/test/test.js +350 -350
  168. data/node_modules/find-up/index.d.ts +137 -137
  169. data/node_modules/find-up/index.js +89 -89
  170. data/node_modules/find-up/license +9 -9
  171. data/node_modules/find-up/package.json +53 -53
  172. data/node_modules/find-up/readme.md +156 -156
  173. data/node_modules/fs-constants/LICENSE +21 -21
  174. data/node_modules/fs-constants/README.md +26 -26
  175. data/node_modules/fs-constants/browser.js +1 -1
  176. data/node_modules/fs-constants/index.js +1 -1
  177. data/node_modules/fs-constants/package.json +19 -19
  178. data/node_modules/fs.realpath/LICENSE +43 -43
  179. data/node_modules/fs.realpath/README.md +33 -33
  180. data/node_modules/fs.realpath/index.js +66 -66
  181. data/node_modules/fs.realpath/old.js +303 -303
  182. data/node_modules/fs.realpath/package.json +26 -26
  183. data/node_modules/get-stream/buffer-stream.js +52 -52
  184. data/node_modules/get-stream/index.d.ts +108 -108
  185. data/node_modules/get-stream/index.js +60 -60
  186. data/node_modules/get-stream/license +9 -9
  187. data/node_modules/get-stream/package.json +50 -50
  188. data/node_modules/get-stream/readme.md +124 -124
  189. data/node_modules/glob/LICENSE +21 -21
  190. data/node_modules/glob/README.md +375 -375
  191. data/node_modules/glob/changelog.md +67 -67
  192. data/node_modules/glob/common.js +234 -234
  193. data/node_modules/glob/glob.js +788 -788
  194. data/node_modules/glob/package.json +51 -51
  195. data/node_modules/glob/sync.js +484 -484
  196. data/node_modules/https-proxy-agent/README.md +137 -137
  197. data/node_modules/https-proxy-agent/dist/agent.d.ts +30 -30
  198. data/node_modules/https-proxy-agent/dist/agent.js +179 -179
  199. data/node_modules/https-proxy-agent/dist/index.d.ts +23 -23
  200. data/node_modules/https-proxy-agent/dist/index.js +13 -13
  201. data/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts +7 -7
  202. data/node_modules/https-proxy-agent/dist/parse-proxy-response.js +65 -65
  203. data/node_modules/https-proxy-agent/package.json +56 -56
  204. data/node_modules/ieee754/LICENSE +11 -11
  205. data/node_modules/ieee754/README.md +51 -51
  206. data/node_modules/ieee754/index.d.ts +9 -9
  207. data/node_modules/ieee754/index.js +85 -85
  208. data/node_modules/ieee754/package.json +52 -52
  209. data/node_modules/inflight/LICENSE +15 -15
  210. data/node_modules/inflight/README.md +37 -37
  211. data/node_modules/inflight/inflight.js +54 -54
  212. data/node_modules/inflight/package.json +29 -29
  213. data/node_modules/inherits/LICENSE +16 -16
  214. data/node_modules/inherits/README.md +42 -42
  215. data/node_modules/inherits/inherits.js +9 -9
  216. data/node_modules/inherits/inherits_browser.js +27 -27
  217. data/node_modules/inherits/package.json +29 -29
  218. data/node_modules/locate-path/index.d.ts +83 -83
  219. data/node_modules/locate-path/index.js +65 -65
  220. data/node_modules/locate-path/license +9 -9
  221. data/node_modules/locate-path/package.json +45 -45
  222. data/node_modules/locate-path/readme.md +122 -122
  223. data/node_modules/minimatch/LICENSE +15 -15
  224. data/node_modules/minimatch/README.md +209 -209
  225. data/node_modules/minimatch/minimatch.js +923 -923
  226. data/node_modules/minimatch/package.json +30 -30
  227. data/node_modules/mkdirp-classic/LICENSE +21 -21
  228. data/node_modules/mkdirp-classic/README.md +18 -18
  229. data/node_modules/mkdirp-classic/index.js +98 -98
  230. data/node_modules/mkdirp-classic/package.json +18 -18
  231. data/node_modules/ms/index.js +162 -162
  232. data/node_modules/ms/license.md +21 -21
  233. data/node_modules/ms/package.json +37 -37
  234. data/node_modules/ms/readme.md +60 -60
  235. data/node_modules/node-fetch/LICENSE.md +22 -22
  236. data/node_modules/node-fetch/README.md +590 -590
  237. data/node_modules/node-fetch/browser.js +24 -24
  238. data/node_modules/node-fetch/lib/index.es.js +1662 -1662
  239. data/node_modules/node-fetch/lib/index.js +1671 -1671
  240. data/node_modules/node-fetch/lib/index.mjs +1660 -1660
  241. data/node_modules/node-fetch/package.json +68 -68
  242. data/node_modules/once/LICENSE +15 -15
  243. data/node_modules/once/README.md +79 -79
  244. data/node_modules/once/once.js +42 -42
  245. data/node_modules/once/package.json +33 -33
  246. data/node_modules/p-limit/index.d.ts +38 -38
  247. data/node_modules/p-limit/index.js +57 -57
  248. data/node_modules/p-limit/license +9 -9
  249. data/node_modules/p-limit/package.json +52 -52
  250. data/node_modules/p-limit/readme.md +101 -101
  251. data/node_modules/p-locate/index.d.ts +64 -64
  252. data/node_modules/p-locate/index.js +52 -52
  253. data/node_modules/p-locate/license +9 -9
  254. data/node_modules/p-locate/package.json +53 -53
  255. data/node_modules/p-locate/readme.md +90 -90
  256. data/node_modules/p-try/index.d.ts +39 -39
  257. data/node_modules/p-try/index.js +9 -9
  258. data/node_modules/p-try/license +9 -9
  259. data/node_modules/p-try/package.json +42 -42
  260. data/node_modules/p-try/readme.md +58 -58
  261. data/node_modules/path-exists/index.d.ts +28 -28
  262. data/node_modules/path-exists/index.js +23 -23
  263. data/node_modules/path-exists/license +9 -9
  264. data/node_modules/path-exists/package.json +39 -39
  265. data/node_modules/path-exists/readme.md +52 -52
  266. data/node_modules/path-is-absolute/index.js +20 -20
  267. data/node_modules/path-is-absolute/license +21 -21
  268. data/node_modules/path-is-absolute/package.json +43 -43
  269. data/node_modules/path-is-absolute/readme.md +59 -59
  270. data/node_modules/pend/LICENSE +23 -23
  271. data/node_modules/pend/README.md +41 -41
  272. data/node_modules/pend/index.js +55 -55
  273. data/node_modules/pend/package.json +18 -18
  274. data/node_modules/pend/test.js +137 -137
  275. data/node_modules/pkg-dir/index.d.ts +44 -44
  276. data/node_modules/pkg-dir/index.js +17 -17
  277. data/node_modules/pkg-dir/license +9 -9
  278. data/node_modules/pkg-dir/package.json +56 -56
  279. data/node_modules/pkg-dir/readme.md +66 -66
  280. data/node_modules/progress/CHANGELOG.md +115 -115
  281. data/node_modules/progress/LICENSE +22 -22
  282. data/node_modules/progress/Makefile +8 -8
  283. data/node_modules/progress/Readme.md +146 -146
  284. data/node_modules/progress/index.js +1 -1
  285. data/node_modules/progress/lib/node-progress.js +236 -236
  286. data/node_modules/progress/package.json +26 -26
  287. data/node_modules/proxy-from-env/.eslintrc +29 -29
  288. data/node_modules/proxy-from-env/.travis.yml +10 -10
  289. data/node_modules/proxy-from-env/LICENSE +20 -20
  290. data/node_modules/proxy-from-env/README.md +131 -131
  291. data/node_modules/proxy-from-env/index.js +108 -108
  292. data/node_modules/proxy-from-env/package.json +34 -34
  293. data/node_modules/proxy-from-env/test.js +483 -483
  294. data/node_modules/pump/.travis.yml +5 -5
  295. data/node_modules/pump/LICENSE +20 -20
  296. data/node_modules/pump/README.md +65 -65
  297. data/node_modules/pump/index.js +82 -82
  298. data/node_modules/pump/package.json +24 -24
  299. data/node_modules/pump/test-browser.js +66 -66
  300. data/node_modules/pump/test-node.js +53 -53
  301. data/node_modules/puppeteer-core/CHANGELOG.md +319 -290
  302. data/node_modules/puppeteer-core/LICENSE +202 -202
  303. data/node_modules/puppeteer-core/README.md +481 -481
  304. data/node_modules/puppeteer-core/cjs-entry-core.js +29 -29
  305. data/node_modules/puppeteer-core/cjs-entry.js +29 -29
  306. data/node_modules/puppeteer-core/install.js +89 -89
  307. data/node_modules/puppeteer-core/lib/cjs/puppeteer/api-docs-entry.d.ts +110 -110
  308. data/node_modules/puppeteer-core/lib/cjs/puppeteer/api-docs-entry.js +80 -80
  309. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Accessibility.d.ts +175 -175
  310. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Accessibility.js +360 -360
  311. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/AriaQueryHandler.d.ts +20 -20
  312. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/AriaQueryHandler.js +84 -84
  313. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/AriaQueryHandler.js.map +1 -1
  314. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Browser.d.ts +455 -455
  315. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Browser.js +540 -540
  316. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/BrowserConnector.d.ts +53 -53
  317. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/BrowserConnector.js +97 -97
  318. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/BrowserWebSocketTransport.d.ts +25 -25
  319. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/BrowserWebSocketTransport.js +34 -34
  320. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Connection.d.ts +135 -135
  321. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Connection.js +298 -298
  322. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/ConnectionTransport.d.ts +24 -24
  323. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/ConnectionTransport.js +17 -17
  324. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/ConsoleMessage.d.ts +72 -72
  325. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/ConsoleMessage.js +64 -64
  326. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Coverage.d.ts +204 -204
  327. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Coverage.js +335 -335
  328. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/DOMWorld.d.ts +175 -175
  329. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/DOMWorld.js +662 -662
  330. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Debug.d.ts +52 -52
  331. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Debug.js +81 -81
  332. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/DeviceDescriptors.d.ts +40 -40
  333. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/DeviceDescriptors.js +1070 -1070
  334. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Dialog.d.ts +74 -74
  335. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Dialog.js +97 -97
  336. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/EmulationManager.d.ts +24 -24
  337. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/EmulationManager.js +37 -37
  338. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Errors.d.ts +50 -50
  339. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Errors.js +56 -56
  340. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/EvalTypes.d.ts +60 -60
  341. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/EvalTypes.js +17 -17
  342. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/EventEmitter.d.ts +92 -92
  343. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/EventEmitter.js +116 -116
  344. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Events.d.ts +81 -81
  345. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Events.js +86 -86
  346. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/ExecutionContext.d.ts +193 -193
  347. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/ExecutionContext.js +321 -321
  348. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/FileChooser.d.ts +58 -58
  349. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/FileChooser.js +71 -71
  350. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/FrameManager.d.ts +744 -744
  351. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/FrameManager.js +1047 -1047
  352. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/FrameManager.js.map +1 -1
  353. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/HTTPRequest.d.ts +350 -345
  354. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/HTTPRequest.d.ts.map +1 -1
  355. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/HTTPRequest.js +549 -549
  356. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/HTTPRequest.js.map +1 -1
  357. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/HTTPResponse.d.ts +134 -125
  358. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/HTTPResponse.d.ts.map +1 -1
  359. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/HTTPResponse.js +184 -164
  360. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/HTTPResponse.js.map +1 -1
  361. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Input.d.ts +358 -358
  362. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Input.js +543 -543
  363. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/JSHandle.d.ts +490 -490
  364. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/JSHandle.js +827 -827
  365. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/LifecycleWatcher.d.ts +65 -65
  366. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/LifecycleWatcher.d.ts.map +1 -1
  367. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/LifecycleWatcher.js +149 -148
  368. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/LifecycleWatcher.js.map +1 -1
  369. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/NetworkConditions.d.ts +26 -26
  370. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/NetworkConditions.js +33 -33
  371. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/NetworkManager.d.ts +126 -97
  372. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/NetworkManager.d.ts.map +1 -1
  373. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/NetworkManager.js +467 -342
  374. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/NetworkManager.js.map +1 -1
  375. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/PDFOptions.d.ts +161 -161
  376. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/PDFOptions.js +34 -34
  377. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Page.d.ts +2055 -2055
  378. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Page.js +2533 -2533
  379. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Product.d.ts +20 -20
  380. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Product.js +17 -17
  381. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Puppeteer.d.ts +159 -159
  382. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Puppeteer.js +161 -161
  383. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/PuppeteerViewport.d.ts +51 -51
  384. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/PuppeteerViewport.js +2 -2
  385. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/QueryHandler.d.ts +64 -64
  386. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/QueryHandler.js +165 -165
  387. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/SecurityDetails.d.ts +60 -60
  388. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/SecurityDetails.js +76 -76
  389. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Target.d.ts +100 -100
  390. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Target.js +145 -145
  391. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/TaskQueue.d.ts +20 -20
  392. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/TaskQueue.js +29 -29
  393. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/TimeoutSettings.d.ts +27 -27
  394. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/TimeoutSettings.js +47 -47
  395. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Tracing.d.ts +46 -46
  396. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Tracing.js +109 -109
  397. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/USKeyboardLayout.d.ts +39 -39
  398. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/USKeyboardLayout.js +406 -406
  399. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/WebWorker.d.ts +98 -98
  400. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/WebWorker.js +112 -112
  401. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/assert.d.ts +22 -22
  402. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/assert.js +33 -33
  403. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/fetch.d.ts +16 -16
  404. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/fetch.js +43 -43
  405. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/helper.d.ts +84 -84
  406. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/helper.js +327 -327
  407. data/node_modules/puppeteer-core/lib/cjs/puppeteer/environment.d.ts +16 -16
  408. data/node_modules/puppeteer-core/lib/cjs/puppeteer/environment.js +19 -19
  409. data/node_modules/puppeteer-core/lib/cjs/puppeteer/global.d.ts +16 -16
  410. data/node_modules/puppeteer-core/lib/cjs/puppeteer/global.js +2 -2
  411. data/node_modules/puppeteer-core/lib/cjs/puppeteer/initialize-node.d.ts +17 -17
  412. data/node_modules/puppeteer-core/lib/cjs/puppeteer/initialize-node.js +44 -44
  413. data/node_modules/puppeteer-core/lib/cjs/puppeteer/initialize-web.d.ts +17 -17
  414. data/node_modules/puppeteer-core/lib/cjs/puppeteer/initialize-web.js +26 -26
  415. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/BrowserFetcher.d.ts +133 -133
  416. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/BrowserFetcher.js +500 -500
  417. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/BrowserRunner.d.ts +40 -39
  418. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/BrowserRunner.d.ts.map +1 -1
  419. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/BrowserRunner.js +256 -230
  420. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/BrowserRunner.js.map +1 -1
  421. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/LaunchOptions.d.ts +134 -134
  422. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/LaunchOptions.js +17 -17
  423. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/Launcher.d.ts +16 -16
  424. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/Launcher.d.ts.map +1 -1
  425. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/Launcher.js +655 -588
  426. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/Launcher.js.map +1 -1
  427. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/NodeWebSocketTransport.d.ts +26 -26
  428. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/NodeWebSocketTransport.js +47 -47
  429. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/PipeTransport.d.ts +29 -29
  430. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/PipeTransport.js +64 -64
  431. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/Puppeteer.d.ts +153 -153
  432. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/Puppeteer.js +188 -188
  433. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/install.d.ts +17 -17
  434. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/install.js +173 -173
  435. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node-puppeteer-core.d.ts +17 -17
  436. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node-puppeteer-core.js +24 -24
  437. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node.d.ts +17 -17
  438. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node.js +23 -23
  439. data/node_modules/puppeteer-core/lib/cjs/puppeteer/revisions.d.ts +21 -21
  440. data/node_modules/puppeteer-core/lib/cjs/puppeteer/revisions.js +22 -22
  441. data/node_modules/puppeteer-core/lib/cjs/puppeteer/web.d.ts +17 -17
  442. data/node_modules/puppeteer-core/lib/cjs/puppeteer/web.js +23 -23
  443. data/node_modules/puppeteer-core/lib/cjs/vendor/mitt/src/index.d.ts +27 -27
  444. data/node_modules/puppeteer-core/lib/cjs/vendor/mitt/src/index.js +56 -56
  445. data/node_modules/puppeteer-core/lib/esm/puppeteer/api-docs-entry.d.ts +110 -110
  446. data/node_modules/puppeteer-core/lib/esm/puppeteer/api-docs-entry.js +80 -80
  447. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Accessibility.d.ts +175 -175
  448. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Accessibility.js +356 -356
  449. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/AriaQueryHandler.d.ts +20 -20
  450. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/AriaQueryHandler.js +81 -81
  451. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/AriaQueryHandler.js.map +1 -1
  452. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Browser.d.ts +455 -455
  453. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Browser.js +535 -535
  454. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/BrowserConnector.d.ts +53 -53
  455. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/BrowserConnector.js +74 -74
  456. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/BrowserWebSocketTransport.d.ts +25 -25
  457. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/BrowserWebSocketTransport.js +30 -30
  458. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Connection.d.ts +135 -135
  459. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Connection.js +293 -293
  460. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/ConnectionTransport.d.ts +24 -24
  461. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/ConnectionTransport.js +16 -16
  462. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/ConsoleMessage.d.ts +72 -72
  463. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/ConsoleMessage.js +60 -60
  464. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Coverage.d.ts +204 -204
  465. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Coverage.js +329 -329
  466. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/DOMWorld.d.ts +175 -175
  467. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/DOMWorld.js +657 -657
  468. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Debug.d.ts +52 -52
  469. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Debug.js +77 -77
  470. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/DeviceDescriptors.d.ts +40 -40
  471. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/DeviceDescriptors.js +1067 -1067
  472. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Dialog.d.ts +74 -74
  473. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Dialog.js +93 -93
  474. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/EmulationManager.d.ts +24 -24
  475. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/EmulationManager.js +33 -33
  476. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Errors.d.ts +50 -50
  477. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Errors.js +50 -50
  478. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/EvalTypes.d.ts +60 -60
  479. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/EvalTypes.js +16 -16
  480. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/EventEmitter.d.ts +92 -92
  481. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/EventEmitter.js +109 -109
  482. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Events.d.ts +81 -81
  483. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Events.js +83 -83
  484. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/ExecutionContext.d.ts +193 -193
  485. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/ExecutionContext.js +317 -317
  486. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/FileChooser.d.ts +58 -58
  487. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/FileChooser.js +67 -67
  488. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/FrameManager.d.ts +744 -744
  489. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/FrameManager.js +1042 -1042
  490. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/FrameManager.js.map +1 -1
  491. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/HTTPRequest.d.ts +350 -345
  492. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/HTTPRequest.d.ts.map +1 -1
  493. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/HTTPRequest.js +545 -545
  494. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/HTTPRequest.js.map +1 -1
  495. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/HTTPResponse.d.ts +134 -125
  496. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/HTTPResponse.d.ts.map +1 -1
  497. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/HTTPResponse.js +180 -160
  498. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/HTTPResponse.js.map +1 -1
  499. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Input.d.ts +358 -358
  500. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Input.js +537 -537
  501. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/JSHandle.d.ts +490 -490
  502. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/JSHandle.js +802 -802
  503. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/LifecycleWatcher.d.ts +65 -65
  504. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/LifecycleWatcher.d.ts.map +1 -1
  505. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/LifecycleWatcher.js +145 -144
  506. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/LifecycleWatcher.js.map +1 -1
  507. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/NetworkConditions.d.ts +26 -26
  508. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/NetworkConditions.js +30 -30
  509. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/NetworkManager.d.ts +126 -97
  510. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/NetworkManager.d.ts.map +1 -1
  511. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/NetworkManager.js +463 -338
  512. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/NetworkManager.js.map +1 -1
  513. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/PDFOptions.d.ts +161 -161
  514. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/PDFOptions.js +31 -31
  515. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Page.d.ts +2055 -2055
  516. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Page.js +2529 -2529
  517. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Product.d.ts +20 -20
  518. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Product.js +16 -16
  519. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Puppeteer.d.ts +159 -159
  520. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Puppeteer.js +157 -157
  521. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/PuppeteerViewport.d.ts +51 -51
  522. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/PuppeteerViewport.js +1 -1
  523. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/QueryHandler.d.ts +64 -64
  524. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/QueryHandler.js +157 -157
  525. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/SecurityDetails.d.ts +60 -60
  526. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/SecurityDetails.js +72 -72
  527. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Target.d.ts +100 -100
  528. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Target.js +141 -141
  529. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/TaskQueue.d.ts +20 -20
  530. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/TaskQueue.js +25 -25
  531. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/TimeoutSettings.d.ts +27 -27
  532. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/TimeoutSettings.js +43 -43
  533. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Tracing.d.ts +46 -46
  534. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Tracing.js +105 -105
  535. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/USKeyboardLayout.d.ts +39 -39
  536. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/USKeyboardLayout.js +403 -403
  537. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/WebWorker.d.ts +98 -98
  538. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/WebWorker.js +108 -108
  539. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/assert.d.ts +22 -22
  540. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/assert.js +28 -28
  541. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/fetch.d.ts +16 -16
  542. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/fetch.js +20 -20
  543. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/helper.d.ts +84 -84
  544. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/helper.js +305 -305
  545. data/node_modules/puppeteer-core/lib/esm/puppeteer/environment.d.ts +16 -16
  546. data/node_modules/puppeteer-core/lib/esm/puppeteer/environment.js +16 -16
  547. data/node_modules/puppeteer-core/lib/esm/puppeteer/global.d.ts +16 -16
  548. data/node_modules/puppeteer-core/lib/esm/puppeteer/global.js +1 -1
  549. data/node_modules/puppeteer-core/lib/esm/puppeteer/initialize-node.d.ts +17 -17
  550. data/node_modules/puppeteer-core/lib/esm/puppeteer/initialize-node.js +37 -37
  551. data/node_modules/puppeteer-core/lib/esm/puppeteer/initialize-web.d.ts +17 -17
  552. data/node_modules/puppeteer-core/lib/esm/puppeteer/initialize-web.js +22 -22
  553. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/BrowserFetcher.d.ts +133 -133
  554. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/BrowserFetcher.js +474 -474
  555. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/BrowserRunner.d.ts +40 -39
  556. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/BrowserRunner.d.ts.map +1 -1
  557. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/BrowserRunner.js +230 -204
  558. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/BrowserRunner.js.map +1 -1
  559. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/LaunchOptions.d.ts +134 -134
  560. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/LaunchOptions.js +16 -16
  561. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/Launcher.d.ts +16 -16
  562. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/Launcher.d.ts.map +1 -1
  563. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/Launcher.js +633 -566
  564. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/Launcher.js.map +1 -1
  565. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/NodeWebSocketTransport.d.ts +26 -26
  566. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/NodeWebSocketTransport.js +40 -40
  567. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/PipeTransport.d.ts +29 -29
  568. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/PipeTransport.js +60 -60
  569. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/Puppeteer.d.ts +153 -153
  570. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/Puppeteer.js +181 -181
  571. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/install.d.ts +17 -17
  572. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/install.js +165 -165
  573. data/node_modules/puppeteer-core/lib/esm/puppeteer/node-puppeteer-core.d.ts +17 -17
  574. data/node_modules/puppeteer-core/lib/esm/puppeteer/node-puppeteer-core.js +22 -22
  575. data/node_modules/puppeteer-core/lib/esm/puppeteer/node.d.ts +17 -17
  576. data/node_modules/puppeteer-core/lib/esm/puppeteer/node.js +21 -21
  577. data/node_modules/puppeteer-core/lib/esm/puppeteer/revisions.d.ts +21 -21
  578. data/node_modules/puppeteer-core/lib/esm/puppeteer/revisions.js +19 -19
  579. data/node_modules/puppeteer-core/lib/esm/puppeteer/web.d.ts +17 -17
  580. data/node_modules/puppeteer-core/lib/esm/puppeteer/web.js +21 -21
  581. data/node_modules/puppeteer-core/lib/esm/vendor/mitt/src/index.d.ts +27 -27
  582. data/node_modules/puppeteer-core/lib/esm/vendor/mitt/src/index.js +53 -53
  583. data/node_modules/puppeteer-core/lib/types.d.ts +67 -25
  584. data/node_modules/puppeteer-core/package.json +115 -115
  585. data/node_modules/puppeteer-core/typescript-if-required.js +61 -61
  586. data/node_modules/readable-stream/CONTRIBUTING.md +38 -38
  587. data/node_modules/readable-stream/GOVERNANCE.md +136 -136
  588. data/node_modules/readable-stream/LICENSE +47 -47
  589. data/node_modules/readable-stream/README.md +106 -106
  590. data/node_modules/readable-stream/errors-browser.js +127 -127
  591. data/node_modules/readable-stream/errors.js +116 -116
  592. data/node_modules/readable-stream/experimentalWarning.js +17 -17
  593. data/node_modules/readable-stream/lib/_stream_duplex.js +138 -138
  594. data/node_modules/readable-stream/lib/_stream_passthrough.js +38 -38
  595. data/node_modules/readable-stream/lib/_stream_readable.js +1123 -1123
  596. data/node_modules/readable-stream/lib/_stream_transform.js +200 -200
  597. data/node_modules/readable-stream/lib/_stream_writable.js +696 -696
  598. data/node_modules/readable-stream/lib/internal/streams/async_iterator.js +206 -206
  599. data/node_modules/readable-stream/lib/internal/streams/buffer_list.js +209 -209
  600. data/node_modules/readable-stream/lib/internal/streams/destroy.js +104 -104
  601. data/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +103 -103
  602. data/node_modules/readable-stream/lib/internal/streams/from-browser.js +3 -3
  603. data/node_modules/readable-stream/lib/internal/streams/from.js +63 -63
  604. data/node_modules/readable-stream/lib/internal/streams/pipeline.js +96 -96
  605. data/node_modules/readable-stream/lib/internal/streams/state.js +26 -26
  606. data/node_modules/readable-stream/lib/internal/streams/stream-browser.js +1 -1
  607. data/node_modules/readable-stream/lib/internal/streams/stream.js +1 -1
  608. data/node_modules/readable-stream/package.json +68 -68
  609. data/node_modules/readable-stream/readable-browser.js +9 -9
  610. data/node_modules/readable-stream/readable.js +16 -16
  611. data/node_modules/rimraf/CHANGELOG.md +65 -65
  612. data/node_modules/rimraf/LICENSE +15 -15
  613. data/node_modules/rimraf/README.md +101 -101
  614. data/node_modules/rimraf/bin.js +68 -68
  615. data/node_modules/rimraf/package.json +32 -32
  616. data/node_modules/rimraf/rimraf.js +360 -360
  617. data/node_modules/safe-buffer/LICENSE +21 -21
  618. data/node_modules/safe-buffer/README.md +584 -584
  619. data/node_modules/safe-buffer/index.d.ts +186 -186
  620. data/node_modules/safe-buffer/index.js +65 -65
  621. data/node_modules/safe-buffer/package.json +51 -51
  622. data/node_modules/string_decoder/LICENSE +48 -48
  623. data/node_modules/string_decoder/README.md +47 -47
  624. data/node_modules/string_decoder/lib/string_decoder.js +295 -295
  625. data/node_modules/string_decoder/package.json +34 -34
  626. data/node_modules/tar-fs/.travis.yml +6 -6
  627. data/node_modules/tar-fs/LICENSE +20 -20
  628. data/node_modules/tar-fs/README.md +165 -165
  629. data/node_modules/tar-fs/index.js +351 -351
  630. data/node_modules/tar-fs/package.json +41 -41
  631. data/node_modules/tar-fs/test/fixtures/a/hello.txt +1 -1
  632. data/node_modules/tar-fs/test/fixtures/b/a/test.txt +1 -1
  633. data/node_modules/tar-fs/test/index.js +346 -346
  634. data/node_modules/tar-stream/LICENSE +20 -20
  635. data/node_modules/tar-stream/README.md +168 -168
  636. data/node_modules/tar-stream/extract.js +257 -257
  637. data/node_modules/tar-stream/headers.js +295 -295
  638. data/node_modules/tar-stream/index.js +2 -2
  639. data/node_modules/tar-stream/pack.js +255 -255
  640. data/node_modules/tar-stream/package.json +58 -58
  641. data/node_modules/tar-stream/sandbox.js +11 -11
  642. data/node_modules/through/.travis.yml +5 -5
  643. data/node_modules/through/LICENSE.APACHE2 +15 -15
  644. data/node_modules/through/LICENSE.MIT +24 -24
  645. data/node_modules/through/index.js +108 -108
  646. data/node_modules/through/package.json +36 -36
  647. data/node_modules/through/readme.markdown +64 -64
  648. data/node_modules/through/test/async.js +28 -28
  649. data/node_modules/through/test/auto-destroy.js +30 -30
  650. data/node_modules/through/test/buffering.js +71 -71
  651. data/node_modules/through/test/end.js +45 -45
  652. data/node_modules/through/test/index.js +133 -133
  653. data/node_modules/tr46/.npmignore +4 -4
  654. data/node_modules/tr46/index.js +193 -193
  655. data/node_modules/tr46/package.json +31 -31
  656. data/node_modules/unbzip2-stream/LICENSE +24 -24
  657. data/node_modules/unbzip2-stream/README.md +59 -59
  658. data/node_modules/unbzip2-stream/dist/unbzip2-stream.min.js +1 -1
  659. data/node_modules/unbzip2-stream/index.js +93 -93
  660. data/node_modules/unbzip2-stream/lib/bit_iterator.js +39 -39
  661. data/node_modules/unbzip2-stream/lib/bzip2.js +365 -365
  662. data/node_modules/unbzip2-stream/package.json +51 -51
  663. data/node_modules/util-deprecate/History.md +16 -16
  664. data/node_modules/util-deprecate/LICENSE +24 -24
  665. data/node_modules/util-deprecate/README.md +53 -53
  666. data/node_modules/util-deprecate/browser.js +67 -67
  667. data/node_modules/util-deprecate/node.js +6 -6
  668. data/node_modules/util-deprecate/package.json +27 -27
  669. data/node_modules/webidl-conversions/LICENSE.md +12 -12
  670. data/node_modules/webidl-conversions/README.md +53 -53
  671. data/node_modules/webidl-conversions/lib/index.js +189 -189
  672. data/node_modules/webidl-conversions/package.json +23 -23
  673. data/node_modules/whatwg-url/LICENSE.txt +21 -21
  674. data/node_modules/whatwg-url/README.md +67 -67
  675. data/node_modules/whatwg-url/lib/URL-impl.js +200 -200
  676. data/node_modules/whatwg-url/lib/URL.js +196 -196
  677. data/node_modules/whatwg-url/lib/public-api.js +11 -11
  678. data/node_modules/whatwg-url/lib/utils.js +20 -20
  679. data/node_modules/whatwg-url/package.json +32 -32
  680. data/node_modules/wrappy/LICENSE +15 -15
  681. data/node_modules/wrappy/README.md +36 -36
  682. data/node_modules/wrappy/package.json +29 -29
  683. data/node_modules/wrappy/wrappy.js +33 -33
  684. data/node_modules/ws/LICENSE +19 -19
  685. data/node_modules/ws/README.md +493 -493
  686. data/node_modules/ws/browser.js +8 -8
  687. data/node_modules/ws/index.js +13 -13
  688. data/node_modules/ws/lib/buffer-util.js +126 -126
  689. data/node_modules/ws/lib/constants.js +12 -12
  690. data/node_modules/ws/lib/event-target.js +266 -266
  691. data/node_modules/ws/lib/extension.js +203 -203
  692. data/node_modules/ws/lib/limiter.js +55 -55
  693. data/node_modules/ws/lib/permessage-deflate.js +511 -511
  694. data/node_modules/ws/lib/receiver.js +612 -612
  695. data/node_modules/ws/lib/sender.js +422 -422
  696. data/node_modules/ws/lib/stream.js +180 -180
  697. data/node_modules/ws/lib/subprotocol.js +62 -62
  698. data/node_modules/ws/lib/validation.js +124 -124
  699. data/node_modules/ws/lib/websocket-server.js +485 -485
  700. data/node_modules/ws/lib/websocket.js +1149 -1149
  701. data/node_modules/ws/package.json +61 -61
  702. data/node_modules/ws/wrapper.mjs +8 -8
  703. data/node_modules/yauzl/LICENSE +21 -21
  704. data/node_modules/yauzl/README.md +658 -658
  705. data/node_modules/yauzl/index.js +796 -796
  706. data/node_modules/yauzl/package.json +40 -40
  707. data/package.json +1 -1
  708. metadata +23 -25
  709. data/node_modules/devtools-protocol/changelog.md +0 -10491
  710. data/node_modules/devtools-protocol/externs/protocol_externs.js +0 -9734
@@ -1,1124 +1,1124 @@
1
- // Copyright Joyent, Inc. and other Node contributors.
2
- //
3
- // Permission is hereby granted, free of charge, to any person obtaining a
4
- // copy of this software and associated documentation files (the
5
- // "Software"), to deal in the Software without restriction, including
6
- // without limitation the rights to use, copy, modify, merge, publish,
7
- // distribute, sublicense, and/or sell copies of the Software, and to permit
8
- // persons to whom the Software is furnished to do so, subject to the
9
- // following conditions:
10
- //
11
- // The above copyright notice and this permission notice shall be included
12
- // in all copies or substantial portions of the Software.
13
- //
14
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
17
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
19
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
21
- 'use strict';
22
-
23
- module.exports = Readable;
24
- /*<replacement>*/
25
-
26
- var Duplex;
27
- /*</replacement>*/
28
-
29
- Readable.ReadableState = ReadableState;
30
- /*<replacement>*/
31
-
32
- var EE = require('events').EventEmitter;
33
-
34
- var EElistenerCount = function EElistenerCount(emitter, type) {
35
- return emitter.listeners(type).length;
36
- };
37
- /*</replacement>*/
38
-
39
- /*<replacement>*/
40
-
41
-
42
- var Stream = require('./internal/streams/stream');
43
- /*</replacement>*/
44
-
45
-
46
- var Buffer = require('buffer').Buffer;
47
-
48
- var OurUint8Array = global.Uint8Array || function () {};
49
-
50
- function _uint8ArrayToBuffer(chunk) {
51
- return Buffer.from(chunk);
52
- }
53
-
54
- function _isUint8Array(obj) {
55
- return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
56
- }
57
- /*<replacement>*/
58
-
59
-
60
- var debugUtil = require('util');
61
-
62
- var debug;
63
-
64
- if (debugUtil && debugUtil.debuglog) {
65
- debug = debugUtil.debuglog('stream');
66
- } else {
67
- debug = function debug() {};
68
- }
69
- /*</replacement>*/
70
-
71
-
72
- var BufferList = require('./internal/streams/buffer_list');
73
-
74
- var destroyImpl = require('./internal/streams/destroy');
75
-
76
- var _require = require('./internal/streams/state'),
77
- getHighWaterMark = _require.getHighWaterMark;
78
-
79
- var _require$codes = require('../errors').codes,
80
- ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,
81
- ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,
82
- ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,
83
- ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.
84
-
85
-
86
- var StringDecoder;
87
- var createReadableStreamAsyncIterator;
88
- var from;
89
-
90
- require('inherits')(Readable, Stream);
91
-
92
- var errorOrDestroy = destroyImpl.errorOrDestroy;
93
- var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];
94
-
95
- function prependListener(emitter, event, fn) {
96
- // Sadly this is not cacheable as some libraries bundle their own
97
- // event emitter implementation with them.
98
- if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any
99
- // userland ones. NEVER DO THIS. This is here only because this code needs
100
- // to continue to work with older versions of Node.js that do not include
101
- // the prependListener() method. The goal is to eventually remove this hack.
102
-
103
- if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];
104
- }
105
-
106
- function ReadableState(options, stream, isDuplex) {
107
- Duplex = Duplex || require('./_stream_duplex');
108
- options = options || {}; // Duplex streams are both readable and writable, but share
109
- // the same options object.
110
- // However, some cases require setting options to different
111
- // values for the readable and the writable sides of the duplex stream.
112
- // These options can be provided separately as readableXXX and writableXXX.
113
-
114
- if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to
115
- // make all the buffer merging and length checks go away
116
-
117
- this.objectMode = !!options.objectMode;
118
- if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer
119
- // Note: 0 is a valid value, means "don't call _read preemptively ever"
120
-
121
- this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the
122
- // linked list can remove elements from the beginning faster than
123
- // array.shift()
124
-
125
- this.buffer = new BufferList();
126
- this.length = 0;
127
- this.pipes = null;
128
- this.pipesCount = 0;
129
- this.flowing = null;
130
- this.ended = false;
131
- this.endEmitted = false;
132
- this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted
133
- // immediately, or on a later tick. We set this to true at first, because
134
- // any actions that shouldn't happen until "later" should generally also
135
- // not happen before the first read call.
136
-
137
- this.sync = true; // whenever we return null, then we set a flag to say
138
- // that we're awaiting a 'readable' event emission.
139
-
140
- this.needReadable = false;
141
- this.emittedReadable = false;
142
- this.readableListening = false;
143
- this.resumeScheduled = false;
144
- this.paused = true; // Should close be emitted on destroy. Defaults to true.
145
-
146
- this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')
147
-
148
- this.autoDestroy = !!options.autoDestroy; // has it been destroyed
149
-
150
- this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string
151
- // encoding is 'binary' so we have to make this configurable.
152
- // Everything else in the universe uses 'utf8', though.
153
-
154
- this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s
155
-
156
- this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled
157
-
158
- this.readingMore = false;
159
- this.decoder = null;
160
- this.encoding = null;
161
-
162
- if (options.encoding) {
163
- if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
164
- this.decoder = new StringDecoder(options.encoding);
165
- this.encoding = options.encoding;
166
- }
167
- }
168
-
169
- function Readable(options) {
170
- Duplex = Duplex || require('./_stream_duplex');
171
- if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside
172
- // the ReadableState constructor, at least with V8 6.5
173
-
174
- var isDuplex = this instanceof Duplex;
175
- this._readableState = new ReadableState(options, this, isDuplex); // legacy
176
-
177
- this.readable = true;
178
-
179
- if (options) {
180
- if (typeof options.read === 'function') this._read = options.read;
181
- if (typeof options.destroy === 'function') this._destroy = options.destroy;
182
- }
183
-
184
- Stream.call(this);
185
- }
186
-
187
- Object.defineProperty(Readable.prototype, 'destroyed', {
188
- // making it explicit this property is not enumerable
189
- // because otherwise some prototype manipulation in
190
- // userland will fail
191
- enumerable: false,
192
- get: function get() {
193
- if (this._readableState === undefined) {
194
- return false;
195
- }
196
-
197
- return this._readableState.destroyed;
198
- },
199
- set: function set(value) {
200
- // we ignore the value if the stream
201
- // has not been initialized yet
202
- if (!this._readableState) {
203
- return;
204
- } // backward compatibility, the user is explicitly
205
- // managing destroyed
206
-
207
-
208
- this._readableState.destroyed = value;
209
- }
210
- });
211
- Readable.prototype.destroy = destroyImpl.destroy;
212
- Readable.prototype._undestroy = destroyImpl.undestroy;
213
-
214
- Readable.prototype._destroy = function (err, cb) {
215
- cb(err);
216
- }; // Manually shove something into the read() buffer.
217
- // This returns true if the highWaterMark has not been hit yet,
218
- // similar to how Writable.write() returns true if you should
219
- // write() some more.
220
-
221
-
222
- Readable.prototype.push = function (chunk, encoding) {
223
- var state = this._readableState;
224
- var skipChunkCheck;
225
-
226
- if (!state.objectMode) {
227
- if (typeof chunk === 'string') {
228
- encoding = encoding || state.defaultEncoding;
229
-
230
- if (encoding !== state.encoding) {
231
- chunk = Buffer.from(chunk, encoding);
232
- encoding = '';
233
- }
234
-
235
- skipChunkCheck = true;
236
- }
237
- } else {
238
- skipChunkCheck = true;
239
- }
240
-
241
- return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);
242
- }; // Unshift should *always* be something directly out of read()
243
-
244
-
245
- Readable.prototype.unshift = function (chunk) {
246
- return readableAddChunk(this, chunk, null, true, false);
247
- };
248
-
249
- function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {
250
- debug('readableAddChunk', chunk);
251
- var state = stream._readableState;
252
-
253
- if (chunk === null) {
254
- state.reading = false;
255
- onEofChunk(stream, state);
256
- } else {
257
- var er;
258
- if (!skipChunkCheck) er = chunkInvalid(state, chunk);
259
-
260
- if (er) {
261
- errorOrDestroy(stream, er);
262
- } else if (state.objectMode || chunk && chunk.length > 0) {
263
- if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {
264
- chunk = _uint8ArrayToBuffer(chunk);
265
- }
266
-
267
- if (addToFront) {
268
- if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);
269
- } else if (state.ended) {
270
- errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());
271
- } else if (state.destroyed) {
272
- return false;
273
- } else {
274
- state.reading = false;
275
-
276
- if (state.decoder && !encoding) {
277
- chunk = state.decoder.write(chunk);
278
- if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);
279
- } else {
280
- addChunk(stream, state, chunk, false);
281
- }
282
- }
283
- } else if (!addToFront) {
284
- state.reading = false;
285
- maybeReadMore(stream, state);
286
- }
287
- } // We can push more data if we are below the highWaterMark.
288
- // Also, if we have no data yet, we can stand some more bytes.
289
- // This is to work around cases where hwm=0, such as the repl.
290
-
291
-
292
- return !state.ended && (state.length < state.highWaterMark || state.length === 0);
293
- }
294
-
295
- function addChunk(stream, state, chunk, addToFront) {
296
- if (state.flowing && state.length === 0 && !state.sync) {
297
- state.awaitDrain = 0;
298
- stream.emit('data', chunk);
299
- } else {
300
- // update the buffer info.
301
- state.length += state.objectMode ? 1 : chunk.length;
302
- if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
303
- if (state.needReadable) emitReadable(stream);
304
- }
305
-
306
- maybeReadMore(stream, state);
307
- }
308
-
309
- function chunkInvalid(state, chunk) {
310
- var er;
311
-
312
- if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
313
- er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);
314
- }
315
-
316
- return er;
317
- }
318
-
319
- Readable.prototype.isPaused = function () {
320
- return this._readableState.flowing === false;
321
- }; // backwards compatibility.
322
-
323
-
324
- Readable.prototype.setEncoding = function (enc) {
325
- if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
326
- var decoder = new StringDecoder(enc);
327
- this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8
328
-
329
- this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:
330
-
331
- var p = this._readableState.buffer.head;
332
- var content = '';
333
-
334
- while (p !== null) {
335
- content += decoder.write(p.data);
336
- p = p.next;
337
- }
338
-
339
- this._readableState.buffer.clear();
340
-
341
- if (content !== '') this._readableState.buffer.push(content);
342
- this._readableState.length = content.length;
343
- return this;
344
- }; // Don't raise the hwm > 1GB
345
-
346
-
347
- var MAX_HWM = 0x40000000;
348
-
349
- function computeNewHighWaterMark(n) {
350
- if (n >= MAX_HWM) {
351
- // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.
352
- n = MAX_HWM;
353
- } else {
354
- // Get the next highest power of 2 to prevent increasing hwm excessively in
355
- // tiny amounts
356
- n--;
357
- n |= n >>> 1;
358
- n |= n >>> 2;
359
- n |= n >>> 4;
360
- n |= n >>> 8;
361
- n |= n >>> 16;
362
- n++;
363
- }
364
-
365
- return n;
366
- } // This function is designed to be inlinable, so please take care when making
367
- // changes to the function body.
368
-
369
-
370
- function howMuchToRead(n, state) {
371
- if (n <= 0 || state.length === 0 && state.ended) return 0;
372
- if (state.objectMode) return 1;
373
-
374
- if (n !== n) {
375
- // Only flow one buffer at a time
376
- if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
377
- } // If we're asking for more than the current hwm, then raise the hwm.
378
-
379
-
380
- if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
381
- if (n <= state.length) return n; // Don't have enough
382
-
383
- if (!state.ended) {
384
- state.needReadable = true;
385
- return 0;
386
- }
387
-
388
- return state.length;
389
- } // you can override either this method, or the async _read(n) below.
390
-
391
-
392
- Readable.prototype.read = function (n) {
393
- debug('read', n);
394
- n = parseInt(n, 10);
395
- var state = this._readableState;
396
- var nOrig = n;
397
- if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we
398
- // already have a bunch of data in the buffer, then just trigger
399
- // the 'readable' event and move on.
400
-
401
- if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {
402
- debug('read: emitReadable', state.length, state.ended);
403
- if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
404
- return null;
405
- }
406
-
407
- n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.
408
-
409
- if (n === 0 && state.ended) {
410
- if (state.length === 0) endReadable(this);
411
- return null;
412
- } // All the actual chunk generation logic needs to be
413
- // *below* the call to _read. The reason is that in certain
414
- // synthetic stream cases, such as passthrough streams, _read
415
- // may be a completely synchronous operation which may change
416
- // the state of the read buffer, providing enough data when
417
- // before there was *not* enough.
418
- //
419
- // So, the steps are:
420
- // 1. Figure out what the state of things will be after we do
421
- // a read from the buffer.
422
- //
423
- // 2. If that resulting state will trigger a _read, then call _read.
424
- // Note that this may be asynchronous, or synchronous. Yes, it is
425
- // deeply ugly to write APIs this way, but that still doesn't mean
426
- // that the Readable class should behave improperly, as streams are
427
- // designed to be sync/async agnostic.
428
- // Take note if the _read call is sync or async (ie, if the read call
429
- // has returned yet), so that we know whether or not it's safe to emit
430
- // 'readable' etc.
431
- //
432
- // 3. Actually pull the requested chunks out of the buffer and return.
433
- // if we need a readable event, then we need to do some reading.
434
-
435
-
436
- var doRead = state.needReadable;
437
- debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some
438
-
439
- if (state.length === 0 || state.length - n < state.highWaterMark) {
440
- doRead = true;
441
- debug('length less than watermark', doRead);
442
- } // however, if we've ended, then there's no point, and if we're already
443
- // reading, then it's unnecessary.
444
-
445
-
446
- if (state.ended || state.reading) {
447
- doRead = false;
448
- debug('reading or ended', doRead);
449
- } else if (doRead) {
450
- debug('do read');
451
- state.reading = true;
452
- state.sync = true; // if the length is currently zero, then we *need* a readable event.
453
-
454
- if (state.length === 0) state.needReadable = true; // call internal read method
455
-
456
- this._read(state.highWaterMark);
457
-
458
- state.sync = false; // If _read pushed data synchronously, then `reading` will be false,
459
- // and we need to re-evaluate how much data we can return to the user.
460
-
461
- if (!state.reading) n = howMuchToRead(nOrig, state);
462
- }
463
-
464
- var ret;
465
- if (n > 0) ret = fromList(n, state);else ret = null;
466
-
467
- if (ret === null) {
468
- state.needReadable = state.length <= state.highWaterMark;
469
- n = 0;
470
- } else {
471
- state.length -= n;
472
- state.awaitDrain = 0;
473
- }
474
-
475
- if (state.length === 0) {
476
- // If we have nothing in the buffer, then we want to know
477
- // as soon as we *do* get something into the buffer.
478
- if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.
479
-
480
- if (nOrig !== n && state.ended) endReadable(this);
481
- }
482
-
483
- if (ret !== null) this.emit('data', ret);
484
- return ret;
485
- };
486
-
487
- function onEofChunk(stream, state) {
488
- debug('onEofChunk');
489
- if (state.ended) return;
490
-
491
- if (state.decoder) {
492
- var chunk = state.decoder.end();
493
-
494
- if (chunk && chunk.length) {
495
- state.buffer.push(chunk);
496
- state.length += state.objectMode ? 1 : chunk.length;
497
- }
498
- }
499
-
500
- state.ended = true;
501
-
502
- if (state.sync) {
503
- // if we are sync, wait until next tick to emit the data.
504
- // Otherwise we risk emitting data in the flow()
505
- // the readable code triggers during a read() call
506
- emitReadable(stream);
507
- } else {
508
- // emit 'readable' now to make sure it gets picked up.
509
- state.needReadable = false;
510
-
511
- if (!state.emittedReadable) {
512
- state.emittedReadable = true;
513
- emitReadable_(stream);
514
- }
515
- }
516
- } // Don't emit readable right away in sync mode, because this can trigger
517
- // another read() call => stack overflow. This way, it might trigger
518
- // a nextTick recursion warning, but that's not so bad.
519
-
520
-
521
- function emitReadable(stream) {
522
- var state = stream._readableState;
523
- debug('emitReadable', state.needReadable, state.emittedReadable);
524
- state.needReadable = false;
525
-
526
- if (!state.emittedReadable) {
527
- debug('emitReadable', state.flowing);
528
- state.emittedReadable = true;
529
- process.nextTick(emitReadable_, stream);
530
- }
531
- }
532
-
533
- function emitReadable_(stream) {
534
- var state = stream._readableState;
535
- debug('emitReadable_', state.destroyed, state.length, state.ended);
536
-
537
- if (!state.destroyed && (state.length || state.ended)) {
538
- stream.emit('readable');
539
- state.emittedReadable = false;
540
- } // The stream needs another readable event if
541
- // 1. It is not flowing, as the flow mechanism will take
542
- // care of it.
543
- // 2. It is not ended.
544
- // 3. It is below the highWaterMark, so we can schedule
545
- // another readable later.
546
-
547
-
548
- state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;
549
- flow(stream);
550
- } // at this point, the user has presumably seen the 'readable' event,
551
- // and called read() to consume some data. that may have triggered
552
- // in turn another _read(n) call, in which case reading = true if
553
- // it's in progress.
554
- // However, if we're not ended, or reading, and the length < hwm,
555
- // then go ahead and try to read some more preemptively.
556
-
557
-
558
- function maybeReadMore(stream, state) {
559
- if (!state.readingMore) {
560
- state.readingMore = true;
561
- process.nextTick(maybeReadMore_, stream, state);
562
- }
563
- }
564
-
565
- function maybeReadMore_(stream, state) {
566
- // Attempt to read more data if we should.
567
- //
568
- // The conditions for reading more data are (one of):
569
- // - Not enough data buffered (state.length < state.highWaterMark). The loop
570
- // is responsible for filling the buffer with enough data if such data
571
- // is available. If highWaterMark is 0 and we are not in the flowing mode
572
- // we should _not_ attempt to buffer any extra data. We'll get more data
573
- // when the stream consumer calls read() instead.
574
- // - No data in the buffer, and the stream is in flowing mode. In this mode
575
- // the loop below is responsible for ensuring read() is called. Failing to
576
- // call read here would abort the flow and there's no other mechanism for
577
- // continuing the flow if the stream consumer has just subscribed to the
578
- // 'data' event.
579
- //
580
- // In addition to the above conditions to keep reading data, the following
581
- // conditions prevent the data from being read:
582
- // - The stream has ended (state.ended).
583
- // - There is already a pending 'read' operation (state.reading). This is a
584
- // case where the the stream has called the implementation defined _read()
585
- // method, but they are processing the call asynchronously and have _not_
586
- // called push() with new data. In this case we skip performing more
587
- // read()s. The execution ends in this method again after the _read() ends
588
- // up calling push() with more data.
589
- while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {
590
- var len = state.length;
591
- debug('maybeReadMore read 0');
592
- stream.read(0);
593
- if (len === state.length) // didn't get any data, stop spinning.
594
- break;
595
- }
596
-
597
- state.readingMore = false;
598
- } // abstract method. to be overridden in specific implementation classes.
599
- // call cb(er, data) where data is <= n in length.
600
- // for virtual (non-string, non-buffer) streams, "length" is somewhat
601
- // arbitrary, and perhaps not very meaningful.
602
-
603
-
604
- Readable.prototype._read = function (n) {
605
- errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));
606
- };
607
-
608
- Readable.prototype.pipe = function (dest, pipeOpts) {
609
- var src = this;
610
- var state = this._readableState;
611
-
612
- switch (state.pipesCount) {
613
- case 0:
614
- state.pipes = dest;
615
- break;
616
-
617
- case 1:
618
- state.pipes = [state.pipes, dest];
619
- break;
620
-
621
- default:
622
- state.pipes.push(dest);
623
- break;
624
- }
625
-
626
- state.pipesCount += 1;
627
- debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
628
- var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
629
- var endFn = doEnd ? onend : unpipe;
630
- if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);
631
- dest.on('unpipe', onunpipe);
632
-
633
- function onunpipe(readable, unpipeInfo) {
634
- debug('onunpipe');
635
-
636
- if (readable === src) {
637
- if (unpipeInfo && unpipeInfo.hasUnpiped === false) {
638
- unpipeInfo.hasUnpiped = true;
639
- cleanup();
640
- }
641
- }
642
- }
643
-
644
- function onend() {
645
- debug('onend');
646
- dest.end();
647
- } // when the dest drains, it reduces the awaitDrain counter
648
- // on the source. This would be more elegant with a .once()
649
- // handler in flow(), but adding and removing repeatedly is
650
- // too slow.
651
-
652
-
653
- var ondrain = pipeOnDrain(src);
654
- dest.on('drain', ondrain);
655
- var cleanedUp = false;
656
-
657
- function cleanup() {
658
- debug('cleanup'); // cleanup event handlers once the pipe is broken
659
-
660
- dest.removeListener('close', onclose);
661
- dest.removeListener('finish', onfinish);
662
- dest.removeListener('drain', ondrain);
663
- dest.removeListener('error', onerror);
664
- dest.removeListener('unpipe', onunpipe);
665
- src.removeListener('end', onend);
666
- src.removeListener('end', unpipe);
667
- src.removeListener('data', ondata);
668
- cleanedUp = true; // if the reader is waiting for a drain event from this
669
- // specific writer, then it would cause it to never start
670
- // flowing again.
671
- // So, if this is awaiting a drain, then we just call it now.
672
- // If we don't know, then assume that we are waiting for one.
673
-
674
- if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
675
- }
676
-
677
- src.on('data', ondata);
678
-
679
- function ondata(chunk) {
680
- debug('ondata');
681
- var ret = dest.write(chunk);
682
- debug('dest.write', ret);
683
-
684
- if (ret === false) {
685
- // If the user unpiped during `dest.write()`, it is possible
686
- // to get stuck in a permanently paused state if that write
687
- // also returned false.
688
- // => Check whether `dest` is still a piping destination.
689
- if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
690
- debug('false write response, pause', state.awaitDrain);
691
- state.awaitDrain++;
692
- }
693
-
694
- src.pause();
695
- }
696
- } // if the dest has an error, then stop piping into it.
697
- // however, don't suppress the throwing behavior for this.
698
-
699
-
700
- function onerror(er) {
701
- debug('onerror', er);
702
- unpipe();
703
- dest.removeListener('error', onerror);
704
- if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);
705
- } // Make sure our error handler is attached before userland ones.
706
-
707
-
708
- prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.
709
-
710
- function onclose() {
711
- dest.removeListener('finish', onfinish);
712
- unpipe();
713
- }
714
-
715
- dest.once('close', onclose);
716
-
717
- function onfinish() {
718
- debug('onfinish');
719
- dest.removeListener('close', onclose);
720
- unpipe();
721
- }
722
-
723
- dest.once('finish', onfinish);
724
-
725
- function unpipe() {
726
- debug('unpipe');
727
- src.unpipe(dest);
728
- } // tell the dest that it's being piped to
729
-
730
-
731
- dest.emit('pipe', src); // start the flow if it hasn't been started already.
732
-
733
- if (!state.flowing) {
734
- debug('pipe resume');
735
- src.resume();
736
- }
737
-
738
- return dest;
739
- };
740
-
741
- function pipeOnDrain(src) {
742
- return function pipeOnDrainFunctionResult() {
743
- var state = src._readableState;
744
- debug('pipeOnDrain', state.awaitDrain);
745
- if (state.awaitDrain) state.awaitDrain--;
746
-
747
- if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
748
- state.flowing = true;
749
- flow(src);
750
- }
751
- };
752
- }
753
-
754
- Readable.prototype.unpipe = function (dest) {
755
- var state = this._readableState;
756
- var unpipeInfo = {
757
- hasUnpiped: false
758
- }; // if we're not piping anywhere, then do nothing.
759
-
760
- if (state.pipesCount === 0) return this; // just one destination. most common case.
761
-
762
- if (state.pipesCount === 1) {
763
- // passed in one, but it's not the right one.
764
- if (dest && dest !== state.pipes) return this;
765
- if (!dest) dest = state.pipes; // got a match.
766
-
767
- state.pipes = null;
768
- state.pipesCount = 0;
769
- state.flowing = false;
770
- if (dest) dest.emit('unpipe', this, unpipeInfo);
771
- return this;
772
- } // slow case. multiple pipe destinations.
773
-
774
-
775
- if (!dest) {
776
- // remove all.
777
- var dests = state.pipes;
778
- var len = state.pipesCount;
779
- state.pipes = null;
780
- state.pipesCount = 0;
781
- state.flowing = false;
782
-
783
- for (var i = 0; i < len; i++) {
784
- dests[i].emit('unpipe', this, {
785
- hasUnpiped: false
786
- });
787
- }
788
-
789
- return this;
790
- } // try to find the right one.
791
-
792
-
793
- var index = indexOf(state.pipes, dest);
794
- if (index === -1) return this;
795
- state.pipes.splice(index, 1);
796
- state.pipesCount -= 1;
797
- if (state.pipesCount === 1) state.pipes = state.pipes[0];
798
- dest.emit('unpipe', this, unpipeInfo);
799
- return this;
800
- }; // set up data events if they are asked for
801
- // Ensure readable listeners eventually get something
802
-
803
-
804
- Readable.prototype.on = function (ev, fn) {
805
- var res = Stream.prototype.on.call(this, ev, fn);
806
- var state = this._readableState;
807
-
808
- if (ev === 'data') {
809
- // update readableListening so that resume() may be a no-op
810
- // a few lines down. This is needed to support once('readable').
811
- state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused
812
-
813
- if (state.flowing !== false) this.resume();
814
- } else if (ev === 'readable') {
815
- if (!state.endEmitted && !state.readableListening) {
816
- state.readableListening = state.needReadable = true;
817
- state.flowing = false;
818
- state.emittedReadable = false;
819
- debug('on readable', state.length, state.reading);
820
-
821
- if (state.length) {
822
- emitReadable(this);
823
- } else if (!state.reading) {
824
- process.nextTick(nReadingNextTick, this);
825
- }
826
- }
827
- }
828
-
829
- return res;
830
- };
831
-
832
- Readable.prototype.addListener = Readable.prototype.on;
833
-
834
- Readable.prototype.removeListener = function (ev, fn) {
835
- var res = Stream.prototype.removeListener.call(this, ev, fn);
836
-
837
- if (ev === 'readable') {
838
- // We need to check if there is someone still listening to
839
- // readable and reset the state. However this needs to happen
840
- // after readable has been emitted but before I/O (nextTick) to
841
- // support once('readable', fn) cycles. This means that calling
842
- // resume within the same tick will have no
843
- // effect.
844
- process.nextTick(updateReadableListening, this);
845
- }
846
-
847
- return res;
848
- };
849
-
850
- Readable.prototype.removeAllListeners = function (ev) {
851
- var res = Stream.prototype.removeAllListeners.apply(this, arguments);
852
-
853
- if (ev === 'readable' || ev === undefined) {
854
- // We need to check if there is someone still listening to
855
- // readable and reset the state. However this needs to happen
856
- // after readable has been emitted but before I/O (nextTick) to
857
- // support once('readable', fn) cycles. This means that calling
858
- // resume within the same tick will have no
859
- // effect.
860
- process.nextTick(updateReadableListening, this);
861
- }
862
-
863
- return res;
864
- };
865
-
866
- function updateReadableListening(self) {
867
- var state = self._readableState;
868
- state.readableListening = self.listenerCount('readable') > 0;
869
-
870
- if (state.resumeScheduled && !state.paused) {
871
- // flowing needs to be set to true now, otherwise
872
- // the upcoming resume will not flow.
873
- state.flowing = true; // crude way to check if we should resume
874
- } else if (self.listenerCount('data') > 0) {
875
- self.resume();
876
- }
877
- }
878
-
879
- function nReadingNextTick(self) {
880
- debug('readable nexttick read 0');
881
- self.read(0);
882
- } // pause() and resume() are remnants of the legacy readable stream API
883
- // If the user uses them, then switch into old mode.
884
-
885
-
886
- Readable.prototype.resume = function () {
887
- var state = this._readableState;
888
-
889
- if (!state.flowing) {
890
- debug('resume'); // we flow only if there is no one listening
891
- // for readable, but we still have to call
892
- // resume()
893
-
894
- state.flowing = !state.readableListening;
895
- resume(this, state);
896
- }
897
-
898
- state.paused = false;
899
- return this;
900
- };
901
-
902
- function resume(stream, state) {
903
- if (!state.resumeScheduled) {
904
- state.resumeScheduled = true;
905
- process.nextTick(resume_, stream, state);
906
- }
907
- }
908
-
909
- function resume_(stream, state) {
910
- debug('resume', state.reading);
911
-
912
- if (!state.reading) {
913
- stream.read(0);
914
- }
915
-
916
- state.resumeScheduled = false;
917
- stream.emit('resume');
918
- flow(stream);
919
- if (state.flowing && !state.reading) stream.read(0);
920
- }
921
-
922
- Readable.prototype.pause = function () {
923
- debug('call pause flowing=%j', this._readableState.flowing);
924
-
925
- if (this._readableState.flowing !== false) {
926
- debug('pause');
927
- this._readableState.flowing = false;
928
- this.emit('pause');
929
- }
930
-
931
- this._readableState.paused = true;
932
- return this;
933
- };
934
-
935
- function flow(stream) {
936
- var state = stream._readableState;
937
- debug('flow', state.flowing);
938
-
939
- while (state.flowing && stream.read() !== null) {
940
- ;
941
- }
942
- } // wrap an old-style stream as the async data source.
943
- // This is *not* part of the readable stream interface.
944
- // It is an ugly unfortunate mess of history.
945
-
946
-
947
- Readable.prototype.wrap = function (stream) {
948
- var _this = this;
949
-
950
- var state = this._readableState;
951
- var paused = false;
952
- stream.on('end', function () {
953
- debug('wrapped end');
954
-
955
- if (state.decoder && !state.ended) {
956
- var chunk = state.decoder.end();
957
- if (chunk && chunk.length) _this.push(chunk);
958
- }
959
-
960
- _this.push(null);
961
- });
962
- stream.on('data', function (chunk) {
963
- debug('wrapped data');
964
- if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode
965
-
966
- if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
967
-
968
- var ret = _this.push(chunk);
969
-
970
- if (!ret) {
971
- paused = true;
972
- stream.pause();
973
- }
974
- }); // proxy all the other methods.
975
- // important when wrapping filters and duplexes.
976
-
977
- for (var i in stream) {
978
- if (this[i] === undefined && typeof stream[i] === 'function') {
979
- this[i] = function methodWrap(method) {
980
- return function methodWrapReturnFunction() {
981
- return stream[method].apply(stream, arguments);
982
- };
983
- }(i);
984
- }
985
- } // proxy certain important events.
986
-
987
-
988
- for (var n = 0; n < kProxyEvents.length; n++) {
989
- stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));
990
- } // when we try to consume some more bytes, simply unpause the
991
- // underlying stream.
992
-
993
-
994
- this._read = function (n) {
995
- debug('wrapped _read', n);
996
-
997
- if (paused) {
998
- paused = false;
999
- stream.resume();
1000
- }
1001
- };
1002
-
1003
- return this;
1004
- };
1005
-
1006
- if (typeof Symbol === 'function') {
1007
- Readable.prototype[Symbol.asyncIterator] = function () {
1008
- if (createReadableStreamAsyncIterator === undefined) {
1009
- createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');
1010
- }
1011
-
1012
- return createReadableStreamAsyncIterator(this);
1013
- };
1014
- }
1015
-
1016
- Object.defineProperty(Readable.prototype, 'readableHighWaterMark', {
1017
- // making it explicit this property is not enumerable
1018
- // because otherwise some prototype manipulation in
1019
- // userland will fail
1020
- enumerable: false,
1021
- get: function get() {
1022
- return this._readableState.highWaterMark;
1023
- }
1024
- });
1025
- Object.defineProperty(Readable.prototype, 'readableBuffer', {
1026
- // making it explicit this property is not enumerable
1027
- // because otherwise some prototype manipulation in
1028
- // userland will fail
1029
- enumerable: false,
1030
- get: function get() {
1031
- return this._readableState && this._readableState.buffer;
1032
- }
1033
- });
1034
- Object.defineProperty(Readable.prototype, 'readableFlowing', {
1035
- // making it explicit this property is not enumerable
1036
- // because otherwise some prototype manipulation in
1037
- // userland will fail
1038
- enumerable: false,
1039
- get: function get() {
1040
- return this._readableState.flowing;
1041
- },
1042
- set: function set(state) {
1043
- if (this._readableState) {
1044
- this._readableState.flowing = state;
1045
- }
1046
- }
1047
- }); // exposed for testing purposes only.
1048
-
1049
- Readable._fromList = fromList;
1050
- Object.defineProperty(Readable.prototype, 'readableLength', {
1051
- // making it explicit this property is not enumerable
1052
- // because otherwise some prototype manipulation in
1053
- // userland will fail
1054
- enumerable: false,
1055
- get: function get() {
1056
- return this._readableState.length;
1057
- }
1058
- }); // Pluck off n bytes from an array of buffers.
1059
- // Length is the combined lengths of all the buffers in the list.
1060
- // This function is designed to be inlinable, so please take care when making
1061
- // changes to the function body.
1062
-
1063
- function fromList(n, state) {
1064
- // nothing buffered
1065
- if (state.length === 0) return null;
1066
- var ret;
1067
- if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
1068
- // read it all, truncate the list
1069
- if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);
1070
- state.buffer.clear();
1071
- } else {
1072
- // read part of list
1073
- ret = state.buffer.consume(n, state.decoder);
1074
- }
1075
- return ret;
1076
- }
1077
-
1078
- function endReadable(stream) {
1079
- var state = stream._readableState;
1080
- debug('endReadable', state.endEmitted);
1081
-
1082
- if (!state.endEmitted) {
1083
- state.ended = true;
1084
- process.nextTick(endReadableNT, state, stream);
1085
- }
1086
- }
1087
-
1088
- function endReadableNT(state, stream) {
1089
- debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.
1090
-
1091
- if (!state.endEmitted && state.length === 0) {
1092
- state.endEmitted = true;
1093
- stream.readable = false;
1094
- stream.emit('end');
1095
-
1096
- if (state.autoDestroy) {
1097
- // In case of duplex streams we need a way to detect
1098
- // if the writable side is ready for autoDestroy as well
1099
- var wState = stream._writableState;
1100
-
1101
- if (!wState || wState.autoDestroy && wState.finished) {
1102
- stream.destroy();
1103
- }
1104
- }
1105
- }
1106
- }
1107
-
1108
- if (typeof Symbol === 'function') {
1109
- Readable.from = function (iterable, opts) {
1110
- if (from === undefined) {
1111
- from = require('./internal/streams/from');
1112
- }
1113
-
1114
- return from(Readable, iterable, opts);
1115
- };
1116
- }
1117
-
1118
- function indexOf(xs, x) {
1119
- for (var i = 0, l = xs.length; i < l; i++) {
1120
- if (xs[i] === x) return i;
1121
- }
1122
-
1123
- return -1;
1
+ // Copyright Joyent, Inc. and other Node contributors.
2
+ //
3
+ // Permission is hereby granted, free of charge, to any person obtaining a
4
+ // copy of this software and associated documentation files (the
5
+ // "Software"), to deal in the Software without restriction, including
6
+ // without limitation the rights to use, copy, modify, merge, publish,
7
+ // distribute, sublicense, and/or sell copies of the Software, and to permit
8
+ // persons to whom the Software is furnished to do so, subject to the
9
+ // following conditions:
10
+ //
11
+ // The above copyright notice and this permission notice shall be included
12
+ // in all copies or substantial portions of the Software.
13
+ //
14
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15
+ // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
17
+ // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18
+ // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
19
+ // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20
+ // USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+ 'use strict';
22
+
23
+ module.exports = Readable;
24
+ /*<replacement>*/
25
+
26
+ var Duplex;
27
+ /*</replacement>*/
28
+
29
+ Readable.ReadableState = ReadableState;
30
+ /*<replacement>*/
31
+
32
+ var EE = require('events').EventEmitter;
33
+
34
+ var EElistenerCount = function EElistenerCount(emitter, type) {
35
+ return emitter.listeners(type).length;
36
+ };
37
+ /*</replacement>*/
38
+
39
+ /*<replacement>*/
40
+
41
+
42
+ var Stream = require('./internal/streams/stream');
43
+ /*</replacement>*/
44
+
45
+
46
+ var Buffer = require('buffer').Buffer;
47
+
48
+ var OurUint8Array = global.Uint8Array || function () {};
49
+
50
+ function _uint8ArrayToBuffer(chunk) {
51
+ return Buffer.from(chunk);
52
+ }
53
+
54
+ function _isUint8Array(obj) {
55
+ return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
56
+ }
57
+ /*<replacement>*/
58
+
59
+
60
+ var debugUtil = require('util');
61
+
62
+ var debug;
63
+
64
+ if (debugUtil && debugUtil.debuglog) {
65
+ debug = debugUtil.debuglog('stream');
66
+ } else {
67
+ debug = function debug() {};
68
+ }
69
+ /*</replacement>*/
70
+
71
+
72
+ var BufferList = require('./internal/streams/buffer_list');
73
+
74
+ var destroyImpl = require('./internal/streams/destroy');
75
+
76
+ var _require = require('./internal/streams/state'),
77
+ getHighWaterMark = _require.getHighWaterMark;
78
+
79
+ var _require$codes = require('../errors').codes,
80
+ ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,
81
+ ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,
82
+ ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,
83
+ ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.
84
+
85
+
86
+ var StringDecoder;
87
+ var createReadableStreamAsyncIterator;
88
+ var from;
89
+
90
+ require('inherits')(Readable, Stream);
91
+
92
+ var errorOrDestroy = destroyImpl.errorOrDestroy;
93
+ var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];
94
+
95
+ function prependListener(emitter, event, fn) {
96
+ // Sadly this is not cacheable as some libraries bundle their own
97
+ // event emitter implementation with them.
98
+ if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any
99
+ // userland ones. NEVER DO THIS. This is here only because this code needs
100
+ // to continue to work with older versions of Node.js that do not include
101
+ // the prependListener() method. The goal is to eventually remove this hack.
102
+
103
+ if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];
104
+ }
105
+
106
+ function ReadableState(options, stream, isDuplex) {
107
+ Duplex = Duplex || require('./_stream_duplex');
108
+ options = options || {}; // Duplex streams are both readable and writable, but share
109
+ // the same options object.
110
+ // However, some cases require setting options to different
111
+ // values for the readable and the writable sides of the duplex stream.
112
+ // These options can be provided separately as readableXXX and writableXXX.
113
+
114
+ if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to
115
+ // make all the buffer merging and length checks go away
116
+
117
+ this.objectMode = !!options.objectMode;
118
+ if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer
119
+ // Note: 0 is a valid value, means "don't call _read preemptively ever"
120
+
121
+ this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the
122
+ // linked list can remove elements from the beginning faster than
123
+ // array.shift()
124
+
125
+ this.buffer = new BufferList();
126
+ this.length = 0;
127
+ this.pipes = null;
128
+ this.pipesCount = 0;
129
+ this.flowing = null;
130
+ this.ended = false;
131
+ this.endEmitted = false;
132
+ this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted
133
+ // immediately, or on a later tick. We set this to true at first, because
134
+ // any actions that shouldn't happen until "later" should generally also
135
+ // not happen before the first read call.
136
+
137
+ this.sync = true; // whenever we return null, then we set a flag to say
138
+ // that we're awaiting a 'readable' event emission.
139
+
140
+ this.needReadable = false;
141
+ this.emittedReadable = false;
142
+ this.readableListening = false;
143
+ this.resumeScheduled = false;
144
+ this.paused = true; // Should close be emitted on destroy. Defaults to true.
145
+
146
+ this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')
147
+
148
+ this.autoDestroy = !!options.autoDestroy; // has it been destroyed
149
+
150
+ this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string
151
+ // encoding is 'binary' so we have to make this configurable.
152
+ // Everything else in the universe uses 'utf8', though.
153
+
154
+ this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s
155
+
156
+ this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled
157
+
158
+ this.readingMore = false;
159
+ this.decoder = null;
160
+ this.encoding = null;
161
+
162
+ if (options.encoding) {
163
+ if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
164
+ this.decoder = new StringDecoder(options.encoding);
165
+ this.encoding = options.encoding;
166
+ }
167
+ }
168
+
169
+ function Readable(options) {
170
+ Duplex = Duplex || require('./_stream_duplex');
171
+ if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside
172
+ // the ReadableState constructor, at least with V8 6.5
173
+
174
+ var isDuplex = this instanceof Duplex;
175
+ this._readableState = new ReadableState(options, this, isDuplex); // legacy
176
+
177
+ this.readable = true;
178
+
179
+ if (options) {
180
+ if (typeof options.read === 'function') this._read = options.read;
181
+ if (typeof options.destroy === 'function') this._destroy = options.destroy;
182
+ }
183
+
184
+ Stream.call(this);
185
+ }
186
+
187
+ Object.defineProperty(Readable.prototype, 'destroyed', {
188
+ // making it explicit this property is not enumerable
189
+ // because otherwise some prototype manipulation in
190
+ // userland will fail
191
+ enumerable: false,
192
+ get: function get() {
193
+ if (this._readableState === undefined) {
194
+ return false;
195
+ }
196
+
197
+ return this._readableState.destroyed;
198
+ },
199
+ set: function set(value) {
200
+ // we ignore the value if the stream
201
+ // has not been initialized yet
202
+ if (!this._readableState) {
203
+ return;
204
+ } // backward compatibility, the user is explicitly
205
+ // managing destroyed
206
+
207
+
208
+ this._readableState.destroyed = value;
209
+ }
210
+ });
211
+ Readable.prototype.destroy = destroyImpl.destroy;
212
+ Readable.prototype._undestroy = destroyImpl.undestroy;
213
+
214
+ Readable.prototype._destroy = function (err, cb) {
215
+ cb(err);
216
+ }; // Manually shove something into the read() buffer.
217
+ // This returns true if the highWaterMark has not been hit yet,
218
+ // similar to how Writable.write() returns true if you should
219
+ // write() some more.
220
+
221
+
222
+ Readable.prototype.push = function (chunk, encoding) {
223
+ var state = this._readableState;
224
+ var skipChunkCheck;
225
+
226
+ if (!state.objectMode) {
227
+ if (typeof chunk === 'string') {
228
+ encoding = encoding || state.defaultEncoding;
229
+
230
+ if (encoding !== state.encoding) {
231
+ chunk = Buffer.from(chunk, encoding);
232
+ encoding = '';
233
+ }
234
+
235
+ skipChunkCheck = true;
236
+ }
237
+ } else {
238
+ skipChunkCheck = true;
239
+ }
240
+
241
+ return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);
242
+ }; // Unshift should *always* be something directly out of read()
243
+
244
+
245
+ Readable.prototype.unshift = function (chunk) {
246
+ return readableAddChunk(this, chunk, null, true, false);
247
+ };
248
+
249
+ function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {
250
+ debug('readableAddChunk', chunk);
251
+ var state = stream._readableState;
252
+
253
+ if (chunk === null) {
254
+ state.reading = false;
255
+ onEofChunk(stream, state);
256
+ } else {
257
+ var er;
258
+ if (!skipChunkCheck) er = chunkInvalid(state, chunk);
259
+
260
+ if (er) {
261
+ errorOrDestroy(stream, er);
262
+ } else if (state.objectMode || chunk && chunk.length > 0) {
263
+ if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {
264
+ chunk = _uint8ArrayToBuffer(chunk);
265
+ }
266
+
267
+ if (addToFront) {
268
+ if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);
269
+ } else if (state.ended) {
270
+ errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());
271
+ } else if (state.destroyed) {
272
+ return false;
273
+ } else {
274
+ state.reading = false;
275
+
276
+ if (state.decoder && !encoding) {
277
+ chunk = state.decoder.write(chunk);
278
+ if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);
279
+ } else {
280
+ addChunk(stream, state, chunk, false);
281
+ }
282
+ }
283
+ } else if (!addToFront) {
284
+ state.reading = false;
285
+ maybeReadMore(stream, state);
286
+ }
287
+ } // We can push more data if we are below the highWaterMark.
288
+ // Also, if we have no data yet, we can stand some more bytes.
289
+ // This is to work around cases where hwm=0, such as the repl.
290
+
291
+
292
+ return !state.ended && (state.length < state.highWaterMark || state.length === 0);
293
+ }
294
+
295
+ function addChunk(stream, state, chunk, addToFront) {
296
+ if (state.flowing && state.length === 0 && !state.sync) {
297
+ state.awaitDrain = 0;
298
+ stream.emit('data', chunk);
299
+ } else {
300
+ // update the buffer info.
301
+ state.length += state.objectMode ? 1 : chunk.length;
302
+ if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
303
+ if (state.needReadable) emitReadable(stream);
304
+ }
305
+
306
+ maybeReadMore(stream, state);
307
+ }
308
+
309
+ function chunkInvalid(state, chunk) {
310
+ var er;
311
+
312
+ if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
313
+ er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);
314
+ }
315
+
316
+ return er;
317
+ }
318
+
319
+ Readable.prototype.isPaused = function () {
320
+ return this._readableState.flowing === false;
321
+ }; // backwards compatibility.
322
+
323
+
324
+ Readable.prototype.setEncoding = function (enc) {
325
+ if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
326
+ var decoder = new StringDecoder(enc);
327
+ this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8
328
+
329
+ this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:
330
+
331
+ var p = this._readableState.buffer.head;
332
+ var content = '';
333
+
334
+ while (p !== null) {
335
+ content += decoder.write(p.data);
336
+ p = p.next;
337
+ }
338
+
339
+ this._readableState.buffer.clear();
340
+
341
+ if (content !== '') this._readableState.buffer.push(content);
342
+ this._readableState.length = content.length;
343
+ return this;
344
+ }; // Don't raise the hwm > 1GB
345
+
346
+
347
+ var MAX_HWM = 0x40000000;
348
+
349
+ function computeNewHighWaterMark(n) {
350
+ if (n >= MAX_HWM) {
351
+ // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.
352
+ n = MAX_HWM;
353
+ } else {
354
+ // Get the next highest power of 2 to prevent increasing hwm excessively in
355
+ // tiny amounts
356
+ n--;
357
+ n |= n >>> 1;
358
+ n |= n >>> 2;
359
+ n |= n >>> 4;
360
+ n |= n >>> 8;
361
+ n |= n >>> 16;
362
+ n++;
363
+ }
364
+
365
+ return n;
366
+ } // This function is designed to be inlinable, so please take care when making
367
+ // changes to the function body.
368
+
369
+
370
+ function howMuchToRead(n, state) {
371
+ if (n <= 0 || state.length === 0 && state.ended) return 0;
372
+ if (state.objectMode) return 1;
373
+
374
+ if (n !== n) {
375
+ // Only flow one buffer at a time
376
+ if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
377
+ } // If we're asking for more than the current hwm, then raise the hwm.
378
+
379
+
380
+ if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
381
+ if (n <= state.length) return n; // Don't have enough
382
+
383
+ if (!state.ended) {
384
+ state.needReadable = true;
385
+ return 0;
386
+ }
387
+
388
+ return state.length;
389
+ } // you can override either this method, or the async _read(n) below.
390
+
391
+
392
+ Readable.prototype.read = function (n) {
393
+ debug('read', n);
394
+ n = parseInt(n, 10);
395
+ var state = this._readableState;
396
+ var nOrig = n;
397
+ if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we
398
+ // already have a bunch of data in the buffer, then just trigger
399
+ // the 'readable' event and move on.
400
+
401
+ if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {
402
+ debug('read: emitReadable', state.length, state.ended);
403
+ if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
404
+ return null;
405
+ }
406
+
407
+ n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.
408
+
409
+ if (n === 0 && state.ended) {
410
+ if (state.length === 0) endReadable(this);
411
+ return null;
412
+ } // All the actual chunk generation logic needs to be
413
+ // *below* the call to _read. The reason is that in certain
414
+ // synthetic stream cases, such as passthrough streams, _read
415
+ // may be a completely synchronous operation which may change
416
+ // the state of the read buffer, providing enough data when
417
+ // before there was *not* enough.
418
+ //
419
+ // So, the steps are:
420
+ // 1. Figure out what the state of things will be after we do
421
+ // a read from the buffer.
422
+ //
423
+ // 2. If that resulting state will trigger a _read, then call _read.
424
+ // Note that this may be asynchronous, or synchronous. Yes, it is
425
+ // deeply ugly to write APIs this way, but that still doesn't mean
426
+ // that the Readable class should behave improperly, as streams are
427
+ // designed to be sync/async agnostic.
428
+ // Take note if the _read call is sync or async (ie, if the read call
429
+ // has returned yet), so that we know whether or not it's safe to emit
430
+ // 'readable' etc.
431
+ //
432
+ // 3. Actually pull the requested chunks out of the buffer and return.
433
+ // if we need a readable event, then we need to do some reading.
434
+
435
+
436
+ var doRead = state.needReadable;
437
+ debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some
438
+
439
+ if (state.length === 0 || state.length - n < state.highWaterMark) {
440
+ doRead = true;
441
+ debug('length less than watermark', doRead);
442
+ } // however, if we've ended, then there's no point, and if we're already
443
+ // reading, then it's unnecessary.
444
+
445
+
446
+ if (state.ended || state.reading) {
447
+ doRead = false;
448
+ debug('reading or ended', doRead);
449
+ } else if (doRead) {
450
+ debug('do read');
451
+ state.reading = true;
452
+ state.sync = true; // if the length is currently zero, then we *need* a readable event.
453
+
454
+ if (state.length === 0) state.needReadable = true; // call internal read method
455
+
456
+ this._read(state.highWaterMark);
457
+
458
+ state.sync = false; // If _read pushed data synchronously, then `reading` will be false,
459
+ // and we need to re-evaluate how much data we can return to the user.
460
+
461
+ if (!state.reading) n = howMuchToRead(nOrig, state);
462
+ }
463
+
464
+ var ret;
465
+ if (n > 0) ret = fromList(n, state);else ret = null;
466
+
467
+ if (ret === null) {
468
+ state.needReadable = state.length <= state.highWaterMark;
469
+ n = 0;
470
+ } else {
471
+ state.length -= n;
472
+ state.awaitDrain = 0;
473
+ }
474
+
475
+ if (state.length === 0) {
476
+ // If we have nothing in the buffer, then we want to know
477
+ // as soon as we *do* get something into the buffer.
478
+ if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.
479
+
480
+ if (nOrig !== n && state.ended) endReadable(this);
481
+ }
482
+
483
+ if (ret !== null) this.emit('data', ret);
484
+ return ret;
485
+ };
486
+
487
+ function onEofChunk(stream, state) {
488
+ debug('onEofChunk');
489
+ if (state.ended) return;
490
+
491
+ if (state.decoder) {
492
+ var chunk = state.decoder.end();
493
+
494
+ if (chunk && chunk.length) {
495
+ state.buffer.push(chunk);
496
+ state.length += state.objectMode ? 1 : chunk.length;
497
+ }
498
+ }
499
+
500
+ state.ended = true;
501
+
502
+ if (state.sync) {
503
+ // if we are sync, wait until next tick to emit the data.
504
+ // Otherwise we risk emitting data in the flow()
505
+ // the readable code triggers during a read() call
506
+ emitReadable(stream);
507
+ } else {
508
+ // emit 'readable' now to make sure it gets picked up.
509
+ state.needReadable = false;
510
+
511
+ if (!state.emittedReadable) {
512
+ state.emittedReadable = true;
513
+ emitReadable_(stream);
514
+ }
515
+ }
516
+ } // Don't emit readable right away in sync mode, because this can trigger
517
+ // another read() call => stack overflow. This way, it might trigger
518
+ // a nextTick recursion warning, but that's not so bad.
519
+
520
+
521
+ function emitReadable(stream) {
522
+ var state = stream._readableState;
523
+ debug('emitReadable', state.needReadable, state.emittedReadable);
524
+ state.needReadable = false;
525
+
526
+ if (!state.emittedReadable) {
527
+ debug('emitReadable', state.flowing);
528
+ state.emittedReadable = true;
529
+ process.nextTick(emitReadable_, stream);
530
+ }
531
+ }
532
+
533
+ function emitReadable_(stream) {
534
+ var state = stream._readableState;
535
+ debug('emitReadable_', state.destroyed, state.length, state.ended);
536
+
537
+ if (!state.destroyed && (state.length || state.ended)) {
538
+ stream.emit('readable');
539
+ state.emittedReadable = false;
540
+ } // The stream needs another readable event if
541
+ // 1. It is not flowing, as the flow mechanism will take
542
+ // care of it.
543
+ // 2. It is not ended.
544
+ // 3. It is below the highWaterMark, so we can schedule
545
+ // another readable later.
546
+
547
+
548
+ state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;
549
+ flow(stream);
550
+ } // at this point, the user has presumably seen the 'readable' event,
551
+ // and called read() to consume some data. that may have triggered
552
+ // in turn another _read(n) call, in which case reading = true if
553
+ // it's in progress.
554
+ // However, if we're not ended, or reading, and the length < hwm,
555
+ // then go ahead and try to read some more preemptively.
556
+
557
+
558
+ function maybeReadMore(stream, state) {
559
+ if (!state.readingMore) {
560
+ state.readingMore = true;
561
+ process.nextTick(maybeReadMore_, stream, state);
562
+ }
563
+ }
564
+
565
+ function maybeReadMore_(stream, state) {
566
+ // Attempt to read more data if we should.
567
+ //
568
+ // The conditions for reading more data are (one of):
569
+ // - Not enough data buffered (state.length < state.highWaterMark). The loop
570
+ // is responsible for filling the buffer with enough data if such data
571
+ // is available. If highWaterMark is 0 and we are not in the flowing mode
572
+ // we should _not_ attempt to buffer any extra data. We'll get more data
573
+ // when the stream consumer calls read() instead.
574
+ // - No data in the buffer, and the stream is in flowing mode. In this mode
575
+ // the loop below is responsible for ensuring read() is called. Failing to
576
+ // call read here would abort the flow and there's no other mechanism for
577
+ // continuing the flow if the stream consumer has just subscribed to the
578
+ // 'data' event.
579
+ //
580
+ // In addition to the above conditions to keep reading data, the following
581
+ // conditions prevent the data from being read:
582
+ // - The stream has ended (state.ended).
583
+ // - There is already a pending 'read' operation (state.reading). This is a
584
+ // case where the the stream has called the implementation defined _read()
585
+ // method, but they are processing the call asynchronously and have _not_
586
+ // called push() with new data. In this case we skip performing more
587
+ // read()s. The execution ends in this method again after the _read() ends
588
+ // up calling push() with more data.
589
+ while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {
590
+ var len = state.length;
591
+ debug('maybeReadMore read 0');
592
+ stream.read(0);
593
+ if (len === state.length) // didn't get any data, stop spinning.
594
+ break;
595
+ }
596
+
597
+ state.readingMore = false;
598
+ } // abstract method. to be overridden in specific implementation classes.
599
+ // call cb(er, data) where data is <= n in length.
600
+ // for virtual (non-string, non-buffer) streams, "length" is somewhat
601
+ // arbitrary, and perhaps not very meaningful.
602
+
603
+
604
+ Readable.prototype._read = function (n) {
605
+ errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));
606
+ };
607
+
608
+ Readable.prototype.pipe = function (dest, pipeOpts) {
609
+ var src = this;
610
+ var state = this._readableState;
611
+
612
+ switch (state.pipesCount) {
613
+ case 0:
614
+ state.pipes = dest;
615
+ break;
616
+
617
+ case 1:
618
+ state.pipes = [state.pipes, dest];
619
+ break;
620
+
621
+ default:
622
+ state.pipes.push(dest);
623
+ break;
624
+ }
625
+
626
+ state.pipesCount += 1;
627
+ debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
628
+ var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
629
+ var endFn = doEnd ? onend : unpipe;
630
+ if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);
631
+ dest.on('unpipe', onunpipe);
632
+
633
+ function onunpipe(readable, unpipeInfo) {
634
+ debug('onunpipe');
635
+
636
+ if (readable === src) {
637
+ if (unpipeInfo && unpipeInfo.hasUnpiped === false) {
638
+ unpipeInfo.hasUnpiped = true;
639
+ cleanup();
640
+ }
641
+ }
642
+ }
643
+
644
+ function onend() {
645
+ debug('onend');
646
+ dest.end();
647
+ } // when the dest drains, it reduces the awaitDrain counter
648
+ // on the source. This would be more elegant with a .once()
649
+ // handler in flow(), but adding and removing repeatedly is
650
+ // too slow.
651
+
652
+
653
+ var ondrain = pipeOnDrain(src);
654
+ dest.on('drain', ondrain);
655
+ var cleanedUp = false;
656
+
657
+ function cleanup() {
658
+ debug('cleanup'); // cleanup event handlers once the pipe is broken
659
+
660
+ dest.removeListener('close', onclose);
661
+ dest.removeListener('finish', onfinish);
662
+ dest.removeListener('drain', ondrain);
663
+ dest.removeListener('error', onerror);
664
+ dest.removeListener('unpipe', onunpipe);
665
+ src.removeListener('end', onend);
666
+ src.removeListener('end', unpipe);
667
+ src.removeListener('data', ondata);
668
+ cleanedUp = true; // if the reader is waiting for a drain event from this
669
+ // specific writer, then it would cause it to never start
670
+ // flowing again.
671
+ // So, if this is awaiting a drain, then we just call it now.
672
+ // If we don't know, then assume that we are waiting for one.
673
+
674
+ if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
675
+ }
676
+
677
+ src.on('data', ondata);
678
+
679
+ function ondata(chunk) {
680
+ debug('ondata');
681
+ var ret = dest.write(chunk);
682
+ debug('dest.write', ret);
683
+
684
+ if (ret === false) {
685
+ // If the user unpiped during `dest.write()`, it is possible
686
+ // to get stuck in a permanently paused state if that write
687
+ // also returned false.
688
+ // => Check whether `dest` is still a piping destination.
689
+ if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
690
+ debug('false write response, pause', state.awaitDrain);
691
+ state.awaitDrain++;
692
+ }
693
+
694
+ src.pause();
695
+ }
696
+ } // if the dest has an error, then stop piping into it.
697
+ // however, don't suppress the throwing behavior for this.
698
+
699
+
700
+ function onerror(er) {
701
+ debug('onerror', er);
702
+ unpipe();
703
+ dest.removeListener('error', onerror);
704
+ if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);
705
+ } // Make sure our error handler is attached before userland ones.
706
+
707
+
708
+ prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.
709
+
710
+ function onclose() {
711
+ dest.removeListener('finish', onfinish);
712
+ unpipe();
713
+ }
714
+
715
+ dest.once('close', onclose);
716
+
717
+ function onfinish() {
718
+ debug('onfinish');
719
+ dest.removeListener('close', onclose);
720
+ unpipe();
721
+ }
722
+
723
+ dest.once('finish', onfinish);
724
+
725
+ function unpipe() {
726
+ debug('unpipe');
727
+ src.unpipe(dest);
728
+ } // tell the dest that it's being piped to
729
+
730
+
731
+ dest.emit('pipe', src); // start the flow if it hasn't been started already.
732
+
733
+ if (!state.flowing) {
734
+ debug('pipe resume');
735
+ src.resume();
736
+ }
737
+
738
+ return dest;
739
+ };
740
+
741
+ function pipeOnDrain(src) {
742
+ return function pipeOnDrainFunctionResult() {
743
+ var state = src._readableState;
744
+ debug('pipeOnDrain', state.awaitDrain);
745
+ if (state.awaitDrain) state.awaitDrain--;
746
+
747
+ if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
748
+ state.flowing = true;
749
+ flow(src);
750
+ }
751
+ };
752
+ }
753
+
754
+ Readable.prototype.unpipe = function (dest) {
755
+ var state = this._readableState;
756
+ var unpipeInfo = {
757
+ hasUnpiped: false
758
+ }; // if we're not piping anywhere, then do nothing.
759
+
760
+ if (state.pipesCount === 0) return this; // just one destination. most common case.
761
+
762
+ if (state.pipesCount === 1) {
763
+ // passed in one, but it's not the right one.
764
+ if (dest && dest !== state.pipes) return this;
765
+ if (!dest) dest = state.pipes; // got a match.
766
+
767
+ state.pipes = null;
768
+ state.pipesCount = 0;
769
+ state.flowing = false;
770
+ if (dest) dest.emit('unpipe', this, unpipeInfo);
771
+ return this;
772
+ } // slow case. multiple pipe destinations.
773
+
774
+
775
+ if (!dest) {
776
+ // remove all.
777
+ var dests = state.pipes;
778
+ var len = state.pipesCount;
779
+ state.pipes = null;
780
+ state.pipesCount = 0;
781
+ state.flowing = false;
782
+
783
+ for (var i = 0; i < len; i++) {
784
+ dests[i].emit('unpipe', this, {
785
+ hasUnpiped: false
786
+ });
787
+ }
788
+
789
+ return this;
790
+ } // try to find the right one.
791
+
792
+
793
+ var index = indexOf(state.pipes, dest);
794
+ if (index === -1) return this;
795
+ state.pipes.splice(index, 1);
796
+ state.pipesCount -= 1;
797
+ if (state.pipesCount === 1) state.pipes = state.pipes[0];
798
+ dest.emit('unpipe', this, unpipeInfo);
799
+ return this;
800
+ }; // set up data events if they are asked for
801
+ // Ensure readable listeners eventually get something
802
+
803
+
804
+ Readable.prototype.on = function (ev, fn) {
805
+ var res = Stream.prototype.on.call(this, ev, fn);
806
+ var state = this._readableState;
807
+
808
+ if (ev === 'data') {
809
+ // update readableListening so that resume() may be a no-op
810
+ // a few lines down. This is needed to support once('readable').
811
+ state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused
812
+
813
+ if (state.flowing !== false) this.resume();
814
+ } else if (ev === 'readable') {
815
+ if (!state.endEmitted && !state.readableListening) {
816
+ state.readableListening = state.needReadable = true;
817
+ state.flowing = false;
818
+ state.emittedReadable = false;
819
+ debug('on readable', state.length, state.reading);
820
+
821
+ if (state.length) {
822
+ emitReadable(this);
823
+ } else if (!state.reading) {
824
+ process.nextTick(nReadingNextTick, this);
825
+ }
826
+ }
827
+ }
828
+
829
+ return res;
830
+ };
831
+
832
+ Readable.prototype.addListener = Readable.prototype.on;
833
+
834
+ Readable.prototype.removeListener = function (ev, fn) {
835
+ var res = Stream.prototype.removeListener.call(this, ev, fn);
836
+
837
+ if (ev === 'readable') {
838
+ // We need to check if there is someone still listening to
839
+ // readable and reset the state. However this needs to happen
840
+ // after readable has been emitted but before I/O (nextTick) to
841
+ // support once('readable', fn) cycles. This means that calling
842
+ // resume within the same tick will have no
843
+ // effect.
844
+ process.nextTick(updateReadableListening, this);
845
+ }
846
+
847
+ return res;
848
+ };
849
+
850
+ Readable.prototype.removeAllListeners = function (ev) {
851
+ var res = Stream.prototype.removeAllListeners.apply(this, arguments);
852
+
853
+ if (ev === 'readable' || ev === undefined) {
854
+ // We need to check if there is someone still listening to
855
+ // readable and reset the state. However this needs to happen
856
+ // after readable has been emitted but before I/O (nextTick) to
857
+ // support once('readable', fn) cycles. This means that calling
858
+ // resume within the same tick will have no
859
+ // effect.
860
+ process.nextTick(updateReadableListening, this);
861
+ }
862
+
863
+ return res;
864
+ };
865
+
866
+ function updateReadableListening(self) {
867
+ var state = self._readableState;
868
+ state.readableListening = self.listenerCount('readable') > 0;
869
+
870
+ if (state.resumeScheduled && !state.paused) {
871
+ // flowing needs to be set to true now, otherwise
872
+ // the upcoming resume will not flow.
873
+ state.flowing = true; // crude way to check if we should resume
874
+ } else if (self.listenerCount('data') > 0) {
875
+ self.resume();
876
+ }
877
+ }
878
+
879
+ function nReadingNextTick(self) {
880
+ debug('readable nexttick read 0');
881
+ self.read(0);
882
+ } // pause() and resume() are remnants of the legacy readable stream API
883
+ // If the user uses them, then switch into old mode.
884
+
885
+
886
+ Readable.prototype.resume = function () {
887
+ var state = this._readableState;
888
+
889
+ if (!state.flowing) {
890
+ debug('resume'); // we flow only if there is no one listening
891
+ // for readable, but we still have to call
892
+ // resume()
893
+
894
+ state.flowing = !state.readableListening;
895
+ resume(this, state);
896
+ }
897
+
898
+ state.paused = false;
899
+ return this;
900
+ };
901
+
902
+ function resume(stream, state) {
903
+ if (!state.resumeScheduled) {
904
+ state.resumeScheduled = true;
905
+ process.nextTick(resume_, stream, state);
906
+ }
907
+ }
908
+
909
+ function resume_(stream, state) {
910
+ debug('resume', state.reading);
911
+
912
+ if (!state.reading) {
913
+ stream.read(0);
914
+ }
915
+
916
+ state.resumeScheduled = false;
917
+ stream.emit('resume');
918
+ flow(stream);
919
+ if (state.flowing && !state.reading) stream.read(0);
920
+ }
921
+
922
+ Readable.prototype.pause = function () {
923
+ debug('call pause flowing=%j', this._readableState.flowing);
924
+
925
+ if (this._readableState.flowing !== false) {
926
+ debug('pause');
927
+ this._readableState.flowing = false;
928
+ this.emit('pause');
929
+ }
930
+
931
+ this._readableState.paused = true;
932
+ return this;
933
+ };
934
+
935
+ function flow(stream) {
936
+ var state = stream._readableState;
937
+ debug('flow', state.flowing);
938
+
939
+ while (state.flowing && stream.read() !== null) {
940
+ ;
941
+ }
942
+ } // wrap an old-style stream as the async data source.
943
+ // This is *not* part of the readable stream interface.
944
+ // It is an ugly unfortunate mess of history.
945
+
946
+
947
+ Readable.prototype.wrap = function (stream) {
948
+ var _this = this;
949
+
950
+ var state = this._readableState;
951
+ var paused = false;
952
+ stream.on('end', function () {
953
+ debug('wrapped end');
954
+
955
+ if (state.decoder && !state.ended) {
956
+ var chunk = state.decoder.end();
957
+ if (chunk && chunk.length) _this.push(chunk);
958
+ }
959
+
960
+ _this.push(null);
961
+ });
962
+ stream.on('data', function (chunk) {
963
+ debug('wrapped data');
964
+ if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode
965
+
966
+ if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
967
+
968
+ var ret = _this.push(chunk);
969
+
970
+ if (!ret) {
971
+ paused = true;
972
+ stream.pause();
973
+ }
974
+ }); // proxy all the other methods.
975
+ // important when wrapping filters and duplexes.
976
+
977
+ for (var i in stream) {
978
+ if (this[i] === undefined && typeof stream[i] === 'function') {
979
+ this[i] = function methodWrap(method) {
980
+ return function methodWrapReturnFunction() {
981
+ return stream[method].apply(stream, arguments);
982
+ };
983
+ }(i);
984
+ }
985
+ } // proxy certain important events.
986
+
987
+
988
+ for (var n = 0; n < kProxyEvents.length; n++) {
989
+ stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));
990
+ } // when we try to consume some more bytes, simply unpause the
991
+ // underlying stream.
992
+
993
+
994
+ this._read = function (n) {
995
+ debug('wrapped _read', n);
996
+
997
+ if (paused) {
998
+ paused = false;
999
+ stream.resume();
1000
+ }
1001
+ };
1002
+
1003
+ return this;
1004
+ };
1005
+
1006
+ if (typeof Symbol === 'function') {
1007
+ Readable.prototype[Symbol.asyncIterator] = function () {
1008
+ if (createReadableStreamAsyncIterator === undefined) {
1009
+ createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');
1010
+ }
1011
+
1012
+ return createReadableStreamAsyncIterator(this);
1013
+ };
1014
+ }
1015
+
1016
+ Object.defineProperty(Readable.prototype, 'readableHighWaterMark', {
1017
+ // making it explicit this property is not enumerable
1018
+ // because otherwise some prototype manipulation in
1019
+ // userland will fail
1020
+ enumerable: false,
1021
+ get: function get() {
1022
+ return this._readableState.highWaterMark;
1023
+ }
1024
+ });
1025
+ Object.defineProperty(Readable.prototype, 'readableBuffer', {
1026
+ // making it explicit this property is not enumerable
1027
+ // because otherwise some prototype manipulation in
1028
+ // userland will fail
1029
+ enumerable: false,
1030
+ get: function get() {
1031
+ return this._readableState && this._readableState.buffer;
1032
+ }
1033
+ });
1034
+ Object.defineProperty(Readable.prototype, 'readableFlowing', {
1035
+ // making it explicit this property is not enumerable
1036
+ // because otherwise some prototype manipulation in
1037
+ // userland will fail
1038
+ enumerable: false,
1039
+ get: function get() {
1040
+ return this._readableState.flowing;
1041
+ },
1042
+ set: function set(state) {
1043
+ if (this._readableState) {
1044
+ this._readableState.flowing = state;
1045
+ }
1046
+ }
1047
+ }); // exposed for testing purposes only.
1048
+
1049
+ Readable._fromList = fromList;
1050
+ Object.defineProperty(Readable.prototype, 'readableLength', {
1051
+ // making it explicit this property is not enumerable
1052
+ // because otherwise some prototype manipulation in
1053
+ // userland will fail
1054
+ enumerable: false,
1055
+ get: function get() {
1056
+ return this._readableState.length;
1057
+ }
1058
+ }); // Pluck off n bytes from an array of buffers.
1059
+ // Length is the combined lengths of all the buffers in the list.
1060
+ // This function is designed to be inlinable, so please take care when making
1061
+ // changes to the function body.
1062
+
1063
+ function fromList(n, state) {
1064
+ // nothing buffered
1065
+ if (state.length === 0) return null;
1066
+ var ret;
1067
+ if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
1068
+ // read it all, truncate the list
1069
+ if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);
1070
+ state.buffer.clear();
1071
+ } else {
1072
+ // read part of list
1073
+ ret = state.buffer.consume(n, state.decoder);
1074
+ }
1075
+ return ret;
1076
+ }
1077
+
1078
+ function endReadable(stream) {
1079
+ var state = stream._readableState;
1080
+ debug('endReadable', state.endEmitted);
1081
+
1082
+ if (!state.endEmitted) {
1083
+ state.ended = true;
1084
+ process.nextTick(endReadableNT, state, stream);
1085
+ }
1086
+ }
1087
+
1088
+ function endReadableNT(state, stream) {
1089
+ debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.
1090
+
1091
+ if (!state.endEmitted && state.length === 0) {
1092
+ state.endEmitted = true;
1093
+ stream.readable = false;
1094
+ stream.emit('end');
1095
+
1096
+ if (state.autoDestroy) {
1097
+ // In case of duplex streams we need a way to detect
1098
+ // if the writable side is ready for autoDestroy as well
1099
+ var wState = stream._writableState;
1100
+
1101
+ if (!wState || wState.autoDestroy && wState.finished) {
1102
+ stream.destroy();
1103
+ }
1104
+ }
1105
+ }
1106
+ }
1107
+
1108
+ if (typeof Symbol === 'function') {
1109
+ Readable.from = function (iterable, opts) {
1110
+ if (from === undefined) {
1111
+ from = require('./internal/streams/from');
1112
+ }
1113
+
1114
+ return from(Readable, iterable, opts);
1115
+ };
1116
+ }
1117
+
1118
+ function indexOf(xs, x) {
1119
+ for (var i = 0, l = xs.length; i < l; i++) {
1120
+ if (xs[i] === x) return i;
1121
+ }
1122
+
1123
+ return -1;
1124
1124
  }