postdoc 0.2.0.beta4 → 0.2.0

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 (371) hide show
  1. checksums.yaml +4 -4
  2. data/lib/postdoc/postdoc_view_helper.rb +15 -0
  3. data/lib/postdoc.rb +34 -14
  4. metadata +20 -373
  5. data/lib/pdf.js +0 -27
  6. data/node_modules/agent-base/History.md +0 -113
  7. data/node_modules/agent-base/README.md +0 -145
  8. data/node_modules/agent-base/index.js +0 -160
  9. data/node_modules/agent-base/package.json +0 -35
  10. data/node_modules/agent-base/patch-core.js +0 -37
  11. data/node_modules/agent-base/test/ssl-cert-snakeoil.key +0 -15
  12. data/node_modules/agent-base/test/ssl-cert-snakeoil.pem +0 -12
  13. data/node_modules/agent-base/test/test.js +0 -673
  14. data/node_modules/async-limiter/LICENSE +0 -8
  15. data/node_modules/async-limiter/coverage/coverage.json +0 -1
  16. data/node_modules/async-limiter/coverage/lcov-report/async-throttle/index.html +0 -73
  17. data/node_modules/async-limiter/coverage/lcov-report/async-throttle/index.js.html +0 -246
  18. data/node_modules/async-limiter/coverage/lcov-report/base.css +0 -182
  19. data/node_modules/async-limiter/coverage/lcov-report/index.html +0 -73
  20. data/node_modules/async-limiter/coverage/lcov-report/prettify.css +0 -1
  21. data/node_modules/async-limiter/coverage/lcov-report/prettify.js +0 -1
  22. data/node_modules/async-limiter/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  23. data/node_modules/async-limiter/coverage/lcov-report/sorter.js +0 -156
  24. data/node_modules/async-limiter/coverage/lcov.info +0 -74
  25. data/node_modules/async-limiter/index.js +0 -67
  26. data/node_modules/async-limiter/package.json +0 -35
  27. data/node_modules/async-limiter/readme.md +0 -132
  28. data/node_modules/balanced-match/LICENSE.md +0 -21
  29. data/node_modules/balanced-match/README.md +0 -91
  30. data/node_modules/balanced-match/index.js +0 -59
  31. data/node_modules/balanced-match/package.json +0 -49
  32. data/node_modules/brace-expansion/LICENSE +0 -21
  33. data/node_modules/brace-expansion/README.md +0 -129
  34. data/node_modules/brace-expansion/index.js +0 -201
  35. data/node_modules/brace-expansion/package.json +0 -47
  36. data/node_modules/buffer-from/index.js +0 -69
  37. data/node_modules/buffer-from/package.json +0 -16
  38. data/node_modules/buffer-from/readme.md +0 -69
  39. data/node_modules/buffer-from/test.js +0 -12
  40. data/node_modules/concat-map/LICENSE +0 -18
  41. data/node_modules/concat-map/README.markdown +0 -62
  42. data/node_modules/concat-map/example/map.js +0 -6
  43. data/node_modules/concat-map/index.js +0 -13
  44. data/node_modules/concat-map/package.json +0 -43
  45. data/node_modules/concat-map/test/map.js +0 -39
  46. data/node_modules/concat-stream/LICENSE +0 -24
  47. data/node_modules/concat-stream/index.js +0 -144
  48. data/node_modules/concat-stream/package.json +0 -55
  49. data/node_modules/concat-stream/readme.md +0 -102
  50. data/node_modules/core-util-is/LICENSE +0 -19
  51. data/node_modules/core-util-is/README.md +0 -3
  52. data/node_modules/core-util-is/float.patch +0 -604
  53. data/node_modules/core-util-is/lib/util.js +0 -107
  54. data/node_modules/core-util-is/package.json +0 -32
  55. data/node_modules/core-util-is/test.js +0 -68
  56. data/node_modules/debug/CHANGELOG.md +0 -395
  57. data/node_modules/debug/LICENSE +0 -19
  58. data/node_modules/debug/Makefile +0 -58
  59. data/node_modules/debug/README.md +0 -368
  60. data/node_modules/debug/karma.conf.js +0 -70
  61. data/node_modules/debug/node.js +0 -1
  62. data/node_modules/debug/package.json +0 -43
  63. data/node_modules/debug/src/browser.js +0 -195
  64. data/node_modules/debug/src/debug.js +0 -225
  65. data/node_modules/debug/src/index.js +0 -10
  66. data/node_modules/debug/src/node.js +0 -186
  67. data/node_modules/es6-promise/CHANGELOG.md +0 -151
  68. data/node_modules/es6-promise/LICENSE +0 -19
  69. data/node_modules/es6-promise/README.md +0 -97
  70. data/node_modules/es6-promise/auto.js +0 -4
  71. data/node_modules/es6-promise/dist/es6-promise.auto.js +0 -1181
  72. data/node_modules/es6-promise/dist/es6-promise.auto.map +0 -1
  73. data/node_modules/es6-promise/dist/es6-promise.auto.min.js +0 -1
  74. data/node_modules/es6-promise/dist/es6-promise.auto.min.map +0 -1
  75. data/node_modules/es6-promise/dist/es6-promise.js +0 -1179
  76. data/node_modules/es6-promise/dist/es6-promise.map +0 -1
  77. data/node_modules/es6-promise/dist/es6-promise.min.js +0 -1
  78. data/node_modules/es6-promise/dist/es6-promise.min.map +0 -1
  79. data/node_modules/es6-promise/es6-promise.d.ts +0 -81
  80. data/node_modules/es6-promise/lib/es6-promise/-internal.js +0 -266
  81. data/node_modules/es6-promise/lib/es6-promise/asap.js +0 -119
  82. data/node_modules/es6-promise/lib/es6-promise/enumerator.js +0 -113
  83. data/node_modules/es6-promise/lib/es6-promise/polyfill.js +0 -35
  84. data/node_modules/es6-promise/lib/es6-promise/promise/all.js +0 -52
  85. data/node_modules/es6-promise/lib/es6-promise/promise/race.js +0 -84
  86. data/node_modules/es6-promise/lib/es6-promise/promise/reject.js +0 -46
  87. data/node_modules/es6-promise/lib/es6-promise/promise/resolve.js +0 -48
  88. data/node_modules/es6-promise/lib/es6-promise/promise.js +0 -427
  89. data/node_modules/es6-promise/lib/es6-promise/then.js +0 -32
  90. data/node_modules/es6-promise/lib/es6-promise/utils.js +0 -21
  91. data/node_modules/es6-promise/lib/es6-promise.auto.js +0 -3
  92. data/node_modules/es6-promise/lib/es6-promise.js +0 -7
  93. data/node_modules/es6-promise/package.json +0 -75
  94. data/node_modules/es6-promisify/README.md +0 -89
  95. data/node_modules/es6-promisify/dist/promise.js +0 -73
  96. data/node_modules/es6-promisify/dist/promisify.js +0 -85
  97. data/node_modules/es6-promisify/package.json +0 -41
  98. data/node_modules/extract-zip/CONTRIBUTING.md +0 -1
  99. data/node_modules/extract-zip/LICENSE +0 -23
  100. data/node_modules/extract-zip/cli.js +0 -20
  101. data/node_modules/extract-zip/index.js +0 -205
  102. data/node_modules/extract-zip/node_modules/debug/CHANGELOG.md +0 -362
  103. data/node_modules/extract-zip/node_modules/debug/LICENSE +0 -19
  104. data/node_modules/extract-zip/node_modules/debug/Makefile +0 -50
  105. data/node_modules/extract-zip/node_modules/debug/README.md +0 -312
  106. data/node_modules/extract-zip/node_modules/debug/component.json +0 -19
  107. data/node_modules/extract-zip/node_modules/debug/karma.conf.js +0 -70
  108. data/node_modules/extract-zip/node_modules/debug/node.js +0 -1
  109. data/node_modules/extract-zip/node_modules/debug/package.json +0 -49
  110. data/node_modules/extract-zip/node_modules/debug/src/browser.js +0 -185
  111. data/node_modules/extract-zip/node_modules/debug/src/debug.js +0 -202
  112. data/node_modules/extract-zip/node_modules/debug/src/index.js +0 -10
  113. data/node_modules/extract-zip/node_modules/debug/src/inspector-log.js +0 -15
  114. data/node_modules/extract-zip/node_modules/debug/src/node.js +0 -248
  115. data/node_modules/extract-zip/package.json +0 -35
  116. data/node_modules/extract-zip/readme.md +0 -49
  117. data/node_modules/fd-slicer/CHANGELOG.md +0 -49
  118. data/node_modules/fd-slicer/LICENSE +0 -21
  119. data/node_modules/fd-slicer/README.md +0 -189
  120. data/node_modules/fd-slicer/index.js +0 -277
  121. data/node_modules/fd-slicer/package.json +0 -36
  122. data/node_modules/fd-slicer/test/test.js +0 -350
  123. data/node_modules/fs.realpath/LICENSE +0 -43
  124. data/node_modules/fs.realpath/README.md +0 -33
  125. data/node_modules/fs.realpath/index.js +0 -66
  126. data/node_modules/fs.realpath/old.js +0 -303
  127. data/node_modules/fs.realpath/package.json +0 -26
  128. data/node_modules/glob/LICENSE +0 -15
  129. data/node_modules/glob/README.md +0 -368
  130. data/node_modules/glob/changelog.md +0 -67
  131. data/node_modules/glob/common.js +0 -240
  132. data/node_modules/glob/glob.js +0 -790
  133. data/node_modules/glob/package.json +0 -43
  134. data/node_modules/glob/sync.js +0 -486
  135. data/node_modules/https-proxy-agent/History.md +0 -124
  136. data/node_modules/https-proxy-agent/README.md +0 -137
  137. data/node_modules/https-proxy-agent/index.js +0 -229
  138. data/node_modules/https-proxy-agent/package.json +0 -35
  139. data/node_modules/https-proxy-agent/test/ssl-cert-snakeoil.key +0 -15
  140. data/node_modules/https-proxy-agent/test/ssl-cert-snakeoil.pem +0 -12
  141. data/node_modules/https-proxy-agent/test/test.js +0 -342
  142. data/node_modules/inflight/LICENSE +0 -15
  143. data/node_modules/inflight/README.md +0 -37
  144. data/node_modules/inflight/inflight.js +0 -54
  145. data/node_modules/inflight/package.json +0 -29
  146. data/node_modules/inherits/LICENSE +0 -16
  147. data/node_modules/inherits/README.md +0 -42
  148. data/node_modules/inherits/inherits.js +0 -7
  149. data/node_modules/inherits/inherits_browser.js +0 -23
  150. data/node_modules/inherits/package.json +0 -29
  151. data/node_modules/isarray/Makefile +0 -6
  152. data/node_modules/isarray/README.md +0 -60
  153. data/node_modules/isarray/component.json +0 -19
  154. data/node_modules/isarray/index.js +0 -5
  155. data/node_modules/isarray/package.json +0 -45
  156. data/node_modules/isarray/test.js +0 -20
  157. data/node_modules/mime/CHANGELOG.md +0 -225
  158. data/node_modules/mime/CONTRIBUTING.md +0 -5
  159. data/node_modules/mime/LICENSE +0 -21
  160. data/node_modules/mime/Mime.js +0 -89
  161. data/node_modules/mime/README.md +0 -188
  162. data/node_modules/mime/cli.js +0 -10
  163. data/node_modules/mime/index.js +0 -4
  164. data/node_modules/mime/lite.js +0 -4
  165. data/node_modules/mime/package.json +0 -43
  166. data/node_modules/mime/src/README_js.md +0 -179
  167. data/node_modules/mime/src/build.js +0 -71
  168. data/node_modules/mime/src/test.js +0 -257
  169. data/node_modules/mime/types/other.json +0 -1
  170. data/node_modules/mime/types/standard.json +0 -1
  171. data/node_modules/minimatch/LICENSE +0 -15
  172. data/node_modules/minimatch/README.md +0 -209
  173. data/node_modules/minimatch/minimatch.js +0 -923
  174. data/node_modules/minimatch/package.json +0 -30
  175. data/node_modules/minimist/LICENSE +0 -18
  176. data/node_modules/minimist/example/parse.js +0 -2
  177. data/node_modules/minimist/index.js +0 -187
  178. data/node_modules/minimist/package.json +0 -40
  179. data/node_modules/minimist/readme.markdown +0 -73
  180. data/node_modules/minimist/test/dash.js +0 -24
  181. data/node_modules/minimist/test/default_bool.js +0 -20
  182. data/node_modules/minimist/test/dotted.js +0 -16
  183. data/node_modules/minimist/test/long.js +0 -31
  184. data/node_modules/minimist/test/parse.js +0 -318
  185. data/node_modules/minimist/test/parse_modified.js +0 -9
  186. data/node_modules/minimist/test/short.js +0 -67
  187. data/node_modules/minimist/test/whitespace.js +0 -8
  188. data/node_modules/mkdirp/LICENSE +0 -21
  189. data/node_modules/mkdirp/bin/cmd.js +0 -33
  190. data/node_modules/mkdirp/bin/usage.txt +0 -12
  191. data/node_modules/mkdirp/examples/pow.js +0 -6
  192. data/node_modules/mkdirp/index.js +0 -98
  193. data/node_modules/mkdirp/package.json +0 -27
  194. data/node_modules/mkdirp/readme.markdown +0 -100
  195. data/node_modules/mkdirp/test/chmod.js +0 -41
  196. data/node_modules/mkdirp/test/clobber.js +0 -38
  197. data/node_modules/mkdirp/test/mkdirp.js +0 -28
  198. data/node_modules/mkdirp/test/opts_fs.js +0 -29
  199. data/node_modules/mkdirp/test/opts_fs_sync.js +0 -27
  200. data/node_modules/mkdirp/test/perm.js +0 -32
  201. data/node_modules/mkdirp/test/perm_sync.js +0 -36
  202. data/node_modules/mkdirp/test/race.js +0 -37
  203. data/node_modules/mkdirp/test/rel.js +0 -32
  204. data/node_modules/mkdirp/test/return.js +0 -25
  205. data/node_modules/mkdirp/test/return_sync.js +0 -24
  206. data/node_modules/mkdirp/test/root.js +0 -19
  207. data/node_modules/mkdirp/test/sync.js +0 -32
  208. data/node_modules/mkdirp/test/umask.js +0 -28
  209. data/node_modules/mkdirp/test/umask_sync.js +0 -32
  210. data/node_modules/ms/index.js +0 -152
  211. data/node_modules/ms/license.md +0 -21
  212. data/node_modules/ms/package.json +0 -37
  213. data/node_modules/ms/readme.md +0 -51
  214. data/node_modules/once/LICENSE +0 -15
  215. data/node_modules/once/README.md +0 -79
  216. data/node_modules/once/once.js +0 -42
  217. data/node_modules/once/package.json +0 -33
  218. data/node_modules/path-is-absolute/index.js +0 -20
  219. data/node_modules/path-is-absolute/license +0 -21
  220. data/node_modules/path-is-absolute/package.json +0 -43
  221. data/node_modules/path-is-absolute/readme.md +0 -59
  222. data/node_modules/pend/LICENSE +0 -23
  223. data/node_modules/pend/README.md +0 -41
  224. data/node_modules/pend/index.js +0 -55
  225. data/node_modules/pend/package.json +0 -18
  226. data/node_modules/pend/test.js +0 -137
  227. data/node_modules/process-nextick-args/index.js +0 -44
  228. data/node_modules/process-nextick-args/license.md +0 -19
  229. data/node_modules/process-nextick-args/package.json +0 -25
  230. data/node_modules/process-nextick-args/readme.md +0 -18
  231. data/node_modules/progress/CHANGELOG.md +0 -115
  232. data/node_modules/progress/LICENSE +0 -22
  233. data/node_modules/progress/Makefile +0 -8
  234. data/node_modules/progress/README.md +0 -146
  235. data/node_modules/progress/index.js +0 -1
  236. data/node_modules/progress/lib/node-progress.js +0 -231
  237. data/node_modules/progress/package.json +0 -25
  238. data/node_modules/proxy-from-env/README.md +0 -131
  239. data/node_modules/proxy-from-env/index.js +0 -103
  240. data/node_modules/proxy-from-env/package.json +0 -35
  241. data/node_modules/proxy-from-env/test.js +0 -393
  242. data/node_modules/puppeteer/CONTRIBUTING.md +0 -206
  243. data/node_modules/puppeteer/DeviceDescriptors.js +0 -704
  244. data/node_modules/puppeteer/LICENSE +0 -202
  245. data/node_modules/puppeteer/README.md +0 -306
  246. data/node_modules/puppeteer/index.js +0 -28
  247. data/node_modules/puppeteer/install.js +0 -122
  248. data/node_modules/puppeteer/lib/Browser.js +0 -186
  249. data/node_modules/puppeteer/lib/BrowserFetcher.js +0 -279
  250. data/node_modules/puppeteer/lib/Connection.js +0 -246
  251. data/node_modules/puppeteer/lib/Coverage.js +0 -301
  252. data/node_modules/puppeteer/lib/Dialog.js +0 -84
  253. data/node_modules/puppeteer/lib/ElementHandle.js +0 -328
  254. data/node_modules/puppeteer/lib/EmulationManager.js +0 -89
  255. data/node_modules/puppeteer/lib/ExecutionContext.js +0 -232
  256. data/node_modules/puppeteer/lib/FrameManager.js +0 -997
  257. data/node_modules/puppeteer/lib/Input.js +0 -309
  258. data/node_modules/puppeteer/lib/Launcher.js +0 -310
  259. data/node_modules/puppeteer/lib/Multimap.js +0 -95
  260. data/node_modules/puppeteer/lib/NavigatorWatcher.js +0 -137
  261. data/node_modules/puppeteer/lib/NetworkManager.js +0 -796
  262. data/node_modules/puppeteer/lib/Page.js +0 -1098
  263. data/node_modules/puppeteer/lib/Pipe.js +0 -69
  264. data/node_modules/puppeteer/lib/Puppeteer.js +0 -60
  265. data/node_modules/puppeteer/lib/Target.js +0 -88
  266. data/node_modules/puppeteer/lib/TaskQueue.js +0 -17
  267. data/node_modules/puppeteer/lib/Tracing.js +0 -99
  268. data/node_modules/puppeteer/lib/USKeyboardLayout.js +0 -281
  269. data/node_modules/puppeteer/lib/helper.js +0 -248
  270. data/node_modules/puppeteer/node6/lib/Browser.js +0 -394
  271. data/node_modules/puppeteer/node6/lib/BrowserFetcher.js +0 -357
  272. data/node_modules/puppeteer/node6/lib/Connection.js +0 -350
  273. data/node_modules/puppeteer/node6/lib/Coverage.js +0 -561
  274. data/node_modules/puppeteer/node6/lib/Dialog.js +0 -136
  275. data/node_modules/puppeteer/node6/lib/ElementHandle.js +0 -796
  276. data/node_modules/puppeteer/node6/lib/EmulationManager.js +0 -115
  277. data/node_modules/puppeteer/node6/lib/ExecutionContext.js +0 -414
  278. data/node_modules/puppeteer/node6/lib/FrameManager.js +0 -1621
  279. data/node_modules/puppeteer/node6/lib/Input.js +0 -569
  280. data/node_modules/puppeteer/node6/lib/Launcher.js +0 -362
  281. data/node_modules/puppeteer/node6/lib/Multimap.js +0 -95
  282. data/node_modules/puppeteer/node6/lib/NavigatorWatcher.js +0 -163
  283. data/node_modules/puppeteer/node6/lib/NetworkManager.js +0 -1108
  284. data/node_modules/puppeteer/node6/lib/Page.js +0 -2242
  285. data/node_modules/puppeteer/node6/lib/Pipe.js +0 -69
  286. data/node_modules/puppeteer/node6/lib/Puppeteer.js +0 -60
  287. data/node_modules/puppeteer/node6/lib/Target.js +0 -114
  288. data/node_modules/puppeteer/node6/lib/TaskQueue.js +0 -17
  289. data/node_modules/puppeteer/node6/lib/Tracing.js +0 -177
  290. data/node_modules/puppeteer/node6/lib/USKeyboardLayout.js +0 -281
  291. data/node_modules/puppeteer/node6/lib/helper.js +0 -274
  292. data/node_modules/puppeteer/package.json +0 -61
  293. data/node_modules/readable-stream/CONTRIBUTING.md +0 -38
  294. data/node_modules/readable-stream/GOVERNANCE.md +0 -136
  295. data/node_modules/readable-stream/LICENSE +0 -47
  296. data/node_modules/readable-stream/README.md +0 -58
  297. data/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +0 -60
  298. data/node_modules/readable-stream/duplex-browser.js +0 -1
  299. data/node_modules/readable-stream/duplex.js +0 -1
  300. data/node_modules/readable-stream/lib/_stream_duplex.js +0 -131
  301. data/node_modules/readable-stream/lib/_stream_passthrough.js +0 -47
  302. data/node_modules/readable-stream/lib/_stream_readable.js +0 -1019
  303. data/node_modules/readable-stream/lib/_stream_transform.js +0 -214
  304. data/node_modules/readable-stream/lib/_stream_writable.js +0 -687
  305. data/node_modules/readable-stream/lib/internal/streams/BufferList.js +0 -79
  306. data/node_modules/readable-stream/lib/internal/streams/destroy.js +0 -74
  307. data/node_modules/readable-stream/lib/internal/streams/stream-browser.js +0 -1
  308. data/node_modules/readable-stream/lib/internal/streams/stream.js +0 -1
  309. data/node_modules/readable-stream/package.json +0 -52
  310. data/node_modules/readable-stream/passthrough.js +0 -1
  311. data/node_modules/readable-stream/readable-browser.js +0 -7
  312. data/node_modules/readable-stream/readable.js +0 -19
  313. data/node_modules/readable-stream/transform.js +0 -1
  314. data/node_modules/readable-stream/writable-browser.js +0 -1
  315. data/node_modules/readable-stream/writable.js +0 -8
  316. data/node_modules/rimraf/LICENSE +0 -15
  317. data/node_modules/rimraf/README.md +0 -101
  318. data/node_modules/rimraf/bin.js +0 -50
  319. data/node_modules/rimraf/package.json +0 -26
  320. data/node_modules/rimraf/rimraf.js +0 -364
  321. data/node_modules/safe-buffer/LICENSE +0 -21
  322. data/node_modules/safe-buffer/README.md +0 -584
  323. data/node_modules/safe-buffer/index.d.ts +0 -187
  324. data/node_modules/safe-buffer/index.js +0 -62
  325. data/node_modules/safe-buffer/package.json +0 -37
  326. data/node_modules/string_decoder/LICENSE +0 -48
  327. data/node_modules/string_decoder/README.md +0 -47
  328. data/node_modules/string_decoder/lib/string_decoder.js +0 -296
  329. data/node_modules/string_decoder/package.json +0 -31
  330. data/node_modules/typedarray/LICENSE +0 -35
  331. data/node_modules/typedarray/example/tarray.js +0 -4
  332. data/node_modules/typedarray/index.js +0 -630
  333. data/node_modules/typedarray/package.json +0 -55
  334. data/node_modules/typedarray/readme.markdown +0 -61
  335. data/node_modules/typedarray/test/server/undef_globals.js +0 -19
  336. data/node_modules/typedarray/test/tarray.js +0 -10
  337. data/node_modules/ultron/LICENSE +0 -22
  338. data/node_modules/ultron/README.md +0 -113
  339. data/node_modules/ultron/index.js +0 -136
  340. data/node_modules/ultron/package.json +0 -41
  341. data/node_modules/util-deprecate/History.md +0 -16
  342. data/node_modules/util-deprecate/LICENSE +0 -24
  343. data/node_modules/util-deprecate/README.md +0 -53
  344. data/node_modules/util-deprecate/browser.js +0 -67
  345. data/node_modules/util-deprecate/node.js +0 -6
  346. data/node_modules/util-deprecate/package.json +0 -27
  347. data/node_modules/wrappy/LICENSE +0 -15
  348. data/node_modules/wrappy/README.md +0 -36
  349. data/node_modules/wrappy/package.json +0 -29
  350. data/node_modules/wrappy/wrappy.js +0 -33
  351. data/node_modules/ws/LICENSE +0 -21
  352. data/node_modules/ws/README.md +0 -341
  353. data/node_modules/ws/index.js +0 -15
  354. data/node_modules/ws/lib/BufferUtil.js +0 -71
  355. data/node_modules/ws/lib/Constants.js +0 -10
  356. data/node_modules/ws/lib/ErrorCodes.js +0 -28
  357. data/node_modules/ws/lib/EventTarget.js +0 -151
  358. data/node_modules/ws/lib/Extensions.js +0 -203
  359. data/node_modules/ws/lib/PerMessageDeflate.js +0 -507
  360. data/node_modules/ws/lib/Receiver.js +0 -553
  361. data/node_modules/ws/lib/Sender.js +0 -412
  362. data/node_modules/ws/lib/Validation.js +0 -17
  363. data/node_modules/ws/lib/WebSocket.js +0 -717
  364. data/node_modules/ws/lib/WebSocketServer.js +0 -326
  365. data/node_modules/ws/package.json +0 -46
  366. data/node_modules/yauzl/LICENSE +0 -21
  367. data/node_modules/yauzl/README.md +0 -467
  368. data/node_modules/yauzl/index.js +0 -626
  369. data/node_modules/yauzl/package.json +0 -36
  370. data/package.json +0 -5
  371. data/yarn.lock +0 -240
