diff --git a/package-lock.json b/package-lock.json index ec1f56e..ecb73f2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,9 +19,9 @@ "fflate": "^0.8.2", "idb": "^8.0.3", "minimatch": "^10.0.2", - "octagonal-wheels": "^0.1.41", + "octagonal-wheels": "^0.1.42", "qrcode-generator": "^1.4.4", - "trystero": "github:vrtmrz/trystero#9e892a93ec14eeb57ce806d272fbb7c3935256d8", + "trystero": "^0.22.0", "xxhash-wasm-102": "npm:xxhash-wasm@^1.0.2" }, "devDependencies": { @@ -929,9 +929,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.27.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz", - "integrity": "sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", + "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -944,9 +944,9 @@ "license": "Apache-2.0" }, "node_modules/@chainsafe/as-sha256": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@chainsafe/as-sha256/-/as-sha256-0.4.2.tgz", - "integrity": "sha512-HJ8GZBRjLeWtRsAXf3EbNsNzmTGpzTFjfpSf4yHkLYC+E52DhT6hwz+7qpj6I/EmFzSUm5tYYvT9K8GZokLQCQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@chainsafe/as-sha256/-/as-sha256-1.2.0.tgz", + "integrity": "sha512-H2BNHQ5C3RS+H0ZvOdovK6GjFAyq5T6LClad8ivwj9Oaiy28uvdsGVS7gNJKuZmg0FGHAI+n7F0Qju6U0QkKDA==", "license": "Apache-2.0" }, "node_modules/@chainsafe/is-ip": { @@ -956,21 +956,21 @@ "license": "MIT" }, "node_modules/@chainsafe/libp2p-noise": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-noise/-/libp2p-noise-16.0.0.tgz", - "integrity": "sha512-8rqr8V1RD2/lVbfL0Bb//N8iPOFof11cUe8v8z8xJT7fUhCAbtCCSM4jbwI4HCnw0MvHLmcpmAfDCFRwcWzoeA==", + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-noise/-/libp2p-noise-16.1.3.tgz", + "integrity": "sha512-YLonKdIUFk/0keKRfzlmdrsObi8r0EaZC14Vjh3qdLy4+W7NaQAs1sSMt8aDP07oE78pa51NyejmQLKOnt7tOw==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/as-chacha20poly1305": "^0.1.0", - "@chainsafe/as-sha256": "^0.4.1", + "@chainsafe/as-sha256": "^1.0.0", "@libp2p/crypto": "^5.0.0", - "@libp2p/interface": "^2.0.0", + "@libp2p/interface": "^2.9.0", "@libp2p/peer-id": "^5.0.0", - "@noble/ciphers": "^0.6.0", + "@noble/ciphers": "^1.1.3", "@noble/curves": "^1.1.0", "@noble/hashes": "^1.3.1", - "it-length-prefixed": "^9.0.1", - "it-length-prefixed-stream": "^1.0.0", + "it-length-prefixed": "^10.0.1", + "it-length-prefixed-stream": "^2.0.1", "it-pair": "^2.0.6", "it-pipe": "^3.0.1", "it-stream-types": "^2.0.1", @@ -1731,9 +1731,9 @@ } }, "node_modules/@firebase/ai": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@firebase/ai/-/ai-2.2.1.tgz", - "integrity": "sha512-0VWlkGB18oDhwMqsgxpt/usMsyjnH3a7hTvQPcAbk7VhFg0QZMDX60mQKfLTFKrB5VwmlaIdVsSZznsTY2S0wA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@firebase/ai/-/ai-2.4.0.tgz", + "integrity": "sha512-YilG6AJ/nYpCKtxZyvEzBRAQv5bU+2tBOKX4Ps0rNNSdxN39aT37kGhjATbk1kq1z5Lq7mkWglw/ajAF3lOWUg==", "license": "Apache-2.0", "dependencies": { "@firebase/app-check-interop-types": "0.3.3", @@ -1751,9 +1751,9 @@ } }, "node_modules/@firebase/analytics": { - "version": "0.10.18", - "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.10.18.tgz", - "integrity": "sha512-iN7IgLvM06iFk8BeFoWqvVpRFW3Z70f+Qe2PfCJ7vPIgLPjHXDE774DhCT5Y2/ZU/ZbXPDPD60x/XPWEoZLNdg==", + "version": "0.10.19", + "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.10.19.tgz", + "integrity": "sha512-3wU676fh60gaiVYQEEXsbGS4HbF2XsiBphyvvqDbtC1U4/dO4coshbYktcCHq+HFaGIK07iHOh4pME0hEq1fcg==", "license": "Apache-2.0", "dependencies": { "@firebase/component": "0.7.0", @@ -1767,12 +1767,12 @@ } }, "node_modules/@firebase/analytics-compat": { - "version": "0.2.24", - "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.24.tgz", - "integrity": "sha512-jE+kJnPG86XSqGQGhXXYt1tpTbCTED8OQJ/PQ90SEw14CuxRxx/H+lFbWA1rlFtFSsTCptAJtgyRBwr/f00vsw==", + "version": "0.2.25", + "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.25.tgz", + "integrity": "sha512-fdzoaG0BEKbqksRDhmf4JoyZf16Wosrl0Y7tbZtJyVDOOwziE0vrFjmZuTdviL0yhak+Nco6rMsUUbkbD+qb6Q==", "license": "Apache-2.0", "dependencies": { - "@firebase/analytics": "0.10.18", + "@firebase/analytics": "0.10.19", "@firebase/analytics-types": "0.8.3", "@firebase/component": "0.7.0", "@firebase/util": "1.13.0", @@ -1789,9 +1789,9 @@ "license": "Apache-2.0" }, "node_modules/@firebase/app": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.14.2.tgz", - "integrity": "sha512-Ecx2ig/JLC9ayIQwZHqm41Tzlf4c1WUuFhFUZB1y+JIJqDRE579x7Uil7tKT8MwDpOPwrK5ZtpxdSsrfy/LF8Q==", + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.14.4.tgz", + "integrity": "sha512-pUxEGmR+uu21OG/icAovjlu1fcYJzyVhhT0rsCrn+zi+nHtrS43Bp9KPn9KGa4NMspCUE++nkyiqziuIvJdwzw==", "license": "Apache-2.0", "dependencies": { "@firebase/component": "0.7.0", @@ -1855,12 +1855,12 @@ "license": "Apache-2.0" }, "node_modules/@firebase/app-compat": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.5.2.tgz", - "integrity": "sha512-cn+U27GDaBS/irsbvrfnPZdcCzeZPRGKieSlyb7vV6LSOL6mdECnB86PgYjYGxSNg8+U48L/NeevTV1odU+mOQ==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.5.4.tgz", + "integrity": "sha512-T7ifGmb+awJEcp542Ek4HtNfBxcBrnuk1ggUdqyFEdsXHdq7+wVlhvE6YukTL7NS8hIkEfL7TMAPx/uCNqt30g==", "license": "Apache-2.0", "dependencies": { - "@firebase/app": "0.14.2", + "@firebase/app": "0.14.4", "@firebase/component": "0.7.0", "@firebase/logger": "0.5.0", "@firebase/util": "1.13.0", @@ -2016,15 +2016,15 @@ } }, "node_modules/@firebase/firestore": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-4.9.1.tgz", - "integrity": "sha512-PYVUTkhC9y8pydrqC3O1Oc4AMfkGSWdmuH9xgPJjiEbpUIUPQ4J8wJhyuash+o2u+axmyNRFP8ULNUKb+WzBzQ==", + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-4.9.2.tgz", + "integrity": "sha512-iuA5+nVr/IV/Thm0Luoqf2mERUvK9g791FZpUJV1ZGXO6RL2/i/WFJUj5ZTVXy5pRjpWYO+ZzPcReNrlilmztA==", "license": "Apache-2.0", "dependencies": { "@firebase/component": "0.7.0", "@firebase/logger": "0.5.0", "@firebase/util": "1.13.0", - "@firebase/webchannel-wrapper": "1.0.4", + "@firebase/webchannel-wrapper": "1.0.5", "@grpc/grpc-js": "~1.9.0", "@grpc/proto-loader": "^0.7.8", "tslib": "^2.1.0" @@ -2037,13 +2037,13 @@ } }, "node_modules/@firebase/firestore-compat": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.4.1.tgz", - "integrity": "sha512-BjalPTDh/K0vmR/M/DE148dpIqbcfvtFVTietbUDWDWYIl9YH0TTVp/EwXRbZwswPxyjx4GdHW61GB2AYVz1SQ==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.4.2.tgz", + "integrity": "sha512-cy7ov6SpFBx+PHwFdOOjbI7kH00uNKmIFurAn560WiPCZXy9EMnil1SOG7VF4hHZKdenC+AHtL4r3fNpirpm0w==", "license": "Apache-2.0", "dependencies": { "@firebase/component": "0.7.0", - "@firebase/firestore": "4.9.1", + "@firebase/firestore": "4.9.2", "@firebase/firestore-types": "3.0.3", "@firebase/util": "1.13.0", "tslib": "^2.1.0" @@ -2253,9 +2253,9 @@ "license": "Apache-2.0" }, "node_modules/@firebase/remote-config": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.6.6.tgz", - "integrity": "sha512-Yelp5xd8hM4NO1G1SuWrIk4h5K42mNwC98eWZ9YLVu6Z0S6hFk1mxotAdCRmH2luH8FASlYgLLq6OQLZ4nbnCA==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.7.0.tgz", + "integrity": "sha512-dX95X6WlW7QlgNd7aaGdjAIZUiQkgWgNS+aKNu4Wv92H1T8Ue/NDUjZHd9xb8fHxLXIHNZeco9/qbZzr500MjQ==", "license": "Apache-2.0", "dependencies": { "@firebase/component": "0.7.0", @@ -2269,15 +2269,15 @@ } }, "node_modules/@firebase/remote-config-compat": { - "version": "0.2.19", - "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.19.tgz", - "integrity": "sha512-y7PZAb0l5+5oIgLJr88TNSelxuASGlXyAKj+3pUc4fDuRIdPNBoONMHaIUa9rlffBR5dErmaD2wUBJ7Z1a513Q==", + "version": "0.2.20", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.20.tgz", + "integrity": "sha512-P/ULS9vU35EL9maG7xp66uljkZgcPMQOxLj3Zx2F289baTKSInE6+YIkgHEi1TwHoddC/AFePXPpshPlEFkbgg==", "license": "Apache-2.0", "dependencies": { "@firebase/component": "0.7.0", "@firebase/logger": "0.5.0", - "@firebase/remote-config": "0.6.6", - "@firebase/remote-config-types": "0.4.0", + "@firebase/remote-config": "0.7.0", + "@firebase/remote-config-types": "0.5.0", "@firebase/util": "1.13.0", "tslib": "^2.1.0" }, @@ -2286,9 +2286,9 @@ } }, "node_modules/@firebase/remote-config-types": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.4.0.tgz", - "integrity": "sha512-7p3mRE/ldCNYt8fmWMQ/MSGRmXYlJ15Rvs9Rk17t8p0WwZDbeK7eRmoI1tvCPaDzn9Oqh+yD6Lw+sGLsLg4kKg==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.5.0.tgz", + "integrity": "sha512-vI3bqLoF14L/GchtgayMiFpZJF+Ao3uR8WCde0XpYNkSokDpAKca2DxvcfeZv7lZUqkUwQPL2wD83d3vQ4vvrg==", "license": "Apache-2.0" }, "node_modules/@firebase/storage": { @@ -2351,9 +2351,9 @@ } }, "node_modules/@firebase/webchannel-wrapper": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-1.0.4.tgz", - "integrity": "sha512-6m8+P+dE/RPl4OPzjTxcTbQ0rGeRyeTvAi9KwIffBVCiAMKrfXfLZaqD1F+m8t4B5/Q5aHsMozOgirkH1F5oMQ==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-1.0.5.tgz", + "integrity": "sha512-+uGNN7rkfn41HLO0vekTFhTxk61eKa8mTpRGLO0QSqlQdKvIoGAvLp3ppdVIWbTGYJWM6Kp0iN+PjMIOcnVqTw==", "license": "Apache-2.0" }, "node_modules/@grpc/grpc-js": { @@ -2655,47 +2655,100 @@ "license": "MIT" }, "node_modules/@libp2p/bootstrap": { - "version": "11.0.39", - "resolved": "https://registry.npmjs.org/@libp2p/bootstrap/-/bootstrap-11.0.39.tgz", - "integrity": "sha512-OoReVQhJNPb9EzAWPd0O/GBMGVWmeylH/M6ohx5ONzHynmqwT7+f6TiDtDIGey8APdBURzBPgy6Z1gGU6lourQ==", + "version": "11.0.42", + "resolved": "https://registry.npmjs.org/@libp2p/bootstrap/-/bootstrap-11.0.42.tgz", + "integrity": "sha512-xe5LMZrXR2cnFcR69ax/cHqNCc8zwSvqDWOf82u/ifAsUae7M0eeoEVi15lfrPewWst4YPkTqYDkZSPWC65I3Q==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^2.10.3", - "@libp2p/interface-internal": "^2.3.15", - "@libp2p/peer-id": "^5.1.6", + "@libp2p/interface": "^2.10.4", + "@libp2p/interface-internal": "^2.3.17", + "@libp2p/peer-id": "^5.1.7", "@multiformats/mafmt": "^12.1.6", - "@multiformats/multiaddr": "^12.4.0", + "@multiformats/multiaddr": "^12.4.4", "main-event": "^1.0.1" } }, "node_modules/@libp2p/crypto": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@libp2p/crypto/-/crypto-5.1.8.tgz", - "integrity": "sha512-zkfWd2x12E0NbSRU52Wb0A5I9v5a1uLgCauR8uuTqnC21OVznXUGkMg4A2Xoj90M98lReDHo+Khc/hlQFbJ5Vw==", + "version": "5.1.13", + "resolved": "https://registry.npmjs.org/@libp2p/crypto/-/crypto-5.1.13.tgz", + "integrity": "sha512-8NN9cQP3jDn+p9+QE9ByiEoZ2lemDFf/unTgiKmS3JF93ph240EUVdbCyyEgOMfykzb0okTM4gzvwfx9osJebQ==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^2.11.0", - "@noble/curves": "^1.9.1", - "@noble/hashes": "^1.8.0", - "multiformats": "^13.3.6", - "protons-runtime": "^5.5.0", + "@libp2p/interface": "^3.1.0", + "@noble/curves": "^2.0.1", + "@noble/hashes": "^2.0.1", + "multiformats": "^13.4.0", + "protons-runtime": "^5.6.0", "uint8arraylist": "^2.4.8", "uint8arrays": "^5.1.0" } }, - "node_modules/@libp2p/identify": { - "version": "3.0.33", - "resolved": "https://registry.npmjs.org/@libp2p/identify/-/identify-3.0.33.tgz", - "integrity": "sha512-cwMwXcQC4h1msBayTBS49yPwnoJUjXcxMm2orxAb96gVbzGW7h+OIFikZR23yOcDEcOPO8wHTurL1SXrr3O/SQ==", + "node_modules/@libp2p/crypto/node_modules/@libp2p/interface": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-3.1.0.tgz", + "integrity": "sha512-RE7/XyvC47fQBe1cHxhMvepYKa5bFCUyFrrpj8PuM0E7JtzxU7F+Du5j4VXbg2yLDcToe0+j8mB7jvwE2AThYw==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/crypto": "^5.1.5", - "@libp2p/interface": "^2.10.3", - "@libp2p/interface-internal": "^2.3.15", - "@libp2p/peer-id": "^5.1.6", - "@libp2p/peer-record": "^8.0.31", - "@libp2p/utils": "^6.6.6", - "@multiformats/multiaddr": "^12.4.0", + "@multiformats/dns": "^1.0.6", + "@multiformats/multiaddr": "^13.0.1", + "main-event": "^1.0.1", + "multiformats": "^13.4.0", + "progress-events": "^1.0.1", + "uint8arraylist": "^2.4.8" + } + }, + "node_modules/@libp2p/crypto/node_modules/@multiformats/multiaddr": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@chainsafe/is-ip": "^2.0.1", + "multiformats": "^13.0.0", + "uint8-varint": "^2.0.1", + "uint8arrays": "^5.0.0" + } + }, + "node_modules/@libp2p/crypto/node_modules/@noble/curves": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-2.0.1.tgz", + "integrity": "sha512-vs1Az2OOTBiP4q0pwjW5aF0xp9n4MxVrmkFBxc6EKZc6ddYx5gaZiAsZoq0uRRXWbi3AT/sBqn05eRPtn1JCPw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "2.0.1" + }, + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@libp2p/crypto/node_modules/@noble/hashes": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.0.1.tgz", + "integrity": "sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==", + "license": "MIT", + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@libp2p/identify": { + "version": "3.0.36", + "resolved": "https://registry.npmjs.org/@libp2p/identify/-/identify-3.0.36.tgz", + "integrity": "sha512-swpgKzZ8SihHeguIEf3LxYlEcD7C9cSB7DE1XGTuCxNXkXksv2ieQTSiJ2xURMRw0nwe0wEGS5vzmshJh3kzrA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/crypto": "^5.1.6", + "@libp2p/interface": "^2.10.4", + "@libp2p/interface-internal": "^2.3.17", + "@libp2p/peer-id": "^5.1.7", + "@libp2p/peer-record": "^8.0.33", + "@libp2p/utils": "^6.7.0", + "@multiformats/multiaddr": "^12.4.4", "@multiformats/multiaddr-matcher": "^1.7.2", "it-drain": "^3.0.9", "it-parallel": "^3.0.11", @@ -2748,13 +2801,13 @@ } }, "node_modules/@libp2p/mplex": { - "version": "11.0.39", - "resolved": "https://registry.npmjs.org/@libp2p/mplex/-/mplex-11.0.39.tgz", - "integrity": "sha512-zda6ksYkOT3gdq7x1gBQip8xEB8p/uXZ5VBqsYNn9OVp+L2VBm3QbXK3Jw3P4VtZ79quK8IPhL26Yz//Edmrvw==", + "version": "11.0.42", + "resolved": "https://registry.npmjs.org/@libp2p/mplex/-/mplex-11.0.42.tgz", + "integrity": "sha512-06HXNQS02GOEx1796Nsk640tIHwnHtJvd4TWnslUEeVi7SxLA8LqCttT7qJ2P3Y1tmm3E2a74kxtHqaJDqypig==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^2.10.3", - "@libp2p/utils": "^6.6.6", + "@libp2p/interface": "^2.10.4", + "@libp2p/utils": "^6.7.0", "it-pipe": "^3.0.1", "it-pushable": "^3.2.3", "it-stream-types": "^2.0.2", @@ -2780,60 +2833,6 @@ "uint8arrays": "^5.1.0" } }, - "node_modules/@libp2p/multistream-select/node_modules/it-byte-stream": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/it-byte-stream/-/it-byte-stream-2.0.3.tgz", - "integrity": "sha512-h7FFcn4DWiWsJw1dCJhuPdiY8cGi1z8g4aLAfFspTaJbwQxvEMlEBFG/f8lIVGwM8YK26ClM4/9lxLVhF33b8g==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "abort-error": "^1.0.1", - "it-queueless-pushable": "^2.0.0", - "it-stream-types": "^2.0.2", - "race-signal": "^1.1.3", - "uint8arraylist": "^2.4.8" - } - }, - "node_modules/@libp2p/multistream-select/node_modules/it-length-prefixed": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/it-length-prefixed/-/it-length-prefixed-10.0.1.tgz", - "integrity": "sha512-BhyluvGps26u9a7eQIpOI1YN7mFgi8lFwmiPi07whewbBARKAG9LE09Odc8s1Wtbt2MB6rNUrl7j9vvfXTJwdQ==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "it-reader": "^6.0.1", - "it-stream-types": "^2.0.1", - "uint8-varint": "^2.0.1", - "uint8arraylist": "^2.0.0", - "uint8arrays": "^5.0.1" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/@libp2p/multistream-select/node_modules/it-length-prefixed-stream": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/it-length-prefixed-stream/-/it-length-prefixed-stream-2.0.3.tgz", - "integrity": "sha512-Ns3jNFy2mcFnV59llCYitJnFHapg8wIcOsWkEaAwOkG9v4HBCk24nze/zGDQjiJdDTyFXTT5GOY3M/uaksot3w==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "abort-error": "^1.0.1", - "it-byte-stream": "^2.0.0", - "it-stream-types": "^2.0.2", - "uint8-varint": "^2.0.4", - "uint8arraylist": "^2.4.8" - } - }, - "node_modules/@libp2p/multistream-select/node_modules/it-queueless-pushable": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/it-queueless-pushable/-/it-queueless-pushable-2.0.2.tgz", - "integrity": "sha512-2BqIt7XvDdgEgudLAdJkdseAwbVSBc0yAd8yPVHrll4eBuJPWIj9+8C3OIxzEKwhswLtd3bi+yLrzgw9gCyxMA==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "abort-error": "^1.0.1", - "p-defer": "^4.0.1", - "race-signal": "^1.1.3" - } - }, "node_modules/@libp2p/peer-collections": { "version": "6.0.35", "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-6.0.35.tgz", @@ -2899,17 +2898,17 @@ } }, "node_modules/@libp2p/ping": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@libp2p/ping/-/ping-2.0.1.tgz", - "integrity": "sha512-KWbzFRDBJyZDd8FziW1N9UKHBcOm2RIVyX7sQh1tFeJ0XpWkNT3IcljOG1STikXTuCXIZmMgan/LrZ+SvJSIGw==", + "version": "2.0.35", + "resolved": "https://registry.npmjs.org/@libp2p/ping/-/ping-2.0.35.tgz", + "integrity": "sha512-f9z5drqjaRRTu1dK/3gshtth/xdE2YwZ6qhBUpqLX4x5s3k/X8ds4aRx2lzvznQMmOMaT8e1VEjhbfFlcJmUOA==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/crypto": "^5.0.1", - "@libp2p/interface": "^2.0.1", - "@libp2p/interface-internal": "^2.0.1", - "@multiformats/multiaddr": "^12.2.3", - "it-first": "^3.0.6", - "it-pipe": "^3.0.1", + "@libp2p/crypto": "^5.1.6", + "@libp2p/interface": "^2.10.4", + "@libp2p/interface-internal": "^2.3.17", + "@multiformats/multiaddr": "^12.4.4", + "it-byte-stream": "^2.0.2", + "main-event": "^1.0.1", "uint8arrays": "^5.1.0" } }, @@ -2945,14 +2944,14 @@ } }, "node_modules/@libp2p/websockets": { - "version": "9.2.14", - "resolved": "https://registry.npmjs.org/@libp2p/websockets/-/websockets-9.2.14.tgz", - "integrity": "sha512-7KeylINdxW76fFkKuM7/axxz8J3kHlNgrlcQYfrwZSj7JDZG19IqJJZmVOcQBa6RgAnPjjz2F1TFFWQhvSIGJA==", + "version": "9.2.16", + "resolved": "https://registry.npmjs.org/@libp2p/websockets/-/websockets-9.2.16.tgz", + "integrity": "sha512-jD96ClKeaZvTs+YyGJxOOQSWVe9e9SHmacJ9uE9dqWZjCbPICdCJnOj2pLg258WxVrc+/MRFKSHE/v5f2ZJGCA==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^2.10.3", - "@libp2p/utils": "^6.6.6", - "@multiformats/multiaddr": "^12.4.0", + "@libp2p/interface": "^2.10.4", + "@libp2p/utils": "^6.7.0", + "@multiformats/multiaddr": "^12.4.4", "@multiformats/multiaddr-matcher": "^1.7.2", "@multiformats/multiaddr-to-uri": "^11.0.0", "@types/ws": "^8.18.1", @@ -2966,16 +2965,15 @@ } }, "node_modules/@multiformats/dns": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@multiformats/dns/-/dns-1.0.6.tgz", - "integrity": "sha512-nt/5UqjMPtyvkG9BQYdJ4GfLK3nMqGpFZOzf4hAmIa0sJh2LlS9YKXZ4FgwBDsaHvzZqR/rUFIywIc7pkHNNuw==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@multiformats/dns/-/dns-1.0.10.tgz", + "integrity": "sha512-6X200ceQLns0b/CU0S/So16tGjB5eIXHJ1xvJMPoWaKFHWSgfpW2EhkWJrqap4U3+c37zcowVR0ToPXeYEL7Vw==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@types/dns-packet": "^5.6.5", "buffer": "^6.0.3", "dns-packet": "^5.6.1", "hashlru": "^2.3.0", - "p-queue": "^8.0.1", + "p-queue": "^9.0.0", "progress-events": "^1.0.0", "uint8arrays": "^5.0.2" } @@ -3016,27 +3014,30 @@ } }, "node_modules/@multiformats/multiaddr-to-uri": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr-to-uri/-/multiaddr-to-uri-11.0.0.tgz", - "integrity": "sha512-9RNmlIGwZbBLsHekT50dbt4o4u8Iciw9kGjv+WHiGxQdsJ6xKKjU1+C0Vbas6RilMbaVOAOnEyfNcXbUmTkLxQ==", + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr-to-uri/-/multiaddr-to-uri-11.0.2.tgz", + "integrity": "sha512-SiLFD54zeOJ0qMgo9xv1Tl9O5YktDKAVDP4q4hL16mSq4O4sfFNagNADz8eAofxd6TfQUzGQ3TkRRG9IY2uHRg==", "license": "Apache-2.0 OR MIT", "dependencies": { "@multiformats/multiaddr": "^12.3.0" } }, "node_modules/@noble/ciphers": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.6.0.tgz", - "integrity": "sha512-mIbq/R9QXk5/cTfESb1OKtyFnk7oc1Om/8onA1158K9/OZUQFDEVy55jVTato+xmp3XX6F6Qh0zz0Nc1AxAlRQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz", + "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==", "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, "funding": { "url": "https://paulmillr.com/funding/" } }, "node_modules/@noble/curves": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.2.tgz", - "integrity": "sha512-HxngEd2XUcg9xi20JkwlLCtYwfoFw4JGkuZpT+WlsPD4gB/cxkvTD8fSsoAnphGZhFdZYKeQIPCuFlWPm1uE0g==", + "version": "1.9.7", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz", + "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==", "license": "MIT", "dependencies": { "@noble/hashes": "1.8.0" @@ -4283,21 +4284,23 @@ } }, "node_modules/@supabase/auth-js": { - "version": "2.70.0", - "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.70.0.tgz", - "integrity": "sha512-BaAK/tOAZFJtzF1sE3gJ2FwTjLf4ky3PSvcvLGEgEmO4BSBkwWKu8l67rLLIBZPDnCyV7Owk2uPyKHa0kj5QGg==", + "version": "2.77.0", + "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.77.0.tgz", + "integrity": "sha512-IRxyj2l46EutSX7AbGkHA7LSmrgqnXjPfKouBlGT6NqS1YOm+jMMwfdhf6zP5EZ4giUfdt2u+yHIBgyXU/LEtg==", "license": "MIT", "dependencies": { - "@supabase/node-fetch": "^2.6.14" + "@supabase/node-fetch": "2.6.15", + "tslib": "2.8.1" } }, "node_modules/@supabase/functions-js": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.4.4.tgz", - "integrity": "sha512-WL2p6r4AXNGwop7iwvul2BvOtuJ1YQy8EbOd0dhG1oN1q8el/BIRSFCFnWAMM/vJJlHWLi4ad22sKbKr9mvjoA==", + "version": "2.77.0", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.77.0.tgz", + "integrity": "sha512-MxNW3YoQysbiVEiLAozCTqk1urswtVjAZggeZ5Sw+vJ+u1EvFNmTnirzwTj7M8XjTOMmorheruPmNtfHEwudvw==", "license": "MIT", "dependencies": { - "@supabase/node-fetch": "^2.6.14" + "@supabase/node-fetch": "2.6.15", + "tslib": "2.8.1" } }, "node_modules/@supabase/node-fetch": { @@ -4313,47 +4316,50 @@ } }, "node_modules/@supabase/postgrest-js": { - "version": "1.19.4", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.19.4.tgz", - "integrity": "sha512-O4soKqKtZIW3olqmbXXbKugUtByD2jPa8kL2m2c1oozAO11uCcGrRhkZL0kVxjBLrXHE0mdSkFsMj7jDSfyNpw==", + "version": "2.77.0", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-2.77.0.tgz", + "integrity": "sha512-Ly8C48x875JcUXBdML7SPRjO1Bpmjo6Sax/Tz4Ij6YU5paCrGKxEYDBVLP2eHKkQvf+LQ+GIbRFF1DorRvyfwQ==", "license": "MIT", "dependencies": { - "@supabase/node-fetch": "^2.6.14" + "@supabase/node-fetch": "2.6.15", + "tslib": "2.8.1" } }, "node_modules/@supabase/realtime-js": { - "version": "2.11.10", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.11.10.tgz", - "integrity": "sha512-SJKVa7EejnuyfImrbzx+HaD9i6T784khuw1zP+MBD7BmJYChegGxYigPzkKX8CK8nGuDntmeSD3fvriaH0EGZA==", + "version": "2.77.0", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.77.0.tgz", + "integrity": "sha512-Ycv2VZ8yTjvlR2NQecGJUlP0Dh4LhF1Y1oZ3IMQcjjTbDriWSQgfc9HSLIQUaY/eTdtfXfyVKOGE+tieWneV8Q==", "license": "MIT", "dependencies": { - "@supabase/node-fetch": "^2.6.13", + "@supabase/node-fetch": "2.6.15", "@types/phoenix": "^1.6.6", "@types/ws": "^8.18.1", + "tslib": "2.8.1", "ws": "^8.18.2" } }, "node_modules/@supabase/storage-js": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.7.1.tgz", - "integrity": "sha512-asYHcyDR1fKqrMpytAS1zjyEfvxuOIp1CIXX7ji4lHHcJKqyk+sLl/Vxgm4sN6u8zvuUtae9e4kDxQP2qrwWBA==", + "version": "2.77.0", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.77.0.tgz", + "integrity": "sha512-4+OpVA4U0C4HM1QuINlgjqFxnRsmqPnuurTDN4m6nRanafuqQQ/UtMjdUU57iygBo70IGBlBefZ8gGNWzD1sLg==", "license": "MIT", "dependencies": { - "@supabase/node-fetch": "^2.6.14" + "@supabase/node-fetch": "2.6.15", + "tslib": "2.8.1" } }, "node_modules/@supabase/supabase-js": { - "version": "2.50.0", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.50.0.tgz", - "integrity": "sha512-M1Gd5tPaaghYZ9OjeO1iORRqbTWFEz/cF3pPubRnMPzA+A8SiUsXXWDP+DWsASZcjEcVEcVQIAF38i5wrijYOg==", + "version": "2.77.0", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.77.0.tgz", + "integrity": "sha512-s6OQ8RZ0ioQCwVDh2Tv502XaUQCuRbbjpujYJB1h0JWELRsqjLDsgB5kZUkETPgtTAjJk7z97YPUsRg80PohfA==", "license": "MIT", "dependencies": { - "@supabase/auth-js": "2.70.0", - "@supabase/functions-js": "2.4.4", + "@supabase/auth-js": "2.77.0", + "@supabase/functions-js": "2.77.0", "@supabase/node-fetch": "2.6.15", - "@supabase/postgrest-js": "1.19.4", - "@supabase/realtime-js": "2.11.10", - "@supabase/storage-js": "2.7.1" + "@supabase/postgrest-js": "2.77.0", + "@supabase/realtime-js": "2.77.0", + "@supabase/storage-js": "2.77.0" } }, "node_modules/@sveltejs/acorn-typescript": { @@ -4443,15 +4449,6 @@ "integrity": "sha512-xFdR6tkm0MWvBfO8xXCSsinYxHcqkQUlcHeSpMC2ukzOb6lwQAfDmW+Qt0AvlGd8HpsS28qKsB+oPeJn9I39jg==", "dev": true }, - "node_modules/@types/dns-packet": { - "version": "5.6.5", - "resolved": "https://registry.npmjs.org/@types/dns-packet/-/dns-packet-5.6.5.tgz", - "integrity": "sha512-qXOC7XLOEe43ehtWJCMnQXvgcIpv6rPmQ1jXT98Ad8A3TB1Ue50jsCbSSSyuazScEuZ/Q026vHbrOTVkmwA+7Q==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/estree": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", @@ -4472,6 +4469,21 @@ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, + "node_modules/@types/lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==", + "license": "MIT" + }, + "node_modules/@types/lodash.debounce": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/lodash.debounce/-/lodash.debounce-4.0.9.tgz", + "integrity": "sha512-Ma5JcgTREwpLRwMM+XwBR7DaWe96nC38uCBDFKZWbNKD+osjVzdpnUSwBcqCptrp16sSOLBAUb50Car5I0TCsQ==", + "license": "MIT", + "dependencies": { + "@types/lodash": "*" + } + }, "node_modules/@types/ms": { "version": "0.7.31", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", @@ -4675,9 +4687,9 @@ } }, "node_modules/@types/readable-stream": { - "version": "4.0.21", - "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.21.tgz", - "integrity": "sha512-19eKVv9tugr03IgfXlA9UVUVRbW6IuqRO5B92Dl4a6pT7K8uaGrNS0GkxiZD0BOk6PLuXl5FhWl//eX/pzYdTQ==", + "version": "4.0.22", + "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.22.tgz", + "integrity": "sha512-/FFhJpfCLAPwAcN3mFycNUa77ddnr8jTgF5VmSNetaemWB2cIlfCA9t0YTM3JAT0wOcv8D4tjPo7pkDhK3EJIg==", "license": "MIT", "dependencies": { "@types/node": "*" @@ -4987,37 +4999,18 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@waku/discovery": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@waku/discovery/-/discovery-0.0.8.tgz", - "integrity": "sha512-Yh1pNlGasRuq7LHB5bfa5VUkvfy4vT2xWfOOYU8LD6r+5w4WIkBI18hDrOQlGtXHdNLfcoTQK7YWqqEPFNNxlg==", + "node_modules/@waku/core": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@waku/core/-/core-0.0.39.tgz", + "integrity": "sha512-Vgb52md4GOzM5z9xfULzjN2tvVHKszFmj5zc2mVDoIgySH4cFBgDTHtVtGEwrFRFWadWYKBtpKBdmG3X+W7SNA==", "license": "MIT OR Apache-2.0", "dependencies": { - "@waku/core": "0.0.35", - "@waku/enr": "0.0.29", - "@waku/interfaces": "0.0.30", - "@waku/proto": "^0.0.10", - "@waku/utils": "0.0.23", - "debug": "^4.3.4", - "dns-over-http-resolver": "^3.0.8", - "hi-base32": "^0.5.1", - "uint8arrays": "^5.0.1" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/@waku/discovery/node_modules/@waku/core": { - "version": "0.0.35", - "resolved": "https://registry.npmjs.org/@waku/core/-/core-0.0.35.tgz", - "integrity": "sha512-UbAgBznjewZed4ZAd30BUTq6OsiqTgVQkFD1PnJxw+K4hn0AUKHjPYRTYOzkJvxg7nXd7Y6LCZ7s6XeujwrR4w==", - "license": "MIT OR Apache-2.0", - "dependencies": { - "@libp2p/ping": "2.0.1", - "@waku/enr": "^0.0.29", - "@waku/interfaces": "0.0.30", - "@waku/proto": "0.0.10", - "@waku/utils": "0.0.23", + "@libp2p/ping": "2.0.35", + "@noble/hashes": "^1.3.2", + "@waku/enr": "^0.0.33", + "@waku/interfaces": "0.0.34", + "@waku/proto": "0.0.14", + "@waku/utils": "0.0.27", "debug": "^4.3.4", "it-all": "^3.0.4", "it-length-prefixed": "^9.0.4", @@ -5026,11 +5019,11 @@ "uuid": "^9.0.0" }, "engines": { - "node": ">=20" + "node": ">=22" }, "peerDependencies": { "@multiformats/multiaddr": "^12.0.0", - "libp2p": "2.1.8" + "libp2p": "2.8.11" }, "peerDependenciesMeta": { "@multiformats/multiaddr": { @@ -5041,43 +5034,24 @@ } } }, - "node_modules/@waku/discovery/node_modules/libp2p": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/libp2p/-/libp2p-2.1.8.tgz", - "integrity": "sha512-OzUUgAs6983lP2FDqc3oABeUAyvd3iJ/BlYjwmjddpUwQO6gemuJFpWujagj2Vtj+oPosGrrPGWqv+WPnTkHUA==", + "node_modules/@waku/core/node_modules/it-length-prefixed": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/it-length-prefixed/-/it-length-prefixed-9.1.1.tgz", + "integrity": "sha512-O88nBweT6M9ozsmok68/auKH7ik/slNM4pYbM9lrfy2z5QnpokW5SlrepHZDKtN71llhG2sZvd6uY4SAl+lAQg==", "license": "Apache-2.0 OR MIT", - "optional": true, - "peer": true, "dependencies": { - "@libp2p/crypto": "^5.0.5", - "@libp2p/interface": "^2.1.3", - "@libp2p/interface-internal": "^2.0.8", - "@libp2p/logger": "^5.1.1", - "@libp2p/multistream-select": "^6.0.6", - "@libp2p/peer-collections": "^6.0.8", - "@libp2p/peer-id": "^5.0.5", - "@libp2p/peer-store": "^11.0.8", - "@libp2p/utils": "^6.1.1", - "@multiformats/dns": "^1.0.6", - "@multiformats/multiaddr": "^12.2.3", - "@multiformats/multiaddr-matcher": "^1.2.1", - "any-signal": "^4.1.1", - "datastore-core": "^10.0.0", - "interface-datastore": "^8.3.0", - "it-byte-stream": "^1.0.12", - "it-merge": "^3.0.5", - "it-parallel": "^3.0.7", - "merge-options": "^3.0.4", - "multiformats": "^13.1.0", - "p-defer": "^4.0.1", - "p-retry": "^6.2.0", - "progress-events": "^1.0.0", - "race-event": "^1.3.0", - "race-signal": "^1.0.2", - "uint8arrays": "^5.1.0" + "it-reader": "^6.0.1", + "it-stream-types": "^2.0.1", + "uint8-varint": "^2.0.1", + "uint8arraylist": "^2.0.0", + "uint8arrays": "^5.0.1" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=7.0.0" } }, - "node_modules/@waku/discovery/node_modules/uuid": { + "node_modules/@waku/core/node_modules/uuid": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", @@ -5090,23 +5064,43 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/@waku/discovery": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/@waku/discovery/-/discovery-0.0.12.tgz", + "integrity": "sha512-4ItzLMQA79xveu5I9ymx3Q1A/Aj0fGjdi8TnPnb9xnm2O927w71efnkxmHo3rwATEYonXiB34NpMN2ecAp1enA==", + "license": "MIT OR Apache-2.0", + "dependencies": { + "@waku/core": "0.0.39", + "@waku/enr": "0.0.33", + "@waku/interfaces": "0.0.34", + "@waku/proto": "^0.0.14", + "@waku/utils": "0.0.27", + "debug": "^4.3.4", + "dns-over-http-resolver": "^3.0.8", + "hi-base32": "^0.5.1", + "uint8arrays": "^5.0.1" + }, + "engines": { + "node": ">=22" + } + }, "node_modules/@waku/enr": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@waku/enr/-/enr-0.0.29.tgz", - "integrity": "sha512-q7vQmD4tDi5o4o6VNDhSLLzUcZNQxbs4whbgz6L+M2swPsQ6vS3dS2PNmR3qt3ixvHUpEwWGEfVp9meMBxvVBA==", + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/@waku/enr/-/enr-0.0.33.tgz", + "integrity": "sha512-OVZoCXc9Lto2tUfo+iSqQ61pmRm/QikYSJWc3InKmsL3qtfpMShiChK/X/PafwdRFVA28b46itm++KUqMjGi+A==", "license": "MIT OR Apache-2.0", "dependencies": { "@ethersproject/rlp": "^5.7.0", - "@libp2p/crypto": "^5.0.1", - "@libp2p/peer-id": "^5.0.1", + "@libp2p/crypto": "5.1.6", + "@libp2p/peer-id": "5.1.7", "@multiformats/multiaddr": "^12.0.0", "@noble/secp256k1": "^1.7.1", - "@waku/utils": "0.0.23", + "@waku/utils": "0.0.27", "debug": "^4.3.4", "js-sha3": "^0.9.2" }, "engines": { - "node": ">=20" + "node": ">=22" }, "peerDependencies": { "@multiformats/multiaddr": "^12.0.0" @@ -5117,163 +5111,196 @@ } } }, - "node_modules/@waku/interfaces": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/@waku/interfaces/-/interfaces-0.0.30.tgz", - "integrity": "sha512-2cR8+u0CePmUFBB4vVL1zw403Rki5hK+7rKQH0WikDT4SD4lJTdMV4j3q3+YBfPTsMJrFCVFhLcqpeBADgavAw==", - "license": "MIT OR Apache-2.0", + "node_modules/@waku/enr/node_modules/@libp2p/crypto": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/@libp2p/crypto/-/crypto-5.1.6.tgz", + "integrity": "sha512-hCNDInAsjfFTOr1ZlVTVuRKpkGEbR1GC+cDbmn2Vslwd0dHZHqhKv5ye7l6NZaiNUxxqUCVmqvJIWqVLuTPDdg==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "@waku/proto": "^0.0.10" - }, - "engines": { - "node": ">=20" + "@libp2p/interface": "^2.10.4", + "@noble/curves": "^1.9.1", + "@noble/hashes": "^1.8.0", + "multiformats": "^13.3.6", + "protons-runtime": "^5.5.0", + "uint8arraylist": "^2.4.8", + "uint8arrays": "^5.1.0" } }, - "node_modules/@waku/message-hash": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/@waku/message-hash/-/message-hash-0.1.19.tgz", - "integrity": "sha512-fl+qky3MQK8l3HTT5wq23NcdYFYNqVcUVwBblX9/IArcDlDNjEEdK68K3n8rFWxBBd2JAK0RxU7MMkLiK3vWUA==", - "license": "MIT OR Apache-2.0", + "node_modules/@waku/enr/node_modules/@libp2p/peer-id": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-5.1.7.tgz", + "integrity": "sha512-KBT8Edx/Sqxj0vKe5mPM2PQx06VDmGzx2BZ1M+LiDAM94q9Sag4tyaUugHyTrJKGG8V+7lx1Fz46kfbezuwR9g==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "@noble/hashes": "^1.3.2", - "@waku/utils": "0.0.23" - }, + "@libp2p/crypto": "^5.1.6", + "@libp2p/interface": "^2.10.4", + "multiformats": "^13.3.6", + "uint8arrays": "^5.1.0" + } + }, + "node_modules/@waku/interfaces": { + "version": "0.0.34", + "resolved": "https://registry.npmjs.org/@waku/interfaces/-/interfaces-0.0.34.tgz", + "integrity": "sha512-15+SOfr8cKk5J2ukSucy/T6j23jIudRt1hr/N09YaNUvQ19iXofjne5MU/P8otmgP8daedCijCagRB0rwoHKKQ==", + "license": "MIT OR Apache-2.0", "engines": { - "node": ">=20" + "node": ">=22" } }, "node_modules/@waku/proto": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/@waku/proto/-/proto-0.0.10.tgz", - "integrity": "sha512-dgBOjwRtduZSHxmr2IqDfrzgDnog8f/qiseLV39W1WNDkVLqpNT7K2bPDPz5/e2e7EtVtTAzbGPZPakOswn5FQ==", + "version": "0.0.14", + "resolved": "https://registry.npmjs.org/@waku/proto/-/proto-0.0.14.tgz", + "integrity": "sha512-8zKVHrKzzKQfZBVnpSmJ6G8H1Zd4Gqms1tj3L6K2WCE/NQDR8wJtFwziab3dJ/5rKUTjfPAWFJ57RN97ltzxGA==", "license": "MIT OR Apache-2.0", "dependencies": { "protons-runtime": "^5.4.0" }, "engines": { - "node": ">=20" + "node": ">=22" } }, "node_modules/@waku/sdk": { - "version": "0.0.31", - "resolved": "https://registry.npmjs.org/@waku/sdk/-/sdk-0.0.31.tgz", - "integrity": "sha512-vlKXitHYMsu8fOXwN+9A7N71Xh3/zVUTO4CEh0zc2ihjtQcazqkU0rX0sOsAJr/XmDZDUAzkQX6aCWULyYRXMw==", - "license": "MIT OR Apache-2.0", - "dependencies": { - "@chainsafe/libp2p-noise": "16.0.0", - "@libp2p/bootstrap": "^11.0.1", - "@libp2p/identify": "^3.0.1", - "@libp2p/mplex": "^11.0.1", - "@libp2p/ping": "2.0.1", - "@libp2p/websockets": "^9.0.1", - "@noble/hashes": "^1.3.3", - "@waku/core": "0.0.35", - "@waku/discovery": "0.0.8", - "@waku/interfaces": "0.0.30", - "@waku/message-hash": "0.1.19", - "@waku/proto": "^0.0.10", - "@waku/utils": "0.0.23", - "libp2p": "2.1.8" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/@waku/sdk/node_modules/@waku/core": { "version": "0.0.35", - "resolved": "https://registry.npmjs.org/@waku/core/-/core-0.0.35.tgz", - "integrity": "sha512-UbAgBznjewZed4ZAd30BUTq6OsiqTgVQkFD1PnJxw+K4hn0AUKHjPYRTYOzkJvxg7nXd7Y6LCZ7s6XeujwrR4w==", + "resolved": "https://registry.npmjs.org/@waku/sdk/-/sdk-0.0.35.tgz", + "integrity": "sha512-bnXl5b8BDCOKSrJ7V6PiJshc3bsBWaGweWy20IsGlXalCJj7257wK31lZxEP62lTFKHS8tPfG+EvDwrPK4oxKA==", "license": "MIT OR Apache-2.0", "dependencies": { - "@libp2p/ping": "2.0.1", - "@waku/enr": "^0.0.29", - "@waku/interfaces": "0.0.30", - "@waku/proto": "0.0.10", - "@waku/utils": "0.0.23", - "debug": "^4.3.4", - "it-all": "^3.0.4", - "it-length-prefixed": "^9.0.4", - "it-pipe": "^3.0.1", - "uint8arraylist": "^2.4.3", - "uuid": "^9.0.0" + "@chainsafe/libp2p-noise": "16.1.3", + "@libp2p/bootstrap": "11.0.42", + "@libp2p/identify": "3.0.36", + "@libp2p/mplex": "11.0.42", + "@libp2p/ping": "2.0.35", + "@libp2p/websockets": "9.2.16", + "@noble/hashes": "^1.3.3", + "@types/lodash.debounce": "^4.0.9", + "@waku/core": "0.0.39", + "@waku/discovery": "0.0.12", + "@waku/interfaces": "0.0.34", + "@waku/proto": "^0.0.14", + "@waku/sds": "^0.0.7", + "@waku/utils": "0.0.27", + "libp2p": "2.8.11", + "lodash.debounce": "^4.0.8" }, "engines": { - "node": ">=20" - }, - "peerDependencies": { - "@multiformats/multiaddr": "^12.0.0", - "libp2p": "2.1.8" - }, - "peerDependenciesMeta": { - "@multiformats/multiaddr": { - "optional": true - }, - "libp2p": { - "optional": true - } + "node": ">=22" } }, - "node_modules/@waku/sdk/node_modules/libp2p": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/libp2p/-/libp2p-2.1.8.tgz", - "integrity": "sha512-OzUUgAs6983lP2FDqc3oABeUAyvd3iJ/BlYjwmjddpUwQO6gemuJFpWujagj2Vtj+oPosGrrPGWqv+WPnTkHUA==", + "node_modules/@waku/sds": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@waku/sds/-/sds-0.0.7.tgz", + "integrity": "sha512-wPZASJ1iH9K5gSgHMvmahRdnD/yNrNj/35R4H0SZGhUaViOyUGMooJH0YewZmVc1Dvy2L9mDitHurJWqLoWbcg==", + "license": "MIT OR Apache-2.0", + "dependencies": { + "@libp2p/interface": "2.10.4", + "@noble/hashes": "^1.7.1", + "@waku/proto": "^0.0.14", + "@waku/utils": "^0.0.27", + "chai": "^5.1.2", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=22" + } + }, + "node_modules/@waku/sds/node_modules/@libp2p/interface": { + "version": "2.10.4", + "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-2.10.4.tgz", + "integrity": "sha512-FX3uujZgjH9bb7mDSNR54j3JzJnF/ngnQH20GQ1wPk5irIeHDvmzRlUj3bJ3hHQmdB2MxLZNT6e39O1es10LFA==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/crypto": "^5.0.5", - "@libp2p/interface": "^2.1.3", - "@libp2p/interface-internal": "^2.0.8", - "@libp2p/logger": "^5.1.1", - "@libp2p/multistream-select": "^6.0.6", - "@libp2p/peer-collections": "^6.0.8", - "@libp2p/peer-id": "^5.0.5", - "@libp2p/peer-store": "^11.0.8", - "@libp2p/utils": "^6.1.1", - "@multiformats/dns": "^1.0.6", - "@multiformats/multiaddr": "^12.2.3", - "@multiformats/multiaddr-matcher": "^1.2.1", - "any-signal": "^4.1.1", - "datastore-core": "^10.0.0", - "interface-datastore": "^8.3.0", - "it-byte-stream": "^1.0.12", - "it-merge": "^3.0.5", - "it-parallel": "^3.0.7", - "merge-options": "^3.0.4", - "multiformats": "^13.1.0", - "p-defer": "^4.0.1", - "p-retry": "^6.2.0", - "progress-events": "^1.0.0", - "race-event": "^1.3.0", - "race-signal": "^1.0.2", - "uint8arrays": "^5.1.0" - } - }, - "node_modules/@waku/sdk/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" + "@multiformats/multiaddr": "^12.4.4", + "it-pushable": "^3.2.3", + "it-stream-types": "^2.0.2", + "main-event": "^1.0.1", + "multiformats": "^13.3.6", + "progress-events": "^1.0.1", + "uint8arraylist": "^2.4.8" } }, "node_modules/@waku/utils": { - "version": "0.0.23", - "resolved": "https://registry.npmjs.org/@waku/utils/-/utils-0.0.23.tgz", - "integrity": "sha512-8abBIAI7hq1kb5WVpv0o6CCW5Go3bwxo1xovKXfTZfdERwgV7/R6VcijKaUWOHF9SYIskyJuC98TFx/1HgrUBw==", + "version": "0.0.27", + "resolved": "https://registry.npmjs.org/@waku/utils/-/utils-0.0.27.tgz", + "integrity": "sha512-kIS/EN9Xoc5ik2c4MweqcvV3NEcl+CDmg09jpVUVG7fB2/yxVRakBlROytGn+vALR4pcHom1tW2dW1vtofCfFw==", "license": "MIT OR Apache-2.0", "dependencies": { "@noble/hashes": "^1.3.2", - "@waku/interfaces": "0.0.30", + "@waku/interfaces": "0.0.34", "chai": "^4.3.10", "debug": "^4.3.4", "uint8arrays": "^5.0.1" }, "engines": { - "node": ">=20" + "node": ">=22" + } + }, + "node_modules/@waku/utils/node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/@waku/utils/node_modules/chai": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", + "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", + "license": "MIT", + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@waku/utils/node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "license": "MIT", + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@waku/utils/node_modules/deep-eql": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", + "license": "MIT", + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@waku/utils/node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "license": "MIT", + "dependencies": { + "get-func-name": "^2.0.1" + } + }, + "node_modules/@waku/utils/node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "license": "MIT", + "engines": { + "node": "*" } }, "node_modules/abort-controller": { @@ -5518,12 +5545,12 @@ } }, "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", "license": "MIT", "engines": { - "node": "*" + "node": ">=12" } }, "node_modules/async-function": { @@ -5589,9 +5616,9 @@ "license": "MIT" }, "node_modules/bl": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-6.1.0.tgz", - "integrity": "sha512-ClDyJGQkc8ZtzdAAbAwBmhMSpwN/sC9HA8jxdYm6nVUbCfZbe2mgza4qh7AuEYyEPB/c4Kznf9s66bnsKMQDjw==", + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/bl/-/bl-6.1.4.tgz", + "integrity": "sha512-ZV/9asSuknOExbM/zPPA8z00lc1ihPKWaStHkkQrxHNeYx+yY+TmF+v80dpv2G0mv3HVXBu7ryoAsxbFFhf4eg==", "license": "MIT", "dependencies": { "@types/readable-stream": "^4.0.0", @@ -5630,6 +5657,18 @@ "node": ">=8" } }, + "node_modules/broker-factory": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/broker-factory/-/broker-factory-3.1.10.tgz", + "integrity": "sha512-BzqK5GYFhvVFvO13uzPN0SCiOsOQuhMUbsGvTXDJMA2/N4GvIlFdxEuueE+60Zk841bBU5G3+fl2cqYEo0wgGg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.4", + "fast-unique-numbers": "^9.0.24", + "tslib": "^2.8.1", + "worker-factory": "^7.0.46" + } + }, "node_modules/buffer": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", @@ -5733,21 +5772,19 @@ } }, "node_modules/chai": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", - "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz", + "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==", "license": "MIT", "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.3", - "deep-eql": "^4.1.3", - "get-func-name": "^2.0.2", - "loupe": "^2.3.6", - "pathval": "^1.1.1", - "type-detect": "^4.1.0" + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" }, "engines": { - "node": ">=4" + "node": ">=18" } }, "node_modules/chalk": { @@ -5767,15 +5804,12 @@ } }, "node_modules/check-error": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", - "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", "license": "MIT", - "dependencies": { - "get-func-name": "^2.0.2" - }, "engines": { - "node": "*" + "node": ">= 16" } }, "node_modules/chokidar": { @@ -6011,13 +6045,10 @@ } }, "node_modules/deep-eql": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", - "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", "license": "MIT", - "dependencies": { - "type-detect": "^4.0.0" - }, "engines": { "node": ">=6" } @@ -6161,9 +6192,9 @@ "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==" }, "node_modules/dns-over-http-resolver": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/dns-over-http-resolver/-/dns-over-http-resolver-3.0.15.tgz", - "integrity": "sha512-h2Ldu6b8LjW725Q5zjjv7T5s1K3dPjlU3DWvcEFqB3Ksb3QmqC4dHhPKlGlBS/1P47D4T5arZMiE4dD4OIfO6A==", + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/dns-over-http-resolver/-/dns-over-http-resolver-3.0.16.tgz", + "integrity": "sha512-Qnq8HhNRuMnA61pf1lVPlStCAv1BVrraCx0umPESWgYKf995tUMF5oNhW59PKdnf7E8d5yqwHlEoFywXjsNMCw==", "license": "Apache-2.0 OR MIT", "dependencies": { "quick-lru": "^7.0.0", @@ -6973,16 +7004,16 @@ "dev": true }, "node_modules/fast-unique-numbers": { - "version": "8.0.13", - "resolved": "https://registry.npmjs.org/fast-unique-numbers/-/fast-unique-numbers-8.0.13.tgz", - "integrity": "sha512-7OnTFAVPefgw2eBJ1xj2PGGR9FwYzSUso9decayHgCDX4sJkHLdcsYTytTg+tYv+wKF3U8gJuSBz2jJpQV4u/g==", + "version": "9.0.24", + "resolved": "https://registry.npmjs.org/fast-unique-numbers/-/fast-unique-numbers-9.0.24.tgz", + "integrity": "sha512-Dv0BYn4waOWse94j16rsZ5w/0zoaCa74O3q6IZjMqaXbtT92Q+Sb6pPk+phGzD8Xh+nueQmSRI3tSCaHKidzKw==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.23.8", - "tslib": "^2.6.2" + "@babel/runtime": "^7.28.4", + "tslib": "^2.8.1" }, "engines": { - "node": ">=16.1.0" + "node": ">=18.2.0" } }, "node_modules/fast-xml-parser": { @@ -7104,26 +7135,26 @@ } }, "node_modules/firebase": { - "version": "12.2.1", - "resolved": "https://registry.npmjs.org/firebase/-/firebase-12.2.1.tgz", - "integrity": "sha512-UkuW2ZYaq/QuOQ24bfaqmkVqoBFhkA/ptATfPuRtc5vdm+zhwc3mfZBwFe6LqH9yrCN/6rAblgxKz2/0tDvA7w==", + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/firebase/-/firebase-12.4.0.tgz", + "integrity": "sha512-/chNgDQ6ppPPGOQO4jctxOa/5JeQxuhaxA7Y90K0I+n/wPfoO8mRveedhVUdo7ExLcWUivnnow/ouSLYSI5Icw==", "license": "Apache-2.0", "dependencies": { - "@firebase/ai": "2.2.1", - "@firebase/analytics": "0.10.18", - "@firebase/analytics-compat": "0.2.24", - "@firebase/app": "0.14.2", + "@firebase/ai": "2.4.0", + "@firebase/analytics": "0.10.19", + "@firebase/analytics-compat": "0.2.25", + "@firebase/app": "0.14.4", "@firebase/app-check": "0.11.0", "@firebase/app-check-compat": "0.4.0", - "@firebase/app-compat": "0.5.2", + "@firebase/app-compat": "0.5.4", "@firebase/app-types": "0.9.3", "@firebase/auth": "1.11.0", "@firebase/auth-compat": "0.6.0", "@firebase/data-connect": "0.3.11", "@firebase/database": "1.1.0", "@firebase/database-compat": "2.1.0", - "@firebase/firestore": "4.9.1", - "@firebase/firestore-compat": "0.4.1", + "@firebase/firestore": "4.9.2", + "@firebase/firestore-compat": "0.4.2", "@firebase/functions": "0.13.1", "@firebase/functions-compat": "0.4.1", "@firebase/installations": "0.6.19", @@ -7132,8 +7163,8 @@ "@firebase/messaging-compat": "0.2.23", "@firebase/performance": "0.7.9", "@firebase/performance-compat": "0.2.22", - "@firebase/remote-config": "0.6.6", - "@firebase/remote-config-compat": "0.2.19", + "@firebase/remote-config": "0.7.0", + "@firebase/remote-config-compat": "0.2.20", "@firebase/storage": "0.14.0", "@firebase/storage-compat": "0.4.0", "@firebase/util": "1.13.0" @@ -7665,14 +7696,10 @@ } }, "node_modules/ip-address": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", - "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz", + "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==", "license": "MIT", - "dependencies": { - "jsbn": "1.1.0", - "sprintf-js": "^1.1.3" - }, "engines": { "node": ">= 12" } @@ -7916,9 +7943,9 @@ } }, "node_modules/is-network-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz", - "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.0.tgz", + "integrity": "sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==", "license": "MIT", "engines": { "node": ">=16" @@ -8142,13 +8169,15 @@ "license": "Apache-2.0 OR MIT" }, "node_modules/it-byte-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/it-byte-stream/-/it-byte-stream-1.1.1.tgz", - "integrity": "sha512-OIOb8PvK9ZV7MHvyxIDNyN3jmrxrJdx99G0RIYYb3Tzo1OWv+O1C6mfg7nnlDuuTQz2POYFXe87AShKAEl+POw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/it-byte-stream/-/it-byte-stream-2.0.3.tgz", + "integrity": "sha512-h7FFcn4DWiWsJw1dCJhuPdiY8cGi1z8g4aLAfFspTaJbwQxvEMlEBFG/f8lIVGwM8YK26ClM4/9lxLVhF33b8g==", "license": "Apache-2.0 OR MIT", "dependencies": { - "it-queueless-pushable": "^1.0.0", + "abort-error": "^1.0.1", + "it-queueless-pushable": "^2.0.0", "it-stream-types": "^2.0.2", + "race-signal": "^1.1.3", "uint8arraylist": "^2.4.8" } }, @@ -8167,12 +8196,6 @@ "it-peekable": "^3.0.0" } }, - "node_modules/it-first": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/it-first/-/it-first-3.0.9.tgz", - "integrity": "sha512-ZWYun273Gbl7CwiF6kK5xBtIKR56H1NoRaiJek2QzDirgen24u8XZ0Nk+jdnJSuCTPxC2ul1TuXKxu/7eK6NuA==", - "license": "Apache-2.0 OR MIT" - }, "node_modules/it-foreach": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/it-foreach/-/it-foreach-2.1.4.tgz", @@ -8183,9 +8206,9 @@ } }, "node_modules/it-length-prefixed": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/it-length-prefixed/-/it-length-prefixed-9.1.1.tgz", - "integrity": "sha512-O88nBweT6M9ozsmok68/auKH7ik/slNM4pYbM9lrfy2z5QnpokW5SlrepHZDKtN71llhG2sZvd6uY4SAl+lAQg==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/it-length-prefixed/-/it-length-prefixed-10.0.1.tgz", + "integrity": "sha512-BhyluvGps26u9a7eQIpOI1YN7mFgi8lFwmiPi07whewbBARKAG9LE09Odc8s1Wtbt2MB6rNUrl7j9vvfXTJwdQ==", "license": "Apache-2.0 OR MIT", "dependencies": { "it-reader": "^6.0.1", @@ -8200,12 +8223,13 @@ } }, "node_modules/it-length-prefixed-stream": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/it-length-prefixed-stream/-/it-length-prefixed-stream-1.2.1.tgz", - "integrity": "sha512-FYqlxc2toUoK+aPO5r3KDBIUG1mOvk2DzmjQcsfLUTHRWMJP4Va9855tVzg/22Bj+VUUaT7gxBg7HmbiCxTK4w==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/it-length-prefixed-stream/-/it-length-prefixed-stream-2.0.3.tgz", + "integrity": "sha512-Ns3jNFy2mcFnV59llCYitJnFHapg8wIcOsWkEaAwOkG9v4HBCk24nze/zGDQjiJdDTyFXTT5GOY3M/uaksot3w==", "license": "Apache-2.0 OR MIT", "dependencies": { - "it-byte-stream": "^1.0.0", + "abort-error": "^1.0.1", + "it-byte-stream": "^2.0.0", "it-stream-types": "^2.0.2", "uint8-varint": "^2.0.4", "uint8arraylist": "^2.4.8" @@ -8229,17 +8253,6 @@ "it-queueless-pushable": "^2.0.0" } }, - "node_modules/it-merge/node_modules/it-queueless-pushable": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/it-queueless-pushable/-/it-queueless-pushable-2.0.2.tgz", - "integrity": "sha512-2BqIt7XvDdgEgudLAdJkdseAwbVSBc0yAd8yPVHrll4eBuJPWIj9+8C3OIxzEKwhswLtd3bi+yLrzgw9gCyxMA==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "abort-error": "^1.0.1", - "p-defer": "^4.0.1", - "race-signal": "^1.1.3" - } - }, "node_modules/it-pair": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/it-pair/-/it-pair-2.0.6.tgz", @@ -8296,43 +8309,6 @@ "uint8arraylist": "^2.4.8" } }, - "node_modules/it-protobuf-stream/node_modules/it-byte-stream": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/it-byte-stream/-/it-byte-stream-2.0.3.tgz", - "integrity": "sha512-h7FFcn4DWiWsJw1dCJhuPdiY8cGi1z8g4aLAfFspTaJbwQxvEMlEBFG/f8lIVGwM8YK26ClM4/9lxLVhF33b8g==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "abort-error": "^1.0.1", - "it-queueless-pushable": "^2.0.0", - "it-stream-types": "^2.0.2", - "race-signal": "^1.1.3", - "uint8arraylist": "^2.4.8" - } - }, - "node_modules/it-protobuf-stream/node_modules/it-length-prefixed-stream": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/it-length-prefixed-stream/-/it-length-prefixed-stream-2.0.3.tgz", - "integrity": "sha512-Ns3jNFy2mcFnV59llCYitJnFHapg8wIcOsWkEaAwOkG9v4HBCk24nze/zGDQjiJdDTyFXTT5GOY3M/uaksot3w==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "abort-error": "^1.0.1", - "it-byte-stream": "^2.0.0", - "it-stream-types": "^2.0.2", - "uint8-varint": "^2.0.4", - "uint8arraylist": "^2.4.8" - } - }, - "node_modules/it-protobuf-stream/node_modules/it-queueless-pushable": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/it-queueless-pushable/-/it-queueless-pushable-2.0.2.tgz", - "integrity": "sha512-2BqIt7XvDdgEgudLAdJkdseAwbVSBc0yAd8yPVHrll4eBuJPWIj9+8C3OIxzEKwhswLtd3bi+yLrzgw9gCyxMA==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "abort-error": "^1.0.1", - "p-defer": "^4.0.1", - "race-signal": "^1.1.3" - } - }, "node_modules/it-pushable": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/it-pushable/-/it-pushable-3.2.3.tgz", @@ -8356,11 +8332,12 @@ } }, "node_modules/it-queueless-pushable": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/it-queueless-pushable/-/it-queueless-pushable-1.0.2.tgz", - "integrity": "sha512-BFIm48C4O8+i+oVEPQpZ70+CaAsVUircvZtZCrpG2Q64933aLp+tDmas1mTBwqVBfIUUlg09d+e6SWW1CBuykQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/it-queueless-pushable/-/it-queueless-pushable-2.0.2.tgz", + "integrity": "sha512-2BqIt7XvDdgEgudLAdJkdseAwbVSBc0yAd8yPVHrll4eBuJPWIj9+8C3OIxzEKwhswLtd3bi+yLrzgw9gCyxMA==", "license": "Apache-2.0 OR MIT", "dependencies": { + "abort-error": "^1.0.1", "p-defer": "^4.0.1", "race-signal": "^1.1.3" } @@ -8462,12 +8439,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsbn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", - "license": "MIT" - }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", @@ -8656,25 +8627,25 @@ } }, "node_modules/libp2p": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/libp2p/-/libp2p-2.10.0.tgz", - "integrity": "sha512-tgDz7YuGg1XX7UfxebCUii+IGsly/8V0ZRZdFJSDySY2i3UuqpCTsEbRApH3cBKFhcAf00nx9xj8GL9zfo+XWw==", + "version": "2.8.11", + "resolved": "https://registry.npmjs.org/libp2p/-/libp2p-2.8.11.tgz", + "integrity": "sha512-EjkyN0CI6uP+e4OOkEcZvhbZtlwFl4Y0rkkMvDbXmcfILX4E4n/jKE4Ppoc1qhNufxToxVWCMDS2ipniQgiYaw==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.1.0", "@chainsafe/netmask": "^2.0.0", - "@libp2p/crypto": "^5.1.8", - "@libp2p/interface": "^2.11.0", - "@libp2p/interface-internal": "^2.3.19", - "@libp2p/logger": "^5.2.0", - "@libp2p/multistream-select": "^6.0.29", - "@libp2p/peer-collections": "^6.0.35", - "@libp2p/peer-id": "^5.1.9", - "@libp2p/peer-store": "^11.2.7", - "@libp2p/utils": "^6.7.2", + "@libp2p/crypto": "^5.1.6", + "@libp2p/interface": "^2.10.4", + "@libp2p/interface-internal": "^2.3.17", + "@libp2p/logger": "^5.1.20", + "@libp2p/multistream-select": "^6.0.27", + "@libp2p/peer-collections": "^6.0.33", + "@libp2p/peer-id": "^5.1.7", + "@libp2p/peer-store": "^11.2.5", + "@libp2p/utils": "^6.7.0", "@multiformats/dns": "^1.0.6", "@multiformats/multiaddr": "^12.4.4", - "@multiformats/multiaddr-matcher": "^2.0.0", + "@multiformats/multiaddr-matcher": "^1.7.2", "any-signal": "^4.1.1", "datastore-core": "^10.0.2", "interface-datastore": "^8.3.1", @@ -8691,39 +8662,6 @@ "uint8arrays": "^5.1.0" } }, - "node_modules/libp2p/node_modules/@multiformats/multiaddr-matcher": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr-matcher/-/multiaddr-matcher-2.0.2.tgz", - "integrity": "sha512-si7EZCI93mfBJKKRkh+u2bB9W6W5APVN3XfdwuseEJ0OS7ysg0Jno9SuAi0bRzsl5OEFESoF71SjsRqgp8PXAA==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@multiformats/multiaddr": "^12.0.0" - } - }, - "node_modules/libp2p/node_modules/it-byte-stream": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/it-byte-stream/-/it-byte-stream-2.0.3.tgz", - "integrity": "sha512-h7FFcn4DWiWsJw1dCJhuPdiY8cGi1z8g4aLAfFspTaJbwQxvEMlEBFG/f8lIVGwM8YK26ClM4/9lxLVhF33b8g==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "abort-error": "^1.0.1", - "it-queueless-pushable": "^2.0.0", - "it-stream-types": "^2.0.2", - "race-signal": "^1.1.3", - "uint8arraylist": "^2.4.8" - } - }, - "node_modules/libp2p/node_modules/it-queueless-pushable": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/it-queueless-pushable/-/it-queueless-pushable-2.0.2.tgz", - "integrity": "sha512-2BqIt7XvDdgEgudLAdJkdseAwbVSBc0yAd8yPVHrll4eBuJPWIj9+8C3OIxzEKwhswLtd3bi+yLrzgw9gCyxMA==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "abort-error": "^1.0.1", - "p-defer": "^4.0.1", - "race-signal": "^1.1.3" - } - }, "node_modules/lilconfig": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", @@ -8758,12 +8696,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, "node_modules/lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", "license": "MIT" }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "license": "MIT" + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -8777,13 +8727,10 @@ "license": "Apache-2.0" }, "node_modules/loupe": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", - "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", - "license": "MIT", - "dependencies": { - "get-func-name": "^2.0.1" - } + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", + "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==", + "license": "MIT" }, "node_modules/lru-cache": { "version": "10.4.3", @@ -8871,27 +8818,6 @@ "dev": true, "license": "MIT" }, - "node_modules/merge-options": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz", - "integrity": "sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==", - "license": "MIT", - "dependencies": { - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/merge-options/node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -8940,10 +8866,10 @@ } }, "node_modules/minimatch": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz", - "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==", - "license": "ISC", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/brace-expansion": "^5.0.0" }, @@ -8994,14 +8920,16 @@ } }, "node_modules/mqtt": { - "version": "5.13.1", - "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-5.13.1.tgz", - "integrity": "sha512-g+4G+ma0UeL3Pgu1y1si2NHb4VLIEUCtF789WrG99lLG0XZyoab2EJoy58YgGSg/1yFdthDBH0+4llsZZD/vug==", + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-5.14.1.tgz", + "integrity": "sha512-NxkPxE70Uq3Ph7goefQa7ggSsVzHrayCD0OyxlJgITN/EbzlZN+JEPmaAZdxP1LsIT5FamDyILoQTF72W7Nnbw==", "license": "MIT", "dependencies": { + "@types/readable-stream": "^4.0.21", + "@types/ws": "^8.18.1", "commist": "^3.2.0", "concat-stream": "^2.0.0", - "debug": "^4.4.0", + "debug": "^4.4.1", "help-me": "^5.0.0", "lru-cache": "^10.4.3", "minimist": "^1.2.8", @@ -9009,10 +8937,10 @@ "number-allocator": "^1.0.14", "readable-stream": "^4.7.0", "rfdc": "^1.4.1", - "socks": "^2.8.3", + "socks": "^2.8.6", "split2": "^4.2.0", - "worker-timers": "^7.1.8", - "ws": "^8.18.0" + "worker-timers": "^8.0.23", + "ws": "^8.18.3" }, "bin": { "mqtt": "build/bin/mqtt.js", @@ -9050,9 +8978,9 @@ "license": "MIT" }, "node_modules/multiformats": { - "version": "13.3.6", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.3.6.tgz", - "integrity": "sha512-yakbt9cPYj8d3vi/8o/XWm61MrOILo7fsTL0qxNx6zS0Nso6K5JqqS2WV7vK/KSuDBvrW3KfCwAdAgarAgOmww==", + "version": "13.4.1", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.1.tgz", + "integrity": "sha512-VqO6OSvLrFVAYYjgsr8tyv62/rCQhPgsZUXLTqoFLSgdkgiUYKYeArbt1uWLlEpkjxQe+P0+sHlbPEte1Bi06Q==", "license": "Apache-2.0 OR MIT" }, "node_modules/nanoid": { @@ -9231,9 +9159,9 @@ } }, "node_modules/octagonal-wheels": { - "version": "0.1.41", - "resolved": "https://registry.npmjs.org/octagonal-wheels/-/octagonal-wheels-0.1.41.tgz", - "integrity": "sha512-cIvdXsyiSCxknyxTwGrNnDKsaYpgZdXeKAy9cXIAk2Jy7T1z6bLjU4s5z47OySNPVPSr32x5r8hSz7hAYYv7qA==", + "version": "0.1.42", + "resolved": "https://registry.npmjs.org/octagonal-wheels/-/octagonal-wheels-0.1.42.tgz", + "integrity": "sha512-Hc2GWCtmG4+OzY9flY5vHjozUPuwsQoY7osG+I2QzACs8iTWrlAcw1re8FgU4vDC/to9rFogWfYWI8bNbr5j2w==", "license": "MIT", "dependencies": { "idb": "^8.0.3" @@ -9332,16 +9260,28 @@ } }, "node_modules/p-queue": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.1.0.tgz", - "integrity": "sha512-mxLDbbGIBEXTJL0zEx8JIylaj3xQ7Z/7eEVjcF9fJX4DBiH9oqe+oahYnlKKxm0Ci9TlWTyhSHgygxMxjIB2jw==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-9.0.0.tgz", + "integrity": "sha512-KO1RyxstL9g1mK76530TExamZC/S2Glm080Nx8PE5sTd7nlduDQsAfEl4uXX+qZjLiwvDauvzXavufy3+rJ9zQ==", "license": "MIT", "dependencies": { "eventemitter3": "^5.0.1", - "p-timeout": "^6.1.2" + "p-timeout": "^7.0.0" }, "engines": { - "node": ">=18" + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-queue/node_modules/p-timeout": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-7.0.1.tgz", + "integrity": "sha512-AxTM2wDGORHGEkPCt8yqxOTMgpfbEHqF51f/5fJCmwFC3C/zNcGT63SymH2ttOAaiIws2zVg4+izQCjrakcwHg==", + "license": "MIT", + "engines": { + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -9458,12 +9398,12 @@ } }, "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", + "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", "license": "MIT", "engines": { - "node": "*" + "node": ">= 14.16" } }, "node_modules/picocolors": { @@ -10046,9 +9986,9 @@ } }, "node_modules/protons-runtime": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/protons-runtime/-/protons-runtime-5.5.0.tgz", - "integrity": "sha512-EsALjF9QsrEk6gbCx3lmfHxVN0ah7nG3cY7GySD4xf4g8cr7g543zB88Foh897Sr1RQJ9yDCUsoT1i1H/cVUFA==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/protons-runtime/-/protons-runtime-5.6.0.tgz", + "integrity": "sha512-/Kde+sB9DsMFrddJT/UZWe6XqvL7SL5dbag/DBCElFKhkwDj7XKt53S+mzLyaDP5OqS0wXjV5SA572uWDaT0Hg==", "license": "Apache-2.0 OR MIT", "dependencies": { "uint8-varint": "^2.0.2", @@ -10112,9 +10052,9 @@ "license": "MIT" }, "node_modules/quick-lru": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-7.0.1.tgz", - "integrity": "sha512-kLjThirJMkWKutUKbZ8ViqFc09tDQhlbQo2MNuVeLWbRauqYP96Sm6nzlQ24F0HFjUNZ4i9+AgldJ9H6DZXi7g==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-7.3.0.tgz", + "integrity": "sha512-k9lSsjl36EJdK7I06v7APZCbyGT2vMTsYSRX1Q2nbYmnkBqgUhRkAuzH08Ciotteu/PLJmIF2+tti7o3C/ts2g==", "license": "MIT", "engines": { "node": ">=18" @@ -10124,10 +10064,13 @@ } }, "node_modules/race-event": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/race-event/-/race-event-1.3.0.tgz", - "integrity": "sha512-kaLm7axfOnahIqD3jQ4l1e471FIFcEGebXEnhxyLscuUzV8C94xVHtWEqDDXxll7+yu/6lW0w1Ff4HbtvHvOHg==", - "license": "Apache-2.0 OR MIT" + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/race-event/-/race-event-1.6.1.tgz", + "integrity": "sha512-vi7WH5g5KoTFpu2mme/HqZiWH14XSOtg5rfp6raBskBHl7wnmy3F/biAIyY5MsK+BHWhoPhxtZ1Y2R7OHHaWyQ==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "abort-error": "^1.0.1" + } }, "node_modules/race-signal": { "version": "1.1.3", @@ -10630,12 +10573,12 @@ } }, "node_modules/socks": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz", - "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==", + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", + "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", "license": "MIT", "dependencies": { - "ip-address": "^9.0.5", + "ip-address": "^10.0.1", "smart-buffer": "^4.2.0" }, "engines": { @@ -10687,12 +10630,6 @@ "node": ">= 10.x" } }, - "node_modules/sprintf-js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "license": "BSD-3-Clause" - }, "node_modules/stop-iteration-iterator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", @@ -10986,10 +10923,14 @@ } }, "node_modules/svelte-check/node_modules/fdir": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.0.tgz", - "integrity": "sha512-3oB133prH1o4j/L5lLW7uOCF1PlD+/It2L0eL/iAqWMB91RBbqTewABqxhj0ibBd90EEmWZq7ntIWzVaWcXTGQ==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, "peerDependencies": { "picomatch": "^3 || ^4" }, @@ -11252,18 +11193,16 @@ } }, "node_modules/trystero": { - "version": "0.21.8", - "resolved": "git+ssh://git@github.com/vrtmrz/trystero.git#9e892a93ec14eeb57ce806d272fbb7c3935256d8", - "integrity": "sha512-LUlmTTSxgomyYvU1K05snl18+GLAxqO4W8P9lePLbRnZVJyGZUVXMM4/aW9384GtIf0VLJquloWqz9PriJZg2w==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/trystero/-/trystero-0.22.0.tgz", + "integrity": "sha512-VscO7kaTFWNLmuxu1Au1kIxX6FzkVeXcL3+mhb9MaCSz8fm4T5MFWkdfDOujMtNK4iztupQ5AGEqGniP/I8Gvw==", "license": "MIT", "dependencies": { "@noble/secp256k1": "^3.0.0", - "@supabase/supabase-js": "^2.49.8", - "@waku/discovery": "^0.0.8", - "@waku/sdk": "^0.0.31", - "firebase": "^12.2.1", - "libp2p": "^2.8.8", - "mqtt": "^5.13.0" + "@supabase/supabase-js": "^2.75.0", + "@waku/sdk": "^0.0.35", + "firebase": "^12.4.0", + "mqtt": "^5.14.1" } }, "node_modules/trystero/node_modules/@noble/secp256k1": { @@ -11685,13 +11624,13 @@ "peer": true }, "node_modules/weald": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/weald/-/weald-1.0.4.tgz", - "integrity": "sha512-+kYTuHonJBwmFhP1Z4YQK/dGi3jAnJGCYhyODFpHK73rbxnp9lnZQj7a2m+WVgn8fXr5bJaxUpF6l8qZpPeNWQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/weald/-/weald-1.1.1.tgz", + "integrity": "sha512-PaEQShzMCz8J/AD2N3dJMc1hTZWkJeLKS2NMeiVkV5KDHwgZe7qXLEzyodsT/SODxWDdXJJqocuwf3kHzcXhSQ==", "license": "Apache-2.0 OR MIT", "dependencies": { "ms": "^3.0.0-canary.1", - "supports-color": "^9.4.0" + "supports-color": "^10.0.0" } }, "node_modules/weald/node_modules/ms": { @@ -11704,12 +11643,12 @@ } }, "node_modules/weald/node_modules/supports-color": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.4.0.tgz", - "integrity": "sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-10.2.2.tgz", + "integrity": "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==", "license": "MIT", "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/chalk/supports-color?sponsor=1" @@ -11876,38 +11815,51 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/worker-timers": { - "version": "7.1.8", - "resolved": "https://registry.npmjs.org/worker-timers/-/worker-timers-7.1.8.tgz", - "integrity": "sha512-R54psRKYVLuzff7c1OTFcq/4Hue5Vlz4bFtNEIarpSiCYhpifHU3aIQI29S84o1j87ePCYqbmEJPqwBTf+3sfw==", + "node_modules/worker-factory": { + "version": "7.0.46", + "resolved": "https://registry.npmjs.org/worker-factory/-/worker-factory-7.0.46.tgz", + "integrity": "sha512-Sr1hq2FMgNa04UVhYQacsw+i58BtMimzDb4+CqYphZ97OfefRpURu0UZ+JxMr/H36VVJBfuVkxTK7MytsanC3w==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.24.5", - "tslib": "^2.6.2", - "worker-timers-broker": "^6.1.8", - "worker-timers-worker": "^7.0.71" + "@babel/runtime": "^7.28.4", + "fast-unique-numbers": "^9.0.24", + "tslib": "^2.8.1" + } + }, + "node_modules/worker-timers": { + "version": "8.0.25", + "resolved": "https://registry.npmjs.org/worker-timers/-/worker-timers-8.0.25.tgz", + "integrity": "sha512-X7Z5dmM6PlrEnaadtFQOyXHGD/IysPA3HZzaC2koqsU1VI+RvyGmjiiLiUBQixK8PH5R7ilkOzZupWskNRaXmA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.4", + "tslib": "^2.8.1", + "worker-timers-broker": "^8.0.11", + "worker-timers-worker": "^9.0.11" } }, "node_modules/worker-timers-broker": { - "version": "6.1.8", - "resolved": "https://registry.npmjs.org/worker-timers-broker/-/worker-timers-broker-6.1.8.tgz", - "integrity": "sha512-FUCJu9jlK3A8WqLTKXM9E6kAmI/dR1vAJ8dHYLMisLNB/n3GuaFIjJ7pn16ZcD1zCOf7P6H62lWIEBi+yz/zQQ==", + "version": "8.0.11", + "resolved": "https://registry.npmjs.org/worker-timers-broker/-/worker-timers-broker-8.0.11.tgz", + "integrity": "sha512-uwhxKru8BI9m2tsogxr2fB6POZ8LB2xH+Pu3R0mvQnAZLPgLD6K3IX4LNKPTEgTJ/j5VsuQPB+gLI1NBNKkPlg==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.24.5", - "fast-unique-numbers": "^8.0.13", - "tslib": "^2.6.2", - "worker-timers-worker": "^7.0.71" + "@babel/runtime": "^7.28.4", + "broker-factory": "^3.1.10", + "fast-unique-numbers": "^9.0.24", + "tslib": "^2.8.1", + "worker-timers-worker": "^9.0.11" } }, "node_modules/worker-timers-worker": { - "version": "7.0.71", - "resolved": "https://registry.npmjs.org/worker-timers-worker/-/worker-timers-worker-7.0.71.tgz", - "integrity": "sha512-ks/5YKwZsto1c2vmljroppOKCivB/ma97g9y77MAAz2TBBjPPgpoOiS1qYQKIgvGTr2QYPT3XhJWIB6Rj2MVPQ==", + "version": "9.0.11", + "resolved": "https://registry.npmjs.org/worker-timers-worker/-/worker-timers-worker-9.0.11.tgz", + "integrity": "sha512-pArb5xtgHWImYpXhjg1OFv7JFG0ubmccb73TFoXHXjG830fFj+16N57q9YeBnZX52dn+itRrMoJZ9HaZBVzDaA==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.24.5", - "tslib": "^2.6.2" + "@babel/runtime": "^7.28.4", + "tslib": "^2.8.1", + "worker-factory": "^7.0.46" } }, "node_modules/wrap-ansi": { @@ -11947,9 +11899,9 @@ } }, "node_modules/ws": { - "version": "8.18.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", - "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==", + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "license": "MIT", "engines": { "node": ">=10.0.0" @@ -12751,9 +12703,9 @@ } }, "@babel/runtime": { - "version": "7.27.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz", - "integrity": "sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==" + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", + "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==" }, "@chainsafe/as-chacha20poly1305": { "version": "0.1.0", @@ -12761,9 +12713,9 @@ "integrity": "sha512-BpNcL8/lji/GM3+vZ/bgRWqJ1q5kwvTFmGPk7pxm/QQZDbaMI98waOHjEymTjq2JmdD/INdNBFOVSyJofXg7ew==" }, "@chainsafe/as-sha256": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@chainsafe/as-sha256/-/as-sha256-0.4.2.tgz", - "integrity": "sha512-HJ8GZBRjLeWtRsAXf3EbNsNzmTGpzTFjfpSf4yHkLYC+E52DhT6hwz+7qpj6I/EmFzSUm5tYYvT9K8GZokLQCQ==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@chainsafe/as-sha256/-/as-sha256-1.2.0.tgz", + "integrity": "sha512-H2BNHQ5C3RS+H0ZvOdovK6GjFAyq5T6LClad8ivwj9Oaiy28uvdsGVS7gNJKuZmg0FGHAI+n7F0Qju6U0QkKDA==" }, "@chainsafe/is-ip": { "version": "2.1.0", @@ -12771,20 +12723,20 @@ "integrity": "sha512-KIjt+6IfysQ4GCv66xihEitBjvhU/bixbbbFxdJ1sqCp4uJ0wuZiYBPhksZoy4lfaF0k9cwNzY5upEW/VWdw3w==" }, "@chainsafe/libp2p-noise": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-noise/-/libp2p-noise-16.0.0.tgz", - "integrity": "sha512-8rqr8V1RD2/lVbfL0Bb//N8iPOFof11cUe8v8z8xJT7fUhCAbtCCSM4jbwI4HCnw0MvHLmcpmAfDCFRwcWzoeA==", + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-noise/-/libp2p-noise-16.1.3.tgz", + "integrity": "sha512-YLonKdIUFk/0keKRfzlmdrsObi8r0EaZC14Vjh3qdLy4+W7NaQAs1sSMt8aDP07oE78pa51NyejmQLKOnt7tOw==", "requires": { "@chainsafe/as-chacha20poly1305": "^0.1.0", - "@chainsafe/as-sha256": "^0.4.1", + "@chainsafe/as-sha256": "^1.0.0", "@libp2p/crypto": "^5.0.0", - "@libp2p/interface": "^2.0.0", + "@libp2p/interface": "^2.9.0", "@libp2p/peer-id": "^5.0.0", - "@noble/ciphers": "^0.6.0", + "@noble/ciphers": "^1.1.3", "@noble/curves": "^1.1.0", "@noble/hashes": "^1.3.1", - "it-length-prefixed": "^9.0.1", - "it-length-prefixed-stream": "^1.0.0", + "it-length-prefixed": "^10.0.1", + "it-length-prefixed-stream": "^2.0.1", "it-pair": "^2.0.6", "it-pipe": "^3.0.1", "it-stream-types": "^2.0.1", @@ -13178,9 +13130,9 @@ } }, "@firebase/ai": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@firebase/ai/-/ai-2.2.1.tgz", - "integrity": "sha512-0VWlkGB18oDhwMqsgxpt/usMsyjnH3a7hTvQPcAbk7VhFg0QZMDX60mQKfLTFKrB5VwmlaIdVsSZznsTY2S0wA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@firebase/ai/-/ai-2.4.0.tgz", + "integrity": "sha512-YilG6AJ/nYpCKtxZyvEzBRAQv5bU+2tBOKX4Ps0rNNSdxN39aT37kGhjATbk1kq1z5Lq7mkWglw/ajAF3lOWUg==", "requires": { "@firebase/app-check-interop-types": "0.3.3", "@firebase/component": "0.7.0", @@ -13190,9 +13142,9 @@ } }, "@firebase/analytics": { - "version": "0.10.18", - "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.10.18.tgz", - "integrity": "sha512-iN7IgLvM06iFk8BeFoWqvVpRFW3Z70f+Qe2PfCJ7vPIgLPjHXDE774DhCT5Y2/ZU/ZbXPDPD60x/XPWEoZLNdg==", + "version": "0.10.19", + "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.10.19.tgz", + "integrity": "sha512-3wU676fh60gaiVYQEEXsbGS4HbF2XsiBphyvvqDbtC1U4/dO4coshbYktcCHq+HFaGIK07iHOh4pME0hEq1fcg==", "requires": { "@firebase/component": "0.7.0", "@firebase/installations": "0.6.19", @@ -13202,11 +13154,11 @@ } }, "@firebase/analytics-compat": { - "version": "0.2.24", - "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.24.tgz", - "integrity": "sha512-jE+kJnPG86XSqGQGhXXYt1tpTbCTED8OQJ/PQ90SEw14CuxRxx/H+lFbWA1rlFtFSsTCptAJtgyRBwr/f00vsw==", + "version": "0.2.25", + "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.25.tgz", + "integrity": "sha512-fdzoaG0BEKbqksRDhmf4JoyZf16Wosrl0Y7tbZtJyVDOOwziE0vrFjmZuTdviL0yhak+Nco6rMsUUbkbD+qb6Q==", "requires": { - "@firebase/analytics": "0.10.18", + "@firebase/analytics": "0.10.19", "@firebase/analytics-types": "0.8.3", "@firebase/component": "0.7.0", "@firebase/util": "1.13.0", @@ -13219,9 +13171,9 @@ "integrity": "sha512-VrIp/d8iq2g501qO46uGz3hjbDb8xzYMrbu8Tp0ovzIzrvJZ2fvmj649gTjge/b7cCCcjT0H37g1gVtlNhnkbg==" }, "@firebase/app": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.14.2.tgz", - "integrity": "sha512-Ecx2ig/JLC9ayIQwZHqm41Tzlf4c1WUuFhFUZB1y+JIJqDRE579x7Uil7tKT8MwDpOPwrK5ZtpxdSsrfy/LF8Q==", + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.14.4.tgz", + "integrity": "sha512-pUxEGmR+uu21OG/icAovjlu1fcYJzyVhhT0rsCrn+zi+nHtrS43Bp9KPn9KGa4NMspCUE++nkyiqziuIvJdwzw==", "requires": { "@firebase/component": "0.7.0", "@firebase/logger": "0.5.0", @@ -13272,11 +13224,11 @@ "integrity": "sha512-hyl5rKSj0QmwPdsAxrI5x1otDlByQ7bvNvVt8G/XPO2CSwE++rmSVf3VEhaeOR4J8ZFaF0Z0NDSmLejPweZ3ng==" }, "@firebase/app-compat": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.5.2.tgz", - "integrity": "sha512-cn+U27GDaBS/irsbvrfnPZdcCzeZPRGKieSlyb7vV6LSOL6mdECnB86PgYjYGxSNg8+U48L/NeevTV1odU+mOQ==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.5.4.tgz", + "integrity": "sha512-T7ifGmb+awJEcp542Ek4HtNfBxcBrnuk1ggUdqyFEdsXHdq7+wVlhvE6YukTL7NS8hIkEfL7TMAPx/uCNqt30g==", "requires": { - "@firebase/app": "0.14.2", + "@firebase/app": "0.14.4", "@firebase/component": "0.7.0", "@firebase/logger": "0.5.0", "@firebase/util": "1.13.0", @@ -13380,26 +13332,26 @@ } }, "@firebase/firestore": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-4.9.1.tgz", - "integrity": "sha512-PYVUTkhC9y8pydrqC3O1Oc4AMfkGSWdmuH9xgPJjiEbpUIUPQ4J8wJhyuash+o2u+axmyNRFP8ULNUKb+WzBzQ==", + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-4.9.2.tgz", + "integrity": "sha512-iuA5+nVr/IV/Thm0Luoqf2mERUvK9g791FZpUJV1ZGXO6RL2/i/WFJUj5ZTVXy5pRjpWYO+ZzPcReNrlilmztA==", "requires": { "@firebase/component": "0.7.0", "@firebase/logger": "0.5.0", "@firebase/util": "1.13.0", - "@firebase/webchannel-wrapper": "1.0.4", + "@firebase/webchannel-wrapper": "1.0.5", "@grpc/grpc-js": "~1.9.0", "@grpc/proto-loader": "^0.7.8", "tslib": "^2.1.0" } }, "@firebase/firestore-compat": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.4.1.tgz", - "integrity": "sha512-BjalPTDh/K0vmR/M/DE148dpIqbcfvtFVTietbUDWDWYIl9YH0TTVp/EwXRbZwswPxyjx4GdHW61GB2AYVz1SQ==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.4.2.tgz", + "integrity": "sha512-cy7ov6SpFBx+PHwFdOOjbI7kH00uNKmIFurAn560WiPCZXy9EMnil1SOG7VF4hHZKdenC+AHtL4r3fNpirpm0w==", "requires": { "@firebase/component": "0.7.0", - "@firebase/firestore": "4.9.1", + "@firebase/firestore": "4.9.2", "@firebase/firestore-types": "3.0.3", "@firebase/util": "1.13.0", "tslib": "^2.1.0" @@ -13553,9 +13505,9 @@ "integrity": "sha512-IgkyTz6QZVPAq8GSkLYJvwSLr3LS9+V6vNPQr0x4YozZJiLF5jYixj0amDtATf1X0EtYHqoPO48a9ija8GocxQ==" }, "@firebase/remote-config": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.6.6.tgz", - "integrity": "sha512-Yelp5xd8hM4NO1G1SuWrIk4h5K42mNwC98eWZ9YLVu6Z0S6hFk1mxotAdCRmH2luH8FASlYgLLq6OQLZ4nbnCA==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.7.0.tgz", + "integrity": "sha512-dX95X6WlW7QlgNd7aaGdjAIZUiQkgWgNS+aKNu4Wv92H1T8Ue/NDUjZHd9xb8fHxLXIHNZeco9/qbZzr500MjQ==", "requires": { "@firebase/component": "0.7.0", "@firebase/installations": "0.6.19", @@ -13565,22 +13517,22 @@ } }, "@firebase/remote-config-compat": { - "version": "0.2.19", - "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.19.tgz", - "integrity": "sha512-y7PZAb0l5+5oIgLJr88TNSelxuASGlXyAKj+3pUc4fDuRIdPNBoONMHaIUa9rlffBR5dErmaD2wUBJ7Z1a513Q==", + "version": "0.2.20", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.20.tgz", + "integrity": "sha512-P/ULS9vU35EL9maG7xp66uljkZgcPMQOxLj3Zx2F289baTKSInE6+YIkgHEi1TwHoddC/AFePXPpshPlEFkbgg==", "requires": { "@firebase/component": "0.7.0", "@firebase/logger": "0.5.0", - "@firebase/remote-config": "0.6.6", - "@firebase/remote-config-types": "0.4.0", + "@firebase/remote-config": "0.7.0", + "@firebase/remote-config-types": "0.5.0", "@firebase/util": "1.13.0", "tslib": "^2.1.0" } }, "@firebase/remote-config-types": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.4.0.tgz", - "integrity": "sha512-7p3mRE/ldCNYt8fmWMQ/MSGRmXYlJ15Rvs9Rk17t8p0WwZDbeK7eRmoI1tvCPaDzn9Oqh+yD6Lw+sGLsLg4kKg==" + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.5.0.tgz", + "integrity": "sha512-vI3bqLoF14L/GchtgayMiFpZJF+Ao3uR8WCde0XpYNkSokDpAKca2DxvcfeZv7lZUqkUwQPL2wD83d3vQ4vvrg==" }, "@firebase/storage": { "version": "0.14.0", @@ -13619,9 +13571,9 @@ } }, "@firebase/webchannel-wrapper": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-1.0.4.tgz", - "integrity": "sha512-6m8+P+dE/RPl4OPzjTxcTbQ0rGeRyeTvAi9KwIffBVCiAMKrfXfLZaqD1F+m8t4B5/Q5aHsMozOgirkH1F5oMQ==" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-1.0.5.tgz", + "integrity": "sha512-+uGNN7rkfn41HLO0vekTFhTxk61eKa8mTpRGLO0QSqlQdKvIoGAvLp3ppdVIWbTGYJWM6Kp0iN+PjMIOcnVqTw==" }, "@grpc/grpc-js": { "version": "1.9.15", @@ -13822,44 +13774,83 @@ "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==" }, "@libp2p/bootstrap": { - "version": "11.0.39", - "resolved": "https://registry.npmjs.org/@libp2p/bootstrap/-/bootstrap-11.0.39.tgz", - "integrity": "sha512-OoReVQhJNPb9EzAWPd0O/GBMGVWmeylH/M6ohx5ONzHynmqwT7+f6TiDtDIGey8APdBURzBPgy6Z1gGU6lourQ==", + "version": "11.0.42", + "resolved": "https://registry.npmjs.org/@libp2p/bootstrap/-/bootstrap-11.0.42.tgz", + "integrity": "sha512-xe5LMZrXR2cnFcR69ax/cHqNCc8zwSvqDWOf82u/ifAsUae7M0eeoEVi15lfrPewWst4YPkTqYDkZSPWC65I3Q==", "requires": { - "@libp2p/interface": "^2.10.3", - "@libp2p/interface-internal": "^2.3.15", - "@libp2p/peer-id": "^5.1.6", + "@libp2p/interface": "^2.10.4", + "@libp2p/interface-internal": "^2.3.17", + "@libp2p/peer-id": "^5.1.7", "@multiformats/mafmt": "^12.1.6", - "@multiformats/multiaddr": "^12.4.0", + "@multiformats/multiaddr": "^12.4.4", "main-event": "^1.0.1" } }, "@libp2p/crypto": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@libp2p/crypto/-/crypto-5.1.8.tgz", - "integrity": "sha512-zkfWd2x12E0NbSRU52Wb0A5I9v5a1uLgCauR8uuTqnC21OVznXUGkMg4A2Xoj90M98lReDHo+Khc/hlQFbJ5Vw==", + "version": "5.1.13", + "resolved": "https://registry.npmjs.org/@libp2p/crypto/-/crypto-5.1.13.tgz", + "integrity": "sha512-8NN9cQP3jDn+p9+QE9ByiEoZ2lemDFf/unTgiKmS3JF93ph240EUVdbCyyEgOMfykzb0okTM4gzvwfx9osJebQ==", "requires": { - "@libp2p/interface": "^2.11.0", - "@noble/curves": "^1.9.1", - "@noble/hashes": "^1.8.0", - "multiformats": "^13.3.6", - "protons-runtime": "^5.5.0", + "@libp2p/interface": "^3.1.0", + "@noble/curves": "^2.0.1", + "@noble/hashes": "^2.0.1", + "multiformats": "^13.4.0", + "protons-runtime": "^5.6.0", "uint8arraylist": "^2.4.8", "uint8arrays": "^5.1.0" + }, + "dependencies": { + "@libp2p/interface": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-3.1.0.tgz", + "integrity": "sha512-RE7/XyvC47fQBe1cHxhMvepYKa5bFCUyFrrpj8PuM0E7JtzxU7F+Du5j4VXbg2yLDcToe0+j8mB7jvwE2AThYw==", + "requires": { + "@multiformats/dns": "^1.0.6", + "@multiformats/multiaddr": "^13.0.1", + "main-event": "^1.0.1", + "multiformats": "^13.4.0", + "progress-events": "^1.0.1", + "uint8arraylist": "^2.4.8" + } + }, + "@multiformats/multiaddr": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "requires": { + "@chainsafe/is-ip": "^2.0.1", + "multiformats": "^13.0.0", + "uint8-varint": "^2.0.1", + "uint8arrays": "^5.0.0" + } + }, + "@noble/curves": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-2.0.1.tgz", + "integrity": "sha512-vs1Az2OOTBiP4q0pwjW5aF0xp9n4MxVrmkFBxc6EKZc6ddYx5gaZiAsZoq0uRRXWbi3AT/sBqn05eRPtn1JCPw==", + "requires": { + "@noble/hashes": "2.0.1" + } + }, + "@noble/hashes": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.0.1.tgz", + "integrity": "sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==" + } } }, "@libp2p/identify": { - "version": "3.0.33", - "resolved": "https://registry.npmjs.org/@libp2p/identify/-/identify-3.0.33.tgz", - "integrity": "sha512-cwMwXcQC4h1msBayTBS49yPwnoJUjXcxMm2orxAb96gVbzGW7h+OIFikZR23yOcDEcOPO8wHTurL1SXrr3O/SQ==", + "version": "3.0.36", + "resolved": "https://registry.npmjs.org/@libp2p/identify/-/identify-3.0.36.tgz", + "integrity": "sha512-swpgKzZ8SihHeguIEf3LxYlEcD7C9cSB7DE1XGTuCxNXkXksv2ieQTSiJ2xURMRw0nwe0wEGS5vzmshJh3kzrA==", "requires": { - "@libp2p/crypto": "^5.1.5", - "@libp2p/interface": "^2.10.3", - "@libp2p/interface-internal": "^2.3.15", - "@libp2p/peer-id": "^5.1.6", - "@libp2p/peer-record": "^8.0.31", - "@libp2p/utils": "^6.6.6", - "@multiformats/multiaddr": "^12.4.0", + "@libp2p/crypto": "^5.1.6", + "@libp2p/interface": "^2.10.4", + "@libp2p/interface-internal": "^2.3.17", + "@libp2p/peer-id": "^5.1.7", + "@libp2p/peer-record": "^8.0.33", + "@libp2p/utils": "^6.7.0", + "@multiformats/multiaddr": "^12.4.4", "@multiformats/multiaddr-matcher": "^1.7.2", "it-drain": "^3.0.9", "it-parallel": "^3.0.11", @@ -13909,12 +13900,12 @@ } }, "@libp2p/mplex": { - "version": "11.0.39", - "resolved": "https://registry.npmjs.org/@libp2p/mplex/-/mplex-11.0.39.tgz", - "integrity": "sha512-zda6ksYkOT3gdq7x1gBQip8xEB8p/uXZ5VBqsYNn9OVp+L2VBm3QbXK3Jw3P4VtZ79quK8IPhL26Yz//Edmrvw==", + "version": "11.0.42", + "resolved": "https://registry.npmjs.org/@libp2p/mplex/-/mplex-11.0.42.tgz", + "integrity": "sha512-06HXNQS02GOEx1796Nsk640tIHwnHtJvd4TWnslUEeVi7SxLA8LqCttT7qJ2P3Y1tmm3E2a74kxtHqaJDqypig==", "requires": { - "@libp2p/interface": "^2.10.3", - "@libp2p/utils": "^6.6.6", + "@libp2p/interface": "^2.10.4", + "@libp2p/utils": "^6.7.0", "it-pipe": "^3.0.1", "it-pushable": "^3.2.3", "it-stream-types": "^2.0.2", @@ -13937,54 +13928,6 @@ "uint8-varint": "^2.0.4", "uint8arraylist": "^2.4.8", "uint8arrays": "^5.1.0" - }, - "dependencies": { - "it-byte-stream": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/it-byte-stream/-/it-byte-stream-2.0.3.tgz", - "integrity": "sha512-h7FFcn4DWiWsJw1dCJhuPdiY8cGi1z8g4aLAfFspTaJbwQxvEMlEBFG/f8lIVGwM8YK26ClM4/9lxLVhF33b8g==", - "requires": { - "abort-error": "^1.0.1", - "it-queueless-pushable": "^2.0.0", - "it-stream-types": "^2.0.2", - "race-signal": "^1.1.3", - "uint8arraylist": "^2.4.8" - } - }, - "it-length-prefixed": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/it-length-prefixed/-/it-length-prefixed-10.0.1.tgz", - "integrity": "sha512-BhyluvGps26u9a7eQIpOI1YN7mFgi8lFwmiPi07whewbBARKAG9LE09Odc8s1Wtbt2MB6rNUrl7j9vvfXTJwdQ==", - "requires": { - "it-reader": "^6.0.1", - "it-stream-types": "^2.0.1", - "uint8-varint": "^2.0.1", - "uint8arraylist": "^2.0.0", - "uint8arrays": "^5.0.1" - } - }, - "it-length-prefixed-stream": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/it-length-prefixed-stream/-/it-length-prefixed-stream-2.0.3.tgz", - "integrity": "sha512-Ns3jNFy2mcFnV59llCYitJnFHapg8wIcOsWkEaAwOkG9v4HBCk24nze/zGDQjiJdDTyFXTT5GOY3M/uaksot3w==", - "requires": { - "abort-error": "^1.0.1", - "it-byte-stream": "^2.0.0", - "it-stream-types": "^2.0.2", - "uint8-varint": "^2.0.4", - "uint8arraylist": "^2.4.8" - } - }, - "it-queueless-pushable": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/it-queueless-pushable/-/it-queueless-pushable-2.0.2.tgz", - "integrity": "sha512-2BqIt7XvDdgEgudLAdJkdseAwbVSBc0yAd8yPVHrll4eBuJPWIj9+8C3OIxzEKwhswLtd3bi+yLrzgw9gCyxMA==", - "requires": { - "abort-error": "^1.0.1", - "p-defer": "^4.0.1", - "race-signal": "^1.1.3" - } - } } }, "@libp2p/peer-collections": { @@ -14048,16 +13991,16 @@ } }, "@libp2p/ping": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@libp2p/ping/-/ping-2.0.1.tgz", - "integrity": "sha512-KWbzFRDBJyZDd8FziW1N9UKHBcOm2RIVyX7sQh1tFeJ0XpWkNT3IcljOG1STikXTuCXIZmMgan/LrZ+SvJSIGw==", + "version": "2.0.35", + "resolved": "https://registry.npmjs.org/@libp2p/ping/-/ping-2.0.35.tgz", + "integrity": "sha512-f9z5drqjaRRTu1dK/3gshtth/xdE2YwZ6qhBUpqLX4x5s3k/X8ds4aRx2lzvznQMmOMaT8e1VEjhbfFlcJmUOA==", "requires": { - "@libp2p/crypto": "^5.0.1", - "@libp2p/interface": "^2.0.1", - "@libp2p/interface-internal": "^2.0.1", - "@multiformats/multiaddr": "^12.2.3", - "it-first": "^3.0.6", - "it-pipe": "^3.0.1", + "@libp2p/crypto": "^5.1.6", + "@libp2p/interface": "^2.10.4", + "@libp2p/interface-internal": "^2.3.17", + "@multiformats/multiaddr": "^12.4.4", + "it-byte-stream": "^2.0.2", + "main-event": "^1.0.1", "uint8arrays": "^5.1.0" } }, @@ -14092,13 +14035,13 @@ } }, "@libp2p/websockets": { - "version": "9.2.14", - "resolved": "https://registry.npmjs.org/@libp2p/websockets/-/websockets-9.2.14.tgz", - "integrity": "sha512-7KeylINdxW76fFkKuM7/axxz8J3kHlNgrlcQYfrwZSj7JDZG19IqJJZmVOcQBa6RgAnPjjz2F1TFFWQhvSIGJA==", + "version": "9.2.16", + "resolved": "https://registry.npmjs.org/@libp2p/websockets/-/websockets-9.2.16.tgz", + "integrity": "sha512-jD96ClKeaZvTs+YyGJxOOQSWVe9e9SHmacJ9uE9dqWZjCbPICdCJnOj2pLg258WxVrc+/MRFKSHE/v5f2ZJGCA==", "requires": { - "@libp2p/interface": "^2.10.3", - "@libp2p/utils": "^6.6.6", - "@multiformats/multiaddr": "^12.4.0", + "@libp2p/interface": "^2.10.4", + "@libp2p/utils": "^6.7.0", + "@multiformats/multiaddr": "^12.4.4", "@multiformats/multiaddr-matcher": "^1.7.2", "@multiformats/multiaddr-to-uri": "^11.0.0", "@types/ws": "^8.18.1", @@ -14112,15 +14055,14 @@ } }, "@multiformats/dns": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@multiformats/dns/-/dns-1.0.6.tgz", - "integrity": "sha512-nt/5UqjMPtyvkG9BQYdJ4GfLK3nMqGpFZOzf4hAmIa0sJh2LlS9YKXZ4FgwBDsaHvzZqR/rUFIywIc7pkHNNuw==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@multiformats/dns/-/dns-1.0.10.tgz", + "integrity": "sha512-6X200ceQLns0b/CU0S/So16tGjB5eIXHJ1xvJMPoWaKFHWSgfpW2EhkWJrqap4U3+c37zcowVR0ToPXeYEL7Vw==", "requires": { - "@types/dns-packet": "^5.6.5", "buffer": "^6.0.3", "dns-packet": "^5.6.1", "hashlru": "^2.3.0", - "p-queue": "^8.0.1", + "p-queue": "^9.0.0", "progress-events": "^1.0.0", "uint8arrays": "^5.0.2" } @@ -14158,22 +14100,22 @@ } }, "@multiformats/multiaddr-to-uri": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr-to-uri/-/multiaddr-to-uri-11.0.0.tgz", - "integrity": "sha512-9RNmlIGwZbBLsHekT50dbt4o4u8Iciw9kGjv+WHiGxQdsJ6xKKjU1+C0Vbas6RilMbaVOAOnEyfNcXbUmTkLxQ==", + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr-to-uri/-/multiaddr-to-uri-11.0.2.tgz", + "integrity": "sha512-SiLFD54zeOJ0qMgo9xv1Tl9O5YktDKAVDP4q4hL16mSq4O4sfFNagNADz8eAofxd6TfQUzGQ3TkRRG9IY2uHRg==", "requires": { "@multiformats/multiaddr": "^12.3.0" } }, "@noble/ciphers": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.6.0.tgz", - "integrity": "sha512-mIbq/R9QXk5/cTfESb1OKtyFnk7oc1Om/8onA1158K9/OZUQFDEVy55jVTato+xmp3XX6F6Qh0zz0Nc1AxAlRQ==" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz", + "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==" }, "@noble/curves": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.2.tgz", - "integrity": "sha512-HxngEd2XUcg9xi20JkwlLCtYwfoFw4JGkuZpT+WlsPD4gB/cxkvTD8fSsoAnphGZhFdZYKeQIPCuFlWPm1uE0g==", + "version": "1.9.7", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz", + "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==", "requires": { "@noble/hashes": "1.8.0" } @@ -15001,19 +14943,21 @@ } }, "@supabase/auth-js": { - "version": "2.70.0", - "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.70.0.tgz", - "integrity": "sha512-BaAK/tOAZFJtzF1sE3gJ2FwTjLf4ky3PSvcvLGEgEmO4BSBkwWKu8l67rLLIBZPDnCyV7Owk2uPyKHa0kj5QGg==", + "version": "2.77.0", + "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.77.0.tgz", + "integrity": "sha512-IRxyj2l46EutSX7AbGkHA7LSmrgqnXjPfKouBlGT6NqS1YOm+jMMwfdhf6zP5EZ4giUfdt2u+yHIBgyXU/LEtg==", "requires": { - "@supabase/node-fetch": "^2.6.14" + "@supabase/node-fetch": "2.6.15", + "tslib": "2.8.1" } }, "@supabase/functions-js": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.4.4.tgz", - "integrity": "sha512-WL2p6r4AXNGwop7iwvul2BvOtuJ1YQy8EbOd0dhG1oN1q8el/BIRSFCFnWAMM/vJJlHWLi4ad22sKbKr9mvjoA==", + "version": "2.77.0", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.77.0.tgz", + "integrity": "sha512-MxNW3YoQysbiVEiLAozCTqk1urswtVjAZggeZ5Sw+vJ+u1EvFNmTnirzwTj7M8XjTOMmorheruPmNtfHEwudvw==", "requires": { - "@supabase/node-fetch": "^2.6.14" + "@supabase/node-fetch": "2.6.15", + "tslib": "2.8.1" } }, "@supabase/node-fetch": { @@ -15025,43 +14969,46 @@ } }, "@supabase/postgrest-js": { - "version": "1.19.4", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.19.4.tgz", - "integrity": "sha512-O4soKqKtZIW3olqmbXXbKugUtByD2jPa8kL2m2c1oozAO11uCcGrRhkZL0kVxjBLrXHE0mdSkFsMj7jDSfyNpw==", + "version": "2.77.0", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-2.77.0.tgz", + "integrity": "sha512-Ly8C48x875JcUXBdML7SPRjO1Bpmjo6Sax/Tz4Ij6YU5paCrGKxEYDBVLP2eHKkQvf+LQ+GIbRFF1DorRvyfwQ==", "requires": { - "@supabase/node-fetch": "^2.6.14" + "@supabase/node-fetch": "2.6.15", + "tslib": "2.8.1" } }, "@supabase/realtime-js": { - "version": "2.11.10", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.11.10.tgz", - "integrity": "sha512-SJKVa7EejnuyfImrbzx+HaD9i6T784khuw1zP+MBD7BmJYChegGxYigPzkKX8CK8nGuDntmeSD3fvriaH0EGZA==", + "version": "2.77.0", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.77.0.tgz", + "integrity": "sha512-Ycv2VZ8yTjvlR2NQecGJUlP0Dh4LhF1Y1oZ3IMQcjjTbDriWSQgfc9HSLIQUaY/eTdtfXfyVKOGE+tieWneV8Q==", "requires": { - "@supabase/node-fetch": "^2.6.13", + "@supabase/node-fetch": "2.6.15", "@types/phoenix": "^1.6.6", "@types/ws": "^8.18.1", + "tslib": "2.8.1", "ws": "^8.18.2" } }, "@supabase/storage-js": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.7.1.tgz", - "integrity": "sha512-asYHcyDR1fKqrMpytAS1zjyEfvxuOIp1CIXX7ji4lHHcJKqyk+sLl/Vxgm4sN6u8zvuUtae9e4kDxQP2qrwWBA==", + "version": "2.77.0", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.77.0.tgz", + "integrity": "sha512-4+OpVA4U0C4HM1QuINlgjqFxnRsmqPnuurTDN4m6nRanafuqQQ/UtMjdUU57iygBo70IGBlBefZ8gGNWzD1sLg==", "requires": { - "@supabase/node-fetch": "^2.6.14" + "@supabase/node-fetch": "2.6.15", + "tslib": "2.8.1" } }, "@supabase/supabase-js": { - "version": "2.50.0", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.50.0.tgz", - "integrity": "sha512-M1Gd5tPaaghYZ9OjeO1iORRqbTWFEz/cF3pPubRnMPzA+A8SiUsXXWDP+DWsASZcjEcVEcVQIAF38i5wrijYOg==", + "version": "2.77.0", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.77.0.tgz", + "integrity": "sha512-s6OQ8RZ0ioQCwVDh2Tv502XaUQCuRbbjpujYJB1h0JWELRsqjLDsgB5kZUkETPgtTAjJk7z97YPUsRg80PohfA==", "requires": { - "@supabase/auth-js": "2.70.0", - "@supabase/functions-js": "2.4.4", + "@supabase/auth-js": "2.77.0", + "@supabase/functions-js": "2.77.0", "@supabase/node-fetch": "2.6.15", - "@supabase/postgrest-js": "1.19.4", - "@supabase/realtime-js": "2.11.10", - "@supabase/storage-js": "2.7.1" + "@supabase/postgrest-js": "2.77.0", + "@supabase/realtime-js": "2.77.0", + "@supabase/storage-js": "2.77.0" } }, "@sveltejs/acorn-typescript": { @@ -15129,14 +15076,6 @@ "integrity": "sha512-xFdR6tkm0MWvBfO8xXCSsinYxHcqkQUlcHeSpMC2ukzOb6lwQAfDmW+Qt0AvlGd8HpsS28qKsB+oPeJn9I39jg==", "dev": true }, - "@types/dns-packet": { - "version": "5.6.5", - "resolved": "https://registry.npmjs.org/@types/dns-packet/-/dns-packet-5.6.5.tgz", - "integrity": "sha512-qXOC7XLOEe43ehtWJCMnQXvgcIpv6rPmQ1jXT98Ad8A3TB1Ue50jsCbSSSyuazScEuZ/Q026vHbrOTVkmwA+7Q==", - "requires": { - "@types/node": "*" - } - }, "@types/estree": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", @@ -15155,6 +15094,19 @@ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, + "@types/lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==" + }, + "@types/lodash.debounce": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/lodash.debounce/-/lodash.debounce-4.0.9.tgz", + "integrity": "sha512-Ma5JcgTREwpLRwMM+XwBR7DaWe96nC38uCBDFKZWbNKD+osjVzdpnUSwBcqCptrp16sSOLBAUb50Car5I0TCsQ==", + "requires": { + "@types/lodash": "*" + } + }, "@types/ms": { "version": "0.7.31", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", @@ -15355,9 +15307,9 @@ } }, "@types/readable-stream": { - "version": "4.0.21", - "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.21.tgz", - "integrity": "sha512-19eKVv9tugr03IgfXlA9UVUVRbW6IuqRO5B92Dl4a6pT7K8uaGrNS0GkxiZD0BOk6PLuXl5FhWl//eX/pzYdTQ==", + "version": "4.0.22", + "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.22.tgz", + "integrity": "sha512-/FFhJpfCLAPwAcN3mFycNUa77ddnr8jTgF5VmSNetaemWB2cIlfCA9t0YTM3JAT0wOcv8D4tjPo7pkDhK3EJIg==", "requires": { "@types/node": "*" } @@ -15546,73 +15498,35 @@ } } }, - "@waku/discovery": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@waku/discovery/-/discovery-0.0.8.tgz", - "integrity": "sha512-Yh1pNlGasRuq7LHB5bfa5VUkvfy4vT2xWfOOYU8LD6r+5w4WIkBI18hDrOQlGtXHdNLfcoTQK7YWqqEPFNNxlg==", + "@waku/core": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@waku/core/-/core-0.0.39.tgz", + "integrity": "sha512-Vgb52md4GOzM5z9xfULzjN2tvVHKszFmj5zc2mVDoIgySH4cFBgDTHtVtGEwrFRFWadWYKBtpKBdmG3X+W7SNA==", "requires": { - "@waku/core": "0.0.35", - "@waku/enr": "0.0.29", - "@waku/interfaces": "0.0.30", - "@waku/proto": "^0.0.10", - "@waku/utils": "0.0.23", + "@libp2p/ping": "2.0.35", + "@noble/hashes": "^1.3.2", + "@waku/enr": "^0.0.33", + "@waku/interfaces": "0.0.34", + "@waku/proto": "0.0.14", + "@waku/utils": "0.0.27", "debug": "^4.3.4", - "dns-over-http-resolver": "^3.0.8", - "hi-base32": "^0.5.1", - "uint8arrays": "^5.0.1" + "it-all": "^3.0.4", + "it-length-prefixed": "^9.0.4", + "it-pipe": "^3.0.1", + "uint8arraylist": "^2.4.3", + "uuid": "^9.0.0" }, "dependencies": { - "@waku/core": { - "version": "0.0.35", - "resolved": "https://registry.npmjs.org/@waku/core/-/core-0.0.35.tgz", - "integrity": "sha512-UbAgBznjewZed4ZAd30BUTq6OsiqTgVQkFD1PnJxw+K4hn0AUKHjPYRTYOzkJvxg7nXd7Y6LCZ7s6XeujwrR4w==", + "it-length-prefixed": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/it-length-prefixed/-/it-length-prefixed-9.1.1.tgz", + "integrity": "sha512-O88nBweT6M9ozsmok68/auKH7ik/slNM4pYbM9lrfy2z5QnpokW5SlrepHZDKtN71llhG2sZvd6uY4SAl+lAQg==", "requires": { - "@libp2p/ping": "2.0.1", - "@waku/enr": "^0.0.29", - "@waku/interfaces": "0.0.30", - "@waku/proto": "0.0.10", - "@waku/utils": "0.0.23", - "debug": "^4.3.4", - "it-all": "^3.0.4", - "it-length-prefixed": "^9.0.4", - "it-pipe": "^3.0.1", - "uint8arraylist": "^2.4.3", - "uuid": "^9.0.0" - } - }, - "libp2p": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/libp2p/-/libp2p-2.1.8.tgz", - "integrity": "sha512-OzUUgAs6983lP2FDqc3oABeUAyvd3iJ/BlYjwmjddpUwQO6gemuJFpWujagj2Vtj+oPosGrrPGWqv+WPnTkHUA==", - "optional": true, - "peer": true, - "requires": { - "@libp2p/crypto": "^5.0.5", - "@libp2p/interface": "^2.1.3", - "@libp2p/interface-internal": "^2.0.8", - "@libp2p/logger": "^5.1.1", - "@libp2p/multistream-select": "^6.0.6", - "@libp2p/peer-collections": "^6.0.8", - "@libp2p/peer-id": "^5.0.5", - "@libp2p/peer-store": "^11.0.8", - "@libp2p/utils": "^6.1.1", - "@multiformats/dns": "^1.0.6", - "@multiformats/multiaddr": "^12.2.3", - "@multiformats/multiaddr-matcher": "^1.2.1", - "any-signal": "^4.1.1", - "datastore-core": "^10.0.0", - "interface-datastore": "^8.3.0", - "it-byte-stream": "^1.0.12", - "it-merge": "^3.0.5", - "it-parallel": "^3.0.7", - "merge-options": "^3.0.4", - "multiformats": "^13.1.0", - "p-defer": "^4.0.1", - "p-retry": "^6.2.0", - "progress-events": "^1.0.0", - "race-event": "^1.3.0", - "race-signal": "^1.0.2", - "uint8arrays": "^5.1.0" + "it-reader": "^6.0.1", + "it-stream-types": "^2.0.1", + "uint8-varint": "^2.0.1", + "uint8arraylist": "^2.0.0", + "uint8arrays": "^5.0.1" } }, "uuid": { @@ -15622,135 +15536,189 @@ } } }, + "@waku/discovery": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/@waku/discovery/-/discovery-0.0.12.tgz", + "integrity": "sha512-4ItzLMQA79xveu5I9ymx3Q1A/Aj0fGjdi8TnPnb9xnm2O927w71efnkxmHo3rwATEYonXiB34NpMN2ecAp1enA==", + "requires": { + "@waku/core": "0.0.39", + "@waku/enr": "0.0.33", + "@waku/interfaces": "0.0.34", + "@waku/proto": "^0.0.14", + "@waku/utils": "0.0.27", + "debug": "^4.3.4", + "dns-over-http-resolver": "^3.0.8", + "hi-base32": "^0.5.1", + "uint8arrays": "^5.0.1" + } + }, "@waku/enr": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@waku/enr/-/enr-0.0.29.tgz", - "integrity": "sha512-q7vQmD4tDi5o4o6VNDhSLLzUcZNQxbs4whbgz6L+M2swPsQ6vS3dS2PNmR3qt3ixvHUpEwWGEfVp9meMBxvVBA==", + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/@waku/enr/-/enr-0.0.33.tgz", + "integrity": "sha512-OVZoCXc9Lto2tUfo+iSqQ61pmRm/QikYSJWc3InKmsL3qtfpMShiChK/X/PafwdRFVA28b46itm++KUqMjGi+A==", "requires": { "@ethersproject/rlp": "^5.7.0", - "@libp2p/crypto": "^5.0.1", - "@libp2p/peer-id": "^5.0.1", + "@libp2p/crypto": "5.1.6", + "@libp2p/peer-id": "5.1.7", "@multiformats/multiaddr": "^12.0.0", "@noble/secp256k1": "^1.7.1", - "@waku/utils": "0.0.23", + "@waku/utils": "0.0.27", "debug": "^4.3.4", "js-sha3": "^0.9.2" + }, + "dependencies": { + "@libp2p/crypto": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/@libp2p/crypto/-/crypto-5.1.6.tgz", + "integrity": "sha512-hCNDInAsjfFTOr1ZlVTVuRKpkGEbR1GC+cDbmn2Vslwd0dHZHqhKv5ye7l6NZaiNUxxqUCVmqvJIWqVLuTPDdg==", + "requires": { + "@libp2p/interface": "^2.10.4", + "@noble/curves": "^1.9.1", + "@noble/hashes": "^1.8.0", + "multiformats": "^13.3.6", + "protons-runtime": "^5.5.0", + "uint8arraylist": "^2.4.8", + "uint8arrays": "^5.1.0" + } + }, + "@libp2p/peer-id": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-5.1.7.tgz", + "integrity": "sha512-KBT8Edx/Sqxj0vKe5mPM2PQx06VDmGzx2BZ1M+LiDAM94q9Sag4tyaUugHyTrJKGG8V+7lx1Fz46kfbezuwR9g==", + "requires": { + "@libp2p/crypto": "^5.1.6", + "@libp2p/interface": "^2.10.4", + "multiformats": "^13.3.6", + "uint8arrays": "^5.1.0" + } + } } }, "@waku/interfaces": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/@waku/interfaces/-/interfaces-0.0.30.tgz", - "integrity": "sha512-2cR8+u0CePmUFBB4vVL1zw403Rki5hK+7rKQH0WikDT4SD4lJTdMV4j3q3+YBfPTsMJrFCVFhLcqpeBADgavAw==", - "requires": { - "@waku/proto": "^0.0.10" - } - }, - "@waku/message-hash": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/@waku/message-hash/-/message-hash-0.1.19.tgz", - "integrity": "sha512-fl+qky3MQK8l3HTT5wq23NcdYFYNqVcUVwBblX9/IArcDlDNjEEdK68K3n8rFWxBBd2JAK0RxU7MMkLiK3vWUA==", - "requires": { - "@noble/hashes": "^1.3.2", - "@waku/utils": "0.0.23" - } + "version": "0.0.34", + "resolved": "https://registry.npmjs.org/@waku/interfaces/-/interfaces-0.0.34.tgz", + "integrity": "sha512-15+SOfr8cKk5J2ukSucy/T6j23jIudRt1hr/N09YaNUvQ19iXofjne5MU/P8otmgP8daedCijCagRB0rwoHKKQ==" }, "@waku/proto": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/@waku/proto/-/proto-0.0.10.tgz", - "integrity": "sha512-dgBOjwRtduZSHxmr2IqDfrzgDnog8f/qiseLV39W1WNDkVLqpNT7K2bPDPz5/e2e7EtVtTAzbGPZPakOswn5FQ==", + "version": "0.0.14", + "resolved": "https://registry.npmjs.org/@waku/proto/-/proto-0.0.14.tgz", + "integrity": "sha512-8zKVHrKzzKQfZBVnpSmJ6G8H1Zd4Gqms1tj3L6K2WCE/NQDR8wJtFwziab3dJ/5rKUTjfPAWFJ57RN97ltzxGA==", "requires": { "protons-runtime": "^5.4.0" } }, "@waku/sdk": { - "version": "0.0.31", - "resolved": "https://registry.npmjs.org/@waku/sdk/-/sdk-0.0.31.tgz", - "integrity": "sha512-vlKXitHYMsu8fOXwN+9A7N71Xh3/zVUTO4CEh0zc2ihjtQcazqkU0rX0sOsAJr/XmDZDUAzkQX6aCWULyYRXMw==", + "version": "0.0.35", + "resolved": "https://registry.npmjs.org/@waku/sdk/-/sdk-0.0.35.tgz", + "integrity": "sha512-bnXl5b8BDCOKSrJ7V6PiJshc3bsBWaGweWy20IsGlXalCJj7257wK31lZxEP62lTFKHS8tPfG+EvDwrPK4oxKA==", "requires": { - "@chainsafe/libp2p-noise": "16.0.0", - "@libp2p/bootstrap": "^11.0.1", - "@libp2p/identify": "^3.0.1", - "@libp2p/mplex": "^11.0.1", - "@libp2p/ping": "2.0.1", - "@libp2p/websockets": "^9.0.1", + "@chainsafe/libp2p-noise": "16.1.3", + "@libp2p/bootstrap": "11.0.42", + "@libp2p/identify": "3.0.36", + "@libp2p/mplex": "11.0.42", + "@libp2p/ping": "2.0.35", + "@libp2p/websockets": "9.2.16", "@noble/hashes": "^1.3.3", - "@waku/core": "0.0.35", - "@waku/discovery": "0.0.8", - "@waku/interfaces": "0.0.30", - "@waku/message-hash": "0.1.19", - "@waku/proto": "^0.0.10", - "@waku/utils": "0.0.23", - "libp2p": "2.1.8" + "@types/lodash.debounce": "^4.0.9", + "@waku/core": "0.0.39", + "@waku/discovery": "0.0.12", + "@waku/interfaces": "0.0.34", + "@waku/proto": "^0.0.14", + "@waku/sds": "^0.0.7", + "@waku/utils": "0.0.27", + "libp2p": "2.8.11", + "lodash.debounce": "^4.0.8" + } + }, + "@waku/sds": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@waku/sds/-/sds-0.0.7.tgz", + "integrity": "sha512-wPZASJ1iH9K5gSgHMvmahRdnD/yNrNj/35R4H0SZGhUaViOyUGMooJH0YewZmVc1Dvy2L9mDitHurJWqLoWbcg==", + "requires": { + "@libp2p/interface": "2.10.4", + "@noble/hashes": "^1.7.1", + "@waku/proto": "^0.0.14", + "@waku/utils": "^0.0.27", + "chai": "^5.1.2", + "lodash": "^4.17.21" }, "dependencies": { - "@waku/core": { - "version": "0.0.35", - "resolved": "https://registry.npmjs.org/@waku/core/-/core-0.0.35.tgz", - "integrity": "sha512-UbAgBznjewZed4ZAd30BUTq6OsiqTgVQkFD1PnJxw+K4hn0AUKHjPYRTYOzkJvxg7nXd7Y6LCZ7s6XeujwrR4w==", + "@libp2p/interface": { + "version": "2.10.4", + "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-2.10.4.tgz", + "integrity": "sha512-FX3uujZgjH9bb7mDSNR54j3JzJnF/ngnQH20GQ1wPk5irIeHDvmzRlUj3bJ3hHQmdB2MxLZNT6e39O1es10LFA==", "requires": { - "@libp2p/ping": "2.0.1", - "@waku/enr": "^0.0.29", - "@waku/interfaces": "0.0.30", - "@waku/proto": "0.0.10", - "@waku/utils": "0.0.23", - "debug": "^4.3.4", - "it-all": "^3.0.4", - "it-length-prefixed": "^9.0.4", - "it-pipe": "^3.0.1", - "uint8arraylist": "^2.4.3", - "uuid": "^9.0.0" + "@multiformats/multiaddr": "^12.4.4", + "it-pushable": "^3.2.3", + "it-stream-types": "^2.0.2", + "main-event": "^1.0.1", + "multiformats": "^13.3.6", + "progress-events": "^1.0.1", + "uint8arraylist": "^2.4.8" } - }, - "libp2p": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/libp2p/-/libp2p-2.1.8.tgz", - "integrity": "sha512-OzUUgAs6983lP2FDqc3oABeUAyvd3iJ/BlYjwmjddpUwQO6gemuJFpWujagj2Vtj+oPosGrrPGWqv+WPnTkHUA==", - "requires": { - "@libp2p/crypto": "^5.0.5", - "@libp2p/interface": "^2.1.3", - "@libp2p/interface-internal": "^2.0.8", - "@libp2p/logger": "^5.1.1", - "@libp2p/multistream-select": "^6.0.6", - "@libp2p/peer-collections": "^6.0.8", - "@libp2p/peer-id": "^5.0.5", - "@libp2p/peer-store": "^11.0.8", - "@libp2p/utils": "^6.1.1", - "@multiformats/dns": "^1.0.6", - "@multiformats/multiaddr": "^12.2.3", - "@multiformats/multiaddr-matcher": "^1.2.1", - "any-signal": "^4.1.1", - "datastore-core": "^10.0.0", - "interface-datastore": "^8.3.0", - "it-byte-stream": "^1.0.12", - "it-merge": "^3.0.5", - "it-parallel": "^3.0.7", - "merge-options": "^3.0.4", - "multiformats": "^13.1.0", - "p-defer": "^4.0.1", - "p-retry": "^6.2.0", - "progress-events": "^1.0.0", - "race-event": "^1.3.0", - "race-signal": "^1.0.2", - "uint8arrays": "^5.1.0" - } - }, - "uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==" } } }, "@waku/utils": { - "version": "0.0.23", - "resolved": "https://registry.npmjs.org/@waku/utils/-/utils-0.0.23.tgz", - "integrity": "sha512-8abBIAI7hq1kb5WVpv0o6CCW5Go3bwxo1xovKXfTZfdERwgV7/R6VcijKaUWOHF9SYIskyJuC98TFx/1HgrUBw==", + "version": "0.0.27", + "resolved": "https://registry.npmjs.org/@waku/utils/-/utils-0.0.27.tgz", + "integrity": "sha512-kIS/EN9Xoc5ik2c4MweqcvV3NEcl+CDmg09jpVUVG7fB2/yxVRakBlROytGn+vALR4pcHom1tW2dW1vtofCfFw==", "requires": { "@noble/hashes": "^1.3.2", - "@waku/interfaces": "0.0.30", + "@waku/interfaces": "0.0.34", "chai": "^4.3.10", "debug": "^4.3.4", "uint8arrays": "^5.0.1" + }, + "dependencies": { + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==" + }, + "chai": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", + "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.1.0" + } + }, + "check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "requires": { + "get-func-name": "^2.0.2" + } + }, + "deep-eql": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", + "requires": { + "type-detect": "^4.0.0" + } + }, + "loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "requires": { + "get-func-name": "^2.0.1" + } + }, + "pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==" + } } }, "abort-controller": { @@ -15911,9 +15879,9 @@ } }, "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==" }, "async-function": { "version": "1.0.0", @@ -15948,9 +15916,9 @@ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, "bl": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-6.1.0.tgz", - "integrity": "sha512-ClDyJGQkc8ZtzdAAbAwBmhMSpwN/sC9HA8jxdYm6nVUbCfZbe2mgza4qh7AuEYyEPB/c4Kznf9s66bnsKMQDjw==", + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/bl/-/bl-6.1.4.tgz", + "integrity": "sha512-ZV/9asSuknOExbM/zPPA8z00lc1ihPKWaStHkkQrxHNeYx+yY+TmF+v80dpv2G0mv3HVXBu7ryoAsxbFFhf4eg==", "requires": { "@types/readable-stream": "^4.0.0", "buffer": "^6.0.3", @@ -15982,6 +15950,17 @@ "fill-range": "^7.1.1" } }, + "broker-factory": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/broker-factory/-/broker-factory-3.1.10.tgz", + "integrity": "sha512-BzqK5GYFhvVFvO13uzPN0SCiOsOQuhMUbsGvTXDJMA2/N4GvIlFdxEuueE+60Zk841bBU5G3+fl2cqYEo0wgGg==", + "requires": { + "@babel/runtime": "^7.28.4", + "fast-unique-numbers": "^9.0.24", + "tslib": "^2.8.1", + "worker-factory": "^7.0.46" + } + }, "buffer": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", @@ -16041,17 +16020,15 @@ "dev": true }, "chai": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", - "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz", + "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==", "requires": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.3", - "deep-eql": "^4.1.3", - "get-func-name": "^2.0.2", - "loupe": "^2.3.6", - "pathval": "^1.1.1", - "type-detect": "^4.1.0" + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" } }, "chalk": { @@ -16065,12 +16042,9 @@ } }, "check-error": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", - "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", - "requires": { - "get-func-name": "^2.0.2" - } + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==" }, "chokidar": { "version": "4.0.1", @@ -16238,12 +16212,9 @@ } }, "deep-eql": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", - "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", - "requires": { - "type-detect": "^4.0.0" - } + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==" }, "deep-is": { "version": "0.1.4", @@ -16331,9 +16302,9 @@ "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==" }, "dns-over-http-resolver": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/dns-over-http-resolver/-/dns-over-http-resolver-3.0.15.tgz", - "integrity": "sha512-h2Ldu6b8LjW725Q5zjjv7T5s1K3dPjlU3DWvcEFqB3Ksb3QmqC4dHhPKlGlBS/1P47D4T5arZMiE4dD4OIfO6A==", + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/dns-over-http-resolver/-/dns-over-http-resolver-3.0.16.tgz", + "integrity": "sha512-Qnq8HhNRuMnA61pf1lVPlStCAv1BVrraCx0umPESWgYKf995tUMF5oNhW59PKdnf7E8d5yqwHlEoFywXjsNMCw==", "requires": { "quick-lru": "^7.0.0", "weald": "^1.0.2" @@ -16916,12 +16887,12 @@ "dev": true }, "fast-unique-numbers": { - "version": "8.0.13", - "resolved": "https://registry.npmjs.org/fast-unique-numbers/-/fast-unique-numbers-8.0.13.tgz", - "integrity": "sha512-7OnTFAVPefgw2eBJ1xj2PGGR9FwYzSUso9decayHgCDX4sJkHLdcsYTytTg+tYv+wKF3U8gJuSBz2jJpQV4u/g==", + "version": "9.0.24", + "resolved": "https://registry.npmjs.org/fast-unique-numbers/-/fast-unique-numbers-9.0.24.tgz", + "integrity": "sha512-Dv0BYn4waOWse94j16rsZ5w/0zoaCa74O3q6IZjMqaXbtT92Q+Sb6pPk+phGzD8Xh+nueQmSRI3tSCaHKidzKw==", "requires": { - "@babel/runtime": "^7.23.8", - "tslib": "^2.6.2" + "@babel/runtime": "^7.28.4", + "tslib": "^2.8.1" } }, "fast-xml-parser": { @@ -17004,25 +16975,25 @@ } }, "firebase": { - "version": "12.2.1", - "resolved": "https://registry.npmjs.org/firebase/-/firebase-12.2.1.tgz", - "integrity": "sha512-UkuW2ZYaq/QuOQ24bfaqmkVqoBFhkA/ptATfPuRtc5vdm+zhwc3mfZBwFe6LqH9yrCN/6rAblgxKz2/0tDvA7w==", + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/firebase/-/firebase-12.4.0.tgz", + "integrity": "sha512-/chNgDQ6ppPPGOQO4jctxOa/5JeQxuhaxA7Y90K0I+n/wPfoO8mRveedhVUdo7ExLcWUivnnow/ouSLYSI5Icw==", "requires": { - "@firebase/ai": "2.2.1", - "@firebase/analytics": "0.10.18", - "@firebase/analytics-compat": "0.2.24", - "@firebase/app": "0.14.2", + "@firebase/ai": "2.4.0", + "@firebase/analytics": "0.10.19", + "@firebase/analytics-compat": "0.2.25", + "@firebase/app": "0.14.4", "@firebase/app-check": "0.11.0", "@firebase/app-check-compat": "0.4.0", - "@firebase/app-compat": "0.5.2", + "@firebase/app-compat": "0.5.4", "@firebase/app-types": "0.9.3", "@firebase/auth": "1.11.0", "@firebase/auth-compat": "0.6.0", "@firebase/data-connect": "0.3.11", "@firebase/database": "1.1.0", "@firebase/database-compat": "2.1.0", - "@firebase/firestore": "4.9.1", - "@firebase/firestore-compat": "0.4.1", + "@firebase/firestore": "4.9.2", + "@firebase/firestore-compat": "0.4.2", "@firebase/functions": "0.13.1", "@firebase/functions-compat": "0.4.1", "@firebase/installations": "0.6.19", @@ -17031,8 +17002,8 @@ "@firebase/messaging-compat": "0.2.23", "@firebase/performance": "0.7.9", "@firebase/performance-compat": "0.2.22", - "@firebase/remote-config": "0.6.6", - "@firebase/remote-config-compat": "0.2.19", + "@firebase/remote-config": "0.7.0", + "@firebase/remote-config-compat": "0.2.20", "@firebase/storage": "0.14.0", "@firebase/storage-compat": "0.4.0", "@firebase/util": "1.13.0" @@ -17375,13 +17346,9 @@ } }, "ip-address": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", - "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", - "requires": { - "jsbn": "1.1.0", - "sprintf-js": "^1.1.3" - } + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz", + "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==" }, "is-array-buffer": { "version": "3.0.5", @@ -17527,9 +17494,9 @@ "dev": true }, "is-network-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz", - "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.0.tgz", + "integrity": "sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==" }, "is-number": { "version": "7.0.0", @@ -17661,12 +17628,14 @@ "integrity": "sha512-fz1oJJ36ciGnu2LntAlE6SA97bFZpW7Rnt0uEc1yazzR2nKokZLr8lIRtgnpex4NsmaBcvHF+Z9krljWFy/mmg==" }, "it-byte-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/it-byte-stream/-/it-byte-stream-1.1.1.tgz", - "integrity": "sha512-OIOb8PvK9ZV7MHvyxIDNyN3jmrxrJdx99G0RIYYb3Tzo1OWv+O1C6mfg7nnlDuuTQz2POYFXe87AShKAEl+POw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/it-byte-stream/-/it-byte-stream-2.0.3.tgz", + "integrity": "sha512-h7FFcn4DWiWsJw1dCJhuPdiY8cGi1z8g4aLAfFspTaJbwQxvEMlEBFG/f8lIVGwM8YK26ClM4/9lxLVhF33b8g==", "requires": { - "it-queueless-pushable": "^1.0.0", + "abort-error": "^1.0.1", + "it-queueless-pushable": "^2.0.0", "it-stream-types": "^2.0.2", + "race-signal": "^1.1.3", "uint8arraylist": "^2.4.8" } }, @@ -17683,11 +17652,6 @@ "it-peekable": "^3.0.0" } }, - "it-first": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/it-first/-/it-first-3.0.9.tgz", - "integrity": "sha512-ZWYun273Gbl7CwiF6kK5xBtIKR56H1NoRaiJek2QzDirgen24u8XZ0Nk+jdnJSuCTPxC2ul1TuXKxu/7eK6NuA==" - }, "it-foreach": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/it-foreach/-/it-foreach-2.1.4.tgz", @@ -17697,9 +17661,9 @@ } }, "it-length-prefixed": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/it-length-prefixed/-/it-length-prefixed-9.1.1.tgz", - "integrity": "sha512-O88nBweT6M9ozsmok68/auKH7ik/slNM4pYbM9lrfy2z5QnpokW5SlrepHZDKtN71llhG2sZvd6uY4SAl+lAQg==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/it-length-prefixed/-/it-length-prefixed-10.0.1.tgz", + "integrity": "sha512-BhyluvGps26u9a7eQIpOI1YN7mFgi8lFwmiPi07whewbBARKAG9LE09Odc8s1Wtbt2MB6rNUrl7j9vvfXTJwdQ==", "requires": { "it-reader": "^6.0.1", "it-stream-types": "^2.0.1", @@ -17709,11 +17673,12 @@ } }, "it-length-prefixed-stream": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/it-length-prefixed-stream/-/it-length-prefixed-stream-1.2.1.tgz", - "integrity": "sha512-FYqlxc2toUoK+aPO5r3KDBIUG1mOvk2DzmjQcsfLUTHRWMJP4Va9855tVzg/22Bj+VUUaT7gxBg7HmbiCxTK4w==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/it-length-prefixed-stream/-/it-length-prefixed-stream-2.0.3.tgz", + "integrity": "sha512-Ns3jNFy2mcFnV59llCYitJnFHapg8wIcOsWkEaAwOkG9v4HBCk24nze/zGDQjiJdDTyFXTT5GOY3M/uaksot3w==", "requires": { - "it-byte-stream": "^1.0.0", + "abort-error": "^1.0.1", + "it-byte-stream": "^2.0.0", "it-stream-types": "^2.0.2", "uint8-varint": "^2.0.4", "uint8arraylist": "^2.4.8" @@ -17733,18 +17698,6 @@ "integrity": "sha512-nnnFSUxKlkZVZD7c0jYw6rDxCcAQYcMsFj27thf7KkDhpj0EA0g9KHPxbFzHuDoc6US2EPS/MtplkNj8sbCx4Q==", "requires": { "it-queueless-pushable": "^2.0.0" - }, - "dependencies": { - "it-queueless-pushable": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/it-queueless-pushable/-/it-queueless-pushable-2.0.2.tgz", - "integrity": "sha512-2BqIt7XvDdgEgudLAdJkdseAwbVSBc0yAd8yPVHrll4eBuJPWIj9+8C3OIxzEKwhswLtd3bi+yLrzgw9gCyxMA==", - "requires": { - "abort-error": "^1.0.1", - "p-defer": "^4.0.1", - "race-signal": "^1.1.3" - } - } } }, "it-pair": { @@ -17788,42 +17741,6 @@ "it-length-prefixed-stream": "^2.0.0", "it-stream-types": "^2.0.2", "uint8arraylist": "^2.4.8" - }, - "dependencies": { - "it-byte-stream": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/it-byte-stream/-/it-byte-stream-2.0.3.tgz", - "integrity": "sha512-h7FFcn4DWiWsJw1dCJhuPdiY8cGi1z8g4aLAfFspTaJbwQxvEMlEBFG/f8lIVGwM8YK26ClM4/9lxLVhF33b8g==", - "requires": { - "abort-error": "^1.0.1", - "it-queueless-pushable": "^2.0.0", - "it-stream-types": "^2.0.2", - "race-signal": "^1.1.3", - "uint8arraylist": "^2.4.8" - } - }, - "it-length-prefixed-stream": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/it-length-prefixed-stream/-/it-length-prefixed-stream-2.0.3.tgz", - "integrity": "sha512-Ns3jNFy2mcFnV59llCYitJnFHapg8wIcOsWkEaAwOkG9v4HBCk24nze/zGDQjiJdDTyFXTT5GOY3M/uaksot3w==", - "requires": { - "abort-error": "^1.0.1", - "it-byte-stream": "^2.0.0", - "it-stream-types": "^2.0.2", - "uint8-varint": "^2.0.4", - "uint8arraylist": "^2.4.8" - } - }, - "it-queueless-pushable": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/it-queueless-pushable/-/it-queueless-pushable-2.0.2.tgz", - "integrity": "sha512-2BqIt7XvDdgEgudLAdJkdseAwbVSBc0yAd8yPVHrll4eBuJPWIj9+8C3OIxzEKwhswLtd3bi+yLrzgw9gCyxMA==", - "requires": { - "abort-error": "^1.0.1", - "p-defer": "^4.0.1", - "race-signal": "^1.1.3" - } - } } }, "it-pushable": { @@ -17847,10 +17764,11 @@ } }, "it-queueless-pushable": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/it-queueless-pushable/-/it-queueless-pushable-1.0.2.tgz", - "integrity": "sha512-BFIm48C4O8+i+oVEPQpZ70+CaAsVUircvZtZCrpG2Q64933aLp+tDmas1mTBwqVBfIUUlg09d+e6SWW1CBuykQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/it-queueless-pushable/-/it-queueless-pushable-2.0.2.tgz", + "integrity": "sha512-2BqIt7XvDdgEgudLAdJkdseAwbVSBc0yAd8yPVHrll4eBuJPWIj9+8C3OIxzEKwhswLtd3bi+yLrzgw9gCyxMA==", "requires": { + "abort-error": "^1.0.1", "p-defer": "^4.0.1", "race-signal": "^1.1.3" } @@ -17922,11 +17840,6 @@ "argparse": "^2.0.1" } }, - "jsbn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" - }, "json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", @@ -18062,24 +17975,24 @@ } }, "libp2p": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/libp2p/-/libp2p-2.10.0.tgz", - "integrity": "sha512-tgDz7YuGg1XX7UfxebCUii+IGsly/8V0ZRZdFJSDySY2i3UuqpCTsEbRApH3cBKFhcAf00nx9xj8GL9zfo+XWw==", + "version": "2.8.11", + "resolved": "https://registry.npmjs.org/libp2p/-/libp2p-2.8.11.tgz", + "integrity": "sha512-EjkyN0CI6uP+e4OOkEcZvhbZtlwFl4Y0rkkMvDbXmcfILX4E4n/jKE4Ppoc1qhNufxToxVWCMDS2ipniQgiYaw==", "requires": { "@chainsafe/is-ip": "^2.1.0", "@chainsafe/netmask": "^2.0.0", - "@libp2p/crypto": "^5.1.8", - "@libp2p/interface": "^2.11.0", - "@libp2p/interface-internal": "^2.3.19", - "@libp2p/logger": "^5.2.0", - "@libp2p/multistream-select": "^6.0.29", - "@libp2p/peer-collections": "^6.0.35", - "@libp2p/peer-id": "^5.1.9", - "@libp2p/peer-store": "^11.2.7", - "@libp2p/utils": "^6.7.2", + "@libp2p/crypto": "^5.1.6", + "@libp2p/interface": "^2.10.4", + "@libp2p/interface-internal": "^2.3.17", + "@libp2p/logger": "^5.1.20", + "@libp2p/multistream-select": "^6.0.27", + "@libp2p/peer-collections": "^6.0.33", + "@libp2p/peer-id": "^5.1.7", + "@libp2p/peer-store": "^11.2.5", + "@libp2p/utils": "^6.7.0", "@multiformats/dns": "^1.0.6", "@multiformats/multiaddr": "^12.4.4", - "@multiformats/multiaddr-matcher": "^2.0.0", + "@multiformats/multiaddr-matcher": "^1.7.2", "any-signal": "^4.1.1", "datastore-core": "^10.0.2", "interface-datastore": "^8.3.1", @@ -18094,38 +18007,6 @@ "race-event": "^1.3.0", "race-signal": "^1.1.3", "uint8arrays": "^5.1.0" - }, - "dependencies": { - "@multiformats/multiaddr-matcher": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr-matcher/-/multiaddr-matcher-2.0.2.tgz", - "integrity": "sha512-si7EZCI93mfBJKKRkh+u2bB9W6W5APVN3XfdwuseEJ0OS7ysg0Jno9SuAi0bRzsl5OEFESoF71SjsRqgp8PXAA==", - "requires": { - "@multiformats/multiaddr": "^12.0.0" - } - }, - "it-byte-stream": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/it-byte-stream/-/it-byte-stream-2.0.3.tgz", - "integrity": "sha512-h7FFcn4DWiWsJw1dCJhuPdiY8cGi1z8g4aLAfFspTaJbwQxvEMlEBFG/f8lIVGwM8YK26ClM4/9lxLVhF33b8g==", - "requires": { - "abort-error": "^1.0.1", - "it-queueless-pushable": "^2.0.0", - "it-stream-types": "^2.0.2", - "race-signal": "^1.1.3", - "uint8arraylist": "^2.4.8" - } - }, - "it-queueless-pushable": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/it-queueless-pushable/-/it-queueless-pushable-2.0.2.tgz", - "integrity": "sha512-2BqIt7XvDdgEgudLAdJkdseAwbVSBc0yAd8yPVHrll4eBuJPWIj9+8C3OIxzEKwhswLtd3bi+yLrzgw9gCyxMA==", - "requires": { - "abort-error": "^1.0.1", - "p-defer": "^4.0.1", - "race-signal": "^1.1.3" - } - } } }, "lilconfig": { @@ -18149,11 +18030,21 @@ "p-locate": "^5.0.0" } }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, "lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + }, "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -18166,12 +18057,9 @@ "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==" }, "loupe": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", - "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", - "requires": { - "get-func-name": "^2.0.1" - } + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", + "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==" }, "lru-cache": { "version": "10.4.3", @@ -18243,21 +18131,6 @@ } } }, - "merge-options": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz", - "integrity": "sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==", - "requires": { - "is-plain-obj": "^2.1.0" - }, - "dependencies": { - "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==" - } - } - }, "merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -18290,9 +18163,9 @@ } }, "minimatch": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz", - "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", "requires": { "@isaacs/brace-expansion": "^5.0.0" } @@ -18325,13 +18198,15 @@ } }, "mqtt": { - "version": "5.13.1", - "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-5.13.1.tgz", - "integrity": "sha512-g+4G+ma0UeL3Pgu1y1si2NHb4VLIEUCtF789WrG99lLG0XZyoab2EJoy58YgGSg/1yFdthDBH0+4llsZZD/vug==", + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-5.14.1.tgz", + "integrity": "sha512-NxkPxE70Uq3Ph7goefQa7ggSsVzHrayCD0OyxlJgITN/EbzlZN+JEPmaAZdxP1LsIT5FamDyILoQTF72W7Nnbw==", "requires": { + "@types/readable-stream": "^4.0.21", + "@types/ws": "^8.18.1", "commist": "^3.2.0", "concat-stream": "^2.0.0", - "debug": "^4.4.0", + "debug": "^4.4.1", "help-me": "^5.0.0", "lru-cache": "^10.4.3", "minimist": "^1.2.8", @@ -18339,10 +18214,10 @@ "number-allocator": "^1.0.14", "readable-stream": "^4.7.0", "rfdc": "^1.4.1", - "socks": "^2.8.3", + "socks": "^2.8.6", "split2": "^4.2.0", - "worker-timers": "^7.1.8", - "ws": "^8.18.0" + "worker-timers": "^8.0.23", + "ws": "^8.18.3" } }, "mqtt-packet": { @@ -18367,9 +18242,9 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "multiformats": { - "version": "13.3.6", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.3.6.tgz", - "integrity": "sha512-yakbt9cPYj8d3vi/8o/XWm61MrOILo7fsTL0qxNx6zS0Nso6K5JqqS2WV7vK/KSuDBvrW3KfCwAdAgarAgOmww==" + "version": "13.4.1", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.1.tgz", + "integrity": "sha512-VqO6OSvLrFVAYYjgsr8tyv62/rCQhPgsZUXLTqoFLSgdkgiUYKYeArbt1uWLlEpkjxQe+P0+sHlbPEte1Bi06Q==" }, "nanoid": { "version": "3.3.11", @@ -18478,9 +18353,9 @@ } }, "octagonal-wheels": { - "version": "0.1.41", - "resolved": "https://registry.npmjs.org/octagonal-wheels/-/octagonal-wheels-0.1.41.tgz", - "integrity": "sha512-cIvdXsyiSCxknyxTwGrNnDKsaYpgZdXeKAy9cXIAk2Jy7T1z6bLjU4s5z47OySNPVPSr32x5r8hSz7hAYYv7qA==", + "version": "0.1.42", + "resolved": "https://registry.npmjs.org/octagonal-wheels/-/octagonal-wheels-0.1.42.tgz", + "integrity": "sha512-Hc2GWCtmG4+OzY9flY5vHjozUPuwsQoY7osG+I2QzACs8iTWrlAcw1re8FgU4vDC/to9rFogWfYWI8bNbr5j2w==", "requires": { "idb": "^8.0.3" } @@ -18542,12 +18417,19 @@ } }, "p-queue": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.1.0.tgz", - "integrity": "sha512-mxLDbbGIBEXTJL0zEx8JIylaj3xQ7Z/7eEVjcF9fJX4DBiH9oqe+oahYnlKKxm0Ci9TlWTyhSHgygxMxjIB2jw==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-9.0.0.tgz", + "integrity": "sha512-KO1RyxstL9g1mK76530TExamZC/S2Glm080Nx8PE5sTd7nlduDQsAfEl4uXX+qZjLiwvDauvzXavufy3+rJ9zQ==", "requires": { "eventemitter3": "^5.0.1", - "p-timeout": "^6.1.2" + "p-timeout": "^7.0.0" + }, + "dependencies": { + "p-timeout": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-7.0.1.tgz", + "integrity": "sha512-AxTM2wDGORHGEkPCt8yqxOTMgpfbEHqF51f/5fJCmwFC3C/zNcGT63SymH2ttOAaiIws2zVg4+izQCjrakcwHg==" + } } }, "p-retry": { @@ -18623,9 +18505,9 @@ } }, "pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", + "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==" }, "picocolors": { "version": "1.1.1", @@ -19057,9 +18939,9 @@ } }, "protons-runtime": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/protons-runtime/-/protons-runtime-5.5.0.tgz", - "integrity": "sha512-EsALjF9QsrEk6gbCx3lmfHxVN0ah7nG3cY7GySD4xf4g8cr7g543zB88Foh897Sr1RQJ9yDCUsoT1i1H/cVUFA==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/protons-runtime/-/protons-runtime-5.6.0.tgz", + "integrity": "sha512-/Kde+sB9DsMFrddJT/UZWe6XqvL7SL5dbag/DBCElFKhkwDj7XKt53S+mzLyaDP5OqS0wXjV5SA572uWDaT0Hg==", "requires": { "uint8-varint": "^2.0.2", "uint8arraylist": "^2.4.3", @@ -19102,14 +18984,17 @@ "dev": true }, "quick-lru": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-7.0.1.tgz", - "integrity": "sha512-kLjThirJMkWKutUKbZ8ViqFc09tDQhlbQo2MNuVeLWbRauqYP96Sm6nzlQ24F0HFjUNZ4i9+AgldJ9H6DZXi7g==" + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-7.3.0.tgz", + "integrity": "sha512-k9lSsjl36EJdK7I06v7APZCbyGT2vMTsYSRX1Q2nbYmnkBqgUhRkAuzH08Ciotteu/PLJmIF2+tti7o3C/ts2g==" }, "race-event": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/race-event/-/race-event-1.3.0.tgz", - "integrity": "sha512-kaLm7axfOnahIqD3jQ4l1e471FIFcEGebXEnhxyLscuUzV8C94xVHtWEqDDXxll7+yu/6lW0w1Ff4HbtvHvOHg==" + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/race-event/-/race-event-1.6.1.tgz", + "integrity": "sha512-vi7WH5g5KoTFpu2mme/HqZiWH14XSOtg5rfp6raBskBHl7wnmy3F/biAIyY5MsK+BHWhoPhxtZ1Y2R7OHHaWyQ==", + "requires": { + "abort-error": "^1.0.1" + } }, "race-signal": { "version": "1.1.3", @@ -19428,11 +19313,11 @@ "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" }, "socks": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz", - "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==", + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", + "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", "requires": { - "ip-address": "^9.0.5", + "ip-address": "^10.0.1", "smart-buffer": "^4.2.0" } }, @@ -19469,11 +19354,6 @@ "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==" }, - "sprintf-js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" - }, "stop-iteration-iterator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", @@ -19680,9 +19560,9 @@ }, "dependencies": { "fdir": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.0.tgz", - "integrity": "sha512-3oB133prH1o4j/L5lLW7uOCF1PlD+/It2L0eL/iAqWMB91RBbqTewABqxhj0ibBd90EEmWZq7ntIWzVaWcXTGQ==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "dev": true, "requires": {} }, @@ -19824,17 +19704,15 @@ } }, "trystero": { - "version": "git+ssh://git@github.com/vrtmrz/trystero.git#9e892a93ec14eeb57ce806d272fbb7c3935256d8", - "integrity": "sha512-LUlmTTSxgomyYvU1K05snl18+GLAxqO4W8P9lePLbRnZVJyGZUVXMM4/aW9384GtIf0VLJquloWqz9PriJZg2w==", - "from": "trystero@github:vrtmrz/trystero#9e892a93ec14eeb57ce806d272fbb7c3935256d8", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/trystero/-/trystero-0.22.0.tgz", + "integrity": "sha512-VscO7kaTFWNLmuxu1Au1kIxX6FzkVeXcL3+mhb9MaCSz8fm4T5MFWkdfDOujMtNK4iztupQ5AGEqGniP/I8Gvw==", "requires": { "@noble/secp256k1": "^3.0.0", - "@supabase/supabase-js": "^2.49.8", - "@waku/discovery": "^0.0.8", - "@waku/sdk": "^0.0.31", - "firebase": "^12.2.1", - "libp2p": "^2.8.8", - "mqtt": "^5.13.0" + "@supabase/supabase-js": "^2.75.0", + "@waku/sdk": "^0.0.35", + "firebase": "^12.4.0", + "mqtt": "^5.14.1" }, "dependencies": { "@noble/secp256k1": { @@ -20089,12 +19967,12 @@ "peer": true }, "weald": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/weald/-/weald-1.0.4.tgz", - "integrity": "sha512-+kYTuHonJBwmFhP1Z4YQK/dGi3jAnJGCYhyODFpHK73rbxnp9lnZQj7a2m+WVgn8fXr5bJaxUpF6l8qZpPeNWQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/weald/-/weald-1.1.1.tgz", + "integrity": "sha512-PaEQShzMCz8J/AD2N3dJMc1hTZWkJeLKS2NMeiVkV5KDHwgZe7qXLEzyodsT/SODxWDdXJJqocuwf3kHzcXhSQ==", "requires": { "ms": "^3.0.0-canary.1", - "supports-color": "^9.4.0" + "supports-color": "^10.0.0" }, "dependencies": { "ms": { @@ -20103,9 +19981,9 @@ "integrity": "sha512-NotsCoUCIUkojWCzQff4ttdCfIPoA1UGZsyQbi7KmqkNRfKCrvga8JJi2PknHymHOuor0cJSn/ylj52Cbt2IrQ==" }, "supports-color": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.4.0.tgz", - "integrity": "sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==" + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-10.2.2.tgz", + "integrity": "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==" } } }, @@ -20221,35 +20099,47 @@ "has-tostringtag": "^1.0.2" } }, - "worker-timers": { - "version": "7.1.8", - "resolved": "https://registry.npmjs.org/worker-timers/-/worker-timers-7.1.8.tgz", - "integrity": "sha512-R54psRKYVLuzff7c1OTFcq/4Hue5Vlz4bFtNEIarpSiCYhpifHU3aIQI29S84o1j87ePCYqbmEJPqwBTf+3sfw==", + "worker-factory": { + "version": "7.0.46", + "resolved": "https://registry.npmjs.org/worker-factory/-/worker-factory-7.0.46.tgz", + "integrity": "sha512-Sr1hq2FMgNa04UVhYQacsw+i58BtMimzDb4+CqYphZ97OfefRpURu0UZ+JxMr/H36VVJBfuVkxTK7MytsanC3w==", "requires": { - "@babel/runtime": "^7.24.5", - "tslib": "^2.6.2", - "worker-timers-broker": "^6.1.8", - "worker-timers-worker": "^7.0.71" + "@babel/runtime": "^7.28.4", + "fast-unique-numbers": "^9.0.24", + "tslib": "^2.8.1" + } + }, + "worker-timers": { + "version": "8.0.25", + "resolved": "https://registry.npmjs.org/worker-timers/-/worker-timers-8.0.25.tgz", + "integrity": "sha512-X7Z5dmM6PlrEnaadtFQOyXHGD/IysPA3HZzaC2koqsU1VI+RvyGmjiiLiUBQixK8PH5R7ilkOzZupWskNRaXmA==", + "requires": { + "@babel/runtime": "^7.28.4", + "tslib": "^2.8.1", + "worker-timers-broker": "^8.0.11", + "worker-timers-worker": "^9.0.11" } }, "worker-timers-broker": { - "version": "6.1.8", - "resolved": "https://registry.npmjs.org/worker-timers-broker/-/worker-timers-broker-6.1.8.tgz", - "integrity": "sha512-FUCJu9jlK3A8WqLTKXM9E6kAmI/dR1vAJ8dHYLMisLNB/n3GuaFIjJ7pn16ZcD1zCOf7P6H62lWIEBi+yz/zQQ==", + "version": "8.0.11", + "resolved": "https://registry.npmjs.org/worker-timers-broker/-/worker-timers-broker-8.0.11.tgz", + "integrity": "sha512-uwhxKru8BI9m2tsogxr2fB6POZ8LB2xH+Pu3R0mvQnAZLPgLD6K3IX4LNKPTEgTJ/j5VsuQPB+gLI1NBNKkPlg==", "requires": { - "@babel/runtime": "^7.24.5", - "fast-unique-numbers": "^8.0.13", - "tslib": "^2.6.2", - "worker-timers-worker": "^7.0.71" + "@babel/runtime": "^7.28.4", + "broker-factory": "^3.1.10", + "fast-unique-numbers": "^9.0.24", + "tslib": "^2.8.1", + "worker-timers-worker": "^9.0.11" } }, "worker-timers-worker": { - "version": "7.0.71", - "resolved": "https://registry.npmjs.org/worker-timers-worker/-/worker-timers-worker-7.0.71.tgz", - "integrity": "sha512-ks/5YKwZsto1c2vmljroppOKCivB/ma97g9y77MAAz2TBBjPPgpoOiS1qYQKIgvGTr2QYPT3XhJWIB6Rj2MVPQ==", + "version": "9.0.11", + "resolved": "https://registry.npmjs.org/worker-timers-worker/-/worker-timers-worker-9.0.11.tgz", + "integrity": "sha512-pArb5xtgHWImYpXhjg1OFv7JFG0ubmccb73TFoXHXjG830fFj+16N57q9YeBnZX52dn+itRrMoJZ9HaZBVzDaA==", "requires": { - "@babel/runtime": "^7.24.5", - "tslib": "^2.6.2" + "@babel/runtime": "^7.28.4", + "tslib": "^2.8.1", + "worker-factory": "^7.0.46" } }, "wrap-ansi": { @@ -20274,9 +20164,9 @@ } }, "ws": { - "version": "8.18.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", - "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==", + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "requires": {} }, "xtend": { diff --git a/package.json b/package.json index 91cc4a4..123c74b 100644 --- a/package.json +++ b/package.json @@ -94,9 +94,9 @@ "fflate": "^0.8.2", "idb": "^8.0.3", "minimatch": "^10.0.2", - "octagonal-wheels": "^0.1.41", + "octagonal-wheels": "^0.1.42", "qrcode-generator": "^1.4.4", - "trystero": "github:vrtmrz/trystero#9e892a93ec14eeb57ce806d272fbb7c3935256d8", + "trystero": "^0.22.0", "xxhash-wasm-102": "npm:xxhash-wasm@^1.0.2" } } diff --git a/src/features/P2PSync/P2PReplicator/P2PReplicatorPane.svelte b/src/features/P2PSync/P2PReplicator/P2PReplicatorPane.svelte index 06fa93d..c1322f0 100644 --- a/src/features/P2PSync/P2PReplicator/P2PReplicatorPane.svelte +++ b/src/features/P2PSync/P2PReplicator/P2PReplicatorPane.svelte @@ -251,6 +251,9 @@ }; cmdSync.setConfig(initialDialogStatusKey, JSON.stringify(dialogStatus)); }); + let isObsidian = $derived.by(() => { + return plugin.services.API.getPlatform() === "obsidian"; + });
@@ -266,95 +269,105 @@ {/each}

Connection Settings

-
- {eRelay} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Enable P2P Replicator - -
Relay settings - -
Room ID - - - - This can isolate your connections between devices. Use the same Room ID for the same - devices. - -
Password - - - This password is used to encrypt the connection. Use something long enough. - -
This device name - - - - Device name to identify the device. Please use shorter one for the stable peer - detection, i.e., "iphone-16" or "macbook-2021". - - -
Auto Connect - -
Start change-broadcasting on Connect - -
- - -
+ + + + + + {/if}

Signaling Server Connection

diff --git a/src/lib b/src/lib index 82c6843..b1597d6 160000 --- a/src/lib +++ b/src/lib @@ -1 +1 @@ -Subproject commit 82c68435a1e26d969c2a18be2a0523ea2ca83633 +Subproject commit b1597d6878a04d42de2d15798803e953705ab845 diff --git a/src/main.ts b/src/main.ts index b0a730c..bed288c 100644 --- a/src/main.ts +++ b/src/main.ts @@ -33,7 +33,8 @@ import { ModuleLog } from "./modules/features/ModuleLog.ts"; import { ModuleObsidianSettings } from "./modules/features/ModuleObsidianSetting.ts"; import { ModuleRedFlag } from "./modules/coreFeatures/ModuleRedFlag.ts"; import { ModuleObsidianMenu } from "./modules/essentialObsidian/ModuleObsidianMenu.ts"; -import { ModuleSetupObsidian, SetupManager } from "./modules/features/ModuleSetupObsidian.ts"; +import { ModuleSetupObsidian } from "./modules/features/ModuleSetupObsidian.ts"; +import { SetupManager } from "./modules/features/SetupManager.ts"; import type { StorageAccess } from "./modules/interfaces/StorageAccess.ts"; import type { Confirm } from "./lib/src/interfaces/Confirm.ts"; import type { Rebuilder } from "./modules/interfaces/DatabaseRebuilder.ts"; diff --git a/src/modules/essential/ModuleMigration.ts b/src/modules/essential/ModuleMigration.ts index 49dbbcc..5a10803 100644 --- a/src/modules/essential/ModuleMigration.ts +++ b/src/modules/essential/ModuleMigration.ts @@ -15,7 +15,7 @@ import { isMetaEntry } from "../../lib/src/common/types.ts"; import { isDeletedEntry, isDocContentSame, isLoadedEntry, readAsBlob } from "../../lib/src/common/utils.ts"; import { countCompromisedChunks } from "../../lib/src/pouchdb/negotiation.ts"; import type { LiveSyncCore } from "../../main.ts"; -import { SetupManager } from "../features/ModuleSetupObsidian.ts"; +import { SetupManager } from "../features/SetupManager.ts"; type ErrorInfo = { path: string; diff --git a/src/modules/features/ModuleObsidianSetting.ts b/src/modules/features/ModuleObsidianSetting.ts index 1817041..f250ea9 100644 --- a/src/modules/features/ModuleObsidianSetting.ts +++ b/src/modules/features/ModuleObsidianSetting.ts @@ -9,6 +9,7 @@ import { DEFAULT_SETTINGS, type ObsidianLiveSyncSettings, SALT_OF_PASSPHRASE, + SETTING_KEY_P2P_DEVICE_NAME, } from "../../lib/src/common/types"; import { LOG_LEVEL_NOTICE, LOG_LEVEL_URGENT } from "octagonal-wheels/common/logger"; import { $msg, setLang } from "../../lib/src/common/i18n.ts"; @@ -111,6 +112,11 @@ export class ModuleObsidianSettings extends AbstractObsidianModule { this.services.setting.saveDeviceAndVaultName(); const settings = { ...this.settings }; settings.deviceAndVaultName = ""; + if (settings.P2P_DevicePeerName && settings.P2P_DevicePeerName.trim() !== "") { + console.log("Saving device peer name to small config"); + this.services.config.setSmallConfig(SETTING_KEY_P2P_DEVICE_NAME, settings.P2P_DevicePeerName.trim()); + settings.P2P_DevicePeerName = ""; + } if (this.usedPassphrase == "" && !(await this.getPassphrase(settings))) { this._log("Failed to retrieve passphrase. data.json contains unencrypted items!", LOG_LEVEL_NOTICE); } else { diff --git a/src/modules/features/ModuleSetupObsidian.ts b/src/modules/features/ModuleSetupObsidian.ts index f806dd9..1073a91 100644 --- a/src/modules/features/ModuleSetupObsidian.ts +++ b/src/modules/features/ModuleSetupObsidian.ts @@ -1,18 +1,10 @@ -import { - type ObsidianLiveSyncSettings, - DEFAULT_SETTINGS, - LOG_LEVEL_NOTICE, - LOG_LEVEL_VERBOSE, - REMOTE_COUCHDB, - REMOTE_MINIO, - REMOTE_P2P, -} from "../../lib/src/common/types.ts"; -import { SETTING_KEY_P2P_DEVICE_NAME } from "../../lib/src/common/types.ts"; +import { type ObsidianLiveSyncSettings, LOG_LEVEL_NOTICE } from "../../lib/src/common/types.ts"; import { configURIBase } from "../../common/types.ts"; // import { PouchDB } from "../../lib/src/pouchdb/pouchdb-browser.js"; -import { fireAndForget, generatePatchObj, isObjectDifferent } from "../../lib/src/common/utils.ts"; +import { fireAndForget } from "../../lib/src/common/utils.ts"; import { EVENT_REQUEST_COPY_SETUP_URI, + EVENT_REQUEST_OPEN_P2P_SETTINGS, EVENT_REQUEST_OPEN_SETUP_URI, EVENT_REQUEST_SHOW_SETUP_QR, eventHub, @@ -21,268 +13,13 @@ import { AbstractObsidianModule } from "../AbstractObsidianModule.ts"; import { $msg } from "../../lib/src/common/i18n.ts"; // import { performDoctorConsultation, RebuildOptions } from "@/lib/src/common/configForDoc.ts"; import type { LiveSyncCore } from "../../main.ts"; -import { SvelteDialogManager } from "./SetupWizard/ObsidianSvelteDialog.ts"; -import Intro from "./SetupWizard/dialogs/Intro.svelte"; -import SelectMethodNewUser from "./SetupWizard/dialogs/SelectMethodNewUser.svelte"; -import SelectMethodExisting from "./SetupWizard/dialogs/SelectMethodExisting.svelte"; -import ScanQRCode from "./SetupWizard/dialogs/ScanQRCode.svelte"; -import UseSetupURI from "./SetupWizard/dialogs/UseSetupURI.svelte"; -import OutroNewUser from "./SetupWizard/dialogs/OutroNewUser.svelte"; -import OutroExistingUser from "./SetupWizard/dialogs/OutroExistingUser.svelte"; -import OutroAskUserMode from "./SetupWizard/dialogs/OutroAskUserMode.svelte"; -import SetupRemote from "./SetupWizard/dialogs/SetupRemote.svelte"; -import SetupRemoteCouchDB from "./SetupWizard/dialogs/SetupRemoteCouchDB.svelte"; -import SetupRemoteBucket from "./SetupWizard/dialogs/SetupRemoteBucket.svelte"; -import SetupRemoteP2P from "./SetupWizard/dialogs/SetupRemoteP2P.svelte"; -import SetupRemoteE2EE from "./SetupWizard/dialogs/SetupRemoteE2EE.svelte"; import { - decodeSettingsFromQRCodeData, encodeQR, encodeSettingsToQRCodeData, encodeSettingsToSetupURI, OutputFormat, } from "../../lib/src/API/processSetting.ts"; -// import type ObsidianLiveSyncPlugin from "../../main.ts"; -export const enum UserMode { - NewUser = "new-user", - ExistingUser = "existing-user", - Unknown = "unknown", - // eslint-disable-next-line @typescript-eslint/no-duplicate-enum-values - Update = "unknown", // Alias for Unknown for better readability -} - -export class SetupManager extends AbstractObsidianModule { - private dialogManager: SvelteDialogManager = new SvelteDialogManager(this.plugin); - - async startOnBoarding(): Promise { - const isUserNewOrExisting = await this.dialogManager.openWithExplicitCancel(Intro); - if (isUserNewOrExisting === "new-user") { - await this.onBoard(UserMode.NewUser); - } else if (isUserNewOrExisting === "existing-user") { - await this.onBoard(UserMode.ExistingUser); - } else if (isUserNewOrExisting === "cancelled") { - this._log("Onboarding cancelled by user.", LOG_LEVEL_NOTICE); - return false; - } - return false; - } - - async onBoard(userMode: UserMode): Promise { - const originalSetting = userMode === UserMode.NewUser ? DEFAULT_SETTINGS : this.core.settings; - if (userMode === UserMode.NewUser) { - //Ask how to apply initial setup - const method = await this.dialogManager.openWithExplicitCancel(SelectMethodNewUser); - if (method === "use-setup-uri") { - await this.onUseSetupURI(userMode); - } else if (method === "configure-manually") { - await this.onConfigureManually(originalSetting, userMode); - } else if (method === "cancelled") { - this._log("Onboarding cancelled by user.", LOG_LEVEL_NOTICE); - return false; - } - } else if (userMode === UserMode.ExistingUser) { - const method = await this.dialogManager.openWithExplicitCancel(SelectMethodExisting); - if (method === "use-setup-uri") { - await this.onUseSetupURI(userMode); - } else if (method === "configure-manually") { - await this.onConfigureManually(originalSetting, userMode); - } else if (method === "scan-qr-code") { - await this.onPromptQRCodeInstruction(); - } else if (method === "cancelled") { - this._log("Onboarding cancelled by user.", LOG_LEVEL_NOTICE); - return false; - } - } - return false; - } - - async onUseSetupURI(userMode: UserMode, setupURI: string = ""): Promise { - const newSetting = await this.dialogManager.openWithExplicitCancel(UseSetupURI, setupURI); - if (newSetting === "cancelled") { - this._log("Setup URI dialog cancelled.", LOG_LEVEL_NOTICE); - return false; - } - this._log("Setup URI dialog closed.", LOG_LEVEL_VERBOSE); - return await this.confirmApplySettingsFromWizard(newSetting, userMode); - } - async onCouchDBManualSetup( - userMode: UserMode, - currentSetting: ObsidianLiveSyncSettings, - activate = true - ): Promise { - const originalSetting = JSON.parse(JSON.stringify(currentSetting)) as ObsidianLiveSyncSettings; - const baseSetting = JSON.parse(JSON.stringify(originalSetting)) as ObsidianLiveSyncSettings; - const couchConf = await this.dialogManager.openWithExplicitCancel(SetupRemoteCouchDB, originalSetting); - if (couchConf === "cancelled") { - this._log("Manual configuration cancelled.", LOG_LEVEL_NOTICE); - return await this.onBoard(userMode); - } - const newSetting = { ...baseSetting, ...couchConf } as ObsidianLiveSyncSettings; - if (activate) { - newSetting.remoteType = REMOTE_COUCHDB; - } - return await this.confirmApplySettingsFromWizard(newSetting, userMode, activate); - } - - async onBucketManualSetup( - userMode: UserMode, - currentSetting: ObsidianLiveSyncSettings, - activate = true - ): Promise { - const bucketConf = await this.dialogManager.openWithExplicitCancel(SetupRemoteBucket, currentSetting); - if (bucketConf === "cancelled") { - this._log("Manual configuration cancelled.", LOG_LEVEL_NOTICE); - return await this.onBoard(userMode); - } - const newSetting = { ...currentSetting, ...bucketConf } as ObsidianLiveSyncSettings; - if (activate) { - newSetting.remoteType = REMOTE_MINIO; - } - return await this.confirmApplySettingsFromWizard(newSetting, userMode, activate); - } - async onP2PManualSetup( - userMode: UserMode, - currentSetting: ObsidianLiveSyncSettings, - activate = true - ): Promise { - const p2pConf = await this.dialogManager.openWithExplicitCancel(SetupRemoteP2P, currentSetting); - if (p2pConf === "cancelled") { - this._log("Manual configuration cancelled.", LOG_LEVEL_NOTICE); - return await this.onBoard(userMode); - } - const newSetting = { ...currentSetting, ...p2pConf.info } as ObsidianLiveSyncSettings; - if (activate) { - newSetting.remoteType = REMOTE_P2P; - } - return await this.confirmApplySettingsFromWizard(newSetting, userMode, activate, () => { - this.services.config.setSmallConfig(SETTING_KEY_P2P_DEVICE_NAME, p2pConf.devicePeerId); - }); - } - async onlyE2EEConfiguration(userMode: UserMode, currentSetting: ObsidianLiveSyncSettings): Promise { - const e2eeConf = await this.dialogManager.openWithExplicitCancel(SetupRemoteE2EE, currentSetting); - if (e2eeConf === "cancelled") { - this._log("E2EE configuration cancelled.", LOG_LEVEL_NOTICE); - return await false; - } - const newSetting = { - ...currentSetting, - ...e2eeConf, - } as ObsidianLiveSyncSettings; - return await this.confirmApplySettingsFromWizard(newSetting, userMode); - } - async onConfigureManually(originalSetting: ObsidianLiveSyncSettings, userMode: UserMode): Promise { - const e2eeConf = await this.dialogManager.openWithExplicitCancel(SetupRemoteE2EE, originalSetting); - if (e2eeConf === "cancelled") { - this._log("Manual configuration cancelled.", LOG_LEVEL_NOTICE); - return await this.onBoard(userMode); - } - const currentSetting = { - ...originalSetting, - ...e2eeConf, - } as ObsidianLiveSyncSettings; - return await this.selectServer(currentSetting, userMode); - } - - async selectServer(currentSetting: ObsidianLiveSyncSettings, userMode: UserMode): Promise { - const method = await this.dialogManager.openWithExplicitCancel(SetupRemote); - if (method === "couchdb") { - return await this.onCouchDBManualSetup(userMode, currentSetting, true); - } else if (method === "bucket") { - return await this.onBucketManualSetup(userMode, currentSetting, true); - } else if (method === "p2p") { - return await this.onP2PManualSetup(userMode, currentSetting, true); - } else if (method === "cancelled") { - this._log("Manual configuration cancelled.", LOG_LEVEL_NOTICE); - if (userMode !== UserMode.Unknown) { - return await this.onBoard(userMode); - } - } - // Should not reach here. - return false; - } - async confirmApplySettingsFromWizard( - newConf: ObsidianLiveSyncSettings, - _userMode: UserMode, - activate: boolean = true, - extra: () => void = () => {} - ): Promise { - let userMode = _userMode; - // let rebuildRequired = true; - if (userMode === UserMode.Unknown) { - if (isObjectDifferent(this.settings, newConf, true) === false) { - this._log("No changes in settings detected. Skipping applying settings from wizard.", LOG_LEVEL_NOTICE); - return true; - } - const patch = generatePatchObj(this.settings, newConf); - console.log(`Changes:`); - console.dir(patch); - if (!activate) { - extra(); - await this.applySetting(newConf, UserMode.ExistingUser); - this._log("Setting Applied", LOG_LEVEL_NOTICE); - return true; - } - const userModeResult = await this.dialogManager.openWithExplicitCancel(OutroAskUserMode); - if (userModeResult === "new-user") { - userMode = UserMode.NewUser; - } else if (userModeResult === "existing-user") { - userMode = UserMode.ExistingUser; - } else if (userModeResult === "compatible-existing-user") { - extra(); - await this.applySetting(newConf, UserMode.ExistingUser); - this._log("Settings from wizard applied.", LOG_LEVEL_NOTICE); - return true; - } else if (userModeResult === "cancelled") { - this._log("User cancelled applying settings from wizard.", LOG_LEVEL_NOTICE); - return false; - } - } - const component = userMode === UserMode.NewUser ? OutroNewUser : OutroExistingUser; - const confirm = await this.dialogManager.openWithExplicitCancel(component); - if (confirm === "cancelled") { - this._log("User cancelled applying settings from wizard..", LOG_LEVEL_NOTICE); - return false; - } - if (confirm) { - extra(); - await this.applySetting(newConf, userMode); - if (userMode === UserMode.NewUser) { - // For new users, schedule a rebuild everything. - await this.core.rebuilder.scheduleRebuild(); - } else { - // For existing users, schedule a fetch. - await this.core.rebuilder.scheduleFetch(); - } - } - // Settings applied, but may require rebuild to take effect. - return false; - } - - async onPromptQRCodeInstruction(): Promise { - const qrResult = await this.dialogManager.open(ScanQRCode); - this._log("QR Code dialog closed.", LOG_LEVEL_VERBOSE); - // Result is not used, but log it for debugging. - this._log(`QR Code result: ${qrResult}`, LOG_LEVEL_VERBOSE); - // QR Code instruction dialog never yields settings directly. - return false; - } - - async decodeQR(qr: string) { - const newSettings = decodeSettingsFromQRCodeData(qr); - return await this.confirmApplySettingsFromWizard(newSettings, UserMode.Unknown); - } - - async applySetting(newConf: ObsidianLiveSyncSettings, userMode: UserMode) { - const newSetting = { - ...this.core.settings, - ...newConf, - }; - this.core.settings = newSetting; - this.services.setting.clearUsedPassphrase(); - await this.services.setting.saveSettingData(); - return true; - } -} +import { SetupManager, UserMode } from "./SetupManager.ts"; export class ModuleSetupObsidian extends AbstractObsidianModule { private _setupManager!: SetupManager; @@ -330,6 +67,11 @@ export class ModuleSetupObsidian extends AbstractObsidianModule { eventHub.onEvent(EVENT_REQUEST_OPEN_SETUP_URI, () => fireAndForget(() => this.command_openSetupURI())); eventHub.onEvent(EVENT_REQUEST_COPY_SETUP_URI, () => fireAndForget(() => this.command_copySetupURI())); eventHub.onEvent(EVENT_REQUEST_SHOW_SETUP_QR, () => fireAndForget(() => this.encodeQR())); + eventHub.onEvent(EVENT_REQUEST_OPEN_P2P_SETTINGS, () => + fireAndForget(() => { + return this._setupManager.onP2PManualSetup(UserMode.Update, this.settings, false); + }) + ); return Promise.resolve(true); } async encodeQR() { @@ -380,6 +122,8 @@ export class ModuleSetupObsidian extends AbstractObsidianModule { await this._setupManager.onUseSetupURI(UserMode.Unknown); } + // TODO: Where to implement these? + // async askSyncWithRemoteConfig(tryingSettings: ObsidianLiveSyncSettings): Promise { // const buttons = { // fetch: $msg("Setup.FetchRemoteConf.Buttons.Fetch"), @@ -447,125 +191,6 @@ export class ModuleSetupObsidian extends AbstractObsidianModule { // } // } - // async applySettingWizard( - // oldConf: ObsidianLiveSyncSettings, - // newConf: ObsidianLiveSyncSettings, - // method = "Setup URI" - // ) { - // const result = await this.core.confirm.askYesNoDialog( - // "Importing Configuration from the " + method + ". Are you sure to proceed ? ", - // {} - // ); - // if (result == "yes") { - // let newSettingW = Object.assign({}, DEFAULT_SETTINGS, newConf) as ObsidianLiveSyncSettings; - // this.core.replicator.closeReplication(); - // this.settings.suspendFileWatching = true; - // newSettingW = await this.askSyncWithRemoteConfig(newSettingW); - // const { settings, shouldRebuild, isModified } = await this.askPerformDoctor(newSettingW); - // if (isModified) { - // newSettingW = settings; - // } - // // Back into the default method once. - // newSettingW.configPassphraseStore = ""; - // newSettingW.encryptedPassphrase = ""; - // newSettingW.encryptedCouchDBConnection = ""; - // newSettingW.additionalSuffixOfDatabaseName = `${"appId" in this.app ? this.app.appId : ""} `; - // const setupJustImport = $msg("Setup.Apply.Buttons.OnlyApply"); - // const setupAsNew = $msg("Setup.Apply.Buttons.ApplyAndFetch"); - // const setupAsMerge = $msg("Setup.Apply.Buttons.ApplyAndMerge"); - // const setupAgain = $msg("Setup.Apply.Buttons.ApplyAndRebuild"); - // const setupCancel = $msg("Setup.Apply.Buttons.Cancel"); - // newSettingW.syncInternalFiles = false; - // newSettingW.usePluginSync = false; - // newSettingW.isConfigured = true; - // // Migrate completely obsoleted configuration. - // if (!newSettingW.useIndexedDBAdapter) { - // newSettingW.useIndexedDBAdapter = true; - // } - // const warn = shouldRebuild ? $msg("Setup.Apply.WarningRebuildRecommended") : ""; - // const message = $msg("Setup.Apply.Message", { - // method, - // warn, - // }); - - // const setupType = await this.core.confirm.askSelectStringDialogue( - // message, - // [setupAsNew, setupAsMerge, setupAgain, setupJustImport, setupCancel], - // { defaultAction: setupAsNew, title: $msg("Setup.Apply.Title", { method }), timeout: 0 } - // ); - // if (setupType == setupJustImport) { - // this.core.settings = newSettingW; - // this.services.setting.clearUsedPassphrase(); - // await this.core.saveSettings(); - // } else if (setupType == setupAsNew) { - // this.core.settings = newSettingW; - // this.services.setting.clearUsedPassphrase(); - // await this.core.saveSettings(); - // await this.core.rebuilder.$fetchLocal(); - // } else if (setupType == setupAsMerge) { - // this.core.settings = newSettingW; - // this.services.setting.clearUsedPassphrase(); - // await this.core.saveSettings(); - // await this.core.rebuilder.$fetchLocal(true); - // } else if (setupType == setupAgain) { - // const confirm = - // "This operation will rebuild all databases with files on this device. Any files on the remote database not synced here will be lost."; - // if ( - // (await this.core.confirm.askSelectStringDialogue( - // "Are you sure you want to do this?", - // ["Cancel", confirm], - // { defaultAction: "Cancel" } - // )) != confirm - // ) { - // return; - // } - // this.core.settings = newSettingW; - // await this.core.saveSettings(); - // this.services.setting.clearUsedPassphrase(); - // await this.core.rebuilder.$rebuildEverything(); - // } else { - // // Explicitly cancel the operation or the dialog was closed. - // this._log("Cancelled", LOG_LEVEL_NOTICE); - // this.core.settings = oldConf; - // return; - // } - // this._log("Configuration loaded.", LOG_LEVEL_NOTICE); - // } else { - // this._log("Cancelled", LOG_LEVEL_NOTICE); - // this.core.settings = oldConf; - // return; - // } - // } - // async setupWizard(confString: string) { - // try { - // const oldConf = JSON.parse(JSON.stringify(this.settings)); - // const encryptingPassphrase = await this.core.confirm.askString( - // "Passphrase", - // "The passphrase to decrypt your setup URI", - // "", - // true - // ); - // if (encryptingPassphrase === false) return; - // const newConf = await JSON.parse(await decryptString(confString, encryptingPassphrase)); - // if (newConf) { - // await this.applySettingWizard(oldConf, newConf); - // this._log("Configuration loaded.", LOG_LEVEL_NOTICE); - // } else { - // this._log("Cancelled.", LOG_LEVEL_NOTICE); - // } - // } catch (ex) { - // this._log("Couldn't parse or decrypt configuration uri.", LOG_LEVEL_NOTICE); - // this._log(ex, LOG_LEVEL_VERBOSE); - // } - // } - - // async askHowToApplySetupURI() { - // const method = await this.dialogManager.openWithExplicitCancel(OutroAskUserMode); - // if( method === "new-user") { - // return UserMode.NewUser; - // } - // } - onBindFunction(core: LiveSyncCore, services: typeof core.services): void { services.appLifecycle.handleOnLoaded(this._everyOnload.bind(this)); } diff --git a/src/modules/features/SettingDialogue/InfoPanel.svelte b/src/modules/features/SettingDialogue/InfoPanel.svelte index e5f2696..2ce4b50 100644 --- a/src/modules/features/SettingDialogue/InfoPanel.svelte +++ b/src/modules/features/SettingDialogue/InfoPanel.svelte @@ -4,77 +4,12 @@ * Mostly used in the Setting Dialogue */ import { type SveltePanelProps } from "./SveltePanel"; + import InfoTable from "@lib/ui/components/InfoTable.svelte"; type Props = SveltePanelProps<{ info: Record; }>; const { port }: Props = $props(); const info = $derived.by(() => $port?.info ?? {}); - const infoEntries = $derived(Object.entries(info ?? {})); -
-
- {#each infoEntries as [key, value]} -
-
{key}
-
-
-
{value}
-
- {/each} -
-
- - + diff --git a/src/modules/features/SettingDialogue/PaneRemoteConfig.ts b/src/modules/features/SettingDialogue/PaneRemoteConfig.ts index 0d8a578..46c3568 100644 --- a/src/modules/features/SettingDialogue/PaneRemoteConfig.ts +++ b/src/modules/features/SettingDialogue/PaneRemoteConfig.ts @@ -8,7 +8,7 @@ import { $msg } from "../../../lib/src/common/i18n.ts"; import { LiveSyncSetting as Setting } from "./LiveSyncSetting.ts"; import type { ObsidianLiveSyncSettingTab } from "./ObsidianLiveSyncSettingTab.ts"; import type { PageFunctions } from "./SettingPane.ts"; -import { visibleOnly } from "./SettingPane.ts"; +// import { visibleOnly } from "./SettingPane.ts"; import InfoPanel from "./InfoPanel.svelte"; import { writable } from "svelte/store"; import { SveltePanel } from "./SveltePanel.ts"; @@ -19,7 +19,7 @@ import { getE2EEConfigSummary, } from "./settingUtils.ts"; import { SETTING_KEY_P2P_DEVICE_NAME } from "../../../lib/src/common/types.ts"; -import { SetupManager, UserMode } from "../ModuleSetupObsidian.ts"; +import { SetupManager, UserMode } from "../SetupManager.ts"; import { OnDialogSettingsDefault, type AllSettings } from "./settingConstants.ts"; function getSettingsFromEditingSettings(editingSettings: AllSettings): ObsidianLiveSyncSettings { @@ -30,6 +30,14 @@ function getSettingsFromEditingSettings(editingSettings: AllSettings): ObsidianL } return workObj; } +const toggleActiveSyncClass = (el: HTMLElement, isActive: () => boolean) => { + if (isActive()) { + el.addClass("active-pane"); + } else { + el.removeClass("active-pane"); + } + return {}; +}; export function paneRemoteConfig( this: ObsidianLiveSyncSettingTab, @@ -56,39 +64,46 @@ export function paneRemoteConfig( void addPanel(paneEl, "E2EE Configuration", () => {}).then((paneEl) => { new SveltePanel(InfoPanel, paneEl, E2EESummaryWritable); const setupButton = new Setting(paneEl).setName("Configure E2EE"); - setupButton.addButton((button) => - button - .onClick(async () => { - const setupManager = this.plugin.getModule(SetupManager); - const originalSettings = getSettingsFromEditingSettings(this.editingSettings); - await setupManager.onlyE2EEConfiguration(UserMode.Update, originalSettings); - updateE2EESummary(); - }) - .setButtonText("Configure") - .setWarning() - ); + setupButton + .addButton((button) => + button + .onClick(async () => { + const setupManager = this.plugin.getModule(SetupManager); + const originalSettings = getSettingsFromEditingSettings(this.editingSettings); + await setupManager.onlyE2EEConfiguration(UserMode.Update, originalSettings); + updateE2EESummary(); + }) + .setButtonText("Configure") + .setWarning() + ) + .addButton((button) => + button + .onClick(async () => { + const setupManager = this.plugin.getModule(SetupManager); + const originalSettings = getSettingsFromEditingSettings(this.editingSettings); + await setupManager.onConfigureManually(originalSettings, UserMode.Update); + updateE2EESummary(); + }) + .setButtonText("Configure And Change Remote") + .setWarning() + ); updateE2EESummary(); }); } { - void addPanel( - paneEl, - $msg("obsidianLiveSyncSettingTab.titleRemoteServer"), - () => {}, - () => ({ classes: this.editingSettings.remoteType === REMOTE_COUCHDB ? ["active-sync"] : [] }) - ).then((paneEl) => { - const nSetting = new Setting(paneEl).setName("Active Remote Configuration"); + void addPanel(paneEl, $msg("obsidianLiveSyncSettingTab.titleRemoteServer"), () => {}).then((paneEl) => { + const setting = new Setting(paneEl).setName("Active Remote Configuration"); - const el = nSetting.controlEl.createDiv({}); + const el = setting.controlEl.createDiv({}); el.setText(`${remoteNameMap[this.editingSettings.remoteType] || " - "}`); - nSetting.addButton((button) => + setting.addButton((button) => button .setButtonText("Change Remote and Setup") .setCta() .onClick(async () => { const setupManager = this.plugin.getModule(SetupManager); const originalSettings = getSettingsFromEditingSettings(this.editingSettings); - await setupManager.selectServer(originalSettings, UserMode.Update); + await setupManager.onSelectServer(originalSettings, UserMode.Update); }) ); }); @@ -103,30 +118,29 @@ export function paneRemoteConfig( info: getCouchDBConfigSummary(this.editingSettings), }); }; - void addPanel( - paneEl, - $msg("obsidianLiveSyncSettingTab.titleCouchDB"), - () => {}, - () => ({ classes: this.editingSettings.remoteType === REMOTE_COUCHDB ? ["active-sync"] : [] }) - ).then((paneEl) => { + void addPanel(paneEl, $msg("obsidianLiveSyncSettingTab.titleCouchDB"), () => {}).then((paneEl) => { new SveltePanel(InfoPanel, paneEl, summaryWritable); const setupButton = new Setting(paneEl).setName("Configure Remote"); - setupButton.addButton((button) => - button - .setButtonText("Configure") - .setCta() - .onClick(async () => { - const setupManager = this.plugin.getModule(SetupManager); - const originalSettings = getSettingsFromEditingSettings(this.editingSettings); - await setupManager.onCouchDBManualSetup( - UserMode.Update, - originalSettings, - this.editingSettings.remoteType === REMOTE_COUCHDB - ); + setupButton + .addButton((button) => + button + .setButtonText("Configure") + .setCta() + .onClick(async () => { + const setupManager = this.plugin.getModule(SetupManager); + const originalSettings = getSettingsFromEditingSettings(this.editingSettings); + await setupManager.onCouchDBManualSetup( + UserMode.Update, + originalSettings, + this.editingSettings.remoteType === REMOTE_COUCHDB + ); - updateSummary(); - }) - ); + updateSummary(); + }) + ) + .addOnUpdate(() => + toggleActiveSyncClass(paneEl, () => this.editingSettings.remoteType === REMOTE_COUCHDB) + ); }); } { @@ -139,30 +153,29 @@ export function paneRemoteConfig( info: getBucketConfigSummary(this.editingSettings), }); }; - void addPanel( - paneEl, - $msg("obsidianLiveSyncSettingTab.titleMinioS3R2"), - () => {}, - () => ({ classes: this.editingSettings.remoteType === REMOTE_MINIO ? ["active-sync"] : [] }) - ).then((paneEl) => { + void addPanel(paneEl, $msg("obsidianLiveSyncSettingTab.titleMinioS3R2"), () => {}).then((paneEl) => { new SveltePanel(InfoPanel, paneEl, summaryWritable); const setupButton = new Setting(paneEl).setName("Configure Remote"); - setupButton.addButton((button) => - button - .setButtonText("Configure") - .setCta() - .onClick(async () => { - const setupManager = this.plugin.getModule(SetupManager); - const originalSettings = getSettingsFromEditingSettings(this.editingSettings); - await setupManager.onBucketManualSetup( - UserMode.Update, - originalSettings, - this.editingSettings.remoteType === REMOTE_MINIO - ); - //TODO - updateSummary(); - }) - ); + setupButton + .addButton((button) => + button + .setButtonText("Configure") + .setCta() + .onClick(async () => { + const setupManager = this.plugin.getModule(SetupManager); + const originalSettings = getSettingsFromEditingSettings(this.editingSettings); + await setupManager.onBucketManualSetup( + UserMode.Update, + originalSettings, + this.editingSettings.remoteType === REMOTE_MINIO + ); + //TODO + updateSummary(); + }) + ) + .addOnUpdate(() => + toggleActiveSyncClass(paneEl, () => this.editingSettings.remoteType === REMOTE_MINIO) + ); }); } { @@ -180,54 +193,35 @@ export function paneRemoteConfig( }), }); }; - void addPanel( - paneEl, - "Peer-to-Peer Synchronisation", - () => {}, - () => ({ classes: this.editingSettings.remoteType === REMOTE_P2P ? ["active-sync"] : [] }) - ).then((paneEl) => { + void addPanel(paneEl, "Peer-to-Peer Synchronisation", () => {}).then((paneEl) => { new SveltePanel(InfoPanel, paneEl, summaryWritable); const setupButton = new Setting(paneEl).setName("Configure Remote"); - setupButton.addButton((button) => - button - .setButtonText("Configure") - .setCta() - .onClick(async () => { - const setupManager = this.plugin.getModule(SetupManager); - const originalSettings = getSettingsFromEditingSettings(this.editingSettings); - await setupManager.onP2PManualSetup( - UserMode.Update, - originalSettings, - this.editingSettings.remoteType === REMOTE_P2P - ); - //TODO - updateSummary(); - }) - ); + setupButton + .addButton((button) => + button + .setButtonText("Configure") + .setCta() + .onClick(async () => { + const setupManager = this.plugin.getModule(SetupManager); + const originalSettings = getSettingsFromEditingSettings(this.editingSettings); + await setupManager.onP2PManualSetup( + UserMode.Update, + originalSettings, + this.editingSettings.remoteType === REMOTE_P2P + ); + //TODO + updateSummary(); + }) + ) + .addOnUpdate(() => + toggleActiveSyncClass( + paneEl, + () => this.editingSettings.remoteType === REMOTE_P2P || this.editingSettings.P2P_Enabled + ) + ); }); } - void addPanel(paneEl, $msg("obsidianLiveSyncSettingTab.titleActiveRemoteServer")).then((paneEl) => { - // const containerRemoteDatabaseEl = containerEl.createDiv(); - this.createEl( - paneEl, - "div", - { - text: $msg("obsidianLiveSyncSettingTab.msgSettingsUnchangeableDuringSync"), - }, - undefined, - visibleOnly(() => this.isAnySyncEnabled()) - ).addClass("op-warn-info"); - - new Setting(paneEl) - .autoWireDropDown("remoteType", { - holdValue: true, - options: remoteNameMap, - onUpdate: this.enableOnlySyncDisabled, - }) - .addApplyButton(["remoteType"]); - }); - // new Setting(paneEl) // .setDesc("Generate ES256 Keypair for testing") // .addButton((button) => diff --git a/src/modules/features/SettingDialogue/PaneSetup.ts b/src/modules/features/SettingDialogue/PaneSetup.ts index ade3937..4e12fd8 100644 --- a/src/modules/features/SettingDialogue/PaneSetup.ts +++ b/src/modules/features/SettingDialogue/PaneSetup.ts @@ -13,7 +13,7 @@ import type { PageFunctions } from "./SettingPane.ts"; import { visibleOnly } from "./SettingPane.ts"; import { DEFAULT_SETTINGS } from "../../../lib/src/common/types.ts"; import { request } from "obsidian"; -import { SetupManager, UserMode } from "../ModuleSetupObsidian.ts"; +import { SetupManager, UserMode } from "../SetupManager.ts"; export function paneSetup( this: ObsidianLiveSyncSettingTab, paneEl: HTMLElement, @@ -36,7 +36,7 @@ export function paneSetup( .addButton((text) => { text.setButtonText("Rerun Wizard").onClick(async () => { const setupManager = this.plugin.getModule(SetupManager); - await setupManager.onBoard(UserMode.ExistingUser); + await setupManager.onOnboard(UserMode.ExistingUser); // await this.plugin.moduleSetupObsidian.onBoardingWizard(true); }); }); diff --git a/src/modules/features/SetupManager.ts b/src/modules/features/SetupManager.ts new file mode 100644 index 0000000..83ebbe1 --- /dev/null +++ b/src/modules/features/SetupManager.ts @@ -0,0 +1,378 @@ +import { + type ObsidianLiveSyncSettings, + DEFAULT_SETTINGS, + LOG_LEVEL_NOTICE, + LOG_LEVEL_VERBOSE, + REMOTE_COUCHDB, + REMOTE_MINIO, + REMOTE_P2P, +} from "../../lib/src/common/types.ts"; +import { generatePatchObj, isObjectDifferent } from "../../lib/src/common/utils.ts"; +import { AbstractObsidianModule } from "../AbstractObsidianModule.ts"; +import { SvelteDialogManager } from "./SetupWizard/ObsidianSvelteDialog.ts"; +import Intro from "./SetupWizard/dialogs/Intro.svelte"; +import SelectMethodNewUser from "./SetupWizard/dialogs/SelectMethodNewUser.svelte"; +import SelectMethodExisting from "./SetupWizard/dialogs/SelectMethodExisting.svelte"; +import ScanQRCode from "./SetupWizard/dialogs/ScanQRCode.svelte"; +import UseSetupURI from "./SetupWizard/dialogs/UseSetupURI.svelte"; +import OutroNewUser from "./SetupWizard/dialogs/OutroNewUser.svelte"; +import OutroExistingUser from "./SetupWizard/dialogs/OutroExistingUser.svelte"; +import OutroAskUserMode from "./SetupWizard/dialogs/OutroAskUserMode.svelte"; +import SetupRemote from "./SetupWizard/dialogs/SetupRemote.svelte"; +import SetupRemoteCouchDB from "./SetupWizard/dialogs/SetupRemoteCouchDB.svelte"; +import SetupRemoteBucket from "./SetupWizard/dialogs/SetupRemoteBucket.svelte"; +import SetupRemoteP2P from "./SetupWizard/dialogs/SetupRemoteP2P.svelte"; +import SetupRemoteE2EE from "./SetupWizard/dialogs/SetupRemoteE2EE.svelte"; +import { decodeSettingsFromQRCodeData } from "../../lib/src/API/processSetting.ts"; + +/** + * User modes for onboarding and setup + */ +export const enum UserMode { + /** + * New User Mode - for users who are new to the plugin + */ + NewUser = "new-user", + /** + * Existing User Mode - for users who have used the plugin before, or just configuring again + */ + ExistingUser = "existing-user", + /** + * Unknown User Mode - for cases where the user mode is not determined + */ + Unknown = "unknown", + /** + * Update User Mode - for users who are updating configuration. May be `existing-user` as well, but possibly they want to treat it differently. + */ + // eslint-disable-next-line @typescript-eslint/no-duplicate-enum-values + Update = "unknown", // Alias for Unknown for better readability +} + +/** + * Setup Manager to handle onboarding and configuration setup + */ +export class SetupManager extends AbstractObsidianModule { + /** + * Dialog manager for handling Svelte dialogs + */ + private dialogManager: SvelteDialogManager = new SvelteDialogManager(this.plugin); + + /** + * Starts the onboarding process + * @returns Promise that resolves to true if onboarding completed successfully, false otherwise + */ + async startOnBoarding(): Promise { + const isUserNewOrExisting = await this.dialogManager.openWithExplicitCancel(Intro); + if (isUserNewOrExisting === "new-user") { + await this.onOnboard(UserMode.NewUser); + } else if (isUserNewOrExisting === "existing-user") { + await this.onOnboard(UserMode.ExistingUser); + } else if (isUserNewOrExisting === "cancelled") { + this._log("Onboarding cancelled by user.", LOG_LEVEL_NOTICE); + return false; + } + return false; + } + + /** + * Handles the onboarding process based on user mode + * @param userMode + * @returns Promise that resolves to true if onboarding completed successfully, false otherwise + */ + async onOnboard(userMode: UserMode): Promise { + const originalSetting = userMode === UserMode.NewUser ? DEFAULT_SETTINGS : this.core.settings; + if (userMode === UserMode.NewUser) { + //Ask how to apply initial setup + const method = await this.dialogManager.openWithExplicitCancel(SelectMethodNewUser); + if (method === "use-setup-uri") { + await this.onUseSetupURI(userMode); + } else if (method === "configure-manually") { + await this.onConfigureManually(originalSetting, userMode); + } else if (method === "cancelled") { + this._log("Onboarding cancelled by user.", LOG_LEVEL_NOTICE); + return false; + } + } else if (userMode === UserMode.ExistingUser) { + const method = await this.dialogManager.openWithExplicitCancel(SelectMethodExisting); + if (method === "use-setup-uri") { + await this.onUseSetupURI(userMode); + } else if (method === "configure-manually") { + await this.onConfigureManually(originalSetting, userMode); + } else if (method === "scan-qr-code") { + await this.onPromptQRCodeInstruction(); + } else if (method === "cancelled") { + this._log("Onboarding cancelled by user.", LOG_LEVEL_NOTICE); + return false; + } + } + return false; + } + + /** + * Handles setup using a setup URI + * @param userMode + * @param setupURI + * @returns Promise that resolves to true if onboarding completed successfully, false otherwise + */ + async onUseSetupURI(userMode: UserMode, setupURI: string = ""): Promise { + const newSetting = await this.dialogManager.openWithExplicitCancel(UseSetupURI, setupURI); + if (newSetting === "cancelled") { + this._log("Setup URI dialog cancelled.", LOG_LEVEL_NOTICE); + return false; + } + this._log("Setup URI dialog closed.", LOG_LEVEL_VERBOSE); + return await this.onConfirmApplySettingsFromWizard(newSetting, userMode); + } + + /** + * Handles manual setup for CouchDB + * @param userMode + * @param currentSetting + * @param activate Whether to activate the CouchDB as remote type + * @returns Promise that resolves to true if setup completed successfully, false otherwise + */ + async onCouchDBManualSetup( + userMode: UserMode, + currentSetting: ObsidianLiveSyncSettings, + activate = true + ): Promise { + const originalSetting = JSON.parse(JSON.stringify(currentSetting)) as ObsidianLiveSyncSettings; + const baseSetting = JSON.parse(JSON.stringify(originalSetting)) as ObsidianLiveSyncSettings; + const couchConf = await this.dialogManager.openWithExplicitCancel(SetupRemoteCouchDB, originalSetting); + if (couchConf === "cancelled") { + this._log("Manual configuration cancelled.", LOG_LEVEL_NOTICE); + return await this.onOnboard(userMode); + } + const newSetting = { ...baseSetting, ...couchConf } as ObsidianLiveSyncSettings; + if (activate) { + newSetting.remoteType = REMOTE_COUCHDB; + } + return await this.onConfirmApplySettingsFromWizard(newSetting, userMode, activate); + } + + /** + * Handles manual setup for S3-compatible bucket + * @param userMode + * @param currentSetting + * @param activate Whether to activate the Bucket as remote type + * @returns Promise that resolves to true if setup completed successfully, false otherwise + */ + async onBucketManualSetup( + userMode: UserMode, + currentSetting: ObsidianLiveSyncSettings, + activate = true + ): Promise { + const bucketConf = await this.dialogManager.openWithExplicitCancel(SetupRemoteBucket, currentSetting); + if (bucketConf === "cancelled") { + this._log("Manual configuration cancelled.", LOG_LEVEL_NOTICE); + return await this.onOnboard(userMode); + } + const newSetting = { ...currentSetting, ...bucketConf } as ObsidianLiveSyncSettings; + if (activate) { + newSetting.remoteType = REMOTE_MINIO; + } + return await this.onConfirmApplySettingsFromWizard(newSetting, userMode, activate); + } + + /** + * Handles manual setup for P2P + * @param userMode + * @param currentSetting + * @param activate Whether to activate the P2P as remote type (as P2P Only setup) + * @returns Promise that resolves to true if setup completed successfully, false otherwise + */ + async onP2PManualSetup( + userMode: UserMode, + currentSetting: ObsidianLiveSyncSettings, + activate = true + ): Promise { + const p2pConf = await this.dialogManager.openWithExplicitCancel(SetupRemoteP2P, currentSetting); + if (p2pConf === "cancelled") { + this._log("Manual configuration cancelled.", LOG_LEVEL_NOTICE); + return await this.onOnboard(userMode); + } + const newSetting = { ...currentSetting, ...p2pConf } as ObsidianLiveSyncSettings; + if (activate) { + newSetting.remoteType = REMOTE_P2P; + } + return await this.onConfirmApplySettingsFromWizard(newSetting, userMode, activate); + } + + /** + * Handles only E2EE configuration + * @param userMode + * @param currentSetting + * @returns + */ + async onlyE2EEConfiguration(userMode: UserMode, currentSetting: ObsidianLiveSyncSettings): Promise { + const e2eeConf = await this.dialogManager.openWithExplicitCancel(SetupRemoteE2EE, currentSetting); + if (e2eeConf === "cancelled") { + this._log("E2EE configuration cancelled.", LOG_LEVEL_NOTICE); + return await false; + } + const newSetting = { + ...currentSetting, + ...e2eeConf, + } as ObsidianLiveSyncSettings; + return await this.onConfirmApplySettingsFromWizard(newSetting, userMode); + } + + /** + * Handles manual configuration flow (E2EE + select server) + * @param originalSetting + * @param userMode + * @returns + */ + async onConfigureManually(originalSetting: ObsidianLiveSyncSettings, userMode: UserMode): Promise { + const e2eeConf = await this.dialogManager.openWithExplicitCancel(SetupRemoteE2EE, originalSetting); + if (e2eeConf === "cancelled") { + this._log("Manual configuration cancelled.", LOG_LEVEL_NOTICE); + return await this.onOnboard(userMode); + } + const currentSetting = { + ...originalSetting, + ...e2eeConf, + } as ObsidianLiveSyncSettings; + return await this.onSelectServer(currentSetting, userMode); + } + + /** + * Handles server selection during manual configuration + * @param currentSetting + * @param userMode + * @returns + */ + async onSelectServer(currentSetting: ObsidianLiveSyncSettings, userMode: UserMode): Promise { + const method = await this.dialogManager.openWithExplicitCancel(SetupRemote); + if (method === "couchdb") { + return await this.onCouchDBManualSetup(userMode, currentSetting, true); + } else if (method === "bucket") { + return await this.onBucketManualSetup(userMode, currentSetting, true); + } else if (method === "p2p") { + return await this.onP2PManualSetup(userMode, currentSetting, true); + } else if (method === "cancelled") { + this._log("Manual configuration cancelled.", LOG_LEVEL_NOTICE); + if (userMode !== UserMode.Unknown) { + return await this.onOnboard(userMode); + } + } + // Should not reach here. + return false; + } + /** + * Confirms and applies settings obtained from the wizard + * @param newConf + * @param _userMode + * @param activate Whether to activate the remote type in the new settings + * @param extra Extra function to run before applying settings + * @returns Promise that resolves to true if settings applied successfully, false otherwise + */ + async onConfirmApplySettingsFromWizard( + newConf: ObsidianLiveSyncSettings, + _userMode: UserMode, + activate: boolean = true, + extra: () => void = () => {} + ): Promise { + let userMode = _userMode; + if (userMode === UserMode.Unknown) { + if (isObjectDifferent(this.settings, newConf, true) === false) { + this._log("No changes in settings detected. Skipping applying settings from wizard.", LOG_LEVEL_NOTICE); + return true; + } + const patch = generatePatchObj(this.settings, newConf); + console.log(`Changes:`); + console.dir(patch); + if (!activate) { + extra(); + await this.applySetting(newConf, UserMode.ExistingUser); + this._log("Setting Applied", LOG_LEVEL_NOTICE); + return true; + } + // Check virtual changes + const original = { ...this.settings, P2P_DevicePeerName: "" } as ObsidianLiveSyncSettings; + const modified = { ...newConf, P2P_DevicePeerName: "" } as ObsidianLiveSyncSettings; + const isOnlyVirtualChange = isObjectDifferent(original, modified, true) === false; + if (isOnlyVirtualChange) { + extra(); + await this.applySetting(newConf, UserMode.ExistingUser); + this._log("Settings from wizard applied.", LOG_LEVEL_NOTICE); + return true; + } else { + const userModeResult = await this.dialogManager.openWithExplicitCancel(OutroAskUserMode); + if (userModeResult === "new-user") { + userMode = UserMode.NewUser; + } else if (userModeResult === "existing-user") { + userMode = UserMode.ExistingUser; + } else if (userModeResult === "compatible-existing-user") { + extra(); + await this.applySetting(newConf, UserMode.ExistingUser); + this._log("Settings from wizard applied.", LOG_LEVEL_NOTICE); + return true; + } else if (userModeResult === "cancelled") { + this._log("User cancelled applying settings from wizard.", LOG_LEVEL_NOTICE); + return false; + } + } + } + const component = userMode === UserMode.NewUser ? OutroNewUser : OutroExistingUser; + const confirm = await this.dialogManager.openWithExplicitCancel(component); + if (confirm === "cancelled") { + this._log("User cancelled applying settings from wizard..", LOG_LEVEL_NOTICE); + return false; + } + if (confirm) { + extra(); + await this.applySetting(newConf, userMode); + if (userMode === UserMode.NewUser) { + // For new users, schedule a rebuild everything. + await this.core.rebuilder.scheduleRebuild(); + } else { + // For existing users, schedule a fetch. + await this.core.rebuilder.scheduleFetch(); + } + } + // Settings applied, but may require rebuild to take effect. + return false; + } + + /** + * Prompts the user with QR code scanning instructions + * @returns Promise that resolves to false as QR code instruction dialog does not yield settings directly + */ + + async onPromptQRCodeInstruction(): Promise { + const qrResult = await this.dialogManager.open(ScanQRCode); + this._log("QR Code dialog closed.", LOG_LEVEL_VERBOSE); + // Result is not used, but log it for debugging. + this._log(`QR Code result: ${qrResult}`, LOG_LEVEL_VERBOSE); + // QR Code instruction dialog never yields settings directly. + return false; + } + + /** + * Decodes settings from a QR code string and applies them + * @param qr QR code string containing encoded settings + * @returns Promise that resolves to true if settings applied successfully, false otherwise + */ + async decodeQR(qr: string) { + const newSettings = decodeSettingsFromQRCodeData(qr); + return await this.onConfirmApplySettingsFromWizard(newSettings, UserMode.Unknown); + } + + /** + * Applies the new settings to the core settings and saves them + * @param newConf + * @param userMode + * @returns Promise that resolves to true if settings applied successfully, false otherwise + */ + async applySetting(newConf: ObsidianLiveSyncSettings, userMode: UserMode) { + const newSetting = { + ...this.core.settings, + ...newConf, + }; + this.core.settings = newSetting; + this.services.setting.clearUsedPassphrase(); + await this.services.setting.saveSettingData(); + return true; + } +} diff --git a/src/modules/features/SetupWizard/dialogs/SetupRemoteP2P.svelte b/src/modules/features/SetupWizard/dialogs/SetupRemoteP2P.svelte index 0467488..7b0c8e4 100644 --- a/src/modules/features/SetupWizard/dialogs/SetupRemoteP2P.svelte +++ b/src/modules/features/SetupWizard/dialogs/SetupRemoteP2P.svelte @@ -32,12 +32,8 @@ const context = getObsidianDialogContext(); let error = $state(""); - let devicePeerId = $state(""); const TYPE_CANCELLED = "cancelled"; - type SettingInfo = { - info: P2PConnectionInfo; - devicePeerId: string; - }; + type SettingInfo = P2PConnectionInfo; type ResultType = typeof TYPE_CANCELLED | SettingInfo; type Props = GuestDialogProps; @@ -49,7 +45,11 @@ copyTo(initialData, syncSetting); } if (context.services.config.getSmallConfig(SETTING_KEY_P2P_DEVICE_NAME)) { - devicePeerId = context.services.config.getSmallConfig(SETTING_KEY_P2P_DEVICE_NAME) as string; + syncSetting.P2P_DevicePeerName = context.services.config.getSmallConfig( + SETTING_KEY_P2P_DEVICE_NAME + ) as string; + } else { + syncSetting.P2P_DevicePeerName = ""; } } }); @@ -103,7 +103,7 @@ confirm: context.plugin.confirm, db: dummyPouch, simpleStore: store, - deviceName: devicePeerId || "unnamed-device", + deviceName: syncSetting.P2P_DevicePeerName || "unnamed-device", platform: "setup-wizard", }; const replicator = new TrysteroReplicator(env); @@ -164,10 +164,7 @@ error = (await checkConnection()) || ""; if (!error) { const setting = generateSetting(); - setResult({ - info: pickP2PSyncSettings(setting), - devicePeerId: devicePeerId, - }); + setResult(pickP2PSyncSettings(setting)); return; } } catch (e) { @@ -177,10 +174,7 @@ } function commit() { const setting = pickP2PSyncSettings(generateSetting()); - setResult({ - info: setting, - devicePeerId: devicePeerId, - }); + setResult(setting); } function cancel() { setResult(TYPE_CANCELLED); @@ -190,13 +184,16 @@ syncSetting.P2P_relays.trim() !== "" && syncSetting.P2P_roomID.trim() !== "" && syncSetting.P2P_passphrase.trim() !== "" && - devicePeerId.trim() !== "" + (syncSetting.P2P_DevicePeerName ?? "").trim() !== "" ); }); Please enter the Peer-to-Peer Synchronisation information below. + + + - + + + + + If "Auto Start P2P Connection" is enabled, the P2P connection will be started automatically when the plug-in + launches. + + + + + + If "Auto Broadcast Changes" is enabled, changes will be automatically broadcasted to connected peers without + requiring manual intervention. This requests peers to fetch this device's changes. + {error} diff --git a/src/modules/services/ObsidianServices.ts b/src/modules/services/ObsidianServices.ts index 0f98428..04259e5 100644 --- a/src/modules/services/ObsidianServices.ts +++ b/src/modules/services/ObsidianServices.ts @@ -20,7 +20,11 @@ import { ObsidianUIService } from "./ObsidianUIService.ts"; // All Services will be migrated to be based on Plain Services, not Injectable Services. // This is a migration step. -export class ObsidianAPIService extends InjectableAPIService {} +export class ObsidianAPIService extends InjectableAPIService { + getPlatform(): string { + return "obsidian"; + } +} export class ObsidianPathService extends InjectablePathService {} export class ObsidianDatabaseService extends InjectableDatabaseService {} diff --git a/styles.css b/styles.css index 16b68e9..78f5968 100644 --- a/styles.css +++ b/styles.css @@ -393,13 +393,13 @@ span.ls-mark-cr::after { div.workspace-leaf-content[data-type=bases] .livesync-status { top: calc(var(--bases-header-height) + var(--header-height)); padding: 5px; - padding-right:18px; + padding-right: 18px; } .is-mobile div.workspace-leaf-content[data-type=bases] .livesync-status { top: calc(var(--bases-header-height) + var(--view-header-height)); padding: 6px; - padding-right:18px; + padding-right: 18px; } .livesync-status div { @@ -444,6 +444,10 @@ div.workspace-leaf-content[data-type=bases] .livesync-status { padding: 0.5em 1.0em; } +.active-pane .sls-setting-panel-title { + border: 1px solid var(--interactive-accent); +} + .sls-dialogue-note-wrapper { display: flex; justify-content: flex-end; diff --git a/tsconfig.json b/tsconfig.json index 2223967..4ddd5b4 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -13,6 +13,7 @@ "importHelpers": false, "alwaysStrict": true, "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, "noEmit": true, "lib": ["es2018", "DOM", "ES5", "ES6", "ES7", "es2019.array", "ES2021.WeakRef", "ES2020.BigInt", "ESNext.Intl"], "strictBindCallApply": true,