hyper-store 0.2.3 → 0.99.0

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.
data/Rakefile CHANGED
@@ -3,4 +3,9 @@ require "rspec/core/rake_task"
3
3
 
4
4
  RSpec::Core::RakeTask.new(:spec)
5
5
 
6
+ namespace :spec do
7
+ task :prepare do
8
+ end
9
+ end
10
+
6
11
  task :default => :spec
data/hyper-store.gemspec CHANGED
@@ -6,36 +6,38 @@ require 'hyper-store/version'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = 'hyper-store'
8
8
  spec.version = HyperStore::VERSION
9
- spec.authors = ['catmando', 'adamcreekroad']
10
- spec.email = ['mitch@catprint.com']
11
-
9
+ spec.authors = ['Mitch VanDuyn', 'Adam Creekroad', 'Jan Biedermann']
10
+ spec.email = ['mitch@catprint.com', 'jan@kursator.com']
12
11
  spec.summary = 'Flux Stores and more for Hyperloop'
13
- spec.homepage = 'https://ruby-hyperloop.io'
12
+ spec.homepage = 'https://ruby-hyperloop.org'
14
13
  spec.license = 'MIT'
14
+ # spec.metadata = {
15
+ # "homepage_uri" => 'http://ruby-hyperloop.org',
16
+ # "source_code_uri" => 'https://github.com/ruby-hyperloop/hyper-component'
17
+ # }
15
18
 
16
-
17
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
19
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(gemfiles|spec)/}) }
18
20
  spec.bindir = 'exe'
19
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
22
  spec.require_paths = ['lib']
21
23
 
22
- spec.add_dependency 'hyperloop-config', '>= 0.9.2'
23
- spec.add_development_dependency 'bundler', '~> 1.12'
24
- #spec.add_development_dependency 'hyper-react', '>= 0.12.0'
25
- spec.add_development_dependency 'hyper-spec'
24
+ spec.add_dependency 'hyperloop-config', HyperStore::VERSION
25
+ spec.add_dependency 'opal', '>= 0.11.0', '< 0.12.0'
26
+ spec.add_development_dependency 'bundler'
27
+ spec.add_development_dependency 'chromedriver-helper'
28
+ spec.add_development_dependency 'hyper-component', HyperStore::VERSION
29
+ spec.add_development_dependency 'hyper-spec', HyperStore::VERSION
26
30
  spec.add_development_dependency 'listen'
27
- spec.add_development_dependency 'opal'
28
- spec.add_development_dependency 'opal-browser'
29
- spec.add_development_dependency 'opal-rails'
31
+ spec.add_development_dependency 'mini_racer', '~> 0.1.15'
32
+ spec.add_development_dependency 'opal-browser', '~> 0.2.0'
33
+ spec.add_development_dependency 'opal-rails', '~> 0.9.4'
30
34
  spec.add_development_dependency 'pry-byebug'
31
- spec.add_development_dependency 'rails'
32
- spec.add_development_dependency 'rake', '~> 10.0'
33
- spec.add_development_dependency 'react-rails', '< 1.10.0'
34
- spec.add_development_dependency 'rspec'
35
- spec.add_development_dependency 'rspec-steps'
35
+ spec.add_development_dependency 'puma'
36
+ spec.add_development_dependency 'rails', '>= 4.0.0'
37
+ spec.add_development_dependency 'rake'
38
+ spec.add_development_dependency 'react-rails', '>= 2.4.0', '< 2.5.0'
39
+ spec.add_development_dependency 'rspec', '~> 3.7.0'
40
+ spec.add_development_dependency 'rspec-steps', '~> 2.1.1'
41
+ spec.add_development_dependency 'rubocop', '~> 0.51.0'
36
42
  spec.add_development_dependency 'sqlite3'
37
- spec.add_development_dependency 'hyper-react'
38
-
39
- # Keep linter-rubocop happy
40
- spec.add_development_dependency 'rubocop'
41
43
  end
@@ -67,7 +67,6 @@ module HyperStore
67
67
 
68
68
  def add_method(klass, method_name, opts = {})
69
69
  define_method(:"#{method_name}") do
