packwerk 1.0.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 (153) hide show
  1. checksums.yaml +7 -0
  2. data/.github/ISSUE_TEMPLATE/bug_report.md +27 -0
  3. data/.github/probots.yml +2 -0
  4. data/.github/pull_request_template.md +27 -0
  5. data/.github/workflows/ci.yml +50 -0
  6. data/.gitignore +12 -0
  7. data/.rubocop.yml +46 -0
  8. data/.ruby-version +1 -0
  9. data/CODEOWNERS +1 -0
  10. data/CODE_OF_CONDUCT.md +76 -0
  11. data/CONTRIBUTING.md +17 -0
  12. data/Gemfile +22 -0
  13. data/Gemfile.lock +236 -0
  14. data/LICENSE.md +7 -0
  15. data/README.md +73 -0
  16. data/Rakefile +13 -0
  17. data/TROUBLESHOOT.md +67 -0
  18. data/USAGE.md +250 -0
  19. data/bin/console +15 -0
  20. data/bin/setup +8 -0
  21. data/dev.yml +32 -0
  22. data/docs/cohesion.png +0 -0
  23. data/exe/packwerk +6 -0
  24. data/lib/packwerk.rb +44 -0
  25. data/lib/packwerk/application_validator.rb +343 -0
  26. data/lib/packwerk/association_inspector.rb +44 -0
  27. data/lib/packwerk/checking_deprecated_references.rb +40 -0
  28. data/lib/packwerk/cli.rb +238 -0
  29. data/lib/packwerk/configuration.rb +82 -0
  30. data/lib/packwerk/const_node_inspector.rb +44 -0
  31. data/lib/packwerk/constant_discovery.rb +60 -0
  32. data/lib/packwerk/constant_name_inspector.rb +22 -0
  33. data/lib/packwerk/dependency_checker.rb +28 -0
  34. data/lib/packwerk/deprecated_references.rb +92 -0
  35. data/lib/packwerk/file_processor.rb +43 -0
  36. data/lib/packwerk/files_for_processing.rb +67 -0
  37. data/lib/packwerk/formatters/progress_formatter.rb +46 -0
  38. data/lib/packwerk/generators/application_validation.rb +62 -0
  39. data/lib/packwerk/generators/configuration_file.rb +69 -0
  40. data/lib/packwerk/generators/inflections_file.rb +43 -0
  41. data/lib/packwerk/generators/root_package.rb +37 -0
  42. data/lib/packwerk/generators/templates/inflections.yml +6 -0
  43. data/lib/packwerk/generators/templates/package.yml +17 -0
  44. data/lib/packwerk/generators/templates/packwerk +23 -0
  45. data/lib/packwerk/generators/templates/packwerk.yml.erb +23 -0
  46. data/lib/packwerk/generators/templates/packwerk_validator_test.rb +11 -0
  47. data/lib/packwerk/graph.rb +74 -0
  48. data/lib/packwerk/inflections/custom.rb +33 -0
  49. data/lib/packwerk/inflections/default.rb +73 -0
  50. data/lib/packwerk/inflector.rb +41 -0
  51. data/lib/packwerk/node.rb +259 -0
  52. data/lib/packwerk/node_processor.rb +49 -0
  53. data/lib/packwerk/node_visitor.rb +22 -0
  54. data/lib/packwerk/offense.rb +44 -0
  55. data/lib/packwerk/output_styles.rb +41 -0
  56. data/lib/packwerk/package.rb +56 -0
  57. data/lib/packwerk/package_set.rb +59 -0
  58. data/lib/packwerk/parsed_constant_definitions.rb +62 -0
  59. data/lib/packwerk/parsers.rb +23 -0
  60. data/lib/packwerk/parsers/erb.rb +66 -0
  61. data/lib/packwerk/parsers/factory.rb +34 -0
  62. data/lib/packwerk/parsers/ruby.rb +42 -0
  63. data/lib/packwerk/privacy_checker.rb +45 -0
  64. data/lib/packwerk/reference.rb +6 -0
  65. data/lib/packwerk/reference_extractor.rb +81 -0
  66. data/lib/packwerk/reference_lister.rb +23 -0
  67. data/lib/packwerk/run_context.rb +103 -0
  68. data/lib/packwerk/sanity_checker.rb +10 -0
  69. data/lib/packwerk/spring_command.rb +28 -0
  70. data/lib/packwerk/updating_deprecated_references.rb +51 -0
  71. data/lib/packwerk/version.rb +6 -0
  72. data/lib/packwerk/violation_type.rb +13 -0
  73. data/library.yml +6 -0
  74. data/packwerk.gemspec +58 -0
  75. data/service.yml +6 -0
  76. data/shipit.rubygems.yml +1 -0
  77. data/sorbet/config +2 -0
  78. data/sorbet/rbi/gems/actioncable@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +840 -0
  79. data/sorbet/rbi/gems/actionmailbox@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +571 -0
  80. data/sorbet/rbi/gems/actionmailer@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +568 -0
  81. data/sorbet/rbi/gems/actionpack@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +5216 -0
  82. data/sorbet/rbi/gems/actiontext@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +663 -0
  83. data/sorbet/rbi/gems/actionview@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +2504 -0
  84. data/sorbet/rbi/gems/activejob@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +635 -0
  85. data/sorbet/rbi/gems/activemodel@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +1201 -0
  86. data/sorbet/rbi/gems/activerecord@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +8011 -0
  87. data/sorbet/rbi/gems/activestorage@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +904 -0
  88. data/sorbet/rbi/gems/activesupport@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +3888 -0
  89. data/sorbet/rbi/gems/ast@2.4.1.rbi +54 -0
  90. data/sorbet/rbi/gems/better_html@1.0.15.rbi +317 -0
  91. data/sorbet/rbi/gems/builder@3.2.4.rbi +8 -0
  92. data/sorbet/rbi/gems/byebug@11.1.3.rbi +8 -0
  93. data/sorbet/rbi/gems/coderay@1.1.3.rbi +8 -0
  94. data/sorbet/rbi/gems/colorize@0.8.1.rbi +40 -0
  95. data/sorbet/rbi/gems/commander@4.5.2.rbi +8 -0
  96. data/sorbet/rbi/gems/concurrent-ruby@1.1.6.rbi +1966 -0
  97. data/sorbet/rbi/gems/constant_resolver@0.1.5.rbi +26 -0
  98. data/sorbet/rbi/gems/crass@1.0.6.rbi +138 -0
  99. data/sorbet/rbi/gems/erubi@1.9.0.rbi +39 -0
  100. data/sorbet/rbi/gems/globalid@0.4.2.rbi +178 -0
  101. data/sorbet/rbi/gems/highline@2.0.3.rbi +8 -0
  102. data/sorbet/rbi/gems/html_tokenizer@0.0.7.rbi +46 -0
  103. data/sorbet/rbi/gems/i18n@1.8.2.rbi +633 -0
  104. data/sorbet/rbi/gems/jaro_winkler@1.5.4.rbi +8 -0
  105. data/sorbet/rbi/gems/loofah@2.5.0.rbi +272 -0
  106. data/sorbet/rbi/gems/m@1.5.1.rbi +108 -0
  107. data/sorbet/rbi/gems/mail@2.7.1.rbi +2490 -0
  108. data/sorbet/rbi/gems/marcel@0.3.3.rbi +30 -0
  109. data/sorbet/rbi/gems/method_source@1.0.0.rbi +76 -0
  110. data/sorbet/rbi/gems/mimemagic@0.3.5.rbi +47 -0
  111. data/sorbet/rbi/gems/mini_mime@1.0.2.rbi +71 -0
  112. data/sorbet/rbi/gems/mini_portile2@2.4.0.rbi +8 -0
  113. data/sorbet/rbi/gems/minitest@5.14.0.rbi +542 -0
  114. data/sorbet/rbi/gems/mocha@1.11.2.rbi +964 -0
  115. data/sorbet/rbi/gems/nio4r@2.5.2.rbi +89 -0
  116. data/sorbet/rbi/gems/nokogiri@1.10.9.rbi +1608 -0
  117. data/sorbet/rbi/gems/parallel@1.19.1.rbi +8 -0
  118. data/sorbet/rbi/gems/parlour@4.0.1.rbi +561 -0
  119. data/sorbet/rbi/gems/parser@2.7.1.4.rbi +1632 -0
  120. data/sorbet/rbi/gems/pry@0.13.1.rbi +8 -0
  121. data/sorbet/rbi/gems/rack-test@1.1.0.rbi +335 -0
  122. data/sorbet/rbi/gems/rack@2.2.2.rbi +1730 -0
  123. data/sorbet/rbi/gems/rails-dom-testing@2.0.3.rbi +123 -0
  124. data/sorbet/rbi/gems/rails-html-sanitizer@1.3.0.rbi +213 -0
  125. data/sorbet/rbi/gems/rails@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +8 -0
  126. data/sorbet/rbi/gems/railties@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +869 -0
  127. data/sorbet/rbi/gems/rainbow@3.0.0.rbi +155 -0
  128. data/sorbet/rbi/gems/rake@13.0.1.rbi +841 -0
  129. data/sorbet/rbi/gems/rexml@3.2.4.rbi +8 -0
  130. data/sorbet/rbi/gems/rubocop-performance@1.5.2.rbi +8 -0
  131. data/sorbet/rbi/gems/rubocop-shopify@1.0.2.rbi +8 -0
  132. data/sorbet/rbi/gems/rubocop-sorbet@0.3.7.rbi +8 -0
  133. data/sorbet/rbi/gems/rubocop@0.82.0.rbi +8 -0
  134. data/sorbet/rbi/gems/ruby-progressbar@1.10.1.rbi +8 -0
  135. data/sorbet/rbi/gems/smart_properties@1.15.0.rbi +168 -0
  136. data/sorbet/rbi/gems/spoom@1.0.4.rbi +418 -0
  137. data/sorbet/rbi/gems/spring@2.1.0.rbi +160 -0
  138. data/sorbet/rbi/gems/sprockets-rails@3.2.1.rbi +431 -0
  139. data/sorbet/rbi/gems/sprockets@4.0.0.rbi +1132 -0
  140. data/sorbet/rbi/gems/tapioca@0.4.5.rbi +518 -0
  141. data/sorbet/rbi/gems/thor@1.0.1.rbi +892 -0
  142. data/sorbet/rbi/gems/tzinfo@2.0.2.rbi +547 -0
  143. data/sorbet/rbi/gems/unicode-display_width@1.7.0.rbi +8 -0
  144. data/sorbet/rbi/gems/websocket-driver@0.7.1.rbi +438 -0
  145. data/sorbet/rbi/gems/websocket-extensions@0.1.4.rbi +71 -0
  146. data/sorbet/rbi/gems/zeitwerk@2.3.0.rbi +8 -0
  147. data/sorbet/tapioca/require.rb +25 -0
  148. data/static/packwerk-check-demo.png +0 -0
  149. data/static/packwerk_check.gif +0 -0
  150. data/static/packwerk_check_violation.gif +0 -0
  151. data/static/packwerk_update.gif +0 -0
  152. data/static/packwerk_validate.gif +0 -0
  153. metadata +341 -0
