Fork of official Bluesky PDS (Personal Data Server).

Merge branch 'main' into main

authored by bnewbold.net and committed by

GitHub 0ab453e2 e0a579f7

+196 -172
+2 -1
Dockerfile
··· 1 1 FROM node:20.11-alpine3.18 as build 2 2 3 - RUN npm install -g pnpm 3 + RUN corepack enable 4 4 5 5 # Move files into the image and install 6 6 WORKDIR /app 7 7 COPY ./service ./ 8 + RUN corepack prepare --activate 8 9 RUN pnpm install --production --frozen-lockfile > /dev/null 9 10 10 11 # Uses assets from build stage to reduce build size
+41 -1
README.md
··· 214 214 PDS_EMAIL_FROM_ADDRESS=admin@your.domain 215 215 ``` 216 216 217 - If the username and/or password contain special characters, the special characters will need to be [percent encoded](https://en.wikipedia.org/wiki/Percent-encoding). For some email services, the username will contain an extra `@` symbol that will also need to be percent encoded. For example, the URL `user&name@oci:p@ssword@smtphost:465` after percent encoding for the username and password fields would become `user%26name%40oci:p%40ssword@smtphost:465`. 217 + If you prefer to use a standard SMTP server (a local one or from your email provider), put your account's username and password in the URL: 218 + 219 + ``` 220 + PDS_EMAIL_SMTP_URL=smtps://username:password@smtp.example.com/ 221 + ``` 222 + 223 + Alternatively, if you're running a local sendmail-compatible mail service like Postfix or Exim on the same host, you can configure the PDS to use the sendmail transport by using such URL: 224 + 225 + ``` 226 + PDS_EMAIL_SMTP_URL=smtp:///?sendmail=true 227 + ``` 218 228 219 229 _Note: Your PDS will need to be restarted with those variables. This varies depending on your setup. If you followed this installation guide, run `systemctl restart pds`. You might need to restart the server or recreate the container, depending on what you are using._ 230 + 231 + #### Common SMTP issues 232 + 233 + If you find that your test messages using cURL or other sources go out correctly, but you are not receiving emails from your PDS, you may need to URL encode your username and password on `/pds/pds.env` and restart the PDS service. 234 + 235 + If the username and/or password contain special characters, the special characters will need to be [percent encoded](https://en.wikipedia.org/wiki/Percent-encoding). For some email services, the username will contain an extra `@` symbol that will also need to be percent encoded. For example, the URL `user&name@oci:p@ssword@smtphost:465` after percent encoding for the username and password fields would become `user%26name%40oci:p%40ssword@smtphost:465`. 236 + 237 + If you are migrating an account, Bluesky's UI will ask you to confirm your email address. The confirmation code email is meant to come from your PDS. If you are encountering issues with SMTP and want to confirm the address before solving it, you can find the confirmation code on the `email_token` table on `accounts.sqlite`. 238 + 239 + ### Logging 240 + 241 + By default, logs from the PDS are printed to `stdout` and end up in Docker's log. You can browse them by running: 242 + 243 + ``` 244 + [sudo] docker logs pds 245 + ``` 246 + 247 + Note: these logs are not persisted, so they will be lost after server reboot. 248 + 249 + Alternatively, you can configure the logs to be printed to a file by setting `LOG_DESTINATION`: 250 + 251 + ``` 252 + LOG_DESTINATION=/pds/pds.log 253 + ``` 254 + 255 + You can also change the minimum level of logs to be printed (default: `info`): 256 + 257 + ``` 258 + LOG_LEVEL=debug 259 + ``` 220 260 221 261 ### Updating your PDS 222 262
+1 -7
installer.sh
··· 31 31 openssl 32 32 sqlite3 33 33 xxd 34 + jq 34 35 " 35 36 # Docker packages. 36 37 REQUIRED_DOCKER_PACKAGES=" ··· 214 215 fi 215 216 216 217 # Admin email 217 - if [[ -z "${PDS_ADMIN_EMAIL}" ]]; then 218 - read -p "Enter an admin email address (e.g. you@example.com): " PDS_ADMIN_EMAIL 219 - fi 220 - if [[ -z "${PDS_ADMIN_EMAIL}" ]]; then 221 - usage "No admin email specified" 222 - fi 223 - 224 218 if [[ -z "${PDS_ADMIN_EMAIL}" ]]; then 225 219 read -p "Enter an admin email address (e.g. you@example.com): " PDS_ADMIN_EMAIL 226 220 fi
+2 -1
service/package.json
··· 3 3 "private": true, 4 4 "version": "0.0.0", 5 5 "description": "Service entrypoint for atproto personal data server", 6 + "packageManager": "pnpm@8.15.9", 6 7 "main": "index.js", 7 8 "license": "MIT", 8 9 "dependencies": { 9 - "@atproto/pds": "0.4.74" 10 + "@atproto/pds": "0.4.135" 10 11 } 11 12 }
+150 -162
service/pnpm-lock.yaml
··· 6 6 7 7 dependencies: 8 8 '@atproto/pds': 9 - specifier: 0.4.74 10 - version: 0.4.74 9 + specifier: 0.4.135 10 + version: 0.4.135 11 11 12 12 packages: 13 13 14 - /@atproto-labs/fetch-node@0.1.3: 15 - resolution: {integrity: sha512-KX3ogPJt6dXNppWImQ9omfhrc8t73WrJaxHMphRAqQL8jXxKW5NBCTjSuwroBkJ1pj1aValBrc5NpdYu+H/9Qg==} 14 + /@atproto-labs/fetch-node@0.1.8: 15 + resolution: {integrity: sha512-OOTIhZNPEDDm7kaYU8iYRgzM+D5n3mP2iiBSyKuLakKTaZBL5WwYlUsJVsqX26SnUXtGEroOJEVJ6f66OcG80w==} 16 + engines: {node: '>=18.7.0'} 16 17 dependencies: 17 - '@atproto-labs/fetch': 0.1.1 18 + '@atproto-labs/fetch': 0.2.2 18 19 '@atproto-labs/pipe': 0.1.0 19 20 ipaddr.js: 2.2.0 20 21 psl: 1.9.0 21 22 undici: 6.20.1 22 23 dev: false 23 24 24 - /@atproto-labs/fetch@0.1.1: 25 - resolution: {integrity: sha512-X1zO1MDoJzEurbWXMAe1H8EZ995Xam/aXdxhGVrXmOMyPDuvBa1oxwh/kQNZRCKcMQUbiwkk+Jfq6ZkTuvGbww==} 25 + /@atproto-labs/fetch@0.2.2: 26 + resolution: {integrity: sha512-QyafkedbFeVaN20DYUpnY2hcArYxjdThPXbYMqOSoZhcvkrUqaw4xDND4wZB5TBD9cq2yqe9V6mcw9P4XQKQuQ==} 26 27 dependencies: 27 28 '@atproto-labs/pipe': 0.1.0 28 - optionalDependencies: 29 - zod: 3.23.8 30 29 dev: false 31 30 32 31 /@atproto-labs/pipe@0.1.0: 33 32 resolution: {integrity: sha512-ghOqHFyJlQVFPESzlVHjKroP0tPzbmG5Jms0dNI9yLDEfL8xp4OFPWLX4f6T8mRq69wWs4nIDM3sSsFbFqLa1w==} 34 33 dev: false 35 34 36 - /@atproto-labs/simple-store-memory@0.1.1: 37 - resolution: {integrity: sha512-PCRqhnZ8NBNBvLku53O56T0lsVOtclfIrQU/rwLCc4+p45/SBPrRYNBi6YFq5rxZbK6Njos9MCmILV/KLQxrWA==} 35 + /@atproto-labs/simple-store-memory@0.1.3: 36 + resolution: {integrity: sha512-jkitT9+AtU+0b28DoN92iURLaCt/q/q4yX8q6V+9LSwYlUTqKoj/5NFKvF7x6EBuG+gpUdlcycbH7e60gjOhRQ==} 38 37 dependencies: 39 - '@atproto-labs/simple-store': 0.1.1 38 + '@atproto-labs/simple-store': 0.2.0 40 39 lru-cache: 10.2.0 41 40 dev: false 42 41 43 - /@atproto-labs/simple-store@0.1.1: 44 - resolution: {integrity: sha512-WKILW2b3QbAYKh+w5U2x6p5FqqLl0nAeLwGeDY+KjX01K4Dq3vQTR9b/qNp0jZm48CabPQVrqCv0PPU9LgRRRg==} 42 + /@atproto-labs/simple-store@0.2.0: 43 + resolution: {integrity: sha512-0bRbAlI8Ayh03wRwncAMEAyUKtZ+AuTS1jgPrfym1WVOAOiottI/ZmgccqLl6w5MbxVcClNQF7WYGKvGwGoIhA==} 45 44 dev: false 46 45 47 - /@atproto/api@0.13.18: 48 - resolution: {integrity: sha512-rrl5HhzGYWZ7fiC965TPBUOVItq9M4dxMb6qz8IvAVQliSkrJrKc7UD0QWL89QiiXaOBuX8w+4i5r4wrfBGddg==} 46 + /@atproto-labs/xrpc-utils@0.0.14: 47 + resolution: {integrity: sha512-/f0Dhzi08w3Oqv38wdwQ5bw238GbxhYIcxg08kVReEMTlkyRDC6H5RuqHf8Ff9J3FKqjKHGdxaOdrPNM1hCgeQ==} 49 48 dependencies: 50 - '@atproto/common-web': 0.3.1 51 - '@atproto/lexicon': 0.4.3 52 - '@atproto/syntax': 0.3.1 53 - '@atproto/xrpc': 0.6.4 49 + '@atproto/xrpc': 0.7.0 50 + '@atproto/xrpc-server': 0.7.18 51 + transitivePeerDependencies: 52 + - bufferutil 53 + - supports-color 54 + - utf-8-validate 55 + dev: false 56 + 57 + /@atproto/api@0.15.6: 58 + resolution: {integrity: sha512-hKwrBf60LcI4BqArWyrhWJWIpjwAWUJpW3PVvNzUB1q2W/ByC0JAuwq/F8tZpCEiiVBzHjHVRx4QNA2TA1cG3g==} 59 + dependencies: 60 + '@atproto/common-web': 0.4.2 61 + '@atproto/lexicon': 0.4.11 62 + '@atproto/syntax': 0.4.0 63 + '@atproto/xrpc': 0.7.0 54 64 await-lock: 2.2.2 55 65 multiformats: 9.9.0 56 66 tlds: 1.250.0 57 67 zod: 3.23.8 58 68 dev: false 59 69 60 - /@atproto/aws@0.2.9: 61 - resolution: {integrity: sha512-sc9aXUePcqItkJSOJJnGNVthVfAKjhn3zMDG+RRLzKUBye6Yutrlhpt1yxNZLHQiqIK5fy2Cuc4EX3p3jeWUYw==} 70 + /@atproto/aws@0.2.21: 71 + resolution: {integrity: sha512-bosExZ3YdFjOehNBcNWsC2mZBrAVLO8Ut/JquypXSahFeeXZP/9rd9F1VGf+vAmjFEKagHXQCb6CRFfJyN+I7A==} 72 + engines: {node: '>=18.7.0'} 62 73 dependencies: 63 - '@atproto/common': 0.4.4 64 - '@atproto/crypto': 0.4.2 65 - '@atproto/repo': 0.5.5 74 + '@atproto/common': 0.4.11 75 + '@atproto/crypto': 0.4.4 76 + '@atproto/repo': 0.8.1 66 77 '@aws-sdk/client-cloudfront': 3.515.0 67 78 '@aws-sdk/client-kms': 3.515.0 68 79 '@aws-sdk/client-s3': 3.515.0 69 80 '@aws-sdk/lib-storage': 3.515.0(@aws-sdk/client-s3@3.515.0) 70 - '@noble/curves': 1.3.0 81 + '@noble/curves': 1.8.1 71 82 key-encoder: 2.0.3 72 83 multiformats: 9.9.0 73 84 uint8arrays: 3.0.0 ··· 75 86 - aws-crt 76 87 dev: false 77 88 78 - /@atproto/common-web@0.3.1: 79 - resolution: {integrity: sha512-N7wiTnus5vAr+lT//0y8m/FaHHLJ9LpGuEwkwDAeV3LCiPif4m/FS8x/QOYrx1PdZQwKso95RAPzCGWQBH5j6Q==} 89 + /@atproto/common-web@0.4.2: 90 + resolution: {integrity: sha512-vrXwGNoFGogodjQvJDxAeP3QbGtawgZute2ed1XdRO0wMixLk3qewtikZm06H259QDJVu6voKC5mubml+WgQUw==} 80 91 dependencies: 81 92 graphemer: 1.4.0 82 93 multiformats: 9.9.0 ··· 93 104 zod: 3.23.8 94 105 dev: false 95 106 96 - /@atproto/common@0.4.4: 97 - resolution: {integrity: sha512-58tMbn6A1Zu296s/l3uIj8z9d7IRHpZvLOfsFRikaQaYrzhJpL2aPY4uFQ8GJcxnsxeUnxBCrQz9we5jVVJI5Q==} 107 + /@atproto/common@0.4.11: 108 + resolution: {integrity: sha512-Knv0viYXNMfCdIE7jLUiWJKnnMfEwg+vz2epJQi8WOjqtqCFb3W/3Jn72ZiuovIfpdm13MaOiny6w2NErUQC6g==} 109 + engines: {node: '>=18.7.0'} 98 110 dependencies: 99 - '@atproto/common-web': 0.3.1 111 + '@atproto/common-web': 0.4.2 100 112 '@ipld/dag-cbor': 7.0.3 101 113 cbor-x: 1.5.8 102 114 iso-datestring-validator: 2.2.2 ··· 114 126 uint8arrays: 3.0.0 115 127 dev: false 116 128 117 - /@atproto/crypto@0.4.2: 118 - resolution: {integrity: sha512-aeOfPQYCDbhn2hV06oBF2KXrWjf/BK4yL8lfANJKSmKl3tKWCkiW/moi643rUXXxSE72KtWtQeqvNFYnnFJ0ig==} 129 + /@atproto/crypto@0.4.4: 130 + resolution: {integrity: sha512-Yq9+crJ7WQl7sxStVpHgie5Z51R05etaK9DLWYG/7bR5T4bhdcIgF6IfklLShtZwLYdVVj+K15s0BqW9a8PSDA==} 131 + engines: {node: '>=18.7.0'} 119 132 dependencies: 120 - '@noble/curves': 1.3.0 121 - '@noble/hashes': 1.3.3 133 + '@noble/curves': 1.8.1 134 + '@noble/hashes': 1.7.1 122 135 uint8arrays: 3.0.0 123 136 dev: false 124 137 125 - /@atproto/identity@0.4.3: 126 - resolution: {integrity: sha512-DLXMWh57dHvIeBl+IvC+q20z0IdDZT1awOn84vDyxacL9DfhbiTy/zCUPFEzHyvfrilNG1tDA4zQzURubdFqNg==} 138 + /@atproto/identity@0.4.8: 139 + resolution: {integrity: sha512-Z0sLnJ87SeNdAifT+rqpgE1Rc3layMMW25gfWNo4u40RGuRODbdfAZlTwBSU2r+Vk45hU+iE+xeQspfednCEnA==} 140 + engines: {node: '>=18.7.0'} 127 141 dependencies: 128 - '@atproto/common-web': 0.3.1 129 - '@atproto/crypto': 0.4.2 130 - axios: 0.27.2 131 - transitivePeerDependencies: 132 - - debug 142 + '@atproto/common-web': 0.4.2 143 + '@atproto/crypto': 0.4.4 133 144 dev: false 134 145 135 - /@atproto/jwk-jose@0.1.2: 136 - resolution: {integrity: sha512-lDwc/6lLn2aZ/JpyyggyjLFsJPMntrVzryyGUx5aNpuTS8SIuc4Ky0REhxqfLopQXJJZCuRRjagHG3uP05/moQ==} 146 + /@atproto/jwk-jose@0.1.6: 147 + resolution: {integrity: sha512-r4DGMvvmazy6CxqAcnplpUxvp6Vd8UwKxQBZRpmm1aNsVonf5qj1yeDkECTiwoe/FPbvtdamlzClB3UZc7Yb5w==} 137 148 dependencies: 138 - '@atproto/jwk': 0.1.1 149 + '@atproto/jwk': 0.1.5 139 150 jose: 5.2.2 140 151 dev: false 141 152 142 - /@atproto/jwk@0.1.1: 143 - resolution: {integrity: sha512-6h/bj1APUk7QcV9t/oA6+9DB5NZx9SZru9x+/pV5oHFI9Xz4ZuM5+dq1PfsJV54pZyqdnZ6W6M717cxoC7q7og==} 153 + /@atproto/jwk@0.1.5: 154 + resolution: {integrity: sha512-OzZFLhX41TOcMeanP3aZlL5bLeaUIZT15MI4aU5cwflNq/rwpGOpz3uwDjZc8ytgUjuTQ8LabSz5jMmwoTSWFg==} 144 155 dependencies: 145 156 multiformats: 9.9.0 146 157 zod: 3.23.8 147 158 dev: false 148 159 149 - /@atproto/lexicon@0.4.3: 150 - resolution: {integrity: sha512-lFVZXe1S1pJP0dcxvJuHP3r/a+EAIBwwU7jUK+r8iLhIja+ml6NmYv8KeFHmIJATh03spEQ9s02duDmFVdCoXg==} 160 + /@atproto/lexicon@0.4.11: 161 + resolution: {integrity: sha512-btefdnvNz2Ao2I+qbmj0F06HC8IlrM/IBz6qOBS50r0S6uDf5tOO+Mv2tSVdimFkdzyDdLtBI1sV36ONxz2cOw==} 151 162 dependencies: 152 - '@atproto/common-web': 0.3.1 153 - '@atproto/syntax': 0.3.1 163 + '@atproto/common-web': 0.4.2 164 + '@atproto/syntax': 0.4.0 154 165 iso-datestring-validator: 2.2.2 155 166 multiformats: 9.9.0 156 167 zod: 3.23.8 157 168 dev: false 158 169 159 - /@atproto/oauth-provider@0.2.8: 160 - resolution: {integrity: sha512-BgnlnKvPsIfDHRxnZbcOFjtLBfA+M3iWRhzv/t+m15bjmYTRUPwIEhrWg7pYV/mU7u/Q4RqT9l08b+xz6K/uiQ==} 170 + /@atproto/oauth-provider-api@0.1.2: 171 + resolution: {integrity: sha512-tNAuMrE6D3696euavxo1+Jh7Re0PPwJstbyY8SrdVPXgKJh/LrbpKUKiPNW/p5KyVfRs2tWeAxy+ReESu6SmXA==} 161 172 dependencies: 162 - '@atproto-labs/fetch': 0.1.1 163 - '@atproto-labs/fetch-node': 0.1.3 173 + '@atproto/jwk': 0.1.5 174 + '@atproto/oauth-types': 0.2.7 175 + dev: false 176 + 177 + /@atproto/oauth-provider-frontend@0.1.4: 178 + resolution: {integrity: sha512-TLKL5lTmSieHx7+3RVIx7rIxRPP1SNCwzzdTvYB46yd1XrGHdPU//M6CP5OZ1BvcxF6H4JXIkOSWvFseol+gOw==} 179 + engines: {node: '>=18.7.0'} 180 + optionalDependencies: 181 + '@atproto/oauth-provider-api': 0.1.2 182 + dev: false 183 + 184 + /@atproto/oauth-provider-ui@0.1.4: 185 + resolution: {integrity: sha512-GTQnB7OUBFSeXcdRseAGYzKe9UUFB/kGjRcIA8+pO5pCMD7JdXI+WliUhsbdmQ2I+OK78aAlCrmygNWpLtpZgg==} 186 + engines: {node: '>=18.7.0'} 187 + optionalDependencies: 188 + '@atproto/oauth-provider-api': 0.1.2 189 + dev: false 190 + 191 + /@atproto/oauth-provider@0.7.6: 192 + resolution: {integrity: sha512-4YcnddACznmpuRmHlt9G+kccdv2Gct5qQOF9Yyjse8cl2Td+Rg1gkchpRdWUnyr9fgZzmCsSBYzEfVXge3eUiQ==} 193 + engines: {node: '>=18.7.0'} 194 + dependencies: 195 + '@atproto-labs/fetch': 0.2.2 196 + '@atproto-labs/fetch-node': 0.1.8 164 197 '@atproto-labs/pipe': 0.1.0 165 - '@atproto-labs/simple-store': 0.1.1 166 - '@atproto-labs/simple-store-memory': 0.1.1 167 - '@atproto/common': 0.4.4 168 - '@atproto/jwk': 0.1.1 169 - '@atproto/jwk-jose': 0.1.2 170 - '@atproto/oauth-types': 0.2.1 198 + '@atproto-labs/simple-store': 0.2.0 199 + '@atproto-labs/simple-store-memory': 0.1.3 200 + '@atproto/common': 0.4.11 201 + '@atproto/jwk': 0.1.5 202 + '@atproto/jwk-jose': 0.1.6 203 + '@atproto/oauth-provider-api': 0.1.2 204 + '@atproto/oauth-provider-frontend': 0.1.4 205 + '@atproto/oauth-provider-ui': 0.1.4 206 + '@atproto/oauth-types': 0.2.7 207 + '@atproto/syntax': 0.4.0 171 208 '@hapi/accept': 6.0.3 209 + '@hapi/address': 5.1.1 172 210 '@hapi/bourne': 3.0.0 173 211 '@hapi/content': 6.0.0 174 212 cookie: 0.6.0 213 + disposable-email-domains-js: 1.5.0 214 + forwarded: 0.2.0 175 215 http-errors: 2.0.0 176 216 ioredis: 5.3.2 177 217 jose: 5.2.2 178 - keygrip: 1.1.0 179 218 psl: 1.9.0 180 219 zod: 3.23.8 181 220 transitivePeerDependencies: 182 221 - supports-color 183 222 dev: false 184 223 185 - /@atproto/oauth-types@0.2.1: 186 - resolution: {integrity: sha512-hDisUXzcq5KU1HMuCYZ8Kcz7BePl7V11bFjjgZvND3mdSphiyBpJ8MCNn3QzAa6cXpFo0w9PDcYMAlCCRZHdVw==} 224 + /@atproto/oauth-types@0.2.7: 225 + resolution: {integrity: sha512-2SlDveiSI0oowC+sfuNd/npV8jw/FhokSS26qyUyldTg1g9ZlhxXUfMP4IZOPeZcVn9EszzQRHs1H9ZJqVQIew==} 187 226 dependencies: 188 - '@atproto/jwk': 0.1.1 227 + '@atproto/jwk': 0.1.5 189 228 zod: 3.23.8 190 229 dev: false 191 230 192 - /@atproto/pds@0.4.74: 193 - resolution: {integrity: sha512-/TTZvhNQVX42g9Ms8txGGaOEpU3Ko2m7/iZfJlUIcPcntBr3lIZvQA5xzbkhdgS0/h1WmHUdQ37//YFK9w22ew==} 194 - hasBin: true 231 + /@atproto/pds@0.4.135: 232 + resolution: {integrity: sha512-QH5Txh46OFwyLnd5DDukbnVs2Cxs5zdycwwqtdQZVcSnAbsOjFSu0TEprIevfmCvmeUjhOEwh/+IQKpPFSFsGQ==} 233 + engines: {node: '>=18.7.0'} 195 234 dependencies: 196 - '@atproto-labs/fetch-node': 0.1.3 197 - '@atproto/api': 0.13.18 198 - '@atproto/aws': 0.2.9 199 - '@atproto/common': 0.4.4 200 - '@atproto/crypto': 0.4.2 201 - '@atproto/identity': 0.4.3 202 - '@atproto/lexicon': 0.4.3 203 - '@atproto/oauth-provider': 0.2.8 204 - '@atproto/repo': 0.5.5 205 - '@atproto/syntax': 0.3.1 206 - '@atproto/xrpc': 0.6.4 207 - '@atproto/xrpc-server': 0.7.3 235 + '@atproto-labs/fetch-node': 0.1.8 236 + '@atproto-labs/xrpc-utils': 0.0.14 237 + '@atproto/api': 0.15.6 238 + '@atproto/aws': 0.2.21 239 + '@atproto/common': 0.4.11 240 + '@atproto/crypto': 0.4.4 241 + '@atproto/identity': 0.4.8 242 + '@atproto/lexicon': 0.4.11 243 + '@atproto/oauth-provider': 0.7.6 244 + '@atproto/repo': 0.8.1 245 + '@atproto/syntax': 0.4.0 246 + '@atproto/xrpc': 0.7.0 247 + '@atproto/xrpc-server': 0.7.18 208 248 '@did-plc/lib': 0.0.4 209 249 '@hapi/address': 5.1.1 210 250 better-sqlite3: 10.1.0 ··· 241 281 - utf-8-validate 242 282 dev: false 243 283 244 - /@atproto/repo@0.5.5: 245 - resolution: {integrity: sha512-Zu1tw42KBVyFzIh1XYSIvm8V+V9oEKWJR7NnHBgeSMwCc9QwM32jO7uqgvEjZYEXgdYKanGhv/YHLyxtZa5Ckg==} 284 + /@atproto/repo@0.8.1: 285 + resolution: {integrity: sha512-d1NtHhXYJVJlFVI6mbVOUnpB0rnhqxPnZcALkJoYJjaDPVr4NNqRFAtrwb+GHzxT6DhijoXYQf24pKGfEFDd4g==} 286 + engines: {node: '>=18.7.0'} 246 287 dependencies: 247 - '@atproto/common': 0.4.4 248 - '@atproto/common-web': 0.3.1 249 - '@atproto/crypto': 0.4.2 250 - '@atproto/lexicon': 0.4.3 251 - '@ipld/car': 3.2.4 288 + '@atproto/common': 0.4.11 289 + '@atproto/common-web': 0.4.2 290 + '@atproto/crypto': 0.4.4 291 + '@atproto/lexicon': 0.4.11 252 292 '@ipld/dag-cbor': 7.0.3 253 293 multiformats: 9.9.0 254 294 uint8arrays: 3.0.0 295 + varint: 6.0.0 255 296 zod: 3.23.8 256 297 dev: false 257 298 258 - /@atproto/syntax@0.3.1: 259 - resolution: {integrity: sha512-fzW0Mg1QUOVCWUD3RgEsDt6d1OZ6DdFmbKcDdbzUfh0t4rhtRAC05KbZYmxuMPWDAiJ4BbbQ5dkAc/mNypMXkw==} 299 + /@atproto/syntax@0.4.0: 300 + resolution: {integrity: sha512-b9y5ceHS8YKOfP3mdKmwAx5yVj9294UN7FG2XzP6V5aKUdFazEYRnR9m5n5ZQFKa3GNvz7de9guZCJ/sUTcOAA==} 260 301 dev: false 261 302 262 - /@atproto/xrpc-server@0.7.3: 263 - resolution: {integrity: sha512-x0qegkN6snrbXJO3v9h2kuh9e90g6ZZkDXv3COiraGS3yRTzIm6i4bMvDSfCI50+0xCNtPKOkpn8taRoRgkyiw==} 303 + /@atproto/xrpc-server@0.7.18: 304 + resolution: {integrity: sha512-kjlAsI+UNbbm6AK3Y5Hb4BJ7VQHNKiYYu2kX5vhZJZHO8qfO40GPYYb/2TknZV8IG6fDPBQhUpcDRolI86sgag==} 305 + engines: {node: '>=18.7.0'} 264 306 dependencies: 265 - '@atproto/common': 0.4.4 266 - '@atproto/crypto': 0.4.2 267 - '@atproto/lexicon': 0.4.3 268 - '@atproto/xrpc': 0.6.4 307 + '@atproto/common': 0.4.11 308 + '@atproto/crypto': 0.4.4 309 + '@atproto/lexicon': 0.4.11 310 + '@atproto/xrpc': 0.7.0 269 311 cbor-x: 1.5.8 270 312 express: 4.18.2 271 313 http-errors: 2.0.0 ··· 280 322 - utf-8-validate 281 323 dev: false 282 324 283 - /@atproto/xrpc@0.6.4: 284 - resolution: {integrity: sha512-9ZAJ8nsXTqC4XFyS0E1Wlg7bAvonhXQNQ3Ocs1L1LIwFLXvsw/4fNpIHXxvXvqTCVeyHLbImOnE9UiO1c/qIYA==} 325 + /@atproto/xrpc@0.7.0: 326 + resolution: {integrity: sha512-SfhP9dGx2qclaScFDb58Jnrmim5nk4geZXCqg6sB0I/KZhZEkr9iIx1hLCp+sxkIfEsmEJjeWO4B0rjUIJW5cw==} 285 327 dependencies: 286 - '@atproto/lexicon': 0.4.3 328 + '@atproto/lexicon': 0.4.11 287 329 zod: 3.23.8 288 330 dev: false 289 331 ··· 1322 1364 resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} 1323 1365 dev: false 1324 1366 1325 - /@ipld/car@3.2.4: 1326 - resolution: {integrity: sha512-rezKd+jk8AsTGOoJKqzfjLJ3WVft7NZNH95f0pfPbicROvzTyvHCNy567HzSUd6gRXZ9im29z5ZEv9Hw49jSYw==} 1327 - dependencies: 1328 - '@ipld/dag-cbor': 7.0.3 1329 - multiformats: 9.9.0 1330 - varint: 6.0.0 1331 - dev: false 1332 - 1333 1367 /@ipld/dag-cbor@7.0.3: 1334 1368 resolution: {integrity: sha512-1VVh2huHsuohdXC1bGJNE8WR72slZ9XE2T3wbBBq31dm7ZBatmKLLxrB+XAqafxfRFjv08RZmj/W/ZqaM13AuA==} 1335 1369 dependencies: ··· 1349 1383 wrap-ansi-cjs: /wrap-ansi@7.0.0 1350 1384 dev: false 1351 1385 1352 - /@noble/curves@1.3.0: 1353 - resolution: {integrity: sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==} 1386 + /@noble/curves@1.8.1: 1387 + resolution: {integrity: sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==} 1388 + engines: {node: ^14.21.3 || >=16} 1354 1389 dependencies: 1355 - '@noble/hashes': 1.3.3 1390 + '@noble/hashes': 1.7.1 1356 1391 dev: false 1357 1392 1358 - /@noble/hashes@1.3.3: 1359 - resolution: {integrity: sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==} 1360 - engines: {node: '>= 16'} 1393 + /@noble/hashes@1.7.1: 1394 + resolution: {integrity: sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==} 1395 + engines: {node: ^14.21.3 || >=16} 1361 1396 dev: false 1362 1397 1363 1398 /@noble/secp256k1@1.7.1: ··· 1911 1946 resolution: {integrity: sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==} 1912 1947 dev: false 1913 1948 1914 - /axios@0.27.2: 1915 - resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==} 1916 - dependencies: 1917 - follow-redirects: 1.15.5 1918 - form-data: 4.0.0 1919 - transitivePeerDependencies: 1920 - - debug 1921 - dev: false 1922 - 1923 1949 /axios@1.6.7: 1924 1950 resolution: {integrity: sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==} 1925 1951 dependencies: ··· 2256 2282 /destroy@1.2.0: 2257 2283 resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} 2258 2284 engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} 2259 - dev: false 2260 - 2261 - /detect-libc@2.0.2: 2262 - resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} 2263 - engines: {node: '>=8'} 2264 2285 dev: false 2265 2286 2266 2287 /detect-libc@2.0.3: ··· 2745 2766 elliptic: 6.5.4 2746 2767 dev: false 2747 2768 2748 - /keygrip@1.1.0: 2749 - resolution: {integrity: sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==} 2750 - engines: {node: '>= 0.6'} 2751 - requiresBuild: true 2752 - dependencies: 2753 - tsscmp: 1.0.6 2754 - dev: false 2755 - 2756 2769 /kysely@0.22.0: 2757 2770 resolution: {integrity: sha512-ZE3qWtnqLOalodzfK5QUEcm7AEulhxsPNuKaGFsC3XiqO92vMLm+mAHk/NnbSIOtC4RmGm0nsv700i8KDp1gfQ==} 2758 2771 engines: {node: '>=14.0.0'} ··· 2769 2782 /lru-cache@10.2.0: 2770 2783 resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} 2771 2784 engines: {node: 14 || >=16.14} 2772 - dev: false 2773 - 2774 - /lru-cache@6.0.0: 2775 - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 2776 - engines: {node: '>=10'} 2777 - dependencies: 2778 - yallist: 4.0.0 2779 2785 dev: false 2780 2786 2781 2787 /media-typer@0.3.0: ··· 2876 2882 resolution: {integrity: sha512-uPEjtyh2tFEvWYt4Jw7McOD5FPcHkcxm/tHZc5PWaDB3JYq0rGFUbgaAK+CT5pYpQddBfsZVWI08OwoRfdfbcQ==} 2877 2883 engines: {node: '>=10'} 2878 2884 dependencies: 2879 - semver: 7.6.0 2885 + semver: 7.6.3 2880 2886 dev: false 2881 2887 2882 2888 /node-gyp-build-optional-packages@5.1.1: ··· 2884 2890 hasBin: true 2885 2891 requiresBuild: true 2886 2892 dependencies: 2887 - detect-libc: 2.0.2 2893 + detect-libc: 2.0.3 2888 2894 dev: false 2889 2895 optional: true 2890 2896 ··· 3032 3038 engines: {node: '>=10'} 3033 3039 hasBin: true 3034 3040 dependencies: 3035 - detect-libc: 2.0.2 3041 + detect-libc: 2.0.3 3036 3042 expand-template: 2.0.3 3037 3043 github-from-package: 0.0.0 3038 3044 minimist: 1.2.8 ··· 3198 3204 3199 3205 /semver-compare@1.0.0: 3200 3206 resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} 3201 - dev: false 3202 - 3203 - /semver@7.6.0: 3204 - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} 3205 - engines: {node: '>=10'} 3206 - hasBin: true 3207 - dependencies: 3208 - lru-cache: 6.0.0 3209 3207 dev: false 3210 3208 3211 3209 /semver@7.6.3: ··· 3477 3475 resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} 3478 3476 dev: false 3479 3477 3480 - /tsscmp@1.0.6: 3481 - resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} 3482 - engines: {node: '>=0.6.x'} 3483 - requiresBuild: true 3484 - dev: false 3485 - 3486 3478 /tunnel-agent@0.6.0: 3487 3479 resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} 3488 3480 dependencies: ··· 3604 3596 optional: true 3605 3597 utf-8-validate: 3606 3598 optional: true 3607 - dev: false 3608 - 3609 - /yallist@4.0.0: 3610 - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 3611 3599 dev: false 3612 3600 3613 3601 /zod@3.23.8: