chore: use prettier v3 everywhere (#5169)

This commit is contained in:
Wang Guan
2024-09-16 15:43:08 +09:00
committed by GitHub
parent e347a3c24e
commit a1ccba3a77
68 changed files with 513 additions and 508 deletions

31
package-lock.json generated
View File

@@ -4,6 +4,7 @@
"requires": true,
"packages": {
"": {
"name": "socket.io",
"workspaces": [
"packages/socket.io-component-emitter",
"packages/engine.io-parser",
@@ -51,7 +52,7 @@
"mocha": "^10.6.0",
"node-forge": "^1.3.1",
"nyc": "^17.0.0",
"prettier": "^2.8.8",
"prettier": "^3.3.2",
"redis": "^4.6.15",
"rimraf": "^6.0.0",
"rollup": "^2.79.1",
@@ -11320,15 +11321,15 @@
}
},
"node_modules/prettier": {
"version": "2.8.8",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
"integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
"version": "3.3.3",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz",
"integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==",
"dev": true,
"bin": {
"prettier": "bin-prettier.js"
"prettier": "bin/prettier.cjs"
},
"engines": {
"node": ">=10.13.0"
"node": ">=14"
},
"funding": {
"url": "https://github.com/prettier/prettier?sponsor=1"
@@ -15200,28 +15201,10 @@
"packages/engine.io-parser": {
"version": "5.2.3",
"license": "MIT",
"devDependencies": {
"prettier": "^3.3.2"
},
"engines": {
"node": ">=10.0.0"
}
},
"packages/engine.io-parser/node_modules/prettier": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz",
"integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==",
"dev": true,
"bin": {
"prettier": "bin/prettier.cjs"
},
"engines": {
"node": ">=14"
},
"funding": {
"url": "https://github.com/prettier/prettier?sponsor=1"
}
},
"packages/engine.io/node_modules/debug": {
"version": "4.3.3",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",

View File

@@ -1,4 +1,5 @@
{
"name": "socket.io",
"private": true,
"workspaces": [
"packages/socket.io-component-emitter",
@@ -52,7 +53,7 @@
"mocha": "^10.6.0",
"node-forge": "^1.3.1",
"nyc": "^17.0.0",
"prettier": "^2.8.8",
"prettier": "^3.3.2",
"redis": "^4.6.15",
"rimraf": "^6.0.0",
"rollup": "^2.79.1",

View File

@@ -55,7 +55,7 @@ export function parse(setCookieString: string): Cookie {
case "Max-Age":
const expiration = new Date();
expiration.setUTCSeconds(
expiration.getUTCSeconds() + parseInt(value, 10)
expiration.getUTCSeconds() + parseInt(value, 10),
);
cookie.expires = expiration;
break;

View File

@@ -381,8 +381,8 @@ export class SocketWithoutUpgrade extends Emitter<
(typeof location !== "undefined" && location.port
? location.port
: this.secure
? "443"
: "80");
? "443"
: "80");
this.transports = [];
this._transportsByName = {};
@@ -408,7 +408,7 @@ export class SocketWithoutUpgrade extends Emitter<
transportOptions: {},
closeOnBeforeunload: false,
},
opts
opts,
);
this.opts.path =
@@ -434,7 +434,7 @@ export class SocketWithoutUpgrade extends Emitter<
addEventListener(
"beforeunload",
this._beforeunloadEventListener,
false
false,
);
}
if (this.hostname !== "localhost") {
@@ -484,7 +484,7 @@ export class SocketWithoutUpgrade extends Emitter<
secure: this.secure,
port: this.port,
},
this.opts.transportOptions[name]
this.opts.transportOptions[name],
);
debug("options: %j", opts);
@@ -749,7 +749,7 @@ export class SocketWithoutUpgrade extends Emitter<
type: PacketType,
data?: RawData,
options?: WriteOptions,
fn?: () => void
fn?: () => void,
) {
if ("function" === typeof data) {
fn = data;
@@ -874,7 +874,7 @@ export class SocketWithoutUpgrade extends Emitter<
removeEventListener(
"beforeunload",
this._beforeunloadEventListener,
false
false,
);
removeEventListener("offline", this._offlineEventListener, false);
}

View File

@@ -14,7 +14,7 @@ export class TransportError extends Error {
constructor(
reason: string,
readonly description: any,
readonly context: any
readonly context: any,
) {
super(reason);
}
@@ -79,7 +79,7 @@ export abstract class Transport extends Emitter<
protected onError(reason: string, description: any, context?: any) {
super.emitReserved(
"error",
new TransportError(reason, description, context)
new TransportError(reason, description, context),
);
return this;
}

View File

@@ -15,12 +15,12 @@ export class XHR extends BaseXHR {
Object.assign(
opts,
{ xd: this.xd, cookieJar: this.socket?._cookieJar },
this.opts
this.opts,
);
return new Request(
(opts) => new XMLHttpRequest(opts),
this.uri(),
opts as RequestOptions
opts as RequestOptions,
);
}
}

View File

@@ -122,7 +122,7 @@ export class Request extends Emitter<
constructor(
private readonly createRequest: (opts: RequestOptions) => XMLHttpRequest,
uri: string,
opts: RequestOptions
opts: RequestOptions,
) {
super();
installTimerFunctions(this, opts);
@@ -151,7 +151,7 @@ export class Request extends Emitter<
"ca",
"ciphers",
"rejectUnauthorized",
"autoUnref"
"autoUnref",
);
opts.xdomain = !!this._opts.xd;
@@ -197,7 +197,7 @@ export class Request extends Emitter<
if (xhr.readyState === 3) {
this._opts.cookieJar?.parseCookies(
// @ts-ignore
xhr.getResponseHeader("set-cookie")
xhr.getResponseHeader("set-cookie"),
);
}
@@ -354,7 +354,7 @@ function newRequest(opts) {
if (!xdomain) {
try {
return new globalThis[["Active"].concat("Object").join("X")](
"Microsoft.XMLHTTP"
"Microsoft.XMLHTTP",
);
} catch (e) {}
}

View File

@@ -14,7 +14,7 @@ export class WS extends BaseWS {
createSocket(
uri: string,
protocols: string | string[] | undefined,
opts: Record<string, any>
opts: Record<string, any>,
) {
if (this.socket?._cookieJar) {
opts.headers = opts.headers || {};

View File

@@ -43,7 +43,7 @@ export abstract class BaseWS extends Transport {
"origin",
"maxPayload",
"family",
"checkServerIdentity"
"checkServerIdentity",
);
if (this.opts.extraHeaders) {
@@ -64,7 +64,7 @@ export abstract class BaseWS extends Transport {
abstract createSocket(
uri: string,
protocols: string | string[] | undefined,
opts: Record<string, any>
opts: Record<string, any>,
);
/**
@@ -166,7 +166,7 @@ export class WS extends BaseWS {
createSocket(
uri: string,
protocols: string | string[] | undefined,
opts: Record<string, any>
opts: Record<string, any>,
) {
return !isReactNative
? protocols

View File

@@ -30,7 +30,7 @@ export class WT extends Transport {
// @ts-ignore
this._transport = new WebTransport(
this.createUri("https"),
this.opts.transportOptions[this.name]
this.opts.transportOptions[this.name],
);
} catch (err) {
return this.emitReserved("error", err);
@@ -51,7 +51,7 @@ export class WT extends Transport {
this._transport.createBidirectionalStream().then((stream) => {
const decoderStream = createPacketDecoderStream(
Number.MAX_SAFE_INTEGER,
this.socket.binaryType
this.socket.binaryType,
);
const reader = stream.readable.pipeThrough(decoderStream).getReader();

View File

@@ -34,12 +34,12 @@ describe("connection", function () {
const socket = new Socket();
socket.on("open", () => {
socket.send(
"\uD800\uDC00-\uDB7F\uDFFF\uDB80\uDC00-\uDBFF\uDFFF\uE000-\uF8FF"
"\uD800\uDC00-\uDB7F\uDFFF\uDB80\uDC00-\uDBFF\uDFFF\uE000-\uF8FF",
);
socket.on("message", (data) => {
if ("hi" === data) return;
expect(data).to.be(
"\uD800\uDC00-\uDB7F\uDFFF\uDB80\uDC00-\uDBFF\uDFFF\uE000-\uF8FF"
"\uD800\uDC00-\uDB7F\uDFFF\uDB80\uDC00-\uDBFF\uDFFF\uE000-\uF8FF",
);
socket.close();
done();

View File

@@ -90,7 +90,7 @@ describe("Socket", function () {
socket.on("error", (err) => {
expect(err.message).to.eql(
useFetch ? "fetch read error" : "xhr poll error"
useFetch ? "fetch read error" : "xhr poll error",
);
done();
});
@@ -237,7 +237,7 @@ describe("Socket", function () {
// err.context is a XMLHttpRequest object
expect(err.context.readyState).to.eql(4);
expect(err.context.responseText).to.eql(
'{"code":1,"message":"Session ID unknown"}'
'{"code":1,"message":"Session ID unknown"}',
);
}
});

View File

@@ -21,7 +21,7 @@ exports.mochaHooks = {
maxHttpBufferSize: 100,
allowRequest: (req, fn) => {
const denyRequest = new URL(`http://${req.url}`).searchParams.has(
"deny"
"deny",
);
fn(null, !denyRequest);
},

View File

@@ -100,7 +100,7 @@ describe("Transport", () => {
timestampRequests: false,
});
expect(polling.uri()).to.contain(
"http://localhost:3000/engine.io?sid=test"
"http://localhost:3000/engine.io?sid=test",
);
});
@@ -124,7 +124,7 @@ describe("Transport", () => {
timestampRequests: true,
});
expect(polling.uri()).to.match(
/http:\/\/localhost\/engine\.io\?(j=[0-9]+&)?(t=[0-9A-Za-z-_]+)/
/http:\/\/localhost\/engine\.io\?(j=[0-9]+&)?(t=[0-9A-Za-z-_]+)/,
);
});
@@ -180,7 +180,7 @@ describe("Transport", () => {
timestampRequests: true,
});
expect(ws.uri()).to.match(
/ws:\/\/localhost\/engine\.io\?woot=[0-9A-Za-z-_]+/
/ws:\/\/localhost\/engine\.io\?woot=[0-9A-Za-z-_]+/,
);
});

View File

@@ -17,7 +17,7 @@ async function setup(opts, cb) {
[{ shortName: "CN", value: "localhost" }],
{
days: 14, // the total length of the validity period MUST NOT exceed two weeks (https://w3c.github.io/webtransport/#custom-certificate-requirements)
}
},
);
const engine = new Server(opts);
@@ -73,8 +73,8 @@ function createSocket(port, certificate, opts) {
},
},
},
opts
)
opts,
),
);
}
@@ -113,7 +113,7 @@ describe("WebTransport", () => {
httpServer.close();
success(engine, h3Server, done);
});
}
},
);
});
@@ -137,7 +137,7 @@ describe("WebTransport", () => {
httpServer.close();
success(engine, h3Server, done);
});
}
},
);
});
@@ -160,7 +160,7 @@ describe("WebTransport", () => {
success(engine, h3Server, done);
}
});
}
},
);
});

View File

@@ -10,9 +10,6 @@
"require": "./build/cjs/index.js"
},
"types": "build/esm/index.d.ts",
"devDependencies": {
"prettier": "^3.3.2"
},
"scripts": {
"compile": "rimraf ./build && tsc && tsc -p tsconfig.esm.json && ./postcompile.sh",
"test": "npm run format:check && npm run compile && if test \"$BROWSERS\" = \"1\" ; then npm run test:browser; else npm run test:node; fi",

View File

@@ -78,7 +78,7 @@ export interface ServerOptions {
*/
allowRequest?: (
req: IncomingMessage,
fn: (err: string | null | undefined, success: boolean) => void
fn: (err: string | null | undefined, success: boolean) => void,
) => void;
/**
* The low-level transports that are enabled. WebTransport is disabled by default and must be manually enabled:
@@ -146,7 +146,7 @@ export interface ServerOptions {
type Middleware = (
req: IncomingMessage,
res: ServerResponse,
next: (err?: any) => void
next: (err?: any) => void,
) => void;
function parseSessionId(data: string) {
@@ -192,7 +192,7 @@ export abstract class BaseServer extends EventEmitter {
cors: false,
allowEIO3: false,
},
opts
opts,
);
if (opts.cookie) {
@@ -204,7 +204,7 @@ export abstract class BaseServer extends EventEmitter {
httpOnly: opts.cookie.path !== false,
sameSite: "lax",
},
opts.cookie
opts.cookie,
);
}
@@ -217,7 +217,7 @@ export abstract class BaseServer extends EventEmitter {
{
threshold: 1024,
},
opts.perMessageDeflate
opts.perMessageDeflate,
);
}
@@ -263,7 +263,7 @@ export abstract class BaseServer extends EventEmitter {
protected verify(
req: any,
upgrade: boolean,
fn: (errorCode?: number, errorContext?: any) => void
fn: (errorCode?: number, errorContext?: any) => void,
) {
// transport check
const transport = req._query.transport;
@@ -361,7 +361,7 @@ export abstract class BaseServer extends EventEmitter {
protected _applyMiddlewares(
req: IncomingMessage,
res: ServerResponse,
callback: (err?: any) => void
callback: (err?: any) => void,
) {
if (this.middlewares.length === 0) {
debug("no middleware to apply, skipping");
@@ -424,7 +424,7 @@ export abstract class BaseServer extends EventEmitter {
protected async handshake(
transportName: string,
req: any,
closeConnection: (errorCode?: number, errorContext?: any) => void
closeConnection: (errorCode?: number, errorContext?: any) => void,
) {
const protocol = req._query.EIO === "4" ? 4 : 3; // 3rd revision by default
if (protocol === 3 && !this.opts.allowEIO3) {
@@ -519,7 +519,7 @@ export abstract class BaseServer extends EventEmitter {
public async onWebTransportSession(session: any) {
const timeout = setTimeout(() => {
debug(
"the client failed to establish a bidirectional stream in the given period"
"the client failed to establish a bidirectional stream in the given period",
);
session.close();
}, this.opts.upgradeTimeout);
@@ -535,7 +535,7 @@ export abstract class BaseServer extends EventEmitter {
const stream = result.value;
const transformStream = createPacketDecoderStream(
this.opts.maxHttpBufferSize,
"nodebuffer"
"nodebuffer",
);
const reader = stream.readable.pipeThrough(transformStream).getReader();
@@ -632,7 +632,10 @@ export abstract class BaseServer extends EventEmitter {
* @see https://nodejs.org/api/http.html#class-httpserverresponse
*/
class WebSocketResponse {
constructor(readonly req, readonly socket: Duplex) {
constructor(
readonly req,
readonly socket: Duplex,
) {
// temporarily store the response headers on the req object (see the "headers" event)
req[kResponseHeaders] = {};
}
@@ -776,7 +779,7 @@ export class Server extends BaseServer {
public handleUpgrade(
req: EngineRequest,
socket: Duplex,
upgradeHead: Buffer
upgradeHead: Buffer,
) {
this.prepare(req);
@@ -953,7 +956,7 @@ function abortRequest(res, errorCode, errorContext) {
JSON.stringify({
code: errorCode,
message,
})
}),
);
}
@@ -968,7 +971,7 @@ function abortRequest(res, errorCode, errorContext) {
function abortUpgrade(
socket,
errorCode,
errorContext: { message?: string } = {}
errorContext: { message?: string } = {},
) {
socket.on("error", () => {
debug("ignoring error from closed connection");
@@ -984,7 +987,7 @@ function abortUpgrade(
length +
"\r\n" +
"\r\n" +
message
message,
);
}
socket.destroy();

View File

@@ -80,7 +80,7 @@ export class Socket extends EventEmitter {
server: BaseServer,
transport: Transport,
req: EngineRequest,
protocol: number
protocol: number,
) {
super();
this.id = id;
@@ -125,7 +125,7 @@ export class Socket extends EventEmitter {
pingInterval: this.server.opts.pingInterval,
pingTimeout: this.server.opts.pingTimeout,
maxPayload: this.server.opts.maxHttpBufferSize,
})
}),
);
if (this.server.opts.initialPacket) {
@@ -212,7 +212,7 @@ export class Socket extends EventEmitter {
this.pingIntervalTimer = setTimeout(() => {
debug(
"writing ping packet - expecting pong within %sms",
this.server.opts.pingTimeout
this.server.opts.pingTimeout,
);
this.sendPacket("ping");
this.resetPingTimeout();
@@ -233,7 +233,7 @@ export class Socket extends EventEmitter {
},
this.protocol === 3
? this.server.opts.pingInterval + this.server.opts.pingTimeout
: this.server.opts.pingTimeout
: this.server.opts.pingTimeout,
);
}
@@ -293,7 +293,7 @@ export class Socket extends EventEmitter {
debug(
'might upgrade socket transport from "%s" to "%s"',
this.transport.name,
transport.name
transport.name,
);
this.upgrading = true;
@@ -468,7 +468,7 @@ export class Socket extends EventEmitter {
type: PacketType,
data?: RawData,
options: SendOptions = {},
callback?: SendCallback
callback?: SendCallback,
) {
if ("function" === typeof options) {
callback = options;
@@ -561,7 +561,7 @@ export class Socket extends EventEmitter {
if (this.writeBuffer.length) {
debug(
"there are %d remaining packets in the buffer, waiting for the 'drain' event",
this.writeBuffer.length
this.writeBuffer.length,
);
this.once("drain", () => {
debug("all packets have been sent, closing the transport");

View File

@@ -69,7 +69,7 @@ export abstract class Transport extends EventEmitter {
"readyState updated from %s to %s (%s)",
this._readyState,
state,
this.name
this.name,
);
this._readyState = state;
}

View File

@@ -54,13 +54,13 @@ export class WebSocket extends Transport {
this.socket._sender.sendFrame(
// @ts-ignore
packet.options.wsPreEncodedFrame,
isLast ? this._onSentLast : this._onSent
isLast ? this._onSentLast : this._onSent,
);
} else {
this.parser.encodePacket(
packet,
this.supportsBinary,
isLast ? this._doSendLast : this._doSend
isLast ? this._doSendLast : this._doSend,
);
}
}

View File

@@ -10,7 +10,11 @@ const debug = debugModule("engine:webtransport");
export class WebTransport extends Transport {
private readonly writer;
constructor(private readonly session, stream, reader) {
constructor(
private readonly session,
stream,
reader,
) {
super({ _query: { EIO: "4" } });
const transformStream = createPacketEncoderStream();

View File

@@ -64,7 +64,7 @@ export class uServer extends BaseServer {
*/
public attach(
app /* : TemplatedApp */,
options: AttachOptions & uOptions = {}
options: AttachOptions & uOptions = {},
) {
const path = this._computePath(options);
(app as TemplatedApp)
@@ -84,7 +84,7 @@ export class uServer extends BaseServer {
},
message: (ws, message, isBinary) => {
ws.getUserData().transport.onData(
isBinary ? message : Buffer.from(message).toString()
isBinary ? message : Buffer.from(message).toString(),
);
},
close: (ws, code, message) => {
@@ -96,7 +96,7 @@ export class uServer extends BaseServer {
override _applyMiddlewares(
req: any,
res: any,
callback: (err?: any) => void
callback: (err?: any) => void,
): void {
if (this.middlewares.length === 0) {
return callback();
@@ -116,7 +116,7 @@ export class uServer extends BaseServer {
private handleRequest(
res: HttpResponse,
req: HttpRequest & { res: any; _query: any }
req: HttpRequest & { res: any; _query: any },
) {
debug('handling "%s" http request "%s"', req.getMethod(), req.getUrl());
this.prepare(req, res);
@@ -158,7 +158,7 @@ export class uServer extends BaseServer {
private handleUpgrade(
res: HttpResponse,
req: HttpRequest & { res: any; _query: any },
context
context,
) {
debug("on upgrade");
@@ -202,7 +202,7 @@ export class uServer extends BaseServer {
req._query.transport,
req,
(errorCode, errorContext) =>
this.abortRequest(res, errorCode, errorContext)
this.abortRequest(res, errorCode, errorContext),
);
if (!transport) {
return;
@@ -219,7 +219,7 @@ export class uServer extends BaseServer {
req.getHeader("sec-websocket-key"),
req.getHeader("sec-websocket-protocol"),
req.getHeader("sec-websocket-extensions"),
context
context,
);
};
@@ -235,7 +235,7 @@ export class uServer extends BaseServer {
private abortRequest(
res: HttpResponse | ResponseWrapper,
errorCode,
errorContext
errorContext,
) {
const statusCode =
errorCode === Server.errors.FORBIDDEN
@@ -252,7 +252,7 @@ export class uServer extends BaseServer {
JSON.stringify({
code: errorCode,
message,
})
}),
);
}
}

View File

@@ -93,7 +93,7 @@ describe("engine", () => {
"Upgrade: IRC/6.9",
"",
"",
].join("\r\n")
].join("\r\n"),
);
const check = setTimeout(() => {
@@ -122,7 +122,7 @@ describe("engine", () => {
"Upgrade: IRC/6.9",
"",
"",
].join("\r\n")
].join("\r\n"),
);
setTimeout(() => {
@@ -154,7 +154,7 @@ describe("engine", () => {
"Upgrade: IRC/6.9",
"",
"",
].join("\r\n")
].join("\r\n"),
);
// send from client to server
@@ -198,7 +198,7 @@ describe("engine", () => {
"Upgrade: IRC/6.9",
"",
"",
].join("\r\n")
].join("\r\n"),
);
// test that socket is still open by writing after the timeout period
@@ -245,7 +245,7 @@ describe("engine", () => {
server.once("close", done);
server.close();
});
}
},
);
});
});

View File

@@ -38,7 +38,7 @@ describe("middlewares", () => {
});
const socket = new WebSocket(
`ws://localhost:${port}/engine.io/?EIO=4&transport=websocket`
`ws://localhost:${port}/engine.io/?EIO=4&transport=websocket`,
);
socket.on("upgrade", (res) => {
@@ -131,7 +131,7 @@ describe("middlewares", () => {
});
const socket = new WebSocket(
`ws://localhost:${port}/engine.io/?EIO=4&transport=websocket`
`ws://localhost:${port}/engine.io/?EIO=4&transport=websocket`,
);
socket.addEventListener("error", () => {
@@ -169,7 +169,7 @@ describe("middlewares", () => {
engine.use(helmet());
const socket = new WebSocket(
`ws://localhost:${port}/engine.io/?EIO=4&transport=websocket`
`ws://localhost:${port}/engine.io/?EIO=4&transport=websocket`,
);
socket.on("upgrade", (res) => {
@@ -196,7 +196,7 @@ describe("middlewares", () => {
resave: false,
saveUninitialized: true,
cookie: {},
})
}),
);
request
@@ -206,7 +206,7 @@ describe("middlewares", () => {
expect(err).to.be(null);
// expect(res.status).to.eql(200);
expect(res.headers["set-cookie"][0].startsWith("connect.sid=")).to.be(
true
true,
);
if (engine.httpServer) {
@@ -225,16 +225,16 @@ describe("middlewares", () => {
resave: false,
saveUninitialized: true,
cookie: {},
})
}),
);
const socket = new WebSocket(
`ws://localhost:${port}/engine.io/?EIO=4&transport=websocket`
`ws://localhost:${port}/engine.io/?EIO=4&transport=websocket`,
);
socket.on("upgrade", (res) => {
expect(res.headers["set-cookie"][0].startsWith("connect.sid=")).to.be(
true
true,
);
if (engine.httpServer) {
@@ -280,7 +280,7 @@ describe("middlewares", () => {
});
const socket = new WebSocket(
`ws://localhost:${port}/engine.io/?EIO=4&transport=websocket`
`ws://localhost:${port}/engine.io/?EIO=4&transport=websocket`,
);
socket.addEventListener("error", () => {

View File

@@ -16,7 +16,7 @@ describe("parser", () => {
expect(decoded.data).to.eql("€€€€");
done();
});
}
},
);
});
});

View File

@@ -143,7 +143,7 @@ describe("server", () => {
expect(res.body.message).to.be("Thou shall not pass");
partialDone();
});
}
},
);
});
@@ -161,7 +161,7 @@ describe("server", () => {
client.on("error", () => {
done();
});
}
},
);
});
@@ -243,7 +243,7 @@ describe("server", () => {
});
const socket = new WebSocket(
`ws://localhost:${port}/engine.io/?EIO=4&transport=__proto__`
`ws://localhost:${port}/engine.io/?EIO=4&transport=__proto__`,
);
socket.onerror = partialDone;
@@ -262,7 +262,7 @@ describe("server", () => {
// hack-obtain sid
const sid = res.text.match(/"sid":"([^"]+)"/)[1];
expect(res.headers["set-cookie"][0]).to.be(
`io=${sid}; Path=/; HttpOnly; SameSite=Lax`
`io=${sid}; Path=/; HttpOnly; SameSite=Lax`,
);
done();
});
@@ -278,7 +278,7 @@ describe("server", () => {
expect(err).to.be(null);
const sid = res.text.match(/"sid":"([^"]+)"/)[1];
expect(res.headers["set-cookie"][0]).to.be(
`woot=${sid}; Path=/; HttpOnly; SameSite=Lax`
`woot=${sid}; Path=/; HttpOnly; SameSite=Lax`,
);
done();
});
@@ -294,7 +294,7 @@ describe("server", () => {
expect(err).to.be(null);
const sid = res.text.match(/"sid":"([^"]+)"/)[1];
expect(res.headers["set-cookie"][0]).to.be(
`io=${sid}; Path=/custom; HttpOnly; SameSite=Lax`
`io=${sid}; Path=/custom; HttpOnly; SameSite=Lax`,
);
done();
});
@@ -310,7 +310,7 @@ describe("server", () => {
expect(err).to.be(null);
const sid = res.text.match(/"sid":"([^"]+)"/)[1];
expect(res.headers["set-cookie"][0]).to.be(
`io=${sid}; SameSite=Lax`
`io=${sid}; SameSite=Lax`,
);
done();
});
@@ -326,7 +326,7 @@ describe("server", () => {
expect(err).to.be(null);
const sid = res.text.match(/"sid":"([^"]+)"/)[1];
expect(res.headers["set-cookie"][0]).to.be(
`io=${sid}; Path=/; HttpOnly; SameSite=Lax`
`io=${sid}; Path=/; HttpOnly; SameSite=Lax`,
);
done();
});
@@ -342,7 +342,7 @@ describe("server", () => {
expect(err).to.be(null);
const sid = res.text.match(/"sid":"([^"]+)"/)[1];
expect(res.headers["set-cookie"][0]).to.be(
`io=${sid}; Path=/; HttpOnly; SameSite=Strict`
`io=${sid}; Path=/; HttpOnly; SameSite=Strict`,
);
done();
});
@@ -358,7 +358,7 @@ describe("server", () => {
expect(err).to.be(null);
const sid = res.text.match(/"sid":"([^"]+)"/)[1];
expect(res.headers["set-cookie"][0]).to.be(
`io=${sid}; Path=/; SameSite=Lax`
`io=${sid}; Path=/; SameSite=Lax`,
);
done();
});
@@ -374,7 +374,7 @@ describe("server", () => {
expect(err).to.be(null);
const sid = res.text.match(/"sid":"([^"]+)"/)[1];
expect(res.headers["set-cookie"][0]).to.be(
`io=${sid}; Path=/; HttpOnly; SameSite=Lax`
`io=${sid}; Path=/; HttpOnly; SameSite=Lax`,
);
done();
});
@@ -681,14 +681,14 @@ describe("server", () => {
expect(res.body.code).to.be(3);
expect(res.body.message).to.be("Bad request");
expect(res.header["access-control-allow-credentials"]).to.be(
"true"
"true",
);
expect(res.header["access-control-allow-origin"]).to.be(
"http://engine.io"
"http://engine.io",
);
partialDone();
});
}
},
);
});
@@ -1130,7 +1130,7 @@ describe("server", () => {
expect(res.statusCode).to.eql(400);
res.resume();
res.on("end", done);
}
},
);
req.end();
});
@@ -1174,7 +1174,7 @@ describe("server", () => {
// OPENED readyState is expected - we are actually polling
expect(
socket.transport.pollXhr[IS_CLIENT_V3 ? "xhr" : "_xhr"]
.readyState
.readyState,
).to.be(1);
// 2 requests sent to the server over an unique port means
@@ -1194,7 +1194,7 @@ describe("server", () => {
}, 50);
});
});
}
},
);
it("should not trigger with connection: close header", ($done) => {
@@ -1260,7 +1260,7 @@ describe("server", () => {
done();
}, 200);
});
}
},
);
it(
@@ -1295,7 +1295,7 @@ describe("server", () => {
done();
}, 100);
});
}
},
);
it(
@@ -1331,7 +1331,7 @@ describe("server", () => {
});
});
});
}
},
);
if (IS_CLIENT_V3) {
@@ -1370,7 +1370,7 @@ describe("server", () => {
});
});
});
}
},
);
} else {
it(
@@ -1408,7 +1408,7 @@ describe("server", () => {
});
});
});
}
},
);
}
@@ -1435,7 +1435,7 @@ describe("server", () => {
socket.send("test");
});
});
}
},
);
// tests https://github.com/LearnBoost/engine.io-client/issues/207
@@ -1727,7 +1727,7 @@ describe("server", () => {
engine.on("connection", (conn) => {
conn.on("message", (msg) => {
done(
new Error("Test invalidation (message is longer than allowed)")
new Error("Test invalidation (message is longer than allowed)"),
);
});
});
@@ -1749,7 +1749,7 @@ describe("server", () => {
engine.on("connection", (conn) => {
conn.on("message", (msg) => {
done(
new Error("Test invalidation (message is longer than allowed)")
new Error("Test invalidation (message is longer than allowed)"),
);
});
});
@@ -2060,7 +2060,7 @@ describe("server", () => {
client.on("open", () => {
client.send("a".repeat(1e6));
});
}
},
);
});
@@ -2202,7 +2202,7 @@ describe("server", () => {
});
});
});
}
},
);
it("should support chinese", (done) => {
@@ -2546,7 +2546,7 @@ describe("server", () => {
j,
((value) => {
j++;
})(j)
})(j),
);
}
@@ -2585,7 +2585,7 @@ describe("server", () => {
j,
((value) => {
j++;
})(j)
})(j),
);
}
@@ -2999,7 +2999,7 @@ describe("server", () => {
done();
});
});
}
},
);
});
});
@@ -3031,7 +3031,7 @@ describe("server", () => {
done();
});
});
}
},
);
});
});
@@ -3174,11 +3174,11 @@ describe("server", () => {
.on("error", done)
.on("end", done)
.resume();
}
},
);
}
},
);
}
},
);
});
@@ -3212,11 +3212,11 @@ describe("server", () => {
.on("error", done)
.on("end", done)
.resume();
}
},
);
}
},
);
}
},
);
});
@@ -3250,11 +3250,11 @@ describe("server", () => {
(res) => {
expect(res.headers["content-encoding"]).to.equal("gzip");
done();
}
},
);
}
},
);
}
},
);
});
@@ -3284,11 +3284,11 @@ describe("server", () => {
(res) => {
expect(res.headers["content-encoding"]).to.be(undefined);
done();
}
},
);
}
},
);
}
},
);
});
@@ -3318,11 +3318,11 @@ describe("server", () => {
(res) => {
expect(res.headers["content-encoding"]).to.be(undefined);
done();
}
},
);
}
},
);
}
},
);
});
@@ -3352,11 +3352,11 @@ describe("server", () => {
(res) => {
expect(res.headers["content-encoding"]).to.be(undefined);
done();
}
},
);
}
},
);
}
},
);
});
});
@@ -3599,20 +3599,20 @@ describe("server", () => {
expect(res.status).to.be(204);
expect(res.body).to.be.empty();
expect(res.header["access-control-allow-origin"]).to.be(
"http://engine.io"
"http://engine.io",
);
expect(res.header["access-control-allow-methods"]).to.be(
"GET,HEAD,PUT,PATCH,POST,DELETE"
"GET,HEAD,PUT,PATCH,POST,DELETE",
);
expect(res.header["access-control-allow-headers"]).to.be(
"my-header"
"my-header",
);
expect(res.header["access-control-allow-credentials"]).to.be(
"true"
"true",
);
done();
});
}
},
);
});
@@ -3629,20 +3629,20 @@ describe("server", () => {
expect(res.status).to.be(200);
expect(res.body).to.be.empty();
expect(res.header["access-control-allow-origin"]).to.be(
"http://engine.io"
"http://engine.io",
);
expect(res.header["access-control-allow-methods"]).to.be(
undefined
undefined,
);
expect(res.header["access-control-allow-headers"]).to.be(
undefined
undefined,
);
expect(res.header["access-control-allow-credentials"]).to.be(
"true"
"true",
);
done();
});
}
},
);
});
@@ -3663,14 +3663,14 @@ describe("server", () => {
expect(res.status).to.be(204);
expect(res.body).to.be.empty();
expect(res.header["access-control-allow-origin"]).to.be(
undefined
undefined,
);
expect(res.header["access-control-allow-credentials"]).to.be(
undefined
undefined,
);
done();
});
}
},
);
});
@@ -3697,24 +3697,24 @@ describe("server", () => {
expect(res.status).to.be(200);
expect(res.body).to.be.empty();
expect(res.header["access-control-allow-origin"]).to.be(
"http://good-domain.com"
"http://good-domain.com",
);
expect(res.header["access-control-allow-methods"]).to.be(
"GET,PUT,POST"
"GET,PUT,POST",
);
expect(res.header["access-control-allow-headers"]).to.be(
"my-header"
"my-header",
);
expect(res.header["access-control-expose-headers"]).to.be(
"my-exposed-header"
"my-exposed-header",
);
expect(res.header["access-control-allow-credentials"]).to.be(
"true"
"true",
);
expect(res.header["access-control-max-age"]).to.be("123");
done();
});
}
},
);
});
@@ -3739,7 +3739,7 @@ describe("server", () => {
client.close();
done();
});
}
},
);
});
});
@@ -3767,7 +3767,7 @@ describe("server", () => {
done();
});
});
}
},
);
});
});

