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.
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: []