70
- #puts "**************** args = #{args}"
71
70
  from = opts[:scope] == :shared ? klass.state.__from__ : @__from__
72
71
  React::State.get_state(from, method_name.to_s)
73
72
  end
@@ -48,7 +48,7 @@ module HyperStore
48
48
  def validate_initializer(initial_value, klass, opts) # rubocop:disable Metrics/MethodLength
49
49
  # If we pass in the name as a hash with a value ex: state foo: :bar,
50
50
  # we just put that value inside a Proc and return that
51
- if initial_value
51
+ if initial_value != nil
52
52
  dup_or_return_intial_value(initial_value)
53
53
  # If we pass in the initialize option
54
54
  elsif opts[:initializer]
@@ -1,3 +1,3 @@
1
1
  module HyperStore
2
- VERSION = '0.2.3'
2
+ VERSION = '0.99.0'
3
3
  end
data/lib/react/state.rb CHANGED
@@ -22,7 +22,7 @@ module React
22
22
  def set_state2(object, name, value, updates, exclusions = nil)
23
23
  # set object's name state to value, tell all observers it has changed.
24
24
  # Observers must implement update_react_js_state
25
- object_needs_notification = object.respond_to? :update_react_js_state
25
+ object_needs_notification = object.respond_to?(:update_react_js_state)
26
26
  observers_by_name[object][name].dup.each do |observer|
27
27
  next if exclusions && exclusions.include?(observer)
28
28
  updates[observer] += [object, name, value]
@@ -47,8 +47,18 @@ module React
47
47
  states[object][name]
48
48
  end
49
49
 
50
+ # ReactDOM.unstable_batchedUpdates does not seem to improve things here, ill leave it here commented for reference
51
+ # and later investigation
52
+ #if `ReactDOM.unstable_batchedUpdates !== undefined`
53
+ # %x{
54
+ # ReactDOM.unstable_batchedUpdates(function(){
55
+ # #{updates.each { |observer, args| observer.update_react_js_state(*args) }}
56
+ # });
57
+ # }
58
+ #else # run the other one
50
59
  def set_state(object, name, value, delay=ALWAYS_UPDATE_STATE_AFTER_RENDER)
51
60
  states[object][name] = value
61
+ delay = false if object.respond_to?(:set_state_synchronously?) && object.set_state_synchronously?
52
62
  if delay || @bulk_update_flag
53
63
  @delayed_updates ||= Hash.new { |h, k| h[k] = {} }
54
64
  @delayed_updates[object][name] = [value, Set.new]
@@ -72,25 +82,6 @@ module React
72
82
  value
73
83
  end
74
84
 
75
- def notify_observers(object, name, value)
76
- object_needs_notification = object.respond_to? :update_react_js_state
77
- observers_by_name[object][name].dup.each do |observer|
78
- observer.update_react_js_state(object, name, value)
79
- object_needs_notification = false if object == observer
80
- end
81
- object.update_react_js_state(nil, name, value) if object_needs_notification
82
- end
83
-
84
- def notify_observers_after_thread_completes(object, name, value)
85
- (@delayed_updates ||= []) << [object, name, value]
86
- @delayed_updater ||= after(0) do
87
- delayed_updates = @delayed_updates
88
- @delayed_updates = []
89
- @delayed_updater = nil
90
- delayed_updates.each { |args| notify_observers(*args) }
91
- end
92
- end
93
-
94
85
  def will_be_observing?(object, name, current_observer)
95
86
  current_observer && new_observers[current_observer][object].include?(name)
96
87
  end
@@ -126,11 +117,6 @@ module React
126
117
  end
127
118
 
128
119
  def set_state_context_to(observer, rendering = nil) # wrap all execution that may set or get states in a block so we know which observer is executing
129
- if `typeof Opal.global.reactive_ruby_timing !== 'undefined'`
130
- @nesting_level = (@nesting_level || 0) + 1
131
- start_time = Time.now.to_f
132
- observer_name = (observer.class.respond_to?(:name) ? observer.class.name : observer.to_s) rescue "object:#{observer.object_id}"
133
- end
134
120
  saved_current_observer = @current_observer
