graphiti 1.2.19 → 1.2.27
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/CHANGELOG.md +1 -1
- data/Guardfile +1 -1
- data/gemfiles/rails_4.gemfile +1 -1
- data/graphiti.gemspec +2 -2
- data/lib/graphiti/adapters/active_record.rb +2 -2
- data/lib/graphiti/adapters/active_record/belongs_to_sideload.rb +1 -1
- data/lib/graphiti/adapters/active_record/has_many_sideload.rb +1 -1
- data/lib/graphiti/adapters/active_record/has_one_sideload.rb +1 -1
- data/lib/graphiti/adapters/active_record/{inferrence.rb → inference.rb} +2 -2
- data/lib/graphiti/adapters/active_record/many_to_many_sideload.rb +19 -0
- data/lib/graphiti/debugger.rb +8 -4
- data/lib/graphiti/errors.rb +14 -0
- data/lib/graphiti/extensions/extra_attribute.rb +1 -1
- data/lib/graphiti/query.rb +16 -3
- data/lib/graphiti/request_validator.rb +6 -6
- data/lib/graphiti/request_validators/validator.rb +7 -1
- data/lib/graphiti/resource/dsl.rb +2 -0
- data/lib/graphiti/resource/interface.rb +12 -2
- data/lib/graphiti/resource_proxy.rb +3 -1
- data/lib/graphiti/runner.rb +4 -4
- data/lib/graphiti/sideload.rb +4 -0
- data/lib/graphiti/sideload/has_many.rb +19 -1
- data/lib/graphiti/sideload/many_to_many.rb +6 -2
- data/lib/graphiti/util/link.rb +1 -1
- data/lib/graphiti/version.rb +1 -1
- metadata +27 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fb8f1e8668da2d5d53c211b2f999a5109bf968815f1a700be6d5ee29537afc21
|
4
|
+
data.tar.gz: c60dd4731e33f6b495b82575989dc72376697ec21bbcbb01ce23021c61dbc26b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ecd5b910c32aff8592b16406fb8cf12e3d8d00585e671900966c594e475ea9a4d7b620d7d7ff52d35aad9190563fc29f5ce0e1014d886ee35ed46b72e1791ca8
|
7
|
+
data.tar.gz: e1273d26d0571ae89f0405933888ac17b10083cfe250da9cb7d7118a511efe381cc03176ec9f78e30e5157d2ec2588883c6d113a22a84a0d326e9ccf02b016dd
|
data/CHANGELOG.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
## Unreleased
|
2
2
|
|
3
3
|
Features:
|
4
|
-
|
4
|
+
- [242](https://github.com/graphiti-api/graphiti/pull/242) Bump `jsonapi-renderer` to `~0.2.2` now that (https://github.com/jsonapi-rb/jsonapi-renderer/pull/36) is fixed.
|
5
5
|
- [158](https://github.com/graphiti-api/graphiti/pull/158) Filters options `allow_nil: true`
|
6
6
|
Option can be set at the resource level `Resource.filters_accept_nil_by_default = true`.
|
7
7
|
By default this is set to false. (@zeisler)
|
data/Guardfile
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
guard :rspec, cmd: "bundle exec rspec --color --format documentation" do
|
2
2
|
require "guard/rspec/dsl"
|
3
3
|
dsl = Guard::RSpec::Dsl.new(self)
|
4
|
-
watch(%r{^spec/(.*)
|
4
|
+
watch(%r{^spec/(.*)/?(.*)_spec\.rb$})
|
5
5
|
|
6
6
|
# Feel free to open issues for suggestions and improvements
|
7
7
|
|
data/gemfiles/rails_4.gemfile
CHANGED
data/graphiti.gemspec
CHANGED
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.required_ruby_version = "~> 2.3"
|
20
20
|
|
21
21
|
spec.add_dependency "jsonapi-serializable", "~> 0.3.0"
|
22
|
-
spec.add_dependency "jsonapi-renderer", "0.2.
|
22
|
+
spec.add_dependency "jsonapi-renderer", "~> 0.2", ">= 0.2.2"
|
23
23
|
spec.add_dependency "dry-types", ">= 0.15.0", "< 2.0"
|
24
24
|
spec.add_dependency "graphiti_errors", "~> 1.1.0"
|
25
25
|
spec.add_dependency "concurrent-ruby", "~> 1.0"
|
@@ -29,7 +29,7 @@ Gem::Specification.new do |spec|
|
|
29
29
|
spec.add_development_dependency "kaminari", "~> 0.17"
|
30
30
|
spec.add_development_dependency "bundler"
|
31
31
|
spec.add_development_dependency "rake", "~> 10.0"
|
32
|
+
spec.add_development_dependency "standard", "0.4.7"
|
32
33
|
spec.add_development_dependency "activemodel", ">= 4.1"
|
33
34
|
spec.add_development_dependency "graphiti_spec_helpers", "1.0.beta.4"
|
34
|
-
spec.add_development_dependency "standard"
|
35
35
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Graphiti
|
2
2
|
module Adapters
|
3
3
|
class ActiveRecord < ::Graphiti::Adapters::Abstract
|
4
|
-
require "graphiti/adapters/active_record/
|
4
|
+
require "graphiti/adapters/active_record/inference"
|
5
5
|
require "graphiti/adapters/active_record/has_many_sideload"
|
6
6
|
require "graphiti/adapters/active_record/belongs_to_sideload"
|
7
7
|
require "graphiti/adapters/active_record/has_one_sideload"
|
@@ -159,7 +159,7 @@ module Graphiti
|
|
159
159
|
|
160
160
|
# Ensure fractional seconds don't matter
|
161
161
|
def filter_datetime_eq(scope, attribute, value, is_not: false)
|
162
|
-
ranges = value.map { |v| (v..v + 1.second - 0.00000001) }
|
162
|
+
ranges = value.map { |v| (v..v + 1.second - 0.00000001) unless v.nil? }
|
163
163
|
clause = {attribute => ranges}
|
164
164
|
is_not ? scope.where.not(clause) : scope.where(clause)
|
165
165
|
end
|
@@ -1,6 +1,6 @@
|
|
1
|
-
module Graphiti::Adapters::ActiveRecord::
|
1
|
+
module Graphiti::Adapters::ActiveRecord::Inference
|
2
2
|
# If going AR to AR, use AR introspection
|
3
|
-
# If going AR to PORO, fall back to normal
|
3
|
+
# If going AR to PORO, fall back to normal inference
|
4
4
|
def infer_foreign_key
|
5
5
|
parent_model = parent_resource_class.model
|
6
6
|
reflection = parent_model.reflections[association_name.to_s]
|
@@ -8,6 +8,18 @@ class Graphiti::Adapters::ActiveRecord::ManyToManySideload < Graphiti::Sideload:
|
|
8
8
|
foreign_key.keys.first
|
9
9
|
end
|
10
10
|
|
11
|
+
def inverse_filter
|
12
|
+
return @inverse_filter if @inverse_filter
|
13
|
+
|
14
|
+
inferred_name = infer_inverse_association
|
15
|
+
|
16
|
+
if inferred_name
|
17
|
+
"#{inferred_name.to_s.singularize}_id"
|
18
|
+
else
|
19
|
+
super
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
11
23
|
def belongs_to_many_filter(scope, value)
|
12
24
|
if polymorphic?
|
13
25
|
clauses = value.group_by { |v| v["type"] }.map { |group|
|
@@ -75,4 +87,11 @@ class Graphiti::Adapters::ActiveRecord::ManyToManySideload < Graphiti::Sideload:
|
|
75
87
|
value = through_reflection.foreign_key.to_sym
|
76
88
|
{key => value}
|
77
89
|
end
|
90
|
+
|
91
|
+
def infer_inverse_association
|
92
|
+
through_class = through_reflection.klass
|
93
|
+
|
94
|
+
foreign_reflection = through_class.reflections[name.to_s.singularize]
|
95
|
+
foreign_reflection && foreign_reflection.options[:inverse_of]
|
96
|
+
end
|
78
97
|
end
|
data/lib/graphiti/debugger.rb
CHANGED
@@ -10,6 +10,8 @@ module Graphiti
|
|
10
10
|
|
11
11
|
class << self
|
12
12
|
def on_data(name, start, stop, id, payload)
|
13
|
+
return [] unless enabled
|
14
|
+
|
13
15
|
took = ((stop - start) * 1000.0).round(2)
|
14
16
|
params = scrub_params(payload[:params])
|
15
17
|
|
@@ -24,7 +26,7 @@ module Graphiti
|
|
24
26
|
end
|
25
27
|
end
|
26
28
|
|
27
|
-
def on_data_exception(payload, params)
|
29
|
+
private def on_data_exception(payload, params)
|
28
30
|
unless payload[:exception_object].instance_variable_get(:@__graphiti_debug)
|
29
31
|
add_chunk do |logs, json|
|
30
32
|
logs << ["\n=== Graphiti Debug ERROR", :red, true]
|
@@ -49,11 +51,11 @@ module Graphiti
|
|
49
51
|
end
|
50
52
|
end
|
51
53
|
|
52
|
-
def results(raw_results)
|
54
|
+
private def results(raw_results)
|
53
55
|
raw_results.map { |r| "[#{r.class.name}, #{r.id.inspect}]" }.join(", ")
|
54
56
|
end
|
55
57
|
|
56
|
-
def on_sideload_data(payload, params, took)
|
58
|
+
private def on_sideload_data(payload, params, took)
|
57
59
|
sideload = payload[:sideload]
|
58
60
|
results = results(payload[:results])
|
59
61
|
add_chunk(payload[:resource], payload[:parent]) do |logs, json|
|
@@ -72,7 +74,7 @@ module Graphiti
|
|
72
74
|
end
|
73
75
|
end
|
74
76
|
|
75
|
-
def on_primary_data(payload, params, took)
|
77
|
+
private def on_primary_data(payload, params, took)
|
76
78
|
results = results(payload[:results])
|
77
79
|
add_chunk(payload[:resource], payload[:parent]) do |logs, json|
|
78
80
|
logs << [""]
|
@@ -90,6 +92,8 @@ module Graphiti
|
|
90
92
|
end
|
91
93
|
|
92
94
|
def on_render(name, start, stop, id, payload)
|
95
|
+
return [] unless enabled
|
96
|
+
|
93
97
|
add_chunk do |logs|
|
94
98
|
took = ((stop - start) * 1000.0).round(2)
|
95
99
|
logs << [""]
|
data/lib/graphiti/errors.rb
CHANGED
@@ -366,6 +366,20 @@ module Graphiti
|
|
366
366
|
end
|
367
367
|
end
|
368
368
|
|
369
|
+
class UndefinedIDLookup < Base
|
370
|
+
def initialize(resource_class)
|
371
|
+
@resource_class = resource_class
|
372
|
+
end
|
373
|
+
|
374
|
+
def message
|
375
|
+
<<~MSG
|
376
|
+
Tried to resolve #{@resource_class} with an :id filter, but the filter was nil.
|
377
|
+
This can result in unscoping a query, which can cause incorrect values to be
|
378
|
+
returned which may or may not bypass standard access controls.
|
379
|
+
MSG
|
380
|
+
end
|
381
|
+
end
|
382
|
+
|
369
383
|
class UnknownAttribute < AttributeError
|
370
384
|
def message
|
371
385
|
"#{super}, but could not find an attribute with that name."
|
data/lib/graphiti/query.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
module Graphiti
|
2
2
|
class Query
|
3
|
-
attr_reader :resource, :association_name, :params
|
3
|
+
attr_reader :resource, :association_name, :params, :action
|
4
4
|
|
5
|
-
def initialize(resource, params, association_name = nil, nested_include = nil, parents = [])
|
5
|
+
def initialize(resource, params, association_name = nil, nested_include = nil, parents = [], action = nil)
|
6
6
|
@resource = resource
|
7
7
|
@association_name = association_name
|
8
8
|
@params = params
|
@@ -11,6 +11,7 @@ module Graphiti
|
|
11
11
|
@params = @params.deep_symbolize_keys
|
12
12
|
@include_param = nested_include || @params[:include]
|
13
13
|
@parents = parents
|
14
|
+
@action = parse_action(action)
|
14
15
|
end
|
15
16
|
|
16
17
|
def association?
|
@@ -95,7 +96,7 @@ module Graphiti
|
|
95
96
|
sl_resource = resource_for_sideload(sideload)
|
96
97
|
query_parents = parents + [self]
|
97
98
|
sub_hash = sub_hash[:include] if sub_hash.key?(:include)
|
98
|
-
hash[key] = Query.new(sl_resource, @params, key, sub_hash, query_parents)
|
99
|
+
hash[key] = Query.new(sl_resource, @params, key, sub_hash, query_parents, :all)
|
99
100
|
else
|
100
101
|
handle_missing_sideload(key)
|
101
102
|
end
|
@@ -315,5 +316,17 @@ module Graphiti
|
|
315
316
|
end
|
316
317
|
end
|
317
318
|
end
|
319
|
+
|
320
|
+
def parse_action(action)
|
321
|
+
action ||= @params.fetch(:action, Graphiti.context[:namespace]).try(:to_sym)
|
322
|
+
case action
|
323
|
+
when :index
|
324
|
+
:all
|
325
|
+
when :show
|
326
|
+
:find
|
327
|
+
else
|
328
|
+
action
|
329
|
+
end
|
330
|
+
end
|
318
331
|
end
|
319
332
|
end
|
@@ -6,18 +6,18 @@ module Graphiti
|
|
6
6
|
:deserialized_payload,
|
7
7
|
to: :@validator
|
8
8
|
|
9
|
-
def initialize(root_resource, raw_params)
|
10
|
-
@validator = ValidatorFactory.create(root_resource, raw_params)
|
9
|
+
def initialize(root_resource, raw_params, action)
|
10
|
+
@validator = ValidatorFactory.create(root_resource, raw_params, action)
|
11
11
|
end
|
12
12
|
|
13
13
|
class ValidatorFactory
|
14
|
-
def self.create(root_resource, raw_params)
|
15
|
-
case
|
16
|
-
when
|
14
|
+
def self.create(root_resource, raw_params, action)
|
15
|
+
case action
|
16
|
+
when :update then
|
17
17
|
RequestValidators::UpdateValidator
|
18
18
|
else
|
19
19
|
RequestValidators::Validator
|
20
|
-
end.new(root_resource, raw_params)
|
20
|
+
end.new(root_resource, raw_params, action)
|
21
21
|
end
|
22
22
|
end
|
23
23
|
end
|
@@ -3,10 +3,11 @@ module Graphiti
|
|
3
3
|
class Validator
|
4
4
|
attr_reader :errors
|
5
5
|
|
6
|
-
def initialize(root_resource, raw_params)
|
6
|
+
def initialize(root_resource, raw_params, action)
|
7
7
|
@root_resource = root_resource
|
8
8
|
@raw_params = raw_params
|
9
9
|
@errors = Graphiti::Util::SimpleErrors.new(raw_params)
|
10
|
+
@action = action
|
10
11
|
end
|
11
12
|
|
12
13
|
def validate
|
@@ -68,6 +69,11 @@ module Graphiti
|
|
68
69
|
|
69
70
|
def typecast_attributes(resource, attributes, payload_path)
|
70
71
|
attributes.each_pair do |key, value|
|
72
|
+
# Only validate id if create action, otherwise it's only used for lookup
|
73
|
+
next if @action != :create &&
|
74
|
+
key == :id &&
|
75
|
+
resource.class.config[:attributes][:id][:writable] == false
|
76
|
+
|
71
77
|
begin
|
72
78
|
attributes[key] = resource.typecast(key, value, :writable)
|
73
79
|
rescue Graphiti::Errors::UnknownAttribute
|
@@ -5,6 +5,7 @@ module Graphiti
|
|
5
5
|
|
6
6
|
class_methods do
|
7
7
|
def filter(name, *args, &blk)
|
8
|
+
name = name.to_sym
|
8
9
|
opts = args.extract_options!
|
9
10
|
type_override = args[0]
|
10
11
|
|
@@ -135,6 +136,7 @@ module Graphiti
|
|
135
136
|
filterable: false
|
136
137
|
}
|
137
138
|
options = defaults.merge(options)
|
139
|
+
attribute_option(options, :readable)
|
138
140
|
config[:extra_attributes][name] = options
|
139
141
|
apply_extra_attributes_to_serializer
|
140
142
|
end
|
@@ -11,7 +11,7 @@ module Graphiti
|
|
11
11
|
|
12
12
|
# @api private
|
13
13
|
def _all(params, opts, base_scope)
|
14
|
-
runner = Runner.new(self, params, opts.delete(:query))
|
14
|
+
runner = Runner.new(self, params, opts.delete(:query), :all)
|
15
15
|
opts[:params] = params
|
16
16
|
runner.proxy(base_scope, opts)
|
17
17
|
end
|
@@ -23,11 +23,14 @@ module Graphiti
|
|
23
23
|
|
24
24
|
# @api private
|
25
25
|
def _find(params = {}, base_scope = nil)
|
26
|
+
guard_nil_id!(params[:data])
|
27
|
+
guard_nil_id!(params)
|
28
|
+
|
26
29
|
id = params[:data].try(:[], :id) || params.delete(:id)
|
27
30
|
params[:filter] ||= {}
|
28
31
|
params[:filter][:id] = id if id
|
29
32
|
|
30
|
-
runner = Runner.new(self, params)
|
33
|
+
runner = Runner.new(self, params, nil, :find)
|
31
34
|
runner.proxy base_scope,
|
32
35
|
single: true,
|
33
36
|
raise_on_missing: true,
|
@@ -52,6 +55,13 @@ module Graphiti
|
|
52
55
|
end
|
53
56
|
end
|
54
57
|
end
|
58
|
+
|
59
|
+
def guard_nil_id!(params)
|
60
|
+
return unless params
|
61
|
+
if params.key?(:id) && params[:id].nil?
|
62
|
+
raise Errors::UndefinedIDLookup.new(self)
|
63
|
+
end
|
64
|
+
end
|
55
65
|
end
|
56
66
|
end
|
57
67
|
end
|
@@ -93,7 +93,7 @@ module Graphiti
|
|
93
93
|
original = Graphiti.context[:namespace]
|
94
94
|
begin
|
95
95
|
Graphiti.context[:namespace] = action
|
96
|
-
::Graphiti::RequestValidator.new(@resource, @payload.params).validate!
|
96
|
+
::Graphiti::RequestValidator.new(@resource, @payload.params, action).validate!
|
97
97
|
validator = persist {
|
98
98
|
@resource.persist_with_relationships \
|
99
99
|
@payload.meta(action: action),
|
@@ -118,6 +118,7 @@ module Graphiti
|
|
118
118
|
end
|
119
119
|
|
120
120
|
def destroy
|
121
|
+
data
|
121
122
|
transaction_response = @resource.transaction do
|
122
123
|
metadata = {method: :destroy}
|
123
124
|
model = @resource.destroy(@query.filters[:id], metadata)
|
@@ -135,6 +136,7 @@ module Graphiti
|
|
135
136
|
end
|
136
137
|
|
137
138
|
def update_attributes
|
139
|
+
data
|
138
140
|
save(action: :update)
|
139
141
|
end
|
140
142
|
|
data/lib/graphiti/runner.rb
CHANGED
@@ -3,13 +3,13 @@ module Graphiti
|
|
3
3
|
attr_reader :params
|
4
4
|
attr_reader :deserialized_payload
|
5
5
|
|
6
|
-
def initialize(resource_class, params, query = nil)
|
6
|
+
def initialize(resource_class, params, query = nil, action = nil)
|
7
7
|
@resource_class = resource_class
|
8
8
|
@params = params
|
9
9
|
@query = query
|
10
|
+
@action = action
|
10
11
|
|
11
|
-
validator = RequestValidator.new(jsonapi_resource, params)
|
12
|
-
|
12
|
+
validator = RequestValidator.new(jsonapi_resource, params, action)
|
13
13
|
validator.validate!
|
14
14
|
|
15
15
|
@deserialized_payload = validator.deserialized_payload
|
@@ -30,7 +30,7 @@ module Graphiti
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def query
|
33
|
-
@query ||= Query.new(jsonapi_resource, params)
|
33
|
+
@query ||= Query.new(jsonapi_resource, params, nil, nil, [], @action)
|
34
34
|
end
|
35
35
|
|
36
36
|
def query_hash
|
data/lib/graphiti/sideload.rb
CHANGED
@@ -1,8 +1,18 @@
|
|
1
1
|
class Graphiti::Sideload::HasMany < Graphiti::Sideload
|
2
|
+
def initialize(name, opts)
|
3
|
+
@inverse_filter = opts[:inverse_filter]
|
4
|
+
|
5
|
+
super(name, opts)
|
6
|
+
end
|
7
|
+
|
2
8
|
def type
|
3
9
|
:has_many
|
4
10
|
end
|
5
11
|
|
12
|
+
def inverse_filter
|
13
|
+
@inverse_filter || foreign_key
|
14
|
+
end
|
15
|
+
|
6
16
|
def load_params(parents, query)
|
7
17
|
query.hash.tap do |hash|
|
8
18
|
hash[:filter] ||= {}
|
@@ -11,11 +21,19 @@ class Graphiti::Sideload::HasMany < Graphiti::Sideload
|
|
11
21
|
end
|
12
22
|
|
13
23
|
def base_filter(parents)
|
14
|
-
{foreign_key =>
|
24
|
+
{foreign_key => parent_filter(parents)}
|
25
|
+
end
|
26
|
+
|
27
|
+
def link_filter(parents)
|
28
|
+
{inverse_filter => parent_filter(parents)}
|
15
29
|
end
|
16
30
|
|
17
31
|
private
|
18
32
|
|
33
|
+
def parent_filter(parents)
|
34
|
+
ids_for_parents(parents).join(",")
|
35
|
+
end
|
36
|
+
|
19
37
|
def child_map(children)
|
20
38
|
children.group_by(&foreign_key)
|
21
39
|
end
|
@@ -11,8 +11,12 @@ class Graphiti::Sideload::ManyToMany < Graphiti::Sideload::HasMany
|
|
11
11
|
foreign_key.values.first
|
12
12
|
end
|
13
13
|
|
14
|
+
def inverse_filter
|
15
|
+
@inverse_filter || true_foreign_key
|
16
|
+
end
|
17
|
+
|
14
18
|
def base_filter(parents)
|
15
|
-
{true_foreign_key =>
|
19
|
+
{true_foreign_key => parent_filter(parents)}
|
16
20
|
end
|
17
21
|
|
18
22
|
def infer_foreign_key
|
@@ -32,7 +36,7 @@ class Graphiti::Sideload::ManyToMany < Graphiti::Sideload::HasMany
|
|
32
36
|
self_ref = self
|
33
37
|
fk_type = parent_resource_class.attributes[:id][:type]
|
34
38
|
fk_type = :hash if polymorphic?
|
35
|
-
resource_class.filter
|
39
|
+
resource_class.filter inverse_filter, fk_type do
|
36
40
|
eq do |scope, value|
|
37
41
|
self_ref.belongs_to_many_filter(scope, value)
|
38
42
|
end
|
data/lib/graphiti/util/link.rb
CHANGED
@@ -60,7 +60,7 @@ module Graphiti
|
|
60
60
|
def params
|
61
61
|
@params ||= {}.tap do |params|
|
62
62
|
if @sideload.type != :belongs_to || @sideload.remote?
|
63
|
-
params[:filter] = @sideload.
|
63
|
+
params[:filter] = @sideload.link_filter([@model])
|
64
64
|
end
|
65
65
|
|
66
66
|
@sideload.params_proc&.call(params, [@model], context)
|
data/lib/graphiti/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: graphiti
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.27
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lee Richmond
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-09-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jsonapi-serializable
|
@@ -28,16 +28,22 @@ dependencies:
|
|
28
28
|
name: jsonapi-renderer
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.2
|
33
|
+
version: '0.2'
|
34
|
+
- - ">="
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: 0.2.2
|
34
37
|
type: :runtime
|
35
38
|
prerelease: false
|
36
39
|
version_requirements: !ruby/object:Gem::Requirement
|
37
40
|
requirements:
|
38
|
-
- -
|
41
|
+
- - "~>"
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0.2'
|
44
|
+
- - ">="
|
39
45
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.2.
|
46
|
+
version: 0.2.2
|
41
47
|
- !ruby/object:Gem::Dependency
|
42
48
|
name: dry-types
|
43
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -156,6 +162,20 @@ dependencies:
|
|
156
162
|
- - "~>"
|
157
163
|
- !ruby/object:Gem::Version
|
158
164
|
version: '10.0'
|
165
|
+
- !ruby/object:Gem::Dependency
|
166
|
+
name: standard
|
167
|
+
requirement: !ruby/object:Gem::Requirement
|
168
|
+
requirements:
|
169
|
+
- - '='
|
170
|
+
- !ruby/object:Gem::Version
|
171
|
+
version: 0.4.7
|
172
|
+
type: :development
|
173
|
+
prerelease: false
|
174
|
+
version_requirements: !ruby/object:Gem::Requirement
|
175
|
+
requirements:
|
176
|
+
- - '='
|
177
|
+
- !ruby/object:Gem::Version
|
178
|
+
version: 0.4.7
|
159
179
|
- !ruby/object:Gem::Dependency
|
160
180
|
name: activemodel
|
161
181
|
requirement: !ruby/object:Gem::Requirement
|
@@ -184,20 +204,6 @@ dependencies:
|
|
184
204
|
- - '='
|
185
205
|
- !ruby/object:Gem::Version
|
186
206
|
version: 1.0.beta.4
|
187
|
-
- !ruby/object:Gem::Dependency
|
188
|
-
name: standard
|
189
|
-
requirement: !ruby/object:Gem::Requirement
|
190
|
-
requirements:
|
191
|
-
- - ">="
|
192
|
-
- !ruby/object:Gem::Version
|
193
|
-
version: '0'
|
194
|
-
type: :development
|
195
|
-
prerelease: false
|
196
|
-
version_requirements: !ruby/object:Gem::Requirement
|
197
|
-
requirements:
|
198
|
-
- - ">="
|
199
|
-
- !ruby/object:Gem::Version
|
200
|
-
version: '0'
|
201
207
|
description:
|
202
208
|
email:
|
203
209
|
- richmolj@gmail.com
|
@@ -256,7 +262,7 @@ files:
|
|
256
262
|
- lib/graphiti/adapters/active_record/belongs_to_sideload.rb
|
257
263
|
- lib/graphiti/adapters/active_record/has_many_sideload.rb
|
258
264
|
- lib/graphiti/adapters/active_record/has_one_sideload.rb
|
259
|
-
- lib/graphiti/adapters/active_record/
|
265
|
+
- lib/graphiti/adapters/active_record/inference.rb
|
260
266
|
- lib/graphiti/adapters/active_record/many_to_many_sideload.rb
|
261
267
|
- lib/graphiti/adapters/graphiti_api.rb
|
262
268
|
- lib/graphiti/adapters/null.rb
|