isomorfeus-preact 10.6.41 → 10.6.45

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: b5dcd6f47b6c1ee434ae284faa284963185a2e112ff2d31af183b3d14a1a7bbc
4
- data.tar.gz: 8317315227778cd9a5ef6f5228eee20676ca87b27e850536ecac4a475b91631d
3
+ metadata.gz: 3363983634e71069a60fa277a03d0394993690dcf7cab706fb8a28fc22367072
4
+ data.tar.gz: d8a9855c74eb31e3de87dba1c5bd5c5362a6f2cda93d7bbcb42e8b1ceec6d7ea
5
5
  SHA512:
6
- metadata.gz: 6dd8b2248f31ccbc1fbdf96a4bdeb9bfac4e402f482e5bbc96380af80f462a66f666459ed48fc3060a489dfe6dfc18da56e337b1553c9cf9bf99d58da8ff2bc8
7
- data.tar.gz: d1f318b2e409084902e83beeb5c2803c676a079ed381df72d0db97f7ab056865bfdfce4d7ebd5d734d782068701df6152f81c895ab59c12acb3f3fd7b8d3ef9b
6
+ metadata.gz: 8a2e5544a14afdb95e1ca54a679285fffffacb9d25b8c8ab7971acd70d71221fde8b4c28733ee0aa4ca8900226653db6273de1d1d14552214a7c8458e6f51b88
7
+ data.tar.gz: 2cf4331a001fce697899ebaacb409a50a8d1873efad53f52ebf4612cac50f02f8616eac13b9ab62518417f78503c7077750f8fc5a361ff53e3c4d36a865f4bce
@@ -27,7 +27,12 @@ module Isomorfeus
27
27
  begin
28
28
  init_speednode_context(asset_key, thread_id_asset)
29
29
  rescue Exception => e
30
- Isomorfeus.raise_error(message: "Server Side Rendering: Failed creating context for #{asset_key}. Error: #{e.message}", stack: e.backtrace)
30
+ if e.message.include?('@hash[:js][:js][:raw]') # asset bundling did not yet finish
31
+ sleep 2
32
+ return mount_component(component_name, props, asset_key, skip_ssr: skip_ssr, use_ssr: use_ssr, max_passes: max_passes)
33
+ else
34
+ Isomorfeus.raise_error(message: "Server Side Rendering: Failed creating context for #{asset_key}. Error: #{e.message}", stack: e.backtrace)
35
+ end
31
36
  end
32
37
  else
33
38
  unless Isomorfeus.ssr_contexts.key?(thread_id_asset)
@@ -37,8 +42,7 @@ module Isomorfeus
37
42
 
38
43
  ctx = Isomorfeus.ssr_contexts[thread_id_asset]
39
44
  pass = 0
40
- # if location_host and scheme are given and if Transport is loaded, connect and then render,
41
- # otherwise do not render because only one pass is required
45
+ # if location_host and scheme are given and if Transport is loaded, connect and then render
42
46
  ws_scheme = props[:location_scheme] == 'https:' ? 'wss:' : 'ws:'
43
47
  location_host = props[:location_host] ? props[:location_host] : 'localhost'
44
48
  api_ws_path = Isomorfeus.respond_to?(:api_websocket_path) ? Isomorfeus.api_websocket_path : ''
@@ -110,11 +114,11 @@ module Isomorfeus
110
114
  Isomorfeus.raise_error(message: "Server Side Rendering: #{exception['message']}", stack: exception['stack']) if exception
111
115
  if need_further_pass && script_key
112
116
  break if (Time.now - start_time) > 5
113
- need_further_pass = ctx.eval_script(key: script_key)
114
- while need_further_pass
115
- break if (Time.now - start_time) > 4
116
- sleep 0.01
117
- need_further_pass = ctx.eval_script(key: script_key)
117
+ still_busy = ctx.eval_script(key: script_key)
118
+ while still_busy
119
+ break if (Time.now - start_time) > 5
120
+ sleep 0.005
121
+ still_busy = ctx.eval_script(key: script_key)
118
122
  end
119
123
  break if pass >= max_passes
120
124
  else
@@ -179,10 +183,10 @@ module Isomorfeus
179
183
  ctx.exec(ssr_mod)
