fluid_cli 0.1.2

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 (329) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +1 -0
  3. data/dev.yml +5 -0
  4. data/exe/fluid +24 -0
  5. data/lib/fluid_cli/api.rb +135 -0
  6. data/lib/fluid_cli/assets/post_auth_page/index.html.erb +34 -0
  7. data/lib/fluid_cli/assets/post_auth_page/style.css +58 -0
  8. data/lib/fluid_cli/command.rb +55 -0
  9. data/lib/fluid_cli/commands/help.rb +21 -0
  10. data/lib/fluid_cli/commands/login.rb +30 -0
  11. data/lib/fluid_cli/commands/logout.rb +38 -0
  12. data/lib/fluid_cli/commands/switch.rb +23 -0
  13. data/lib/fluid_cli/commands/theme/common/company_helper.rb +15 -0
  14. data/lib/fluid_cli/commands/theme/common/root_helper.rb +95 -0
  15. data/lib/fluid_cli/commands/theme/dev.rb +61 -0
  16. data/lib/fluid_cli/commands/theme/help.rb +21 -0
  17. data/lib/fluid_cli/commands/theme/init.rb +46 -0
  18. data/lib/fluid_cli/commands/theme/pull.rb +68 -0
  19. data/lib/fluid_cli/commands/theme/push.rb +132 -0
  20. data/lib/fluid_cli/commands/theme.rb +23 -0
  21. data/lib/fluid_cli/commands/whoami.rb +23 -0
  22. data/lib/fluid_cli/commands.rb +19 -0
  23. data/lib/fluid_cli/company_switcher.rb +69 -0
  24. data/lib/fluid_cli/context.rb +691 -0
  25. data/lib/fluid_cli/db.rb +114 -0
  26. data/lib/fluid_cli/entry_point.rb +10 -0
  27. data/lib/fluid_cli/environment.rb +32 -0
  28. data/lib/fluid_cli/file_system_listener.rb +29 -0
  29. data/lib/fluid_cli/form.rb +42 -0
  30. data/lib/fluid_cli/git.rb +319 -0
  31. data/lib/fluid_cli/http_request.rb +54 -0
  32. data/lib/fluid_cli/identity_auth/servlet.rb +39 -0
  33. data/lib/fluid_cli/identity_auth.rb +126 -0
  34. data/lib/fluid_cli/options.rb +38 -0
  35. data/lib/fluid_cli/theme/dev_server/certificate_manager.rb +79 -0
  36. data/lib/fluid_cli/theme/dev_server/errors.rb +9 -0
  37. data/lib/fluid_cli/theme/dev_server/header_hash.rb +98 -0
  38. data/lib/fluid_cli/theme/dev_server/hooks/file_change_hook.rb +39 -0
  39. data/lib/fluid_cli/theme/dev_server/hot_reload/resources/hot-reload-no-script.html +27 -0
  40. data/lib/fluid_cli/theme/dev_server/hot_reload/resources/hot_reload.js +28 -0
  41. data/lib/fluid_cli/theme/dev_server/hot_reload/resources/sse_client.js +43 -0
  42. data/lib/fluid_cli/theme/dev_server/hot_reload/resources/theme.js +16 -0
  43. data/lib/fluid_cli/theme/dev_server/hot_reload/script_injector.rb +54 -0
  44. data/lib/fluid_cli/theme/dev_server/hot_reload.rb +75 -0
  45. data/lib/fluid_cli/theme/dev_server/local_assets.rb +92 -0
  46. data/lib/fluid_cli/theme/dev_server/proxy.rb +235 -0
  47. data/lib/fluid_cli/theme/dev_server/proxy_param_builder.rb +82 -0
  48. data/lib/fluid_cli/theme/dev_server/reload_mode.rb +34 -0
  49. data/lib/fluid_cli/theme/dev_server/sse.rb +75 -0
  50. data/lib/fluid_cli/theme/dev_server/watcher.rb +57 -0
  51. data/lib/fluid_cli/theme/dev_server/web_server.rb +140 -0
  52. data/lib/fluid_cli/theme/dev_server.rb +289 -0
  53. data/lib/fluid_cli/theme/development_theme.rb +101 -0
  54. data/lib/fluid_cli/theme/file.rb +105 -0
  55. data/lib/fluid_cli/theme/forms/select.rb +33 -0
  56. data/lib/fluid_cli/theme/mime_type.rb +34 -0
  57. data/lib/fluid_cli/theme/presenters/theme_presenter.rb +49 -0
  58. data/lib/fluid_cli/theme/presenters/themes_presenter.rb +31 -0
  59. data/lib/fluid_cli/theme/root.rb +62 -0
  60. data/lib/fluid_cli/theme/syncer/checksums.rb +66 -0
  61. data/lib/fluid_cli/theme/syncer/downloader.rb +54 -0
  62. data/lib/fluid_cli/theme/syncer/error_reporter.rb +45 -0
  63. data/lib/fluid_cli/theme/syncer/merger.rb +53 -0
  64. data/lib/fluid_cli/theme/syncer/operation.rb +58 -0
  65. data/lib/fluid_cli/theme/syncer/standard_reporter.rb +32 -0
  66. data/lib/fluid_cli/theme/syncer/unsupported_script_warning.rb +90 -0
  67. data/lib/fluid_cli/theme/syncer/uploader/forms/apply_to_all.rb +41 -0
  68. data/lib/fluid_cli/theme/syncer/uploader/forms/apply_to_all_form.rb +37 -0
  69. data/lib/fluid_cli/theme/syncer/uploader/forms/base_strategy_form.rb +64 -0
  70. data/lib/fluid_cli/theme/syncer/uploader/forms/select_delete_strategy.rb +29 -0
  71. data/lib/fluid_cli/theme/syncer/uploader/forms/select_update_strategy.rb +30 -0
  72. data/lib/fluid_cli/theme/syncer/uploader/json_delete_handler.rb +49 -0
  73. data/lib/fluid_cli/theme/syncer/uploader/json_update_handler.rb +71 -0
  74. data/lib/fluid_cli/theme/syncer/uploader.rb +105 -0
  75. data/lib/fluid_cli/theme/syncer.rb +412 -0
  76. data/lib/fluid_cli/theme/theme.rb +186 -0
  77. data/lib/fluid_cli/theme/ui/sync_progress_bar.rb +22 -0
  78. data/lib/fluid_cli/thread_pool/job.rb +35 -0
  79. data/lib/fluid_cli/thread_pool.rb +49 -0
  80. data/lib/fluid_cli/version.rb +3 -0
  81. data/lib/fluid_cli.rb +59 -0
  82. data/vendor/deps/base64/.document +5 -0
  83. data/vendor/deps/base64/.gitignore +9 -0
  84. data/vendor/deps/base64/BSDL +22 -0
  85. data/vendor/deps/base64/COPYING +56 -0
  86. data/vendor/deps/base64/Gemfile +9 -0
  87. data/vendor/deps/base64/LEGAL +60 -0
  88. data/vendor/deps/base64/README.md +48 -0
  89. data/vendor/deps/base64/Rakefile +31 -0
  90. data/vendor/deps/base64/base64.gemspec +28 -0
  91. data/vendor/deps/base64/bin/console +14 -0
  92. data/vendor/deps/base64/bin/setup +8 -0
  93. data/vendor/deps/base64/lib/base64.rb +382 -0
  94. data/vendor/deps/base64/sig/base64.rbs +358 -0
  95. data/vendor/deps/base64/test/base64/test_base64.rb +115 -0
  96. data/vendor/deps/base64/test_sig/test_base64.rb +44 -0
  97. data/vendor/deps/cli-kit/REVISION +1 -0
  98. data/vendor/deps/cli-kit/lib/cli/kit/args/definition.rb +286 -0
  99. data/vendor/deps/cli-kit/lib/cli/kit/args/evaluation.rb +215 -0
  100. data/vendor/deps/cli-kit/lib/cli/kit/args/parser/node.rb +128 -0
  101. data/vendor/deps/cli-kit/lib/cli/kit/args/parser.rb +125 -0
  102. data/vendor/deps/cli-kit/lib/cli/kit/args/tokenizer.rb +130 -0
  103. data/vendor/deps/cli-kit/lib/cli/kit/args.rb +16 -0
  104. data/vendor/deps/cli-kit/lib/cli/kit/base_command.rb +30 -0
  105. data/vendor/deps/cli-kit/lib/cli/kit/command_help.rb +268 -0
  106. data/vendor/deps/cli-kit/lib/cli/kit/command_registry.rb +150 -0
  107. data/vendor/deps/cli-kit/lib/cli/kit/config.rb +137 -0
  108. data/vendor/deps/cli-kit/lib/cli/kit/core_ext.rb +28 -0
  109. data/vendor/deps/cli-kit/lib/cli/kit/error_handler.rb +166 -0
  110. data/vendor/deps/cli-kit/lib/cli/kit/executor.rb +92 -0
  111. data/vendor/deps/cli-kit/lib/cli/kit/ini.rb +91 -0
  112. data/vendor/deps/cli-kit/lib/cli/kit/levenshtein.rb +92 -0
  113. data/vendor/deps/cli-kit/lib/cli/kit/logger.rb +94 -0
  114. data/vendor/deps/cli-kit/lib/cli/kit/opts.rb +248 -0
  115. data/vendor/deps/cli-kit/lib/cli/kit/parse_args.rb +55 -0
  116. data/vendor/deps/cli-kit/lib/cli/kit/resolver.rb +66 -0
  117. data/vendor/deps/cli-kit/lib/cli/kit/support/test_helper.rb +260 -0
  118. data/vendor/deps/cli-kit/lib/cli/kit/support.rb +11 -0
  119. data/vendor/deps/cli-kit/lib/cli/kit/system.rb +290 -0
  120. data/vendor/deps/cli-kit/lib/cli/kit/util.rb +118 -0
  121. data/vendor/deps/cli-kit/lib/cli/kit/version.rb +7 -0
  122. data/vendor/deps/cli-kit/lib/cli/kit.rb +139 -0
  123. data/vendor/deps/cli-ui/REVISION +1 -0
  124. data/vendor/deps/cli-ui/lib/cli/ui/ansi.rb +218 -0
  125. data/vendor/deps/cli-ui/lib/cli/ui/color.rb +101 -0
  126. data/vendor/deps/cli-ui/lib/cli/ui/formatter.rb +219 -0
  127. data/vendor/deps/cli-ui/lib/cli/ui/frame/frame_stack.rb +67 -0
  128. data/vendor/deps/cli-ui/lib/cli/ui/frame/frame_style/box.rb +179 -0
  129. data/vendor/deps/cli-ui/lib/cli/ui/frame/frame_style/bracket.rb +152 -0
  130. data/vendor/deps/cli-ui/lib/cli/ui/frame/frame_style.rb +127 -0
  131. data/vendor/deps/cli-ui/lib/cli/ui/frame.rb +286 -0
  132. data/vendor/deps/cli-ui/lib/cli/ui/glyph.rb +92 -0
  133. data/vendor/deps/cli-ui/lib/cli/ui/os.rb +63 -0
  134. data/vendor/deps/cli-ui/lib/cli/ui/printer.rb +64 -0
  135. data/vendor/deps/cli-ui/lib/cli/ui/progress.rb +132 -0
  136. data/vendor/deps/cli-ui/lib/cli/ui/progress_reporter.rb +209 -0
  137. data/vendor/deps/cli-ui/lib/cli/ui/prompt/interactive_options.rb +583 -0
  138. data/vendor/deps/cli-ui/lib/cli/ui/prompt/options_handler.rb +36 -0
  139. data/vendor/deps/cli-ui/lib/cli/ui/prompt.rb +381 -0
  140. data/vendor/deps/cli-ui/lib/cli/ui/spinner/async.rb +48 -0
  141. data/vendor/deps/cli-ui/lib/cli/ui/spinner/spin_group.rb +602 -0
  142. data/vendor/deps/cli-ui/lib/cli/ui/spinner.rb +79 -0
  143. data/vendor/deps/cli-ui/lib/cli/ui/stdout_router.rb +399 -0
  144. data/vendor/deps/cli-ui/lib/cli/ui/table.rb +83 -0
  145. data/vendor/deps/cli-ui/lib/cli/ui/terminal.rb +55 -0
  146. data/vendor/deps/cli-ui/lib/cli/ui/truncater.rb +106 -0
  147. data/vendor/deps/cli-ui/lib/cli/ui/version.rb +8 -0
  148. data/vendor/deps/cli-ui/lib/cli/ui/widgets/base.rb +46 -0
  149. data/vendor/deps/cli-ui/lib/cli/ui/widgets/status.rb +79 -0
  150. data/vendor/deps/cli-ui/lib/cli/ui/widgets.rb +89 -0
  151. data/vendor/deps/cli-ui/lib/cli/ui/work_queue.rb +142 -0
  152. data/vendor/deps/cli-ui/lib/cli/ui/wrap.rb +61 -0
  153. data/vendor/deps/cli-ui/lib/cli/ui.rb +359 -0
  154. data/vendor/deps/cli-ui/vendor/reentrant_mutex.rb +78 -0
  155. data/vendor/deps/debug/CONTRIBUTING.md +573 -0
  156. data/vendor/deps/debug/Gemfile +10 -0
  157. data/vendor/deps/debug/LICENSE.txt +22 -0
  158. data/vendor/deps/debug/README.md +996 -0
  159. data/vendor/deps/debug/Rakefile +57 -0
  160. data/vendor/deps/debug/TODO.md +23 -0
  161. data/vendor/deps/debug/debug.gemspec +33 -0
  162. data/vendor/deps/debug/exe/rdbg +53 -0
  163. data/vendor/deps/debug/ext/debug/Makefile +273 -0
  164. data/vendor/deps/debug/ext/debug/debug.c +228 -0
  165. data/vendor/deps/debug/ext/debug/debug_version.h +1 -0
  166. data/vendor/deps/debug/ext/debug/extconf.rb +27 -0
  167. data/vendor/deps/debug/ext/debug/iseq_collector.c +93 -0
  168. data/vendor/deps/debug/lib/debug/abbrev_command.rb +77 -0
  169. data/vendor/deps/debug/lib/debug/breakpoint.rb +556 -0
  170. data/vendor/deps/debug/lib/debug/client.rb +263 -0
  171. data/vendor/deps/debug/lib/debug/color.rb +123 -0
  172. data/vendor/deps/debug/lib/debug/config.rb +592 -0
  173. data/vendor/deps/debug/lib/debug/console.rb +224 -0
  174. data/vendor/deps/debug/lib/debug/dap_custom/traceInspector.rb +336 -0
  175. data/vendor/deps/debug/lib/debug/debug.bundle +0 -0
  176. data/vendor/deps/debug/lib/debug/frame_info.rb +190 -0
  177. data/vendor/deps/debug/lib/debug/irb_integration.rb +37 -0
  178. data/vendor/deps/debug/lib/debug/local.rb +115 -0
  179. data/vendor/deps/debug/lib/debug/open.rb +13 -0
  180. data/vendor/deps/debug/lib/debug/open_nonstop.rb +15 -0
  181. data/vendor/deps/debug/lib/debug/prelude.rb +50 -0
  182. data/vendor/deps/debug/lib/debug/server.rb +534 -0
  183. data/vendor/deps/debug/lib/debug/server_cdp.rb +1348 -0
  184. data/vendor/deps/debug/lib/debug/server_dap.rb +1108 -0
  185. data/vendor/deps/debug/lib/debug/session.rb +2667 -0
  186. data/vendor/deps/debug/lib/debug/source_repository.rb +150 -0
  187. data/vendor/deps/debug/lib/debug/start.rb +5 -0
  188. data/vendor/deps/debug/lib/debug/thread_client.rb +1457 -0
  189. data/vendor/deps/debug/lib/debug/tracer.rb +241 -0
  190. data/vendor/deps/debug/lib/debug/version.rb +5 -0
  191. data/vendor/deps/debug/lib/debug.rb +9 -0
  192. data/vendor/deps/debug/misc/README.md.erb +660 -0
  193. data/vendor/deps/listen/.github/release-drafter.yml +17 -0
  194. data/vendor/deps/listen/.github/workflows/development.yml +67 -0
  195. data/vendor/deps/listen/.github/workflows/push.yml +12 -0
  196. data/vendor/deps/listen/.gitignore +28 -0
  197. data/vendor/deps/listen/.rspec +3 -0
  198. data/vendor/deps/listen/.rubocop.yml +283 -0
  199. data/vendor/deps/listen/.yardopts +11 -0
  200. data/vendor/deps/listen/CHANGELOG.md +1 -0
  201. data/vendor/deps/listen/CONTRIBUTING.md +45 -0
  202. data/vendor/deps/listen/Gemfile +33 -0
  203. data/vendor/deps/listen/Guardfile +26 -0
  204. data/vendor/deps/listen/LICENSE.txt +22 -0
  205. data/vendor/deps/listen/README.md +490 -0
  206. data/vendor/deps/listen/Rakefile +154 -0
  207. data/vendor/deps/listen/bin/listen +11 -0
  208. data/vendor/deps/listen/lib/listen/adapter/base.rb +129 -0
  209. data/vendor/deps/listen/lib/listen/adapter/bsd.rb +104 -0
  210. data/vendor/deps/listen/lib/listen/adapter/config.rb +31 -0
  211. data/vendor/deps/listen/lib/listen/adapter/darwin.rb +77 -0
  212. data/vendor/deps/listen/lib/listen/adapter/linux.rb +108 -0
  213. data/vendor/deps/listen/lib/listen/adapter/polling.rb +40 -0
  214. data/vendor/deps/listen/lib/listen/adapter/windows.rb +96 -0
  215. data/vendor/deps/listen/lib/listen/adapter.rb +43 -0
  216. data/vendor/deps/listen/lib/listen/backend.rb +40 -0
  217. data/vendor/deps/listen/lib/listen/change.rb +69 -0
  218. data/vendor/deps/listen/lib/listen/cli.rb +65 -0
  219. data/vendor/deps/listen/lib/listen/directory.rb +93 -0
  220. data/vendor/deps/listen/lib/listen/error.rb +11 -0
  221. data/vendor/deps/listen/lib/listen/event/config.rb +39 -0
  222. data/vendor/deps/listen/lib/listen/event/loop.rb +92 -0
  223. data/vendor/deps/listen/lib/listen/event/processor.rb +128 -0
  224. data/vendor/deps/listen/lib/listen/event/queue.rb +52 -0
  225. data/vendor/deps/listen/lib/listen/file.rb +95 -0
  226. data/vendor/deps/listen/lib/listen/fsm.rb +131 -0
  227. data/vendor/deps/listen/lib/listen/listener/config.rb +41 -0
  228. data/vendor/deps/listen/lib/listen/listener.rb +136 -0
  229. data/vendor/deps/listen/lib/listen/logger.rb +65 -0
  230. data/vendor/deps/listen/lib/listen/monotonic_time.rb +27 -0
  231. data/vendor/deps/listen/lib/listen/options.rb +24 -0
  232. data/vendor/deps/listen/lib/listen/queue_optimizer.rb +129 -0
  233. data/vendor/deps/listen/lib/listen/record/entry.rb +66 -0
  234. data/vendor/deps/listen/lib/listen/record/symlink_detector.rb +47 -0
  235. data/vendor/deps/listen/lib/listen/record.rb +122 -0
  236. data/vendor/deps/listen/lib/listen/silencer/controller.rb +50 -0
  237. data/vendor/deps/listen/lib/listen/silencer.rb +106 -0
  238. data/vendor/deps/listen/lib/listen/thread.rb +54 -0
  239. data/vendor/deps/listen/lib/listen/version.rb +5 -0
  240. data/vendor/deps/listen/lib/listen.rb +47 -0
  241. data/vendor/deps/listen/listen.gemspec +40 -0
  242. data/vendor/deps/listen/spec/acceptance/listen_spec.rb +320 -0
  243. data/vendor/deps/listen/spec/lib/listen/adapter/base_spec.rb +101 -0
  244. data/vendor/deps/listen/spec/lib/listen/adapter/bsd_spec.rb +13 -0
  245. data/vendor/deps/listen/spec/lib/listen/adapter/config_spec.rb +122 -0
  246. data/vendor/deps/listen/spec/lib/listen/adapter/darwin_spec.rb +82 -0
  247. data/vendor/deps/listen/spec/lib/listen/adapter/linux_spec.rb +199 -0
  248. data/vendor/deps/listen/spec/lib/listen/adapter/polling_spec.rb +83 -0
  249. data/vendor/deps/listen/spec/lib/listen/adapter/windows_spec.rb +13 -0
  250. data/vendor/deps/listen/spec/lib/listen/adapter_spec.rb +69 -0
  251. data/vendor/deps/listen/spec/lib/listen/backend_spec.rb +82 -0
  252. data/vendor/deps/listen/spec/lib/listen/change_spec.rb +102 -0
  253. data/vendor/deps/listen/spec/lib/listen/cli_spec.rb +116 -0
  254. data/vendor/deps/listen/spec/lib/listen/directory_spec.rb +284 -0
  255. data/vendor/deps/listen/spec/lib/listen/event/config_spec.rb +33 -0
  256. data/vendor/deps/listen/spec/lib/listen/event/loop_spec.rb +118 -0
  257. data/vendor/deps/listen/spec/lib/listen/event/processor_spec.rb +250 -0
  258. data/vendor/deps/listen/spec/lib/listen/event/queue_spec.rb +118 -0
  259. data/vendor/deps/listen/spec/lib/listen/file_spec.rb +254 -0
  260. data/vendor/deps/listen/spec/lib/listen/fsm_spec.rb +147 -0
  261. data/vendor/deps/listen/spec/lib/listen/listener/config_spec.rb +29 -0
  262. data/vendor/deps/listen/spec/lib/listen/listener_spec.rb +321 -0
  263. data/vendor/deps/listen/spec/lib/listen/logger_spec.rb +212 -0
  264. data/vendor/deps/listen/spec/lib/listen/monotonic_time_spec.rb +58 -0
  265. data/vendor/deps/listen/spec/lib/listen/queue_optimizer_spec.rb +111 -0
  266. data/vendor/deps/listen/spec/lib/listen/record_spec.rb +424 -0
  267. data/vendor/deps/listen/spec/lib/listen/silencer/controller_spec.rb +97 -0
  268. data/vendor/deps/listen/spec/lib/listen/silencer_spec.rb +109 -0
  269. data/vendor/deps/listen/spec/lib/listen/thread_spec.rb +133 -0
  270. data/vendor/deps/listen/spec/lib/listen_spec.rb +25 -0
  271. data/vendor/deps/listen/spec/spec_helper.rb +49 -0
  272. data/vendor/deps/listen/spec/support/acceptance_helper.rb +260 -0
  273. data/vendor/deps/listen/spec/support/fixtures_helper.rb +32 -0
  274. data/vendor/deps/listen/spec/support/platform_helper.rb +17 -0
  275. data/vendor/deps/observer/.github/dependabot.yml +6 -0
  276. data/vendor/deps/observer/.github/workflows/test.yml +33 -0
  277. data/vendor/deps/observer/.gitignore +8 -0
  278. data/vendor/deps/observer/BSDL +22 -0
  279. data/vendor/deps/observer/COPYING +56 -0
  280. data/vendor/deps/observer/Gemfile +9 -0
  281. data/vendor/deps/observer/README.md +139 -0
  282. data/vendor/deps/observer/Rakefile +10 -0
  283. data/vendor/deps/observer/bin/console +14 -0
  284. data/vendor/deps/observer/bin/setup +8 -0
  285. data/vendor/deps/observer/lib/observer.rb +229 -0
  286. data/vendor/deps/observer/observer.gemspec +32 -0
  287. data/vendor/deps/observer/test/test_observer.rb +66 -0
  288. data/vendor/deps/webrick/.gitignore +9 -0
  289. data/vendor/deps/webrick/Gemfile +3 -0
  290. data/vendor/deps/webrick/LICENSE.txt +22 -0
  291. data/vendor/deps/webrick/README.md +61 -0
  292. data/vendor/deps/webrick/Rakefile +10 -0
  293. data/vendor/deps/webrick/lib/webrick/accesslog.rb +157 -0
  294. data/vendor/deps/webrick/lib/webrick/cgi.rb +313 -0
  295. data/vendor/deps/webrick/lib/webrick/compat.rb +36 -0
  296. data/vendor/deps/webrick/lib/webrick/config.rb +158 -0
  297. data/vendor/deps/webrick/lib/webrick/cookie.rb +172 -0
  298. data/vendor/deps/webrick/lib/webrick/htmlutils.rb +30 -0
  299. data/vendor/deps/webrick/lib/webrick/httpauth/authenticator.rb +117 -0
  300. data/vendor/deps/webrick/lib/webrick/httpauth/basicauth.rb +116 -0
  301. data/vendor/deps/webrick/lib/webrick/httpauth/digestauth.rb +395 -0
  302. data/vendor/deps/webrick/lib/webrick/httpauth/htdigest.rb +132 -0
  303. data/vendor/deps/webrick/lib/webrick/httpauth/htgroup.rb +97 -0
  304. data/vendor/deps/webrick/lib/webrick/httpauth/htpasswd.rb +158 -0
  305. data/vendor/deps/webrick/lib/webrick/httpauth/userdb.rb +53 -0
  306. data/vendor/deps/webrick/lib/webrick/httpauth.rb +96 -0
  307. data/vendor/deps/webrick/lib/webrick/httpproxy.rb +354 -0
  308. data/vendor/deps/webrick/lib/webrick/httprequest.rb +636 -0
  309. data/vendor/deps/webrick/lib/webrick/httpresponse.rb +564 -0
  310. data/vendor/deps/webrick/lib/webrick/https.rb +152 -0
  311. data/vendor/deps/webrick/lib/webrick/httpserver.rb +294 -0
  312. data/vendor/deps/webrick/lib/webrick/httpservlet/abstract.rb +152 -0
  313. data/vendor/deps/webrick/lib/webrick/httpservlet/cgi_runner.rb +47 -0
  314. data/vendor/deps/webrick/lib/webrick/httpservlet/cgihandler.rb +126 -0
  315. data/vendor/deps/webrick/lib/webrick/httpservlet/erbhandler.rb +88 -0
  316. data/vendor/deps/webrick/lib/webrick/httpservlet/filehandler.rb +552 -0
  317. data/vendor/deps/webrick/lib/webrick/httpservlet/prochandler.rb +47 -0
  318. data/vendor/deps/webrick/lib/webrick/httpservlet.rb +23 -0
  319. data/vendor/deps/webrick/lib/webrick/httpstatus.rb +194 -0
  320. data/vendor/deps/webrick/lib/webrick/httputils.rb +512 -0
  321. data/vendor/deps/webrick/lib/webrick/httpversion.rb +76 -0
  322. data/vendor/deps/webrick/lib/webrick/log.rb +156 -0
  323. data/vendor/deps/webrick/lib/webrick/server.rb +381 -0
  324. data/vendor/deps/webrick/lib/webrick/ssl.rb +215 -0
  325. data/vendor/deps/webrick/lib/webrick/utils.rb +265 -0
  326. data/vendor/deps/webrick/lib/webrick/version.rb +18 -0
  327. data/vendor/deps/webrick/lib/webrick.rb +232 -0
  328. data/vendor/deps/webrick/webrick.gemspec +74 -0
  329. metadata +412 -0
