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 +4 -4
- data/.gitignore +4 -1
- data/hyper-state.gemspec +6 -7
- data/lib/hyper-state.rb +1 -0
- data/lib/hyperstack/internal/callbacks.rb +21 -12
- data/lib/hyperstack/internal/state/mapper.rb +16 -3
- data/lib/hyperstack/internal/state/variable.rb +176 -0
- data/lib/hyperstack/state/observable.rb +11 -4
- data/lib/hyperstack/state/version.rb +1 -1
- data/notes.md +3 -3
- metadata +32 -54
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: acfff47e32791c6d2f2bb0d4f2b0f171db4a0b041f45ff8424d5695cc515a4cf
|
4
|
+
data.tar.gz: 62c00f7a40cd804b285d72b31465946498e5e4cd842daca9ac07b9d5fc9754cd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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.
|
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', '
|
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', '>=
|
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.
|
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
|
-
|
16
|
-
|
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,
|
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
|
-
|
31
|
-
send(wrapper_name).push
|
32
|
-
Hotloader.
|
33
|
-
|
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
|
-
@
|
211
|
-
|
212
|
-
|
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
|
15
|
-
result = block.call
|
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 |*
|
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
|
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
|
data/notes.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
typically we see this:
|
2
2
|
|
3
|
-
`State.
|
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.
|
69
|
+
State::Variable.get(self, self)
|
70
70
|
end
|
71
71
|
|
72
72
|
def mutated!
|
73
|
-
State.
|
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.
|
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:
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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-
|
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-
|
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:
|
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:
|
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:
|
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:
|
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
|
-
|
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
|