diff --git a/CHANGELOG.md b/CHANGELOG.md index ec07ae86e..bd572bcbe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ +# 2.2.4 + +### Notable enhancements and fixes + +- Switched to new SQLite backend +- Fixed rusty-store-kv module not found + + # 2.2.3 ### Notable enhancements and fixes diff --git a/admin/package.json b/admin/package.json index 0a2c4d006..8d170adaf 100644 --- a/admin/package.json +++ b/admin/package.json @@ -1,7 +1,7 @@ { "name": "admin", "private": true, - "version": "2.2.3", + "version": "2.2.4", "type": "module", "scripts": { "dev": "vite", @@ -21,17 +21,17 @@ "@typescript-eslint/eslint-plugin": "^8.4.0", "@typescript-eslint/parser": "^8.4.0", "@vitejs/plugin-react-swc": "^3.5.0", - "eslint": "^9.9.1", + "eslint": "^9.10.0", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.11", - "i18next": "^23.14.0", + "i18next": "^23.15.0", "i18next-browser-languagedetector": "^8.0.0", "lucide-react": "^0.439.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-hook-form": "^7.53.0", "react-i18next": "^15.0.1", - "react-router-dom": "^6.26.1", + "react-router-dom": "^6.26.2", "socket.io-client": "^4.7.5", "typescript": "^5.5.4", "vite": "^5.4.3", diff --git a/bin/package.json b/bin/package.json index f70132a1c..0af3dbebd 100644 --- a/bin/package.json +++ b/bin/package.json @@ -1,6 +1,6 @@ { "name": "bin", - "version": "2.2.3", + "version": "2.2.4", "description": "", "main": "checkAllPads.js", "directories": { @@ -12,7 +12,7 @@ "log4js": "^6.9.1", "semver": "^7.6.3", "tsx": "^4.19.0", - "ueberdb2": "^4.2.103" + "ueberdb2": "^5.0.2" }, "devDependencies": { "@types/node": "^22.5.4", diff --git a/doc/.vitepress/config.mts b/doc/.vitepress/config.mts index 170f21898..c96fa3bd3 100644 --- a/doc/.vitepress/config.mts +++ b/doc/.vitepress/config.mts @@ -32,6 +32,7 @@ export default defineConfig({ { text: 'Stats', link: '/stats.md' }, {text: 'Skins', link: '/skins.md' }, {text: 'Demo', link: '/demo.md' }, + {text: 'CLI', link: '/cli.md'}, ] }, { diff --git a/package.json b/package.json index 00defc3ae..d46816f0b 100644 --- a/package.json +++ b/package.json @@ -50,6 +50,6 @@ "type": "git", "url": "https://github.com/ether/etherpad-lite.git" }, - "version": "2.2.3", + "version": "2.2.4", "license": "Apache-2.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 17eff3bd8..2f2b4df40 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -42,25 +42,25 @@ importers: version: 18.3.0 '@typescript-eslint/eslint-plugin': specifier: ^8.4.0 - version: 8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1)(typescript@5.5.4))(eslint@9.9.1)(typescript@5.5.4) + version: 8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.10.0)(typescript@5.5.4))(eslint@9.10.0)(typescript@5.5.4) '@typescript-eslint/parser': specifier: ^8.4.0 - version: 8.4.0(eslint@9.9.1)(typescript@5.5.4) + version: 8.4.0(eslint@9.10.0)(typescript@5.5.4) '@vitejs/plugin-react-swc': specifier: ^3.5.0 version: 3.7.0(vite@5.4.3(@types/node@22.5.4)) eslint: - specifier: ^9.9.1 - version: 9.9.1 + specifier: ^9.10.0 + version: 9.10.0 eslint-plugin-react-hooks: specifier: ^4.6.0 - version: 4.6.2(eslint@9.9.1) + version: 4.6.2(eslint@9.10.0) eslint-plugin-react-refresh: specifier: ^0.4.11 - version: 0.4.11(eslint@9.9.1) + version: 0.4.11(eslint@9.10.0) i18next: - specifier: ^23.14.0 - version: 23.14.0 + specifier: ^23.15.0 + version: 23.15.0 i18next-browser-languagedetector: specifier: ^8.0.0 version: 8.0.0 @@ -78,10 +78,10 @@ importers: version: 7.53.0(react@18.3.1) react-i18next: specifier: ^15.0.1 - version: 15.0.1(i18next@23.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 15.0.1(i18next@23.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-router-dom: - specifier: ^6.26.1 - version: 6.26.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^6.26.2 + version: 6.26.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) socket.io-client: specifier: ^4.7.5 version: 4.7.5 @@ -119,8 +119,8 @@ importers: specifier: ^4.19.0 version: 4.19.0 ueberdb2: - specifier: ^4.2.103 - version: 4.2.103 + specifier: ^5.0.2 + version: 5.0.2 devDependencies: '@types/node': specifier: ^22.5.4 @@ -240,8 +240,8 @@ importers: specifier: 1.22.8 version: 1.22.8 rusty-store-kv: - specifier: ^1.2.0 - version: 1.2.0 + specifier: ^1.3.1 + version: 1.3.1 security: specifier: 1.0.0 version: 1.0.0 @@ -264,8 +264,8 @@ importers: specifier: 4.19.0 version: 4.19.0 ueberdb2: - specifier: ^4.2.103 - version: 4.2.103 + specifier: ^5.0.2 + version: 5.0.2 underscore: specifier: 1.13.7 version: 1.13.7 @@ -331,11 +331,11 @@ importers: specifier: ^3.6.0 version: 3.6.0 eslint: - specifier: ^9.9.1 - version: 9.9.1 + specifier: ^9.10.0 + version: 9.10.0 eslint-config-etherpad: specifier: ^4.0.4 - version: 4.0.4(eslint@9.9.1)(typescript@5.5.4) + version: 4.0.4(eslint@9.10.0)(typescript@5.5.4) etherpad-cli-client: specifier: ^3.0.2 version: 3.0.2 @@ -875,14 +875,18 @@ packages: resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.9.1': - resolution: {integrity: sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==} + '@eslint/js@9.10.0': + resolution: {integrity: sha512-fuXtbiP5GWIn8Fz+LWoOMVf/Jxm+aajZYkhi6CuEm4SxymFM+eUWzbO9qXT+L0iCkL5+KGYMCSGxo686H19S1g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.4': resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/plugin-kit@0.1.0': + resolution: {integrity: sha512-autAXT203ixhqei9xt+qkYOvY8l6LAFIdT2UXc/RPNeUVfqRF1BV94GTJyVPFKT8nFM6MyVJhjLj9E8JWvf5zQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@etherpad/express-session@1.18.4': resolution: {integrity: sha512-uiUtcfv0hyEA+Lur00V6yINaa/qe09HiFqmc+DzSXYChILFLgOV3G4p4XJkIRrUOGmqaJRiliB1BoQIiY3Tnjw==} engines: {node: '>= 0.8.0'} @@ -1173,8 +1177,8 @@ packages: '@types/react-dom': optional: true - '@remix-run/router@1.19.1': - resolution: {integrity: sha512-S45oynt/WH19bHbIXjtli6QmwNYvaz+vtnubvNpNDvUOoA/OWh6j1OikIP3G+v5GHdxyC6EXoChG3HgYGEUfcg==} + '@remix-run/router@1.19.2': + resolution: {integrity: sha512-baiMx18+IMuD1yyvOGaHM9QrVUPGGG0jC+z+IPHnRJWUAUvaKuWKyE8gjDj2rzv3sz9zOGoRSPgeBVHRhZnBlA==} engines: {node: '>=14.0.0'} '@rollup/pluginutils@5.1.0': @@ -2578,8 +2582,8 @@ packages: resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.9.1: - resolution: {integrity: sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==} + eslint@9.10.0: + resolution: {integrity: sha512-Y4D0IgtBZfOcOUAIQTSXBKoNGfY0REGqHJG6+Q81vNippW5YlKjHFj4soMxamKK1NXHUWuBZTLdU3Km+L/pcHw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -2991,8 +2995,8 @@ packages: i18next-browser-languagedetector@8.0.0: resolution: {integrity: sha512-zhXdJXTTCoG39QsrOCiOabnWj2jecouOqbchu3EfhtSHxIB5Uugnm9JaizenOy39h7ne3+fLikIjeW88+rgszw==} - i18next@23.14.0: - resolution: {integrity: sha512-Y5GL4OdA8IU2geRrt2+Uc1iIhsjICdHZzT9tNwQ3TVqdNzgxHToGCKf/TPRP80vTCAP6svg2WbbJL+Gx5MFQVA==} + i18next@23.15.0: + resolution: {integrity: sha512-saeTb1tIQT+W/3xMivWSEVdpjyiEbj0IeK8eI/PB8jyr5gSQF5qxWLlGLEgRa5od3lvMfvW+ituhrf2VCNfTuw==} iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} @@ -3854,15 +3858,15 @@ packages: '@types/react': optional: true - react-router-dom@6.26.1: - resolution: {integrity: sha512-veut7m41S1fLql4pLhxeSW3jlqs+4MtjRLj0xvuCEXsxusJCbs6I8yn9BxzzDX2XDgafrccY6hwjmd/bL54tFw==} + react-router-dom@6.26.2: + resolution: {integrity: sha512-z7YkaEW0Dy35T3/QKPYB1LjMK2R1fxnHO8kWpUMTBdfVzZrWOiY9a7CtN8HqdWtDUWd5FY6Dl8HFsqVwH4uOtQ==} engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' react-dom: '>=16.8' - react-router@6.26.1: - resolution: {integrity: sha512-kIwJveZNwp7teQRI5QmwWo39A5bXRyqpH0COKKmPnyD2vBvDwgFXSqDUYtt1h+FEyfnE8eXr7oe0MxRzVwCcvQ==} + react-router@6.26.2: + resolution: {integrity: sha512-tvN1iuT03kHgOFnLPfLJ8V95eijteveqdOSk+srqfePtQvqCExB8eHOYnlilbOcyJyKnYkr1vJvf7YqotAJu1A==} engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' @@ -3954,68 +3958,68 @@ packages: run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - rusty-store-kv-darwin-arm64@1.2.0: - resolution: {integrity: sha512-3kj/Sgs1WH+6edE8l7Db5+gpROpelYFX8PNloX0y6KzvUQgO1ZDs0Wa8kYG8MEDWIJlmw+7UcwpMmskMleU3Vw==} + rusty-store-kv-darwin-arm64@1.3.1: + resolution: {integrity: sha512-xJ4kZh22AcNkbl5yIxUFPEZ5xtgOfAn9fH1rcLf0pUHJKTh3FsdrggBqNBlBlJRQ9RWw92MYBSC318mn8mH14Q==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - rusty-store-kv-darwin-x64@1.2.0: - resolution: {integrity: sha512-svSiGraZRukY6m330epEnJdu2D54JPzQfMjPRg8LT6f70MELGNxWRirnM/ACIBpWUfh1Ojm9jyK8OoY5IeI4UA==} + rusty-store-kv-darwin-x64@1.3.1: + resolution: {integrity: sha512-glm0uEKaetb6QBtfe5G7tsXA+tnkBCMDaxb3XCe9oCx3Pr7gR/we6OS9lPJHplaQPp10hGxOn7kjAqLVDlcT3w==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - rusty-store-kv-freebsd-x64@1.2.0: - resolution: {integrity: sha512-h2/r4PKrRY92z2Ku5I5ACc8yaKdCma0rqak1l5ue/LsR6Zl2oXmzYKXJnzwrqCSIWDRrs5RG2TXMKuPO4telfw==} + rusty-store-kv-freebsd-x64@1.3.1: + resolution: {integrity: sha512-LWUD+JFvrUlo34XfEsTf29EPsktxqqbGlUHAN/6q5DUjg/s5sBFB2W+C1xlwkD+BumyIkN60ZCRVIoXS2UgJjg==} engines: {node: '>= 10'} cpu: [x64] os: [freebsd] - rusty-store-kv-linux-arm-gnueabihf@1.2.0: - resolution: {integrity: sha512-ivrCOriUYOc/nedCszyPHFATtnLaSaMfNM8h6Cjv4S0gzScpd9rOKVg2hrPh+zApzV/O3dvf6haDtLL1WViKUg==} + rusty-store-kv-linux-arm-gnueabihf@1.3.1: + resolution: {integrity: sha512-Stpor+kqRZg9ykYLjAJn0YrXfgH96WmTcS1AKeHs6gBhVMJ2RZmn1CyF06g5wVQ7sQGrZWMm8Hp3PGjhM5Z2Ew==} engines: {node: '>= 10'} cpu: [arm] os: [linux] - rusty-store-kv-linux-arm64-gnu@1.2.0: - resolution: {integrity: sha512-dZ3ZWsltagzP3U1J6WqWBRoIakqBP7i7y9MDBnKIFFYALVkvY2q2AhrN5cTBxZHaZTbrjyZyhE/rNbyqLZjXLg==} + rusty-store-kv-linux-arm64-gnu@1.3.1: + resolution: {integrity: sha512-ZorAn0AumVbL/6kqswhB/vnLEwlSBMvnhDF6LApHhFTRIygq63dyRrwtM8hgEqL/cjOMotGft6INn429V0RWcw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - rusty-store-kv-linux-arm64-musl@1.2.0: - resolution: {integrity: sha512-J0Zg+wYzy+03DTFZgMPiTaRTk8dfFJv7zQGpeGgeyma3k7SUmUYT2P1b+0NNjbVxr5xNdFJURyJVglUMP3SJRA==} + rusty-store-kv-linux-arm64-musl@1.3.1: + resolution: {integrity: sha512-QMNbq7G1Zr2Yk82XqGbs7z2X2gs9mO5lxnHXeHLSy++56EUBTW/zj4JSjdYdetnFBkGwlPSQLAs1s0MXefxc0g==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - rusty-store-kv-linux-x64-gnu@1.2.0: - resolution: {integrity: sha512-8EK6nzC4o13v7zOtLucoQcSOPSsJe9Rw1cAWk7F5qYg/lfFAQNzOpp68rkCBnrHix8yswcafzcSktJHTKuO4yA==} + rusty-store-kv-linux-x64-gnu@1.3.1: + resolution: {integrity: sha512-aD6Oj3PlRzLLcIMytTdzkh/mIu0pJjsug2tA8Gfd5lH2SdB6NFVrF/cjrFWgx5LSLcmI+vVpstqjLOIuc3tZ7g==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - rusty-store-kv-linux-x64-musl@1.2.0: - resolution: {integrity: sha512-8Z6xAYWBFKfspSJ1XrRs8P5qYE/aDl6LGhX/5IXg/9mr54quH+pH6YXx88SD0lTgRh+mAD3brCNfr15fOKZftA==} + rusty-store-kv-linux-x64-musl@1.3.1: + resolution: {integrity: sha512-oSkE6X96muX0cbhE754s7shfzEzUTDQi5d3xrNlA/VskWRjDwKmrqiLHLsxO9lamNcDi5wvK8O6byI9qBXigRg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - rusty-store-kv-win32-arm64-msvc@1.2.0: - resolution: {integrity: sha512-YmhUBOzJc6yj1Im/WXcD20iuaZ2GWANG/heTk09enzwgza8i68sSlA39TPTyLE0tOZFdbT76GEuIXPHB0peRRg==} + rusty-store-kv-win32-arm64-msvc@1.3.1: + resolution: {integrity: sha512-HIJ2uJt5LzI/Flx73gnZX/tUfOH2EKS1UKMEzzMF8kqor3iSeGyr0NkLxdl0sZ31dZzRkW63bKxTESmIYjTgiQ==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - rusty-store-kv-win32-x64-msvc@1.2.0: - resolution: {integrity: sha512-z0/Snn9bZwsT9YnnG18Ol+pkLQpBHkAISq99NhbVdYj5lAYED/n2qIJpP1ROLJlFMJQ4PvftjCmAHUHy0tnkxA==} + rusty-store-kv-win32-x64-msvc@1.3.1: + resolution: {integrity: sha512-CY1pmACrPg1mgfWPk7/dtB24TGc0RWv34+8Eg2lXbD6V7ePSMOVeVcIH7ra/JIjxbJJV2ljWvhkgUnEnp1FSKA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - rusty-store-kv@1.2.0: - resolution: {integrity: sha512-XlzClGSiIfOrpCUEh/eAAktFbsF4IPpDDeOEIP+cWmLkbVzWuqXVLIBouBH4ybKBlw+bQCyjOnZwBdyM9UVpUg==} + rusty-store-kv@1.3.1: + resolution: {integrity: sha512-Kk+55VwQ5qLWcSD6R0RrxFOEF70SH7BjYj60MCskJvRkuY7MFlAPEn3hY4WzRodWXj5cCOJ4AsDr+4OvtaW/SQ==} engines: {node: '>= 10'} safe-array-concat@1.1.2: @@ -4373,8 +4377,8 @@ packages: engines: {node: '>=14.17'} hasBin: true - ueberdb2@4.2.103: - resolution: {integrity: sha512-jp+G38Za9vCKGRIGNEr28b7HOE0Et9J/txNSUrGnCGwpkkPLvqkX4tbx8sO3AVOynRuNMYfGy4cS0aoYt/2ePw==} + ueberdb2@5.0.2: + resolution: {integrity: sha512-dgrmxTxc/gkWuGK4UArTGwM6zBfG9hANBbhAxK+OUmZs3GatguyoBCp7LgNqenDMp3ElM/KyL6RBZ3OWpqTFKg==} engines: {node: '>=16.20.1'} uid-safe@2.1.5: @@ -5161,9 +5165,9 @@ snapshots: '@esbuild/win32-x64@0.23.1': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@9.9.1)': + '@eslint-community/eslint-utils@4.4.0(eslint@9.10.0)': dependencies: - eslint: 9.9.1 + eslint: 9.10.0 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.11.0': {} @@ -5190,10 +5194,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.9.1': {} + '@eslint/js@9.10.0': {} '@eslint/object-schema@2.1.4': {} + '@eslint/plugin-kit@0.1.0': + dependencies: + levn: 0.4.1 + '@etherpad/express-session@1.18.4': dependencies: cookie: 0.4.2 @@ -5464,7 +5472,7 @@ snapshots: '@types/react': 18.3.5 '@types/react-dom': 18.3.0 - '@remix-run/router@1.19.1': {} + '@remix-run/router@1.19.2': {} '@rollup/pluginutils@5.1.0(rollup@4.21.0)': dependencies: @@ -5892,15 +5900,15 @@ snapshots: '@types/web-bluetooth@0.0.20': {} - '@typescript-eslint/eslint-plugin@7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.9.1)(typescript@5.5.4))(eslint@9.9.1)(typescript@5.5.4)': + '@typescript-eslint/eslint-plugin@7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.10.0)(typescript@5.5.4))(eslint@9.10.0)(typescript@5.5.4)': dependencies: '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 7.17.0(eslint@9.9.1)(typescript@5.5.4) + '@typescript-eslint/parser': 7.17.0(eslint@9.10.0)(typescript@5.5.4) '@typescript-eslint/scope-manager': 7.17.0 - '@typescript-eslint/type-utils': 7.17.0(eslint@9.9.1)(typescript@5.5.4) - '@typescript-eslint/utils': 7.17.0(eslint@9.9.1)(typescript@5.5.4) + '@typescript-eslint/type-utils': 7.17.0(eslint@9.10.0)(typescript@5.5.4) + '@typescript-eslint/utils': 7.17.0(eslint@9.10.0)(typescript@5.5.4) '@typescript-eslint/visitor-keys': 7.17.0 - eslint: 9.9.1 + eslint: 9.10.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 @@ -5910,15 +5918,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1)(typescript@5.5.4))(eslint@9.9.1)(typescript@5.5.4)': + '@typescript-eslint/eslint-plugin@8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.10.0)(typescript@5.5.4))(eslint@9.10.0)(typescript@5.5.4)': dependencies: '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 8.4.0(eslint@9.9.1)(typescript@5.5.4) + '@typescript-eslint/parser': 8.4.0(eslint@9.10.0)(typescript@5.5.4) '@typescript-eslint/scope-manager': 8.4.0 - '@typescript-eslint/type-utils': 8.4.0(eslint@9.9.1)(typescript@5.5.4) - '@typescript-eslint/utils': 8.4.0(eslint@9.9.1)(typescript@5.5.4) + '@typescript-eslint/type-utils': 8.4.0(eslint@9.10.0)(typescript@5.5.4) + '@typescript-eslint/utils': 8.4.0(eslint@9.10.0)(typescript@5.5.4) '@typescript-eslint/visitor-keys': 8.4.0 - eslint: 9.9.1 + eslint: 9.10.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 @@ -5928,27 +5936,27 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.17.0(eslint@9.9.1)(typescript@5.5.4)': + '@typescript-eslint/parser@7.17.0(eslint@9.10.0)(typescript@5.5.4)': dependencies: '@typescript-eslint/scope-manager': 7.17.0 '@typescript-eslint/types': 7.17.0 '@typescript-eslint/typescript-estree': 7.17.0(typescript@5.5.4) '@typescript-eslint/visitor-keys': 7.17.0 debug: 4.3.5(supports-color@8.1.1) - eslint: 9.9.1 + eslint: 9.10.0 optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.4.0(eslint@9.9.1)(typescript@5.5.4)': + '@typescript-eslint/parser@8.4.0(eslint@9.10.0)(typescript@5.5.4)': dependencies: '@typescript-eslint/scope-manager': 8.4.0 '@typescript-eslint/types': 8.4.0 '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4) '@typescript-eslint/visitor-keys': 8.4.0 debug: 4.3.5(supports-color@8.1.1) - eslint: 9.9.1 + eslint: 9.10.0 optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: @@ -5964,22 +5972,22 @@ snapshots: '@typescript-eslint/types': 8.4.0 '@typescript-eslint/visitor-keys': 8.4.0 - '@typescript-eslint/type-utils@7.17.0(eslint@9.9.1)(typescript@5.5.4)': + '@typescript-eslint/type-utils@7.17.0(eslint@9.10.0)(typescript@5.5.4)': dependencies: '@typescript-eslint/typescript-estree': 7.17.0(typescript@5.5.4) - '@typescript-eslint/utils': 7.17.0(eslint@9.9.1)(typescript@5.5.4) + '@typescript-eslint/utils': 7.17.0(eslint@9.10.0)(typescript@5.5.4) debug: 4.3.5(supports-color@8.1.1) - eslint: 9.9.1 + eslint: 9.10.0 ts-api-utils: 1.3.0(typescript@5.5.4) optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.4.0(eslint@9.9.1)(typescript@5.5.4)': + '@typescript-eslint/type-utils@8.4.0(eslint@9.10.0)(typescript@5.5.4)': dependencies: '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4) - '@typescript-eslint/utils': 8.4.0(eslint@9.9.1)(typescript@5.5.4) + '@typescript-eslint/utils': 8.4.0(eslint@9.10.0)(typescript@5.5.4) debug: 4.3.5(supports-color@8.1.1) ts-api-utils: 1.3.0(typescript@5.5.4) optionalDependencies: @@ -6022,24 +6030,24 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.17.0(eslint@9.9.1)(typescript@5.5.4)': + '@typescript-eslint/utils@7.17.0(eslint@9.10.0)(typescript@5.5.4)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0) '@typescript-eslint/scope-manager': 7.17.0 '@typescript-eslint/types': 7.17.0 '@typescript-eslint/typescript-estree': 7.17.0(typescript@5.5.4) - eslint: 9.9.1 + eslint: 9.10.0 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@8.4.0(eslint@9.9.1)(typescript@5.5.4)': + '@typescript-eslint/utils@8.4.0(eslint@9.10.0)(typescript@5.5.4)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0) '@typescript-eslint/scope-manager': 8.4.0 '@typescript-eslint/types': 8.4.0 '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4) - eslint: 9.9.1 + eslint: 9.10.0 transitivePeerDependencies: - supports-color - typescript @@ -6906,24 +6914,24 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-compat-utils@0.5.1(eslint@9.9.1): + eslint-compat-utils@0.5.1(eslint@9.10.0): dependencies: - eslint: 9.9.1 + eslint: 9.10.0 semver: 7.6.3 - eslint-config-etherpad@4.0.4(eslint@9.9.1)(typescript@5.5.4): + eslint-config-etherpad@4.0.4(eslint@9.10.0)(typescript@5.5.4): dependencies: '@rushstack/eslint-patch': 1.10.3 - '@typescript-eslint/eslint-plugin': 7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.9.1)(typescript@5.5.4))(eslint@9.9.1)(typescript@5.5.4) - '@typescript-eslint/parser': 7.17.0(eslint@9.9.1)(typescript@5.5.4) - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.17.0(eslint@9.9.1)(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@9.9.1) - eslint-plugin-cypress: 2.15.2(eslint@9.9.1) - eslint-plugin-eslint-comments: 3.2.0(eslint@9.9.1) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.17.0(eslint@9.9.1)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1)(eslint@9.9.1) - eslint-plugin-mocha: 10.4.3(eslint@9.9.1) - eslint-plugin-n: 16.6.2(eslint@9.9.1) - eslint-plugin-prefer-arrow: 1.2.3(eslint@9.9.1) - eslint-plugin-promise: 6.6.0(eslint@9.9.1) + '@typescript-eslint/eslint-plugin': 7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.10.0)(typescript@5.5.4))(eslint@9.10.0)(typescript@5.5.4) + '@typescript-eslint/parser': 7.17.0(eslint@9.10.0)(typescript@5.5.4) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.17.0(eslint@9.10.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@9.10.0) + eslint-plugin-cypress: 2.15.2(eslint@9.10.0) + eslint-plugin-eslint-comments: 3.2.0(eslint@9.10.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.17.0(eslint@9.10.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1)(eslint@9.10.0) + eslint-plugin-mocha: 10.4.3(eslint@9.10.0) + eslint-plugin-n: 16.6.2(eslint@9.10.0) + eslint-plugin-prefer-arrow: 1.2.3(eslint@9.10.0) + eslint-plugin-promise: 6.6.0(eslint@9.10.0) eslint-plugin-you-dont-need-lodash-underscore: 6.14.0 transitivePeerDependencies: - eslint @@ -6940,13 +6948,13 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.17.0(eslint@9.9.1)(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@9.9.1): + eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.17.0(eslint@9.10.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@9.10.0): dependencies: debug: 4.3.5(supports-color@8.1.1) enhanced-resolve: 5.17.0 - eslint: 9.9.1 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.17.0(eslint@9.9.1)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.17.0(eslint@9.9.1)(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@9.9.1))(eslint@9.9.1) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.17.0(eslint@9.9.1)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1)(eslint@9.9.1) + eslint: 9.10.0 + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.17.0(eslint@9.10.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.17.0(eslint@9.10.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@9.10.0))(eslint@9.10.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.17.0(eslint@9.10.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1)(eslint@9.10.0) fast-glob: 3.3.2 get-tsconfig: 4.7.6 is-core-module: 2.15.0 @@ -6957,36 +6965,36 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.8.1(@typescript-eslint/parser@7.17.0(eslint@9.9.1)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.17.0(eslint@9.9.1)(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@9.9.1))(eslint@9.9.1): + eslint-module-utils@2.8.1(@typescript-eslint/parser@7.17.0(eslint@9.10.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.17.0(eslint@9.10.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@9.10.0))(eslint@9.10.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 7.17.0(eslint@9.9.1)(typescript@5.5.4) - eslint: 9.9.1 + '@typescript-eslint/parser': 7.17.0(eslint@9.10.0)(typescript@5.5.4) + eslint: 9.10.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.17.0(eslint@9.9.1)(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@9.9.1) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.17.0(eslint@9.10.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@9.10.0) transitivePeerDependencies: - supports-color - eslint-plugin-cypress@2.15.2(eslint@9.9.1): + eslint-plugin-cypress@2.15.2(eslint@9.10.0): dependencies: - eslint: 9.9.1 + eslint: 9.10.0 globals: 13.24.0 - eslint-plugin-es-x@7.8.0(eslint@9.9.1): + eslint-plugin-es-x@7.8.0(eslint@9.10.0): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0) '@eslint-community/regexpp': 4.11.0 - eslint: 9.9.1 - eslint-compat-utils: 0.5.1(eslint@9.9.1) + eslint: 9.10.0 + eslint-compat-utils: 0.5.1(eslint@9.10.0) - eslint-plugin-eslint-comments@3.2.0(eslint@9.9.1): + eslint-plugin-eslint-comments@3.2.0(eslint@9.10.0): dependencies: escape-string-regexp: 1.0.5 - eslint: 9.9.1 + eslint: 9.10.0 ignore: 5.3.1 - eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.17.0(eslint@9.9.1)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1)(eslint@9.9.1): + eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.17.0(eslint@9.10.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1)(eslint@9.10.0): dependencies: array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 @@ -6994,9 +7002,9 @@ snapshots: array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.9.1 + eslint: 9.10.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.17.0(eslint@9.9.1)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.17.0(eslint@9.9.1)(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@9.9.1))(eslint@9.9.1) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.17.0(eslint@9.10.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.17.0(eslint@9.10.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@9.10.0))(eslint@9.10.0) hasown: 2.0.2 is-core-module: 2.15.0 is-glob: 4.0.3 @@ -7007,25 +7015,25 @@ snapshots: semver: 6.3.1 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 7.17.0(eslint@9.9.1)(typescript@5.5.4) + '@typescript-eslint/parser': 7.17.0(eslint@9.10.0)(typescript@5.5.4) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-mocha@10.4.3(eslint@9.9.1): + eslint-plugin-mocha@10.4.3(eslint@9.10.0): dependencies: - eslint: 9.9.1 - eslint-utils: 3.0.0(eslint@9.9.1) + eslint: 9.10.0 + eslint-utils: 3.0.0(eslint@9.10.0) globals: 13.24.0 rambda: 7.5.0 - eslint-plugin-n@16.6.2(eslint@9.9.1): + eslint-plugin-n@16.6.2(eslint@9.10.0): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0) builtins: 5.1.0 - eslint: 9.9.1 - eslint-plugin-es-x: 7.8.0(eslint@9.9.1) + eslint: 9.10.0 + eslint-plugin-es-x: 7.8.0(eslint@9.10.0) get-tsconfig: 4.7.6 globals: 13.24.0 ignore: 5.3.1 @@ -7035,21 +7043,21 @@ snapshots: resolve: 1.22.8 semver: 7.6.3 - eslint-plugin-prefer-arrow@1.2.3(eslint@9.9.1): + eslint-plugin-prefer-arrow@1.2.3(eslint@9.10.0): dependencies: - eslint: 9.9.1 + eslint: 9.10.0 - eslint-plugin-promise@6.6.0(eslint@9.9.1): + eslint-plugin-promise@6.6.0(eslint@9.10.0): dependencies: - eslint: 9.9.1 + eslint: 9.10.0 - eslint-plugin-react-hooks@4.6.2(eslint@9.9.1): + eslint-plugin-react-hooks@4.6.2(eslint@9.10.0): dependencies: - eslint: 9.9.1 + eslint: 9.10.0 - eslint-plugin-react-refresh@0.4.11(eslint@9.9.1): + eslint-plugin-react-refresh@0.4.11(eslint@9.10.0): dependencies: - eslint: 9.9.1 + eslint: 9.10.0 eslint-plugin-you-dont-need-lodash-underscore@6.14.0: dependencies: @@ -7060,9 +7068,9 @@ snapshots: esrecurse: 4.3.0 estraverse: 5.3.0 - eslint-utils@3.0.0(eslint@9.9.1): + eslint-utils@3.0.0(eslint@9.10.0): dependencies: - eslint: 9.9.1 + eslint: 9.10.0 eslint-visitor-keys: 2.1.0 eslint-visitor-keys@2.1.0: {} @@ -7071,13 +7079,14 @@ snapshots: eslint-visitor-keys@4.0.0: {} - eslint@9.9.1: + eslint@9.10.0: dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0) '@eslint-community/regexpp': 4.11.0 '@eslint/config-array': 0.18.0 '@eslint/eslintrc': 3.1.0 - '@eslint/js': 9.9.1 + '@eslint/js': 9.10.0 + '@eslint/plugin-kit': 0.1.0 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.3.0 '@nodelib/fs.walk': 1.2.8 @@ -7100,7 +7109,6 @@ snapshots: is-glob: 4.0.3 is-path-inside: 3.0.3 json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 @@ -7626,7 +7634,7 @@ snapshots: dependencies: '@babel/runtime': 7.24.7 - i18next@23.14.0: + i18next@23.15.0: dependencies: '@babel/runtime': 7.24.8 @@ -8489,11 +8497,11 @@ snapshots: dependencies: react: 18.3.1 - react-i18next@15.0.1(i18next@23.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-i18next@15.0.1(i18next@23.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@babel/runtime': 7.24.8 html-parse-stringify: 3.0.1 - i18next: 23.14.0 + i18next: 23.15.0 react: 18.3.1 optionalDependencies: react-dom: 18.3.1(react@18.3.1) @@ -8517,16 +8525,16 @@ snapshots: optionalDependencies: '@types/react': 18.3.5 - react-router-dom@6.26.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-router-dom@6.26.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@remix-run/router': 1.19.1 + '@remix-run/router': 1.19.2 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-router: 6.26.1(react@18.3.1) + react-router: 6.26.2(react@18.3.1) - react-router@6.26.1(react@18.3.1): + react-router@6.26.2(react@18.3.1): dependencies: - '@remix-run/router': 1.19.1 + '@remix-run/router': 1.19.2 react: 18.3.1 react-style-singleton@2.2.1(@types/react@18.3.5)(react@18.3.1): @@ -8638,48 +8646,48 @@ snapshots: dependencies: queue-microtask: 1.2.3 - rusty-store-kv-darwin-arm64@1.2.0: + rusty-store-kv-darwin-arm64@1.3.1: optional: true - rusty-store-kv-darwin-x64@1.2.0: + rusty-store-kv-darwin-x64@1.3.1: optional: true - rusty-store-kv-freebsd-x64@1.2.0: + rusty-store-kv-freebsd-x64@1.3.1: optional: true - rusty-store-kv-linux-arm-gnueabihf@1.2.0: + rusty-store-kv-linux-arm-gnueabihf@1.3.1: optional: true - rusty-store-kv-linux-arm64-gnu@1.2.0: + rusty-store-kv-linux-arm64-gnu@1.3.1: optional: true - rusty-store-kv-linux-arm64-musl@1.2.0: + rusty-store-kv-linux-arm64-musl@1.3.1: optional: true - rusty-store-kv-linux-x64-gnu@1.2.0: + rusty-store-kv-linux-x64-gnu@1.3.1: optional: true - rusty-store-kv-linux-x64-musl@1.2.0: + rusty-store-kv-linux-x64-musl@1.3.1: optional: true - rusty-store-kv-win32-arm64-msvc@1.2.0: + rusty-store-kv-win32-arm64-msvc@1.3.1: optional: true - rusty-store-kv-win32-x64-msvc@1.2.0: + rusty-store-kv-win32-x64-msvc@1.3.1: optional: true - rusty-store-kv@1.2.0: + rusty-store-kv@1.3.1: optionalDependencies: - rusty-store-kv-darwin-arm64: 1.2.0 - rusty-store-kv-darwin-x64: 1.2.0 - rusty-store-kv-freebsd-x64: 1.2.0 - rusty-store-kv-linux-arm-gnueabihf: 1.2.0 - rusty-store-kv-linux-arm64-gnu: 1.2.0 - rusty-store-kv-linux-arm64-musl: 1.2.0 - rusty-store-kv-linux-x64-gnu: 1.2.0 - rusty-store-kv-linux-x64-musl: 1.2.0 - rusty-store-kv-win32-arm64-msvc: 1.2.0 - rusty-store-kv-win32-x64-msvc: 1.2.0 + rusty-store-kv-darwin-arm64: 1.3.1 + rusty-store-kv-darwin-x64: 1.3.1 + rusty-store-kv-freebsd-x64: 1.3.1 + rusty-store-kv-linux-arm-gnueabihf: 1.3.1 + rusty-store-kv-linux-arm64-gnu: 1.3.1 + rusty-store-kv-linux-arm64-musl: 1.3.1 + rusty-store-kv-linux-x64-gnu: 1.3.1 + rusty-store-kv-linux-x64-musl: 1.3.1 + rusty-store-kv-win32-arm64-msvc: 1.3.1 + rusty-store-kv-win32-x64-msvc: 1.3.1 safe-array-concat@1.1.2: dependencies: @@ -9119,7 +9127,7 @@ snapshots: typescript@5.5.4: {} - ueberdb2@4.2.103: {} + ueberdb2@5.0.2: {} uid-safe@2.1.5: dependencies: diff --git a/settings.json.docker b/settings.json.docker index bbe96fc51..109f36bfd 100644 --- a/settings.json.docker +++ b/settings.json.docker @@ -194,6 +194,15 @@ }, */ + + /* + * Enables the use of a different server. We have a different one that syncs changes from the original server. + * It is hosted on GitHub and should not be blocked by many firewalls. + * https://etherpad.org/ep_infos + */ + + "updateServer": "https://etherpad.org/ep_infos", + /* * The type of the database. * diff --git a/settings.json.template b/settings.json.template index 66c9a7df2..fe10e51b9 100644 --- a/settings.json.template +++ b/settings.json.template @@ -271,6 +271,14 @@ "pageDown": true }, + /* + * Enables the use of a different server. We have a different one that syncs changes from the original server. + * It is hosted on GitHub and should not be blocked by many firewalls. + * https://etherpad.org/ep_infos + */ + + "updateServer": "https://etherpad.org/ep_infos", + /* * Should we suppress errors from being visible in the default Pad Text? */ diff --git a/src/node/utils/Settings.ts b/src/node/utils/Settings.ts index 0113499f5..4ff117ad3 100644 --- a/src/node/utils/Settings.ts +++ b/src/node/utils/Settings.ts @@ -107,6 +107,7 @@ exports.ttl = { RefreshToken: 1 * 24 * 60 * 60, // 1 day in seconds } +exports.updateServer = "https://static.etherpad.org" /* @@ -941,11 +942,12 @@ exports.reloadSettings = () => { logger.warn(`${dirtyWarning} File location: ${exports.dbSettings.filename}`); } - if (exports.dbType === 'rustydb') { + if (exports.dbType === 'rustydb' || exports.dbType === "sqlite") { exports.dbSettings.filename = absolutePaths.makeAbsolute(exports.dbSettings.filename); logger.warn(`File location: ${exports.dbSettings.filename}`); } + if (exports.ip === '') { // using Unix socket for connectivity logger.warn('The settings file contains an empty string ("") for the "ip" parameter. The ' + diff --git a/src/node/utils/UpdateCheck.ts b/src/node/utils/UpdateCheck.ts index 534c5c640..de7d2eea6 100644 --- a/src/node/utils/UpdateCheck.ts +++ b/src/node/utils/UpdateCheck.ts @@ -20,7 +20,7 @@ const loadEtherpadInformations = () => { return infos; } - return axios.get('https://static.etherpad.org/info.json', {headers: headers}) + return axios.get(`${settings.updateServer}/info.json`, {headers: headers}) .then(async (resp: any) => { infos = await resp.data; if (infos === undefined || infos === null) { diff --git a/src/package.json b/src/package.json index 2b1038d1a..076adbf99 100644 --- a/src/package.json +++ b/src/package.json @@ -70,11 +70,11 @@ "superagent": "10.1.0", "tinycon": "0.6.8", "tsx": "4.19.0", - "ueberdb2": "^4.2.103", + "ueberdb2": "^5.0.2", "underscore": "1.13.7", "unorm": "1.6.0", "wtfnode": "^0.9.3", - "rusty-store-kv": "^1.2.0" + "rusty-store-kv": "^1.3.1" }, "bin": { "etherpad-healthcheck": "../bin/etherpad-healthcheck", @@ -99,7 +99,7 @@ "@types/supertest": "^6.0.2", "@types/underscore": "^1.11.15", "chokidar": "^3.6.0", - "eslint": "^9.9.1", + "eslint": "^9.10.0", "eslint-config-etherpad": "^4.0.4", "etherpad-cli-client": "^3.0.2", "mocha": "^10.7.3", @@ -138,6 +138,6 @@ "debug:socketio": "cross-env DEBUG=socket.io* node --require tsx/cjs node/server.ts", "test:vitest": "vitest" }, - "version": "2.2.3", + "version": "2.2.4", "license": "Apache-2.0" } diff --git a/src/static/js/ace2_inner.ts b/src/static/js/ace2_inner.ts index 0dce038a8..15db776e1 100644 --- a/src/static/js/ace2_inner.ts +++ b/src/static/js/ace2_inner.ts @@ -167,7 +167,7 @@ function Ace2Inner(editorInfo, cssManagers) { for (const name of names) console[name] = noop; } - const scheduler = parent; // hack for opera required + const scheduler = window; // hack for opera required const performDocumentReplaceRange = (start, end, newText) => { if (start === undefined) start = rep.selStart; @@ -240,7 +240,7 @@ function Ace2Inner(editorInfo, cssManagers) { bgcolor = fadeColor(bgcolor, info.fade); } const textColor = - colorutils.textColorFromBackgroundColor(bgcolor, parent.parent.clientVars.skinName); + colorutils.textColorFromBackgroundColor(bgcolor, window.clientVars.skinName); const styles = [ cssManagers.inner.selectorStyle(authorSelector), cssManagers.parent.selectorStyle(authorSelector), @@ -1270,7 +1270,7 @@ function Ace2Inner(editorInfo, cssManagers) { const prevLine = rep.lines.prev(thisLine); const prevLineText = prevLine.text; let theIndent = /^ *(?:)/.exec(prevLineText)[0]; - const shouldIndent = parent.parent.clientVars.indentationOnNewLine; + const shouldIndent = window.clientVars.indentationOnNewLine; if (shouldIndent && /[[(:{]\s*$/.exec(prevLineText)) { theIndent += THE_TAB; } @@ -2023,7 +2023,7 @@ function Ace2Inner(editorInfo, cssManagers) { const isPadLoading = (t) => t === 'setup' || t === 'setBaseText' || t === 'importText'; const updateStyleButtonState = (attribName, hasStyleOnRepSelection) => { - const $formattingButton = parent.parent.$(`[data-key="${attribName}"]`).find('a'); + const $formattingButton = window.$(`[data-key="${attribName}"]`).find('a'); $formattingButton.toggleClass(SELECT_BUTTON_CLASS, hasStyleOnRepSelection); }; @@ -2277,7 +2277,7 @@ function Ace2Inner(editorInfo, cssManagers) { }; const hideEditBarDropdowns = () => { - window.parent.parent.padeditbar.toggleDropDown('none'); + window.padeditbar.toggleDropDown('none'); }; const renumberList = (lineNum) => { @@ -2582,7 +2582,7 @@ function Ace2Inner(editorInfo, cssManagers) { specialHandled = specialHandledInHook.indexOf(true) !== -1; } - const padShortcutEnabled = parent.parent.clientVars.padShortcutEnabled; + const padShortcutEnabled = window.clientVars.padShortcutEnabled; if (!specialHandled && isTypeForSpecialKey && altKey && keyCode === 120 && padShortcutEnabled.altF9) { @@ -2591,7 +2591,7 @@ function Ace2Inner(editorInfo, cssManagers) { // As ubuntu cannot use Alt F10.... // Focus on the editbar. // -- TODO: Move Focus back to previous state (we know it so we can use it) - const firstEditbarElement = parent.parent.$('#editbar') + const firstEditbarElement = window.$('#editbar') .children('ul').first().children().first() .children().first().children().first(); $(this).trigger('blur'); @@ -2603,8 +2603,8 @@ function Ace2Inner(editorInfo, cssManagers) { padShortcutEnabled.altC) { // Alt c focuses on the Chat window $(this).trigger('blur'); - parent.parent.chat.show(); - parent.parent.$('#chatinput').trigger('focus'); + window.chat.show(); + window.$('#chatinput').trigger('focus'); evt.preventDefault(); } if (!specialHandled && type === 'keydown' && @@ -2626,12 +2626,12 @@ function Ace2Inner(editorInfo, cssManagers) { if (authorId) authorIds.add(authorId); } } - const idToName = new Map(parent.parent.pad.userList().map((a) => [a.userId, a.name])); - const myId = parent.parent.clientVars.userId; + const idToName = new Map(window.pad.userList().map((a) => [a.userId, a.name])); + const myId = window.clientVars.userId; const authors = [...authorIds].map((id) => id === myId ? 'me' : idToName.get(id) || 'unknown'); - parent.parent.$.gritter.add({ + window.$.gritter.add({ title: 'Line Authors', text: authors.length === 0 ? 'No author information is available' @@ -2680,7 +2680,7 @@ function Ace2Inner(editorInfo, cssManagers) { specialHandled = true; // close all gritters when the user hits escape key - parent.parent.$.gritter.removeAll(); + window.$.gritter.removeAll(); } if (!specialHandled && isTypeForCmdKey && /* Do a saved revision on ctrl S */ @@ -2688,13 +2688,13 @@ function Ace2Inner(editorInfo, cssManagers) { !evt.altKey && padShortcutEnabled.cmdS) { evt.preventDefault(); - const originalBackground = parent.parent.$('#revisionlink').css('background'); - parent.parent.$('#revisionlink').css({background: 'lightyellow'}); + const originalBackground = window.$('#revisionlink').css('background'); + window.$('#revisionlink').css({background: 'lightyellow'}); scheduler.setTimeout(() => { - parent.parent.$('#revisionlink').css({background: originalBackground}); + window.$('#revisionlink').css({background: originalBackground}); }, 1000); - /* The parent.parent part of this is BAD and I feel bad.. It may break something */ - parent.parent.pad.collabClient.sendMessage({type: 'SAVE_REVISION'}); + + window.pad.collabClient.sendMessage({type: 'SAVE_REVISION'}); specialHandled = true; } if (!specialHandled && isTypeForSpecialKey && diff --git a/src/static/js/changesettracker.ts b/src/static/js/changesettracker.ts index 41d5c2668..a8d19945d 100644 --- a/src/static/js/changesettracker.ts +++ b/src/static/js/changesettracker.ts @@ -140,7 +140,7 @@ const makeChangesetTracker = (scheduler, apool, aceCallbacksProvider) => { toSubmit = compose(submittedChangeset, userChangeset, apool); } else { // Get my authorID - const authorId = parent.parent.pad.myUserInfo.userId; + const authorId = window.pad.myUserInfo.userId; // Sanitize authorship: Replace all author attributes with this user's author ID in case the // text was copied from another author. diff --git a/src/static/js/pluginfw/installer.ts b/src/static/js/pluginfw/installer.ts index effed768a..c605378e1 100644 --- a/src/static/js/pluginfw/installer.ts +++ b/src/static/js/pluginfw/installer.ts @@ -171,7 +171,7 @@ export const getAvailablePlugins = (maxCacheAge: number|false) => { return resolve(availablePlugins); } - await axios.get('https://static.etherpad.org/plugins.json', {headers}) + await axios.get(`${settings.updateServer}/plugins.json`, {headers}) .then((pluginsLoaded:AxiosResponse>) => { availablePlugins = pluginsLoaded.data; cacheTimestamp = nowTimestamp; diff --git a/src/static/js/scroll.ts b/src/static/js/scroll.ts index 95075d807..74c246243 100644 --- a/src/static/js/scroll.ts +++ b/src/static/js/scroll.ts @@ -15,7 +15,8 @@ class Scroll { // DOM reference this.outerWin = outerWin; this.doc = this.outerWin.contentDocument!; - this.rootDocument = parent.parent.document; + this.rootDocument = document; + console.log(this.rootDocument) } scrollWhenCaretIsInTheLastLineOfViewportWhenNecessary(rep: RepModel, isScrollableEvent: boolean, innerHeight: number) { @@ -112,7 +113,7 @@ class Scroll { }; _getEditorPositionTop() { - const editor = parent.document.getElementsByTagName('iframe'); + const editor = document.getElementsByTagName('iframe'); const editorPositionTop = editor[0].offsetTop; return editorPositionTop; };