hyper-state 1.0.alpha1.1 → 1.0.alpha1.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: eb10ec05b438da9beead09918566a05d03ad119dd9711507ea6073e7dd08bc12
4
- data.tar.gz: 55bff91b14d242a57e1792deafcfe8204ca773c782f918fe005161ab28fac267
3
+ metadata.gz: acfff47e32791c6d2f2bb0d4f2b0f171db4a0b041f45ff8424d5695cc515a4cf
4
+ data.tar.gz: 62c00f7a40cd804b285d72b31465946498e5e4cd842daca9ac07b9d5fc9754cd
5
5
  SHA512:
6
- metadata.gz: 6f44826d393b99865fb6d5501d5beffbf7e01152557e19bd4e5269599b57b14cd52cba54e9de50f8446c10e950403c37d722997094866fe910dc8b5263d58b9a
7
- data.tar.gz: 1bdce0a88d8c6307bea7ca9e1e286f547bc5927daf4eeff744bb06ee8b82fc4366a9baa1eb0753f7bf65f1c4781784a5a8acd1bfa86385867e23fca87d70aff8
6
+ metadata.gz: 8e27eb935d489093c38b53fd05bcb1d03a9b34deeaf1729eb7427916b251f1dcd0b9ea7bec9718003a10f4bd436347f52be6762dad08a4fe11c7b8acc39491d8
7
+ data.tar.gz: bc0b139edc6a1f62f0d16766a7f20590b4a3ca71e54f9e2c9d3ec012e73869159c6e8ef4d6ec9725424a778b3b8e709e0dce068a6dd28097b0ed964b6f7f9ff8
data/.gitignore CHANGED
@@ -11,7 +11,6 @@ capybara-*.html
11
11
  **.orig
12
12
  rerun.txt
13
13
  pickle-email-*.html
14
- Gemfile.lock
15
14
 
16
15
  # TODO Comment out these rules if you are OK with secrets being uploaded to the repo
17
16
  config/initializers/secret_token.rb
@@ -51,3 +50,7 @@ bower.json
51
50
 
52
51
  # ignore IDE files
53
52
  .idea
53
+
54
+ # ignore Gemfile.locks https://yehudakatz.com/2010/12/16/clarifying-the-roles-of-the-gemspec-and-gemfile/
55
+ /spec/test_app/Gemfile.lock
56
+ /Gemfile.lock
data/hyper-state.gemspec CHANGED
@@ -22,26 +22,25 @@ Gem::Specification.new do |spec|
22
22
  spec.require_paths = ['lib']
23
23
 
24
24
  spec.add_dependency 'hyperstack-config', Hyperstack::State::VERSION
25
- spec.add_dependency 'opal', '>= 0.11.0', '< 0.12.0'
25
+
26
26
  spec.add_development_dependency 'bundler'
27
27
  spec.add_development_dependency 'chromedriver-helper'
28
28
  spec.add_development_dependency 'hyper-component', Hyperstack::State::VERSION
29
29
  spec.add_development_dependency 'hyper-spec', Hyperstack::State::VERSION
30
30
  spec.add_development_dependency 'listen'
31
- spec.add_development_dependency 'mini_racer', '~> 0.1.15'
31
+ # spec.add_development_dependency 'mini_racer', '~> 0.2.4'
32
32
  spec.add_development_dependency 'opal-browser', '~> 0.2.0'
33
- spec.add_development_dependency 'opal-rails', '~> 0.9.4'
34
- spec.add_development_dependency 'pry-byebug'
33
+ spec.add_development_dependency 'opal-rails', '>= 0.9.4', '< 2.0'
35
34
  spec.add_development_dependency 'pry-rescue'
35
+ spec.add_development_dependency 'pry-stack_explorer'
36
36
  spec.add_development_dependency 'puma'
37
- spec.add_development_dependency 'rails', '>= 4.0.0'
37
+ spec.add_development_dependency 'rails', ENV['RAILS_VERSION'] || '>= 5.0.0', '< 7.0'
38
38
  spec.add_development_dependency 'rake'
39
39
  spec.add_development_dependency 'react-rails', '>= 2.4.0', '< 2.5.0'
40
40
  spec.add_development_dependency 'rspec', '~> 3.7.0'
41
41
  spec.add_development_dependency 'rspec-rails'
42
42
  spec.add_development_dependency 'rspec-steps', '~> 2.1.1'
43
43
  spec.add_development_dependency 'rubocop', '~> 0.51.0'
