@feathersjs/socketio 5.0.0-pre.33 → 5.0.0-pre.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,18 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [5.0.0-pre.35](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.34...v5.0.0-pre.35) (2023-01-12)
7
+
8
+ ### Features
9
+
10
+ - **generators:** Move core code generators to shared generators package ([#2982](https://github.com/feathersjs/feathers/issues/2982)) ([0328d22](https://github.com/feathersjs/feathers/commit/0328d2292153870bc43958f73d2c6f288a8cec17))
11
+
12
+ # [5.0.0-pre.34](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.33...v5.0.0-pre.34) (2022-12-14)
13
+
14
+ ### Bug Fixes
15
+
16
+ - **socketio:** Disconnect socket on app disconnect event ([#2896](https://github.com/feathersjs/feathers/issues/2896)) ([4ba0039](https://github.com/feathersjs/feathers/commit/4ba003907843cfc2655798a568b16f07ff8adb1b))
17
+
6
18
  # [5.0.0-pre.33](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.32...v5.0.0-pre.33) (2022-11-08)
7
19
 
8
20
  **Note:** Version bump only for package @feathersjs/socketio
package/lib/index.js CHANGED
@@ -41,7 +41,7 @@ function configureSocketio(port, options, config) {
41
41
  async setup(server, ...rest) {
42
42
  if (!this.io) {
43
43
  const io = (this.io = new socket_io_1.Server(port || server, options));
44
- io.use((0, middleware_1.disconnect)(app, getParams));
44
+ io.use((0, middleware_1.disconnect)(app, getParams, socketMap));
45
45
  io.use((0, middleware_1.params)(app, socketMap));
46
46
  io.use((0, middleware_1.authentication)(app, getParams));
47
47
  // In Feathers it is easy to hit the standard Node warning limit
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
- import { Application, Params } from '@feathersjs/feathers';
1
+ import { Application, Params, RealTimeConnection } from '@feathersjs/feathers';
2
2
  import { Socket } from 'socket.io';
3
- export declare type ParamsGetter = (socket: Socket) => any;
4
- export declare type NextFunction = (err?: any) => void;
3
+ export type ParamsGetter = (socket: Socket) => any;
4
+ export type NextFunction = (err?: any) => void;
5
5
  export interface FeathersSocket extends Socket {
6
6
  feathers?: Params & {
7
7
  [key: string]: any;
8
8
  };
9
9
  }
10
- export declare const disconnect: (app: Application, getParams: ParamsGetter) => (socket: FeathersSocket, next: NextFunction) => void;
11
- export declare const params: (_app: Application, socketMap: WeakMap<any, any>) => (socket: FeathersSocket, next: NextFunction) => void;
10
+ export declare const disconnect: (app: Application, getParams: ParamsGetter, socketMap: WeakMap<RealTimeConnection, FeathersSocket>) => (socket: FeathersSocket, next: NextFunction) => void;
11
+ export declare const params: (_app: Application, socketMap: WeakMap<RealTimeConnection, FeathersSocket>) => (socket: FeathersSocket, next: NextFunction) => void;
12
12
  export declare const authentication: (app: Application, getParams: ParamsGetter, settings?: any) => (socket: FeathersSocket, next: NextFunction) => void;
package/lib/middleware.js CHANGED
@@ -3,9 +3,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.authentication = exports.params = exports.disconnect = void 0;
4
4
  const commons_1 = require("@feathersjs/commons");
5
5
  const debug = (0, commons_1.createDebug)('@feathersjs/socketio/middleware');
6
- const disconnect = (app, getParams) => (socket, next) => {
7
- socket.on('disconnect', () => app.emit('disconnect', getParams(socket)));
8
- next();
6
+ const disconnect = (app, getParams, socketMap) => {
7
+ app.on('disconnect', (connection) => {
8
+ const socket = socketMap.get(connection);
9
+ if (socket && socket.connected) {
10
+ socket.disconnect();
11
+ }
12
+ });
13
+ return (socket, next) => {
14
+ socket.on('disconnect', () => app.emit('disconnect', getParams(socket)));
15
+ next();
16
+ };
9
17
  };
10
18
  exports.disconnect = disconnect;
11
19
  const params = (_app, socketMap) => (socket, next) => {
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":";;;AACA,iDAAiD;AAGjD,MAAM,KAAK,GAAG,IAAA,qBAAW,EAAC,iCAAiC,CAAC,CAAA;AAQrD,MAAM,UAAU,GACrB,CAAC,GAAgB,EAAE,SAAuB,EAAE,EAAE,CAAC,CAAC,MAAsB,EAAE,IAAkB,EAAE,EAAE;IAC5F,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACxE,IAAI,EAAE,CAAA;AACR,CAAC,CAAA;AAJU,QAAA,UAAU,cAIpB;AAEI,MAAM,MAAM,GACjB,CAAC,IAAiB,EAAE,SAA4B,EAAE,EAAE,CAAC,CAAC,MAAsB,EAAE,IAAkB,EAAE,EAAE;IAClG,MAAM,CAAC,QAAQ,GAAG;QAChB,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,OAAO;KAClC,CAAA;IAED,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAEtC,IAAI,EAAE,CAAA;AACR,CAAC,CAAA;AAVU,QAAA,MAAM,UAUhB;AAEI,MAAM,cAAc,GACzB,CAAC,GAAgB,EAAE,SAAuB,EAAE,WAAgB,EAAE,EAAE,EAAE,CAClE,CAAC,MAAsB,EAAE,IAAkB,EAAE,EAAE;IAC7C,MAAM,OAAO,GAAI,GAAW,CAAC,qBAAqB;QAChD,CAAC,CAAE,GAAW,CAAC,qBAAqB,CAAC,QAAQ,CAAC,OAAO,CAAC;QACtD,CAAC,CAAC,IAAI,CAAA;IAER,IAAI,OAAO,KAAK,IAAI,EAAE;QACpB,OAAO,IAAI,EAAE,CAAA;KACd;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAA;IACpC,MAAM,cAAc,GAAG,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,cAAc,IAAI,EAAE,CAAA;IAE5E,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;QAC/B,OAAO,IAAI,EAAE,CAAA;KACd;IAED,OAAO;SACJ,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC;SAChD,IAAI,CAAC,KAAK,EAAE,cAAmB,EAAE,EAAE;QAClC,IAAI,cAAc,EAAE;YAClB,KAAK,CAAC,wCAAwC,EAAE,cAAc,CAAC,CAAA;YAC/D,MAAM,CAAC,QAAQ,CAAC,cAAc,GAAG,cAAc,CAAA;YAC/C,MAAM,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE;gBACnC,QAAQ,EAAE,UAAU;gBACpB,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC;aAC9B,CAAC,CAAA;SACH;QAED,IAAI,EAAE,CAAA;IACR,CAAC,CAAC;SACD,KAAK,CAAC,IAAI,CAAC,CAAA;AAChB,CAAC,CAAA;AAjCU,QAAA,cAAc,kBAiCxB"}
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":";;;AACA,iDAAiD;AAGjD,MAAM,KAAK,GAAG,IAAA,qBAAW,EAAC,iCAAiC,CAAC,CAAA;AAQrD,MAAM,UAAU,GAAG,CACxB,GAAgB,EAChB,SAAuB,EACvB,SAAsD,EACtD,EAAE;IACF,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,UAA8B,EAAE,EAAE;QACtD,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QACxC,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE;YAC9B,MAAM,CAAC,UAAU,EAAE,CAAA;SACpB;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,CAAC,MAAsB,EAAE,IAAkB,EAAE,EAAE;QACpD,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACxE,IAAI,EAAE,CAAA;IACR,CAAC,CAAA;AACH,CAAC,CAAA;AAhBY,QAAA,UAAU,cAgBtB;AAEM,MAAM,MAAM,GACjB,CAAC,IAAiB,EAAE,SAAsD,EAAE,EAAE,CAC9E,CAAC,MAAsB,EAAE,IAAkB,EAAE,EAAE;IAC7C,MAAM,CAAC,QAAQ,GAAG;QAChB,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,OAAO;KAClC,CAAA;IAED,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAEtC,IAAI,EAAE,CAAA;AACR,CAAC,CAAA;AAXU,QAAA,MAAM,UAWhB;AAEI,MAAM,cAAc,GACzB,CAAC,GAAgB,EAAE,SAAuB,EAAE,WAAgB,EAAE,EAAE,EAAE,CAClE,CAAC,MAAsB,EAAE,IAAkB,EAAE,EAAE;IAC7C,MAAM,OAAO,GAAI,GAAW,CAAC,qBAAqB;QAChD,CAAC,CAAE,GAAW,CAAC,qBAAqB,CAAC,QAAQ,CAAC,OAAO,CAAC;QACtD,CAAC,CAAC,IAAI,CAAA;IAER,IAAI,OAAO,KAAK,IAAI,EAAE;QACpB,OAAO,IAAI,EAAE,CAAA;KACd;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAA;IACpC,MAAM,cAAc,GAAG,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,cAAc,IAAI,EAAE,CAAA;IAE5E,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;QAC/B,OAAO,IAAI,EAAE,CAAA;KACd;IAED,OAAO;SACJ,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC;SAChD,IAAI,CAAC,KAAK,EAAE,cAAmB,EAAE,EAAE;QAClC,IAAI,cAAc,EAAE;YAClB,KAAK,CAAC,wCAAwC,EAAE,cAAc,CAAC,CAAA;YAC/D,MAAM,CAAC,QAAQ,CAAC,cAAc,GAAG,cAAc,CAAA;YAC/C,MAAM,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE;gBACnC,QAAQ,EAAE,UAAU;gBACpB,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC;aAC9B,CAAC,CAAA;SACH;QAED,IAAI,EAAE,CAAA;IACR,CAAC,CAAC;SACD,KAAK,CAAC,IAAI,CAAC,CAAA;AAChB,CAAC,CAAA;AAjCU,QAAA,cAAc,kBAiCxB"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@feathersjs/socketio",
3
3
  "description": "The Feathers Socket.io real-time API provider",
4
- "version": "5.0.0-pre.33",
4
+ "version": "5.0.0-pre.35",
5
5
  "homepage": "https://feathersjs.com",
6
6
  "main": "lib/",
7
7
  "types": "lib/",
@@ -42,7 +42,7 @@
42
42
  ],
43
43
  "scripts": {
44
44
  "prepublish": "npm run compile",
45
- "pack": "npm pack --pack-destination ../cli/test/build",
45
+ "pack": "npm pack --pack-destination ../generators/test/build",
46
46
  "compile": "shx rm -rf lib/ && tsc && npm run pack",
47
47
  "test": "mocha --config ../../.mocharc.json --recursive test/**.test.ts test/**/*.test.ts"
48
48
  },
@@ -53,22 +53,22 @@
53
53
  "access": "public"
54
54
  },
55
55
  "dependencies": {
56
- "@feathersjs/commons": "^5.0.0-pre.33",
57
- "@feathersjs/feathers": "^5.0.0-pre.33",
58
- "@feathersjs/transport-commons": "^5.0.0-pre.33",
59
- "socket.io": "^4.5.3"
56
+ "@feathersjs/commons": "^5.0.0-pre.35",
57
+ "@feathersjs/feathers": "^5.0.0-pre.35",
58
+ "@feathersjs/transport-commons": "^5.0.0-pre.35",
59
+ "socket.io": "^4.5.4"
60
60
  },
61
61
  "devDependencies": {
62
- "@feathersjs/express": "^5.0.0-pre.33",
63
- "@feathersjs/memory": "^5.0.0-pre.33",
64
- "@feathersjs/tests": "^5.0.0-pre.33",
65
- "@types/mocha": "^10.0.0",
66
- "@types/node": "^18.11.9",
62
+ "@feathersjs/express": "^5.0.0-pre.35",
63
+ "@feathersjs/memory": "^5.0.0-pre.35",
64
+ "@feathersjs/tests": "^5.0.0-pre.35",
65
+ "@types/mocha": "^10.0.1",
66
+ "@types/node": "^18.11.18",
67
67
  "lodash": "^4.17.21",
68
- "mocha": "^10.1.0",
68
+ "mocha": "^10.2.0",
69
69
  "shx": "^0.3.4",
70
- "socket.io-client": "^4.5.3",
71
- "typescript": "^4.8.4"
70
+ "socket.io-client": "^4.5.4",
71
+ "typescript": "^4.9.4"
72
72
  },
73
- "gitHead": "89f516bcb1457e23a02c6212e9cd8bacc4d267d4"
73
+ "gitHead": "c641598d9a4de3ceda10f56cf2af288a4236b15e"
74
74
  }
package/src/index.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import http from 'http'
2
2
  import { Server, ServerOptions } from 'socket.io'
3
3
  import { createDebug } from '@feathersjs/commons'
4
- import { Application } from '@feathersjs/feathers'
4
+ import { Application, RealTimeConnection } from '@feathersjs/feathers'
5
5
  import { socket } from '@feathersjs/transport-commons'
6
6
 
7
7
  import { disconnect, params, authentication, FeathersSocket } from './middleware'
@@ -42,7 +42,7 @@ function configureSocketio(port?: any, options?: any, config?: any) {
42
42
  // Function that gets the connection
43
43
  const getParams = (socket: FeathersSocket) => socket.feathers
44
44
  // A mapping from connection to socket instance
45
- const socketMap = new WeakMap()
45
+ const socketMap = new WeakMap<RealTimeConnection, FeathersSocket>()
46
46
  // Promise that resolves with the Socket.io `io` instance
47
47
  // when `setup` has been called (with a server)
48
48
  const done = new Promise((resolve) => {
@@ -67,7 +67,7 @@ function configureSocketio(port?: any, options?: any, config?: any) {
67
67
  if (!this.io) {
68
68
  const io = (this.io = new Server(port || server, options))
69
69
 
70
- io.use(disconnect(app, getParams))
70
+ io.use(disconnect(app, getParams, socketMap))
71
71
  io.use(params(app, socketMap))
72
72
  io.use(authentication(app, getParams))
73
73
 
package/src/middleware.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Application, Params } from '@feathersjs/feathers'
1
+ import { Application, Params, RealTimeConnection } from '@feathersjs/feathers'
2
2
  import { createDebug } from '@feathersjs/commons'
3
3
  import { Socket } from 'socket.io'
4
4
 
@@ -10,14 +10,27 @@ export interface FeathersSocket extends Socket {
10
10
  feathers?: Params & { [key: string]: any }
11
11
  }
12
12
 
13
- export const disconnect =
14
- (app: Application, getParams: ParamsGetter) => (socket: FeathersSocket, next: NextFunction) => {
13
+ export const disconnect = (
14
+ app: Application,
15
+ getParams: ParamsGetter,
16
+ socketMap: WeakMap<RealTimeConnection, FeathersSocket>
17
+ ) => {
18
+ app.on('disconnect', (connection: RealTimeConnection) => {
19
+ const socket = socketMap.get(connection)
20
+ if (socket && socket.connected) {
21
+ socket.disconnect()
22
+ }
23
+ })
24
+
25
+ return (socket: FeathersSocket, next: NextFunction) => {
15
26
  socket.on('disconnect', () => app.emit('disconnect', getParams(socket)))
16
27
  next()
17
28
  }
29
+ }
18
30
 
19
31
  export const params =
20
- (_app: Application, socketMap: WeakMap<any, any>) => (socket: FeathersSocket, next: NextFunction) => {
32
+ (_app: Application, socketMap: WeakMap<RealTimeConnection, FeathersSocket>) =>
33
+ (socket: FeathersSocket, next: NextFunction) => {
21
34
  socket.feathers = {
22
35
  provider: 'socketio',
23
36
  headers: socket.handshake.headers