Unfollow tool for Bluesky

apply ratelimit fix

Changed files
+208 -203
src
+5 -5
package.json
···
"serve": "vite preview"
},
"devDependencies": {
-
"@atcute/bluesky": "^1.0.8",
-
"@types/node": "^22.9.1",
+
"@atcute/bluesky": "^1.0.9",
+
"@types/node": "^22.9.3",
"prettier": "^3.3.3",
"prettier-plugin-tailwindcss": "^0.6.9",
-
"typescript": "^5.6.3",
+
"typescript": "^5.7.2",
"unocss": "^0.64.1",
"vite": "^5.4.11",
"vite-plugin-solid": "^2.10.2"
},
"dependencies": {
-
"@atcute/client": "^2.0.4",
-
"@atcute/oauth-browser-client": "^1.0.5",
+
"@atcute/client": "^2.0.6",
+
"@atcute/oauth-browser-client": "^1.0.6",
"solid-js": "^1.9.3"
},
"packageManager": "pnpm@9.12.2+sha512.22721b3a11f81661ae1ec68ce1a7b879425a1ca5b991c975b074ac220b187ce56c708fe5db69f4c962c989452eee76c82877f4ee80f474cebd61ee13461b6228"
+146 -146
pnpm-lock.yaml
···
.:
dependencies:
'@atcute/client':
-
specifier: ^2.0.4
-
version: 2.0.4
+
specifier: ^2.0.6
+
version: 2.0.6
'@atcute/oauth-browser-client':
-
specifier: ^1.0.5
-
version: 1.0.5
+
specifier: ^1.0.6
+
version: 1.0.6
solid-js:
specifier: ^1.9.3
version: 1.9.3
devDependencies:
'@atcute/bluesky':
-
specifier: ^1.0.8
-
version: 1.0.8(@atcute/client@2.0.4)
+
specifier: ^1.0.9
+
version: 1.0.9(@atcute/client@2.0.6)
'@types/node':
-
specifier: ^22.9.1
-
version: 22.9.1
+
specifier: ^22.9.3
+
version: 22.9.3
prettier:
specifier: ^3.3.3
version: 3.3.3
···
specifier: ^0.6.9
version: 0.6.9(prettier@3.3.3)
typescript:
-
specifier: ^5.6.3
-
version: 5.6.3
+
specifier: ^5.7.2
+
version: 5.7.2
unocss:
specifier: ^0.64.1
-
version: 0.64.1(postcss@8.4.49)(rollup@4.27.3)(vite@5.4.11(@types/node@22.9.1))(vue@3.5.12(typescript@5.6.3))
+
version: 0.64.1(postcss@8.4.49)(rollup@4.27.4)(vite@5.4.11(@types/node@22.9.3))(vue@3.5.12(typescript@5.7.2))
vite:
specifier: ^5.4.11
-
version: 5.4.11(@types/node@22.9.1)
+
version: 5.4.11(@types/node@22.9.3)
vite-plugin-solid:
specifier: ^2.10.2
-
version: 2.10.2(solid-js@1.9.3)(vite@5.4.11(@types/node@22.9.1))
+
version: 2.10.2(solid-js@1.9.3)(vite@5.4.11(@types/node@22.9.3))
packages:
···
'@antfu/utils@0.7.10':
resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==}
-
'@atcute/bluesky@1.0.8':
-
resolution: {integrity: sha512-XqAZHYh65ZyBBT5rRkEhP656THYaY6CE+EY0AZXkIDaXJNdIl9KINZW5dnSrVWifspJbM+gUw1QFlCv8Yrx01g==}
+
'@atcute/bluesky@1.0.9':
+
resolution: {integrity: sha512-06UbqlnREobZB5vVlstJXsJJVNBPr/RhauVVWQk9k8eIfzyiV9uxklc5olv+wULld+iBL6OQItnTEyZPv8QFLw==}
peerDependencies:
'@atcute/client': ^1.0.0 || ^2.0.0
-
'@atcute/client@2.0.4':
-
resolution: {integrity: sha512-bKA6KEOmrdhU2CDRNp13M4WyKN0EdrVLKJffzPo62ANSTMacz5hRJhmvQYwuo7BZSGIoDql4sH+QR6Xbk3DERg==}
+
'@atcute/client@2.0.6':
+
resolution: {integrity: sha512-mhdqEicGUx0s5HTFOLpz91rcLS9j/g63de0nmAqv7blhU3j+xBf4le54qr2YIXNfnReZI7EwLYLX/YIBez4LGA==}
-
'@atcute/oauth-browser-client@1.0.5':
-
resolution: {integrity: sha512-UUs2WFMh22rXOapRM848WfWtvgaxV/ji0tEupFrrBYe2i+/UlwhXcphlqdwm43LBsFtMWtV1Xsy2zmnItf0Akg==}
+
'@atcute/oauth-browser-client@1.0.6':
+
resolution: {integrity: sha512-O9M7YdpPTWdXfqqdGNlYFmyMwbTEwHvMz5Ew79ASiQFsrcAdFhdVywe/rMDT6jd2La6gQDhyhfLofUPMCRiDGQ==}
'@babel/code-frame@7.26.2':
resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==}
···
rollup:
optional: true
-
'@rollup/rollup-android-arm-eabi@4.27.3':
-
resolution: {integrity: sha512-EzxVSkIvCFxUd4Mgm4xR9YXrcp976qVaHnqom/Tgm+vU79k4vV4eYTjmRvGfeoW8m9LVcsAy/lGjcgVegKEhLQ==}
+
'@rollup/rollup-android-arm-eabi@4.27.4':
+
resolution: {integrity: sha512-2Y3JT6f5MrQkICUyRVCw4oa0sutfAsgaSsb0Lmmy1Wi2y7X5vT9Euqw4gOsCyy0YfKURBg35nhUKZS4mDcfULw==}
cpu: [arm]
os: [android]
-
'@rollup/rollup-android-arm64@4.27.3':
-
resolution: {integrity: sha512-LJc5pDf1wjlt9o/Giaw9Ofl+k/vLUaYsE2zeQGH85giX2F+wn/Cg8b3c5CDP3qmVmeO5NzwVUzQQxwZvC2eQKw==}
+
'@rollup/rollup-android-arm64@4.27.4':
+
resolution: {integrity: sha512-wzKRQXISyi9UdCVRqEd0H4cMpzvHYt1f/C3CoIjES6cG++RHKhrBj2+29nPF0IB5kpy9MS71vs07fvrNGAl/iA==}
cpu: [arm64]
os: [android]
-
'@rollup/rollup-darwin-arm64@4.27.3':
-
resolution: {integrity: sha512-OuRysZ1Mt7wpWJ+aYKblVbJWtVn3Cy52h8nLuNSzTqSesYw1EuN6wKp5NW/4eSre3mp12gqFRXOKTcN3AI3LqA==}
+
'@rollup/rollup-darwin-arm64@4.27.4':
+
resolution: {integrity: sha512-PlNiRQapift4LNS8DPUHuDX/IdXiLjf8mc5vdEmUR0fF/pyy2qWwzdLjB+iZquGr8LuN4LnUoSEvKRwjSVYz3Q==}
cpu: [arm64]
os: [darwin]
-
'@rollup/rollup-darwin-x64@4.27.3':
-
resolution: {integrity: sha512-xW//zjJMlJs2sOrCmXdB4d0uiilZsOdlGQIC/jjmMWT47lkLLoB1nsNhPUcnoqyi5YR6I4h+FjBpILxbEy8JRg==}
+
'@rollup/rollup-darwin-x64@4.27.4':
+
resolution: {integrity: sha512-o9bH2dbdgBDJaXWJCDTNDYa171ACUdzpxSZt+u/AAeQ20Nk5x+IhA+zsGmrQtpkLiumRJEYef68gcpn2ooXhSQ==}
cpu: [x64]
os: [darwin]
-
'@rollup/rollup-freebsd-arm64@4.27.3':
-
resolution: {integrity: sha512-58E0tIcwZ+12nK1WiLzHOD8I0d0kdrY/+o7yFVPRHuVGY3twBwzwDdTIBGRxLmyjciMYl1B/U515GJy+yn46qw==}
+
'@rollup/rollup-freebsd-arm64@4.27.4':
+
resolution: {integrity: sha512-NBI2/i2hT9Q+HySSHTBh52da7isru4aAAo6qC3I7QFVsuhxi2gM8t/EI9EVcILiHLj1vfi+VGGPaLOUENn7pmw==}
cpu: [arm64]
os: [freebsd]
-
'@rollup/rollup-freebsd-x64@4.27.3':
-
resolution: {integrity: sha512-78fohrpcVwTLxg1ZzBMlwEimoAJmY6B+5TsyAZ3Vok7YabRBUvjYTsRXPTjGEvv/mfgVBepbW28OlMEz4w8wGA==}
+
'@rollup/rollup-freebsd-x64@4.27.4':
+
resolution: {integrity: sha512-wYcC5ycW2zvqtDYrE7deary2P2UFmSh85PUpAx+dwTCO9uw3sgzD6Gv9n5X4vLaQKsrfTSZZ7Z7uynQozPVvWA==}
cpu: [x64]
os: [freebsd]
-
'@rollup/rollup-linux-arm-gnueabihf@4.27.3':
-
resolution: {integrity: sha512-h2Ay79YFXyQi+QZKo3ISZDyKaVD7uUvukEHTOft7kh00WF9mxAaxZsNs3o/eukbeKuH35jBvQqrT61fzKfAB/Q==}
+
'@rollup/rollup-linux-arm-gnueabihf@4.27.4':
+
resolution: {integrity: sha512-9OwUnK/xKw6DyRlgx8UizeqRFOfi9mf5TYCw1uolDaJSbUmBxP85DE6T4ouCMoN6pXw8ZoTeZCSEfSaYo+/s1w==}
cpu: [arm]
os: [linux]
-
'@rollup/rollup-linux-arm-musleabihf@4.27.3':
-
resolution: {integrity: sha512-Sv2GWmrJfRY57urktVLQ0VKZjNZGogVtASAgosDZ1aUB+ykPxSi3X1nWORL5Jk0sTIIwQiPH7iE3BMi9zGWfkg==}
+
'@rollup/rollup-linux-arm-musleabihf@4.27.4':
+
resolution: {integrity: sha512-Vgdo4fpuphS9V24WOV+KwkCVJ72u7idTgQaBoLRD0UxBAWTF9GWurJO9YD9yh00BzbkhpeXtm6na+MvJU7Z73A==}
cpu: [arm]
os: [linux]
-
'@rollup/rollup-linux-arm64-gnu@4.27.3':
-
resolution: {integrity: sha512-FPoJBLsPW2bDNWjSrwNuTPUt30VnfM8GPGRoLCYKZpPx0xiIEdFip3dH6CqgoT0RnoGXptaNziM0WlKgBc+OWQ==}
+
'@rollup/rollup-linux-arm64-gnu@4.27.4':
+
resolution: {integrity: sha512-pleyNgyd1kkBkw2kOqlBx+0atfIIkkExOTiifoODo6qKDSpnc6WzUY5RhHdmTdIJXBdSnh6JknnYTtmQyobrVg==}
cpu: [arm64]
os: [linux]
-
'@rollup/rollup-linux-arm64-musl@4.27.3':
-
resolution: {integrity: sha512-TKxiOvBorYq4sUpA0JT+Fkh+l+G9DScnG5Dqx7wiiqVMiRSkzTclP35pE6eQQYjP4Gc8yEkJGea6rz4qyWhp3g==}
+
'@rollup/rollup-linux-arm64-musl@4.27.4':
+
resolution: {integrity: sha512-caluiUXvUuVyCHr5DxL8ohaaFFzPGmgmMvwmqAITMpV/Q+tPoaHZ/PWa3t8B2WyoRcIIuu1hkaW5KkeTDNSnMA==}
cpu: [arm64]
os: [linux]
-
'@rollup/rollup-linux-powerpc64le-gnu@4.27.3':
-
resolution: {integrity: sha512-v2M/mPvVUKVOKITa0oCFksnQQ/TqGrT+yD0184/cWHIu0LoIuYHwox0Pm3ccXEz8cEQDLk6FPKd1CCm+PlsISw==}
+
'@rollup/rollup-linux-powerpc64le-gnu@4.27.4':
+
resolution: {integrity: sha512-FScrpHrO60hARyHh7s1zHE97u0KlT/RECzCKAdmI+LEoC1eDh/RDji9JgFqyO+wPDb86Oa/sXkily1+oi4FzJQ==}
cpu: [ppc64]
os: [linux]
-
'@rollup/rollup-linux-riscv64-gnu@4.27.3':
-
resolution: {integrity: sha512-LdrI4Yocb1a/tFVkzmOE5WyYRgEBOyEhWYJe4gsDWDiwnjYKjNs7PS6SGlTDB7maOHF4kxevsuNBl2iOcj3b4A==}
+
'@rollup/rollup-linux-riscv64-gnu@4.27.4':
+
resolution: {integrity: sha512-qyyprhyGb7+RBfMPeww9FlHwKkCXdKHeGgSqmIXw9VSUtvyFZ6WZRtnxgbuz76FK7LyoN8t/eINRbPUcvXB5fw==}
cpu: [riscv64]
os: [linux]
-
'@rollup/rollup-linux-s390x-gnu@4.27.3':
-
resolution: {integrity: sha512-d4wVu6SXij/jyiwPvI6C4KxdGzuZOvJ6y9VfrcleHTwo68fl8vZC5ZYHsCVPUi4tndCfMlFniWgwonQ5CUpQcA==}
+
'@rollup/rollup-linux-s390x-gnu@4.27.4':
+
resolution: {integrity: sha512-PFz+y2kb6tbh7m3A7nA9++eInGcDVZUACulf/KzDtovvdTizHpZaJty7Gp0lFwSQcrnebHOqxF1MaKZd7psVRg==}
cpu: [s390x]
os: [linux]
-
'@rollup/rollup-linux-x64-gnu@4.27.3':
-
resolution: {integrity: sha512-/6bn6pp1fsCGEY5n3yajmzZQAh+mW4QPItbiWxs69zskBzJuheb3tNynEjL+mKOsUSFK11X4LYF2BwwXnzWleA==}
+
'@rollup/rollup-linux-x64-gnu@4.27.4':
+
resolution: {integrity: sha512-Ni8mMtfo+o/G7DVtweXXV/Ol2TFf63KYjTtoZ5f078AUgJTmaIJnj4JFU7TK/9SVWTaSJGxPi5zMDgK4w+Ez7Q==}
cpu: [x64]
os: [linux]
-
'@rollup/rollup-linux-x64-musl@4.27.3':
-
resolution: {integrity: sha512-nBXOfJds8OzUT1qUreT/en3eyOXd2EH5b0wr2bVB5999qHdGKkzGzIyKYaKj02lXk6wpN71ltLIaQpu58YFBoQ==}
+
'@rollup/rollup-linux-x64-musl@4.27.4':
+
resolution: {integrity: sha512-5AeeAF1PB9TUzD+3cROzFTnAJAcVUGLuR8ng0E0WXGkYhp6RD6L+6szYVX+64Rs0r72019KHZS1ka1q+zU/wUw==}
cpu: [x64]
os: [linux]
-
'@rollup/rollup-win32-arm64-msvc@4.27.3':
-
resolution: {integrity: sha512-ogfbEVQgIZOz5WPWXF2HVb6En+kWzScuxJo/WdQTqEgeyGkaa2ui5sQav9Zkr7bnNCLK48uxmmK0TySm22eiuw==}
+
'@rollup/rollup-win32-arm64-msvc@4.27.4':
+
resolution: {integrity: sha512-yOpVsA4K5qVwu2CaS3hHxluWIK5HQTjNV4tWjQXluMiiiu4pJj4BN98CvxohNCpcjMeTXk/ZMJBRbgRg8HBB6A==}
cpu: [arm64]
os: [win32]
-
'@rollup/rollup-win32-ia32-msvc@4.27.3':
-
resolution: {integrity: sha512-ecE36ZBMLINqiTtSNQ1vzWc5pXLQHlf/oqGp/bSbi7iedcjcNb6QbCBNG73Euyy2C+l/fn8qKWEwxr+0SSfs3w==}
+
'@rollup/rollup-win32-ia32-msvc@4.27.4':
+
resolution: {integrity: sha512-KtwEJOaHAVJlxV92rNYiG9JQwQAdhBlrjNRp7P9L8Cb4Rer3in+0A+IPhJC9y68WAi9H0sX4AiG2NTsVlmqJeQ==}
cpu: [ia32]
os: [win32]
-
'@rollup/rollup-win32-x64-msvc@4.27.3':
-
resolution: {integrity: sha512-vliZLrDmYKyaUoMzEbMTg2JkerfBjn03KmAw9CykO0Zzkzoyd7o3iZNam/TpyWNjNT+Cz2iO3P9Smv2wgrR+Eg==}
+
'@rollup/rollup-win32-x64-msvc@4.27.4':
+
resolution: {integrity: sha512-3j4jx1TppORdTAoBJRd+/wJRGCPC0ETWkXOecJ6PPZLj6SptXkrXcNqdj0oclbKML6FkQltdz7bBA3rUSirZug==}
cpu: [x64]
os: [win32]
···
'@types/estree@1.0.6':
resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
-
'@types/node@22.9.1':
-
resolution: {integrity: sha512-p8Yy/8sw1caA8CdRIQBG5tiLHmxtQKObCijiAa9Ez+d4+PRffM4054xbju0msf+cvhJpnFEeNjxmVT/0ipktrg==}
+
'@types/node@22.9.3':
+
resolution: {integrity: sha512-F3u1fs/fce3FFk+DAxbxc78DF8x0cY09RRL8GnXLmkJ1jvx3TtPdWoTT5/NiYfI5ASqXBmfqJi9dZ3gxMx4lzw==}
'@unocss/astro@0.64.1':
resolution: {integrity: sha512-UBB2nDc3aqBmdcgJHOsnAQaQnbdch4f3CKfV+LTv77D4tPizagUCODwPVTK3CA3leQzVbbUV06uHfo5hsv2PUw==}
···
resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
engines: {node: '>=8'}
-
caniuse-lite@1.0.30001680:
-
resolution: {integrity: sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==}
+
caniuse-lite@1.0.30001683:
+
resolution: {integrity: sha512-iqmNnThZ0n70mNwvxpEC2nBJ037ZHZUoBI5Gorh1Mw6IlEAZujEoU1tXA628iZfzm7R9FvFzxbfdgml82a3k8Q==}
chokidar@3.6.0:
resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
···
duplexer@0.1.2:
resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==}
-
electron-to-chromium@1.5.63:
-
resolution: {integrity: sha512-ddeXKuY9BHo/mw145axlyWjlJ1UBt4WK3AlvkT7W2AbqfRQoacVoRUCF6wL3uIx/8wT9oLKXzI+rFqHHscByaA==}
+
electron-to-chromium@1.5.64:
+
resolution: {integrity: sha512-IXEuxU+5ClW2IGEYFC2T7szbyVgehupCWQe5GNh+H065CD6U6IFN0s4KeAMFGNmQolRU4IV7zGBWSYMmZ8uuqQ==}
entities@4.5.0:
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
···
resolve-pkg-maps@1.0.0:
resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
-
rollup@4.27.3:
-
resolution: {integrity: sha512-SLsCOnlmGt9VoZ9Ek8yBK8tAdmPHeppkw+Xa7yDlCEhDTvwYei03JlWo1fdc7YTfLZ4tD8riJCUyAgTbszk1fQ==}
+
rollup@4.27.4:
+
resolution: {integrity: sha512-RLKxqHEMjh/RGLsDxAEsaLO3mWgyoU6x9w6n1ikAzet4B3gI2/3yP6PWY2p9QzRTh6MfEIXB3MwsOY0Iv3vNrw==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
···
engines: {node: '>=18.0.0'}
hasBin: true
-
typescript@5.6.3:
-
resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==}
+
typescript@5.7.2:
+
resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==}
engines: {node: '>=14.17'}
hasBin: true
···
'@antfu/utils@0.7.10': {}
-
'@atcute/bluesky@1.0.8(@atcute/client@2.0.4)':
+
'@atcute/bluesky@1.0.9(@atcute/client@2.0.6)':
dependencies:
-
'@atcute/client': 2.0.4
+
'@atcute/client': 2.0.6
-
'@atcute/client@2.0.4': {}
+
'@atcute/client@2.0.6': {}
-
'@atcute/oauth-browser-client@1.0.5':
+
'@atcute/oauth-browser-client@1.0.6':
dependencies:
-
'@atcute/client': 2.0.4
+
'@atcute/client': 2.0.6
nanoid: 5.0.8
'@babel/code-frame@7.26.2':
···
'@polka/url@1.0.0-next.28': {}
-
'@rollup/pluginutils@5.1.3(rollup@4.27.3)':
+
'@rollup/pluginutils@5.1.3(rollup@4.27.4)':
dependencies:
'@types/estree': 1.0.6
estree-walker: 2.0.2
picomatch: 4.0.2
optionalDependencies:
-
rollup: 4.27.3
+
rollup: 4.27.4
-
'@rollup/rollup-android-arm-eabi@4.27.3':
+
'@rollup/rollup-android-arm-eabi@4.27.4':
optional: true
-
'@rollup/rollup-android-arm64@4.27.3':
+
'@rollup/rollup-android-arm64@4.27.4':
optional: true
-
'@rollup/rollup-darwin-arm64@4.27.3':
+
'@rollup/rollup-darwin-arm64@4.27.4':
optional: true
-
'@rollup/rollup-darwin-x64@4.27.3':
+
'@rollup/rollup-darwin-x64@4.27.4':
optional: true
-
'@rollup/rollup-freebsd-arm64@4.27.3':
+
'@rollup/rollup-freebsd-arm64@4.27.4':
optional: true
-
'@rollup/rollup-freebsd-x64@4.27.3':
+
'@rollup/rollup-freebsd-x64@4.27.4':
optional: true
-
'@rollup/rollup-linux-arm-gnueabihf@4.27.3':
+
'@rollup/rollup-linux-arm-gnueabihf@4.27.4':
optional: true
-
'@rollup/rollup-linux-arm-musleabihf@4.27.3':
+
'@rollup/rollup-linux-arm-musleabihf@4.27.4':
optional: true
-
'@rollup/rollup-linux-arm64-gnu@4.27.3':
+
'@rollup/rollup-linux-arm64-gnu@4.27.4':
optional: true
-
'@rollup/rollup-linux-arm64-musl@4.27.3':
+
'@rollup/rollup-linux-arm64-musl@4.27.4':
optional: true
-
'@rollup/rollup-linux-powerpc64le-gnu@4.27.3':
+
'@rollup/rollup-linux-powerpc64le-gnu@4.27.4':
optional: true
-
'@rollup/rollup-linux-riscv64-gnu@4.27.3':
+
'@rollup/rollup-linux-riscv64-gnu@4.27.4':
optional: true
-
'@rollup/rollup-linux-s390x-gnu@4.27.3':
+
'@rollup/rollup-linux-s390x-gnu@4.27.4':
optional: true
-
'@rollup/rollup-linux-x64-gnu@4.27.3':
+
'@rollup/rollup-linux-x64-gnu@4.27.4':
optional: true
-
'@rollup/rollup-linux-x64-musl@4.27.3':
+
'@rollup/rollup-linux-x64-musl@4.27.4':
optional: true
-
'@rollup/rollup-win32-arm64-msvc@4.27.3':
+
'@rollup/rollup-win32-arm64-msvc@4.27.4':
optional: true
-
'@rollup/rollup-win32-ia32-msvc@4.27.3':
+
'@rollup/rollup-win32-ia32-msvc@4.27.4':
optional: true
-
'@rollup/rollup-win32-x64-msvc@4.27.3':
+
'@rollup/rollup-win32-x64-msvc@4.27.4':
optional: true
'@types/babel__core@7.20.5':
···
'@types/estree@1.0.6': {}
-
'@types/node@22.9.1':
+
'@types/node@22.9.3':
dependencies:
undici-types: 6.19.8
-
'@unocss/astro@0.64.1(rollup@4.27.3)(vite@5.4.11(@types/node@22.9.1))(vue@3.5.12(typescript@5.6.3))':
+
'@unocss/astro@0.64.1(rollup@4.27.4)(vite@5.4.11(@types/node@22.9.3))(vue@3.5.12(typescript@5.7.2))':
dependencies:
'@unocss/core': 0.64.1
'@unocss/reset': 0.64.1
-
'@unocss/vite': 0.64.1(rollup@4.27.3)(vite@5.4.11(@types/node@22.9.1))(vue@3.5.12(typescript@5.6.3))
+
'@unocss/vite': 0.64.1(rollup@4.27.4)(vite@5.4.11(@types/node@22.9.3))(vue@3.5.12(typescript@5.7.2))
optionalDependencies:
-
vite: 5.4.11(@types/node@22.9.1)
+
vite: 5.4.11(@types/node@22.9.3)
transitivePeerDependencies:
- rollup
- supports-color
- vue
-
'@unocss/cli@0.64.1(rollup@4.27.3)':
+
'@unocss/cli@0.64.1(rollup@4.27.4)':
dependencies:
'@ampproject/remapping': 2.3.0
-
'@rollup/pluginutils': 5.1.3(rollup@4.27.3)
+
'@rollup/pluginutils': 5.1.3(rollup@4.27.4)
'@unocss/config': 0.64.1
'@unocss/core': 0.64.1
'@unocss/preset-uno': 0.64.1
···
dependencies:
'@unocss/core': 0.64.1
-
'@unocss/inspector@0.64.1(vue@3.5.12(typescript@5.6.3))':
+
'@unocss/inspector@0.64.1(vue@3.5.12(typescript@5.7.2))':
dependencies:
'@unocss/core': 0.64.1
'@unocss/rule-utils': 0.64.1
gzip-size: 6.0.0
sirv: 2.0.4
-
vue-flow-layout: 0.1.1(vue@3.5.12(typescript@5.6.3))
+
vue-flow-layout: 0.1.1(vue@3.5.12(typescript@5.7.2))
transitivePeerDependencies:
- vue
···
dependencies:
'@unocss/core': 0.64.1
-
'@unocss/vite@0.64.1(rollup@4.27.3)(vite@5.4.11(@types/node@22.9.1))(vue@3.5.12(typescript@5.6.3))':
+
'@unocss/vite@0.64.1(rollup@4.27.4)(vite@5.4.11(@types/node@22.9.3))(vue@3.5.12(typescript@5.7.2))':
dependencies:
'@ampproject/remapping': 2.3.0
-
'@rollup/pluginutils': 5.1.3(rollup@4.27.3)
+
'@rollup/pluginutils': 5.1.3(rollup@4.27.4)
'@unocss/config': 0.64.1
'@unocss/core': 0.64.1
-
'@unocss/inspector': 0.64.1(vue@3.5.12(typescript@5.6.3))
+
'@unocss/inspector': 0.64.1(vue@3.5.12(typescript@5.7.2))
chokidar: 3.6.0
magic-string: 0.30.13
tinyglobby: 0.2.10
-
vite: 5.4.11(@types/node@22.9.1)
+
vite: 5.4.11(@types/node@22.9.3)
transitivePeerDependencies:
- rollup
- supports-color
···
'@vue/shared': 3.5.12
csstype: 3.1.3
-
'@vue/server-renderer@3.5.12(vue@3.5.12(typescript@5.6.3))':
+
'@vue/server-renderer@3.5.12(vue@3.5.12(typescript@5.7.2))':
dependencies:
'@vue/compiler-ssr': 3.5.12
'@vue/shared': 3.5.12
-
vue: 3.5.12(typescript@5.6.3)
+
vue: 3.5.12(typescript@5.7.2)
'@vue/shared@3.5.12': {}
···
browserslist@4.24.2:
dependencies:
-
caniuse-lite: 1.0.30001680
-
electron-to-chromium: 1.5.63
+
caniuse-lite: 1.0.30001683
+
electron-to-chromium: 1.5.64
node-releases: 2.0.18
update-browserslist-db: 1.1.1(browserslist@4.24.2)
···
cac@6.7.14: {}
-
caniuse-lite@1.0.30001680: {}
+
caniuse-lite@1.0.30001683: {}
chokidar@3.6.0:
dependencies:
···
duplexer@0.1.2: {}
-
electron-to-chromium@1.5.63: {}
+
electron-to-chromium@1.5.64: {}
entities@4.5.0: {}
···
resolve-pkg-maps@1.0.0: {}
-
rollup@4.27.3:
+
rollup@4.27.4:
dependencies:
'@types/estree': 1.0.6
optionalDependencies:
-
'@rollup/rollup-android-arm-eabi': 4.27.3
-
'@rollup/rollup-android-arm64': 4.27.3
-
'@rollup/rollup-darwin-arm64': 4.27.3
-
'@rollup/rollup-darwin-x64': 4.27.3
-
'@rollup/rollup-freebsd-arm64': 4.27.3
-
'@rollup/rollup-freebsd-x64': 4.27.3
-
'@rollup/rollup-linux-arm-gnueabihf': 4.27.3
-
'@rollup/rollup-linux-arm-musleabihf': 4.27.3
-
'@rollup/rollup-linux-arm64-gnu': 4.27.3
-
'@rollup/rollup-linux-arm64-musl': 4.27.3
-
'@rollup/rollup-linux-powerpc64le-gnu': 4.27.3
-
'@rollup/rollup-linux-riscv64-gnu': 4.27.3
-
'@rollup/rollup-linux-s390x-gnu': 4.27.3
-
'@rollup/rollup-linux-x64-gnu': 4.27.3
-
'@rollup/rollup-linux-x64-musl': 4.27.3
-
'@rollup/rollup-win32-arm64-msvc': 4.27.3
-
'@rollup/rollup-win32-ia32-msvc': 4.27.3
-
'@rollup/rollup-win32-x64-msvc': 4.27.3
+
'@rollup/rollup-android-arm-eabi': 4.27.4
+
'@rollup/rollup-android-arm64': 4.27.4
+
'@rollup/rollup-darwin-arm64': 4.27.4
+
'@rollup/rollup-darwin-x64': 4.27.4
+
'@rollup/rollup-freebsd-arm64': 4.27.4
+
'@rollup/rollup-freebsd-x64': 4.27.4
+
'@rollup/rollup-linux-arm-gnueabihf': 4.27.4
+
'@rollup/rollup-linux-arm-musleabihf': 4.27.4
+
'@rollup/rollup-linux-arm64-gnu': 4.27.4
+
'@rollup/rollup-linux-arm64-musl': 4.27.4
+
'@rollup/rollup-linux-powerpc64le-gnu': 4.27.4
+
'@rollup/rollup-linux-riscv64-gnu': 4.27.4
+
'@rollup/rollup-linux-s390x-gnu': 4.27.4
+
'@rollup/rollup-linux-x64-gnu': 4.27.4
+
'@rollup/rollup-linux-x64-musl': 4.27.4
+
'@rollup/rollup-win32-arm64-msvc': 4.27.4
+
'@rollup/rollup-win32-ia32-msvc': 4.27.4
+
'@rollup/rollup-win32-x64-msvc': 4.27.4
fsevents: 2.3.3
semver@6.3.1: {}
···
optionalDependencies:
fsevents: 2.3.3
-
typescript@5.6.3: {}
+
typescript@5.7.2: {}
ufo@1.5.4: {}
···
undici-types@6.19.8: {}
-
unocss@0.64.1(postcss@8.4.49)(rollup@4.27.3)(vite@5.4.11(@types/node@22.9.1))(vue@3.5.12(typescript@5.6.3)):
+
unocss@0.64.1(postcss@8.4.49)(rollup@4.27.4)(vite@5.4.11(@types/node@22.9.3))(vue@3.5.12(typescript@5.7.2)):
dependencies:
-
'@unocss/astro': 0.64.1(rollup@4.27.3)(vite@5.4.11(@types/node@22.9.1))(vue@3.5.12(typescript@5.6.3))
-
'@unocss/cli': 0.64.1(rollup@4.27.3)
+
'@unocss/astro': 0.64.1(rollup@4.27.4)(vite@5.4.11(@types/node@22.9.3))(vue@3.5.12(typescript@5.7.2))
+
'@unocss/cli': 0.64.1(rollup@4.27.4)
'@unocss/core': 0.64.1
'@unocss/postcss': 0.64.1(postcss@8.4.49)
'@unocss/preset-attributify': 0.64.1
···
'@unocss/transformer-compile-class': 0.64.1
'@unocss/transformer-directives': 0.64.1
'@unocss/transformer-variant-group': 0.64.1
-
'@unocss/vite': 0.64.1(rollup@4.27.3)(vite@5.4.11(@types/node@22.9.1))(vue@3.5.12(typescript@5.6.3))
+
'@unocss/vite': 0.64.1(rollup@4.27.4)(vite@5.4.11(@types/node@22.9.3))(vue@3.5.12(typescript@5.7.2))
optionalDependencies:
-
vite: 5.4.11(@types/node@22.9.1)
+
vite: 5.4.11(@types/node@22.9.3)
transitivePeerDependencies:
- postcss
- rollup
···
validate-html-nesting@1.2.2: {}
-
vite-plugin-solid@2.10.2(solid-js@1.9.3)(vite@5.4.11(@types/node@22.9.1)):
+
vite-plugin-solid@2.10.2(solid-js@1.9.3)(vite@5.4.11(@types/node@22.9.3)):
dependencies:
'@babel/core': 7.26.0
'@types/babel__core': 7.20.5
···
merge-anything: 5.1.7
solid-js: 1.9.3
solid-refresh: 0.6.3(solid-js@1.9.3)
-
vite: 5.4.11(@types/node@22.9.1)
-
vitefu: 0.2.5(vite@5.4.11(@types/node@22.9.1))
+
vite: 5.4.11(@types/node@22.9.3)
+
vitefu: 0.2.5(vite@5.4.11(@types/node@22.9.3))
transitivePeerDependencies:
- supports-color
-
vite@5.4.11(@types/node@22.9.1):
+
vite@5.4.11(@types/node@22.9.3):
dependencies:
esbuild: 0.21.5
postcss: 8.4.49
-
rollup: 4.27.3
+
rollup: 4.27.4
optionalDependencies:
-
'@types/node': 22.9.1
+
'@types/node': 22.9.3
fsevents: 2.3.3
-
vitefu@0.2.5(vite@5.4.11(@types/node@22.9.1)):
+
vitefu@0.2.5(vite@5.4.11(@types/node@22.9.3)):
optionalDependencies:
-
vite: 5.4.11(@types/node@22.9.1)
+
vite: 5.4.11(@types/node@22.9.3)
-
vue-flow-layout@0.1.1(vue@3.5.12(typescript@5.6.3)):
+
vue-flow-layout@0.1.1(vue@3.5.12(typescript@5.7.2)):
dependencies:
-
vue: 3.5.12(typescript@5.6.3)
+
vue: 3.5.12(typescript@5.7.2)
-
vue@3.5.12(typescript@5.6.3):
+
vue@3.5.12(typescript@5.7.2):
dependencies:
'@vue/compiler-dom': 3.5.12
'@vue/compiler-sfc': 3.5.12
'@vue/runtime-dom': 3.5.12
-
'@vue/server-renderer': 3.5.12(vue@3.5.12(typescript@5.6.3))
+
'@vue/server-renderer': 3.5.12(vue@3.5.12(typescript@5.7.2))
'@vue/shared': 3.5.12
optionalDependencies:
-
typescript: 5.6.3
+
typescript: 5.7.2
yallist@3.1.1: {}
+57 -52
src/App.tsx
···
let res = await fetchPage();
let follows = res.data.records;
+
setNotice(`Fetching follows: ${follows.length}`);
while (res.data.cursor && res.data.records.length >= PAGE_LIMIT) {
+
setNotice(`Fetching follows: ${follows.length}`);
res = await fetchPage(res.data.cursor);
follows = follows.concat(res.data.records);
}
···
};
setProgress(0);
-
setNotice("");
-
const follows = await fetchFollows();
setFollowCount(follows.length);
const tmpFollows: FollowRecord[] = [];
+
setNotice("");
-
follows.forEach(async (record) => {
-
let status: RepoStatus | undefined = undefined;
-
const follow = record.value as AppBskyGraphFollow.Record;
-
let handle = "";
+
const timer = (ms: number) => new Promise((res) => setTimeout(res, ms));
+
for (let i = 0; i < follows.length; i = i + 10) {
+
if (follows.length > 1000) await timer(1000);
+
follows.slice(i, i + 10).forEach(async (record) => {
+
let status: RepoStatus | undefined = undefined;
+
const follow = record.value as AppBskyGraphFollow.Record;
+
let handle = "";
-
try {
-
const res = await rpc.get("app.bsky.actor.getProfile", {
-
params: { actor: follow.subject },
-
});
+
try {
+
const res = await rpc.get("app.bsky.actor.getProfile", {
+
params: { actor: follow.subject },
+
});
-
handle = res.data.handle;
-
const viewer = res.data.viewer!;
+
handle = res.data.handle;
+
const viewer = res.data.viewer!;
+
+
if (viewer.blockedBy) {
+
status =
+
viewer.blocking || viewer.blockingByList ?
+
RepoStatus.BLOCKEDBY | RepoStatus.BLOCKING
+
: RepoStatus.BLOCKEDBY;
+
} else if (res.data.did.includes(agent.sub)) {
+
status = RepoStatus.YOURSELF;
+
} else if (viewer.blocking || viewer.blockingByList) {
+
status = RepoStatus.BLOCKING;
+
}
+
} catch (e: any) {
+
handle = await resolveDid(follow.subject);
-
if (viewer.blockedBy) {
status =
-
viewer.blocking || viewer.blockingByList ?
-
RepoStatus.BLOCKEDBY | RepoStatus.BLOCKING
-
: RepoStatus.BLOCKEDBY;
-
} else if (res.data.did.includes(agent.sub)) {
-
status = RepoStatus.YOURSELF;
-
} else if (viewer.blocking || viewer.blockingByList) {
-
status = RepoStatus.BLOCKING;
+
e.message.includes("not found") ? RepoStatus.DELETED
+
: e.message.includes("deactivated") ? RepoStatus.DEACTIVATED
+
: e.message.includes("suspended") ? RepoStatus.SUSPENDED
+
: undefined;
}
-
} catch (e: any) {
-
handle = await resolveDid(follow.subject);
-
status =
-
e.message.includes("not found") ? RepoStatus.DELETED
-
: e.message.includes("deactivated") ? RepoStatus.DEACTIVATED
-
: e.message.includes("suspended") ? RepoStatus.SUSPENDED
-
: undefined;
-
}
+
const status_label =
+
status == RepoStatus.DELETED ? "Deleted"
+
: status == RepoStatus.DEACTIVATED ? "Deactivated"
+
: status == RepoStatus.SUSPENDED ? "Suspended"
+
: status == RepoStatus.YOURSELF ? "Literally Yourself"
+
: status == RepoStatus.BLOCKING ? "Blocking"
+
: status == RepoStatus.BLOCKEDBY ? "Blocked by"
+
: RepoStatus.BLOCKEDBY | RepoStatus.BLOCKING ? "Mutual Block"
+
: "";
-
const status_label =
-
status == RepoStatus.DELETED ? "Deleted"
-
: status == RepoStatus.DEACTIVATED ? "Deactivated"
-
: status == RepoStatus.SUSPENDED ? "Suspended"
-
: status == RepoStatus.YOURSELF ? "Literally Yourself"
-
: status == RepoStatus.BLOCKING ? "Blocking"
-
: status == RepoStatus.BLOCKEDBY ? "Blocked by"
-
: RepoStatus.BLOCKEDBY | RepoStatus.BLOCKING ? "Mutual Block"
-
: "";
-
-
if (status !== undefined) {
-
tmpFollows.push({
-
did: follow.subject,
-
handle: handle,
-
uri: record.uri,
-
status: status,
-
status_label: status_label,
-
toDelete: false,
-
visible: true,
-
});
-
}
-
setProgress(progress() + 1);
-
if (progress() == followCount()) setFollowRecords(tmpFollows);
-
});
+
if (status !== undefined) {
+
tmpFollows.push({
+
did: follow.subject,
+
handle: handle,
+
uri: record.uri,
+
status: status,
+
status_label: status_label,
+
toDelete: false,
+
visible: true,
+
});
+
}
+
setProgress(progress() + 1);
+
if (progress() == followCount()) setFollowRecords(tmpFollows);
+
});
+
}
};
const unfollow = async () => {