135
121
  @current_observer = observer
136
122
  @rendering_level += 1 if rendering
@@ -139,7 +125,6 @@ module React
139
125
  ensure
140
126
  @current_observer = saved_current_observer
141
127
  @rendering_level -= 1 if rendering
142
- @nesting_level = [0, @nesting_level - 1].max if `typeof Opal.global.reactive_ruby_timing !== 'undefined'`
143
128
  return_value
144
129
  end
145
130
 
metadata CHANGED
@@ -1,46 +1,53 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hyper-store
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.99.0
5
5
  platform: ruby
6
6
  authors:
7
- - catmando
8
- - adamcreekroad
7
+ - Mitch VanDuyn
8
+ - Adam Creekroad
9
+ - Jan Biedermann
9
10
  autorequire:
10
11
  bindir: exe
11
12
  cert_chain: []
12
- date: 2017-04-24 00:00:00.000000000 Z
13
+ date: 2018-09-24 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: hyperloop-config
16
17
  requirement: !ruby/object:Gem::Requirement
17
18
  requirements:
18
- - - ">="
19
+ - - '='
19
20
  - !ruby/object:Gem::Version
20
- version: 0.9.2
21
+ version: 0.99.0
21
22
  type: :runtime
22
23
  prerelease: false
23
24
  version_requirements: !ruby/object:Gem::Requirement
24
25
  requirements:
25
- - - ">="
26
+ - - '='
26
27
  - !ruby/object:Gem::Version
27
- version: 0.9.2
28
+ version: 0.99.0
28
29
  - !ruby/object:Gem::Dependency
29
- name: bundler
30
+ name: opal
30
31
  requirement: !ruby/object:Gem::Requirement
31
32
  requirements:
32
- - - "~>"
33
+ - - ">="
33
34
  - !ruby/object:Gem::Version
34
- version: '1.12'
35
- type: :development
35
+ version: 0.11.0
36
+ - - "<"
37
+ - !ruby/object:Gem::Version
38
+ version: 0.12.0
39
+ type: :runtime
36
40
  prerelease: false
37
41
  version_requirements: !ruby/object:Gem::Requirement
38
42
  requirements:
39
- - - "~>"
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: 0.11.0
46
+ - - "<"
40
47
  - !ruby/object:Gem::Version
41
- version: '1.12'
48
+ version: 0.12.0
42
49
  - !ruby/object:Gem::Dependency
43
- name: hyper-spec
50
+ name: bundler
44
51
  requirement: !ruby/object:Gem::Requirement
45
52
  requirements:
46
53
  - - ">="
@@ -54,7 +61,7 @@ dependencies:
54
61
  - !ruby/object:Gem::Version
55
62
  version: '0'
56
63
  - !ruby/object:Gem::Dependency
57
- name: listen
64
+ name: chromedriver-helper
58
65
  requirement: !ruby/object:Gem::Requirement
59
66
  requirements:
60
67
  - - ">="
@@ -68,35 +75,35 @@ dependencies:
68
75
  - !ruby/object:Gem::Version
69
76
  version: '0'
70
77
  - !ruby/object:Gem::Dependency
71
- name: opal
78
+ name: hyper-component
72
79
  requirement: !ruby/object:Gem::Requirement
73
80
  requirements:
74
- - - ">="
81
+ - - '='
75
82
  - !ruby/object:Gem::Version
76
- version: '0'
83
+ version: 0.99.0
77
84
  type: :development
78
85
  prerelease: false
79
86
  version_requirements: !ruby/object:Gem::Requirement
80
87
  requirements:
81
- - - ">="
88
+ - - '='
82
89
  - !ruby/object:Gem::Version
83
- version: '0'
90
+ version: 0.99.0
84
91
  - !ruby/object:Gem::Dependency
85
- name: opal-browser
92
+ name: hyper-spec
86
93
  requirement: !ruby/object:Gem::Requirement
87
94
  requirements:
88
- - - ">="
95
+ - - '='
89
96
  - !ruby/object:Gem::Version
90
- version: '0'
97
+ version: 0.99.0
91
98
  type: :development
92
99
  prerelease: false
