Image CDN for atproto built on cloudflare

do a fallback to cloudflare-dns.com if the first resolveDns fails

evan.jarrett.net 5701bd8c 1468b743

verified
Changed files
+140 -97
src
+90 -90
package-lock.json
··· 47 47 } 48 48 }, 49 49 "node_modules/@cloudflare/vitest-pool-workers": { 50 - "version": "0.8.46", 51 - "resolved": "https://registry.npmjs.org/@cloudflare/vitest-pool-workers/-/vitest-pool-workers-0.8.46.tgz", 52 - "integrity": "sha512-FMwKPxUmbKZ6nh9ZaHSYLwxnceWXmMz0qWiuFa2Ewp8QJCjNTWyL+lkIDZ9Dq3JrX1bhlNI2bM4yMnN8JOt5qg==", 50 + "version": "0.8.47", 51 + "resolved": "https://registry.npmjs.org/@cloudflare/vitest-pool-workers/-/vitest-pool-workers-0.8.47.tgz", 52 + "integrity": "sha512-deg1XHJ7bdLprgg41GijbRZrIf/EgRtqP9VDY3cDptO5L2IAqDOu4UC0ckgHLCojXiczchviKXE+N0ui2YzqIQ==", 53 53 "dev": true, 54 54 "license": "MIT", 55 55 "dependencies": { ··· 58 58 "devalue": "^4.3.0", 59 59 "miniflare": "4.20250617.4", 60 60 "semver": "^7.7.1", 61 - "wrangler": "4.21.2", 61 + "wrangler": "4.22.0", 62 62 "zod": "^3.22.3" 63 63 }, 64 64 "peerDependencies": { ··· 1020 1020 } 1021 1021 }, 1022 1022 "node_modules/@rollup/rollup-android-arm-eabi": { 1023 - "version": "4.44.0", 1024 - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.44.0.tgz", 1025 - "integrity": "sha512-xEiEE5oDW6tK4jXCAyliuntGR+amEMO7HLtdSshVuhFnKTYoeYMyXQK7pLouAJJj5KHdwdn87bfHAR2nSdNAUA==", 1023 + "version": "4.44.1", 1024 + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.44.1.tgz", 1025 + "integrity": "sha512-JAcBr1+fgqx20m7Fwe1DxPUl/hPkee6jA6Pl7n1v2EFiktAHenTaXl5aIFjUIEsfn9w3HE4gK1lEgNGMzBDs1w==", 1026 1026 "cpu": [ 1027 1027 "arm" 1028 1028 ], ··· 1034 1034 ] 1035 1035 }, 1036 1036 "node_modules/@rollup/rollup-android-arm64": { 1037 - "version": "4.44.0", 1038 - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.44.0.tgz", 1039 - "integrity": "sha512-uNSk/TgvMbskcHxXYHzqwiyBlJ/lGcv8DaUfcnNwict8ba9GTTNxfn3/FAoFZYgkaXXAdrAA+SLyKplyi349Jw==", 1037 + "version": "4.44.1", 1038 + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.44.1.tgz", 1039 + "integrity": "sha512-RurZetXqTu4p+G0ChbnkwBuAtwAbIwJkycw1n6GvlGlBuS4u5qlr5opix8cBAYFJgaY05TWtM+LaoFggUmbZEQ==", 1040 1040 "cpu": [ 1041 1041 "arm64" 1042 1042 ], ··· 1048 1048 ] 1049 1049 }, 1050 1050 "node_modules/@rollup/rollup-darwin-arm64": { 1051 - "version": "4.44.0", 1052 - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.44.0.tgz", 1053 - "integrity": "sha512-VGF3wy0Eq1gcEIkSCr8Ke03CWT+Pm2yveKLaDvq51pPpZza3JX/ClxXOCmTYYq3us5MvEuNRTaeyFThCKRQhOA==", 1051 + "version": "4.44.1", 1052 + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.44.1.tgz", 1053 + "integrity": "sha512-fM/xPesi7g2M7chk37LOnmnSTHLG/v2ggWqKj3CCA1rMA4mm5KVBT1fNoswbo1JhPuNNZrVwpTvlCVggv8A2zg==", 1054 1054 "cpu": [ 1055 1055 "arm64" 1056 1056 ], ··· 1062 1062 ] 1063 1063 }, 1064 1064 "node_modules/@rollup/rollup-darwin-x64": { 1065 - "version": "4.44.0", 1066 - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.44.0.tgz", 1067 - "integrity": "sha512-fBkyrDhwquRvrTxSGH/qqt3/T0w5Rg0L7ZIDypvBPc1/gzjJle6acCpZ36blwuwcKD/u6oCE/sRWlUAcxLWQbQ==", 1065 + "version": "4.44.1", 1066 + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.44.1.tgz", 1067 + "integrity": "sha512-gDnWk57urJrkrHQ2WVx9TSVTH7lSlU7E3AFqiko+bgjlh78aJ88/3nycMax52VIVjIm3ObXnDL2H00e/xzoipw==", 1068 1068 "cpu": [ 1069 1069 "x64" 1070 1070 ], ··· 1076 1076 ] 1077 1077 }, 1078 1078 "node_modules/@rollup/rollup-freebsd-arm64": { 1079 - "version": "4.44.0", 1080 - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.44.0.tgz", 1081 - "integrity": "sha512-u5AZzdQJYJXByB8giQ+r4VyfZP+walV+xHWdaFx/1VxsOn6eWJhK2Vl2eElvDJFKQBo/hcYIBg/jaKS8ZmKeNQ==", 1079 + "version": "4.44.1", 1080 + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.44.1.tgz", 1081 + "integrity": "sha512-wnFQmJ/zPThM5zEGcnDcCJeYJgtSLjh1d//WuHzhf6zT3Md1BvvhJnWoy+HECKu2bMxaIcfWiu3bJgx6z4g2XA==", 1082 1082 "cpu": [ 1083 1083 "arm64" 1084 1084 ], ··· 1090 1090 ] 1091 1091 }, 1092 1092 "node_modules/@rollup/rollup-freebsd-x64": { 1093 - "version": "4.44.0", 1094 - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.44.0.tgz", 1095 - "integrity": "sha512-qC0kS48c/s3EtdArkimctY7h3nHicQeEUdjJzYVJYR3ct3kWSafmn6jkNCA8InbUdge6PVx6keqjk5lVGJf99g==", 1093 + "version": "4.44.1", 1094 + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.44.1.tgz", 1095 + "integrity": "sha512-uBmIxoJ4493YATvU2c0upGz87f99e3wop7TJgOA/bXMFd2SvKCI7xkxY/5k50bv7J6dw1SXT4MQBQSLn8Bb/Uw==", 1096 1096 "cpu": [ 1097 1097 "x64" 1098 1098 ], ··· 1104 1104 ] 1105 1105 }, 1106 1106 "node_modules/@rollup/rollup-linux-arm-gnueabihf": { 1107 - "version": "4.44.0", 1108 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.44.0.tgz", 1109 - "integrity": "sha512-x+e/Z9H0RAWckn4V2OZZl6EmV0L2diuX3QB0uM1r6BvhUIv6xBPL5mrAX2E3e8N8rEHVPwFfz/ETUbV4oW9+lQ==", 1107 + "version": "4.44.1", 1108 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.44.1.tgz", 1109 + "integrity": "sha512-n0edDmSHlXFhrlmTK7XBuwKlG5MbS7yleS1cQ9nn4kIeW+dJH+ExqNgQ0RrFRew8Y+0V/x6C5IjsHrJmiHtkxQ==", 1110 1110 "cpu": [ 1111 1111 "arm" 1112 1112 ], ··· 1118 1118 ] 1119 1119 }, 1120 1120 "node_modules/@rollup/rollup-linux-arm-musleabihf": { 1121 - "version": "4.44.0", 1122 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.44.0.tgz", 1123 - "integrity": "sha512-1exwiBFf4PU/8HvI8s80icyCcnAIB86MCBdst51fwFmH5dyeoWVPVgmQPcKrMtBQ0W5pAs7jBCWuRXgEpRzSCg==", 1121 + "version": "4.44.1", 1122 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.44.1.tgz", 1123 + "integrity": "sha512-8WVUPy3FtAsKSpyk21kV52HCxB+me6YkbkFHATzC2Yd3yuqHwy2lbFL4alJOLXKljoRw08Zk8/xEj89cLQ/4Nw==", 1124 1124 "cpu": [ 1125 1125 "arm" 1126 1126 ], ··· 1132 1132 ] 1133 1133 }, 1134 1134 "node_modules/@rollup/rollup-linux-arm64-gnu": { 1135 - "version": "4.44.0", 1136 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.44.0.tgz", 1137 - "integrity": "sha512-ZTR2mxBHb4tK4wGf9b8SYg0Y6KQPjGpR4UWwTFdnmjB4qRtoATZ5dWn3KsDwGa5Z2ZBOE7K52L36J9LueKBdOQ==", 1135 + "version": "4.44.1", 1136 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.44.1.tgz", 1137 + "integrity": "sha512-yuktAOaeOgorWDeFJggjuCkMGeITfqvPgkIXhDqsfKX8J3jGyxdDZgBV/2kj/2DyPaLiX6bPdjJDTu9RB8lUPQ==", 1138 1138 "cpu": [ 1139 1139 "arm64" 1140 1140 ], ··· 1146 1146 ] 1147 1147 }, 1148 1148 "node_modules/@rollup/rollup-linux-arm64-musl": { 1149 - "version": "4.44.0", 1150 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.44.0.tgz", 1151 - "integrity": "sha512-GFWfAhVhWGd4r6UxmnKRTBwP1qmModHtd5gkraeW2G490BpFOZkFtem8yuX2NyafIP/mGpRJgTJ2PwohQkUY/Q==", 1149 + "version": "4.44.1", 1150 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.44.1.tgz", 1151 + "integrity": "sha512-W+GBM4ifET1Plw8pdVaecwUgxmiH23CfAUj32u8knq0JPFyK4weRy6H7ooxYFD19YxBulL0Ktsflg5XS7+7u9g==", 1152 1152 "cpu": [ 1153 1153 "arm64" 1154 1154 ], ··· 1160 1160 ] 1161 1161 }, 1162 1162 "node_modules/@rollup/rollup-linux-loongarch64-gnu": { 1163 - "version": "4.44.0", 1164 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.44.0.tgz", 1165 - "integrity": "sha512-xw+FTGcov/ejdusVOqKgMGW3c4+AgqrfvzWEVXcNP6zq2ue+lsYUgJ+5Rtn/OTJf7e2CbgTFvzLW2j0YAtj0Gg==", 1163 + "version": "4.44.1", 1164 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.44.1.tgz", 1165 + "integrity": "sha512-1zqnUEMWp9WrGVuVak6jWTl4fEtrVKfZY7CvcBmUUpxAJ7WcSowPSAWIKa/0o5mBL/Ij50SIf9tuirGx63Ovew==", 1166 1166 "cpu": [ 1167 1167 "loong64" 1168 1168 ], ··· 1174 1174 ] 1175 1175 }, 1176 1176 "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { 1177 - "version": "4.44.0", 1178 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.44.0.tgz", 1179 - "integrity": "sha512-bKGibTr9IdF0zr21kMvkZT4K6NV+jjRnBoVMt2uNMG0BYWm3qOVmYnXKzx7UhwrviKnmK46IKMByMgvpdQlyJQ==", 1177 + "version": "4.44.1", 1178 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.44.1.tgz", 1179 + "integrity": "sha512-Rl3JKaRu0LHIx7ExBAAnf0JcOQetQffaw34T8vLlg9b1IhzcBgaIdnvEbbsZq9uZp3uAH+JkHd20Nwn0h9zPjA==", 1180 1180 "cpu": [ 1181 1181 "ppc64" 1182 1182 ], ··· 1188 1188 ] 1189 1189 }, 1190 1190 "node_modules/@rollup/rollup-linux-riscv64-gnu": { 1191 - "version": "4.44.0", 1192 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.44.0.tgz", 1193 - "integrity": "sha512-vV3cL48U5kDaKZtXrti12YRa7TyxgKAIDoYdqSIOMOFBXqFj2XbChHAtXquEn2+n78ciFgr4KIqEbydEGPxXgA==", 1191 + "version": "4.44.1", 1192 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.44.1.tgz", 1193 + "integrity": "sha512-j5akelU3snyL6K3N/iX7otLBIl347fGwmd95U5gS/7z6T4ftK288jKq3A5lcFKcx7wwzb5rgNvAg3ZbV4BqUSw==", 1194 1194 "cpu": [ 1195 1195 "riscv64" 1196 1196 ], ··· 1202 1202 ] 1203 1203 }, 1204 1204 "node_modules/@rollup/rollup-linux-riscv64-musl": { 1205 - "version": "4.44.0", 1206 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.44.0.tgz", 1207 - "integrity": "sha512-TDKO8KlHJuvTEdfw5YYFBjhFts2TR0VpZsnLLSYmB7AaohJhM8ctDSdDnUGq77hUh4m/djRafw+9zQpkOanE2Q==", 1205 + "version": "4.44.1", 1206 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.44.1.tgz", 1207 + "integrity": "sha512-ppn5llVGgrZw7yxbIm8TTvtj1EoPgYUAbfw0uDjIOzzoqlZlZrLJ/KuiE7uf5EpTpCTrNt1EdtzF0naMm0wGYg==", 1208 1208 "cpu": [ 1209 1209 "riscv64" 1210 1210 ], ··· 1216 1216 ] 1217 1217 }, 1218 1218 "node_modules/@rollup/rollup-linux-s390x-gnu": { 1219 - "version": "4.44.0", 1220 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.44.0.tgz", 1221 - "integrity": "sha512-8541GEyktXaw4lvnGp9m84KENcxInhAt6vPWJ9RodsB/iGjHoMB2Pp5MVBCiKIRxrxzJhGCxmNzdu+oDQ7kwRA==", 1219 + "version": "4.44.1", 1220 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.44.1.tgz", 1221 + "integrity": "sha512-Hu6hEdix0oxtUma99jSP7xbvjkUM/ycke/AQQ4EC5g7jNRLLIwjcNwaUy95ZKBJJwg1ZowsclNnjYqzN4zwkAw==", 1222 1222 "cpu": [ 1223 1223 "s390x" 1224 1224 ], ··· 1230 1230 ] 1231 1231 }, 1232 1232 "node_modules/@rollup/rollup-linux-x64-gnu": { 1233 - "version": "4.44.0", 1234 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.44.0.tgz", 1235 - "integrity": "sha512-iUVJc3c0o8l9Sa/qlDL2Z9UP92UZZW1+EmQ4xfjTc1akr0iUFZNfxrXJ/R1T90h/ILm9iXEY6+iPrmYB3pXKjw==", 1233 + "version": "4.44.1", 1234 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.44.1.tgz", 1235 + "integrity": "sha512-EtnsrmZGomz9WxK1bR5079zee3+7a+AdFlghyd6VbAjgRJDbTANJ9dcPIPAi76uG05micpEL+gPGmAKYTschQw==", 1236 1236 "cpu": [ 1237 1237 "x64" 1238 1238 ], ··· 1244 1244 ] 1245 1245 }, 1246 1246 "node_modules/@rollup/rollup-linux-x64-musl": { 1247 - "version": "4.44.0", 1248 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.44.0.tgz", 1249 - "integrity": "sha512-PQUobbhLTQT5yz/SPg116VJBgz+XOtXt8D1ck+sfJJhuEsMj2jSej5yTdp8CvWBSceu+WW+ibVL6dm0ptG5fcA==", 1247 + "version": "4.44.1", 1248 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.44.1.tgz", 1249 + "integrity": "sha512-iAS4p+J1az6Usn0f8xhgL4PaU878KEtutP4hqw52I4IO6AGoyOkHCxcc4bqufv1tQLdDWFx8lR9YlwxKuv3/3g==", 1250 1250 "cpu": [ 1251 1251 "x64" 1252 1252 ], ··· 1258 1258 ] 1259 1259 }, 1260 1260 "node_modules/@rollup/rollup-win32-arm64-msvc": { 1261 - "version": "4.44.0", 1262 - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.44.0.tgz", 1263 - "integrity": "sha512-M0CpcHf8TWn+4oTxJfh7LQuTuaYeXGbk0eageVjQCKzYLsajWS/lFC94qlRqOlyC2KvRT90ZrfXULYmukeIy7w==", 1261 + "version": "4.44.1", 1262 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.44.1.tgz", 1263 + "integrity": "sha512-NtSJVKcXwcqozOl+FwI41OH3OApDyLk3kqTJgx8+gp6On9ZEt5mYhIsKNPGuaZr3p9T6NWPKGU/03Vw4CNU9qg==", 1264 1264 "cpu": [ 1265 1265 "arm64" 1266 1266 ], ··· 1272 1272 ] 1273 1273 }, 1274 1274 "node_modules/@rollup/rollup-win32-ia32-msvc": { 1275 - "version": "4.44.0", 1276 - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.44.0.tgz", 1277 - "integrity": "sha512-3XJ0NQtMAXTWFW8FqZKcw3gOQwBtVWP/u8TpHP3CRPXD7Pd6s8lLdH3sHWh8vqKCyyiI8xW5ltJScQmBU9j7WA==", 1275 + "version": "4.44.1", 1276 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.44.1.tgz", 1277 + "integrity": "sha512-JYA3qvCOLXSsnTR3oiyGws1Dm0YTuxAAeaYGVlGpUsHqloPcFjPg+X0Fj2qODGLNwQOAcCiQmHub/V007kiH5A==", 1278 1278 "cpu": [ 1279 1279 "ia32" 1280 1280 ], ··· 1286 1286 ] 1287 1287 }, 1288 1288 "node_modules/@rollup/rollup-win32-x64-msvc": { 1289 - "version": "4.44.0", 1290 - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.44.0.tgz", 1291 - "integrity": "sha512-Q2Mgwt+D8hd5FIPUuPDsvPR7Bguza6yTkJxspDGkZj7tBRn2y4KSWYuIXpftFSjBra76TbKerCV7rgFPQrn+wQ==", 1289 + "version": "4.44.1", 1290 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.44.1.tgz", 1291 + "integrity": "sha512-J8o22LuF0kTe7m+8PvW9wk3/bRq5+mRo5Dqo6+vXb7otCm3TPhYOJqOaQtGU9YMWQSL3krMnoOxMr0+9E6F3Ug==", 1292 1292 "cpu": [ 1293 1293 "x64" 1294 1294 ], ··· 2003 2003 "license": "Unlicense" 2004 2004 }, 2005 2005 "node_modules/rollup": { 2006 - "version": "4.44.0", 2007 - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.44.0.tgz", 2008 - "integrity": "sha512-qHcdEzLCiktQIfwBq420pn2dP+30uzqYxv9ETm91wdt2R9AFcWfjNAmje4NWlnCIQ5RMTzVf0ZyisOKqHR6RwA==", 2006 + "version": "4.44.1", 2007 + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.44.1.tgz", 2008 + "integrity": "sha512-x8H8aPvD+xbl0Do8oez5f5o8eMS3trfCghc4HhLAnCkj7Vl0d1JWGs0UF/D886zLW2rOj2QymV/JcSSsw+XDNg==", 2009 2009 "dev": true, 2010 2010 "license": "MIT", 2011 2011 "dependencies": { ··· 2019 2019 "npm": ">=8.0.0" 2020 2020 }, 2021 2021 "optionalDependencies": { 2022 - "@rollup/rollup-android-arm-eabi": "4.44.0", 2023 - "@rollup/rollup-android-arm64": "4.44.0", 2024 - "@rollup/rollup-darwin-arm64": "4.44.0", 2025 - "@rollup/rollup-darwin-x64": "4.44.0", 2026 - "@rollup/rollup-freebsd-arm64": "4.44.0", 2027 - "@rollup/rollup-freebsd-x64": "4.44.0", 2028 - "@rollup/rollup-linux-arm-gnueabihf": "4.44.0", 2029 - "@rollup/rollup-linux-arm-musleabihf": "4.44.0", 2030 - "@rollup/rollup-linux-arm64-gnu": "4.44.0", 2031 - "@rollup/rollup-linux-arm64-musl": "4.44.0", 2032 - "@rollup/rollup-linux-loongarch64-gnu": "4.44.0", 2033 - "@rollup/rollup-linux-powerpc64le-gnu": "4.44.0", 2034 - "@rollup/rollup-linux-riscv64-gnu": "4.44.0", 2035 - "@rollup/rollup-linux-riscv64-musl": "4.44.0", 2036 - "@rollup/rollup-linux-s390x-gnu": "4.44.0", 2037 - "@rollup/rollup-linux-x64-gnu": "4.44.0", 2038 - "@rollup/rollup-linux-x64-musl": "4.44.0", 2039 - "@rollup/rollup-win32-arm64-msvc": "4.44.0", 2040 - "@rollup/rollup-win32-ia32-msvc": "4.44.0", 2041 - "@rollup/rollup-win32-x64-msvc": "4.44.0", 2022 + "@rollup/rollup-android-arm-eabi": "4.44.1", 2023 + "@rollup/rollup-android-arm64": "4.44.1", 2024 + "@rollup/rollup-darwin-arm64": "4.44.1", 2025 + "@rollup/rollup-darwin-x64": "4.44.1", 2026 + "@rollup/rollup-freebsd-arm64": "4.44.1", 2027 + "@rollup/rollup-freebsd-x64": "4.44.1", 2028 + "@rollup/rollup-linux-arm-gnueabihf": "4.44.1", 2029 + "@rollup/rollup-linux-arm-musleabihf": "4.44.1", 2030 + "@rollup/rollup-linux-arm64-gnu": "4.44.1", 2031 + "@rollup/rollup-linux-arm64-musl": "4.44.1", 2032 + "@rollup/rollup-linux-loongarch64-gnu": "4.44.1", 2033 + "@rollup/rollup-linux-powerpc64le-gnu": "4.44.1", 2034 + "@rollup/rollup-linux-riscv64-gnu": "4.44.1", 2035 + "@rollup/rollup-linux-riscv64-musl": "4.44.1", 2036 + "@rollup/rollup-linux-s390x-gnu": "4.44.1", 2037 + "@rollup/rollup-linux-x64-gnu": "4.44.1", 2038 + "@rollup/rollup-linux-x64-musl": "4.44.1", 2039 + "@rollup/rollup-win32-arm64-msvc": "4.44.1", 2040 + "@rollup/rollup-win32-ia32-msvc": "4.44.1", 2041 + "@rollup/rollup-win32-x64-msvc": "4.44.1", 2042 2042 "fsevents": "~2.3.2" 2043 2043 } 2044 2044 }, ··· 2508 2508 } 2509 2509 }, 2510 2510 "node_modules/wrangler": { 2511 - "version": "4.21.2", 2512 - "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-4.21.2.tgz", 2513 - "integrity": "sha512-POC8gGIAsJIYISxVe/oWIjSNwCqfaHMcDPzo6zuGTGvqYC33UM5WI82nULse1bNpXBC0L0XpqtHysW3sDqa8DQ==", 2511 + "version": "4.22.0", 2512 + "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-4.22.0.tgz", 2513 + "integrity": "sha512-m8qVO3YxhUTII+4U889G/f5UuLSvMkUkCNatupV2f/SJ+iqaWtP1QbuQII8bs2J/O4rqxsz46Wu2S50u7tKB5Q==", 2514 2514 "dev": true, 2515 2515 "license": "MIT OR Apache-2.0", 2516 2516 "dependencies": {
+50 -7
src/index.ts
··· 26 26 // First try DNS TXT lookup 27 27 try { 28 28 // @ts-ignore - DNS API might not be in types yet 29 - const records = await globalThis.resolveDns(`_atproto.${handle}`, 'TXT'); 30 - 31 - if (records && Array.isArray(records)) { 32 - for (const rec of records) { 33 - if (rec.startsWith('did=')) { 34 - did = rec.split('did=')[1]; 35 - break; 29 + if (typeof globalThis.resolveDns !== 'undefined') { 30 + // @ts-ignore 31 + const records = await globalThis.resolveDns(`_atproto.${handle}`, 'TXT'); 32 + if (records && Array.isArray(records)) { 33 + for (const rec of records) { 34 + if (rec.startsWith('did=')) { 35 + did = rec.split('did=')[1]; 36 + break; 37 + } 36 38 } 37 39 } 38 40 } 39 41 } catch (error) { 40 42 console.log('DNS lookup failed, trying HTTPS fallback'); 43 + } 44 + 45 + // Fallback to DNS-over-HTTPS (works everywhere) 46 + if (!did) { 47 + try { 48 + const dnsUrl = `https://cloudflare-dns.com/dns-query?name=_atproto.${handle}&type=TXT`; 49 + 50 + const response = await fetch(dnsUrl, { 51 + headers: { 52 + 'Accept': 'application/dns-json' 53 + }, 54 + cf: { 55 + cacheTtl: 300, 56 + cacheEverything: true 57 + } 58 + }); 59 + 60 + if (response.ok) { 61 + const dnsData = await response.json() as { 62 + Answer?: Array<{ 63 + name: string; 64 + type: number; 65 + data: string; 66 + }>; 67 + }; 68 + 69 + const txtRecord = dnsData.Answer?.find(record => 70 + record.type === 16 && record.data.includes('did=') 71 + ); 72 + 73 + if (txtRecord) { 74 + // Remove quotes and extract DID 75 + const match = txtRecord.data.replace(/"/g, '').match(/did=(did:[^\s]+)/); 76 + if (match) { 77 + did = match[1]; 78 + } 79 + } 80 + } 81 + } catch (error) { 82 + console.error('DNS-over-HTTPS lookup failed:', error); 83 + } 41 84 } 42 85 43 86 // If DNS lookup failed, try HTTPS well-known