isomorfeus-transport 1.0.0.zeta24 → 2.0.0.rc3

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 -35
  5. data/lib/isomorfeus/transport/config.rb +182 -166
  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 -129
  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 -196
  19. data/lib/isomorfeus-transport.rb +70 -61
  20. data/lib/lucid_authentication/mixin.rb +122 -122
  21. data/lib/lucid_channel/base.rb +8 -9
  22. data/lib/lucid_channel/mixin.rb +105 -105
  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 +76 -54
  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.zeta24
4
+ version: 2.0.0.rc3
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-28 00:00:00.000000000 Z
11
+ date: 2021-11-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,168 +16,168 @@ 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
- name: dbm
42
+ name: isomorfeus-iodine
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: 0.7.45
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: 0.7.45
55
55
  - !ruby/object:Gem::Dependency
56
- name: iodine
56
+ name: oj
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.7.38
61
+ version: 3.13.9
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: 3.13.9
69
69
  - !ruby/object:Gem::Dependency
70
- name: oj
70
+ name: opal
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: 1.3.2
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: 1.3.2
83
83
  - !ruby/object:Gem::Dependency
84
- name: opal
84
+ name: isomorfeus-asset-manager
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: 0.13.8
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: 0.13.8
97
97
  - !ruby/object:Gem::Dependency
98
- name: isomorfeus-redux
98
+ name: isomorfeus-hamster
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 4.0.22
103
+ version: 0.6.1
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.22
110
+ version: 0.6.1
111
111
  - !ruby/object:Gem::Dependency
112
- name: isomorfeus-react
112
+ name: isomorfeus-preact
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ">="
115
+ - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 16.13.0
117
+ version: 10.5.11
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.13.0
124
+ version: 10.5.11
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: isomorfeus-policy
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - '='
130
130
  - !ruby/object:Gem::Version
131
- version: 1.0.0.zeta24
131
+ version: 2.0.0.rc3
132
132
  type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - '='
137
137
  - !ruby/object:Gem::Version
138
- version: 1.0.0.zeta24
138
+ version: 2.0.0.rc3
139
139
  - !ruby/object:Gem::Dependency
140
- name: websocket-driver
140
+ name: isomorfeus-redux
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: 0.7.0
145
+ version: 4.1.9
146
146
  type: :runtime
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: 0.7.0
152
+ version: 4.1.9
153
153
  - !ruby/object:Gem::Dependency
154
- name: isomorfeus
154
+ name: sorted_set
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - '='
157
+ - - "~>"
158
158
  - !ruby/object:Gem::Version
159
- version: 1.0.0.zeta24
160
- type: :development
159
+ version: 1.0.3
160
+ type: :runtime
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
- - - '='
164
+ - - "~>"
165
165
  - !ruby/object:Gem::Version
166
- version: 1.0.0.zeta24
166
+ version: 1.0.3
167
167
  - !ruby/object:Gem::Dependency
168
- name: opal-webpack-loader
168
+ name: isomorfeus
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
- - - ">="
171
+ - - '='
172
172
  - !ruby/object:Gem::Version
173
- version: 0.9.10
173
+ version: 2.0.0.rc3
174
174
  type: :development
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
- - - ">="
178
+ - - '='
179
179
  - !ruby/object:Gem::Version
180
- version: 0.9.10
180
+ version: 2.0.0.rc3
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: rake
183
183
  requirement: !ruby/object:Gem::Requirement
@@ -218,8 +218,9 @@ files:
218
218
  - lib/isomorfeus/transport.rb
219
219
  - lib/isomorfeus/transport/client_processor.rb
220
220
  - lib/isomorfeus/transport/config.rb
221
- - lib/isomorfeus/transport/dbm_session_store.rb
221
+ - lib/isomorfeus/transport/hamster_session_store.rb
222
222
  - lib/isomorfeus/transport/handler/authentication_handler.rb
223
+ - lib/isomorfeus/transport/imports.rb
223
224
  - lib/isomorfeus/transport/middlewares.rb
224
225
  - lib/isomorfeus/transport/rack_middleware.rb
225
226
  - lib/isomorfeus/transport/request_agent.rb
@@ -228,18 +229,39 @@ files:
228
229
  - lib/isomorfeus/transport/server_socket_processor.rb
229
230
  - lib/isomorfeus/transport/ssr_login.rb
230
231
  - lib/isomorfeus/transport/version.rb
231
- - lib/isomorfeus/transport/websocket.rb
232
+ - lib/isomorfeus/transport/websocket_client.rb
232
233
  - lib/lucid_authentication/mixin.rb
233
234
  - lib/lucid_channel/base.rb
234
235
  - lib/lucid_channel/mixin.rb
235
236
  - lib/lucid_handler/base.rb
236
237
  - lib/lucid_handler/mixin.rb
238
+ - node_modules/.package-lock.json
239
+ - node_modules/ws/LICENSE
240
+ - node_modules/ws/README.md
241
+ - node_modules/ws/browser.js
242
+ - node_modules/ws/index.js
243
+ - node_modules/ws/lib/buffer-util.js
244
+ - node_modules/ws/lib/constants.js
245
+ - node_modules/ws/lib/event-target.js
246
+ - node_modules/ws/lib/extension.js
247
+ - node_modules/ws/lib/limiter.js
248
+ - node_modules/ws/lib/permessage-deflate.js
249
+ - node_modules/ws/lib/receiver.js
250
+ - node_modules/ws/lib/sender.js
251
+ - node_modules/ws/lib/stream.js
252
+ - node_modules/ws/lib/subprotocol.js
253
+ - node_modules/ws/lib/validation.js
254
+ - node_modules/ws/lib/websocket-server.js
255
+ - node_modules/ws/lib/websocket.js
256
+ - node_modules/ws/package.json
257
+ - node_modules/ws/wrapper.mjs
258
+ - package.json
237
259
  homepage: http://isomorfeus.com
238
260
  licenses:
239
261
  - MIT
240
262
  metadata:
241
263
  github_repo: ssh://github.com/isomorfeus/gems
242
- post_install_message:
264
+ post_install_message:
243
265
  rdoc_options: []
244
266
  require_paths:
245
267
  - lib
@@ -254,8 +276,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
254
276
  - !ruby/object:Gem::Version
255
277
  version: 1.3.1
256
278
  requirements: []
257
- rubygems_version: 3.0.6
258
- signing_key:
279
+ rubygems_version: 3.2.22
280
+ signing_key:
259
281
  specification_version: 4
260
282
  summary: Various transport options for Isomorfeus.
261
283
  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