graphql-docs 5.0.0 → 5.1.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/.github/workflows/tests.yml +1 -1
- data/.rubocop.yml +3 -0
- data/CHANGELOG.md +7 -0
- data/graphql-docs.gemspec +3 -1
- data/lib/graphql-docs/configuration.rb +1 -0
- data/lib/graphql-docs/generator.rb +13 -3
- data/lib/graphql-docs/helpers.rb +4 -0
- data/lib/graphql-docs/landing_pages/query.md +5 -1
- data/lib/graphql-docs/layouts/assets/css/screen.scss +11 -10
- data/lib/graphql-docs/layouts/graphql_operations.html +0 -16
- data/lib/graphql-docs/layouts/graphql_queries.html +22 -0
- data/lib/graphql-docs/layouts/includes/sidebar.html +19 -5
- data/lib/graphql-docs/parser.rb +19 -1
- data/lib/graphql-docs/version.rb +1 -1
- metadata +34 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6c2c88bc1065c52ba30b33a2dc65ddc2c72c61e4e20d0d001f09492cce5f24ea
|
4
|
+
data.tar.gz: 76fa1d45d5953b8a9ac9cfa38a97b3c6a33f5daf6880a113a90c37a623e9bf19
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bf384c8d7749b01cfa3f78c578e6af5e9196cbc002eb6106bcedc2fd1b26197c7ea08160be3fd84017a078e455b845a9af290abce67829712200009af1039da8
|
7
|
+
data.tar.gz: adb18b1a5f02041c86ca0a314765efdf59ab992cf7b766796a8560491d1878b7045d695fbc38bd7c74ed7f02957b72fc05196521d1fabe883b1e021ada29570e
|
data/.github/workflows/tests.yml
CHANGED
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,13 @@ A concise overview of the public-facing changes to the gem from version to versi
|
|
4
4
|
|
5
5
|
## Unreleased
|
6
6
|
|
7
|
+
## v5.1.0 - 2024-12-09
|
8
|
+
|
9
|
+
- List queries in the sidebar, similar to mutations. See https://github.com/brettchalupa/graphql-docs/pull/156. Thanks @denisahearn!
|
10
|
+
- Fix Sass `@import` deprecation
|
11
|
+
- Add ostruct and logger gems to dependencies since they're being removed from the Ruby standard library in a future release
|
12
|
+
- Test and fixture improvements
|
13
|
+
|
7
14
|
## v5.0.0 - 2024-07-03
|
8
15
|
|
9
16
|
- **breaking**: The graphql gem 2.2.0+ breaks some of the parsing and displaying of comments from a GraphQL schema file
|
data/graphql-docs.gemspec
CHANGED
@@ -44,9 +44,11 @@ Gem::Specification.new do |spec|
|
|
44
44
|
spec.add_dependency 'gemoji', '~> 3.0'
|
45
45
|
spec.add_dependency 'html-pipeline', '>= 2.14.3', '~> 2.14'
|
46
46
|
spec.add_dependency 'sass-embedded', '~> 1.58'
|
47
|
+
spec.add_dependency 'ostruct', '~> 0.6'
|
48
|
+
spec.add_dependency 'logger', '~> 1.6'
|
47
49
|
|
48
50
|
spec.add_development_dependency 'html-proofer', '~> 3.4'
|
49
|
-
spec.add_development_dependency 'minitest', '~> 5.
|
51
|
+
spec.add_development_dependency 'minitest', '~> 5.24'
|
50
52
|
spec.add_development_dependency 'minitest-focus', '~> 1.1'
|
51
53
|
spec.add_development_dependency 'rake', '~> 13.0'
|
52
54
|
spec.add_development_dependency 'rubocop', '~> 1.37'
|
@@ -32,6 +32,7 @@ module GraphQLDocs
|
|
32
32
|
|
33
33
|
operations: "#{File.dirname(__FILE__)}/layouts/graphql_operations.html",
|
34
34
|
objects: "#{File.dirname(__FILE__)}/layouts/graphql_objects.html",
|
35
|
+
queries: "#{File.dirname(__FILE__)}/layouts/graphql_queries.html",
|
35
36
|
mutations: "#{File.dirname(__FILE__)}/layouts/graphql_mutations.html",
|
36
37
|
interfaces: "#{File.dirname(__FILE__)}/layouts/graphql_interfaces.html",
|
37
38
|
enums: "#{File.dirname(__FILE__)}/layouts/graphql_enums.html",
|
@@ -17,7 +17,7 @@ module GraphQLDocs
|
|
17
17
|
|
18
18
|
@renderer = @options[:renderer].new(@parsed_schema, @options)
|
19
19
|
|
20
|
-
%i[operations objects mutations interfaces enums unions input_objects scalars directives].each do |sym|
|
20
|
+
%i[operations objects queries mutations interfaces enums unions input_objects scalars directives].each do |sym|
|
21
21
|
raise IOError, "`#{sym}` template #{@options[:templates][sym]} was not found" unless File.exist?(@options[:templates][sym])
|
22
22
|
|
23
23
|
instance_variable_set("@graphql_#{sym}_template", ERB.new(File.read(@options[:templates][sym])))
|
@@ -52,8 +52,9 @@ module GraphQLDocs
|
|
52
52
|
def generate
|
53
53
|
FileUtils.rm_rf(@options[:output_dir]) if @options[:delete_output]
|
54
54
|
|
55
|
-
has_query =
|
55
|
+
has_query = create_graphql_operation_pages
|
56
56
|
create_graphql_object_pages
|
57
|
+
create_graphql_query_pages
|
57
58
|
create_graphql_mutation_pages
|
58
59
|
create_graphql_interface_pages
|
59
60
|
create_graphql_enum_pages
|
@@ -96,7 +97,7 @@ module GraphQLDocs
|
|
96
97
|
true
|
97
98
|
end
|
98
99
|
|
99
|
-
def
|
100
|
+
def create_graphql_operation_pages
|
100
101
|
graphql_operation_types.each do |query_type|
|
101
102
|
metadata = ''
|
102
103
|
next unless query_type[:name] == graphql_root_types['query']
|
@@ -129,6 +130,15 @@ module GraphQLDocs
|
|
129
130
|
end
|
130
131
|
end
|
131
132
|
|
133
|
+
def create_graphql_query_pages
|
134
|
+
graphql_query_types.each do |query|
|
135
|
+
opts = default_generator_options(type: query)
|
136
|
+
|
137
|
+
contents = @graphql_queries_template.result(OpenStruct.new(opts).instance_eval { binding })
|
138
|
+
write_file('query', query[:name], contents)
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
132
142
|
def create_graphql_mutation_pages
|
133
143
|
graphql_mutation_types.each do |mutation|
|
134
144
|
opts = default_generator_options(type: mutation)
|
data/lib/graphql-docs/helpers.rb
CHANGED
@@ -1,4 +1,8 @@
|
|
1
1
|
---
|
2
2
|
title: Queries
|
3
3
|
---
|
4
|
-
Every GraphQL schema has a root type for both queries and mutations.
|
4
|
+
Every GraphQL schema has a root type for both queries and mutations.
|
5
|
+
|
6
|
+
The query type defines GraphQL operations that retrieve data from the server.
|
7
|
+
|
8
|
+
For more information, see [the GraphQL spec](http://spec.graphql.org/draft/#sec-Type-System).
|
@@ -1,7 +1,8 @@
|
|
1
1
|
@charset "utf-8";
|
2
2
|
|
3
|
-
@
|
4
|
-
@
|
3
|
+
@use "sass:meta";
|
4
|
+
@use "../_sass/_normalize.scss";
|
5
|
+
@use "../_sass/_fonts";
|
5
6
|
|
6
7
|
body {
|
7
8
|
font-family: 'Source Sans Pro', 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
@@ -39,11 +40,11 @@ em {
|
|
39
40
|
font-family: 'ProximaNova-Semibold';
|
40
41
|
}
|
41
42
|
|
42
|
-
@
|
43
|
-
@
|
44
|
-
@
|
45
|
-
@
|
46
|
-
@
|
47
|
-
@
|
48
|
-
@
|
49
|
-
@
|
43
|
+
@include meta.load-css('../_sass/_header');
|
44
|
+
@include meta.load-css('../_sass/_sidebar');
|
45
|
+
@include meta.load-css('../_sass/_content');
|
46
|
+
@include meta.load-css('../_sass/_types');
|
47
|
+
@include meta.load-css('../_sass/_mobile');
|
48
|
+
@include meta.load-css('../_sass/_api-box');
|
49
|
+
@include meta.load-css('../_sass/_syntax');
|
50
|
+
@include meta.load-css('../_sass/_deprecations');
|
@@ -1,19 +1,3 @@
|
|
1
1
|
<h1><%= type[:name] %></h1>
|
2
2
|
|
3
3
|
<%= type[:description] %>
|
4
|
-
|
5
|
-
<% unless type[:connections].empty? %>
|
6
|
-
|
7
|
-
<h2>Connections</h2>
|
8
|
-
|
9
|
-
<%= include.('connections.html', connections: type[:connections]) %>
|
10
|
-
|
11
|
-
<% end %>
|
12
|
-
|
13
|
-
<% unless type[:fields].empty? %>
|
14
|
-
|
15
|
-
<h2>Fields</h2>
|
16
|
-
|
17
|
-
<%= include.('fields.html', fields: type[:fields]) %>
|
18
|
-
|
19
|
-
<% end %>
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<h1><%= type[:name] %></h1>
|
2
|
+
|
3
|
+
<%= include.('notices.html', notices: type[:notices]) %>
|
4
|
+
|
5
|
+
<%= type[:description] %>
|
6
|
+
|
7
|
+
<% if !type[:arguments].empty? %>
|
8
|
+
|
9
|
+
<h2>Arguments</h2>
|
10
|
+
|
11
|
+
<%= include.('fields.html', fields: type[:arguments]) %>
|
12
|
+
|
13
|
+
<% end %>
|
14
|
+
|
15
|
+
|
16
|
+
<% if !type[:return_fields].empty? %>
|
17
|
+
|
18
|
+
<h2>Return fields</h2>
|
19
|
+
|
20
|
+
<%= include.('fields.html', fields: type[:return_fields]) %>
|
21
|
+
|
22
|
+
<% end %>
|
@@ -7,7 +7,7 @@
|
|
7
7
|
</li>
|
8
8
|
|
9
9
|
<li>
|
10
|
-
<p>
|
10
|
+
<p>Operations</p>
|
11
11
|
<ul class="menu-root">
|
12
12
|
<li>
|
13
13
|
<a href="<%= base_url %>/operation/query/" class="sidebar-link<% if title == "Query" %> current<% end %>">
|
@@ -23,12 +23,12 @@
|
|
23
23
|
</li>
|
24
24
|
|
25
25
|
<li>
|
26
|
-
<p><a href="<%= base_url %>/
|
26
|
+
<p><a href="<%= base_url %>/operation/query">Queries</a></p>
|
27
27
|
<ul class="menu-root">
|
28
|
-
<%
|
29
|
-
|
28
|
+
<% graphql_query_types.().each do |type| %>
|
29
|
+
<% @name = type[:name] %>
|
30
30
|
<li>
|
31
|
-
<a href="<%= base_url %>/
|
31
|
+
<a href="<%= base_url %>/query/<%= @name.downcase %>/" class="sidebar-link<% if title == @name %> current<% end %>">
|
32
32
|
<%= @name %>
|
33
33
|
</a>
|
34
34
|
</li>
|
@@ -50,6 +50,20 @@
|
|
50
50
|
</ul>
|
51
51
|
</li>
|
52
52
|
|
53
|
+
<li>
|
54
|
+
<p><a href="<%= base_url %>/object">Objects</a></p>
|
55
|
+
<ul class="menu-root">
|
56
|
+
<% graphql_object_types.().each do |type| %>
|
57
|
+
<% @name = type[:name] %>
|
58
|
+
<li>
|
59
|
+
<a href="<%= base_url %>/object/<%= @name.downcase %>/" class="sidebar-link<% if title == @name %> current<% end %>">
|
60
|
+
<%= @name %>
|
61
|
+
</a>
|
62
|
+
</li>
|
63
|
+
<% end %>
|
64
|
+
</ul>
|
65
|
+
</li>
|
66
|
+
|
53
67
|
<li>
|
54
68
|
<p><a href="<%= base_url %>/interface">Interfaces</a></p>
|
55
69
|
<ul class="menu-root">
|
data/lib/graphql-docs/parser.rb
CHANGED
@@ -21,6 +21,7 @@ module GraphQLDocs
|
|
21
21
|
|
22
22
|
@processed_schema = {
|
23
23
|
operation_types: [],
|
24
|
+
query_types: [],
|
24
25
|
mutation_types: [],
|
25
26
|
object_types: [],
|
26
27
|
interface_types: [],
|
@@ -51,8 +52,25 @@ module GraphQLDocs
|
|
51
52
|
if data[:name] == root_types['query']
|
52
53
|
data[:interfaces] = object.interfaces.map(&:graphql_name).sort
|
53
54
|
data[:fields], data[:connections] = fetch_fields(object.fields, object.graphql_name)
|
54
|
-
|
55
55
|
@processed_schema[:operation_types] << data
|
56
|
+
|
57
|
+
object.fields.each_value do |query|
|
58
|
+
h = {}
|
59
|
+
|
60
|
+
h[:notices] = @options[:notices].call([object.graphql_name, query.graphql_name].join('.'))
|
61
|
+
h[:name] = query.graphql_name
|
62
|
+
h[:description] = query.description
|
63
|
+
h[:arguments], = fetch_fields(query.arguments, [object.graphql_name, query.graphql_name].join('.'))
|
64
|
+
|
65
|
+
return_type = query.type
|
66
|
+
if return_type.unwrap.respond_to?(:fields)
|
67
|
+
h[:return_fields], = fetch_fields(return_type.unwrap.fields, return_type.graphql_name)
|
68
|
+
else # it is a scalar return type
|
69
|
+
h[:return_fields], = fetch_fields({ return_type.graphql_name => query }, return_type.graphql_name)
|
70
|
+
end
|
71
|
+
|
72
|
+
@processed_schema[:query_types] << h
|
73
|
+
end
|
56
74
|
elsif data[:name] == root_types['mutation']
|
57
75
|
@processed_schema[:operation_types] << data
|
58
76
|
|
data/lib/graphql-docs/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: graphql-docs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brett Chalupa
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2024-
|
12
|
+
date: 2024-12-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: graphql
|
@@ -121,6 +121,34 @@ dependencies:
|
|
121
121
|
- - "~>"
|
122
122
|
- !ruby/object:Gem::Version
|
123
123
|
version: '1.58'
|
124
|
+
- !ruby/object:Gem::Dependency
|
125
|
+
name: ostruct
|
126
|
+
requirement: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - "~>"
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '0.6'
|
131
|
+
type: :runtime
|
132
|
+
prerelease: false
|
133
|
+
version_requirements: !ruby/object:Gem::Requirement
|
134
|
+
requirements:
|
135
|
+
- - "~>"
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: '0.6'
|
138
|
+
- !ruby/object:Gem::Dependency
|
139
|
+
name: logger
|
140
|
+
requirement: !ruby/object:Gem::Requirement
|
141
|
+
requirements:
|
142
|
+
- - "~>"
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: '1.6'
|
145
|
+
type: :runtime
|
146
|
+
prerelease: false
|
147
|
+
version_requirements: !ruby/object:Gem::Requirement
|
148
|
+
requirements:
|
149
|
+
- - "~>"
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: '1.6'
|
124
152
|
- !ruby/object:Gem::Dependency
|
125
153
|
name: html-proofer
|
126
154
|
requirement: !ruby/object:Gem::Requirement
|
@@ -141,14 +169,14 @@ dependencies:
|
|
141
169
|
requirements:
|
142
170
|
- - "~>"
|
143
171
|
- !ruby/object:Gem::Version
|
144
|
-
version: '5.
|
172
|
+
version: '5.24'
|
145
173
|
type: :development
|
146
174
|
prerelease: false
|
147
175
|
version_requirements: !ruby/object:Gem::Requirement
|
148
176
|
requirements:
|
149
177
|
- - "~>"
|
150
178
|
- !ruby/object:Gem::Version
|
151
|
-
version: '5.
|
179
|
+
version: '5.24'
|
152
180
|
- !ruby/object:Gem::Dependency
|
153
181
|
name: minitest-focus
|
154
182
|
requirement: !ruby/object:Gem::Requirement
|
@@ -318,6 +346,7 @@ files:
|
|
318
346
|
- lib/graphql-docs/layouts/graphql_mutations.html
|
319
347
|
- lib/graphql-docs/layouts/graphql_objects.html
|
320
348
|
- lib/graphql-docs/layouts/graphql_operations.html
|
349
|
+
- lib/graphql-docs/layouts/graphql_queries.html
|
321
350
|
- lib/graphql-docs/layouts/graphql_scalars.html
|
322
351
|
- lib/graphql-docs/layouts/graphql_unions.html
|
323
352
|
- lib/graphql-docs/layouts/includes/arguments.html
|
@@ -355,7 +384,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
355
384
|
- !ruby/object:Gem::Version
|
356
385
|
version: '0'
|
357
386
|
requirements: []
|
358
|
-
rubygems_version: 3.5.
|
387
|
+
rubygems_version: 3.5.16
|
359
388
|
signing_key:
|
360
389
|
specification_version: 4
|
361
390
|
summary: Easily generate beautiful documentation from your GraphQL schema.
|