isomorfeus-data 2.2.1 → 2.2.4

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: 36f2a4b42f218414eb7b5d64477e37d31af469bfc9e75dd2dfdc9dfa72784eb4
4
- data.tar.gz: 882e1a566d0f5aa47f62766bb735c1c77de497274a6b77a6a4a464d92e39bc72
3
+ metadata.gz: f38e6bfe020ed2d119bfa65c03081a66cbaa25a6c7de2e1cfc3bf81d6a664509
4
+ data.tar.gz: 2ee22f40a1eee27e38f6b24fea9bfff03b78415a0ff1a19385b82b38cd057159
5
5
  SHA512:
6
- metadata.gz: 384ad08196c3672aed40ec02d02b14a37f54f9512792b15c93ff9be6d050896b383569b0f97a232c04789039f739b8de7303268a2e5028508f9124600a883e25
7
- data.tar.gz: 3920980f38fd39a1c0110938cbdc5f306210788be3c97fb88cb7808587789bf4d2fd546c2c6bdfcce43eae43c2ccfa7e456af736004931eac718e3c83a3a73da
6
+ metadata.gz: 573f1fe92e77a05e4c53fb02b39ae32e1ae9d4765190b7652a0f59da9d90c4d39b3d7ee5976ba1d029819aa7f8a9db0bc683319e883650fb824b9148d64f403a
7
+ data.tar.gz: 42a357b982e34c4feef9d5493b11d403f9a94fd4f76ecc136421ea50eef114dff2cdd342228a55e74753e742aa12ac64eac8dd5f038479fd0662ef6d09a6ae3c
@@ -1,5 +1,5 @@
1
1
  module Isomorfeus
2
2
  module Data
3
- VERSION = '2.2.1'
3
+ VERSION = '2.2.4'
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.1
4
+ version: 2.2.4
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-20 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.1
117
+ version: 2.2.4
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.1
124
+ version: 2.2.4
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.1
131
+ version: 2.2.4
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.1
138
+ version: 2.2.4
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.40
145
+ version: 10.6.49
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.40
152
+ version: 10.6.49
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.1
173
+ version: 2.2.4
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.1
180
+ version: 2.2.4
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.1
187
+ version: 2.2.4
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.1
194
+ version: 2.2.4
195
195
  - !ruby/object:Gem::Dependency
196
196
  name: rake
197
197
  requirement: !ruby/object:Gem::Requirement
@@ -276,7 +276,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
276
276
  - !ruby/object:Gem::Version
277
277
  version: '0'
278
278
  requirements: []
279
- rubygems_version: 3.3.3
279
+ rubygems_version: 3.3.7
280
280
  signing_key:
281
281
  specification_version: 4
282
282
  summary: Reactive objects, documents, files and queries for isomorfeus.