isomorfeus-redux 4.1.13 → 4.1.14

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: 8d912db358118c0d9f353c8acf7f3b529c982e9d1f798d8e0331da47879cc970
4
- data.tar.gz: 9683d346b2f91ac9ce03d9c9e1e965e018f454fce79fd072cc4f3e58afb7a62f
3
+ metadata.gz: 025b8912245201aa017694533af72e872c0fab88ddfb92b5e635063b54c755b4
4
+ data.tar.gz: 27c35a6d959b591a4466761d60a86bc5bb39b8ad1fbeeba8fcb2b8ba69a91459
5
5
  SHA512:
6
- metadata.gz: b67e553f57b28e9363e5627ed4cdb27b2f4ff540cd918363ace1a19a27de960403e98cef0fa652ea34c9447efe61a0396bdb317f6eabfd949e88a7cc5c48d65a
7
- data.tar.gz: 6129c5401a995ec02c5eabee7be2b4fdd0a8188bdcdaa79fa93fcbc7879dae42f6b018ad6cde58c97e27469b886c58a27df9188950a9e70d30ee6e67010bf6d6
6
+ metadata.gz: f57f256c46df5c13c3ed94cbf4cb5649186130eeb9b9fa9fa021adfadc730e9a737a90a0dab41857be3f78db7060b30c874c7c8f64385d1d04e179d158aec18e
7
+ data.tar.gz: 4cb517c3356c24f4b76186a14d189e4f169dfeb6f804fc70c40324e206abeaf920eecf96b7591ace34d5d4abfa52e2b6701ea897ae934e45a8750cafa6ea65b6
data/lib/redux/store.rb CHANGED
@@ -2,99 +2,103 @@ module Redux
2
2
  class Store
3
3
  include Native::Wrapper
4
4
 
5
- def self.add_middleware(middleware)
6
- if Isomorfeus.store
7
- `console.warning("Adding middleware after Store initialization may have side effects! Saving state and initializing new store with restored state!")`
8
- middlewares << middleware
9
- preloaded_state = Isomorfeus.store.get_state
10
- init!
11
- else
12
- middlewares << middleware
5
+ class << self
6
+ def add_middleware(middleware)
7
+ if Isomorfeus.store
8
+ `console.warning("Adding middleware after Store initialization may have side effects! Saving state and initializing new store with restored state!")`
9
+ middlewares << middleware
10
+ preloaded_state = Isomorfeus.store.get_state
11
+ init!
12
+ else
13
+ middlewares << middleware
14
+ end
13
15
  end
14
- end
15
16
 
16
- def self.add_reducer(reducer)
17
- if Isomorfeus.store
18
- # if the store has been initalized already, add the reducer to the instance
19
- Isomorfeus.store.add_reducer(reducer)
20
- else
21
- # otherwise just add it to the reducers, so that they will be used when initializing the store
22
- preloaded_state[reducer.keys.first] = {} unless preloaded_state.key?(reducer.keys.first)
23
- reducers.merge!(reducer)
17
+ def add_reducer(reducer)
18
+ if Isomorfeus.store
19
+ # if the store has been initalized already, add the reducer to the instance
20
+ Isomorfeus.store.add_reducer(reducer)
21
+ else
22
+ # otherwise just add it to the reducers, so that they will be used when initializing the store
23
+ preloaded_state[reducer.keys.first] = {} unless preloaded_state.key?(reducer.keys.first)
24
+ reducers.merge!(reducer)
25
+ end
24
26
  end
25
- end
26
27
 
27
- def self.add_reducers(new_reducers)
28
- if Isomorfeus.store
29
- # if the store has been initalized already, add the reducer to the instance
30
- Isomorfeus.store.add_reducers(new_reducers)
31
- else
32
- # otherwise just add it to the reducers, so that they will be used when initializing the store
33
- new_reducers.each do |key, value|
34
- add_reducer(key => value)
28
+ def add_reducers(new_reducers)
29
+ if Isomorfeus.store
30
+ # if the store has been initalized already, add the reducer to the instance
31
+ Isomorfeus.store.add_reducers(new_reducers)
32
+ else
33
+ # otherwise just add it to the reducers, so that they will be used when initializing the store
34
+ new_reducers.each do |key, value|
35
+ add_reducer(key => value)
36
+ end
35
37
  end
36
38
  end
37
- end
38
39
 