44
- spec.add_development_dependency 'sqlite3'
44
+ spec.add_development_dependency 'sqlite3', '~> 1.4.2' # see https://github.com/rails/rails/issues/35153
45
45
  spec.add_development_dependency 'timecop', '~> 0.8.1'
46
-
47
46
  end
data/lib/hyper-state.rb CHANGED
@@ -5,6 +5,7 @@ require 'hyperstack/internal/callbacks'
5
5
  require 'hyperstack/internal/auto_unmount'
6
6
 
7
7
  require 'hyperstack/internal/state/mapper'
8
+ require 'hyperstack/internal/state/variable'
8
9
  require 'hyperstack/internal/auto_unmount'
9
10
  require 'hyperstack/internal/receiver'
10
11
  require 'hyperstack/state/observable'
@@ -3,7 +3,7 @@ module Hyperstack
3
3
  module Callbacks
4
4
  if RUBY_ENGINE != 'opal'
5
5
  class Hyperstack::Hotloader
6
- def self.record(*args); end
6
+ def self.when_file_updates(&block); end
7
7
  end
8
8
  end
9
9
  def self.included(base)
@@ -11,26 +11,31 @@ module Hyperstack
11
11
  end
12
12
 
13
13
  def run_callback(name, *args)
14
- self.class.callbacks_for(name).each do |callback|
15
- if callback.is_a?(Proc)
16
- instance_exec(*args, &callback)
17
- else
18
- send(callback, *args)
19
- end
14
+ self.class.callbacks_for(name).flatten.each do |callback|
15
+ callback = method(callback) unless callback.is_a? Proc
16
+ args = self.class.send("_#{name}_before_call_hook", name, self, callback, *args)
20
17
  end
18
+ args
21
19
  end
22
20
 
23
21
  module ClassMethods
24
- def define_callback(callback_name, &after_define_hook)
22
+ def define_callback(callback_name, before_call_hook: nil, after_define_hook: nil)
25
23
  wrapper_name = "_#{callback_name}_callbacks"
26
24
  define_singleton_method(wrapper_name) do
27
25
  Context.set_var(self, "@#{wrapper_name}", force: true) { [] }
28
26
  end
27
+ before_call_hook ||= lambda do |_name, sself, proc, *args|
28
+ sself.instance_exec(*args, &proc)
29
+ args
30
+ end
31
+ define_singleton_method("_#{callback_name}_before_call_hook", &before_call_hook)
29
32
  define_singleton_method(callback_name) do |*args, &block|
30
- send(wrapper_name).concat(args)
31
- send(wrapper_name).push(block) if block_given?
32
- Hotloader.record(self, "@#{wrapper_name}", 4, *args, block)
33
- after_define_hook.call(*args, &block) if after_define_hook
33
+ args << block if block_given?
34
+ send(wrapper_name).push args
35
+ Hotloader.when_file_updates do
36
+ send(wrapper_name).delete_if { |item| item.equal? args }
37
+ end
38
+ after_define_hook.call(self) if after_define_hook
34
39
  end
35
40
  end
36
41
 
@@ -42,6 +47,10 @@ module Hyperstack
42
47
  []
43
48
  end + send(wrapper_name)
44
49
  end
50
+
51
+ def callbacks?(name)
52
+ callbacks_for(name).any?
53
+ end
45
54
  end
46
55
  end
47
56
  end
@@ -102,6 +102,18 @@ module Hyperstack
102
102
  @bulk_update_flag = saved_bulk_update_flag
103
103
  end
104
104
 
105
+ # React already will batch together updates inside of event handlers
106
+ # so we don't have to, and having Hyperstack batch them outside of the
107
+ # event handler causes INPUT/TEXT/SELECT s not to work properly.
108
+ # This method is called by the Component event wrapper.
109
+ def ignore_bulk_updates(*args)
110
+ saved_ignore_bulk_update_flag = @ignore_bulk_update_flag
111
+ @ignore_bulk_update_flag = true
112
+ yield(*args)
113
+ ensure
114
+ @ignore_bulk_update_flag = saved_ignore_bulk_update_flag
115
+ end
116
+
105
117
  def ignore_mutations
106
118
  saved_ignore_mutations_flag = @ignore_mutations
107
119
  @ignore_mutations = true
@@ -207,9 +219,10 @@ module Hyperstack
207
219
  # case that the object being updated is themselves.
208
220
 
