opal-up 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +209 -0
  3. data/README.md +108 -23
  4. data/bin/up +5 -22
  5. data/bin/up_bun +5 -16
  6. data/bin/up_cluster +12 -0
  7. data/bin/up_node +12 -0
  8. data/bin/up_node_cluster +12 -0
  9. data/bin/up_ruby +4 -0
  10. data/bin/up_ruby_cluster +4 -0
  11. data/ext/up_ext/App.h +606 -0
  12. data/ext/up_ext/AsyncSocket.h +355 -0
  13. data/ext/up_ext/AsyncSocketData.h +87 -0
  14. data/ext/up_ext/BloomFilter.h +83 -0
  15. data/ext/up_ext/ChunkedEncoding.h +236 -0
  16. data/ext/up_ext/ClientApp.h +36 -0
  17. data/ext/up_ext/HttpContext.h +502 -0
  18. data/ext/up_ext/HttpContextData.h +56 -0
  19. data/ext/up_ext/HttpErrors.h +53 -0
  20. data/ext/up_ext/HttpParser.h +680 -0
  21. data/ext/up_ext/HttpResponse.h +578 -0
  22. data/ext/up_ext/HttpResponseData.h +95 -0
  23. data/ext/up_ext/HttpRouter.h +380 -0
  24. data/ext/up_ext/Loop.h +204 -0
  25. data/ext/up_ext/LoopData.h +112 -0
  26. data/ext/up_ext/MoveOnlyFunction.h +377 -0
  27. data/ext/up_ext/PerMessageDeflate.h +315 -0
  28. data/ext/up_ext/ProxyParser.h +163 -0
  29. data/ext/up_ext/QueryParser.h +120 -0
  30. data/ext/up_ext/TopicTree.h +363 -0
  31. data/ext/up_ext/Utilities.h +66 -0
  32. data/ext/up_ext/WebSocket.h +381 -0
  33. data/ext/up_ext/WebSocketContext.h +434 -0
  34. data/ext/up_ext/WebSocketContextData.h +109 -0
  35. data/ext/up_ext/WebSocketData.h +86 -0
  36. data/ext/up_ext/WebSocketExtensions.h +256 -0
  37. data/ext/up_ext/WebSocketHandshake.h +145 -0
  38. data/ext/up_ext/WebSocketProtocol.h +506 -0
  39. data/ext/up_ext/bsd.c +767 -0
  40. data/ext/up_ext/bsd.h +109 -0
  41. data/ext/up_ext/context.c +524 -0
  42. data/ext/up_ext/epoll_kqueue.c +458 -0
  43. data/ext/up_ext/epoll_kqueue.h +67 -0
  44. data/ext/up_ext/extconf.rb +5 -0
  45. data/ext/up_ext/internal.h +224 -0
  46. data/ext/up_ext/libusockets.h +350 -0
  47. data/ext/up_ext/libuwebsockets.cpp +1374 -0
  48. data/ext/up_ext/libuwebsockets.h +260 -0
  49. data/ext/up_ext/loop.c +386 -0
  50. data/ext/up_ext/loop_data.h +38 -0
  51. data/ext/up_ext/socket.c +231 -0
  52. data/ext/up_ext/up_ext.c +278 -0
  53. data/lib/up/bun/rack_env.rb +104 -0
  54. data/lib/up/bun/rack_server.rb +25 -0
  55. data/lib/up/bun/server.rb +89 -0
  56. data/lib/up/bun/server_cli.rb +15 -0
  57. data/lib/up/cli.rb +151 -0
  58. data/lib/up/node/cluster.rb +39 -0
  59. data/lib/up/node/cluster_cli.rb +15 -0
  60. data/lib/up/node/rack_cluster.rb +25 -0
  61. data/lib/up/node/rack_env.rb +106 -0
  62. data/lib/up/node/rack_server.rb +25 -0
  63. data/lib/up/node/server.rb +84 -0
  64. data/lib/up/node/server_cli.rb +15 -0
  65. data/lib/up/ruby/cluster_cli.rb +10 -0
  66. data/lib/up/ruby/rack_cluster.rb +26 -0
  67. data/lib/up/ruby/rack_env.rb +97 -0
  68. data/lib/up/ruby/rack_server.rb +26 -0
  69. data/lib/up/ruby/server_cli.rb +10 -0
  70. data/lib/up/u_web_socket/cluster.rb +39 -0
  71. data/lib/up/u_web_socket/cluster_cli.rb +15 -0
  72. data/lib/up/u_web_socket/rack_cluster.rb +25 -0
  73. data/lib/up/u_web_socket/rack_env.rb +101 -0
  74. data/lib/up/u_web_socket/rack_server.rb +25 -0
  75. data/lib/up/u_web_socket/server.rb +82 -0
  76. data/lib/up/u_web_socket/server_cli.rb +15 -0
  77. data/lib/up/version.rb +1 -1
  78. metadata +96 -29
  79. data/.gitignore +0 -5
  80. data/Gemfile +0 -2
  81. data/example_rack_app/Gemfile +0 -3
  82. data/example_rack_app/config.ru +0 -6
  83. data/example_rack_app/rack_app.rb +0 -5
  84. data/example_roda_app/Gemfile +0 -6
  85. data/example_roda_app/config.ru +0 -6
  86. data/example_roda_app/roda_app.rb +0 -35
  87. data/example_sinatra_app/Gemfile +0 -6
  88. data/example_sinatra_app/config.ru +0 -6
  89. data/example_sinatra_app/sinatra_app.rb +0 -7
  90. data/lib/up/bun.rb +0 -91
  91. data/lib/up/bun_cli.rb +0 -32
  92. data/lib/up/bun_rack.rb +0 -19
  93. data/lib/up/bun_rack_env.rb +0 -102
  94. data/lib/up/u_web_socket.rb +0 -83
  95. data/lib/up/u_web_socket_cluster.rb +0 -89
  96. data/lib/up/uws_cli.rb +0 -32
  97. data/lib/up/uws_rack.rb +0 -19
  98. data/lib/up/uws_rack_env.rb +0 -99
  99. data/lib/up-bun.rb +0 -7
  100. data/lib/up-node.rb +0 -7
  101. data/opal-up.gemspec +0 -27
  102. data/up_logo.svg +0 -256
