Mirror from bluesky-social/pds

Compare changes

Choose any two refs to compare.

Changed files
+454 -260
.github
service
+1 -1
.github/workflows/build-and-push-ghcr.yaml
··· 3 3 push: 4 4 branches: 5 5 - main 6 - - pdsv2 6 + - next 7 7 tags: 8 8 - v* 9 9 env:
+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
+50
README.md
··· 25 25 * [Creating an account using pdsadmin](#creating-an-account-using-pdsadmin) 26 26 * [Creating an account using an invite code](#creating-an-account-using-an-invite-code) 27 27 * [Using the Bluesky app with your PDS](#using-the-bluesky-app-with-your-pds) 28 + * [Setting up SMTP](#setting-up-smtp) 28 29 * [Updating your PDS](#updating-your-pds) 29 30 30 31 <!-- tocstop --> ··· 199 200 1. Enter the URL of your PDS (e.g. `https://example.com/`) 200 201 201 202 _Note: because the subdomain TLS certificate is created on-demand, it may take 10-30s for your handle to be accessible. If you aren't seeing your first post/profile, wait 30s and try to make another post._ 203 + 204 + ### Setting up SMTP 205 + 206 + To be able to verify users' email addresses and send other emails, you need to set up an SMTP server. 207 + 208 + One way to do this is to use an email service. [Resend](https://resend.com/) and [SendGrid](https://sendgrid.com/) are two popular choices. 209 + 210 + Create an account and API key on an email service, ensure your server allows access on the required ports, and set these variables in `/pds/pds.env` (example with Resend): 211 + 212 + ``` 213 + PDS_EMAIL_SMTP_URL=smtps://resend:<your api key here>@smtp.resend.com:465/ 214 + PDS_EMAIL_FROM_ADDRESS=admin@your.domain 215 + ``` 216 + 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 + ``` 228 + 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 + ### Logging 232 + 233 + By default, logs from the PDS are printed to `stdout` and end up in Docker's log. You can browse them by running: 234 + 235 + ``` 236 + [sudo] docker logs pds 237 + ``` 238 + 239 + Note: these logs are not persisted, so they will be lost after server reboot. 240 + 241 + Alternatively, you can configure the logs to be printed to a file by setting `LOG_DESTINATION`: 242 + 243 + ``` 244 + LOG_DESTINATION=/pds/pds.log 245 + ``` 246 + 247 + You can also change the minimum level of logs to be printed (default: `info`): 248 + 249 + ``` 250 + LOG_LEVEL=debug 251 + ``` 202 252 203 253 ### Updating your PDS 204 254
+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.66" 10 + "@atproto/pds": "0.4.166" 10 11 } 11 12 }
+399 -257
service/pnpm-lock.yaml
··· 6 6 7 7 dependencies: 8 8 '@atproto/pds': 9 - specifier: 0.4.66 10 - version: 0.4.66 9 + specifier: 0.4.166 10 + version: 0.4.166 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.9: 15 + resolution: {integrity: sha512-8sHDDXZEzQptLu8ddUU/8U+THS6dumgPynVX0/1PjUYd4S/FWyPcz6yMIiVChTfzKnZvYRRz47+qvOKhydrHQw==} 16 + engines: {node: '>=18.7.0'} 16 17 dependencies: 17 - '@atproto-labs/fetch': 0.1.1 18 - '@atproto-labs/pipe': 0.1.0 18 + '@atproto-labs/fetch': 0.2.3 19 + '@atproto-labs/pipe': 0.1.1 19 20 ipaddr.js: 2.2.0 20 - psl: 1.9.0 21 21 undici: 6.20.1 22 22 dev: false 23 23 24 - /@atproto-labs/fetch@0.1.1: 25 - resolution: {integrity: sha512-X1zO1MDoJzEurbWXMAe1H8EZ995Xam/aXdxhGVrXmOMyPDuvBa1oxwh/kQNZRCKcMQUbiwkk+Jfq6ZkTuvGbww==} 24 + /@atproto-labs/fetch@0.2.3: 25 + resolution: {integrity: sha512-NZtbJOCbxKUFRFKMpamT38PUQMY0hX0p7TG5AEYOPhZKZEP7dHZ1K2s1aB8MdVH0qxmqX7nQleNrrvLf09Zfdw==} 26 26 dependencies: 27 - '@atproto-labs/pipe': 0.1.0 28 - optionalDependencies: 29 - zod: 3.23.8 27 + '@atproto-labs/pipe': 0.1.1 30 28 dev: false 31 29 32 - /@atproto-labs/pipe@0.1.0: 33 - resolution: {integrity: sha512-ghOqHFyJlQVFPESzlVHjKroP0tPzbmG5Jms0dNI9yLDEfL8xp4OFPWLX4f6T8mRq69wWs4nIDM3sSsFbFqLa1w==} 30 + /@atproto-labs/pipe@0.1.1: 31 + resolution: {integrity: sha512-hdNw2oUs2B6BN1lp+32pF7cp8EMKuIN5Qok2Vvv/aOpG/3tNSJ9YkvfI0k6Zd188LeDDYRUpYpxcoFIcGH/FNg==} 34 32 dev: false 35 33 36 - /@atproto-labs/simple-store-memory@0.1.1: 37 - resolution: {integrity: sha512-PCRqhnZ8NBNBvLku53O56T0lsVOtclfIrQU/rwLCc4+p45/SBPrRYNBi6YFq5rxZbK6Njos9MCmILV/KLQxrWA==} 34 + /@atproto-labs/simple-store-memory@0.1.3: 35 + resolution: {integrity: sha512-jkitT9+AtU+0b28DoN92iURLaCt/q/q4yX8q6V+9LSwYlUTqKoj/5NFKvF7x6EBuG+gpUdlcycbH7e60gjOhRQ==} 38 36 dependencies: 39 - '@atproto-labs/simple-store': 0.1.1 37 + '@atproto-labs/simple-store': 0.2.0 40 38 lru-cache: 10.2.0 41 39 dev: false 42 40 43 - /@atproto-labs/simple-store@0.1.1: 44 - resolution: {integrity: sha512-WKILW2b3QbAYKh+w5U2x6p5FqqLl0nAeLwGeDY+KjX01K4Dq3vQTR9b/qNp0jZm48CabPQVrqCv0PPU9LgRRRg==} 41 + /@atproto-labs/simple-store@0.2.0: 42 + resolution: {integrity: sha512-0bRbAlI8Ayh03wRwncAMEAyUKtZ+AuTS1jgPrfym1WVOAOiottI/ZmgccqLl6w5MbxVcClNQF7WYGKvGwGoIhA==} 45 43 dev: false 46 44 47 - /@atproto/api@0.13.12: 48 - resolution: {integrity: sha512-U/qimbjlX0MA4MsR+GDuAnFtmdFuGi7eMQZm51s9gbDUw6y4RARL6gaZ0Ju9fBZpS45sI+ShlUHzIoEiBaRvkg==} 45 + /@atproto-labs/xrpc-utils@0.0.18: 46 + resolution: {integrity: sha512-Cwrlx2JcLe0jxCK8b3GCT3HRGaH3yPhyyt+3n4JykJapCaGBKqa6FHGs9hK2Fx6lOyPF7TnV5qUPUsJ1qGEUVA==} 49 47 dependencies: 50 - '@atproto/common-web': 0.3.1 51 - '@atproto/lexicon': 0.4.2 52 - '@atproto/syntax': 0.3.0 53 - '@atproto/xrpc': 0.6.3 48 + '@atproto/xrpc': 0.7.1 49 + '@atproto/xrpc-server': 0.9.1 50 + transitivePeerDependencies: 51 + - bufferutil 52 + - supports-color 53 + - utf-8-validate 54 + dev: false 55 + 56 + /@atproto/api@0.16.2: 57 + resolution: {integrity: sha512-sSTg31J8ws8DNaoiizp+/uJideRxRaJsq+Nyl8rnSxGw0w3oCvoeRU19iRWh2t0jZEmiRJAGkveGu23NKmPYEQ==} 58 + dependencies: 59 + '@atproto/common-web': 0.4.2 60 + '@atproto/lexicon': 0.4.12 61 + '@atproto/syntax': 0.4.0 62 + '@atproto/xrpc': 0.7.1 54 63 await-lock: 2.2.2 55 64 multiformats: 9.9.0 56 65 tlds: 1.250.0 57 66 zod: 3.23.8 58 67 dev: false 59 68 60 - /@atproto/aws@0.2.7: 61 - resolution: {integrity: sha512-Hl6f8oeS7BFEGqx/VHI7MWU8KOlygrI4tUFz3dwXP+daW+TlCkDIXZycfm2oJhzSorkbXQ/pH7HMgtJEE6JEVQ==} 69 + /@atproto/aws@0.2.25: 70 + resolution: {integrity: sha512-LT4uuda2mjXz2WT4xo7g2aWmWKl+JWusGzscqQpOlD/RFGFXKDmUcVWLVPKY+9Pys2F7X6tyDlm2aUx+/dYdYA==} 71 + engines: {node: '>=18.7.0'} 62 72 dependencies: 63 - '@atproto/common': 0.4.4 64 - '@atproto/crypto': 0.4.1 65 - '@atproto/repo': 0.5.3 73 + '@atproto/common': 0.4.11 74 + '@atproto/crypto': 0.4.4 75 + '@atproto/repo': 0.8.5 66 76 '@aws-sdk/client-cloudfront': 3.515.0 67 77 '@aws-sdk/client-kms': 3.515.0 68 78 '@aws-sdk/client-s3': 3.515.0 69 79 '@aws-sdk/lib-storage': 3.515.0(@aws-sdk/client-s3@3.515.0) 70 - '@noble/curves': 1.3.0 80 + '@noble/curves': 1.8.1 71 81 key-encoder: 2.0.3 72 82 multiformats: 9.9.0 73 83 uint8arrays: 3.0.0 ··· 75 85 - aws-crt 76 86 dev: false 77 87 78 - /@atproto/common-web@0.3.1: 79 - resolution: {integrity: sha512-N7wiTnus5vAr+lT//0y8m/FaHHLJ9LpGuEwkwDAeV3LCiPif4m/FS8x/QOYrx1PdZQwKso95RAPzCGWQBH5j6Q==} 88 + /@atproto/common-web@0.4.2: 89 + resolution: {integrity: sha512-vrXwGNoFGogodjQvJDxAeP3QbGtawgZute2ed1XdRO0wMixLk3qewtikZm06H259QDJVu6voKC5mubml+WgQUw==} 80 90 dependencies: 81 91 graphemer: 1.4.0 82 92 multiformats: 9.9.0 ··· 93 103 zod: 3.23.8 94 104 dev: false 95 105 96 - /@atproto/common@0.4.4: 97 - resolution: {integrity: sha512-58tMbn6A1Zu296s/l3uIj8z9d7IRHpZvLOfsFRikaQaYrzhJpL2aPY4uFQ8GJcxnsxeUnxBCrQz9we5jVVJI5Q==} 106 + /@atproto/common@0.4.11: 107 + resolution: {integrity: sha512-Knv0viYXNMfCdIE7jLUiWJKnnMfEwg+vz2epJQi8WOjqtqCFb3W/3Jn72ZiuovIfpdm13MaOiny6w2NErUQC6g==} 108 + engines: {node: '>=18.7.0'} 98 109 dependencies: 99 - '@atproto/common-web': 0.3.1 110 + '@atproto/common-web': 0.4.2 100 111 '@ipld/dag-cbor': 7.0.3 101 112 cbor-x: 1.5.8 102 113 iso-datestring-validator: 2.2.2 ··· 114 125 uint8arrays: 3.0.0 115 126 dev: false 116 127 117 - /@atproto/crypto@0.4.1: 118 - resolution: {integrity: sha512-7pQNHWYyx8jGhYdPbmcuPD9W73nd/5v3mfBlncO0sBzxnPbmA6aXAWOz+fNVZwHwBJPeb/Gzf/FT/uDx7/eYFg==} 128 + /@atproto/crypto@0.4.4: 129 + resolution: {integrity: sha512-Yq9+crJ7WQl7sxStVpHgie5Z51R05etaK9DLWYG/7bR5T4bhdcIgF6IfklLShtZwLYdVVj+K15s0BqW9a8PSDA==} 130 + engines: {node: '>=18.7.0'} 119 131 dependencies: 120 - '@noble/curves': 1.3.0 121 - '@noble/hashes': 1.3.3 132 + '@noble/curves': 1.8.1 133 + '@noble/hashes': 1.7.1 122 134 uint8arrays: 3.0.0 123 135 dev: false 124 136 125 - /@atproto/identity@0.4.2: 126 - resolution: {integrity: sha512-Z267XI84enuYQLV8hgDMVkGZqy8GtPI4PYVn1rz4YKwSaI+nGwADNtyK+ZZWFa0tTDKS6q6u4ae7B8RdrUlk8A==} 137 + /@atproto/did@0.1.5: 138 + resolution: {integrity: sha512-8+1D08QdGE5TF0bB0vV8HLVrVZJeLNITpRTUVEoABNMRaUS7CoYSVb0+JNQDeJIVmqMjOL8dOjvCUDkp3gEaGQ==} 139 + dependencies: 140 + zod: 3.23.8 141 + dev: false 142 + 143 + /@atproto/identity@0.4.8: 144 + resolution: {integrity: sha512-Z0sLnJ87SeNdAifT+rqpgE1Rc3layMMW25gfWNo4u40RGuRODbdfAZlTwBSU2r+Vk45hU+iE+xeQspfednCEnA==} 145 + engines: {node: '>=18.7.0'} 127 146 dependencies: 128 - '@atproto/common-web': 0.3.1 129 - '@atproto/crypto': 0.4.1 130 - axios: 0.27.2 131 - transitivePeerDependencies: 132 - - debug 147 + '@atproto/common-web': 0.4.2 148 + '@atproto/crypto': 0.4.4 133 149 dev: false 134 150 135 - /@atproto/jwk-jose@0.1.2: 136 - resolution: {integrity: sha512-lDwc/6lLn2aZ/JpyyggyjLFsJPMntrVzryyGUx5aNpuTS8SIuc4Ky0REhxqfLopQXJJZCuRRjagHG3uP05/moQ==} 151 + /@atproto/jwk-jose@0.1.9: 152 + resolution: {integrity: sha512-HT9GcUe6htDxI5OSYXWdeS6QZ9lpuDDvJk508ppi8a48E/1f8eumoM0QhgbFRF9IKAnnFrtnZDOAvljQzFKwwQ==} 137 153 dependencies: 138 - '@atproto/jwk': 0.1.1 154 + '@atproto/jwk': 0.4.0 139 155 jose: 5.2.2 140 156 dev: false 141 157 142 - /@atproto/jwk@0.1.1: 143 - resolution: {integrity: sha512-6h/bj1APUk7QcV9t/oA6+9DB5NZx9SZru9x+/pV5oHFI9Xz4ZuM5+dq1PfsJV54pZyqdnZ6W6M717cxoC7q7og==} 158 + /@atproto/jwk@0.4.0: 159 + resolution: {integrity: sha512-tvp4iZrzqEzKCeTOKz50/o6WdsZzOuWmWjF6On5QAp04fLwLpsFu2Hixgx/lA1KBO0O4sns7YSGcAqSSX6Rdog==} 144 160 dependencies: 145 161 multiformats: 9.9.0 146 162 zod: 3.23.8 147 163 dev: false 148 164 149 - /@atproto/lexicon@0.4.2: 150 - resolution: {integrity: sha512-CXoOkhcdF3XVUnR2oNgCs2ljWfo/8zUjxL5RIhJW/UNLp/FSl+KpF8Jm5fbk8Y/XXVPGRAsv9OYfxyU/14N/pw==} 165 + /@atproto/lexicon@0.4.12: 166 + resolution: {integrity: sha512-fcEvEQ1GpQYF5igZ4IZjPWEoWVpsEF22L9RexxLS3ptfySXLflEyH384e7HITzO/73McDeaJx3lqHIuqn9ulnw==} 151 167 dependencies: 152 - '@atproto/common-web': 0.3.1 153 - '@atproto/syntax': 0.3.0 168 + '@atproto/common-web': 0.4.2 169 + '@atproto/syntax': 0.4.0 154 170 iso-datestring-validator: 2.2.2 155 171 multiformats: 9.9.0 156 172 zod: 3.23.8 157 173 dev: false 158 174 159 - /@atproto/oauth-provider@0.2.6: 160 - resolution: {integrity: sha512-RuudYQUxM7dHPXxUxjYQ81rGm2hKR13NdRUh9UECp9hS/VSSIkT43is5RUx8tMhuXcRgdDDDJynljAnYNBLmHg==} 175 + /@atproto/oauth-provider-api@0.2.0: 176 + resolution: {integrity: sha512-u18VRCDuz5BloUQKbvTISjQk7CgpDI1hf3leoJ7ADOAo8oW71QZD0tsWDX81R2uB66mKZHptjGSSVxxqpZFipQ==} 161 177 dependencies: 162 - '@atproto-labs/fetch': 0.1.1 163 - '@atproto-labs/fetch-node': 0.1.3 164 - '@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.0 178 + '@atproto/jwk': 0.4.0 179 + '@atproto/oauth-types': 0.4.0 180 + dev: false 181 + 182 + /@atproto/oauth-provider-frontend@0.1.11: 183 + resolution: {integrity: sha512-MvPUI+vh8a8UWmpAV8VS2qrdJ/B6l75qDQX1z6vF1YkPR1d9SLEdOYx/O26g5ZyuN+Mk00OBdOSfjvON/UOxQA==} 184 + engines: {node: '>=18.7.0'} 185 + optionalDependencies: 186 + '@atproto/oauth-provider-api': 0.2.0 187 + dev: false 188 + 189 + /@atproto/oauth-provider-ui@0.2.0: 190 + resolution: {integrity: sha512-v4rzz3C8i2NBqxycWWDTeosHtv6B9+EW4ZCq9Il6thmHdtT2CmB07R5Ia7zQ1n7lylxI6mC9JqA9CLis0uLz+Q==} 191 + engines: {node: '>=18.7.0'} 192 + optionalDependencies: 193 + '@atproto/oauth-provider-api': 0.2.0 194 + dev: false 195 + 196 + /@atproto/oauth-provider@0.10.0: 197 + resolution: {integrity: sha512-WbDaMC/9Zd4oslA4pPvf7ozum0YAQRxNspYpEauXtJ/bjVxqViKgV158jnPhDbYfo62NkxSuSaUkTV116U/VBg==} 198 + engines: {node: '>=18.7.0'} 199 + dependencies: 200 + '@atproto-labs/fetch': 0.2.3 201 + '@atproto-labs/fetch-node': 0.1.9 202 + '@atproto-labs/pipe': 0.1.1 203 + '@atproto-labs/simple-store': 0.2.0 204 + '@atproto-labs/simple-store-memory': 0.1.3 205 + '@atproto/common': 0.4.11 206 + '@atproto/did': 0.1.5 207 + '@atproto/jwk': 0.4.0 208 + '@atproto/jwk-jose': 0.1.9 209 + '@atproto/oauth-provider-api': 0.2.0 210 + '@atproto/oauth-provider-frontend': 0.1.11 211 + '@atproto/oauth-provider-ui': 0.2.0 212 + '@atproto/oauth-scopes': 0.0.1 213 + '@atproto/oauth-types': 0.4.0 214 + '@atproto/syntax': 0.4.0 171 215 '@hapi/accept': 6.0.3 216 + '@hapi/address': 5.1.1 172 217 '@hapi/bourne': 3.0.0 173 218 '@hapi/content': 6.0.0 174 - cookie: 0.6.0 219 + cookie: 0.7.2 220 + disposable-email-domains-js: 1.5.0 221 + forwarded: 0.2.0 175 222 http-errors: 2.0.0 176 223 ioredis: 5.3.2 177 224 jose: 5.2.2 178 - keygrip: 1.1.0 179 - psl: 1.9.0 180 225 zod: 3.23.8 181 226 transitivePeerDependencies: 182 227 - supports-color 183 228 dev: false 184 229 185 - /@atproto/oauth-types@0.2.0: 186 - resolution: {integrity: sha512-v/4ht6eRh0yOu2iuuWujZdnJBamPKimdy8k0Xan8cVZ+a2i83UkhIIU+S/XUbbvJ4a64wLPZrS9IDd0K5XYYTQ==} 230 + /@atproto/oauth-scopes@0.0.1: 231 + resolution: {integrity: sha512-9IGgwM0KrWUwRTg02o4GKZaoKJLOkFwtkq2i39pYQxqJm18jvEvadxW/sR1A5f9f2vbTZtECgIziU5hdd01U5Q==} 232 + dev: false 233 + 234 + /@atproto/oauth-types@0.4.0: 235 + resolution: {integrity: sha512-FrRH9JsPw9H4JxfPDrbrI+pB102tbHTygajfHay7xwz78HPOjSbWPRgWW2hYS4w8vDYdB3PYbBj1jPoKetW7LA==} 187 236 dependencies: 188 - '@atproto/jwk': 0.1.1 237 + '@atproto/jwk': 0.4.0 189 238 zod: 3.23.8 190 239 dev: false 191 240 192 - /@atproto/pds@0.4.66: 193 - resolution: {integrity: sha512-XoyEieooNnFgx5vDbVj8FW7EqMHXAnr5y3rzNK6popT4FjLFCJ9s2chxcC2yUkTQi3GGOIoUaoafy2Q4HECq5A==} 194 - hasBin: true 241 + /@atproto/pds@0.4.166: 242 + resolution: {integrity: sha512-LwLiLQNOZsZ4LgD4qmtWf3W5FJEaTA3Bi3Y1x79TXrBfcvcmIoNYBUE0WOLmDFfLyp44caODqS6HCLvqc11T7g==} 243 + engines: {node: '>=18.7.0'} 195 244 dependencies: 196 - '@atproto-labs/fetch-node': 0.1.3 197 - '@atproto/api': 0.13.12 198 - '@atproto/aws': 0.2.7 199 - '@atproto/common': 0.4.4 200 - '@atproto/crypto': 0.4.1 201 - '@atproto/identity': 0.4.2 202 - '@atproto/lexicon': 0.4.2 203 - '@atproto/oauth-provider': 0.2.6 204 - '@atproto/repo': 0.5.3 205 - '@atproto/syntax': 0.3.0 206 - '@atproto/xrpc': 0.6.3 207 - '@atproto/xrpc-server': 0.7.1 245 + '@atproto-labs/fetch-node': 0.1.9 246 + '@atproto-labs/xrpc-utils': 0.0.18 247 + '@atproto/api': 0.16.2 248 + '@atproto/aws': 0.2.25 249 + '@atproto/common': 0.4.11 250 + '@atproto/crypto': 0.4.4 251 + '@atproto/identity': 0.4.8 252 + '@atproto/lexicon': 0.4.12 253 + '@atproto/oauth-provider': 0.10.0 254 + '@atproto/oauth-scopes': 0.0.1 255 + '@atproto/repo': 0.8.5 256 + '@atproto/syntax': 0.4.0 257 + '@atproto/xrpc': 0.7.1 258 + '@atproto/xrpc-server': 0.9.1 208 259 '@did-plc/lib': 0.0.4 260 + '@hapi/address': 5.1.1 209 261 better-sqlite3: 10.1.0 210 262 bytes: 3.1.2 211 263 compression: 1.7.4 212 264 cors: 2.8.5 213 - disposable-email: 0.2.3 265 + disposable-email-domains-js: 1.5.0 214 266 express: 4.18.2 215 267 express-async-errors: 3.1.1(express@4.18.2) 216 268 file-type: 16.5.4 ··· 227 279 p-queue: 6.6.2 228 280 pino: 8.21.0 229 281 pino-http: 8.6.1 230 - sharp: 0.32.6 282 + sharp: 0.33.5 231 283 typed-emitter: 2.1.0 232 284 uint8arrays: 3.0.0 233 285 undici: 6.20.1 ··· 240 292 - utf-8-validate 241 293 dev: false 242 294 243 - /@atproto/repo@0.5.3: 244 - resolution: {integrity: sha512-Lbp35SaK5149B9VnE6CVruo/iImNKQ49pPSR+5KuStHDCIyH0z/ynOrEJfpQjTzVu9kdio6bimo5zsl4F2fT2Q==} 295 + /@atproto/repo@0.8.5: 296 + resolution: {integrity: sha512-QZ4UWBWDyPMXgPhktmaRYRyCXIw7lIEAyGtaFy7UmCPpJ5TtFKw3GhGrEiNz/fY3/6lrkdDj44/Tzkud/eP/VQ==} 297 + engines: {node: '>=18.7.0'} 245 298 dependencies: 246 - '@atproto/common': 0.4.4 247 - '@atproto/common-web': 0.3.1 248 - '@atproto/crypto': 0.4.1 249 - '@atproto/lexicon': 0.4.2 250 - '@ipld/car': 3.2.4 299 + '@atproto/common': 0.4.11 300 + '@atproto/common-web': 0.4.2 301 + '@atproto/crypto': 0.4.4 302 + '@atproto/lexicon': 0.4.12 251 303 '@ipld/dag-cbor': 7.0.3 252 304 multiformats: 9.9.0 253 305 uint8arrays: 3.0.0 306 + varint: 6.0.0 254 307 zod: 3.23.8 255 308 dev: false 256 309 257 - /@atproto/syntax@0.3.0: 258 - resolution: {integrity: sha512-Weq0ZBxffGHDXHl9U7BQc2BFJi/e23AL+k+i5+D9hUq/bzT4yjGsrCejkjq0xt82xXDjmhhvQSZ0LqxyZ5woxA==} 310 + /@atproto/syntax@0.4.0: 311 + resolution: {integrity: sha512-b9y5ceHS8YKOfP3mdKmwAx5yVj9294UN7FG2XzP6V5aKUdFazEYRnR9m5n5ZQFKa3GNvz7de9guZCJ/sUTcOAA==} 259 312 dev: false 260 313 261 - /@atproto/xrpc-server@0.7.1: 262 - resolution: {integrity: sha512-6S3PiKmbdT2TwEEWmnKdEJkgBJtQHYNlAVB4PSNum50R2Xw3c1SV4NK6zLsxPqNpV2WhAlYEJUSTPAOTV3QMbw==} 314 + /@atproto/xrpc-server@0.9.1: 315 + resolution: {integrity: sha512-AJfxsKrZgKL/5362Rc0oUEjlgpDCmY/soeyLHHjid8J6clbErAdJVCuFwW4T40aHGFY1J13a29ucwbSfOROx6w==} 316 + engines: {node: '>=18.7.0'} 263 317 dependencies: 264 - '@atproto/common': 0.4.4 265 - '@atproto/crypto': 0.4.1 266 - '@atproto/lexicon': 0.4.2 267 - '@atproto/xrpc': 0.6.3 318 + '@atproto/common': 0.4.11 319 + '@atproto/crypto': 0.4.4 320 + '@atproto/lexicon': 0.4.12 321 + '@atproto/xrpc': 0.7.1 268 322 cbor-x: 1.5.8 269 323 express: 4.18.2 270 324 http-errors: 2.0.0 ··· 279 333 - utf-8-validate 280 334 dev: false 281 335 282 - /@atproto/xrpc@0.6.3: 283 - resolution: {integrity: sha512-S3tRvOdA9amPkKLll3rc4vphlDitLrkN5TwWh5Tu/jzk7mnobVVE3akYgICV9XCNHKjWM+IAPxFFI2qi+VW6nQ==} 336 + /@atproto/xrpc@0.7.1: 337 + resolution: {integrity: sha512-ANHEzlskYlMEdH18m+Itp3a8d0pEJao2qoDybDoMupTnoeNkya4VKIaOgAi6ERQnqatBBZyn9asW+7rJmSt/8g==} 284 338 dependencies: 285 - '@atproto/lexicon': 0.4.2 339 + '@atproto/lexicon': 0.4.12 286 340 zod: 3.23.8 287 341 dev: false 288 342 ··· 1095 1149 - debug 1096 1150 dev: false 1097 1151 1152 + /@emnapi/runtime@1.3.1: 1153 + resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==} 1154 + requiresBuild: true 1155 + dependencies: 1156 + tslib: 2.6.2 1157 + dev: false 1158 + optional: true 1159 + 1098 1160 /@hapi/accept@6.0.3: 1099 1161 resolution: {integrity: sha512-p72f9k56EuF0n3MwlBNThyVE5PXX40g+aQh+C/xbKrfzahM2Oispv3AXmOIU51t3j77zay1qrX7IIziZXspMlw==} 1100 1162 dependencies: 1101 1163 '@hapi/boom': 10.0.1 1164 + '@hapi/hoek': 11.0.4 1165 + dev: false 1166 + 1167 + /@hapi/address@5.1.1: 1168 + resolution: {integrity: sha512-A+po2d/dVoY7cYajycYI43ZbYMXukuopIsqCjh5QzsBCipDtdofHntljDlpccMjIfTy6UOkg+5KPriwYch2bXA==} 1169 + engines: {node: '>=14.0.0'} 1170 + dependencies: 1102 1171 '@hapi/hoek': 11.0.4 1103 1172 dev: false 1104 1173 ··· 1122 1191 resolution: {integrity: sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==} 1123 1192 dev: false 1124 1193 1125 - /@ioredis/commands@1.2.0: 1126 - resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} 1194 + /@img/sharp-darwin-arm64@0.33.5: 1195 + resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} 1196 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 1197 + cpu: [arm64] 1198 + os: [darwin] 1199 + requiresBuild: true 1200 + optionalDependencies: 1201 + '@img/sharp-libvips-darwin-arm64': 1.0.4 1127 1202 dev: false 1203 + optional: true 1128 1204 1129 - /@ipld/car@3.2.4: 1130 - resolution: {integrity: sha512-rezKd+jk8AsTGOoJKqzfjLJ3WVft7NZNH95f0pfPbicROvzTyvHCNy567HzSUd6gRXZ9im29z5ZEv9Hw49jSYw==} 1205 + /@img/sharp-darwin-x64@0.33.5: 1206 + resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} 1207 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 1208 + cpu: [x64] 1209 + os: [darwin] 1210 + requiresBuild: true 1211 + optionalDependencies: 1212 + '@img/sharp-libvips-darwin-x64': 1.0.4 1213 + dev: false 1214 + optional: true 1215 + 1216 + /@img/sharp-libvips-darwin-arm64@1.0.4: 1217 + resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} 1218 + cpu: [arm64] 1219 + os: [darwin] 1220 + requiresBuild: true 1221 + dev: false 1222 + optional: true 1223 + 1224 + /@img/sharp-libvips-darwin-x64@1.0.4: 1225 + resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} 1226 + cpu: [x64] 1227 + os: [darwin] 1228 + requiresBuild: true 1229 + dev: false 1230 + optional: true 1231 + 1232 + /@img/sharp-libvips-linux-arm64@1.0.4: 1233 + resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} 1234 + cpu: [arm64] 1235 + os: [linux] 1236 + requiresBuild: true 1237 + dev: false 1238 + optional: true 1239 + 1240 + /@img/sharp-libvips-linux-arm@1.0.5: 1241 + resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} 1242 + cpu: [arm] 1243 + os: [linux] 1244 + requiresBuild: true 1245 + dev: false 1246 + optional: true 1247 + 1248 + /@img/sharp-libvips-linux-s390x@1.0.4: 1249 + resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} 1250 + cpu: [s390x] 1251 + os: [linux] 1252 + requiresBuild: true 1253 + dev: false 1254 + optional: true 1255 + 1256 + /@img/sharp-libvips-linux-x64@1.0.4: 1257 + resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} 1258 + cpu: [x64] 1259 + os: [linux] 1260 + requiresBuild: true 1261 + dev: false 1262 + optional: true 1263 + 1264 + /@img/sharp-libvips-linuxmusl-arm64@1.0.4: 1265 + resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} 1266 + cpu: [arm64] 1267 + os: [linux] 1268 + requiresBuild: true 1269 + dev: false 1270 + optional: true 1271 + 1272 + /@img/sharp-libvips-linuxmusl-x64@1.0.4: 1273 + resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} 1274 + cpu: [x64] 1275 + os: [linux] 1276 + requiresBuild: true 1277 + dev: false 1278 + optional: true 1279 + 1280 + /@img/sharp-linux-arm64@0.33.5: 1281 + resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} 1282 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 1283 + cpu: [arm64] 1284 + os: [linux] 1285 + requiresBuild: true 1286 + optionalDependencies: 1287 + '@img/sharp-libvips-linux-arm64': 1.0.4 1288 + dev: false 1289 + optional: true 1290 + 1291 + /@img/sharp-linux-arm@0.33.5: 1292 + resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} 1293 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 1294 + cpu: [arm] 1295 + os: [linux] 1296 + requiresBuild: true 1297 + optionalDependencies: 1298 + '@img/sharp-libvips-linux-arm': 1.0.5 1299 + dev: false 1300 + optional: true 1301 + 1302 + /@img/sharp-linux-s390x@0.33.5: 1303 + resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} 1304 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 1305 + cpu: [s390x] 1306 + os: [linux] 1307 + requiresBuild: true 1308 + optionalDependencies: 1309 + '@img/sharp-libvips-linux-s390x': 1.0.4 1310 + dev: false 1311 + optional: true 1312 + 1313 + /@img/sharp-linux-x64@0.33.5: 1314 + resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} 1315 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 1316 + cpu: [x64] 1317 + os: [linux] 1318 + requiresBuild: true 1319 + optionalDependencies: 1320 + '@img/sharp-libvips-linux-x64': 1.0.4 1321 + dev: false 1322 + optional: true 1323 + 1324 + /@img/sharp-linuxmusl-arm64@0.33.5: 1325 + resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} 1326 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 1327 + cpu: [arm64] 1328 + os: [linux] 1329 + requiresBuild: true 1330 + optionalDependencies: 1331 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 1332 + dev: false 1333 + optional: true 1334 + 1335 + /@img/sharp-linuxmusl-x64@0.33.5: 1336 + resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} 1337 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 1338 + cpu: [x64] 1339 + os: [linux] 1340 + requiresBuild: true 1341 + optionalDependencies: 1342 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 1343 + dev: false 1344 + optional: true 1345 + 1346 + /@img/sharp-wasm32@0.33.5: 1347 + resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} 1348 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 1349 + cpu: [wasm32] 1350 + requiresBuild: true 1131 1351 dependencies: 1132 - '@ipld/dag-cbor': 7.0.3 1133 - multiformats: 9.9.0 1134 - varint: 6.0.0 1352 + '@emnapi/runtime': 1.3.1 1353 + dev: false 1354 + optional: true 1355 + 1356 + /@img/sharp-win32-ia32@0.33.5: 1357 + resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} 1358 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 1359 + cpu: [ia32] 1360 + os: [win32] 1361 + requiresBuild: true 1362 + dev: false 1363 + optional: true 1364 + 1365 + /@img/sharp-win32-x64@0.33.5: 1366 + resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} 1367 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 1368 + cpu: [x64] 1369 + os: [win32] 1370 + requiresBuild: true 1371 + dev: false 1372 + optional: true 1373 + 1374 + /@ioredis/commands@1.2.0: 1375 + resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} 1135 1376 dev: false 1136 1377 1137 1378 /@ipld/dag-cbor@7.0.3: ··· 1153 1394 wrap-ansi-cjs: /wrap-ansi@7.0.0 1154 1395 dev: false 1155 1396 1156 - /@noble/curves@1.3.0: 1157 - resolution: {integrity: sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==} 1397 + /@noble/curves@1.8.1: 1398 + resolution: {integrity: sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==} 1399 + engines: {node: ^14.21.3 || >=16} 1158 1400 dependencies: 1159 - '@noble/hashes': 1.3.3 1401 + '@noble/hashes': 1.7.1 1160 1402 dev: false 1161 1403 1162 - /@noble/hashes@1.3.3: 1163 - resolution: {integrity: sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==} 1164 - engines: {node: '>= 16'} 1404 + /@noble/hashes@1.7.1: 1405 + resolution: {integrity: sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==} 1406 + engines: {node: ^14.21.3 || >=16} 1165 1407 dev: false 1166 1408 1167 1409 /@noble/secp256k1@1.7.1: ··· 1715 1957 resolution: {integrity: sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==} 1716 1958 dev: false 1717 1959 1718 - /axios@0.27.2: 1719 - resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==} 1720 - dependencies: 1721 - follow-redirects: 1.15.5 1722 - form-data: 4.0.0 1723 - transitivePeerDependencies: 1724 - - debug 1725 - dev: false 1726 - 1727 1960 /axios@1.6.7: 1728 1961 resolution: {integrity: sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==} 1729 1962 dependencies: ··· 1732 1965 proxy-from-env: 1.1.0 1733 1966 transitivePeerDependencies: 1734 1967 - debug 1735 - dev: false 1736 - 1737 - /b4a@1.6.6: 1738 - resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==} 1739 1968 dev: false 1740 1969 1741 1970 /balanced-match@1.0.2: 1742 1971 resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 1743 1972 dev: false 1744 - 1745 - /bare-events@2.2.0: 1746 - resolution: {integrity: sha512-Yyyqff4PIFfSuthCZqLlPISTWHmnQxoPuAvkmgzsJEmG3CesdIv6Xweayl0JkCZJSB2yYIdJyEz97tpxNhgjbg==} 1747 - requiresBuild: true 1748 - dev: false 1749 - optional: true 1750 - 1751 - /bare-fs@2.1.5: 1752 - resolution: {integrity: sha512-5t0nlecX+N2uJqdxe9d18A98cp2u9BETelbjKpiVgQqzzmVNFYWEAjQHqS+2Khgto1vcwhik9cXucaj5ve2WWA==} 1753 - requiresBuild: true 1754 - dependencies: 1755 - bare-events: 2.2.0 1756 - bare-os: 2.2.0 1757 - bare-path: 2.1.0 1758 - streamx: 2.16.1 1759 - dev: false 1760 - optional: true 1761 - 1762 - /bare-os@2.2.0: 1763 - resolution: {integrity: sha512-hD0rOPfYWOMpVirTACt4/nK8mC55La12K5fY1ij8HAdfQakD62M+H4o4tpfKzVGLgRDTuk3vjA4GqGXXCeFbag==} 1764 - requiresBuild: true 1765 - dev: false 1766 - optional: true 1767 - 1768 - /bare-path@2.1.0: 1769 - resolution: {integrity: sha512-DIIg7ts8bdRKwJRJrUMy/PICEaQZaPGZ26lsSx9MJSwIhSrcdHn7/C8W+XmnG/rKi6BaRcz+JO00CjZteybDtw==} 1770 - requiresBuild: true 1771 - dependencies: 1772 - bare-os: 2.2.0 1773 - dev: false 1774 - optional: true 1775 1973 1776 1974 /base64-js@1.5.1: 1777 1975 resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} ··· 2001 2199 engines: {node: '>= 0.6'} 2002 2200 dev: false 2003 2201 2004 - /cookie@0.6.0: 2005 - resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} 2202 + /cookie@0.7.2: 2203 + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} 2006 2204 engines: {node: '>= 0.6'} 2007 2205 dev: false 2008 2206 ··· 2097 2295 engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} 2098 2296 dev: false 2099 2297 2100 - /detect-libc@2.0.2: 2101 - resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} 2298 + /detect-libc@2.0.3: 2299 + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} 2102 2300 engines: {node: '>=8'} 2103 2301 dev: false 2104 2302 2105 - /disposable-email@0.2.3: 2106 - resolution: {integrity: sha512-gkBQQ5Res431ZXqLlAafrXHizG7/1FWmi8U2RTtriD78Vc10HhBUvdJun3R4eSF0KRIQQJs+wHlxjkED/Hr1EQ==} 2303 + /disposable-email-domains-js@1.5.0: 2304 + resolution: {integrity: sha512-L1cn+cZhKmxUwixH8n+n0HG+WbCz+LF4coyT6yMh930tpkD90ZWFx3A9dHIdFMVM745saaeNGYScIEstm3Y3yg==} 2107 2305 dev: false 2108 2306 2109 2307 /dom-serializer@1.4.1: ··· 2261 2459 vary: 1.1.2 2262 2460 transitivePeerDependencies: 2263 2461 - supports-color 2264 - dev: false 2265 - 2266 - /fast-fifo@1.3.2: 2267 - resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} 2268 2462 dev: false 2269 2463 2270 2464 /fast-printf@1.6.9: ··· 2583 2777 elliptic: 6.5.4 2584 2778 dev: false 2585 2779 2586 - /keygrip@1.1.0: 2587 - resolution: {integrity: sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==} 2588 - engines: {node: '>= 0.6'} 2589 - requiresBuild: true 2590 - dependencies: 2591 - tsscmp: 1.0.6 2592 - dev: false 2593 - 2594 2780 /kysely@0.22.0: 2595 2781 resolution: {integrity: sha512-ZE3qWtnqLOalodzfK5QUEcm7AEulhxsPNuKaGFsC3XiqO92vMLm+mAHk/NnbSIOtC4RmGm0nsv700i8KDp1gfQ==} 2596 2782 engines: {node: '>=14.0.0'} ··· 2609 2795 engines: {node: 14 || >=16.14} 2610 2796 dev: false 2611 2797 2612 - /lru-cache@6.0.0: 2613 - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 2614 - engines: {node: '>=10'} 2615 - dependencies: 2616 - yallist: 4.0.0 2617 - dev: false 2618 - 2619 2798 /media-typer@0.3.0: 2620 2799 resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} 2621 2800 engines: {node: '>= 0.6'} ··· 2714 2893 resolution: {integrity: sha512-uPEjtyh2tFEvWYt4Jw7McOD5FPcHkcxm/tHZc5PWaDB3JYq0rGFUbgaAK+CT5pYpQddBfsZVWI08OwoRfdfbcQ==} 2715 2894 engines: {node: '>=10'} 2716 2895 dependencies: 2717 - semver: 7.6.0 2718 - dev: false 2719 - 2720 - /node-addon-api@6.1.0: 2721 - resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} 2896 + semver: 7.6.3 2722 2897 dev: false 2723 2898 2724 2899 /node-gyp-build-optional-packages@5.1.1: ··· 2726 2901 hasBin: true 2727 2902 requiresBuild: true 2728 2903 dependencies: 2729 - detect-libc: 2.0.2 2904 + detect-libc: 2.0.3 2730 2905 dev: false 2731 2906 optional: true 2732 2907 ··· 2874 3049 engines: {node: '>=10'} 2875 3050 hasBin: true 2876 3051 dependencies: 2877 - detect-libc: 2.0.2 3052 + detect-libc: 2.0.3 2878 3053 expand-template: 2.0.3 2879 3054 github-from-package: 0.0.0 2880 3055 minimist: 1.2.8 ··· 2909 3084 resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} 2910 3085 dev: false 2911 3086 2912 - /psl@1.9.0: 2913 - resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} 2914 - dev: false 2915 - 2916 3087 /pump@3.0.0: 2917 3088 resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} 2918 3089 dependencies: ··· 2927 3098 side-channel: 1.0.5 2928 3099 dev: false 2929 3100 2930 - /queue-tick@1.0.1: 2931 - resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} 2932 - requiresBuild: true 2933 - dev: false 2934 - 2935 3101 /quick-format-unescaped@4.0.4: 2936 3102 resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} 2937 3103 dev: false ··· 3047 3213 resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} 3048 3214 dev: false 3049 3215 3050 - /semver@7.6.0: 3051 - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} 3216 + /semver@7.6.3: 3217 + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} 3052 3218 engines: {node: '>=10'} 3053 3219 hasBin: true 3054 - dependencies: 3055 - lru-cache: 6.0.0 3056 3220 dev: false 3057 3221 3058 3222 /send@0.18.0: ··· 3104 3268 resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} 3105 3269 dev: false 3106 3270 3107 - /sharp@0.32.6: 3108 - resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==} 3109 - engines: {node: '>=14.15.0'} 3271 + /sharp@0.33.5: 3272 + resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} 3273 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 3110 3274 requiresBuild: true 3111 3275 dependencies: 3112 3276 color: 4.2.3 3113 - detect-libc: 2.0.2 3114 - node-addon-api: 6.1.0 3115 - prebuild-install: 7.1.1 3116 - semver: 7.6.0 3117 - simple-get: 4.0.1 3118 - tar-fs: 3.0.5 3119 - tunnel-agent: 0.6.0 3277 + detect-libc: 2.0.3 3278 + semver: 7.6.3 3279 + optionalDependencies: 3280 + '@img/sharp-darwin-arm64': 0.33.5 3281 + '@img/sharp-darwin-x64': 0.33.5 3282 + '@img/sharp-libvips-darwin-arm64': 1.0.4 3283 + '@img/sharp-libvips-darwin-x64': 1.0.4 3284 + '@img/sharp-libvips-linux-arm': 1.0.5 3285 + '@img/sharp-libvips-linux-arm64': 1.0.4 3286 + '@img/sharp-libvips-linux-s390x': 1.0.4 3287 + '@img/sharp-libvips-linux-x64': 1.0.4 3288 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 3289 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 3290 + '@img/sharp-linux-arm': 0.33.5 3291 + '@img/sharp-linux-arm64': 0.33.5 3292 + '@img/sharp-linux-s390x': 0.33.5 3293 + '@img/sharp-linux-x64': 0.33.5 3294 + '@img/sharp-linuxmusl-arm64': 0.33.5 3295 + '@img/sharp-linuxmusl-x64': 0.33.5 3296 + '@img/sharp-wasm32': 0.33.5 3297 + '@img/sharp-win32-ia32': 0.33.5 3298 + '@img/sharp-win32-x64': 0.33.5 3120 3299 dev: false 3121 3300 3122 3301 /shebang-command@2.0.0: ··· 3196 3375 readable-stream: 3.6.2 3197 3376 dev: false 3198 3377 3199 - /streamx@2.16.1: 3200 - resolution: {integrity: sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==} 3201 - dependencies: 3202 - fast-fifo: 1.3.2 3203 - queue-tick: 1.0.1 3204 - optionalDependencies: 3205 - bare-events: 2.2.0 3206 - dev: false 3207 - 3208 3378 /string-width@4.2.3: 3209 3379 resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 3210 3380 engines: {node: '>=8'} ··· 3269 3439 tar-stream: 2.2.0 3270 3440 dev: false 3271 3441 3272 - /tar-fs@3.0.5: 3273 - resolution: {integrity: sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg==} 3274 - dependencies: 3275 - pump: 3.0.0 3276 - tar-stream: 3.1.7 3277 - optionalDependencies: 3278 - bare-fs: 2.1.5 3279 - bare-path: 2.1.0 3280 - dev: false 3281 - 3282 3442 /tar-stream@2.2.0: 3283 3443 resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} 3284 3444 engines: {node: '>=6'} ··· 3288 3448 fs-constants: 1.0.0 3289 3449 inherits: 2.0.4 3290 3450 readable-stream: 3.6.2 3291 - dev: false 3292 - 3293 - /tar-stream@3.1.7: 3294 - resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} 3295 - dependencies: 3296 - b4a: 1.6.6 3297 - fast-fifo: 1.3.2 3298 - streamx: 2.16.1 3299 3451 dev: false 3300 3452 3301 3453 /thread-stream@2.7.0: ··· 3328 3480 3329 3481 /tslib@2.6.2: 3330 3482 resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} 3331 - dev: false 3332 - 3333 - /tsscmp@1.0.6: 3334 - resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} 3335 - engines: {node: '>=0.6.x'} 3336 - requiresBuild: true 3337 3483 dev: false 3338 3484 3339 3485 /tunnel-agent@0.6.0: ··· 3457 3603 optional: true 3458 3604 utf-8-validate: 3459 3605 optional: true 3460 - dev: false 3461 - 3462 - /yallist@4.0.0: 3463 - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 3464 3606 dev: false 3465 3607 3466 3608 /zod@3.23.8: