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 `pry` 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
 
@@ -0,0 +1,57 @@
1
+ # DO NOT EDIT MANUALLY
2
+ # This is an autogenerated file for types exported from the `racc` gem.
3
+ # Please instead update this file by running `bin/tapioca sync`.
4
+
5
+ # typed: true
6
+
7
+ ParseError = Racc::ParseError
8
+
9
+ Racc::Copyright = T.let(T.unsafe(nil), String)
10
+
11
+ class Racc::Parser
12
+ def _racc_do_parse_rb(arg, in_debug); end
13
+ def _racc_do_reduce(arg, act); end
14
+ def _racc_evalact(act, arg); end
15
+ def _racc_init_sysvars; end
16
+ def _racc_setup; end
17
+ def _racc_yyparse_rb(recv, mid, arg, c_debug); end
18
+ def next_token; end
19
+ def on_error(t, val, vstack); end
20
+ def racc_accept; end
21
+ def racc_e_pop(state, tstack, vstack); end
22
+ def racc_next_state(curstate, state); end
23
+ def racc_print_stacks(t, v); end
24
+ def racc_print_states(s); end
25
+ def racc_read_token(t, tok, val); end
26
+ def racc_reduce(toks, sim, tstack, vstack); end
27
+ def racc_shift(tok, tstack, vstack); end
28
+ def racc_token2str(tok); end
29
+ def token_to_str(t); end
30
+ def yyaccept; end
31
+ def yyerrok; end
32
+ def yyerror; end
33
+
34
+ class << self
35
+ def racc_runtime_type; end
36
+ end
37
+ end
38
+
39
+ Racc::Parser::Racc_Main_Parsing_Routine = T.let(T.unsafe(nil), Symbol)
40
+
41
+ Racc::Parser::Racc_Runtime_Core_Id_C = T.let(T.unsafe(nil), String)
42
+
43
+ Racc::Parser::Racc_Runtime_Core_Version = T.let(T.unsafe(nil), String)
44
+
45
+ Racc::Parser::Racc_Runtime_Core_Version_C = T.let(T.unsafe(nil), String)
46
+
47
+ Racc::Parser::Racc_Runtime_Core_Version_R = T.let(T.unsafe(nil), String)
48
+
49
+ Racc::Parser::Racc_Runtime_Type = T.let(T.unsafe(nil), String)
50
+
51
+ Racc::Parser::Racc_Runtime_Version = T.let(T.unsafe(nil), String)
52
+
53
+ Racc::Parser::Racc_YY_Parse_Method = T.let(T.unsafe(nil), Symbol)
54
+
55
+ Racc::VERSION = T.let(T.unsafe(nil), String)
56
+
57
+ Racc::Version = T.let(T.unsafe(nil), String)
@@ -1,6 +1,6 @@
1
1
  # DO NOT EDIT MANUALLY
2
2
  # This is an autogenerated file for types exported from the `rack` 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
 
@@ -18,7 +18,7 @@ class Rack::Auth::AbstractHandler
18
18
  def initialize(app, realm = T.unsafe(nil), &authenticator); end
19
19
 
20
20
  def realm; end
21
- def realm=(_); end
21
+ def realm=(_arg0); end
22
22
 
23
23
  private
24
24
 
@@ -66,8 +66,8 @@ class Rack::Auth::Digest::MD5 < ::Rack::Auth::AbstractHandler
66
66
 
67
67
  def call(env); end
68
68
  def opaque; end
69
- def opaque=(_); end
70
- def passwords_hashed=(_); end
69
+ def opaque=(_arg0); end
70
+ def passwords_hashed=(_arg0); end
71
71
  def passwords_hashed?; end
72
72
 
73
73
  private
@@ -101,9 +101,9 @@ class Rack::Auth::Digest::Nonce
101
101
  class << self
102
102
  def parse(string); end
103
103
  def private_key; end
104
- def private_key=(_); end
104
+ def private_key=(_arg0); end
105
105
  def time_limit; end
106
- def time_limit=(_); end
106
+ def time_limit=(_arg0); end
107
107
  end
108
108
  end
109
109
 
@@ -131,7 +131,7 @@ class Rack::Auth::Digest::Request < ::Rack::Auth::AbstractRequest
131
131
  def method_missing(sym, *args); end
132
132
  def nonce; end
133
133
  def params; end
134
- def respond_to?(sym, *_); end
134
+ def respond_to?(sym, *_arg1); end
135
135
  end
136
136
 
137
137
  class Rack::BodyProxy
@@ -466,18 +466,6 @@ class Rack::Handler::CGI
466
466
  end
467
467
  end
468
468
 
469
- class Rack::Handler::WEBrick < ::WEBrick::HTTPServlet::AbstractServlet
470
- def initialize(server, app); end
471
-
472
- def service(req, res); end
473
-
474
- class << self
475
- def run(app, **options); end
476
- def shutdown; end
477
- def valid_options; end
478
- end
479
- end
480
-
481
469
  class Rack::Head
482
470
  def initialize(app); end
483
471
 
@@ -659,7 +647,7 @@ class Rack::MockResponse < ::Rack::Response
659
647
  def cookies; end
660
648
  def empty?; end
661
649
  def errors; end
662
- def errors=(_); end
650
+ def errors=(_arg0); end
663
651
  def match(other); end
664
652
  def original_headers; end
665
653
 