209
221
  def delay_updates?(object)
210
- @bulk_update_flag ||
211
- (Hyperstack.on_client? &&
212
- (@immediate_update != @current_observer || @current_observer != object))
222
+ return false if @ignore_bulk_update_flag
223
+ return true if @bulk_update_flag
224
+ return false unless Hyperstack.on_client?
225
+ (@immediate_update != @current_observer || @current_observer != object)
213
226
  end
214
227
 
215
228
  # schedule_delayed_updater adds a new set to the
@@ -0,0 +1,176 @@
1
+ module Hyperstack
2
+ module Internal
3
+ module State
4
+ module Variable
5
+ class << self
6
+ def legacy_map
7
+ @legacy_map ||= Hash.new { |h, k| h[k] = Hash.new { |h2, k2| h2[k2] = Array.new }}
8
+ end
9
+
10
+ def get(obj, name)
11
+ map_object = legacy_map[obj][name]
12
+ Hyperstack::Internal::State::Mapper.observed!(map_object.object_id)
13
+ map_object[0]
14
+ end
15
+
16
+ def set(obj, name, value, _x = nil)
17
+ # _x is some legacy function, which I think queued up state changes to the end
18
+ # which is perhaps now the default.
19
+ map_object = legacy_map[obj][name]
20
+ map_object[0] = value
21
+ Hyperstack::Internal::State::Mapper.mutated!(map_object.object_id)
22
+ value
23
+ end
24
+
25
+ def observed?(obj, name)
26
+ map_object = legacy_map[obj][name]
27
+ Hyperstack::Internal::State::Mapper.observed?(map_object.object_id)
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+
35
+ # ALWAYS_UPDATE_STATE_AFTER_RENDER = Hyperstack.on_client? # if on server then we don't wait to update the state
36
+ # @rendering_level = 0
37
+ #
38
+ # class << self
39
+ # attr_reader :current_observer
40
+ #
41
+ # def has_observers?(object, name)
42
+ # !observers_by_name[object][name].empty?
43
+ # end
44
+ #
45
+ # def bulk_update
46
+ # saved_bulk_update_flag = @bulk_update_flag
47
+ # @bulk_update_flag = true
48
+ # yield
49
+ # ensure
50
+ # @bulk_update_flag = saved_bulk_update_flag
51
+ # end
52
+ #
53
+ # def set_state2(object, name, value, updates, exclusions = nil)
54
+ # # set object's name state to value, tell all observers it has changed.
55
+ # # Observers must implement update_react_js_state
56
+ # object_needs_notification = object.respond_to?(:update_react_js_state)
57
+ # observers_by_name[object][name].dup.each do |observer|
58
+ # next if exclusions && exclusions.include?(observer)
59
+ # updates[observer] += [object, name, value]
60
+ # object_needs_notification = false if object == observer
61
+ # end
62
+ # updates[object] += [nil, name, value] if object_needs_notification
63
+ # end
64
+ #
65
+ # def initialize_states(object, initial_values) # initialize objects' name/value pairs
66
+ # states[object].merge!(initial_values || {})
67
+ # end
68
+ #
69
+ # def get_state(object, name, current_observer = @current_observer)
70
+ # # get current value of name for object, remember that the current object depends on this state,
71
+ # # current observer can be overriden with last param
72
+ # if current_observer && !new_observers[current_observer][object].include?(name)
73
+ # new_observers[current_observer][object] << name
74
+ # end
75
+ # if @delayed_updates && @delayed_updates[object][name]
76
+ # @delayed_updates[object][name][1] << current_observer
77
+ # end
78
+ # states[object][name]
79
+ # end
80
+ #
81
+ # # ReactDOM.unstable_batchedUpdates does not seem to improve things here, ill leave it here commented for reference
82
+ # # and later investigation
83
+ # #if `ReactDOM.unstable_batchedUpdates !== undefined`
84
+ # # %x{
85
+ # # ReactDOM.unstable_batchedUpdates(function(){
86
+ # # #{updates.each { |observer, args| observer.update_react_js_state(*args) }}
87
+ # # });
88
+ # # }
89
+ # #else # run the other one
90
+ # def set_state(object, name, value, delay=ALWAYS_UPDATE_STATE_AFTER_RENDER)
91
+ # states[object][name] = value
92
+ # delay = false if object.respond_to?(:set_state_synchronously?) && object.set_state_synchronously?
93
+ # if delay || @bulk_update_flag
94
+ # @delayed_updates ||= Hash.new { |h, k| h[k] = {} }
95
+ # @delayed_updates[object][name] = [value, Set.new]
96
+ # @delayed_updater ||= after(0.001) do
97
+ # delayed_updates = @delayed_updates
98
+ # @delayed_updates = Hash.new { |h, k| h[k] = {} } # could this be nil???
99
+ # @delayed_updater = nil
100
+ # updates = Hash.new { |hash, key| hash[key] = Array.new }
101
+ # delayed_updates.each do |object, name_hash|
102
+ # name_hash.each do |name, value_and_set|
103
+ # set_state2(object, name, value_and_set[0], updates, value_and_set[1])
104
+ # end
105
+ # end
106
+ # updates.each { |observer, args| observer.update_react_js_state(*args) }
107
+ # end
108
+ # elsif @rendering_level == 0
109
+ # updates = Hash.new { |hash, key| hash[key] = Array.new }
110
+ # set_state2(object, name, value, updates)
111
+ # updates.each { |observer, args| observer.update_react_js_state(*args) }
112
+ # end
113
+ # value
114
+ # end
115
+ #
116
+ # def will_be_observing?(object, name, current_observer)
117
+ # current_observer && new_observers[current_observer][object].include?(name)
118
+ # end
119
+ #
120
+ # def is_observing?(object, name, current_observer)
121
+ # current_observer && observers_by_name[object][name].include?(current_observer)
122
+ # end
123
+ #
124
+ # def update_states_to_observe(current_observer = @current_observer) # should be called after the last after_render callback, currently called after components render method
125
+ # raise "update_states_to_observer called outside of watch block" unless current_observer
126
+ # current_observers[current_observer].each do |object, names|
127
+ # names.each do |name|
128
+ # observers_by_name[object][name].delete(current_observer)
129
+ # end
130
+ # end
131
+ # observers = current_observers[current_observer] = new_observers[current_observer]
132
+ # new_observers.delete(current_observer)
133
+ # observers.each do |object, names|
134
+ # names.each do |name|
135
+ # observers_by_name[object][name] << current_observer
136
+ # end
137
+ # end
138
+ # end
139
+ #
140
+ # def remove # call after component is unmounted
141
+ # raise "remove called outside of watch block" unless @current_observer
142
+ # current_observers[@current_observer].each do |object, names|
143
+ # names.each do |name|
144
+ # observers_by_name[object][name].delete(@current_observer)
145
+ # end
146
+ # end
147
+ # current_observers.delete(@current_observer)
148
+ # end
149
+ #
150
+ # 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
151
+ # saved_current_observer = @current_observer
152
+ # @current_observer = observer
153
+ # @rendering_level += 1 if rendering
154
+ # return_value = yield
155
+ # return_value
156
+ # ensure
157
+ # @current_observer = saved_current_observer
158
+ # @rendering_level -= 1 if rendering
159
+ # return_value
160
+ # end
161
+ #
162
+ # def states
163
+ # @states ||= Hash.new { |h, k| h[k] = {} }
164
+ # end
165
+ #
166
+ # [:new_observers, :current_observers, :observers_by_name].each do |method_name|
167
+ # define_method(method_name) do
168
+ # instance_variable_get("@#{method_name}") ||
169
+ # instance_variable_set("@#{method_name}", Hash.new { |h, k| h[k] = Hash.new { |h, k| h[k] = [] } })
170
+ # end
171
+ # end
172
+ # end
173
+ # end
174
+ # end
175
+ # end
176
+ # end
@@ -11,14 +11,21 @@ module Hyperstack
11
11
  base.send(:"define_#{kind}", :receives) do |*args, &block|