@@ -0,0 +1,571 @@
1
+ # DO NOT EDIT MANUALLY
2
+ # This is an autogenerated file for types exported from the `actionmailbox` gem.
3
+ # Please instead update this file by running `dev typecheck update`.
4
+
5
+ # typed: true
6
+
7
+ module ActionMailbox
8
+ extend(::ActiveSupport::Autoload)
9
+
10
+ def incinerate; end
11
+ def incinerate=(val); end
12
+ def incinerate_after; end
13
+ def incinerate_after=(val); end
14
+ def ingress; end
15
+ def ingress=(val); end
16
+ def logger; end
17
+ def logger=(val); end
18
+ def queues; end
19
+ def queues=(val); end
20
+
21
+ class << self
22
+ def incinerate; end
23
+ def incinerate=(val); end
24
+ def incinerate_after; end
25
+ def incinerate_after=(val); end
26
+ def ingress; end
27
+ def ingress=(val); end
28
+ def logger; end
29
+ def logger=(val); end
30
+ def queues; end
31
+ def queues=(val); end
32
+ def railtie_helpers_paths; end
33
+ def railtie_namespace; end
34
+ def railtie_routes_url_helpers(include_path_helpers = T.unsafe(nil)); end
35
+ def table_name_prefix; end
36
+ def use_relative_model_naming?; end
37
+ end
38
+ end
39
+
40
+ class ActionMailbox::Base
41
+ include(::ActiveSupport::Rescuable)
42
+ include(::ActionMailbox::Routing)
43
+ include(::ActiveSupport::Callbacks)
44
+ include(::ActionMailbox::Callbacks)
45
+ extend(::ActiveSupport::Rescuable::ClassMethods)
46
+ extend(::ActionMailbox::Routing::ClassMethods)
47
+ extend(::ActiveSupport::Callbacks::ClassMethods)
48
+ extend(::ActiveSupport::DescendantsTracker)
49
+ extend(::ActionMailbox::Callbacks::ClassMethods)
50
+
51
+ def initialize(inbound_email); end
52
+
53
+ def __callbacks; end
54
+ def __callbacks?; end
55
+ def _process_callbacks; end
56
+ def _run_process_callbacks(&block); end
57
+ def bounce_with(message); end
58
+ def bounced!(*args, &block); end
59
+ def delivered!(*args, &block); end
60
+ def finished_processing?; end
61
+ def inbound_email; end
62
+ def logger(*args, &block); end
63
+ def mail(*args, &block); end
64
+ def perform_processing; end
65
+ def process; end
66
+ def rescue_handlers; end
67
+ def rescue_handlers=(_); end
68
+ def rescue_handlers?; end
69
+ def router; end
70
+ def router=(val); end
71
+
72
+ private
73
+
74
+ def track_status_of_inbound_email; end
75
+
76
+ class << self
77
+ def __callbacks; end
78
+ def __callbacks=(value); end
79
+ def __callbacks?; end
80
+ def _process_callbacks; end
81
+ def _process_callbacks=(value); end
82
+ def receive(inbound_email); end
83
+ def rescue_handlers; end
84
+ def rescue_handlers=(value); end
85
+ def rescue_handlers?; end
86
+ def router; end
87
+ def router=(val); end
88
+ end
89
+ end
90
+
91
+ class ActionMailbox::BaseController < ::ActionController::Base
92
+
93
+ private
94
+
95
+ def _layout(lookup_context, formats); end
96
+ def authenticate_by_password; end
97
+ def ensure_configured; end
98
+ def ingress_name; end
99
+ def password; end
100
+
101
+ class << self
102
+ def __callbacks; end
103
+ def _helpers; end
104
+ def middleware_stack; end
105
+ end
106
+ end
107
+
108
+ module ActionMailbox::BaseController::HelperMethods
109
+ include(::ActionController::Base::HelperMethods)
110
+ end
111
+
112
+ class ActionMailbox::Engine < ::Rails::Engine
113
+ end
114
+
115
+ class ActionMailbox::InboundEmail < ::ActiveRecord::Base
116
+ include(::ActionMailbox::InboundEmail::Routable)
117
+ include(::ActionMailbox::InboundEmail::MessageId)
118
+ include(::ActionMailbox::InboundEmail::Incineratable)
119
+ extend(::ActionMailbox::InboundEmail::MessageId::ClassMethods)
120
+
121
+ class << self
122
+ def __callbacks; end
123
+ def _validators; end
124
+ def attribute_type_decorations; end
125
+ def defined_enums; end
126
+ end
127
+ end
128
+
129
+ module ActionMailbox::InboundEmail::Incineratable
130
+ extend(::ActiveSupport::Concern)
131
+
132
+ def incinerate; end
133
+ def incinerate_later; end
134
+ end
135
+
136
+ class ActionMailbox::InboundEmail::Incineratable::Incineration
137
+ def initialize(inbound_email); end
138
+
139
+ def run; end
140
+
141
+ private
142
+
143
+ def due?; end
144
+ def processed?; end
145
+ end
146
+
147
+ module ActionMailbox::InboundEmail::MessageId
148
+ extend(::ActiveSupport::Concern)
149
+
150
+ mixes_in_class_methods(::ActionMailbox::InboundEmail::MessageId::ClassMethods)
151
+ end
152
+
153
+ module ActionMailbox::InboundEmail::MessageId::ClassMethods
154
+ def create_and_extract_message_id!(source, **options); end
155
+
156
+ private
157
+
158
+ def extract_message_id(source); end
159
+ def generate_missing_message_id(message_checksum); end
160
+ end
161
+
162
+ module ActionMailbox::InboundEmail::Routable
163
+ extend(::ActiveSupport::Concern)
164
+
165
+ def route; end
166
+ def route_later; end
167
+ end
168
+
169
+ class ActionMailbox::IncinerationJob < ::ActiveJob::Base
170
+ def perform(inbound_email); end
171
+
172
+ class << self
173
+ def queue_name; end
174
+ def rescue_handlers; end
175
+ def schedule(inbound_email); end
176
+ end
177
+ end
178
+
179
+ class ActionMailbox::Router
180
+ def initialize; end
181
+
182
+ def add_route(address, to:); end
183
+ def add_routes(routes); end
184
+ def mailbox_for(inbound_email); end
185
+ def route(inbound_email); end
186
+
187
+ private
188
+
189
+ def routes; end
190
+ end
191
+
192
+ class ActionMailbox::Router::Route
193
+ def initialize(address, to:); end
194
+
195
+ def address; end
196
+ def mailbox_class; end
197
+ def mailbox_name; end
198
+ def match?(inbound_email); end
199
+
200
+ private
201
+
202
+ def ensure_valid_address; end
203
+ end
204
+
205
+ class ActionMailbox::Router::RoutingError < ::StandardError
206
+ end
207
+
208
+ class ActionMailbox::RoutingJob < ::ActiveJob::Base
209
+ def perform(inbound_email); end
210
+
211
+ class << self
212
+ def queue_name; end
213
+ end
214
+ end
215
+
216
+ class ActionMailbox::TestCase < ::ActiveSupport::TestCase
217
+ include(::ActionMailbox::TestHelper)
218
+ end
219
+
220
+ module ActionMailbox::Callbacks
221
+ extend(::ActiveSupport::Concern)
222
+
223
+ include(::ActiveSupport::Callbacks)
224
+
225
+ mixes_in_class_methods(::ActionMailbox::Callbacks::ClassMethods)
226
+ end
227
+
228
+ module ActionMailbox::Callbacks::ClassMethods
229
+ def after_processing(*methods, &block); end
230
+ def around_processing(*methods, &block); end
231
+ def before_processing(*methods, &block); end
232
+ end
233
+
234
+ ActionMailbox::Callbacks::TERMINATOR = T.let(T.unsafe(nil), Proc)
235
+
236
+ module ActionMailbox::Routing
237
+ extend(::ActiveSupport::Concern)
238
+
239
+ mixes_in_class_methods(::ActionMailbox::Routing::ClassMethods)
240
+ end
241
+
242
+ module ActionMailbox::Routing::ClassMethods
243
+ def mailbox_for(inbound_email); end
244
+ def route(inbound_email); end
245
+ def routing(routes); end
246
+ end
247
+
248
+ module ActionMailbox::TestHelper
249
+ def create_inbound_email_from_fixture(fixture_name, status: T.unsafe(nil)); end
250
+ def create_inbound_email_from_mail(status: T.unsafe(nil), **mail_options, &block); end
251
+ def create_inbound_email_from_source(source, status: T.unsafe(nil)); end
252
+ def receive_inbound_email_from_fixture(*args); end
253
+ def receive_inbound_email_from_mail(**kwargs, &block); end
254
+ def receive_inbound_email_from_source(*args); end
255
+ end
256
+
257
+ module Mail
258
+ class << self
259
+ def all(*args, &block); end
260
+ def connection(&block); end
261
+ def defaults(&block); end
262
+ def delete_all(*args, &block); end
263
+ def deliver(*args, &block); end
264
+ def delivery_method; end
265
+ def eager_autoload!; end
266
+ def find(*args, &block); end
267
+ def find_and_delete(*args, &block); end
268
+ def first(*args, &block); end
269
+ def from_source(source); end
270
+ def inform_interceptors(mail); end
271
+ def inform_observers(mail); end
272
+ def last(*args, &block); end
273
+ def new(*args, &block); end
274
+ def random_tag; end
275
+ def read(filename); end
276
+ def read_from_string(mail_as_string); end
277
+ def register_autoload(name, path); end
278
+ def register_interceptor(interceptor); end
279
+ def register_observer(observer); end
280
+ def retriever_method; end
281
+ def something_random; end
282
+ def uniq; end
283
+ def unregister_interceptor(interceptor); end
284
+ def unregister_observer(observer); end
285
+ end
286
+ end
287
+
288
+ class Mail::Address
289
+ include(::Mail::Constants)
290
+ include(::Mail::Utilities)
291
+
292
+ def initialize(value = T.unsafe(nil)); end
293
+
294
+ def ==(other_address); end
295
+ def address(output_type = T.unsafe(nil)); end
296
+ def address=(value); end
297
+ def comments; end
298
+ def decoded; end
299
+ def display_name(output_type = T.unsafe(nil)); end
300
+ def display_name=(str); end
301
+ def domain(output_type = T.unsafe(nil)); end
302
+ def encoded; end
303
+ def format(output_type = T.unsafe(nil)); end
304
+ def group; end
305
+ def inspect; end
306
+ def local(output_type = T.unsafe(nil)); end
307
+ def name; end
308
+ def raw; end
309
+ def to_s; end
310
+
311
+ private
312
+
313
+ def format_comments; end
314
+ def get_comments; end
315
+ def get_display_name; end
316
+ def get_domain; end
317
+ def get_local; end
318
+ def get_name; end
319
+ def parse(value = T.unsafe(nil)); end
320
+ def strip_all_comments(string); end
321
+ def strip_domain_comments(value); end
322
+
323
+ class << self
324
+ def wrap(address); end
325
+ end
326
+ end
327
+
328
+ class Mail::Message
329
+ include(::Mail::Constants)
330
+ include(::Mail::Utilities)
331
+
332
+ def initialize(*args, &block); end
333
+
334
+ def <=>(other); end
335
+ def ==(other); end
336
+ def [](name); end
337
+ def []=(name, value); end
338
+ def action; end
339
+ def add_charset; end
340
+ def add_content_transfer_encoding; end
341
+ def add_content_type; end
342
+ def add_date(date_val = T.unsafe(nil)); end
343
+ def add_file(values); end
344
+ def add_message_id(msg_id_val = T.unsafe(nil)); end
345
+ def add_mime_version(ver_val = T.unsafe(nil)); end
346
+ def add_part(part); end
347
+ def add_transfer_encoding; end
348
+ def all_parts; end
349
+ def attachment; end
350
+ def attachment?; end
351
+ def attachments; end
352
+ def bcc(val = T.unsafe(nil)); end
353
+ def bcc=(val); end
354
+ def bcc_addresses; end
355
+ def bcc_addrs; end
356
+ def body(value = T.unsafe(nil)); end
357
+ def body=(value); end
358
+ def body_encoding(value = T.unsafe(nil)); end
359
+ def body_encoding=(value); end
360
+ def bounced?; end
361
+ def boundary; end
362
+ def cc(val = T.unsafe(nil)); end
363
+ def cc=(val); end
364
+ def cc_addresses; end
365
+ def cc_addrs; end
366
+ def charset; end
367
+ def charset=(value); end
368
+ def comments(val = T.unsafe(nil)); end
369
+ def comments=(val); end
370
+ def content_description(val = T.unsafe(nil)); end
371
+ def content_description=(val); end
372
+ def content_disposition(val = T.unsafe(nil)); end
373
+ def content_disposition=(val); end
374
+ def content_id(val = T.unsafe(nil)); end
375
+ def content_id=(val); end
376
+ def content_location(val = T.unsafe(nil)); end
377
+ def content_location=(val); end
378
+ def content_transfer_encoding(val = T.unsafe(nil)); end
379
+ def content_transfer_encoding=(val); end
380
+ def content_type(val = T.unsafe(nil)); end
381
+ def content_type=(val); end
382
+ def content_type_parameters; end
383
+ def convert_to_multipart; end
384
+ def date(val = T.unsafe(nil)); end
385
+ def date=(val); end
386
+ def decode_body; end
387
+ def decoded; end
388
+ def default(sym, val = T.unsafe(nil)); end
389
+ def deliver; end
390
+ def deliver!; end
391
+ def delivery_handler; end
392
+ def delivery_handler=(_); end
393
+ def delivery_method(method = T.unsafe(nil), settings = T.unsafe(nil)); end
394
+ def delivery_status_part; end
395
+ def delivery_status_report?; end
396
+ def destinations; end
397
+ def diagnostic_code; end
398
+ def encode!; end
399
+ def encoded; end
400
+ def envelope_date; end
401
+ def envelope_from; end
402
+ def error_status; end
403
+ def errors; end
404
+ def filename; end
405
+ def final_recipient; end
406
+ def find_first_mime_type(mt); end
407
+ def from(val = T.unsafe(nil)); end
408
+ def from=(val); end
409
+ def from_address; end
410
+ def from_addrs; end
411
+ def has_attachments?; end
412
+ def has_charset?; end
413
+ def has_content_transfer_encoding?; end
414
+ def has_content_type?; end
415
+ def has_date?; end
416
+ def has_message_id?; end
417
+ def has_mime_version?; end
418
+ def has_transfer_encoding?; end
419
+ def header(value = T.unsafe(nil)); end
420
+ def header=(value); end
421
+ def header_fields; end
422
+ def headers(hash = T.unsafe(nil)); end
423
+ def html_part(&block); end
424
+ def html_part=(msg); end
425
+ def in_reply_to(val = T.unsafe(nil)); end
426
+ def in_reply_to=(val); end
427
+ def inform_interceptors; end
428
+ def inform_observers; end
429
+ def inspect; end
430
+ def is_marked_for_delete?; end
431
+ def keywords(val = T.unsafe(nil)); end
432
+ def keywords=(val); end
433
+ def main_type; end
434
+ def mark_for_delete=(value = T.unsafe(nil)); end
435
+ def message_content_type; end
436
+ def message_id(val = T.unsafe(nil)); end
437
+ def message_id=(val); end
438
+ def method_missing(name, *args, &block); end
439
+ def mime_parameters; end
440
+ def mime_type; end
441
+ def mime_version(val = T.unsafe(nil)); end
442
+ def mime_version=(val); end
443
+ def multipart?; end
444
+ def multipart_report?; end
445
+ def part(params = T.unsafe(nil)); end
446
+ def parts; end
447
+ def perform_deliveries; end
448
+ def perform_deliveries=(_); end
449
+ def raise_delivery_errors; end
450
+ def raise_delivery_errors=(_); end
451
+ def raw_envelope; end
452
+ def raw_source; end
453
+ def read; end
454
+ def ready_to_send!; end
455
+ def received(val = T.unsafe(nil)); end
456
+ def received=(val); end
457
+ def recipients; end
458
+ def recipients_addresses; end
459
+ def references(val = T.unsafe(nil)); end
460
+ def references=(val); end
461
+ def register_for_delivery_notification(observer); end
462
+ def remote_mta; end
463
+ def reply(*args, &block); end
464
+ def reply_to(val = T.unsafe(nil)); end
465
+ def reply_to=(val); end
466
+ def resent_bcc(val = T.unsafe(nil)); end
467
+ def resent_bcc=(val); end
468
+ def resent_cc(val = T.unsafe(nil)); end
469
+ def resent_cc=(val); end
470
+ def resent_date(val = T.unsafe(nil)); end
471
+ def resent_date=(val); end
472
+ def resent_from(val = T.unsafe(nil)); end
473
+ def resent_from=(val); end
474
+ def resent_message_id(val = T.unsafe(nil)); end
475
+ def resent_message_id=(val); end
476
+ def resent_sender(val = T.unsafe(nil)); end
477
+ def resent_sender=(val); end
478
+ def resent_to(val = T.unsafe(nil)); end
479
+ def resent_to=(val); end
480
+ def retryable?; end
481
+ def return_path(val = T.unsafe(nil)); end
482
+ def return_path=(val); end
483
+ def sender(val = T.unsafe(nil)); end
484
+ def sender=(val); end
485
+ def set_envelope(val); end
486
+ def skip_deletion; end
487
+ def smtp_envelope_from(val = T.unsafe(nil)); end
488
+ def smtp_envelope_from=(val); end
489
+ def smtp_envelope_to(val = T.unsafe(nil)); end
490
+ def smtp_envelope_to=(val); end
491
+ def sub_type; end
492
+ def subject(val = T.unsafe(nil)); end
493
+ def subject=(val); end
494
+ def text?; end
495
+ def text_part(&block); end
496
+ def text_part=(msg); end
497
+ def to(val = T.unsafe(nil)); end
498
+ def to=(val); end
499
+ def to_addresses; end
500
+ def to_addrs; end
501
+ def to_s; end
502
+ def to_yaml(opts = T.unsafe(nil)); end
503
+ def transfer_encoding; end
504
+ def transport_encoding(val = T.unsafe(nil)); end
505
+ def transport_encoding=(val); end
506
+ def without_attachments!; end
507
+ def x_original_to_addresses; end
508
+
509
+ private
510
+
511
+ def add_boundary; end
512
+ def add_encoding_to_body; end
513
+ def add_multipart_alternate_header; end
514
+ def add_multipart_mixed_header; end
515
+ def add_required_fields; end
516
+ def add_required_message_fields; end
517
+ def allowed_encodings; end
518
+ def body_lazy(value); end
519
+ def decode_body_as_text; end
520
+ def do_delivery; end
521
+ def find_attachment; end
522
+ def identify_and_set_transfer_encoding; end
523
+ def init_with_hash(hash); end
524
+ def init_with_string(string); end
525
+ def initialize_copy(original); end
526
+ def parse_message; end
527
+ def process_body_raw; end
528
+ def raw_source=(value); end
529
+ def separate_parts; end
530
+ def set_envelope_header; end
531
+
532
+ class << self
533
+ def default_charset; end
534
+ def default_charset=(charset); end
535
+ def from_hash(hash); end
536
+ def from_yaml(str); end
537
+ end
538
+ end
539
+
540
+ Mail::Message::HEADER_SEPARATOR = T.let(T.unsafe(nil), Regexp)
541
+
542
+ Mail::RANDOM_TAG = T.let(T.unsafe(nil), String)
543
+
544
+ Mail::RubyVer = Mail::Ruby19
545
+
546
+ module Rails
547
+ extend(::ActiveSupport::Autoload)
548
+
549
+ class << self
550
+ def app_class; end
551
+ def app_class=(_); end
552
+ def application; end
553
+ def application=(_); end
554
+ def autoloaders; end
555
+ def backtrace_cleaner; end
556
+ def cache; end
557
+ def cache=(_); end
558
+ def configuration; end
559
+ def env; end
560
+ def env=(environment); end
561
+ def gem_version; end
562
+ def groups(*groups); end
563
+ def initialize!(*args, &block); end
564
+ def initialized?(*args, &block); end
565
+ def logger; end
566
+ def logger=(_); end
567
+ def public_path; end
568
+ def root; end
569
+ def version; end
570
+ end
571
+ end