@@ -669,7 +657,7 @@ class Rack::MockResponse < ::Rack::Response
669
657
  def parse_cookies_from_header; end
670
658
 
671
659
  class << self
672
- def [](*_); end
660
+ def [](*_arg0); end
673
661
  end
674
662
  end
675
663
 
@@ -812,10 +800,10 @@ class Rack::Multipart::Parser::MultipartInfo < ::Struct
812
800
  def tmp_files=(_); end
813
801
 
814
802
  class << self
815
- def [](*_); end
803
+ def [](*_arg0); end
816
804
  def inspect; end
817
805
  def members; end
818
- def new(*_); end
806
+ def new(*_arg0); end
819
807
  end
820
808
  end
821
809
 
@@ -837,7 +825,7 @@ class Rack::Multipart::UploadedFile
837
825
  def initialize(filepath = T.unsafe(nil), ct = T.unsafe(nil), bin = T.unsafe(nil), path: T.unsafe(nil), content_type: T.unsafe(nil), binary: T.unsafe(nil), filename: T.unsafe(nil), io: T.unsafe(nil)); end
838
826
 
839
827
  def content_type; end
840
- def content_type=(_); end
828
+ def content_type=(_arg0); end
841
829
  def local_path; end
842
830
  def method_missing(method_name, *args, &block); end
843
831
  def original_filename; end
@@ -1026,7 +1014,7 @@ class Rack::Request
1026
1014
 
1027
1015
  class << self
1028
1016
  def ip_filter; end
1029
- def ip_filter=(_); end
1017
+ def ip_filter=(_arg0); end
1030
1018
  end
1031
1019
  end
1032
1020
 
@@ -1158,7 +1146,7 @@ class Rack::Response
1158
1146
  def [](key); end
1159
1147
  def []=(key, v); end
1160
1148
  def body; end
1161
- def body=(_); end
1149
+ def body=(_arg0); end
1162
1150
  def chunked?; end
1163
1151
  def close; end
1164
1152
  def delete_header(key); end
@@ -1170,11 +1158,11 @@ class Rack::Response
1170
1158
  def header; end
1171
1159
  def headers; end
1172
1160
  def length; end
1173
- def length=(_); end
1161
+ def length=(_arg0); end
1174
1162
  def redirect(target, status = T.unsafe(nil)); end
1175
1163
  def set_header(key, v); end
1176
1164
  def status; end
1177
- def status=(_); end
1165
+ def status=(_arg0); end
1178
1166
  def to_a(&block); end
1179
1167
  def write(chunk); end
1180
1168
 
@@ -1242,7 +1230,7 @@ class Rack::Response::Raw
1242
1230
  def headers; end
1243
1231
  def set_header(key, v); end
1244
1232
  def status; end
1245
- def status=(_); end
1233
+ def status=(_arg0); end
1246
1234
  end
1247
1235
 
1248
1236
  Rack::Response::STATUS_WITH_NO_ENTITY_BODY = T.let(T.unsafe(nil), Hash)
@@ -1300,7 +1288,7 @@ class Rack::Server
1300
1288
  def default_options; end
1301
1289
  def middleware; end
1302
1290
  def options; end
1303
- def options=(_); end
1291
+ def options=(_arg0); end
1304
1292
  def server; end
1305
1293
  def start(&block); end
1306
1294
 
@@ -1384,8 +1372,8 @@ end
1384
1372
  Rack::Session::Abstract::Persisted::DEFAULT_OPTIONS = T.let(T.unsafe(nil), Hash)
1385
1373
 
1386
1374
  class Rack::Session::Abstract::PersistedSecure < ::Rack::Session::Abstract::Persisted
1387
- def extract_session_id(*_); end
1388
- def generate_sid(*_); end
1375
+ def extract_session_id(*_arg0); end
1376
+ def generate_sid(*_arg0); end
1389
1377
 
1390
1378
  private
1391
1379
 
@@ -1414,7 +1402,7 @@ class Rack::Session::Abstract::SessionHash
1414
1402
  def fetch(key, default = T.unsafe(nil), &block); end
1415
1403
  def has_key?(key); end
1416
1404
  def id; end
1417
- def id=(_); end
1405
+ def id=(_arg0); end
1418
1406
  def include?(key); end
1419
1407
  def inspect; end
1420
1408
  def key?(key); end
@@ -1633,7 +1621,7 @@ module Rack::Utils
1633
1621
  def clean_path_info(path_info); end
1634
1622
  def clock_time; end
1635
1623
  def default_query_parser; end
1636
- def default_query_parser=(_); end
1624
+ def default_query_parser=(_arg0); end
1637
1625
  def delete_cookie_header!(header, key, value = T.unsafe(nil)); end
1638
1626
  def escape(s); end
1639
1627
  def escape_html(string); end
@@ -1643,7 +1631,7 @@ module Rack::Utils
1643
1631
  def key_space_limit=(v); end
1644
1632
  def make_delete_cookie_header(header, key, value); end
1645
1633
  def multipart_part_limit; end
1646
- def multipart_part_limit=(_); end
1634
+ def multipart_part_limit=(_arg0); end
1647
1635
  def param_depth_limit; end
1648
1636
  def param_depth_limit=(v); end
1649
1637
  def parse_cookies(env); end
@@ -1,6 +1,6 @@
1
1
  # DO NOT EDIT MANUALLY
2
2
  # This is an autogenerated file for types exported from the `rails` 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