@@ -0,0 +1,97 @@
1
+ require 'logger'
2
+ require 'up/version'
3
+
4
+ module Up
5
+ module Ruby
6
+ class RackEnv < ::Hash
7
+ RACK_VARS = %w[rack.errors rack.hijack rack.hijack? rack.input rack.logger
8
+ rack.multipart.buffer_size rack.multipart.tempfile_factory
9
+ rack.response_finished
10
+ rack.session rack.upgrade rack.upgrade? rack.url_scheme
11
+ HTTP_ACCEPT HTTP_ACCEPT_ENCODING HTTP_ACCEPT_LANGUAGE
12
+ HTTP_CONNECTION HTTP_HOST HTTP_USER_AGENT PATH_INFO QUERY_STRING REQUEST_METHOD
13
+ SCRIPT_NAME SERVER_NAME SERVER_PROTOCOL SERVER_SOFTWARE]
14
+ def initialize(req, config = {})
15
+ @req = req
16
+ @config = config
17
+ end
18
+
19
+ def [](key)
20
+ return super(key) if key?(key)
21
+ self[key] = case key
22
+ when 'rack.errors'
23
+ STDERR
24
+ when 'rack.hijack'
25
+ nil
26
+ when 'rack.hijack?'
27
+ false
28
+ when 'rack.input'
29
+ nil # ::IO.new
30
+ when 'rack.logger'
31
+ ::Logger.new(self['rack.errors'])
32
+ when 'rack.multipart.buffer_size'
33
+ 4096
34
+ when 'rack.multipart.tempfile_factory'
35
+ proc { |_filename, _content_type| File.new }
36
+ when 'rack.response_finished'
37
+ []
38
+ when 'rack.session'
39
+ {}
40
+ when 'rack.upgrade'
41
+ nil
42
+ when 'rack.upgrade?'
43
+ nil
44
+ when 'rack.url_scheme'
45
+ @config[:scheme]
46
+ when 'PATH_INFO'
47
+ @req.get_url
48
+ when 'QUERY_STRING'
49
+ @req.get_query
50
+ when 'RACK_ERRORS'
51
+ self['rack.errors']
52
+ when 'RACK_LOGGER'
53
+ self['rack.logger']
54
+ when 'REQUEST_METHOD'
55
+ @req.get_method
56
+ when 'SCRIPT_NAME'
57
+ ""
58
+ when 'SERVER_NAME'
59
+ @config[:host]
60
+ when 'SERVER_PORT'
61
+ @config[:port].to_s
62
+ when 'SERVER_PROTOCOL'
63
+ @req.get_header('protocol')
64
+ when 'SERVER_SOFTWARE'
65
+ "#{@config[:handler]}/#{Up::VERSION} #{@config[:engine]}"
66
+ else
67
+ if key.start_with?('HTTP_')
68
+ key = key[5..].gsub(/_/, '-')
69
+ @req.get_header(key.downcase)
70
+ else
71
+ nil
72
+ end
73
+ end
74
+ end
75
+
76
+ def req_headers
77
+ @req.headers
78
+ end
79
+
80
+ def each
81
+ unless @got_them_all
82
+ RACK_VARS.each { |k| self[k] unless self.key?(k) }
83
+ @got_them_all = true
84
+ end
85
+ super
86
+ end
87
+
88
+ def to_s
89
+ unless @got_them_all
90
+ RACK_VARS.each { |k| self[k] unless self.key?(k) }
91
+ @got_them_all = true
92
+ end
93
+ super
94
+ end
95
+ end
96
+ end
97
+ end
@@ -0,0 +1,26 @@
1
+ require 'up/ruby/rack_env'
2
+ require 'up_ext'
3
+
4
+ module Up
5
+ module Ruby
6
+ module RackServer
7
+ def self.run(app, options = {})
8
+ raise "already running" if @server
9
+ @server = Up::Ruby::Server.new(app: app, **options).listen
10
+ true
11
+ end
12
+
13
+ def self.shutdown
14
+ @server&.stop
15
+ @server = nil
16
+ end
17
+ end
18
+ end
19
+ end
20
+
21
+ ENV['RACK_HANDLER'] ||= 'up'
22
+
23
+ begin
24
+ ::Rackup::Handler.register('up', Up::Ruby::RackServer) if defined?(::Rackup::Handler)
25
+ rescue StandardError
26
+ end
@@ -0,0 +1,10 @@
1
+ require 'rack/builder'
2
+ require 'up/ruby/rack_server'
3
+
4
+ module Up
5
+ module CLI
6
+ def self.call
7
+ Up::Ruby::RackServer.run(get_app, get_options)
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,39 @@
1
+ # backtick_javascript: true
2
+ require 'up/u_web_socket/server'
3
+
4
+ %x{
5
+ const cluster = require('node:cluster');
6
+ const num_workers = require('node:os').availableParallelism();
7
+ }
8
+
9
+ module Up
10
+ module UWebSocket
11
+ class Cluster < Up::UWebSocket::Server
12
+ def initialize(app:, host: 'localhost', port: 3000, scheme: 'http', ca_file: nil, cert_file: nil, key_file: nil, workers: nil)
13
+ super(app: app, host: host, port: port, scheme: scheme, ca_file: ca_file, cert_file: cert_file, key_file: key_file)
14
+ @workers = workers || `num_workers`
15
+ @members = []
16
+ end
17
+
18
+ def listen
19
+ raise "already running" unless @members.empty?
20
+ %x{
21
+ if (cluster.isPrimary) {
22
+ for (let i = 0; i < #@workers; i++) {
23
+ #@members.push(cluster.fork());
24
+ }
25
+ } else {
26
+ #{super}
27
+ }
28
+ }
29
+ end
30
+
31
+ def stop
32
+ if Up::CLI::stoppable?
33
+ @members.each { |m| `m.kill()` }
34
+ @members.clear
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,15 @@
1
+ require 'opal/platform'
2
+ require 'nodejs/file'
3
+ require 'nodejs/require'
4
+ require 'opal-parser'
5
+ require 'rack/builder'
6
+ require 'up/rack_builder_patch'
7
+ require 'up/u_web_socket/rack_cluster'
8
+
9
+ module Up
10
+ module CLI
11
+ def self.call
12
+ Up::UWebSocket::RackCluster.run(get_app, get_options)
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,25 @@
1
+ require 'up/u_web_socket/cluster'
2
+
3
+ module Up
4
+ module UWebSocket
5
+ module RackCluster
6
+ def self.run(app, options = {})
7
+ raise "already running" if @server
8
+ @server = Up::UWebSocket::Cluster.new(app: app, **options).listen
9
+ true
10
+ end
11
+
12
+ def self.shutdown
13
+ @server&.stop
14
+ @server = nil
15
+ end
16
+ end
17
+ end
18
+ end
19
+
20
+ ENV['RACK_HANDLER'] ||= 'up'
21
+
22
+ begin
23
+ ::Rackup::Handler.register('up', Up::UWebSocket::RackCluster) if defined?(::Rackup::Handler)
24
+ rescue StandardError
25
+ end
@@ -0,0 +1,101 @@
1
+ # backtick_javascript: true
2
+
3
+ require 'logger'
4
+ require 'up/version'
5
+
6
+ module Up
7
+ module UWebSocket
8
+ class RackEnv < ::Hash
9
+ RACK_VARS = %w[rack.errors rack.hijack rack.hijack? rack.input rack.logger
10
+ rack.multipart.buffer_size rack.multipart.tempfile_factory
11
+ rack.response_finished
12
+ rack.session rack.upgrade rack.upgrade? rack.url_scheme
13
+ HTTP_ACCEPT HTTP_ACCEPT_ENCODING HTTP_ACCEPT_LANGUAGE
14
+ HTTP_CONNECTION HTTP_HOST HTTP_USER_AGENT PATH_INFO QUERY_STRING REQUEST_METHOD
15
+ SCRIPT_NAME SERVER_NAME SERVER_PROTOCOL SERVER_SOFTWARE]
16
+ def initialize(req, config)
17
+ @req = req
18
+ @config = config
19
+ end
20
+
21
+ def [](key)
22
+ return super(key) if key?(key)
23
+ self[key] = case key
24
+ when 'rack.errors'
25
+ STDERR
26
+ when 'rack.hijack'
27
+ nil
28
+ when 'rack.hijack?'
29
+ false
30
+ when 'rack.input'
31
+ ::IO.new
32
+ when 'rack.logger'
33
+ ::Logger.new(self['rack.errors'])
34
+ when 'rack.multipart.buffer_size'
35
+ 4096
36
+ when 'rack.multipart.tempfile_factory'
37
+ proc { |_filename, _content_type| File.new }
38
+ when 'rack.response_finished'
39
+ []
40
+ when 'rack.session'
41
+ {}
42
+ when 'rack.upgrade'
43
+ nil
44
+ when 'rack.upgrade?'
45
+ nil
46
+ when 'rack.url_scheme'
47
+ @config[:scheme]
48
+ when 'PATH_INFO'
49
+ `#@req.getUrl()`
50
+ when 'QUERY_STRING'
51
+ `#@req.getQuery() || nil`
52
+ when 'RACK_ERRORS'
53
+ self['rack.errors']
54
+ when 'RACK_LOGGER'
55
+ self['rack.logger']
56
+ when 'REQUEST_METHOD'
57
+ `#@req.getMethod().toUpperCase()`
58
+ when 'SCRIPT_NAME'
59
+ ""
60
+ when 'SERVER_NAME'
61
+ @config[:host]
62
+ when 'SERVER_PORT'
63
+ @config[:port].to_s
64
+ when 'SERVER_PROTOCOL'
65
+ `#@req.getHeader('protocol')`
66
+ when 'SERVER_SOFTWARE'
67
+ "#{@config[:handler]}/#{Up::VERSION} #{@config[:engine]}"
68
+ else
69
+ if key.start_with?('HTTP_')
70
+ key = key[5..].gsub(/_/, '-')
71
+ `#@req.getHeader(key.toLowerCase())`
72
+ else
73
+ nil
74
+ end
75
+ end
76
+ end
77
+
78
+ def req_headers
79
+ h = {}
80
+ `#@req.forEach((k, v) => { h.set(k, v); })`
81
+ h
82
+ end
83
+
84
+ def each
85
+ unless @got_them_all
86
+ RACK_VARS.each { |k| self[k] unless self.key?(k) }
87
+ @got_them_all = true
88
+ end
89
+ super
90
+ end
91
+
92
+ def to_s
93
+ unless @got_them_all
94
+ RACK_VARS.each { |k| self[k] unless self.key?(k) }
95
+ @got_them_all = true
96
+ end
97
+ super
98
+ end
99
+ end
100
+ end
101
+ end
@@ -0,0 +1,25 @@
1
+ require 'up/u_web_socket/server'
2
+
3
+ module Up
4
+ module UWebSocket
5
+ module RackServer
6
+ def self.run(app, options = {})
7
+ raise "already running" if @server
8
+ @server = Up::UWebSocket::Server.new(app: app, **options).listen
9
+ true
10
+ end
11
+
12
+ def self.shutdown
13
+ @server&.stop
14
+ @server = nil
15
+ end
16
+ end
17
+ end
18
+ end
19
+
20
+ ENV['RACK_HANDLER'] ||= 'up'
21
+
22
+ begin
23
+ ::Rackup::Handler.register('up', Up::UWebSocket::RackServer) if defined?(::Rackup::Handler)
24
+ rescue StandardError
25
+ end
@@ -0,0 +1,82 @@
1
+ # backtick_javascript: true
2
+ require 'up/cli'
3
+ require 'up/u_web_socket/rack_env'
4
+
5
+ %x{
6
+ module.paths.push(process.cwd() + '/node_modules');
7
+ const uws = require('uWebSockets.js');
8
+ }
9
+
10
+ module Up
11
+ module UWebSocket
12
+ class Server
13
+ def initialize(app:, host: 'localhost', port: 3000, scheme: 'http', ca_file: nil, cert_file: nil, key_file: nil)
14
+ @app = app
15
+ @scheme = scheme || 'http'
16
+ raise "unsupported scheme #{@scheme}" unless %w[http https].include?(@scheme)
17
+ @host = host || 'localhost'
18
+ @port = port&.to_i || 3000
19
+ @config = { handler: self.class.name, engine: "node/#{`process.version`}", port: port, scheme: scheme, host: host }.freeze
20
+ @ca_file = ca_file
21
+ @cert_file = cert_file
22
+ @key_file = key_file
23
+ @server = nil
24
+ end
25
+
26
+ %x{
27
+ self.handle_headers = function(rack_headers, uws_res) {
28
+ if (rack_headers.$$is_hash) {
29
+ var header, k, v;
30
+ for(header of rack_headers) {
31
+ k = header[0];
32
+ if (!k.startsWith('rack.')) {
33
+ v = header[1];
34
+ if (v.$$is_array) {
35
+ v = v.join("\n");
36
+ }
37
+ uws_res.writeHeader(k, v);
38
+ }
39
+ }
40
+ }
41
+ }
42
+
43
+ self.handle_response = function(parts, uws_res) {
44
+ if (parts["$respond_to?"]('each')) {
45
+ #{`parts`.each { |part| `uws_res.write(part)` }}
46
+ } else if (parts["$respond_to?"]('call')) {
47
+ uws_res.write(parts.$call());
48
+ }
49
+ #{`parts`.close if `parts`.respond_to?(:close)}
50
+ }
51
+ }
52
+
53
+ def listen
54
+ raise "already running" if @server
55
+ %x{
56
+ const ouwr = Opal.Up.UWebSocket.RackEnv;
57
+ const ouws = Opal.Up.UWebSocket.Server;
58
+ if (#@scheme == 'https') {
59
+ #@server = uws.SSLApp({ ca_file_name: #@ca_file, cert_file_name: #@cert_file, key_file_name: #@key_file });
60
+ } else {
61
+ #@server = uws.App();
62
+ }
63
+ #@server.any('/*', (res, req) => {
64
+ const rack_res = #@app.$call(ouwr.$new(req, #@config));
65
+ res.writeStatus(`${rack_res[0].toString()} OK`);
66
+ ouws.handle_headers(rack_res[1], res);
67
+ ouws.handle_response(rack_res[2], res);
68
+ res.end();
69
+ });
70
+ #@server.listen(#@port, #@host, () => { console.log(`Server is running on ${#@scheme}://${#@host}:${#@port}`)});
71
+ }
72
+ end
73
+
74
+ def stop
75
+ if Up::CLI::stoppable?
76
+ `#@server.close()`
77
+ @server = nil
78
+ end
79
+ end
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,15 @@
1
+ require 'opal/platform'
2
+ require 'nodejs/file'
3
+ require 'nodejs/require'
4
+ require 'opal-parser'
5
+ require 'rack/builder'
6
+ require 'up/rack_builder_patch'
7
+ require 'up/u_web_socket/rack_server'
8
+
9
+ module Up
10
+ module CLI
11
+ def self.call
12
+ Up::UWebSocket::RackServer.run(get_app, get_options)
13
+ end
14
+ end
15
+ end
data/lib/up/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Up
2
- VERSION = '0.0.1'.freeze
2
+ VERSION = '0.0.3'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opal-up
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Biedermann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-02-02 00:00:00.000000000 Z
11
+ date: 2024-02-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: logger
@@ -92,6 +92,20 @@ dependencies:
92
92
  - - "~>"