12
12
  Internal::Receiver.mount(self, *args, &block)
13
13
  end
14
- base.send(:"define_#{kind}", :observe) do |&block|
15
- result = block.call if block
14
+ base.send(:"define_#{kind}", :observe) do |*args, &block|
15
+ result = block ? block.call : args.last
16
16
  Internal::State::Mapper.observed! self
17
17
  result
18
18
  end
19
- base.send(:"define_#{kind}", :mutate) do |*_args, &block|
19
+ base.send(:"define_#{kind}", :mutate) do |*args, &block|
20
20
  # any args will be ignored thus allowing us to say `mutate @foo = 123, @bar[:x] = 7` etc
21
- result = block.call if block
21
+ result = block ? block.call : args.last
22
+ Internal::State::Mapper.mutated! self
23
+ result
24
+ end
25
+ base.send(:"define_#{kind}", :toggle) do |var|
26
+ # @var = !@var
27
+ var = "@#{var}"
28
+ result = instance_variable_set(var, !instance_variable_get(var))
22
29
  Internal::State::Mapper.mutated! self
23
30
  result
24
31
  end
@@ -1,5 +1,5 @@
1
1
  module Hyperstack
2
2
  module State
3
- VERSION = '1.0.alpha1.1'
3
+ VERSION = '1.0.alpha1.6'
4
4
  end
