isomorfeus-react 16.12.8 → 16.12.9

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: c5d90a7865eb93c6d4fe0355e0dbaf8e03cae4bb2ebaabf33f78adecd9203f26
4
- data.tar.gz: bbd20f3e1025ae402846b5688677922ba23c54802d9ed87ea36b670282bb1244
3
+ metadata.gz: 7ef15798090505fea9a8a626a0a6b17553a7b09757b61c2ad0c416ad1f4454f2
4
+ data.tar.gz: 9cd4286f75cc58bc7506c14433207f667d8af539588520186b7c4ce7dca89cbe
5
5
  SHA512:
6
- metadata.gz: 3a50131debc40514af9eb558afe63137679d4b16a1b0b08baefa303c27a20ac3d9cc2a669eca9ca5900d1125712eb10bd5d465d6fd716a687aefdf19c8e0e0d6
7
- data.tar.gz: 0ad176660638690cecf5eb8d36152ea567dc3b61af5e193f3fe6f0538830b02cec831d352a3aa69d3fd05984867c06fbe935ec81b252ffb70b14828113d9d7e5
6
+ metadata.gz: afb9834547c4a8cf33a819d0b188d568abfe7a2fbc0373c1eb0c319d5658fb986d3487b01a8a60d28c2f7119e9dcdb49326b83c1b5567441f61de2ae428a6bd3
7
+ data.tar.gz: 1dae5154593d5edc5f04e622994e9d8201230ac47efc46ef7e9da3dc27a6c22e420cb39039b48ec60d14d87a6002a7c9d94a215b7ae2d87f044a54f4eb7a20d3
@@ -131,6 +131,7 @@ else
131
131
  require 'opal'
132
132
  require 'opal-activesupport'
133
133
  require 'opal-zeitwerk'
134
+ require 'opal-webpack-loader'
134
135
  require 'isomorfeus-redux'
135
136
  require 'isomorfeus-speednode'
136
137
  require 'react/version'
@@ -150,8 +151,12 @@ else
150
151
 
151
152
  Isomorfeus.server_side_rendering = true
152
153
 
154
+ # cache
155
+ require 'isomorfeus/thread_local_cache'
153
156
  require 'isomorfeus/react_view_helper'
154
157
 
158
+ Isomorfeus.component_cache_class = Isomorfeus::ThreadLocalCache
159
+
155
160
  Opal.append_path(__dir__.untaint)
156
161
 
157
162
  require 'concurrent'
@@ -111,6 +111,7 @@ module Isomorfeus
111
111
  self.add_client_option(:client_init_after_store_class_names, [])
112
112
  else
113
113
  class << self
114
+ attr_accessor :component_cache_class
114
115
  attr_accessor :server_side_rendering
115
116
  attr_accessor :ssr_hot_asset_url
116
117
  attr_reader :env
@@ -193,7 +193,7 @@ module Isomorfeus
193
193
  private
194
194
 
195
195
  def component_cache
196
- Thread.current[:component_cache] ||= {}
196
+ @_component_cache ||= Isomorfeus.component_cache_class.new
197
197
  end
198
198
  end
199
199
  end
@@ -0,0 +1,21 @@
1
+ module Isomorfeus
2
+ class ThreadLocalCache
3
+ def initialize
4
+ Thread.current[:local_cache] = {}
5
+ end
6
+
7
+ def [](key)
8
+ Thread.current[:local_cache][key]
9
+ end
10
+ alias fetch []
11
+
12
+ def []=(key, value)
13
+ Thread.current[:local_cache][key] = value
14
+ end
15
+ alias store []=
16
+
17
+ def key?(key)
18
+ Thread.current[:local_cache].key?(key)
19
+ end
20
+ end
21
+ end
@@ -76,10 +76,8 @@ module LucidApp
76
76
  oper.active_redux_components.pop();
77
77
  oper.active_components.pop();
78
78
  let children = oper.render_buffer.pop();
