graphql-persisted_queries 1.5.0 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c6f0c75f1f94ba226e78445f322fc335e500a8b043c5ad0639339504b34d3c33
4
- data.tar.gz: c5066d90aafb265e937c1e8de6c781874dcd8a3edff964ef4375537f5e33dbd3
3
+ metadata.gz: 7a8319ef6ac9b60ce31f69b86163c9c77f700b2d663da6ab10018b76c96ebc2f
4
+ data.tar.gz: b197af199c9699cda0a7c3c5491d2f22b110b77f61a7632a1982ca3acbc49292
5
5
  SHA512:
6
- metadata.gz: f7d34c82f9ba6fbca43bf4b2d209c4c762f1dd96e26bab8d8942241c1c3447c4b3412a7235b61742638294ae4083e67ac7b872258cfa09cd416abdde80111ebd
7
- data.tar.gz: 205dade68e5c6a087cd38e3632fe21010f01c0bec57857737d0328685a74a66e42ddb9907ebdbf806fe8b1aa3d3c992600a3da8309516b9817fdd2b6a9d38703
6
+ metadata.gz: 2f6f9f3d32aad7d89b263f60701c30f06cba0bb43934fa18360e70ef979c1bdf1f28050859b92788040a600e8d803d850f753383d700243dbdea0b59973bcaf5
7
+ data.tar.gz: 5505e5d9b983b8dc2a510dd17fe417eee561bc337da0deb203030b6f0889732ea46b5d76dc9694d5129ddc7538f43467040dcbe907651863b6a26d3c9888a2b3
@@ -20,11 +20,10 @@ jobs:
20
20
  matrix:
21
21
  ruby: [2.6, 2.7, 3.0]
22
22
  gemfile: [
23
- "gemfiles/graphql_1_10.gemfile",
24
- "gemfiles/graphql_1_11.gemfile",
25
23
  "gemfiles/graphql_1_12_0.gemfile",
26
24
  "gemfiles/graphql_1_12_4.gemfile",
27
25
  "gemfiles/graphql_1_13_7.gemfile",
26
+ "gemfiles/graphql_2_0_0.gemfile",
28
27
  "gemfiles/graphql_master.gemfile"
29
28
  ]
30
29
 
@@ -17,5 +17,5 @@ jobs:
17
17
  ruby-version: 2.7
18
18
  - name: Lint Ruby code with RuboCop
19
19
  run: |
20
- bundle install --gemfile gemfiles/graphql_1_10.gemfile --jobs 4 --retry 3
21
- bundle exec --gemfile gemfiles/graphql_1_10.gemfile rubocop
20
+ bundle install --gemfile gemfiles/graphql_1_12_0.gemfile --jobs 4 --retry 3
21
+ bundle exec --gemfile gemfiles/graphql_1_12_0.gemfile rubocop
data/.gitignore CHANGED
@@ -7,3 +7,5 @@
7
7
  /spec/reports/
8
8
  /tmp/
9
9
  Gemfile.lock
10
+
11
+ .ruby-version
data/CHANGELOG.md CHANGED
@@ -2,6 +2,14 @@
2
2
 
3
3
  ## master
4
4
 
