From e7bfd0d9b1d2fc9ae8365b97732dba67371e4043 Mon Sep 17 00:00:00 2001 From: hossein Date: Sun, 11 Feb 2024 20:35:16 +0330 Subject: [PATCH] feat :migrate socket.io 2 -> 3 --- .vscode/settings.json | 13 ++ src/node/handler/PadMessageHandler.ts | 16 +++ src/node/hooks/express/socketio.ts | 32 +++++ src/package.json | 10 ++ src/pnpm-lock.yaml | 164 ++++++++++++++++++++++++++ src/tests/backend/common.ts | 6 + src/tests/backend/specs/chat.ts | 4 + src/tests/backend/specs/socketio.ts | 4 + 8 files changed, 249 insertions(+) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..a414565ce --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,13 @@ +{ + "eslint.enable": false, + "prettier.enable": false, + "javascript.format.enable": false, + "editor.formatOnSave": false, + "eslint.autoFixOnSave": false, + "[javascript]": { + "editor.formatOnSave": false + }, + "[typescript]": { + "editor.formatOnSave": false + } +} diff --git a/src/node/handler/PadMessageHandler.ts b/src/node/handler/PadMessageHandler.ts index bbeef736a..275ef8d0b 100644 --- a/src/node/handler/PadMessageHandler.ts +++ b/src/node/handler/PadMessageHandler.ts @@ -161,7 +161,11 @@ exports.handleConnect = (socket:any) => { /** * Kicks all sessions from a pad */ +<<<<<<< HEAD:src/node/handler/PadMessageHandler.ts exports.kickSessionsFromPad = (padID: string) => { +======= +exports.kickSessionsFromPad = (padID) => { +>>>>>>> 53a847ce4 (feat :migrate socket.io 2 -> 3):src/node/handler/PadMessageHandler.js if (typeof socketio.sockets.clients !== 'object') return; // skip if there is nobody on this pad @@ -665,7 +669,11 @@ const handleUserChanges = async (socket:any, message: typeof ChatMessage) => { thisSession.rev = newRev; if (newRev !== r) thisSession.time = await pad.getRevisionDate(newRev); await exports.updatePadClients(pad); +<<<<<<< HEAD:src/node/handler/PadMessageHandler.ts } catch (err:any) { +======= + } catch (err) { +>>>>>>> 53a847ce4 (feat :migrate socket.io 2 -> 3):src/node/handler/PadMessageHandler.js socket.emit('message', {disconnect: 'badChangeset'}); stats.meter('failedChangesets').mark(); messageLogger.warn(`Failed to apply USER_CHANGES from author ${thisSession.author} ` + @@ -724,7 +732,11 @@ exports.updatePadClients = async (pad: PadType) => { }; try { socket.emit('message', msg); +<<<<<<< HEAD:src/node/handler/PadMessageHandler.ts } catch (err:any) { +======= + } catch (err) { +>>>>>>> 53a847ce4 (feat :migrate socket.io 2 -> 3):src/node/handler/PadMessageHandler.js messageLogger.error(`Failed to notify user of new revision: ${err.stack || err}`); return; } @@ -1250,7 +1262,11 @@ const _getRoomSockets = (padID: string) => { // it does here, but synchronously to avoid a race condition. This code will have to change when // we update to socket.io v3. const room = ns.adapter.rooms?.get(padID); +<<<<<<< HEAD:src/node/handler/PadMessageHandler.ts +======= + +>>>>>>> 53a847ce4 (feat :migrate socket.io 2 -> 3):src/node/handler/PadMessageHandler.js if (!room) return []; return Array.from(room) diff --git a/src/node/hooks/express/socketio.ts b/src/node/hooks/express/socketio.ts index 201289e83..32f27dd5c 100644 --- a/src/node/hooks/express/socketio.ts +++ b/src/node/hooks/express/socketio.ts @@ -7,7 +7,11 @@ const express = require('../express'); const log4js = require('log4js'); const proxyaddr = require('proxy-addr'); const settings = require('../../utils/Settings'); +<<<<<<< HEAD import {Server} from 'socket.io' +======= +const {Server} = require('socket.io'); +>>>>>>> 53a847ce4 (feat :migrate socket.io 2 -> 3) const socketIORouter = require('../../handler/SocketIORouter'); const hooks = require('../../../static/js/pluginfw/hooks'); const padMessageHandler = require('../../handler/PadMessageHandler'); @@ -48,7 +52,11 @@ exports.expressCloseServer = async () => { logger.info('All socket.io clients have disconnected'); }; +<<<<<<< HEAD exports.socketSessionMiddleware = (args: any) => (socket: any, next: Function) => { +======= +exports.socketSessionMiddleware = (socket: any, next: Function) => { +>>>>>>> 53a847ce4 (feat :migrate socket.io 2 -> 3) const req = socket.request; // Express sets req.ip but socket.io does not. Replicate Express's behavior here. if (req.ip == null) { @@ -59,9 +67,17 @@ exports.socketSessionMiddleware = (args: any) => (socket: any, next: Function) = } } if (!req.headers.cookie) { +<<<<<<< HEAD // socketio.js-client on node.js doesn't support cookies, so pass them via a query parameter. req.headers.cookie = socket.handshake.query.cookie; } +======= + // socketio.js-client on node.js doesn't support cookies (see https://git.io/JU8u9), so the + // token and express_sid cookies have to be passed via a query parameter for unit tests. + req.headers.cookie = socket.handshake.query.cookie; + } + // See: https://socket.io/docs/faq/#Usage-with-express-session +>>>>>>> 53a847ce4 (feat :migrate socket.io 2 -> 3) express.sessionMiddleware(req, {}, next); }; @@ -74,9 +90,21 @@ exports.expressCreateServer = (hookName:string, args:ArgsExpressType, cb:Functio transports: settings.socketTransportProtocols, }) +<<<<<<< HEAD function handleConnection() { return (socket: any) => { sockets.add(socket); +======= + io.on('connection', (socket:any) => { + sockets.add(socket); + socketsEvents.emit('updated'); + // https://socket.io/docs/v3/faq/index.html + const session = socket.request.session; + session.connections++; + session.save(); + socket.on('disconnect', () => { + sockets.delete(socket); +>>>>>>> 53a847ce4 (feat :migrate socket.io 2 -> 3) socketsEvents.emit('updated'); // https://socket.io/docs/v3/faq/index.html const session = socket.request.session; @@ -89,6 +117,7 @@ exports.expressCreateServer = (hookName:string, args:ArgsExpressType, cb:Functio }; } +<<<<<<< HEAD io.on('connection', handleConnection); io.use(exports.socketSessionMiddleware(args)); @@ -96,6 +125,9 @@ exports.expressCreateServer = (hookName:string, args:ArgsExpressType, cb:Functio // Temporary workaround so all clients go through middleware and handle connection io.of('/pluginfw/installer').use(exports.socketSessionMiddleware(args)) io.of('/settings').use(exports.socketSessionMiddleware(args)) +======= + io.use(exports.socketSessionMiddleware); +>>>>>>> 53a847ce4 (feat :migrate socket.io 2 -> 3) io.use((socket:any, next:Function) => { socket.conn.on('packet', (packet:string) => { diff --git a/src/package.json b/src/package.json index dee0a66ab..1e197748c 100644 --- a/src/package.json +++ b/src/package.json @@ -63,7 +63,11 @@ "security": "1.0.0", "semver": "^7.6.0", "socket.io": "^3.1.2", +<<<<<<< HEAD "socket.io-client": "^4.7.4", +======= + "socket.io-client": "^3.1.2", +>>>>>>> 53a847ce4 (feat :migrate socket.io 2 -> 3) "superagent": "^8.1.2", "terser": "^5.28.1", "threads": "^1.7.0", @@ -88,6 +92,7 @@ "@types/sinon": "^17.0.3", "@types/supertest": "^6.0.2", "@types/underscore": "^1.11.15", + "cypress": "^13.6.4", "eslint": "^8.56.0", "eslint-config-etherpad": "^3.0.22", "etherpad-cli-client": "^3.0.1", @@ -113,8 +118,13 @@ }, "scripts": { "lint": "eslint .", +<<<<<<< HEAD "test": "mocha --import=tsx --timeout 120000 --recursive tests/backend/specs/**.ts tests/backend/specs/**/*.ts ../node_modules/ep_*/static/tests/backend/specs", "test-container": "mocha --import=tsx --timeout 5000 tests/container/specs/api", +======= + "test": "mocha --import=tsx --timeout 990000 --recursive tests/backend/specs ../node_modules/ep_*/static/tests/backend/specs", + "test-container": "mocha --import=tsx --timeout 99000 tests/container/specs/api", +>>>>>>> 53a847ce4 (feat :migrate socket.io 2 -> 3) "dev": "node --import tsx node/server.ts", "prod": "node --import tsx node/server.ts", "ts-check": "tsc --noEmit", diff --git a/src/pnpm-lock.yaml b/src/pnpm-lock.yaml index cfe6f8709..3b30c20c2 100644 --- a/src/pnpm-lock.yaml +++ b/src/pnpm-lock.yaml @@ -105,8 +105,13 @@ dependencies: specifier: ^3.1.2 version: 3.1.2 socket.io-client: +<<<<<<< HEAD specifier: ^3.1.3 version: 3.1.3 +======= + specifier: ^3.1.2 + version: 3.1.2 +>>>>>>> 53a847ce4 (feat :migrate socket.io 2 -> 3) superagent: specifier: ^8.1.2 version: 8.1.2 @@ -638,6 +643,10 @@ packages: /@types/component-emitter@1.2.14: resolution: {integrity: sha512-lmPil1g82wwWg/qHSxMWkSKyJGQOK+ejXeMAAWyxNtVUD0/Ycj2maL63RAqpxVfdtvTfZkRnqzB0A9ft59y69g==} +<<<<<<< HEAD +======= + dev: false +>>>>>>> 53a847ce4 (feat :migrate socket.io 2 -> 3) /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} @@ -652,7 +661,11 @@ packages: /@types/cors@2.8.17: resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} dependencies: +<<<<<<< HEAD '@types/node': 20.11.19 +======= + '@types/node': 20.11.17 +>>>>>>> 53a847ce4 (feat :migrate socket.io 2 -> 3) dev: false /@types/debug@4.1.12: @@ -961,6 +974,13 @@ packages: engines: {node: '>=0.4.0'} hasBin: true +<<<<<<< HEAD +======= + /after@0.8.2: + resolution: {integrity: sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA==} + dev: true + +>>>>>>> 53a847ce4 (feat :migrate socket.io 2 -> 3) /agent-base@7.1.0: resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} engines: {node: '>= 14'} @@ -1134,6 +1154,13 @@ packages: is-shared-array-buffer: 1.0.2 dev: true +<<<<<<< HEAD +======= + /arraybuffer.slice@0.0.7: + resolution: {integrity: sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==} + dev: true + +>>>>>>> 53a847ce4 (feat :migrate socket.io 2 -> 3) /asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} @@ -1233,6 +1260,13 @@ packages: resolution: {integrity: sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==} dev: true +<<<<<<< HEAD +======= + /blob@0.0.5: + resolution: {integrity: sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==} + dev: true + +>>>>>>> 53a847ce4 (feat :migrate socket.io 2 -> 3) /bluebird@3.7.2: resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} dev: true @@ -1468,9 +1502,23 @@ packages: engines: {node: '>=4.0.0'} dev: true +<<<<<<< HEAD /component-emitter@1.3.1: resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} +======= + /component-bind@1.0.0: + resolution: {integrity: sha512-WZveuKPeKAG9qY+FkYDeADzdHyTYdIboXS59ixDeRJL5ZhxpqUnxSOwop4FQjMsiYm3/Or8cegVbpAHNA7pHxw==} + dev: true + + /component-emitter@1.3.1: + resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} + + /component-inherit@0.0.3: + resolution: {integrity: sha512-w+LhYREhatpVqTESyGFg3NlP6Iu0kEKUHETY9GoZP/pQyW4mHFZuFWRUCIqVPZ36ueVLtoOEZaAqbCF2RDndaA==} + dev: true + +>>>>>>> 53a847ce4 (feat :migrate socket.io 2 -> 3) /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -1632,6 +1680,20 @@ packages: ms: 2.0.0 dev: false +<<<<<<< HEAD +======= + /debug@3.1.0: + resolution: {integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: true + +>>>>>>> 53a847ce4 (feat :migrate socket.io 2 -> 3) /debug@3.2.7(supports-color@8.1.1): resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: @@ -1803,12 +1865,49 @@ packages: - bufferutil - supports-color - utf-8-validate + dev: true + /engine.io-client@4.1.4: + resolution: {integrity: sha512-843fqAdKeUMFqKi1sSjnR11tJ4wi8sIefu6+JC1OzkkJBmjtc/gM/rZ53tJfu5Iae/3gApm5veoS+v+gtT0+Fg==} + dependencies: + base64-arraybuffer: 0.1.4 + component-emitter: 1.3.1 + debug: 4.3.4(supports-color@8.1.1) + engine.io-parser: 4.0.3 + has-cors: 1.1.0 + parseqs: 0.0.6 + parseuri: 0.0.6 + ws: 7.4.6 + xmlhttprequest-ssl: 1.6.3 + yeast: 0.1.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: false + +<<<<<<< HEAD +======= + /engine.io-parser@2.2.1: + resolution: {integrity: sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==} + dependencies: + after: 0.8.2 + arraybuffer.slice: 0.0.7 + base64-arraybuffer: 0.1.4 + blob: 0.0.5 + has-binary2: 1.0.3 + dev: true + +>>>>>>> 53a847ce4 (feat :migrate socket.io 2 -> 3) /engine.io-parser@4.0.3: resolution: {integrity: sha512-xEAAY0msNnESNPc00e19y5heTPX4y/TJ36gr8t1voOaNmTojP9b3oK3BbJLFufW2XFPQaaijpFewm2g2Um3uqA==} engines: {node: '>=8.0.0'} dependencies: base64-arraybuffer: 0.1.4 +<<<<<<< HEAD +======= + dev: false +>>>>>>> 53a847ce4 (feat :migrate socket.io 2 -> 3) /engine.io@4.1.2: resolution: {integrity: sha512-t5z6zjXuVLhXDMiFJPYsPOWEER8B0tIsD3ETgw19S1yg9zryvUfY3Vhtk3Gf4sihw/bQGIqQ//gjvVlu+Ca0bQ==} @@ -2826,6 +2925,15 @@ packages: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} dev: true +<<<<<<< HEAD +======= + /has-binary2@1.0.3: + resolution: {integrity: sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==} + dependencies: + isarray: 2.0.1 + dev: true + +>>>>>>> 53a847ce4 (feat :migrate socket.io 2 -> 3) /has-cors@1.1.0: resolution: {integrity: sha512-g5VNKdkFuUuVCP9gYfDJHjK2nqdQJ7aDLTnycnc2+RvsOQbuLdF5pm7vuE5J76SEBIQjs4kQY/BWq74JUmjbXA==} @@ -3075,6 +3183,13 @@ packages: engines: {node: '>=8'} dev: true +<<<<<<< HEAD +======= + /indexof@0.0.1: + resolution: {integrity: sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg==} + dev: true + +>>>>>>> 53a847ce4 (feat :migrate socket.io 2 -> 3) /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: @@ -3293,6 +3408,13 @@ packages: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} dev: true +<<<<<<< HEAD +======= + /isarray@2.0.1: + resolution: {integrity: sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ==} + dev: true + +>>>>>>> 53a847ce4 (feat :migrate socket.io 2 -> 3) /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} dev: true @@ -4554,7 +4676,38 @@ packages: - bufferutil - supports-color - utf-8-validate + dev: true + /socket.io-client@3.1.2: + resolution: {integrity: sha512-fXhF8plHrd7U14A7K0JPOmZzpmGkLpIS6623DzrBZqYzI/yvlP4fA3LnxwthEVgiHmn2uJ4KjdnQD8A03PuBWQ==} + engines: {node: '>=10.0.0'} + dependencies: + '@types/component-emitter': 1.2.14 + backo2: 1.0.2 + component-emitter: 1.3.1 + debug: 4.3.4(supports-color@8.1.1) + engine.io-client: 4.1.4 + parseuri: 0.0.6 + socket.io-parser: 4.0.5 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: false + +<<<<<<< HEAD +======= + /socket.io-parser@3.3.3: + resolution: {integrity: sha512-qOg87q1PMWWTeO01768Yh9ogn7chB9zkKtQnya41Y355S0UmpXgpcrFwAgjYJxu9BdKug5r5e9YtVSeWhKBUZg==} + dependencies: + component-emitter: 1.3.1 + debug: 3.1.0 + isarray: 2.0.1 + transitivePeerDependencies: + - supports-color + dev: true + +>>>>>>> 53a847ce4 (feat :migrate socket.io 2 -> 3) /socket.io-parser@4.0.5: resolution: {integrity: sha512-sNjbT9dX63nqUFIOv95tTVm6elyIU4RvB1m8dOeZt+IgWwcWklFDOdmGcfo3zSiRsnR/3pJkjY5lfoGqEe4Eig==} engines: {node: '>=10.0.0'} @@ -4571,7 +4724,11 @@ packages: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.17 +<<<<<<< HEAD '@types/node': 20.11.19 +======= + '@types/node': 20.11.17 +>>>>>>> 53a847ce4 (feat :migrate socket.io 2 -> 3) accepts: 1.3.8 base64id: 2.0.0 debug: 4.3.4(supports-color@8.1.1) @@ -4828,6 +4985,13 @@ packages: rimraf: 3.0.2 dev: true +<<<<<<< HEAD +======= + /to-array@0.1.4: + resolution: {integrity: sha512-LhVdShQD/4Mk4zXNroIQZJC+Ap3zgLcDuwEdcmLv9CCO73NWockQDwyUnW/m8VX/EElfL6FcYx7EeutN4HJA6A==} + dev: true + +>>>>>>> 53a847ce4 (feat :migrate socket.io 2 -> 3) /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} diff --git a/src/tests/backend/common.ts b/src/tests/backend/common.ts index c0cfd1377..d12a5ff38 100644 --- a/src/tests/backend/common.ts +++ b/src/tests/backend/common.ts @@ -191,11 +191,17 @@ exports.handshake = async (socket: any, padId:string, token = padutils.generateA /** * Convenience wrapper around `socket.send()` that waits for acknowledgement. */ +<<<<<<< HEAD:src/tests/backend/common.ts exports.sendMessage = async (socket: any, message:any) => await new Promise((resolve, reject) => { socket.emit('message', message, (errInfo:{ name: string, message: string, }) => { +======= +exports.sendMessage = async (socket, message) => await new Promise((resolve, reject) => { + if(message.type === "CHANGESET_REQ") + socket.emit('message', message, (errInfo) => { +>>>>>>> 53a847ce4 (feat :migrate socket.io 2 -> 3):src/tests/backend/common.js if (errInfo != null) { const {name, message} = errInfo; const err = new Error(message); diff --git a/src/tests/backend/specs/chat.ts b/src/tests/backend/specs/chat.ts index 5070a30a1..d929c563d 100644 --- a/src/tests/backend/specs/chat.ts +++ b/src/tests/backend/specs/chat.ts @@ -41,7 +41,11 @@ const checkHook = async (hookName: string, checkFn?:CheckFN) => { }); }; +<<<<<<< HEAD:src/tests/backend/specs/chat.ts const sendMessage = (socket: any, data:any) => { +======= +const sendMessage = (socket, data) => { +>>>>>>> 53a847ce4 (feat :migrate socket.io 2 -> 3):src/tests/backend/specs/chat.js socket.emit('message', { type: 'COLLABROOM', component: 'pad', diff --git a/src/tests/backend/specs/socketio.ts b/src/tests/backend/specs/socketio.ts index cde554e5e..307119a13 100644 --- a/src/tests/backend/specs/socketio.ts +++ b/src/tests/backend/specs/socketio.ts @@ -404,10 +404,14 @@ describe(__filename, function () { constructor(name: string, ...args:any) { super(...args); this.name = name; } }; socket.emit('message', message, +<<<<<<< HEAD:src/tests/backend/specs/socketio.ts (errj: { message: string, name: string, }, val: any) => errj != null ? reject(new AckErr(errj.name, errj.message)) : resolve(val)); +======= + (errj, val) => errj != null ? reject(new AckErr(errj.name, errj.message)) : resolve(val)); +>>>>>>> 53a847ce4 (feat :migrate socket.io 2 -> 3):src/tests/backend/specs/socketio.js }); it('handleMessage with ack (success)', async function () {