93
93
  - !ruby/object:Gem::Version
94
94
  version: 13.1.0
95
+ - !ruby/object:Gem::Dependency
96
+ name: rake-compiler
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - "~>"
100
+ - !ruby/object:Gem::Version
101
+ version: 1.2.7
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - "~>"
107
+ - !ruby/object:Gem::Version
108
+ version: 1.2.7
95
109
  - !ruby/object:Gem::Dependency
96
110
  name: rspec
97
111
  requirement: !ruby/object:Gem::Requirement
@@ -106,45 +120,98 @@ dependencies:
106
120
  - - "~>"
107
121
  - !ruby/object:Gem::Version
108
122
  version: 3.12.0
109
- description: High performance Rack server for Opal Ruby
123
+ description: High performance Rack server for Opal and Ruby
110
124
  email:
111
125
  - jan@kursator.de
112
126
  executables:
113
127
  - up
114
128
  - up_bun
115
- extensions: []
129
+ - up_cluster
130
+ - up_node
131
+ - up_node_cluster
132
+ - up_ruby
133
+ - up_ruby_cluster
134
+ extensions:
135
+ - ext/up_ext/extconf.rb
116
136
  extra_rdoc_files: []
117
137
  files:
118
- - ".gitignore"
119
- - Gemfile
120
138
  - LICENSE