39
- # called from Isomorfeus.init
40
- def self.init!
41
- next_reducer = Redux.combine_reducers(@reducers)
42
- if middlewares.any?
43
- enhancer = Redux.apply_middleware(middlewares)
44
- Redux::Store.new(next_reducer, preloaded_state, enhancer)
45
- else
46
- Redux::Store.new(next_reducer, preloaded_state)
40
+ # called from Isomorfeus.init
41
+ def init!
42
+ next_reducer = Redux.combine_reducers(@reducers)
43
+ if middlewares.any?
44
+ enhancer = Redux.apply_middleware(middlewares)
45
+ Redux::Store.new(next_reducer, preloaded_state, enhancer)
46
+ else
47
+ Redux::Store.new(next_reducer, preloaded_state)
48
+ end
47
49
  end
48
- end
49
50
 
50
- def self.middlewares
51
- @middlewares ||= []
52
- end
51
+ def middlewares
52
+ @middlewares ||= []
53
+ end
53
54
 
54
- def self.preloaded_state_merge!(ruby_hash)
55
- preloaded_state.merge!(ruby_hash)
56
- end
55
+ def preloaded_state_merge!(ruby_hash)
56
+ preloaded_state.merge!(ruby_hash)
57
+ end
57
58
 
58
- def self.preloaded_state
59
- @preloaded_state ||= {}
60
- end
59
+ def preloaded_state
60
+ @preloaded_state ||= {}
61
+ end
61
62
 
62
- def self.preloaded_state=(ruby_hash)
63
- @preloaded_state = ruby_hash
64
- end
63
+ def preloaded_state=(ruby_hash)
64
+ @preloaded_state = ruby_hash
65
+ end
65
66
 
66
- def self.reducers
67
- @reducers ||= {}
67
+ def reducers
68
+ @reducers ||= {}
69
+ end
68
70
  end
69
71
 
70
- def initialize(reducer, preloaded_state = `null`, enhancer = `null`)
72
+ def initialize(reducer, preloaded_state = nil, enhancer = nil)
71
73
  @deferred_actions = {}
72
74
  @deferred_dispatcher = nil
73
75
  @last_dispatch_time = Time.now
