rubocop-graphql 0.16.0 → 0.18.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/config/default.yml +15 -0
- data/lib/rubocop/cop/graphql/unnecessary_argument_camelize.rb +54 -0
- data/lib/rubocop/cop/graphql/unnecessary_field_alias.rb +36 -0
- data/lib/rubocop/cop/graphql/unnecessary_field_camelize.rb +36 -0
- data/lib/rubocop/cop/graphql_cops.rb +3 -0
- data/lib/rubocop/graphql/argument/kwargs.rb +9 -0
- data/lib/rubocop/graphql/field/kwargs.rb +18 -0
- data/lib/rubocop/graphql/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fb4e28828d5aa07e959ad98fd9da04872c4832d1c8b1d168d440d1ad7c80762c
|
4
|
+
data.tar.gz: eaf5932cba816bfb478fac0cec298bb0e3db98b506b4f7112851503712e77068
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cf88847a0b7a49cd1274b30fcff4e4e5ecb47b16f11a7d5e3fddcbcd7985a8d43bb8911080064a23e8d444daab330327f8908355a2ad75b2a94b14f2f4a4b2c8
|
7
|
+
data.tar.gz: a10cf2b637bc06a65338af84928c53ced64c78e634470a7fe988e4bf7a7037cfcd3035895914b99056fa11abc272c328d9be40da6ee608f33c900490dea0504d
|
data/config/default.yml
CHANGED
@@ -73,6 +73,8 @@ GraphQL/ExtractInputType:
|
|
73
73
|
VersionAdded: '0.80'
|
74
74
|
Description: 'Suggests using input type instead of many arguments'
|
75
75
|
MaxArguments: 2
|
76
|
+
Include:
|
77
|
+
- 'graphql/mutations/**/*.rb'
|
76
78
|
|
77
79
|
GraphQL/ExtractType:
|
78
80
|
Enabled: true
|
@@ -99,6 +101,7 @@ GraphQL/ObjectDescription:
|
|
99
101
|
Exclude:
|
100
102
|
- '**/*_schema.rb'
|
101
103
|
- '**/base_*.rb'
|
104
|
+
- '**/graphql/query_context.rb'
|
102
105
|
|
103
106
|
GraphQL/OrderedArguments:
|
104
107
|
Enabled: true
|
@@ -113,3 +116,15 @@ GraphQL/OrderedFields:
|
|
113
116
|
GraphQL/UnusedArgument:
|
114
117
|
Enabled: true
|
115
118
|
Description: 'Arguments should either be listed explicitly or **rest should be in the resolve signature'
|
119
|
+
|
120
|
+
GraphQL/UnnecessaryFieldAlias:
|
121
|
+
Enabled: true
|
122
|
+
Description: 'Field aliases should be different than their field names'
|
123
|
+
|
124
|
+
GraphQL/UnnecessaryArgumentCamelize:
|
125
|
+
Enabled: true
|
126
|
+
Description: "Camelize isn't necessary if the argument name doesn't contain underscores"
|
127
|
+
|
128
|
+
GraphQL/UnnecessaryFieldCamelize:
|
129
|
+
Enabled: true
|
130
|
+
Description: "Camelize isn't necessary if the field name doesn't contain underscores"
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Cop
|
5
|
+
module GraphQL
|
6
|
+
# This cop checks if each argument has an unnecessary camelize.
|
7
|
+
#
|
8
|
+
# @example
|
9
|
+
# # good
|
10
|
+
#
|
11
|
+
# class UserType < BaseType
|
12
|
+
# field :name, String, "Name of the user", null: true do
|
13
|
+
# argument :filter, String, required: false, camelize: false
|
14
|
+
# end
|
15
|
+
# end
|
16
|
+
#
|
17
|
+
# # good
|
18
|
+
#
|
19
|
+
# class UserType < BaseType
|
20
|
+
# argument :filter, String, required: false, camelize: false
|
21
|
+
# end
|
22
|
+
#
|
23
|
+
# # bad
|
24
|
+
#
|
25
|
+
# class UserType < BaseType
|
26
|
+
# argument :filter, String, required: false, camelize: false
|
27
|
+
# end
|
28
|
+
#
|
29
|
+
# # bad
|
30
|
+
#
|
31
|
+
# class UserType < BaseType
|
32
|
+
# field :name, String, "Name of the user", null: true do
|
33
|
+
# argument :filter, String, required: false, camelize: true
|
34
|
+
# end
|
35
|
+
# end
|
36
|
+
#
|
37
|
+
class UnnecessaryArgumentCamelize < Base
|
38
|
+
include RuboCop::GraphQL::NodePattern
|
39
|
+
|
40
|
+
MSG = "Unnecessary argument camelize"
|
41
|
+
|
42
|
+
def on_send(node)
|
43
|
+
return unless argument?(node)
|
44
|
+
|
45
|
+
argument = RuboCop::GraphQL::Argument.new(node)
|
46
|
+
|
47
|
+
if argument.name.to_s.split("_").length < 2 && !argument.kwargs.camelize.nil?
|
48
|
+
add_offense(node)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Cop
|
5
|
+
module GraphQL
|
6
|
+
# This cop checks if a field has an unnecessary alias.
|
7
|
+
#
|
8
|
+
# @example
|
9
|
+
# # good
|
10
|
+
#
|
11
|
+
# class UserType < BaseType
|
12
|
+
# field :name, String, "Name of the user", null: true, alias: :real_name
|
13
|
+
# end
|
14
|
+
#
|
15
|
+
# # bad
|
16
|
+
#
|
17
|
+
# class UserType < BaseType
|
18
|
+
# field :name, "Name of the user" String, null: true, alias: :name
|
19
|
+
# end
|
20
|
+
#
|
21
|
+
class UnnecessaryFieldAlias < Base
|
22
|
+
include RuboCop::GraphQL::NodePattern
|
23
|
+
|
24
|
+
MSG = "Unnecessary field alias"
|
25
|
+
|
26
|
+
def on_send(node)
|
27
|
+
return unless field_definition?(node)
|
28
|
+
|
29
|
+
field = RuboCop::GraphQL::Field.new(node)
|
30
|
+
|
31
|
+
add_offense(node) if field.name == field.kwargs.alias
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Cop
|
5
|
+
module GraphQL
|
6
|
+
# This cop checks if each field has an unnecessary camelize.
|
7
|
+
#
|
8
|
+
# @example
|
9
|
+
# # good
|
10
|
+
#
|
11
|
+
# class UserType < BaseType
|
12
|
+
# field :name, String, "Name of the user", null: true
|
13
|
+
# end
|
14
|
+
#
|
15
|
+
# # bad
|
16
|
+
#
|
17
|
+
# class UserType < BaseType
|
18
|
+
# field :name, "Name of the user", String, null: true, camelize: true
|
19
|
+
# end
|
20
|
+
#
|
21
|
+
class UnnecessaryFieldCamelize < Base
|
22
|
+
include RuboCop::GraphQL::NodePattern
|
23
|
+
|
24
|
+
MSG = "Unnecessary field camelize"
|
25
|
+
|
26
|
+
def on_send(node)
|
27
|
+
return unless field_definition?(node)
|
28
|
+
|
29
|
+
field = RuboCop::GraphQL::Field.new(node)
|
30
|
+
|
31
|
+
add_offense(node) if field.name.to_s.split("_").length < 2 && !field.kwargs.camelize.nil?
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -18,3 +18,6 @@ require_relative "graphql/object_description"
|
|
18
18
|
require_relative "graphql/ordered_arguments"
|
19
19
|
require_relative "graphql/ordered_fields"
|
20
20
|
require_relative "graphql/unused_argument"
|
21
|
+
require_relative "graphql/unnecessary_argument_camelize"
|
22
|
+
require_relative "graphql/unnecessary_field_alias"
|
23
|
+
require_relative "graphql/unnecessary_field_camelize"
|
@@ -31,6 +31,11 @@ module RuboCop
|
|
31
31
|
(pair (sym :as) ...)
|
32
32
|
PATTERN
|
33
33
|
|
34
|
+
# @!method camelize_kwarg?(node)
|
35
|
+
def_node_matcher :camelize_kwarg?, <<~PATTERN
|
36
|
+
(pair (sym :camelize) ...)
|
37
|
+
PATTERN
|
38
|
+
|
34
39
|
def initialize(argument_node)
|
35
40
|
@nodes = argument_kwargs(argument_node) || []
|
36
41
|
end
|
@@ -39,6 +44,10 @@ module RuboCop
|
|
39
44
|
@nodes.find { |kwarg| description_kwarg?(kwarg) }
|
40
45
|
end
|
41
46
|
|
47
|
+
def camelize
|
48
|
+
@nodes.find { |kwarg| camelize_kwarg?(kwarg) }
|
49
|
+
end
|
50
|
+
|
42
51
|
def loads
|
43
52
|
@nodes.find { |kwarg| loads_kwarg?(kwarg) }
|
44
53
|
end
|
@@ -26,6 +26,11 @@ module RuboCop
|
|
26
26
|
(pair (sym :method) ...)
|
27
27
|
PATTERN
|
28
28
|
|
29
|
+
# @!method alias_kwarg(node)
|
30
|
+
def_node_matcher :alias_kwarg, <<~PATTERN
|
31
|
+
(pair (sym :alias) (sym $ _))
|
32
|
+
PATTERN
|
33
|
+
|
29
34
|
# @!method hash_key_kwarg?(node)
|
30
35
|
def_node_matcher :hash_key_kwarg?, <<~PATTERN
|
31
36
|
(pair (sym :hash_key) ...)
|
@@ -41,6 +46,11 @@ module RuboCop
|
|
41
46
|
(pair (sym :resolver_method) (sym $...))
|
42
47
|
PATTERN
|
43
48
|
|
49
|
+
# @!method camelize_kwarg?(node)
|
50
|
+
def_node_matcher :camelize_kwarg?, <<~PATTERN
|
51
|
+
(pair (sym :camelize) ...)
|
52
|
+
PATTERN
|
53
|
+
|
44
54
|
def initialize(field_node)
|
45
55
|
@nodes = field_kwargs(field_node) || []
|
46
56
|
end
|
@@ -53,6 +63,14 @@ module RuboCop
|
|
53
63
|
@nodes.find { |kwarg| method_kwarg?(kwarg) }
|
54
64
|
end
|
55
65
|
|
66
|
+
def alias
|
67
|
+
@alias ||= @nodes.map { |kwarg| alias_kwarg(kwarg) }.compact.first
|
68
|
+
end
|
69
|
+
|
70
|
+
def camelize
|
71
|
+
@nodes.find { |kwarg| camelize_kwarg?(kwarg) }
|
72
|
+
end
|
73
|
+
|
56
74
|
def hash_key
|
57
75
|
@nodes.find { |kwarg| hash_key_kwarg?(kwarg) }
|
58
76
|
end
|
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: 0.
|
4
|
+
version: 0.18.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: 2022-10-
|
11
|
+
date: 2022-10-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -101,6 +101,9 @@ files:
|
|
101
101
|
- lib/rubocop/cop/graphql/ordered_arguments.rb
|
102
102
|
- lib/rubocop/cop/graphql/ordered_fields.rb
|
103
103
|
- lib/rubocop/cop/graphql/resolver_method_length.rb
|
104
|
+
- lib/rubocop/cop/graphql/unnecessary_argument_camelize.rb
|
105
|
+
- lib/rubocop/cop/graphql/unnecessary_field_alias.rb
|
106
|
+
- lib/rubocop/cop/graphql/unnecessary_field_camelize.rb
|
104
107
|
- lib/rubocop/cop/graphql/unused_argument.rb
|
105
108
|
- lib/rubocop/cop/graphql_cops.rb
|
106
109
|
- lib/rubocop/graphql.rb
|