openportal 0.1.1 → 0.1.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.
- package/README.md +113 -0
- package/package.json +1 -1
- package/web/.next/static/{A7pW-dtFIbPCSkvE8uenX → Im7EdK1Q3oOmTznohTOr5}/_buildManifest.js +4 -9
- package/web/.next/static/chunks/{2e7bfb90c343ca96.js → 35cc9dbdc670c73c.js} +4 -4
- package/web/.next/static/chunks/4147ffc67a7b837c.css +1 -0
- package/web/.next/static/chunks/{21ab2574b84ad2d1.js → 52b90bc1740162c2.js} +2 -2
- package/web/.next/static/chunks/{9b265e2198b5525f.js → 8644d68bf325ff24.js} +3 -3
- package/web/.next/static/chunks/{03e1846335a31354.js → 9865709466b09f79.js} +3 -3
- package/web/.next/static/chunks/{c20ae04df8cc28be.js → 9ba9a5774c9421bd.js} +3 -3
- package/web/.next/static/chunks/{967a1e0002fe9ae6.js → b5caad256518cb33.js} +3 -3
- package/web/.next/static/chunks/{turbopack-27558c851386934e.js → turbopack-26af71e419c11487.js} +1 -1
- package/web/.next/static/chunks/{turbopack-f4c0881f9723f5a5.js → turbopack-4ad0df7330c00c8d.js} +1 -1
- package/web/.next/static/chunks/{turbopack-26688626142ac58f.js → turbopack-8e653f3ad3a8ed18.js} +1 -1
- package/web/.next/static/chunks/{turbopack-c40ec6674624f1d7.js → turbopack-d5098189d63fd7b8.js} +1 -1
- package/web/apps/web/.next/BUILD_ID +1 -1
- package/web/apps/web/.next/build-manifest.json +14 -24
- package/web/apps/web/.next/routes-manifest.json +0 -12
- package/web/apps/web/.next/server/chunks/[root-of-the-server]__f366ca98._.js +358 -0
- package/web/apps/web/.next/server/chunks/ssr/{[root-of-the-server]__dfeaf8cf._.js → [root-of-the-server]__1a54ba1e._.js} +3 -3
- package/web/apps/web/.next/server/middleware-build-manifest.js +12 -22
- package/web/apps/web/.next/server/next-font-manifest.js +1 -1
- package/web/apps/web/.next/server/next-font-manifest.json +0 -4
- package/web/apps/web/.next/server/pages/404.html +1 -1
- package/web/apps/web/.next/server/pages/500.html +1 -1
- package/web/apps/web/.next/server/pages/_app/build-manifest.json +3 -3
- package/web/apps/web/.next/server/pages/_app/client-build-manifest.json +1 -1
- package/web/apps/web/.next/server/pages/api/[[...slugs]].js +1 -2
- package/web/apps/web/.next/server/pages/api/[[...slugs]].js.nft.json +1 -1
- package/web/apps/web/.next/server/pages/index/build-manifest.json +3 -3
- package/web/apps/web/.next/server/pages/index/client-build-manifest.json +1 -1
- package/web/apps/web/.next/server/pages/index.html +1 -1
- package/web/apps/web/.next/server/pages/index.js.nft.json +1 -1
- package/web/apps/web/.next/server/pages/session/[id]/build-manifest.json +4 -4
- package/web/apps/web/.next/server/pages/session/[id]/client-build-manifest.json +1 -1
- package/web/apps/web/.next/server/pages/session/[id].html +1 -1
- package/web/apps/web/.next/server/pages/session/[id].js.nft.json +1 -1
- package/web/apps/web/.next/server/pages/settings/build-manifest.json +3 -3
- package/web/apps/web/.next/server/pages/settings/client-build-manifest.json +1 -1
- package/web/apps/web/.next/server/pages/settings.html +1 -1
- package/web/apps/web/.next/server/pages/settings.js.nft.json +1 -1
- package/web/apps/web/.next/server/pages-manifest.json +0 -2
- package/web/apps/web/package.json +1 -9
- package/web/.next/static/chunks/04d4692d75696297.css +0 -1
- package/web/.next/static/chunks/553710f60e2f2b11.js +0 -1
- package/web/.next/static/chunks/58acbbb4090e3362.js +0 -3
- package/web/.next/static/chunks/6ce1e2f08f961db5.js +0 -2
- package/web/.next/static/chunks/d316d63225992c76.js +0 -10
- package/web/.next/static/chunks/e0c97552ba7a9e3d.js +0 -1
- package/web/.next/static/chunks/fc9c4f2dabfb4e0e.css +0 -1
- package/web/.next/static/chunks/turbopack-1837909a677d116b.js +0 -3
- package/web/apps/web/.next/server/chunks/[root-of-the-server]__0f75905d._.js +0 -3
- package/web/apps/web/.next/server/chunks/[root-of-the-server]__89e85365._.js +0 -358
- package/web/apps/web/.next/server/chunks/[root-of-the-server]__ae1361d0._.js +0 -3
- package/web/apps/web/.next/server/pages/api/terminal/ws/pages-manifest.json +0 -3
- package/web/apps/web/.next/server/pages/api/terminal/ws.js +0 -5
- package/web/apps/web/.next/server/pages/api/terminal/ws.js.map +0 -5
- package/web/apps/web/.next/server/pages/api/terminal/ws.js.nft.json +0 -1
- package/web/apps/web/.next/server/pages/terminal/build-manifest.json +0 -20
- package/web/apps/web/.next/server/pages/terminal/client-build-manifest.json +0 -5
- package/web/apps/web/.next/server/pages/terminal/next-font-manifest.json +0 -11
- package/web/apps/web/.next/server/pages/terminal/pages-manifest.json +0 -3
- package/web/apps/web/.next/server/pages/terminal/react-loadable-manifest.json +0 -1
- package/web/apps/web/.next/server/pages/terminal.html +0 -1
- package/web/apps/web/.next/server/pages/terminal.js.map +0 -5
- package/web/apps/web/.next/server/pages/terminal.js.nft.json +0 -1
- package/web/node_modules/.bun/@socket.io+component-emitter@3.1.2/node_modules/@socket.io/component-emitter/lib/cjs/index.js +0 -176
- package/web/node_modules/.bun/@socket.io+component-emitter@3.1.2/node_modules/@socket.io/component-emitter/lib/cjs/package.json +0 -4
- package/web/node_modules/.bun/@socket.io+component-emitter@3.1.2/node_modules/@socket.io/component-emitter/package.json +0 -28
- package/web/node_modules/.bun/accepts@1.3.8/node_modules/accepts/index.js +0 -238
- package/web/node_modules/.bun/accepts@1.3.8/node_modules/accepts/package.json +0 -47
- package/web/node_modules/.bun/base64id@2.0.0/node_modules/base64id/lib/base64id.js +0 -103
- package/web/node_modules/.bun/base64id@2.0.0/node_modules/base64id/package.json +0 -13
- package/web/node_modules/.bun/cookie@0.7.2/node_modules/cookie/index.js +0 -335
- package/web/node_modules/.bun/cookie@0.7.2/node_modules/cookie/package.json +0 -44
- package/web/node_modules/.bun/cookie@1.1.1/node_modules/cookie/package.json +0 -47
- package/web/node_modules/.bun/cors@2.8.5/node_modules/cors/lib/index.js +0 -238
- package/web/node_modules/.bun/cors@2.8.5/node_modules/cors/package.json +0 -41
- package/web/node_modules/.bun/debug@4.3.7/node_modules/debug/package.json +0 -60
- package/web/node_modules/.bun/debug@4.3.7/node_modules/debug/src/browser.js +0 -271
- package/web/node_modules/.bun/debug@4.3.7/node_modules/debug/src/common.js +0 -274
- package/web/node_modules/.bun/debug@4.3.7/node_modules/debug/src/index.js +0 -10
- package/web/node_modules/.bun/debug@4.3.7/node_modules/debug/src/node.js +0 -263
- package/web/node_modules/.bun/engine.io-parser@5.2.3/node_modules/engine.io-parser/build/cjs/commons.js +0 -19
- package/web/node_modules/.bun/engine.io-parser@5.2.3/node_modules/engine.io-parser/build/cjs/decodePacket.js +0 -59
- package/web/node_modules/.bun/engine.io-parser@5.2.3/node_modules/engine.io-parser/build/cjs/encodePacket.js +0 -38
- package/web/node_modules/.bun/engine.io-parser@5.2.3/node_modules/engine.io-parser/build/cjs/index.js +0 -164
- package/web/node_modules/.bun/engine.io-parser@5.2.3/node_modules/engine.io-parser/build/cjs/package.json +0 -8
- package/web/node_modules/.bun/engine.io-parser@5.2.3/node_modules/engine.io-parser/package.json +0 -46
- package/web/node_modules/.bun/engine.io@6.6.4/node_modules/engine.io/build/engine.io.js +0 -54
- package/web/node_modules/.bun/engine.io@6.6.4/node_modules/engine.io/build/parser-v3/index.js +0 -424
- package/web/node_modules/.bun/engine.io@6.6.4/node_modules/engine.io/build/parser-v3/utf8.js +0 -187
- package/web/node_modules/.bun/engine.io@6.6.4/node_modules/engine.io/build/server.js +0 -786
- package/web/node_modules/.bun/engine.io@6.6.4/node_modules/engine.io/build/socket.js +0 -460
- package/web/node_modules/.bun/engine.io@6.6.4/node_modules/engine.io/build/transport.js +0 -117
- package/web/node_modules/.bun/engine.io@6.6.4/node_modules/engine.io/build/transports/index.js +0 -23
- package/web/node_modules/.bun/engine.io@6.6.4/node_modules/engine.io/build/transports/polling-jsonp.js +0 -41
- package/web/node_modules/.bun/engine.io@6.6.4/node_modules/engine.io/build/transports/polling.js +0 -332
- package/web/node_modules/.bun/engine.io@6.6.4/node_modules/engine.io/build/transports/websocket.js +0 -94
- package/web/node_modules/.bun/engine.io@6.6.4/node_modules/engine.io/build/transports/webtransport.js +0 -63
- package/web/node_modules/.bun/engine.io@6.6.4/node_modules/engine.io/build/transports-uws/index.js +0 -8
- package/web/node_modules/.bun/engine.io@6.6.4/node_modules/engine.io/build/transports-uws/polling.js +0 -364
- package/web/node_modules/.bun/engine.io@6.6.4/node_modules/engine.io/build/transports-uws/websocket.js +0 -73
- package/web/node_modules/.bun/engine.io@6.6.4/node_modules/engine.io/build/userver.js +0 -279
- package/web/node_modules/.bun/engine.io@6.6.4/node_modules/engine.io/package.json +0 -70
- package/web/node_modules/.bun/has-flag@4.0.0/node_modules/has-flag/index.js +0 -8
- package/web/node_modules/.bun/has-flag@4.0.0/node_modules/has-flag/package.json +0 -46
- package/web/node_modules/.bun/mime-db@1.52.0/node_modules/mime-db/db.json +0 -8519
- package/web/node_modules/.bun/mime-db@1.52.0/node_modules/mime-db/index.js +0 -12
- package/web/node_modules/.bun/mime-db@1.52.0/node_modules/mime-db/package.json +0 -60
- package/web/node_modules/.bun/mime-types@2.1.35/node_modules/mime-types/index.js +0 -188
- package/web/node_modules/.bun/mime-types@2.1.35/node_modules/mime-types/package.json +0 -44
- package/web/node_modules/.bun/ms@2.1.3/node_modules/ms/index.js +0 -162
- package/web/node_modules/.bun/ms@2.1.3/node_modules/ms/package.json +0 -38
- package/web/node_modules/.bun/negotiator@0.6.3/node_modules/negotiator/index.js +0 -82
- package/web/node_modules/.bun/negotiator@0.6.3/node_modules/negotiator/lib/charset.js +0 -169
- package/web/node_modules/.bun/negotiator@0.6.3/node_modules/negotiator/lib/encoding.js +0 -184
- package/web/node_modules/.bun/negotiator@0.6.3/node_modules/negotiator/lib/language.js +0 -179
- package/web/node_modules/.bun/negotiator@0.6.3/node_modules/negotiator/lib/mediaType.js +0 -294
- package/web/node_modules/.bun/negotiator@0.6.3/node_modules/negotiator/package.json +0 -42
- package/web/node_modules/.bun/object-assign@4.1.1/node_modules/object-assign/index.js +0 -90
- package/web/node_modules/.bun/object-assign@4.1.1/node_modules/object-assign/package.json +0 -42
- package/web/node_modules/.bun/socket.io-adapter@2.5.5/node_modules/socket.io-adapter/dist/cluster-adapter.js +0 -674
- package/web/node_modules/.bun/socket.io-adapter@2.5.5/node_modules/socket.io-adapter/dist/contrib/yeast.js +0 -55
- package/web/node_modules/.bun/socket.io-adapter@2.5.5/node_modules/socket.io-adapter/dist/in-memory-adapter.js +0 -394
- package/web/node_modules/.bun/socket.io-adapter@2.5.5/node_modules/socket.io-adapter/dist/index.js +0 -10
- package/web/node_modules/.bun/socket.io-adapter@2.5.5/node_modules/socket.io-adapter/package.json +0 -39
- package/web/node_modules/.bun/socket.io-parser@4.2.4/node_modules/socket.io-parser/build/cjs/binary.js +0 -88
- package/web/node_modules/.bun/socket.io-parser@4.2.4/node_modules/socket.io-parser/build/cjs/index.js +0 -321
- package/web/node_modules/.bun/socket.io-parser@4.2.4/node_modules/socket.io-parser/build/cjs/is-binary.js +0 -55
- package/web/node_modules/.bun/socket.io-parser@4.2.4/node_modules/socket.io-parser/build/cjs/package.json +0 -3
- package/web/node_modules/.bun/socket.io-parser@4.2.4/node_modules/socket.io-parser/package.json +0 -58
- package/web/node_modules/.bun/socket.io@4.8.1/node_modules/socket.io/client-dist/socket.io.esm.min.js +0 -7
- package/web/node_modules/.bun/socket.io@4.8.1/node_modules/socket.io/client-dist/socket.io.js +0 -4908
- package/web/node_modules/.bun/socket.io@4.8.1/node_modules/socket.io/client-dist/socket.io.min.js +0 -7
- package/web/node_modules/.bun/socket.io@4.8.1/node_modules/socket.io/client-dist/socket.io.msgpack.min.js +0 -7
- package/web/node_modules/.bun/socket.io@4.8.1/node_modules/socket.io/dist/broadcast-operator.js +0 -436
- package/web/node_modules/.bun/socket.io@4.8.1/node_modules/socket.io/dist/client.js +0 -268
- package/web/node_modules/.bun/socket.io@4.8.1/node_modules/socket.io/dist/index.js +0 -804
- package/web/node_modules/.bun/socket.io@4.8.1/node_modules/socket.io/dist/namespace.js +0 -581
- package/web/node_modules/.bun/socket.io@4.8.1/node_modules/socket.io/dist/parent-namespace.js +0 -88
- package/web/node_modules/.bun/socket.io@4.8.1/node_modules/socket.io/dist/socket-types.js +0 -11
- package/web/node_modules/.bun/socket.io@4.8.1/node_modules/socket.io/dist/socket.js +0 -977
- package/web/node_modules/.bun/socket.io@4.8.1/node_modules/socket.io/dist/typed-events.js +0 -81
- package/web/node_modules/.bun/socket.io@4.8.1/node_modules/socket.io/dist/uws.js +0 -136
- package/web/node_modules/.bun/socket.io@4.8.1/node_modules/socket.io/package.json +0 -85
- package/web/node_modules/.bun/socket.io@4.8.1/node_modules/socket.io/wrapper.mjs +0 -3
- package/web/node_modules/.bun/supports-color@7.2.0/node_modules/supports-color/index.js +0 -135
- package/web/node_modules/.bun/supports-color@7.2.0/node_modules/supports-color/package.json +0 -53
- package/web/node_modules/.bun/vary@1.1.2/node_modules/vary/index.js +0 -149
- package/web/node_modules/.bun/vary@1.1.2/node_modules/vary/package.json +0 -43
- package/web/node_modules/.bun/ws@8.17.1/node_modules/ws/index.js +0 -13
- package/web/node_modules/.bun/ws@8.17.1/node_modules/ws/lib/buffer-util.js +0 -131
- package/web/node_modules/.bun/ws@8.17.1/node_modules/ws/lib/constants.js +0 -12
- package/web/node_modules/.bun/ws@8.17.1/node_modules/ws/lib/event-target.js +0 -292
- package/web/node_modules/.bun/ws@8.17.1/node_modules/ws/lib/extension.js +0 -203
- package/web/node_modules/.bun/ws@8.17.1/node_modules/ws/lib/limiter.js +0 -55
- package/web/node_modules/.bun/ws@8.17.1/node_modules/ws/lib/permessage-deflate.js +0 -514
- package/web/node_modules/.bun/ws@8.17.1/node_modules/ws/lib/receiver.js +0 -704
- package/web/node_modules/.bun/ws@8.17.1/node_modules/ws/lib/sender.js +0 -497
- package/web/node_modules/.bun/ws@8.17.1/node_modules/ws/lib/stream.js +0 -159
- package/web/node_modules/.bun/ws@8.17.1/node_modules/ws/lib/subprotocol.js +0 -62
- package/web/node_modules/.bun/ws@8.17.1/node_modules/ws/lib/validation.js +0 -130
- package/web/node_modules/.bun/ws@8.17.1/node_modules/ws/lib/websocket-server.js +0 -540
- package/web/node_modules/.bun/ws@8.17.1/node_modules/ws/lib/websocket.js +0 -1338
- package/web/node_modules/.bun/ws@8.17.1/node_modules/ws/package.json +0 -69
- package/web/node_modules/.bun/ws@8.18.3/node_modules/ws/lib/buffer-util.js +0 -131
- package/web/node_modules/.bun/ws@8.18.3/node_modules/ws/lib/constants.js +0 -18
- package/web/node_modules/.bun/ws@8.18.3/node_modules/ws/lib/event-target.js +0 -292
- package/web/node_modules/.bun/ws@8.18.3/node_modules/ws/lib/extension.js +0 -203
- package/web/node_modules/.bun/ws@8.18.3/node_modules/ws/lib/limiter.js +0 -55
- package/web/node_modules/.bun/ws@8.18.3/node_modules/ws/lib/permessage-deflate.js +0 -528
- package/web/node_modules/.bun/ws@8.18.3/node_modules/ws/lib/receiver.js +0 -706
- package/web/node_modules/.bun/ws@8.18.3/node_modules/ws/lib/sender.js +0 -602
- package/web/node_modules/.bun/ws@8.18.3/node_modules/ws/lib/stream.js +0 -161
- package/web/node_modules/.bun/ws@8.18.3/node_modules/ws/lib/subprotocol.js +0 -62
- package/web/node_modules/.bun/ws@8.18.3/node_modules/ws/lib/validation.js +0 -152
- package/web/node_modules/.bun/ws@8.18.3/node_modules/ws/lib/websocket-server.js +0 -550
- package/web/node_modules/.bun/ws@8.18.3/node_modules/ws/lib/websocket.js +0 -1388
- package/web/node_modules/.bun/ws@8.18.3/node_modules/ws/package.json +0 -69
- package/web/node_modules/.bun/ws@8.18.3/node_modules/ws/wrapper.mjs +0 -8
- /package/web/.next/static/{A7pW-dtFIbPCSkvE8uenX → Im7EdK1Q3oOmTznohTOr5}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{A7pW-dtFIbPCSkvE8uenX → Im7EdK1Q3oOmTznohTOr5}/_ssgManifest.js +0 -0
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
/* eslint no-unused-vars: ["error", { "varsIgnorePattern": "^WebSocket$" }] */
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
const WebSocket = require('./websocket');
|
|
5
|
-
const { Duplex } = require('stream');
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Emits the `'close'` event on a stream.
|
|
9
|
-
*
|
|
10
|
-
* @param {Duplex} stream The stream.
|
|
11
|
-
* @private
|
|
12
|
-
*/
|
|
13
|
-
function emitClose(stream) {
|
|
14
|
-
stream.emit('close');
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* The listener of the `'end'` event.
|
|
19
|
-
*
|
|
20
|
-
* @private
|
|
21
|
-
*/
|
|
22
|
-
function duplexOnEnd() {
|
|
23
|
-
if (!this.destroyed && this._writableState.finished) {
|
|
24
|
-
this.destroy();
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* The listener of the `'error'` event.
|
|
30
|
-
*
|
|
31
|
-
* @param {Error} err The error
|
|
32
|
-
* @private
|
|
33
|
-
*/
|
|
34
|
-
function duplexOnError(err) {
|
|
35
|
-
this.removeListener('error', duplexOnError);
|
|
36
|
-
this.destroy();
|
|
37
|
-
if (this.listenerCount('error') === 0) {
|
|
38
|
-
// Do not suppress the throwing behavior.
|
|
39
|
-
this.emit('error', err);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Wraps a `WebSocket` in a duplex stream.
|
|
45
|
-
*
|
|
46
|
-
* @param {WebSocket} ws The `WebSocket` to wrap
|
|
47
|
-
* @param {Object} [options] The options for the `Duplex` constructor
|
|
48
|
-
* @return {Duplex} The duplex stream
|
|
49
|
-
* @public
|
|
50
|
-
*/
|
|
51
|
-
function createWebSocketStream(ws, options) {
|
|
52
|
-
let terminateOnDestroy = true;
|
|
53
|
-
|
|
54
|
-
const duplex = new Duplex({
|
|
55
|
-
...options,
|
|
56
|
-
autoDestroy: false,
|
|
57
|
-
emitClose: false,
|
|
58
|
-
objectMode: false,
|
|
59
|
-
writableObjectMode: false
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
ws.on('message', function message(msg, isBinary) {
|
|
63
|
-
const data =
|
|
64
|
-
!isBinary && duplex._readableState.objectMode ? msg.toString() : msg;
|
|
65
|
-
|
|
66
|
-
if (!duplex.push(data)) ws.pause();
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
ws.once('error', function error(err) {
|
|
70
|
-
if (duplex.destroyed) return;
|
|
71
|
-
|
|
72
|
-
// Prevent `ws.terminate()` from being called by `duplex._destroy()`.
|
|
73
|
-
//
|
|
74
|
-
// - If the `'error'` event is emitted before the `'open'` event, then
|
|
75
|
-
// `ws.terminate()` is a noop as no socket is assigned.
|
|
76
|
-
// - Otherwise, the error is re-emitted by the listener of the `'error'`
|
|
77
|
-
// event of the `Receiver` object. The listener already closes the
|
|
78
|
-
// connection by calling `ws.close()`. This allows a close frame to be
|
|
79
|
-
// sent to the other peer. If `ws.terminate()` is called right after this,
|
|
80
|
-
// then the close frame might not be sent.
|
|
81
|
-
terminateOnDestroy = false;
|
|
82
|
-
duplex.destroy(err);
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
ws.once('close', function close() {
|
|
86
|
-
if (duplex.destroyed) return;
|
|
87
|
-
|
|
88
|
-
duplex.push(null);
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
duplex._destroy = function (err, callback) {
|
|
92
|
-
if (ws.readyState === ws.CLOSED) {
|
|
93
|
-
callback(err);
|
|
94
|
-
process.nextTick(emitClose, duplex);
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
let called = false;
|
|
99
|
-
|
|
100
|
-
ws.once('error', function error(err) {
|
|
101
|
-
called = true;
|
|
102
|
-
callback(err);
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
ws.once('close', function close() {
|
|
106
|
-
if (!called) callback(err);
|
|
107
|
-
process.nextTick(emitClose, duplex);
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
if (terminateOnDestroy) ws.terminate();
|
|
111
|
-
};
|
|
112
|
-
|
|
113
|
-
duplex._final = function (callback) {
|
|
114
|
-
if (ws.readyState === ws.CONNECTING) {
|
|
115
|
-
ws.once('open', function open() {
|
|
116
|
-
duplex._final(callback);
|
|
117
|
-
});
|
|
118
|
-
return;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
// If the value of the `_socket` property is `null` it means that `ws` is a
|
|
122
|
-
// client websocket and the handshake failed. In fact, when this happens, a
|
|
123
|
-
// socket is never assigned to the websocket. Wait for the `'error'` event
|
|
124
|
-
// that will be emitted by the websocket.
|
|
125
|
-
if (ws._socket === null) return;
|
|
126
|
-
|
|
127
|
-
if (ws._socket._writableState.finished) {
|
|
128
|
-
callback();
|
|
129
|
-
if (duplex._readableState.endEmitted) duplex.destroy();
|
|
130
|
-
} else {
|
|
131
|
-
ws._socket.once('finish', function finish() {
|
|
132
|
-
// `duplex` is not destroyed here because the `'end'` event will be
|
|
133
|
-
// emitted on `duplex` after this `'finish'` event. The EOF signaling
|
|
134
|
-
// `null` chunk is, in fact, pushed when the websocket emits `'close'`.
|
|
135
|
-
callback();
|
|
136
|
-
});
|
|
137
|
-
ws.close();
|
|
138
|
-
}
|
|
139
|
-
};
|
|
140
|
-
|
|
141
|
-
duplex._read = function () {
|
|
142
|
-
if (ws.isPaused) ws.resume();
|
|
143
|
-
};
|
|
144
|
-
|
|
145
|
-
duplex._write = function (chunk, encoding, callback) {
|
|
146
|
-
if (ws.readyState === ws.CONNECTING) {
|
|
147
|
-
ws.once('open', function open() {
|
|
148
|
-
duplex._write(chunk, encoding, callback);
|
|
149
|
-
});
|
|
150
|
-
return;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
ws.send(chunk, callback);
|
|
154
|
-
};
|
|
155
|
-
|
|
156
|
-
duplex.on('end', duplexOnEnd);
|
|
157
|
-
duplex.on('error', duplexOnError);
|
|
158
|
-
return duplex;
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
module.exports = createWebSocketStream;
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { tokenChars } = require('./validation');
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Parses the `Sec-WebSocket-Protocol` header into a set of subprotocol names.
|
|
7
|
-
*
|
|
8
|
-
* @param {String} header The field value of the header
|
|
9
|
-
* @return {Set} The subprotocol names
|
|
10
|
-
* @public
|
|
11
|
-
*/
|
|
12
|
-
function parse(header) {
|
|
13
|
-
const protocols = new Set();
|
|
14
|
-
let start = -1;
|
|
15
|
-
let end = -1;
|
|
16
|
-
let i = 0;
|
|
17
|
-
|
|
18
|
-
for (i; i < header.length; i++) {
|
|
19
|
-
const code = header.charCodeAt(i);
|
|
20
|
-
|
|
21
|
-
if (end === -1 && tokenChars[code] === 1) {
|
|
22
|
-
if (start === -1) start = i;
|
|
23
|
-
} else if (
|
|
24
|
-
i !== 0 &&
|
|
25
|
-
(code === 0x20 /* ' ' */ || code === 0x09) /* '\t' */
|
|
26
|
-
) {
|
|
27
|
-
if (end === -1 && start !== -1) end = i;
|
|
28
|
-
} else if (code === 0x2c /* ',' */) {
|
|
29
|
-
if (start === -1) {
|
|
30
|
-
throw new SyntaxError(`Unexpected character at index ${i}`);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
if (end === -1) end = i;
|
|
34
|
-
|
|
35
|
-
const protocol = header.slice(start, end);
|
|
36
|
-
|
|
37
|
-
if (protocols.has(protocol)) {
|
|
38
|
-
throw new SyntaxError(`The "${protocol}" subprotocol is duplicated`);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
protocols.add(protocol);
|
|
42
|
-
start = end = -1;
|
|
43
|
-
} else {
|
|
44
|
-
throw new SyntaxError(`Unexpected character at index ${i}`);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
if (start === -1 || end !== -1) {
|
|
49
|
-
throw new SyntaxError('Unexpected end of input');
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
const protocol = header.slice(start, i);
|
|
53
|
-
|
|
54
|
-
if (protocols.has(protocol)) {
|
|
55
|
-
throw new SyntaxError(`The "${protocol}" subprotocol is duplicated`);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
protocols.add(protocol);
|
|
59
|
-
return protocols;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
module.exports = { parse };
|
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { isUtf8 } = require('buffer');
|
|
4
|
-
|
|
5
|
-
const { hasBlob } = require('./constants');
|
|
6
|
-
|
|
7
|
-
//
|
|
8
|
-
// Allowed token characters:
|
|
9
|
-
//
|
|
10
|
-
// '!', '#', '$', '%', '&', ''', '*', '+', '-',
|
|
11
|
-
// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'
|
|
12
|
-
//
|
|
13
|
-
// tokenChars[32] === 0 // ' '
|
|
14
|
-
// tokenChars[33] === 1 // '!'
|
|
15
|
-
// tokenChars[34] === 0 // '"'
|
|
16
|
-
// ...
|
|
17
|
-
//
|
|
18
|
-
// prettier-ignore
|
|
19
|
-
const tokenChars = [
|
|
20
|
-
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15
|
|
21
|
-
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31
|
|
22
|
-
0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47
|
|
23
|
-
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63
|
|
24
|
-
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79
|
|
25
|
-
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95
|
|
26
|
-
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111
|
|
27
|
-
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127
|
|
28
|
-
];
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Checks if a status code is allowed in a close frame.
|
|
32
|
-
*
|
|
33
|
-
* @param {Number} code The status code
|
|
34
|
-
* @return {Boolean} `true` if the status code is valid, else `false`
|
|
35
|
-
* @public
|
|
36
|
-
*/
|
|
37
|
-
function isValidStatusCode(code) {
|
|
38
|
-
return (
|
|
39
|
-
(code >= 1000 &&
|
|
40
|
-
code <= 1014 &&
|
|
41
|
-
code !== 1004 &&
|
|
42
|
-
code !== 1005 &&
|
|
43
|
-
code !== 1006) ||
|
|
44
|
-
(code >= 3000 && code <= 4999)
|
|
45
|
-
);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Checks if a given buffer contains only correct UTF-8.
|
|
50
|
-
* Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by
|
|
51
|
-
* Markus Kuhn.
|
|
52
|
-
*
|
|
53
|
-
* @param {Buffer} buf The buffer to check
|
|
54
|
-
* @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`
|
|
55
|
-
* @public
|
|
56
|
-
*/
|
|
57
|
-
function _isValidUTF8(buf) {
|
|
58
|
-
const len = buf.length;
|
|
59
|
-
let i = 0;
|
|
60
|
-
|
|
61
|
-
while (i < len) {
|
|
62
|
-
if ((buf[i] & 0x80) === 0) {
|
|
63
|
-
// 0xxxxxxx
|
|
64
|
-
i++;
|
|
65
|
-
} else if ((buf[i] & 0xe0) === 0xc0) {
|
|
66
|
-
// 110xxxxx 10xxxxxx
|
|
67
|
-
if (
|
|
68
|
-
i + 1 === len ||
|
|
69
|
-
(buf[i + 1] & 0xc0) !== 0x80 ||
|
|
70
|
-
(buf[i] & 0xfe) === 0xc0 // Overlong
|
|
71
|
-
) {
|
|
72
|
-
return false;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
i += 2;
|
|
76
|
-
} else if ((buf[i] & 0xf0) === 0xe0) {
|
|
77
|
-
// 1110xxxx 10xxxxxx 10xxxxxx
|
|
78
|
-
if (
|
|
79
|
-
i + 2 >= len ||
|
|
80
|
-
(buf[i + 1] & 0xc0) !== 0x80 ||
|
|
81
|
-
(buf[i + 2] & 0xc0) !== 0x80 ||
|
|
82
|
-
(buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong
|
|
83
|
-
(buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF)
|
|
84
|
-
) {
|
|
85
|
-
return false;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
i += 3;
|
|
89
|
-
} else if ((buf[i] & 0xf8) === 0xf0) {
|
|
90
|
-
// 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
|
|
91
|
-
if (
|
|
92
|
-
i + 3 >= len ||
|
|
93
|
-
(buf[i + 1] & 0xc0) !== 0x80 ||
|
|
94
|
-
(buf[i + 2] & 0xc0) !== 0x80 ||
|
|
95
|
-
(buf[i + 3] & 0xc0) !== 0x80 ||
|
|
96
|
-
(buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong
|
|
97
|
-
(buf[i] === 0xf4 && buf[i + 1] > 0x8f) ||
|
|
98
|
-
buf[i] > 0xf4 // > U+10FFFF
|
|
99
|
-
) {
|
|
100
|
-
return false;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
i += 4;
|
|
104
|
-
} else {
|
|
105
|
-
return false;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
return true;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
/**
|
|
113
|
-
* Determines whether a value is a `Blob`.
|
|
114
|
-
*
|
|
115
|
-
* @param {*} value The value to be tested
|
|
116
|
-
* @return {Boolean} `true` if `value` is a `Blob`, else `false`
|
|
117
|
-
* @private
|
|
118
|
-
*/
|
|
119
|
-
function isBlob(value) {
|
|
120
|
-
return (
|
|
121
|
-
hasBlob &&
|
|
122
|
-
typeof value === 'object' &&
|
|
123
|
-
typeof value.arrayBuffer === 'function' &&
|
|
124
|
-
typeof value.type === 'string' &&
|
|
125
|
-
typeof value.stream === 'function' &&
|
|
126
|
-
(value[Symbol.toStringTag] === 'Blob' ||
|
|
127
|
-
value[Symbol.toStringTag] === 'File')
|
|
128
|
-
);
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
module.exports = {
|
|
132
|
-
isBlob,
|
|
133
|
-
isValidStatusCode,
|
|
134
|
-
isValidUTF8: _isValidUTF8,
|
|
135
|
-
tokenChars
|
|
136
|
-
};
|
|
137
|
-
|
|
138
|
-
if (isUtf8) {
|
|
139
|
-
module.exports.isValidUTF8 = function (buf) {
|
|
140
|
-
return buf.length < 24 ? _isValidUTF8(buf) : isUtf8(buf);
|
|
141
|
-
};
|
|
142
|
-
} /* istanbul ignore else */ else if (!process.env.WS_NO_UTF_8_VALIDATE) {
|
|
143
|
-
try {
|
|
144
|
-
const isValidUTF8 = require('utf-8-validate');
|
|
145
|
-
|
|
146
|
-
module.exports.isValidUTF8 = function (buf) {
|
|
147
|
-
return buf.length < 32 ? _isValidUTF8(buf) : isValidUTF8(buf);
|
|
148
|
-
};
|
|
149
|
-
} catch (e) {
|
|
150
|
-
// Continue regardless of the error.
|
|
151
|
-
}
|
|
152
|
-
}
|