diff --git a/package-lock.json b/package-lock.json index 5355bca5b..a74b7ee14 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,12 +16,13 @@ "electron-updater": "^5.3.0", "fix-path": "3.0.0", "fs-extra": "^10.0.1", - "go-ipfs": "0.17.0", + "go-ipfs": "^0.18.0", "i18next": "^21.8.14", "i18next-fs-backend": "1.1.4", "i18next-icu": "^2.0.3", "intl-messageformat": "^9.13.0", "ipfs-http-client": "56.0.2", + "ipfs-utils": "^9.0.10", "ipfsd-ctl": "10.0.6", "it-last": "^1.0.6", "multiaddr": "10.0.1", @@ -38,11 +39,10 @@ "dotenv": "^16.0.0", "electron": "^19.1.9", "electron-builder": "^23.6.0", - "electron-notarize-dmg": "1.0.0", "got": "^12.0.3", "ipfs-or-gateway": "^4.1.0", "npm-run-all": "^4.1.5", - "patch-package": "^6.4.7", + "patch-package": "^6.5.0", "playwright": "^1.24.0", "pre-commit": "^1.2.2", "proxyquire": "^2.1.3", @@ -1401,6 +1401,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, "dependencies": { "event-target-shim": "^5.0.0" }, @@ -1556,6 +1557,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/any-signal/-/any-signal-2.1.2.tgz", "integrity": "sha512-B+rDnWasMi/eWcajPcCWSlYc7muXOrcYrqgyzcdKisl2H/WTlQ0gip1KyQfr0ZlxJdsuWCj/LWwQm7fhyhRfIQ==", + "dev": true, "dependencies": { "abort-controller": "^3.0.0", "native-abort-controller": "^1.0.3" @@ -3116,48 +3118,6 @@ "node": ">=6" } }, - "node_modules/electron-notarize-dmg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/electron-notarize-dmg/-/electron-notarize-dmg-1.0.0.tgz", - "integrity": "sha512-/NGmml9iB2FnBY9PiLfmJ13qqppc/s3VvVjib/bwQRaUl9bEOVNlJ3DhaQG9TxahzvF4DSLI7lOASlD8FIEDbQ==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "fs-extra": "^8.1.0" - } - }, - "node_modules/electron-notarize-dmg/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/electron-notarize-dmg/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/electron-notarize-dmg/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/electron-osx-sign": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.6.0.tgz", @@ -4243,6 +4203,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true, "engines": { "node": ">=6" } @@ -4736,9 +4697,9 @@ } }, "node_modules/go-ipfs": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/go-ipfs/-/go-ipfs-0.17.0.tgz", - "integrity": "sha512-D3IUkTzLrnvgOs38HNqE8TK+sP7FDhdygVEzedsgwY1UIxPwxPFYuxRrdOcDHGQiwxHRORUHNudy2mEdxvHKkQ==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/go-ipfs/-/go-ipfs-0.18.0.tgz", + "integrity": "sha512-CFKHjN7nco2EUxQSdM7AQ3VzLASxwmP4RBDx8TeLqEgn5K2fjIYN7IHkna104UNpsVNhtzVBy0OObBczJWrLUA==", "hasInstallScript": true, "dependencies": { "cachedir": "^2.3.0", @@ -5962,12 +5923,12 @@ } }, "node_modules/ipfs-utils": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/ipfs-utils/-/ipfs-utils-9.0.2.tgz", - "integrity": "sha512-o0DjVfd1kcr09fAYMkSnZ56ZkfoAzZhFWkizG3/tL7svukZpqyGyRxNlF58F+hsrn/oL8ouAP9x+4Hdf8XM+hg==", + "version": "9.0.10", + "resolved": "https://registry.npmjs.org/ipfs-utils/-/ipfs-utils-9.0.10.tgz", + "integrity": "sha512-t7VjmVb8Q9HivPcq8f5WO1jFbDkXookvPCKzSynbT2URkhCzsG02qIA+QZ+jhYBKxw10Gv9KIQmc9rIIv+o9bQ==", "dependencies": { - "abort-controller": "^3.0.0", - "any-signal": "^2.1.0", + "any-signal": "^3.0.0", + "browser-readablestream-to-it": "^1.0.0", "buffer": "^6.0.1", "electron-fetch": "^1.7.2", "err-code": "^3.0.1", @@ -5976,14 +5937,22 @@ "it-glob": "^1.0.1", "it-to-stream": "^1.0.0", "merge-options": "^3.0.4", - "nanoid": "^3.1.20", - "native-abort-controller": "^1.0.3", + "nanoid": "^4.0.0", "native-fetch": "^3.0.0", "node-fetch": "https://registry.npmjs.org/@achingbrain/node-fetch/-/node-fetch-2.6.7.tgz", - "react-native-fetch-api": "^2.0.0", + "react-native-fetch-api": "^3.0.0", "stream-to-it": "^0.2.2" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=7.0.0" } }, + "node_modules/ipfs-utils/node_modules/any-signal": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/any-signal/-/any-signal-3.0.1.tgz", + "integrity": "sha512-xgZgJtKEa9YmDqXodIgl7Fl1C8yNXr8w6gXjqK3LW4GcEiYT+6AQfJSE/8SPsEpLLmcvbv8YU+qet94UewHxqg==" + }, "node_modules/ipfs-utils/node_modules/buffer": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", @@ -6007,6 +5976,17 @@ "ieee754": "^1.2.1" } }, + "node_modules/ipfs-utils/node_modules/nanoid": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.0.tgz", + "integrity": "sha512-IgBP8piMxe/gf73RTQx7hmnhwz0aaEXYakvqZyE302IXW3HyVNhdNGC+O2MwMAVhLEnvXlvKtGbtJf6wvHihCg==", + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^14 || ^16 || >=18" + } + }, "node_modules/ipfs-utils/node_modules/node-fetch": { "name": "@achingbrain/node-fetch", "version": "2.6.7", @@ -7413,6 +7393,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/native-abort-controller/-/native-abort-controller-1.0.4.tgz", "integrity": "sha512-zp8yev7nxczDJMoP6pDxyD20IU0T22eX8VwN2ztDccKvSZhRaV33yP1BGwKSZfXuqWUzsXopVFjBdau9OOAwMQ==", + "dev": true, "peerDependencies": { "abort-controller": "*" } @@ -8148,58 +8129,34 @@ } }, "node_modules/patch-package": { - "version": "6.4.7", - "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-6.4.7.tgz", - "integrity": "sha512-S0vh/ZEafZ17hbhgqdnpunKDfzHQibQizx9g8yEf5dcVk3KOflOfdufRXQX8CSEkyOQwuM/bNz1GwKvFj54kaQ==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-6.5.0.tgz", + "integrity": "sha512-tC3EqJmo74yKqfsMzELaFwxOAu6FH6t+FzFOsnWAuARm7/n2xB5AOeOueE221eM9gtMuIKMKpF9tBy/X2mNP0Q==", "dev": true, "dependencies": { "@yarnpkg/lockfile": "^1.1.0", - "chalk": "^2.4.2", + "chalk": "^4.1.2", "cross-spawn": "^6.0.5", "find-yarn-workspace-root": "^2.0.0", "fs-extra": "^7.0.1", "is-ci": "^2.0.0", "klaw-sync": "^6.0.0", - "minimist": "^1.2.0", + "minimist": "^1.2.6", "open": "^7.4.2", "rimraf": "^2.6.3", "semver": "^5.6.0", "slash": "^2.0.0", - "tmp": "^0.0.33" + "tmp": "^0.0.33", + "yaml": "^1.10.2" }, "bin": { "patch-package": "index.js" }, "engines": { + "node": ">=10", "npm": ">5" } }, - "node_modules/patch-package/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/patch-package/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/patch-package/node_modules/ci-info": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", @@ -8870,9 +8827,9 @@ "dev": true }, "node_modules/react-native-fetch-api": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/react-native-fetch-api/-/react-native-fetch-api-2.0.0.tgz", - "integrity": "sha512-GOA8tc1EVYLnHvma/TU9VTgLOyralO7eATRuCDchQveXW9Fr9vXygyq9iwqmM7YRZ8qRJfEt9xOS7OYMdJvRFw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/react-native-fetch-api/-/react-native-fetch-api-3.0.0.tgz", + "integrity": "sha512-g2rtqPjdroaboDKTsJCTlcmtw54E25OjyaunUP0anOZn4Fuo2IKs8BVfe02zVggA/UysbmfSnRJIqtNkAgggNA==", "dependencies": { "p-defer": "^3.0.0" } @@ -11067,6 +11024,15 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/yargs": { "version": "17.6.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", @@ -12255,6 +12221,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, "requires": { "event-target-shim": "^5.0.0" } @@ -12367,6 +12334,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/any-signal/-/any-signal-2.1.2.tgz", "integrity": "sha512-B+rDnWasMi/eWcajPcCWSlYc7muXOrcYrqgyzcdKisl2H/WTlQ0gip1KyQfr0ZlxJdsuWCj/LWwQm7fhyhRfIQ==", + "dev": true, "requires": { "abort-controller": "^3.0.0", "native-abort-controller": "^1.0.3" @@ -13591,44 +13559,6 @@ "encoding": "^0.1.13" } }, - "electron-notarize-dmg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/electron-notarize-dmg/-/electron-notarize-dmg-1.0.0.tgz", - "integrity": "sha512-/NGmml9iB2FnBY9PiLfmJ13qqppc/s3VvVjib/bwQRaUl9bEOVNlJ3DhaQG9TxahzvF4DSLI7lOASlD8FIEDbQ==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "fs-extra": "^8.1.0" - }, - "dependencies": { - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - } - } - }, "electron-osx-sign": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.6.0.tgz", @@ -14444,7 +14374,8 @@ "event-target-shim": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true }, "execa": { "version": "5.1.1", @@ -14842,9 +14773,9 @@ } }, "go-ipfs": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/go-ipfs/-/go-ipfs-0.17.0.tgz", - "integrity": "sha512-D3IUkTzLrnvgOs38HNqE8TK+sP7FDhdygVEzedsgwY1UIxPwxPFYuxRrdOcDHGQiwxHRORUHNudy2mEdxvHKkQ==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/go-ipfs/-/go-ipfs-0.18.0.tgz", + "integrity": "sha512-CFKHjN7nco2EUxQSdM7AQ3VzLASxwmP4RBDx8TeLqEgn5K2fjIYN7IHkna104UNpsVNhtzVBy0OObBczJWrLUA==", "requires": { "cachedir": "^2.3.0", "got": "^11.7.0", @@ -15792,12 +15723,12 @@ } }, "ipfs-utils": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/ipfs-utils/-/ipfs-utils-9.0.2.tgz", - "integrity": "sha512-o0DjVfd1kcr09fAYMkSnZ56ZkfoAzZhFWkizG3/tL7svukZpqyGyRxNlF58F+hsrn/oL8ouAP9x+4Hdf8XM+hg==", + "version": "9.0.10", + "resolved": "https://registry.npmjs.org/ipfs-utils/-/ipfs-utils-9.0.10.tgz", + "integrity": "sha512-t7VjmVb8Q9HivPcq8f5WO1jFbDkXookvPCKzSynbT2URkhCzsG02qIA+QZ+jhYBKxw10Gv9KIQmc9rIIv+o9bQ==", "requires": { - "abort-controller": "^3.0.0", - "any-signal": "^2.1.0", + "any-signal": "^3.0.0", + "browser-readablestream-to-it": "^1.0.0", "buffer": "^6.0.1", "electron-fetch": "^1.7.2", "err-code": "^3.0.1", @@ -15806,14 +15737,18 @@ "it-glob": "^1.0.1", "it-to-stream": "^1.0.0", "merge-options": "^3.0.4", - "nanoid": "^3.1.20", - "native-abort-controller": "^1.0.3", + "nanoid": "^4.0.0", "native-fetch": "^3.0.0", "node-fetch": "https://registry.npmjs.org/@achingbrain/node-fetch/-/node-fetch-2.6.7.tgz", - "react-native-fetch-api": "^2.0.0", + "react-native-fetch-api": "^3.0.0", "stream-to-it": "^0.2.2" }, "dependencies": { + "any-signal": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/any-signal/-/any-signal-3.0.1.tgz", + "integrity": "sha512-xgZgJtKEa9YmDqXodIgl7Fl1C8yNXr8w6gXjqK3LW4GcEiYT+6AQfJSE/8SPsEpLLmcvbv8YU+qet94UewHxqg==" + }, "buffer": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", @@ -15823,6 +15758,11 @@ "ieee754": "^1.2.1" } }, + "nanoid": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.0.tgz", + "integrity": "sha512-IgBP8piMxe/gf73RTQx7hmnhwz0aaEXYakvqZyE302IXW3HyVNhdNGC+O2MwMAVhLEnvXlvKtGbtJf6wvHihCg==" + }, "node-fetch": { "version": "https://registry.npmjs.org/@achingbrain/node-fetch/-/node-fetch-2.6.7.tgz", "integrity": "sha512-iTASGs+HTFK5E4ZqcMsHmeJ4zodyq8L38lZV33jwqcBJYoUt3HjN4+ot+O9/0b+ke8ddE7UgOtVuZN/OkV19/g==" @@ -16890,6 +16830,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/native-abort-controller/-/native-abort-controller-1.0.4.tgz", "integrity": "sha512-zp8yev7nxczDJMoP6pDxyD20IU0T22eX8VwN2ztDccKvSZhRaV33yP1BGwKSZfXuqWUzsXopVFjBdau9OOAwMQ==", + "dev": true, "requires": {} }, "native-fetch": { @@ -17449,46 +17390,27 @@ } }, "patch-package": { - "version": "6.4.7", - "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-6.4.7.tgz", - "integrity": "sha512-S0vh/ZEafZ17hbhgqdnpunKDfzHQibQizx9g8yEf5dcVk3KOflOfdufRXQX8CSEkyOQwuM/bNz1GwKvFj54kaQ==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-6.5.0.tgz", + "integrity": "sha512-tC3EqJmo74yKqfsMzELaFwxOAu6FH6t+FzFOsnWAuARm7/n2xB5AOeOueE221eM9gtMuIKMKpF9tBy/X2mNP0Q==", "dev": true, "requires": { "@yarnpkg/lockfile": "^1.1.0", - "chalk": "^2.4.2", + "chalk": "^4.1.2", "cross-spawn": "^6.0.5", "find-yarn-workspace-root": "^2.0.0", "fs-extra": "^7.0.1", "is-ci": "^2.0.0", "klaw-sync": "^6.0.0", - "minimist": "^1.2.0", + "minimist": "^1.2.6", "open": "^7.4.2", "rimraf": "^2.6.3", "semver": "^5.6.0", "slash": "^2.0.0", - "tmp": "^0.0.33" + "tmp": "^0.0.33", + "yaml": "^1.10.2" }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, "ci-info": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", @@ -17999,9 +17921,9 @@ "dev": true }, "react-native-fetch-api": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/react-native-fetch-api/-/react-native-fetch-api-2.0.0.tgz", - "integrity": "sha512-GOA8tc1EVYLnHvma/TU9VTgLOyralO7eATRuCDchQveXW9Fr9vXygyq9iwqmM7YRZ8qRJfEt9xOS7OYMdJvRFw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/react-native-fetch-api/-/react-native-fetch-api-3.0.0.tgz", + "integrity": "sha512-g2rtqPjdroaboDKTsJCTlcmtw54E25OjyaunUP0anOZn4Fuo2IKs8BVfe02zVggA/UysbmfSnRJIqtNkAgggNA==", "requires": { "p-defer": "^3.0.0" } @@ -19723,6 +19645,12 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, "yargs": { "version": "17.6.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", diff --git a/package.json b/package.json index d3d6f7fc6..fe4e41b7d 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "got": "^12.0.3", "ipfs-or-gateway": "^4.1.0", "npm-run-all": "^4.1.5", - "patch-package": "^6.4.7", + "patch-package": "^6.5.0", "playwright": "^1.24.0", "pre-commit": "^1.2.2", "proxyquire": "^2.1.3", @@ -76,12 +76,13 @@ "electron-updater": "^5.3.0", "fix-path": "3.0.0", "fs-extra": "^10.0.1", - "go-ipfs": "0.17.0", + "go-ipfs": "^0.18.0", "i18next": "^21.8.14", "i18next-fs-backend": "1.1.4", "i18next-icu": "^2.0.3", "intl-messageformat": "^9.13.0", "ipfs-http-client": "56.0.2", + "ipfs-utils": "^9.0.10", "ipfsd-ctl": "10.0.6", "it-last": "^1.0.6", "multiaddr": "10.0.1", diff --git a/patches/multiaddr+10.0.1.patch b/patches/multiaddr+10.0.1.patch new file mode 100644 index 000000000..0952214c9 --- /dev/null +++ b/patches/multiaddr+10.0.1.patch @@ -0,0 +1,34 @@ +diff --git a/node_modules/multiaddr/src/convert.js b/node_modules/multiaddr/src/convert.js +index c315201..80170c7 100644 +--- a/node_modules/multiaddr/src/convert.js ++++ b/node_modules/multiaddr/src/convert.js +@@ -51,6 +51,7 @@ Convert.toString = function convertToString (proto, buf) { + case 55: // dns6 + case 56: // dnsaddr + case 400: // unix ++ case 466: // certhash + case 777: // memory + return bytes2str(buf) + +@@ -84,6 +85,7 @@ Convert.toBytes = function convertToBytes (/** @type {string | number } */ proto + case 55: // dns6 + case 56: // dnsaddr + case 400: // unix ++ case 466: // certhash + case 777: // memory + return str2bytes(str) + +diff --git a/node_modules/multiaddr/src/protocols-table.js b/node_modules/multiaddr/src/protocols-table.js +index 3431af5..8939fb1 100644 +--- a/node_modules/multiaddr/src/protocols-table.js ++++ b/node_modules/multiaddr/src/protocols-table.js +@@ -60,6 +60,9 @@ Protocols.table = [ + [445, 296, 'onion3'], + [446, V, 'garlic64'], + [460, 0, 'quic'], ++ [461, 0, 'quic-v1'], ++ [465, 0, 'webtransport'], ++ [466, V, 'certhash'], + [477, 0, 'ws'], + [478, 0, 'wss'], + [479, 0, 'p2p-websocket-star'], diff --git a/src/daemon/config.js b/src/daemon/config.js index cfe3be002..110d55d6b 100644 --- a/src/daemon/config.js +++ b/src/daemon/config.js @@ -95,9 +95,6 @@ function applyDefaults (ipfsd) { config.Swarm = config.Swarm ?? {} config.Swarm.DisableNatPortMap = false config.Swarm.ConnMgr = config.Swarm.ConnMgr ?? {} - config.Swarm.ConnMgr.GracePeriod = '1m' - config.Swarm.ConnMgr.LowWater = 20 - config.Swarm.ConnMgr.HighWater = 40 config.Discovery = config.Discovery ?? {} config.Discovery.MDNS = config.Discovery.MDNS ?? {} @@ -153,7 +150,7 @@ const getGatewayPort = (config) => getHttpPort(config.Addresses.Gateway) */ function migrateConfig (ipfsd) { // Bump revision number when new migration rule is added - const REVISION = 4 + const REVISION = 5 const REVISION_KEY = 'daemonConfigRevision' const CURRENT_REVISION = store.get(REVISION_KEY, 0) @@ -223,6 +220,17 @@ function migrateConfig (ipfsd) { } } + if (CURRENT_REVISION < 5) { + if (config.Swarm && config.Swarm.ConnMgr) { + const { GracePeriod, LowWater, HighWater } = config.Swarm.ConnMgr + // Only touch config if user runs old defaults hardcoded in ipfs-desktop + if (GracePeriod === '1m' && LowWater === 20 && HighWater === 40) { + config.Swarm.ConnMgr = {} // remove overrides, use defaults from Kubo https://github.com/ipfs/kubo/pull/9483 + changed = true + } + } + } + if (changed) { try { writeConfigFile(ipfsd, config) diff --git a/test/e2e/launch.e2e.test.js b/test/e2e/launch.e2e.test.js index 960134b6a..2f4eba40f 100644 --- a/test/e2e/launch.e2e.test.js +++ b/test/e2e/launch.e2e.test.js @@ -167,7 +167,7 @@ test.describe.serial('Application launch', async () => { ]) }) - test('applies config migration (ConnMgr)', async () => { + test('applies config migration v4 (old custom ConnMgr)', async () => { // create preexisting, initialized repo and config const { repoPath, configPath, peerId: expectedId } = await makeRepository({ start: false }) @@ -181,11 +181,32 @@ test.describe.serial('Application launch', async () => { const { peerId } = await daemonReady(app) expect(peerId).toBe(expectedId) + const config = fs.readJsonSync(configPath) + // ensure app has migrated config to v5 instead of v4 + expect(config.Swarm.ConnMgr.GracePeriod).toEqual(undefined) + expect(config.Swarm.ConnMgr.LowWater).toEqual(undefined) + expect(config.Swarm.ConnMgr.HighWater).toEqual(undefined) + }) + + test('applies config migration v5 (switch to implicit defaults from Kubo 0.18)', async () => { + // create preexisting, initialized repo and config + const { repoPath, configPath, peerId: expectedId } = await makeRepository({ start: false }) + + const initConfig = fs.readJsonSync(configPath) + initConfig.Swarm.ConnMgr.GracePeriod = '1m' + initConfig.Swarm.ConnMgr.LowWater = 20 + initConfig.Swarm.ConnMgr.HighWater = 40 + fs.writeJsonSync(configPath, initConfig, { spaces: 2 }) + + const { app } = await startApp({ repoPath }) + const { peerId } = await daemonReady(app) + expect(peerId).toBe(expectedId) + const config = fs.readJsonSync(configPath) // ensure app has migrated config - expect(config.Swarm.ConnMgr.GracePeriod).toEqual('1m') - expect(config.Swarm.ConnMgr.LowWater).toEqual(20) - expect(config.Swarm.ConnMgr.HighWater).toEqual(40) + expect(config.Swarm.ConnMgr.GracePeriod).toEqual(undefined) + expect(config.Swarm.ConnMgr.LowWater).toEqual(undefined) + expect(config.Swarm.ConnMgr.HighWater).toEqual(undefined) }) test('starts with repository with "IPFS_PATH/api" file and no daemon running', async () => {