hyper-router 1.0.alpha1.2 → 1.0.alpha1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0515b59167c89bfa088fb19da74c6006abceadddf1ee2dcbc0b7c38cfd382142
|
4
|
+
data.tar.gz: d753ef19d61e22c45fc39f2dc513e855cce7a80b4d305321b68ad60e00b0ece9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e317f71356ac069cd2915eab6877d52fd552e5aa4da8f502e7e45f4d7ca95a761892e1aa0e00e49948e57ee930f9b0910003702d223ef703b8a78cb9fbe7e4e6
|
7
|
+
data.tar.gz: a033f24ad047ef0d66e6b43e2bc9d6b7414605bec760cb1cb9a294131efe588625c9eaf52bcaa91366ee3536b6e27404fab161ff116d050c6a6549b53268d5b4
|
@@ -14,29 +14,6 @@ module Hyperstack
|
|
14
14
|
Hyperstack::Router::Location.new(`#{history.to_n}.location`)
|
15
15
|
end
|
16
16
|
|
17
|
-
def render(container = nil, params = {}, &block)
|
18
|
-
if container
|
19
|
-
container = container.type if container.is_a? Hyperstack::Component::Element
|
20
|
-
select_router do
|
21
|
-
Hyperstack::Internal::Component::RenderingContext.render(container, params) do
|
22
|
-
instance_eval(&block) if block
|
23
|
-
end
|
24
|
-
end
|
25
|
-
else
|
26
|
-
select_router { instance_eval(&block) }
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
def select_router(&block)
|
31
|
-
if Hyperstack::Component::IsomorphicHelpers.on_opal_server?
|
32
|
-
prerender_router(&block)
|
33
|
-
else
|
34
|
-
render_router(&block)
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
alias route render
|
39
|
-
|
40
17
|
private
|
41
18
|
|
42
19
|
def browser_history
|
@@ -50,30 +27,6 @@ module Hyperstack
|
|
50
27
|
def memory_history(*args)
|
51
28
|
@__memory_history ||= React::Router::History.current.create_memory_history(*args)
|
52
29
|
end
|
53
|
-
|
54
|
-
def render_router(&block)
|
55
|
-
define_method(:__hyperstack_component_render) do
|
56
|
-
self.class.history :browser unless history
|
57
|
-
|
58
|
-
React::Router::Router(history: history.to_n) do
|
59
|
-
instance_eval(&block)
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
def prerender_router(&block)
|
65
|
-
define_method(:__hyperstack_component_render) do
|
66
|
-
location = {}.tap do |hash|
|
67
|
-
pathname, search = IsomorphicMethods.request_fullpath.split('?', 2)
|
68
|
-
hash[:pathname] = pathname
|
69
|
-
hash[:search] = search ? "?#{search}" : ''
|
70
|
-
end
|
71
|
-
|
72
|
-
React::Router::StaticRouter(location: location.to_n, context: {}.to_n) do
|
73
|
-
instance_eval(&block)
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
77
30
|
end
|
78
31
|
end
|
79
32
|
end
|
@@ -25,6 +25,9 @@ module Hyperstack
|
|
25
25
|
|
26
26
|
def Redirect(to, opts = {})
|
27
27
|
opts[:to] = to.to_n
|
28
|
+
status = opts.delete(:status)
|
29
|
+
status ||= 302
|
30
|
+
`#{IsomorphicMethods.ctx}.status = #{status}`
|
28
31
|
React::Router::Redirect(opts)
|
29
32
|
end
|
30
33
|
|
@@ -37,6 +40,8 @@ module Hyperstack
|
|
37
40
|
end
|
38
41
|
|
39
42
|
def Route(to, opts = {}, &block)
|
43
|
+
Hyperstack::Internal::State::Mapper.observed! Hyperstack::Router::Location
|
44
|
+
|
40
45
|
opts[:path] = to.to_n
|
41
46
|
|
42
47
|
if opts[:mounts]
|
@@ -53,7 +58,7 @@ module Hyperstack
|
|
53
58
|
opts[:render] = lambda do |e|
|
54
59
|
route_params = format_params(e)
|
55
60
|
|
56
|
-
yield(route_params.values).to_n
|
61
|
+
yield(*route_params.values).to_n
|
57
62
|
end
|
58
63
|
end
|
59
64
|
|
@@ -4,6 +4,17 @@ module Hyperstack
|
|
4
4
|
class IsomorphicMethods
|
5
5
|
include Hyperstack::Component::IsomorphicHelpers
|
6
6
|
|
7
|
+
def self.ctx
|
8
|
+
@ctx ||= `{}`
|
9
|
+
end
|
10
|
+
|
11
|
+
prerender_footer do |_controller|
|
12
|
+
next unless on_opal_server?
|
13
|
+
ctx_as_hash = Hash.new(@ctx)
|
14
|
+
@ctx = `{}`
|
15
|
+
raise "Hyperstack::Internal::Component::Redirect #{ctx_as_hash[:url]} status: #{ctx_as_hash[:status]}" if ctx_as_hash[:url]
|
16
|
+
end
|
17
|
+
|
7
18
|
isomorphic_method(:request_fullpath) do |f|
|
8
19
|
f.when_on_client { `window.location.pathname` }
|
9
20
|
f.send_to_server
|
data/lib/hyperstack/router.rb
CHANGED
@@ -1,6 +1,50 @@
|
|
1
1
|
module Hyperstack
|
2
2
|
module Router
|
3
3
|
class NoHistoryError < StandardError; end
|
4
|
+
|
5
|
+
def __hyperstack_router_wrapper(&block)
|
6
|
+
if Hyperstack::Component::IsomorphicHelpers.on_opal_server?
|
7
|
+
->() { __hyperstack_prerender_router(&block) }
|
8
|
+
else
|
9
|
+
->() { __hyperstack_render_router(&block) }
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def __eval_block(block)
|
14
|
+
result = instance_eval(&block)
|
15
|
+
if result.is_a?(String) ||
|
16
|
+
(result.respond_to?(:acts_as_string?) && result.acts_as_string?)
|
17
|
+
# hyper-mesh DummyValues respond to acts_as_string, and must
|
18
|
+
# be converted to spans INSIDE the parent, otherwise the waiting_on_resources
|
19
|
+
# flag will get set in the wrong context
|
20
|
+
result = Hyperstack::Internal::Component::RenderingContext
|
21
|
+
.render(:span) { result.to_s }
|
22
|
+
end
|
23
|
+
result
|
24
|
+
end
|
25
|
+
|
26
|
+
def __hyperstack_render_router(&block)
|
27
|
+
instance_eval do
|
28
|
+
self.class.history :browser unless history
|
29
|
+
React::Router::Router(history: history.to_n) do
|
30
|
+
__eval_block(block)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def __hyperstack_prerender_router(&block)
|
36
|
+
instance_eval do
|
37
|
+
pathname, search = Hyperstack::Internal::Router::IsomorphicMethods.request_fullpath.split('?', 2)
|
38
|
+
location = { pathname: pathname, search: search ? "?#{search}" : '' }.to_n
|
39
|
+
React::Router::StaticRouter(
|
40
|
+
location: location,
|
41
|
+
context: Hyperstack::Internal::Router::IsomorphicMethods.ctx
|
42
|
+
) do
|
43
|
+
__eval_block(block)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
4
48
|
def self.included(base)
|
5
49
|
base.extend(Hyperstack::Internal::Router::ClassMethods)
|
6
50
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hyper-router
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.alpha1.
|
4
|
+
version: 1.0.alpha1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam George
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2019-01-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: hyper-component
|
@@ -17,28 +17,28 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - '='
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: 1.0.alpha1.
|
20
|
+
version: 1.0.alpha1.3
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - '='
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: 1.0.alpha1.
|
27
|
+
version: 1.0.alpha1.3
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: hyper-state
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
32
|
- - '='
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: 1.0.alpha1.
|
34
|
+
version: 1.0.alpha1.3
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - '='
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: 1.0.alpha1.
|
41
|
+
version: 1.0.alpha1.3
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: opal-browser
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
@@ -59,14 +59,20 @@ dependencies:
|
|
59
59
|
requirements:
|
60
60
|
- - ">="
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version:
|
62
|
+
version: 1.17.3
|
63
|
+
- - "<"
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '2.1'
|
63
66
|
type: :development
|
64
67
|
prerelease: false
|
65
68
|
version_requirements: !ruby/object:Gem::Requirement
|
66
69
|
requirements:
|
67
70
|
- - ">="
|
68
71
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
72
|
+
version: 1.17.3
|
73
|
+
- - "<"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '2.1'
|
70
76
|
- !ruby/object:Gem::Dependency
|
71
77
|
name: capybara
|
72
78
|
requirement: !ruby/object:Gem::Requirement
|
@@ -115,28 +121,28 @@ dependencies:
|
|
115
121
|
requirements:
|
116
122
|
- - '='
|
117
123
|
- !ruby/object:Gem::Version
|
118
|
-
version: 1.0.alpha1.
|
124
|
+
version: 1.0.alpha1.3
|
119
125
|
type: :development
|
120
126
|
prerelease: false
|
121
127
|
version_requirements: !ruby/object:Gem::Requirement
|
122
128
|
requirements:
|
123
129
|
- - '='
|
124
130
|
- !ruby/object:Gem::Version
|
125
|
-
version: 1.0.alpha1.
|
131
|
+
version: 1.0.alpha1.3
|
126
132
|
- !ruby/object:Gem::Dependency
|
127
133
|
name: hyper-store
|
128
134
|
requirement: !ruby/object:Gem::Requirement
|
129
135
|
requirements:
|
130
136
|
- - '='
|
131
137
|
- !ruby/object:Gem::Version
|
132
|
-
version: 1.0.alpha1.
|
138
|
+
version: 1.0.alpha1.3
|
133
139
|
type: :development
|
134
140
|
prerelease: false
|
135
141
|
version_requirements: !ruby/object:Gem::Requirement
|
136
142
|
requirements:
|
137
143
|
- - '='
|
138
144
|
- !ruby/object:Gem::Version
|
139
|
-
version: 1.0.alpha1.
|
145
|
+
version: 1.0.alpha1.3
|
140
146
|
- !ruby/object:Gem::Dependency
|
141
147
|
name: listen
|
142
148
|
requirement: !ruby/object:Gem::Requirement
|
@@ -157,14 +163,14 @@ dependencies:
|
|
157
163
|
requirements:
|
158
164
|
- - "~>"
|
159
165
|
- !ruby/object:Gem::Version
|
160
|
-
version: 0.
|
166
|
+
version: 0.2.4
|
161
167
|
type: :development
|
162
168
|
prerelease: false
|
163
169
|
version_requirements: !ruby/object:Gem::Requirement
|
164
170
|
requirements:
|
165
171
|
- - "~>"
|
166
172
|
- !ruby/object:Gem::Version
|
167
|
-
version: 0.
|
173
|
+
version: 0.2.4
|
168
174
|
- !ruby/object:Gem::Dependency
|
169
175
|
name: opal-rails
|
170
176
|
requirement: !ruby/object:Gem::Requirement
|
@@ -491,8 +497,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
491
497
|
- !ruby/object:Gem::Version
|
492
498
|
version: 1.3.1
|
493
499
|
requirements: []
|
494
|
-
|
495
|
-
rubygems_version: 2.7.8
|
500
|
+
rubygems_version: 3.0.2
|
496
501
|
signing_key:
|
497
502
|
specification_version: 4
|
498
503
|
summary: hyper-router for Opal, part of the hyperstack framework
|