5
5
  end
data/notes.md CHANGED
@@ -1,6 +1,6 @@
1
1
  typically we see this:
2
2
 
3
- `State.get_state(obj_or_class, key)` and `State.set_state(obj_or_class, key, val)`
3
+ `State::Variable.get(obj_or_class, key)` and `State::Variable.set(obj_or_class, key, val)`
4
4
 
5
5
  we would like to see this:
6
6
 
@@ -66,11 +66,11 @@ internally without reaction
66
66
  so one approach would be to just provide two methods: `observed!` and `mutated!`
67
67
  ```ruby
68
68
  def observed!
69
- State.get_state(self, self)
69
+ State::Variable.get(self, self)
70
70
  end
71
71
 
72
72
  def mutated!
73
- State.set_state(self, self, self)
73
+ State::Variable.set(self, self, self)
74
74
  end
75
75
  ```
76
76
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hyper-state
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.alpha1.1
4
+ version: 1.0.alpha1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mitch VanDuyn
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2018-11-14 00:00:00.000000000 Z
13
+ date: 2021-03-29 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: hyperstack-config
@@ -18,34 +18,14 @@ dependencies:
18
18
  requirements:
19
19
  - - '='
20
20
  - !ruby/object:Gem::Version
21
- version: 1.0.alpha1.1
21
+ version: 1.0.alpha1.6
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - '='
27
27
  - !ruby/object:Gem::Version
28
- version: 1.0.alpha1.1
29
- - !ruby/object:Gem::Dependency
30
- name: opal
31
- requirement: !ruby/object:Gem::Requirement
32
- requirements:
33
- - - ">="
34
- - !ruby/object:Gem::Version
35
- version: 0.11.0
36
- - - "<"
37
- - !ruby/object:Gem::Version
38
- version: 0.12.0
39
- type: :runtime
40
- prerelease: false
41
- version_requirements: !ruby/object:Gem::Requirement
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- version: 0.11.0
46
- - - "<"
47
- - !ruby/object:Gem::Version
48
- version: 0.12.0
28
+ version: 1.0.alpha1.6
49
29
  - !ruby/object:Gem::Dependency
50
30
  name: bundler
51
31
  requirement: !ruby/object:Gem::Requirement
@@ -80,28 +60,28 @@ dependencies:
80
60
  requirements:
81
61
  - - '='
82
62
  - !ruby/object:Gem::Version
83
- version: 1.0.alpha1.1
63
+ version: 1.0.alpha1.6
84
64
  type: :development
85
65
  prerelease: false
86
66
  version_requirements: !ruby/object:Gem::Requirement
87
67
  requirements:
88
68
  - - '='
89
69
  - !ruby/object:Gem::Version
90
- version: 1.0.alpha1.1
70
+ version: 1.0.alpha1.6
91
71
  - !ruby/object:Gem::Dependency
92
72
  name: hyper-spec
93
73
  requirement: !ruby/object:Gem::Requirement
94
74
  requirements:
95
75
  - - '='
96
76
  - !ruby/object:Gem::Version
97
- version: 1.0.alpha1.1
77
+ version: 1.0.alpha1.6
98
78
  type: :development
99
79
  prerelease: false
100
80
  version_requirements: !ruby/object:Gem::Requirement
101
81
  requirements:
102
82
  - - '='
103
83
  - !ruby/object:Gem::Version
104
- version: 1.0.alpha1.1
84
+ version: 1.0.alpha1.6
105
85
  - !ruby/object:Gem::Dependency
106
86
  name: listen
107
87
  requirement: !ruby/object:Gem::Requirement
@@ -116,20 +96,6 @@ dependencies:
116
96
  - - ">="
117
97
  - !ruby/object:Gem::Version
118
98
  version: '0'
