From 6db14baee7294294c1a033c6e28e26e5aff0f475 Mon Sep 17 00:00:00 2001 From: SamTV12345 <40429738+samtv12345@users.noreply.github.com> Date: Tue, 29 Apr 2025 19:44:56 +0200 Subject: [PATCH] fix: express5 --- bin/checkPad.ts | 2 +- pnpm-lock.yaml | 279 +++++++++--------- src/node/db/GroupManager.ts | 4 +- src/node/db/Pad.ts | 8 +- src/node/db/PadManager.ts | 4 +- src/node/db/SecurityManager.ts | 2 +- src/node/handler/PadMessageHandler.ts | 4 +- src/node/security/SecretRotator.ts | 4 +- src/node/utils/Cleanup.ts | 4 +- src/node/utils/ImportEtherpad.ts | 2 +- src/package.json | 2 +- src/static/js/ace.ts | 4 +- src/static/js/ace2_inner.ts | 2 +- src/static/js/collab_client.ts | 8 +- src/static/js/pad_cookie.ts | 4 +- src/static/js/pad_editbar.ts | 4 +- src/static/js/vendors/jquery.ts | 4 +- src/tests/backend/specs/ExportEtherpad.ts | 2 +- src/tests/backend/specs/ImportEtherpad.ts | 14 +- src/tests/backend/specs/SessionStore.ts | 18 +- .../backend/specs/api/sessionsAndGroups.ts | 2 +- src/tests/backend/specs/messages.ts | 10 +- src/tests/backend/specs/socketio.ts | 12 +- src/tests/frontend-new/helper/padHelper.ts | 4 +- .../frontend-new/helper/settingsHelper.ts | 2 +- src/tests/frontend/helper.js | 2 +- 26 files changed, 200 insertions(+), 207 deletions(-) diff --git a/bin/checkPad.ts b/bin/checkPad.ts index a35e08ea7..b66cc376f 100644 --- a/bin/checkPad.ts +++ b/bin/checkPad.ts @@ -17,7 +17,7 @@ const performCheck = async () => { await db.init(); console.log("Checking if " + padId + " exists") const padManager = require('ep_etherpad-lite/node/db/PadManager'); - if (!await padManager.doesPadExists(padId)) throw new Error('Pad does not exist'); + if (!(await padManager.doesPadExists(padId))) throw new Error('Pad does not exist'); const pad = await padManager.getPad(padId); await pad.check(); console.log('Finished checking pad.'); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8f886707a..203c12059 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -165,11 +165,11 @@ importers: specifier: ^0.25.2 version: 0.25.2 express: - specifier: 4.21.2 - version: 4.21.2 + specifier: 5.1.0 + version: 5.1.0 express-rate-limit: specifier: ^7.5.0 - version: 7.5.0(express@4.21.2) + version: 7.5.0(express@5.1.0) fast-deep-equal: specifier: ^3.1.3 version: 3.1.3 @@ -262,7 +262,7 @@ importers: version: 10.2.0 swagger-ui-express: specifier: ^5.0.1 - version: 5.0.1(express@4.21.2) + version: 5.0.1(express@5.1.0) tinycon: specifier: 0.6.8 version: 0.6.8 @@ -2074,6 +2074,10 @@ packages: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} + accepts@2.0.0: + resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} + engines: {node: '>= 0.6'} + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -2141,9 +2145,6 @@ packages: resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} engines: {node: '>= 0.4'} - array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - array-includes@3.1.8: resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} engines: {node: '>= 0.4'} @@ -2223,9 +2224,9 @@ packages: birpc@0.2.19: resolution: {integrity: sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ==} - body-parser@1.20.3: - resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + body-parser@2.2.0: + resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==} + engines: {node: '>=18'} brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} @@ -2363,6 +2364,10 @@ packages: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} + content-disposition@1.0.0: + resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==} + engines: {node: '>= 0.6'} + content-type@1.0.5: resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} engines: {node: '>= 0.6'} @@ -2377,14 +2382,14 @@ packages: cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + cookie-signature@1.2.2: + resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} + engines: {node: '>=6.6.0'} + cookie@0.4.2: resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} engines: {node: '>= 0.6'} - cookie@0.7.1: - resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} - engines: {node: '>= 0.6'} - cookie@0.7.2: resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} engines: {node: '>= 0.6'} @@ -2457,14 +2462,6 @@ packages: resolution: {integrity: sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==} engines: {node: '>=4.0'} - debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: @@ -2897,9 +2894,9 @@ packages: peerDependencies: express: ^4.11 || 5 || ^5.0.0-beta.1 - express@4.21.2: - resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} - engines: {node: '>= 0.10.0'} + express@5.1.0: + resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==} + engines: {node: '>= 18'} extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} @@ -2953,8 +2950,8 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} - finalhandler@1.3.1: - resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} + finalhandler@2.1.0: + resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==} engines: {node: '>= 0.8'} find-root@1.1.0: @@ -3021,6 +3018,10 @@ packages: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} + fresh@2.0.0: + resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} + engines: {node: '>= 0.8'} + fs-extra@10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} @@ -3255,10 +3256,6 @@ packages: typescript: optional: true - iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} @@ -3382,6 +3379,9 @@ packages: is-promise@1.0.1: resolution: {integrity: sha512-mjWH5XxnhMA8cFnDchr6qRP9S/kLntKuEfIYku+PaN1CnS8v+OG9O/BKpRCVRJvpIkgAZm0Pf5Is3iSSOILlcg==} + is-promise@4.0.0: + resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} + is-regex@1.2.1: resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} @@ -3658,8 +3658,13 @@ packages: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} - merge-descriptors@1.0.3: - resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} + media-typer@1.1.0: + resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} + engines: {node: '>= 0.8'} + + merge-descriptors@2.0.0: + resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} + engines: {node: '>=18'} merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} @@ -3704,11 +3709,6 @@ packages: resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==} engines: {node: '>= 0.6'} - mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - mime@2.6.0: resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} engines: {node: '>=4.0.0'} @@ -3778,9 +3778,6 @@ packages: mock-json-schema@1.1.1: resolution: {integrity: sha512-YV23vlsLP1EEOy0EviUvZTluXjLR+rhMzeayP2rcDiezj3RW01MhOSQkbQskdtg0K2fnGas5LKbSXgNjAOSX4A==} - ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -3801,6 +3798,10 @@ packages: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} + negotiator@1.0.0: + resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} + engines: {node: '>= 0.6'} + netmask@2.0.2: resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} engines: {node: '>= 0.4.0'} @@ -3811,6 +3812,7 @@ packages: node-domexception@1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} + deprecated: Use your platform's native DOMException instead node-fetch-commonjs@3.3.2: resolution: {integrity: sha512-VBlAiynj3VMLrotgwOS3OyECFxas5y7ltLcK4t41lMUZeaK15Ym4QRkqN0EQKAFL42q9i21EPKjzLUPfltR72A==} @@ -3970,12 +3972,13 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} - path-to-regexp@0.1.12: - resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} - path-to-regexp@6.3.0: resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} + path-to-regexp@8.2.0: + resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==} + engines: {node: '>=16'} + path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -4047,10 +4050,6 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - qs@6.13.0: - resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} - engines: {node: '>=0.6'} - qs@6.14.0: resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} engines: {node: '>=0.6'} @@ -4083,10 +4082,6 @@ packages: rate-limiter-flexible@7.0.0: resolution: {integrity: sha512-K1Y7WTh6m/MpgifDkBzexI0PfPYd+LaXRl+Aqq+LkKKIb68KLJxd/cp+Fw3iU1T0h3oQ9TwbR0m2/ksU70ML+g==} - raw-body@2.5.2: - resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} - engines: {node: '>= 0.8'} - raw-body@3.0.0: resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==} engines: {node: '>= 0.8'} @@ -4245,6 +4240,10 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + router@2.2.0: + resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} + engines: {node: '>= 18'} + rrweb-cssom@0.8.0: resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} @@ -4352,16 +4351,16 @@ packages: engines: {node: '>=10'} hasBin: true - send@0.19.0: - resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} - engines: {node: '>= 0.8.0'} + send@1.2.0: + resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==} + engines: {node: '>= 18'} serialize-javascript@6.0.2: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - serve-static@1.16.2: - resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} - engines: {node: '>= 0.8.0'} + serve-static@2.2.0: + resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==} + engines: {node: '>= 18'} set-cookie-parser@2.7.1: resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} @@ -4698,6 +4697,10 @@ packages: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} + type-is@2.0.1: + resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} + engines: {node: '>= 0.6'} + typed-array-buffer@1.0.3: resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} @@ -4806,10 +4809,6 @@ packages: '@types/react': optional: true - utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} - vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} @@ -6751,6 +6750,11 @@ snapshots: mime-types: 2.1.35 negotiator: 0.6.3 + accepts@2.0.0: + dependencies: + mime-types: 3.0.1 + negotiator: 1.0.0 + acorn-jsx@5.3.2(acorn@8.14.1): dependencies: acorn: 8.14.1 @@ -6821,8 +6825,6 @@ snapshots: call-bound: 1.0.4 is-array-buffer: 3.0.5 - array-flatten@1.1.1: {} - array-includes@3.1.8: dependencies: call-bind: 1.0.8 @@ -6910,20 +6912,17 @@ snapshots: birpc@0.2.19: {} - body-parser@1.20.3: + body-parser@2.2.0: dependencies: bytes: 3.1.2 content-type: 1.0.5 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 + debug: 4.4.0(supports-color@8.1.1) http-errors: 2.0.0 - iconv-lite: 0.4.24 + iconv-lite: 0.6.3 on-finished: 2.4.1 - qs: 6.13.0 - raw-body: 2.5.2 - type-is: 1.6.18 - unpipe: 1.0.0 + qs: 6.14.0 + raw-body: 3.0.0 + type-is: 2.0.1 transitivePeerDependencies: - supports-color @@ -7068,6 +7067,10 @@ snapshots: dependencies: safe-buffer: 5.2.1 + content-disposition@1.0.0: + dependencies: + safe-buffer: 5.2.1 + content-type@1.0.5: {} convert-source-map@2.0.0: {} @@ -7079,9 +7082,9 @@ snapshots: cookie-signature@1.0.6: {} - cookie@0.4.2: {} + cookie-signature@1.2.2: {} - cookie@0.7.1: {} + cookie@0.4.2: {} cookie@0.7.2: {} @@ -7156,10 +7159,6 @@ snapshots: date-format@4.0.14: {} - debug@2.6.9: - dependencies: - ms: 2.0.0 - debug@3.2.7: dependencies: ms: 2.1.3 @@ -7516,7 +7515,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@7.18.0(eslint@9.24.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.0)(eslint@9.24.0): + eslint-module-utils@2.12.0(@typescript-eslint/parser@7.18.0(eslint@9.24.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.0(eslint-plugin-import@2.31.0)(eslint@9.24.0))(eslint@9.24.0): dependencies: debug: 3.2.7 optionalDependencies: @@ -7556,7 +7555,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.24.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.18.0(eslint@9.24.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.0)(eslint@9.24.0) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.18.0(eslint@9.24.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.0(eslint-plugin-import@2.31.0)(eslint@9.24.0))(eslint@9.24.0) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -7714,42 +7713,38 @@ snapshots: expect-type@1.2.1: {} - express-rate-limit@7.5.0(express@4.21.2): + express-rate-limit@7.5.0(express@5.1.0): dependencies: - express: 4.21.2 + express: 5.1.0 - express@4.21.2: + express@5.1.0: dependencies: - accepts: 1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.3 - content-disposition: 0.5.4 + accepts: 2.0.0 + body-parser: 2.2.0 + content-disposition: 1.0.0 content-type: 1.0.5 - cookie: 0.7.1 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 2.0.0 + cookie: 0.7.2 + cookie-signature: 1.2.2 + debug: 4.4.0(supports-color@8.1.1) encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 - finalhandler: 1.3.1 - fresh: 0.5.2 + finalhandler: 2.1.0 + fresh: 2.0.0 http-errors: 2.0.0 - merge-descriptors: 1.0.3 - methods: 1.1.2 + merge-descriptors: 2.0.0 + mime-types: 3.0.1 on-finished: 2.4.1 + once: 1.4.0 parseurl: 1.3.3 - path-to-regexp: 0.1.12 proxy-addr: 2.0.7 - qs: 6.13.0 + qs: 6.14.0 range-parser: 1.2.1 - safe-buffer: 5.2.1 - send: 0.19.0 - serve-static: 1.16.2 - setprototypeof: 1.2.0 + router: 2.2.0 + send: 1.2.0 + serve-static: 2.2.0 statuses: 2.0.1 - type-is: 1.6.18 - utils-merge: 1.0.1 + type-is: 2.0.1 vary: 1.1.2 transitivePeerDependencies: - supports-color @@ -7803,15 +7798,14 @@ snapshots: dependencies: to-regex-range: 5.0.1 - finalhandler@1.3.1: + finalhandler@2.1.0: dependencies: - debug: 2.6.9 + debug: 4.4.0(supports-color@8.1.1) encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 parseurl: 1.3.3 statuses: 2.0.1 - unpipe: 1.0.0 transitivePeerDependencies: - supports-color @@ -7876,6 +7870,8 @@ snapshots: fresh@0.5.2: {} + fresh@2.0.0: {} + fs-extra@10.1.0: dependencies: graceful-fs: 4.2.11 @@ -8179,10 +8175,6 @@ snapshots: optionalDependencies: typescript: 5.8.3 - iconv-lite@0.4.24: - dependencies: - safer-buffer: 2.1.2 - iconv-lite@0.6.3: dependencies: safer-buffer: 2.1.2 @@ -8301,6 +8293,8 @@ snapshots: is-promise@1.0.1: {} + is-promise@4.0.0: {} + is-regex@1.2.1: dependencies: call-bound: 1.0.4 @@ -8631,7 +8625,9 @@ snapshots: media-typer@0.3.0: {} - merge-descriptors@1.0.3: {} + media-typer@1.1.0: {} + + merge-descriptors@2.0.0: {} merge2@1.4.1: {} @@ -8671,8 +8667,6 @@ snapshots: dependencies: mime-db: 1.54.0 - mime@1.6.0: {} - mime@2.6.0: {} mimic-response@3.1.0: {} @@ -8743,8 +8737,6 @@ snapshots: dependencies: lodash: 4.17.21 - ms@2.0.0: {} - ms@2.1.3: {} nanoid@3.3.11: {} @@ -8755,6 +8747,8 @@ snapshots: negotiator@0.6.3: {} + negotiator@1.0.0: {} + netmask@2.0.2: {} no-case@3.0.4: @@ -8962,10 +8956,10 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 - path-to-regexp@0.1.12: {} - path-to-regexp@6.3.0: {} + path-to-regexp@8.2.0: {} + path-type@4.0.0: {} pathe@2.0.3: {} @@ -9028,10 +9022,6 @@ snapshots: punycode@2.3.1: {} - qs@6.13.0: - dependencies: - side-channel: 1.1.0 - qs@6.14.0: dependencies: side-channel: 1.1.0 @@ -9054,13 +9044,6 @@ snapshots: rate-limiter-flexible@7.0.0: {} - raw-body@2.5.2: - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - raw-body@3.0.0: dependencies: bytes: 3.1.2 @@ -9242,6 +9225,16 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.40.0 fsevents: 2.3.3 + router@2.2.0: + dependencies: + debug: 4.4.0(supports-color@8.1.1) + depd: 2.0.0 + is-promise: 4.0.0 + parseurl: 1.3.3 + path-to-regexp: 8.2.0 + transitivePeerDependencies: + - supports-color + rrweb-cssom@0.8.0: {} run-parallel@1.2.0: @@ -9326,17 +9319,15 @@ snapshots: semver@7.7.1: {} - send@0.19.0: + send@1.2.0: dependencies: - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: 1.0.2 + debug: 4.4.0(supports-color@8.1.1) + encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 - fresh: 0.5.2 + fresh: 2.0.0 http-errors: 2.0.0 - mime: 1.6.0 + mime-types: 3.0.1 ms: 2.1.3 on-finished: 2.4.1 range-parser: 1.2.1 @@ -9348,12 +9339,12 @@ snapshots: dependencies: randombytes: 2.1.0 - serve-static@1.16.2: + serve-static@2.2.0: dependencies: encodeurl: 2.0.0 escape-html: 1.0.3 parseurl: 1.3.3 - send: 0.19.0 + send: 1.2.0 transitivePeerDependencies: - supports-color @@ -9660,9 +9651,9 @@ snapshots: dependencies: '@scarf/scarf': 1.4.0 - swagger-ui-express@5.0.1(express@4.21.2): + swagger-ui-express@5.0.1(express@5.1.0): dependencies: - express: 4.21.2 + express: 5.1.0 swagger-ui-dist: 5.20.6 symbol-tree@3.2.4: {} @@ -9762,6 +9753,12 @@ snapshots: media-typer: 0.3.0 mime-types: 2.1.35 + type-is@2.0.1: + dependencies: + content-type: 1.0.5 + media-typer: 1.1.0 + mime-types: 3.0.1 + typed-array-buffer@1.0.3: dependencies: call-bound: 1.0.4 @@ -9900,8 +9897,6 @@ snapshots: optionalDependencies: '@types/react': 19.1.2 - utils-merge@1.0.1: {} - vary@1.1.2: {} vfile-location@5.0.3: diff --git a/src/node/db/GroupManager.ts b/src/node/db/GroupManager.ts index b8cb6db02..010871231 100644 --- a/src/node/db/GroupManager.ts +++ b/src/node/db/GroupManager.ts @@ -59,7 +59,7 @@ exports.deleteGroup = async (groupID: string): Promise => { // Delete associated sessions in parallel. This should be done before deleting the group2sessions // record because deleting a session updates the group2sessions record. - const {sessionIDs = {}} = await db.get(`group2sessions:${groupID}`) || {}; + const {sessionIDs = {}} = (await db.get(`group2sessions:${groupID}`)) || {}; await Promise.all(Object.keys(sessionIDs).map(async (sessionId) => { await sessionManager.deleteSession(sessionId); })); @@ -113,7 +113,7 @@ exports.createGroupIfNotExistsFor = async (groupMapper: string|object) => { throw new CustomError('groupMapper is not a string', 'apierror'); } const groupID = await db.get(`mapper2group:${groupMapper}`); - if (groupID && await exports.doesGroupExist(groupID)) return {groupID}; + if (groupID && (await exports.doesGroupExist(groupID))) return {groupID}; const result = await exports.createGroup(); await Promise.all([ db.set(`mapper2group:${groupMapper}`, result.groupID), diff --git a/src/node/db/Pad.ts b/src/node/db/Pad.ts index 8937fc0eb..3676cc161 100644 --- a/src/node/db/Pad.ts +++ b/src/node/db/Pad.ts @@ -116,10 +116,10 @@ class Pad { meta: { author: authorId, timestamp: Date.now(), - ...newRev === this.getKeyRevisionNumber(newRev) ? { + ...(newRev === this.getKeyRevisionNumber(newRev) ? { pool: this.pool, atext: this.atext, - } : {}, + } : {}), }, }), this.saveToDatabase(), @@ -135,10 +135,10 @@ class Pad { pad_utils.warnDeprecated(`${hook} hook author context is deprecated; use authorId instead`); this.authorId = authorId; }, - ...this.head === 0 ? {} : { + ...(this.head === 0 ? {} : { revs: newRev, changeset: aChangeset, - }, + }), }), ]); return newRev; diff --git a/src/node/db/PadManager.ts b/src/node/db/PadManager.ts index 54dbbf089..1a8a23733 100644 --- a/src/node/db/PadManager.ts +++ b/src/node/db/PadManager.ts @@ -57,7 +57,7 @@ const globalPads:MapArrayType = { * * Updated without db access as new pads are created/old ones removed. */ -const padList = new class { +const padList = new (class { private _cachedList: string[] | null; private _list: Set; private _loaded: Promise | null; @@ -95,7 +95,7 @@ const padList = new class { this._list.delete(name); this._cachedList = null; } -}(); +})(); // initialises the all-knowing data structure diff --git a/src/node/db/SecurityManager.ts b/src/node/db/SecurityManager.ts index c2f209a01..0c1b3c329 100644 --- a/src/node/db/SecurityManager.ts +++ b/src/node/db/SecurityManager.ts @@ -122,7 +122,7 @@ exports.checkAccess = async (padID:string, sessionCookie:string, token:string, u const grant = { accessStatus: 'grant', - authorID: sessionAuthorID || await authorManager.getAuthorId(token, userSettings), + authorID: sessionAuthorID || (await authorManager.getAuthorId(token, userSettings)), }; if (!padID.includes('$')) { diff --git a/src/node/handler/PadMessageHandler.ts b/src/node/handler/PadMessageHandler.ts index ca5e7e6e2..4e7343b44 100644 --- a/src/node/handler/PadMessageHandler.ts +++ b/src/node/handler/PadMessageHandler.ts @@ -327,7 +327,7 @@ exports.handleMessage = async (socket:any, message: ClientVarMessage) => { `IP:${settings.disableIPlogging ? 'ANONYMOUS' : socket.request.ip}`, `originalAuthorID:${thisSession.author}`, `newAuthorID:${authorID}`, - ...(user && user.username) ? [`username:${user.username}`] : [], + ...((user && user.username) ? [`username:${user.username}`] : []), `message:${message}`, ].join(' ')); } @@ -1097,7 +1097,7 @@ const handleClientReady = async (socket:any, message: ClientReadyMessage) => { if (authorId == null) return; // reuse previously created cache of author's data - const authorInfo = historicalAuthorData[authorId] || await authorManager.getAuthor(authorId); + const authorInfo = historicalAuthorData[authorId] || (await authorManager.getAuthor(authorId)); if (authorInfo == null) { messageLogger.error( `Author ${authorId} connected via socket.io session ${roomSocket.id} is missing from ` + diff --git a/src/node/security/SecretRotator.ts b/src/node/security/SecretRotator.ts index ee5bec772..3cb460a69 100644 --- a/src/node/security/SecretRotator.ts +++ b/src/node/security/SecretRotator.ts @@ -173,7 +173,7 @@ export class SecretRotator { // TODO: This is racy. If two instances start up at the same time and there are no existing // matching publications, each will generate and publish their own paramters. In practice this // is unlikely to happen, and if it does it can be fixed by restarting both Etherpad instances. - const dbKeys:string[] = await db.findKeys(`${this._dbPrefix}:*`, null) || []; + const dbKeys:string[] = (await db.findKeys(`${this._dbPrefix}:*`, null)) || []; let currentParams:any = null; let currentId = null; const dbWrites:any[] = []; @@ -245,7 +245,7 @@ export class SecretRotator { // The secrets derived from currentParams MUST be the first secrets. const secrets = await this._deriveSecrets(currentParams, now); await Promise.all( - allParams.map(async (p) => secrets.push(...await this._deriveSecrets(p, now)))); + allParams.map(async (p) => secrets.push(...(await this._deriveSecrets(p, now))))); // Update this.secrets all at once to avoid race conditions. this.secrets.length = 0; this.secrets.push(...secrets); diff --git a/src/node/utils/Cleanup.ts b/src/node/utils/Cleanup.ts index 7e480020d..68f7cdcf0 100644 --- a/src/node/utils/Cleanup.ts +++ b/src/node/utils/Cleanup.ts @@ -31,10 +31,10 @@ const createRevision = async (aChangeset: AChangeSet, timestamp: number, isKeyRe meta: { author: authorId, timestamp: timestamp, - ...isKeyRev ? { + ...(isKeyRev ? { pool: pool, atext: atext, - } : {}, + } : {}), }, }; } diff --git a/src/node/utils/ImportEtherpad.ts b/src/node/utils/ImportEtherpad.ts index cf34107c7..82f5902bc 100644 --- a/src/node/utils/ImportEtherpad.ts +++ b/src/node/utils/ImportEtherpad.ts @@ -41,7 +41,7 @@ exports.setPadRaw = async (padId: string, r: string, authorId = '') => { // DB key prefixes for pad records. Each key is expected to have the form `${prefix}:${padId}` or // `${prefix}:${padId}:${otherstuff}`. const padKeyPrefixes = [ - ...await hooks.aCallAll('exportEtherpadAdditionalContent'), + ...(await hooks.aCallAll('exportEtherpadAdditionalContent')), 'pad', ]; diff --git a/src/package.json b/src/package.json index faa24a4cf..bf90d2dc1 100644 --- a/src/package.json +++ b/src/package.json @@ -38,7 +38,7 @@ "cross-spawn": "^7.0.6", "ejs": "^3.1.10", "esbuild": "^0.25.2", - "express": "4.21.2", + "express": "5.1.0", "express-rate-limit": "^7.5.0", "fast-deep-equal": "^3.1.3", "find-root": "1.1.0", diff --git a/src/static/js/ace.ts b/src/static/js/ace.ts index 4c062584c..6dc62cfd8 100644 --- a/src/static/js/ace.ts +++ b/src/static/js/ace.ts @@ -94,11 +94,11 @@ const Ace2Editor = function () { let actionsPendingInit = []; - const pendingInit = (func) => function (...args) { + const pendingInit = (func) => (function(...args) { const action = () => func.apply(this, args); if (loaded) return action(); actionsPendingInit.push(action); - }; + }); const doActionsPendingInit = () => { for (const fn of actionsPendingInit) fn(); diff --git a/src/static/js/ace2_inner.ts b/src/static/js/ace2_inner.ts index 709840f80..0f6efecaa 100644 --- a/src/static/js/ace2_inner.ts +++ b/src/static/js/ace2_inner.ts @@ -2554,7 +2554,7 @@ function Ace2Inner(editorInfo, cssManagers) { let stopped = false; inCallStackIfNecessary('handleKeyEvent', function () { - if (type === 'keypress' || (isTypeForSpecialKey && keyCode === 13 /* return*/)) { + if (type === 'keypress' || ((isTypeForSpecialKey && keyCode === 13) /* return*/)) { // in IE, special keys don't send keypress, the keydown does the action if (!outsideKeyPress(evt)) { evt.preventDefault(); diff --git a/src/static/js/collab_client.ts b/src/static/js/collab_client.ts index 7bc1c37df..3e9b98539 100644 --- a/src/static/js/collab_client.ts +++ b/src/static/js/collab_client.ts @@ -165,7 +165,7 @@ const getCollabClient = (ace2editor, serverVars, initialUserInfo, options, _pad) }); }; - const serverMessageTaskQueue = new class { + const serverMessageTaskQueue = new (class { constructor() { this._promiseChain = Promise.resolve(); } @@ -178,7 +178,7 @@ const getCollabClient = (ace2editor, serverVars, initialUserInfo, options, _pad) // fn() throws/rejects (due to the .catch() added above). return await taskPromise; } - }(); + })(); const handleMessageFromServer = (evt) => { if (!getSocket()) return; @@ -371,7 +371,7 @@ const getCollabClient = (ace2editor, serverVars, initialUserInfo, options, _pad) // is connected for the first time. let deferredActions = []; - const defer = (func, tag) => function (...args) { + const defer = (func, tag) => (function(...args) { const action = () => { func.call(this, ...args); }; @@ -381,7 +381,7 @@ const getCollabClient = (ace2editor, serverVars, initialUserInfo, options, _pad) } else { action(); } - }; + }); const doDeferredActions = (tag) => { const newArray = []; diff --git a/src/static/js/pad_cookie.ts b/src/static/js/pad_cookie.ts index bc624e962..da4bb4758 100644 --- a/src/static/js/pad_cookie.ts +++ b/src/static/js/pad_cookie.ts @@ -19,7 +19,7 @@ import {Cookies} from "./pad_utils"; -exports.padcookie = new class { +exports.padcookie = new (class { constructor() { this.cookieName_ = window.location.protocol === 'https:' ? 'prefs' : 'prefsHttp'; } @@ -68,4 +68,4 @@ exports.padcookie = new class { clear() { this.writePrefs_({}); } -}(); +})(); diff --git a/src/static/js/pad_editbar.ts b/src/static/js/pad_editbar.ts index d98174fe5..464435a7e 100644 --- a/src/static/js/pad_editbar.ts +++ b/src/static/js/pad_editbar.ts @@ -124,7 +124,7 @@ const syncAnimation = (() => { }; })(); -exports.padeditbar = new class { +exports.padeditbar = new (class { constructor() { this._editbarPosition = 0; this.commands = {}; @@ -479,4 +479,4 @@ exports.padeditbar = new class { } }); } -}(); +})(); diff --git a/src/static/js/vendors/jquery.ts b/src/static/js/vendors/jquery.ts index 1b9923a62..0a7b82fef 100644 --- a/src/static/js/vendors/jquery.ts +++ b/src/static/js/vendors/jquery.ts @@ -595,9 +595,7 @@ // Support: IE 9 - 11+ // IE doesn't have `contains` on SVG. - a.contains ? - a.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + (a.contains ? a.contains( bup ) : a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16) ) ); }; diff --git a/src/tests/backend/specs/ExportEtherpad.ts b/src/tests/backend/specs/ExportEtherpad.ts index 677890cbb..7f7a1e81a 100644 --- a/src/tests/backend/specs/ExportEtherpad.ts +++ b/src/tests/backend/specs/ExportEtherpad.ts @@ -12,7 +12,7 @@ describe(__filename, function () { beforeEach(async function () { padId = common.randomString(); - assert(!await padManager.doesPadExist(padId)); + assert(!(await padManager.doesPadExist(padId))); }); describe('exportEtherpadAdditionalContent', function () { diff --git a/src/tests/backend/specs/ImportEtherpad.ts b/src/tests/backend/specs/ImportEtherpad.ts index b9ac9baaf..728506006 100644 --- a/src/tests/backend/specs/ImportEtherpad.ts +++ b/src/tests/backend/specs/ImportEtherpad.ts @@ -53,7 +53,7 @@ describe(__filename, function () { beforeEach(async function () { padId = randomString(10); - assert(!await padManager.doesPadExist(padId)); + assert(!(await padManager.doesPadExist(padId))); }); it('unknown db records are ignored', async function () { @@ -62,7 +62,7 @@ describe(__filename, function () { [badKey]: 'value', ...makeExport(makeAuthorId()), })); - assert(await db.get(badKey) == null); + assert((await db.get(badKey)) == null); }); it('changes are all or nothing', async function () { @@ -71,8 +71,8 @@ describe(__filename, function () { data['pad:differentPadId:revs:0'] = data['pad:testing:revs:0']; delete data['pad:testing:revs:0']; assert.rejects(importEtherpad.setPadRaw(padId, JSON.stringify(data)), /unexpected pad ID/); - assert(!await authorManager.doesAuthorExist(authorId)); - assert(!await padManager.doesPadExist(padId)); + assert(!(await authorManager.doesAuthorExist(authorId))); + assert(!(await padManager.doesPadExist(padId))); }); describe('author pad IDs', function () { @@ -85,7 +85,7 @@ describe(__filename, function () { assert.deepEqual((await authorManager.listPadsOfAuthor(existingAuthorId)).padIDs, []); newAuthorId = makeAuthorId(); assert.notEqual(newAuthorId, existingAuthorId); - assert(!await authorManager.doesAuthorExist(newAuthorId)); + assert(!(await authorManager.doesAuthorExist(newAuthorId))); }); it('author does not yet exist', async function () { @@ -199,12 +199,12 @@ describe(__filename, function () { ...makeExport(makeAuthorId()), 'custom:testingx': 'x', })), /unexpected pad ID/); - assert(await db.get(`custom:${padId}x`) == null); + assert((await db.get(`custom:${padId}x`)) == null); await assert.rejects(importEtherpad.setPadRaw(padId, JSON.stringify({ ...makeExport(makeAuthorId()), 'custom:testingx:foo': 'x', })), /unexpected pad ID/); - assert(await db.get(`custom:${padId}x:foo`) == null); + assert((await db.get(`custom:${padId}x:foo`)) == null); }); }); }); diff --git a/src/tests/backend/specs/SessionStore.ts b/src/tests/backend/specs/SessionStore.ts index 5dfc44ff2..f2ffa0a24 100644 --- a/src/tests/backend/specs/SessionStore.ts +++ b/src/tests/backend/specs/SessionStore.ts @@ -44,7 +44,7 @@ describe(__filename, function () { describe('set', function () { it('set of null is a no-op', async function () { await set(null); - assert(await db.get(`sessionstorage:${sid}`) == null); + assert((await db.get(`sessionstorage:${sid}`)) == null); }); it('set of non-expiring session', async function () { @@ -59,14 +59,14 @@ describe(__filename, function () { assert.equal(JSON.stringify(await db.get(`sessionstorage:${sid}`)), JSON.stringify(sess)); await new Promise((resolve) => setTimeout(resolve, 110)); // Writing should start a timeout. - assert(await db.get(`sessionstorage:${sid}`) == null); + assert((await db.get(`sessionstorage:${sid}`)) == null); }); it('set of already expired session', async function () { const sess:any = {foo: 'bar', cookie: {expires: new Date(1)}}; await set(sess); // No record should have been created. - assert(await db.get(`sessionstorage:${sid}`) == null); + assert((await db.get(`sessionstorage:${sid}`)) == null); }); it('switch from non-expiring to expiring', async function () { @@ -75,7 +75,7 @@ describe(__filename, function () { const sess2:any = {foo: 'bar', cookie: {expires: new Date(Date.now() + 100)}}; await set(sess2); await new Promise((resolve) => setTimeout(resolve, 110)); - assert(await db.get(`sessionstorage:${sid}`) == null); + assert((await db.get(`sessionstorage:${sid}`)) == null); }); it('switch from expiring to non-expiring', async function () { @@ -90,7 +90,7 @@ describe(__filename, function () { describe('get', function () { it('get of non-existent entry', async function () { - assert(await get() == null); + assert((await get()) == null); }); it('set+get round trip', async function () { @@ -111,14 +111,14 @@ describe(__filename, function () { assert.equal(JSON.stringify(await get()), JSON.stringify(sess)); await new Promise((resolve) => setTimeout(resolve, 110)); // Reading should start a timeout. - assert(await db.get(`sessionstorage:${sid}`) == null); + assert((await db.get(`sessionstorage:${sid}`)) == null); }); it('get of record from previous run (already expired)', async function () { const sess = {foo: 'bar', cookie: {expires: new Date(1)}}; await db.set(`sessionstorage:${sid}`, sess); - assert(await get() == null); - assert(await db.get(`sessionstorage:${sid}`) == null); + assert((await get()) == null); + assert((await db.get(`sessionstorage:${sid}`)) == null); }); it('external expiration update is picked up', async function () { @@ -151,7 +151,7 @@ describe(__filename, function () { const sess:any = {cookie: {expires: new Date(Date.now() + 100)}}; await set(sess); await destroy(); - assert(await db.get(`sessionstorage:${sid}`) == null); + assert((await db.get(`sessionstorage:${sid}`)) == null); }); it('destroy cancels the timeout', async function () { diff --git a/src/tests/backend/specs/api/sessionsAndGroups.ts b/src/tests/backend/specs/api/sessionsAndGroups.ts index a7e85fbe9..33f075b60 100644 --- a/src/tests/backend/specs/api/sessionsAndGroups.ts +++ b/src/tests/backend/specs/api/sessionsAndGroups.ts @@ -131,7 +131,7 @@ describe(__filename, function () { .expect((res:any) => { assert.equal(res.body.code, 0); }); - assert(await db.get(`mapper2group:${mapper}`) == null); + assert((await db.get(`mapper2group:${mapper}`)) == null); }); // Test coverage for https://github.com/ether/etherpad-lite/issues/4227 diff --git a/src/tests/backend/specs/messages.ts b/src/tests/backend/specs/messages.ts index 9d91b2342..c1252aafb 100644 --- a/src/tests/backend/specs/messages.ts +++ b/src/tests/backend/specs/messages.ts @@ -27,7 +27,7 @@ describe(__filename, function () { backups.hooks = {handleMessageSecurity: plugins.hooks.handleMessageSecurity}; plugins.hooks.handleMessageSecurity = []; padId = common.randomString(); - assert(!await padManager.doesPadExist(padId)); + assert(!(await padManager.doesPadExist(padId))); pad = await padManager.getPad(padId, 'dummy text\n'); await pad!.setText('\n'); // Make sure the pad is created. assert.equal(pad!.text(), '\n'); @@ -57,7 +57,7 @@ describe(__filename, function () { describe('CHANGESET_REQ', function () { it('users are unable to read changesets from other pads', async function () { const otherPadId = `${padId}other`; - assert(!await padManager.doesPadExist(otherPadId)); + assert(!(await padManager.doesPadExist(otherPadId))); const otherPad = await padManager.getPad(otherPadId, 'other text\n'); try { await otherPad.setText('other text\n'); @@ -84,7 +84,7 @@ describe(__filename, function () { it('CHANGESET_REQ: verify revNum is a number (regression)', async function () { const otherPadId = `${padId}other`; - assert(!await padManager.doesPadExist(otherPadId)); + assert(!(await padManager.doesPadExist(otherPadId))); const otherPad = await padManager.getPad(otherPadId, 'other text\n'); let errorCatched = 0; try { @@ -113,7 +113,7 @@ describe(__filename, function () { it('CHANGESET_REQ: revNum is converted to number if possible (regression)', async function () { const otherPadId = `${padId}other`; - assert(!await padManager.doesPadExist(otherPadId)); + assert(!(await padManager.doesPadExist(otherPadId))); const otherPad = await padManager.getPad(otherPadId, 'other text\n'); try { await otherPad.setText('other text\n'); @@ -140,7 +140,7 @@ describe(__filename, function () { it('CHANGESET_REQ: revNum 2 is converted to head rev 1 (regression)', async function () { const otherPadId = `${padId}other`; - assert(!await padManager.doesPadExist(otherPadId)); + assert(!(await padManager.doesPadExist(otherPadId))); const otherPad = await padManager.getPad(otherPadId, 'other text\n'); try { await otherPad.setText('other text\n'); diff --git a/src/tests/backend/specs/socketio.ts b/src/tests/backend/specs/socketio.ts index cde554e5e..554fc5ae0 100644 --- a/src/tests/backend/specs/socketio.ts +++ b/src/tests/backend/specs/socketio.ts @@ -358,7 +358,7 @@ describe(__filename, function () { const connected = new Promise((resolve) => resolveConnected = resolve); let resolveDisconnected: (value: void | PromiseLike) => void ; const disconnected = new Promise((resolve) => resolveDisconnected = resolve); - socketIoRouter.addComponent(this.test!.fullTitle(), new class extends Module { + socketIoRouter.addComponent(this.test!.fullTitle(), new (class extends Module { private _socket: any; handleConnect(socket:any) { this._socket = socket; @@ -371,7 +371,7 @@ describe(__filename, function () { assert.equal(socket, this._socket); resolveDisconnected(); } - }()); + })()); socket = await common.connect(); await connected; socket.close(); @@ -387,13 +387,13 @@ describe(__filename, function () { }; let rx:Function; const got = new Promise((resolve) => { rx = resolve; }); - socketIoRouter.addComponent(this.test!.fullTitle(), new class extends Module { + socketIoRouter.addComponent(this.test!.fullTitle(), new (class extends Module { handleConnect(socket:any) { serverSocket = socket; } handleMessage(socket:any, message:string) { assert.equal(socket, serverSocket); rx(message); } - }()); - socketIoRouter.addComponent(`${this.test!.fullTitle()} #2`, new class extends Module { + })()); + socketIoRouter.addComponent(`${this.test!.fullTitle()} #2`, new (class extends Module { handleMessage(socket:any, message:any) { assert.fail('wrong handler called'); } - }()); + })()); socket = await common.connect(); socket.emit('message', want); assert.deepEqual(await got, want); diff --git a/src/tests/frontend-new/helper/padHelper.ts b/src/tests/frontend-new/helper/padHelper.ts index f52cd0a35..03ab6cf5e 100644 --- a/src/tests/frontend-new/helper/padHelper.ts +++ b/src/tests/frontend-new/helper/padHelper.ts @@ -85,7 +85,7 @@ export const isChatBoxSticky = async (page: Page):Promise => { } export const hideChat = async (page: Page) => { - if(!await isChatBoxShown(page)|| await isChatBoxSticky(page)) return + if(!(await isChatBoxShown(page))|| (await isChatBoxSticky(page))) return await page.locator('#titlecross').click() await page.waitForFunction(`!document.querySelector('#chatbox').classList.contains('stickyChat')`) @@ -98,7 +98,7 @@ export const enableStickyChatviaIcon = async (page: Page) => { } export const disableStickyChatviaIcon = async (page: Page) => { - if(!await isChatBoxSticky(page)) return + if(!(await isChatBoxSticky(page))) return await page.locator('#titlecross').click() await page.waitForFunction(`!document.querySelector('#chatbox').classList.contains('stickyChat')`) } diff --git a/src/tests/frontend-new/helper/settingsHelper.ts b/src/tests/frontend-new/helper/settingsHelper.ts index 729dd48f6..26461a6cc 100644 --- a/src/tests/frontend-new/helper/settingsHelper.ts +++ b/src/tests/frontend-new/helper/settingsHelper.ts @@ -13,7 +13,7 @@ export const showSettings = async (page: Page) => { } export const hideSettings = async (page: Page) => { - if(!await isSettingsShown(page)) return + if(!(await isSettingsShown(page))) return await page.locator("button[data-l10n-id='pad.toolbar.settings.title']").click() await page.waitForFunction(`!document.querySelector('#settings').classList.contains('popup-show')`) } diff --git a/src/tests/frontend/helper.js b/src/tests/frontend/helper.js index 18981897e..9e86c6ece 100644 --- a/src/tests/frontend/helper.js +++ b/src/tests/frontend/helper.js @@ -218,7 +218,7 @@ const helper = {}; const check = async () => { try { - if (!await conditionFunc()) return; + if (!(await conditionFunc())) return; deferred.resolve(); } catch (err) { deferred.reject(err);