packwerk 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +14 -5
  3. data/.ruby-version +1 -1
  4. data/Gemfile +1 -1
  5. data/Gemfile.lock +129 -111
  6. data/README.md +8 -1
  7. data/USAGE.md +17 -16
  8. data/dev.yml +1 -1
  9. data/exe/packwerk +1 -1
  10. data/gemfiles/Gemfile-rails-6-0 +22 -0
  11. data/lib/packwerk/application_load_paths.rb +3 -2
  12. data/lib/packwerk/application_validator.rb +83 -67
  13. data/lib/packwerk/association_inspector.rb +23 -11
  14. data/lib/packwerk/checker.rb +4 -7
  15. data/lib/packwerk/cli.rb +32 -100
  16. data/lib/packwerk/configuration.rb +10 -2
  17. data/lib/packwerk/const_node_inspector.rb +13 -14
  18. data/lib/packwerk/constant_discovery.rb +2 -0
  19. data/lib/packwerk/constant_name_inspector.rb +0 -1
  20. data/lib/packwerk/dependency_checker.rb +12 -17
  21. data/lib/packwerk/deprecated_references.rb +7 -9
  22. data/lib/packwerk/file_processor.rb +0 -4
  23. data/lib/packwerk/formatters/offenses_formatter.rb +43 -0
  24. data/lib/packwerk/formatters/progress_formatter.rb +9 -4
  25. data/lib/packwerk/generators/configuration_file.rb +0 -1
  26. data/lib/packwerk/inflector.rb +0 -2
  27. data/lib/packwerk/node.rb +9 -2
  28. data/lib/packwerk/node_processor.rb +15 -32
  29. data/lib/packwerk/node_processor_factory.rb +0 -5
  30. data/lib/packwerk/node_visitor.rb +1 -4
  31. data/lib/packwerk/offense.rb +2 -8
  32. data/lib/packwerk/offense_collection.rb +84 -0
  33. data/lib/packwerk/offenses_formatter.rb +15 -0
  34. data/lib/packwerk/output_style.rb +20 -0
  35. data/lib/packwerk/output_styles/coloured.rb +29 -0
  36. data/lib/packwerk/output_styles/plain.rb +26 -0
  37. data/lib/packwerk/package.rb +8 -0
  38. data/lib/packwerk/package_set.rb +2 -3
  39. data/lib/packwerk/parse_run.rb +104 -0
  40. data/lib/packwerk/parsed_constant_definitions.rb +2 -4
  41. data/lib/packwerk/parsers/erb.rb +0 -2
  42. data/lib/packwerk/parsers/factory.rb +1 -3
  43. data/lib/packwerk/parsers.rb +0 -2
  44. data/lib/packwerk/privacy_checker.rb +22 -17
  45. data/lib/packwerk/reference_extractor.rb +0 -8
  46. data/lib/packwerk/reference_offense.rb +49 -0
  47. data/lib/packwerk/result.rb +9 -0
  48. data/lib/packwerk/run_context.rb +4 -21
  49. data/lib/packwerk/sanity_checker.rb +1 -3
  50. data/lib/packwerk/spring_command.rb +1 -1
  51. data/lib/packwerk/version.rb +1 -1
  52. data/lib/packwerk/violation_type.rb +0 -2
  53. data/lib/packwerk.rb +73 -34
  54. data/library.yml +1 -1
  55. data/packwerk.gemspec +1 -0
  56. data/service.yml +1 -4
  57. data/shipit.rubygems.yml +5 -1
  58. data/sorbet/rbi/gems/{actioncable@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → actioncable@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +56 -36
  59. data/sorbet/rbi/gems/{actionmailbox@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → actionmailbox@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +25 -28
  60. data/sorbet/rbi/gems/{actionmailer@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → actionmailer@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +43 -24
  61. data/sorbet/rbi/gems/{actionpack@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → actionpack@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +382 -284
  62. data/sorbet/rbi/gems/{actiontext@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → actiontext@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +76 -40
  63. data/sorbet/rbi/gems/{actionview@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → actionview@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +206 -195
  64. data/sorbet/rbi/gems/{activejob@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → activejob@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +64 -75
  65. data/sorbet/rbi/gems/{activemodel@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → activemodel@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +103 -56
  66. data/sorbet/rbi/gems/{activerecord@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → activerecord@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +1250 -898
  67. data/sorbet/rbi/gems/{activestorage@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → activestorage@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +92 -120
  68. data/sorbet/rbi/gems/{activesupport@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → activesupport@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +292 -193
  69. data/sorbet/rbi/gems/{ast@2.4.1.rbi → ast@2.4.2.rbi} +2 -1
  70. data/sorbet/rbi/gems/{better_html@1.0.15.rbi → better_html@1.0.16.rbi} +2 -2
  71. data/sorbet/rbi/gems/{concurrent-ruby@1.1.6.rbi → concurrent-ruby@1.1.8.rbi} +12 -9
  72. data/sorbet/rbi/gems/{erubi@1.9.0.rbi → erubi@1.10.0.rbi} +3 -1
  73. data/sorbet/rbi/gems/{i18n@1.8.2.rbi → i18n@1.8.10.rbi} +19 -52
  74. data/sorbet/rbi/gems/{loofah@2.5.0.rbi → loofah@2.9.0.rbi} +3 -1
  75. data/sorbet/rbi/gems/marcel@1.0.0.rbi +70 -0
  76. data/sorbet/rbi/gems/{mini_mime@1.0.2.rbi → mini_mime@1.0.3.rbi} +6 -6
  77. data/sorbet/rbi/gems/{mini_portile2@2.4.0.rbi → minitest-focus@1.2.1.rbi} +2 -2
  78. data/sorbet/rbi/gems/{minitest@5.14.0.rbi → minitest@5.14.4.rbi} +31 -29
  79. data/sorbet/rbi/gems/{mocha@1.11.2.rbi → mocha@1.12.0.rbi} +25 -36
  80. data/sorbet/rbi/gems/{nio4r@2.5.2.rbi → nio4r@2.5.7.rbi} +21 -20
  81. data/sorbet/rbi/gems/{nokogiri@1.10.9.rbi → nokogiri@1.11.2.rbi} +193 -154
  82. data/sorbet/rbi/gems/parallel@1.20.1.rbi +117 -0
  83. data/sorbet/rbi/gems/parlour@6.0.0.rbi +1272 -0
  84. data/sorbet/rbi/gems/{parser@2.7.1.4.rbi → parser@3.0.0.0.rbi} +287 -174
  85. data/sorbet/rbi/gems/{pry@0.13.1.rbi → pry@0.14.0.rbi} +1 -1
  86. data/sorbet/rbi/gems/racc@1.5.2.rbi +57 -0
  87. data/sorbet/rbi/gems/{rack@2.2.2.rbi → rack@2.2.3.rbi} +23 -35
  88. data/sorbet/rbi/gems/{rails@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → rails@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +1 -1
  89. data/sorbet/rbi/gems/{railties@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → railties@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +132 -121
  90. data/sorbet/rbi/gems/{rake@13.0.1.rbi → rake@13.0.3.rbi} +16 -20
  91. data/sorbet/rbi/gems/{parallel@1.19.1.rbi → regexp_parser@2.1.1.rbi} +2 -2
  92. data/sorbet/rbi/gems/rubocop-ast@1.4.1.rbi +8 -0
  93. data/sorbet/rbi/gems/{rubocop-performance@1.5.2.rbi → rubocop-performance@1.10.2.rbi} +1 -1
  94. data/sorbet/rbi/gems/{rubocop-shopify@1.0.2.rbi → rubocop-shopify@2.0.1.rbi} +1 -1
  95. data/sorbet/rbi/gems/{rubocop-sorbet@0.3.7.rbi → rubocop-sorbet@0.6.1.rbi} +1 -1
  96. data/sorbet/rbi/gems/{rubocop@0.82.0.rbi → rubocop@1.12.0.rbi} +1 -1
  97. data/sorbet/rbi/gems/{ruby-progressbar@1.10.1.rbi → ruby-progressbar@1.11.0.rbi} +1 -1
  98. data/sorbet/rbi/gems/spoom@1.1.0.rbi +1061 -0
  99. data/sorbet/rbi/gems/{spring@2.1.0.rbi → spring@2.1.1.rbi} +7 -7
  100. data/sorbet/rbi/gems/{sprockets-rails@3.2.1.rbi → sprockets-rails@3.2.2.rbi} +88 -68
  101. data/sorbet/rbi/gems/{sprockets@4.0.0.rbi → sprockets@4.0.2.rbi} +8 -7
  102. data/sorbet/rbi/gems/{tapioca@0.4.5.rbi → tapioca@0.4.19.rbi} +109 -24
  103. data/sorbet/rbi/gems/{thor@1.0.1.rbi → thor@1.1.0.rbi} +16 -15
  104. data/sorbet/rbi/gems/{tzinfo@2.0.2.rbi → tzinfo@2.0.4.rbi} +21 -2
  105. data/sorbet/rbi/gems/{unicode-display_width@1.7.0.rbi → unicode-display_width@2.0.0.rbi} +1 -1
  106. data/sorbet/rbi/gems/{websocket-driver@0.7.1.rbi → websocket-driver@0.7.3.rbi} +29 -29
  107. data/sorbet/rbi/gems/{websocket-extensions@0.1.4.rbi → websocket-extensions@0.1.5.rbi} +2 -2
  108. data/sorbet/rbi/gems/zeitwerk@2.4.2.rbi +177 -0
  109. data/sorbet/tapioca/require.rb +1 -0
  110. metadata +78 -61
  111. data/lib/packwerk/cache_deprecated_references.rb +0 -47
  112. data/lib/packwerk/checking_deprecated_references.rb +0 -40
  113. data/lib/packwerk/commands/detect_stale_violations_command.rb +0 -63
  114. data/lib/packwerk/commands/offense_progress_marker.rb +0 -24
  115. data/lib/packwerk/detect_stale_deprecated_references.rb +0 -14
  116. data/lib/packwerk/output_styles.rb +0 -41
  117. data/lib/packwerk/reference_lister.rb +0 -23
  118. data/lib/packwerk/updating_deprecated_references.rb +0 -14
  119. data/sorbet/rbi/gems/jaro_winkler@1.5.4.rbi +0 -8
  120. data/sorbet/rbi/gems/marcel@0.3.3.rbi +0 -30
  121. data/sorbet/rbi/gems/mimemagic@0.3.5.rbi +0 -47
  122. data/sorbet/rbi/gems/parlour@4.0.1.rbi +0 -561
  123. data/sorbet/rbi/gems/spoom@1.0.4.rbi +0 -418
  124. data/sorbet/rbi/gems/zeitwerk@2.3.0.rbi +0 -8
@@ -1,6 +1,6 @@
1
1
  # DO NOT EDIT MANUALLY
2
2
  # This is an autogenerated file for types exported from the `mocha` gem.
3
- # Please instead update this file by running `dev typecheck update`.
3
+ # Please instead update this file by running `bin/tapioca sync`.
4
4
 
5
5
  # typed: true
6
6
 
@@ -76,32 +76,30 @@ class Mocha::BlockMatchers::OptionalBlock
76
76
  end
77
77
 
78
78
  class Mocha::Cardinality
79
- def initialize(required, maximum); end
79
+ def initialize(required = T.unsafe(nil), maximum = T.unsafe(nil)); end
80
80
 
81
81
  def <<(invocation); end
82
82
  def actual_invocations; end
83
83
  def allowed_any_number_of_times?; end
84
84
  def anticipated_times; end
85
+ def at_least(count); end
86
+ def at_most(count); end
87
+ def exactly(count); end
85
88
  def invocations_allowed?; end
86
89
  def invoked_times; end
87
90
  def needs_verifying?; end
88
91
  def satisfied?; end
92
+ def times(range_or_count); end
89
93
  def used?; end
90
94
  def verified?; end
91
95
 
92
96
  protected
93
97
 
98
+ def count(number); end
94
99
  def infinite?(number); end
95
100
  def maximum; end
96
101
  def required; end
97
- def times(number); end
98
-
99
- class << self
100
- def at_least(count); end
101
- def at_most(count); end
102
- def exactly(count); end
103
- def times(range_or_count); end
104
- end
102
+ def update(required, maximum); end
105
103
  end
106
104
 
107
105
  Mocha::Cardinality::INFINITY = T.let(T.unsafe(nil), Float)
@@ -111,7 +109,7 @@ class Mocha::Central
111
109
 
112
110
  def stub(method); end
113
111
  def stubba_methods; end
114
- def stubba_methods=(_); end
112
+ def stubba_methods=(_arg0); end
115
113
  def unstub(method); end
116
114
  def unstub_all; end
117
115
  end
@@ -119,8 +117,8 @@ end
119
117
  class Mocha::Central::Null < ::Mocha::Central
120
118
  def initialize(&block); end
121
119
 
122
- def stub(*_); end
123
- def unstub(*_); end
120
+ def stub(*_arg0); end
121
+ def unstub(*_arg0); end
124
122
  end
125
123
 
126
124
  class Mocha::ChangeStateSideEffect
@@ -216,9 +214,9 @@ end
216
214
  class Mocha::Deprecation
217
215
  class << self
218
216
  def messages; end
219
- def messages=(_); end
217
+ def messages=(_arg0); end
220
218
  def mode; end
221
- def mode=(_); end
219
+ def mode=(_arg0); end
222
220
  def warning(*messages); end
223
221
  end
224
222
  end
@@ -270,7 +268,7 @@ class Mocha::Expectation
270
268
  def raises(exception = T.unsafe(nil), message = T.unsafe(nil)); end
271
269
  def returns(*values); end
272
270
  def satisfied?; end
273
- def then(*parameters); end
271
+ def then(state = T.unsafe(nil)); end
274
272
  def throws(tag, object = T.unsafe(nil)); end
275
273
  def times(range); end
276
274
  def twice; end
@@ -290,7 +288,7 @@ class Mocha::ExpectationErrorFactory
290
288
  class << self
291
289
  def build(message = T.unsafe(nil), backtrace = T.unsafe(nil)); end
292
290
  def exception_class; end
293
- def exception_class=(_); end
291
+ def exception_class=(_arg0); end
294
292
  end
295
293
  end
296
294
 
@@ -591,7 +589,7 @@ end
591
589
 
592
590
  class Mocha::Mockery
593
591
  def logger; end
594
- def logger=(_); end
592
+ def logger=(_arg0); end
595
593
  def mocha_inspect; end
596
594
  def mock_impersonating(object); end
597
595
  def mock_impersonating_any_instance_of(klass); end
@@ -599,7 +597,6 @@ class Mocha::Mockery
599
597
  def named_mock(name); end
600
598
  def new_state_machine(name); end
601
599
  def on_stubbing(object, method); end
602
- def on_stubbing_method_unnecessarily(expectation); end
603
600
  def state_machines; end
604
601
  def stubba; end
605
602
  def teardown; end
@@ -621,16 +618,12 @@ class Mocha::Mockery
621
618
  def setup; end
622
619
  def teardown; end
623
620
  def verify(*args); end
624
-
625
- private
626
-
627
- def instances; end
628
621
  end
629
622
  end
630
623
 
631
624
  class Mocha::Mockery::Null < ::Mocha::Mockery
632
- def add_mock(*_); end
633
- def add_state_machine(*_); end
625
+ def add_mock(*_arg0); end
626
+ def add_state_machine(*_arg0); end
634
627
  def stubba; end
635
628
 
636
629
  private
@@ -648,7 +641,7 @@ class Mocha::NotInitializedError < ::Mocha::ErrorWithFilteredBacktrace
648
641
  end
649
642
 
650
643
  module Mocha::ObjectMethods
651
- def _method(_); end
644
+ def _method(_arg0); end
652
645
  def expects(expected_methods_vs_return_values); end
653
646
  def mocha(instantiate = T.unsafe(nil)); end
654
647
  def reset_mocha; end
@@ -853,7 +846,7 @@ class Mocha::ReturnValues
853
846
  def +(other); end
854
847
  def next(invocation); end
855
848
  def values; end
856
- def values=(_); end
849
+ def values=(_arg0); end
857
850
 
858
851
  class << self
859
852
  def build(*values); end
@@ -886,24 +879,20 @@ class Mocha::StateMachine
886
879
 
887
880
  def become(next_state_name); end
888
881
  def current_state; end
889
- def current_state=(_); end
882
+ def current_state=(_arg0); end
890
883
  def is(state_name); end
891
- def is_not(state_name); end
884
+ def is_not(unexpected_state_name); end
892
885
  def mocha_inspect; end
893
886
  def name; end
894
887
  def starts_as(initial_state_name); end
895
888
  end
896
889
 
897
- class Mocha::StateMachine::State
898
- def initialize(state_machine, state); end
899
-
890
+ class Mocha::StateMachine::State < ::Mocha::StateMachine::StatePredicate
900
891
  def activate; end
901
- def active?; end
902
- def mocha_inspect; end
903
892
  end
904
893
 
905
894
  class Mocha::StateMachine::StatePredicate
906
- def initialize(state_machine, state); end
895
+ def initialize(state_machine, state, description, &active_check); end
907
896
 
908
897
  def active?; end
909
898
  def mocha_inspect; end
@@ -912,7 +901,7 @@ end
912
901
  class Mocha::StubbedMethod
913
902
  def initialize(stubbee, method_name); end
914
903
 
915
- def ==(_); end
904
+ def ==(_arg0); end
916
905
  def define_new_method; end
917
906
  def hide_original_method; end
918
907
  def matches?(other); end
@@ -1,41 +1,42 @@
1
1
  # DO NOT EDIT MANUALLY
2
2
  # This is an autogenerated file for types exported from the `nio4r` gem.
3
- # Please instead update this file by running `dev typecheck update`.
3
+ # Please instead update this file by running `bin/tapioca sync`.
4
4
 
5
5
  # typed: true
6
6
 
7
7
  module NIO
8
8
  class << self
9
9
  def engine; end
10
+ def pure?(env = T.unsafe(nil)); end
10
11
  end
11
12
  end
12
13
 
13
14
  class NIO::ByteBuffer
14
15
  include(::Enumerable)
15
16
 
16
- def initialize(_); end
17
+ def initialize(_arg0); end
17
18
 
18
- def <<(_); end
19
- def [](_); end
19
+ def <<(_arg0); end
20
+ def [](_arg0); end
20
21
  def capacity; end
21
22
  def clear; end
22
23
  def compact; end
23
24
  def each; end
24
25
  def flip; end
25
26
  def full?; end
26
- def get(*_); end
27
+ def get(*_arg0); end
27
28
  def inspect; end
28
29
  def limit; end
29
- def limit=(_); end
30
+ def limit=(_arg0); end
30
31
  def mark; end
31
32
  def position; end
32
- def position=(_); end
33
- def read_from(_); end
33
+ def position=(_arg0); end
34
+ def read_from(_arg0); end
34
35
  def remaining; end
35
36
  def reset; end
36
37
  def rewind; end
37
38
  def size; end
38
- def write_to(_); end
39
+ def write_to(_arg0); end
39
40
  end
40
41
 
41
42
  class NIO::ByteBuffer::MarkUnsetError < ::IOError
@@ -50,35 +51,35 @@ end
50
51
  NIO::ENGINE = T.let(T.unsafe(nil), String)
51
52
 
52
53
  class NIO::Monitor
53
- def initialize(_, _, _); end
54
+ def initialize(_arg0, _arg1, _arg2); end
54
55
 
55
- def add_interest(_); end
56
- def close(*_); end
56
+ def add_interest(_arg0); end
57
+ def close(*_arg0); end
57
58
  def closed?; end
58
59
  def interests; end
59
- def interests=(_); end
60
+ def interests=(_arg0); end
60
61
  def io; end
61
62
  def readable?; end
62
63
  def readiness; end
63
- def remove_interest(_); end
64
+ def remove_interest(_arg0); end
64
65
  def selector; end
65
66
  def value; end
66
- def value=(_); end
67
+ def value=(_arg0); end
67
68
  def writable?; end
68
69
  def writeable?; end
69
70
  end
70
71
 
71
72
  class NIO::Selector
72
- def initialize(*_); end
73
+ def initialize(*_arg0); end
73
74
 
74
75
  def backend; end
75
76
  def close; end
76
77
  def closed?; end
77
- def deregister(_); end
78
+ def deregister(_arg0); end
78
79
  def empty?; end
79
- def register(_, _); end
80
- def registered?(_); end
81
- def select(*_); end
80
+ def register(_arg0, _arg1); end
81
+ def registered?(_arg0); end
82
+ def select(*_arg0); end
82
83
  def wakeup; end
83
84
 
84
85
  class << self