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,658 +1,658 @@
1
- # yauzl
2
-
3
- [![Build Status](https://travis-ci.org/thejoshwolfe/yauzl.svg?branch=master)](https://travis-ci.org/thejoshwolfe/yauzl)
4
- [![Coverage Status](https://img.shields.io/coveralls/thejoshwolfe/yauzl.svg)](https://coveralls.io/r/thejoshwolfe/yauzl)
5
-
6
- yet another unzip library for node. For zipping, see
7
- [yazl](https://github.com/thejoshwolfe/yazl).
8
-
9
- Design principles:
10
-
11
- * Follow the spec.
12
- Don't scan for local file headers.
13
- Read the central directory for file metadata.
14
- (see [No Streaming Unzip API](#no-streaming-unzip-api)).
15
- * Don't block the JavaScript thread.
16
- Use and provide async APIs.
17
- * Keep memory usage under control.
18
- Don't attempt to buffer entire files in RAM at once.
19
- * Never crash (if used properly).
20
- Don't let malformed zip files bring down client applications who are trying to catch errors.
21
- * Catch unsafe file names.
22
- See `validateFileName()`.
23
-
24
- ## Usage
25
-
26
- ```js
27
- var yauzl = require("yauzl");
28
-
29
- yauzl.open("path/to/file.zip", {lazyEntries: true}, function(err, zipfile) {
30
- if (err) throw err;
31
- zipfile.readEntry();
32
- zipfile.on("entry", function(entry) {
33
- if (/\/$/.test(entry.fileName)) {
34
- // Directory file names end with '/'.
35
- // Note that entires for directories themselves are optional.
36
- // An entry's fileName implicitly requires its parent directories to exist.
37
- zipfile.readEntry();
38
- } else {
39
- // file entry
40
- zipfile.openReadStream(entry, function(err, readStream) {
41
- if (err) throw err;
42
- readStream.on("end", function() {
43
- zipfile.readEntry();
44
- });
45
- readStream.pipe(somewhere);
46
- });
47
- }
48
- });
49
- });
50
- ```
51
-
52
- See also `examples/` for more usage examples.
53
-
54
- ## API
55
-
56
- The default for every optional `callback` parameter is:
57
-
58
- ```js
59
- function defaultCallback(err) {
60
- if (err) throw err;
61
- }
62
- ```
63
-
64
- ### open(path, [options], [callback])
65
-
66
- Calls `fs.open(path, "r")` and reads the `fd` effectively the same as `fromFd()` would.
67
-
68
- `options` may be omitted or `null`. The defaults are `{autoClose: true, lazyEntries: false, decodeStrings: true, validateEntrySizes: true, strictFileNames: false}`.
69
-
70
- `autoClose` is effectively equivalent to:
71
-
72
- ```js
73
- zipfile.once("end", function() {
74
- zipfile.close();
75
- });
76
- ```
77
-
78
- `lazyEntries` indicates that entries should be read only when `readEntry()` is called.
79
- If `lazyEntries` is `false`, `entry` events will be emitted as fast as possible to allow `pipe()`ing
80
- file data from all entries in parallel.
81
- This is not recommended, as it can lead to out of control memory usage for zip files with many entries.
82
- See [issue #22](https://github.com/thejoshwolfe/yauzl/issues/22).
83
- If `lazyEntries` is `true`, an `entry` or `end` event will be emitted in response to each call to `readEntry()`.
84
- This allows processing of one entry at a time, and will keep memory usage under control for zip files with many entries.
85
-
86
- `decodeStrings` is the default and causes yauzl to decode strings with `CP437` or `UTF-8` as required by the spec.
87
- The exact effects of turning this option off are:
88
-
89
- * `zipfile.comment`, `entry.fileName`, and `entry.fileComment` will be `Buffer` objects instead of `String`s.
90
- * Any Info-ZIP Unicode Path Extra Field will be ignored. See `extraFields`.
91
- * Automatic file name validation will not be performed. See `validateFileName()`.
92
-
93
- `validateEntrySizes` is the default and ensures that an entry's reported uncompressed size matches its actual uncompressed size.
94
- This check happens as early as possible, which is either before emitting each `"entry"` event (for entries with no compression),
95
- or during the `readStream` piping after calling `openReadStream()`.
96
- See `openReadStream()` for more information on defending against zip bomb attacks.
97
-
98
- When `strictFileNames` is `false` (the default) and `decodeStrings` is `true`,
99
- all backslash (`\`) characters in each `entry.fileName` are replaced with forward slashes (`/`).
100
- The spec forbids file names with backslashes,
101
- but Microsoft's `System.IO.Compression.ZipFile` class in .NET versions 4.5.0 until 4.6.1
102
- creates non-conformant zipfiles with backslashes in file names.
103
- `strictFileNames` is `false` by default so that clients can read these
104
- non-conformant zipfiles without knowing about this Microsoft-specific bug.
105
- When `strictFileNames` is `true` and `decodeStrings` is `true`,
106
- entries with backslashes in their file names will result in an error. See `validateFileName()`.
107
- When `decodeStrings` is `false`, `strictFileNames` has no effect.
108
-
109
- The `callback` is given the arguments `(err, zipfile)`.
110
- An `err` is provided if the End of Central Directory Record cannot be found, or if its metadata appears malformed.
111
- This kind of error usually indicates that this is not a zip file.
112
- Otherwise, `zipfile` is an instance of `ZipFile`.
113
-
114
- ### fromFd(fd, [options], [callback])
115
-
116
- Reads from the fd, which is presumed to be an open .zip file.
117
- Note that random access is required by the zip file specification,
118
- so the fd cannot be an open socket or any other fd that does not support random access.
119
-
120
- `options` may be omitted or `null`. The defaults are `{autoClose: false, lazyEntries: false, decodeStrings: true, validateEntrySizes: true, strictFileNames: false}`.
121
-
122
- See `open()` for the meaning of the options and callback.
123
-
124
- ### fromBuffer(buffer, [options], [callback])
125
-
126
- Like `fromFd()`, but reads from a RAM buffer instead of an open file.
127
- `buffer` is a `Buffer`.
128
-
129
- If a `ZipFile` is acquired from this method,
130
- it will never emit the `close` event,
131
- and calling `close()` is not necessary.
132
-
133
- `options` may be omitted or `null`. The defaults are `{lazyEntries: false, decodeStrings: true, validateEntrySizes: true, strictFileNames: false}`.
134
-
135
- See `open()` for the meaning of the options and callback.
136
- The `autoClose` option is ignored for this method.
137
-
138
- ### fromRandomAccessReader(reader, totalSize, [options], [callback])
139
-
140
- This method of reading a zip file allows clients to implement their own back-end file system.
141
- For example, a client might translate read calls into network requests.
142
-
143
- The `reader` parameter must be of a type that is a subclass of
144
- [RandomAccessReader](#class-randomaccessreader) that implements the required methods.
145
- The `totalSize` is a Number and indicates the total file size of the zip file.
146
-
147
- `options` may be omitted or `null`. The defaults are `{autoClose: true, lazyEntries: false, decodeStrings: true, validateEntrySizes: true, strictFileNames: false}`.
148
-
149
- See `open()` for the meaning of the options and callback.
150
-
151
- ### dosDateTimeToDate(date, time)
152
-
153
- Converts MS-DOS `date` and `time` data into a JavaScript `Date` object.
154
- Each parameter is a `Number` treated as an unsigned 16-bit integer.
155
- Note that this format does not support timezones,
156
- so the returned object will use the local timezone.
157
-
158
- ### validateFileName(fileName)
159
-
160
- Returns `null` or a `String` error message depending on the validity of `fileName`.
161
- If `fileName` starts with `"/"` or `/[A-Za-z]:\//` or if it contains `".."` path segments or `"\\"`,
162
- this function returns an error message appropriate for use like this:
163
-
164
- ```js
165
- var errorMessage = yauzl.validateFileName(fileName);
166
- if (errorMessage != null) throw new Error(errorMessage);
167
- ```
168
-
169
- This function is automatically run for each entry, as long as `decodeStrings` is `true`.
170
- See `open()`, `strictFileNames`, and `Event: "entry"` for more information.
171
-
172
- ### Class: ZipFile
173
-
174
- The constructor for the class is not part of the public API.
175
- Use `open()`, `fromFd()`, `fromBuffer()`, or `fromRandomAccessReader()` instead.
176
-
177
- #### Event: "entry"
178
-
179
- Callback gets `(entry)`, which is an `Entry`.
180
- See `open()` and `readEntry()` for when this event is emitted.
181
-
182
- If `decodeStrings` is `true`, entries emitted via this event have already passed file name validation.
183
- See `validateFileName()` and `open()` for more information.
184
-
185
- If `validateEntrySizes` is `true` and this entry's `compressionMethod` is `0` (stored without compression),
186
- this entry has already passed entry size validation.
187
- See `open()` for more information.
188
-
189
- #### Event: "end"
190
-
191
- Emitted after the last `entry` event has been emitted.
192
- See `open()` and `readEntry()` for more info on when this event is emitted.
193
-
194
- #### Event: "close"
195
-
196
- Emitted after the fd is actually closed.
197
- This is after calling `close()` (or after the `end` event when `autoClose` is `true`),
198
- and after all stream pipelines created from `openReadStream()` have finished reading data from the fd.
199
-
200
- If this `ZipFile` was acquired from `fromRandomAccessReader()`,
201
- the "fd" in the previous paragraph refers to the `RandomAccessReader` implemented by the client.
202
-
203
- If this `ZipFile` was acquired from `fromBuffer()`, this event is never emitted.
204
-
205
- #### Event: "error"
206
-
207
- Emitted in the case of errors with reading the zip file.
208
- (Note that other errors can be emitted from the streams created from `openReadStream()` as well.)
209
- After this event has been emitted, no further `entry`, `end`, or `error` events will be emitted,
210
- but the `close` event may still be emitted.
211
-
212
- #### readEntry()
213
-
214
- Causes this `ZipFile` to emit an `entry` or `end` event (or an `error` event).
215
- This method must only be called when this `ZipFile` was created with the `lazyEntries` option set to `true` (see `open()`).
216
- When this `ZipFile` was created with the `lazyEntries` option set to `true`,
217
- `entry` and `end` events are only ever emitted in response to this method call.
218
-
219
- The event that is emitted in response to this method will not be emitted until after this method has returned,
220
- so it is safe to call this method before attaching event listeners.
221
-
222
- After calling this method, calling this method again before the response event has been emitted will cause undefined behavior.
223
- Calling this method after the `end` event has been emitted will cause undefined behavior.
224
- Calling this method after calling `close()` will cause undefined behavior.
225
-
226
- #### openReadStream(entry, [options], callback)
227
-
228
- `entry` must be an `Entry` object from this `ZipFile`.
229
- `callback` gets `(err, readStream)`, where `readStream` is a `Readable Stream` that provides the file data for this entry.
230
- If this zipfile is already closed (see `close()`), the `callback` will receive an `err`.
231
-
232
- `options` may be omitted or `null`, and has the following defaults:
233
-
234
- ```js
235
- {
236
- decompress: entry.isCompressed() ? true : null,
237
- decrypt: null,
238
- start: 0, // actually the default is null, see below
239
- end: entry.compressedSize, // actually the default is null, see below
240
- }
241
- ```
242
-
243
- If the entry is compressed (with a supported compression method),
244
- and the `decompress` option is `true` (or omitted),
245
- the read stream provides the decompressed data.
246
- Omitting the `decompress` option is what most clients should do.
247
-
248
- The `decompress` option must be `null` (or omitted) when the entry is not compressed (see `isCompressed()`),
249
- and either `true` (or omitted) or `false` when the entry is compressed.
250
- Specifying `decompress: false` for a compressed entry causes the read stream
251
- to provide the raw compressed file data without going through a zlib inflate transform.
252
-
253
- If the entry is encrypted (see `isEncrypted()`), clients may want to avoid calling `openReadStream()` on the entry entirely.
254
- Alternatively, clients may call `openReadStream()` for encrypted entries and specify `decrypt: false`.
255
- If the entry is also compressed, clients must *also* specify `decompress: false`.
256
- Specifying `decrypt: false` for an encrypted entry causes the read stream to provide the raw, still-encrypted file data.
257
- (This data includes the 12-byte header described in the spec.)
258
-
259
- The `decrypt` option must be `null` (or omitted) for non-encrypted entries, and `false` for encrypted entries.
260
- Omitting the `decrypt` option (or specifying it as `null`) for an encrypted entry
261
- will result in the `callback` receiving an `err`.
262
- This default behavior is so that clients not accounting for encrypted files aren't surprised by bogus file data.
263
-
264
- The `start` (inclusive) and `end` (exclusive) options are byte offsets into this entry's file data,
265
- and can be used to obtain part of an entry's file data rather than the whole thing.
266
- If either of these options are specified and non-`null`,
267
- then the above options must be used to obain the file's raw data.
268
- Speficying `{start: 0, end: entry.compressedSize}` will result in the complete file,
269
- which is effectively the default values for these options,
270
- but note that unlike omitting the options, when you specify `start` or `end` as any non-`null` value,
271
- the above requirement is still enforced that you must also pass the appropriate options to get the file's raw data.
272
-
273
- It's possible for the `readStream` provided to the `callback` to emit errors for several reasons.
274
- For example, if zlib cannot decompress the data, the zlib error will be emitted from the `readStream`.
275
- Two more error cases (when `validateEntrySizes` is `true`) are if the decompressed data has too many
276
- or too few actual bytes compared to the reported byte count from the entry's `uncompressedSize` field.
277
- yauzl notices this false information and emits an error from the `readStream`
278
- after some number of bytes have already been piped through the stream.
279
-
280
- This check allows clients to trust the `uncompressedSize` field in `Entry` objects.
281
- Guarding against [zip bomb](http://en.wikipedia.org/wiki/Zip_bomb) attacks can be accomplished by
282
- doing some heuristic checks on the size metadata and then watching out for the above errors.
283
- Such heuristics are outside the scope of this library,
284
- but enforcing the `uncompressedSize` is implemented here as a security feature.
285
-
286
- It is possible to destroy the `readStream` before it has piped all of its data.
287
- To do this, call `readStream.destroy()`.
288
- You must `unpipe()` the `readStream` from any destination before calling `readStream.destroy()`.
289
- If this zipfile was created using `fromRandomAccessReader()`, the `RandomAccessReader` implementation
290
- must provide readable streams that implement a `.destroy()` method (see `randomAccessReader._readStreamForRange()`)
291
- in order for calls to `readStream.destroy()` to work in this context.
292
-
293
- #### close()
294
-
295
- Causes all future calls to `openReadStream()` to fail,
296
- and closes the fd, if any, after all streams created by `openReadStream()` have emitted their `end` events.
297
-
298
- If the `autoClose` option is set to `true` (see `open()`),
299
- this function will be called automatically effectively in response to this object's `end` event.
300
-
301
- If the `lazyEntries` option is set to `false` (see `open()`) and this object's `end` event has not been emitted yet,
302
- this function causes undefined behavior.
303
- If the `lazyEntries` option is set to `true`,
304
- you can call this function instead of calling `readEntry()` to abort reading the entries of a zipfile.
305
-
306
- It is safe to call this function multiple times; after the first call, successive calls have no effect.
307
- This includes situations where the `autoClose` option effectively calls this function for you.
308
-
309
- If `close()` is never called, then the zipfile is "kept open".
310
- For zipfiles created with `fromFd()`, this will leave the `fd` open, which may be desirable.
311
- For zipfiles created with `open()`, this will leave the underlying `fd` open, thereby "leaking" it, which is probably undesirable.
312
- For zipfiles created with `fromRandomAccessReader()`, the reader's `close()` method will never be called.
313
- For zipfiles created with `fromBuffer()`, the `close()` function has no effect whether called or not.
314
-
315
- Regardless of how this `ZipFile` was created, there are no resources other than those listed above that require cleanup from this function.
316
- This means it may be desirable to never call `close()` in some usecases.
317
-
318
- #### isOpen
319
-
320
- `Boolean`. `true` until `close()` is called; then it's `false`.
321
-
322
- #### entryCount
323
-
324
- `Number`. Total number of central directory records.
325
-
326
- #### comment
327
-
328
- `String`. Always decoded with `CP437` per the spec.
329
-
330
- If `decodeStrings` is `false` (see `open()`), this field is the undecoded `Buffer` instead of a decoded `String`.
331
-
332
- ### Class: Entry
333
-
334
- Objects of this class represent Central Directory Records.
335
- Refer to the zipfile specification for more details about these fields.
336
-
337
- These fields are of type `Number`:
338
-
339
- * `versionMadeBy`
340
- * `versionNeededToExtract`
341
- * `generalPurposeBitFlag`
342
- * `compressionMethod`
343
- * `lastModFileTime` (MS-DOS format, see `getLastModDateTime`)
344
- * `lastModFileDate` (MS-DOS format, see `getLastModDateTime`)
345
- * `crc32`
346
- * `compressedSize`
347
- * `uncompressedSize`
348
- * `fileNameLength` (bytes)
349
- * `extraFieldLength` (bytes)
350
- * `fileCommentLength` (bytes)
351
- * `internalFileAttributes`
352
- * `externalFileAttributes`
353
- * `relativeOffsetOfLocalHeader`
354
-
355
- #### fileName
356
-
357
- `String`.
358
- Following the spec, the bytes for the file name are decoded with
359
- `UTF-8` if `generalPurposeBitFlag & 0x800`, otherwise with `CP437`.
360
- Alternatively, this field may be populated from the Info-ZIP Unicode Path Extra Field
361
- (see `extraFields`).
362
-
363
- This field is automatically validated by `validateFileName()` before yauzl emits an "entry" event.
364
- If this field would contain unsafe characters, yauzl emits an error instead of an entry.
365
-
366
- If `decodeStrings` is `false` (see `open()`), this field is the undecoded `Buffer` instead of a decoded `String`.
367
- Therefore, `generalPurposeBitFlag` and any Info-ZIP Unicode Path Extra Field are ignored.
368
- Furthermore, no automatic file name validation is performed for this file name.
369
-
370
- #### extraFields
371
-
372
- `Array` with each entry in the form `{id: id, data: data}`,
373
- where `id` is a `Number` and `data` is a `Buffer`.
374
-
375
- This library looks for and reads the ZIP64 Extended Information Extra Field (0x0001)
376
- in order to support ZIP64 format zip files.
377
-
378
- This library also looks for and reads the Info-ZIP Unicode Path Extra Field (0x7075)
379
- in order to support some zipfiles that use it instead of General Purpose Bit 11
380
- to convey `UTF-8` file names.
381
- When the field is identified and verified to be reliable (see the zipfile spec),
382
- the the file name in this field is stored in the `fileName` property,
383
- and the file name in the central directory record for this entry is ignored.
384
- Note that when `decodeStrings` is false, all Info-ZIP Unicode Path Extra Fields are ignored.
385
-
386
- None of the other fields are considered significant by this library.
387
- Fields that this library reads are left unalterned in the `extraFields` array.
388
-
389
- #### fileComment
390
-
391
- `String` decoded with the charset indicated by `generalPurposeBitFlag & 0x800` as with the `fileName`.
392
- (The Info-ZIP Unicode Path Extra Field has no effect on the charset used for this field.)
393
-
394
- If `decodeStrings` is `false` (see `open()`), this field is the undecoded `Buffer` instead of a decoded `String`.
395
-
396
- Prior to yauzl version 2.7.0, this field was erroneously documented as `comment` instead of `fileComment`.
397
- For compatibility with any code that uses the field name `comment`,
398
- yauzl creates an alias field named `comment` which is identical to `fileComment`.
399
-
400
- #### getLastModDate()
401
-
402
- Effectively implemented as:
403
-
404
- ```js
405
- return dosDateTimeToDate(this.lastModFileDate, this.lastModFileTime);
406
- ```
407
-
408
- #### isEncrypted()
409
-
410
- Returns is this entry encrypted with "Traditional Encryption".
411
- Effectively implemented as:
412
-
413
- ```js
414
- return (this.generalPurposeBitFlag & 0x1) !== 0;
415
- ```
416
-
417
- See `openReadStream()` for the implications of this value.
418
-
419
- Note that "Strong Encryption" is not supported, and will result in an `"error"` event emitted from the `ZipFile`.
420
-
421
- #### isCompressed()
422
-
423
- Effectively implemented as:
424
-
425
- ```js
426
- return this.compressionMethod === 8;
427
- ```
428
-
429
- See `openReadStream()` for the implications of this value.
430
-
431
- ### Class: RandomAccessReader
432
-
433
- This class is meant to be subclassed by clients and instantiated for the `fromRandomAccessReader()` function.
434
-
435
- An example implementation can be found in `test/test.js`.
436
-
437
- #### randomAccessReader._readStreamForRange(start, end)
438
-
439
- Subclasses *must* implement this method.
440
-
441
- `start` and `end` are Numbers and indicate byte offsets from the start of the file.
442
- `end` is exclusive, so `_readStreamForRange(0x1000, 0x2000)` would indicate to read `0x1000` bytes.
443
- `end - start` will always be at least `1`.
444
-
445
- This method should return a readable stream which will be `pipe()`ed into another stream.
446
- It is expected that the readable stream will provide data in several chunks if necessary.
447
- If the readable stream provides too many or too few bytes, an error will be emitted.
448
- (Note that `validateEntrySizes` has no effect on this check,
449
- because this is a low-level API that should behave correctly regardless of the contents of the file.)
450
- Any errors emitted on the readable stream will be handled and re-emitted on the client-visible stream
451
- (returned from `zipfile.openReadStream()`) or provided as the `err` argument to the appropriate callback
452
- (for example, for `fromRandomAccessReader()`).
453
-
454
- The returned stream *must* implement a method `.destroy()`
455
- if you call `readStream.destroy()` on streams you get from `openReadStream()`.
456
- If you never call `readStream.destroy()`, then streams returned from this method do not need to implement a method `.destroy()`.
457
- `.destroy()` should abort any streaming that is in progress and clean up any associated resources.
458
- `.destroy()` will only be called after the stream has been `unpipe()`d from its destination.
459
-
460
- Note that the stream returned from this method might not be the same object that is provided by `openReadStream()`.
461
- The stream returned from this method might be `pipe()`d through one or more filter streams (for example, a zlib inflate stream).
462
-
463
- #### randomAccessReader.read(buffer, offset, length, position, callback)
464
-
465
- Subclasses may implement this method.
466
- The default implementation uses `createReadStream()` to fill the `buffer`.
467
-
468
- This method should behave like `fs.read()`.
469
-
470
- #### randomAccessReader.close(callback)
471
-
472
- Subclasses may implement this method.
473
- The default implementation is effectively `setImmediate(callback);`.
474
-
475
- `callback` takes parameters `(err)`.
476
-
477
- This method is called once the all streams returned from `_readStreamForRange()` have ended,
478
- and no more `_readStreamForRange()` or `read()` requests will be issued to this object.
479
-
480
- ## How to Avoid Crashing
481
-
482
- When a malformed zipfile is encountered, the default behavior is to crash (throw an exception).
483
- If you want to handle errors more gracefully than this,
484
- be sure to do the following:
485
-
486
- * Provide `callback` parameters where they are allowed, and check the `err` parameter.
487
- * Attach a listener for the `error` event on any `ZipFile` object you get from `open()`, `fromFd()`, `fromBuffer()`, or `fromRandomAccessReader()`.
488
- * Attach a listener for the `error` event on any stream you get from `openReadStream()`.
489
-
490
- Minor version updates to yauzl will not add any additional requirements to this list.
491
-
492
- ## Limitations
493
-
494
- ### No Streaming Unzip API
495
-
496
- Due to the design of the .zip file format, it's impossible to interpret a .zip file from start to finish
497
- (such as from a readable stream) without sacrificing correctness.
498
- The Central Directory, which is the authority on the contents of the .zip file, is at the end of a .zip file, not the beginning.
499
- A streaming API would need to either buffer the entire .zip file to get to the Central Directory before interpreting anything
500
- (defeating the purpose of a streaming interface), or rely on the Local File Headers which are interspersed through the .zip file.
501
- However, the Local File Headers are explicitly denounced in the spec as being unreliable copies of the Central Directory,
502
- so trusting them would be a violation of the spec.
503
-
504
- Any library that offers a streaming unzip API must make one of the above two compromises,
505
- which makes the library either dishonest or nonconformant (usually the latter).
506
- This library insists on correctness and adherence to the spec, and so does not offer a streaming API.
507
-
508
- Here is a way to create a spec-conformant .zip file using the `zip` command line program (Info-ZIP)
509
- available in most unix-like environments, that is (nearly) impossible to parse correctly with a streaming parser:
510
-
511
- ```
512
- $ echo -ne '\x50\x4b\x07\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' > file.txt
513
- $ zip -q0 - file.txt | cat > out.zip
514
- ```
515
-
516
- This .zip file contains a single file entry that uses General Purpose Bit 3,
517
- which means the Local File Header doesn't know the size of the file.
518
- Any streaming parser that encounters this situation will either immediately fail,
519
- or attempt to search for the Data Descriptor after the file's contents.
520
- The file's contents is a sequence of 16-bytes crafted to exactly mimic a valid Data Descriptor for an empty file,
521
- which will fool any parser that gets this far into thinking that the file is empty rather than containing 16-bytes.
522
- What follows the file's real contents is the file's real Data Descriptor,
523
- which will likely cause some kind of signature mismatch error for a streaming parser (if one hasn't occurred already).
524
-
525
- By using General Purpose Bit 3 (and compression method 0),
526
- it's possible to create arbitrarily ambiguous .zip files that
527
- distract parsers with file contents that contain apparently valid .zip file metadata.
528
-
529
- ### Limitted ZIP64 Support
530
-
531
- For ZIP64, only zip files smaller than `8PiB` are supported,
532
- not the full `16EiB` range that a 64-bit integer should be able to index.
533
- This is due to the JavaScript Number type being an IEEE 754 double precision float.
534
-
535
- The Node.js `fs` module probably has this same limitation.
536
-
537
- ### ZIP64 Extensible Data Sector Is Ignored
538
-
539
- The spec does not allow zip file creators to put arbitrary data here,
540
- but rather reserves its use for PKWARE and mentions something about Z390.
541
- This doesn't seem useful to expose in this library, so it is ignored.
542
-
543
- ### No Multi-Disk Archive Support
544
-
545
- This library does not support multi-disk zip files.
546
- The multi-disk fields in the zipfile spec were intended for a zip file to span multiple floppy disks,
547
- which probably never happens now.
548
- If the "number of this disk" field in the End of Central Directory Record is not `0`,
549
- the `open()`, `fromFd()`, `fromBuffer()`, or `fromRandomAccessReader()` `callback` will receive an `err`.
550
- By extension the following zip file fields are ignored by this library and not provided to clients:
551
-
552
- * Disk where central directory starts
553
- * Number of central directory records on this disk
554
- * Disk number where file starts
555
-
556
- ### Limited Encryption Handling
557
-
558
- You can detect when a file entry is encrypted with "Traditional Encryption" via `isEncrypted()`,
559
- but yauzl will not help you decrypt it.
560
- See `openReadStream()`.
561
-
562
- If a zip file contains file entries encrypted with "Strong Encryption", yauzl emits an error.
563
-
564
- If the central directory is encrypted or compressed, yauzl emits an error.
565
-
566
- ### Local File Headers Are Ignored
567
-
568
- Many unzip libraries mistakenly read the Local File Header data in zip files.
569
- This data is officially defined to be redundant with the Central Directory information,
570
- and is not to be trusted.
571
- Aside from checking the signature, yauzl ignores the content of the Local File Header.
572
-
573
- ### No CRC-32 Checking
574
-
575
- This library provides the `crc32` field of `Entry` objects read from the Central Directory.
576
- However, this field is not used for anything in this library.
577
-
578
- ### versionNeededToExtract Is Ignored
579
-
580
- The field `versionNeededToExtract` is ignored,
581
- because this library doesn't support the complete zip file spec at any version,
582
-
583
- ### No Support For Obscure Compression Methods
584
-
585
- Regarding the `compressionMethod` field of `Entry` objects,
586
- only method `0` (stored with no compression)
587
- and method `8` (deflated) are supported.
588
- Any of the other 15 official methods will cause the `openReadStream()` `callback` to receive an `err`.
589
-
590
- ### Data Descriptors Are Ignored
591
-
592
- There may or may not be Data Descriptor sections in a zip file.
593
- This library provides no support for finding or interpreting them.
594
-
595
- ### Archive Extra Data Record Is Ignored
596
-
597
- There may or may not be an Archive Extra Data Record section in a zip file.
598
- This library provides no support for finding or interpreting it.
599
-
600
- ### No Language Encoding Flag Support
601
-
602
- Zip files officially support charset encodings other than CP437 and UTF-8,
603
- but the zip file spec does not specify how it works.
604
- This library makes no attempt to interpret the Language Encoding Flag.
605
-
606
- ## Change History
607
-
608
- * 2.10.0
609
- * Added support for non-conformant zipfiles created by Microsoft, and added option `strictFileNames` to disable the workaround. [issue #66](https://github.com/thejoshwolfe/yauzl/issues/66), [issue #88](https://github.com/thejoshwolfe/yauzl/issues/88)
610
- * 2.9.2
611
- * Removed `tools/hexdump-zip.js` and `tools/hex2bin.js`. Those tools are now located here: [thejoshwolfe/hexdump-zip](https://github.com/thejoshwolfe/hexdump-zip) and [thejoshwolfe/hex2bin](https://github.com/thejoshwolfe/hex2bin)
612
- * Worked around performance problem with zlib when using `fromBuffer()` and `readStream.destroy()` for large compressed files. [issue #87](https://github.com/thejoshwolfe/yauzl/issues/87)
613
- * 2.9.1
614
- * Removed `console.log()` accidentally introduced in 2.9.0. [issue #64](https://github.com/thejoshwolfe/yauzl/issues/64)
615
- * 2.9.0
616
- * Throw an exception if `readEntry()` is called without `lazyEntries:true`. Previously this caused undefined behavior. [issue #63](https://github.com/thejoshwolfe/yauzl/issues/63)
617
- * 2.8.0
618
- * Added option `validateEntrySizes`. [issue #53](https://github.com/thejoshwolfe/yauzl/issues/53)
619
- * Added `examples/promises.js`
620
- * Added ability to read raw file data via `decompress` and `decrypt` options. [issue #11](https://github.com/thejoshwolfe/yauzl/issues/11), [issue #38](https://github.com/thejoshwolfe/yauzl/issues/38), [pull #39](https://github.com/thejoshwolfe/yauzl/pull/39)
621
- * Added `start` and `end` options to `openReadStream()`. [issue #38](https://github.com/thejoshwolfe/yauzl/issues/38)
622
- * 2.7.0
623
- * Added option `decodeStrings`. [issue #42](https://github.com/thejoshwolfe/yauzl/issues/42)
624
- * Fixed documentation for `entry.fileComment` and added compatibility alias. [issue #47](https://github.com/thejoshwolfe/yauzl/issues/47)
625
- * 2.6.0
626
- * Support Info-ZIP Unicode Path Extra Field, used by WinRAR for Chinese file names. [issue #33](https://github.com/thejoshwolfe/yauzl/issues/33)
627
- * 2.5.0
628
- * Ignore malformed Extra Field that is common in Android .apk files. [issue #31](https://github.com/thejoshwolfe/yauzl/issues/31)
629
- * 2.4.3
630
- * Fix crash when parsing malformed Extra Field buffers. [issue #31](https://github.com/thejoshwolfe/yauzl/issues/31)
631
- * 2.4.2
632
- * Remove .npmignore and .travis.yml from npm package.
633
- * 2.4.1
634
- * Fix error handling.
635
- * 2.4.0
636
- * Add ZIP64 support. [issue #6](https://github.com/thejoshwolfe/yauzl/issues/6)
637
- * Add `lazyEntries` option. [issue #22](https://github.com/thejoshwolfe/yauzl/issues/22)
638
- * Add `readStream.destroy()` method. [issue #26](https://github.com/thejoshwolfe/yauzl/issues/26)
639
- * Add `fromRandomAccessReader()`. [issue #14](https://github.com/thejoshwolfe/yauzl/issues/14)
640
- * Add `examples/unzip.js`.
641
- * 2.3.1
642
- * Documentation updates.
643
- * 2.3.0
644
- * Check that `uncompressedSize` is correct, or else emit an error. [issue #13](https://github.com/thejoshwolfe/yauzl/issues/13)
645
- * 2.2.1
646
- * Update dependencies.
647
- * 2.2.0
648
- * Update dependencies.
649
- * 2.1.0
650
- * Remove dependency on `iconv`.
651
- * 2.0.3
652
- * Fix crash when trying to read a 0-byte file.
653
- * 2.0.2
654
- * Fix event behavior after errors.
655
- * 2.0.1
656
- * Fix bug with using `iconv`.
657
- * 2.0.0
658
- * Initial release.
1
+ # yauzl
2
+
3
+ [![Build Status](https://travis-ci.org/thejoshwolfe/yauzl.svg?branch=master)](https://travis-ci.org/thejoshwolfe/yauzl)
4
+ [![Coverage Status](https://img.shields.io/coveralls/thejoshwolfe/yauzl.svg)](https://coveralls.io/r/thejoshwolfe/yauzl)
5
+
6
+ yet another unzip library for node. For zipping, see
7
+ [yazl](https://github.com/thejoshwolfe/yazl).
8
+
9
+ Design principles:
10
+
11
+ * Follow the spec.
12
+ Don't scan for local file headers.
13
+ Read the central directory for file metadata.
14
+ (see [No Streaming Unzip API](#no-streaming-unzip-api)).
15
+ * Don't block the JavaScript thread.
16
+ Use and provide async APIs.
17
+ * Keep memory usage under control.
18
+ Don't attempt to buffer entire files in RAM at once.
19
+ * Never crash (if used properly).
20
+ Don't let malformed zip files bring down client applications who are trying to catch errors.
21
+ * Catch unsafe file names.
22
+ See `validateFileName()`.
23
+
24
+ ## Usage
25
+
26
+ ```js
27
+ var yauzl = require("yauzl");
28
+
29
+ yauzl.open("path/to/file.zip", {lazyEntries: true}, function(err, zipfile) {
30
+ if (err) throw err;
31
+ zipfile.readEntry();
32
+ zipfile.on("entry", function(entry) {
33
+ if (/\/$/.test(entry.fileName)) {
34
+ // Directory file names end with '/'.
35
+ // Note that entires for directories themselves are optional.
36
+ // An entry's fileName implicitly requires its parent directories to exist.
37
+ zipfile.readEntry();
38
+ } else {
39
+ // file entry
40
+ zipfile.openReadStream(entry, function(err, readStream) {
41
+ if (err) throw err;
42
+ readStream.on("end", function() {
43
+ zipfile.readEntry();
44
+ });
45
+ readStream.pipe(somewhere);
46
+ });
47
+ }
48
+ });
49
+ });
50
+ ```
51
+
52
+ See also `examples/` for more usage examples.
53
+
54
+ ## API
55
+
56
+ The default for every optional `callback` parameter is:
57
+
58
+ ```js
59
+ function defaultCallback(err) {
60
+ if (err) throw err;
61
+ }
62
+ ```
63
+
64
+ ### open(path, [options], [callback])
65
+
66
+ Calls `fs.open(path, "r")` and reads the `fd` effectively the same as `fromFd()` would.
67
+
68
+ `options` may be omitted or `null`. The defaults are `{autoClose: true, lazyEntries: false, decodeStrings: true, validateEntrySizes: true, strictFileNames: false}`.
69
+
70
+ `autoClose` is effectively equivalent to:
71
+
72
+ ```js
73
+ zipfile.once("end", function() {
74
+ zipfile.close();
75
+ });
76
+ ```
77
+
78
+ `lazyEntries` indicates that entries should be read only when `readEntry()` is called.
79
+ If `lazyEntries` is `false`, `entry` events will be emitted as fast as possible to allow `pipe()`ing
80
+ file data from all entries in parallel.
81
+ This is not recommended, as it can lead to out of control memory usage for zip files with many entries.
82
+ See [issue #22](https://github.com/thejoshwolfe/yauzl/issues/22).
83
+ If `lazyEntries` is `true`, an `entry` or `end` event will be emitted in response to each call to `readEntry()`.
84
+ This allows processing of one entry at a time, and will keep memory usage under control for zip files with many entries.
85
+
86
+ `decodeStrings` is the default and causes yauzl to decode strings with `CP437` or `UTF-8` as required by the spec.
87
+ The exact effects of turning this option off are:
88
+
89
+ * `zipfile.comment`, `entry.fileName`, and `entry.fileComment` will be `Buffer` objects instead of `String`s.
90
+ * Any Info-ZIP Unicode Path Extra Field will be ignored. See `extraFields`.
91
+ * Automatic file name validation will not be performed. See `validateFileName()`.
92
+
93
+ `validateEntrySizes` is the default and ensures that an entry's reported uncompressed size matches its actual uncompressed size.
94
+ This check happens as early as possible, which is either before emitting each `"entry"` event (for entries with no compression),
95
+ or during the `readStream` piping after calling `openReadStream()`.
96
+ See `openReadStream()` for more information on defending against zip bomb attacks.
97
+
98
+ When `strictFileNames` is `false` (the default) and `decodeStrings` is `true`,
99
+ all backslash (`\`) characters in each `entry.fileName` are replaced with forward slashes (`/`).
100
+ The spec forbids file names with backslashes,
101
+ but Microsoft's `System.IO.Compression.ZipFile` class in .NET versions 4.5.0 until 4.6.1
102
+ creates non-conformant zipfiles with backslashes in file names.
103
+ `strictFileNames` is `false` by default so that clients can read these
104
+ non-conformant zipfiles without knowing about this Microsoft-specific bug.
105
+ When `strictFileNames` is `true` and `decodeStrings` is `true`,
106
+ entries with backslashes in their file names will result in an error. See `validateFileName()`.
107
+ When `decodeStrings` is `false`, `strictFileNames` has no effect.
108
+
109
+ The `callback` is given the arguments `(err, zipfile)`.
110
+ An `err` is provided if the End of Central Directory Record cannot be found, or if its metadata appears malformed.
111
+ This kind of error usually indicates that this is not a zip file.
112
+ Otherwise, `zipfile` is an instance of `ZipFile`.
113
+
114
+ ### fromFd(fd, [options], [callback])
115
+
116
+ Reads from the fd, which is presumed to be an open .zip file.
117
+ Note that random access is required by the zip file specification,
118
+ so the fd cannot be an open socket or any other fd that does not support random access.
119
+
120
+ `options` may be omitted or `null`. The defaults are `{autoClose: false, lazyEntries: false, decodeStrings: true, validateEntrySizes: true, strictFileNames: false}`.
121
+
122
+ See `open()` for the meaning of the options and callback.
123
+
124
+ ### fromBuffer(buffer, [options], [callback])
125
+
126
+ Like `fromFd()`, but reads from a RAM buffer instead of an open file.
127
+ `buffer` is a `Buffer`.
128
+
129
+ If a `ZipFile` is acquired from this method,
130
+ it will never emit the `close` event,
131
+ and calling `close()` is not necessary.
132
+
133
+ `options` may be omitted or `null`. The defaults are `{lazyEntries: false, decodeStrings: true, validateEntrySizes: true, strictFileNames: false}`.
134
+
135
+ See `open()` for the meaning of the options and callback.
136
+ The `autoClose` option is ignored for this method.
137
+
138
+ ### fromRandomAccessReader(reader, totalSize, [options], [callback])
139
+
140
+ This method of reading a zip file allows clients to implement their own back-end file system.
141
+ For example, a client might translate read calls into network requests.
142
+
143
+ The `reader` parameter must be of a type that is a subclass of
144
+ [RandomAccessReader](#class-randomaccessreader) that implements the required methods.
145
+ The `totalSize` is a Number and indicates the total file size of the zip file.
146
+
147
+ `options` may be omitted or `null`. The defaults are `{autoClose: true, lazyEntries: false, decodeStrings: true, validateEntrySizes: true, strictFileNames: false}`.
148
+
149
+ See `open()` for the meaning of the options and callback.
150
+
151
+ ### dosDateTimeToDate(date, time)
152
+
153
+ Converts MS-DOS `date` and `time` data into a JavaScript `Date` object.
154
+ Each parameter is a `Number` treated as an unsigned 16-bit integer.
155
+ Note that this format does not support timezones,
156
+ so the returned object will use the local timezone.
157
+
158
+ ### validateFileName(fileName)
159
+
160
+ Returns `null` or a `String` error message depending on the validity of `fileName`.
161
+ If `fileName` starts with `"/"` or `/[A-Za-z]:\//` or if it contains `".."` path segments or `"\\"`,
162
+ this function returns an error message appropriate for use like this:
163
+
164
+ ```js
165
+ var errorMessage = yauzl.validateFileName(fileName);
166
+ if (errorMessage != null) throw new Error(errorMessage);
167
+ ```
168
+
169
+ This function is automatically run for each entry, as long as `decodeStrings` is `true`.
170
+ See `open()`, `strictFileNames`, and `Event: "entry"` for more information.
171
+
172
+ ### Class: ZipFile
173
+
174
+ The constructor for the class is not part of the public API.
175
+ Use `open()`, `fromFd()`, `fromBuffer()`, or `fromRandomAccessReader()` instead.
176
+
177
+ #### Event: "entry"
178
+
179
+ Callback gets `(entry)`, which is an `Entry`.
180
+ See `open()` and `readEntry()` for when this event is emitted.
181
+
182
+ If `decodeStrings` is `true`, entries emitted via this event have already passed file name validation.
183
+ See `validateFileName()` and `open()` for more information.
184
+
185
+ If `validateEntrySizes` is `true` and this entry's `compressionMethod` is `0` (stored without compression),
186
+ this entry has already passed entry size validation.
187
+ See `open()` for more information.
188
+
189
+ #### Event: "end"
190
+
191
+ Emitted after the last `entry` event has been emitted.
192
+ See `open()` and `readEntry()` for more info on when this event is emitted.
193
+
194
+ #### Event: "close"
195
+
196
+ Emitted after the fd is actually closed.
197
+ This is after calling `close()` (or after the `end` event when `autoClose` is `true`),
198
+ and after all stream pipelines created from `openReadStream()` have finished reading data from the fd.
199
+
200
+ If this `ZipFile` was acquired from `fromRandomAccessReader()`,
201
+ the "fd" in the previous paragraph refers to the `RandomAccessReader` implemented by the client.
202
+
203
+ If this `ZipFile` was acquired from `fromBuffer()`, this event is never emitted.
204
+
205
+ #### Event: "error"
206
+
207
+ Emitted in the case of errors with reading the zip file.
208
+ (Note that other errors can be emitted from the streams created from `openReadStream()` as well.)
209
+ After this event has been emitted, no further `entry`, `end`, or `error` events will be emitted,
210
+ but the `close` event may still be emitted.
211
+
212
+ #### readEntry()
213
+
214
+ Causes this `ZipFile` to emit an `entry` or `end` event (or an `error` event).
215
+ This method must only be called when this `ZipFile` was created with the `lazyEntries` option set to `true` (see `open()`).
216
+ When this `ZipFile` was created with the `lazyEntries` option set to `true`,
217
+ `entry` and `end` events are only ever emitted in response to this method call.
218
+
219
+ The event that is emitted in response to this method will not be emitted until after this method has returned,
220
+ so it is safe to call this method before attaching event listeners.
221
+
222
+ After calling this method, calling this method again before the response event has been emitted will cause undefined behavior.
223
+ Calling this method after the `end` event has been emitted will cause undefined behavior.
224
+ Calling this method after calling `close()` will cause undefined behavior.
225
+
226
+ #### openReadStream(entry, [options], callback)
227
+
228
+ `entry` must be an `Entry` object from this `ZipFile`.
229
+ `callback` gets `(err, readStream)`, where `readStream` is a `Readable Stream` that provides the file data for this entry.
230
+ If this zipfile is already closed (see `close()`), the `callback` will receive an `err`.
231
+
232
+ `options` may be omitted or `null`, and has the following defaults:
233
+
234
+ ```js
235
+ {
236
+ decompress: entry.isCompressed() ? true : null,
237
+ decrypt: null,
238
+ start: 0, // actually the default is null, see below
239
+ end: entry.compressedSize, // actually the default is null, see below
240
+ }
241
+ ```
242
+
243
+ If the entry is compressed (with a supported compression method),
244
+ and the `decompress` option is `true` (or omitted),
245
+ the read stream provides the decompressed data.
246
+ Omitting the `decompress` option is what most clients should do.
247
+
248
+ The `decompress` option must be `null` (or omitted) when the entry is not compressed (see `isCompressed()`),
249
+ and either `true` (or omitted) or `false` when the entry is compressed.
250
+ Specifying `decompress: false` for a compressed entry causes the read stream
251
+ to provide the raw compressed file data without going through a zlib inflate transform.
252
+
253
+ If the entry is encrypted (see `isEncrypted()`), clients may want to avoid calling `openReadStream()` on the entry entirely.
254
+ Alternatively, clients may call `openReadStream()` for encrypted entries and specify `decrypt: false`.
255
+ If the entry is also compressed, clients must *also* specify `decompress: false`.
256
+ Specifying `decrypt: false` for an encrypted entry causes the read stream to provide the raw, still-encrypted file data.
257
+ (This data includes the 12-byte header described in the spec.)
258
+
259
+ The `decrypt` option must be `null` (or omitted) for non-encrypted entries, and `false` for encrypted entries.
260
+ Omitting the `decrypt` option (or specifying it as `null`) for an encrypted entry
261
+ will result in the `callback` receiving an `err`.
262
+ This default behavior is so that clients not accounting for encrypted files aren't surprised by bogus file data.
263
+
264
+ The `start` (inclusive) and `end` (exclusive) options are byte offsets into this entry's file data,
265
+ and can be used to obtain part of an entry's file data rather than the whole thing.
266
+ If either of these options are specified and non-`null`,
267
+ then the above options must be used to obain the file's raw data.
268
+ Speficying `{start: 0, end: entry.compressedSize}` will result in the complete file,
269
+ which is effectively the default values for these options,
270
+ but note that unlike omitting the options, when you specify `start` or `end` as any non-`null` value,
271
+ the above requirement is still enforced that you must also pass the appropriate options to get the file's raw data.
272
+
273
+ It's possible for the `readStream` provided to the `callback` to emit errors for several reasons.
274
+ For example, if zlib cannot decompress the data, the zlib error will be emitted from the `readStream`.
275
+ Two more error cases (when `validateEntrySizes` is `true`) are if the decompressed data has too many
276
+ or too few actual bytes compared to the reported byte count from the entry's `uncompressedSize` field.
277
+ yauzl notices this false information and emits an error from the `readStream`
278
+ after some number of bytes have already been piped through the stream.
279
+
280
+ This check allows clients to trust the `uncompressedSize` field in `Entry` objects.
281
+ Guarding against [zip bomb](http://en.wikipedia.org/wiki/Zip_bomb) attacks can be accomplished by
282
+ doing some heuristic checks on the size metadata and then watching out for the above errors.
283
+ Such heuristics are outside the scope of this library,
284
+ but enforcing the `uncompressedSize` is implemented here as a security feature.
285
+
286
+ It is possible to destroy the `readStream` before it has piped all of its data.
287
+ To do this, call `readStream.destroy()`.
288
+ You must `unpipe()` the `readStream` from any destination before calling `readStream.destroy()`.
289
+ If this zipfile was created using `fromRandomAccessReader()`, the `RandomAccessReader` implementation
290
+ must provide readable streams that implement a `.destroy()` method (see `randomAccessReader._readStreamForRange()`)
291
+ in order for calls to `readStream.destroy()` to work in this context.
292
+
293
+ #### close()
294
+
295
+ Causes all future calls to `openReadStream()` to fail,
296
+ and closes the fd, if any, after all streams created by `openReadStream()` have emitted their `end` events.
297
+
298
+ If the `autoClose` option is set to `true` (see `open()`),
299
+ this function will be called automatically effectively in response to this object's `end` event.
300
+
301
+ If the `lazyEntries` option is set to `false` (see `open()`) and this object's `end` event has not been emitted yet,
302
+ this function causes undefined behavior.
303
+ If the `lazyEntries` option is set to `true`,
304
+ you can call this function instead of calling `readEntry()` to abort reading the entries of a zipfile.
305
+
306
+ It is safe to call this function multiple times; after the first call, successive calls have no effect.
307
+ This includes situations where the `autoClose` option effectively calls this function for you.
308
+
309
+ If `close()` is never called, then the zipfile is "kept open".
310
+ For zipfiles created with `fromFd()`, this will leave the `fd` open, which may be desirable.
311
+ For zipfiles created with `open()`, this will leave the underlying `fd` open, thereby "leaking" it, which is probably undesirable.
312
+ For zipfiles created with `fromRandomAccessReader()`, the reader's `close()` method will never be called.
313
+ For zipfiles created with `fromBuffer()`, the `close()` function has no effect whether called or not.
314
+
315
+ Regardless of how this `ZipFile` was created, there are no resources other than those listed above that require cleanup from this function.
316
+ This means it may be desirable to never call `close()` in some usecases.
317
+
318
+ #### isOpen
319
+
320
+ `Boolean`. `true` until `close()` is called; then it's `false`.
321
+
322
+ #### entryCount
323
+
324
+ `Number`. Total number of central directory records.
325
+
326
+ #### comment
327
+
328
+ `String`. Always decoded with `CP437` per the spec.
329
+
330
+ If `decodeStrings` is `false` (see `open()`), this field is the undecoded `Buffer` instead of a decoded `String`.
331
+
332
+ ### Class: Entry
333
+
334
+ Objects of this class represent Central Directory Records.
335
+ Refer to the zipfile specification for more details about these fields.
336
+
337
+ These fields are of type `Number`:
338
+
339
+ * `versionMadeBy`
340
+ * `versionNeededToExtract`
341
+ * `generalPurposeBitFlag`
342
+ * `compressionMethod`
343
+ * `lastModFileTime` (MS-DOS format, see `getLastModDateTime`)
344
+ * `lastModFileDate` (MS-DOS format, see `getLastModDateTime`)
345
+ * `crc32`
346
+ * `compressedSize`
347
+ * `uncompressedSize`
348
+ * `fileNameLength` (bytes)
349
+ * `extraFieldLength` (bytes)
350
+ * `fileCommentLength` (bytes)
351
+ * `internalFileAttributes`
352
+ * `externalFileAttributes`
353
+ * `relativeOffsetOfLocalHeader`
354
+
355
+ #### fileName
356
+
357
+ `String`.
358
+ Following the spec, the bytes for the file name are decoded with
359
+ `UTF-8` if `generalPurposeBitFlag & 0x800`, otherwise with `CP437`.
360
+ Alternatively, this field may be populated from the Info-ZIP Unicode Path Extra Field
361
+ (see `extraFields`).
362
+
363
+ This field is automatically validated by `validateFileName()` before yauzl emits an "entry" event.
364
+ If this field would contain unsafe characters, yauzl emits an error instead of an entry.
365
+
366
+ If `decodeStrings` is `false` (see `open()`), this field is the undecoded `Buffer` instead of a decoded `String`.
367
+ Therefore, `generalPurposeBitFlag` and any Info-ZIP Unicode Path Extra Field are ignored.
368
+ Furthermore, no automatic file name validation is performed for this file name.
369
+
370
+ #### extraFields
371
+
372
+ `Array` with each entry in the form `{id: id, data: data}`,
373
+ where `id` is a `Number` and `data` is a `Buffer`.
374
+
375
+ This library looks for and reads the ZIP64 Extended Information Extra Field (0x0001)
376
+ in order to support ZIP64 format zip files.
377
+
378
+ This library also looks for and reads the Info-ZIP Unicode Path Extra Field (0x7075)
379
+ in order to support some zipfiles that use it instead of General Purpose Bit 11
380
+ to convey `UTF-8` file names.
381
+ When the field is identified and verified to be reliable (see the zipfile spec),
382
+ the the file name in this field is stored in the `fileName` property,
383
+ and the file name in the central directory record for this entry is ignored.
384
+ Note that when `decodeStrings` is false, all Info-ZIP Unicode Path Extra Fields are ignored.
385
+
386
+ None of the other fields are considered significant by this library.
387
+ Fields that this library reads are left unalterned in the `extraFields` array.
388
+
389
+ #### fileComment
390
+
391
+ `String` decoded with the charset indicated by `generalPurposeBitFlag & 0x800` as with the `fileName`.
392
+ (The Info-ZIP Unicode Path Extra Field has no effect on the charset used for this field.)
393
+
394
+ If `decodeStrings` is `false` (see `open()`), this field is the undecoded `Buffer` instead of a decoded `String`.
395
+
396
+ Prior to yauzl version 2.7.0, this field was erroneously documented as `comment` instead of `fileComment`.
397
+ For compatibility with any code that uses the field name `comment`,
398
+ yauzl creates an alias field named `comment` which is identical to `fileComment`.
399
+
400
+ #### getLastModDate()
401
+
402
+ Effectively implemented as:
403
+
404
+ ```js
405
+ return dosDateTimeToDate(this.lastModFileDate, this.lastModFileTime);
406
+ ```
407
+
408
+ #### isEncrypted()
409
+
410
+ Returns is this entry encrypted with "Traditional Encryption".
411
+ Effectively implemented as:
412
+
413
+ ```js
414
+ return (this.generalPurposeBitFlag & 0x1) !== 0;
415
+ ```
416
+
417
+ See `openReadStream()` for the implications of this value.
418
+
419
+ Note that "Strong Encryption" is not supported, and will result in an `"error"` event emitted from the `ZipFile`.
420
+
421
+ #### isCompressed()
422
+
423
+ Effectively implemented as:
424
+
425
+ ```js
426
+ return this.compressionMethod === 8;
427
+ ```
428
+
429
+ See `openReadStream()` for the implications of this value.
430
+
431
+ ### Class: RandomAccessReader
432
+
433
+ This class is meant to be subclassed by clients and instantiated for the `fromRandomAccessReader()` function.
434
+
435
+ An example implementation can be found in `test/test.js`.
436
+
437
+ #### randomAccessReader._readStreamForRange(start, end)
438
+
439
+ Subclasses *must* implement this method.
440
+
441
+ `start` and `end` are Numbers and indicate byte offsets from the start of the file.
442
+ `end` is exclusive, so `_readStreamForRange(0x1000, 0x2000)` would indicate to read `0x1000` bytes.
443
+ `end - start` will always be at least `1`.
444
+
445
+ This method should return a readable stream which will be `pipe()`ed into another stream.
446
+ It is expected that the readable stream will provide data in several chunks if necessary.
447
+ If the readable stream provides too many or too few bytes, an error will be emitted.
448
+ (Note that `validateEntrySizes` has no effect on this check,
449
+ because this is a low-level API that should behave correctly regardless of the contents of the file.)
450
+ Any errors emitted on the readable stream will be handled and re-emitted on the client-visible stream
451
+ (returned from `zipfile.openReadStream()`) or provided as the `err` argument to the appropriate callback
452
+ (for example, for `fromRandomAccessReader()`).
453
+
454
+ The returned stream *must* implement a method `.destroy()`
455
+ if you call `readStream.destroy()` on streams you get from `openReadStream()`.
456
+ If you never call `readStream.destroy()`, then streams returned from this method do not need to implement a method `.destroy()`.
457
+ `.destroy()` should abort any streaming that is in progress and clean up any associated resources.
458
+ `.destroy()` will only be called after the stream has been `unpipe()`d from its destination.
459
+
460
+ Note that the stream returned from this method might not be the same object that is provided by `openReadStream()`.
461
+ The stream returned from this method might be `pipe()`d through one or more filter streams (for example, a zlib inflate stream).
462
+
463
+ #### randomAccessReader.read(buffer, offset, length, position, callback)
464
+
465
+ Subclasses may implement this method.
466
+ The default implementation uses `createReadStream()` to fill the `buffer`.
467
+
468
+ This method should behave like `fs.read()`.
469
+
470
+ #### randomAccessReader.close(callback)
471
+
472
+ Subclasses may implement this method.
473
+ The default implementation is effectively `setImmediate(callback);`.
474
+
475
+ `callback` takes parameters `(err)`.
476
+
477
+ This method is called once the all streams returned from `_readStreamForRange()` have ended,
478
+ and no more `_readStreamForRange()` or `read()` requests will be issued to this object.
479
+
480
+ ## How to Avoid Crashing
481
+
482
+ When a malformed zipfile is encountered, the default behavior is to crash (throw an exception).
483
+ If you want to handle errors more gracefully than this,
484
+ be sure to do the following:
485
+
486
+ * Provide `callback` parameters where they are allowed, and check the `err` parameter.
487
+ * Attach a listener for the `error` event on any `ZipFile` object you get from `open()`, `fromFd()`, `fromBuffer()`, or `fromRandomAccessReader()`.
488
+ * Attach a listener for the `error` event on any stream you get from `openReadStream()`.
489
+
490
+ Minor version updates to yauzl will not add any additional requirements to this list.
491
+
492
+ ## Limitations
493
+
494
+ ### No Streaming Unzip API
495
+
496
+ Due to the design of the .zip file format, it's impossible to interpret a .zip file from start to finish
497
+ (such as from a readable stream) without sacrificing correctness.
498
+ The Central Directory, which is the authority on the contents of the .zip file, is at the end of a .zip file, not the beginning.
499
+ A streaming API would need to either buffer the entire .zip file to get to the Central Directory before interpreting anything
500
+ (defeating the purpose of a streaming interface), or rely on the Local File Headers which are interspersed through the .zip file.
501
+ However, the Local File Headers are explicitly denounced in the spec as being unreliable copies of the Central Directory,
502
+ so trusting them would be a violation of the spec.
503
+
504
+ Any library that offers a streaming unzip API must make one of the above two compromises,
505
+ which makes the library either dishonest or nonconformant (usually the latter).
506
+ This library insists on correctness and adherence to the spec, and so does not offer a streaming API.
507
+
508
+ Here is a way to create a spec-conformant .zip file using the `zip` command line program (Info-ZIP)
509
+ available in most unix-like environments, that is (nearly) impossible to parse correctly with a streaming parser:
510
+
511
+ ```
512
+ $ echo -ne '\x50\x4b\x07\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' > file.txt
513
+ $ zip -q0 - file.txt | cat > out.zip
514
+ ```
515
+
516
+ This .zip file contains a single file entry that uses General Purpose Bit 3,
517
+ which means the Local File Header doesn't know the size of the file.
518
+ Any streaming parser that encounters this situation will either immediately fail,
519
+ or attempt to search for the Data Descriptor after the file's contents.
520
+ The file's contents is a sequence of 16-bytes crafted to exactly mimic a valid Data Descriptor for an empty file,
521
+ which will fool any parser that gets this far into thinking that the file is empty rather than containing 16-bytes.
522
+ What follows the file's real contents is the file's real Data Descriptor,
523
+ which will likely cause some kind of signature mismatch error for a streaming parser (if one hasn't occurred already).
524
+
525
+ By using General Purpose Bit 3 (and compression method 0),
526
+ it's possible to create arbitrarily ambiguous .zip files that
527
+ distract parsers with file contents that contain apparently valid .zip file metadata.
528
+
529
+ ### Limitted ZIP64 Support
530
+
531
+ For ZIP64, only zip files smaller than `8PiB` are supported,
532
+ not the full `16EiB` range that a 64-bit integer should be able to index.
533
+ This is due to the JavaScript Number type being an IEEE 754 double precision float.
534
+
535
+ The Node.js `fs` module probably has this same limitation.
536
+
537
+ ### ZIP64 Extensible Data Sector Is Ignored
538
+
539
+ The spec does not allow zip file creators to put arbitrary data here,
540
+ but rather reserves its use for PKWARE and mentions something about Z390.
541
+ This doesn't seem useful to expose in this library, so it is ignored.
542
+
543
+ ### No Multi-Disk Archive Support
544
+
545
+ This library does not support multi-disk zip files.
546
+ The multi-disk fields in the zipfile spec were intended for a zip file to span multiple floppy disks,
547
+ which probably never happens now.
548
+ If the "number of this disk" field in the End of Central Directory Record is not `0`,
549
+ the `open()`, `fromFd()`, `fromBuffer()`, or `fromRandomAccessReader()` `callback` will receive an `err`.
550
+ By extension the following zip file fields are ignored by this library and not provided to clients:
551
+
552
+ * Disk where central directory starts
553
+ * Number of central directory records on this disk
554
+ * Disk number where file starts
555
+
556
+ ### Limited Encryption Handling
557
+
558
+ You can detect when a file entry is encrypted with "Traditional Encryption" via `isEncrypted()`,
559
+ but yauzl will not help you decrypt it.
560
+ See `openReadStream()`.
561
+
562
+ If a zip file contains file entries encrypted with "Strong Encryption", yauzl emits an error.
563
+
564
+ If the central directory is encrypted or compressed, yauzl emits an error.
565
+
566
+ ### Local File Headers Are Ignored
567
+
568
+ Many unzip libraries mistakenly read the Local File Header data in zip files.
569
+ This data is officially defined to be redundant with the Central Directory information,
570
+ and is not to be trusted.
571
+ Aside from checking the signature, yauzl ignores the content of the Local File Header.
572
+
573
+ ### No CRC-32 Checking
574
+
575
+ This library provides the `crc32` field of `Entry` objects read from the Central Directory.
576
+ However, this field is not used for anything in this library.
577
+
578
+ ### versionNeededToExtract Is Ignored
579
+
580
+ The field `versionNeededToExtract` is ignored,
581
+ because this library doesn't support the complete zip file spec at any version,
582
+
583
+ ### No Support For Obscure Compression Methods
584
+
585
+ Regarding the `compressionMethod` field of `Entry` objects,
586
+ only method `0` (stored with no compression)
587
+ and method `8` (deflated) are supported.
588
+ Any of the other 15 official methods will cause the `openReadStream()` `callback` to receive an `err`.
589
+
590
+ ### Data Descriptors Are Ignored
591
+
592
+ There may or may not be Data Descriptor sections in a zip file.
593
+ This library provides no support for finding or interpreting them.
594
+
595
+ ### Archive Extra Data Record Is Ignored
596
+
597
+ There may or may not be an Archive Extra Data Record section in a zip file.
598
+ This library provides no support for finding or interpreting it.
599
+
600
+ ### No Language Encoding Flag Support
601
+
602
+ Zip files officially support charset encodings other than CP437 and UTF-8,
603
+ but the zip file spec does not specify how it works.
604
+ This library makes no attempt to interpret the Language Encoding Flag.
605
+
606
+ ## Change History
607
+
608
+ * 2.10.0
609
+ * Added support for non-conformant zipfiles created by Microsoft, and added option `strictFileNames` to disable the workaround. [issue #66](https://github.com/thejoshwolfe/yauzl/issues/66), [issue #88](https://github.com/thejoshwolfe/yauzl/issues/88)
610
+ * 2.9.2
611
+ * Removed `tools/hexdump-zip.js` and `tools/hex2bin.js`. Those tools are now located here: [thejoshwolfe/hexdump-zip](https://github.com/thejoshwolfe/hexdump-zip) and [thejoshwolfe/hex2bin](https://github.com/thejoshwolfe/hex2bin)
612
+ * Worked around performance problem with zlib when using `fromBuffer()` and `readStream.destroy()` for large compressed files. [issue #87](https://github.com/thejoshwolfe/yauzl/issues/87)
613
+ * 2.9.1
614
+ * Removed `console.log()` accidentally introduced in 2.9.0. [issue #64](https://github.com/thejoshwolfe/yauzl/issues/64)
615
+ * 2.9.0
616
+ * Throw an exception if `readEntry()` is called without `lazyEntries:true`. Previously this caused undefined behavior. [issue #63](https://github.com/thejoshwolfe/yauzl/issues/63)
617
+ * 2.8.0
618
+ * Added option `validateEntrySizes`. [issue #53](https://github.com/thejoshwolfe/yauzl/issues/53)
619
+ * Added `examples/promises.js`
620
+ * Added ability to read raw file data via `decompress` and `decrypt` options. [issue #11](https://github.com/thejoshwolfe/yauzl/issues/11), [issue #38](https://github.com/thejoshwolfe/yauzl/issues/38), [pull #39](https://github.com/thejoshwolfe/yauzl/pull/39)
621
+ * Added `start` and `end` options to `openReadStream()`. [issue #38](https://github.com/thejoshwolfe/yauzl/issues/38)
622
+ * 2.7.0
623
+ * Added option `decodeStrings`. [issue #42](https://github.com/thejoshwolfe/yauzl/issues/42)
624
+ * Fixed documentation for `entry.fileComment` and added compatibility alias. [issue #47](https://github.com/thejoshwolfe/yauzl/issues/47)
625
+ * 2.6.0
626
+ * Support Info-ZIP Unicode Path Extra Field, used by WinRAR for Chinese file names. [issue #33](https://github.com/thejoshwolfe/yauzl/issues/33)
627
+ * 2.5.0
628
+ * Ignore malformed Extra Field that is common in Android .apk files. [issue #31](https://github.com/thejoshwolfe/yauzl/issues/31)
629
+ * 2.4.3
630
+ * Fix crash when parsing malformed Extra Field buffers. [issue #31](https://github.com/thejoshwolfe/yauzl/issues/31)
631
+ * 2.4.2
632
+ * Remove .npmignore and .travis.yml from npm package.
633
+ * 2.4.1
634
+ * Fix error handling.
635
+ * 2.4.0
636
+ * Add ZIP64 support. [issue #6](https://github.com/thejoshwolfe/yauzl/issues/6)
637
+ * Add `lazyEntries` option. [issue #22](https://github.com/thejoshwolfe/yauzl/issues/22)
638
+ * Add `readStream.destroy()` method. [issue #26](https://github.com/thejoshwolfe/yauzl/issues/26)
639
+ * Add `fromRandomAccessReader()`. [issue #14](https://github.com/thejoshwolfe/yauzl/issues/14)
640
+ * Add `examples/unzip.js`.
641
+ * 2.3.1
642
+ * Documentation updates.
643
+ * 2.3.0
644
+ * Check that `uncompressedSize` is correct, or else emit an error. [issue #13](https://github.com/thejoshwolfe/yauzl/issues/13)
645
+ * 2.2.1
646
+ * Update dependencies.
647
+ * 2.2.0
648
+ * Update dependencies.
649
+ * 2.1.0
650
+ * Remove dependency on `iconv`.
651
+ * 2.0.3
652
+ * Fix crash when trying to read a 0-byte file.
653
+ * 2.0.2
654
+ * Fix event behavior after errors.
655
+ * 2.0.1
656
+ * Fix bug with using `iconv`.
657
+ * 2.0.0
658
+ * Initial release.