roast-ai 0.4.4 → 0.4.6

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 (232) hide show
  1. checksums.yaml +4 -4
  2. data/.github/CODEOWNERS +2 -0
  3. data/.github/workflows/ci.yaml +1 -0
  4. data/.gitignore +0 -26
  5. data/.rubocop.yml +13 -0
  6. data/.rubocop_todo.yml +21 -0
  7. data/CHANGELOG.md +37 -0
  8. data/Gemfile +4 -0
  9. data/Gemfile.lock +43 -1
  10. data/bin/rubocop +27 -0
  11. data/bin/spoom +27 -0
  12. data/bin/srb +27 -0
  13. data/bin/srb-rbi +27 -0
  14. data/bin/tapioca +27 -0
  15. data/docs/INSTRUMENTATION.md +3 -3
  16. data/dsl/simple.rb +10 -0
  17. data/examples/retry/workflow.yml +23 -0
  18. data/lib/roast/dsl/executor.rb +26 -0
  19. data/lib/roast/dsl.rb +7 -0
  20. data/lib/roast/errors.rb +1 -0
  21. data/lib/roast/factories/api_provider_factory.rb +1 -0
  22. data/lib/roast/helpers/function_caching_interceptor.rb +3 -0
  23. data/lib/roast/helpers/logger.rb +6 -9
  24. data/lib/roast/helpers/metadata_access.rb +1 -0
  25. data/lib/roast/helpers/minitest_coverage_runner.rb +1 -0
  26. data/lib/roast/helpers/path_resolver.rb +8 -18
  27. data/lib/roast/helpers/prompt_loader.rb +3 -2
  28. data/lib/roast/helpers/timeout_handler.rb +3 -5
  29. data/lib/roast/initializers.rb +1 -0
  30. data/lib/roast/resources/api_resource.rb +4 -3
  31. data/lib/roast/resources/base_resource.rb +1 -0
  32. data/lib/roast/resources/directory_resource.rb +1 -0
  33. data/lib/roast/resources/file_resource.rb +1 -0
  34. data/lib/roast/resources/none_resource.rb +1 -0
  35. data/lib/roast/resources/url_resource.rb +2 -1
  36. data/lib/roast/resources.rb +1 -2
  37. data/lib/roast/services/context_threshold_checker.rb +1 -0
  38. data/lib/roast/services/token_counting_service.rb +1 -0
  39. data/lib/roast/tools/apply_diff.rb +1 -0
  40. data/lib/roast/tools/ask_user.rb +1 -0
  41. data/lib/roast/tools/bash.rb +1 -0
  42. data/lib/roast/tools/cmd.rb +1 -0
  43. data/lib/roast/tools/coding_agent.rb +1 -0
  44. data/lib/roast/tools/context_summarizer.rb +1 -0
  45. data/lib/roast/tools/grep.rb +1 -0
  46. data/lib/roast/tools/helpers/coding_agent_message_formatter.rb +1 -0
  47. data/lib/roast/tools/read_file.rb +1 -0
  48. data/lib/roast/tools/search_file.rb +1 -0
  49. data/lib/roast/tools/swarm.rb +1 -0
  50. data/lib/roast/tools/update_files.rb +1 -0
  51. data/lib/roast/tools/write_file.rb +1 -0
  52. data/lib/roast/tools.rb +2 -0
  53. data/lib/roast/value_objects/api_token.rb +1 -0
  54. data/lib/roast/value_objects/step_name.rb +1 -0
  55. data/lib/roast/value_objects/uri_base.rb +1 -0
  56. data/lib/roast/value_objects/workflow_path.rb +1 -0
  57. data/lib/roast/value_objects.rb +1 -0
  58. data/lib/roast/version.rb +2 -1
  59. data/lib/roast/workflow/agent_step.rb +1 -0
  60. data/lib/roast/workflow/api_configuration.rb +1 -0
  61. data/lib/roast/workflow/base_iteration_step.rb +1 -0
  62. data/lib/roast/workflow/base_step.rb +1 -0
  63. data/lib/roast/workflow/base_workflow.rb +1 -0
  64. data/lib/roast/workflow/case_executor.rb +1 -0
  65. data/lib/roast/workflow/case_step.rb +1 -0
  66. data/lib/roast/workflow/command_executor.rb +1 -0
  67. data/lib/roast/workflow/conditional_executor.rb +1 -0
  68. data/lib/roast/workflow/conditional_step.rb +1 -0
  69. data/lib/roast/workflow/configuration.rb +9 -0
  70. data/lib/roast/workflow/configuration_loader.rb +4 -1
  71. data/lib/roast/workflow/context_manager.rb +1 -0
  72. data/lib/roast/workflow/context_path_resolver.rb +1 -0
  73. data/lib/roast/workflow/dot_access_hash.rb +1 -0
  74. data/lib/roast/workflow/each_step.rb +1 -0
  75. data/lib/roast/workflow/error_handler.rb +39 -3
  76. data/lib/roast/workflow/expression_evaluator.rb +1 -0
  77. data/lib/roast/workflow/expression_utils.rb +1 -0
  78. data/lib/roast/workflow/file_state_repository.rb +2 -1
  79. data/lib/roast/workflow/input_executor.rb +1 -0
  80. data/lib/roast/workflow/input_step.rb +1 -0
  81. data/lib/roast/workflow/interpolator.rb +2 -1
  82. data/lib/roast/workflow/iteration_executor.rb +1 -0
  83. data/lib/roast/workflow/llm_boolean_coercer.rb +1 -0
  84. data/lib/roast/workflow/metadata_manager.rb +1 -0
  85. data/lib/roast/workflow/output_handler.rb +1 -0
  86. data/lib/roast/workflow/output_manager.rb +1 -0
  87. data/lib/roast/workflow/parallel_executor.rb +1 -0
  88. data/lib/roast/workflow/prompt_step.rb +1 -0
  89. data/lib/roast/workflow/repeat_step.rb +1 -0
  90. data/lib/roast/workflow/replay_handler.rb +1 -0
  91. data/lib/roast/workflow/resource_resolver.rb +2 -6
  92. data/lib/roast/workflow/session_manager.rb +1 -0
  93. data/lib/roast/workflow/shell_script_step.rb +1 -0
  94. data/lib/roast/workflow/sqlite_state_repository.rb +1 -0
  95. data/lib/roast/workflow/state_manager.rb +1 -0
  96. data/lib/roast/workflow/state_repository.rb +1 -0
  97. data/lib/roast/workflow/state_repository_factory.rb +4 -2
  98. data/lib/roast/workflow/step_completion_reporter.rb +1 -0
  99. data/lib/roast/workflow/step_executor_coordinator.rb +17 -6
  100. data/lib/roast/workflow/step_executor_factory.rb +1 -0
  101. data/lib/roast/workflow/step_executor_registry.rb +2 -3
  102. data/lib/roast/workflow/step_executor_with_reporting.rb +1 -0
  103. data/lib/roast/workflow/step_executors/base_step_executor.rb +1 -0
  104. data/lib/roast/workflow/step_executors/hash_step_executor.rb +1 -0
  105. data/lib/roast/workflow/step_executors/parallel_step_executor.rb +1 -0
  106. data/lib/roast/workflow/step_executors/string_step_executor.rb +1 -0
  107. data/lib/roast/workflow/step_factory.rb +1 -0
  108. data/lib/roast/workflow/step_finder.rb +1 -0
  109. data/lib/roast/workflow/step_loader.rb +1 -0
  110. data/lib/roast/workflow/step_name_extractor.rb +1 -0
  111. data/lib/roast/workflow/step_runner.rb +1 -0
  112. data/lib/roast/workflow/step_type_resolver.rb +1 -0
  113. data/lib/roast/workflow/validation_command.rb +1 -0
  114. data/lib/roast/workflow/validator.rb +1 -0
  115. data/lib/roast/workflow/validators/base_validator.rb +1 -0
  116. data/lib/roast/workflow/validators/dependency_validator.rb +1 -0
  117. data/lib/roast/workflow/validators/linting_validator.rb +1 -0
  118. data/lib/roast/workflow/validators/schema_validator.rb +1 -0
  119. data/lib/roast/workflow/validators/step_collector.rb +1 -0
  120. data/lib/roast/workflow/validators/validation_orchestrator.rb +1 -0
  121. data/lib/roast/workflow/workflow_context.rb +1 -0
  122. data/lib/roast/workflow/workflow_execution_context.rb +1 -0
  123. data/lib/roast/workflow/workflow_executor.rb +2 -1
  124. data/lib/roast/workflow/workflow_initializer.rb +16 -1
  125. data/lib/roast/workflow/workflow_runner.rb +66 -55
  126. data/lib/roast/workflow.rb +1 -0
  127. data/lib/roast/workflow_diagram_generator.rb +3 -2
  128. data/lib/roast.rb +23 -8
  129. data/sorbet/config +8 -0
  130. data/sorbet/rbi/dsl/.gitattributes +1 -0
  131. data/sorbet/rbi/dsl/active_support/callbacks.rbi +21 -0
  132. data/sorbet/rbi/gems/.gitattributes +1 -0
  133. data/sorbet/rbi/gems/activesupport@8.0.2.rbi +19107 -0
  134. data/sorbet/rbi/gems/addressable@2.8.7.rbi +1994 -0
  135. data/sorbet/rbi/gems/ast@2.4.3.rbi +585 -0
  136. data/sorbet/rbi/gems/base64@0.3.0.rbi +545 -0
  137. data/sorbet/rbi/gems/benchmark@0.4.1.rbi +619 -0
  138. data/sorbet/rbi/gems/bigdecimal@3.2.2.rbi +62 -0
  139. data/sorbet/rbi/gems/cgi@0.5.0.rbi +2961 -0
  140. data/sorbet/rbi/gems/claude_swarm@0.1.19.rbi +568 -0
  141. data/sorbet/rbi/gems/cli-kit@5.0.1.rbi +1991 -0
  142. data/sorbet/rbi/gems/cli-ui@2.3.0.rbi +3181 -0
  143. data/sorbet/rbi/gems/coderay@1.1.3.rbi +9 -0
  144. data/sorbet/rbi/gems/concurrent-ruby@1.3.5.rbi +11657 -0
  145. data/sorbet/rbi/gems/connection_pool@2.5.3.rbi +9 -0
  146. data/sorbet/rbi/gems/crack@1.0.0.rbi +145 -0
  147. data/sorbet/rbi/gems/diff-lcs@1.6.2.rbi +972 -0
  148. data/sorbet/rbi/gems/dotenv@3.1.8.rbi +295 -0
  149. data/sorbet/rbi/gems/drb@2.2.3.rbi +1661 -0
  150. data/sorbet/rbi/gems/dry-configurable@1.3.0.rbi +672 -0
  151. data/sorbet/rbi/gems/dry-core@1.1.0.rbi +1894 -0
  152. data/sorbet/rbi/gems/dry-inflector@1.2.0.rbi +659 -0
  153. data/sorbet/rbi/gems/dry-initializer@3.2.0.rbi +781 -0
  154. data/sorbet/rbi/gems/dry-logic@1.6.0.rbi +1127 -0
  155. data/sorbet/rbi/gems/dry-schema@1.14.1.rbi +3727 -0
  156. data/sorbet/rbi/gems/dry-types@1.8.3.rbi +3969 -0
  157. data/sorbet/rbi/gems/erubi@1.13.1.rbi +155 -0
  158. data/sorbet/rbi/gems/event_stream_parser@1.0.0.rbi +49 -0
  159. data/sorbet/rbi/gems/faraday-multipart@1.1.1.rbi +283 -0
  160. data/sorbet/rbi/gems/faraday-net_http@3.4.1.rbi +147 -0
  161. data/sorbet/rbi/gems/faraday-retry@2.3.2.rbi +9 -0
  162. data/sorbet/rbi/gems/faraday@2.13.1.rbi +2977 -0
  163. data/sorbet/rbi/gems/fast-mcp-annotations@1.5.3.rbi +1588 -0
  164. data/sorbet/rbi/gems/ffi@1.17.2.rbi +9 -0
  165. data/sorbet/rbi/gems/formatador@1.1.0.rbi +9 -0
  166. data/sorbet/rbi/gems/guard-compat@1.2.1.rbi +102 -0
  167. data/sorbet/rbi/gems/guard-minitest@2.4.6.rbi +402 -0
  168. data/sorbet/rbi/gems/guard@2.19.1.rbi +2283 -0
  169. data/sorbet/rbi/gems/hashdiff@1.2.0.rbi +355 -0
  170. data/sorbet/rbi/gems/i18n@1.14.7.rbi +2359 -0
  171. data/sorbet/rbi/gems/json-schema@5.1.1.rbi +1466 -0
  172. data/sorbet/rbi/gems/json@2.12.2.rbi +2051 -0
  173. data/sorbet/rbi/gems/language_server-protocol@3.17.0.5.rbi +9 -0
  174. data/sorbet/rbi/gems/lint_roller@1.1.0.rbi +9 -0
  175. data/sorbet/rbi/gems/listen@3.9.0.rbi +1206 -0
  176. data/sorbet/rbi/gems/logger@1.7.0.rbi +963 -0
  177. data/sorbet/rbi/gems/lumberjack@1.2.10.rbi +1830 -0
  178. data/sorbet/rbi/gems/method_source@1.1.0.rbi +9 -0
  179. data/sorbet/rbi/gems/mime-types-data@3.2025.0617.rbi +136 -0
  180. data/sorbet/rbi/gems/mime-types@3.7.0.rbi +1342 -0
  181. data/sorbet/rbi/gems/minitest-rg@5.3.0.rbi +160 -0
  182. data/sorbet/rbi/gems/minitest@5.25.5.rbi +1640 -0
  183. data/sorbet/rbi/gems/mocha@2.7.1.rbi +12 -0
  184. data/sorbet/rbi/gems/multipart-post@2.4.1.rbi +244 -0
  185. data/sorbet/rbi/gems/nenv@0.3.0.rbi +147 -0
  186. data/sorbet/rbi/gems/net-http@0.6.0.rbi +4247 -0
  187. data/sorbet/rbi/gems/netrc@0.11.0.rbi +159 -0
  188. data/sorbet/rbi/gems/notiffany@0.1.3.rbi +1079 -0
  189. data/sorbet/rbi/gems/open_router@0.3.3.rbi +230 -0
  190. data/sorbet/rbi/gems/ostruct@0.6.2.rbi +354 -0
  191. data/sorbet/rbi/gems/parallel@1.27.0.rbi +291 -0
  192. data/sorbet/rbi/gems/parser@3.3.8.0.rbi +5535 -0
  193. data/sorbet/rbi/gems/prism@1.4.0.rbi +41732 -0
  194. data/sorbet/rbi/gems/pry@0.15.2.rbi +9 -0
  195. data/sorbet/rbi/gems/public_suffix@6.0.2.rbi +936 -0
  196. data/sorbet/rbi/gems/racc@1.8.1.rbi +158 -0
  197. data/sorbet/rbi/gems/rack@2.2.17.rbi +5659 -0
  198. data/sorbet/rbi/gems/rainbow@3.1.1.rbi +9 -0
  199. data/sorbet/rbi/gems/raix@1.0.2.rbi +1104 -0
  200. data/sorbet/rbi/gems/rake@13.3.0.rbi +3036 -0
  201. data/sorbet/rbi/gems/rb-fsevent@0.11.2.rbi +9 -0
  202. data/sorbet/rbi/gems/rb-inotify@0.11.1.rbi +9 -0
  203. data/sorbet/rbi/gems/rbi@0.3.6.rbi +6893 -0
  204. data/sorbet/rbi/gems/rbs@3.9.4.rbi +6978 -0
  205. data/sorbet/rbi/gems/regexp_parser@2.10.0.rbi +9 -0
  206. data/sorbet/rbi/gems/rexml@3.4.1.rbi +5346 -0
  207. data/sorbet/rbi/gems/rubocop-ast@1.45.1.rbi +9 -0
  208. data/sorbet/rbi/gems/rubocop-shopify@2.17.1.rbi +9 -0
  209. data/sorbet/rbi/gems/rubocop@1.77.0.rbi +9 -0
  210. data/sorbet/rbi/gems/ruby-graphviz@1.2.5.rbi +1333 -0
  211. data/sorbet/rbi/gems/ruby-openai@8.1.0.rbi +758 -0
  212. data/sorbet/rbi/gems/ruby-progressbar@1.13.0.rbi +9 -0
  213. data/sorbet/rbi/gems/ruby2_keywords@0.0.5.rbi +9 -0
  214. data/sorbet/rbi/gems/securerandom@0.4.1.rbi +75 -0
  215. data/sorbet/rbi/gems/shellany@0.0.1.rbi +102 -0
  216. data/sorbet/rbi/gems/spoom@1.6.3.rbi +6985 -0
  217. data/sorbet/rbi/gems/sqlite3@2.7.0.rbi +1900 -0
  218. data/sorbet/rbi/gems/tapioca@0.16.11.rbi +3628 -0
  219. data/sorbet/rbi/gems/thor@1.4.0.rbi +4399 -0
  220. data/sorbet/rbi/gems/tzinfo@2.0.6.rbi +5918 -0
  221. data/sorbet/rbi/gems/unicode-display_width@3.1.4.rbi +9 -0
  222. data/sorbet/rbi/gems/unicode-emoji@4.0.4.rbi +9 -0
  223. data/sorbet/rbi/gems/uri@1.0.3.rbi +2349 -0
  224. data/sorbet/rbi/gems/vcr@6.3.1.rbi +3040 -0
  225. data/sorbet/rbi/gems/webmock@3.25.1.rbi +1792 -0
  226. data/sorbet/rbi/gems/yard-sorbet@0.9.0.rbi +435 -0
  227. data/sorbet/rbi/gems/yard@0.9.37.rbi +18492 -0
  228. data/sorbet/rbi/gems/zeitwerk@2.7.3.rbi +1429 -0
  229. data/sorbet/tapioca/config.yml +13 -0
  230. data/sorbet/tapioca/require.rb +36 -0
  231. metadata +114 -2
  232. data/lib/roast/workflow/configuration_parser.rb +0 -54
