postdoc 0.2.0.beta4 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (370) hide show
  1. checksums.yaml +4 -4
  2. data/lib/postdoc.rb +50 -18
  3. metadata +24 -378
  4. data/lib/pdf.js +0 -27
  5. data/node_modules/agent-base/History.md +0 -113
  6. data/node_modules/agent-base/README.md +0 -145
  7. data/node_modules/agent-base/index.js +0 -160
  8. data/node_modules/agent-base/package.json +0 -35
  9. data/node_modules/agent-base/patch-core.js +0 -37
  10. data/node_modules/agent-base/test/ssl-cert-snakeoil.key +0 -15
  11. data/node_modules/agent-base/test/ssl-cert-snakeoil.pem +0 -12
  12. data/node_modules/agent-base/test/test.js +0 -673
  13. data/node_modules/async-limiter/LICENSE +0 -8
  14. data/node_modules/async-limiter/coverage/coverage.json +0 -1
  15. data/node_modules/async-limiter/coverage/lcov-report/async-throttle/index.html +0 -73
  16. data/node_modules/async-limiter/coverage/lcov-report/async-throttle/index.js.html +0 -246
  17. data/node_modules/async-limiter/coverage/lcov-report/base.css +0 -182
  18. data/node_modules/async-limiter/coverage/lcov-report/index.html +0 -73
  19. data/node_modules/async-limiter/coverage/lcov-report/prettify.css +0 -1
  20. data/node_modules/async-limiter/coverage/lcov-report/prettify.js +0 -1
  21. data/node_modules/async-limiter/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  22. data/node_modules/async-limiter/coverage/lcov-report/sorter.js +0 -156
  23. data/node_modules/async-limiter/coverage/lcov.info +0 -74
  24. data/node_modules/async-limiter/index.js +0 -67
  25. data/node_modules/async-limiter/package.json +0 -35
  26. data/node_modules/async-limiter/readme.md +0 -132
  27. data/node_modules/balanced-match/LICENSE.md +0 -21
  28. data/node_modules/balanced-match/README.md +0 -91
  29. data/node_modules/balanced-match/index.js +0 -59
  30. data/node_modules/balanced-match/package.json +0 -49
  31. data/node_modules/brace-expansion/LICENSE +0 -21
  32. data/node_modules/brace-expansion/README.md +0 -129
  33. data/node_modules/brace-expansion/index.js +0 -201
  34. data/node_modules/brace-expansion/package.json +0 -47
  35. data/node_modules/buffer-from/index.js +0 -69
  36. data/node_modules/buffer-from/package.json +0 -16
  37. data/node_modules/buffer-from/readme.md +0 -69
  38. data/node_modules/buffer-from/test.js +0 -12
  39. data/node_modules/concat-map/LICENSE +0 -18
  40. data/node_modules/concat-map/README.markdown +0 -62
  41. data/node_modules/concat-map/example/map.js +0 -6
  42. data/node_modules/concat-map/index.js +0 -13
  43. data/node_modules/concat-map/package.json +0 -43
  44. data/node_modules/concat-map/test/map.js +0 -39
  45. data/node_modules/concat-stream/LICENSE +0 -24
  46. data/node_modules/concat-stream/index.js +0 -144
  47. data/node_modules/concat-stream/package.json +0 -55
  48. data/node_modules/concat-stream/readme.md +0 -102
  49. data/node_modules/core-util-is/LICENSE +0 -19
  50. data/node_modules/core-util-is/README.md +0 -3
  51. data/node_modules/core-util-is/float.patch +0 -604
  52. data/node_modules/core-util-is/lib/util.js +0 -107
  53. data/node_modules/core-util-is/package.json +0 -32
  54. data/node_modules/core-util-is/test.js +0 -68
  55. data/node_modules/debug/CHANGELOG.md +0 -395
  56. data/node_modules/debug/LICENSE +0 -19
  57. data/node_modules/debug/Makefile +0 -58
  58. data/node_modules/debug/README.md +0 -368
  59. data/node_modules/debug/karma.conf.js +0 -70
  60. data/node_modules/debug/node.js +0 -1
  61. data/node_modules/debug/package.json +0 -43
  62. data/node_modules/debug/src/browser.js +0 -195
  63. data/node_modules/debug/src/debug.js +0 -225
  64. data/node_modules/debug/src/index.js +0 -10
  65. data/node_modules/debug/src/node.js +0 -186
  66. data/node_modules/es6-promise/CHANGELOG.md +0 -151
  67. data/node_modules/es6-promise/LICENSE +0 -19
  68. data/node_modules/es6-promise/README.md +0 -97
  69. data/node_modules/es6-promise/auto.js +0 -4
  70. data/node_modules/es6-promise/dist/es6-promise.auto.js +0 -1181
  71. data/node_modules/es6-promise/dist/es6-promise.auto.map +0 -1
  72. data/node_modules/es6-promise/dist/es6-promise.auto.min.js +0 -1
  73. data/node_modules/es6-promise/dist/es6-promise.auto.min.map +0 -1
  74. data/node_modules/es6-promise/dist/es6-promise.js +0 -1179
  75. data/node_modules/es6-promise/dist/es6-promise.map +0 -1
  76. data/node_modules/es6-promise/dist/es6-promise.min.js +0 -1
  77. data/node_modules/es6-promise/dist/es6-promise.min.map +0 -1
  78. data/node_modules/es6-promise/es6-promise.d.ts +0 -81
  79. data/node_modules/es6-promise/lib/es6-promise.auto.js +0 -3
  80. data/node_modules/es6-promise/lib/es6-promise.js +0 -7
  81. data/node_modules/es6-promise/lib/es6-promise/-internal.js +0 -266
  82. data/node_modules/es6-promise/lib/es6-promise/asap.js +0 -119
  83. data/node_modules/es6-promise/lib/es6-promise/enumerator.js +0 -113
  84. data/node_modules/es6-promise/lib/es6-promise/polyfill.js +0 -35
  85. data/node_modules/es6-promise/lib/es6-promise/promise.js +0 -427
  86. data/node_modules/es6-promise/lib/es6-promise/promise/all.js +0 -52
  87. data/node_modules/es6-promise/lib/es6-promise/promise/race.js +0 -84
  88. data/node_modules/es6-promise/lib/es6-promise/promise/reject.js +0 -46
  89. data/node_modules/es6-promise/lib/es6-promise/promise/resolve.js +0 -48
  90. data/node_modules/es6-promise/lib/es6-promise/then.js +0 -32
  91. data/node_modules/es6-promise/lib/es6-promise/utils.js +0 -21
  92. data/node_modules/es6-promise/package.json +0 -75
  93. data/node_modules/es6-promisify/README.md +0 -89
  94. data/node_modules/es6-promisify/dist/promise.js +0 -73
  95. data/node_modules/es6-promisify/dist/promisify.js +0 -85
  96. data/node_modules/es6-promisify/package.json +0 -41
  97. data/node_modules/extract-zip/CONTRIBUTING.md +0 -1
  98. data/node_modules/extract-zip/LICENSE +0 -23
  99. data/node_modules/extract-zip/cli.js +0 -20
  100. data/node_modules/extract-zip/index.js +0 -205
  101. data/node_modules/extract-zip/node_modules/debug/CHANGELOG.md +0 -362
  102. data/node_modules/extract-zip/node_modules/debug/LICENSE +0 -19
  103. data/node_modules/extract-zip/node_modules/debug/Makefile +0 -50
  104. data/node_modules/extract-zip/node_modules/debug/README.md +0 -312
  105. data/node_modules/extract-zip/node_modules/debug/component.json +0 -19
  106. data/node_modules/extract-zip/node_modules/debug/karma.conf.js +0 -70
  107. data/node_modules/extract-zip/node_modules/debug/node.js +0 -1
  108. data/node_modules/extract-zip/node_modules/debug/package.json +0 -49
  109. data/node_modules/extract-zip/node_modules/debug/src/browser.js +0 -185
  110. data/node_modules/extract-zip/node_modules/debug/src/debug.js +0 -202
  111. data/node_modules/extract-zip/node_modules/debug/src/index.js +0 -10
  112. data/node_modules/extract-zip/node_modules/debug/src/inspector-log.js +0 -15
  113. data/node_modules/extract-zip/node_modules/debug/src/node.js +0 -248
  114. data/node_modules/extract-zip/package.json +0 -35
  115. data/node_modules/extract-zip/readme.md +0 -49
  116. data/node_modules/fd-slicer/CHANGELOG.md +0 -49
  117. data/node_modules/fd-slicer/LICENSE +0 -21
  118. data/node_modules/fd-slicer/README.md +0 -189
  119. data/node_modules/fd-slicer/index.js +0 -277
  120. data/node_modules/fd-slicer/package.json +0 -36
  121. data/node_modules/fd-slicer/test/test.js +0 -350
  122. data/node_modules/fs.realpath/LICENSE +0 -43
  123. data/node_modules/fs.realpath/README.md +0 -33
  124. data/node_modules/fs.realpath/index.js +0 -66
  125. data/node_modules/fs.realpath/old.js +0 -303
  126. data/node_modules/fs.realpath/package.json +0 -26
  127. data/node_modules/glob/LICENSE +0 -15
  128. data/node_modules/glob/README.md +0 -368
  129. data/node_modules/glob/changelog.md +0 -67
  130. data/node_modules/glob/common.js +0 -240
  131. data/node_modules/glob/glob.js +0 -790
  132. data/node_modules/glob/package.json +0 -43
  133. data/node_modules/glob/sync.js +0 -486
  134. data/node_modules/https-proxy-agent/History.md +0 -124
  135. data/node_modules/https-proxy-agent/README.md +0 -137
  136. data/node_modules/https-proxy-agent/index.js +0 -229
  137. data/node_modules/https-proxy-agent/package.json +0 -35
  138. data/node_modules/https-proxy-agent/test/ssl-cert-snakeoil.key +0 -15
  139. data/node_modules/https-proxy-agent/test/ssl-cert-snakeoil.pem +0 -12
  140. data/node_modules/https-proxy-agent/test/test.js +0 -342
  141. data/node_modules/inflight/LICENSE +0 -15
  142. data/node_modules/inflight/README.md +0 -37
  143. data/node_modules/inflight/inflight.js +0 -54
  144. data/node_modules/inflight/package.json +0 -29
  145. data/node_modules/inherits/LICENSE +0 -16
  146. data/node_modules/inherits/README.md +0 -42
  147. data/node_modules/inherits/inherits.js +0 -7
  148. data/node_modules/inherits/inherits_browser.js +0 -23
  149. data/node_modules/inherits/package.json +0 -29
  150. data/node_modules/isarray/Makefile +0 -6
  151. data/node_modules/isarray/README.md +0 -60
  152. data/node_modules/isarray/component.json +0 -19
  153. data/node_modules/isarray/index.js +0 -5
  154. data/node_modules/isarray/package.json +0 -45
  155. data/node_modules/isarray/test.js +0 -20
  156. data/node_modules/mime/CHANGELOG.md +0 -225
  157. data/node_modules/mime/CONTRIBUTING.md +0 -5
  158. data/node_modules/mime/LICENSE +0 -21
  159. data/node_modules/mime/Mime.js +0 -89
  160. data/node_modules/mime/README.md +0 -188
  161. data/node_modules/mime/cli.js +0 -10
  162. data/node_modules/mime/index.js +0 -4
  163. data/node_modules/mime/lite.js +0 -4
  164. data/node_modules/mime/package.json +0 -43
  165. data/node_modules/mime/src/README_js.md +0 -179
  166. data/node_modules/mime/src/build.js +0 -71
  167. data/node_modules/mime/src/test.js +0 -257
  168. data/node_modules/mime/types/other.json +0 -1
  169. data/node_modules/mime/types/standard.json +0 -1
  170. data/node_modules/minimatch/LICENSE +0 -15
  171. data/node_modules/minimatch/README.md +0 -209
  172. data/node_modules/minimatch/minimatch.js +0 -923
  173. data/node_modules/minimatch/package.json +0 -30
  174. data/node_modules/minimist/LICENSE +0 -18
  175. data/node_modules/minimist/example/parse.js +0 -2
  176. data/node_modules/minimist/index.js +0 -187
  177. data/node_modules/minimist/package.json +0 -40
  178. data/node_modules/minimist/readme.markdown +0 -73
  179. data/node_modules/minimist/test/dash.js +0 -24
  180. data/node_modules/minimist/test/default_bool.js +0 -20
  181. data/node_modules/minimist/test/dotted.js +0 -16
  182. data/node_modules/minimist/test/long.js +0 -31
  183. data/node_modules/minimist/test/parse.js +0 -318
  184. data/node_modules/minimist/test/parse_modified.js +0 -9
  185. data/node_modules/minimist/test/short.js +0 -67
  186. data/node_modules/minimist/test/whitespace.js +0 -8
  187. data/node_modules/mkdirp/LICENSE +0 -21
  188. data/node_modules/mkdirp/bin/cmd.js +0 -33
  189. data/node_modules/mkdirp/bin/usage.txt +0 -12
  190. data/node_modules/mkdirp/examples/pow.js +0 -6
  191. data/node_modules/mkdirp/index.js +0 -98
  192. data/node_modules/mkdirp/package.json +0 -27
  193. data/node_modules/mkdirp/readme.markdown +0 -100
  194. data/node_modules/mkdirp/test/chmod.js +0 -41
  195. data/node_modules/mkdirp/test/clobber.js +0 -38
  196. data/node_modules/mkdirp/test/mkdirp.js +0 -28
  197. data/node_modules/mkdirp/test/opts_fs.js +0 -29
  198. data/node_modules/mkdirp/test/opts_fs_sync.js +0 -27
  199. data/node_modules/mkdirp/test/perm.js +0 -32
  200. data/node_modules/mkdirp/test/perm_sync.js +0 -36
  201. data/node_modules/mkdirp/test/race.js +0 -37
  202. data/node_modules/mkdirp/test/rel.js +0 -32
  203. data/node_modules/mkdirp/test/return.js +0 -25
  204. data/node_modules/mkdirp/test/return_sync.js +0 -24
  205. data/node_modules/mkdirp/test/root.js +0 -19
  206. data/node_modules/mkdirp/test/sync.js +0 -32
  207. data/node_modules/mkdirp/test/umask.js +0 -28
  208. data/node_modules/mkdirp/test/umask_sync.js +0 -32
  209. data/node_modules/ms/index.js +0 -152
  210. data/node_modules/ms/license.md +0 -21
  211. data/node_modules/ms/package.json +0 -37
  212. data/node_modules/ms/readme.md +0 -51
  213. data/node_modules/once/LICENSE +0 -15
  214. data/node_modules/once/README.md +0 -79
  215. data/node_modules/once/once.js +0 -42
  216. data/node_modules/once/package.json +0 -33
  217. data/node_modules/path-is-absolute/index.js +0 -20
  218. data/node_modules/path-is-absolute/license +0 -21
  219. data/node_modules/path-is-absolute/package.json +0 -43
  220. data/node_modules/path-is-absolute/readme.md +0 -59
  221. data/node_modules/pend/LICENSE +0 -23
  222. data/node_modules/pend/README.md +0 -41
  223. data/node_modules/pend/index.js +0 -55
  224. data/node_modules/pend/package.json +0 -18
  225. data/node_modules/pend/test.js +0 -137
  226. data/node_modules/process-nextick-args/index.js +0 -44
  227. data/node_modules/process-nextick-args/license.md +0 -19
  228. data/node_modules/process-nextick-args/package.json +0 -25
  229. data/node_modules/process-nextick-args/readme.md +0 -18
  230. data/node_modules/progress/CHANGELOG.md +0 -115
  231. data/node_modules/progress/LICENSE +0 -22
  232. data/node_modules/progress/Makefile +0 -8
  233. data/node_modules/progress/README.md +0 -146
  234. data/node_modules/progress/index.js +0 -1
  235. data/node_modules/progress/lib/node-progress.js +0 -231
  236. data/node_modules/progress/package.json +0 -25
  237. data/node_modules/proxy-from-env/README.md +0 -131
  238. data/node_modules/proxy-from-env/index.js +0 -103
  239. data/node_modules/proxy-from-env/package.json +0 -35
  240. data/node_modules/proxy-from-env/test.js +0 -393
  241. data/node_modules/puppeteer/CONTRIBUTING.md +0 -206
  242. data/node_modules/puppeteer/DeviceDescriptors.js +0 -704
  243. data/node_modules/puppeteer/LICENSE +0 -202
  244. data/node_modules/puppeteer/README.md +0 -306
  245. data/node_modules/puppeteer/index.js +0 -28
  246. data/node_modules/puppeteer/install.js +0 -122
  247. data/node_modules/puppeteer/lib/Browser.js +0 -186
  248. data/node_modules/puppeteer/lib/BrowserFetcher.js +0 -279
  249. data/node_modules/puppeteer/lib/Connection.js +0 -246
  250. data/node_modules/puppeteer/lib/Coverage.js +0 -301
  251. data/node_modules/puppeteer/lib/Dialog.js +0 -84
  252. data/node_modules/puppeteer/lib/ElementHandle.js +0 -328
  253. data/node_modules/puppeteer/lib/EmulationManager.js +0 -89
  254. data/node_modules/puppeteer/lib/ExecutionContext.js +0 -232
  255. data/node_modules/puppeteer/lib/FrameManager.js +0 -997
  256. data/node_modules/puppeteer/lib/Input.js +0 -309
  257. data/node_modules/puppeteer/lib/Launcher.js +0 -310
  258. data/node_modules/puppeteer/lib/Multimap.js +0 -95
  259. data/node_modules/puppeteer/lib/NavigatorWatcher.js +0 -137
  260. data/node_modules/puppeteer/lib/NetworkManager.js +0 -796
  261. data/node_modules/puppeteer/lib/Page.js +0 -1098
  262. data/node_modules/puppeteer/lib/Pipe.js +0 -69
  263. data/node_modules/puppeteer/lib/Puppeteer.js +0 -60
  264. data/node_modules/puppeteer/lib/Target.js +0 -88
  265. data/node_modules/puppeteer/lib/TaskQueue.js +0 -17
  266. data/node_modules/puppeteer/lib/Tracing.js +0 -99
  267. data/node_modules/puppeteer/lib/USKeyboardLayout.js +0 -281
  268. data/node_modules/puppeteer/lib/helper.js +0 -248
  269. data/node_modules/puppeteer/node6/lib/Browser.js +0 -394
  270. data/node_modules/puppeteer/node6/lib/BrowserFetcher.js +0 -357
  271. data/node_modules/puppeteer/node6/lib/Connection.js +0 -350
  272. data/node_modules/puppeteer/node6/lib/Coverage.js +0 -561
  273. data/node_modules/puppeteer/node6/lib/Dialog.js +0 -136
  274. data/node_modules/puppeteer/node6/lib/ElementHandle.js +0 -796
  275. data/node_modules/puppeteer/node6/lib/EmulationManager.js +0 -115
  276. data/node_modules/puppeteer/node6/lib/ExecutionContext.js +0 -414
  277. data/node_modules/puppeteer/node6/lib/FrameManager.js +0 -1621
  278. data/node_modules/puppeteer/node6/lib/Input.js +0 -569
  279. data/node_modules/puppeteer/node6/lib/Launcher.js +0 -362
  280. data/node_modules/puppeteer/node6/lib/Multimap.js +0 -95
  281. data/node_modules/puppeteer/node6/lib/NavigatorWatcher.js +0 -163
  282. data/node_modules/puppeteer/node6/lib/NetworkManager.js +0 -1108
  283. data/node_modules/puppeteer/node6/lib/Page.js +0 -2242
  284. data/node_modules/puppeteer/node6/lib/Pipe.js +0 -69
  285. data/node_modules/puppeteer/node6/lib/Puppeteer.js +0 -60
  286. data/node_modules/puppeteer/node6/lib/Target.js +0 -114
  287. data/node_modules/puppeteer/node6/lib/TaskQueue.js +0 -17
  288. data/node_modules/puppeteer/node6/lib/Tracing.js +0 -177
  289. data/node_modules/puppeteer/node6/lib/USKeyboardLayout.js +0 -281
  290. data/node_modules/puppeteer/node6/lib/helper.js +0 -274
  291. data/node_modules/puppeteer/package.json +0 -61
  292. data/node_modules/readable-stream/CONTRIBUTING.md +0 -38
  293. data/node_modules/readable-stream/GOVERNANCE.md +0 -136
  294. data/node_modules/readable-stream/LICENSE +0 -47
  295. data/node_modules/readable-stream/README.md +0 -58
  296. data/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +0 -60
  297. data/node_modules/readable-stream/duplex-browser.js +0 -1
  298. data/node_modules/readable-stream/duplex.js +0 -1
  299. data/node_modules/readable-stream/lib/_stream_duplex.js +0 -131
  300. data/node_modules/readable-stream/lib/_stream_passthrough.js +0 -47
  301. data/node_modules/readable-stream/lib/_stream_readable.js +0 -1019
  302. data/node_modules/readable-stream/lib/_stream_transform.js +0 -214
  303. data/node_modules/readable-stream/lib/_stream_writable.js +0 -687
  304. data/node_modules/readable-stream/lib/internal/streams/BufferList.js +0 -79
  305. data/node_modules/readable-stream/lib/internal/streams/destroy.js +0 -74
  306. data/node_modules/readable-stream/lib/internal/streams/stream-browser.js +0 -1
  307. data/node_modules/readable-stream/lib/internal/streams/stream.js +0 -1
  308. data/node_modules/readable-stream/package.json +0 -52
  309. data/node_modules/readable-stream/passthrough.js +0 -1
  310. data/node_modules/readable-stream/readable-browser.js +0 -7
  311. data/node_modules/readable-stream/readable.js +0 -19
  312. data/node_modules/readable-stream/transform.js +0 -1
  313. data/node_modules/readable-stream/writable-browser.js +0 -1
  314. data/node_modules/readable-stream/writable.js +0 -8
  315. data/node_modules/rimraf/LICENSE +0 -15
  316. data/node_modules/rimraf/README.md +0 -101
  317. data/node_modules/rimraf/bin.js +0 -50
  318. data/node_modules/rimraf/package.json +0 -26
  319. data/node_modules/rimraf/rimraf.js +0 -364
  320. data/node_modules/safe-buffer/LICENSE +0 -21
  321. data/node_modules/safe-buffer/README.md +0 -584
  322. data/node_modules/safe-buffer/index.d.ts +0 -187
  323. data/node_modules/safe-buffer/index.js +0 -62
  324. data/node_modules/safe-buffer/package.json +0 -37
  325. data/node_modules/string_decoder/LICENSE +0 -48
  326. data/node_modules/string_decoder/README.md +0 -47
  327. data/node_modules/string_decoder/lib/string_decoder.js +0 -296
  328. data/node_modules/string_decoder/package.json +0 -31
  329. data/node_modules/typedarray/LICENSE +0 -35
  330. data/node_modules/typedarray/example/tarray.js +0 -4
  331. data/node_modules/typedarray/index.js +0 -630
  332. data/node_modules/typedarray/package.json +0 -55
  333. data/node_modules/typedarray/readme.markdown +0 -61
  334. data/node_modules/typedarray/test/server/undef_globals.js +0 -19
  335. data/node_modules/typedarray/test/tarray.js +0 -10
  336. data/node_modules/ultron/LICENSE +0 -22
  337. data/node_modules/ultron/README.md +0 -113
  338. data/node_modules/ultron/index.js +0 -136
  339. data/node_modules/ultron/package.json +0 -41
  340. data/node_modules/util-deprecate/History.md +0 -16
  341. data/node_modules/util-deprecate/LICENSE +0 -24
  342. data/node_modules/util-deprecate/README.md +0 -53
  343. data/node_modules/util-deprecate/browser.js +0 -67
  344. data/node_modules/util-deprecate/node.js +0 -6
  345. data/node_modules/util-deprecate/package.json +0 -27
  346. data/node_modules/wrappy/LICENSE +0 -15
  347. data/node_modules/wrappy/README.md +0 -36
  348. data/node_modules/wrappy/package.json +0 -29
  349. data/node_modules/wrappy/wrappy.js +0 -33
  350. data/node_modules/ws/LICENSE +0 -21
  351. data/node_modules/ws/README.md +0 -341
  352. data/node_modules/ws/index.js +0 -15
  353. data/node_modules/ws/lib/BufferUtil.js +0 -71
  354. data/node_modules/ws/lib/Constants.js +0 -10
  355. data/node_modules/ws/lib/ErrorCodes.js +0 -28
  356. data/node_modules/ws/lib/EventTarget.js +0 -151
  357. data/node_modules/ws/lib/Extensions.js +0 -203
  358. data/node_modules/ws/lib/PerMessageDeflate.js +0 -507
  359. data/node_modules/ws/lib/Receiver.js +0 -553
  360. data/node_modules/ws/lib/Sender.js +0 -412
  361. data/node_modules/ws/lib/Validation.js +0 -17
  362. data/node_modules/ws/lib/WebSocket.js +0 -717
  363. data/node_modules/ws/lib/WebSocketServer.js +0 -326
  364. data/node_modules/ws/package.json +0 -46
  365. data/node_modules/yauzl/LICENSE +0 -21
  366. data/node_modules/yauzl/README.md +0 -467
  367. data/node_modules/yauzl/index.js +0 -626
  368. data/node_modules/yauzl/package.json +0 -36
  369. data/package.json +0 -5
  370. data/yarn.lock +0 -240
@@ -1,326 +0,0 @@
1
- /*!
2
- * ws: a node.js websocket client
3
- * Copyright(c) 2011 Einar Otto Stangvik <einaros@gmail.com>
4
- * MIT Licensed
5
- */
6
-
7
- 'use strict';
8
-
9
- const safeBuffer = require('safe-buffer');
10
- const EventEmitter = require('events');
11
- const crypto = require('crypto');
12
- const Ultron = require('ultron');
13
- const http = require('http');
14
- const url = require('url');
15
-
16
- const PerMessageDeflate = require('./PerMessageDeflate');
17
- const Extensions = require('./Extensions');
18
- const constants = require('./Constants');
19
- const WebSocket = require('./WebSocket');
20
-
21
- const Buffer = safeBuffer.Buffer;
22
-
23
- /**
24
- * Class representing a WebSocket server.
25
- *
26
- * @extends EventEmitter
27
- */
28
- class WebSocketServer extends EventEmitter {
29
- /**
30
- * Create a `WebSocketServer` instance.
31
- *
32
- * @param {Object} options Configuration options
33
- * @param {String} options.host The hostname where to bind the server
34
- * @param {Number} options.port The port where to bind the server
35
- * @param {http.Server} options.server A pre-created HTTP/S server to use
36
- * @param {Function} options.verifyClient An hook to reject connections
37
- * @param {Function} options.handleProtocols An hook to handle protocols
38
- * @param {String} options.path Accept only connections matching this path
39
- * @param {Boolean} options.noServer Enable no server mode
40
- * @param {Boolean} options.clientTracking Specifies whether or not to track clients
41
- * @param {(Boolean|Object)} options.perMessageDeflate Enable/disable permessage-deflate
42
- * @param {Number} options.maxPayload The maximum allowed message size
43
- * @param {Function} callback A listener for the `listening` event
44
- */
45
- constructor (options, callback) {
46
- super();
47
-
48
- options = Object.assign({
49
- maxPayload: 100 * 1024 * 1024,
50
- perMessageDeflate: false,
51
- handleProtocols: null,
52
- clientTracking: true,
53
- verifyClient: null,
54
- noServer: false,
55
- backlog: null, // use default (511 as implemented in net.js)
56
- server: null,
57
- host: null,
58
- path: null,
59
- port: null
60
- }, options);
61
-
62
- if (options.port == null && !options.server && !options.noServer) {
63
- throw new TypeError('missing or invalid options');
64
- }
65
-
66
- if (options.port != null) {
67
- this._server = http.createServer((req, res) => {
68
- const body = http.STATUS_CODES[426];
69
-
70
- res.writeHead(426, {
71
- 'Content-Length': body.length,
72
- 'Content-Type': 'text/plain'
73
- });
74
- res.end(body);
75
- });
76
- this._server.listen(options.port, options.host, options.backlog, callback);
77
- } else if (options.server) {
78
- this._server = options.server;
79
- }
80
-
81
- if (this._server) {
82
- this._ultron = new Ultron(this._server);
83
- this._ultron.on('listening', () => this.emit('listening'));
84
- this._ultron.on('error', (err) => this.emit('error', err));
85
- this._ultron.on('upgrade', (req, socket, head) => {
86
- this.handleUpgrade(req, socket, head, (client) => {
87
- this.emit('connection', client, req);
88
- });
89
- });
90
- }
91
-
92
- if (options.perMessageDeflate === true) options.perMessageDeflate = {};
93
- if (options.clientTracking) this.clients = new Set();
94
- this.options = options;
95
- }
96
-
97
- /**
98
- * Close the server.
99
- *
100
- * @param {Function} cb Callback
101
- * @public
102
- */
103
- close (cb) {
104
- //
105
- // Terminate all associated clients.
106
- //
107
- if (this.clients) {
108
- for (const client of this.clients) client.terminate();
109
- }
110
-
111
- const server = this._server;
112
-
113
- if (server) {
114
- this._ultron.destroy();
115
- this._ultron = this._server = null;
116
-
117
- //
118
- // Close the http server if it was internally created.
119
- //
120
- if (this.options.port != null) return server.close(cb);
121
- }
122
-
123
- if (cb) cb();
124
- }
125
-
126
- /**
127
- * See if a given request should be handled by this server instance.
128
- *
129
- * @param {http.IncomingMessage} req Request object to inspect
130
- * @return {Boolean} `true` if the request is valid, else `false`
131
- * @public
132
- */
133
- shouldHandle (req) {
134
- if (this.options.path && url.parse(req.url).pathname !== this.options.path) {
135
- return false;
136
- }
137
-
138
- return true;
139
- }
140
-
141
- /**
142
- * Handle a HTTP Upgrade request.
143
- *
144
- * @param {http.IncomingMessage} req The request object
145
- * @param {net.Socket} socket The network socket between the server and client
146
- * @param {Buffer} head The first packet of the upgraded stream
147
- * @param {Function} cb Callback
148
- * @public
149
- */
150
- handleUpgrade (req, socket, head, cb) {
151
- socket.on('error', socketError);
152
-
153
- const version = +req.headers['sec-websocket-version'];
154
- const extensions = {};
155
-
156
- if (
157
- req.method !== 'GET' || req.headers.upgrade.toLowerCase() !== 'websocket' ||
158
- !req.headers['sec-websocket-key'] || (version !== 8 && version !== 13) ||
159
- !this.shouldHandle(req)
160
- ) {
161
- return abortConnection(socket, 400);
162
- }
163
-
164
- if (this.options.perMessageDeflate) {
165
- const perMessageDeflate = new PerMessageDeflate(
166
- this.options.perMessageDeflate,
167
- true,
168
- this.options.maxPayload
169
- );
170
-
171
- try {
172
- const offers = Extensions.parse(
173
- req.headers['sec-websocket-extensions']
174
- );
175
-
176
- if (offers[PerMessageDeflate.extensionName]) {
177
- perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]);
178
- extensions[PerMessageDeflate.extensionName] = perMessageDeflate;
179
- }
180
- } catch (err) {
181
- return abortConnection(socket, 400);
182
- }
183
- }
184
-
185
- var protocol = (req.headers['sec-websocket-protocol'] || '').split(/, */);
186
-
187
- //
188
- // Optionally call external protocol selection handler.
189
- //
190
- if (this.options.handleProtocols) {
191
- protocol = this.options.handleProtocols(protocol, req);
192
- if (protocol === false) return abortConnection(socket, 401);
193
- } else {
194
- protocol = protocol[0];
195
- }
196
-
197
- //
198
- // Optionally call external client verification handler.
199
- //
200
- if (this.options.verifyClient) {
201
- const info = {
202
- origin: req.headers[`${version === 8 ? 'sec-websocket-origin' : 'origin'}`],
203
- secure: !!(req.connection.authorized || req.connection.encrypted),
204
- req
205
- };
206
-
207
- if (this.options.verifyClient.length === 2) {
208
- this.options.verifyClient(info, (verified, code, message) => {
209
- if (!verified) return abortConnection(socket, code || 401, message);
210
-
211
- this.completeUpgrade(
212
- protocol,
213
- extensions,
214
- version,
215
- req,
216
- socket,
217
- head,
218
- cb
219
- );
220
- });
221
- return;
222
- }
223
-
224
- if (!this.options.verifyClient(info)) return abortConnection(socket, 401);
225
- }
226
-
227
- this.completeUpgrade(protocol, extensions, version, req, socket, head, cb);
228
- }
229
-
230
- /**
231
- * Upgrade the connection to WebSocket.
232
- *
233
- * @param {String} protocol The chosen subprotocol
234
- * @param {Object} extensions The accepted extensions
235
- * @param {Number} version The WebSocket protocol version
236
- * @param {http.IncomingMessage} req The request object
237
- * @param {net.Socket} socket The network socket between the server and client
238
- * @param {Buffer} head The first packet of the upgraded stream
239
- * @param {Function} cb Callback
240
- * @private
241
- */
242
- completeUpgrade (protocol, extensions, version, req, socket, head, cb) {
243
- //
244
- // Destroy the socket if the client has already sent a FIN packet.
245
- //
246
- if (!socket.readable || !socket.writable) return socket.destroy();
247
-
248
- const key = crypto.createHash('sha1')
249
- .update(req.headers['sec-websocket-key'] + constants.GUID, 'binary')
250
- .digest('base64');
251
-
252
- const headers = [
253
- 'HTTP/1.1 101 Switching Protocols',
254
- 'Upgrade: websocket',
255
- 'Connection: Upgrade',
256
- `Sec-WebSocket-Accept: ${key}`
257
- ];
258
-
259
- if (protocol) headers.push(`Sec-WebSocket-Protocol: ${protocol}`);
260
- if (extensions[PerMessageDeflate.extensionName]) {
261
- const params = extensions[PerMessageDeflate.extensionName].params;
262
- const value = Extensions.format({
263
- [PerMessageDeflate.extensionName]: [params]
264
- });
265
- headers.push(`Sec-WebSocket-Extensions: ${value}`);
266
- }
267
-
268
- //
269
- // Allow external modification/inspection of handshake headers.
270
- //
271
- this.emit('headers', headers, req);
272
-
273
- socket.write(headers.concat('\r\n').join('\r\n'));
274
-
275
- const client = new WebSocket([socket, head], null, {
276
- maxPayload: this.options.maxPayload,
277
- protocolVersion: version,
278
- extensions,
279
- protocol
280
- });
281
-
282
- if (this.clients) {
283
- this.clients.add(client);
284
- client.on('close', () => this.clients.delete(client));
285
- }
286
-
287
- socket.removeListener('error', socketError);
288
- cb(client);
289
- }
290
- }
291
-
292
- module.exports = WebSocketServer;
293
-
294
- /**
295
- * Handle premature socket errors.
296
- *
297
- * @private
298
- */
299
- function socketError () {
300
- this.destroy();
301
- }
302
-
303
- /**
304
- * Close the connection when preconditions are not fulfilled.
305
- *
306
- * @param {net.Socket} socket The socket of the upgrade request
307
- * @param {Number} code The HTTP response status code
308
- * @param {String} [message] The HTTP response body
309
- * @private
310
- */
311
- function abortConnection (socket, code, message) {
312
- if (socket.writable) {
313
- message = message || http.STATUS_CODES[code];
314
- socket.write(
315
- `HTTP/1.1 ${code} ${http.STATUS_CODES[code]}\r\n` +
316
- 'Connection: close\r\n' +
317
- 'Content-type: text/html\r\n' +
318
- `Content-Length: ${Buffer.byteLength(message)}\r\n` +
319
- '\r\n' +
320
- message
321
- );
322
- }
323
-
324
- socket.removeListener('error', socketError);
325
- socket.destroy();
326
- }
@@ -1,46 +0,0 @@
1
- {
2
- "name": "ws",
3
- "version": "3.3.3",
4
- "description": "Simple to use, blazing fast and thoroughly tested websocket client and server for Node.js",
5
- "keywords": [
6
- "HyBi",
7
- "Push",
8
- "RFC-6455",
9
- "WebSocket",
10
- "WebSockets",
11
- "real-time"
12
- ],
13
- "homepage": "https://github.com/websockets/ws",
14
- "bugs": "https://github.com/websockets/ws/issues",
15
- "repository": "websockets/ws",
16
- "author": "Einar Otto Stangvik <einaros@gmail.com> (http://2x.io)",
17
- "license": "MIT",
18
- "main": "index.js",
19
- "files": [
20
- "index.js",
21
- "lib"
22
- ],
23
- "scripts": {
24
- "test": "eslint . && nyc --reporter=html --reporter=text mocha test/*.test.js",
25
- "integration": "eslint . && mocha test/*.integration.js",
26
- "lint": "eslint ."
27
- },
28
- "dependencies": {
29
- "async-limiter": "~1.0.0",
30
- "safe-buffer": "~5.1.0",
31
- "ultron": "~1.1.0"
32
- },
33
- "devDependencies": {
34
- "benchmark": "~2.1.2",
35
- "bufferutil": "~3.0.0",
36
- "eslint": "~4.13.0",
37
- "eslint-config-standard": "~10.2.0",
38
- "eslint-plugin-import": "~2.8.0",
39
- "eslint-plugin-node": "~5.2.0",
40
- "eslint-plugin-promise": "~3.6.0",
41
- "eslint-plugin-standard": "~3.0.0",
42
- "mocha": "~4.0.0",
43
- "nyc": "~11.3.0",
44
- "utf-8-validate": "~4.0.0"
45
- }
46
- }
@@ -1,21 +0,0 @@
1
- The MIT License (MIT)
2
-
3
- Copyright (c) 2014 Josh Wolfe
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
@@ -1,467 +0,0 @@
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 filenames entries.
22
- A zip file entry throws an error if its file name starts with `"/"` or `/[A-Za-z]:\//`
23
- or if it contains `".."` path segments or `"\\"` (per the spec).
24
-
25
- ## Usage
26
-
27
- ```js
28
- var yauzl = require("yauzl");
29
- var fs = require("fs");
30
- var path = require("path");
31
- var mkdirp = require("mkdirp"); // or similar
32
-
33
- yauzl.open("path/to/file.zip", {lazyEntries: true}, function(err, zipfile) {
34
- if (err) throw err;
35
- zipfile.readEntry();
36
- zipfile.on("entry", function(entry) {
37
- if (/\/$/.test(entry.fileName)) {
38
- // directory file names end with '/'
39
- mkdirp(entry.fileName, function(err) {
40
- if (err) throw err;
41
- zipfile.readEntry();
42
- });
43
- } else {
44
- // file entry
45
- zipfile.openReadStream(entry, function(err, readStream) {
46
- if (err) throw err;
47
- // ensure parent directory exists
48
- mkdirp(path.dirname(entry.fileName), function(err) {
49
- if (err) throw err;
50
- readStream.pipe(fs.createWriteStream(entry.fileName));
51
- readStream.on("end", function() {
52
- zipfile.readEntry();
53
- });
54
- });
55
- });
56
- }
57
- });
58
- });
59
- ```
60
-
61
- ## API
62
-
63
- The default for every optional `callback` parameter is:
64
-
65
- ```js
66
- function defaultCallback(err) {
67
- if (err) throw err;
68
- }
69
- ```
70
-
71
- ### open(path, [options], [callback])
72
-
73
- Calls `fs.open(path, "r")` and gives the `fd`, `options`, and `callback` to `fromFd()` below.
74
-
75
- `options` may be omitted or `null`. The defaults are `{autoClose: true, lazyEntries: false}`.
76
-
77
- `autoClose` is effectively equivalent to:
78
-
79
- ```js
80
- zipfile.once("end", function() {
81
- zipfile.close();
82
- });
83
- ```
84
-
85
- `lazyEntries` indicates that entries should be read only when `readEntry()` is called.
86
- If `lazyEntries` is `false`, `entry` events will be emitted as fast as possible to allow `pipe()`ing
87
- file data from all entries in parallel.
88
- This is not recommended, as it can lead to out of control memory usage for zip files with many entries.
89
- See [issue #22](https://github.com/thejoshwolfe/yauzl/issues/22).
90
- If `lazyEntries` is `true`, an `entry` or `end` event will be emitted in response to each call to `readEntry()`.
91
- This allows processing of one entry at a time, and will keep memory usage under control for zip files with many entries.
92
-
93
- ### fromFd(fd, [options], [callback])
94
-
95
- Reads from the fd, which is presumed to be an open .zip file.
96
- Note that random access is required by the zip file specification,
97
- so the fd cannot be an open socket or any other fd that does not support random access.
98
-
99
- The `callback` is given the arguments `(err, zipfile)`.
100
- An `err` is provided if the End of Central Directory Record Signature cannot be found in the file,
101
- which indicates that the fd is not a zip file.
102
- `zipfile` is an instance of `ZipFile`.
103
-
104
- `options` may be omitted or `null`. The defaults are `{autoClose: false, lazyEntries: false}`.
105
- See `open()` for the meaning of the options.
106
-
107
- ### fromBuffer(buffer, [options], [callback])
108
-
109
- Like `fromFd()`, but reads from a RAM buffer instead of an open file.
110
- `buffer` is a `Buffer`.
111
- `callback` is effectively passed directly to `fromFd()`.
112
-
113
- If a `ZipFile` is acquired from this method,
114
- it will never emit the `close` event,
115
- and calling `close()` is not necessary.
116
-
117
- `options` may be omitted or `null`. The defaults are `{lazyEntries: false}`.
118
- See `open()` for the meaning of the options.
119
- The `autoClose` option is ignored for this method.
120
-
121
- ### fromRandomAccessReader(reader, totalSize, [options], [callback])
122
-
123
- This method of creating a zip file allows clients to implement their own back-end file system.
124
- For example, a client might translate read calls into network requests.
125
-
126
- The `reader` parameter must be of a type that is a subclass of
127
- [RandomAccessReader](#class-randomaccessreader) that implements the required methods.
128
- The `totalSize` is a Number and indicates the total file size of the zip file.
129
-
130
- `options` may be omitted or `null`. The defaults are `{autoClose: true, lazyEntries: false}`.
131
- See `open()` for the meaning of the options.
132
-
133
- ### dosDateTimeToDate(date, time)
134
-
135
- Converts MS-DOS `date` and `time` data into a JavaScript `Date` object.
136
- Each parameter is a `Number` treated as an unsigned 16-bit integer.
137
- Note that this format does not support timezones,
138
- so the returned object will use the local timezone.
139
-
140
- ### Class: ZipFile
141
-
142
- The constructor for the class is not part of the public API.
143
- Use `open()`, `fromFd()`, `fromBuffer()`, or `fromRandomAccessReader()` instead.
144
-
145
- #### Event: "entry"
146
-
147
- Callback gets `(entry)`, which is an `Entry`.
148
- See `open()` and `readEntry()` for when this event is emitted.
149
-
150
- #### Event: "end"
151
-
152
- Emitted after the last `entry` event has been emitted.
153
- See `open()` and `readEntry()` for more info on when this event is emitted.
154
-
155
- #### Event: "close"
156
-
157
- Emitted after the fd is actually closed.
158
- This is after calling `close()` (or after the `end` event when `autoClose` is `true`),
159
- and after all stream pipelines created from `openReadStream()` have finished reading data from the fd.
160
-
161
- If this `ZipFile` was acquired from `fromRandomAccessReader()`,
162
- the "fd" in the previous paragraph refers to the `RandomAccessReader` implemented by the client.
163
-
164
- If this `ZipFile` was acquired from `fromBuffer()`, this event is never emitted.
165
-
166
- #### Event: "error"
167
-
168
- Emitted in the case of errors with reading the zip file.
169
- (Note that other errors can be emitted from the streams created from `openReadStream()` as well.)
170
- After this event has been emitted, no further `entry`, `end`, or `error` events will be emitted,
171
- but the `close` event may still be emitted.
172
-
173
- #### readEntry()
174
-
175
- Causes this `ZipFile` to emit an `entry` or `end` event (or an `error` event).
176
- This method must only be called when this `ZipFile` was created with the `lazyEntries` option set to `true` (see `open()`).
177
- When this `ZipFile` was created with the `lazyEntries` option set to `true`,
178
- `entry` and `end` events are only ever emitted in response to this method call.
179
-
180
- The event that is emitted in response to this method will not be emitted until after this method has returned,
181
- so it is safe to call this method before attaching event listeners.
182
-
183
- After calling this method, calling this method again before the response event has been emitted will cause undefined behavior.
184
- Calling this method after the `end` event has been emitted will cause undefined behavior.
185
- Calling this method after calling `close()` will cause undefined behavior.
186
-
187
- #### openReadStream(entry, callback)
188
-
189
- `entry` must be an `Entry` object from this `ZipFile`.
190
- `callback` gets `(err, readStream)`, where `readStream` is a `Readable Stream`.
191
- If the entry is compressed (with a supported compression method),
192
- the read stream provides the decompressed data.
193
- If this zipfile is already closed (see `close()`), the `callback` will receive an `err`.
194
-
195
- It's possible for the `readStream` it to emit errors for several reasons.
196
- For example, if zlib cannot decompress the data, the zlib error will be emitted from the `readStream`.
197
- Two more error cases are if the decompressed data has too many or too few actual bytes
198
- compared to the reported byte count from the entry's `uncompressedSize` field.
199
- yauzl notices this false information and emits an error from the `readStream`
200
- after some number of bytes have already been piped through the stream.
201
-
202
- Because of this check, clients can always trust the `uncompressedSize` field in `Entry` objects.
203
- Guarding against [zip bomb](http://en.wikipedia.org/wiki/Zip_bomb) attacks can be accomplished by
204
- doing some heuristic checks on the size metadata and then watching out for the above errors.
205
- Such heuristics are outside the scope of this library,
206
- but enforcing the `uncompressedSize` is implemented here as a security feature.
207
-
208
- It is possible to destroy the `readStream` before it has piped all of its data.
209
- To do this, call `readStream.destroy()`.
210
- You must `unpipe()` the `readStream` from any destination before calling `readStream.destroy()`.
211
- If this zipfile was created using `fromRandomAccessReader()`, the `RandomAccessReader` implementation
212
- must provide readable streams that implement a `.destroy()` method (see `randomAccessReader._readStreamForRange()`)
213
- in order for calls to `readStream.destroy()` to work in this context.
214
-
215
- #### close()
216
-
217
- Causes all future calls to `openReadStream()` to fail,
218
- and closes the fd after all streams created by `openReadStream()` have emitted their `end` events.
219
-
220
- If the `autoClose` option is set to `true` (see `open()`),
221
- this function will be called automatically effectively in response to this object's `end` event.
222
-
223
- If the `lazyEntries` option is set to `false` (see `open()`) and this object's `end` event has not been emitted yet,
224
- this function causes undefined behavior.
225
- If the `lazyEntries` option is set to `true`,
226
- you can call this function instead of calling `readEntry()` to abort reading the entries of a zipfile.
227
-
228
- It is safe to call this function multiple times; after the first call, successive calls have no effect.
229
- This includes situations where the `autoClose` option effectively calls this function for you.
230
-
231
- #### isOpen
232
-
233
- `Boolean`. `true` until `close()` is called; then it's `false`.
234
-
235
- #### entryCount
236
-
237
- `Number`. Total number of central directory records.
238
-
239
- #### comment
240
-
241
- `String`. Always decoded with `CP437` per the spec.
242
-
243
- ### Class: Entry
244
-
245
- Objects of this class represent Central Directory Records.
246
- Refer to the zipfile specification for more details about these fields.
247
-
248
- These fields are of type `Number`:
249
-
250
- * `versionMadeBy`
251
- * `versionNeededToExtract`
252
- * `generalPurposeBitFlag`
253
- * `compressionMethod`
254
- * `lastModFileTime` (MS-DOS format, see `getLastModDateTime`)
255
- * `lastModFileDate` (MS-DOS format, see `getLastModDateTime`)
256
- * `crc32`
257
- * `compressedSize`
258
- * `uncompressedSize`
259
- * `fileNameLength` (bytes)
260
- * `extraFieldLength` (bytes)
261
- * `fileCommentLength` (bytes)
262
- * `internalFileAttributes`
263
- * `externalFileAttributes`
264
- * `relativeOffsetOfLocalHeader`
265
-
266
- #### fileName
267
-
268
- `String`.
269
- Following the spec, the bytes for the file name are decoded with
270
- `UTF-8` if `generalPurposeBitFlag & 0x800`, otherwise with `CP437`.
271
-
272
- If `fileName` would contain unsafe characters, such as an absolute path or
273
- a relative directory, yauzl emits an error instead of an entry.
274
-
275
- #### extraFields
276
-
277
- `Array` with each entry in the form `{id: id, data: data}`,
278
- where `id` is a `Number` and `data` is a `Buffer`.
279
- This library looks for and reads the ZIP64 Extended Information Extra Field (0x0001)
280
- in order to support ZIP64 format zip files.
281
- None of the other fields are considered significant by this library.
282
-
283
- #### comment
284
-
285
- `String` decoded with the same charset as used for `fileName`.
286
-
287
- #### getLastModDate()
288
-
289
- Effectively implemented as:
290
-
291
- ```js
292
- return dosDateTimeToDate(this.lastModFileDate, this.lastModFileTime);
293
- ```
294
-
295
- ### Class: RandomAccessReader
296
-
297
- This class is meant to be subclassed by clients and instantiated for the `fromRandomAccessReader()` function.
298
-
299
- An example implementation can be found in `test/test.js`.
300
-
301
- #### randomAccessReader._readStreamForRange(start, end)
302
-
303
- Subclasses *must* implement this method.
304
-
305
- `start` and `end` are Numbers and indicate byte offsets from the start of the file.
306
- `end` is exclusive, so `_readStreamForRange(0x1000, 0x2000)` would indicate to read `0x1000` bytes.
307
- `end - start` will always be at least `1`.
308
-
309
- This method should return a readable stream which will be `pipe()`ed into another stream.
310
- It is expected that the readable stream will provide data in several chunks if necessary.
311
- If the readable stream provides too many or too few bytes, an error will be emitted.
312
- Any errors emitted on the readable stream will be handled and re-emitted on the client-visible stream
313
- (returned from `zipfile.openReadStream()`) or provided as the `err` argument to the appropriate callback
314
- (for example, for `fromRandomAccessReader()`).
315
-
316
- The returned stream *must* implement a method `.destroy()`
317
- if you call `readStream.destroy()` on streams you get from `openReadStream()`.
318
- If you never call `readStream.destroy()`, then streams returned from this method do not need to implement a method `.destroy()`.
319
- `.destroy()` should abort any streaming that is in progress and clean up any associated resources.
320
- `.destroy()` will only be called after the stream has been `unpipe()`d from its destination.
321
-
322
- Note that the stream returned from this method might not be the same object that is provided by `openReadStream()`.
323
- The stream returned from this method might be `pipe()`d through one or more filter streams (for example, a zlib inflate stream).
324
-
325
- #### randomAccessReader.read(buffer, offset, length, position, callback)
326
-
327
- Subclasses may implement this method.
328
- The default implementation uses `createReadStream()` to fill the `buffer`.
329
-
330
- This method should behave like `fs.read()`.
331
-
332
- #### randomAccessReader.close(callback)
333
-
334
- Subclasses may implement this method.
335
- The default implementation is effectively `setImmediate(callback);`.
336
-
337
- `callback` takes parameters `(err)`.
338
-
339
- This method is called once the all streams returned from `_readStreamForRange()` have ended,
340
- and no more `_readStreamForRange()` or `read()` requests will be issued to this object.
341
-
342
- ## How to Avoid Crashing
343
-
344
- When a malformed zipfile is encountered, the default behavior is to crash (throw an exception).
345
- If you want to handle errors more gracefully than this,
346
- be sure to do the following:
347
-
348
- * Provide `callback` parameters where they are allowed, and check the `err` parameter.
349
- * Attach a listener for the `error` event on any `ZipFile` object you get from `open()`, `fromFd()`, `fromBuffer()`, or `fromRandomAccessReader()`.
350
- * Attach a listener for the `error` event on any stream you get from `openReadStream()`.
351
-
352
- ## Limitations
353
-
354
- ### No Streaming Unzip API
355
-
356
- Due to the design of the .zip file format, it's impossible to interpret a .zip file from start to finish
357
- (such as from a readable stream) without sacrificing correctness.
358
- 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.
359
- A streaming API would need to either buffer the entire .zip file to get to the Central Directory before interpreting anything
360
- (defeating the purpose of a streaming interface), or rely on the Local File Headers which are interspersed through the .zip file.
361
- However, the Local File Headers are explicitly denounced in the spec as being unreliable copies of the Central Directory,
362
- so trusting them would be a violation of the spec.
363
-
364
- Any library that offers a streaming unzip API must make one of the above two compromises,
365
- which makes the library either dishonest or nonconformant (usually the latter).
366
- This library insists on correctness and adherence to the spec, and so does not offer a streaming API.
367
-
368
- ### Limitted ZIP64 Support
369
-
370
- For ZIP64, only zip files smaller than `8PiB` are supported,
371
- not the full `16EiB` range that a 64-bit integer should be able to index.
372
- This is due to the JavaScript Number type being an IEEE 754 double precision float.
373
-
374
- The Node.js `fs` module probably has this same limitation.
375
-
376
- ### ZIP64 Extensible Data Sector Is Ignored
377
-
378
- The spec does not allow zip file creators to put arbitrary data here,
379
- but rather reserves its use for PKWARE and mentions something about Z390.
380
- This doesn't seem useful to expose in this library, so it is ignored.
381
-
382
- ### No Multi-Disk Archive Support
383
-
384
- This library does not support multi-disk zip files.
385
- The multi-disk fields in the zipfile spec were intended for a zip file to span multiple floppy disks,
386
- which probably never happens now.
387
- If the "number of this disk" field in the End of Central Directory Record is not `0`,
388
- the `open()`, `fromFd()`, `fromBuffer()`, or `fromRandomAccessReader()` `callback` will receive an `err`.
389
- By extension the following zip file fields are ignored by this library and not provided to clients:
390
-
391
- * Disk where central directory starts
392
- * Number of central directory records on this disk
393
- * Disk number where file starts
394
-
395
- ### No Encryption Support
396
-
397
- Currently, the presence of encryption is not even checked,
398
- and encrypted zip files will cause undefined behavior.
399
-
400
- ### Local File Headers Are Ignored
401
-
402
- Many unzip libraries mistakenly read the Local File Header data in zip files.
403
- This data is officially defined to be redundant with the Central Directory information,
404
- and is not to be trusted.
405
- Aside from checking the signature, yauzl ignores the content of the Local File Header.
406
-
407
- ### No CRC-32 Checking
408
-
409
- This library provides the `crc32` field of `Entry` objects read from the Central Directory.
410
- However, this field is not used for anything in this library.
411
-
412
- ### versionNeededToExtract Is Ignored
413
-
414
- The field `versionNeededToExtract` is ignored,
415
- because this library doesn't support the complete zip file spec at any version,
416
-
417
- ### No Support For Obscure Compression Methods
418
-
419
- Regarding the `compressionMethod` field of `Entry` objects,
420
- only method `0` (stored with no compression)
421
- and method `8` (deflated) are supported.
422
- Any of the other 15 official methods will cause the `openReadStream()` `callback` to receive an `err`.
423
-
424
- ### Data Descriptors Are Ignored
425
-
426
- There may or may not be Data Descriptor sections in a zip file.
427
- This library provides no support for finding or interpreting them.
428
-
429
- ### Archive Extra Data Record Is Ignored
430
-
431
- There may or may not be an Archive Extra Data Record section in a zip file.
432
- This library provides no support for finding or interpreting it.
433
-
434
- ### No Language Encoding Flag Support
435
-
436
- Zip files officially support charset encodings other than CP437 and UTF-8,
437
- but the zip file spec does not specify how it works.
438
- This library makes no attempt to interpret the Language Encoding Flag.
439
-
440
- ## Change History
441
-
442
- * 2.4.1
443
- * Fix error handling.
444
- * 2.4.0
445
- * Add ZIP64 support. [issue #6](https://github.com/thejoshwolfe/yazl/issues/6)
446
- * Add `lazyEntries` option. [issue #22](https://github.com/thejoshwolfe/yazl/issues/22)
447
- * Add `readStream.destroy()` method. [issue #26](https://github.com/thejoshwolfe/yazl/issues/26)
448
- * Add `fromRandomAccessReader()`. [issue #14](https://github.com/thejoshwolfe/yazl/issues/14)
449
- * Add `examples/unzip.js`.
450
- * 2.3.1
451
- * Documentation updates.
452
- * 2.3.0
453
- * Check that `uncompressedSize` is correct, or else emit an error. [issue #13](https://github.com/thejoshwolfe/yazl/issues/13)
454
- * 2.2.1
455
- * Update dependencies.
456
- * 2.2.0
457
- * Update dependencies.
458
- * 2.1.0
459
- * Remove dependency on `iconv`.
460
- * 2.0.3
461
- * Fix crash when trying to read a 0-byte file.
462
- * 2.0.2
463
- * Fix event behavior after errors.
464
- * 2.0.1
465
- * Fix bug with using `iconv`.
466
- * 2.0.0
467
- * Initial release.