180
184
  ctx.add_script(key: :first_pass_check, source: '[global.FirstPassFinished, global.NeedFurtherPass, global.Exception ? { message: global.Exception.message, stack: global.Exception.stack } : false ]')
181
185
  ctx.add_script(key: :first_pass_result, source: 'Opal.Isomorfeus.SSR.first_pass_result()')
182
- ctx.add_script(key: :still_busy, source: 'let nfp = global.Opal.Isomorfeus.Transport["$busy?"]() || global.Opal.Isomorfeus.store["$recently_dispatched?"](); (nfp == nil) ? false : nfp;')
183
- ctx.add_script(key: :store_busy, source: 'let nfp = global.Opal.Isomorfeus.store["$recently_dispatched?"](); (nfp == nil) ? false : nfp;')
186
+ ctx.add_script(key: :still_busy, source: 'Opal.Isomorfeus.SSR.still_busy()')
187
+ ctx.add_script(key: :store_busy, source: 'Opal.Isomorfeus.SSR.store_busy()')
184
188
  ctx.add_script(key: :transport_busy, source: 'global.Opal.Isomorfeus.Transport["$busy?"]()')
185
- ctx.add_script(key: :transport_disconnect, source: 'global.Opal.Isomorfeus.Transport.$disconnect()')
189
+ ctx.add_script(key: :transport_disconnect, source: 'global.Opal.Isomorfeus.SSR.$disconnect_transport()')
186
190
  end
187
191
  end
188
192
 
@@ -70,6 +70,25 @@ module Isomorfeus
70
70
  global.NeedFurtherPass = (nfp == nil) ? false : nfp;
71
71
  return [rendered_tree, application_state, ssr_styles, global.Opal.Isomorfeus['$ssr_response_status'](), global.NeedFurtherPass, global.Exception ? { message: global.Exception.message, stack: global.Exception.stack } : false];
72
72
  }
73
+
74
+ self.still_busy = function(){
75
+ if (global.Opal.Isomorfeus.Transport["$busy?"]()) { return true; }
76
+ return self.store_busy();
77
+ }
78
+
79
+ self.store_busy = function() {
80
+ let nfp = global.Opal.Isomorfeus.store["$recently_dispatched?"]();
81
+ return (nfp == global.Opal.nil) ? false : nfp;
82
+ }
73
83
  }
84
+
85
+ def self.disconnect_transport
86
+ Isomorfeus::Transport::RequestAgent.agents.each do |agent_id, agent|
87
+ agent.promise.reject() unless agent.promise.realized?
88
+ Isomorfeus::Transport::RequestAgent.del!(agent_id)
89
+ end
90
+ Isomorfeus::Transport.instance_variable_set(:@requests_in_progress, { requests: {}, agent_ids: {} })
91
+ Isomorfeus::Transport.disconnect
92
+ end
74
93
  end
75
94
  end
@@ -1,3 +1,9 @@
1
+ module Preact
2
+ def self.render_to_string(native_preact_element)
3
+ `Opal.global.Preact.renderToString(native_preact_element)`
4
+ end
5
+ end
6
+
1
7
  module Isomorfeus
2
8
  class TopLevel
3
9
  class << self
@@ -1,3 +1,3 @@
1
1
  module Preact
2
- VERSION = '10.6.41'
2
+ VERSION = '10.6.45'
3
3
  end
data/lib/preact.rb CHANGED
@@ -294,11 +294,7 @@ module Preact
294
294
  end
295
295
  end
296
296
 
297
- if on_ssr?
298
- def self.render_to_string(native_preact_element)
299
- `Opal.global.Preact.renderToString(native_preact_element)`
300
- end
301
- end
297
+ # render_to_string is in top_level_ssr.rb
302
298
 
303
299
  def self.unmount_component_at_node(element_or_query)
304
300
  if `(typeof element_or_query === 'string')` || (`(typeof element_or_query.$class === 'function')` && element_or_query.class == String)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: isomorfeus-preact
3
3
  version: !ruby/object:Gem::Version
4
- version: 10.6.41
4
+ version: 10.6.45
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-20 00:00:00.000000000 Z
11
+ date: 2022-02-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby