rubocop-graphql 1.0.0 → 1.1.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.
- checksums.yaml +4 -4
- data/lib/rubocop/cop/graphql/field_definitions.rb +2 -2
- data/lib/rubocop/cop/graphql/field_hash_key.rb +2 -2
- data/lib/rubocop/cop/graphql/field_method.rb +2 -2
- data/lib/rubocop/cop/graphql/not_authorized_node_type.rb +15 -1
- data/lib/rubocop/cop/graphql/unnecessary_field_alias.rb +25 -9
- data/lib/rubocop/cop/graphql/unused_argument.rb +1 -1
- data/lib/rubocop/graphql/field.rb +4 -1
- data/lib/rubocop/graphql/heredoc.rb +1 -1
- data/lib/rubocop/graphql/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 93b15c7311147740481d59f94cab5e62ca4317ada9ec0e21254ec785b5dfd683
|
4
|
+
data.tar.gz: 9157944e4d8a28635389fe2b1472c48361001a5674fb1c81ebd0dec4447b44d0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9cd372736e4f994645dfaf72289ce5933a9e739f5ef179096326574b5da79d6c872ee01097232666d2549d8bd5f9c762dc3af0de6b66ce905a2a3d37814a3c9c
|
7
|
+
data.tar.gz: 181fd6b02b1bb4e20fc64f60e39ceb94073ce178be18b6d1bc6177e4d62cf933e2f6bd5ef4e23b4b8aa163a22ccd641ca4727647054f24bcce2882e390bfddd5
|
@@ -220,7 +220,7 @@ module RuboCop
|
|
220
220
|
|
221
221
|
def remove_old_resolver(corrector, resolver_definition)
|
222
222
|
range_to_remove = range_with_surrounding_space(
|
223
|
-
range: resolver_definition.
|
223
|
+
range: resolver_definition.source_range, side: :left
|
224
224
|
)
|
225
225
|
corrector.remove(range_to_remove)
|
226
226
|
|
@@ -229,7 +229,7 @@ module RuboCop
|
|
229
229
|
return unless resolver_signature
|
230
230
|
|
231
231
|
range_to_remove = range_with_surrounding_space(
|
232
|
-
range: resolver_signature.
|
232
|
+
range: resolver_signature.source_range, side: :left
|
233
233
|
)
|
234
234
|
corrector.remove(range_to_remove)
|
235
235
|
end
|
@@ -74,11 +74,11 @@ module RuboCop
|
|
74
74
|
suggested_hash_key_name = hash_key_to_use(method_definition)
|
75
75
|
|
76
76
|
corrector.insert_after(
|
77
|
-
node.
|
77
|
+
node.source_range, ", hash_key: #{suggested_hash_key_name.inspect}"
|
78
78
|
)
|
79
79
|
|
80
80
|
range = range_with_surrounding_space(
|
81
|
-
range: method_definition.
|
81
|
+
range: method_definition.source_range, side: :left
|
82
82
|
)
|
83
83
|
|
84
84
|
corrector.remove(range)
|
@@ -68,10 +68,10 @@ module RuboCop
|
|
68
68
|
method_definition = suggest_method_name_for(field)
|
69
69
|
suggested_method_name = method_to_use(method_definition)
|
70
70
|
|
71
|
-
corrector.insert_after(node.
|
71
|
+
corrector.insert_after(node.source_range, ", method: :#{suggested_method_name}")
|
72
72
|
|
73
73
|
range = range_with_surrounding_space(
|
74
|
-
range: method_definition.
|
74
|
+
range: method_definition.source_range, side: :left
|
75
75
|
)
|
76
76
|
corrector.remove(range)
|
77
77
|
end
|
@@ -20,6 +20,20 @@ module RuboCop
|
|
20
20
|
# end
|
21
21
|
# end
|
22
22
|
#
|
23
|
+
# # good
|
24
|
+
#
|
25
|
+
# class UserType < BaseType
|
26
|
+
# implements GraphQL::Types::Relay::Node
|
27
|
+
#
|
28
|
+
# field :uuid, ID, null: false
|
29
|
+
#
|
30
|
+
# class << self
|
31
|
+
# def authorized?(object, context)
|
32
|
+
# super && object.owner == context[:viewer]
|
33
|
+
# end
|
34
|
+
# end
|
35
|
+
# end
|
36
|
+
#
|
23
37
|
# # bad
|
24
38
|
#
|
25
39
|
# class UserType < BaseType
|
@@ -42,7 +56,7 @@ module RuboCop
|
|
42
56
|
|
43
57
|
# @!method has_authorized_method?(node)
|
44
58
|
def_node_matcher :has_authorized_method?, <<~PATTERN
|
45
|
-
`(:defs (:self) :authorized? ...)
|
59
|
+
{`(:defs (:self) :authorized? ...) | `(:sclass (:self) `(:def :authorized? ...))}
|
46
60
|
PATTERN
|
47
61
|
|
48
62
|
def on_class(node)
|
@@ -3,32 +3,48 @@
|
|
3
3
|
module RuboCop
|
4
4
|
module Cop
|
5
5
|
module GraphQL
|
6
|
-
# This cop
|
6
|
+
# This cop prevents defining an unnecessary alias, method, or resolver_method.
|
7
7
|
#
|
8
8
|
# @example
|
9
9
|
# # good
|
10
10
|
#
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#
|
11
|
+
# field :name, String, "Name of the user", null: true, alias: :real_name
|
12
|
+
# field :name, String, "Name of the user", null: true, method: :real_name
|
13
|
+
# field :name, String, "Name of the user", null: true, resolver_method: :real_name
|
14
|
+
# field :name, String, "Name of the user", null: true, hash_key: :real_name
|
14
15
|
#
|
15
16
|
# # bad
|
16
17
|
#
|
17
|
-
#
|
18
|
-
#
|
19
|
-
#
|
18
|
+
# field :name, "Name of the user" String, null: true, alias: :name
|
19
|
+
# field :name, String, "Name of the user", null: true, method: :name
|
20
|
+
# field :name, String, "Name of the user", null: true, resolver_method: :name
|
21
|
+
# field :name, String, "Name of the user", null: true, hash_key: :name
|
20
22
|
#
|
21
23
|
class UnnecessaryFieldAlias < Base
|
22
24
|
include RuboCop::GraphQL::NodePattern
|
23
25
|
|
24
|
-
MSG = "Unnecessary
|
26
|
+
MSG = "Unnecessary :%<kwarg>s configured"
|
25
27
|
|
26
28
|
def on_send(node)
|
27
29
|
return unless field_definition?(node)
|
28
30
|
|
29
31
|
field = RuboCop::GraphQL::Field.new(node)
|
30
32
|
|
31
|
-
|
33
|
+
if (unnecessary_kwarg = validate_kwargs(field))
|
34
|
+
message = format(self.class::MSG, kwarg: unnecessary_kwarg)
|
35
|
+
add_offense(node, message: message)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
def validate_kwargs(field) # rubocop:disable Metrics/CyclomaticComplexity
|
42
|
+
case field.name
|
43
|
+
when field.kwargs.alias then "alias"
|
44
|
+
when field.kwargs.method&.value&.value then "method"
|
45
|
+
when field.kwargs.resolver_method_name then "resolver_method"
|
46
|
+
when field.kwargs.hash_key&.value&.value then "hash_key"
|
47
|
+
end
|
32
48
|
end
|
33
49
|
end
|
34
50
|
end
|
@@ -84,7 +84,10 @@ module RuboCop
|
|
84
84
|
end
|
85
85
|
|
86
86
|
def root_node?(node)
|
87
|
-
node.parent.nil? ||
|
87
|
+
node.parent.nil? ||
|
88
|
+
node.module_type? && node.children.none?(&:module_type?) ||
|
89
|
+
node.class_type? ||
|
90
|
+
root_with_siblings?(node.parent)
|
88
91
|
end
|
89
92
|
|
90
93
|
def root_with_siblings?(node)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubocop-graphql
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dmitry Tsepelev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-03-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|