packwerk 3.2.3 → 3.3.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 (70) hide show
  1. checksums.yaml +4 -4
  2. data/exe/packwerk +0 -4
  3. data/lib/packwerk/application_validator.rb +11 -10
  4. data/lib/packwerk/association_inspector.rb +21 -32
  5. data/lib/packwerk/cache.rb +43 -36
  6. data/lib/packwerk/checker.rb +24 -26
  7. data/lib/packwerk/cli.rb +13 -20
  8. data/lib/packwerk/commands/base_command.rb +20 -26
  9. data/lib/packwerk/commands/check_command.rb +8 -8
  10. data/lib/packwerk/commands/help_command.rb +3 -4
  11. data/lib/packwerk/commands/init_command.rb +2 -3
  12. data/lib/packwerk/commands/lazy_loaded_entry.rb +5 -7
  13. data/lib/packwerk/commands/update_todo_command.rb +3 -3
  14. data/lib/packwerk/commands/uses_parse_run.rb +20 -26
  15. data/lib/packwerk/commands/validate_command.rb +6 -7
  16. data/lib/packwerk/commands/version_command.rb +2 -3
  17. data/lib/packwerk/commands.rb +5 -8
  18. data/lib/packwerk/configuration.rb +29 -43
  19. data/lib/packwerk/const_node_inspector.rb +5 -9
  20. data/lib/packwerk/constant_context.rb +0 -2
  21. data/lib/packwerk/constant_discovery.rb +3 -16
  22. data/lib/packwerk/constant_name_inspector.rb +4 -11
  23. data/lib/packwerk/extension_loader.rb +1 -2
  24. data/lib/packwerk/file_processor.rb +20 -25
  25. data/lib/packwerk/files_for_processing.rb +13 -29
  26. data/lib/packwerk/formatters/default_offenses_formatter.rb +14 -12
  27. data/lib/packwerk/formatters/progress_formatter.rb +10 -12
  28. data/lib/packwerk/generators/configuration_file.rb +5 -9
  29. data/lib/packwerk/generators/root_package.rb +3 -7
  30. data/lib/packwerk/graph.rb +1 -7
  31. data/lib/packwerk/node_helpers.rb +32 -38
  32. data/lib/packwerk/node_processor.rb +2 -14
  33. data/lib/packwerk/node_processor_factory.rb +13 -7
  34. data/lib/packwerk/node_visitor.rb +2 -10
  35. data/lib/packwerk/offense.rb +6 -12
  36. data/lib/packwerk/offense_collection.rb +22 -35
  37. data/lib/packwerk/offenses_formatter.rb +27 -34
  38. data/lib/packwerk/output_style.rb +10 -11
  39. data/lib/packwerk/output_styles/coloured.rb +6 -4
  40. data/lib/packwerk/output_styles/plain.rb +6 -4
  41. data/lib/packwerk/package.rb +15 -16
  42. data/lib/packwerk/package_set.rb +15 -25
  43. data/lib/packwerk/package_todo.rb +21 -30
  44. data/lib/packwerk/parse_run.rb +10 -37
  45. data/lib/packwerk/parsed_constant_definitions.rb +10 -24
  46. data/lib/packwerk/parsers/erb.rb +11 -22
  47. data/lib/packwerk/parsers/factory.rb +9 -9
  48. data/lib/packwerk/parsers/parser_interface.rb +5 -10
  49. data/lib/packwerk/parsers/ruby.rb +9 -14
  50. data/lib/packwerk/parsers.rb +2 -4
  51. data/lib/packwerk/rails_load_paths.rb +6 -11
  52. data/lib/packwerk/reference_checking/checkers/dependency_checker.rb +10 -15
  53. data/lib/packwerk/reference_checking/reference_checker.rb +2 -8
  54. data/lib/packwerk/reference_extractor.rb +22 -55
  55. data/lib/packwerk/reference_offense.rb +5 -15
  56. data/lib/packwerk/run_context.rb +28 -39
  57. data/lib/packwerk/spring_command.rb +4 -7
  58. data/lib/packwerk/validator/result.rb +12 -5
  59. data/lib/packwerk/validator.rb +23 -33
  60. data/lib/packwerk/validators/dependency_validator.rb +9 -10
  61. data/lib/packwerk/version.rb +1 -1
  62. data/lib/packwerk.rb +0 -1
  63. data/sorbet/config +2 -0
  64. data/sorbet/rbi/gems/prism@1.9.0.rbi +43359 -0
  65. data/sorbet/rbi/shims/packwerk/reference.rbi +5 -12
  66. data/sorbet/rbi/shims/packwerk/unresolved_reference.rbi +5 -12
  67. data/sorbet/rbi/shims/parser.rbi +1 -1
  68. metadata +18 -19
  69. data/lib/packwerk/disable_sorbet.rb +0 -41
  70. data/sorbet/rbi/gems/prism@0.27.0.rbi +0 -36983
