elasticgraph-query_registry 1.1.0 → 1.2.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
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c7df1c6ca657161900e9163a1372f38dd466110b49137f759ea2b1533ab581cf
|
|
4
|
+
data.tar.gz: 271cee62f53605b4eaa083a01a709eefa54ce7867accdc60c048afff5214f72b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: fe764144f5cfc78549631066fc402c6a47b2234e1397b5a4fa322b7d1bed5e1bfe3dbe3d29c6705c30b5bf9dec5c573af4971bfe89ef62546ff8302046310fd8
|
|
7
|
+
data.tar.gz: 4b0c06b543f54f9e533a5c20fe7031cc7990952c039fd96cb669de530455678eeefd605370fd0bc7985fb9c06076c049138f689a93c48eb754c4da8321f96efd
|
data/README.md
CHANGED
|
@@ -20,10 +20,12 @@ Query registration provides a few key benefits:
|
|
|
20
20
|
allowed to, you can choose not to approve the query. Once setup and
|
|
21
21
|
configured, this library will block clients from submitting queries
|
|
22
22
|
that have not been registered.
|
|
23
|
-
* Your GraphQL endpoint will be a bit more efficient. Parsing
|
|
24
|
-
GraphQL queries can be a bit slow (in our
|
|
25
|
-
string takes about ~10ms
|
|
26
|
-
|
|
23
|
+
* Your GraphQL endpoint will be a bit more efficient. Parsing and
|
|
24
|
+
statically validating large GraphQL queries can be a bit slow (in our
|
|
25
|
+
testing, parsing a 10 KB query string takes about ~10ms and statically
|
|
26
|
+
validating it takes another ~25ms), and the registry will cache and
|
|
27
|
+
reuse the parsed form of registered queries while also skipping
|
|
28
|
+
redundant runtime static validation for them.
|
|
27
29
|
|
|
28
30
|
Importantly, once installed, registered clients who send unregistered
|
|
29
31
|
queries will get errors. Unregistered clients can similarly be blocked
|
|
@@ -47,14 +49,10 @@ graph LR;
|
|
|
47
49
|
graphql["graphql"];
|
|
48
50
|
elasticgraph-query_registry --> graphql;
|
|
49
51
|
class graphql externalGemStyle;
|
|
50
|
-
graphql-c_parser["graphql-c_parser"];
|
|
51
|
-
elasticgraph-query_registry --> graphql-c_parser;
|
|
52
|
-
class graphql-c_parser externalGemStyle;
|
|
53
52
|
rake["rake"];
|
|
54
53
|
elasticgraph-query_registry --> rake;
|
|
55
54
|
class rake externalGemStyle;
|
|
56
55
|
click graphql href "https://rubygems.org/gems/graphql" "Open on RubyGems.org" _blank;
|
|
57
|
-
click graphql-c_parser href "https://rubygems.org/gems/graphql-c_parser" "Open on RubyGems.org" _blank;
|
|
58
56
|
click rake href "https://rubygems.org/gems/rake" "Open on RubyGems.org" _blank;
|
|
59
57
|
```
|
|
60
58
|
|
|
@@ -145,3 +143,8 @@ bundle exec rake "query_registry:dump_variables[client_name, query_name]"
|
|
|
145
143
|
|
|
146
144
|
Don't worry about if you forget this, though--the `query_registry:validate_queries`
|
|
147
145
|
task will also fail and give you instructions anytime a variables file is not up-to-date.
|
|
146
|
+
|
|
147
|
+
You should also run `query_registry:validate_queries` as part of CI for any application that
|
|
148
|
+
uses this gem. At runtime, `elasticgraph-query_registry` skips GraphQL static validation for
|
|
149
|
+
registered queries since it assumes they have already been validated on CI. Unregistered
|
|
150
|
+
queries, materially different queries, and variable values still go through runtime validation.
|
|
@@ -8,8 +8,9 @@
|
|
|
8
8
|
|
|
9
9
|
require "elastic_graph/query_registry/variable_backward_incompatibility_detector"
|
|
10
10
|
require "elastic_graph/query_registry/variable_dumper"
|
|
11
|
-
require "
|
|
12
|
-
|
|
11
|
+
require "elastic_graph/support/graphql_gem_loader"
|
|
12
|
+
|
|
13
|
+
ElasticGraph::Support::GraphQLGemLoader.load
|
|
13
14
|
|
|
14
15
|
module ElasticGraph
|
|
15
16
|
module QueryRegistry
|
|
@@ -90,7 +90,9 @@ module ElasticGraph
|
|
|
90
90
|
(_ = cached_client_data).with_updated_last_query(query_string, cachable_query)
|
|
91
91
|
end
|
|
92
92
|
|
|
93
|
-
|
|
93
|
+
prepared_query = prepare_query_for_execution(query, variables: variables, operation_name: operation_name, context: context)
|
|
94
|
+
|
|
95
|
+
[prepared_query, [], registration_status]
|
|
94
96
|
end
|
|
95
97
|
|
|
96
98
|
private
|
|
@@ -128,7 +130,14 @@ module ElasticGraph
|
|
|
128
130
|
document: query.document,
|
|
129
131
|
variables: variables,
|
|
130
132
|
operation_name: operation_name,
|
|
131
|
-
context: context
|
|
133
|
+
context: context,
|
|
134
|
+
# Registered queries are validated at CI time (via the QueryValidator Rake task),
|
|
135
|
+
# so re-validating at runtime is redundant. Skipping it avoids the cost of running
|
|
136
|
+
# graphql-ruby's StaticValidation pipeline on every request for known-good queries.
|
|
137
|
+
# Note: `validate: false` only disables static (query-string) validation; variable
|
|
138
|
+
# validation still runs via `GraphQL::Query#variables`, so invalid variable values
|
|
139
|
+
# are still reported as errors on every request.
|
|
140
|
+
validate: false
|
|
132
141
|
)
|
|
133
142
|
end
|
|
134
143
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: elasticgraph-query_registry
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Myron Marston
|
|
@@ -17,110 +17,90 @@ dependencies:
|
|
|
17
17
|
requirements:
|
|
18
18
|
- - '='
|
|
19
19
|
- !ruby/object:Gem::Version
|
|
20
|
-
version: 1.
|
|
20
|
+
version: 1.2.0
|
|
21
21
|
type: :runtime
|
|
22
22
|
prerelease: false
|
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
|
24
24
|
requirements:
|
|
25
25
|
- - '='
|
|
26
26
|
- !ruby/object:Gem::Version
|
|
27
|
-
version: 1.
|
|
27
|
+
version: 1.2.0
|
|
28
28
|
- !ruby/object:Gem::Dependency
|
|
29
29
|
name: elasticgraph-support
|
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
|
31
31
|
requirements:
|
|
32
32
|
- - '='
|
|
33
33
|
- !ruby/object:Gem::Version
|
|
34
|
-
version: 1.
|
|
34
|
+
version: 1.2.0
|
|
35
35
|
type: :runtime
|
|
36
36
|
prerelease: false
|
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
|
38
38
|
requirements:
|
|
39
39
|
- - '='
|
|
40
40
|
- !ruby/object:Gem::Version
|
|
41
|
-
version: 1.
|
|
41
|
+
version: 1.2.0
|
|
42
42
|
- !ruby/object:Gem::Dependency
|
|
43
43
|
name: graphql
|
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
|
45
45
|
requirements:
|
|
46
46
|
- - "~>"
|
|
47
47
|
- !ruby/object:Gem::Version
|
|
48
|
-
version: 2.
|
|
48
|
+
version: 2.6.2
|
|
49
49
|
type: :runtime
|
|
50
50
|
prerelease: false
|
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
|
52
52
|
requirements:
|
|
53
53
|
- - "~>"
|
|
54
54
|
- !ruby/object:Gem::Version
|
|
55
|
-
version: 2.
|
|
56
|
-
- !ruby/object:Gem::Dependency
|
|
57
|
-
name: graphql-c_parser
|
|
58
|
-
requirement: !ruby/object:Gem::Requirement
|
|
59
|
-
requirements:
|
|
60
|
-
- - "~>"
|
|
61
|
-
- !ruby/object:Gem::Version
|
|
62
|
-
version: '1.1'
|
|
63
|
-
- - ">="
|
|
64
|
-
- !ruby/object:Gem::Version
|
|
65
|
-
version: 1.1.3
|
|
66
|
-
type: :runtime
|
|
67
|
-
prerelease: false
|
|
68
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
69
|
-
requirements:
|
|
70
|
-
- - "~>"
|
|
71
|
-
- !ruby/object:Gem::Version
|
|
72
|
-
version: '1.1'
|
|
73
|
-
- - ">="
|
|
74
|
-
- !ruby/object:Gem::Version
|
|
75
|
-
version: 1.1.3
|
|
55
|
+
version: 2.6.2
|
|
76
56
|
- !ruby/object:Gem::Dependency
|
|
77
57
|
name: rake
|
|
78
58
|
requirement: !ruby/object:Gem::Requirement
|
|
79
59
|
requirements:
|
|
80
60
|
- - "~>"
|
|
81
61
|
- !ruby/object:Gem::Version
|
|
82
|
-
version: '13.
|
|
62
|
+
version: '13.4'
|
|
83
63
|
- - ">="
|
|
84
64
|
- !ruby/object:Gem::Version
|
|
85
|
-
version: 13.
|
|
65
|
+
version: 13.4.2
|
|
86
66
|
type: :runtime
|
|
87
67
|
prerelease: false
|
|
88
68
|
version_requirements: !ruby/object:Gem::Requirement
|
|
89
69
|
requirements:
|
|
90
70
|
- - "~>"
|
|
91
71
|
- !ruby/object:Gem::Version
|
|
92
|
-
version: '13.
|
|
72
|
+
version: '13.4'
|
|
93
73
|
- - ">="
|
|
94
74
|
- !ruby/object:Gem::Version
|
|
95
|
-
version: 13.
|
|
75
|
+
version: 13.4.2
|
|
96
76
|
- !ruby/object:Gem::Dependency
|
|
97
77
|
name: elasticgraph-elasticsearch
|
|
98
78
|
requirement: !ruby/object:Gem::Requirement
|
|
99
79
|
requirements:
|
|
100
80
|
- - '='
|
|
101
81
|
- !ruby/object:Gem::Version
|
|
102
|
-
version: 1.
|
|
82
|
+
version: 1.2.0
|
|
103
83
|
type: :development
|
|
104
84
|
prerelease: false
|
|
105
85
|
version_requirements: !ruby/object:Gem::Requirement
|
|
106
86
|
requirements:
|
|
107
87
|
- - '='
|
|
108
88
|
- !ruby/object:Gem::Version
|
|
109
|
-
version: 1.
|
|
89
|
+
version: 1.2.0
|
|
110
90
|
- !ruby/object:Gem::Dependency
|
|
111
91
|
name: elasticgraph-opensearch
|
|
112
92
|
requirement: !ruby/object:Gem::Requirement
|
|
113
93
|
requirements:
|
|
114
94
|
- - '='
|
|
115
95
|
- !ruby/object:Gem::Version
|
|
116
|
-
version: 1.
|
|
96
|
+
version: 1.2.0
|
|
117
97
|
type: :development
|
|
118
98
|
prerelease: false
|
|
119
99
|
version_requirements: !ruby/object:Gem::Requirement
|
|
120
100
|
requirements:
|
|
121
101
|
- - '='
|
|
122
102
|
- !ruby/object:Gem::Version
|
|
123
|
-
version: 1.
|
|
103
|
+
version: 1.2.0
|
|
124
104
|
email:
|
|
125
105
|
- myron@squareup.com
|
|
126
106
|
executables: []
|
|
@@ -145,10 +125,10 @@ licenses:
|
|
|
145
125
|
- MIT
|
|
146
126
|
metadata:
|
|
147
127
|
bug_tracker_uri: https://github.com/block/elasticgraph/issues
|
|
148
|
-
changelog_uri: https://github.com/block/elasticgraph/releases/tag/v1.
|
|
149
|
-
documentation_uri: https://block.github.io/elasticgraph/api-docs/v1.
|
|
128
|
+
changelog_uri: https://github.com/block/elasticgraph/releases/tag/v1.2.0
|
|
129
|
+
documentation_uri: https://block.github.io/elasticgraph/api-docs/v1.2.0/
|
|
150
130
|
homepage_uri: https://block.github.io/elasticgraph/
|
|
151
|
-
source_code_uri: https://github.com/block/elasticgraph/tree/v1.
|
|
131
|
+
source_code_uri: https://github.com/block/elasticgraph/tree/v1.2.0/elasticgraph-query_registry
|
|
152
132
|
gem_category: extension
|
|
153
133
|
rdoc_options: []
|
|
154
134
|
require_paths:
|
|
@@ -167,7 +147,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
167
147
|
- !ruby/object:Gem::Version
|
|
168
148
|
version: '0'
|
|
169
149
|
requirements: []
|
|
170
|
-
rubygems_version: 4.0.
|
|
150
|
+
rubygems_version: 4.0.6
|
|
171
151
|
specification_version: 4
|
|
172
152
|
summary: Provides a source-controlled query registry for ElasticGraph applications.
|
|
173
153
|
test_files: []
|