@@ -0,0 +1,129 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'listen/options'
4
+ require 'listen/record'
5
+ require 'listen/change'
6
+ require 'listen/thread'
7
+
8
+ module Listen
9
+ module Adapter
10
+ class Base
11
+ attr_reader :options, :config
12
+
13
+ # TODO: only used by tests
14
+ DEFAULTS = {}.freeze
15
+
16
+ def initialize(config)
17
+ @started = false
18
+ @config = config
19
+
20
+ @configured = nil
21
+
22
+ fail 'No directories to watch!' if config.directories.empty?
23
+
24
+ defaults = self.class.const_get('DEFAULTS')
25
+ @options = Listen::Options.new(config.adapter_options, defaults)
26
+ rescue
27
+ _log_exception 'adapter config failed: %s:%s called from: %s', caller
28
+ raise
29
+ end
30
+
31
+ # TODO: it's a separate method as a temporary workaround for tests
32
+ # rubocop:disable Metrics/MethodLength
33
+ def configure
34
+ if @configured
35
+ Listen.logger.warn('Adapter already configured!')
36
+ return
37
+ end
38
+
39
+ @configured = true
40
+
41
+ @callbacks ||= {}
42
+ config.directories.each do |dir|
43
+ callback = @callbacks[dir] || lambda do |event|
44
+ _process_event(dir, event)
45
+ end
46
+ @callbacks[dir] = callback
47
+ _configure(dir, &callback)
48
+ end
49
+
50
+ @snapshots ||= {}
51
+ # TODO: separate config per directory (some day maybe)
52
+ change_config = Change::Config.new(config.queue, config.silencer)
53
+ config.directories.each do |dir|
54
+ record = Record.new(dir, config.silencer)
55
+ snapshot = Change.new(change_config, record)
56
+ @snapshots[dir] = snapshot
57
+ end
58
+ end
59
+ # rubocop:enable Metrics/MethodLength
60
+
61
+ def started?
62
+ @started
63
+ end
64
+
65
+ def start
66
+ configure
67
+
68
+ if started?
69
+ Listen.logger.warn('Adapter already started!')
70
+ return
71
+ end
72
+
73
+ @started = true
74
+
75
+ @run_thread = Listen::Thread.new("run_thread") do
76
+ @snapshots.each_value do |snapshot|
77
+ _timed('Record.build()') { snapshot.record.build }
78
+ end
79
+ _run
80
+ end
81
+ end
82
+
83
+ def stop
84
+ _stop
85
+ config.queue.close # this causes queue.pop to return `nil` to the front-end
86
+ end
87
+
88
+ private
89
+
90
+ def _stop
91
+ @run_thread&.kill
92
+ @run_thread = nil
93
+ end
94
+
95
+ def _timed(title)
96
+ start = MonotonicTime.now
97
+ yield
98
+ diff = MonotonicTime.now - start
99
+ Listen.logger.info format('%s: %.05f seconds', title, diff)
100
+ rescue
101
+ Listen.logger.warn "#{title} crashed: #{$ERROR_INFO.inspect}"
102
+ raise
103
+ end
104
+
105
+ # TODO: allow backend adapters to pass specific invalidation objects
106
+ # e.g. Darwin -> DirRescan, INotify -> MoveScan, etc.
107
+ def _queue_change(type, dir, rel_path, options)
108
+ @snapshots[dir].invalidate(type, rel_path, options)
109
+ end
110
+
111
+ def _log_exception(msg, caller_stack)
112
+ formatted = format(
113
+ msg,
114
+ $ERROR_INFO,
115
+ $ERROR_POSITION * "\n",
116
+ caller_stack * "\n"
117
+ )
118
+
119
+ Listen.logger.error(formatted)
120
+ end
121
+
122
+ class << self
123
+ def usable?
124
+ const_get('OS_REGEXP') =~ RbConfig::CONFIG['target_os']
125
+ end
126
+ end
127
+ end
128
+ end
129
+ end
@@ -0,0 +1,104 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Listener implementation for BSD's `kqueue`.
4
+ # @see http://www.freebsd.org/cgi/man.cgi?query=kqueue
5
+ # @see https://github.com/mat813/rb-kqueue/blob/master/lib/rb-kqueue/queue.rb
6
+ #
7
+ module Listen
8
+ module Adapter
9
+ class BSD < Base
10
+ OS_REGEXP = /bsd|dragonfly/i
11
+
12
+ DEFAULTS = {
13
+ events: [
14
+ :delete,
15
+ :write,
16
+ :extend,
17
+ :attrib,
18
+ :rename
19
+ # :link, :revoke
20
+ ]
21
+ }.freeze
22
+
23
+ BUNDLER_DECLARE_GEM = <<-EOS.gsub(/^ {6}/, '')
24
+ Please add the following to your Gemfile to avoid polling for changes:
25
+ gem 'rb-kqueue', '>= 0.2'
26
+ EOS
27
+
28
+ def self.usable?
29
+ return false unless super
30
+ require 'rb-kqueue'
31
+ require 'find'
32
+ true
33
+ rescue LoadError
34
+ Listen.adapter_warn(BUNDLER_DECLARE_GEM)
35
+ false
36
+ end
37
+
38
+ private
39
+
40
+ def _configure(directory, &callback)
41
+ @worker ||= KQueue::Queue.new
42
+ @callback = callback
43
+ # use Record to make a snapshot of dir, so we
44
+ # can detect new files
45
+ _find(directory.to_s) { |path| _watch_file(path, @worker) }
46
+ end
47
+
48
+ def _run
49
+ @worker.run
50
+ end
51
+
52
+ def _process_event(dir, event)
53
+ full_path = _event_path(event)
54
+ if full_path.directory?
55
+ # Force dir content tracking to kick in, or we won't have
56
+ # names of added files
57
+ _queue_change(:dir, dir, '.', recursive: true)
58
+ elsif full_path.exist?
59
+ path = full_path.relative_path_from(dir)
60
+ _queue_change(:file, dir, path.to_s, change: _change(event.flags))
61
+ end
62
+
63
+ # If it is a directory, and it has a write flag, it means a
64
+ # file has been added so find out which and deal with it.
65
+ # No need to check for removed files, kqueue will forget them
66
+ # when the vfs does.
67
+ _watch_for_new_file(event) if full_path.directory?
68
+ end
69
+
70
+ def _change(event_flags)
71
+ { modified: [:attrib, :extend],
72
+ added: [:write],
73
+ removed: [:rename, :delete] }.each do |change, flags|
74
+ return change unless (flags & event_flags).empty?
75
+ end
76
+ nil
77
+ end
78
+
79
+ def _event_path(event)
80
+ Pathname.new(event.watcher.path)
81
+ end
82
+
83
+ def _watch_for_new_file(event)
84
+ queue = event.watcher.queue
85
+ _find(_event_path(event).to_s) do |file_path|
86
+ unless queue.watchers.find { |_, v| v.path == file_path.to_s }
87
+ _watch_file(file_path, queue)
88
+ end
89
+ end
90
+ end
91
+
92
+ def _watch_file(path, queue)
93
+ queue.watch_file(path, *options.events, &@callback)
94
+ rescue Errno::ENOENT => e
95
+ Listen.logger.warn "kqueue: watch file failed: #{e.message}"
96
+ end
97
+
98
+ # Quick rubocop workaround
99
+ def _find(*paths, &block)
100
+ Find.send(:find, *paths, &block)
101
+ end
102
+ end
103
+ end
104
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'pathname'
4
+
5
+ module Listen
6
+ module Adapter
7
+ class Config
8
+ attr_reader :directories, :silencer, :queue, :adapter_options
9
+
10
+ def initialize(directories, queue, silencer, adapter_options)
11
+ # Default to current directory if no directories are supplied
12
+ directories = [Dir.pwd] if directories.to_a.empty?
13
+
14
+ # TODO: fix (flatten, array, compact?)
15
+ @directories = directories.map do |directory|
16
+ Pathname.new(directory.to_s).realpath
17
+ end
18
+
19
+ @directories.each do |pathname|
20
+ unless pathname.directory?
21
+ fail ArgumentError, "must be a directory: #{pathname}"
22
+ end
23
+ end
24
+
25
+ @silencer = silencer
26
+ @queue = queue
27
+ @adapter_options = adapter_options
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,77 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'listen/thread'
4
+
5
+ module Listen
6
+ module Adapter
7
+ # Adapter implementation for Mac OS X `FSEvents`.
8
+ #
9
+ class Darwin < Base
10
+ OS_REGEXP = /darwin(?<major_version>(1|2)\d+)/i
11
+
12
+ # The default delay between checking for changes.
13
+ DEFAULTS = { latency: 0.1 }.freeze
14
+
15
+ INCOMPATIBLE_GEM_VERSION = <<-EOS.gsub(/^ {8}/, '')
16
+ rb-fsevent > 0.9.4 no longer supports OS X 10.6 through 10.8.
17
+
18
+ Please add the following to your Gemfile to avoid polling for changes:
19
+ require 'rbconfig'
20
+ if RbConfig::CONFIG['target_os'] =~ /darwin(1[0-3])/i
21
+ gem 'rb-fsevent', '<= 0.9.4'
22
+ end
23
+ EOS
24
+
25
+ def self.usable?
26
+ version = RbConfig::CONFIG['target_os'][OS_REGEXP, :major_version]
27
+ return false unless version
28
+ return true if version.to_i >= 13 # darwin13 is OS X 10.9
29
+
30
+ require 'rb-fsevent'
31
+ fsevent_version = Gem::Version.new(FSEvent::VERSION)
32
+ return true if fsevent_version <= Gem::Version.new('0.9.4')
33
+ Listen.adapter_warn(INCOMPATIBLE_GEM_VERSION)
34
+ false
35
+ end
36
+
37
+ private
38
+
39
+ def _configure(dir, &callback)
40
+ @callbacks[dir] = callback
41
+ end
42
+
43
+ def _run
44
+ require 'rb-fsevent'
45
+ worker = FSEvent.new
46
+ dirs_to_watch = @callbacks.keys.map(&:to_s)
47
+ Listen.logger.info { "fsevent: watching: #{dirs_to_watch.inspect}" }
48
+ worker.watch(dirs_to_watch, { latency: options.latency }, &method(:_process_changes))
49
+ @worker_thread = Listen::Thread.new("worker_thread") { worker.run }
50
+ end
51
+
52
+ def _process_changes(dirs)
53
+ dirs.each do |dir|
54
+ dir = Pathname.new(dir.sub(%r{/$}, ''))
55
+
56
+ @callbacks.each do |watched_dir, callback|
57
+ if watched_dir.eql?(dir) || Listen::Directory.ascendant_of?(watched_dir, dir)
58
+ callback.call(dir)
59
+ end
60
+ end
61
+ end
62
+ end
63
+
64
+ def _process_event(dir, path)
65
+ Listen.logger.debug { "fsevent: processing path: #{path.inspect}" }
66
+ # TODO: does this preserve symlinks?
67
+ rel_path = path.relative_path_from(dir).to_s
68
+ _queue_change(:dir, dir, rel_path, recursive: true)
69
+ end
70
+
71
+ def _stop
72
+ @worker_thread&.kill
73
+ super
74
+ end
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,108 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Listen
4
+ module Adapter
5
+ # @see https://github.com/nex3/rb-inotify
6
+ class Linux < Base
7
+ OS_REGEXP = /linux/i
8
+
9
+ DEFAULTS = {
10
+ events: [
11
+ :recursive,
12
+ :attrib,
13
+ :create,
14
+ :modify,
15
+ :delete,
16
+ :move,
17
+ :close_write
18
+ ],
19
+ wait_for_delay: 0.1
20
+ }.freeze
21
+
22
+ private
23
+
24
+ README_URL = 'https://github.com/guard/listen'\
25
+ '/blob/master/README.md#increasing-the-amount-of-inotify-watchers'
26
+
27
+ def _configure(directory, &callback)
28
+ require 'rb-inotify'
29
+ @worker ||= ::INotify::Notifier.new
30
+ @worker.watch(directory.to_s, *options.events, &callback)
31
+ rescue Errno::ENOSPC
32
+ raise ::Listen::Error::INotifyMaxWatchesExceeded, <<~EOS
33
+ Unable to monitor directories for changes because iNotify max watches exceeded. See #{README_URL} .
34
+ EOS
35
+ end
36
+
37
+ def _run
38
+ @worker.run
39
+ end
40
+
41
+ # rubocop:disable Metrics/MethodLength
42
+ def _process_event(dir, event)
43
+ # NOTE: avoid using event.absolute_name since new API
44
+ # will need to have a custom recursion implemented
45
+ # to properly match events to configured directories
46
+ path = Pathname.new(event.watcher.path) + event.name
47
+ rel_path = path.relative_path_from(dir).to_s
48
+
49
+ Listen.logger.debug { "inotify: #{rel_path} (#{event.flags.inspect})" }
50
+
51
+ if /1|true/ =~ ENV['LISTEN_GEM_SIMULATE_FSEVENT']
52
+ if (event.flags & [:moved_to, :moved_from]) || _dir_event?(event)
53
+ rel_path = path.dirname.relative_path_from(dir).to_s
54
+ end
55
+ _queue_change(:dir, dir, rel_path, {})
56
+ return
57
+ end
58
+
59
+ return if _skip_event?(event)
60
+
61
+ cookie_params = event.cookie.zero? ? {} : { cookie: event.cookie }
62
+
63
+ # NOTE: don't pass options to force rescanning the directory, so we can
64
+ # detect moving/deleting a whole tree
65
+ if _dir_event?(event)
66
+ _queue_change(:dir, dir, rel_path, cookie_params)
67
+ return
68
+ end
69
+
70
+ params = cookie_params.merge(change: _change(event.flags))
71
+
72
+ _queue_change(:file, dir, rel_path, params)
73
+ end
74
+ # rubocop:enable Metrics/MethodLength
75
+
76
+ def _skip_event?(event)
77
+ # Event on root directory
78
+ return true if event.name == ''
79
+ # INotify reports changes to files inside directories as events
80
+ # on the directories themselves too.
81
+ #
82
+ # @see http://linux.die.net/man/7/inotify
83
+ _dir_event?(event) && (event.flags & [:close, :modify]).any?
84
+ end
85
+
86
+ def _change(event_flags)
87
+ { modified: [:attrib, :close_write],
88
+ moved_to: [:moved_to],
89
+ moved_from: [:moved_from],
90
+ added: [:create],
91
+ removed: [:delete] }.each do |change, flags|
92
+ return change unless (flags & event_flags).empty?
93
+ end
94
+ nil
95
+ end
96
+
97
+ def _dir_event?(event)
98
+ event.flags.include?(:isdir)
99
+ end
100
+
101
+ def _stop
102
+ @worker&.close
103
+
104
+ super
105
+ end
106
+ end
107
+ end
108
+ end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Listen
4
+ module Adapter
5
+ # Polling Adapter that works cross-platform and
6
+ # has no dependencies. This is the adapter that
7
+ # uses the most CPU processing power and has higher
8
+ # file IO than the other implementations.
9
+ #
10
+ class Polling < Base
11
+ OS_REGEXP = // # match every OS
12
+
13
+ DEFAULTS = { latency: 1.0, wait_for_delay: 0.05 }.freeze
14
+
15
+ private
16
+
17
+ def _configure(_, &callback)
18
+ @polling_callbacks ||= []
19
+ @polling_callbacks << callback
20
+ end
21
+
22
+ def _run
23
+ loop do
24
+ start = MonotonicTime.now
25
+ @polling_callbacks.each do |callback|
26
+ callback.call(nil)
27
+ if (nap_time = options.latency - (MonotonicTime.now - start)) > 0
28
+ # TODO: warn if nap_time is negative (polling too slow)
29
+ sleep(nap_time)
30
+ end
31
+ end
32
+ end
33
+ end
34
+
35
+ def _process_event(dir, _)
36
+ _queue_change(:dir, dir, '.', recursive: true)
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,96 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Listen
4
+ module Adapter
5
+ # Adapter implementation for Windows `wdm`.
6
+ #
7
+ class Windows < Base
8
+ OS_REGEXP = /mswin|mingw|cygwin/i
9
+
10
+ BUNDLER_DECLARE_GEM = <<-EOS.gsub(/^ {6}/, '')
11
+ Please add the following to your Gemfile to avoid polling for changes:
12
+ gem 'wdm', '>= 0.1.0'
13
+ EOS
14
+
15
+ def self.usable?
16
+ return false unless super
17
+ require 'wdm'
18
+ true
19
+ rescue LoadError
20
+ Listen.logger.debug format('wdm - load failed: %s:%s', $ERROR_INFO,
21
+ $ERROR_POSITION * "\n")
22
+
23
+ Listen.adapter_warn(BUNDLER_DECLARE_GEM)
24
+ false
25
+ end
26
+
27
+ private
28
+
29
+ def _configure(dir)
30
+ require 'wdm'
31
+ Listen.logger.debug 'wdm - starting...'
32
+ @worker ||= WDM::Monitor.new
33
+ @worker.watch_recursively(dir.to_s, :files) do |change|
34
+ yield([:file, change])
35
+ end
36
+
37
+ @worker.watch_recursively(dir.to_s, :directories) do |change|
38
+ yield([:dir, change])
39
+ end
40
+
41
+ @worker.watch_recursively(dir.to_s, :attributes, :last_write) do |change|
42
+ yield([:attr, change])
43
+ end
44
+ end
45
+
46
+ def _run
47
+ @worker.run!
48
+ end
49
+
50
+ # rubocop:disable Metrics/MethodLength
51
+ def _process_event(dir, event)
52
+ Listen.logger.debug "wdm - callback: #{event.inspect}"
53
+
54
+ type, change = event
55
+
56
+ full_path = Pathname(change.path)
57
+
58
+ rel_path = full_path.relative_path_from(dir).to_s
59
+
60
+ options = { change: _change(change.type) }
61
+
62
+ case type
63
+ when :file
64
+ _queue_change(:file, dir, rel_path, options)
65
+ when :attr
66
+ unless full_path.directory?
67
+ _queue_change(:file, dir, rel_path, options)
68
+ end
69
+ when :dir
70
+ case change.type
71
+ when :removed
72
+ # TODO: check if watched dir?
73
+ _queue_change(:dir, dir, Pathname(rel_path).dirname.to_s, {})
74
+ when :added
75
+ _queue_change(:dir, dir, rel_path, {})
76
+ # do nothing - changed directory means either:
77
+ # - removed subdirs (handled above)
78
+ # - added subdirs (handled above)
79
+ # - removed files (handled by _file_callback)
80
+ # - added files (handled by _file_callback)
81
+ # so what's left?
82
+ end
83
+ end
84
+ end
85
+ # rubocop:enable Metrics/MethodLength
86
+
87
+ def _change(type)
88
+ { modified: [:modified, :attrib], # TODO: is attrib really passed?
89
+ added: [:added, :renamed_new_file],
90
+ removed: [:removed, :renamed_old_file] }.find do |change, types|
91
+ types.include?(type) and break change
92
+ end
93
+ end
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'listen/adapter/base'
4
+ require 'listen/adapter/bsd'
5
+ require 'listen/adapter/darwin'
6
+ require 'listen/adapter/linux'
7
+ require 'listen/adapter/polling'
8
+ require 'listen/adapter/windows'
9
+
10
+ module Listen
11
+ module Adapter
12
+ OPTIMIZED_ADAPTERS = [Darwin, Linux, BSD, Windows].freeze
13
+ POLLING_FALLBACK_MESSAGE = 'Listen will be polling for changes.'\
14
+ 'Learn more at https://github.com/guard/listen#listen-adapters.'
15
+
16
+ class << self
17
+ def select(options = {})
18
+ Listen.logger.debug 'Adapter: considering polling ...'
19
+ return Polling if options[:force_polling]
20
+ Listen.logger.debug 'Adapter: considering optimized backend...'
21
+ return _usable_adapter_class if _usable_adapter_class
22
+ Listen.logger.debug 'Adapter: falling back to polling...'
23
+ _warn_polling_fallback(options)
24
+ Polling
25
+ rescue
26
+ Listen.logger.warn format('Adapter: failed: %s:%s', $ERROR_POSITION.inspect,
27
+ $ERROR_POSITION * "\n")
28
+ raise
29
+ end
30
+
31
+ private
32
+
33
+ def _usable_adapter_class
34
+ OPTIMIZED_ADAPTERS.find(&:usable?)
35
+ end
36
+
37
+ def _warn_polling_fallback(options)
38
+ msg = options.fetch(:polling_fallback_message, POLLING_FALLBACK_MESSAGE)
39
+ Listen.adapter_warn("[Listen warning]:\n #{msg}") if msg
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'listen/adapter'
4
+ require 'listen/adapter/base'
5
+ require 'listen/adapter/config'
6
+
7
+ require 'forwardable'
8
+
9
+ # This class just aggregates configuration object to avoid Listener specs
10
+ # from exploding with huge test setup blocks
11
+ module Listen
12
+ class Backend
13
+ extend Forwardable
14
+
15
+ def initialize(directories, queue, silencer, config)
16
+ adapter_select_opts = config.adapter_select_options
17
+
18
+ adapter_class = Adapter.select(adapter_select_opts)
19
+
20
+ # Use default from adapter if possible
21
+ @min_delay_between_events = config.min_delay_between_events
22
+ @min_delay_between_events ||= adapter_class::DEFAULTS[:wait_for_delay]
23
+ @min_delay_between_events ||= 0.1
24
+
25
+ adapter_opts = config.adapter_instance_options(adapter_class)
26
+
27
+ aconfig = Adapter::Config.new(directories, queue, silencer, adapter_opts)
28
+ @adapter = adapter_class.new(aconfig)
29
+ end
30
+
31
+ delegate start: :adapter
32
+ delegate stop: :adapter
33
+
34
+ attr_reader :min_delay_between_events
35
+
36
+ private
37
+
38
+ attr_reader :adapter
39
+ end
40
+ end