View File

@@ -31,7 +31,7 @@ async function setupServer(opts, cb) {
[{ shortName: "CN", value: "localhost" }],
{
days: 14, // the total length of the validity period MUST NOT exceed two weeks (https://w3c.github.io/webtransport/#custom-certificate-requirements)
}
},
);
const engine = new eio.Server(opts);
@@ -76,7 +76,7 @@ function setup(opts, cb) {
value: certificate.hash,
},
],
}
},
);
await client.ready;
@@ -106,7 +106,7 @@ describe("WebTransport", () => {
setupServer({}, async ({ engine, h3Server, certificate }) => {
const partialDone = createPartialDone(
() => success(engine, h3Server, done),
2
2,
);
engine.on("connection", (socket) => {
@@ -123,7 +123,7 @@ describe("WebTransport", () => {
value: certificate.hash,
},
],
}
},
);
await client.ready;
@@ -188,7 +188,7 @@ describe("WebTransport", () => {
value: certificate.hash,
},
],
}
},
);
await client.ready;
@@ -216,14 +216,14 @@ describe("WebTransport", () => {
await writer.write(Uint8Array.of(31));
await writer.write(
TEXT_ENCODER.encode(`0{"sid":"${payload.sid}"}`)
TEXT_ENCODER.encode(`0{"sid":"${payload.sid}"}`),
);
await writer.write(Uint8Array.of(6));
await writer.write(TEXT_ENCODER.encode(`2probe`));
await writer.write(Uint8Array.of(1));
await writer.write(TEXT_ENCODER.encode(`5`));
});
}
},
);
});
@@ -242,7 +242,7 @@ describe("WebTransport", () => {
value: certificate.hash,
},
],
}
},
);
await client.ready;
@@ -250,7 +250,7 @@ describe("WebTransport", () => {
client.closed.then(() => {
success(engine, h3Server, done);
});
}
},
);
});
@@ -269,7 +269,7 @@ describe("WebTransport", () => {
value: certificate.hash,
},
],
}
},
);
await client.ready;
@@ -281,7 +281,7 @@ describe("WebTransport", () => {
client.closed.then(() => {
success(engine, h3Server, done);
});
}
},
);
});
@@ -304,7 +304,7 @@ describe("WebTransport", () => {
}
success(engine, h3Server, done);
}
},
);
});
@@ -322,7 +322,7 @@ describe("WebTransport", () => {
});
client.closed.then(() => success(engine, h3Server, partialDone));
}
},
);
});
@@ -440,7 +440,7 @@ describe("WebTransport", () => {
const header = await reader.read();
expect(header.value).to.eql(
Uint8Array.of(255, 0, 0, 0, 0, 0, 15, 66, 64)
Uint8Array.of(255, 0, 0, 0, 0, 0, 15, 66, 64),
);
const chunk1 = await reader.read();

View File

@@ -203,7 +203,7 @@ export abstract class ClusterAdapter extends Adapter {
"[%s] new event of type %d from %s",
this.uid,
message.type,
message.uid
message.uid,
);
switch (message.type) {
@@ -217,7 +217,7 @@ export abstract class ClusterAdapter extends Adapter {
debug(
"[%s] waiting for %d client acknowledgements",
this.uid,
clientCount
clientCount,
);
this.publishResponse(message.uid, {
type: MessageType.BROADCAST_CLIENT_COUNT,
@@ -231,7 +231,7 @@ export abstract class ClusterAdapter extends Adapter {
debug(
"[%s] received acknowledgement with value %j",
this.uid,
arg
arg,
);
this.publishResponse(message.uid, {
type: MessageType.BROADCAST_ACK,
@@ -240,7 +240,7 @@ export abstract class ClusterAdapter extends Adapter {
packet: arg,
},
});
}
},
);
} else {
const packet = message.data.packet;
@@ -264,7 +264,7 @@ export abstract class ClusterAdapter extends Adapter {
case MessageType.DISCONNECT_SOCKETS:
super.disconnectSockets(
decodeOptions(message.data.opts),
message.data.close
message.data.close,
);
break;
@@ -272,7 +272,7 @@ export abstract class ClusterAdapter extends Adapter {
debug(
"[%s] calling fetchSockets with opts %j",
this.uid,
message.data.opts
message.data.opts,
);
super
.fetchSockets(decodeOptions(message.data.opts))
@@ -356,7 +356,7 @@ export abstract class ClusterAdapter extends Adapter {
"[%s] received response %s to request %s",
this.uid,
response.type,
requestId
requestId,
);
switch (response.type) {
@@ -381,7 +381,7 @@ export abstract class ClusterAdapter extends Adapter {
request.current++;
response.data.sockets.forEach((socket) =>
request.responses.push(socket)
request.responses.push(socket),
);
if (request.current === request.expected) {
@@ -433,7 +433,7 @@ export abstract class ClusterAdapter extends Adapter {
return debug(
"[%s] error while broadcasting message: %s",
this.uid,
e.message
e.message,
);
}
}
@@ -453,7 +453,7 @@ export abstract class ClusterAdapter extends Adapter {
private addOffsetIfNecessary(
packet: any,
opts: BroadcastOptions,
offset: Offset
offset: Offset,
) {
if (!this.nsp.server.opts.connectionStateRecovery) {
return;
@@ -473,7 +473,7 @@ export abstract class ClusterAdapter extends Adapter {
packet: any,
opts: BroadcastOptions,
clientCountCallback: (clientCount: number) => void,
ack: (...args: any[]) => void
ack: (...args: any[]) => void,
) {
const onlyLocal = opts?.flags?.local;
if (!onlyLocal) {
@@ -582,8 +582,8 @@ export abstract class ClusterAdapter extends Adapter {
if (storedRequest) {
reject(
new Error(
`timeout reached: only ${storedRequest.current} responses received out of ${storedRequest.expected}`
)
`timeout reached: only ${storedRequest.current} responses received out of ${storedRequest.expected}`,
),
);
this.requests.delete(requestId);
}
@@ -627,7 +627,7 @@ export abstract class ClusterAdapter extends Adapter {
debug(
'[%s] waiting for %d responses to "serverSideEmit" request',
this.uid,
expectedResponseCount
expectedResponseCount,
);
if (expectedResponseCount <= 0) {
@@ -641,9 +641,9 @@ export abstract class ClusterAdapter extends Adapter {
if (storedRequest) {
ack(
new Error(
`timeout reached: only ${storedRequest.current} responses received out of ${storedRequest.expected}`
`timeout reached: only ${storedRequest.current} responses received out of ${storedRequest.expected}`,
),
storedRequest.responses
storedRequest.responses,
);
this.requests.delete(requestId);
}
@@ -669,7 +669,7 @@ export abstract class ClusterAdapter extends Adapter {
}
protected publish(
message: DistributiveOmit<ClusterMessage, "nsp" | "uid">
message: DistributiveOmit<ClusterMessage, "nsp" | "uid">,
): void {
this.publishAndReturnOffset(message).catch((err) => {
debug("[%s] error while publishing message: %s", this.uid, err);
@@ -677,7 +677,7 @@ export abstract class ClusterAdapter extends Adapter {
}
protected publishAndReturnOffset(
message: DistributiveOmit<ClusterMessage, "nsp" | "uid">
message: DistributiveOmit<ClusterMessage, "nsp" | "uid">,
) {
(message as ClusterMessage).uid = this.uid;
(message as ClusterMessage).nsp = this.nsp.name;
@@ -695,14 +695,14 @@ export abstract class ClusterAdapter extends Adapter {
protected publishResponse(
requesterUid: ServerId,
response: Omit<ClusterResponse, "nsp" | "uid">
response: Omit<ClusterResponse, "nsp" | "uid">,
) {
(response as ClusterResponse).uid = this.uid;
(response as ClusterResponse).nsp = this.nsp.name;
this.doPublishResponse(requesterUid, response as ClusterResponse).catch(
(err) => {
debug("[%s] error while publishing response: %s", this.uid, err);
}
},
);
}
@@ -715,7 +715,7 @@ export abstract class ClusterAdapter extends Adapter {
*/
protected abstract doPublishResponse(
requesterUid: ServerId,
response: ClusterResponse
response: ClusterResponse,
): Promise<void>;
}
@@ -742,7 +742,7 @@ export abstract class ClusterAdapterWithHeartbeat extends ClusterAdapter {
heartbeatInterval: 5_000,
heartbeatTimeout: 10_000,
},
opts
opts,
);
this.cleanupTimer = setInterval(() => {
const now = Date.now();
@@ -798,7 +798,7 @@ export abstract class ClusterAdapterWithHeartbeat extends ClusterAdapter {
"[%s] new event of type %d from %s",
this.uid,
message.type,
message.uid
message.uid,
);
switch (message.type) {
@@ -846,7 +846,7 @@ export abstract class ClusterAdapterWithHeartbeat extends ClusterAdapter {
debug(
'[%s] waiting for %d responses to "serverSideEmit" request',
this.uid,
expectedResponseCount
expectedResponseCount,
);
if (expectedResponseCount <= 0) {
@@ -860,9 +860,9 @@ export abstract class ClusterAdapterWithHeartbeat extends ClusterAdapter {
if (storedRequest) {
ack(
new Error(
`timeout reached: missing ${storedRequest.missingUids.size} responses`
`timeout reached: missing ${storedRequest.missingUids.size} responses`,
),
storedRequest.responses
storedRequest.responses,
);
this.customRequests.delete(requestId);
}
@@ -911,8 +911,8 @@ export abstract class ClusterAdapterWithHeartbeat extends ClusterAdapter {
if (storedRequest) {
reject(
new Error(
`timeout reached: missing ${storedRequest.missingUids.size} responses`
)
`timeout reached: missing ${storedRequest.missingUids.size} responses`,
),
);
this.customRequests.delete(requestId);
}
@@ -944,7 +944,7 @@ export abstract class ClusterAdapterWithHeartbeat extends ClusterAdapter {
"[%s] received response %s to request %s",
this.uid,
response.type,
requestId
requestId,
);
switch (response.type) {
@@ -956,7 +956,7 @@ export abstract class ClusterAdapterWithHeartbeat extends ClusterAdapter {
}
(response.data.sockets as any[]).forEach((socket) =>
request.responses.push(socket)
request.responses.push(socket),
);
request.missingUids.delete(response.uid);

View File

@@ -3,7 +3,7 @@
const alphabet =
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(
""
"",
),
length = 64,
map = {};

View File

@@ -198,7 +198,7 @@ export class Adapter extends EventEmitter {
packet: any,
opts: BroadcastOptions,
clientCountCallback: (clientCount: number) => void,
ack: (...args: any[]) => void
ack: (...args: any[]) => void,
) {
const flags = opts.flags || {};
const packetOpts = {
@@ -375,7 +375,7 @@ export class Adapter extends EventEmitter {
*/
public serverSideEmit(packet: any[]): void {
console.warn(
"this adapter does not support the serverSideEmit() functionality"
"this adapter does not support the serverSideEmit() functionality",
);
}
@@ -391,7 +391,7 @@ export class Adapter extends EventEmitter {
*/
public restoreSession(
pid: PrivateSessionId,
offset: string
offset: string,
): Promise<Session> {
return null;
}
@@ -444,7 +444,7 @@ export class SessionAwareAdapter extends Adapter {
override restoreSession(
pid: PrivateSessionId,
offset: string
offset: string,
): Promise<Session> {
const session = this.sessions.get(pid);
if (!session) {
@@ -500,7 +500,7 @@ export class SessionAwareAdapter extends Adapter {
function shouldIncludePacket(
sessionRooms: Room[],
opts: BroadcastOptions
opts: BroadcastOptions,
): boolean {
const included =
opts.rooms.size === 0 || sessionRooms.some((room) => opts.rooms.has(room));

View File

@@ -16,7 +16,10 @@ const NODES_COUNT = 3;
class EventEmitterAdapter extends ClusterAdapterWithHeartbeat {
private offset = 1;
constructor(nsp, readonly eventBus) {
constructor(
nsp,
readonly eventBus,
) {
super(nsp, {});
this.eventBus.on("message", (message) => {
this.onMessage(message as ClusterMessage);
@@ -30,7 +33,7 @@ class EventEmitterAdapter extends ClusterAdapterWithHeartbeat {
protected doPublishResponse(
requesterUid: string,
response: ClusterResponse
response: ClusterResponse,
): Promise<void> {
this.eventBus.emit("message", response);
return Promise.resolve();

View File

@@ -153,7 +153,7 @@ describe("socket.io-adapter", () => {
expect(opts.wsPreEncodedFrame.length).to.eql(2);
expect(opts.wsPreEncodedFrame[0]).to.eql(Buffer.from([129, 4]));
expect(opts.wsPreEncodedFrame[1]).to.eql(
Buffer.from([52, 49, 50, 51])
Buffer.from([52, 49, 50, 51]),
);
},
},
@@ -352,7 +352,7 @@ describe("socket.io-adapter", () => {
{
rooms: new Set(),
except: new Set(),
}
},
);
const offset = packetData[1];
@@ -398,7 +398,7 @@ describe("socket.io-adapter", () => {
{
rooms: new Set(),
except: new Set(),
}
},
);
adapter.broadcast(
@@ -410,7 +410,7 @@ describe("socket.io-adapter", () => {
{
rooms: new Set(),
except: new Set(),
}
},
);
adapter.broadcast(
@@ -422,7 +422,7 @@ describe("socket.io-adapter", () => {
{
rooms: new Set(["r1"]),
except: new Set(),
}
},
);
adapter.broadcast(
@@ -434,7 +434,7 @@ describe("socket.io-adapter", () => {
{
rooms: new Set(),
except: new Set(["r2"]),
}
},
);
adapter.broadcast(
@@ -446,7 +446,7 @@ describe("socket.io-adapter", () => {
{
rooms: new Set(),
except: new Set(["r3"]),
}
},
);
adapter.broadcast(
@@ -459,7 +459,7 @@ describe("socket.io-adapter", () => {
{
rooms: new Set(),
except: new Set(),
}
},
);
adapter.broadcast(
@@ -471,7 +471,7 @@ describe("socket.io-adapter", () => {
{
rooms: new Set(),
except: new Set(),
}
},
);
adapter.broadcast(
@@ -486,7 +486,7 @@ describe("socket.io-adapter", () => {
flags: {
volatile: true,
},
}
},
);
const offset = packetData[1];

View File

@@ -25,11 +25,11 @@ const cache: Record<string, Manager> = {};
function lookup(opts?: Partial<ManagerOptions & SocketOptions>): Socket;
function lookup(
uri: string,
opts?: Partial<ManagerOptions & SocketOptions>
opts?: Partial<ManagerOptions & SocketOptions>,
): Socket;
function lookup(
uri?: string | Partial<ManagerOptions & SocketOptions>,
opts?: Partial<ManagerOptions & SocketOptions>
opts?: Partial<ManagerOptions & SocketOptions>,
): Socket {
if (typeof uri === "object") {
opts = uri;

View File

@@ -100,7 +100,7 @@ interface ManagerReservedEvents {
export class Manager<
ListenEvents extends EventsMap = DefaultEventsMap,
EmitEvents extends EventsMap = ListenEvents
EmitEvents extends EventsMap = ListenEvents,
> extends Emitter<{}, {}, ManagerReservedEvents> {
/**
* The Engine.IO client instance
@@ -152,11 +152,11 @@ export class Manager<
constructor(uri?: string, opts?: Partial<ManagerOptions>);
constructor(
uri?: string | Partial<ManagerOptions>,
opts?: Partial<ManagerOptions>
opts?: Partial<ManagerOptions>,
);
constructor(
uri?: string | Partial<ManagerOptions>,
opts?: Partial<ManagerOptions>
opts?: Partial<ManagerOptions>,
) {
super();
if (uri && "object" === typeof uri) {
@@ -405,7 +405,7 @@ export class Manager<
on(socket, "error", this.onerror.bind(this)),
on(socket, "close", this.onclose.bind(this)),
// @ts-ignore
on(this.decoder, "decoded", this.ondecoded.bind(this))
on(this.decoder, "decoded", this.ondecoded.bind(this)),
);
}

View File

@@ -3,7 +3,7 @@ import { Emitter } from "@socket.io/component-emitter";
export function on(
obj: Emitter<any, any>,
ev: string,
fn: (err?: any) => any
fn: (err?: any) => any,
): VoidFunction {
obj.on(ev, fn);
return function subDestroy(): void {

View File

@@ -116,7 +116,7 @@ interface SocketReservedEvents {
connect_error: (err: Error) => void;
disconnect: (
reason: Socket.DisconnectReason,
description?: DisconnectDescription
description?: DisconnectDescription,
) => void;
}
@@ -146,7 +146,7 @@ interface SocketReservedEvents {
*/
export class Socket<
ListenEvents extends EventsMap = DefaultEventsMap,
EmitEvents extends EventsMap = ListenEvents
EmitEvents extends EventsMap = ListenEvents,
> extends Emitter<ListenEvents, EmitEvents, SocketReservedEvents> {
public readonly io: Manager<ListenEvents, EmitEvents>;
@@ -554,7 +554,7 @@ export class Socket<
debug(
"packet [%d] is discarded after %d tries",
packet.id,
packet.tryCount
packet.tryCount,
);
this._queue.shift();
if (ack) {
@@ -591,7 +591,7 @@ export class Socket<
if (packet.pending && !force) {
debug(
"packet [%d] has already been sent and is waiting for an ack",
packet.id
packet.id,
);
return;
}
@@ -665,7 +665,7 @@ export class Socket<
*/
private onclose(
reason: Socket.DisconnectReason,
description?: DisconnectDescription
description?: DisconnectDescription,
): void {
debug("close (%s)", reason);
this.connected = false;
@@ -683,7 +683,7 @@ export class Socket<
private _clearAcks() {
Object.keys(this.acks).forEach((id) => {
const isBuffered = this.sendBuffer.some(
(packet) => String(packet.id) === id
(packet) => String(packet.id) === id,
);
if (!isBuffered) {
// note: handlers that do not accept an error as first argument are ignored here
@@ -716,8 +716,8 @@ export class Socket<
this.emitReserved(
"connect_error",
new Error(
"It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"
)
"It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)",
),
);
}
break;
@@ -967,7 +967,7 @@ export class Socket<
* @returns self
*/
public timeout(
timeout: number
timeout: number,
): Socket<ListenEvents, DecorateAcknowledgements<EmitEvents>> {
this.flags.timeout = timeout;
return this;

View File

@@ -39,7 +39,7 @@ type ParsedUrl = {
export function url(
uri: string | ParsedUrl,
path: string = "",
loc?: Location
loc?: Location,
): ParsedUrl {
let obj = uri as ParsedUrl;

View File

@@ -576,7 +576,7 @@ describe("connection", () => {
reconnectionAttempts: 2,
});
let delay = Math.floor(
manager.reconnectionDelay() * manager.randomizationFactor() * 0.5
manager.reconnectionDelay() * manager.randomizationFactor() * 0.5,
);
delay = Math.max(delay, 10);

View File

@@ -336,7 +336,7 @@ describe("socket", () => {
const socket = io(BASE_URL + "/no", { forceNew: true });
expect(() => socket.emit("disconnecting", "goodbye")).to.throwException(
/"disconnecting" is a reserved event name/
/"disconnecting" is a reserved event name/,
);
});

View File

@@ -92,7 +92,7 @@ describe("typed events", () => {
const value = await socket.emitWithAck(
"ackFromClientSingleArg",
"1",
2
2,
);
expectType<any>(value);
@@ -155,12 +155,12 @@ describe("typed events", () => {
ackFromClient: (
a: string,
b: number,
ack: (c: string, d: boolean) => void
ack: (c: string, d: boolean) => void,
) => void;
ackFromClientSingleArg: (
a: string,
b: number,
ack: (c: string) => void
ack: (c: string) => void,
) => void;
ackFromClientNoArg: (ack: () => void) => void;
}
@@ -232,7 +232,7 @@ describe("typed events", () => {
const value = await socket.emitWithAck(
"ackFromClientSingleArg",
"1",
2
2,
);
expectType<string>(value);

View File

@@ -79,7 +79,7 @@ if (process.env.CI === "true") {
{
appiumVersion: "2.0.0",
},
BASE_SAUCE_OPTIONS
BASE_SAUCE_OPTIONS,
),
},
{
@@ -92,7 +92,7 @@ if (process.env.CI === "true") {
{
appiumVersion: "2.0.0",
},
BASE_SAUCE_OPTIONS
BASE_SAUCE_OPTIONS,
),
},
];

View File

@@ -107,7 +107,7 @@ type ClusterRequest = {
function isClientLockable(
client: Socket,
transportName: string,
lockType: "read" | "write"
lockType: "read" | "write",
) {
switch (transportName) {
case "polling":
@@ -166,7 +166,7 @@ export abstract class ClusterEngine extends Server {
noopUpgradeInterval: 200,
delayedConnectionTimeout: 300,
},
opts
opts,
);
}
@@ -188,7 +188,7 @@ export abstract class ClusterEngine extends Server {
const success = isClientLockable(
client,
transportName,
message.data.type
message.data.type,
);
this.publishMessage({
@@ -340,7 +340,7 @@ export abstract class ClusterEngine extends Server {
private _forwardFlushWhenPolling(
client: Socket,
sid: SessionId,
senderId: NodeId
senderId: NodeId,
) {
// @ts-expect-error req is private
client.transport.req = true;
@@ -370,7 +370,7 @@ export abstract class ClusterEngine extends Server {
private _forwardFlushWhenWebSocket(
client: Socket,
sid: SessionId,
senderId: NodeId
senderId: NodeId,
) {
client.transport.writable = true;
client.transport.send = (packets) => {
@@ -392,7 +392,7 @@ export abstract class ClusterEngine extends Server {
override verify(
req: IncomingMessage & { _query: Record<string, string> },
upgrade: boolean,
fn: (errorCode?: number, context?: any) => void
fn: (errorCode?: number, context?: any) => void,
): void {
super.verify(req, upgrade, (errorCode: number, errorContext: any) => {
if (errorCode !== Server.errors.UNKNOWN_SID) {
@@ -419,7 +419,7 @@ export abstract class ClusterEngine extends Server {
};
this._acquireLock(sid, transportName, lockType, onSuccess, () =>
fn(errorCode, errorContext)
fn(errorCode, errorContext),
);
});
}
@@ -429,7 +429,7 @@ export abstract class ClusterEngine extends Server {
transportName: string,
lockType: "read" | "write",
onSuccess: (senderId: NodeId) => void,
onError: () => void
onError: () => void,
) {
const requestId = ++this._requestCount as RequestId;
@@ -460,27 +460,27 @@ export abstract class ClusterEngine extends Server {
sid: SessionId,
transport: Transport,
lockType: "read" | "write",
senderId: NodeId
senderId: NodeId,
) {
if (lockType === "read") {
this._remoteTransports.set(sid, transport);
}
transport.on("packet", async (packet: Packet) =>
this._onPacket(sid, senderId, packet)
this._onPacket(sid, senderId, packet),
);
transport.once("error", () =>
this._onClose(sid, senderId, "transport error")
this._onClose(sid, senderId, "transport error"),
);
transport.once("close", () =>
this._onClose(sid, senderId, "transport close")
this._onClose(sid, senderId, "transport close"),
);
}
private _tryUpgrade(
transport: Transport,
onSuccess: () => void,
onError: () => void
onError: () => void,
) {
debug("starting upgrade process");
@@ -532,7 +532,7 @@ export abstract class ClusterEngine extends Server {
private _onClose(
sid: SessionId,
senderId: NodeId,
reason: "transport error" | "transport close"
reason: "transport error" | "transport close",
) {
this.publishMessage({
senderId: this._nodeId,
@@ -563,7 +563,7 @@ export abstract class ClusterEngine extends Server {
() => this._onUpgradeSuccess(sid, transport, req, senderId),
() => {
debug("upgrade failure");
}
},
);
}
@@ -571,7 +571,7 @@ export abstract class ClusterEngine extends Server {
sid: SessionId,
transport: Transport,
req: any,
senderId: NodeId
senderId: NodeId,
) {
debug("upgrade success");
this._hookTransport(sid, transport, "read", senderId);
@@ -655,7 +655,7 @@ export abstract class ClusterEngine extends Server {
socket[kDelayedTimer] = setTimeout(
() => this._doConnect(socket),
this._opts.delayedConnectionTimeout
this._opts.delayedConnectionTimeout,
);
}
@@ -664,7 +664,7 @@ export abstract class ClusterEngine extends Server {
return;
}
debug(
"the client has not upgraded yet, so the connection process is completed here"
"the client has not upgraded yet, so the connection process is completed here",
);
socket[kDelayed] = false;
socket.off("packet", socket[kPacketListener]);

View File

@@ -31,7 +31,7 @@ function channelName(prefix: string, nodeId?: string) {
export function setupPrimaryWithRedis(
pubClient: any,
subClient: any,
opts?: PrimaryWithRedisOptions
opts?: PrimaryWithRedisOptions,
) {
const primaryId = randomUUID();
const prefix = opts?.channelPrefix || "engine.io";
@@ -81,7 +81,7 @@ export function setupPrimaryWithRedis(
"message",
(
sourceWorker,
message: Message & { _source?: string; _primaryId?: string }
message: Message & { _source?: string; _primaryId?: string },
) => {
if (message._source !== MESSAGE_SOURCE) {
debug("ignore message from unknown source");
@@ -117,7 +117,7 @@ export function setupPrimaryWithRedis(
debug("publish message to channel %s", channel);
pubClient.publish(channel, encode(message));
}
},
);
}
@@ -179,14 +179,14 @@ const RETURN_BUFFERS = true;
function SUBSCRIBE(
redisClient: any,
channels: string[],
listener: (message: Buffer) => void
listener: (message: Buffer) => void,
) {
if (isRedisClient(redisClient)) {
redisClient.subscribe(channels, listener, RETURN_BUFFERS);
} else {
redisClient.subscribe(channels);
redisClient.on("messageBuffer", (_channel: Buffer, message: Buffer) =>
listener(message)
listener(message),
);
}
}

View File

@@ -7,7 +7,10 @@ import { type ServerOptions } from "engine.io";
import { url, handshake } from "./util";
class InMemoryEngine extends ClusterEngine {
constructor(readonly eventBus: EventEmitter, opts?: ServerOptions) {
constructor(
readonly eventBus: EventEmitter,
opts?: ServerOptions,
) {
super(opts);
eventBus.on("message", (message) => this.onMessage(message));
}
@@ -290,7 +293,7 @@ describe("in-memory", () => {
const sid = await handshake(3000);
const socket = new WebSocket(
`ws://localhost:3001/engine.io/?EIO=4&transport=websocket&sid=${sid}`
`ws://localhost:3001/engine.io/?EIO=4&transport=websocket&sid=${sid}`,
);
socket.onopen = () => {
@@ -338,7 +341,7 @@ describe("in-memory", () => {
expect(res.status).to.eql(200);
const socket = new WebSocket(
`ws://localhost:3001/engine.io/?EIO=4&transport=websocket&sid=${sid}`
`ws://localhost:3001/engine.io/?EIO=4&transport=websocket&sid=${sid}`,
);
socket.onopen = () => {

View File

@@ -5,12 +5,12 @@ const BlobBuilderImpl =
typeof BlobBuilder !== "undefined"
? BlobBuilder
: typeof WebKitBlobBuilder !== "undefined"
? WebKitBlobBuilder
: typeof MSBlobBuilder !== "undefined"
? MSBlobBuilder
: typeof MozBlobBuilder !== "undefined"
? MozBlobBuilder
: false;
? WebKitBlobBuilder
: typeof MSBlobBuilder !== "undefined"
? MSBlobBuilder
: typeof MozBlobBuilder !== "undefined"
? MozBlobBuilder
: false;
describe("Blob", () => {
it("encodes a Blob", () => {

View File

@@ -15,12 +15,12 @@ const BlobBuilderImpl =
typeof BlobBuilder !== "undefined"
? BlobBuilder
: typeof WebKitBlobBuilder !== "undefined"
? WebKitBlobBuilder
: typeof MSBlobBuilder !== "undefined"
? MSBlobBuilder
: typeof MozBlobBuilder !== "undefined"
? MozBlobBuilder
: false;
? WebKitBlobBuilder
: typeof MSBlobBuilder !== "undefined"
? MSBlobBuilder
: typeof MozBlobBuilder !== "undefined"
? MozBlobBuilder
: false;
const blobBuilderSupported =
!!BlobBuilderImpl &&
!!BlobBuilderImpl.prototype.append &&

View File

@@ -110,7 +110,7 @@ describe("socket.io-parser", () => {
it("throw an error upon parsing error", () => {
const isInvalidPayload = (str) =>
expect(() => new Decoder().add(str)).to.throwException(
/^invalid payload$/
/^invalid payload$/,
);
isInvalidPayload('442["some","data"');
@@ -126,11 +126,11 @@ describe("socket.io-parser", () => {
isInvalidPayload('2["disconnect","123"]');
expect(() => new Decoder().add("999")).to.throwException(
/^unknown packet type 9$/
/^unknown packet type 9$/,
);
expect(() => new Decoder().add(999)).to.throwException(
/^Unknown type: 999$/
/^Unknown type: 999$/,
);
});
@@ -154,7 +154,7 @@ describe("socket.io-parser", () => {
isPacketValid({
type: 0,
nsp: "/",
})
}),
).to.eql(true);
expect(
@@ -162,7 +162,7 @@ describe("socket.io-parser", () => {
type: 0,
nsp: "/admin",
data: "invalid",
})
}),
).to.eql(false);
expect(
@@ -170,7 +170,7 @@ describe("socket.io-parser", () => {
type: 0,
nsp: "/",
data: [],
})
}),
).to.eql(false);
expect(
@@ -178,7 +178,7 @@ describe("socket.io-parser", () => {
type: 1,
nsp: "/admin",
data: {},
})
}),
).to.eql(false);
expect(
@@ -186,7 +186,7 @@ describe("socket.io-parser", () => {
type: 2,
nsp: "/admin",
data: "invalid",
})
}),
).to.eql(false);
expect(
@@ -194,7 +194,7 @@ describe("socket.io-parser", () => {
type: 2,
nsp: "/admin",
data: {},
})
}),
).to.eql(false);
expect(
@@ -202,7 +202,7 @@ describe("socket.io-parser", () => {
type: 2,
nsp: "/",
data: { toString: "foo" },
})
}),
).to.eql(false);
expect(
@@ -210,7 +210,7 @@ describe("socket.io-parser", () => {
type: 2,
nsp: "/",
data: [true, "foo"],
})
}),
).to.eql(false);
expect(
@@ -218,7 +218,7 @@ describe("socket.io-parser", () => {
type: 2,
nsp: "/",
data: [null, "bar"],
})
}),
).to.eql(false);
expect(
@@ -226,7 +226,7 @@ describe("socket.io-parser", () => {
type: 2,
nsp: "/",
data: ["connect"],
})
}),
).to.eql(false);
expect(
@@ -234,7 +234,7 @@ describe("socket.io-parser", () => {
type: 2,
nsp: "/",
data: ["disconnect", "123"],
})
}),
).to.eql(false);
});
});

View File

@@ -72,7 +72,7 @@ if (process.env.CI === "true") {
{
appiumVersion: "2.0.0",
},
BASE_SAUCE_OPTIONS
BASE_SAUCE_OPTIONS,
),
},
{
@@ -85,7 +85,7 @@ if (process.env.CI === "true") {
{
appiumVersion: "2.0.0",
},
BASE_SAUCE_OPTIONS
BASE_SAUCE_OPTIONS,
),
},
];

View File

@@ -23,7 +23,7 @@ export class BroadcastOperator<EmitEvents extends EventsMap, SocketData>
private readonly exceptRooms: Set<Room> = new Set<Room>(),
private readonly flags: BroadcastFlags & {
expectSingleResponse?: boolean;
} = {}
} = {},
) {}
/**
@@ -53,7 +53,7 @@ export class BroadcastOperator<EmitEvents extends EventsMap, SocketData>
this.adapter,
rooms,
this.exceptRooms,
this.flags
this.flags,
);
}
@@ -98,7 +98,7 @@ export class BroadcastOperator<EmitEvents extends EventsMap, SocketData>
this.adapter,
this.rooms,
exceptRooms,
this.flags
this.flags,
);
}
@@ -117,7 +117,7 @@ export class BroadcastOperator<EmitEvents extends EventsMap, SocketData>
this.adapter,
this.rooms,
this.exceptRooms,
flags
flags,
);
}
@@ -137,7 +137,7 @@ export class BroadcastOperator<EmitEvents extends EventsMap, SocketData>
this.adapter,
this.rooms,
this.exceptRooms,
flags
flags,
);
}
@@ -156,7 +156,7 @@ export class BroadcastOperator<EmitEvents extends EventsMap, SocketData>
this.adapter,
this.rooms,
this.exceptRooms,
flags
flags,
);
}
@@ -276,7 +276,7 @@ export class BroadcastOperator<EmitEvents extends EventsMap, SocketData>
// each client sends an acknowledgement
responses.push(clientResponse);
checkCompleteness();
}
},
);
this.adapter.serverCount().then((serverCount) => {
@@ -326,7 +326,7 @@ export class BroadcastOperator<EmitEvents extends EventsMap, SocketData>
public allSockets(): Promise<Set<SocketId>> {
if (!this.adapter) {
throw new Error(
"No adapter for this namespace, are you trying to get the list of clients of a dynamic namespace?"
"No adapter for this namespace, are you trying to get the list of clients of a dynamic namespace?",
);
}
return this.adapter.sockets(this.rooms);
@@ -371,7 +371,7 @@ export class BroadcastOperator<EmitEvents extends EventsMap, SocketData>
} else {
return new RemoteSocket(
this.adapter,
socket as SocketDetails<SocketData>
socket as SocketDetails<SocketData>,
);
}
});
@@ -400,7 +400,7 @@ export class BroadcastOperator<EmitEvents extends EventsMap, SocketData>
except: this.exceptRooms,
flags: this.flags,
},
Array.isArray(room) ? room : [room]
Array.isArray(room) ? room : [room],
);
}
@@ -425,7 +425,7 @@ export class BroadcastOperator<EmitEvents extends EventsMap, SocketData>
except: this.exceptRooms,
flags: this.flags,
},
Array.isArray(room) ? room : [room]
Array.isArray(room) ? room : [room],
);
}
@@ -450,7 +450,7 @@ export class BroadcastOperator<EmitEvents extends EventsMap, SocketData>
except: this.exceptRooms,
flags: this.flags,
},
close
close,
);
}
}
@@ -489,7 +489,7 @@ export class RemoteSocket<EmitEvents extends EventsMap, SocketData>
new Set(),
{
expectSingleResponse: true, // so that remoteSocket.emit() with acknowledgement behaves like socket.emit()
}
},
);
}
@@ -517,7 +517,7 @@ export class RemoteSocket<EmitEvents extends EventsMap, SocketData>
* @param timeout
*/
public timeout(
timeout: number
timeout: number,
): BroadcastOperator<DecorateAcknowledgements<EmitEvents>, SocketData> {
return this.operator.timeout(timeout);
}

View File

@@ -29,7 +29,7 @@ export class Client<
ListenEvents extends EventsMap,
EmitEvents extends EventsMap,
ServerSideEvents extends EventsMap,
SocketData = any
SocketData = any,
> {
public readonly conn: RawSocket;
@@ -61,7 +61,7 @@ export class Client<
*/
constructor(
server: Server<ListenEvents, EmitEvents, ServerSideEvents, SocketData>,
conn: any
conn: any,
) {
this.server = server;
this.conn = conn;
@@ -126,7 +126,7 @@ export class Client<
(
dynamicNspName:
| Namespace<ListenEvents, EmitEvents, ServerSideEvents, SocketData>
| false
| false,
) => {
if (dynamicNspName) {
this.doConnect(name, auth);
@@ -140,7 +140,7 @@ export class Client<
},
});
}
}
},
);
}
@@ -185,7 +185,7 @@ export class Client<
* @private
*/
_remove(
socket: Socket<ListenEvents, EmitEvents, ServerSideEvents, SocketData>
socket: Socket<ListenEvents, EmitEvents, ServerSideEvents, SocketData>,
): void {
if (this.sockets.has(socket.id)) {
const nsp = this.sockets.get(socket.id)!.nsp.name;
@@ -229,11 +229,11 @@ export class Client<
private writeToEngine(
encodedPackets: Array<string | Buffer>,
opts: WriteOptions
opts: WriteOptions,
): void {
if (opts.volatile && !this.conn.transport.writable) {
debug(
"volatile packet is discarded since the transport is not currently writable"
"volatile packet is discarded since the transport is not currently writable",
);
return;
}
@@ -316,7 +316,7 @@ export class Client<
*/
private onclose(
reason: CloseReason | "forced server close",
description?: any
description?: any,
): void {
debug("client close with reason %s", reason);

View File

@@ -51,7 +51,7 @@ const dotMapRegex = /\.map/;
type ParentNspNameMatchFn = (
name: string,
auth: { [key: string]: any },
fn: (err: Error | null, success: boolean) => void
fn: (err: Error | null, success: boolean) => void,
) => void;
type AdapterConstructor = typeof Adapter | ((nsp: Namespace) => Adapter);
@@ -144,7 +144,7 @@ export class Server<
ListenEvents extends EventsMap = DefaultEventsMap,
EmitEvents extends EventsMap = ListenEvents,
ServerSideEvents extends EventsMap = DefaultEventsMap,
SocketData = any
SocketData = any,
> extends StrictEventEmitter<
ServerSideEvents,
RemoveAcknowledgements<EmitEvents>,
@@ -218,7 +218,7 @@ export class Server<
private _corsMiddleware: (
req: http.IncomingMessage,
res: http.ServerResponse,
next: () => void
next: () => void,
) => void;
/**
@@ -231,11 +231,11 @@ export class Server<
constructor(srv?: TServerInstance | number, opts?: Partial<ServerOptions>);
constructor(
srv: undefined | Partial<ServerOptions> | TServerInstance | number,
opts?: Partial<ServerOptions>
opts?: Partial<ServerOptions>,
);
constructor(
srv: undefined | Partial<ServerOptions> | TServerInstance | number,
opts: Partial<ServerOptions> = {}
opts: Partial<ServerOptions> = {},
) {
super();
if (
@@ -258,7 +258,7 @@ export class Server<
maxDisconnectionDuration: 2 * 60 * 1000,
skipMiddlewares: true,
},
opts.connectionStateRecovery
opts.connectionStateRecovery,
);
this.adapter(opts.adapter || SessionAwareAdapter);
} else {
@@ -308,8 +308,8 @@ export class Server<
fn: (
nsp:
| Namespace<ListenEvents, EmitEvents, ServerSideEvents, SocketData>
| false
) => void
| false,
) => void,
): void {
if (this.parentNsps.size === 0) return fn(false);
@@ -356,7 +356,7 @@ export class Server<
this.clientPathRegex = new RegExp(
"^" +
escapedPath +
"/socket\\.io(\\.msgpack|\\.esm)?(\\.min)?\\.js(\\.map)?(?:\\?|$)"
"/socket\\.io(\\.msgpack|\\.esm)?(\\.min)?\\.js(\\.map)?(?:\\?|$)",
);
return this;
}
@@ -383,7 +383,7 @@ export class Server<
public adapter(): AdapterConstructor | undefined;
public adapter(v: AdapterConstructor): this;
public adapter(
v?: AdapterConstructor
v?: AdapterConstructor,
): AdapterConstructor | undefined | this {
if (!arguments.length) return this._adapter;
this._adapter = v;
@@ -402,7 +402,7 @@ export class Server<
*/
public listen(
srv: TServerInstance | number,
opts: Partial<ServerOptions> = {}
opts: Partial<ServerOptions> = {},
): this {
return this.attach(srv, opts);
}
@@ -416,7 +416,7 @@ export class Server<
*/
public attach(
srv: TServerInstance | number,
opts: Partial<ServerOptions> = {}
opts: Partial<ServerOptions> = {},
): this {
if ("function" == typeof srv) {
const msg =
@@ -501,7 +501,7 @@ export class Server<
res.writeHeader("cache-control", "public, max-age=0");
res.writeHeader(
"content-type",
"application/" + (isMap ? "json" : "javascript") + "; charset=utf-8"
"application/" + (isMap ? "json" : "javascript") + "; charset=utf-8",
);
res.writeHeader("etag", expectedEtag);
@@ -522,7 +522,7 @@ export class Server<
*/
private initEngine(
srv: TServerInstance,
opts: EngineOptions & AttachOptions
opts: EngineOptions & AttachOptions,
): void {
// initialize engine
debug("creating engine.io instance with opts %j", opts);
@@ -598,7 +598,7 @@ export class Server<
res.setHeader("Cache-Control", "public, max-age=0");
res.setHeader(
"Content-Type",
"application/" + (isMap ? "json" : "javascript") + "; charset=utf-8"
"application/" + (isMap ? "json" : "javascript") + "; charset=utf-8",
);
res.setHeader("ETag", expectedEtag);
@@ -614,10 +614,10 @@ export class Server<
private static sendFile(
filename: string,
req: http.IncomingMessage,
res: http.ServerResponse
res: http.ServerResponse,
): void {
const readStream = createReadStream(
path.join(__dirname, "../client-dist/", filename)
path.join(__dirname, "../client-dist/", filename),
);
const encoding = accepts(req).encodings(["br", "gzip", "deflate"]);
@@ -696,8 +696,8 @@ export class Server<
public of(
name: string | RegExp | ParentNspNameMatchFn,
fn?: (
socket: Socket<ListenEvents, EmitEvents, ServerSideEvents, SocketData>
) => void
socket: Socket<ListenEvents, EmitEvents, ServerSideEvents, SocketData>,
) => void,
): Namespace<ListenEvents, EmitEvents, ServerSideEvents, SocketData> {
if (typeof name === "function" || name instanceof RegExp) {
const parentNsp = new ParentNamespace(this);
@@ -707,7 +707,7 @@ export class Server<
} else {
this.parentNsps.set(
(nsp, conn, next) => next(null, (name as RegExp).test(nsp)),
parentNsp
parentNsp,
);
this.parentNamespacesFromRegExp.set(name, parentNsp);
}
@@ -754,7 +754,7 @@ export class Server<
});
await nsp.adapter.close();
})
}),
);
this.engine.close();
@@ -783,8 +783,8 @@ export class Server<
public use(
fn: (
socket: Socket<ListenEvents, EmitEvents, ServerSideEvents, SocketData>,
next: (err?: ExtendedError) => void
) => void
next: (err?: ExtendedError) => void,
) => void,
): this {
this.sockets.use(fn);
return this;
@@ -1093,11 +1093,11 @@ export class Server<
* Expose main namespace (/).
*/
const emitterMethods = Object.keys(EventEmitter.prototype).filter(function (
key
) {
return typeof EventEmitter.prototype[key] === "function";
});
const emitterMethods = Object.keys(EventEmitter.prototype).filter(
function (key) {
return typeof EventEmitter.prototype[key] === "function";
},
);
emitterMethods.forEach(function (fn) {
Server.prototype[fn] = function () {

View File

@@ -31,13 +31,13 @@ export interface NamespaceReservedEventsMap<
ListenEvents extends EventsMap,
EmitEvents extends EventsMap,
ServerSideEvents extends EventsMap,
SocketData
SocketData,
> {
connect: (
socket: Socket<ListenEvents, EmitEvents, ServerSideEvents, SocketData>
socket: Socket<ListenEvents, EmitEvents, ServerSideEvents, SocketData>,
) => void;
connection: (
socket: Socket<ListenEvents, EmitEvents, ServerSideEvents, SocketData>
socket: Socket<ListenEvents, EmitEvents, ServerSideEvents, SocketData>,
) => void;
}
@@ -45,7 +45,7 @@ export interface ServerReservedEventsMap<
ListenEvents extends EventsMap,
EmitEvents extends EventsMap,
ServerSideEvents extends EventsMap,
SocketData
SocketData,
> extends NamespaceReservedEventsMap<
ListenEvents,
EmitEvents,
@@ -53,7 +53,12 @@ export interface ServerReservedEventsMap<
SocketData
> {
new_namespace: (
namespace: Namespace<ListenEvents, EmitEvents, ServerSideEvents, SocketData>
namespace: Namespace<
ListenEvents,
EmitEvents,
ServerSideEvents,
SocketData
>,
) => void;
}
@@ -118,7 +123,7 @@ export class Namespace<
ListenEvents extends EventsMap = DefaultEventsMap,
EmitEvents extends EventsMap = ListenEvents,
ServerSideEvents extends EventsMap = DefaultEventsMap,
SocketData = any
SocketData = any,
> extends StrictEventEmitter<
ServerSideEvents,
RemoveAcknowledgements<EmitEvents>,
@@ -149,7 +154,7 @@ export class Namespace<
_fns: Array<
(
socket: Socket<ListenEvents, EmitEvents, ServerSideEvents, SocketData>,
next: (err?: ExtendedError) => void
next: (err?: ExtendedError) => void,
) => void
> = [];
@@ -164,7 +169,7 @@ export class Namespace<
*/
constructor(
server: Server<ListenEvents, EmitEvents, ServerSideEvents, SocketData>,
name: string
name: string,
) {
super();
this.server = server;
@@ -200,8 +205,8 @@ export class Namespace<
public use(
fn: (
socket: Socket<ListenEvents, EmitEvents, ServerSideEvents, SocketData>,
next: (err?: ExtendedError) => void
) => void
next: (err?: ExtendedError) => void,
) => void,
): this {
this._fns.push(fn);
return this;
@@ -216,7 +221,7 @@ export class Namespace<
*/
private run(
socket: Socket<ListenEvents, EmitEvents, ServerSideEvents, SocketData>,
fn: (err: ExtendedError | null) => void
fn: (err: ExtendedError | null) => void,
) {
const fns = this._fns.slice(0);
if (!fns.length) return fn(null);
@@ -316,8 +321,8 @@ export class Namespace<
client: Client<ListenEvents, EmitEvents, ServerSideEvents>,
auth: Record<string, unknown>,
fn: (
socket: Socket<ListenEvents, EmitEvents, ServerSideEvents, SocketData>
) => void
socket: Socket<ListenEvents, EmitEvents, ServerSideEvents, SocketData>,
) => void,
) {
debug("adding socket to nsp %s", this.name);
const socket = await this._createSocket(client, auth);
@@ -359,7 +364,7 @@ export class Namespace<
private async _createSocket(
client: Client<ListenEvents, EmitEvents, ServerSideEvents>,
auth: Record<string, unknown>
auth: Record<string, unknown>,
) {
const sessionId = auth.pid;
const offset = auth.offset;
@@ -386,8 +391,8 @@ export class Namespace<
private _doConnect(
socket: Socket<ListenEvents, EmitEvents, ServerSideEvents, SocketData>,
fn: (
socket: Socket<ListenEvents, EmitEvents, ServerSideEvents, SocketData>
) => void
socket: Socket<ListenEvents, EmitEvents, ServerSideEvents, SocketData>,
) => void,
) {
// track socket
this.sockets.set(socket.id, socket);
@@ -410,7 +415,7 @@ export class Namespace<
* @private
*/
_remove(
socket: Socket<ListenEvents, EmitEvents, ServerSideEvents, SocketData>
socket: Socket<ListenEvents, EmitEvents, ServerSideEvents, SocketData>,
): void {
if (this.sockets.has(socket.id)) {
this.sockets.delete(socket.id);
@@ -447,7 +452,7 @@ export class Namespace<
): boolean {
return new BroadcastOperator<EmitEvents, SocketData>(this.adapter).emit(
ev,
...args
...args,
);
}
@@ -563,7 +568,7 @@ export class Namespace<
});
this.serverSideEmit(
ev,
...(args as any[] as EventParams<ServerSideEvents, Ev>)
...(args as any[] as EventParams<ServerSideEvents, Ev>),
);
});
}
@@ -587,7 +592,7 @@ export class Namespace<
*/
public allSockets(): Promise<Set<SocketId>> {
return new BroadcastOperator<EmitEvents, SocketData>(
this.adapter
this.adapter,
).allSockets();
}
@@ -697,7 +702,7 @@ export class Namespace<
*/
public fetchSockets() {
return new BroadcastOperator<EmitEvents, SocketData>(
this.adapter
this.adapter,
).fetchSockets();
}
@@ -719,7 +724,7 @@ export class Namespace<
*/
public socketsJoin(room: Room | Room[]) {
return new BroadcastOperator<EmitEvents, SocketData>(
this.adapter
this.adapter,
).socketsJoin(room);
}
@@ -741,7 +746,7 @@ export class Namespace<
*/
public socketsLeave(room: Room | Room[]) {
return new BroadcastOperator<EmitEvents, SocketData>(
this.adapter
this.adapter,
).socketsLeave(room);
}
@@ -763,7 +768,7 @@ export class Namespace<
*/
public disconnectSockets(close: boolean = false) {
return new BroadcastOperator<EmitEvents, SocketData>(
this.adapter
this.adapter,
).disconnectSockets(close);
}
}

View File

@@ -31,7 +31,7 @@ export class ParentNamespace<
ListenEvents extends EventsMap = DefaultEventsMap,
EmitEvents extends EventsMap = ListenEvents,
ServerSideEvents extends EventsMap = DefaultEventsMap,
SocketData = any
SocketData = any,
> extends Namespace<ListenEvents, EmitEvents, ServerSideEvents, SocketData> {
private static count: number = 0;
private readonly children: Set<
@@ -39,7 +39,7 @@ export class ParentNamespace<
> = new Set();
constructor(
server: Server<ListenEvents, EmitEvents, ServerSideEvents, SocketData>
server: Server<ListenEvents, EmitEvents, ServerSideEvents, SocketData>,
) {
super(server, "/_" + ParentNamespace.count++);
}
@@ -63,16 +63,16 @@ export class ParentNamespace<
}
createChild(
name: string
name: string,
): Namespace<ListenEvents, EmitEvents, ServerSideEvents, SocketData> {
debug("creating child namespace %s", name);
const namespace = new Namespace(this.server, name);
namespace._fns = this._fns.slice(0);
this.listeners("connect").forEach((listener) =>
namespace.on("connect", listener)
namespace.on("connect", listener),
);
this.listeners("connection").forEach((listener) =>
namespace.on("connection", listener)
namespace.on("connection", listener),
);
this.children.add(namespace);

View File

@@ -66,11 +66,11 @@ export interface SocketReservedEventsMap {
export interface EventEmitterReservedEventsMap {
newListener: (
eventName: string | Symbol,
listener: (...args: any[]) => void
listener: (...args: any[]) => void,
) => void;
removeListener: (
eventName: string | Symbol,
listener: (...args: any[]) => void
listener: (...args: any[]) => void,
) => void;
}
@@ -180,7 +180,7 @@ export class Socket<
ListenEvents extends EventsMap = DefaultEventsMap,
EmitEvents extends EventsMap = ListenEvents,
ServerSideEvents extends EventsMap = DefaultEventsMap,
SocketData = any
SocketData = any,
> extends StrictEventEmitter<
ListenEvents,
EmitEvents,
@@ -252,7 +252,7 @@ export class Socket<
readonly nsp: Namespace<ListenEvents, EmitEvents, ServerSideEvents>,
readonly client: Client<ListenEvents, EmitEvents, ServerSideEvents>,
auth: Record<string, unknown>,
previousSession?: Session
previousSession?: Session,
) {
super();
this.server = nsp.server;
@@ -529,7 +529,7 @@ export class Socket<
*/
private packet(
packet: Omit<Packet, "nsp"> & Partial<Pick<Packet, "nsp">>,
opts: any = {}
opts: any = {},
): void {
packet.nsp = this.nsp.name;
opts.compress = false !== opts.compress;
@@ -556,7 +556,7 @@ export class Socket<
return this.adapter.addAll(
this.id,
new Set(Array.isArray(rooms) ? rooms : [rooms])
new Set(Array.isArray(rooms) ? rooms : [rooms]),
);
}
@@ -893,7 +893,7 @@ export class Socket<
* @returns self
*/
public timeout(
timeout: number
timeout: number,
): Socket<
ListenEvents,
DecorateAcknowledgements<EmitEvents>,

View File

@@ -27,7 +27,7 @@ export type EventNames<Map extends EventsMap> = keyof Map & (string | symbol);
*/
export type EventNamesWithAck<
Map extends EventsMap,
K extends EventNames<Map> = EventNames<Map>
K extends EventNames<Map> = EventNames<Map>,
> = IfAny<
Last<Parameters<Map[K]>> | Map[K],
K,
@@ -48,17 +48,17 @@ export type EventNamesWithAck<
*/
export type EventNamesWithoutAck<
Map extends EventsMap,
K extends EventNames<Map> = EventNames<Map>
K extends EventNames<Map> = EventNames<Map>,
> = IfAny<
Last<Parameters<Map[K]>> | Map[K],
K,
K extends (Parameters<Map[K]> extends never[] ? K : never)
? K
: K extends (
Last<Parameters<Map[K]>> extends (...args: any[]) => any ? never : K
)
? K
: never
Last<Parameters<Map[K]>> extends (...args: any[]) => any ? never : K
)
? K
: never
>;
export type RemoveAcknowledgements<E extends EventsMap> = {
@@ -67,7 +67,7 @@ export type RemoveAcknowledgements<E extends EventsMap> = {
export type EventNamesWithError<
Map extends EventsMap,
K extends EventNamesWithAck<Map> = EventNamesWithAck<Map>
K extends EventNamesWithAck<Map> = EventNamesWithAck<Map>,
> = IfAny<
Last<Parameters<Map[K]>> | Map[K],
K,
@@ -81,7 +81,7 @@ export type EventNamesWithError<
/** The tuple type representing the parameters of an event listener */
export type EventParams<
Map extends EventsMap,
Ev extends EventNames<Map>
Ev extends EventNames<Map>,
> = Parameters<Map[Ev]>;
/**
@@ -89,7 +89,7 @@ export type EventParams<
*/
export type ReservedOrUserEventNames<
ReservedEventsMap extends EventsMap,
UserEvents extends EventsMap
UserEvents extends EventsMap,
> = EventNames<ReservedEventsMap> | EventNames<UserEvents>;
/**
@@ -99,13 +99,13 @@ export type ReservedOrUserEventNames<
export type ReservedOrUserListener<
ReservedEvents extends EventsMap,
UserEvents extends EventsMap,
Ev extends ReservedOrUserEventNames<ReservedEvents, UserEvents>
Ev extends ReservedOrUserEventNames<ReservedEvents, UserEvents>,
> = FallbackToUntypedListener<
Ev extends EventNames<ReservedEvents>
? ReservedEvents[Ev]
: Ev extends EventNames<UserEvents>
? UserEvents[Ev]
: never
? UserEvents[Ev]
: never
>;
/**
@@ -145,7 +145,7 @@ export interface TypedEventBroadcaster<EmitEvents extends EventsMap> {
export abstract class StrictEventEmitter<
ListenEvents extends EventsMap,
EmitEvents extends EventsMap,
ReservedEvents extends EventsMap = {}
ReservedEvents extends EventsMap = {},
>
extends EventEmitter
implements TypedEventBroadcaster<EmitEvents>
@@ -158,7 +158,7 @@ export abstract class StrictEventEmitter<
*/
on<Ev extends ReservedOrUserEventNames<ReservedEvents, ListenEvents>>(
ev: Ev,
listener: ReservedOrUserListener<ReservedEvents, ListenEvents, Ev>
listener: ReservedOrUserListener<ReservedEvents, ListenEvents, Ev>,
): this {
return super.on(ev, listener);
}
@@ -171,7 +171,7 @@ export abstract class StrictEventEmitter<
*/
once<Ev extends ReservedOrUserEventNames<ReservedEvents, ListenEvents>>(
ev: Ev,
listener: ReservedOrUserListener<ReservedEvents, ListenEvents, Ev>
listener: ReservedOrUserListener<ReservedEvents, ListenEvents, Ev>,
): this {
return super.once(ev, listener);
}
@@ -226,7 +226,7 @@ export abstract class StrictEventEmitter<
* @returns Array of listeners subscribed to `event`
*/
listeners<Ev extends ReservedOrUserEventNames<ReservedEvents, ListenEvents>>(
event: Ev
event: Ev,
): ReservedOrUserListener<ReservedEvents, ListenEvents, Ev>[] {
return super.listeners(event) as ReservedOrUserListener<
ReservedEvents,
@@ -255,9 +255,8 @@ type IsAny<T> = 0 extends 1 & T ? true : false;
* @author sindresorhus
* @link https://github.com/sindresorhus/type-fest
*/
type IfAny<T, TypeIfAny = true, TypeIfNotAny = false> = IsAny<T> extends true
? TypeIfAny
: TypeIfNotAny;
type IfAny<T, TypeIfAny = true, TypeIfNotAny = false> =
IsAny<T> extends true ? TypeIfAny : TypeIfNotAny;
/**
* Extracts the type of the last element of an array.
@@ -271,10 +270,10 @@ export type Last<ValueType extends readonly unknown[]> =
ValueType extends readonly [infer ElementType]
? ElementType
: ValueType extends readonly [infer _, ...infer Tail]
? Last<Tail>
: ValueType extends ReadonlyArray<infer ElementType>
? ElementType
: never;
? Last<Tail>
: ValueType extends ReadonlyArray<infer ElementType>
? ElementType
: never;
export type FirstNonErrorTuple<T extends unknown[]> = T[0] extends Error
? T[1]
@@ -316,13 +315,15 @@ type ExpectMultipleResponses<T extends any[]> = {
? Params extends [Error]
? (err: Error) => Result
: Params extends [Error, ...infer Rest]
? (
err: Error,
...args: InferFirstAndPreserveLabel<MultiplyArray<Rest>>
) => Result
: Params extends []
? () => Result
: (...args: InferFirstAndPreserveLabel<MultiplyArray<Params>>) => Result
? (
err: Error,
...args: InferFirstAndPreserveLabel<MultiplyArray<Rest>>
) => Result
: Params extends []
? () => Result
: (
...args: InferFirstAndPreserveLabel<MultiplyArray<Params>>
) => Result
: T[K];
};
/**

View File

@@ -76,7 +76,7 @@ export function patchAdapter(app /* : TemplatedApp */) {
app.publish(
topic,
isBinary ? encodedPacket : "4" + encodedPacket,
isBinary
isBinary,
);
});
@@ -93,7 +93,7 @@ function subscribe(
namespaceName: string,
socket: Socket,
isNew: boolean,
rooms: Set<Room>
rooms: Set<Room>,
) {
// @ts-ignore
const sessionId = socket.conn.id;
@@ -144,7 +144,7 @@ export function serveFile(res /* : HttpResponse */, filepath: string) {
res.onWritable((offset) => {
const [ok, done] = res.tryEnd(
arrayBufferChunk.slice(offset - lastOffset),
size
size,
);
if (!done && ok) {

View File

@@ -59,7 +59,7 @@ describe("connection state recovery", () => {
await eioPush(
httpServer,
newSid,
`40{"pid":"${pid}","offset":"${offset}"}`
`40{"pid":"${pid}","offset":"${offset}"}`,
);
const payload = await eioPoll(httpServer, newSid);

View File

@@ -22,11 +22,11 @@ describe("handshake", () => {
expect(res.status).to.be(204);
expect(res.headers["access-control-allow-origin"]).to.be(
"http://localhost:54023"
"http://localhost:54023",
);
expect(res.headers["access-control-allow-methods"]).to.be("GET,POST");
expect(res.headers["access-control-allow-headers"]).to.be(
"content-type"
"content-type",
);
expect(res.headers["access-control-allow-credentials"]).to.be("true");
success(done, io);
@@ -50,7 +50,7 @@ describe("handshake", () => {
expect(res.status).to.be(200);
expect(res.headers["access-control-allow-origin"]).to.be(
"http://localhost:54024"
"http://localhost:54024",
);
expect(res.headers["access-control-allow-credentials"]).to.be("true");
success(done, io);

View File

@@ -17,7 +17,7 @@ describe("messaging many", () => {
const partialDone = createPartialDone(
2,
successFn(done, io, socket1, socket2, socket3)
successFn(done, io, socket1, socket2, socket3),
);
socket1.on("a", (a) => {
@@ -53,7 +53,7 @@ describe("messaging many", () => {
const partialDone = createPartialDone(
2,
successFn(done, io, socket1, socket2, socket3)
successFn(done, io, socket1, socket2, socket3),
);
socket1.on("bin", (a) => {
@@ -142,7 +142,7 @@ describe("messaging many", () => {
const partialDone = createPartialDone(
2,
successFn(done, io, socket1, socket2)
successFn(done, io, socket1, socket2),
);
socket2.on("a", () => {
@@ -178,7 +178,7 @@ describe("messaging many", () => {
const partialDone = createPartialDone(
2,
successFn(done, io, socket1, socket2, socket3)
successFn(done, io, socket1, socket2, socket3),
);
socket1.emit("join", "woot");
@@ -221,7 +221,7 @@ describe("messaging many", () => {
const partialDone = createPartialDone(
2,
successFn(done, io, socket1, socket2, socket3)
successFn(done, io, socket1, socket2, socket3),
);
socket1.emit("join", "woot");

View File

@@ -179,7 +179,7 @@ describe("middleware", () => {
const partialDone = createPartialDone(
2,
successFn(done, io, socket1, socket2)
successFn(done, io, socket1, socket2),
);
io.of("/chat").use((socket, next) => {

View File

@@ -389,7 +389,7 @@ describe("namespaces", () => {
const io = new Server();
expect(() => io.emit("connect")).to.throwException(
/"connect" is a reserved event name/
/"connect" is a reserved event name/,
);
});
@@ -660,7 +660,9 @@ describe("namespaces", () => {
c2.on("connect_error", () => {
done(
new Error("Client got error when connecting to dynamic namespace")
new Error(
"Client got error when connecting to dynamic namespace",
),
);
});
}, 100);

View File

@@ -17,7 +17,7 @@ describe("server attachment", () => {
.end((err, res) => {
if (err) return done(err);
expect(res.headers["content-type"]).to.be(
"application/javascript; charset=utf-8"
"application/javascript; charset=utf-8",
);
expect(res.headers.etag).to.be('"' + clientVersion + '"');
expect(res.headers["x-sourcemap"]).to.be(undefined);
@@ -36,7 +36,7 @@ describe("server attachment", () => {
.end((err, res) => {
if (err) return done(err);
expect(res.headers["content-type"]).to.be(
"application/json; charset=utf-8"
"application/json; charset=utf-8",
);
expect(res.headers.etag).to.be('"' + clientVersion + '"');
expect(res.text).to.match(/engine\.io/);
@@ -48,7 +48,7 @@ describe("server attachment", () => {
it("should serve client", testSource("socket.io.js"));
it(
"should serve client with query string",
testSource("socket.io.js?buster=" + Date.now())
testSource("socket.io.js?buster=" + Date.now()),
);
it("should serve source map", testSourceMap("socket.io.js.map"));
it("should serve client (min)", testSource("socket.io.min.js"));
@@ -99,7 +99,7 @@ describe("server attachment", () => {
.end((err, res) => {
if (err) return done(err);
expect(res.headers["access-control-allow-origin"]).to.be(
"https://good-origin.com"
"https://good-origin.com",
);
expect(res.status).to.be(200);
done();
@@ -108,19 +108,19 @@ describe("server attachment", () => {
it(
"should serve bundle with msgpack parser",
testSource("socket.io.msgpack.min.js")
testSource("socket.io.msgpack.min.js"),
);
it(
"should serve source map for bundle with msgpack parser",
testSourceMap("socket.io.msgpack.min.js.map")
testSourceMap("socket.io.msgpack.min.js.map"),
);
it("should serve the ESM bundle", testSource("socket.io.esm.min.js"));
it(
"should serve the source map for the ESM bundle",
testSourceMap("socket.io.esm.min.js.map")
testSourceMap("socket.io.esm.min.js.map"),
);
it("should handle 304", (done) => {

View File

@@ -123,7 +123,7 @@ describe("server", () => {
const value1 = await s.emitWithAck(
"ackFromServerSingleArg",
true,
"123"
"123",
);
expectType<any>(value1);
});
@@ -158,7 +158,7 @@ describe("server", () => {
it("does not accept arguments of wrong types", (done) => {
const srv = createServer();
const sio = new Server<BidirectionalEvents, BidirectionalEvents, {}>(
srv
srv,
);
// @ts-expect-error - shouldn't accept arguments of the wrong types
sio.on("random", (a, b, c) => {});
@@ -184,7 +184,7 @@ describe("server", () => {
) => boolean;
type ToEmitWithAck<
Map extends EventsMap,
Ev extends keyof Map = keyof Map
Ev extends keyof Map = keyof Map,
> = (ev: Ev, ...args: Parameters<Map[Ev]>) => ReturnType<Map[Ev]>;
interface ClientToServerEvents {
noArgs: () => void;
@@ -192,7 +192,7 @@ describe("server", () => {
ackFromClient: (
a: string,
b: number,
ack: (c: string, d: number) => void
ack: (c: string, d: number) => void,
) => void;
}
@@ -202,12 +202,12 @@ describe("server", () => {
ackFromServer: (
a: boolean,
b: string,
ack: (c: boolean, d: string) => void
ack: (c: boolean, d: string) => void,
) => void;
ackFromServerSingleArg: (
a: boolean,
b: string,
ack: (c: string) => void
ack: (c: string) => void,
) => void;
onlyCallback: (a: () => void) => void;
}
@@ -226,12 +226,12 @@ describe("server", () => {
ackFromServer: (
a: boolean,
b: string,
ack: (err: Error, c: boolean, d: string) => void
ack: (err: Error, c: boolean, d: string) => void,
) => void;
ackFromServerSingleArg: (
a: boolean,
b: string,
ack: (err: Error, c: string) => void
ack: (err: Error, c: string) => void,
) => void;
onlyCallback: (a: (err: Error) => void) => void;
}
@@ -243,7 +243,7 @@ describe("server", () => {
ackFromServerSingleArg: (
a: boolean,
b: string,
ack: (c: string[]) => void
ack: (c: string[]) => void,
) => void;
onlyCallback: (a: () => void) => void;
}
@@ -253,12 +253,12 @@ describe("server", () => {
ackFromServer: (
a: boolean,
b: string,
ack: (err: Error, c: boolean[]) => void
ack: (err: Error, c: boolean[]) => void,
) => void;
ackFromServerSingleArg: (
a: boolean,
b: string,
ack: (err: Error, c: string[]) => void
ack: (err: Error, c: string[]) => void,
) => void;
onlyCallback: (a: (err: Error) => void) => void;
}
@@ -315,7 +315,7 @@ describe("server", () => {
untyped.of("/").emit("random2", 2, "string", Server);
expectType<Promise<any>>(untyped.to("1").emitWithAck("random", "test"));
expectType<(ev: string, ...args: any[]) => Promise<any>>(
untyped.to("1").emitWithAck<string>
untyped.to("1").emitWithAck<string>,
);
});
it("has the correct types", () => {
@@ -326,25 +326,25 @@ describe("server", () => {
const nio = sio.of("/");
for (const emitter of [sio, nio]) {
expectType<BroadcastOperator<ServerToClientEventsWithMultiple, any>>(
emitter.to("1")
emitter.to("1"),
);
expectType<BroadcastOperator<ServerToClientEventsWithMultiple, any>>(
emitter.in("1")
emitter.in("1"),
);
expectType<BroadcastOperator<ServerToClientEventsWithMultiple, any>>(
emitter.except("1")
emitter.except("1"),
);
expectType<BroadcastOperator<ServerToClientEventsWithMultiple, any>>(
emitter.except("1")
emitter.except("1"),
);
expectType<BroadcastOperator<ServerToClientEventsWithMultiple, any>>(
emitter.compress(true)
emitter.compress(true),
);
expectType<BroadcastOperator<ServerToClientEventsWithMultiple, any>>(
emitter.volatile
emitter.volatile,
);
expectType<BroadcastOperator<ServerToClientEventsWithMultiple, any>>(
emitter.local
emitter.local,
);
expectType<
BroadcastOperator<ServerToClientEventsWithMultipleAndError, any>
@@ -367,16 +367,16 @@ describe("server", () => {
>(s.timeout(0).broadcast);
// ensure that turning socket to a broadcast works correctly
expectType<BroadcastOperator<ServerToClientEventsWithMultiple, any>>(
s.broadcast
s.broadcast,
);
expectType<BroadcastOperator<ServerToClientEventsWithMultiple, any>>(
s.in("1")
s.in("1"),
);
expectType<BroadcastOperator<ServerToClientEventsWithMultiple, any>>(
s.except("1")
s.except("1"),
);
expectType<BroadcastOperator<ServerToClientEventsWithMultiple, any>>(
s.to("1")
s.to("1"),
);
// Ensure that adding a timeout to a broadcast works after the fact
expectType<
@@ -391,7 +391,7 @@ describe("server", () => {
it("has the correct types for `emit`", () => {
const sio = new Server<ClientToServerEvents, ServerToClientEvents>();
expectType<ToEmit<ServerToClientEventsWithMultipleAndError, "noArgs">>(
sio.timeout(0).emit<"noArgs">
sio.timeout(0).emit<"noArgs">,
);
expectType<
ToEmit<ServerToClientEventsWithMultipleAndError, "helloFromServer">
@@ -414,7 +414,7 @@ describe("server", () => {
const sansTimeout = sio.in("1");
// Without timeout, `emitWithAck` shouldn't accept any events
expectType<never>(
undefined as Parameters<(typeof sansTimeout)["emitWithAck"]>[0]
undefined as Parameters<(typeof sansTimeout)["emitWithAck"]>[0],
);
// @ts-expect-error - "noArgs" doesn't have a callback and is thus excluded
sio.timeout(0).emitWithAck("noArgs");
@@ -441,33 +441,33 @@ describe("server", () => {
const sio = new Server<ClientToServerEvents, ServerToClientEvents>();
const nio = sio.of("/test");
expectType<ToEmit<ServerToClientEventsNoAck, "noArgs">>(
sio.emit<"noArgs">
sio.emit<"noArgs">,
);
expectType<ToEmit<ServerToClientEventsNoAck, "noArgs">>(
nio.emit<"noArgs">
nio.emit<"noArgs">,
);
expectType<ToEmit<ServerToClientEventsNoAck, "helloFromServer">>(
// These errors will dissapear once the TS version is updated from 4.7.4
// the TSD instance is using a newer version of TS than the workspace version
// to enable the ability to compare against `any`
sio.emit<"helloFromServer">
sio.emit<"helloFromServer">,
);
expectType<ToEmit<ServerToClientEventsNoAck, "helloFromServer">>(
nio.emit<"helloFromServer">
nio.emit<"helloFromServer">,
);
sio.on("connection", (s) => {
expectType<ToEmit<ServerToClientEvents, "noArgs">>(s.emit<"noArgs">);
expectType<ToEmit<ServerToClientEvents, "helloFromServer">>(
s.emit<"helloFromServer">
s.emit<"helloFromServer">,
);
expectType<ToEmit<ServerToClientEvents, "ackFromServerSingleArg">>(
s.emit<"ackFromServerSingleArg">
s.emit<"ackFromServerSingleArg">,
);
expectType<ToEmit<ServerToClientEvents, "ackFromServer">>(
s.emit<"ackFromServer">
s.emit<"ackFromServer">,
);
expectType<ToEmit<ServerToClientEvents, "onlyCallback">>(
s.emit<"onlyCallback">
s.emit<"onlyCallback">,
);
});
});
@@ -631,7 +631,7 @@ describe("server", () => {
const value = await sio.serverSideEmitWithAck(
"ackFromServerToServer",
"foo"
"foo",
);
expectType<number[]>(value);
@@ -652,7 +652,10 @@ describe("server", () => {
io.adapter(Adapter);
class MyCustomAdapter extends Adapter {
constructor(nsp, readonly opts) {
constructor(
nsp,
readonly opts,
) {
super(nsp);
}
}

View File

@@ -807,7 +807,7 @@ describe("socket", () => {
io.on("connection", (s) => {
s.conn.on("upgrade", () => {
console.log(
"\u001b[96mNote: warning expected and normal in test.\u001b[39m"
"\u001b[96mNote: warning expected and normal in test.\u001b[39m",
);
// @ts-ignore
socket.io.engine.write("5woooot");
@@ -825,7 +825,7 @@ describe("socket", () => {
io.on("connection", (s) => {
s.conn.on("upgrade", () => {
console.log(
"\u001b[96mNote: warning expected and normal in test.\u001b[39m"
"\u001b[96mNote: warning expected and normal in test.\u001b[39m",
);
// @ts-ignore
socket.io.engine.write('44["handle me please"]');
@@ -883,7 +883,7 @@ describe("socket", () => {
const socket = createClient(io);
io.on("connection", (s) => {
expect(() => s.emit("connect_error")).to.throwException(
/"connect_error" is a reserved event name/
/"connect_error" is a reserved event name/,
);
socket.close();
success(done, io, socket);
@@ -1112,7 +1112,7 @@ describe("socket", () => {
const partialDone = createPartialDone(
3,
successFn(done, io, socket1, socket2, socket3)
successFn(done, io, socket1, socket2, socket3),
);
socket1.on("disconnect", partialDone);

View File

@@ -25,7 +25,7 @@ expect.Assertion.prototype.contain = function (...args) {
},
function () {
return "expected " + i(this.obj) + " to not contain " + i(obj);
}
},
);
});
return this;
@@ -35,11 +35,11 @@ expect.Assertion.prototype.contain = function (...args) {
export function createClient<
CTS extends EventsMap = DefaultEventsMap,
STC extends EventsMap = DefaultEventsMap
STC extends EventsMap = DefaultEventsMap,
>(
io: Server,
nsp: string = "/",
opts?: Partial<ManagerOptions & SocketOptions>
opts?: Partial<ManagerOptions & SocketOptions>,
): ClientSocket<STC, CTS> {
const port = (io.httpServer.address() as AddressInfo).port;
return ioc(`http://localhost:${port}${nsp}`, opts);

View File

@@ -47,7 +47,7 @@ describe("utility methods", () => {
ioc(`http://localhost:${port}`, {
// FIXME needed so that clients are properly closed
transports: ["websocket"],
})
}),
);
}

View File

@@ -212,7 +212,7 @@ describe("socket.io with uWebSocket.js-based engine", () => {
.end((err, res) => {
if (err) return done(err);
expect(res.headers["content-type"]).to.be(
"application/javascript; charset=utf-8"
"application/javascript; charset=utf-8",
);
expect(res.headers.etag).to.be('"' + clientVersion + '"');
expect(res.headers["x-sourcemap"]).to.be(undefined);

View File

@@ -32,7 +32,7 @@ describe("v2 compatibility", () => {
`http://localhost:${getPort(io)}/the-namespace`,
{
multiplex: false,
}
},
);
clientSocket.query = { test: "123" };