hyper-component 0.12.3 → 0.99.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. checksums.yaml +5 -5
  2. data/.codeclimate.yml +27 -0
  3. data/.gitignore +42 -41
  4. data/.travis.yml +29 -0
  5. data/CHANGELOG.md +143 -0
  6. data/DOCS.md +1515 -0
  7. data/Gemfile +5 -2
  8. data/Gemfile.lock +244 -193
  9. data/LICENSE +5 -7
  10. data/README.md +49 -0
  11. data/Rakefile +40 -0
  12. data/hyper-component.gemspec +41 -31
  13. data/lib/hyper-component.rb +44 -9
  14. data/lib/rails-helpers/top_level_rails_component.rb +79 -0
  15. data/lib/react/api.rb +270 -0
  16. data/lib/react/callbacks.rb +42 -0
  17. data/lib/react/children.rb +38 -0
  18. data/lib/react/component.rb +189 -0
  19. data/lib/react/component/api.rb +70 -0
  20. data/lib/react/component/base.rb +13 -0
  21. data/lib/react/component/class_methods.rb +175 -0
  22. data/lib/react/component/dsl_instance_methods.rb +23 -0
  23. data/lib/react/component/params.rb +6 -0
  24. data/lib/react/component/props_wrapper.rb +90 -0
  25. data/lib/react/component/should_component_update.rb +99 -0
  26. data/lib/react/component/tags.rb +116 -0
  27. data/lib/react/config.rb +5 -0
  28. data/lib/react/element.rb +159 -0
  29. data/lib/react/event.rb +76 -0
  30. data/lib/react/ext/hash.rb +9 -0
  31. data/lib/react/ext/opal-jquery/element.rb +37 -0
  32. data/lib/react/ext/string.rb +8 -0
  33. data/lib/react/native_library.rb +87 -0
  34. data/lib/react/object.rb +15 -0
  35. data/lib/react/react-source-server.rb +3 -0
  36. data/lib/react/react-source.rb +17 -0
  37. data/lib/react/ref_callback.rb +31 -0
  38. data/lib/react/rendering_context.rb +149 -0
  39. data/lib/react/server.rb +19 -0
  40. data/lib/react/state_wrapper.rb +23 -0
  41. data/lib/react/test.rb +16 -0
  42. data/lib/react/test/dsl.rb +17 -0
  43. data/lib/react/test/matchers/render_html_matcher.rb +56 -0
  44. data/lib/react/test/rspec.rb +15 -0
  45. data/lib/react/test/session.rb +37 -0
  46. data/lib/react/test/utils.rb +71 -0
  47. data/lib/react/to_key.rb +26 -0
  48. data/lib/react/top_level.rb +110 -0
  49. data/lib/react/top_level_render.rb +28 -0
  50. data/lib/react/validator.rb +132 -0
  51. data/lib/reactive-ruby/component_loader.rb +43 -0
  52. data/lib/reactive-ruby/isomorphic_helpers.rb +233 -0
  53. data/lib/reactive-ruby/rails.rb +8 -0
  54. data/lib/reactive-ruby/rails/component_mount.rb +48 -0
  55. data/lib/reactive-ruby/rails/controller_helper.rb +14 -0
  56. data/lib/reactive-ruby/rails/railtie.rb +20 -0
  57. data/lib/reactive-ruby/serializers.rb +23 -0
  58. data/lib/reactive-ruby/server_rendering/contextual_renderer.rb +46 -0
  59. data/lib/reactive-ruby/server_rendering/hyper_asset_container.rb +46 -0
  60. data/lib/{hyperloop/component → reactive-ruby}/version.rb +1 -1
  61. data/lib/reactrb/auto-import.rb +27 -0
  62. data/misc/generators/reactive_ruby/test_app/templates/assets/javascripts/components.rb +3 -0
  63. data/misc/generators/reactive_ruby/test_app/templates/assets/javascripts/server_rendering.js +5 -0
  64. data/misc/generators/reactive_ruby/test_app/templates/assets/javascripts/test_application.rb +2 -0
  65. data/misc/generators/reactive_ruby/test_app/templates/boot.rb.erb +6 -0
  66. data/misc/generators/reactive_ruby/test_app/templates/script/rails +5 -0
  67. data/misc/generators/reactive_ruby/test_app/templates/test_application.rb.erb +13 -0
  68. data/misc/generators/reactive_ruby/test_app/templates/views/components/hello_world.rb +11 -0
  69. data/misc/generators/reactive_ruby/test_app/templates/views/components/todo.rb +14 -0
  70. data/misc/generators/reactive_ruby/test_app/templates/views/layouts/test_layout.html.erb +0 -0
  71. data/misc/generators/reactive_ruby/test_app/test_app_generator.rb +121 -0
  72. data/misc/how-component-name-lookup-works.md +145 -0
  73. data/misc/hyperloop-logo-small-pink.png +0 -0
  74. data/misc/logo1.png +0 -0
  75. data/misc/logo2.png +0 -0
  76. data/misc/logo3.png +0 -0
  77. data/path_release_steps.md +9 -0
  78. metadata +260 -37
  79. data/CODE_OF_CONDUCT.md +0 -49
