isomorfeus-data 2.0.7 → 2.0.11

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: 0d991a34b0743cc8723b790c57b0f97f1eabce527a2c61a189a8b05a5ab1c01d
4
- data.tar.gz: 6c163cb1c1de3f0b8f40c7a4c8feda23a16f99a91cba0167be55c1f1d181546a
3
+ metadata.gz: e20dfbc0fffcb6a9dae5dde4a51dc15efe3cee6853e7c06ec0a44832479c3f3b
4
+ data.tar.gz: 82f45e897f6afc83cbec00bbd0531ce9ebf86ae2bf54d4c1ebf4ededb857358e
5
5
  SHA512:
6
- metadata.gz: d68c4467cf2cfdccd6676b03d7f1fd60c850900fb4f44cb926cb69e7151ad30a444b914a903e42bceca0501a805ea8275a2656f36bb4fe3fffdd84e618d90bc4
7
- data.tar.gz: 4003de4bd7f69841d1ab9b93c17a6472df9d72698bae42c1aca5ff2b219f2360d22a96f388d97e29749f378e75ac550a226ddb472e9fec19e653418d1cbf5edf
6
+ metadata.gz: 72462528f224761d6d4a54f8d1bb54e5943819b5d70469a50abb494d887834292af15408bd9c0f69ce207434f546c585c1ab53031f6b378ec4344170b2798cab
7
+ data.tar.gz: 5374484bc35170c9e15c73cbfa9af3c13cda1be7803390ae9763b85ce2e6c6f901f71b165345c36076ee27e0f792e9d9dfb798432f0f396a1fda02a9178be97a
data/lib/data_uri/uri.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  module URI
2
2
  class Data < Generic
3
- COMPONENT = [:scheme, :opaque].freeze
4
- MIME_TYPE_RE = %r{^([-\w.+]+/[-\w.+]*)}.freeze
5
- MIME_PARAM_RE = /^;([-\w.+]+)=([^;,]+)/.freeze
3
+ COMPONENT = [:scheme, :opaque]
4
+ MIME_TYPE_RE = %r{^([-\w.+]+/[-\w.+]*)}
5
+ MIME_PARAM_RE = /^;([-\w.+]+)=([^;,]+)/
6
6
 
7
7
  attr_reader :content_type, :data
8
8
 
@@ -1,12 +1,12 @@
1
1
  module Isomorfeus
2
2
  # available settings
3
3
  class << self
4
- def instance_from_sid(sid)
5
- data_class = cached_data_class(sid[0])
6
- data_class.new(key: sid[1])
7
- end
8
-
9
4
  if RUBY_ENGINE == 'opal'
5
+ def instance_from_sid(sid)
6
+ data_class = cached_data_class(sid[0])
7
+ data_class.new(key: sid[1], _loading: true)
8
+ end
9
+
10
10
  def cached_data_classes
11
11
  @cached_data_classes ||= `{}`
12
12
  end
@@ -17,6 +17,11 @@ module Isomorfeus
17
17
  cached_data_classes.JS[class_name] = "::#{class_name}".constantize
18
18
  end
19
19
  else
20
+ def instance_from_sid(sid)
21
+ data_class = cached_data_class(sid[0])
22
+ data_class.new(key: sid[1])
23
+ end
24
+
20
25
  def cached_data_classes
21
26
  @cached_data_classes ||= {}
22
27
  end
@@ -70,13 +70,9 @@ module Isomorfeus
70
70
  !!instance_exec(key: key, &@_destroy_block)
71
71
  end
72
72
 
73
- def promise_load(key:)
74
- instance = self.load(key: key)
75
- result_promise = Promise.new
76
- result_promise.resolve(instance)
77
- result_promise
73
+ def promise_destroy(key:)
74
+ Promise.new.resolve(destroy(key: key))
78
75
  end
79
- alias promise_load! promise_load
80
76
 
81
77
  def load(key:)
82
78
  data = instance_exec(key: key, &@_load_block)
@@ -86,6 +82,14 @@ module Isomorfeus
86
82
  end
87
83
  alias load! load
88
84
 
85
+ def promise_load(key:)
86
+ instance = self.load(key: key)
87
+ result_promise = Promise.new
88
+ result_promise.resolve(instance)
89
+ result_promise
90
+ end
91
+ alias promise_load! promise_load
92
+
89
93
  def execute_create(&block)
90
94
  @_create_block = block