121
139
  - README.md
122
140
  - bin/up
123
141
  - bin/up_bun
124
- - example_rack_app/Gemfile
125
- - example_rack_app/config.ru
126
- - example_rack_app/rack_app.rb
127
- - example_roda_app/Gemfile
128
- - example_roda_app/config.ru
129
- - example_roda_app/roda_app.rb
130
- - example_sinatra_app/Gemfile
131
- - example_sinatra_app/config.ru
132
- - example_sinatra_app/sinatra_app.rb
133
- - lib/up-bun.rb
134
- - lib/up-node.rb
135
- - lib/up/bun.rb
136
- - lib/up/bun_cli.rb
137
- - lib/up/bun_rack.rb
138
- - lib/up/bun_rack_env.rb
142
+ - bin/up_cluster
143
+ - bin/up_node
144
+ - bin/up_node_cluster
145
+ - bin/up_ruby
146
+ - bin/up_ruby_cluster
147
+ - ext/up_ext/App.h
148
+ - ext/up_ext/AsyncSocket.h
149
+ - ext/up_ext/AsyncSocketData.h
150
+ - ext/up_ext/BloomFilter.h
151
+ - ext/up_ext/ChunkedEncoding.h
152
+ - ext/up_ext/ClientApp.h
153
+ - ext/up_ext/HttpContext.h
154
+ - ext/up_ext/HttpContextData.h
155
+ - ext/up_ext/HttpErrors.h
156
+ - ext/up_ext/HttpParser.h
157
+ - ext/up_ext/HttpResponse.h
158
+ - ext/up_ext/HttpResponseData.h
159
+ - ext/up_ext/HttpRouter.h
160
+ - ext/up_ext/Loop.h
161
+ - ext/up_ext/LoopData.h
162
+ - ext/up_ext/MoveOnlyFunction.h
163
+ - ext/up_ext/PerMessageDeflate.h
164
+ - ext/up_ext/ProxyParser.h
165
+ - ext/up_ext/QueryParser.h
166
+ - ext/up_ext/TopicTree.h
167
+ - ext/up_ext/Utilities.h
168
+ - ext/up_ext/WebSocket.h
169
+ - ext/up_ext/WebSocketContext.h
170
+ - ext/up_ext/WebSocketContextData.h
171
+ - ext/up_ext/WebSocketData.h
172
+ - ext/up_ext/WebSocketExtensions.h
173
+ - ext/up_ext/WebSocketHandshake.h
174
+ - ext/up_ext/WebSocketProtocol.h
175
+ - ext/up_ext/bsd.c
176
+ - ext/up_ext/bsd.h
177
+ - ext/up_ext/context.c
178
+ - ext/up_ext/epoll_kqueue.c
179
+ - ext/up_ext/epoll_kqueue.h
180
+ - ext/up_ext/extconf.rb
181
+ - ext/up_ext/internal.h
182
+ - ext/up_ext/libusockets.h
183
+ - ext/up_ext/libuwebsockets.cpp
184
+ - ext/up_ext/libuwebsockets.h
185
+ - ext/up_ext/loop.c
186
+ - ext/up_ext/loop_data.h
187
+ - ext/up_ext/socket.c
188
+ - ext/up_ext/up_ext.c
189
+ - lib/up/bun/rack_env.rb
190
+ - lib/up/bun/rack_server.rb
191
+ - lib/up/bun/server.rb
192
+ - lib/up/bun/server_cli.rb
193
+ - lib/up/cli.rb
194
+ - lib/up/node/cluster.rb
195
+ - lib/up/node/cluster_cli.rb
196
+ - lib/up/node/rack_cluster.rb
197
+ - lib/up/node/rack_env.rb
198
+ - lib/up/node/rack_server.rb
199
+ - lib/up/node/server.rb
200
+ - lib/up/node/server_cli.rb
139
201
  - lib/up/rack_builder_patch.rb
