opal-up 0.0.1 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
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