91
95
  end
@@ -115,14 +119,6 @@ module Isomorfeus
115
119
  new(key: key, **things).promise_create
116
120
  end
117
121
 
118
- def save(instance:)
119
- instance.save
120
- end
121
-
122
- def promise_save(instance:)
123
- instance.promise_save
124
- end
125
-
126
122
  def current_user
127
123
  Isomorfeus.current_user
128
124
  end
@@ -66,16 +66,21 @@ module Isomorfeus
66
66
  end
67
67
 
68
68
  def promise_destroy
69
- self.class.promise_destroy(@key)
69
+ self.class.promise_destroy(key: @key)
70
70
  end
71
71
 
72
72
  def reload
73
- self.class.promise_load!(@key, self)
73
+ self.class.promise_load!(key: @key, instance: self)
74
74
  self
75
75
  end
76
76
 
77
77
  def promise_reload
78
- self.class.promise_load!(@key, self)
78
+ self.class.promise_load!(key: @key, instance: self)
79
+ end
80
+
81
+ def save
82
+ promise_save
83
+ self
79
84
  end
80
85
 
81
86
  def promise_save
@@ -122,6 +127,20 @@ module Isomorfeus
122
127
  promise.resolve(create)
123
128
  end
124
129
 
130
+ def destroy
131
+ self.class.destroy(key: @key)
132
+ end
133
+
134
+ def promise_destroy
135
+ self.class.promise_destroy(key: @key)
136
+ end
137
+
138
+ # reload must be implemented by mixin
139
+
140
+ def promise_reload
141
+ Promise.new.resolve(reload)
142
+ end
143
+
125
144
  def save
126
145
  previous_key = self.key
127
146
  instance = instance_exec(&self.class.instance_variable_get(:@_save_block))
@@ -1,5 +1,5 @@
1
1
  module Isomorfeus
2
2
  module Data
3
- VERSION = '2.0.7'
3
+ VERSION = '2.0.11'
4
4
  end
5
5
  end
@@ -168,6 +168,13 @@ module LucidDocument
168
168
  def each(&block)
169
169
  @_raw_fields.each(&block)
170
170
  end
171
+
172
+ def reload
173
+ new_instance = self.class.load(key: @key)
174
+ @_raw_fields = new_instance.fields
175
+ _unchange!
176
+ self
177
+ end
171
178
  end # RUBY_ENGINE
172
179
  end
173
180
  end
@@ -215,6 +215,13 @@ module LucidObject
215
215
  def each(&block)
216
216
  @_raw_attributes.each(&block)
217
217
  end
218
+
219
+ def reload
220
+ new_instance = self.class.load(key: @key)
221
+ @_raw_attributes = new_instance.attributes
222
+ _unchange!
223
+ self
224
+ end
218
225
  end # RUBY_ENGINE
219
226
  end
220
227
  end
@@ -5,20 +5,23 @@ module LucidQuery
5
5
 
6
6
  if RUBY_ENGINE == 'opal'
7
7
  base.instance_exec do
8
- def execute(**props)
9
- props[:query_result_instance] = LucidQueryResult.new
8
+ def execute(key: nil, **props)
9
+ props[:query_result_instance] = LucidQueryResult.new(key: key)
10
10
  promise_execute(props) unless props[:query_result_instance].loaded?
11
11
  props[:query_result_instance]
12
12
  end
13
13
 
14
- def promise_execute(**props)
14
+ def promise_execute(key: nil, **props)
15
15
  query_result_instance = props.delete(:query_result_instance)
16
- query_result_instance = LucidQueryResult.new unless query_result_instance
16
+ query_result_instance = LucidQueryResult.new(key: key) unless query_result_instance
17
+
18
+ return Promise.new.resolve(query_result_instance) if query_result_instance.loaded?
19
+
17
20
  props.each_key do |prop_name|
18
21
  Isomorfeus.raise_error(message: "#{self.to_s} No such query prop declared: '#{prop_name}'!") unless declared_props.key?(prop_name)
19
22
  end
20
23
  props = validated_props(props)
21
- props[:query_result_instance_key] = query_result_instance.key
24
+ props[:key] = query_result_instance.key
22
25
  Isomorfeus::Transport.promise_send_path( 'Isomorfeus::Data::Handler::Generic', self.name, :query, props).then do |agent|
23
26
  if agent.processed
24
27
  agent.result
