rubocop-graphql 0.16.0 → 0.18.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/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
|