Module: GraphQLPreview
- Defined in:
- lib/graphql-preview.rb,
lib/graphql-preview/mask.rb,
lib/graphql-preview/version.rb,
lib/graphql-preview/instrumenter.rb,
lib/graphql-preview/schema_modification.rb,
lib/graphql-preview/extensions/enabled_previews.rb
Defined Under Namespace
Modules: Extensions
Classes: Instrumenter, Mask, SchemaModification
Constant Summary
collapse
- VERSION =
"0.2.0"
Class Method Summary
collapse
Class Method Details
.use(schema_def, enabled_previews: [], possible_environments: [SchemaModification::DEFAULT_ENVIRONMENT]) ⇒ Object
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
# 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:) ⇒ Boolean
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
# 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
|