hyper-component 0.12.3 → 0.99.0
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 +5 -5
- data/.codeclimate.yml +27 -0
- data/.gitignore +42 -41
- data/.travis.yml +29 -0
- data/CHANGELOG.md +143 -0
- data/DOCS.md +1515 -0
- data/Gemfile +5 -2
- data/Gemfile.lock +244 -193
- data/LICENSE +5 -7
- data/README.md +49 -0
- data/Rakefile +40 -0
- data/hyper-component.gemspec +41 -31
- data/lib/hyper-component.rb +44 -9
- data/lib/rails-helpers/top_level_rails_component.rb +79 -0
- data/lib/react/api.rb +270 -0
- data/lib/react/callbacks.rb +42 -0
- data/lib/react/children.rb +38 -0
- data/lib/react/component.rb +189 -0
- data/lib/react/component/api.rb +70 -0
- data/lib/react/component/base.rb +13 -0
- data/lib/react/component/class_methods.rb +175 -0
- data/lib/react/component/dsl_instance_methods.rb +23 -0
- data/lib/react/component/params.rb +6 -0
- data/lib/react/component/props_wrapper.rb +90 -0
- data/lib/react/component/should_component_update.rb +99 -0
- data/lib/react/component/tags.rb +116 -0
- data/lib/react/config.rb +5 -0
- data/lib/react/element.rb +159 -0
- data/lib/react/event.rb +76 -0
- data/lib/react/ext/hash.rb +9 -0
- data/lib/react/ext/opal-jquery/element.rb +37 -0
- data/lib/react/ext/string.rb +8 -0
- data/lib/react/native_library.rb +87 -0
- data/lib/react/object.rb +15 -0
- data/lib/react/react-source-server.rb +3 -0
- data/lib/react/react-source.rb +17 -0
- data/lib/react/ref_callback.rb +31 -0
- data/lib/react/rendering_context.rb +149 -0
- data/lib/react/server.rb +19 -0
- data/lib/react/state_wrapper.rb +23 -0
- data/lib/react/test.rb +16 -0
- data/lib/react/test/dsl.rb +17 -0
- data/lib/react/test/matchers/render_html_matcher.rb +56 -0
- data/lib/react/test/rspec.rb +15 -0
- data/lib/react/test/session.rb +37 -0
- data/lib/react/test/utils.rb +71 -0
- data/lib/react/to_key.rb +26 -0
- data/lib/react/top_level.rb +110 -0
- data/lib/react/top_level_render.rb +28 -0
- data/lib/react/validator.rb +132 -0
- data/lib/reactive-ruby/component_loader.rb +43 -0
- data/lib/reactive-ruby/isomorphic_helpers.rb +233 -0
- data/lib/reactive-ruby/rails.rb +8 -0
- data/lib/reactive-ruby/rails/component_mount.rb +48 -0
- data/lib/reactive-ruby/rails/controller_helper.rb +14 -0
- data/lib/reactive-ruby/rails/railtie.rb +20 -0
- data/lib/reactive-ruby/serializers.rb +23 -0
- data/lib/reactive-ruby/server_rendering/contextual_renderer.rb +46 -0
- data/lib/reactive-ruby/server_rendering/hyper_asset_container.rb +46 -0
- data/lib/{hyperloop/component → reactive-ruby}/version.rb +1 -1
- data/lib/reactrb/auto-import.rb +27 -0
- data/misc/generators/reactive_ruby/test_app/templates/assets/javascripts/components.rb +3 -0
- data/misc/generators/reactive_ruby/test_app/templates/assets/javascripts/server_rendering.js +5 -0
- data/misc/generators/reactive_ruby/test_app/templates/assets/javascripts/test_application.rb +2 -0
- data/misc/generators/reactive_ruby/test_app/templates/boot.rb.erb +6 -0
- data/misc/generators/reactive_ruby/test_app/templates/script/rails +5 -0
- data/misc/generators/reactive_ruby/test_app/templates/test_application.rb.erb +13 -0
- data/misc/generators/reactive_ruby/test_app/templates/views/components/hello_world.rb +11 -0
- data/misc/generators/reactive_ruby/test_app/templates/views/components/todo.rb +14 -0
- data/misc/generators/reactive_ruby/test_app/templates/views/layouts/test_layout.html.erb +0 -0
- data/misc/generators/reactive_ruby/test_app/test_app_generator.rb +121 -0
- data/misc/how-component-name-lookup-works.md +145 -0
- data/misc/hyperloop-logo-small-pink.png +0 -0
- data/misc/logo1.png +0 -0
- data/misc/logo2.png +0 -0
- data/misc/logo3.png +0 -0
- data/path_release_steps.md +9 -0
- metadata +260 -37
- data/CODE_OF_CONDUCT.md +0 -49
@@ -0,0 +1,27 @@
|
|
1
|
+
# rubocop:disable Style/FileName
|
2
|
+
# require 'reactrb/auto-import' to automatically
|
3
|
+
# import JS libraries and components when they are detected
|
4
|
+
if RUBY_ENGINE == 'opal'
|
5
|
+
# modifies const and method_missing so that they will attempt
|
6
|
+
# to auto import native libraries and components using React::NativeLibrary
|
7
|
+
class Object
|
8
|
+
class << self
|
9
|
+
alias _reactrb_original_const_missing const_missing
|
10
|
+
alias _reactrb_original_method_missing method_missing
|
11
|
+
|
12
|
+
def const_missing(const_name)
|
13
|
+
# Opal uses const_missing to initially define things,
|
14
|
+
# so we always call the original, and respond to the exception
|
15
|
+
_reactrb_original_const_missing(const_name)
|
16
|
+
rescue StandardError => e
|
17
|
+
React::NativeLibrary.import_const_from_native(Object, const_name, true) || raise(e)
|
18
|
+
end
|
19
|
+
|
20
|
+
def method_missing(method, *args, &block)
|
21
|
+
component_class = React::NativeLibrary.import_const_from_native(self, method, false)
|
22
|
+
_reactrb_original_method_missing(method, *args, &block) unless component_class
|
23
|
+
React::RenderingContext.render(component_class, *args, &block)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<% if defined? application_definition %>
|
2
|
+
require 'rails/all'
|
3
|
+
require File.expand_path('../boot', __FILE__)
|
4
|
+
|
5
|
+
# Require the gems listed in Gemfile, including any gems
|
6
|
+
# you've limited to :test, :development, or :production.
|
7
|
+
Bundler.require(*Rails.groups(assets: %w(development test)))
|
8
|
+
|
9
|
+
require 'opal-rails'
|
10
|
+
require 'hyper-react'
|
11
|
+
|
12
|
+
<%= application_definition %>
|
13
|
+
<% end %>
|
File without changes
|
@@ -0,0 +1,121 @@
|
|
1
|
+
# Although we are not using this it would be good to move back to this model in future.
|
2
|
+
# For one thing it would be a good way to test the hyperloop/hyperstack rails installer
|
3
|
+
# so for now keep these files here as a template
|
4
|
+
|
5
|
+
require 'rails/generators/rails/app/app_generator'
|
6
|
+
|
7
|
+
module ReactiveRuby
|
8
|
+
class TestAppGenerator < ::Rails::Generators::Base
|
9
|
+
def self.source_paths
|
10
|
+
paths = self.superclass.source_paths
|
11
|
+
paths << File.expand_path('../templates', __FILE__)
|
12
|
+
paths.flatten
|
13
|
+
end
|
14
|
+
|
15
|
+
def remove_existing_app
|
16
|
+
remove_dir(test_app_path) if File.directory?(test_app_path)
|
17
|
+
end
|
18
|
+
|
19
|
+
def generate_test_app
|
20
|
+
opts = options.dup
|
21
|
+
opts[:database] = 'sqlite3' if opts[:database].blank?
|
22
|
+
opts[:force] = true
|
23
|
+
opts[:skip_bundle] = true
|
24
|
+
|
25
|
+
puts "Generating Test Rails Application..."
|
26
|
+
invoke ::Rails::Generators::AppGenerator,
|
27
|
+
[ File.expand_path(test_app_path, destination_root) ], opts
|
28
|
+
end
|
29
|
+
|
30
|
+
def configure_test_app
|
31
|
+
template 'boot.rb.erb', "#{test_app_path}/config/boot.rb", force: true
|
32
|
+
template 'test_application.rb.erb', "#{test_app_path}/config/application.rb", force: true
|
33
|
+
template 'assets/javascripts/test_application.rb',
|
34
|
+
"#{test_app_path}/app/assets/javascripts/application.rb", force: true
|
35
|
+
template 'assets/javascripts/server_rendering.js',
|
36
|
+
"#{test_app_path}/app/assets/javascripts/server_rendering.js", force: true
|
37
|
+
template 'assets/javascripts/components.rb',
|
38
|
+
"#{test_app_path}/app/views/components.rb", force: true
|
39
|
+
template 'views/components/hello_world.rb',
|
40
|
+
"#{test_app_path}/app/views/components/hello_world.rb", force: true
|
41
|
+
template 'views/components/todo.rb',
|
42
|
+
"#{test_app_path}/app/views/components/todo.rb", force: true
|
43
|
+
template 'views/layouts/test_layout.html.erb',
|
44
|
+
"#{test_app_path}/app/views/layouts/test_layout.html.erb", force: true
|
45
|
+
template 'views/layouts/test_layout.html.erb',
|
46
|
+
"#{test_app_path}/app/views/layouts/explicit_layout.html.erb", force: true
|
47
|
+
end
|
48
|
+
|
49
|
+
def clean_superfluous_files
|
50
|
+
inside test_app_path do
|
51
|
+
remove_file '.gitignore'
|
52
|
+
remove_file 'doc'
|
53
|
+
remove_file 'Gemfile'
|
54
|
+
remove_file 'lib/tasks'
|
55
|
+
remove_file 'app/assets/images/rails.png'
|
56
|
+
remove_file 'app/assets/javascripts/application.js'
|
57
|
+
remove_file 'public/index.html'
|
58
|
+
remove_file 'public/robots.txt'
|
59
|
+
remove_file 'README.rdoc'
|
60
|
+
remove_file 'test'
|
61
|
+
remove_file 'vendor'
|
62
|
+
remove_file 'spec'
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def configure_opal_rspec
|
67
|
+
inject_into_file "#{test_app_path}/config/application.rb",
|
68
|
+
after: /class Application < Rails::Application/, verbose: true do
|
69
|
+
%Q[
|
70
|
+
config.opal.method_missing = true
|
71
|
+
config.opal.optimized_operators = true
|
72
|
+
config.opal.arity_check = false
|
73
|
+
config.opal.const_missing = true
|
74
|
+
config.opal.dynamic_require_severity = :ignore
|
75
|
+
config.opal.enable_specs = true
|
76
|
+
config.opal.spec_location = 'spec-opal'
|
77
|
+
config.hyperloop.auto_config = false
|
78
|
+
|
79
|
+
config.react.server_renderer_options = {
|
80
|
+
files: ["server_rendering.js"]
|
81
|
+
}
|
82
|
+
config.react.server_renderer_directories = ["/app/assets/javascripts"]
|
83
|
+
]
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
protected
|
88
|
+
|
89
|
+
def application_definition
|
90
|
+
@application_definition ||= begin
|
91
|
+
test_application_contents
|
92
|
+
end
|
93
|
+
end
|
94
|
+
alias :store_application_definition! :application_definition
|
95
|
+
|
96
|
+
private
|
97
|
+
|
98
|
+
def test_app_path
|
99
|
+
'spec/test_app'
|
100
|
+
end
|
101
|
+
|
102
|
+
def test_application_path
|
103
|
+
File.expand_path("#{test_app_path}/config/application.rb",
|
104
|
+
destination_root)
|
105
|
+
end
|
106
|
+
|
107
|
+
def test_application_contents
|
108
|
+
return unless File.exists?(test_application_path) && !options[:pretend]
|
109
|
+
contents = File.read(test_application_path)
|
110
|
+
contents[(contents.index("module #{module_name}"))..-1]
|
111
|
+
end
|
112
|
+
|
113
|
+
def module_name
|
114
|
+
'TestApp'
|
115
|
+
end
|
116
|
+
|
117
|
+
def gemfile_path
|
118
|
+
'../../../../Gemfile'
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
@@ -0,0 +1,145 @@
|
|
1
|
+
#### Notes on how component names are looked up
|
2
|
+
|
3
|
+
Given:
|
4
|
+
|
5
|
+
```ruby
|
6
|
+
|
7
|
+
class Blat < React::Component::Base
|
8
|
+
|
9
|
+
render do
|
10
|
+
Bar()
|
11
|
+
Foo::Bar()
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
class Bar < React::Component::Base
|
17
|
+
end
|
18
|
+
|
19
|
+
module Foo
|
20
|
+
|
21
|
+
class Bar < React::Component::Base
|
22
|
+
|
23
|
+
render do
|
24
|
+
Blat()
|
25
|
+
Baz()
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
class Baz < React::Component::Base
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
```
|
34
|
+
|
35
|
+
The problem is that method lookup is different than constant lookup. We can prove it by running this code:
|
36
|
+
|
37
|
+
```ruby
|
38
|
+
def try_it(test, &block)
|
39
|
+
puts "trying #{test}"
|
40
|
+
result = yield
|
41
|
+
puts "success#{': '+result.to_s if result}"
|
42
|
+
rescue Exception => e
|
43
|
+
puts "failed: #{e}"
|
44
|
+
ensure
|
45
|
+
puts "---------------------------------"
|
46
|
+
end
|
47
|
+
|
48
|
+
module Boom
|
49
|
+
|
50
|
+
Bar = 12
|
51
|
+
|
52
|
+
def self.Bar
|
53
|
+
puts " Boom::Bar says hi"
|
54
|
+
end
|
55
|
+
|
56
|
+
class Baz
|
57
|
+
def doit
|
58
|
+
try_it("Bar()") { Bar() }
|
59
|
+
try_it("Boom::Bar()") {Boom::Bar()}
|
60
|
+
try_it("Bar") { Bar }
|
61
|
+
try_it("Boom::Bar") { Boom::Bar }
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
|
67
|
+
|
68
|
+
Boom::Baz.new.doit
|
69
|
+
```
|
70
|
+
|
71
|
+
which prints:
|
72
|
+
|
73
|
+
```text
|
74
|
+
trying Bar()
|
75
|
+
failed: Bar: undefined method `Bar' for #<Boom::Baz:0x774>
|
76
|
+
---------------------------------
|
77
|
+
trying Boom::Bar()
|
78
|
+
Boom::Bar says hi
|
79
|
+
success
|
80
|
+
---------------------------------
|
81
|
+
trying Bar
|
82
|
+
success: 12
|
83
|
+
---------------------------------
|
84
|
+
trying Boom::Bar
|
85
|
+
success: 12
|
86
|
+
---------------------------------
|
87
|
+
```
|
88
|
+
|
89
|
+
[try-it](http://opalrb.org/try/?code:def%20try_it(test%2C%20%26block)%0A%20%20puts%20%22trying%20%23%7Btest%7D%22%0A%20%20result%20%3D%20yield%0A%20%20puts%20%22success%23%7B%27%3A%20%27%2Bresult.to_s%20if%20result%7D%22%0Arescue%20Exception%20%3D%3E%20e%0A%20%20puts%20%22failed%3A%20%23%7Be%7D%22%0Aensure%0A%20%20puts%20%22---------------------------------%22%0Aend%0A%0Amodule%20Boom%0A%20%20%0A%20%20Bar%20%3D%2012%0A%20%20%0A%20%20def%20self.Bar%0A%20%20%20%20puts%20%22%20%20%20Boom%3A%3ABar%20says%20hi%22%0A%20%20end%0A%0A%20%20class%20Baz%0A%20%20%20%20def%20doit%0A%20%20%20%20%20%20try_it(%22Bar()%22)%20%7B%20Bar()%20%7D%0A%20%20%20%20%20%20try_it(%22Boom%3A%3ABar()%22)%20%7BBoom%3A%3ABar()%7D%0A%20%20%20%20%20%20try_it(%22Bar%22)%20%7B%20Bar%20%7D%0A%20%20%20%20%20%20try_it(%22Boom%3A%3ABar%22)%20%7B%20Boom%3A%3ABar%20%7D%0A%20%20%20%20end%0A%20%20end%0Aend%0A%20%20%0A%0A%0ABoom%3A%3ABaz.new.doit)
|
90
|
+
|
91
|
+
|
92
|
+
What we need to do is:
|
93
|
+
|
94
|
+
1. when defining a component class `Foo`, also define in the same scope that Foo is being defined a method `self.Foo` that will accept Foo's params and child block, and render it.
|
95
|
+
|
96
|
+
2. As long as a name is qualified with at least one scope (i.e. `ModName::Foo()`) everything will work out, but if we say just `Foo()` then the only way I believe out of this is to handle it via method_missing, and let method_missing do a const_get on the method_name (which will return the class) and then render that component.
|
97
|
+
|
98
|
+
#### details
|
99
|
+
|
100
|
+
To define `self.Foo` in the same scope level as the class `Foo`, we need code like this:
|
101
|
+
|
102
|
+
```ruby
|
103
|
+
def register_component_dsl_method(component)
|
104
|
+
split_name = component.name && component.name.split('::')
|
105
|
+
return unless split_name && split_name.length > 2
|
106
|
+
component_name = split_name.last
|
107
|
+
parent = split_name.inject([Module]) { |nesting, next_const| nesting + [nesting.last.const_get(next_const)] }[-2]
|
108
|
+
class << parent
|
109
|
+
define_method component_name do |*args, &block|
|
110
|
+
React::RenderingContext.render(name, *args, &block)
|
111
|
+
end
|
112
|
+
define_method "#{component_name}_as_node" do |*args, &block|
|
113
|
+
React::Component.deprecation_warning("..._as_node is deprecated. Render component and then use the .node method instead")
|
114
|
+
send(component_name, *args, &block).node
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
module React
|
120
|
+
module Component
|
121
|
+
def self.included(base)
|
122
|
+
...
|
123
|
+
register_component_dsl_method(base.name)
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
127
|
+
```
|
128
|
+
|
129
|
+
The component's method_missing function will look like this:
|
130
|
+
|
131
|
+
```ruby
|
132
|
+
def method_missing(name, *args, &block)
|
133
|
+
if name =~ /_as_node$/
|
134
|
+
React::Component.deprecation_warning("..._as_node is deprecated. Render component and then use the .node method instead")
|
135
|
+
method_missing(name.gsub(/_as_node$/,""), *args, &block).node
|
136
|
+
else
|
137
|
+
component = const_get name if defined? name
|
138
|
+
React::RenderingContext.render(nil, component, *args, &block)
|
139
|
+
end
|
140
|
+
end
|
141
|
+
```
|
142
|
+
|
143
|
+
### other related issues
|
144
|
+
|
145
|
+
The Kernel#p method conflicts with the <p> tag. However the p method can be invoked on any object so we are going to go ahead and use it, and deprecate the para method.
|
Binary file
|
data/misc/logo1.png
ADDED
Binary file
|
data/misc/logo2.png
ADDED
Binary file
|
data/misc/logo3.png
ADDED
Binary file
|
@@ -0,0 +1,9 @@
|
|
1
|
+
|
2
|
+
For example assuming you are releasing fix to 0.8.18
|
3
|
+
|
4
|
+
1. Checkout 0-8-stable
|
5
|
+
2. Update tests, fix the bug and commit the changes.
|
6
|
+
3. Build & Release to RubyGems (Remember the version in version.rb should already be 0.8.19)
|
7
|
+
4. Create a tag 'v0.8.19' pointing to that commit.
|
8
|
+
5. Bump the version in 0-8-stable to 0.8.20 so it will be ready for the next patch level release.
|
9
|
+
6. Commit the version bump, and do a `git push --tags` so the new tag goes up
|
metadata
CHANGED
@@ -1,73 +1,173 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hyper-component
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.99.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- David Chang
|
8
|
+
- Adam Jahn
|
9
|
+
- Mitch VanDuyn
|
10
|
+
- Jan Biedermann
|
11
|
+
- Adam Creekroad
|
8
12
|
autorequire:
|
9
|
-
bindir:
|
13
|
+
bindir: bin
|
10
14
|
cert_chain: []
|
11
|
-
date:
|
15
|
+
date: 2018-09-24 00:00:00.000000000 Z
|
12
16
|
dependencies:
|
13
17
|
- !ruby/object:Gem::Dependency
|
14
|
-
name: hyper-
|
18
|
+
name: hyper-store
|
15
19
|
requirement: !ruby/object:Gem::Requirement
|
16
20
|
requirements:
|
17
|
-
- -
|
21
|
+
- - '='
|
18
22
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
23
|
+
version: 0.99.0
|
20
24
|
type: :runtime
|
21
25
|
prerelease: false
|
22
26
|
version_requirements: !ruby/object:Gem::Requirement
|
23
27
|
requirements:
|
24
|
-
- -
|
28
|
+
- - '='
|
25
29
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
30
|
+
version: 0.99.0
|
27
31
|
- !ruby/object:Gem::Dependency
|
28
32
|
name: hyperloop-config
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
34
|
+
requirements:
|
35
|
+
- - '='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 0.99.0
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
requirements:
|
42
|
+
- - '='
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: 0.99.0
|
45
|
+
- !ruby/object:Gem::Dependency
|
46
|
+
name: libv8
|
47
|
+
requirement: !ruby/object:Gem::Requirement
|
48
|
+
requirements:
|
49
|
+
- - "~>"
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
version: 6.3.0
|
52
|
+
type: :runtime
|
53
|
+
prerelease: false
|
54
|
+
version_requirements: !ruby/object:Gem::Requirement
|
55
|
+
requirements:
|
56
|
+
- - "~>"
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: 6.3.0
|
59
|
+
- !ruby/object:Gem::Dependency
|
60
|
+
name: mini_racer
|
61
|
+
requirement: !ruby/object:Gem::Requirement
|
62
|
+
requirements:
|
63
|
+
- - "~>"
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: 0.1.15
|
66
|
+
type: :runtime
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: !ruby/object:Gem::Requirement
|
69
|
+
requirements:
|
70
|
+
- - "~>"
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: 0.1.15
|
73
|
+
- !ruby/object:Gem::Dependency
|
74
|
+
name: opal
|
29
75
|
requirement: !ruby/object:Gem::Requirement
|
30
76
|
requirements:
|
31
77
|
- - ">="
|
32
78
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
79
|
+
version: 0.11.0
|
80
|
+
- - "<"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.12.0
|
34
83
|
type: :runtime
|
35
84
|
prerelease: false
|
36
85
|
version_requirements: !ruby/object:Gem::Requirement
|
37
86
|
requirements:
|
38
87
|
- - ">="
|
39
88
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
89
|
+
version: 0.11.0
|
90
|
+
- - "<"
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: 0.12.0
|
93
|
+
- !ruby/object:Gem::Dependency
|
94
|
+
name: opal-activesupport
|
95
|
+
requirement: !ruby/object:Gem::Requirement
|
96
|
+
requirements:
|
97
|
+
- - "~>"
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: 0.3.1
|
100
|
+
type: :runtime
|
101
|
+
prerelease: false
|
102
|
+
version_requirements: !ruby/object:Gem::Requirement
|
103
|
+
requirements:
|
104
|
+
- - "~>"
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: 0.3.1
|
41
107
|
- !ruby/object:Gem::Dependency
|
42
108
|
name: react-rails
|
43
109
|
requirement: !ruby/object:Gem::Requirement
|
44
110
|
requirements:
|
111
|
+
- - ">="
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: 2.4.0
|
45
114
|
- - "<"
|
46
115
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
116
|
+
version: 2.5.0
|
48
117
|
type: :runtime
|
49
118
|
prerelease: false
|
50
119
|
version_requirements: !ruby/object:Gem::Requirement
|
51
120
|
requirements:
|
121
|
+
- - ">="
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: 2.4.0
|
52
124
|
- - "<"
|
53
125
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
126
|
+
version: 2.5.0
|
55
127
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
128
|
+
name: bundler
|
57
129
|
requirement: !ruby/object:Gem::Requirement
|
58
130
|
requirements:
|
59
131
|
- - "~>"
|
60
132
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
62
|
-
type: :
|
133
|
+
version: 1.16.0
|
134
|
+
type: :development
|
63
135
|
prerelease: false
|
64
136
|
version_requirements: !ruby/object:Gem::Requirement
|
65
137
|
requirements:
|
66
138
|
- - "~>"
|
67
139
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
140
|
+
version: 1.16.0
|
141
|
+
- !ruby/object:Gem::Dependency
|
142
|
+
name: chromedriver-helper
|
143
|
+
requirement: !ruby/object:Gem::Requirement
|
144
|
+
requirements:
|
145
|
+
- - ">="
|
146
|
+
- !ruby/object:Gem::Version
|
147
|
+
version: '0'
|
148
|
+
type: :development
|
149
|
+
prerelease: false
|
150
|
+
version_requirements: !ruby/object:Gem::Requirement
|
151
|
+
requirements:
|
152
|
+
- - ">="
|
153
|
+
- !ruby/object:Gem::Version
|
154
|
+
version: '0'
|
69
155
|
- !ruby/object:Gem::Dependency
|
70
156
|
name: hyper-spec
|
157
|
+
requirement: !ruby/object:Gem::Requirement
|
158
|
+
requirements:
|
159
|
+
- - '='
|
160
|
+
- !ruby/object:Gem::Version
|
161
|
+
version: 0.99.0
|
162
|
+
type: :development
|
163
|
+
prerelease: false
|
164
|
+
version_requirements: !ruby/object:Gem::Requirement
|
165
|
+
requirements:
|
166
|
+
- - '='
|
167
|
+
- !ruby/object:Gem::Version
|
168
|
+
version: 0.99.0
|
169
|
+
- !ruby/object:Gem::Dependency
|
170
|
+
name: jquery-rails
|
71
171
|
requirement: !ruby/object:Gem::Requirement
|
72
172
|
requirements:
|
73
173
|
- - ">="
|
@@ -95,7 +195,7 @@ dependencies:
|
|
95
195
|
- !ruby/object:Gem::Version
|
96
196
|
version: '0'
|
97
197
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
198
|
+
name: mime-types
|
99
199
|
requirement: !ruby/object:Gem::Requirement
|
100
200
|
requirements:
|
101
201
|
- - ">="
|
@@ -109,7 +209,7 @@ dependencies:
|
|
109
209
|
- !ruby/object:Gem::Version
|
110
210
|
version: '0'
|
111
211
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
212
|
+
name: nokogiri
|
113
213
|
requirement: !ruby/object:Gem::Requirement
|
114
214
|
requirements:
|
115
215
|
- - ">="
|
@@ -123,7 +223,7 @@ dependencies:
|
|
123
223
|
- !ruby/object:Gem::Version
|
124
224
|
version: '0'
|
125
225
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
226
|
+
name: opal-jquery
|
127
227
|
requirement: !ruby/object:Gem::Requirement
|
128
228
|
requirements:
|
129
229
|
- - ">="
|
@@ -137,7 +237,21 @@ dependencies:
|
|
137
237
|
- !ruby/object:Gem::Version
|
138
238
|
version: '0'
|
139
239
|
- !ruby/object:Gem::Dependency
|
140
|
-
name: rails
|
240
|
+
name: opal-rails
|
241
|
+
requirement: !ruby/object:Gem::Requirement
|
242
|
+
requirements:
|
243
|
+
- - "~>"
|
244
|
+
- !ruby/object:Gem::Version
|
245
|
+
version: 0.9.4
|
246
|
+
type: :development
|
247
|
+
prerelease: false
|
248
|
+
version_requirements: !ruby/object:Gem::Requirement
|
249
|
+
requirements:
|
250
|
+
- - "~>"
|
251
|
+
- !ruby/object:Gem::Version
|
252
|
+
version: 0.9.4
|
253
|
+
- !ruby/object:Gem::Dependency
|
254
|
+
name: opal-rspec
|
141
255
|
requirement: !ruby/object:Gem::Requirement
|
142
256
|
requirements:
|
143
257
|
- - ">="
|
@@ -151,7 +265,7 @@ dependencies:
|
|
151
265
|
- !ruby/object:Gem::Version
|
152
266
|
version: '0'
|
153
267
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
268
|
+
name: pry
|
155
269
|
requirement: !ruby/object:Gem::Requirement
|
156
270
|
requirements:
|
157
271
|
- - ">="
|
@@ -165,7 +279,7 @@ dependencies:
|
|
165
279
|
- !ruby/object:Gem::Version
|
166
280
|
version: '0'
|
167
281
|
- !ruby/object:Gem::Dependency
|
168
|
-
name:
|
282
|
+
name: puma
|
169
283
|
requirement: !ruby/object:Gem::Requirement
|
170
284
|
requirements:
|
171
285
|
- - ">="
|
@@ -179,7 +293,21 @@ dependencies:
|
|
179
293
|
- !ruby/object:Gem::Version
|
180
294
|
version: '0'
|
181
295
|
- !ruby/object:Gem::Dependency
|
182
|
-
name:
|
296
|
+
name: rails
|
297
|
+
requirement: !ruby/object:Gem::Requirement
|
298
|
+
requirements:
|
299
|
+
- - ">="
|
300
|
+
- !ruby/object:Gem::Version
|
301
|
+
version: 4.0.0
|
302
|
+
type: :development
|
303
|
+
prerelease: false
|
304
|
+
version_requirements: !ruby/object:Gem::Requirement
|
305
|
+
requirements:
|
306
|
+
- - ">="
|
307
|
+
- !ruby/object:Gem::Version
|
308
|
+
version: 4.0.0
|
309
|
+
- !ruby/object:Gem::Dependency
|
310
|
+
name: rails-controller-testing
|
183
311
|
requirement: !ruby/object:Gem::Requirement
|
184
312
|
requirements:
|
185
313
|
- - ">="
|
@@ -193,7 +321,7 @@ dependencies:
|
|
193
321
|
- !ruby/object:Gem::Version
|
194
322
|
version: '0'
|
195
323
|
- !ruby/object:Gem::Dependency
|
196
|
-
name:
|
324
|
+
name: rake
|
197
325
|
requirement: !ruby/object:Gem::Requirement
|
198
326
|
requirements:
|
199
327
|
- - ">="
|
@@ -207,51 +335,146 @@ dependencies:
|
|
207
335
|
- !ruby/object:Gem::Version
|
208
336
|
version: '0'
|
209
337
|
- !ruby/object:Gem::Dependency
|
210
|
-
name:
|
338
|
+
name: rspec-rails
|
339
|
+
requirement: !ruby/object:Gem::Requirement
|
340
|
+
requirements:
|
341
|
+
- - ">="
|
342
|
+
- !ruby/object:Gem::Version
|
343
|
+
version: '0'
|
344
|
+
type: :development
|
345
|
+
prerelease: false
|
346
|
+
version_requirements: !ruby/object:Gem::Requirement
|
347
|
+
requirements:
|
348
|
+
- - ">="
|
349
|
+
- !ruby/object:Gem::Version
|
350
|
+
version: '0'
|
351
|
+
- !ruby/object:Gem::Dependency
|
352
|
+
name: rubocop
|
211
353
|
requirement: !ruby/object:Gem::Requirement
|
212
354
|
requirements:
|
213
355
|
- - "~>"
|
214
356
|
- !ruby/object:Gem::Version
|
215
|
-
version:
|
357
|
+
version: 0.51.0
|
216
358
|
type: :development
|
217
359
|
prerelease: false
|
218
360
|
version_requirements: !ruby/object:Gem::Requirement
|
219
361
|
requirements:
|
220
362
|
- - "~>"
|
221
363
|
- !ruby/object:Gem::Version
|
222
|
-
version:
|
364
|
+
version: 0.51.0
|
223
365
|
- !ruby/object:Gem::Dependency
|
224
|
-
name:
|
366
|
+
name: sqlite3
|
367
|
+
requirement: !ruby/object:Gem::Requirement
|
368
|
+
requirements:
|
369
|
+
- - ">="
|
370
|
+
- !ruby/object:Gem::Version
|
371
|
+
version: '0'
|
372
|
+
type: :development
|
373
|
+
prerelease: false
|
374
|
+
version_requirements: !ruby/object:Gem::Requirement
|
375
|
+
requirements:
|
376
|
+
- - ">="
|
377
|
+
- !ruby/object:Gem::Version
|
378
|
+
version: '0'
|
379
|
+
- !ruby/object:Gem::Dependency
|
380
|
+
name: timecop
|
225
381
|
requirement: !ruby/object:Gem::Requirement
|
226
382
|
requirements:
|
227
383
|
- - "~>"
|
228
384
|
- !ruby/object:Gem::Version
|
229
|
-
version:
|
385
|
+
version: 0.8.1
|
230
386
|
type: :development
|
231
387
|
prerelease: false
|
232
388
|
version_requirements: !ruby/object:Gem::Requirement
|
233
389
|
requirements:
|
234
390
|
- - "~>"
|
235
391
|
- !ruby/object:Gem::Version
|
236
|
-
version:
|
237
|
-
description:
|
392
|
+
version: 0.8.1
|
393
|
+
description: Write React UI components in pure Ruby.
|
238
394
|
email:
|
239
395
|
- mitch@catprint.com
|
240
396
|
executables: []
|
241
397
|
extensions: []
|
242
398
|
extra_rdoc_files: []
|
243
399
|
files:
|
400
|
+
- ".codeclimate.yml"
|
244
401
|
- ".gitignore"
|
245
|
-
-
|
402
|
+
- ".travis.yml"
|
403
|
+
- CHANGELOG.md
|
404
|
+
- DOCS.md
|
246
405
|
- Gemfile
|
247
406
|
- Gemfile.lock
|
248
407
|
- LICENSE
|
408
|
+
- README.md
|
249
409
|
- Rakefile
|
250
410
|
- hyper-component.gemspec
|
251
411
|
- lib/hyper-component.rb
|
252
|
-
- lib/
|
412
|
+
- lib/rails-helpers/top_level_rails_component.rb
|
413
|
+
- lib/react/api.rb
|
414
|
+
- lib/react/callbacks.rb
|
415
|
+
- lib/react/children.rb
|
416
|
+
- lib/react/component.rb
|
417
|
+
- lib/react/component/api.rb
|
418
|
+
- lib/react/component/base.rb
|
419
|
+
- lib/react/component/class_methods.rb
|
420
|
+
- lib/react/component/dsl_instance_methods.rb
|
421
|
+
- lib/react/component/params.rb
|
422
|
+
- lib/react/component/props_wrapper.rb
|
423
|
+
- lib/react/component/should_component_update.rb
|
424
|
+
- lib/react/component/tags.rb
|
425
|
+
- lib/react/config.rb
|
426
|
+
- lib/react/element.rb
|
427
|
+
- lib/react/event.rb
|
428
|
+
- lib/react/ext/hash.rb
|
429
|
+
- lib/react/ext/opal-jquery/element.rb
|
430
|
+
- lib/react/ext/string.rb
|
431
|
+
- lib/react/native_library.rb
|
432
|
+
- lib/react/object.rb
|
253
433
|
- lib/react/react-source-browser.rb
|
254
|
-
|
434
|
+
- lib/react/react-source-server.rb
|
435
|
+
- lib/react/react-source.rb
|
436
|
+
- lib/react/ref_callback.rb
|
437
|
+
- lib/react/rendering_context.rb
|
438
|
+
- lib/react/server.rb
|
439
|
+
- lib/react/state_wrapper.rb
|
440
|
+
- lib/react/test.rb
|
441
|
+
- lib/react/test/dsl.rb
|
442
|
+
- lib/react/test/matchers/render_html_matcher.rb
|
443
|
+
- lib/react/test/rspec.rb
|
444
|
+
- lib/react/test/session.rb
|
445
|
+
- lib/react/test/utils.rb
|
446
|
+
- lib/react/to_key.rb
|
447
|
+
- lib/react/top_level.rb
|
448
|
+
- lib/react/top_level_render.rb
|
449
|
+
- lib/react/validator.rb
|
450
|
+
- lib/reactive-ruby/component_loader.rb
|
451
|
+
- lib/reactive-ruby/isomorphic_helpers.rb
|
452
|
+
- lib/reactive-ruby/rails.rb
|
453
|
+
- lib/reactive-ruby/rails/component_mount.rb
|
454
|
+
- lib/reactive-ruby/rails/controller_helper.rb
|
455
|
+
- lib/reactive-ruby/rails/railtie.rb
|
456
|
+
- lib/reactive-ruby/serializers.rb
|
457
|
+
- lib/reactive-ruby/server_rendering/contextual_renderer.rb
|
458
|
+
- lib/reactive-ruby/server_rendering/hyper_asset_container.rb
|
459
|
+
- lib/reactive-ruby/version.rb
|
460
|
+
- lib/reactrb/auto-import.rb
|
461
|
+
- misc/generators/reactive_ruby/test_app/templates/assets/javascripts/components.rb
|
462
|
+
- misc/generators/reactive_ruby/test_app/templates/assets/javascripts/server_rendering.js
|
463
|
+
- misc/generators/reactive_ruby/test_app/templates/assets/javascripts/test_application.rb
|
464
|
+
- misc/generators/reactive_ruby/test_app/templates/boot.rb.erb
|
465
|
+
- misc/generators/reactive_ruby/test_app/templates/script/rails
|
466
|
+
- misc/generators/reactive_ruby/test_app/templates/test_application.rb.erb
|
467
|
+
- misc/generators/reactive_ruby/test_app/templates/views/components/hello_world.rb
|
468
|
+
- misc/generators/reactive_ruby/test_app/templates/views/components/todo.rb
|
469
|
+
- misc/generators/reactive_ruby/test_app/templates/views/layouts/test_layout.html.erb
|
470
|
+
- misc/generators/reactive_ruby/test_app/test_app_generator.rb
|
471
|
+
- misc/how-component-name-lookup-works.md
|
472
|
+
- misc/hyperloop-logo-small-pink.png
|
473
|
+
- misc/logo1.png
|
474
|
+
- misc/logo2.png
|
475
|
+
- misc/logo3.png
|
476
|
+
- path_release_steps.md
|
477
|
+
homepage: http://ruby-hyperloop.org
|
255
478
|
licenses:
|
256
479
|
- MIT
|
257
480
|
metadata: {}
|
@@ -271,8 +494,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
271
494
|
version: '0'
|
272
495
|
requirements: []
|
273
496
|
rubyforge_project:
|
274
|
-
rubygems_version: 2.
|
497
|
+
rubygems_version: 2.7.7
|
275
498
|
signing_key:
|
276
499
|
specification_version: 4
|
277
|
-
summary:
|
500
|
+
summary: Opal Ruby wrapper of React.js library.
|
278
501
|
test_files: []
|