isomorfeus-preact 10.6.45 → 10.6.46
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/isomorfeus/preact/config.rb +1 -15
- data/lib/isomorfeus/preact_view_helper.rb +3 -7
- data/lib/isomorfeus/ssr.rb +4 -10
- data/lib/isomorfeus/top_level_ssr.rb +10 -1
- data/lib/preact/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c6aa16242ab93d05f360dd9c8b3455dd2e4b4084835116cd8973356edde20d4c
|
4
|
+
data.tar.gz: b230de356c9524d886f9cbfed54edc39c5531d7531b205301358c19acb800809
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f0c8247ff444a7f045eb80e6a6d575f957869f87b559df2dba16520ebfe92e2a46d15aee505e9dd908fd4ce061139ff8285a9a9cef7afb6cb75f43d2fd728f50
|
7
|
+
data.tar.gz: acd073c0cb7c199228efa51ed17c1b11612f20670a4cea63b2c382bce7bf1dfef37d43180332de482907b6778fb15cf2d347a5f4a5aa15cdb94e90b02d913635
|
@@ -17,10 +17,7 @@ module Isomorfeus
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def force_init!
|
20
|
-
|
21
|
-
Isomorfeus.initial_state_fetched = true
|
22
|
-
Redux::Store.preloaded_state = Isomorfeus.store.get_state
|
23
|
-
end
|
20
|
+
@initialized = true
|
24
21
|
Isomorfeus.force_init_store!
|
25
22
|
execute_init_classes
|
26
23
|
end
|
@@ -38,17 +35,6 @@ module Isomorfeus
|
|
38
35
|
self.send("#{key}=", value)
|
39
36
|
end
|
40
37
|
|
41
|
-
# only used for SSR
|
42
|
-
def cached_component_classes
|
43
|
-
@cached_component_classes ||= {}
|
44
|
-
end
|
45
|
-
|
46
|
-
# only used for SSR
|
47
|
-
def cached_component_class(class_name)
|
48
|
-
return cached_component_classes[class_name] if cached_component_classes.key?(class_name)
|
49
|
-
cached_component_classes[class_name] = "::#{class_name}".constantize
|
50
|
-
end
|
51
|
-
|
52
38
|
def execute_init_classes
|
53
39
|
client_init_class_names.each do |constant|
|
54
40
|
constant.constantize.send(:init)
|
@@ -58,7 +58,7 @@ module Isomorfeus
|
|
58
58
|
# execute first render pass
|
59
59
|
begin
|
60
60
|
pass += 1
|
61
|
-
has_transport,
|
61
|
+
has_transport, need_further_pass, exception = ctx.exec(javascript)
|
62
62
|
Isomorfeus.raise_error(message: "Server Side Rendering: #{exception['message']}", stack: exception['stack']) if exception
|
63
63
|
rescue Exception => e
|
64
64
|
Isomorfeus.raise_error(error: e)
|
@@ -95,14 +95,10 @@ module Isomorfeus
|
|
95
95
|
Isomorfeus.raise_error(message: "Server Side Rendering: #{exception['message']}", stack: exception['stack']) if exception
|
96
96
|
else
|
97
97
|
start_time = Time.now
|
98
|
-
script_key = if has_transport
|
98
|
+
script_key = if has_transport
|
99
99
|
:still_busy
|
100
|
-
elsif has_transport
|
101
|
-
:transport_busy
|
102
|
-
elsif has_store
|
103
|
-
:store_busy
|
104
100
|
else
|
105
|
-
|
101
|
+
:store_busy
|
106
102
|
end
|
107
103
|
while need_further_pass
|
108
104
|
# execute further render passes
|
data/lib/isomorfeus/ssr.rb
CHANGED
@@ -11,7 +11,6 @@ module Isomorfeus
|
|
11
11
|
global.Exception = false;
|
12
12
|
global.IsomorfeusSessionId = session_id;
|
13
13
|
global.HasTransport = (typeof global.Opal.Isomorfeus.Transport !== 'undefined') && (api_ws_path !== '');
|
14
|
-
global.HasStore = typeof global.Opal.Isomorfeus.store !== 'undefined';
|
15
14
|
global.Opal.Isomorfeus['$env='](env);
|
16
15
|
if (typeof global.Opal.Isomorfeus["$current_locale="] === 'function') { global.Opal.Isomorfeus["$current_locale="](locale); }
|
17
16
|
global.Opal.Isomorfeus['$force_init!']();
|
@@ -22,8 +21,7 @@ module Isomorfeus
|
|
22
21
|
global.Opal.send(global.Opal.Isomorfeus.Transport.$promise_connect(global.IsomorfeusSessionId), 'then', [], ($$1 = function(){
|
23
22
|
try {
|
24
23
|
global.RenderedTree = global.Opal.Isomorfeus.TopLevel.$render_component_to_string(component_name, props);
|
25
|
-
|
26
|
-
global.NeedFurtherPass = (nfp == nil) ? false : nfp;
|
24
|
+
global.NeedFurtherPass = self.still_busy();
|
27
25
|
global.FirstPassFinished = true;
|
28
26
|
} catch (e) {
|
29
27
|
global.Exception = e;
|
@@ -33,16 +31,13 @@ module Isomorfeus
|
|
33
31
|
} else {
|
34
32
|
try {
|
35
33
|
global.RenderedTree = global.Opal.Isomorfeus.TopLevel.$render_component_to_string(component_name, props);
|
36
|
-
|
37
|
-
let nfp = global.Opal.Isomorfeus.store['$recently_dispatched?']();
|
38
|
-
global.NeedFurtherPass = (nfp == nil) ? false : nfp;
|
39
|
-
}
|
34
|
+
global.NeedFurtherPass = self.store_busy();
|
40
35
|
} catch (e) {
|
41
36
|
global.Exception = e;
|
42
37
|
global.NeedFurtherPass = false;
|
43
38
|
}
|
44
39
|
};
|
45
|
-
return [global.HasTransport, global.
|
40
|
+
return [global.HasTransport, global.NeedFurtherPass, global.Exception ? { message: global.Exception.message, stack: global.Exception.stack } : false];
|
46
41
|
}
|
47
42
|
|
48
43
|
self.first_pass_result = function() {
|
@@ -66,8 +61,7 @@ module Isomorfeus
|
|
66
61
|
}
|
67
62
|
let application_state = global.Opal.Isomorfeus.store.native.getState();
|
68
63
|
if (typeof global.NanoCSSInstance !== 'undefined') { ssr_styles = global.NanoCSSInstance.raw }
|
69
|
-
|
70
|
-
global.NeedFurtherPass = (nfp == nil) ? false : nfp;
|
64
|
+
global.NeedFurtherPass = ((global.HasTransport && global.Opal.Isomorfeus.Transport["$busy?"]()) || self.store_busy());
|
71
65
|
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
66
|
}
|
73
67
|
|
@@ -21,9 +21,18 @@ module Isomorfeus
|
|
21
21
|
component = component_name;
|
22
22
|
}
|
23
23
|
}
|
24
|
-
component =
|
24
|
+
component = cached_component_class(component_name) unless component
|
25
25
|
Preact.render_to_string(Preact.create_element(component, `Opal.Hash.$new(props)`))
|
26
26
|
end
|
27
|
+
|
28
|
+
def cached_component_classes
|
29
|
+
@cached_component_classes ||= {}
|
30
|
+
end
|
31
|
+
|
32
|
+
def cached_component_class(class_name)
|
33
|
+
return cached_component_classes[class_name] if cached_component_classes.key?(class_name)
|
34
|
+
cached_component_classes[class_name] = "::#{class_name}".constantize
|
35
|
+
end
|
27
36
|
end
|
28
37
|
end
|
29
38
|
end
|
data/lib/preact/version.rb
CHANGED