postdoc 0.2.0.beta4 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
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,163 +0,0 @@
1
- /**
2
- * Copyright 2017 Google Inc. All rights reserved.
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
-
17
- const {helper} = require('./helper');
18
- const {FrameManager} = require('./FrameManager');
19
-
20
- class NavigatorWatcher {
21
- /**
22
- * @param {!FrameManager} frameManager
23
- * @param {!Puppeteer.Frame} frame
24
- * @param {number} timeout
25
- * @param {!Object=} options
26
- */
27
- constructor(frameManager, frame, timeout, options = {}) {
28
- console.assert(options.networkIdleTimeout === undefined, 'ERROR: networkIdleTimeout option is no longer supported.');
29
- console.assert(options.networkIdleInflight === undefined, 'ERROR: networkIdleInflight option is no longer supported.');
30
- console.assert(options.waitUntil !== 'networkidle', 'ERROR: "networkidle" option is no longer supported. Use "networkidle2" instead');
31
- let waitUntil = ['load'];
32
- if (Array.isArray(options.waitUntil))
33
- waitUntil = options.waitUntil.slice();
34
- else if (typeof options.waitUntil === 'string')
35
- waitUntil = [options.waitUntil];
36
- this._expectedLifecycle = waitUntil.map(value => {
37
- const protocolEvent = puppeteerToProtocolLifecycle[value];
38
- console.assert(protocolEvent, 'Unknown value for options.waitUntil: ' + value);
39
- return protocolEvent;
40
- });
41
-
42
- this._frameManager = frameManager;
43
- this._frame = frame;
44
- this._initialLoaderId = frame._loaderId;
45
- this._timeout = timeout;
46
- this._hasSameDocumentNavigation = false;
47
- this._eventListeners = [
48
- helper.addEventListener(this._frameManager, FrameManager.Events.LifecycleEvent, this._checkLifecycleComplete.bind(this)),
49
- helper.addEventListener(this._frameManager, FrameManager.Events.FrameNavigatedWithinDocument, this._navigatedWithinDocument.bind(this)),
50
- helper.addEventListener(this._frameManager, FrameManager.Events.FrameDetached, this._checkLifecycleComplete.bind(this))
51
- ];
52
-
53
- const lifecycleCompletePromise = new Promise(fulfill => {
54
- this._lifecycleCompleteCallback = fulfill;
55
- });
56
- this._navigationPromise = Promise.race([
57
- this._createTimeoutPromise(),
58
- lifecycleCompletePromise
59
- ]).then(error => {
60
- this._cleanup();
61
- return error;
62
- });
63
- }
64
-
65
- /**
66
- * @return {!Promise<?Error>}
67
- */
68
- _createTimeoutPromise() {
69
- if (!this._timeout)
70
- return new Promise(() => {});
71
- const errorMessage = 'Navigation Timeout Exceeded: ' + this._timeout + 'ms exceeded';
72
- return new Promise(fulfill => this._maximumTimer = setTimeout(fulfill, this._timeout))
73
- .then(() => new Error(errorMessage));
74
- }
75
-
76
- /**
77
- * @return {!Promise<?Error>}
78
- */
79
- /* async */ navigationPromise() {return (fn => {
80
- const gen = fn.call(this);
81
- return new Promise((resolve, reject) => {
82
- function step(key, arg) {
83
- let info, value;
84
- try {
85
- info = gen[key](arg);
86
- value = info.value;
87
- } catch (error) {
88
- reject(error);
89
- return;
90
- }
91
- if (info.done) {
92
- resolve(value);
93
- } else {
94
- return Promise.resolve(value).then(
95
- value => {
96
- step('next', value);
97
- },
98
- err => {
99
- step('throw', err);
100
- });
101
- }
102
- }
103
- return step('next');
104
- });
105
- })(function*(){
106
- return this._navigationPromise;
107
- });}
108
-
109
- /**
110
- * @param {!Puppeteer.Frame} frame
111
- */
112
- _navigatedWithinDocument(frame) {
113
- if (frame !== this._frame)
114
- return;
115
- this._hasSameDocumentNavigation = true;
116
- this._checkLifecycleComplete();
117
- }
118
-
119
- _checkLifecycleComplete() {
120
- // We expect navigation to commit.
121
- if (this._frame._loaderId === this._initialLoaderId && !this._hasSameDocumentNavigation)
122
- return;
123
- if (!checkLifecycle(this._frame, this._expectedLifecycle))
124
- return;
125
- this._lifecycleCompleteCallback();
126
-
127
- /**
128
- * @param {!Puppeteer.Frame} frame
129
- * @param {!Array<string>} expectedLifecycle
130
- * @return {boolean}
131
- */
132
- function checkLifecycle(frame, expectedLifecycle) {
133
- for (const event of expectedLifecycle) {
134
- if (!frame._lifecycleEvents.has(event))
135
- return false;
136
- }
137
- for (const child of frame.childFrames()) {
138
- if (!checkLifecycle(child, expectedLifecycle))
139
- return false;
140
- }
141
- return true;
142
- }
143
- }
144
-
145
- cancel() {
146
- this._cleanup();
147
- }
148
-
149
- _cleanup() {
150
- helper.removeEventListeners(this._eventListeners);
151
- this._lifecycleCompleteCallback(new Error('Navigation failed'));
152
- clearTimeout(this._maximumTimer);
153
- }
154
- }
155
-
156
- const puppeteerToProtocolLifecycle = {
157
- 'load': 'load',
158
- 'domcontentloaded': 'DOMContentLoaded',
159
- 'networkidle0': 'networkIdle',
160
- 'networkidle2': 'networkAlmostIdle',
161
- };
162
-
163
- module.exports = NavigatorWatcher;
@@ -1,1108 +0,0 @@
1
- /**
2
- * Copyright 2017 Google Inc. All rights reserved.
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- const EventEmitter = require('events');
17
- const {helper, debugError} = require('./helper');
18
- const Multimap = require('./Multimap');
19
-
20
- class NetworkManager extends EventEmitter {
21
- /**
22
- * @param {!Puppeteer.CDPSession} client
23
- * @param {!Puppeteer.FrameManager} frameManager
24
- */
25
- constructor(client, frameManager) {
26
- super();
27
- this._client = client;
28
- this._frameManager = frameManager;
29
- /** @type {!Map<string, !Request>} */
30
- this._requestIdToRequest = new Map();
31
- /** @type {!Map<string, !Request>} */
32
- this._interceptionIdToRequest = new Map();
33
- /** @type {!Object<string, string>} */
34
- this._extraHTTPHeaders = {};
35
-
36
- this._offline = false;
37
-
38
- /** @type {?{username: string, password: string}} */
39
- this._credentials = null;
40
- /** @type {!Set<string>} */
41
- this._attemptedAuthentications = new Set();
42
- this._userRequestInterceptionEnabled = false;
43
- this._protocolRequestInterceptionEnabled = false;
44
- /** @type {!Multimap} */
45
- this._requestHashToRequestIds = new Multimap();
46
- /** @type {!Multimap} */
47
- this._requestHashToInterceptionIds = new Multimap();
48
-
49
- this._client.on('Network.requestWillBeSent', this._onRequestWillBeSent.bind(this));
50
- this._client.on('Network.requestIntercepted', this._onRequestIntercepted.bind(this));
51
- this._client.on('Network.requestServedFromCache', this._onRequestServedFromCache.bind(this));
52
- this._client.on('Network.responseReceived', this._onResponseReceived.bind(this));
53
- this._client.on('Network.loadingFinished', this._onLoadingFinished.bind(this));
54
- this._client.on('Network.loadingFailed', this._onLoadingFailed.bind(this));
55
- }
56
-
57
- /**
58
- * @param {?{username: string, password: string}} credentials
59
- */
60
- /* async */ authenticate(credentials) {return (fn => {
61
- const gen = fn.call(this);
62
- return new Promise((resolve, reject) => {
63
- function step(key, arg) {
64
- let info, value;
65
- try {
66
- info = gen[key](arg);
67
- value = info.value;
68
- } catch (error) {
69
- reject(error);
70
- return;
71
- }
72
- if (info.done) {
73
- resolve(value);
74
- } else {
75
- return Promise.resolve(value).then(
76
- value => {
77
- step('next', value);
78
- },
79
- err => {
80
- step('throw', err);
81
- });
82
- }
83
- }
84
- return step('next');
85
- });
86
- })(function*(){
87
- this._credentials = credentials;
88
- (yield this._updateProtocolRequestInterception());
89
- });}
90
-
91
- /**
92
- * @param {!Object<string, string>} extraHTTPHeaders
93
- */
94
- /* async */ setExtraHTTPHeaders(extraHTTPHeaders) {return (fn => {
95
- const gen = fn.call(this);
96
- return new Promise((resolve, reject) => {
97
- function step(key, arg) {
98
- let info, value;
99
- try {
100
- info = gen[key](arg);
101
- value = info.value;
102
- } catch (error) {
103
- reject(error);
104
- return;
105
- }
106
- if (info.done) {
107
- resolve(value);
108
- } else {
109
- return Promise.resolve(value).then(
110
- value => {
111
- step('next', value);
112
- },
113
- err => {
114
- step('throw', err);
115
- });
116
- }
117
- }
118
- return step('next');
119
- });
120
- })(function*(){
121
- this._extraHTTPHeaders = {};
122
- for (const key of Object.keys(extraHTTPHeaders)) {
123
- const value = extraHTTPHeaders[key];
124
- console.assert(helper.isString(value), `Expected value of header "${key}" to be String, but "${typeof value}" is found.`);
125
- this._extraHTTPHeaders[key.toLowerCase()] = value;
126
- }
127
- (yield this._client.send('Network.setExtraHTTPHeaders', { headers: this._extraHTTPHeaders }));
128
- });}
129
-
130
- /**
131
- * @return {!Object<string, string>}
132
- */
133
- extraHTTPHeaders() {
134
- return Object.assign({}, this._extraHTTPHeaders);
135
- }
136
-
137
- /**
138
- * @param {boolean} value
139
- */
140
- /* async */ setOfflineMode(value) {return (fn => {
141
- const gen = fn.call(this);
142
- return new Promise((resolve, reject) => {
143
- function step(key, arg) {
144
- let info, value;
145
- try {
146
- info = gen[key](arg);
147
- value = info.value;
148
- } catch (error) {
149
- reject(error);
150
- return;
151
- }
152
- if (info.done) {
153
- resolve(value);
154
- } else {
155
- return Promise.resolve(value).then(
156
- value => {
157
- step('next', value);
158
- },
159
- err => {
160
- step('throw', err);
161
- });
162
- }
163
- }
164
- return step('next');
165
- });
166
- })(function*(){
167
- if (this._offline === value)
168
- return;
169
- this._offline = value;
170
- (yield this._client.send('Network.emulateNetworkConditions', {
171
- offline: this._offline,
172
- // values of 0 remove any active throttling. crbug.com/456324#c9
173
- latency: 0,
174
- downloadThroughput: -1,
175
- uploadThroughput: -1
176
- }));
177
- });}
178
-
179
- /**
180
- * @param {string} userAgent
181
- */
182
- /* async */ setUserAgent(userAgent) {return (fn => {
183
- const gen = fn.call(this);
184
- return new Promise((resolve, reject) => {
185
- function step(key, arg) {
186
- let info, value;
187
- try {
188
- info = gen[key](arg);
189
- value = info.value;
190
- } catch (error) {
191
- reject(error);
192
- return;
193
- }
194
- if (info.done) {
195
- resolve(value);
196
- } else {
197
- return Promise.resolve(value).then(
198
- value => {
199
- step('next', value);
200
- },
201
- err => {
202
- step('throw', err);
203
- });
204
- }
205
- }
206
- return step('next');
207
- });
208
- })(function*(){
209
- (yield this._client.send('Network.setUserAgentOverride', { userAgent }));
210
- });}
211
-
212
- /**
213
- * @param {boolean} value
214
- */
215
- /* async */ setRequestInterception(value) {return (fn => {
216
- const gen = fn.call(this);
217
- return new Promise((resolve, reject) => {
218
- function step(key, arg) {
219
- let info, value;
220
- try {
221
- info = gen[key](arg);
222
- value = info.value;
223
- } catch (error) {
224
- reject(error);
225
- return;
226
- }
227
- if (info.done) {
228
- resolve(value);
229
- } else {
230
- return Promise.resolve(value).then(
231
- value => {
232
- step('next', value);
233
- },
234
- err => {
235
- step('throw', err);
236
- });
237
- }
238
- }
239
- return step('next');
240
- });
241
- })(function*(){
242
- this._userRequestInterceptionEnabled = value;
243
- (yield this._updateProtocolRequestInterception());
244
- });}
245
-
246
- /* async */ _updateProtocolRequestInterception() {return (fn => {
247
- const gen = fn.call(this);
248
- return new Promise((resolve, reject) => {
249
- function step(key, arg) {
250
- let info, value;
251
- try {
252
- info = gen[key](arg);
253
- value = info.value;
254
- } catch (error) {
255
- reject(error);
256
- return;
257
- }
258
- if (info.done) {
259
- resolve(value);
260
- } else {
261
- return Promise.resolve(value).then(
262
- value => {
263
- step('next', value);
264
- },
265
- err => {
266
- step('throw', err);
267
- });
268
- }
269
- }
270
- return step('next');
271
- });
272
- })(function*(){
273
- const enabled = this._userRequestInterceptionEnabled || !!this._credentials;
274
- if (enabled === this._protocolRequestInterceptionEnabled)
275
- return;
276
- this._protocolRequestInterceptionEnabled = enabled;
277
- const patterns = enabled ? [{urlPattern: '*'}] : [];
278
- (yield Promise.all([
279
- this._client.send('Network.setCacheDisabled', {cacheDisabled: enabled}),
280
- this._client.send('Network.setRequestInterception', {patterns})
281
- ]));
282
- });}
283
-
284
- /**
285
- * @param {!Protocol.Network.requestInterceptedPayload} event
286
- */
287
- _onRequestIntercepted(event) {
288
- if (event.authChallenge) {
289
- /** @type {"Default"|"CancelAuth"|"ProvideCredentials"} */
290
- let response = 'Default';
291
- if (this._attemptedAuthentications.has(event.interceptionId)) {
292
- response = 'CancelAuth';
293
- } else if (this._credentials) {
294
- response = 'ProvideCredentials';
295
- this._attemptedAuthentications.add(event.interceptionId);
296
- }
297
- const {username, password} = this._credentials || {username: undefined, password: undefined};
298
- this._client.send('Network.continueInterceptedRequest', {
299
- interceptionId: event.interceptionId,
300
- authChallengeResponse: { response, username, password }
301
- }).catch(debugError);
302
- return;
303
- }
304
- if (!this._userRequestInterceptionEnabled && this._protocolRequestInterceptionEnabled) {
305
- this._client.send('Network.continueInterceptedRequest', {
306
- interceptionId: event.interceptionId
307
- }).catch(debugError);
308
- }
309
-
310
- if (event.redirectUrl) {
311
- const request = this._interceptionIdToRequest.get(event.interceptionId);
312
- if (request) {
313
- this._handleRequestRedirect(request, event.responseStatusCode, event.responseHeaders, false /* fromDiskCache */, false /* fromServiceWorker */, null /* securityDetails */);
314
- this._handleRequestStart(request._requestId, event.interceptionId, event.redirectUrl, event.resourceType, event.request, event.frameId, request._redirectChain);
315
- }
316
- return;
317
- }
318
- const requestHash = generateRequestHash(event.request);
319
- const requestId = this._requestHashToRequestIds.firstValue(requestHash);
320
- if (requestId) {
321
- this._requestHashToRequestIds.delete(requestHash, requestId);
322
- this._handleRequestStart(requestId, event.interceptionId, event.request.url, event.resourceType, event.request, event.frameId, []);
323
- } else {
324
- this._requestHashToInterceptionIds.set(requestHash, event.interceptionId);
325
- this._handleRequestStart(null, event.interceptionId, event.request.url, event.resourceType, event.request, event.frameId, []);
326
- }
327
- }
328
-
329
- /**
330
- * @param {!Protocol.Network.requestServedFromCachePayload} event
331
- */
332
- _onRequestServedFromCache(event) {
333
- const request = this._requestIdToRequest.get(event.requestId);
334
- if (request)
335
- request._fromMemoryCache = true;
336
- }
337
-
338
- /**
339
- * @param {!Request} request
340
- * @param {number} redirectStatus
341
- * @param {!Object} redirectHeaders
342
- * @param {boolean} fromDiskCache
343
- * @param {boolean} fromServiceWorker
344
- * @param {?Object} securityDetails
345
- */
346
- _handleRequestRedirect(request, redirectStatus, redirectHeaders, fromDiskCache, fromServiceWorker, securityDetails) {
347
- const response = new Response(this._client, request, redirectStatus, redirectHeaders, fromDiskCache, fromServiceWorker, securityDetails);
348
- request._response = response;
349
- request._redirectChain.push(request);
350
- response._bodyLoadedPromiseFulfill.call(null, new Error('Response body is unavailable for redirect responses'));
351
- this._requestIdToRequest.delete(request._requestId);
352
- this._interceptionIdToRequest.delete(request._interceptionId);
353
- this._attemptedAuthentications.delete(request._interceptionId);
354
- this.emit(NetworkManager.Events.Response, response);
355
- this.emit(NetworkManager.Events.RequestFinished, request);
356
- }
357
-
358
- /**
359
- * @param {?string} requestId
360
- * @param {?string} interceptionId
361
- * @param {string} url
362
- * @param {string} resourceType
363
- * @param {!Protocol.Network.Request} requestPayload
364
- * @param {?string} frameId
365
- * @param {!Array<!Request>} redirectChain
366
- */
367
- _handleRequestStart(requestId, interceptionId, url, resourceType, requestPayload, frameId, redirectChain) {
368
- let frame = null;
369
- if (frameId)
370
- frame = this._frameManager.frame(frameId);
371
- const request = new Request(this._client, requestId, interceptionId, this._userRequestInterceptionEnabled, url, resourceType, requestPayload, frame, redirectChain);
372
- if (requestId)
373
- this._requestIdToRequest.set(requestId, request);
374
- if (interceptionId)
375
- this._interceptionIdToRequest.set(interceptionId, request);
376
- this.emit(NetworkManager.Events.Request, request);
377
- }
378
-
379
- /**
380
- * @param {!Protocol.Network.requestWillBeSentPayload} event
381
- */
382
- _onRequestWillBeSent(event) {
383
- if (this._protocolRequestInterceptionEnabled) {
384
- // All redirects are handled in requestIntercepted.
385
- if (event.redirectResponse)
386
- return;
387
- const requestHash = generateRequestHash(event.request);
388
- const interceptionId = this._requestHashToInterceptionIds.firstValue(requestHash);
389
- const request = interceptionId ? this._interceptionIdToRequest.get(interceptionId) : null;
390
- if (request) {
391
- request._requestId = event.requestId;
392
- this._requestIdToRequest.set(event.requestId, request);
393
- this._requestHashToInterceptionIds.delete(requestHash, interceptionId);
394
- } else {
395
- this._requestHashToRequestIds.set(requestHash, event.requestId);
396
- }
397
- return;
398
- }
399
- let redirectChain = [];
400
- if (event.redirectResponse) {
401
- const request = this._requestIdToRequest.get(event.requestId);
402
- // If we connect late to the target, we could have missed the requestWillBeSent event.
403
- if (request) {
404
- this._handleRequestRedirect(request, event.redirectResponse.status, event.redirectResponse.headers, event.redirectResponse.fromDiskCache, event.redirectResponse.fromServiceWorker, event.redirectResponse.securityDetails);
405
- redirectChain = request._redirectChain;
406
- }
407
- }
408
- this._handleRequestStart(event.requestId, null, event.request.url, event.type, event.request, event.frameId, redirectChain);
409
- }
410
-
411
- /**
412
- * @param {!Protocol.Network.responseReceivedPayload} event
413
- */
414
- _onResponseReceived(event) {
415
- const request = this._requestIdToRequest.get(event.requestId);
416
- // FileUpload sends a response without a matching request.
417
- if (!request)
418
- return;
419
- const response = new Response(this._client, request, event.response.status, event.response.headers,
420
- event.response.fromDiskCache, event.response.fromServiceWorker, event.response.securityDetails);
421
- request._response = response;
422
- this.emit(NetworkManager.Events.Response, response);
423
- }
424
-
425
- /**
426
- * @param {!Protocol.Network.loadingFinishedPayload} event
427
- */
428
- _onLoadingFinished(event) {
429
- const request = this._requestIdToRequest.get(event.requestId);
430
- // For certain requestIds we never receive requestWillBeSent event.
431
- // @see https://crbug.com/750469
432
- if (!request)
433
- return;
434
- request.response()._bodyLoadedPromiseFulfill.call(null);
435
- this._requestIdToRequest.delete(request._requestId);
436
- this._interceptionIdToRequest.delete(request._interceptionId);
437
- this._attemptedAuthentications.delete(request._interceptionId);
438
- this.emit(NetworkManager.Events.RequestFinished, request);
439
- }
440
-
441
- /**
442
- * @param {!Protocol.Network.loadingFailedPayload} event
443
- */
444
- _onLoadingFailed(event) {
445
- const request = this._requestIdToRequest.get(event.requestId);
446
- // For certain requestIds we never receive requestWillBeSent event.
447
- // @see https://crbug.com/750469
448
- if (!request)
449
- return;
450
- request._failureText = event.errorText;
451
- const response = request.response();
452
- if (response)
453
- response._bodyLoadedPromiseFulfill.call(null);
454
- this._requestIdToRequest.delete(request._requestId);
455
- this._interceptionIdToRequest.delete(request._interceptionId);
456
- this._attemptedAuthentications.delete(request._interceptionId);
457
- this.emit(NetworkManager.Events.RequestFailed, request);
458
- }
459
- }
460
-
461
- class Request {
462
- /**
463
- * @param {!Puppeteer.CDPSession} client
464
- * @param {?string} requestId
465
- * @param {string} interceptionId
466
- * @param {boolean} allowInterception
467
- * @param {string} url
468
- * @param {string} resourceType
469
- * @param {!Protocol.Network.Request} payload
470
- * @param {?Puppeteer.Frame} frame
471
- * @param {!Array<!Request>} redirectChain
472
- */
473
- constructor(client, requestId, interceptionId, allowInterception, url, resourceType, payload, frame, redirectChain) {
474
- this._client = client;
475
- this._requestId = requestId;
476
- this._interceptionId = interceptionId;
477
- this._allowInterception = allowInterception;
478
- this._interceptionHandled = false;
479
- this._response = null;
480
- this._failureText = null;
481
-
482
- this._url = url;
483
- this._resourceType = resourceType.toLowerCase();
484
- this._method = payload.method;
485
- this._postData = payload.postData;
486
- this._headers = {};
487
- this._frame = frame;
488
- this._redirectChain = redirectChain;
489
- for (const key of Object.keys(payload.headers))
490
- this._headers[key.toLowerCase()] = payload.headers[key];
491
-
492
- this._fromMemoryCache = false;
493
- }
494
-
495
- /**
496
- * @return {string}
497
- */
498
- url() {
499
- return this._url;
500
- }
501
-
502
- /**
503
- * @return {string}
504
- */
505
- resourceType() {
506
- return this._resourceType;
507
- }
508
-
509
- /**
510
- * @return {string}
511
- */
512
- method() {
513
- return this._method;
514
- }
515
-
516
- /**
517
- * @return {string}
518
- */
519
- postData() {
520
- return this._postData;
521
- }
522
-
523
- /**
524
- * @return {!Object}
525
- */
526
- headers() {
527
- return this._headers;
528
- }
529
-
530
- /**
531
- * @return {?Response}
532
- */
533
- response() {
534
- return this._response;
535
- }
536
-
537
- /**
538
- * @return {?Puppeteer.Frame}
539
- */
540
- frame() {
541
- return this._frame;
542
- }
543
-
544
- /**
545
- * @return {!Array<!Request>}
546
- */
547
- redirectChain() {
548
- return this._redirectChain.slice();
549
- }
550
-
551
- /**
552
- * @return {?{errorText: string}}
553
- */
554
- failure() {
555
- if (!this._failureText)
556
- return null;
557
- return {
558
- errorText: this._failureText
559
- };
560
- }
561
-
562
- /**
563
- * @param {!Object=} overrides
564
- */
565
- /* async */ continue(overrides = {}) {return (fn => {
566
- const gen = fn.call(this);
567
- return new Promise((resolve, reject) => {
568
- function step(key, arg) {
569
- let info, value;
570
- try {
571
- info = gen[key](arg);
572
- value = info.value;
573
- } catch (error) {
574
- reject(error);
575
- return;
576
- }
577
- if (info.done) {
578
- resolve(value);
579
- } else {
580
- return Promise.resolve(value).then(
581
- value => {
582
- step('next', value);
583
- },
584
- err => {
585
- step('throw', err);
586
- });
587
- }
588
- }
589
- return step('next');
590
- });
591
- })(function*(){
592
- console.assert(this._allowInterception, 'Request Interception is not enabled!');
593
- console.assert(!this._interceptionHandled, 'Request is already handled!');
594
- this._interceptionHandled = true;
595
- (yield this._client.send('Network.continueInterceptedRequest', {
596
- interceptionId: this._interceptionId,
597
- url: overrides.url,
598
- method: overrides.method,
599
- postData: overrides.postData,
600
- headers: overrides.headers,
601
- }).catch(error => {
602
- // In certain cases, protocol will return error if the request was already canceled
603
- // or the page was closed. We should tolerate these errors.
604
- debugError(error);
605
- }));
606
- });}
607
-
608
- /**
609
- * @param {!{status: number, headers: Object, contentType: string, body: (string|Buffer)}} response
610
- */
611
- /* async */ respond(response) {return (fn => {
612
- const gen = fn.call(this);
613
- return new Promise((resolve, reject) => {
614
- function step(key, arg) {
615
- let info, value;
616
- try {
617
- info = gen[key](arg);
618
- value = info.value;
619
- } catch (error) {
620
- reject(error);
621
- return;
622
- }
623
- if (info.done) {
624
- resolve(value);
625
- } else {
626
- return Promise.resolve(value).then(
627
- value => {
628
- step('next', value);
629
- },
630
- err => {
631
- step('throw', err);
632
- });
633
- }
634
- }
635
- return step('next');
636
- });
637
- })(function*(){
638
- // Mocking responses for dataURL requests is not currently supported.
639
- if (this._url.startsWith('data:'))
640
- return;
641
- console.assert(this._allowInterception, 'Request Interception is not enabled!');
642
- console.assert(!this._interceptionHandled, 'Request is already handled!');
643
- this._interceptionHandled = true;
644
-
645
- const responseBody = response.body && helper.isString(response.body) ? Buffer.from(/** @type {string} */(response.body)) : /** @type {?Buffer} */(response.body || null);
646
-
647
- const responseHeaders = {};
648
- if (response.headers) {
649
- for (const header of Object.keys(response.headers))
650
- responseHeaders[header.toLowerCase()] = response.headers[header];
651
- }
652
- if (response.contentType)
653
- responseHeaders['content-type'] = response.contentType;
654
- if (responseBody && !('content-length' in responseHeaders)) {
655
- // @ts-ignore
656
- responseHeaders['content-length'] = Buffer.byteLength(responseBody);
657
- }
658
-
659
- const statusCode = response.status || 200;
660
- const statusText = statusTexts[statusCode] || '';
661
- const statusLine = `HTTP/1.1 ${statusCode} ${statusText}`;
662
-
663
- const CRLF = '\r\n';
664
- let text = statusLine + CRLF;
665
- for (const header of Object.keys(responseHeaders))
666
- text += header + ': ' + responseHeaders[header] + CRLF;
667
- text += CRLF;
668
- let responseBuffer = Buffer.from(text, 'utf8');
669
- if (responseBody)
670
- responseBuffer = Buffer.concat([responseBuffer, responseBody]);
671
-
672
- (yield this._client.send('Network.continueInterceptedRequest', {
673
- interceptionId: this._interceptionId,
674
- rawResponse: responseBuffer.toString('base64')
675
- }).catch(error => {
676
- // In certain cases, protocol will return error if the request was already canceled
677
- // or the page was closed. We should tolerate these errors.
678
- debugError(error);
679
- }));
680
- });}
681
-
682
- /**
683
- * @param {string=} errorCode
684
- */
685
- /* async */ abort(errorCode = 'failed') {return (fn => {
686
- const gen = fn.call(this);
687
- return new Promise((resolve, reject) => {
688
- function step(key, arg) {
689
- let info, value;
690
- try {
691
- info = gen[key](arg);
692
- value = info.value;
693
- } catch (error) {
694
- reject(error);
695
- return;
696
- }
697
- if (info.done) {
698
- resolve(value);
699
- } else {
700
- return Promise.resolve(value).then(
701
- value => {
702
- step('next', value);
703
- },
704
- err => {
705
- step('throw', err);
706
- });
707
- }
708
- }
709
- return step('next');
710
- });
711
- })(function*(){
712
- const errorReason = errorReasons[errorCode];
713
- console.assert(errorReason, 'Unknown error code: ' + errorCode);
714
- console.assert(this._allowInterception, 'Request Interception is not enabled!');
715
- console.assert(!this._interceptionHandled, 'Request is already handled!');
716
- this._interceptionHandled = true;
717
- (yield this._client.send('Network.continueInterceptedRequest', {
718
- interceptionId: this._interceptionId,
719
- errorReason
720
- }).catch(error => {
721
- // In certain cases, protocol will return error if the request was already canceled
722
- // or the page was closed. We should tolerate these errors.
723
- debugError(error);
724
- }));
725
- });}
726
- }
727
-
728
- const errorReasons = {
729
- 'aborted': 'Aborted',
730
- 'accessdenied': 'AccessDenied',
731
- 'addressunreachable': 'AddressUnreachable',
732
- 'connectionaborted': 'ConnectionAborted',
733
- 'connectionclosed': 'ConnectionClosed',
734
- 'connectionfailed': 'ConnectionFailed',
735
- 'connectionrefused': 'ConnectionRefused',
736
- 'connectionreset': 'ConnectionReset',
737
- 'internetdisconnected': 'InternetDisconnected',
738
- 'namenotresolved': 'NameNotResolved',
739
- 'timedout': 'TimedOut',
740
- 'failed': 'Failed',
741
- };
742
-
743
- helper.tracePublicAPI(Request);
744
-
745
- class Response {
746
- /**
747
- * @param {!Puppeteer.CDPSession} client
748
- * @param {!Request} request
749
- * @param {number} status
750
- * @param {!Object} headers
751
- * @param {boolean} fromDiskCache
752
- * @param {boolean} fromServiceWorker
753
- * @param {?Object} securityDetails
754
- */
755
- constructor(client, request, status, headers, fromDiskCache, fromServiceWorker, securityDetails) {
756
- this._client = client;
757
- this._request = request;
758
- this._contentPromise = null;
759
-
760
- this._bodyLoadedPromise = new Promise(fulfill => {
761
- this._bodyLoadedPromiseFulfill = fulfill;
762
- });
763
-
764
- this._status = status;
765
- this._url = request.url();
766
- this._fromDiskCache = fromDiskCache;
767
- this._fromServiceWorker = fromServiceWorker;
768
- this._headers = {};
769
- for (const key of Object.keys(headers))
770
- this._headers[key.toLowerCase()] = headers[key];
771
- this._securityDetails = null;
772
- if (securityDetails) {
773
- this._securityDetails = new SecurityDetails(
774
- securityDetails['subjectName'],
775
- securityDetails['issuer'],
776
- securityDetails['validFrom'],
777
- securityDetails['validTo'],
778
- securityDetails['protocol']);
779
- }
780
- }
781
-
782
- /**
783
- * @return {string}
784
- */
785
- url() {
786
- return this._url;
787
- }
788
-
789
- /**
790
- * @return {boolean}
791
- */
792
- ok() {
793
- return this._status === 0 || (this._status >= 200 && this._status <= 299);
794
- }
795
-
796
- /**
797
- * @return {number}
798
- */
799
- status() {
800
- return this._status;
801
- }
802
-
803
- /**
804
- * @return {!Object}
805
- */
806
- headers() {
807
- return this._headers;
808
- }
809
-
810
- /**
811
- * @return {?SecurityDetails}
812
- */
813
- securityDetails() {
814
- return this._securityDetails;
815
- }
816
-
817
- /**
818
- * @return {!Promise<!Buffer>}
819
- */
820
- buffer() {
821
- if (!this._contentPromise) {
822
- this._contentPromise = this._bodyLoadedPromise.then(/* async */ error => {return (fn => {
823
- const gen = fn.call(this);
824
- return new Promise((resolve, reject) => {
825
- function step(key, arg) {
826
- let info, value;
827
- try {
828
- info = gen[key](arg);
829
- value = info.value;
830
- } catch (error) {
831
- reject(error);
832
- return;
833
- }
834
- if (info.done) {
835
- resolve(value);
836
- } else {
837
- return Promise.resolve(value).then(
838
- value => {
839
- step('next', value);
840
- },
841
- err => {
842
- step('throw', err);
843
- });
844
- }
845
- }
846
- return step('next');
847
- });
848
- })(function*(){
849
- if (error)
850
- throw error;
851
- const response = (yield this._client.send('Network.getResponseBody', {
852
- requestId: this._request._requestId
853
- }));
854
- return Buffer.from(response.body, response.base64Encoded ? 'base64' : 'utf8');
855
- });});
856
- }
857
- return this._contentPromise;
858
- }
859
-
860
- /**
861
- * @return {!Promise<string>}
862
- */
863
- /* async */ text() {return (fn => {
864
- const gen = fn.call(this);
865
- return new Promise((resolve, reject) => {
866
- function step(key, arg) {
867
- let info, value;
868
- try {
869
- info = gen[key](arg);
870
- value = info.value;
871
- } catch (error) {
872
- reject(error);
873
- return;
874
- }
875
- if (info.done) {
876
- resolve(value);
877
- } else {
878
- return Promise.resolve(value).then(
879
- value => {
880
- step('next', value);
881
- },
882
- err => {
883
- step('throw', err);
884
- });
885
- }
886
- }
887
- return step('next');
888
- });
889
- })(function*(){
890
- const content = (yield this.buffer());
891
- return content.toString('utf8');
892
- });}
893
-
894
- /**
895
- * @return {!Promise<!Object>}
896
- */
897
- /* async */ json() {return (fn => {
898
- const gen = fn.call(this);
899
- return new Promise((resolve, reject) => {
900
- function step(key, arg) {
901
- let info, value;
902
- try {
903
- info = gen[key](arg);
904
- value = info.value;
905
- } catch (error) {
906
- reject(error);
907
- return;
908
- }
909
- if (info.done) {
910
- resolve(value);
911
- } else {
912
- return Promise.resolve(value).then(
913
- value => {
914
- step('next', value);
915
- },
916
- err => {
917
- step('throw', err);
918
- });
919
- }
920
- }
921
- return step('next');
922
- });
923
- })(function*(){
924
- const content = (yield this.text());
925
- return JSON.parse(content);
926
- });}
927
-
928
- /**
929
- * @return {!Request}
930
- */
931
- request() {
932
- return this._request;
933
- }
934
-
935
- /**
936
- * @return {boolean}
937
- */
938
- fromCache() {
939
- return this._fromDiskCache || this._request._fromMemoryCache;
940
- }
941
-
942
- /**
943
- * @return {boolean}
944
- */
945
- fromServiceWorker() {
946
- return this._fromServiceWorker;
947
- }
948
- }
949
- helper.tracePublicAPI(Response);
950
-
951
- /**
952
- * @param {!Protocol.Network.Request} request
953
- * @return {string}
954
- */
955
- function generateRequestHash(request) {
956
- let normalizedURL = request.url;
957
- try {
958
- // Decoding is necessary to normalize URLs. @see crbug.com/759388
959
- // The method will throw if the URL is malformed. In this case,
960
- // consider URL to be normalized as-is.
961
- normalizedURL = decodeURI(request.url);
962
- } catch (e) {
963
- }
964
- const hash = {
965
- url: normalizedURL,
966
- method: request.method,
967
- postData: request.postData,
968
- headers: {},
969
- };
970
-
971
- if (!normalizedURL.startsWith('data:')) {
972
- const headers = Object.keys(request.headers);
973
- headers.sort();
974
- for (let header of headers) {
975
- const headerValue = request.headers[header];
976
- header = header.toLowerCase();
977
- if (header === 'accept' || header === 'referer' || header === 'x-devtools-emulate-network-conditions-client-id')
978
- continue;
979
- hash.headers[header] = headerValue;
980
- }
981
- }
982
- return JSON.stringify(hash);
983
- }
984
-
985
- class SecurityDetails {
986
- /**
987
- * @param {string} subjectName
988
- * @param {string} issuer
989
- * @param {number} validFrom
990
- * @param {number} validTo
991
- * @param {string} protocol
992
- */
993
-
994
- constructor(subjectName, issuer, validFrom, validTo, protocol) {
995
- this._subjectName = subjectName;
996
- this._issuer = issuer;
997
- this._validFrom = validFrom;
998
- this._validTo = validTo;
999
- this._protocol = protocol;
1000
- }
1001
-
1002
- /**
1003
- * @return {string}
1004
- */
1005
- subjectName() {
1006
- return this._subjectName;
1007
- }
1008
-
1009
- /**
1010
- * @return {string}
1011
- */
1012
- issuer() {
1013
- return this._issuer;
1014
- }
1015
-
1016
- /**
1017
- * @return {number}
1018
- */
1019
- validFrom() {
1020
- return this._validFrom;
1021
- }
1022
-
1023
- /**
1024
- * @return {number}
1025
- */
1026
- validTo() {
1027
- return this._validTo;
1028
- }
1029
-
1030
- /**
1031
- * @return {string}
1032
- */
1033
- protocol() {
1034
- return this._protocol;
1035
- }
1036
- }
1037
-
1038
- NetworkManager.Events = {
1039
- Request: 'request',
1040
- Response: 'response',
1041
- RequestFailed: 'requestfailed',
1042
- RequestFinished: 'requestfinished',
1043
- };
1044
-
1045
- const statusTexts = {
1046
- '100': 'Continue',
1047
- '101': 'Switching Protocols',
1048
- '102': 'Processing',
1049
- '200': 'OK',
1050
- '201': 'Created',
1051
- '202': 'Accepted',
1052
- '203': 'Non-Authoritative Information',
1053
- '204': 'No Content',
1054
- '206': 'Partial Content',
1055
- '207': 'Multi-Status',
1056
- '208': 'Already Reported',
1057
- '209': 'IM Used',
1058
- '300': 'Multiple Choices',
1059
- '301': 'Moved Permanently',
1060
- '302': 'Found',
1061
- '303': 'See Other',
1062
- '304': 'Not Modified',
1063
- '305': 'Use Proxy',
1064
- '306': 'Switch Proxy',
1065
- '307': 'Temporary Redirect',
1066
- '308': 'Permanent Redirect',
1067
- '400': 'Bad Request',
1068
- '401': 'Unauthorized',
1069
- '402': 'Payment Required',
1070
- '403': 'Forbidden',
1071
- '404': 'Not Found',
1072
- '405': 'Method Not Allowed',
1073
- '406': 'Not Acceptable',
1074
- '407': 'Proxy Authentication Required',
1075
- '408': 'Request Timeout',
1076
- '409': 'Conflict',
1077
- '410': 'Gone',
1078
- '411': 'Length Required',
1079
- '412': 'Precondition Failed',
1080
- '413': 'Payload Too Large',
1081
- '414': 'URI Too Long',
1082
- '415': 'Unsupported Media Type',
1083
- '416': 'Range Not Satisfiable',
1084
- '417': 'Expectation Failed',
1085
- '418': 'I\'m a teapot',
1086
- '421': 'Misdirected Request',
1087
- '422': 'Unprocessable Entity',
1088
- '423': 'Locked',
1089
- '424': 'Failed Dependency',
1090
- '426': 'Upgrade Required',
1091
- '428': 'Precondition Required',
1092
- '429': 'Too Many Requests',
1093
- '431': 'Request Header Fields Too Large',
1094
- '451': 'Unavailable For Legal Reasons',
1095
- '500': 'Internal Server Error',
1096
- '501': 'Not Implemented',
1097
- '502': 'Bad Gateway',
1098
- '503': 'Service Unavailable',
1099
- '504': 'Gateway Timeout',
1100
- '505': 'HTTP Version Not Supported',
1101
- '506': 'Variant Also Negotiates',
1102
- '507': 'Insufficient Storage',
1103
- '508': 'Loop Detected',
1104
- '510': 'Not Extended',
1105
- '511': 'Network Authentication Required',
1106
- };
1107
-
1108
- module.exports = {Request, Response, NetworkManager};