5
+ ## 1.6.0 (2022-10-10)
6
+
7
+ - [PR#57](https://github.com/DmitryTsepelev/graphql-ruby-persisted_queries/pull/57) Refactor code to use instrumentation instead of a monkey patch, deprecate graphql-ruby 1.10 and 1.11 ([@DmitryTsepelev][])
8
+
9
+ ## 1.5.1 (2022-09-28)
10
+
11
+ - [PR#56](https://github.com/DmitryTsepelev/graphql-ruby-persisted_queries/pull/56) Support graphql-ruby 2.0.14 ([@DmitryTsepelev][])
12
+
5
13
  ## 1.5.0 (2022-02-10)
6
14
 
7
15
  - [PR#53](https://github.com/DmitryTsepelev/graphql-ruby-persisted_queries/pull/53) Support graphql-ruby 2.0.0 ([@DmitryTsepelev][])
@@ -1,5 +1,5 @@
1
1
  source "https://rubygems.org"
2
2
 
3
- gem "graphql", "~> 1.10.0"
3
+ gem "graphql", "~> 2.0.0"
4
4
 
5
5
  gemspec path: "../"
@@ -22,7 +22,7 @@ Gem::Specification.new do |spec|
22
22
 
23
23
  spec.required_ruby_version = ">= 2.6"
24
24
 
25
- spec.add_dependency "graphql", ">= 1.10"
25
+ spec.add_dependency "graphql", ">= 1.12"
26
26
 
27
27
  spec.add_development_dependency "rspec", "~> 3.9"
28
28
  spec.add_development_dependency "rake", ">= 10.0"
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module GraphQL
4
+ module PersistedQueries
5
+ module CompiledQueries
6
+ # Instrumentation to support compiled queries
7
+ module Instrumentation
8
+ class << self
9
+ # Actions to perform before the query resolution
10
+ def before_query(query)
11
+ return unless query.context[:extensions]
12
+
13
+ resolver = resolver_for(query)
14
+ if (document = resolver.fetch)
15
+ query.fulfill_document(document)
16
+ else
17
+ query.not_loaded_document!
18
+ end
19
+
20
+ return if document || query.query_string
21
+
22
+ query.persisted_query_not_found!
23
+ query.context.errors << GraphQL::ExecutionError.new(NotFound::MESSAGE)
24
+ end
25
+
26
+ def after_query(*); end
27
+
28
+ private
29
+
30
+ def resolver_for(query)
31
+ CompiledQueries::Resolver.new(query.schema, query.context[:extensions])
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -21,7 +21,7 @@ module GraphQL
21
21
 
22
22
  def add_not_found_error(query)
23
23
  query.context.errors.clear
24
- query.context.errors << GraphQL::ExecutionError.new("PersistedQueryNotFound")
24
+ query.context.errors << GraphQL::ExecutionError.new(NotFound::MESSAGE)
25
25
  GraphQL::Execution::Multiplex::NO_OPERATION
26
26
  end
27
27
  end
@@ -5,6 +5,18 @@ module GraphQL
5
5
  module CompiledQueries
6
6
  # Patches GraphQL::Query to support compiled queries
7
7
  module QueryPatch
8
+ def fulfill_document(document)
9
+ @document = document
10
+ end
11
+
12
+ def not_loaded_document!
13
+ @not_loaded_document = true
14
+ end
15
+
16
+ def persisted_query_not_found!
17
+ @persisted_query_not_found = true
18
+ end
19
+
8
20
  def persisted_query_not_found?
9
21
  @persisted_query_not_found
10
22
  end
@@ -12,13 +24,12 @@ module GraphQL
12
24
  def prepare_ast
13
25
  return super unless @context[:extensions]
14
26
 
15
- @document = resolver.fetch
16
- not_loaded_document = @document.nil?
17
-
18
- @persisted_query_not_found = not_loaded_document && query_string.nil?
19
-
20
27
  super.tap do
21
- resolver.persist(query_string, @document) if not_loaded_document && query_string
28
+ if @context.errors.any?(&method(:not_found_error?))
29
+ @context.errors.select!(&method(:not_found_error?))
30
+ end
31
+
32
+ resolver.persist(query_string, @document) if @not_loaded_document && query_string
22
33
  end
23
34
  end
24
35
 
@@ -27,6 +38,10 @@ module GraphQL
27
38
  def resolver
28
39
  @resolver ||= Resolver.new(@schema, @context[:extensions])
29
40
  end
41
+
42
+ def not_found_error?(error)
43
+ error.message == GraphQL::PersistedQueries::NotFound::MESSAGE
44
+ end
30
45
  end
31
46
  end
32
47
  end
@@ -4,8 +4,10 @@ module GraphQL
4
4
  module PersistedQueries
5
5
  # Raised when persisted query is not found in the storage
6
6
  class NotFound < StandardError
7
+ MESSAGE = "PersistedQueryNotFound"
8
+
7
9
  def message
8
- "PersistedQueryNotFound"
10
+ MESSAGE
9
11
  end
10
12
  end
11
13
 
@@ -3,6 +3,7 @@
3
3
  require "graphql/persisted_queries/hash_generator_builder"
4
4
  require "graphql/persisted_queries/resolver"
5
5
  require "graphql/persisted_queries/multiplex_resolver"
6
+ require "graphql/persisted_queries/compiled_queries/instrumentation"
6
7
  require "graphql/persisted_queries/analyzers/http_method_validator"
7
8
 
8
9
  module GraphQL
@@ -13,10 +14,12 @@ module GraphQL
13
14
  def patch(schema, compiled_queries)
14
15
  schema.singleton_class.prepend(SchemaPatch)
15
16
 
16
- return if compiled_queries
17
-
18
- schema.singleton_class.class_eval { alias_method :multiplex_original, :multiplex }
19
- schema.singleton_class.prepend(MultiplexPatch)
17
+ if compiled_queries
18
+ schema.instrument :query, CompiledQueries::Instrumentation
19
+ else
20
+ schema.singleton_class.class_eval { alias_method :multiplex_original, :multiplex }
21
+ schema.singleton_class.prepend(MultiplexPatch)
22
+ end
20
23
  end
21
24
  end
22
25
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module GraphQL
4
4
  module PersistedQueries
5
- VERSION = "1.5.0"
5
+ VERSION = "1.6.0"
6
6
  end
7
7
  end
@@ -42,9 +42,11 @@ module GraphQL
42
42
  raise ArgumentError, "compiled_queries are not supported for graphql-ruby < 1.12.0"
43
43
  end
44
44
 
45
- GraphQL::Execution::Multiplex.singleton_class.prepend(
46
- GraphQL::PersistedQueries::CompiledQueries::MultiplexPatch
47
- )
45
+ if Gem::Dependency.new("graphql", "< 2.0.14").match?("graphql", GraphQL::VERSION)
46
+ GraphQL::Execution::Multiplex.singleton_class.prepend(
47
+ GraphQL::PersistedQueries::CompiledQueries::MultiplexPatch
48
+ )
49
+ end
48
50
 
49
51
  GraphQL::Query.prepend(GraphQL::PersistedQueries::CompiledQueries::QueryPatch)
50
52
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: graphql-persisted_queries
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - DmitryTsepelev
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-02-10 00:00:00.000000000 Z
11
+ date: 2022-10-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: graphql
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.10'
19
+ version: '1.12'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '1.10'
26
+ version: '1.12'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -136,11 +136,10 @@ files:
136
136
  - docs/hash.md
137
137
  - docs/http_cache.md
138
138
  - docs/tracing.md
139
- - gemfiles/graphql_1_10.gemfile
140
- - gemfiles/graphql_1_11.gemfile
141
139
  - gemfiles/graphql_1_12_0.gemfile
142
140
  - gemfiles/graphql_1_12_4.gemfile
143
141
  - gemfiles/graphql_1_13_7.gemfile
142
+ - gemfiles/graphql_2_0_0.gemfile
144
143
  - gemfiles/graphql_master.gemfile
145
144
  - graphql-persisted_queries.gemspec
146
145
  - lib/graphql/persisted_queries.rb
@@ -148,6 +147,7 @@ files:
148
147
  - lib/graphql/persisted_queries/analyzers/http_method_ast_analyzer.rb
149
148
  - lib/graphql/persisted_queries/analyzers/http_method_validator.rb
150
149
  - lib/graphql/persisted_queries/builder_helpers.rb
150
+ - lib/graphql/persisted_queries/compiled_queries/instrumentation.rb
151
151
  - lib/graphql/persisted_queries/compiled_queries/multiplex_patch.rb
152
152
  - lib/graphql/persisted_queries/compiled_queries/query_patch.rb
153
153
  - lib/graphql/persisted_queries/compiled_queries/resolver.rb
@@ -173,7 +173,7 @@ homepage: https://github.com/DmitryTsepelev/graphql-ruby-persisted_queries
173
173
  licenses:
174
174
  - MIT
175
175
  metadata: {}
176
- post_install_message:
176
+ post_install_message:
177
177
  rdoc_options: []
178
178
  require_paths:
179
179
  - lib
@@ -188,8 +188,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
188
188
  - !ruby/object:Gem::Version
189
189
  version: '0'
190
190
  requirements: []
191
- rubygems_version: 3.0.3.1
192
- signing_key:
191
+ rubygems_version: 3.3.7
192
+ signing_key:
193
193
  specification_version: 4
194
194
  summary: Persisted queries for graphql-ruby
195
195
  test_files: []
@@ -1,5 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gem "graphql", "~> 1.11.0"
4
-
5
- gemspec path: "../"