Compare commits

...

3 Commits
4.1.0 ... 4.1.1

Author SHA1 Message Date
Damien Arrachequesne
995f38f4cc chore(release): 4.1.1
Diff: https://github.com/socketio/socket.io/compare/4.1.0...4.1.1
2021-05-12 00:04:52 +02:00
Damien Arrachequesne
891b1870e9 fix(typings): properly type the adapter attribute
Related: https://github.com/socketio/socket.io/issues/3796
2021-05-11 23:59:44 +02:00
Damien Arrachequesne
b84ed1e41c fix(typings): properly type server-side events
See also: 93cce05fb3
2021-05-11 23:59:18 +02:00
11 changed files with 60 additions and 24 deletions

View File

@@ -1,3 +1,12 @@
## [4.1.1](https://github.com/socketio/socket.io/compare/4.1.0...4.1.1) (2021-05-11)
### Bug Fixes
* **typings:** properly type server-side events ([b84ed1e](https://github.com/socketio/socket.io/commit/b84ed1e41c9053792caf58974c5de9395bfd509f))
* **typings:** properly type the adapter attribute ([891b187](https://github.com/socketio/socket.io/commit/891b1870e92d1ec38910f03bb839817e2d6be65a))
# [4.1.0](https://github.com/socketio/socket.io/compare/4.0.2...4.1.0) (2021-05-11)

View File

@@ -1,5 +1,5 @@
/*!
* Socket.IO v4.1.0
* Socket.IO v4.1.1
* (c) 2014-2021 Guillermo Rauch
* Released under the MIT License.
*/

View File

@@ -1,5 +1,5 @@
/*!
* Socket.IO v4.1.0
* Socket.IO v4.1.1
* (c) 2014-2021 Guillermo Rauch
* Released under the MIT License.
*/

View File

@@ -1,5 +1,5 @@
/*!
* Socket.IO v4.1.0
* Socket.IO v4.1.1
* (c) 2014-2021 Guillermo Rauch
* Released under the MIT License.
*/

View File

@@ -37,6 +37,8 @@ type ParentNspNameMatchFn = (
fn: (err: Error | null, success: boolean) => void
) => void;
type AdapterConstructor = typeof Adapter | ((nsp: Namespace) => Adapter);
interface EngineOptions {
/**
* how many ms without a pong packet to consider the connection closed
@@ -152,7 +154,7 @@ interface ServerOptions extends EngineAttachOptions {
* the adapter to use
* @default the in-memory adapter (https://github.com/socketio/socket.io-adapter)
*/
adapter: any;
adapter: AdapterConstructor;
/**
* the parser to use
* @default the default parser (https://github.com/socketio/socket.io-parser)
@@ -168,7 +170,7 @@ interface ServerOptions extends EngineAttachOptions {
export class Server<
ListenEvents extends EventsMap = DefaultEventsMap,
EmitEvents extends EventsMap = ListenEvents,
ServerSideEvents extends EventsMap = {}
ServerSideEvents extends EventsMap = DefaultEventsMap
> extends StrictEventEmitter<
ServerSideEvents,
EmitEvents,
@@ -207,7 +209,7 @@ export class Server<
ParentNspNameMatchFn,
ParentNamespace<ListenEvents, EmitEvents, ServerSideEvents>
> = new Map();
private _adapter?: typeof Adapter;
private _adapter?: AdapterConstructor;
private _serveClient: boolean;
private opts: Partial<EngineOptions>;
private eio;
@@ -360,10 +362,11 @@ export class Server<
* @return self when setting or value when getting
* @public
*/
public adapter(): typeof Adapter | undefined;
public adapter(v: typeof Adapter): this;
public adapter(v?: typeof Adapter): typeof Adapter | undefined | this;
public adapter(v?: typeof Adapter): typeof Adapter | undefined | this {
public adapter(): AdapterConstructor | undefined;
public adapter(v: AdapterConstructor): this;
public adapter(
v?: AdapterConstructor
): AdapterConstructor | undefined | this {
if (!arguments.length) return this._adapter;
this._adapter = v;
for (const nsp of this._nsps.values()) {

View File

@@ -50,7 +50,7 @@ export const RESERVED_EVENTS: ReadonlySet<string | Symbol> = new Set<
export class Namespace<
ListenEvents extends EventsMap = DefaultEventsMap,
EmitEvents extends EventsMap = ListenEvents,
ServerSideEvents extends EventsMap = {}
ServerSideEvents extends EventsMap = DefaultEventsMap
> extends StrictEventEmitter<
ServerSideEvents,
EmitEvents,
@@ -102,6 +102,7 @@ export class Namespace<
* @private
*/
_initAdapter(): void {
// @ts-ignore
this.adapter = new (this.server.adapter()!)(this);
}
@@ -306,9 +307,8 @@ export class Namespace<
*
* @private
*/
_onServerSideEmit(args: any[]) {
const event = args.shift();
this.emitUntyped(event, args);
_onServerSideEmit(args: [eventName: string, ...args: any[]]) {
super.emitUntyped.apply(this, args);
}
/**

View File

@@ -11,7 +11,7 @@ import type { BroadcastOptions } from "socket.io-adapter";
export class ParentNamespace<
ListenEvents extends EventsMap = DefaultEventsMap,
EmitEvents extends EventsMap = ListenEvents,
ServerSideEvents extends EventsMap = {}
ServerSideEvents extends EventsMap = DefaultEventsMap
> extends Namespace<ListenEvents, EmitEvents, ServerSideEvents> {
private static count: number = 0;
private children: Set<

View File

@@ -111,7 +111,7 @@ export interface Handshake {
export class Socket<
ListenEvents extends EventsMap = DefaultEventsMap,
EmitEvents extends EventsMap = ListenEvents,
ServerSideEvents extends EventsMap = {}
ServerSideEvents extends EventsMap = DefaultEventsMap
> extends StrictEventEmitter<
ListenEvents,
EmitEvents,

8
package-lock.json generated
View File

@@ -1,6 +1,6 @@
{
"name": "socket.io",
"version": "4.1.0",
"version": "4.1.1",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -3335,9 +3335,9 @@
"integrity": "sha512-jdIbSFRWOkaZpo5mXy8T7rXEN6qo3bOFuq4nVeX1ZS7AtFlkbk39y153xTXEIW7W94vZfhVOux1wTU88YxcM1w=="
},
"socket.io-client": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.1.0.tgz",
"integrity": "sha512-L0lCCPTb5xz+KQ3Wrq0077XjJwpaYpjagRvqE5Sg9aXWekfrEqPFvICCUWs7pJqPv7QVN09KoaPKPkVOOetmbw==",
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.1.1.tgz",
"integrity": "sha512-avzRzFZIkmyNxqvhmm5ns0Itq5dgEkesDPB6Tl0Yben47U08MvdFnVXAuFDULQhDXjuYdCb6QUEILYLUKQEuGg==",
"dev": true,
"requires": {
"@types/component-emitter": "^1.2.10",

View File

@@ -1,6 +1,6 @@
{
"name": "socket.io",
"version": "4.1.0",
"version": "4.1.1",
"description": "node.js realtime framework server",
"keywords": [
"realtime",
@@ -65,7 +65,7 @@
"nyc": "^15.1.0",
"prettier": "^2.2.0",
"rimraf": "^3.0.2",
"socket.io-client": "4.1.0",
"socket.io-client": "4.1.1",
"socket.io-client-v2": "npm:socket.io-client@^2.4.0",
"superagent": "^6.1.0",
"supertest": "^6.0.1",

View File

@@ -1,8 +1,9 @@
"use strict";
import { Server, Socket } from "..";
import { Namespace, Server, Socket } from "..";
import type { DefaultEventsMap } from "../lib/typed-events";
import { createServer } from "http";
import { expectError, expectType } from "tsd";
import { Adapter } from "socket.io-adapter";
// This file is run by tsd, not mocha.
@@ -117,7 +118,9 @@ describe("server", () => {
it("does not accept arguments of wrong types", (done) => {
const srv = createServer();
const sio = new Server<BidirectionalEvents>(srv);
const sio = new Server<BidirectionalEvents, BidirectionalEvents, {}>(
srv
);
expectError(sio.on("random", (a, b, c) => {}));
srv.listen(() => {
expectError(sio.on("wrong name", (s) => {}));
@@ -273,4 +276,25 @@ describe("server", () => {
});
});
});
describe("adapter", () => {
it("accepts arguments of the correct types", () => {
const io = new Server({
adapter: (nsp) => new Adapter(nsp),
});
io.adapter(Adapter);
class MyCustomAdapter extends Adapter {
constructor(nsp, readonly opts) {
super(nsp);
}
}
io.adapter((nsp) => new MyCustomAdapter(nsp, { test: "123" }));
});
it("does not accept arguments of wrong types", () => {
const io = new Server();
expectError(io.adapter((nsp) => "nope"));
});
});
});