isomorfeus-data 2.2.2 → 2.2.5

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: 6d36a0a2969584b5e5aea166cb0908ab8bec00468a92db227f23c4fc119f3758
4
- data.tar.gz: 6ffb3e2ce6d9b346d4cdab06cf11bce8ecfcabe26018862da4bfb00c524ffadd
3
+ metadata.gz: 5ab4a823aea4e8ce1ac387d38165ec3edc965860b9610489659965de6507e040
4
+ data.tar.gz: 85d563dcbf7c0fb35a4adb58160070aa99e81302a6b580f7e6a8b44298d711cf
5
5
  SHA512:
6
- metadata.gz: ec637e80c1b1ab442fb7e083612e8fd2b69048bc632caabb0a9eeda38f8b655fb5c96336621d2c3d670796beda867b2f27bfa4bb2a984f1d125e3cd6bd85d56c
7
- data.tar.gz: b934e52cb638f92aef1ecf1851d57ca48c86ab6ecb88a637a22265e9835db2769e5aade0ea36d7c9e16daad5c40c9dd18e5f302aab93c3011f2b114e9fc03b9a
6
+ metadata.gz: b71a2919ce601d39c2507d3746330e7dfae6693f1176b2a41feb807ce345ffd6110ea126b2e816774035f45f4c2a423861855dbb48f9b2d53d8fadc0b809cadf
7
+ data.tar.gz: 9124d75496b322d9dd7d3d7f455d9badc97823c202d56029f5fff91a3c72d714c8be9d7e70347b87f42013bc6bc681347f4723a91b197326bdcce0fc0ef6312f
@@ -1,5 +1,5 @@
1
1
  module Isomorfeus
2
2
  module Data
3
- VERSION = '2.2.2'
3
+ VERSION = '2.2.5'
4
4
  end
5
5
  end
@@ -6,28 +6,62 @@ module LucidQuery
6
6
 
7
7
  if RUBY_ENGINE == 'opal'
8
8
  base.instance_exec do
9
+ def _generate_auto_key(props_s)
10
+ component = nil
11
+ component_name = '_'
12
+ %x{
13
+ let c = Opal.Preact.active_component();
14
+ if (typeof c?.__ruby_instance !== 'undefined') { component = c.__ruby_instance; }
15
+ }
16
+ component_name = component.class.name if component
17
+ "#{component_name}:_:#{self.name}:#{props_s}"
18
+ end
19
+
20
+ def _should_return?(lqri, gak)
21
+ if on_ssr?
22
+ lqri.loaded? && gak
23
+ else on_browser?
24
+ if Isomorfeus::TopLevel.hydrated
25
+ if Isomorfeus::TopLevel.first_pass
26
+ lqri.loaded?
27
+ else
28
+ lqri.loaded? && !gak
29
+ end
30
+ else
31
+ lqri.loaded? && !gak
32
+ end
33
+ end
34
+ end
35
+
9
36
  def execute(key: nil, **props)
10
- props[:query_result_instance] = LucidQueryResult.new(key: key)
11
- promise_execute(props) unless props[:query_result_instance].loaded?
12
- props[:query_result_instance]
37
+ gak = key ? false : true
38
+ key = _generate_auto_key(`JSON.stringify(props)`) unless key
39
+
40
+ lqri = LucidQueryResult.new(key: key)
41
+ return lqri if _should_return?(lqri, gak)
42
+ props[:query_result_instance] = lqri
43
+ promise_execute(key: gak ? nil : key, **props)
44
+ lqri
13
45
  end
14
46
 
15
47
  def promise_execute(key: nil, **props)
16
- query_result_instance = props.delete(:query_result_instance)
17
- query_result_instance = LucidQueryResult.new(key: key) unless query_result_instance
48
+ gak = key ? false : true
49
+ key = _generate_auto_key(`JSON.stringify(props)`) unless key
18
50
 
19
- return Promise.new.resolve(query_result_instance) if query_result_instance.loaded?
51
+ lqri = props.delete(:query_result_instance)
52
+ lqri = LucidQueryResult.new(key: key) unless lqri
53
+ return Promise.new.resolve(lqri) if _should_return?(lqri, gak)
20
54
 
21
55
  props.each_key do |prop_name|
22
56
  Isomorfeus.raise_error(message: "#{self.to_s} No such query prop declared: '#{prop_name}'!") unless declared_props.key?(prop_name)