93
100
  version_requirements: !ruby/object:Gem::Requirement
94
101
  requirements:
95
- - - ">="
102
+ - - '='
96
103
  - !ruby/object:Gem::Version
97
- version: '0'
104
+ version: 0.99.0
98
105
  - !ruby/object:Gem::Dependency
99
- name: opal-rails
106
+ name: listen
100
107
  requirement: !ruby/object:Gem::Requirement
101
108
  requirements:
102
109
  - - ">="
@@ -110,63 +117,63 @@ dependencies:
110
117
  - !ruby/object:Gem::Version
111
118
  version: '0'
112
119
  - !ruby/object:Gem::Dependency
113
- name: pry-byebug
120
+ name: mini_racer
114
121
  requirement: !ruby/object:Gem::Requirement
115
122
  requirements:
116
- - - ">="
123
+ - - "~>"
117
124
  - !ruby/object:Gem::Version
118
- version: '0'
125
+ version: 0.1.15
119
126
  type: :development
120
127
  prerelease: false
121
128
  version_requirements: !ruby/object:Gem::Requirement
122
129
  requirements:
123
- - - ">="
130
+ - - "~>"
124
131
  - !ruby/object:Gem::Version
125
- version: '0'
132
+ version: 0.1.15
126
133
  - !ruby/object:Gem::Dependency
127
- name: rails
134
+ name: opal-browser
128
135
  requirement: !ruby/object:Gem::Requirement
129
136
  requirements:
130
- - - ">="
137
+ - - "~>"
131
138
  - !ruby/object:Gem::Version
132
- version: '0'
139
+ version: 0.2.0
133
140
  type: :development
134
141
  prerelease: false
135
142
  version_requirements: !ruby/object:Gem::Requirement
136
143
  requirements:
137
- - - ">="
144
+ - - "~>"
138
145
  - !ruby/object:Gem::Version
139
- version: '0'
146
+ version: 0.2.0
140
147
  - !ruby/object:Gem::Dependency
141
- name: rake
148
+ name: opal-rails
142
149
  requirement: !ruby/object:Gem::Requirement
143
150
  requirements:
144
151
  - - "~>"
145
152
  - !ruby/object:Gem::Version
146
- version: '10.0'
153
+ version: 0.9.4
147
154
  type: :development
148
155
  prerelease: false
149
156
  version_requirements: !ruby/object:Gem::Requirement
150
157
  requirements:
151
158
  - - "~>"
152
159
  - !ruby/object:Gem::Version
153
- version: '10.0'
160
+ version: 0.9.4
154
161
  - !ruby/object:Gem::Dependency
155
- name: react-rails
162
+ name: pry-byebug
156
163
  requirement: !ruby/object:Gem::Requirement
157
164
  requirements:
158
- - - "<"
165
+ - - ">="
159
166
  - !ruby/object:Gem::Version
160
- version: 1.10.0
167
+ version: '0'
161
168
  type: :development
162
169
  prerelease: false
163
170
  version_requirements: !ruby/object:Gem::Requirement
164
171
  requirements:
165
- - - "<"
172
+ - - ">="
166
173
  - !ruby/object:Gem::Version
167
- version: 1.10.0
174
+ version: '0'
168
175
  - !ruby/object:Gem::Dependency
169
- name: rspec
176
+ name: puma
170
177
  requirement: !ruby/object:Gem::Requirement
171
178
  requirements:
172
179
  - - ">="
@@ -180,21 +187,21 @@ dependencies:
180
187
  - !ruby/object:Gem::Version
181
188
  version: '0'
182
189
  - !ruby/object:Gem::Dependency
183
- name: rspec-steps
190
+ name: rails
184
191
  requirement: !ruby/object:Gem::Requirement
185
192
  requirements:
186
193
  - - ">="
187
194
  - !ruby/object:Gem::Version
188
- version: '0'
195
+ version: 4.0.0
189
196
  type: :development
190
197
  prerelease: false
191
198
  version_requirements: !ruby/object:Gem::Requirement
192
199
  requirements:
193
200
  - - ">="
194
201
  - !ruby/object:Gem::Version