@@ -2,14 +2,7 @@
2
2
 
3
3
  module Packwerk
4
4
  class Reference
5
- sig do
6
- params(
7
- package: Package,
8
- relative_path: String,
9
- constant: ConstantContext,
10
- source_location: T.nilable(Node::Location),
11
- ).void
12
- end
5
+ #: (package: Package, relative_path: String, constant: ConstantContext, source_location: Node::Location?) -> void
13
6
  def initialize(
14
7
  package:,
15
8
  relative_path:,
@@ -18,16 +11,16 @@ module Packwerk
18
11
  )
19
12
  end
20
13
 
21
- sig { returns(Package) }
14
+ #: Package
22
15
  attr_reader(:package)
23
16
 
24
- sig { returns(T.nilable(String)) }
17
+ #: String?
25
18
  attr_reader(:relative_path)
26
19
 
27
- sig { returns(ConstantContext) }
20
+ #: ConstantContext
28
21
  attr_reader(:constant)
29
22
 
30
- sig { returns(T.nilable(Node::Location)) }
23
+ #: Node::Location?
31
24
  attr_reader(:source_location)
32
25
  end
33
26
  end
@@ -2,14 +2,7 @@
2
2
 
3
3
  module Packwerk
4
4
  class UnresolvedReference
5
- sig do
6
- params(
7
- constant_name: String,
8
- namespace_path: T.nilable(T::Array[String]),
9
- relative_path: String,
10
- source_location: T.nilable(Node::Location),
11
- ).void
12
- end
5
+ #: (constant_name: String, namespace_path: Array[String]?, relative_path: String, source_location: Node::Location?) -> void
13
6
  def initialize(
14
7
  constant_name:,
15
8
  namespace_path:,
@@ -18,16 +11,16 @@ module Packwerk
18
11
  )
19
12
  end
20
13
 
21
- sig { returns(String) }
14
+ #: String
22
15
  attr_reader(:constant_name)
23
16
 
24
- sig { returns(T.nilable(T::Array[String])) }
17
+ #: Array[String]?
25
18
  attr_reader(:namespace_path)
26
19
 
27
- sig { returns(String) }
20
+ #: String
28
21
  attr_reader(:relative_path)
29
22
 
30
- sig { returns(T.nilable(Node::Location)) }
23
+ #: Node::Location?
31
24
  attr_reader(:source_location)
32
25
  end
33
26
  end
@@ -8,6 +8,6 @@ class Parser::Base < ::Racc::Parser
8
8
  # @return [Parser::AST::Node, nil]
9
9
  #
10
10
  # source://parser-3.1.2.1/lib/parser/base.rb:186
11
- sig { params(source_buffer: Parser::Source::Buffer).returns(T.nilable(Parser::AST::Node)) }
11
+ #: (Parser::Source::Buffer source_buffer) -> Parser::AST::Node?
12
12
  def parse(source_buffer); end
13
13
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: packwerk
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.3
4
+ version: 3.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shopify Inc.
@@ -24,7 +24,7 @@ dependencies:
24
24
  - !ruby/object:Gem::Version
25
25
  version: '6.0'
26
26
  - !ruby/object:Gem::Dependency
27
- name: bundler
27
+ name: benchmark
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
30
  - - ">="
@@ -38,47 +38,47 @@ dependencies:
38
38
  - !ruby/object:Gem::Version
39
39
  version: '0'
40
40
  - !ruby/object:Gem::Dependency
41
- name: constant_resolver
41
+ name: bundler
42
42
  requirement: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - ">="
45
45
  - !ruby/object:Gem::Version
46
- version: '0.3'
46
+ version: '0'
47
47
  type: :runtime
48
48
  prerelease: false
49
49
  version_requirements: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - ">="
52
52
  - !ruby/object:Gem::Version
53
- version: '0.3'
53
+ version: '0'
54
54
  - !ruby/object:Gem::Dependency
55
- name: parallel
55
+ name: constant_resolver
56
56
  requirement: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - ">="
59
59
  - !ruby/object:Gem::Version
60
- version: '0'
60
+ version: '0.3'
61
61
  type: :runtime
62
62
  prerelease: false
63
63
  version_requirements: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - ">="
66
66
  - !ruby/object:Gem::Version
