module GraphQLPreview
Constants
- VERSION
Public Class Methods
use(schema_def, enabled_previews: [], possible_environments: [SchemaModification::DEFAULT_ENVIRONMENT])
click to toggle source
# File lib/graphql-preview.rb, line 28 def self.use(schema_def, enabled_previews: [], possible_environments: [SchemaModification::DEFAULT_ENVIRONMENT]) unless enabled_previews.is_a?(Array) raise ArgumentError, "Expected `enabled_previews` to be an array, but it was `#{enabled_previews.class}`" end enabled_previews.each do |preview| unless preview < GraphQLPreview::SchemaModification raise ArgumentError, "Preview #{preview} must inherit from `GraphQLPreview::SchemaModification`" end end schema = schema_def.target schema_def.instrument(:field, Instrumenter.new(enabled_previews, possible_environments)) enabled_previews.each { |preview| preview.apply_to_schema(schema, possible_environments) } schema.metadata[:enabled_previews] = enabled_previews end
visible?(member, context:)
click to toggle source
# File lib/graphql-preview.rb, line 9 def self.visible?(member, context:) return true unless member.respond_to?(:metadata) return true unless member.metadata[:preview_toggled_by] unless context.key?(:schema_previews) raise ArgumentError, "[GraphQLPreview] `:schema_previews` was not provided to the `context`" end schema_preview_environment = context[:schema_preview_environment] || SchemaModification::DEFAULT_ENVIRONMENT toggled_by_preview = member.metadata[:preview_toggled_by][schema_preview_environment] if toggled_by_preview context[:schema_previews].include?(toggled_by_preview.toggled_by) else false end end