195
- version: '0'
202
+ version: 4.0.0
196
203
  - !ruby/object:Gem::Dependency
197
- name: sqlite3
204
+ name: rake
198
205
  requirement: !ruby/object:Gem::Requirement
199
206
  requirements:
200
207
  - - ">="
@@ -208,21 +215,69 @@ dependencies:
208
215
  - !ruby/object:Gem::Version
209
216
  version: '0'
210
217
  - !ruby/object:Gem::Dependency
211
- name: hyper-react
218
+ name: react-rails
212
219
  requirement: !ruby/object:Gem::Requirement
213
220
  requirements:
214
221
  - - ">="
215
222
  - !ruby/object:Gem::Version
216
- version: '0'
223
+ version: 2.4.0
224
+ - - "<"
225
+ - !ruby/object:Gem::Version
226
+ version: 2.5.0
217
227
  type: :development
218
228
  prerelease: false
219
229
  version_requirements: !ruby/object:Gem::Requirement
220
230
  requirements:
221
231
  - - ">="
222
232
  - !ruby/object:Gem::Version
223
- version: '0'
233
+ version: 2.4.0
234
+ - - "<"
235
+ - !ruby/object:Gem::Version
236
+ version: 2.5.0
237
+ - !ruby/object:Gem::Dependency
238
+ name: rspec
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - "~>"
242
+ - !ruby/object:Gem::Version
243
+ version: 3.7.0
244
+ type: :development
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - "~>"
249
+ - !ruby/object:Gem::Version
250
+ version: 3.7.0
251
+ - !ruby/object:Gem::Dependency
252
+ name: rspec-steps
253
+ requirement: !ruby/object:Gem::Requirement
254
+ requirements:
255
+ - - "~>"
256
+ - !ruby/object:Gem::Version
257
+ version: 2.1.1
258
+ type: :development
259
+ prerelease: false
260
+ version_requirements: !ruby/object:Gem::Requirement
261
+ requirements:
262
+ - - "~>"
263
+ - !ruby/object:Gem::Version
264
+ version: 2.1.1
224
265
  - !ruby/object:Gem::Dependency
225
266
  name: rubocop
267
+ requirement: !ruby/object:Gem::Requirement
268
+ requirements:
269
+ - - "~>"
270
+ - !ruby/object:Gem::Version
271
+ version: 0.51.0
272
+ type: :development
273
+ prerelease: false
274
+ version_requirements: !ruby/object:Gem::Requirement
275
+ requirements:
276
+ - - "~>"
277
+ - !ruby/object:Gem::Version
278
+ version: 0.51.0
279
+ - !ruby/object:Gem::Dependency
280
+ name: sqlite3
226
281
  requirement: !ruby/object:Gem::Requirement
227
282
  requirements:
228
283
  - - ">="
@@ -238,16 +293,15 @@ dependencies:
238
293
  description:
239
294
  email:
240
295
  - mitch@catprint.com
296
+ - jan@kursator.com
241
297
  executables: []
242
298
  extensions: []
243
299
  extra_rdoc_files: []
244
300
  files:
245
301
  - ".gitignore"
246
- - ".rubocop.yml"
247
- - CODE_OF_CONDUCT.md
302
+ - ".travis.yml"
303
+ - DOCS.md
248
304
  - Gemfile
249
- - Gemfile.lock
250
- - LICENSE.txt
251
305
  - README.md
252
306
  - Rakefile
253
307
  - bin/console
@@ -266,7 +320,7 @@ files:
266
320
  - lib/hyperloop/store/mixin.rb
267
321
  - lib/react/observable.rb
268
322
  - lib/react/state.rb
269
- homepage: https://ruby-hyperloop.io
323
+ homepage: https://ruby-hyperloop.org
270
324
  licenses:
271
325
  - MIT
272
326
  metadata: {}
@@ -286,7 +340,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
286
340
  version: '0'
287
341
  requirements: []
288
342
  rubyforge_project:
289
- rubygems_version: 2.5.1
343
+ rubygems_version: 2.7.7
290
344
  signing_key:
291
345
  specification_version: 4
292
346
  summary: Flux Stores and more for Hyperloop