isomorfeus-transport 1.0.0.zeta22 → 2.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +21 -21
  3. data/README.md +27 -36
  4. data/lib/isomorfeus/transport/client_processor.rb +35 -30
  5. data/lib/isomorfeus/transport/config.rb +182 -158
  6. data/lib/isomorfeus/transport/hamster_session_store.rb +96 -0
  7. data/lib/isomorfeus/transport/handler/authentication_handler.rb +70 -70
  8. data/lib/isomorfeus/transport/imports.rb +9 -0
  9. data/lib/isomorfeus/transport/middlewares.rb +13 -13
  10. data/lib/isomorfeus/transport/rack_middleware.rb +59 -55
  11. data/lib/isomorfeus/transport/request_agent.rb +34 -34
  12. data/lib/isomorfeus/transport/response_agent.rb +23 -23
  13. data/lib/isomorfeus/transport/server_processor.rb +129 -101
  14. data/lib/isomorfeus/transport/server_socket_processor.rb +54 -54
  15. data/lib/isomorfeus/transport/ssr_login.rb +28 -28
  16. data/lib/isomorfeus/transport/version.rb +5 -5
  17. data/lib/isomorfeus/transport/{websocket.rb → websocket_client.rb} +123 -123
  18. data/lib/isomorfeus/transport.rb +200 -213
  19. data/lib/isomorfeus-transport.rb +70 -64
  20. data/lib/lucid_authentication/mixin.rb +122 -124
  21. data/lib/lucid_channel/base.rb +8 -11
  22. data/lib/lucid_channel/mixin.rb +105 -50
  23. data/lib/lucid_handler/base.rb +8 -9
  24. data/lib/lucid_handler/mixin.rb +27 -27
  25. data/node_modules/.package-lock.json +27 -0
  26. data/node_modules/ws/LICENSE +19 -0
  27. data/node_modules/ws/README.md +496 -0
  28. data/node_modules/ws/browser.js +8 -0
  29. data/node_modules/ws/index.js +13 -0
  30. data/node_modules/ws/lib/buffer-util.js +126 -0
  31. data/node_modules/ws/lib/constants.js +12 -0
  32. data/node_modules/ws/lib/event-target.js +266 -0
  33. data/node_modules/ws/lib/extension.js +203 -0
  34. data/node_modules/ws/lib/limiter.js +55 -0
  35. data/node_modules/ws/lib/permessage-deflate.js +511 -0
  36. data/node_modules/ws/lib/receiver.js +612 -0
  37. data/node_modules/ws/lib/sender.js +414 -0
  38. data/node_modules/ws/lib/stream.js +180 -0
  39. data/node_modules/ws/lib/subprotocol.js +62 -0
  40. data/node_modules/ws/lib/validation.js +124 -0
  41. data/node_modules/ws/lib/websocket-server.js +485 -0
  42. data/node_modules/ws/lib/websocket.js +1144 -0
  43. data/node_modules/ws/package.json +61 -0
  44. data/node_modules/ws/wrapper.mjs +8 -0
  45. data/package.json +6 -0
  46. metadata +82 -46
  47. data/lib/isomorfeus/transport/dbm_session_store.rb +0 -51
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "ws",
3
+ "version": "8.2.1",
4
+ "description": "Simple to use, blazing fast and thoroughly tested websocket client and server for Node.js",
5
+ "keywords": [
6
+ "HyBi",
7
+ "Push",
8
+ "RFC-6455",
9
+ "WebSocket",
10
+ "WebSockets",
11
+ "real-time"
12
+ ],
13
+ "homepage": "https://github.com/websockets/ws",
14
+ "bugs": "https://github.com/websockets/ws/issues",
15
+ "repository": "websockets/ws",
16
+ "author": "Einar Otto Stangvik <einaros@gmail.com> (http://2x.io)",
17
+ "license": "MIT",
18
+ "main": "index.js",
19
+ "exports": {
20
+ "import": "./wrapper.mjs",
21
+ "require": "./index.js"
22
+ },
23
+ "browser": "browser.js",
24
+ "engines": {
25
+ "node": ">=10.0.0"
26
+ },
27
+ "files": [
28
+ "browser.js",
29
+ "index.js",
30
+ "lib/*.js",
31
+ "wrapper.mjs"
32
+ ],
33
+ "scripts": {
34
+ "test": "nyc --reporter=lcov --reporter=text mocha --throw-deprecation test/*.test.js",
35
+ "integration": "mocha --throw-deprecation test/*.integration.js",
36
+ "lint": "eslint --ignore-path .gitignore . && prettier --check --ignore-path .gitignore \"**/*.{json,md,yaml,yml}\""
37
+ },
38
+ "peerDependencies": {
39
+ "bufferutil": "^4.0.1",
40
+ "utf-8-validate": "^5.0.2"
41
+ },
42
+ "peerDependenciesMeta": {
43
+ "bufferutil": {
44
+ "optional": true
45
+ },
46
+ "utf-8-validate": {
47
+ "optional": true
48
+ }
49
+ },
50
+ "devDependencies": {
51
+ "benchmark": "^2.1.4",
52
+ "bufferutil": "^4.0.1",
53
+ "eslint": "^7.2.0",
54
+ "eslint-config-prettier": "^8.1.0",
55
+ "eslint-plugin-prettier": "^3.0.1",
56
+ "mocha": "^8.4.0",
57
+ "nyc": "^15.0.0",
58
+ "prettier": "^2.0.5",
59
+ "utf-8-validate": "^5.0.2"
60
+ }
61
+ }
@@ -0,0 +1,8 @@
1
+ import createWebSocketStream from './lib/stream.js';
2
+ import Receiver from './lib/receiver.js';
3
+ import Sender from './lib/sender.js';
4
+ import WebSocket from './lib/websocket.js';
5
+ import WebSocketServer from './lib/websocket-server.js';
6
+
7
+ export { createWebSocketStream, Receiver, Sender, WebSocket, WebSocketServer };
8
+ export default WebSocket;
data/package.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "name": "isomorfeus-transport",
3
+ "dependencies": {
4
+ "ws": "8.2.1"
5
+ }
6
+ }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: isomorfeus-transport
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.zeta22
4
+ version: 2.0.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Biedermann
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-21 00:00:00.000000000 Z
11
+ date: 2021-11-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '6.0'
19
+ version: '6.1'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '6.0'
26
+ version: '6.1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bcrypt
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 3.1.13
33
+ version: 3.1.16
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 3.1.13
40
+ version: 3.1.16
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: dbm
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -58,126 +58,140 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.7.38
61
+ version: 0.7.44
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 0.7.38
68
+ version: 0.7.44
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: oj
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 3.10.0
75
+ version: 3.13.9
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 3.10.0
82
+ version: 3.13.9
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: opal
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 1.0.0
89
+ version: 1.3.0
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 1.0.0
96
+ version: 1.3.0
97
97
  - !ruby/object:Gem::Dependency
98
- name: isomorfeus-redux
98
+ name: isomorfeus-asset-manager
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 4.0.18
103
+ version: 0.13.2
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 4.0.18
110
+ version: 0.13.2
111
111
  - !ruby/object:Gem::Dependency
112
- name: isomorfeus-react
112
+ name: isomorfeus-hamster
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ">="
115
+ - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 16.12.20
117
+ version: 0.6.1
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ">="
122
+ - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: 16.12.20
124
+ version: 0.6.1
125
+ - !ruby/object:Gem::Dependency
126
+ name: isomorfeus-preact
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: 10.5.11
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: 10.5.11
125
139
  - !ruby/object:Gem::Dependency
126
140
  name: isomorfeus-policy
127
141
  requirement: !ruby/object:Gem::Requirement
128
142
  requirements:
129
143
  - - '='
130
144
  - !ruby/object:Gem::Version
131
- version: 1.0.0.zeta22
145
+ version: 2.0.0.rc1
132
146
  type: :runtime
133
147
  prerelease: false
134
148
  version_requirements: !ruby/object:Gem::Requirement
135
149
  requirements:
136
150
  - - '='
137
151
  - !ruby/object:Gem::Version
138
- version: 1.0.0.zeta22
152
+ version: 2.0.0.rc1
139
153
  - !ruby/object:Gem::Dependency
