isomorfeus-redux 4.0.4 → 4.0.5

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: 4e09d746effc4c63063225aed58daf7d5d64b4c3e958b9d1838d7d2bf3f6a0c8
4
- data.tar.gz: 1a18a2dadc9879c059d45f00cc66a1025b7fe9d834aa13a9dacac96c8a2d688e
3
+ metadata.gz: 49006acd13e7f948dbb946c3b268efce6e0aa6da59737c38bbfefe0268382f99
4
+ data.tar.gz: 537e3571716389f6a76eb003301f5d34fab219453ba87d49f133bd6b0b23128f
5
5
  SHA512:
6
- metadata.gz: 6e07fe1a3f01bf4fc6adfe3ea766add3f87a5524106e2629af4f63e1c6e3804583c6cda96bf9fd7b2289bf7ffbe862fdf06a66cafbac6d91d6520252c5a3b1b7
7
- data.tar.gz: a3a2b9da7c21199c32d92ff96cbe70b99aa6c08ab13983f3e2e6ab2ce4cd46e9693eb7d1e841eaaa42042ee78abdf0203eef105c1317ba0e8945d203c65dcfd0
6
+ metadata.gz: ae672f889977318b8e4b84f680a79899ddd0fe8d71d8b600451429f0ad3def04dd59ef030e78d3970dfa1ad6fbe77a7185b1381d280fb2d1afb6065a5b1235ba
7
+ data.tar.gz: 58790b372dc6d6ad25a4f28d065559859392c5c9da0930b9e645d37373a74edb219fe0fed5c15ee35b7ad99359e482550f4e46552b370c59a4a4ed9cf7d5bbe5
data/README.md CHANGED
@@ -7,7 +7,7 @@ At the [Isomorfeus Framework Project](http://isomorfeus.com)
7
7
 
8
8
  ## Versioning
9
9
  isomorfeus-redux version follows the Redux version which features and API it implements.
10
- Isomorfeus-redux 4.0.x implements features and the API of Redux 4.0 and should be used with Redux4.0
10
+ Isomorfeus-redux 4.0.x implements features and the API of Redux 4.0 and should be used with Redux 4.0
11
11
 
12
12
  ## Installation
13
13
  To install redux with the matching version:
@@ -27,14 +27,14 @@ require 'isomorfeus-redux'
27
27
  ### Dependencies
28
28
 
29
29
  For full functionality the following are required:
30
- - [Opal ES6 import export](https://github.com/opal/opal/pull/1832)
30
+ - [Opal ES6 import export](https://github.com/opal/opal/pull/1976)
31
31
  - [Opal Webpack Loader](https://github.com/janbiedermann/opal-webpack-loader)
32
32
  - [Opal Autoloader](https://github.com/janbiedermann/opal-autoloader)
33
33
 
34
34
  For the Gemfile:
35
35
  ```ruby
36
- gem 'opal', github: 'janbiedermann/opal', branch: 'es6_import_export'
37
- gem 'opal-webpack-loader', '~> 0.3.7'
36
+ gem 'opal', github: 'janbiedermann/opal', branch: 'es6_modules_1_1'
37
+ gem 'opal-webpack-loader', '~> 0.9.1'
38
38
  gem 'opal-autoloader', '~> 0.0.3'
39
39
  ```
40
40
 
@@ -92,6 +92,7 @@ To get the native store from within Javascript context:
92
92
  ```javascript
93
93
  Opal.Isomorfeus.store.native
94
94
  ```
95
+
95
96
  ### Other Rubyfications
96
97
  - `dispatch` accepts a Ruby Hash
97
98
  - `get_state` returns a Ruby Hash
@@ -102,7 +103,7 @@ Isomorfeus.store.subscribe do
102
103
  end
103
104
  ```
104
105
  ### Setup
105
- This is done automatically within Isomorfeus. If isomorfeus-redux is used in isolation, these methods can be used:
106
+ If isomorfeus-redux is used in isolation, these methods can be used:
106
107
  ```ruby
107
108
  Redux::Store.add_middleware(middleware) # middleware must be Javascript function
108
109
  Redux::Store.init! # initializes the global store
@@ -1,5 +1,4 @@
1
- # taken from https://github.com/ruby-hyperloop/isomorfeus-operation/blob/edge/lib/isomorfeus-operation/promise.rb
2
- # TODO: This is used only server side and may be used by others too and should be a separate gem maybe
1
+ # taken from https://github.com/ruby-hyperloop/hyper-operation/blob/edge/lib/hyper-operation/promise.rb
3
2
 
4
3
  class Promise
5
4
  def self.value(value)
@@ -0,0 +1,19 @@
1
+ module Isomorfeus
2
+ class << self
3
+ attr_reader :store_initialized
4
+ attr_reader :store
5
+
6
+ def init_store
7
+ return if store_initialized
8
+ @store_initialized = true
9
+ force_init_store!
10
+ end
11
+
12
+ def force_init_store!
13
+ # at least one reducer must have been added at this stage
14
+ # this happened in isomorfeus-react.rb, where the component reducers were added
15
+ @store = Redux::Store.init!
16
+ `Opal.Isomorfeus.store = #@store`
17
+ end
18
+ end
19
+ end
@@ -4,7 +4,11 @@ if RUBY_ENGINE == 'opal'
4
4
  require 'redux/version'
5
5
  require 'redux'
6
6
  require 'redux/store'
7
- # store initialization happens in Isomorfeus.init, see isomorfeus-react/lib/isomorfeus/config.rb
7
+ require 'redux/reducers'
8
+ require 'isomorfeus/redux_config'
9
+
10
+ Redux::Reducers::add_application_reducers_to_store
11
+ Isomorfeus.init_store
8
12
  else
9
13
  require 'opal'
10
14
  require 'isomorfeus/promise'
@@ -0,0 +1,21 @@
1
+ module Redux
2
+ module Reducers
3
+ def self.add_application_reducers_to_store
4
+ unless @_application_reducers_added
5
+ @_application_reducers_added = true
6
+ app_reducer = Redux.create_reducer do |prev_state, action|
7
+ case action[:type]
8
+ when 'APPLICATION_STATE'
9
+ new_state = {}.merge!(prev_state) # make a copy of state
10
+ new_state.merge!(action[:name] => action[:value])
11
+ new_state
12
+ else
13
+ prev_state
14
+ end
15
+ end
16
+
17
+ Redux::Store.add_reducers(application_state: app_reducer)
18
+ end
19
+ end
20
+ end
21
+ end
data/lib/redux/store.rb CHANGED
@@ -94,15 +94,13 @@ module Redux
94
94
  end
95
95
 
96
96
  def add_reducer(reducer)
97
- self.class.reducers << reducer
98
- next_reducer = Redux.combine_reducers(*self.class.reducers)
97
+ self.class.reducers.merge!(reducer)
98
+ next_reducer = Redux.combine_reducers(self.class.reducers)
99
99
  self.replace_reducer = next_reducer
100
100
  end
101
101
 
102
102
  def add_reducers(new_reducers)
103
-
104
103
  self.class.reducers.merge!(new_reducers)
105
-
106
104
  next_reducer = Redux.combine_reducers(self.class.reducers)
107
105
  replace_reducer(next_reducer)
108
106
  end
data/lib/redux/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Redux
2
- VERSION = '4.0.4'
2
+ VERSION = '4.0.5'
3
3
  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.0.4
4
+ version: 4.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Biedermann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-05-30 00:00:00.000000000 Z
11
+ date: 2019-06-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opal
@@ -34,7 +34,9 @@ files:
34
34
  - README.md
35
35
  - lib/isomorfeus-redux.rb
36
36
  - lib/isomorfeus/promise.rb
37
+ - lib/isomorfeus/redux_config.rb
37
38
  - lib/redux.rb
39
+ - lib/redux/reducers.rb
38
40
  - lib/redux/store.rb
39
41
  - lib/redux/version.rb
40
42
  homepage: http://isomorfeus.com