140
- - lib/up/u_web_socket.rb
141
- - lib/up/u_web_socket_cluster.rb
142
- - lib/up/uws_cli.rb
143
- - lib/up/uws_rack.rb
144
- - lib/up/uws_rack_env.rb
202
+ - lib/up/ruby/cluster_cli.rb
203
+ - lib/up/ruby/rack_cluster.rb
204
+ - lib/up/ruby/rack_env.rb
205
+ - lib/up/ruby/rack_server.rb
206
+ - lib/up/ruby/server_cli.rb
207
+ - lib/up/u_web_socket/cluster.rb
208
+ - lib/up/u_web_socket/cluster_cli.rb
209
+ - lib/up/u_web_socket/rack_cluster.rb
210
+ - lib/up/u_web_socket/rack_env.rb
211
+ - lib/up/u_web_socket/rack_server.rb
212
+ - lib/up/u_web_socket/server.rb
213
+ - lib/up/u_web_socket/server_cli.rb
145
214
  - lib/up/version.rb
146
- - opal-up.gemspec
147
- - up_logo.svg
148
215
  homepage: ''
149
216
  licenses:
150
217
  - MIT
@@ -157,7 +224,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
157
224
  requirements:
158
225
  - - ">="
159
226
  - !ruby/object:Gem::Version