140
- name: websocket-driver
154
+ name: isomorfeus-redux
141
155
  requirement: !ruby/object:Gem::Requirement
142
156
  requirements:
143
157
  - - "~>"
144
158
  - !ruby/object:Gem::Version
145
- version: 0.7.0
159
+ version: 4.1.8
146
160
  type: :runtime
147
161
  prerelease: false
148
162
  version_requirements: !ruby/object:Gem::Requirement
149
163
  requirements:
150
164
  - - "~>"
151
165
  - !ruby/object:Gem::Version
152
- version: 0.7.0
166
+ version: 4.1.8
153
167
  - !ruby/object:Gem::Dependency
154
- name: isomorfeus
168
+ name: sorted_set
155
169
  requirement: !ruby/object:Gem::Requirement
156
170
  requirements:
157
- - - '='
171
+ - - "~>"
158
172
  - !ruby/object:Gem::Version
159
- version: 1.0.0.zeta22
160
- type: :development
173
+ version: 1.0.3
174
+ type: :runtime
161
175
  prerelease: false
162
176
  version_requirements: !ruby/object:Gem::Requirement
163
177
  requirements:
164
- - - '='
178
+ - - "~>"
165
179
  - !ruby/object:Gem::Version
166
- version: 1.0.0.zeta22
180
+ version: 1.0.3
167
181
  - !ruby/object:Gem::Dependency
168
- name: opal-webpack-loader
182
+ name: isomorfeus
169
183
  requirement: !ruby/object:Gem::Requirement
170
184
  requirements:
171
- - - ">="
185
+ - - '='
172
186
  - !ruby/object:Gem::Version
173
- version: 0.9.10
187
+ version: 2.0.0.rc1
174
188
  type: :development
175
189
  prerelease: false
176
190
  version_requirements: !ruby/object:Gem::Requirement
177
191
  requirements:
178
- - - ">="
192
+ - - '='
179
193
  - !ruby/object:Gem::Version
180
- version: 0.9.10
194
+ version: 2.0.0.rc1
181
195
  - !ruby/object:Gem::Dependency
182
196
  name: rake
183
197
  requirement: !ruby/object:Gem::Requirement
@@ -218,8 +232,9 @@ files:
218
232
  - lib/isomorfeus/transport.rb
219
233
  - lib/isomorfeus/transport/client_processor.rb
220
234
  - lib/isomorfeus/transport/config.rb
221
- - lib/isomorfeus/transport/dbm_session_store.rb
235
+ - lib/isomorfeus/transport/hamster_session_store.rb
222
236
  - lib/isomorfeus/transport/handler/authentication_handler.rb
237
+ - lib/isomorfeus/transport/imports.rb
223
238
  - lib/isomorfeus/transport/middlewares.rb
224
239
  - lib/isomorfeus/transport/rack_middleware.rb
225
240
  - lib/isomorfeus/transport/request_agent.rb
@@ -228,18 +243,39 @@ files:
228
243
  - lib/isomorfeus/transport/server_socket_processor.rb
229
244
  - lib/isomorfeus/transport/ssr_login.rb
230
245
  - lib/isomorfeus/transport/version.rb
231
- - lib/isomorfeus/transport/websocket.rb
246
+ - lib/isomorfeus/transport/websocket_client.rb
232
247
  - lib/lucid_authentication/mixin.rb
233
248
  - lib/lucid_channel/base.rb
234
249
  - lib/lucid_channel/mixin.rb