79
- if (children.length === 1) { children = children[0]; }
80
- else if (children.length === 0) { children = null; }
81
79
  // console.log("lucid app popping", oper.render_buffer, oper.render_buffer.toString());
82
- return Opal.global.React.createElement(Opal.global.LucidApplicationContext.Provider, { value: this.state.isomorfeus_store_state }, children);
80
+ return Opal.global.React.createElement.apply(this, [Opal.global.LucidApplicationContext.Provider, { value: this.state.isomorfeus_store_state }].concat(children));
83
81
  }
84
82
  data_access() {
85
83
  this.state.isomorfeus_store_state;
@@ -78,7 +78,7 @@ module React
78
78
  let children;
79
79
  let native_props = null;
80
80
  if (string_child) {
81
- children = string_child;
81
+ children = [string_child];
82
82
  } else if (block && block !== nil) {
83
83
  operabu.push([]);
84
84
  // console.log("internal_render pushed", Opal.React.render_buffer, Opal.React.render_buffer.toString());
@@ -88,11 +88,9 @@ module React
88
88
  }
89
89
  // console.log("internal_render popping", Opal.React.render_buffer, Opal.React.render_buffer.toString());
90
90
  children = operabu.pop();
91
- if (children.length === 1) { children = children[0]; }
92
- else if (children.length === 0) { children = null; }
93
91
  }
94
92
  if (props && props !== nil) { native_props = Opal.React.to_native_react_props(props); }
95
- operabu[operabu.length - 1].push(Opal.global.React.createElement(component, native_props, children));
93
+ operabu[operabu.length - 1].push(Opal.global.React.createElement.apply(this, [component, native_props].concat(children)));
96
94
  };
97
95
 
98
96
  self.active_components = [];
@@ -147,11 +145,10 @@ module React
147
145
  }
148
146
  // console.log("create_element popping", Opal.React.render_buffer, Opal.React.render_buffer.toString());
149
147
  children = operabu.pop();
150
- if (children.length == 1) { children = children[0]; }
151
- else if (children.length == 0) { children = null; }
152
- } else if (children === nil) { children = null; }
148
+ } else if (children === nil) { children = []; }
149
+ else if (typeof children === 'string') { children = [children]; }
153
150
  if (props && props !== nil) { native_props = Opal.React.to_native_react_props(props); }
154
- return Opal.global.React.createElement(component, native_props, children);
151
+ return Opal.global.React.createElement.apply(this, [component, native_props].concat(children));
155
152
  }
156
153
  end
157
154
 
@@ -1,3 +1,3 @@
1
1
  module React
2
- VERSION = '16.12.8'
2
+ VERSION = '16.12.9'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: isomorfeus-react
3
3
  version: !ruby/object:Gem::Version
4
- version: 16.12.8
4
+ version: 16.12.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Biedermann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-17 00:00:00.000000000 Z
11
+ date: 2020-01-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -100,14 +100,14 @@ dependencies:
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 4.0.16
103
+ version: 4.0.17
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 4.0.16
110
+ version: 4.0.17
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: isomorfeus-speednode
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -128,28 +128,28 @@ dependencies:
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: 2.2.1
131
+ version: 2.2.2
132
132
  type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: 2.2.1
138
+ version: 2.2.2
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: isomorfeus-puppetmaster
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: 0.3.1
145
+ version: 0.3.4
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: 0.3.1
152
+ version: 0.3.4
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: rake
155
155
  requirement: !ruby/object:Gem::Requirement
@@ -200,6 +200,7 @@ files:
200
200
  - lib/isomorfeus/props/validate_hash_proxy.rb
201
201
  - lib/isomorfeus/props/validator.rb
202
202
  - lib/isomorfeus/react_view_helper.rb
203
+ - lib/isomorfeus/thread_local_cache.rb
203
204
  - lib/isomorfeus/top_level.rb
204
205
  - lib/isomorfeus/top_level_ssr.rb
205
206
  - lib/isomorfeus/vivify_module.rb