@@ -50,10 +53,9 @@ module LucidQuery
50
53
  end
51
54
 
52
55
  def execute(**props)
53
- query_result_instance_key = props.delete(:query_result_instance_key)
54
- query_result = LucidQueryResult.new(key: query_result_instance_key)
55
- query_result.result_set = self.new(**props).instance_exec(&@_query_block)
56
- query_result
56
+ key = props.delete(:key)
57
+ result_set = self.new(**props).instance_exec(&@_query_block)
58
+ LucidQueryResult.new(key: key, result_set: result_set)
57
59
  end
58
60
 
59
61
  def execute_query(&block)
@@ -14,7 +14,7 @@ class LucidQueryResult
14
14
  end
15
15
 
16
16
  if RUBY_ENGINE == 'opal'
17
- def initialize(key: nil, result_set: {})
17
+ def initialize(key: nil, result_set: nil, _loading: false)
18
18
  @class_name = 'LucidQueryResult'
19
19
  @key = key ? key.to_s : self.object_id.to_s
20
20
  @result_set = result_set
@@ -39,17 +39,13 @@ class LucidQueryResult
39
39
  end
40
40
  alias has_key? key?
41
41
 
42
- def result_set=(r)
43
- @result_set = r
44
- end
45
-
46
42
  def method_missing(accessor_name, *args, &block)
47
43
  sid_or_array = if @result_set
48
- @result_set[accessor_name]
49
- else
50
- stored_results = Redux.fetch_by_path(:data_state, @class_name, @key)
51
- stored_results.JS[accessor_name] if stored_results
52
- end
44
+ @result_set[accessor_name]
45
+ else
46
+ stored_results = Redux.fetch_by_path(:data_state, @class_name, @key)
47
+ stored_results.JS[accessor_name] if stored_results
48
+ end
53
49
  Isomorfeus.raise_error(message: "#{@class_name}: no such thing '#{accessor_name}' in the results!") unless sid_or_array
54
50
  if stored_results.JS['_is_array_']
55
51
  sid_or_array.map { |sid| Isomorfeus.instance_from_sid(sid) }
@@ -58,7 +54,7 @@ class LucidQueryResult
58
54
  end
59
55
  end
60
56
  else
61
- def initialize(key: nil, result_set: {})
57
+ def initialize(key: nil, result_set: nil)
62
58
  @class_name = 'LucidQueryResult'
63
59
  @key = key ? key.to_s : self.object_id.to_s
64
60
  @result_set = result_set.nil? ? {} : result_set
@@ -74,10 +70,6 @@ class LucidQueryResult
74
70
  end
75
71
  alias has_key? key?
76
72
 
77
- def result_set=(r)
78
- @result_set = r
79
- end
80
-
81
73
  def method_missing(accessor_name, *args, &block)
82
74
  Isomorfeus.raise_error(message: "#{@class_name}: no such thing '#{accessor_name}' in the results!") unless @result_set.key?(accessor_name)
83
75
  @result_set[accessor_name]
data/opal/uri/generic.rb CHANGED
@@ -12,7 +12,7 @@ module URI
12
12
  :path, :opaque,
13
13
  :query,
14
14
  :fragment
15
- ].freeze
15
+ ]
16
16
 
17
17
  def initialize(scheme,
18
18
  userinfo, host, port, registry,
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.0.7
4
+ version: 2.0.11
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-01-24 00:00:00.000000000 Z
11
+ date: 2022-01-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.14.6
75
+ version: 0.14.7
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.14.6
82
+ version: 0.14.7
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: isomorfeus-ferret
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -114,14 +114,14 @@ dependencies:
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 10.6.13
117
+ version: 10.6.23
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: 10.6.13
124
+ version: 10.6.23
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: isomorfeus-redux
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -142,28 +142,28 @@ dependencies:
142
142
  requirements:
143
143
  - - '='
144
144
  - !ruby/object:Gem::Version
145
- version: 2.0.7
145
+ version: 2.0.11
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: 2.0.7
152
+ version: 2.0.11
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: isomorfeus
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
157
  - - '='
158
158
  - !ruby/object:Gem::Version
159
- version: 2.0.7
159
+ version: 2.0.11
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
164
  - - '='
165
165
  - !ruby/object:Gem::Version
166
- version: 2.0.7
166
+ version: 2.0.11
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: rake
169
169
  requirement: !ruby/object:Gem::Requirement