@@ -1,5 +1,5 @@
1
1
  module Hyperloop
2
2
  class Component
3
- VERSION = "0.12.3"
3
+ VERSION = '0.99.0'
4
4
  end
5
5
  end
@@ -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,3 @@
1
+ require 'opal'
2
+ require 'hyper-react'
3
+ require_tree './components'
@@ -0,0 +1,5 @@
1
+ //= require 'react-server'
2
+ //= require 'react_ujs'
3
+ //= require 'components'
4
+
5
+ Opal.load('components')
@@ -0,0 +1,2 @@
1
+ require 'components'
2
+ require 'react_ujs'
@@ -0,0 +1,6 @@
1
+ require 'rubygems'
2
+ gemfile = File.expand_path("<%= gemfile_path %>", __FILE__)
3
+
4
+ ENV['BUNDLE_GEMFILE'] = gemfile
5
+ require 'bundler'
6
+ Bundler.setup
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
4
+ require File.expand_path('../../config/boot', __FILE__)
5
+ require 'rails/commands'
@@ -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 %>
@@ -0,0 +1,11 @@
1
+ module Components
2
+ class HelloWorld
3
+ include React::Component
4
+
5
+ def render
6
+ div do
7
+ "Hello, World!".span
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,14 @@
1
+ module Components
2
+ class Todo
3
+ include React::Component
4
+ export_component
5
+
6
+ params do
7
+ requires :todo
8
+ end
9
+
10
+ def render
11
+ li { "#{params[:todo]}" }
12
+ end
13
+ end
14
+ end
@@ -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
Binary file
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.12.3
4
+ version: 0.99.0
5
5
  platform: ruby
6
6
  authors:
7
- - catmando
7
+ - David Chang
8
+ - Adam Jahn
9
+ - Mitch VanDuyn
10
+ - Jan Biedermann
11
+ - Adam Creekroad
8
12
  autorequire:
9
- bindir: exe
13
+ bindir: bin
10
14
  cert_chain: []
11
- date: 2017-03-21 00:00:00.000000000 Z
15
+ date: 2018-09-24 00:00:00.000000000 Z
12
16
  dependencies:
13
17
  - !ruby/object:Gem::Dependency
14
- name: hyper-react
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.12.3
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.12.3
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.9.2
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.9.2
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: 1.10.0
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: 1.10.0
126
+ version: 2.5.0
55
127
  - !ruby/object:Gem::Dependency
56
- name: opal-rails
128
+ name: bundler
57
129
  requirement: !ruby/object:Gem::Requirement
58
130
  requirements:
59
131
  - - "~>"
60
132
  - !ruby/object:Gem::Version
61
- version: 0.9.0
62
- type: :runtime
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: 0.9.0
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: opal
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: opal-browser
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: pry-byebug
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: rspec
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: rspec-steps
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: sqlite3
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: rubocop
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: bundler
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: '1.12'
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: '1.12'
364
+ version: 0.51.0
223
365
  - !ruby/object:Gem::Dependency
224
- name: rake
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: '10.0'
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: '10.0'
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
- - CODE_OF_CONDUCT.md
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/hyperloop/component/version.rb
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
- homepage: http://ruby-hyperloop.io
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.5.1
497
+ rubygems_version: 2.7.7
275
498
  signing_key:
276
499
  specification_version: 4
277
- summary: The Hyperloop rendering engine. Write React components in Ruby.
500
+ summary: Opal Ruby wrapper of React.js library.
278
501
  test_files: []