160
- version: '0'
227
+ version: 3.0.0
161
228
  required_rubygems_version: !ruby/object:Gem::Requirement
162
229
  requirements:
163
230
  - - ">="
data/.gitignore DELETED
@@ -1,5 +0,0 @@
1
- node_modules
2
- Gemfile.lock
3
- package-lock.json
4
- package.json
5
- *.gem
data/Gemfile DELETED
@@ -1,2 +0,0 @@
1
- source 'https://rubygems.org'
2
- gemspec
@@ -1,3 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gem 'opal-up', path: '../'
@@ -1,6 +0,0 @@
1
- require_relative 'rack_app'
2
- if defined? RubyVM
3
- # ensure up contenders use a JIT
4
- RubyVM::YJIT.enable
5
- end
6
- run RackApp
@@ -1,5 +0,0 @@
1
- class RackApp
2
- def self.call(env)
3
- [200, {}, [env.to_s]]
4
- end
5
- end
@@ -1,6 +0,0 @@
1
- source 'https://rubygems.org'
2
- git_source(:github) { |repo| "https://github.com/#{repo}.git" }
3
-
4
- gem 'opal', github: 'opal/opal'
5
- gem 'opal-up', path: '../'
6
- gem 'roda'
@@ -1,6 +0,0 @@
1
- require_relative 'roda_app'
2
- if defined? RubyVM
3
- # ensure up contenders use a JIT
4
- RubyVM::YJIT.enable
5
- end
6
- run RodaApp.freeze