packwerk 1.0.1 → 1.1.3
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.
- checksums.yaml +4 -4
- data/.github/pull_request_template.md +8 -7
- data/.github/workflows/ci.yml +14 -5
- data/.ruby-version +1 -1
- data/Gemfile +2 -1
- data/Gemfile.lock +130 -110
- data/README.md +8 -1
- data/USAGE.md +23 -2
- data/dev.yml +1 -1
- data/exe/packwerk +1 -1
- data/gemfiles/Gemfile-rails-6-0 +22 -0
- data/lib/packwerk.rb +4 -2
- data/lib/packwerk/application_load_paths.rb +68 -0
- data/lib/packwerk/application_validator.rb +94 -74
- data/lib/packwerk/association_inspector.rb +24 -9
- data/lib/packwerk/cache_deprecated_references.rb +55 -0
- data/lib/packwerk/checker.rb +3 -0
- data/lib/packwerk/checking_deprecated_references.rb +5 -2
- data/lib/packwerk/cli.rb +56 -55
- data/lib/packwerk/commands/detect_stale_violations_command.rb +60 -0
- data/lib/packwerk/commands/offense_progress_marker.rb +24 -0
- data/lib/packwerk/commands/result.rb +13 -0
- data/lib/packwerk/commands/update_deprecations_command.rb +81 -0
- data/lib/packwerk/configuration.rb +5 -37
- data/lib/packwerk/const_node_inspector.rb +28 -17
- data/lib/packwerk/dependency_checker.rb +13 -5
- data/lib/packwerk/deprecated_references.rb +23 -0
- data/lib/packwerk/detect_stale_deprecated_references.rb +14 -0
- data/lib/packwerk/file_processor.rb +4 -4
- data/lib/packwerk/formatters/offenses_formatter.rb +48 -0
- data/lib/packwerk/formatters/progress_formatter.rb +6 -2
- data/lib/packwerk/inflector.rb +17 -8
- data/lib/packwerk/node.rb +61 -38
- data/lib/packwerk/node_processor.rb +4 -4
- data/lib/packwerk/node_processor_factory.rb +39 -0
- data/lib/packwerk/node_visitor.rb +1 -1
- data/lib/packwerk/offense.rb +4 -6
- data/lib/packwerk/output_style.rb +20 -0
- data/lib/packwerk/output_styles/coloured.rb +29 -0
- data/lib/packwerk/output_styles/plain.rb +26 -0
- data/lib/packwerk/package_set.rb +9 -3
- data/lib/packwerk/parsed_constant_definitions.rb +4 -4
- data/lib/packwerk/parsers/erb.rb +4 -0
- data/lib/packwerk/parsers/factory.rb +10 -1
- data/lib/packwerk/privacy_checker.rb +23 -5
- data/lib/packwerk/run_context.rb +69 -46
- data/lib/packwerk/sanity_checker.rb +1 -1
- data/lib/packwerk/spring_command.rb +1 -1
- data/lib/packwerk/updating_deprecated_references.rb +2 -39
- data/lib/packwerk/version.rb +1 -1
- data/library.yml +1 -1
- data/packwerk.gemspec +1 -1
- data/service.yml +2 -2
- data/shipit.rubygems.yml +5 -1
- data/sorbet/rbi/gems/{actioncable@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → actioncable@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +56 -36
- data/sorbet/rbi/gems/{actionmailbox@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → actionmailbox@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +25 -28
- data/sorbet/rbi/gems/{actionmailer@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → actionmailer@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +43 -24
- data/sorbet/rbi/gems/{actionpack@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → actionpack@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +382 -284
- data/sorbet/rbi/gems/{actiontext@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → actiontext@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +76 -40
- data/sorbet/rbi/gems/{actionview@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → actionview@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +206 -195
- data/sorbet/rbi/gems/{activejob@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → activejob@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +64 -75
- data/sorbet/rbi/gems/{activemodel@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → activemodel@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +103 -56
- data/sorbet/rbi/gems/{activerecord@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → activerecord@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +1250 -898
- data/sorbet/rbi/gems/{activestorage@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → activestorage@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +92 -120
- data/sorbet/rbi/gems/{activesupport@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → activesupport@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +292 -193
- data/sorbet/rbi/gems/{ast@2.4.1.rbi → ast@2.4.2.rbi} +2 -1
- data/sorbet/rbi/gems/{better_html@1.0.15.rbi → better_html@1.0.16.rbi} +2 -2
- data/sorbet/rbi/gems/{concurrent-ruby@1.1.6.rbi → concurrent-ruby@1.1.8.rbi} +12 -9
- data/sorbet/rbi/gems/{erubi@1.9.0.rbi → erubi@1.10.0.rbi} +3 -1
- data/sorbet/rbi/gems/{i18n@1.8.2.rbi → i18n@1.8.10.rbi} +19 -52
- data/sorbet/rbi/gems/{loofah@2.5.0.rbi → loofah@2.9.0.rbi} +3 -1
- data/sorbet/rbi/gems/marcel@1.0.0.rbi +70 -0
- data/sorbet/rbi/gems/{mini_mime@1.0.2.rbi → mini_mime@1.0.3.rbi} +6 -6
- data/sorbet/rbi/gems/{mini_portile2@2.4.0.rbi → minitest-focus@1.2.1.rbi} +2 -2
- data/sorbet/rbi/gems/{minitest@5.14.0.rbi → minitest@5.14.4.rbi} +31 -29
- data/sorbet/rbi/gems/{mocha@1.11.2.rbi → mocha@1.12.0.rbi} +25 -36
- data/sorbet/rbi/gems/{nio4r@2.5.2.rbi → nio4r@2.5.7.rbi} +21 -20
- data/sorbet/rbi/gems/{nokogiri@1.10.9.rbi → nokogiri@1.11.2.rbi} +193 -154
- data/sorbet/rbi/gems/{parallel@1.19.1.rbi → parallel@1.20.1.rbi} +1 -1
- data/sorbet/rbi/gems/parlour@6.0.0.rbi +1272 -0
- data/sorbet/rbi/gems/{parser@2.7.1.4.rbi → parser@3.0.0.0.rbi} +287 -174
- data/sorbet/rbi/gems/{pry@0.13.1.rbi → pry@0.14.0.rbi} +1 -1
- data/sorbet/rbi/gems/racc@1.5.2.rbi +57 -0
- data/sorbet/rbi/gems/{rack@2.2.2.rbi → rack@2.2.3.rbi} +23 -35
- data/sorbet/rbi/gems/{rails@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → rails@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +1 -1
- data/sorbet/rbi/gems/{railties@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → railties@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +132 -121
- data/sorbet/rbi/gems/{rake@13.0.1.rbi → rake@13.0.3.rbi} +16 -20
- data/sorbet/rbi/gems/regexp_parser@2.1.1.rbi +8 -0
- data/sorbet/rbi/gems/rubocop-ast@1.4.1.rbi +8 -0
- data/sorbet/rbi/gems/{rubocop-performance@1.5.2.rbi → rubocop-performance@1.10.2.rbi} +1 -1
- data/sorbet/rbi/gems/{rubocop-shopify@1.0.2.rbi → rubocop-shopify@2.0.1.rbi} +1 -1
- data/sorbet/rbi/gems/{rubocop-sorbet@0.3.7.rbi → rubocop-sorbet@0.6.1.rbi} +1 -1
- data/sorbet/rbi/gems/{rubocop@0.82.0.rbi → rubocop@1.12.0.rbi} +1 -1
- data/sorbet/rbi/gems/{ruby-progressbar@1.10.1.rbi → ruby-progressbar@1.11.0.rbi} +1 -1
- data/sorbet/rbi/gems/spoom@1.1.0.rbi +1061 -0
- data/sorbet/rbi/gems/{spring@2.1.0.rbi → spring@2.1.1.rbi} +7 -7
- data/sorbet/rbi/gems/{sprockets-rails@3.2.1.rbi → sprockets-rails@3.2.2.rbi} +88 -68
- data/sorbet/rbi/gems/{sprockets@4.0.0.rbi → sprockets@4.0.2.rbi} +8 -7
- data/sorbet/rbi/gems/{tapioca@0.4.5.rbi → tapioca@0.4.19.rbi} +109 -24
- data/sorbet/rbi/gems/{thor@1.0.1.rbi → thor@1.1.0.rbi} +16 -15
- data/sorbet/rbi/gems/{tzinfo@2.0.2.rbi → tzinfo@2.0.4.rbi} +21 -2
- data/sorbet/rbi/gems/{unicode-display_width@1.7.0.rbi → unicode-display_width@2.0.0.rbi} +1 -1
- data/sorbet/rbi/gems/{websocket-driver@0.7.1.rbi → websocket-driver@0.7.3.rbi} +29 -29
- data/sorbet/rbi/gems/{websocket-extensions@0.1.4.rbi → websocket-extensions@0.1.5.rbi} +2 -2
- data/sorbet/rbi/gems/zeitwerk@2.4.2.rbi +177 -0
- metadata +66 -58
- data/lib/packwerk/output_styles.rb +0 -41
- data/sorbet/rbi/gems/jaro_winkler@1.5.4.rbi +0 -8
- data/sorbet/rbi/gems/marcel@0.3.3.rbi +0 -30
- data/sorbet/rbi/gems/mimemagic@0.3.5.rbi +0 -47
- data/sorbet/rbi/gems/parlour@4.0.1.rbi +0 -561
- data/sorbet/rbi/gems/spoom@1.0.4.rbi +0 -418
- data/sorbet/rbi/gems/zeitwerk@2.3.0.rbi +0 -8
- data/static/packwerk-check-demo.png +0 -0
- data/static/packwerk_check.gif +0 -0
- data/static/packwerk_check_violation.gif +0 -0
- data/static/packwerk_update.gif +0 -0
- data/static/packwerk_validate.gif +0 -0
data/lib/packwerk/parsers/erb.rb
CHANGED
@@ -19,6 +19,10 @@ module Packwerk
|
|
19
19
|
def call(io:, file_path: "<unknown>")
|
20
20
|
buffer = Parser::Source::Buffer.new(file_path)
|
21
21
|
buffer.source = io.read
|
22
|
+
parse_buffer(buffer, file_path: file_path)
|
23
|
+
end
|
24
|
+
|
25
|
+
def parse_buffer(buffer, file_path:)
|
22
26
|
parser = @parser_class.new(buffer, template_language: :html)
|
23
27
|
to_ruby_ast(parser.ast, file_path)
|
24
28
|
rescue EncodingError => e
|
@@ -26,9 +26,18 @@ module Packwerk
|
|
26
26
|
when RUBY_REGEX
|
27
27
|
@ruby_parser ||= Ruby.new
|
28
28
|
when ERB_REGEX
|
29
|
-
@erb_parser ||=
|
29
|
+
@erb_parser ||= erb_parser_class.new
|
30
30
|
end
|
31
31
|
end
|
32
|
+
|
33
|
+
def erb_parser_class
|
34
|
+
@erb_parser_class ||= Erb
|
35
|
+
end
|
36
|
+
|
37
|
+
def erb_parser_class=(klass)
|
38
|
+
@erb_parser_class = klass
|
39
|
+
@erb_parser = nil
|
40
|
+
end
|
32
41
|
end
|
33
42
|
end
|
34
43
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# typed:
|
1
|
+
# typed: strict
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
4
|
require "packwerk/violation_type"
|
@@ -6,26 +6,34 @@ require "packwerk/checker"
|
|
6
6
|
|
7
7
|
module Packwerk
|
8
8
|
class PrivacyChecker
|
9
|
+
extend T::Sig
|
9
10
|
include Checker
|
10
11
|
|
12
|
+
sig { override.returns(Packwerk::ViolationType) }
|
11
13
|
def violation_type
|
12
14
|
ViolationType::Privacy
|
13
15
|
end
|
14
16
|
|
17
|
+
sig do
|
18
|
+
override
|
19
|
+
.params(reference: Packwerk::Reference, reference_lister: Packwerk::ReferenceLister)
|
20
|
+
.returns(T::Boolean)
|
21
|
+
end
|
15
22
|
def invalid_reference?(reference, reference_lister)
|
16
|
-
return if reference.constant.public?
|
23
|
+
return false if reference.constant.public?
|
17
24
|
|
18
25
|
privacy_option = reference.constant.package.enforce_privacy
|
19
|
-
return if enforcement_disabled?(privacy_option)
|
26
|
+
return false if enforcement_disabled?(privacy_option)
|
20
27
|
|
21
|
-
return unless privacy_option == true ||
|
28
|
+
return false unless privacy_option == true ||
|
22
29
|
explicitly_private_constant?(reference.constant, explicitly_private_constants: privacy_option)
|
23
30
|
|
24
|
-
return if reference_lister.listed?(reference, violation_type: violation_type)
|
31
|
+
return false if reference_lister.listed?(reference, violation_type: violation_type)
|
25
32
|
|
26
33
|
true
|
27
34
|
end
|
28
35
|
|
36
|
+
sig { override.params(reference: Packwerk::Reference).returns(String) }
|
29
37
|
def message_for(reference)
|
30
38
|
source_desc = reference.source_package ? "'#{reference.source_package}'" : "here"
|
31
39
|
"Privacy violation: '#{reference.constant.name}' is private to '#{reference.constant.package}' but " \
|
@@ -35,12 +43,22 @@ module Packwerk
|
|
35
43
|
|
36
44
|
private
|
37
45
|
|
46
|
+
sig do
|
47
|
+
params(
|
48
|
+
constant: ConstantDiscovery::ConstantContext,
|
49
|
+
explicitly_private_constants: T::Array[String]
|
50
|
+
).returns(T::Boolean)
|
51
|
+
end
|
38
52
|
def explicitly_private_constant?(constant, explicitly_private_constants:)
|
39
53
|
explicitly_private_constants.include?(constant.name) ||
|
40
54
|
# nested constants
|
41
55
|
explicitly_private_constants.any? { |epc| constant.name.start_with?(epc + "::") }
|
42
56
|
end
|
43
57
|
|
58
|
+
sig do
|
59
|
+
params(privacy_option: T.nilable(T.any(T::Boolean, T::Array[String])))
|
60
|
+
.returns(T::Boolean)
|
61
|
+
end
|
44
62
|
def enforcement_disabled?(privacy_option)
|
45
63
|
[false, nil].include?(privacy_option)
|
46
64
|
end
|
data/lib/packwerk/run_context.rb
CHANGED
@@ -1,48 +1,49 @@
|
|
1
1
|
# typed: true
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
-
require "active_support/inflector"
|
5
4
|
require "constant_resolver"
|
6
5
|
|
7
6
|
require "packwerk/association_inspector"
|
8
|
-
require "packwerk/checking_deprecated_references"
|
9
7
|
require "packwerk/constant_discovery"
|
10
8
|
require "packwerk/const_node_inspector"
|
11
9
|
require "packwerk/dependency_checker"
|
12
10
|
require "packwerk/file_processor"
|
13
|
-
require "packwerk/
|
11
|
+
require "packwerk/inflector"
|
14
12
|
require "packwerk/package_set"
|
15
13
|
require "packwerk/privacy_checker"
|
16
14
|
require "packwerk/reference_extractor"
|
15
|
+
require "packwerk/node_processor_factory"
|
17
16
|
|
18
17
|
module Packwerk
|
19
18
|
class RunContext
|
19
|
+
extend T::Sig
|
20
|
+
|
20
21
|
attr_reader(
|
21
|
-
:checkers,
|
22
|
-
:constant_name_inspectors,
|
23
|
-
:context_provider,
|
24
22
|
:root_path,
|
25
|
-
:
|
26
|
-
:
|
27
|
-
:
|
23
|
+
:load_paths,
|
24
|
+
:package_paths,
|
25
|
+
:inflector,
|
26
|
+
:custom_associations,
|
27
|
+
:checker_classes,
|
28
28
|
)
|
29
29
|
|
30
|
+
attr_accessor :reference_lister
|
31
|
+
|
30
32
|
DEFAULT_CHECKERS = [
|
31
33
|
::Packwerk::DependencyChecker,
|
32
34
|
::Packwerk::PrivacyChecker,
|
33
35
|
]
|
34
36
|
|
35
37
|
class << self
|
36
|
-
def from_configuration(configuration, reference_lister:
|
37
|
-
|
38
|
-
::Packwerk::CheckingDeprecatedReferences.new(configuration.root_path)
|
38
|
+
def from_configuration(configuration, reference_lister:)
|
39
|
+
inflector = ::Packwerk::Inflector.from_file(configuration.inflections_file)
|
39
40
|
new(
|
40
41
|
root_path: configuration.root_path,
|
41
42
|
load_paths: configuration.load_paths,
|
42
43
|
package_paths: configuration.package_paths,
|
43
|
-
inflector:
|
44
|
+
inflector: inflector,
|
44
45
|
custom_associations: configuration.custom_associations,
|
45
|
-
reference_lister:
|
46
|
+
reference_lister: reference_lister,
|
46
47
|
)
|
47
48
|
end
|
48
49
|
end
|
@@ -54,51 +55,73 @@ module Packwerk
|
|
54
55
|
inflector: nil,
|
55
56
|
custom_associations: [],
|
56
57
|
checker_classes: DEFAULT_CHECKERS,
|
57
|
-
|
58
|
-
reference_lister: nil
|
58
|
+
reference_lister:
|
59
59
|
)
|
60
|
-
@root_path =
|
60
|
+
@root_path = root_path
|
61
|
+
@load_paths = load_paths
|
62
|
+
@package_paths = package_paths
|
63
|
+
@inflector = inflector
|
64
|
+
@custom_associations = custom_associations
|
65
|
+
@checker_classes = checker_classes
|
66
|
+
@reference_lister = reference_lister
|
67
|
+
end
|
61
68
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
69
|
+
sig { params(file: String).returns(T::Array[T.nilable(::Packwerk::Offense)]) }
|
70
|
+
def process_file(file:)
|
71
|
+
file_processor.call(file)
|
72
|
+
end
|
73
|
+
|
74
|
+
private
|
75
|
+
|
76
|
+
sig { returns(FileProcessor) }
|
77
|
+
def file_processor
|
78
|
+
@file_processor ||= FileProcessor.new(node_processor_factory: node_processor_factory)
|
79
|
+
end
|
67
80
|
|
68
|
-
|
81
|
+
sig { returns(NodeProcessorFactory) }
|
82
|
+
def node_processor_factory
|
83
|
+
NodeProcessorFactory.new(
|
84
|
+
context_provider: context_provider,
|
85
|
+
checkers: checkers,
|
86
|
+
root_path: root_path,
|
87
|
+
constant_name_inspectors: constant_name_inspectors,
|
88
|
+
reference_lister: reference_lister
|
89
|
+
)
|
90
|
+
end
|
69
91
|
|
70
|
-
|
92
|
+
sig { returns(ConstantDiscovery) }
|
93
|
+
def context_provider
|
94
|
+
::Packwerk::ConstantDiscovery.new(
|
71
95
|
constant_resolver: resolver,
|
72
96
|
packages: package_set
|
73
97
|
)
|
98
|
+
end
|
74
99
|
|
75
|
-
|
100
|
+
sig { returns(ConstantResolver) }
|
101
|
+
def resolver
|
102
|
+
ConstantResolver.new(
|
103
|
+
root_path: root_path,
|
104
|
+
load_paths: load_paths,
|
105
|
+
inflector: inflector,
|
106
|
+
)
|
107
|
+
end
|
76
108
|
|
77
|
-
|
109
|
+
sig { returns(PackageSet) }
|
110
|
+
def package_set
|
111
|
+
::Packwerk::PackageSet.load_all_from(root_path, package_pathspec: package_paths)
|
112
|
+
end
|
78
113
|
|
79
|
-
|
114
|
+
sig { returns(T::Array[Checker]) }
|
115
|
+
def checkers
|
116
|
+
checker_classes.map(&:new)
|
117
|
+
end
|
118
|
+
|
119
|
+
sig { returns(T::Array[ConstantNameInspector]) }
|
120
|
+
def constant_name_inspectors
|
121
|
+
[
|
80
122
|
::Packwerk::ConstNodeInspector.new,
|
81
123
|
::Packwerk::AssociationInspector.new(inflector: inflector, custom_associations: custom_associations),
|
82
124
|
]
|
83
|
-
|
84
|
-
@node_processor_class = node_processor_class
|
85
|
-
@file_processor = FileProcessor.new(run_context: self)
|
86
|
-
end
|
87
|
-
|
88
|
-
def node_processor_for(filename:, ast_node:)
|
89
|
-
reference_extractor = ::Packwerk::ReferenceExtractor.new(
|
90
|
-
context_provider: context_provider,
|
91
|
-
constant_name_inspectors: constant_name_inspectors,
|
92
|
-
root_node: ast_node,
|
93
|
-
root_path: root_path,
|
94
|
-
)
|
95
|
-
|
96
|
-
node_processor_class.new(
|
97
|
-
reference_extractor: reference_extractor,
|
98
|
-
reference_lister: @reference_lister,
|
99
|
-
filename: filename,
|
100
|
-
checkers: checkers,
|
101
|
-
)
|
102
125
|
end
|
103
126
|
end
|
104
127
|
end
|
@@ -1,51 +1,14 @@
|
|
1
1
|
# typed: true
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
-
require "
|
5
|
-
|
6
|
-
require "packwerk/deprecated_references"
|
7
|
-
require "packwerk/reference"
|
8
|
-
require "packwerk/reference_lister"
|
9
|
-
require "packwerk/violation_type"
|
4
|
+
require "packwerk/cache_deprecated_references"
|
10
5
|
|
11
6
|
module Packwerk
|
12
|
-
class UpdatingDeprecatedReferences
|
13
|
-
extend T::Sig
|
14
|
-
include ReferenceLister
|
15
|
-
|
16
|
-
def initialize(root_path, deprecated_references = {})
|
17
|
-
@root_path = root_path
|
18
|
-
@deprecated_references = deprecated_references
|
19
|
-
end
|
20
|
-
|
21
|
-
sig do
|
22
|
-
params(reference: Packwerk::Reference, violation_type: ViolationType)
|
23
|
-
.returns(T::Boolean)
|
24
|
-
.override
|
25
|
-
end
|
26
|
-
def listed?(reference, violation_type:)
|
27
|
-
deprecated_references = deprecated_references_for(reference.source_package)
|
28
|
-
deprecated_references.add_entries(reference, violation_type.serialize)
|
29
|
-
true
|
30
|
-
end
|
31
|
-
|
7
|
+
class UpdatingDeprecatedReferences < CacheDeprecatedReferences
|
32
8
|
def dump_deprecated_references_files
|
33
9
|
@deprecated_references.each do |_, deprecated_references_file|
|
34
10
|
deprecated_references_file.dump
|
35
11
|
end
|
36
12
|
end
|
37
|
-
|
38
|
-
private
|
39
|
-
|
40
|
-
def deprecated_references_for(package)
|
41
|
-
@deprecated_references[package] ||= Packwerk::DeprecatedReferences.new(
|
42
|
-
package,
|
43
|
-
deprecated_references_file_for(package),
|
44
|
-
)
|
45
|
-
end
|
46
|
-
|
47
|
-
def deprecated_references_file_for(package)
|
48
|
-
File.join(@root_path, package.name, "deprecated_references.yml")
|
49
|
-
end
|
50
13
|
end
|
51
14
|
end
|
data/lib/packwerk/version.rb
CHANGED
data/library.yml
CHANGED
data/packwerk.gemspec
CHANGED
@@ -34,7 +34,7 @@ Gem::Specification.new do |spec|
|
|
34
34
|
spec.executables << "packwerk"
|
35
35
|
|
36
36
|
spec.files = Dir.chdir(__dir__) do
|
37
|
-
%x(git ls-files -z).split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
37
|
+
%x(git ls-files -z).split("\x0").reject { |f| f.match(%r{^(test|spec|features|static)/}) }
|
38
38
|
end
|
39
39
|
spec.require_paths = %w(lib)
|
40
40
|
|
data/service.yml
CHANGED
data/shipit.rubygems.yml
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# DO NOT EDIT MANUALLY
|
2
2
|
# This is an autogenerated file for types exported from the `actioncable` gem.
|
3
|
-
# Please instead update this file by running `
|
3
|
+
# Please instead update this file by running `bin/tapioca sync`.
|
4
4
|
|
5
5
|
# typed: true
|
6
6
|
|
@@ -49,12 +49,12 @@ class ActionCable::Channel::Base
|
|
49
49
|
def _unsubscribe_callbacks; end
|
50
50
|
def connection; end
|
51
51
|
def identifier; end
|
52
|
-
def logger(*
|
52
|
+
def logger(*_arg0, &_arg1); end
|
53
53
|
def params; end
|
54
54
|
def perform_action(data); end
|
55
|
-
def periodic_timers=(
|
55
|
+
def periodic_timers=(_arg0); end
|
56
56
|
def rescue_handlers; end
|
57
|
-
def rescue_handlers=(
|
57
|
+
def rescue_handlers=(_arg0); end
|
58
58
|
def rescue_handlers?; end
|
59
59
|
def subscribe_to_channel; end
|
60
60
|
def unsubscribe_from_channel; end
|
@@ -107,8 +107,8 @@ module ActionCable::Channel::Broadcasting
|
|
107
107
|
|
108
108
|
mixes_in_class_methods(::ActionCable::Channel::Broadcasting::ClassMethods)
|
109
109
|
|
110
|
-
def broadcast_to(*
|
111
|
-
def broadcasting_for(*
|
110
|
+
def broadcast_to(*_arg0, &_arg1); end
|
111
|
+
def broadcasting_for(*_arg0, &_arg1); end
|
112
112
|
end
|
113
113
|
|
114
114
|
module ActionCable::Channel::Broadcasting::ClassMethods
|
@@ -139,7 +139,7 @@ module ActionCable::Channel::Naming
|
|
139
139
|
|
140
140
|
mixes_in_class_methods(::ActionCable::Channel::Naming::ClassMethods)
|
141
141
|
|
142
|
-
def channel_name(*
|
142
|
+
def channel_name(*_arg0, &_arg1); end
|
143
143
|
end
|
144
144
|
|
145
145
|
module ActionCable::Channel::Naming::ClassMethods
|
@@ -167,13 +167,13 @@ end
|
|
167
167
|
module ActionCable::Channel::Streams
|
168
168
|
extend(::ActiveSupport::Concern)
|
169
169
|
|
170
|
-
def pubsub(*
|
170
|
+
def pubsub(*_arg0, &_arg1); end
|
171
171
|
def stop_all_streams; end
|
172
172
|
def stop_stream_for(model); end
|
173
173
|
def stop_stream_from(broadcasting); end
|
174
174
|
def stream_for(model, callback = T.unsafe(nil), coder: T.unsafe(nil), &block); end
|
175
175
|
def stream_from(broadcasting, callback = T.unsafe(nil), coder: T.unsafe(nil), &block); end
|
176
|
-
def stream_or_reject_for(
|
176
|
+
def stream_or_reject_for(model); end
|
177
177
|
|
178
178
|
private
|
179
179
|
|
@@ -194,7 +194,7 @@ class ActionCable::Channel::TestCase < ::ActiveSupport::TestCase
|
|
194
194
|
extend(::ActionCable::Channel::TestCase::Behavior::ClassMethods)
|
195
195
|
|
196
196
|
def _channel_class; end
|
197
|
-
def _channel_class=(
|
197
|
+
def _channel_class=(_arg0); end
|
198
198
|
def _channel_class?; end
|
199
199
|
def connection; end
|
200
200
|
def subscription; end
|
@@ -264,9 +264,9 @@ class ActionCable::Connection::Base
|
|
264
264
|
def close(reason: T.unsafe(nil), reconnect: T.unsafe(nil)); end
|
265
265
|
def dispatch_websocket_message(websocket_message); end
|
266
266
|
def env; end
|
267
|
-
def event_loop(*
|
267
|
+
def event_loop(*_arg0, &_arg1); end
|
268
268
|
def identifiers; end
|
269
|
-
def identifiers=(
|
269
|
+
def identifiers=(_arg0); end
|
270
270
|
def identifiers?; end
|
271
271
|
def logger; end
|
272
272
|
def on_close(reason, code); end
|
@@ -275,10 +275,10 @@ class ActionCable::Connection::Base
|
|
275
275
|
def on_open; end
|
276
276
|
def process; end
|
277
277
|
def protocol; end
|
278
|
-
def pubsub(*
|
278
|
+
def pubsub(*_arg0, &_arg1); end
|
279
279
|
def receive(websocket_message); end
|
280
280
|
def rescue_handlers; end
|
281
|
-
def rescue_handlers=(
|
281
|
+
def rescue_handlers=(_arg0); end
|
282
282
|
def rescue_handlers?; end
|
283
283
|
def send_async(method, *arguments); end
|
284
284
|
def server; end
|
@@ -438,7 +438,7 @@ class ActionCable::Connection::Subscriptions
|
|
438
438
|
def add(data); end
|
439
439
|
def execute_command(data); end
|
440
440
|
def identifiers; end
|
441
|
-
def logger(*
|
441
|
+
def logger(*_arg0, &_arg1); end
|
442
442
|
def perform_action(data); end
|
443
443
|
def remove(data); end
|
444
444
|
def remove_subscription(subscription); end
|
@@ -477,7 +477,7 @@ class ActionCable::Connection::TestCase < ::ActiveSupport::TestCase
|
|
477
477
|
extend(::ActionCable::Connection::TestCase::Behavior::ClassMethods)
|
478
478
|
|
479
479
|
def _connection_class; end
|
480
|
-
def _connection_class=(
|
480
|
+
def _connection_class=(_arg0); end
|
481
481
|
def _connection_class?; end
|
482
482
|
def connection; end
|
483
483
|
|
@@ -556,7 +556,7 @@ class ActionCable::RemoteConnections::RemoteConnection
|
|
556
556
|
|
557
557
|
def disconnect; end
|
558
558
|
def identifiers; end
|
559
|
-
def identifiers=(
|
559
|
+
def identifiers=(_arg0); end
|
560
560
|
def identifiers?; end
|
561
561
|
|
562
562
|
protected
|
@@ -593,7 +593,7 @@ class ActionCable::Server::Base
|
|
593
593
|
def connection_identifiers; end
|
594
594
|
def disconnect(identifiers); end
|
595
595
|
def event_loop; end
|
596
|
-
def logger(*
|
596
|
+
def logger(*_arg0, &_arg1); end
|
597
597
|
def mutex; end
|
598
598
|
def pubsub; end
|
599
599
|
def remote_connections; end
|
@@ -625,26 +625,26 @@ class ActionCable::Server::Configuration
|
|
625
625
|
def initialize; end
|
626
626
|
|
627
627
|
def allow_same_origin_as_host; end
|
628
|
-
def allow_same_origin_as_host=(
|
628
|
+
def allow_same_origin_as_host=(_arg0); end
|
629
629
|
def allowed_request_origins; end
|
630
|
-
def allowed_request_origins=(
|
630
|
+
def allowed_request_origins=(_arg0); end
|
631
631
|
def cable; end
|
632
|
-
def cable=(
|
632
|
+
def cable=(_arg0); end
|
633
633
|
def connection_class; end
|
634
|
-
def connection_class=(
|
634
|
+
def connection_class=(_arg0); end
|
635
635
|
def disable_request_forgery_protection; end
|
636
|
-
def disable_request_forgery_protection=(
|
636
|
+
def disable_request_forgery_protection=(_arg0); end
|
637
637
|
def log_tags; end
|
638
|
-
def log_tags=(
|
638
|
+
def log_tags=(_arg0); end
|
639
639
|
def logger; end
|
640
|
-
def logger=(
|
640
|
+
def logger=(_arg0); end
|
641
641
|
def mount_path; end
|
642
|
-
def mount_path=(
|
642
|
+
def mount_path=(_arg0); end
|
643
643
|
def pubsub_adapter; end
|
644
644
|
def url; end
|
645
|
-
def url=(
|
645
|
+
def url=(_arg0); end
|
646
646
|
def worker_pool_size; end
|
647
|
-
def worker_pool_size=(
|
647
|
+
def worker_pool_size=(_arg0); end
|
648
648
|
end
|
649
649
|
|
650
650
|
module ActionCable::Server::Connections
|
@@ -659,15 +659,29 @@ ActionCable::Server::Connections::BEAT_INTERVAL = T.let(T.unsafe(nil), Integer)
|
|
659
659
|
|
660
660
|
class ActionCable::Server::Worker
|
661
661
|
include(::ActiveSupport::Callbacks)
|
662
|
+
include(::ActionCable::Server::Worker::ActiveRecordConnectionManagement)
|
662
663
|
extend(::ActiveSupport::Callbacks::ClassMethods)
|
663
664
|
extend(::ActiveSupport::DescendantsTracker)
|
664
665
|
|
666
|
+
def initialize(max_size: T.unsafe(nil)); end
|
667
|
+
|
665
668
|
def __callbacks; end
|
666
669
|
def __callbacks?; end
|
667
670
|
def _run_work_callbacks(&block); end
|
668
671
|
def _work_callbacks; end
|
672
|
+
def async_exec(receiver, *args, connection:, &block); end
|
673
|
+
def async_invoke(receiver, method, *args, connection: T.unsafe(nil), &block); end
|
669
674
|
def connection; end
|
670
675
|
def connection=(obj); end
|
676
|
+
def executor; end
|
677
|
+
def halt; end
|
678
|
+
def invoke(receiver, method, *args, connection:, &block); end
|
679
|
+
def stopping?; end
|
680
|
+
def work(connection); end
|
681
|
+
|
682
|
+
private
|
683
|
+
|
684
|
+
def logger; end
|
671
685
|
|
672
686
|
class << self
|
673
687
|
def __callbacks; end
|
@@ -680,6 +694,12 @@ class ActionCable::Server::Worker
|
|
680
694
|
end
|
681
695
|
end
|
682
696
|
|
697
|
+
module ActionCable::Server::Worker::ActiveRecordConnectionManagement
|
698
|
+
extend(::ActiveSupport::Concern)
|
699
|
+
|
700
|
+
def with_database_connections; end
|
701
|
+
end
|
702
|
+
|
683
703
|
module ActionCable::SubscriptionAdapter
|
684
704
|
extend(::ActiveSupport::Autoload)
|
685
705
|
end
|
@@ -738,8 +758,8 @@ module ActionCable::TestHelper
|
|
738
758
|
def assert_broadcasts(stream, number, &block); end
|
739
759
|
def assert_no_broadcasts(stream, &block); end
|
740
760
|
def before_setup; end
|
741
|
-
def broadcasts(*
|
742
|
-
def clear_messages(*
|
761
|
+
def broadcasts(*_arg0, &_arg1); end
|
762
|
+
def clear_messages(*_arg0, &_arg1); end
|
743
763
|
def pubsub_adapter; end
|
744
764
|
|
745
765
|
private
|
@@ -766,7 +786,7 @@ module ActionCable::Channel::ChannelStub
|
|
766
786
|
def start_periodic_timers; end
|
767
787
|
def stop_all_streams; end
|
768
788
|
def stop_periodic_timers; end
|
769
|
-
def stream_from(broadcasting, *
|
789
|
+
def stream_from(broadcasting, *_arg1); end
|
770
790
|
def streams; end
|
771
791
|
end
|
772
792
|
|
@@ -806,9 +826,9 @@ end
|
|
806
826
|
|
807
827
|
class ActionCable::Connection::TestRequest < ::ActionDispatch::TestRequest
|
808
828
|
def cookie_jar; end
|
809
|
-
def cookie_jar=(
|
829
|
+
def cookie_jar=(_arg0); end
|
810
830
|
def session; end
|
811
|
-
def session=(
|
831
|
+
def session=(_arg0); end
|
812
832
|
end
|
813
833
|
|
814
834
|
class ActionCable::SubscriptionAdapter::Async < ::ActionCable::SubscriptionAdapter::Inline
|
@@ -821,12 +841,12 @@ end
|
|
821
841
|
class ActionCable::SubscriptionAdapter::Async::AsyncSubscriberMap < ::ActionCable::SubscriptionAdapter::SubscriberMap
|
822
842
|
def initialize(event_loop); end
|
823
843
|
|
824
|
-
def add_subscriber(*
|
825
|
-
def invoke_callback(*
|
844
|
+
def add_subscriber(*_arg0); end
|
845
|
+
def invoke_callback(*_arg0); end
|
826
846
|
end
|
827
847
|
|
828
848
|
class ActionCable::SubscriptionAdapter::Inline < ::ActionCable::SubscriptionAdapter::Base
|
829
|
-
def initialize(*
|
849
|
+
def initialize(*_arg0); end
|
830
850
|
|
831
851
|
def broadcast(channel, payload); end
|
832
852
|
def shutdown; end
|