119
- - !ruby/object:Gem::Dependency
120
- name: mini_racer
121
- requirement: !ruby/object:Gem::Requirement
122
- requirements:
123
- - - "~>"
124
- - !ruby/object:Gem::Version
125
- version: 0.1.15
126
- type: :development
127
- prerelease: false
128
- version_requirements: !ruby/object:Gem::Requirement
129
- requirements:
130
- - - "~>"
131
- - !ruby/object:Gem::Version
132
- version: 0.1.15
133
99
  - !ruby/object:Gem::Dependency
134
100
  name: opal-browser
135
101
  requirement: !ruby/object:Gem::Requirement
@@ -148,18 +114,24 @@ dependencies:
148
114
  name: opal-rails
149
115
  requirement: !ruby/object:Gem::Requirement
150
116
  requirements:
151
- - - "~>"
117
+ - - ">="
152
118
  - !ruby/object:Gem::Version
153
119
  version: 0.9.4
120
+ - - "<"
121
+ - !ruby/object:Gem::Version
122
+ version: '2.0'
154
123
  type: :development
155
124
  prerelease: false
156
125
  version_requirements: !ruby/object:Gem::Requirement
157
126
  requirements:
158
- - - "~>"
127
+ - - ">="
159
128
  - !ruby/object:Gem::Version
160
129
  version: 0.9.4
130
+ - - "<"
131
+ - !ruby/object:Gem::Version
132
+ version: '2.0'
161
133
  - !ruby/object:Gem::Dependency
162
- name: pry-byebug
134
+ name: pry-rescue
163
135
  requirement: !ruby/object:Gem::Requirement
164
136
  requirements:
165
137
  - - ">="
@@ -173,7 +145,7 @@ dependencies:
173
145
  - !ruby/object:Gem::Version
174
146
  version: '0'
175
147
  - !ruby/object:Gem::Dependency
176
- name: pry-rescue
148
+ name: pry-stack_explorer
177
149
  requirement: !ruby/object:Gem::Requirement
178
150
  requirements:
179
151
  - - ">="
@@ -206,14 +178,20 @@ dependencies:
206
178
  requirements:
207
179
  - - ">="
208
180
  - !ruby/object:Gem::Version
209
- version: 4.0.0
181
+ version: 5.0.0
182
+ - - "<"
183
+ - !ruby/object:Gem::Version
184
+ version: '7.0'
210
185
  type: :development
211
186
  prerelease: false
212
187
  version_requirements: !ruby/object:Gem::Requirement
213
188
  requirements:
214
189
  - - ">="
215
190
  - !ruby/object:Gem::Version
216
- version: 4.0.0
191
+ version: 5.0.0
192
+ - - "<"
193
+ - !ruby/object:Gem::Version
194
+ version: '7.0'
217
195
  - !ruby/object:Gem::Dependency
218
196
  name: rake
219
197
  requirement: !ruby/object:Gem::Requirement
@@ -308,16 +286,16 @@ dependencies:
308
286
  name: sqlite3
309
287
  requirement: !ruby/object:Gem::Requirement
310
288
  requirements:
311
- - - ">="
289
+ - - "~>"
312
290
  - !ruby/object:Gem::Version
313
- version: '0'
291
+ version: 1.4.2
314
292
  type: :development
315
293
  prerelease: false
316
294
  version_requirements: !ruby/object:Gem::Requirement
317
295
  requirements:
318
- - - ">="
296
+ - - "~>"
319
297
  - !ruby/object:Gem::Version
320
- version: '0'
298
+ version: 1.4.2
321
299
  - !ruby/object:Gem::Dependency
322
300
  name: timecop
323
301
  requirement: !ruby/object:Gem::Requirement
@@ -352,6 +330,7 @@ files:
352
330
  - lib/hyperstack/internal/callbacks.rb
353
331
  - lib/hyperstack/internal/receiver.rb
354
332
  - lib/hyperstack/internal/state/mapper.rb
333
+ - lib/hyperstack/internal/state/variable.rb
355
334
  - lib/hyperstack/state/observable.rb
356
335
  - lib/hyperstack/state/observer.rb
357
336
  - lib/hyperstack/state/version.rb
@@ -375,8 +354,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
375
354
  - !ruby/object:Gem::Version
376
355
  version: 1.3.1
377
356
  requirements: []
378
- rubyforge_project:
379
- rubygems_version: 2.7.8
357
+ rubygems_version: 3.0.8
380
358
  signing_key:
381
359
  specification_version: 4
382
360
  summary: Flux Stores and more for Hyperloop