@@ -1,790 +0,0 @@
1
- // Approach:
2
- //
3
- // 1. Get the minimatch set
4
- // 2. For each pattern in the set, PROCESS(pattern, false)
5
- // 3. Store matches per-set, then uniq them
6
- //
7
- // PROCESS(pattern, inGlobStar)
8
- // Get the first [n] items from pattern that are all strings
9
- // Join these together. This is PREFIX.
10
- // If there is no more remaining, then stat(PREFIX) and
11
- // add to matches if it succeeds. END.
12
- //
13
- // If inGlobStar and PREFIX is symlink and points to dir
14
- // set ENTRIES = []
15
- // else readdir(PREFIX) as ENTRIES
16
- // If fail, END
17
- //
18
- // with ENTRIES
19
- // If pattern[n] is GLOBSTAR
20
- // // handle the case where the globstar match is empty
21
- // // by pruning it out, and testing the resulting pattern
22
- // PROCESS(pattern[0..n] + pattern[n+1 .. $], false)
23
- // // handle other cases.
24
- // for ENTRY in ENTRIES (not dotfiles)
25
- // // attach globstar + tail onto the entry
26
- // // Mark that this entry is a globstar match
27
- // PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true)
28
- //
29
- // else // not globstar
30
- // for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot)
31
- // Test ENTRY against pattern[n]
32
- // If fails, continue
33
- // If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $])
34
- //
35
- // Caveat:
36
- // Cache all stats and readdirs results to minimize syscall. Since all
37
- // we ever care about is existence and directory-ness, we can just keep
38
- // `true` for files, and [children,...] for directories, or `false` for
39
- // things that don't exist.
40
-
41
- module.exports = glob
42
-
43
- var fs = require('fs')
44
- var rp = require('fs.realpath')
45
- var minimatch = require('minimatch')
46
- var Minimatch = minimatch.Minimatch
47
- var inherits = require('inherits')
48
- var EE = require('events').EventEmitter
49
- var path = require('path')
50
- var assert = require('assert')
51
- var isAbsolute = require('path-is-absolute')
52
- var globSync = require('./sync.js')
53
- var common = require('./common.js')
54
- var alphasort = common.alphasort
55
- var alphasorti = common.alphasorti
56
- var setopts = common.setopts
57
- var ownProp = common.ownProp
58
- var inflight = require('inflight')
59
- var util = require('util')
60
- var childrenIgnored = common.childrenIgnored
61
- var isIgnored = common.isIgnored
62
-
63
- var once = require('once')
64
-
65
- function glob (pattern, options, cb) {
66
- if (typeof options === 'function') cb = options, options = {}
67
- if (!options) options = {}
68
-
69
- if (options.sync) {
70
- if (cb)
71
- throw new TypeError('callback provided to sync glob')
72
- return globSync(pattern, options)
73
- }
74
-
75
- return new Glob(pattern, options, cb)
76
- }
77
-
78
- glob.sync = globSync
79
- var GlobSync = glob.GlobSync = globSync.GlobSync
80
-
81
- // old api surface
82
- glob.glob = glob
83
-
84
- function extend (origin, add) {
85
- if (add === null || typeof add !== 'object') {
86
- return origin
87
- }
88
-
89
- var keys = Object.keys(add)
90
- var i = keys.length
91
- while (i--) {
92
- origin[keys[i]] = add[keys[i]]
93
- }
94
- return origin
95
- }
96
-
97
- glob.hasMagic = function (pattern, options_) {
98
- var options = extend({}, options_)
99
- options.noprocess = true
100
-
101
- var g = new Glob(pattern, options)
102
- var set = g.minimatch.set
103
-
104
- if (!pattern)
105
- return false
106
-
107
- if (set.length > 1)
108
- return true
109
-
110
- for (var j = 0; j < set[0].length; j++) {
111
- if (typeof set[0][j] !== 'string')
112
- return true
113
- }
114
-
115
- return false
116
- }
117
-
118
- glob.Glob = Glob
119
- inherits(Glob, EE)
120
- function Glob (pattern, options, cb) {
121
- if (typeof options === 'function') {
122
- cb = options
123
- options = null
124
- }
125
-
126
- if (options && options.sync) {
127
- if (cb)
128
- throw new TypeError('callback provided to sync glob')
129
- return new GlobSync(pattern, options)
130
- }
131
-
132
- if (!(this instanceof Glob))
133
- return new Glob(pattern, options, cb)
134
-
135
- setopts(this, pattern, options)
136
- this._didRealPath = false
137
-
138
- // process each pattern in the minimatch set
139
- var n = this.minimatch.set.length
140
-
141
- // The matches are stored as {<filename>: true,...} so that
142
- // duplicates are automagically pruned.
143
- // Later, we do an Object.keys() on these.
144
- // Keep them as a list so we can fill in when nonull is set.
145
- this.matches = new Array(n)
146
-
147
- if (typeof cb === 'function') {
148
- cb = once(cb)
149
- this.on('error', cb)
150
- this.on('end', function (matches) {
151
- cb(null, matches)
152
- })
153
- }
154
-
155
- var self = this
156
- this._processing = 0
157
-
158
- this._emitQueue = []
159
- this._processQueue = []
160
- this.paused = false
161
-
162
- if (this.noprocess)
163
- return this
164
-
165
- if (n === 0)
166
- return done()
167
-
168
- var sync = true
169
- for (var i = 0; i < n; i ++) {
170
- this._process(this.minimatch.set[i], i, false, done)
171
- }
172
- sync = false
173
-
174
- function done () {
175
- --self._processing
176
- if (self._processing <= 0) {
177
- if (sync) {
178
- process.nextTick(function () {
179
- self._finish()
180
- })
181
- } else {
182
- self._finish()
183
- }
184
- }
185
- }
186
- }
187
-
188
- Glob.prototype._finish = function () {
189
- assert(this instanceof Glob)
190
- if (this.aborted)
191
- return
192
-
193
- if (this.realpath && !this._didRealpath)
194
- return this._realpath()
195
-
196
- common.finish(this)
197
- this.emit('end', this.found)
198
- }
199
-
200
- Glob.prototype._realpath = function () {
201
- if (this._didRealpath)
202
- return
203
-
204
- this._didRealpath = true
205
-
206
- var n = this.matches.length
207
- if (n === 0)
208
- return this._finish()
209
-
210
- var self = this
211
- for (var i = 0; i < this.matches.length; i++)
212
- this._realpathSet(i, next)
213
-
214
- function next () {
215
- if (--n === 0)
216
- self._finish()
217
- }
218
- }
219
-
220
- Glob.prototype._realpathSet = function (index, cb) {
221
- var matchset = this.matches[index]
222
- if (!matchset)
223
- return cb()
224
-
225
- var found = Object.keys(matchset)
226
- var self = this
227
- var n = found.length
228
-
229
- if (n === 0)
230
- return cb()
231
-
232
- var set = this.matches[index] = Object.create(null)
233
- found.forEach(function (p, i) {
234
- // If there's a problem with the stat, then it means that
235
- // one or more of the links in the realpath couldn't be
236
- // resolved. just return the abs value in that case.
237
- p = self._makeAbs(p)
238
- rp.realpath(p, self.realpathCache, function (er, real) {
239
- if (!er)
240
- set[real] = true
241
- else if (er.syscall === 'stat')
242
- set[p] = true
243
- else
244
- self.emit('error', er) // srsly wtf right here
245
-
246
- if (--n === 0) {
247
- self.matches[index] = set
248
- cb()
249
- }
250
- })
251
- })
252
- }
253
-
254
- Glob.prototype._mark = function (p) {
255
- return common.mark(this, p)
256
- }
257
-
258
- Glob.prototype._makeAbs = function (f) {
259
- return common.makeAbs(this, f)
260
- }
261
-
262
- Glob.prototype.abort = function () {
263
- this.aborted = true
264
- this.emit('abort')
265
- }
266
-
267
- Glob.prototype.pause = function () {
268
- if (!this.paused) {
269
- this.paused = true
270
- this.emit('pause')
271
- }
272
- }
273
-
274
- Glob.prototype.resume = function () {
275
- if (this.paused) {
276
- this.emit('resume')
277
- this.paused = false
278
- if (this._emitQueue.length) {
279
- var eq = this._emitQueue.slice(0)
280
- this._emitQueue.length = 0
281
- for (var i = 0; i < eq.length; i ++) {
282
- var e = eq[i]
283
- this._emitMatch(e[0], e[1])
284
- }
285
- }
286
- if (this._processQueue.length) {
287
- var pq = this._processQueue.slice(0)
288
- this._processQueue.length = 0
289
- for (var i = 0; i < pq.length; i ++) {
290
- var p = pq[i]
291
- this._processing--
292
- this._process(p[0], p[1], p[2], p[3])
293
- }
294
- }
295
- }
296
- }
297
-
298
- Glob.prototype._process = function (pattern, index, inGlobStar, cb) {
299
- assert(this instanceof Glob)
300
- assert(typeof cb === 'function')
301
-
302
- if (this.aborted)
303
- return
304
-
305
- this._processing++
306
- if (this.paused) {
307
- this._processQueue.push([pattern, index, inGlobStar, cb])
308
- return
309
- }
310
-
311
- //console.error('PROCESS %d', this._processing, pattern)
312
-
313
- // Get the first [n] parts of pattern that are all strings.
314
- var n = 0
315
- while (typeof pattern[n] === 'string') {
316
- n ++
317
- }
318
- // now n is the index of the first one that is *not* a string.
319
-
320
- // see if there's anything else
321
- var prefix
322
- switch (n) {
323
- // if not, then this is rather simple
324
- case pattern.length:
325
- this._processSimple(pattern.join('/'), index, cb)
326
- return
327
-
328
- case 0:
329
- // pattern *starts* with some non-trivial item.
330
- // going to readdir(cwd), but not include the prefix in matches.
331
- prefix = null
332
- break
333
-
334
- default:
335
- // pattern has some string bits in the front.
336
- // whatever it starts with, whether that's 'absolute' like /foo/bar,
337
- // or 'relative' like '../baz'
338
- prefix = pattern.slice(0, n).join('/')
339
- break
340
- }
341
-
342
- var remain = pattern.slice(n)
343
-
344
- // get the list of entries.
345
- var read
346
- if (prefix === null)
347
- read = '.'
348
- else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {
349
- if (!prefix || !isAbsolute(prefix))
350
- prefix = '/' + prefix
351
- read = prefix
352
- } else
353
- read = prefix
354
-
355
- var abs = this._makeAbs(read)
356
-
357
- //if ignored, skip _processing
358
- if (childrenIgnored(this, read))
359
- return cb()
360
-
361
- var isGlobStar = remain[0] === minimatch.GLOBSTAR
362
- if (isGlobStar)
363
- this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb)
364
- else
365
- this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb)
366
- }
367
-
368
- Glob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) {
369
- var self = this
370
- this._readdir(abs, inGlobStar, function (er, entries) {
371
- return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb)
372
- })
373
- }
374
-
375
- Glob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {
376
-
377
- // if the abs isn't a dir, then nothing can match!
378
- if (!entries)
379
- return cb()
380
-
381
- // It will only match dot entries if it starts with a dot, or if
382
- // dot is set. Stuff like @(.foo|.bar) isn't allowed.
383
- var pn = remain[0]
384
- var negate = !!this.minimatch.negate
385
- var rawGlob = pn._glob
386
- var dotOk = this.dot || rawGlob.charAt(0) === '.'
387
-
388
- var matchedEntries = []
389
- for (var i = 0; i < entries.length; i++) {
390
- var e = entries[i]
391
- if (e.charAt(0) !== '.' || dotOk) {
392
- var m
393
- if (negate && !prefix) {
394
- m = !e.match(pn)
395
- } else {
396
- m = e.match(pn)
397
- }
398
- if (m)
399
- matchedEntries.push(e)
400
- }
401
- }
402
-
403
- //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries)
404
-
405
- var len = matchedEntries.length
406
- // If there are no matched entries, then nothing matches.
407
- if (len === 0)
408
- return cb()
409
-
410
- // if this is the last remaining pattern bit, then no need for
411
- // an additional stat *unless* the user has specified mark or
412
- // stat explicitly. We know they exist, since readdir returned
413
- // them.
414
-
415
- if (remain.length === 1 && !this.mark && !this.stat) {
416
- if (!this.matches[index])
417
- this.matches[index] = Object.create(null)
418
-
419
- for (var i = 0; i < len; i ++) {
420
- var e = matchedEntries[i]
421
- if (prefix) {
422
- if (prefix !== '/')
423
- e = prefix + '/' + e
424
- else
425
- e = prefix + e
426
- }
427
-
428
- if (e.charAt(0) === '/' && !this.nomount) {
429
- e = path.join(this.root, e)
430
- }
431
- this._emitMatch(index, e)
432
- }
433
- // This was the last one, and no stats were needed
434
- return cb()
435
- }
436
-
437
- // now test all matched entries as stand-ins for that part
438
- // of the pattern.
439
- remain.shift()
440
- for (var i = 0; i < len; i ++) {
441
- var e = matchedEntries[i]
442
- var newPattern
443
- if (prefix) {
444
- if (prefix !== '/')
445
- e = prefix + '/' + e
446
- else
447
- e = prefix + e
448
- }
449
- this._process([e].concat(remain), index, inGlobStar, cb)
450
- }
451
- cb()
452
- }
453
-
454
- Glob.prototype._emitMatch = function (index, e) {
455
- if (this.aborted)
456
- return
457
-
458
- if (isIgnored(this, e))
459
- return
460
-
461
- if (this.paused) {
462
- this._emitQueue.push([index, e])
463
- return
464
- }
465
-
466
- var abs = isAbsolute(e) ? e : this._makeAbs(e)
467
-
468
- if (this.mark)
469
- e = this._mark(e)
470
-
471
- if (this.absolute)
472
- e = abs
473
-
474
- if (this.matches[index][e])
475
- return
476
-
477
- if (this.nodir) {
478
- var c = this.cache[abs]
479
- if (c === 'DIR' || Array.isArray(c))
480
- return
481
- }
482
-
483
- this.matches[index][e] = true
484
-
485
- var st = this.statCache[abs]
486
- if (st)
487
- this.emit('stat', e, st)
488
-
489
- this.emit('match', e)
490
- }
491
-
492
- Glob.prototype._readdirInGlobStar = function (abs, cb) {
493
- if (this.aborted)
494
- return
495
-
496
- // follow all symlinked directories forever
497
- // just proceed as if this is a non-globstar situation
498
- if (this.follow)
499
- return this._readdir(abs, false, cb)
500
-
501
- var lstatkey = 'lstat\0' + abs
502
- var self = this
503
- var lstatcb = inflight(lstatkey, lstatcb_)
504
-
505
- if (lstatcb)
506
- fs.lstat(abs, lstatcb)
507
-
508
- function lstatcb_ (er, lstat) {
509
- if (er && er.code === 'ENOENT')
510
- return cb()
511
-
512
- var isSym = lstat && lstat.isSymbolicLink()
513
- self.symlinks[abs] = isSym
514
-
515
- // If it's not a symlink or a dir, then it's definitely a regular file.
516
- // don't bother doing a readdir in that case.
517
- if (!isSym && lstat && !lstat.isDirectory()) {
518
- self.cache[abs] = 'FILE'
519
- cb()
520
- } else
521
- self._readdir(abs, false, cb)
522
- }
523
- }
524
-
525
- Glob.prototype._readdir = function (abs, inGlobStar, cb) {
526
- if (this.aborted)
527
- return
528
-
529
- cb = inflight('readdir\0'+abs+'\0'+inGlobStar, cb)
530
- if (!cb)
531
- return
532
-
533
- //console.error('RD %j %j', +inGlobStar, abs)
534
- if (inGlobStar && !ownProp(this.symlinks, abs))
535
- return this._readdirInGlobStar(abs, cb)
536
-
537
- if (ownProp(this.cache, abs)) {
538
- var c = this.cache[abs]
539
- if (!c || c === 'FILE')
540
- return cb()
541
-
542
- if (Array.isArray(c))
543
- return cb(null, c)
544
- }
545
-
546
- var self = this
547
- fs.readdir(abs, readdirCb(this, abs, cb))
548
- }
549
-
550
- function readdirCb (self, abs, cb) {
551
- return function (er, entries) {
552
- if (er)
553
- self._readdirError(abs, er, cb)
554
- else
555
- self._readdirEntries(abs, entries, cb)
556
- }
557
- }
558
-
559
- Glob.prototype._readdirEntries = function (abs, entries, cb) {
560
- if (this.aborted)
561
- return
562
-
563
- // if we haven't asked to stat everything, then just
564
- // assume that everything in there exists, so we can avoid
565
- // having to stat it a second time.
566
- if (!this.mark && !this.stat) {
567
- for (var i = 0; i < entries.length; i ++) {
568
- var e = entries[i]
569
- if (abs === '/')
570
- e = abs + e
571
- else
572
- e = abs + '/' + e
573
- this.cache[e] = true
574
- }
575
- }
576
-
577
- this.cache[abs] = entries
578
- return cb(null, entries)
579
- }
580
-
581
- Glob.prototype._readdirError = function (f, er, cb) {
582
- if (this.aborted)
583
- return
584
-
585
- // handle errors, and cache the information
586
- switch (er.code) {
587
- case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205
588
- case 'ENOTDIR': // totally normal. means it *does* exist.
589
- var abs = this._makeAbs(f)
590
- this.cache[abs] = 'FILE'
591
- if (abs === this.cwdAbs) {
592
- var error = new Error(er.code + ' invalid cwd ' + this.cwd)
593
- error.path = this.cwd
594
- error.code = er.code
595
- this.emit('error', error)
596
- this.abort()
597
- }
598
- break
599
-
600
- case 'ENOENT': // not terribly unusual
601
- case 'ELOOP':
602
- case 'ENAMETOOLONG':
603
- case 'UNKNOWN':
604
- this.cache[this._makeAbs(f)] = false
605
- break
606
-
607
- default: // some unusual error. Treat as failure.
608
- this.cache[this._makeAbs(f)] = false
609
- if (this.strict) {
610
- this.emit('error', er)
611
- // If the error is handled, then we abort
612
- // if not, we threw out of here
613
- this.abort()
614
- }
615
- if (!this.silent)
616
- console.error('glob error', er)
617
- break
618
- }
619
-
620
- return cb()
621
- }
622
-
623
- Glob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) {
624
- var self = this
625
- this._readdir(abs, inGlobStar, function (er, entries) {
626
- self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb)
627
- })
628
- }
629
-
630
-
631
- Glob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {
632
- //console.error('pgs2', prefix, remain[0], entries)
633
-
634
- // no entries means not a dir, so it can never have matches
635
- // foo.txt/** doesn't match foo.txt
636
- if (!entries)
637
- return cb()
638
-
639
- // test without the globstar, and with every child both below
640
- // and replacing the globstar.
641
- var remainWithoutGlobStar = remain.slice(1)
642
- var gspref = prefix ? [ prefix ] : []
643
- var noGlobStar = gspref.concat(remainWithoutGlobStar)
644
-
645
- // the noGlobStar pattern exits the inGlobStar state
646
- this._process(noGlobStar, index, false, cb)
647
-
648
- var isSym = this.symlinks[abs]
649
- var len = entries.length
650
-
651
- // If it's a symlink, and we're in a globstar, then stop
652
- if (isSym && inGlobStar)
653
- return cb()
654
-
655
- for (var i = 0; i < len; i++) {
656
- var e = entries[i]
657
- if (e.charAt(0) === '.' && !this.dot)
658
- continue
659
-
660
- // these two cases enter the inGlobStar state
661
- var instead = gspref.concat(entries[i], remainWithoutGlobStar)
662
- this._process(instead, index, true, cb)
663
-
664
- var below = gspref.concat(entries[i], remain)
665
- this._process(below, index, true, cb)
666
- }
667
-
668
- cb()
669
- }
670
-
671
- Glob.prototype._processSimple = function (prefix, index, cb) {
672
- // XXX review this. Shouldn't it be doing the mounting etc
673
- // before doing stat? kinda weird?
674
- var self = this
675
- this._stat(prefix, function (er, exists) {
676
- self._processSimple2(prefix, index, er, exists, cb)
677
- })
678
- }
679
- Glob.prototype._processSimple2 = function (prefix, index, er, exists, cb) {
680
-
681
- //console.error('ps2', prefix, exists)
682
-
683
- if (!this.matches[index])
684
- this.matches[index] = Object.create(null)
685
-
686
- // If it doesn't exist, then just mark the lack of results
687
- if (!exists)
688
- return cb()
689
-
690
- if (prefix && isAbsolute(prefix) && !this.nomount) {
691
- var trail = /[\/\\]$/.test(prefix)
692
- if (prefix.charAt(0) === '/') {
693
- prefix = path.join(this.root, prefix)
694
- } else {
695
- prefix = path.resolve(this.root, prefix)
696
- if (trail)
697
- prefix += '/'
698
- }
699
- }
700
-
701
- if (process.platform === 'win32')
702
- prefix = prefix.replace(/\\/g, '/')
703
-
704
- // Mark this as a match
705
- this._emitMatch(index, prefix)
706
- cb()
707
- }
708
-
709
- // Returns either 'DIR', 'FILE', or false
710
- Glob.prototype._stat = function (f, cb) {
711
- var abs = this._makeAbs(f)
712
- var needDir = f.slice(-1) === '/'
713
-
714
- if (f.length > this.maxLength)
715
- return cb()
716
-
717
- if (!this.stat && ownProp(this.cache, abs)) {
718
- var c = this.cache[abs]
719
-
720
- if (Array.isArray(c))
721
- c = 'DIR'
722
-
723
- // It exists, but maybe not how we need it
724
- if (!needDir || c === 'DIR')
725
- return cb(null, c)
726
-
727
- if (needDir && c === 'FILE')
728
- return cb()
729
-
730
- // otherwise we have to stat, because maybe c=true
731
- // if we know it exists, but not what it is.
732
- }
733
-
734
- var exists
735
- var stat = this.statCache[abs]
736
- if (stat !== undefined) {
737
- if (stat === false)
738
- return cb(null, stat)
739
- else {
740
- var type = stat.isDirectory() ? 'DIR' : 'FILE'
741
- if (needDir && type === 'FILE')
742
- return cb()
743
- else
744
- return cb(null, type, stat)
745
- }
746
- }
747
-
748
- var self = this
749
- var statcb = inflight('stat\0' + abs, lstatcb_)
750
- if (statcb)
751
- fs.lstat(abs, statcb)
752
-
753
- function lstatcb_ (er, lstat) {
754
- if (lstat && lstat.isSymbolicLink()) {
755
- // If it's a symlink, then treat it as the target, unless
756
- // the target does not exist, then treat it as a file.
757
- return fs.stat(abs, function (er, stat) {
758
- if (er)
759
- self._stat2(f, abs, null, lstat, cb)
760
- else
761
- self._stat2(f, abs, er, stat, cb)
762
- })
763
- } else {
764
- self._stat2(f, abs, er, lstat, cb)
765
- }
766
- }
767
- }
768
-
769
- Glob.prototype._stat2 = function (f, abs, er, stat, cb) {
770
- if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {
771
- this.statCache[abs] = false
772
- return cb()
773
- }
774
-
775
- var needDir = f.slice(-1) === '/'
776
- this.statCache[abs] = stat
777
-
778
- if (abs.slice(-1) === '/' && stat && !stat.isDirectory())
779
- return cb(null, false, stat)
780
-
781
- var c = true
782
- if (stat)
783
- c = stat.isDirectory() ? 'DIR' : 'FILE'
784
- this.cache[abs] = this.cache[abs] || c
785
-
786
- if (needDir && c === 'FILE')
787
- return cb()
788
-
789
- return cb(null, c, stat)
790
- }