67
- version: '0'
67
+ version: '0.3'
68
68
  - !ruby/object:Gem::Dependency
69
- name: sorbet-runtime
69
+ name: parallel
70
70
  requirement: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - ">="
72
+ - - "<"
73
73
  - !ruby/object:Gem::Version
74
- version: 0.5.9914
74
+ version: '2'
75
75
  type: :runtime
76
76
  prerelease: false
77
77
  version_requirements: !ruby/object:Gem::Requirement
78
78
  requirements:
79
- - - ">="
79
+ - - "<"
80
80
  - !ruby/object:Gem::Version
81
- version: 0.5.9914
81
+ version: '2'
82
82
  - !ruby/object:Gem::Dependency
83
83
  name: zeitwerk
84
84
  requirement: !ruby/object:Gem::Requirement
@@ -127,14 +127,14 @@ dependencies:
127
127
  requirements:
128
128
  - - ">="
129
129
  - !ruby/object:Gem::Version
130
- version: 0.25.0
130
+ version: 1.4.0
131
131
  type: :runtime
132
132
  prerelease: false
133
133
  version_requirements: !ruby/object:Gem::Requirement
134
134
  requirements:
135
135
  - - ">="
136
136
  - !ruby/object:Gem::Version
137
- version: 0.25.0
137
+ version: 1.4.0
138
138
  - !ruby/object:Gem::Dependency
139
139
  name: better_html
140
140
  requirement: !ruby/object:Gem::Requirement
@@ -184,7 +184,6 @@ files:
184
184
  - lib/packwerk/constant_context.rb
185
185
  - lib/packwerk/constant_discovery.rb
186
186
  - lib/packwerk/constant_name_inspector.rb
187
- - lib/packwerk/disable_sorbet.rb
188
187
  - lib/packwerk/extension_loader.rb
189
188
  - lib/packwerk/file_processor.rb
190
189
  - lib/packwerk/files_for_processing.rb
@@ -254,7 +253,7 @@ files:
254
253
  - sorbet/rbi/gems/nokogiri@1.18.4.rbi
255
254
  - sorbet/rbi/gems/parallel@1.25.1.rbi
256
255
  - sorbet/rbi/gems/parser@3.3.3.0.rbi
257
- - sorbet/rbi/gems/prism@0.27.0.rbi
256
+ - sorbet/rbi/gems/prism@1.9.0.rbi
258
257
  - sorbet/rbi/gems/racc@1.8.1.rbi
259
258
  - sorbet/rbi/gems/rack-test@2.2.0.rbi
260
259
  - sorbet/rbi/gems/rack@2.2.13.rbi
@@ -304,14 +303,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
304
303
  requirements:
305
304
  - - ">="
306
305
  - !ruby/object:Gem::Version
307
- version: '3.1'
306
+ version: '3.3'
308
307
  required_rubygems_version: !ruby/object:Gem::Requirement
309
308
  requirements:
310
309
  - - ">="
311
310
  - !ruby/object:Gem::Version
312
311
  version: '0'
313
312
  requirements: []
314
- rubygems_version: 3.6.9
313
+ rubygems_version: 4.0.6
315
314
  specification_version: 4
316
315
  summary: Packages for applications based on the zeitwerk autoloader
317
316
  test_files: []
@@ -1,41 +0,0 @@
1
- # typed: true
2
- # frozen_string_literal: true
3
-
4
- require "sorbet-runtime"
5
-
6
- begin
7
- T::Configuration.default_checked_level = :never
8
-
9
- T.singleton_class.prepend(
10
- Module.new do
11
- def cast(value, type, checked: true)
12
- value
13
- end
14
-
15
- def let(value, type, checked: true)
16
- value
17
- end
18
-
19
- def must(arg)
20
- arg
21
- end
22
-
23
- def absurd(value)
24
- value
25
- end
26
-
27
- def bind(value, type, checked: true)
28
- value
29
- end
30
- end
31
- )
32
- rescue RuntimeError => error
33
- # From https://github.com/sorbet/sorbet/blob/dcf1b069cfb0d6624c027e45e59f4c6ca33de970/gems/sorbet-runtime/lib/types/private/runtime_levels.rb#L54
34
- # Sorbet has already evaluated a method call somewhere, so we can't disable it.
35
- # In this case, we want to log a warning so Packwerk can still be used (but will be slower).
36
- if /Set the default checked level earlier./.match?(error.message)
37
- warn("Packwerk couldn't disable Sorbet. Please ensure it isn't being used before Packwerk is loaded.")
38
- else
39
- raise error
40
- end
41
- end