235
250
  - lib/lucid_handler/base.rb
236
251
  - lib/lucid_handler/mixin.rb
252
+ - node_modules/.package-lock.json
253
+ - node_modules/ws/LICENSE
254
+ - node_modules/ws/README.md
255
+ - node_modules/ws/browser.js
256
+ - node_modules/ws/index.js
257
+ - node_modules/ws/lib/buffer-util.js
258
+ - node_modules/ws/lib/constants.js
259
+ - node_modules/ws/lib/event-target.js
260
+ - node_modules/ws/lib/extension.js
261
+ - node_modules/ws/lib/limiter.js
262
+ - node_modules/ws/lib/permessage-deflate.js
263
+ - node_modules/ws/lib/receiver.js
264
+ - node_modules/ws/lib/sender.js
265
+ - node_modules/ws/lib/stream.js
266
+ - node_modules/ws/lib/subprotocol.js
267
+ - node_modules/ws/lib/validation.js
268
+ - node_modules/ws/lib/websocket-server.js
269
+ - node_modules/ws/lib/websocket.js
270
+ - node_modules/ws/package.json
271
+ - node_modules/ws/wrapper.mjs
272
+ - package.json
237
273
  homepage: http://isomorfeus.com
238
274
  licenses:
239
275
  - MIT
240
276
  metadata:
241
277
  github_repo: ssh://github.com/isomorfeus/gems
242
- post_install_message:
278
+ post_install_message:
243
279
  rdoc_options: []
244
280
  require_paths:
245
281
  - lib
@@ -254,8 +290,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
254
290
  - !ruby/object:Gem::Version
255
291
  version: 1.3.1
256
292
  requirements: []
257
- rubygems_version: 3.0.6
258
- signing_key:
293
+ rubygems_version: 3.2.22
294
+ signing_key:
259
295
  specification_version: 4
260
296
  summary: Various transport options for Isomorfeus.
261
297
  test_files: []
@@ -1,51 +0,0 @@
1
- module Isomorfeus
2
- module Transport
3
- class DbmSessionStore
4
- def initialize
5
- DBM.open(Isomorfeus.cookie_dbm_path, 0640, DBM::NEWDB).close
6
- end
7
-
8
- def add(session_id:, cookie:, user:, accessor:)
9
- DBM.open(Isomorfeus.cookie_dbm_path, 0640, DBM::WRITER) do |dbm|
10
- dbm[session_id] = Oj.dump([user.class.to_s, user.key], mode: :strict)
11
- dbm[accessor] = cookie
12
- end
13
- end
14
-
15
- def take_cookie(accessor:)
16
- DBM.open(Isomorfeus.cookie_dbm_path, 0640, DBM::WRITER) do |dbm|
17
- cookie = dbm[accessor]
18
- if cookie
19
- session_info = cookie.split('; ').first
20
- session_id = session_info.split('=').last.strip
21
- dbm["eaten_#{accessor}"] = session_id
22
- dbm.delete(accessor)
23
- else
24
- # asked for the same cookie a second time
25
- # can probably only be due to session hijacking
26
- # so delete all sessions associated with that accessor
27
- session_id = dbm["eaten_#{accessor}"]
28
- dbm.delete(session_id) if session_id
29
- end
30
- cookie
31
- end
32
- end
33
-
34
- def get_user(session_id:)
35
- json = DBM.open(Isomorfeus.cookie_dbm_path, 0640, DBM::READER) do |dbm|
36
- dbm[session_id]
37
- end
38
- if json
39
- user_info = Oj.load(json, mode: :strict)
40
- user_info[0].constantize.load(key: user_info[1]) if user_info
41
- end
42
- end
43
-
44
- def remove(session_id:)
45
- DBM.open(Isomorfeus.cookie_dbm_path, 0640, DBM::WRITER) do |dbm|
46
- dbm.delete(session_id)
47
- end
48
- end
49
- end
50
- end
51
- end