@@ -0,0 +1,1206 @@
1
+ # typed: true
2
+
3
+ # DO NOT EDIT MANUALLY
4
+ # This is an autogenerated file for types exported from the `listen` gem.
5
+ # Please instead update this file by running `bin/tapioca gem listen`.
6
+
7
+
8
+ # Besides programming error exceptions like ArgumentError,
9
+ # all public interface exceptions should be declared here and inherit from Listen::Error.
10
+ #
11
+ # source://listen//lib/listen/logger.rb#3
12
+ module Listen
13
+ class << self
14
+ # source://listen//lib/listen/logger.rb#19
15
+ def adapter_warn(message); end
16
+
17
+ # Returns the value of attribute adapter_warn_behavior.
18
+ #
19
+ # source://listen//lib/listen/logger.rb#13
20
+ def adapter_warn_behavior; end
21
+
22
+ # Sets the attribute adapter_warn_behavior
23
+ #
24
+ # @param value the value to set the attribute adapter_warn_behavior to.
25
+ #
26
+ # source://listen//lib/listen/logger.rb#13
27
+ def adapter_warn_behavior=(_arg0); end
28
+
29
+ # source://listen//lib/listen/logger.rb#15
30
+ def logger; end
31
+
32
+ # Sets the attribute logger
33
+ #
34
+ # @param value the value to set the attribute logger to.
35
+ #
36
+ # source://listen//lib/listen/logger.rb#12
37
+ def logger=(_arg0); end
38
+
39
+ # This is used by the `listen` binary to handle Ctrl-C
40
+ #
41
+ # source://listen//lib/listen.rb#37
42
+ def stop; end
43
+
44
+ # Listens to file system modifications on a either single directory or
45
+ # multiple directories.
46
+ #
47
+ # @return [Listen::Listener] the listener
48
+ # @yield [modified, added, removed] the changed files
49
+ # @yieldparam modified [Array<String>] the list of modified files
50
+ # @yieldparam added [Array<String>] the list of added files
51
+ # @yieldparam removed [Array<String>] the list of removed files
52
+ #
53
+ # source://listen//lib/listen.rb#29
54
+ def to(*args, &block); end
55
+
56
+ private
57
+
58
+ # source://listen//lib/listen/logger.rb#50
59
+ def adapter_warn_behavior_callback(message); end
60
+
61
+ # source://listen//lib/listen/logger.rb#32
62
+ def default_logger; end
63
+ end
64
+ end
65
+
66
+ # source://listen//lib/listen/adapter/base.rb#9
67
+ module Listen::Adapter
68
+ class << self
69
+ # source://listen//lib/listen/adapter.rb#17
70
+ def select(options = T.unsafe(nil)); end
71
+
72
+ private
73
+
74
+ # source://listen//lib/listen/adapter.rb#33
75
+ def _usable_adapter_class; end
76
+
77
+ # source://listen//lib/listen/adapter.rb#37
78
+ def _warn_polling_fallback(options); end
79
+ end
80
+ end
81
+
82
+ # source://listen//lib/listen/adapter/bsd.rb#9
83
+ class Listen::Adapter::BSD < ::Listen::Adapter::Base
84
+ private
85
+
86
+ # source://listen//lib/listen/adapter/bsd.rb#73
87
+ def _change(event_flags); end
88
+
89
+ # source://listen//lib/listen/adapter/bsd.rb#43
90
+ def _configure(directory, &callback); end
91
+
92
+ # source://listen//lib/listen/adapter/bsd.rb#82
93
+ def _event_path(event); end
94
+
95
+ # Quick rubocop workaround
96
+ #
97
+ # source://listen//lib/listen/adapter/bsd.rb#102
98
+ def _find(*paths, &block); end
99
+
100
+ # source://listen//lib/listen/adapter/bsd.rb#55
101
+ def _process_event(dir, event); end
102
+
103
+ # source://listen//lib/listen/adapter/bsd.rb#51
104
+ def _run; end
105
+
106
+ # source://listen//lib/listen/adapter/bsd.rb#95
107
+ def _watch_file(path, queue); end
108
+
109
+ # source://listen//lib/listen/adapter/bsd.rb#86
110
+ def _watch_for_new_file(event); end
111
+
112
+ class << self
113
+ # @return [Boolean]
114
+ #
115
+ # source://listen//lib/listen/adapter/bsd.rb#31
116
+ def usable?; end
117
+ end
118
+ end
119
+
120
+ # source://listen//lib/listen/adapter/bsd.rb#23
121
+ Listen::Adapter::BSD::BUNDLER_DECLARE_GEM = T.let(T.unsafe(nil), String)
122
+
123
+ # source://listen//lib/listen/adapter/bsd.rb#12
124
+ Listen::Adapter::BSD::DEFAULTS = T.let(T.unsafe(nil), Hash)
125
+
126
+ # source://listen//lib/listen/adapter/bsd.rb#10
127
+ Listen::Adapter::BSD::OS_REGEXP = T.let(T.unsafe(nil), Regexp)
128
+
129
+ # source://listen//lib/listen/adapter/base.rb#10
130
+ class Listen::Adapter::Base
131
+ # @return [Base] a new instance of Base
132
+ #
133
+ # source://listen//lib/listen/adapter/base.rb#16
134
+ def initialize(config); end
135
+
136
+ # Returns the value of attribute config.
137
+ #
138
+ # source://listen//lib/listen/adapter/base.rb#11
139
+ def config; end
140
+
141
+ # TODO: it's a separate method as a temporary workaround for tests
142
+ #
143
+ # source://listen//lib/listen/adapter/base.rb#33
144
+ def configure; end
145
+
146
+ # Returns the value of attribute options.
147
+ #
148
+ # source://listen//lib/listen/adapter/base.rb#11
149
+ def options; end
150
+
151
+ # source://listen//lib/listen/adapter/base.rb#65
152
+ def start; end
153
+
154
+ # @return [Boolean]
155
+ #
156
+ # source://listen//lib/listen/adapter/base.rb#61
157
+ def started?; end
158
+
159
+ # source://listen//lib/listen/adapter/base.rb#83
160
+ def stop; end
161
+
162
+ private
163
+
164
+ # source://listen//lib/listen/adapter/base.rb#111
165
+ def _log_exception(msg, caller_stack); end
166
+
167
+ # TODO: allow backend adapters to pass specific invalidation objects
168
+ # e.g. Darwin -> DirRescan, INotify -> MoveScan, etc.
169
+ #
170
+ # source://listen//lib/listen/adapter/base.rb#107
171
+ def _queue_change(type, dir, rel_path, options); end
172
+
173
+ # source://listen//lib/listen/adapter/base.rb#90
174
+ def _stop; end
175
+
176
+ # source://listen//lib/listen/adapter/base.rb#95
177
+ def _timed(title); end
178
+
179
+ class << self
180
+ # @return [Boolean]
181
+ #
182
+ # source://listen//lib/listen/adapter/base.rb#123
183
+ def usable?; end
184
+ end
185
+ end
186
+
187
+ # TODO: only used by tests
188
+ #
189
+ # source://listen//lib/listen/adapter/base.rb#14
190
+ Listen::Adapter::Base::DEFAULTS = T.let(T.unsafe(nil), Hash)
191
+
192
+ # source://listen//lib/listen/adapter/config.rb#7
193
+ class Listen::Adapter::Config
194
+ # @return [Config] a new instance of Config
195
+ #
196
+ # source://listen//lib/listen/adapter/config.rb#10
197
+ def initialize(directories, queue, silencer, adapter_options); end
198
+
199
+ # Returns the value of attribute adapter_options.
200
+ #
201
+ # source://listen//lib/listen/adapter/config.rb#8
202
+ def adapter_options; end
203
+
204
+ # Returns the value of attribute directories.
205
+ #
206
+ # source://listen//lib/listen/adapter/config.rb#8
207
+ def directories; end
208
+
209
+ # Returns the value of attribute queue.
210
+ #
211
+ # source://listen//lib/listen/adapter/config.rb#8
212
+ def queue; end
213
+
214
+ # Returns the value of attribute silencer.
215
+ #
216
+ # source://listen//lib/listen/adapter/config.rb#8
217
+ def silencer; end
218
+ end
219
+
220
+ # Adapter implementation for Mac OS X `FSEvents`.
221
+ #
222
+ # source://listen//lib/listen/adapter/darwin.rb#9
223
+ class Listen::Adapter::Darwin < ::Listen::Adapter::Base
224
+ private
225
+
226
+ # source://listen//lib/listen/adapter/darwin.rb#39
227
+ def _configure(dir, &callback); end
228
+
229
+ # source://listen//lib/listen/adapter/darwin.rb#52
230
+ def _process_changes(dirs); end
231
+
232
+ # source://listen//lib/listen/adapter/darwin.rb#64
233
+ def _process_event(dir, path); end
234
+
235
+ # source://listen//lib/listen/adapter/darwin.rb#43
236
+ def _run; end
237
+
238
+ # source://listen//lib/listen/adapter/darwin.rb#71
239
+ def _stop; end
240
+
241
+ class << self
242
+ # @return [Boolean]
243
+ #
244
+ # source://listen//lib/listen/adapter/darwin.rb#25
245
+ def usable?; end
246
+ end
247
+ end
248
+
249
+ # The default delay between checking for changes.
250
+ #
251
+ # source://listen//lib/listen/adapter/darwin.rb#13
252
+ Listen::Adapter::Darwin::DEFAULTS = T.let(T.unsafe(nil), Hash)
253
+
254
+ # source://listen//lib/listen/adapter/darwin.rb#15
255
+ Listen::Adapter::Darwin::INCOMPATIBLE_GEM_VERSION = T.let(T.unsafe(nil), String)
256
+
257
+ # source://listen//lib/listen/adapter/darwin.rb#10
258
+ Listen::Adapter::Darwin::OS_REGEXP = T.let(T.unsafe(nil), Regexp)
259
+
260
+ # @see https://github.com/nex3/rb-inotify
261
+ #
262
+ # source://listen//lib/listen/adapter/linux.rb#6
263
+ class Listen::Adapter::Linux < ::Listen::Adapter::Base
264
+ private
265
+
266
+ # source://listen//lib/listen/adapter/linux.rb#86
267
+ def _change(event_flags); end
268
+
269
+ # source://listen//lib/listen/adapter/linux.rb#27
270
+ def _configure(directory, &callback); end
271
+
272
+ # @return [Boolean]
273
+ #
274
+ # source://listen//lib/listen/adapter/linux.rb#97
275
+ def _dir_event?(event); end
276
+
277
+ # source://listen//lib/listen/adapter/linux.rb#42
278
+ def _process_event(dir, event); end
279
+
280
+ # source://listen//lib/listen/adapter/linux.rb#37
281
+ def _run; end
282
+
283
+ # @return [Boolean]
284
+ #
285
+ # source://listen//lib/listen/adapter/linux.rb#76
286
+ def _skip_event?(event); end
287
+
288
+ # source://listen//lib/listen/adapter/linux.rb#101
289
+ def _stop; end
290
+ end
291
+
292
+ # source://listen//lib/listen/adapter/linux.rb#9
293
+ Listen::Adapter::Linux::DEFAULTS = T.let(T.unsafe(nil), Hash)
294
+
295
+ # source://listen//lib/listen/adapter/linux.rb#7
296
+ Listen::Adapter::Linux::OS_REGEXP = T.let(T.unsafe(nil), Regexp)
297
+
298
+ # source://listen//lib/listen/adapter/linux.rb#24
299
+ Listen::Adapter::Linux::README_URL = T.let(T.unsafe(nil), String)
300
+
301
+ # source://listen//lib/listen/adapter.rb#12
302
+ Listen::Adapter::OPTIMIZED_ADAPTERS = T.let(T.unsafe(nil), Array)
303
+
304
+ # source://listen//lib/listen/adapter.rb#13
305
+ Listen::Adapter::POLLING_FALLBACK_MESSAGE = T.let(T.unsafe(nil), String)
306
+
307
+ # Polling Adapter that works cross-platform and
308
+ # has no dependencies. This is the adapter that
309
+ # uses the most CPU processing power and has higher
310
+ # file IO than the other implementations.
311
+ #
312
+ # source://listen//lib/listen/adapter/polling.rb#10
313
+ class Listen::Adapter::Polling < ::Listen::Adapter::Base
314
+ private
315
+
316
+ # source://listen//lib/listen/adapter/polling.rb#17
317
+ def _configure(_, &callback); end
318
+
319
+ # source://listen//lib/listen/adapter/polling.rb#35
320
+ def _process_event(dir, _); end
321
+
322
+ # source://listen//lib/listen/adapter/polling.rb#22
323
+ def _run; end
324
+ end
325
+
326
+ # source://listen//lib/listen/adapter/polling.rb#13
327
+ Listen::Adapter::Polling::DEFAULTS = T.let(T.unsafe(nil), Hash)
328
+
329
+ # match every OS
330
+ #
331
+ # source://listen//lib/listen/adapter/polling.rb#11
332
+ Listen::Adapter::Polling::OS_REGEXP = T.let(T.unsafe(nil), Regexp)
333
+
334
+ # Adapter implementation for Windows `wdm`.
335
+ #
336
+ # source://listen//lib/listen/adapter/windows.rb#7
337
+ class Listen::Adapter::Windows < ::Listen::Adapter::Base
338
+ private
339
+
340
+ # source://listen//lib/listen/adapter/windows.rb#87
341
+ def _change(type); end
342
+
343
+ # source://listen//lib/listen/adapter/windows.rb#29
344
+ def _configure(dir); end
345
+
346
+ # source://listen//lib/listen/adapter/windows.rb#51
347
+ def _process_event(dir, event); end
348
+
349
+ # source://listen//lib/listen/adapter/windows.rb#46
350
+ def _run; end
351
+
352
+ class << self
353
+ # @return [Boolean]
354
+ #
355
+ # source://listen//lib/listen/adapter/windows.rb#15
356
+ def usable?; end
357
+ end
358
+ end
359
+
360
+ # source://listen//lib/listen/adapter/windows.rb#10
361
+ Listen::Adapter::Windows::BUNDLER_DECLARE_GEM = T.let(T.unsafe(nil), String)
362
+
363
+ # source://listen//lib/listen/adapter/windows.rb#8
364
+ Listen::Adapter::Windows::OS_REGEXP = T.let(T.unsafe(nil), Regexp)
365
+
366
+ # source://listen//lib/listen/backend.rb#12
367
+ class Listen::Backend
368
+ extend ::Forwardable
369
+
370
+ # @return [Backend] a new instance of Backend
371
+ #
372
+ # source://listen//lib/listen/backend.rb#15
373
+ def initialize(directories, queue, silencer, config); end
374
+
375
+ # Returns the value of attribute min_delay_between_events.
376
+ #
377
+ # source://listen//lib/listen/backend.rb#34
378
+ def min_delay_between_events; end
379
+
380
+ # source://forwardable/1.3.3/forwardable.rb#231
381
+ def start(*args, **_arg1, &block); end
382
+
383
+ # source://forwardable/1.3.3/forwardable.rb#231
384
+ def stop(*args, **_arg1, &block); end
385
+
386
+ private
387
+
388
+ # Returns the value of attribute adapter.
389
+ #
390
+ # source://listen//lib/listen/backend.rb#38
391
+ def adapter; end
392
+ end
393
+
394
+ # TODO: rename to Snapshot
395
+ #
396
+ # source://listen//lib/listen/change.rb#8
397
+ class Listen::Change
398
+ # @return [Change] a new instance of Change
399
+ #
400
+ # source://listen//lib/listen/change.rb#27
401
+ def initialize(config, record); end
402
+
403
+ # Invalidate some part of the snapshot/record (dir, file, subtree, etc.)
404
+ #
405
+ # source://listen//lib/listen/change.rb#36
406
+ def invalidate(type, rel_path, options); end
407
+
408
+ # Returns the value of attribute record.
409
+ #
410
+ # source://listen//lib/listen/change.rb#25
411
+ def record; end
412
+ end
413
+
414
+ # TODO: test this class for coverage
415
+ #
416
+ # source://listen//lib/listen/change.rb#10
417
+ class Listen::Change::Config
418
+ # @return [Config] a new instance of Config
419
+ #
420
+ # source://listen//lib/listen/change.rb#11
421
+ def initialize(queue, silencer); end
422
+
423
+ # source://listen//lib/listen/change.rb#20
424
+ def queue(*args); end
425
+
426
+ # @return [Boolean]
427
+ #
428
+ # source://listen//lib/listen/change.rb#16
429
+ def silenced?(path, type); end
430
+ end
431
+
432
+ # TODO: refactor (turn it into a normal object, cache the stat, etc)
433
+ #
434
+ # source://listen//lib/listen/directory.rb#7
435
+ class Listen::Directory
436
+ class << self
437
+ # source://listen//lib/listen/directory.rb#62
438
+ def _async_changes(snapshot, path, previous, options); end
439
+
440
+ # source://listen//lib/listen/directory.rb#72
441
+ def _change(snapshot, type, path, options); end
442
+
443
+ # source://listen//lib/listen/directory.rb#82
444
+ def _children(path); end
445
+
446
+ # @return [Boolean]
447
+ #
448
+ # source://listen//lib/listen/directory.rb#56
449
+ def ascendant_of?(base, other); end
450
+
451
+ # source://listen//lib/listen/directory.rb#9
452
+ def scan(snapshot, rel_path, options); end
453
+ end
454
+ end
455
+
456
+ # source://listen//lib/listen/error.rb#6
457
+ class Listen::Error < ::RuntimeError; end
458
+
459
+ # source://listen//lib/listen/error.rb#9
460
+ class Listen::Error::INotifyMaxWatchesExceeded < ::Listen::Error; end
461
+
462
+ # source://listen//lib/listen/error.rb#7
463
+ class Listen::Error::NotStarted < ::Listen::Error; end
464
+
465
+ # source://listen//lib/listen/error.rb#8
466
+ class Listen::Error::SymlinkLoop < ::Listen::Error; end
467
+
468
+ # source://listen//lib/listen/event/processor.rb#6
469
+ module Listen::Event; end
470
+
471
+ # source://listen//lib/listen/event/config.rb#5
472
+ class Listen::Event::Config
473
+ # @return [Config] a new instance of Config
474
+ #
475
+ # source://listen//lib/listen/event/config.rb#8
476
+ def initialize(listener, event_queue, queue_optimizer, wait_for_delay, &block); end
477
+
478
+ # source://listen//lib/listen/event/config.rb#27
479
+ def call(*args); end
480
+
481
+ # @return [Boolean]
482
+ #
483
+ # source://listen//lib/listen/event/config.rb#31
484
+ def callable?; end
485
+
486
+ # Returns the value of attribute event_queue.
487
+ #
488
+ # source://listen//lib/listen/event/config.rb#6
489
+ def event_queue; end
490
+
491
+ # Returns the value of attribute listener.
492
+ #
493
+ # source://listen//lib/listen/event/config.rb#6
494
+ def listener; end
495
+
496
+ # Returns the value of attribute min_delay_between_events.
497
+ #
498
+ # source://listen//lib/listen/event/config.rb#6
499
+ def min_delay_between_events; end
500
+
501
+ # source://listen//lib/listen/event/config.rb#35
502
+ def optimize_changes(changes); end
503
+
504
+ # source://listen//lib/listen/event/config.rb#23
505
+ def sleep(seconds); end
506
+ end
507
+
508
+ # source://listen//lib/listen/event/loop.rb#12
509
+ class Listen::Event::Loop
510
+ include ::Listen::FSM
511
+ extend ::Listen::FSM::ClassMethods
512
+
513
+ # @return [Loop] a new instance of Loop
514
+ #
515
+ # source://listen//lib/listen/event/loop.rb#24
516
+ def initialize(config); end
517
+
518
+ # source://listen//lib/listen/event/loop.rb#62
519
+ def pause; end
520
+
521
+ # source://listen//lib/listen/event/loop.rb#44
522
+ def start; end
523
+
524
+ # @return [Boolean]
525
+ #
526
+ # source://listen//lib/listen/event/loop.rb#37
527
+ def started?; end
528
+
529
+ # source://listen//lib/listen/event/loop.rb#67
530
+ def stop; end
531
+
532
+ # @return [Boolean]
533
+ #
534
+ # source://listen//lib/listen/event/loop.rb#74
535
+ def stopped?; end
536
+
537
+ # source://listen//lib/listen/event/loop.rb#31
538
+ def wakeup_on_event; end
539
+
540
+ private
541
+
542
+ # source://listen//lib/listen/event/loop.rb#80
543
+ def _process_changes; end
544
+
545
+ # source://listen//lib/listen/event/loop.rb#88
546
+ def _wakeup(reason); end
547
+ end
548
+
549
+ # source://listen//lib/listen/event/loop.rb#15
550
+ Listen::Event::Loop::Error = Listen::Error
551
+
552
+ # source://listen//lib/listen/event/loop.rb#41
553
+ Listen::Event::Loop::MAX_STARTUP_SECONDS = T.let(T.unsafe(nil), Float)
554
+
555
+ # for backward compatibility
556
+ #
557
+ # source://listen//lib/listen/event/loop.rb#16
558
+ Listen::Event::Loop::NotStarted = Listen::Error::NotStarted
559
+
560
+ # source://listen//lib/listen/event/processor.rb#7
561
+ class Listen::Event::Processor
562
+ # @return [Processor] a new instance of Processor
563
+ #
564
+ # source://listen//lib/listen/event/processor.rb#8
565
+ def initialize(config, reasons); end
566
+
567
+ # TODO: implement this properly instead of checking the state at arbitrary
568
+ # points in time
569
+ #
570
+ # source://listen//lib/listen/event/processor.rb#17
571
+ def loop_for(latency); end
572
+
573
+ private
574
+
575
+ # source://listen//lib/listen/event/processor.rb#55
576
+ def _check_stopped; end
577
+
578
+ # source://listen//lib/listen/event/processor.rb#82
579
+ def _deadline; end
580
+
581
+ # source://listen//lib/listen/event/processor.rb#94
582
+ def _flush_wakeup_reasons; end
583
+
584
+ # for easier testing without sleep loop
585
+ #
586
+ # source://listen//lib/listen/event/processor.rb#102
587
+ def _process_changes(event); end
588
+
589
+ # source://listen//lib/listen/event/processor.rb#74
590
+ def _remember_time_of_first_unprocessed_event; end
591
+
592
+ # source://listen//lib/listen/event/processor.rb#78
593
+ def _reset_no_unprocessed_events; end
594
+
595
+ # source://listen//lib/listen/event/processor.rb#62
596
+ def _sleep(seconds); end
597
+
598
+ # blocks until event is popped
599
+ # returns the event or `nil` when the event_queue is closed
600
+ #
601
+ # source://listen//lib/listen/event/processor.rb#88
602
+ def _wait_until_events; end
603
+
604
+ # source://listen//lib/listen/event/processor.rb#36
605
+ def _wait_until_events_calm_down; end
606
+
607
+ # source://listen//lib/listen/event/processor.rb#51
608
+ def _wait_until_no_longer_paused; end
609
+
610
+ # Returns the value of attribute config.
611
+ #
612
+ # source://listen//lib/listen/event/processor.rb#123
613
+ def config; end
614
+ end
615
+
616
+ # source://listen//lib/listen/event/processor.rb#33
617
+ class Listen::Event::Processor::Stopped < ::RuntimeError; end
618
+
619
+ # source://listen//lib/listen/event/queue.rb#9
620
+ class Listen::Event::Queue
621
+ extend ::Forwardable
622
+
623
+ # @return [Queue] a new instance of Queue
624
+ #
625
+ # source://listen//lib/listen/event/queue.rb#22
626
+ def initialize(config); end
627
+
628
+ # source://listen//lib/listen/event/queue.rb#27
629
+ def <<(args); end
630
+
631
+ # source://forwardable/1.3.3/forwardable.rb#231
632
+ def close(*args, **_arg1, &block); end
633
+
634
+ # source://forwardable/1.3.3/forwardable.rb#231
635
+ def empty?(*args, **_arg1, &block); end
636
+
637
+ # source://forwardable/1.3.3/forwardable.rb#231
638
+ def pop(*args, **_arg1, &block); end
639
+
640
+ private
641
+
642
+ # source://listen//lib/listen/event/queue.rb#47
643
+ def _safe_relative_from_cwd(dir); end
644
+ end
645
+
646
+ # source://listen//lib/listen/event/queue.rb#12
647
+ class Listen::Event::Queue::Config
648
+ # @return [Config] a new instance of Config
649
+ #
650
+ # source://listen//lib/listen/event/queue.rb#13
651
+ def initialize(relative); end
652
+
653
+ # @return [Boolean]
654
+ #
655
+ # source://listen//lib/listen/event/queue.rb#17
656
+ def relative?; end
657
+ end
658
+
659
+ # source://listen//lib/listen/fsm.rb#8
660
+ module Listen::FSM
661
+ mixes_in_class_methods ::Listen::FSM::ClassMethods
662
+
663
+ # Note: including classes must call initialize_fsm from their initialize method.
664
+ #
665
+ # source://listen//lib/listen/fsm.rb#42
666
+ def initialize_fsm; end
667
+
668
+ # Current state of the FSM, stored as a symbol
669
+ #
670
+ # source://listen//lib/listen/fsm.rb#50
671
+ def state; end
672
+
673
+ # checks for one of the given states to wait for
674
+ # if not already, waits for a state change (up to timeout seconds--`nil` means infinite)
675
+ # returns truthy iff the transition to one of the desired state has occurred
676
+ #
677
+ # source://listen//lib/listen/fsm.rb#55
678
+ def wait_for_state(*wait_for_states, timeout: T.unsafe(nil)); end
679
+
680
+ private
681
+
682
+ # source://listen//lib/listen/fsm.rb#108
683
+ def current_state; end
684
+
685
+ # source://listen//lib/listen/fsm.rb#69
686
+ def transition(new_state_name); end
687
+
688
+ # Low-level, immediate state transition with no checks or callbacks.
689
+ #
690
+ # source://listen//lib/listen/fsm.rb#77
691
+ def transition!(new_state_name); end
692
+
693
+ # source://listen//lib/listen/fsm.rb#103
694
+ def transition_with_callbacks!(new_state); end
695
+
696
+ # source://listen//lib/listen/fsm.rb#87
697
+ def validate_and_sanitize_new_state(new_state_name); end
698
+
699
+ class << self
700
+ # Included hook to extend class methods
701
+ #
702
+ # source://listen//lib/listen/fsm.rb#10
703
+ def included(klass); end
704
+ end
705
+ end
706
+
707
+ # source://listen//lib/listen/fsm.rb#14
708
+ module Listen::FSM::ClassMethods
709
+ # Obtain or set the start state
710
+ # Passing a state name sets the start state
711
+ #
712
+ # source://listen//lib/listen/fsm.rb#17
713
+ def start_state(new_start_state = T.unsafe(nil)); end
714
+
715
+ # Declare an FSM state and optionally provide a callback block to fire on state entry
716
+ # Options:
717
+ # * to: a state or array of states this state can transition to
718
+ #
719
+ # source://listen//lib/listen/fsm.rb#35
720
+ def state(state_name, to: T.unsafe(nil), &block); end
721
+
722
+ # The valid states for this FSM, as a hash with state name symbols as keys and State objects as values.
723
+ #
724
+ # source://listen//lib/listen/fsm.rb#28
725
+ def states; end
726
+ end
727
+
728
+ # source://listen//lib/listen/fsm.rb#112
729
+ class Listen::FSM::State
730
+ # @return [State] a new instance of State
731
+ #
732
+ # source://listen//lib/listen/fsm.rb#115
733
+ def initialize(name, transitions, &block); end
734
+
735
+ # source://listen//lib/listen/fsm.rb#123
736
+ def call(obj); end
737
+
738
+ # Returns the value of attribute name.
739
+ #
740
+ # source://listen//lib/listen/fsm.rb#113
741
+ def name; end
742
+
743
+ # Returns the value of attribute transitions.
744
+ #
745
+ # source://listen//lib/listen/fsm.rb#113
746
+ def transitions; end
747
+
748
+ # @return [Boolean]
749
+ #
750
+ # source://listen//lib/listen/fsm.rb#127
751
+ def valid_transition?(new_state); end
752
+ end
753
+
754
+ # source://listen//lib/listen/file.rb#6
755
+ class Listen::File
756
+ class << self
757
+ # source://listen//lib/listen/file.rb#10
758
+ def change(record, rel_path); end
759
+
760
+ # @return [Boolean]
761
+ #
762
+ # source://listen//lib/listen/file.rb#86
763
+ def inaccurate_mac_time?(stat); end
764
+ end
765
+ end
766
+
767
+ # source://listen//lib/listen/listener/config.rb#4
768
+ class Listen::Listener
769
+ include ::Listen::FSM
770
+ extend ::Listen::FSM::ClassMethods
771
+
772
+ # Initializes the directories listener.
773
+ #
774
+ #
775
+ # @param directory [String] the directories to listen to
776
+ # @param options [Hash] the listen options (see Listen::Listener::Options)
777
+ # @return [Listener] a new instance of Listener
778
+ # @yield [modified, added, removed] the changed files
779
+ # @yieldparam modified [Array<String>] the list of modified files
780
+ # @yieldparam added [Array<String>] the list of added files
781
+ # @yieldparam removed [Array<String>] the list of removed files
782
+ #
783
+ # source://listen//lib/listen/listener.rb#37
784
+ def initialize(*dirs, &block); end
785
+
786
+ # source://listen//lib/listen/listener.rb#124
787
+ def ignore(regexps); end
788
+
789
+ # source://listen//lib/listen/listener.rb#128
790
+ def ignore!(regexps); end
791
+
792
+ # source://listen//lib/listen/listener.rb#132
793
+ def only(regexps); end
794
+
795
+ # Stops invoking callbacks (messages pile up)
796
+ #
797
+ # source://listen//lib/listen/listener.rb#107
798
+ def pause; end
799
+
800
+ # @return [Boolean]
801
+ #
802
+ # source://listen//lib/listen/listener.rb#116
803
+ def paused?; end
804
+
805
+ # processing means callbacks are called
806
+ #
807
+ # @return [Boolean]
808
+ #
809
+ # source://listen//lib/listen/listener.rb#112
810
+ def processing?; end
811
+
812
+ # Starts processing events and starts adapters
813
+ # or resumes invoking callbacks if paused
814
+ #
815
+ # source://listen//lib/listen/listener.rb#89
816
+ def start; end
817
+
818
+ # Stops both listening for events and processing them
819
+ #
820
+ # source://listen//lib/listen/listener.rb#102
821
+ def stop; end
822
+
823
+ # @return [Boolean]
824
+ #
825
+ # source://listen//lib/listen/listener.rb#120
826
+ def stopped?; end
827
+ end
828
+
829
+ # source://listen//lib/listen/listener/config.rb#5
830
+ class Listen::Listener::Config
831
+ # @return [Config] a new instance of Config
832
+ #
833
+ # source://listen//lib/listen/listener/config.rb#17
834
+ def initialize(opts); end
835
+
836
+ # source://listen//lib/listen/listener/config.rb#30
837
+ def adapter_instance_options(klass); end
838
+
839
+ # source://listen//lib/listen/listener/config.rb#35
840
+ def adapter_select_options; end
841
+
842
+ # Returns the value of attribute min_delay_between_events.
843
+ #
844
+ # source://listen//lib/listen/listener/config.rb#28
845
+ def min_delay_between_events; end
846
+
847
+ # @return [Boolean]
848
+ #
849
+ # source://listen//lib/listen/listener/config.rb#24
850
+ def relative?; end
851
+
852
+ # Returns the value of attribute silencer_rules.
853
+ #
854
+ # source://listen//lib/listen/listener/config.rb#28
855
+ def silencer_rules; end
856
+ end
857
+
858
+ # source://listen//lib/listen/listener/config.rb#6
859
+ Listen::Listener::Config::DEFAULTS = T.let(T.unsafe(nil), Hash)
860
+
861
+ # source://listen//lib/listen/monotonic_time.rb#4
862
+ module Listen::MonotonicTime
863
+ class << self
864
+ # source://listen//lib/listen/monotonic_time.rb#8
865
+ def now; end
866
+ end
867
+ end
868
+
869
+ # source://listen//lib/listen/options.rb#4
870
+ class Listen::Options
871
+ # @return [Options] a new instance of Options
872
+ #
873
+ # source://listen//lib/listen/options.rb#5
874
+ def initialize(opts, defaults); end
875
+
876
+ # source://listen//lib/listen/options.rb#20
877
+ def method_missing(name, *_); end
878
+
879
+ private
880
+
881
+ # @return [Boolean]
882
+ #
883
+ # source://listen//lib/listen/options.rb#16
884
+ def respond_to_missing?(name, *_); end
885
+ end
886
+
887
+ # source://listen//lib/listen/queue_optimizer.rb#4
888
+ class Listen::QueueOptimizer
889
+ # @return [QueueOptimizer] a new instance of QueueOptimizer
890
+ #
891
+ # source://listen//lib/listen/queue_optimizer.rb#32
892
+ def initialize(config); end
893
+
894
+ # source://listen//lib/listen/queue_optimizer.rb#24
895
+ def smoosh_changes(changes); end
896
+
897
+ private
898
+
899
+ # source://listen//lib/listen/queue_optimizer.rb#69
900
+ def _calculate_add_remove_difference(actions, path, default_if_exists); end
901
+
902
+ # source://listen//lib/listen/queue_optimizer.rb#61
903
+ def _logical_action_for(path, actions); end
904
+
905
+ # remove extraneous rb-inotify events, keeping them only if it's a possible
906
+ # editor rename() call (e.g. Kate and Sublime)
907
+ #
908
+ # source://listen//lib/listen/queue_optimizer.rb#91
909
+ def _reinterpret_related_changes(cookies); end
910
+
911
+ # groups changes into the expected structure expected by
912
+ # clients
913
+ #
914
+ # source://listen//lib/listen/queue_optimizer.rb#42
915
+ def _squash_changes(changes); end
916
+
917
+ # Returns the value of attribute config.
918
+ #
919
+ # source://listen//lib/listen/queue_optimizer.rb#38
920
+ def config; end
921
+
922
+ # @return [Boolean]
923
+ #
924
+ # source://listen//lib/listen/queue_optimizer.rb#107
925
+ def editor_modified?(changes); end
926
+ end
927
+
928
+ # source://listen//lib/listen/queue_optimizer.rb#5
929
+ class Listen::QueueOptimizer::Config
930
+ # @return [Config] a new instance of Config
931
+ #
932
+ # source://listen//lib/listen/queue_optimizer.rb#6
933
+ def initialize(adapter_class, silencer); end
934
+
935
+ # source://listen//lib/listen/queue_optimizer.rb#19
936
+ def debug(*args, &block); end
937
+
938
+ # @return [Boolean]
939
+ #
940
+ # source://listen//lib/listen/queue_optimizer.rb#11
941
+ def exist?(path); end
942
+
943
+ # @return [Boolean]
944
+ #
945
+ # source://listen//lib/listen/queue_optimizer.rb#15
946
+ def silenced?(path, type); end
947
+ end
948
+
949
+ # @private api
950
+ #
951
+ # source://listen//lib/listen/record/entry.rb#5
952
+ class Listen::Record
953
+ # @return [Record] a new instance of Record
954
+ #
955
+ # source://listen//lib/listen/record.rb#14
956
+ def initialize(directory, silencer); end
957
+
958
+ # source://listen//lib/listen/record.rb#20
959
+ def add_dir(rel_path); end
960
+
961
+ # source://listen//lib/listen/record.rb#62
962
+ def build; end
963
+
964
+ # source://listen//lib/listen/record.rb#46
965
+ def dir_entries(rel_path); end
966
+
967
+ # source://listen//lib/listen/record.rb#36
968
+ def file_data(rel_path); end
969
+
970
+ # TODO: one Record object per watched directory?
971
+ # TODO: deprecate
972
+ #
973
+ # source://listen//lib/listen/record.rb#12
974
+ def root; end
975
+
976
+ # source://listen//lib/listen/record.rb#31
977
+ def unset_path(rel_path); end
978
+
979
+ # source://listen//lib/listen/record.rb#26
980
+ def update_file(rel_path, data); end
981
+
982
+ private
983
+
984
+ # source://listen//lib/listen/record.rb#103
985
+ def _fast_build_dir(remaining, symlink_detector); end
986
+
987
+ # source://listen//lib/listen/record.rb#117
988
+ def _fast_try_file(entry); end
989
+
990
+ # source://listen//lib/listen/record.rb#91
991
+ def _fast_unset_path(dirname, basename); end
992
+
993
+ # source://listen//lib/listen/record.rb#83
994
+ def _fast_update_file(dirname, basename, data); end
995
+
996
+ # @return [Boolean]
997
+ #
998
+ # source://listen//lib/listen/record.rb#75
999
+ def empty_dirname?(dirname); end
1000
+
1001
+ # source://listen//lib/listen/record.rb#79
1002
+ def reset_tree; end
1003
+ end
1004
+
1005
+ # Represents a directory entry (dir or file)
1006
+ #
1007
+ # source://listen//lib/listen/record/entry.rb#7
1008
+ class Listen::Record::Entry
1009
+ # file: "/home/me/watched_dir", "app/models", "foo.rb"
1010
+ # dir, "/home/me/watched_dir", "."
1011
+ #
1012
+ # @return [Entry] a new instance of Entry
1013
+ #
1014
+ # source://listen//lib/listen/record/entry.rb#10
1015
+ def initialize(root, relative, name = T.unsafe(nil)); end
1016
+
1017
+ # source://listen//lib/listen/record/entry.rb#18
1018
+ def children; end
1019
+
1020
+ # source://listen//lib/listen/record/entry.rb#25
1021
+ def meta; end
1022
+
1023
+ # Returns the value of attribute name.
1024
+ #
1025
+ # source://listen//lib/listen/record/entry.rb#16
1026
+ def name; end
1027
+
1028
+ # source://listen//lib/listen/record/entry.rb#43
1029
+ def real_path; end
1030
+
1031
+ # record hash is e.g.
1032
+ # if @record["/home/me/watched_dir"]["project/app/models"]["foo.rb"]
1033
+ # if @record["/home/me/watched_dir"]["project/app"]["models"]
1034
+ # record_dir_key is "project/app/models"
1035
+ #
1036
+ # source://listen//lib/listen/record/entry.rb#34
1037
+ def record_dir_key; end
1038
+
1039
+ # Returns the value of attribute relative.
1040
+ #
1041
+ # source://listen//lib/listen/record/entry.rb#16
1042
+ def relative; end
1043
+
1044
+ # Returns the value of attribute root.
1045
+ #
1046
+ # source://listen//lib/listen/record/entry.rb#16
1047
+ def root; end
1048
+
1049
+ # source://listen//lib/listen/record/entry.rb#38
1050
+ def sys_path; end
1051
+
1052
+ private
1053
+
1054
+ # @raise [Errno::ENOTDIR]
1055
+ #
1056
+ # source://listen//lib/listen/record/entry.rb#54
1057
+ def _entries(dir); end
1058
+
1059
+ # source://listen//lib/listen/record/entry.rb#49
1060
+ def _join; end
1061
+ end
1062
+
1063
+ # source://listen//lib/listen/record/symlink_detector.rb#9
1064
+ class Listen::Record::SymlinkDetector
1065
+ # @return [SymlinkDetector] a new instance of SymlinkDetector
1066
+ #
1067
+ # source://listen//lib/listen/record/symlink_detector.rb#24
1068
+ def initialize; end
1069
+
1070
+ # source://listen//lib/listen/record/symlink_detector.rb#28
1071
+ def verify_unwatched!(entry); end
1072
+
1073
+ # Leaving this stub here since some warning work-arounds were referring to it.
1074
+ # Deprecated. Will be removed in Listen v4.0.
1075
+ #
1076
+ # source://listen//lib/listen/record/symlink_detector.rb#35
1077
+ def warn(message); end
1078
+
1079
+ private
1080
+
1081
+ # @raise [::Listen::Error::SymlinkLoop]
1082
+ #
1083
+ # source://listen//lib/listen/record/symlink_detector.rb#41
1084
+ def _fail(symlinked, real_path); end
1085
+ end
1086
+
1087
+ # for backward compatibility
1088
+ #
1089
+ # source://listen//lib/listen/record/symlink_detector.rb#22
1090
+ Listen::Record::SymlinkDetector::Error = Listen::Error
1091
+
1092
+ # source://listen//lib/listen/record/symlink_detector.rb#10
1093
+ Listen::Record::SymlinkDetector::README_URL = T.let(T.unsafe(nil), String)
1094
+
1095
+ # source://listen//lib/listen/record/symlink_detector.rb#12
1096
+ Listen::Record::SymlinkDetector::SYMLINK_LOOP_ERROR = T.let(T.unsafe(nil), String)
1097
+
1098
+ # source://listen//lib/listen/silencer.rb#4
1099
+ class Listen::Silencer
1100
+ # @return [Silencer] a new instance of Silencer
1101
+ #
1102
+ # source://listen//lib/listen/silencer.rb#67
1103
+ def initialize(**options); end
1104
+
1105
+ # TODO: deprecate this mutator
1106
+ #
1107
+ # source://listen//lib/listen/silencer.rb#72
1108
+ def configure(options); end
1109
+
1110
+ # TODO: deprecate these mutators; use attr_reader instead
1111
+ #
1112
+ # source://listen//lib/listen/silencer.rb#65
1113
+ def ignore_patterns; end
1114
+
1115
+ # TODO: deprecate these mutators; use attr_reader instead
1116
+ #
1117
+ # source://listen//lib/listen/silencer.rb#65
1118
+ def ignore_patterns=(_arg0); end
1119
+
1120
+ # TODO: deprecate these mutators; use attr_reader instead
1121
+ #
1122
+ # source://listen//lib/listen/silencer.rb#65
1123
+ def only_patterns; end
1124
+
1125
+ # TODO: deprecate these mutators; use attr_reader instead
1126
+ #
1127
+ # source://listen//lib/listen/silencer.rb#65
1128
+ def only_patterns=(_arg0); end
1129
+
1130
+ # @return [Boolean]
1131
+ #
1132
+ # source://listen//lib/listen/silencer.rb#77
1133
+ def silenced?(relative_path, type); end
1134
+
1135
+ private
1136
+
1137
+ # @return [Boolean]
1138
+ #
1139
+ # source://listen//lib/listen/silencer.rb#85
1140
+ def _ignore?(path); end
1141
+
1142
+ # source://listen//lib/listen/silencer.rb#93
1143
+ def _init_ignores(ignores, overrides); end
1144
+
1145
+ # @return [Boolean]
1146
+ #
1147
+ # source://listen//lib/listen/silencer.rb#89
1148
+ def _only?(path); end
1149
+ end
1150
+
1151
+ # source://listen//lib/listen/silencer/controller.rb#5
1152
+ class Listen::Silencer::Controller
1153
+ # @return [Controller] a new instance of Controller
1154
+ #
1155
+ # source://listen//lib/listen/silencer/controller.rb#6
1156
+ def initialize(silencer, default_options); end
1157
+
1158
+ # source://listen//lib/listen/silencer/controller.rb#19
1159
+ def append_ignores(*regexps); end
1160
+
1161
+ # source://listen//lib/listen/silencer/controller.rb#24
1162
+ def replace_with_bang_ignores(regexps); end
1163
+
1164
+ # source://listen//lib/listen/silencer/controller.rb#28
1165
+ def replace_with_only(regexps); end
1166
+
1167
+ private
1168
+
1169
+ # source://listen//lib/listen/silencer/controller.rb#34
1170
+ def _reconfigure_silencer(extra_options); end
1171
+ end
1172
+
1173
+ # The default list of files that get ignored.
1174
+ #
1175
+ # source://listen//lib/listen/silencer.rb#24
1176
+ Listen::Silencer::DEFAULT_IGNORED_EXTENSIONS = T.let(T.unsafe(nil), Regexp)
1177
+
1178
+ # The default list of directories that get ignored.
1179
+ #
1180
+ # source://listen//lib/listen/silencer.rb#6
1181
+ Listen::Silencer::DEFAULT_IGNORED_FILES = T.let(T.unsafe(nil), Regexp)
1182
+
1183
+ # source://listen//lib/listen/thread.rb#8
1184
+ module Listen::Thread
1185
+ class << self
1186
+ # Creates a new thread with the given name.
1187
+ # Any exceptions raised by the thread will be logged with the thread name and complete backtrace.
1188
+ #
1189
+ # source://listen//lib/listen/thread.rb#13
1190
+ def new(name, &block); end
1191
+
1192
+ # source://listen//lib/listen/thread.rb#25
1193
+ def rescue_and_log(method_name, *args, caller_stack: T.unsafe(nil)); end
1194
+
1195
+ private
1196
+
1197
+ # source://listen//lib/listen/thread.rb#43
1198
+ def _exception_with_causes(exception); end
1199
+
1200
+ # source://listen//lib/listen/thread.rb#33
1201
+ def _log_exception(exception, thread_name, caller_stack: T.unsafe(nil)); end
1202
+ end
1203
+ end
1204
+
1205
+ # source://listen//lib/listen/version.rb#4
1206
+ Listen::VERSION = T.let(T.unsafe(nil), String)