74
76
  %x{
75
- var compose = (typeof window === 'object' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__) || Opal.global.Redux.compose;
76
- var devext_enhance;
77
- if (typeof window === 'object' && window.__REDUX_DEVTOOLS_EXTENSION__) { devext_enhance = window.__REDUX_DEVTOOLS_EXTENSION__(); }
78
- var real_preloaded_state;
79
- if (typeof preloaded_state.$class === "function" && preloaded_state.$class() == "Hash") {
77
+ var ogre = Opal.global.Redux;
78
+ var compose = (typeof window === 'object' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__) || ogre.compose;
79
+ if (enhancer == nil) { enhancer = null; }
80
+ if (typeof window === 'object' && window.__REDUX_DEVTOOLS_EXTENSION__) {
81
+ var devext_enhance = window.__REDUX_DEVTOOLS_EXTENSION__();
82
+ if (enhancer) { enhancer = compose([enhancer, devext_enhance]); }
83
+ else { enhancer = devext_enhance; }
84
+ }
85
+ if (preloaded_state == nil) {
86
+ preloaded_state = null;
87
+ } else if (typeof preloaded_state.$class === "function" && preloaded_state.$class() == "Hash") {
80
88
  if (preloaded_state.$size() == 0) {
81
- real_preloaded_state = null;
89
+ preloaded_state = null;
82
90
  } else {
83
- real_preloaded_state = preloaded_state.$to_n();
91
+ preloaded_state = preloaded_state.$to_n();
84
92
  }
85
- } else if (preloaded_state == nil) {
86
- real_preloaded_state = null;
87
- } else {
88
- real_preloaded_state = preloaded_state;
89
93
  }
90
- if (enhancer && real_preloaded_state) {
91
- this.native = Opal.global.Redux.createStore(reducer, real_preloaded_state, compose(enhancer));
92
- } else if (real_preloaded_state) {
93
- this.native = Opal.global.Redux.createStore(reducer, real_preloaded_state, devext_enhance);
94
+ if (enhancer && preloaded_state) {
95
+ this.native = ogre.createStore(reducer, preloaded_state, enhancer);
96
+ } else if (preloaded_state) {
97
+ this.native = ogre.createStore(reducer, preloaded_state);
94
98
  } else if (enhancer) {
95
- this.native = Opal.global.Redux.createStore(reducer, compose(enhancer));
99
+ this.native = ogre.createStore(reducer, enhancer);
96
100
  } else {
97
- this.native = Opal.global.Redux.createStore(reducer, devext_enhance);
101
+ this.native = ogre.createStore(reducer);
98
102
  }
99
103
  }
100
104
  end
@@ -114,15 +118,20 @@ module Redux
114
118
  def dispatch(action)
115
119
  %x{
116
120
  if (typeof action.$class === "function" && action.$class() == "Hash") {
117
- this.native.dispatch(action.$to_n());
118
- } else {
119
- this.native.dispatch(action);
121
+ action = action.$to_n();
120
122
  }
123
+ this.native.dispatch(action);
121
124
  }
122
125
  end
123
126
 
124
127
  def get_state
125
- Hash.new(`this.native.getState()`)
128
+ %x{
129
+ let res = this.native.getState();
130
+ if (typeof(res) === 'object' && !Array.isArray(res) && res !== null) {
131
+ return Opal.Hash.$new(res);
132
+ }
133
+ return res;
134
+ }
126
135
  end
127
136
 
128
137
  def collect_and_defer_dispatch(action)
data/lib/redux/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Redux
2
- VERSION = '4.1.13'
2
+ VERSION = '4.1.14'
3
3
  end
data/lib/redux.rb CHANGED
@@ -1,112 +1,118 @@
1
1
  module Redux
2
- def self.create_store(reducer, preloaded_state = nil, enhancer = nil)
3
- Redux::Store.new(reducer, preloaded_state, enhancer)
4
- end
2
+ class << self
3
+ def create_store(reducer, preloaded_state = nil, enhancer = nil)
4
+ Redux::Store.new(reducer, preloaded_state, enhancer)
5
+ end
5
6
 
6
- def self.combine_reducers(reducers)
7
- %x{
8
- var real_reducers;
9
- if (typeof reducers.$class === "function") {
10
- real_reducers = reducers.$to_n();
11
- } else {
12
- real_reducers = reducers;
7
+ def combine_reducers(reducers)
8
+ %x{
9
+ if (typeof reducers.$to_n === "function") {
10
+ reducers = reducers.$to_n();
11
+ }
12
+ return Opal.global.Redux.combineReducers(reducers);
13
13
  }
14
- return Opal.global.Redux.combineReducers(real_reducers);
15
- }
16
- end
14
+ end
17
15
 
18
- def self.apply_middleware(*middlewares)
19
- if middlewares.size == 1
20
- `Opal.global.Redux.applyMiddleware.apply(null, middlewares[0])`
21
- else
22
- `Opal.global.Redux.applyMiddleware.apply(null, middlewares)`
16
+ def apply_middleware(*middlewares)
17
+ if middlewares.size == 1
18
+ `Opal.global.Redux.applyMiddleware.apply(null, middlewares[0])`
19
+ else
20
+ `Opal.global.Redux.applyMiddleware.apply(null, middlewares)`
21
+ end
23
22
  end
24
- end
25
23
 
26
- def self.bind_action_creators(*args)
27
- dispatch = args.pop
28
- `Opal.global.Redux.bindActionCreators(args, dispatch)`
29
- end
24
+ def bind_action_creators(*args)
25
+ dispatch = args.pop
26
+ `Opal.global.Redux.bindActionCreators(args, dispatch)`
27
+ end
30
28
 
31
- def self.compose(*functions)
32
- `Opal.global.Redux.compose(functions)`
33
- end
29
+ def compose(*functions)
30
+ `Opal.global.Redux.compose(functions)`
31
+ end
34
32
 
35
- def self.create_reducer(&block)
36
- %x{
37
- return (function(previous_state, action) {
38
- if (!previous_state) { previous_state = {}; }
39
- var previous_state_hash = Opal.Hash.$new(previous_state);
40
- var new_state_hash = block.$call(previous_state_hash, Opal.Hash.$new(action));
41
- if (previous_state_hash === new_state_hash) { return previous_state; }
42
- if (typeof new_state_hash.$class === "function") { return new_state_hash.$to_n(); }
43
- return previous_state;
44
- });
45
- }
46
- end
33
+ def create_reducer(&block)
34
+ %x{
35
+ return function(previous_state, action) {
36
+ let state = null;
37
+ if (previous_state === null || typeof(previous_state) === 'undefined') { state = nil; }
38
+ else if (typeof(previous_state) === 'object' && !Array.isArray(previous_state)) {
39
+ state = Opal.Hash.$new(previous_state);
40
+ } else { state = previous_state; }
41
+ var new_state = block.$call(state, Opal.Hash.$new(action));
42
+ if (typeof(previous_state) === 'undefined' || previous_state === null) {
43
+ if (typeof(new_state.$to_n) === "function") { return new_state.$to_n(); }
44
+ return new_state;
45
+ }
46
+ if (state === new_state) { return previous_state; }
47
+ if (typeof(new_state.$to_n) === "function") { return new_state.$to_n(); }
48
+ return previous_state;
49
+ };
50
+ }
51
+ end
47
52
 
48
- def self.delete_state_path(state, *path)
49
- size = path.size - 1
50
- set_state_path(state, *path[0..-2], nil)
51
- (2...size).each do |i|
52
- val = get_state_path(state, *path[0..-i])
53
- break if val.keys.size > 1
54
- set_state_path(state, *path[0..-i], nil)
53
+ def delete_state_path(state, *path)
54
+ size = path.size - 1
55
+ set_state_path(state, *path[0..-2], nil)
56
+ (2...size).each do |i|
57
+ val = get_state_path(state, *path[0..-i])
58
+ break if val.keys.size > 1
59
+ set_state_path(state, *path[0..-i], nil)
60
+ end
55
61
  end
56
- end
57
62
 
58
- def self.fetch_by_path(*path)
59
- # get active redux component
60
- %x{
61
- var active_component = Opal.Preact.active_redux_component();
62
- var current_state;
63
- var final_data;
64
- var path_last = path.length - 1;
65
- if (path[path_last].constructor === Array) {
66
- path[path_last] = JSON.stringify(path[path_last]);
67
- }
68
- if (active_component) {
69
- // try to get data from component state or props or store
70
- current_state = active_component.data_access()
71
- if (current_state) {
63
+ def fetch_by_path(*path)
64
+ # get active redux component
65
+ %x{
66
+ var active_component = Opal.Preact.active_redux_component();
67
+ var current_state;
68
+ var final_data;
69
+ var path_last = path.length - 1;
70
+ if (path[path_last].constructor === Array) {
71
+ path[path_last] = JSON.stringify(path[path_last]);
72
+ }
73
+ if (active_component) {
74
+ // try to get data from component state or props or store
75
+ current_state = active_component.data_access()
76
+ if (current_state) {
77
+ final_data = path.reduce(function(prev, curr) { return prev && prev[curr]; }, current_state);
78
+ // if final data doesn't exist, 'null' is returned, so nil or false are ok as final_data
79
+ if (final_data !== null && typeof final_data !== "undefined") { return final_data; }
80
+ }
81
+ } else {
82
+ // try to get data from store
83
+ current_state = Opal.Isomorfeus.store.native.getState();
72
84
  final_data = path.reduce(function(prev, curr) { return prev && prev[curr]; }, current_state);
73
85
  // if final data doesn't exist, 'null' is returned, so nil or false are ok as final_data
74
86
  if (final_data !== null && typeof final_data !== "undefined") { return final_data; }
75
87
  }
76
- } else {
77
- // try to get data from store
78
- current_state = Opal.Isomorfeus.store.native.getState();
79
- final_data = path.reduce(function(prev, curr) { return prev && prev[curr]; }, current_state);
80
- // if final data doesn't exist, 'null' is returned, so nil or false are ok as final_data
81
- if (final_data !== null && typeof final_data !== "undefined") { return final_data; }
88
+ return null;
82
89
  }
83
- return null;
84
- }
85
- end
90
+ end
86
91
 
87
- def self.get_state_path(state, *path)
88
- path.inject(state) do |state_el, path_el|
89
- if state_el.key?(path_el)
90
- state_el[path_el]
91
- else
92
- return nil
92
+ def get_state_path(state, *path)
93
+ path.inject(state) do |state_el, path_el|
94
+ if state_el.key?(path_el)
95
+ state_el[path_el]
96
+ else
97
+ return nil
98
+ end
93
99
  end
94
100
  end
95
- end
96
101
 
97
- def self.set_state_path(state, *path, value)
98
- last_el = path.last
99
- path.inject(state) do |state_el, path_el|
100
- if path_el == last_el
101
- state_el[path_el] = value
102
- state_el[path_el]
103
- elsif !state_el.key?(path_el)
104
- state_el[path_el] = {}
105
- state_el[path_el]
106
- else
107
- state_el[path_el]
102
+ def set_state_path(state, *path, value)
103
+ last_el = path.last
104
+ path.inject(state) do |state_el, path_el|
105
+ if path_el == last_el
106
+ state_el[path_el] = value
107
+ state_el[path_el]
108
+ elsif !state_el.key?(path_el)
109
+ state_el[path_el] = {}
110
+ state_el[path_el]
111
+ else
112
+ state_el[path_el]
113
+ end
108
114
  end
115
+ nil
109
116
  end
110
- nil
111
117
  end
112
118
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: isomorfeus-redux
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.13
4
+ version: 4.1.14
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-08 00:00:00.000000000 Z
11
+ date: 2022-02-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opal
@@ -30,28 +30,28 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.14.8
33
+ version: 0.14.9
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.14.8
40
+ version: 0.14.9
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: isomorfeus-speednode
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.4.8
47
+ version: 0.4.9
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.4.8
54
+ version: 0.4.9
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement