Class: GraphQL::Modernize::Rules::VisibilityPlugin
- Defined in:
- lib/graphql/modernize/rules/deprecation.rb
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
Methods inherited from Base
#initialize, node_pattern, node_types, rule, #visit
Constructor Details
This class inherits a constructor from GraphQL::Modernize::Rules::Base
Instance Method Details
#on_match(node, _captures) ⇒ Object
126 127 128 129 130 131 132 133 134 135 136 137 138 |
# File 'lib/graphql/modernize/rules/deprecation.rb', line 126 def on_match(node, _captures) context = context_for(node) return unless inside?(node, :schema) return if hierarchy.visible_definitions.empty? || !hierarchy.visibility_plugin_target?(context.class_name) return if hierarchy.visibility_plugin_ambiguous?(context.class_name) definition = hierarchy.visible_definitions.first = "visible? (#{definition.path}:#{definition.line}) requires a Visibility plugin" migration_errors = config.(self.class..id).fetch("migration_errors", true) plugin = "use GraphQL::Schema::Visibility, migration_errors: #{migration_errors}" add_offense(node.location, message: ) { |rw| rw.insert_into_body(node, plugin, position: :end) } end |
#on_visibility_call(node, _captures) ⇒ Object
140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 |
# File 'lib/graphql/modernize/rules/deprecation.rb', line 140 def on_visibility_call(node, _captures) context = context_for(node) return unless inside?(node, :schema) plugin = constant_source(node.arguments&.arguments&.first) return unless %w[GraphQL::Schema::Visibility GraphQL::Schema::Warden].include?(plugin) if hierarchy.visibility_plugin_ambiguous?(context.class_name) return add_offense(node.location, safety: :manual, message: "Resolve conditional Visibility plugin configuration manually") end return unless plugin == "GraphQL::Schema::Visibility" return unless hierarchy.visibility_plugin_misplaced?(context.class_name, rewriter.source_file.path, node.location.start_offset) = "Move `use GraphQL::Schema::Visibility` after root type configuration" line_end = rewriter.source_file.line_end(node.location.end_offset - 1) trailing = rewriter.source_file.source.byteslice(node.location.end_offset, line_end - node.location.end_offset).strip if node.block || !standalone_line?(node) || !trailing.empty? return add_offense(node.location, safety: :manual, message: ) end source = rewriter.dedent(node.location.slice) add_offense(node.location, message: ) do |rw| rw.remove_line(node) rw.insert_into_body(context.class_node, source, position: :end) end end |