23
57
  end
24
58
  props = validated_props(props)
25
- props[:key] = query_result_instance.key
59
+ props[:key] = lqri.key
26
60
  Isomorfeus::Transport.promise_send_path( 'Isomorfeus::Data::Handler::Generic', self.name, :execute, props).then do |agent|
27
61
  agent.process do
28
- query_result_instance._load_from_store!
62
+ lqri._load_from_store!
29
63
  Isomorfeus.store.dispatch(type: 'DATA_LOAD', data: agent.full_response[:data])
30
- query_result_instance
64
+ lqri
31
65
  end
32
66
  end
33
67
  end
@@ -46,7 +46,7 @@ class LucidQueryResult
46
46
  stored_results = Redux.fetch_by_path(:data_state, @class_name, @key)
47
47
  stored_results.JS[accessor_name] if stored_results
48
48
  end
49
- Isomorfeus.raise_error(message: "#{@class_name}: no such thing '#{accessor_name}' in the results!") unless sid_or_array
49
+ return nil unless sid_or_array
50
50
  if stored_results.JS['_is_array_']
51
51
  sid_or_array.map { |sid| Isomorfeus.instance_from_sid(sid) }
52
52
  else
@@ -82,7 +82,7 @@ class LucidQueryResult
82
82
  sids_hash[key.to_s] = value_or_array.map(&:sid)
83
83
  sids_hash[:_is_array_] = true
84
84
  else
85
- sids_hash[key.to_s] = value_or_array.sid
85
+ sids_hash[key.to_s] = value_or_array.nil? ? nil : value_or_array.sid
86
86
  end
87
87
  end
88
88
  { @class_name => { @key => sids_hash }}
@@ -99,9 +99,11 @@ class LucidQueryResult
99
99
  end
100
100
  end
101
101
  else
102
- data_hash.deep_merge!(value.to_transport)
103
- if value.respond_to?(:included_items_to_transport)
104
- data_hash.deep_merge!(value.included_items_to_transport)
102
+ unless value.nil?
103
+ data_hash.deep_merge!(value.to_transport)
104
+ if value.respond_to?(:included_items_to_transport)
105
+ data_hash.deep_merge!(value.included_items_to_transport)
106
+ end
105
107
  end
106
108
  end
107
109
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: isomorfeus-data
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.2
4
+ version: 2.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Biedermann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-02-21 00:00:00.000000000 Z
11
+ date: 2022-02-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -114,42 +114,42 @@ dependencies:
114
114
  requirements:
115
115
  - - '='
116
116
  - !ruby/object:Gem::Version
117
- version: 2.2.2
117
+ version: 2.2.5
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - '='
123
123
  - !ruby/object:Gem::Version
124
- version: 2.2.2
124
+ version: 2.2.5
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: isomorfeus-policy
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - '='
130
130
  - !ruby/object:Gem::Version
131
- version: 2.2.2
131
+ version: 2.2.5
132
132
  type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - '='
137
137
  - !ruby/object:Gem::Version
138
- version: 2.2.2
138
+ version: 2.2.5
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: isomorfeus-preact
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: 10.6.45
145
+ version: 10.6.50
146
146
  type: :runtime
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: 10.6.45
152
+ version: 10.6.50
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: isomorfeus-redux
155
155
  requirement: !ruby/object:Gem::Requirement
@@ -170,28 +170,28 @@ dependencies:
170
170
  requirements:
171
171
  - - '='
172
172
  - !ruby/object:Gem::Version
173
- version: 2.2.2
173
+ version: 2.2.5
174
174
  type: :runtime
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
178
  - - '='
179
179
  - !ruby/object:Gem::Version
180
- version: 2.2.2
180
+ version: 2.2.5
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: isomorfeus
183
183
  requirement: !ruby/object:Gem::Requirement
184
184
  requirements:
185
185
  - - '='
186
186
  - !ruby/object:Gem::Version
187
- version: 2.2.2
187
+ version: 2.2.5
188
188
  type: :development
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
192
  - - '='
193
193
  - !ruby/object:Gem::Version
194
- version: 2.2.2
194
+ version: 2.2.5
195
195
  - !ruby/object:Gem::Dependency
196
196
  name: rake
197
197
  requirement: !ruby/object:Gem::Requirement