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,460 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Socket = void 0;
|
|
4
|
-
const events_1 = require("events");
|
|
5
|
-
const debug_1 = require("debug");
|
|
6
|
-
const timers_1 = require("timers");
|
|
7
|
-
const debug = (0, debug_1.default)("engine:socket");
|
|
8
|
-
class Socket extends events_1.EventEmitter {
|
|
9
|
-
get readyState() {
|
|
10
|
-
return this._readyState;
|
|
11
|
-
}
|
|
12
|
-
set readyState(state) {
|
|
13
|
-
debug("readyState updated from %s to %s", this._readyState, state);
|
|
14
|
-
this._readyState = state;
|
|
15
|
-
}
|
|
16
|
-
constructor(id, server, transport, req, protocol) {
|
|
17
|
-
super();
|
|
18
|
-
/**
|
|
19
|
-
* The current state of the socket.
|
|
20
|
-
*/
|
|
21
|
-
this._readyState = "opening";
|
|
22
|
-
/* private */ this.upgrading = false;
|
|
23
|
-
/* private */ this.upgraded = false;
|
|
24
|
-
this.writeBuffer = [];
|
|
25
|
-
this.packetsFn = [];
|
|
26
|
-
this.sentCallbackFn = [];
|
|
27
|
-
this.cleanupFn = [];
|
|
28
|
-
this.id = id;
|
|
29
|
-
this.server = server;
|
|
30
|
-
this.request = req;
|
|
31
|
-
this.protocol = protocol;
|
|
32
|
-
// Cache IP since it might not be in the req later
|
|
33
|
-
if (req) {
|
|
34
|
-
if (req.websocket && req.websocket._socket) {
|
|
35
|
-
this.remoteAddress = req.websocket._socket.remoteAddress;
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
this.remoteAddress = req.connection.remoteAddress;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
// TODO there is currently no way to get the IP address of the client when it connects with WebTransport
|
|
43
|
-
// see https://github.com/fails-components/webtransport/issues/114
|
|
44
|
-
}
|
|
45
|
-
this.pingTimeoutTimer = null;
|
|
46
|
-
this.pingIntervalTimer = null;
|
|
47
|
-
this.setTransport(transport);
|
|
48
|
-
this.onOpen();
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Called upon transport considered open.
|
|
52
|
-
*
|
|
53
|
-
* @private
|
|
54
|
-
*/
|
|
55
|
-
onOpen() {
|
|
56
|
-
this.readyState = "open";
|
|
57
|
-
// sends an `open` packet
|
|
58
|
-
this.transport.sid = this.id;
|
|
59
|
-
this.sendPacket("open", JSON.stringify({
|
|
60
|
-
sid: this.id,
|
|
61
|
-
upgrades: this.getAvailableUpgrades(),
|
|
62
|
-
pingInterval: this.server.opts.pingInterval,
|
|
63
|
-
pingTimeout: this.server.opts.pingTimeout,
|
|
64
|
-
maxPayload: this.server.opts.maxHttpBufferSize,
|
|
65
|
-
}));
|
|
66
|
-
if (this.server.opts.initialPacket) {
|
|
67
|
-
this.sendPacket("message", this.server.opts.initialPacket);
|
|
68
|
-
}
|
|
69
|
-
this.emit("open");
|
|
70
|
-
if (this.protocol === 3) {
|
|
71
|
-
// in protocol v3, the client sends a ping, and the server answers with a pong
|
|
72
|
-
this.resetPingTimeout();
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
// in protocol v4, the server sends a ping, and the client answers with a pong
|
|
76
|
-
this.schedulePing();
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Called upon transport packet.
|
|
81
|
-
*
|
|
82
|
-
* @param {Object} packet
|
|
83
|
-
* @private
|
|
84
|
-
*/
|
|
85
|
-
onPacket(packet) {
|
|
86
|
-
if ("open" !== this.readyState) {
|
|
87
|
-
return debug("packet received with closed socket");
|
|
88
|
-
}
|
|
89
|
-
// export packet event
|
|
90
|
-
debug(`received packet ${packet.type}`);
|
|
91
|
-
this.emit("packet", packet);
|
|
92
|
-
switch (packet.type) {
|
|
93
|
-
case "ping":
|
|
94
|
-
if (this.transport.protocol !== 3) {
|
|
95
|
-
this.onError(new Error("invalid heartbeat direction"));
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
debug("got ping");
|
|
99
|
-
this.pingTimeoutTimer.refresh();
|
|
100
|
-
this.sendPacket("pong");
|
|
101
|
-
this.emit("heartbeat");
|
|
102
|
-
break;
|
|
103
|
-
case "pong":
|
|
104
|
-
if (this.transport.protocol === 3) {
|
|
105
|
-
this.onError(new Error("invalid heartbeat direction"));
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
|
-
debug("got pong");
|
|
109
|
-
(0, timers_1.clearTimeout)(this.pingTimeoutTimer);
|
|
110
|
-
this.pingIntervalTimer.refresh();
|
|
111
|
-
this.emit("heartbeat");
|
|
112
|
-
break;
|
|
113
|
-
case "error":
|
|
114
|
-
this.onClose("parse error");
|
|
115
|
-
break;
|
|
116
|
-
case "message":
|
|
117
|
-
this.emit("data", packet.data);
|
|
118
|
-
this.emit("message", packet.data);
|
|
119
|
-
break;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Called upon transport error.
|
|
124
|
-
*
|
|
125
|
-
* @param {Error} err - error object
|
|
126
|
-
* @private
|
|
127
|
-
*/
|
|
128
|
-
onError(err) {
|
|
129
|
-
debug("transport error");
|
|
130
|
-
this.onClose("transport error", err);
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* Pings client every `this.pingInterval` and expects response
|
|
134
|
-
* within `this.pingTimeout` or closes connection.
|
|
135
|
-
*
|
|
136
|
-
* @private
|
|
137
|
-
*/
|
|
138
|
-
schedulePing() {
|
|
139
|
-
this.pingIntervalTimer = (0, timers_1.setTimeout)(() => {
|
|
140
|
-
debug("writing ping packet - expecting pong within %sms", this.server.opts.pingTimeout);
|
|
141
|
-
this.sendPacket("ping");
|
|
142
|
-
this.resetPingTimeout();
|
|
143
|
-
}, this.server.opts.pingInterval);
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Resets ping timeout.
|
|
147
|
-
*
|
|
148
|
-
* @private
|
|
149
|
-
*/
|
|
150
|
-
resetPingTimeout() {
|
|
151
|
-
(0, timers_1.clearTimeout)(this.pingTimeoutTimer);
|
|
152
|
-
this.pingTimeoutTimer = (0, timers_1.setTimeout)(() => {
|
|
153
|
-
if (this.readyState === "closed")
|
|
154
|
-
return;
|
|
155
|
-
this.onClose("ping timeout");
|
|
156
|
-
}, this.protocol === 3
|
|
157
|
-
? this.server.opts.pingInterval + this.server.opts.pingTimeout
|
|
158
|
-
: this.server.opts.pingTimeout);
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* Attaches handlers for the given transport.
|
|
162
|
-
*
|
|
163
|
-
* @param {Transport} transport
|
|
164
|
-
* @private
|
|
165
|
-
*/
|
|
166
|
-
setTransport(transport) {
|
|
167
|
-
const onError = this.onError.bind(this);
|
|
168
|
-
const onReady = () => this.flush();
|
|
169
|
-
const onPacket = this.onPacket.bind(this);
|
|
170
|
-
const onDrain = this.onDrain.bind(this);
|
|
171
|
-
const onClose = this.onClose.bind(this, "transport close");
|
|
172
|
-
this.transport = transport;
|
|
173
|
-
this.transport.once("error", onError);
|
|
174
|
-
this.transport.on("ready", onReady);
|
|
175
|
-
this.transport.on("packet", onPacket);
|
|
176
|
-
this.transport.on("drain", onDrain);
|
|
177
|
-
this.transport.once("close", onClose);
|
|
178
|
-
this.cleanupFn.push(function () {
|
|
179
|
-
transport.removeListener("error", onError);
|
|
180
|
-
transport.removeListener("ready", onReady);
|
|
181
|
-
transport.removeListener("packet", onPacket);
|
|
182
|
-
transport.removeListener("drain", onDrain);
|
|
183
|
-
transport.removeListener("close", onClose);
|
|
184
|
-
});
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* Upon transport "drain" event
|
|
188
|
-
*
|
|
189
|
-
* @private
|
|
190
|
-
*/
|
|
191
|
-
onDrain() {
|
|
192
|
-
if (this.sentCallbackFn.length > 0) {
|
|
193
|
-
debug("executing batch send callback");
|
|
194
|
-
const seqFn = this.sentCallbackFn.shift();
|
|
195
|
-
if (seqFn) {
|
|
196
|
-
for (let i = 0; i < seqFn.length; i++) {
|
|
197
|
-
seqFn[i](this.transport);
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
/**
|
|
203
|
-
* Upgrades socket to the given transport
|
|
204
|
-
*
|
|
205
|
-
* @param {Transport} transport
|
|
206
|
-
* @private
|
|
207
|
-
*/
|
|
208
|
-
/* private */ _maybeUpgrade(transport) {
|
|
209
|
-
debug('might upgrade socket transport from "%s" to "%s"', this.transport.name, transport.name);
|
|
210
|
-
this.upgrading = true;
|
|
211
|
-
// set transport upgrade timer
|
|
212
|
-
const upgradeTimeoutTimer = (0, timers_1.setTimeout)(() => {
|
|
213
|
-
debug("client did not complete upgrade - closing transport");
|
|
214
|
-
cleanup();
|
|
215
|
-
if ("open" === transport.readyState) {
|
|
216
|
-
transport.close();
|
|
217
|
-
}
|
|
218
|
-
}, this.server.opts.upgradeTimeout);
|
|
219
|
-
let checkIntervalTimer;
|
|
220
|
-
const onPacket = (packet) => {
|
|
221
|
-
if ("ping" === packet.type && "probe" === packet.data) {
|
|
222
|
-
debug("got probe ping packet, sending pong");
|
|
223
|
-
transport.send([{ type: "pong", data: "probe" }]);
|
|
224
|
-
this.emit("upgrading", transport);
|
|
225
|
-
clearInterval(checkIntervalTimer);
|
|
226
|
-
checkIntervalTimer = setInterval(check, 100);
|
|
227
|
-
}
|
|
228
|
-
else if ("upgrade" === packet.type && this.readyState !== "closed") {
|
|
229
|
-
debug("got upgrade packet - upgrading");
|
|
230
|
-
cleanup();
|
|
231
|
-
this.transport.discard();
|
|
232
|
-
this.upgraded = true;
|
|
233
|
-
this.clearTransport();
|
|
234
|
-
this.setTransport(transport);
|
|
235
|
-
this.emit("upgrade", transport);
|
|
236
|
-
this.flush();
|
|
237
|
-
if (this.readyState === "closing") {
|
|
238
|
-
transport.close(() => {
|
|
239
|
-
this.onClose("forced close");
|
|
240
|
-
});
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
else {
|
|
244
|
-
cleanup();
|
|
245
|
-
transport.close();
|
|
246
|
-
}
|
|
247
|
-
};
|
|
248
|
-
// we force a polling cycle to ensure a fast upgrade
|
|
249
|
-
const check = () => {
|
|
250
|
-
if ("polling" === this.transport.name && this.transport.writable) {
|
|
251
|
-
debug("writing a noop packet to polling for fast upgrade");
|
|
252
|
-
this.transport.send([{ type: "noop" }]);
|
|
253
|
-
}
|
|
254
|
-
};
|
|
255
|
-
const cleanup = () => {
|
|
256
|
-
this.upgrading = false;
|
|
257
|
-
clearInterval(checkIntervalTimer);
|
|
258
|
-
(0, timers_1.clearTimeout)(upgradeTimeoutTimer);
|
|
259
|
-
transport.removeListener("packet", onPacket);
|
|
260
|
-
transport.removeListener("close", onTransportClose);
|
|
261
|
-
transport.removeListener("error", onError);
|
|
262
|
-
this.removeListener("close", onClose);
|
|
263
|
-
};
|
|
264
|
-
const onError = (err) => {
|
|
265
|
-
debug("client did not complete upgrade - %s", err);
|
|
266
|
-
cleanup();
|
|
267
|
-
transport.close();
|
|
268
|
-
transport = null;
|
|
269
|
-
};
|
|
270
|
-
const onTransportClose = () => {
|
|
271
|
-
onError("transport closed");
|
|
272
|
-
};
|
|
273
|
-
const onClose = () => {
|
|
274
|
-
onError("socket closed");
|
|
275
|
-
};
|
|
276
|
-
transport.on("packet", onPacket);
|
|
277
|
-
transport.once("close", onTransportClose);
|
|
278
|
-
transport.once("error", onError);
|
|
279
|
-
this.once("close", onClose);
|
|
280
|
-
}
|
|
281
|
-
/**
|
|
282
|
-
* Clears listeners and timers associated with current transport.
|
|
283
|
-
*
|
|
284
|
-
* @private
|
|
285
|
-
*/
|
|
286
|
-
clearTransport() {
|
|
287
|
-
let cleanup;
|
|
288
|
-
const toCleanUp = this.cleanupFn.length;
|
|
289
|
-
for (let i = 0; i < toCleanUp; i++) {
|
|
290
|
-
cleanup = this.cleanupFn.shift();
|
|
291
|
-
cleanup();
|
|
292
|
-
}
|
|
293
|
-
// silence further transport errors and prevent uncaught exceptions
|
|
294
|
-
this.transport.on("error", function () {
|
|
295
|
-
debug("error triggered by discarded transport");
|
|
296
|
-
});
|
|
297
|
-
// ensure transport won't stay open
|
|
298
|
-
this.transport.close();
|
|
299
|
-
(0, timers_1.clearTimeout)(this.pingTimeoutTimer);
|
|
300
|
-
}
|
|
301
|
-
/**
|
|
302
|
-
* Called upon transport considered closed.
|
|
303
|
-
* Possible reasons: `ping timeout`, `client error`, `parse error`,
|
|
304
|
-
* `transport error`, `server close`, `transport close`
|
|
305
|
-
*/
|
|
306
|
-
onClose(reason, description) {
|
|
307
|
-
if ("closed" !== this.readyState) {
|
|
308
|
-
this.readyState = "closed";
|
|
309
|
-
// clear timers
|
|
310
|
-
(0, timers_1.clearTimeout)(this.pingIntervalTimer);
|
|
311
|
-
(0, timers_1.clearTimeout)(this.pingTimeoutTimer);
|
|
312
|
-
// clean writeBuffer in next tick, so developers can still
|
|
313
|
-
// grab the writeBuffer on 'close' event
|
|
314
|
-
process.nextTick(() => {
|
|
315
|
-
this.writeBuffer = [];
|
|
316
|
-
});
|
|
317
|
-
this.packetsFn = [];
|
|
318
|
-
this.sentCallbackFn = [];
|
|
319
|
-
this.clearTransport();
|
|
320
|
-
this.emit("close", reason, description);
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
/**
|
|
324
|
-
* Sends a message packet.
|
|
325
|
-
*
|
|
326
|
-
* @param {Object} data
|
|
327
|
-
* @param {Object} options
|
|
328
|
-
* @param {Function} callback
|
|
329
|
-
* @return {Socket} for chaining
|
|
330
|
-
*/
|
|
331
|
-
send(data, options, callback) {
|
|
332
|
-
this.sendPacket("message", data, options, callback);
|
|
333
|
-
return this;
|
|
334
|
-
}
|
|
335
|
-
/**
|
|
336
|
-
* Alias of {@link send}.
|
|
337
|
-
*
|
|
338
|
-
* @param data
|
|
339
|
-
* @param options
|
|
340
|
-
* @param callback
|
|
341
|
-
*/
|
|
342
|
-
write(data, options, callback) {
|
|
343
|
-
this.sendPacket("message", data, options, callback);
|
|
344
|
-
return this;
|
|
345
|
-
}
|
|
346
|
-
/**
|
|
347
|
-
* Sends a packet.
|
|
348
|
-
*
|
|
349
|
-
* @param {String} type - packet type
|
|
350
|
-
* @param {String} data
|
|
351
|
-
* @param {Object} options
|
|
352
|
-
* @param {Function} callback
|
|
353
|
-
*
|
|
354
|
-
* @private
|
|
355
|
-
*/
|
|
356
|
-
sendPacket(type, data, options = {}, callback) {
|
|
357
|
-
if ("function" === typeof options) {
|
|
358
|
-
callback = options;
|
|
359
|
-
options = {};
|
|
360
|
-
}
|
|
361
|
-
if ("closing" !== this.readyState && "closed" !== this.readyState) {
|
|
362
|
-
debug('sending packet "%s" (%s)', type, data);
|
|
363
|
-
// compression is enabled by default
|
|
364
|
-
options.compress = options.compress !== false;
|
|
365
|
-
const packet = {
|
|
366
|
-
type,
|
|
367
|
-
options: options,
|
|
368
|
-
};
|
|
369
|
-
if (data)
|
|
370
|
-
packet.data = data;
|
|
371
|
-
// exports packetCreate event
|
|
372
|
-
this.emit("packetCreate", packet);
|
|
373
|
-
this.writeBuffer.push(packet);
|
|
374
|
-
// add send callback to object, if defined
|
|
375
|
-
if ("function" === typeof callback)
|
|
376
|
-
this.packetsFn.push(callback);
|
|
377
|
-
this.flush();
|
|
378
|
-
}
|
|
379
|
-
}
|
|
380
|
-
/**
|
|
381
|
-
* Attempts to flush the packets buffer.
|
|
382
|
-
*
|
|
383
|
-
* @private
|
|
384
|
-
*/
|
|
385
|
-
flush() {
|
|
386
|
-
if ("closed" !== this.readyState &&
|
|
387
|
-
this.transport.writable &&
|
|
388
|
-
this.writeBuffer.length) {
|
|
389
|
-
debug("flushing buffer to transport");
|
|
390
|
-
this.emit("flush", this.writeBuffer);
|
|
391
|
-
this.server.emit("flush", this, this.writeBuffer);
|
|
392
|
-
const wbuf = this.writeBuffer;
|
|
393
|
-
this.writeBuffer = [];
|
|
394
|
-
if (this.packetsFn.length) {
|
|
395
|
-
this.sentCallbackFn.push(this.packetsFn);
|
|
396
|
-
this.packetsFn = [];
|
|
397
|
-
}
|
|
398
|
-
else {
|
|
399
|
-
this.sentCallbackFn.push(null);
|
|
400
|
-
}
|
|
401
|
-
this.transport.send(wbuf);
|
|
402
|
-
this.emit("drain");
|
|
403
|
-
this.server.emit("drain", this);
|
|
404
|
-
}
|
|
405
|
-
}
|
|
406
|
-
/**
|
|
407
|
-
* Get available upgrades for this socket.
|
|
408
|
-
*
|
|
409
|
-
* @private
|
|
410
|
-
*/
|
|
411
|
-
getAvailableUpgrades() {
|
|
412
|
-
const availableUpgrades = [];
|
|
413
|
-
const allUpgrades = this.server.upgrades(this.transport.name);
|
|
414
|
-
for (let i = 0; i < allUpgrades.length; ++i) {
|
|
415
|
-
const upg = allUpgrades[i];
|
|
416
|
-
if (this.server.opts.transports.indexOf(upg) !== -1) {
|
|
417
|
-
availableUpgrades.push(upg);
|
|
418
|
-
}
|
|
419
|
-
}
|
|
420
|
-
return availableUpgrades;
|
|
421
|
-
}
|
|
422
|
-
/**
|
|
423
|
-
* Closes the socket and underlying transport.
|
|
424
|
-
*
|
|
425
|
-
* @param {Boolean} discard - optional, discard the transport
|
|
426
|
-
* @return {Socket} for chaining
|
|
427
|
-
*/
|
|
428
|
-
close(discard) {
|
|
429
|
-
if (discard &&
|
|
430
|
-
(this.readyState === "open" || this.readyState === "closing")) {
|
|
431
|
-
return this.closeTransport(discard);
|
|
432
|
-
}
|
|
433
|
-
if ("open" !== this.readyState)
|
|
434
|
-
return;
|
|
435
|
-
this.readyState = "closing";
|
|
436
|
-
if (this.writeBuffer.length) {
|
|
437
|
-
debug("there are %d remaining packets in the buffer, waiting for the 'drain' event", this.writeBuffer.length);
|
|
438
|
-
this.once("drain", () => {
|
|
439
|
-
debug("all packets have been sent, closing the transport");
|
|
440
|
-
this.closeTransport(discard);
|
|
441
|
-
});
|
|
442
|
-
return;
|
|
443
|
-
}
|
|
444
|
-
debug("the buffer is empty, closing the transport right away");
|
|
445
|
-
this.closeTransport(discard);
|
|
446
|
-
}
|
|
447
|
-
/**
|
|
448
|
-
* Closes the underlying transport.
|
|
449
|
-
*
|
|
450
|
-
* @param {Boolean} discard
|
|
451
|
-
* @private
|
|
452
|
-
*/
|
|
453
|
-
closeTransport(discard) {
|
|
454
|
-
debug("closing the transport (discard? %s)", !!discard);
|
|
455
|
-
if (discard)
|
|
456
|
-
this.transport.discard();
|
|
457
|
-
this.transport.close(this.onClose.bind(this, "forced close"));
|
|
458
|
-
}
|
|
459
|
-
}
|
|
460
|
-
exports.Socket = Socket;
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Transport = void 0;
|
|
4
|
-
const events_1 = require("events");
|
|
5
|
-
const parser_v4 = require("engine.io-parser");
|
|
6
|
-
const parser_v3 = require("./parser-v3/index");
|
|
7
|
-
const debug_1 = require("debug");
|
|
8
|
-
const debug = (0, debug_1.default)("engine:transport");
|
|
9
|
-
function noop() { }
|
|
10
|
-
class Transport extends events_1.EventEmitter {
|
|
11
|
-
get readyState() {
|
|
12
|
-
return this._readyState;
|
|
13
|
-
}
|
|
14
|
-
set readyState(state) {
|
|
15
|
-
debug("readyState updated from %s to %s (%s)", this._readyState, state, this.name);
|
|
16
|
-
this._readyState = state;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Transport constructor.
|
|
20
|
-
*
|
|
21
|
-
* @param {EngineRequest} req
|
|
22
|
-
*/
|
|
23
|
-
constructor(req) {
|
|
24
|
-
super();
|
|
25
|
-
/**
|
|
26
|
-
* Whether the transport is currently ready to send packets.
|
|
27
|
-
*/
|
|
28
|
-
this.writable = false;
|
|
29
|
-
/**
|
|
30
|
-
* The current state of the transport.
|
|
31
|
-
* @protected
|
|
32
|
-
*/
|
|
33
|
-
this._readyState = "open";
|
|
34
|
-
/**
|
|
35
|
-
* Whether the transport is discarded and can be safely closed (used during upgrade).
|
|
36
|
-
* @protected
|
|
37
|
-
*/
|
|
38
|
-
this.discarded = false;
|
|
39
|
-
this.protocol = req._query.EIO === "4" ? 4 : 3; // 3rd revision by default
|
|
40
|
-
this.parser = this.protocol === 4 ? parser_v4 : parser_v3;
|
|
41
|
-
this.supportsBinary = !(req._query && req._query.b64);
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Flags the transport as discarded.
|
|
45
|
-
*
|
|
46
|
-
* @package
|
|
47
|
-
*/
|
|
48
|
-
discard() {
|
|
49
|
-
this.discarded = true;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Called with an incoming HTTP request.
|
|
53
|
-
*
|
|
54
|
-
* @param req
|
|
55
|
-
* @package
|
|
56
|
-
*/
|
|
57
|
-
onRequest(req) { }
|
|
58
|
-
/**
|
|
59
|
-
* Closes the transport.
|
|
60
|
-
*
|
|
61
|
-
* @package
|
|
62
|
-
*/
|
|
63
|
-
close(fn) {
|
|
64
|
-
if ("closed" === this.readyState || "closing" === this.readyState)
|
|
65
|
-
return;
|
|
66
|
-
this.readyState = "closing";
|
|
67
|
-
this.doClose(fn || noop);
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Called with a transport error.
|
|
71
|
-
*
|
|
72
|
-
* @param {String} msg - message error
|
|
73
|
-
* @param {Object} desc - error description
|
|
74
|
-
* @protected
|
|
75
|
-
*/
|
|
76
|
-
onError(msg, desc) {
|
|
77
|
-
if (this.listeners("error").length) {
|
|
78
|
-
const err = new Error(msg);
|
|
79
|
-
// @ts-ignore
|
|
80
|
-
err.type = "TransportError";
|
|
81
|
-
// @ts-ignore
|
|
82
|
-
err.description = desc;
|
|
83
|
-
this.emit("error", err);
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
debug("ignored transport error %s (%s)", msg, desc);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Called with parsed out a packets from the data stream.
|
|
91
|
-
*
|
|
92
|
-
* @param {Object} packet
|
|
93
|
-
* @protected
|
|
94
|
-
*/
|
|
95
|
-
onPacket(packet) {
|
|
96
|
-
this.emit("packet", packet);
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Called with the encoded packet data.
|
|
100
|
-
*
|
|
101
|
-
* @param {String} data
|
|
102
|
-
* @protected
|
|
103
|
-
*/
|
|
104
|
-
onData(data) {
|
|
105
|
-
this.onPacket(this.parser.decodePacket(data));
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Called upon transport close.
|
|
109
|
-
*
|
|
110
|
-
* @protected
|
|
111
|
-
*/
|
|
112
|
-
onClose() {
|
|
113
|
-
this.readyState = "closed";
|
|
114
|
-
this.emit("close");
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
exports.Transport = Transport;
|
package/web/node_modules/.bun/engine.io@6.6.4/node_modules/engine.io/build/transports/index.js
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const polling_1 = require("./polling");
|
|
4
|
-
const polling_jsonp_1 = require("./polling-jsonp");
|
|
5
|
-
const websocket_1 = require("./websocket");
|
|
6
|
-
const webtransport_1 = require("./webtransport");
|
|
7
|
-
exports.default = {
|
|
8
|
-
polling: polling,
|
|
9
|
-
websocket: websocket_1.WebSocket,
|
|
10
|
-
webtransport: webtransport_1.WebTransport,
|
|
11
|
-
};
|
|
12
|
-
/**
|
|
13
|
-
* Polling polymorphic constructor.
|
|
14
|
-
*/
|
|
15
|
-
function polling(req) {
|
|
16
|
-
if ("string" === typeof req._query.j) {
|
|
17
|
-
return new polling_jsonp_1.JSONP(req);
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
return new polling_1.Polling(req);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
polling.upgradesTo = ["websocket", "webtransport"];
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.JSONP = void 0;
|
|
4
|
-
const polling_1 = require("./polling");
|
|
5
|
-
const qs = require("querystring");
|
|
6
|
-
const rDoubleSlashes = /\\\\n/g;
|
|
7
|
-
const rSlashes = /(\\)?\\n/g;
|
|
8
|
-
class JSONP extends polling_1.Polling {
|
|
9
|
-
/**
|
|
10
|
-
* JSON-P polling transport.
|
|
11
|
-
*/
|
|
12
|
-
constructor(req) {
|
|
13
|
-
super(req);
|
|
14
|
-
this.head = "___eio[" + (req._query.j || "").replace(/[^0-9]/g, "") + "](";
|
|
15
|
-
this.foot = ");";
|
|
16
|
-
}
|
|
17
|
-
onData(data) {
|
|
18
|
-
// we leverage the qs module so that we get built-in DoS protection
|
|
19
|
-
// and the fast alternative to decodeURIComponent
|
|
20
|
-
data = qs.parse(data).d;
|
|
21
|
-
if ("string" === typeof data) {
|
|
22
|
-
// client will send already escaped newlines as \\\\n and newlines as \\n
|
|
23
|
-
// \\n must be replaced with \n and \\\\n with \\n
|
|
24
|
-
data = data.replace(rSlashes, function (match, slashes) {
|
|
25
|
-
return slashes ? match : "\n";
|
|
26
|
-
});
|
|
27
|
-
super.onData(data.replace(rDoubleSlashes, "\\n"));
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
doWrite(data, options, callback) {
|
|
31
|
-
// we must output valid javascript, not valid json
|
|
32
|
-
// see: http://timelessrepo.com/json-isnt-a-javascript-subset
|
|
33
|
-
const js = JSON.stringify(data)
|
|
34
|
-
.replace(/\u2028/g, "\\u2028")
|
|
35
|
-
.replace(/\u2029/g, "\\u2029");
|
|
36
|
-
// prepare response
|
|
37
|
-
data = this.head + js + this.foot;
|
|
38
|
-
super.doWrite(data, options, callback);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
exports.JSONP = JSONP;
|