+1
-1
.github/workflows/build-and-push-ghcr.yaml
+1
-1
.github/workflows/build-and-push-ghcr.yaml
+7
-6
ACCOUNT_MIGRATION.md
+7
-6
ACCOUNT_MIGRATION.md
···
5
6
Therefore, we do not recommend migrating your primary account yet. And we specifically recommend _against_ migrating your main account if you do not understand how PLC operations work.
7
8
-
As well, the Bluesky PDS is not currently accepting incoming migrations (it will in the future). Therefore this is currently a one-way street. If you migrate off of `bsky.social`, _you will not be able to return_. However, you will be able to migrate between other PDSs.
9
10

11
···
20
21
In order to create an account, you first need to prove to the new PDS that you're in control of the DID that you're attempting to register as.
22
23
-
To do so, you need a JWT signed with the signing key associated with your DID. You can obtain this through calling `com.atproto.server.getServiceAuth` from your old PDS. If you're old PDS is not willing to provide the authentication token, you will need to update your DID document to point to a signing key that you possess in order to mint an authentication token yourself.
24
25
With this JWT set as a Bearer token, you can then create an account on the new PDS by calling `com.atproto.server.createAccount`. You'll need to fulfill any challenges that the new PDS requires - such as an invite code.
26
27
-
After creating an account, you'll have a signing key on the new PDS and an empty repository. You're account will be in a "deactivated" state such that it is not usable yet.
28
29
### Migrating data
30
31
Now that you have an account on the new PDS, you can start migrating data into it. After creating your account, you will have received an access token for the new PDS and it will be required for all incoming data.
32
33
-
First, you can grab your entire repository in the from of a [CAR file](https://ipld.io/specs/transport/car/carv1/) by calling `com.atproto.sync.getRepo`. You can then upload those exact bytes to your new PDS through `com.atproto.repo.importRepo`. The new PDS will parse the CAR file, index all blocks and records, and sign a new commit for the repository.
34
35
Next, you'll need to upload all relevant blobs. These can be discovered by calling `com.atproto.sync.listBlobs` on your old PDS. For each blob, you'll need to download the contents through `com.atproto.sync.getBlob` and upload them to your new PDS through `com.atproto.repo.uploadBlob`.
36
···
69
70
The below Typescript code gives an example of how this account migration flow may function. Please note that it is for documentation purposes only and can not be run exactly as is as there is an out-of-band step where you need to get a confirmation token from your email.
71
72
-
It does also not handle some of the more advanced steps such as verifying a full import, looking for missing blobs, adding your own recovery key, or validating the PLC operation itself.
73
74
```ts
75
import AtpAgent from '@atproto/api'
···
107
108
const serviceJwtRes = await oldAgent.com.atproto.server.getServiceAuth({
109
aud: newServerDid,
110
})
111
const serviceJwt = serviceJwtRes.data.token
112
···
200
await oldAgent.com.atproto.server.deactivateAccount({})
201
}
202
203
-
```
···
5
6
Therefore, we do not recommend migrating your primary account yet. And we specifically recommend _against_ migrating your main account if you do not understand how PLC operations work.
7
8
+
Also, the Bluesky PDS is not currently accepting incoming migrations (it will in the future). Therefore this is currently a one-way street. If you migrate off of `bsky.social`, _you will not be able to return_. However, you will be able to migrate between other PDSs.
9
10

11
···
20
21
In order to create an account, you first need to prove to the new PDS that you're in control of the DID that you're attempting to register as.
22
23
+
To do so, you need a JWT signed with the signing key associated with your DID. You can obtain this through calling `com.atproto.server.getServiceAuth` from your old PDS. If your old PDS is not willing to provide the authentication token, you will need to update your DID document to point to a signing key that you possess in order to mint an authentication token yourself.
24
25
With this JWT set as a Bearer token, you can then create an account on the new PDS by calling `com.atproto.server.createAccount`. You'll need to fulfill any challenges that the new PDS requires - such as an invite code.
26
27
+
After creating an account, you'll have a signing key on the new PDS and an empty repository. Your account will be in a "deactivated" state such that it is not usable yet.
28
29
### Migrating data
30
31
Now that you have an account on the new PDS, you can start migrating data into it. After creating your account, you will have received an access token for the new PDS and it will be required for all incoming data.
32
33
+
First, you can grab your entire repository in the form of a [CAR file](https://ipld.io/specs/transport/car/carv1/) by calling `com.atproto.sync.getRepo`. You can then upload those exact bytes to your new PDS through `com.atproto.repo.importRepo`. The new PDS will parse the CAR file, index all blocks and records, and sign a new commit for the repository.
34
35
Next, you'll need to upload all relevant blobs. These can be discovered by calling `com.atproto.sync.listBlobs` on your old PDS. For each blob, you'll need to download the contents through `com.atproto.sync.getBlob` and upload them to your new PDS through `com.atproto.repo.uploadBlob`.
36
···
69
70
The below Typescript code gives an example of how this account migration flow may function. Please note that it is for documentation purposes only and can not be run exactly as is as there is an out-of-band step where you need to get a confirmation token from your email.
71
72
+
It also does not handle some of the more advanced steps such as verifying a full import, looking for missing blobs, adding your own recovery key, or validating the PLC operation itself.
73
74
```ts
75
import AtpAgent from '@atproto/api'
···
107
108
const serviceJwtRes = await oldAgent.com.atproto.server.getServiceAuth({
109
aud: newServerDid,
110
+
lxm: 'com.atproto.server.createAccount',
111
})
112
const serviceJwt = serviceJwtRes.data.token
113
···
201
await oldAgent.com.atproto.server.deactivateAccount({})
202
}
203
204
+
```
+2
-1
Dockerfile
+2
-1
Dockerfile
···
1
FROM node:20.11-alpine3.18 as build
2
3
+
RUN corepack enable
4
5
# Move files into the image and install
6
WORKDIR /app
7
COPY ./service ./
8
+
RUN corepack prepare --activate
9
RUN pnpm install --production --frozen-lockfile > /dev/null
10
11
# Uses assets from build stage to reduce build size
+68
-23
README.md
+68
-23
README.md
···
1
# PDS
2
3
-
Welcome to the repository for the official Bluesky PDS (Personal Data Server). This repository includes container images and documentation designed to assist technical people with self-hosting a Bluesky PDS.
4
5
-
Head over to the [AT Protocol PDS Admins Discord](https://discord.gg/UWS6FFdhMe) to get started!
6
7
## Table of Contents
8
···
15
* [What is AT Protocol?](#what-is-at-protocol)
16
* [Where is the code?](#where-is-the-code)
17
* [What is the current status of federation?](#what-is-the-current-status-of-federation)
18
-
* [What should I know about running a PDS in the developer sandbox?](#what-should-i-know-about-running-a-pds-in-the-developer-sandbox)
19
- [Self-hosting PDS](#self-hosting-pds)
20
* [Preparation for self-hosting PDS](#preparation-for-self-hosting-pds)
21
* [Open your cloud firewall for HTTP and HTTPS](#open-your-cloud-firewall-for-http-and-https)
···
26
* [Creating an account using pdsadmin](#creating-an-account-using-pdsadmin)
27
* [Creating an account using an invite code](#creating-an-account-using-an-invite-code)
28
* [Using the Bluesky app with your PDS](#using-the-bluesky-app-with-your-pds)
29
* [Updating your PDS](#updating-your-pds)
30
31
<!-- tocstop -->
···
46
47
### Where is the code?
48
49
-
* [TypeScript code](https://github.com/bluesky-social/atproto)
50
* [Go code](https://github.com/bluesky-social/indigo)
51
52
### What is the current status of federation?
53
54
-
As of Feb, 2024, the AT Protocol data service (PDS) is now open to federation for self-hosters!
55
56
โ
Federated domain handles (e.g. `@nytimes.com`)
57
···
61
62
โ
Federated app views (API service)
63
64
-
โ
Federated data for self-hosters (PDS hosting)
65
66
-
๐ง Federated moderation (labeling) (coming soon)
67
-
68
-
๐ง Federated data for large service providers (coming soon)
69
-
70
-
### What should I know about running a PDS in the developer sandbox?
71
-
72
-
Developers may now run self-hosted PDS hosts on the production network!
73
-
74
-
Though it is still recommended to run experiments in the developer sandbox network.
75
-
76
-
Read the [SANDBOX.md](https://github.com/bluesky-social/pds/blob/main/SANDBOX.md) for an overview of the sandbox network.
77
78
## Self-hosting PDS
79
80
Self-hosting a Bluesky PDS means running your own Personal Data Server that is capable of federating with the wider Bluesky social network.
81
-
82
-
> [!IMPORTANT]
83
-
> Initially to join the network you'll need to join the [AT Protocol PDS Admins Discord](https://discord.gg/UWS6FFdhMe) and register the hostname of your PDS. We recommend doing so before bringing your PDS online. In the future, this registration check will not be required.
84
85
### Preparation for self-hosting PDS
86
···
165
166
### Verifying that your PDS is online and accessible
167
168
-
You can check if your server is online and healthy by requesting the healthcheck endpoint.
169
170
-
You can visit `https://example.com/xrpc/_health` in your browser. You should see a JSON response with a version.
171
172
-
For example:
173
174
```
175
{"version":"0.2.2-beta.2"}
176
```
177
178
### Creating an account using pdsadmin
179
···
204
1. Enter the URL of your PDS (e.g. `https://example.com/`)
205
206
_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._
207
208
### Updating your PDS
209
···
1
# PDS
2
3
+
Welcome to the repository for the official Bluesky PDS (Personal Data Server). This repository includes container images and documentation designed to assist technical people with hosting a Bluesky PDS.
4
5
+
Head over to the [AT Protocol PDS Admins Discord](https://discord.gg/e7hpHxRfBP) to chat with other folks hosting instances and get important updates about the PDS distribution!
6
7
## Table of Contents
8
···
15
* [What is AT Protocol?](#what-is-at-protocol)
16
* [Where is the code?](#where-is-the-code)
17
* [What is the current status of federation?](#what-is-the-current-status-of-federation)
18
- [Self-hosting PDS](#self-hosting-pds)
19
* [Preparation for self-hosting PDS](#preparation-for-self-hosting-pds)
20
* [Open your cloud firewall for HTTP and HTTPS](#open-your-cloud-firewall-for-http-and-https)
···
25
* [Creating an account using pdsadmin](#creating-an-account-using-pdsadmin)
26
* [Creating an account using an invite code](#creating-an-account-using-an-invite-code)
27
* [Using the Bluesky app with your PDS](#using-the-bluesky-app-with-your-pds)
28
+
* [Setting up SMTP](#setting-up-smtp)
29
* [Updating your PDS](#updating-your-pds)
30
31
<!-- tocstop -->
···
46
47
### Where is the code?
48
49
+
* [TypeScript code](https://github.com/bluesky-social/atproto/tree/main/packages/pds)
50
* [Go code](https://github.com/bluesky-social/indigo)
51
52
### What is the current status of federation?
53
54
+
As of Spring 2024, the AT Protocol network is open to federation!
55
56
โ
Federated domain handles (e.g. `@nytimes.com`)
57
···
61
62
โ
Federated app views (API service)
63
64
+
โ
Federated data (PDS hosting)
65
66
+
โ
Federated moderation (labeling)
67
68
## Self-hosting PDS
69
70
Self-hosting a Bluesky PDS means running your own Personal Data Server that is capable of federating with the wider Bluesky social network.
71
72
### Preparation for self-hosting PDS
73
···
152
153
### Verifying that your PDS is online and accessible
154
155
+
> [!TIP]
156
+
> The most common problems with getting PDS content consumed in the live network are when folks substitute the provided Caddy configuration for nginx, apache, or similar reverse proxies. Getting TLS certificates, WebSockets, and virtual server names all correct can be tricky. We are not currently providing tech support for other configurations.
157
158
+
You can check if your server is online and healthy by requesting the healthcheck endpoint.
159
160
+
You can visit `https://example.com/xrpc/_health` in your browser. You should see a JSON response with a version, like:
161
162
```
163
{"version":"0.2.2-beta.2"}
164
```
165
+
166
+
You'll also need to check that WebSockets are working, for the rest of the network to pick up content from your PDS. You can test by installing a tool like `wsdump` and running a command like:
167
+
168
+
```bash
169
+
wsdump "wss://example.com/xrpc/com.atproto.sync.subscribeRepos?cursor=0"
170
+
```
171
+
172
+
Note that there will be no events output on the WebSocket until they are created in the PDS, so the above command may continue to run with no output if things are configured successfully.
173
174
### Creating an account using pdsadmin
175
···
200
1. Enter the URL of your PDS (e.g. `https://example.com/`)
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
+
```
252
253
### Updating your PDS
254
-168
SANDBOX.md
-168
SANDBOX.md
···
1
-
# Bluesky Developer Sandbox Guide
2
-
3
-
Welcome to the atproto federation developer sandbox!
4
-
5
-
This is a completely separate network from our production services that allows us to test out the federation architecture and wire protocol.
6
-
7
-
The federation sandbox environment is an area set up for exploration and testing of the technical components of the AT Protocol distributed social network. It is intended for developers and self-hosters to test out data availability in a federated environment.
8
-
9
-
To maintain a positive and productive developer experience, we've established this Code of Conduct that outlines our expectations and guidelines. This sandbox environment is initially meant to test the technical components of federation.
10
-
11
-
Given that this is a testing environment, we will be defederating from any instances that do not abide by these guidelines, or that cause unnecessary trouble, and will not be providing specific justifications for these decisions.
12
-
13
-
<!-- markdown-toc -i SANDBOX.md -->
14
-
15
-
<!-- toc -->
16
-
17
-
- [Guidelines that must be followed](#guidelines-that-must-be-followed)
18
-
* [Post responsibly](#post-responsibly)
19
-
* [Keep the emphasis on testing](#keep-the-emphasis-on-testing)
20
-
* [Do limit account creation](#do-limit-account-creation)
21
-
* [Donโt expect persistence or uptime](#dont-expect-persistence-or-uptime)
22
-
* [Don't advertise your service as being "Bluesky"](#dont-advertise-your-service-as-being-bluesky)
23
-
* [Do not mirror sandbox did:plcs to production](#do-not-mirror-sandbox-didplcs-to-production)
24
-
* [Status and Wipes](#status-and-wipes)
25
-
+ [๐ Beware of dragons!](#%F0%9F%90%89-beware-of-dragons)
26
-
+ [Routine wipes](#routine-wipes)
27
-
- [Getting started](#getting-started)
28
-
* [Auto-updates](#auto-updates)
29
-
* [Odds & Ends & Warnings & Reminders](#odds--ends--warnings--reminders)
30
-
- [Learn more about atproto federation](#learn-more-about-atproto-federation)
31
-
* [Network Services](#network-services)
32
-
+ [PLC](#plc)
33
-
+ [BGS](#bgs)
34
-
+ [Bluesky App View](#bluesky-app-view)
35
-
- [The PDS](#the-pds)
36
-
37
-
<!-- tocstop -->
38
-
39
-
# Guidelines that must be followed
40
-
41
-
Using the sandbox environment means you agree to adhere to our Guidelines. Please read the following carefully:
42
-
43
-
## Post responsibly
44
-
45
-
The sandbox environment is intended to test infrastructure, but user content may be created as part of this testing process. Content generation can be automated or manual.
46
-
47
-
Do not post content that requires active moderation or violates the [Bluesky Community Guidelines](https://bsky.social/about/support/community-guidelines).
48
-
49
-
## Keep the emphasis on testing
50
-
51
-
Weโre striving to maintain a sandbox environment that fosters learning and technical growth. We will defederate with instances that recruit users without making it clear that this is a test environment.
52
-
53
-
## Do limit account creation
54
-
55
-
We don't want any one server using a majority of the resources in the sandbox. To keep things balanced, to start, weโre only federating with Personal Data Servers (PDS) with up to 1000 accounts. However, we may change this if needed.
56
-
57
-
## Donโt expect persistence or uptime
58
-
59
-
We will routinely be wiping the data on our infrastructure. This is intended to reset the network state and to test sync protocols. Accounts and content should not be mirrored or migrated between the sandbox and real-world environments.
60
-
61
-
## Don't advertise your service as being "Bluesky"
62
-
63
-
This is a developer sandbox and is meant for technical users. Do not promote your service as being a way for non-technical users to use Bluesky.
64
-
65
-
## Do not mirror sandbox did:plcs to production
66
-
67
-
68
-
## Status and Wipes
69
-
70
-
### ๐ย Beware of dragons!
71
-
72
-
This hasnโt been production tested yet. It seems to work pretty well, but who knows whatโs lurking under the surface โ that's what this sandbox is for! Have patience with us as we prep for federation.
73
-
74
-
On that note, please give us feedback either in [Issues](https://github.com/bluesky-social/atproto/issues) (actual bugs) or [Discussions](https://github.com/bluesky-social/atproto/discussions) (higher-level questions/discussions) on the [atproto repo](https://github.com/bluesky-social/atproto).
75
-
76
-
### Routine wipes
77
-
78
-
As part of the sandbox, we will be doing routine wipes of all network data.
79
-
80
-
We expect to perform wipes on a weekly or bi-weekly basis, though we reserve the right to do a wipe at any point.
81
-
82
-
When we wipe data, we will be wiping it on all services (BGS, App View, PLC). We will also mark any existing DIDs as โinvalidโ & will refuse to index those accounts in the next epoch of the network to discourage users from attempting to โrolloverโ their accounts across wipes.
83
-
84
-
# Getting started
85
-
86
-
For complete instructions on getting your PDS set up, check out the [README](./README.md).
87
-
88
-
To access your account, youโll log in with the client of your choice in the exact same way that you log into production Bluesky, for instance the [Bluesky web client](https://app.bsky-sandbox.dev/). When you do so, please provide the url of *your PDS* as the service that you wish to log in to.
89
-
90
-
## Auto-updates
91
-
92
-
Weโve included Watchtower in the PDS distribution. Every day at midnight PST, this will check our GitHub container registry to see if there is a new version of the PDS container & update it on your service.
93
-
94
-
This will allow us to rapidly iterate on protocol changes, as weโll be able to push them out to the network on a daily basis.
95
-
96
-
When we do routine network wipes, we will be pushing out a database migration to participating PDS that wipes content and accounts.
97
-
98
-
You are within your rights to disable Watchtower auto-updates, but we strongly encourage their use and will not be providing support if you decide not to run the most up-to-date PDS distribution.
99
-
100
-
## Odds & Ends & Warnings & Reminders
101
-
102
-
๐งช Experiment & have fun!
103
-
104
-
๐คย Run [feed generators](https://github.com/bluesky-social/feed-generator). They should work the exact same way as production - be sure to adjust your env to listen to Sandbox BGS!
105
-
106
-
๐ Feel free to run your own AppView or BGS - although itโs a bit more involved & weโll be providing limited support for this.
107
-
108
-
โ๏ธ Because the atproto network is a distributed system, your PDS can no longer definitively read-after-write. Updates are generally processed pretty quickly, however this discrepancy may show in certain circumstances, such as updating a profile or replying to a thread. We're working on utilities to make this easier to handle.
109
-
110
-
โฑ๏ธ As a specific case of the above, because we use on-demand TLS with Caddy, your profile may not load at first - please be patient & it should load within 5-10s after account creation. Again, we'll be working to smooth over this.
111
-
112
-
๐คย Your PDS will provide your handle by default. Custom domain handles should work exactly the same in sandbox as they do on production Bluesky. Although you will not be able to re-use your handle from production Bluesky as you can only have one DID set per handle.
113
-
114
-
โ ๏ธ If you follow the self-hosted PDS setup instructions, youโll have private key material in your env file - be careful about sharing that!
115
-
116
-
๐ฃย This is a sandbox version of a **public broadcast protocol** - please do not share sensitive information.
117
-
118
-
๐คย Help each other out! Respond to issues & discussions, chat in [Matrix](https://matrix.to/#/%23bluesky-dev:matrix.org) or the community-run [Discord](https://discord.gg/3srmDsHSZJ), etc.
119
-
120
-
# Learn more about atproto federation
121
-
122
-
Check out the [high-level view of federation](https://bsky.social/about/blog/5-5-2023-federation-architecture).
123
-
124
-
Dive deeper with the [atproto docs](https://atproto.com/docs).
125
-
126
-
## Network Services
127
-
128
-
We are running three services: PLC, BGS, Bluesky "App View"
129
-
130
-
### PLC
131
-
132
-
**Hostname:** `plc.bsky-sandbox.dev`
133
-
134
-
**Code:** https://github.com/bluesky-social/did-method-plc
135
-
136
-
PLC is the default DID provider for the network. DIDs are the root of your identity in the network. Sandbox PLC functions exactly the same as production PLC, but it is run as a separate service with a separate dataset. The DID resolution client in the self-hosted PDS package is set up to talk the correct PLC service.
137
-
138
-
### BGS
139
-
140
-
**Hostname:** `bgs.bsky-sandbox.dev`
141
-
142
-
**Code:** https://github.com/bluesky-social/indigo/tree/main/bgs
143
-
144
-
BGS (Big Graph Service) is the firehose for the entire network. It collates data from PDSs & rebroadcasts them out on one giant websocket.
145
-
146
-
BGS has to find out about your server somehow, so when we do any sort of write, we ping BGS with `com.atproto.sync.requestCrawl` to notify it of new data. This is done automatically in the self-hosted PDS package.
147
-
148
-
If youโre familiar with the Bluesky production firehose, you can subscribe to the BGS firehose in the exact same manner, the interface & data should be identical
149
-
150
-
### Bluesky App View
151
-
152
-
**Hostname:** `api.bsky-sandbox.dev`
153
-
154
-
**Code:** https://github.com/bluesky-social/atproto/tree/main/packages/bsky
155
-
156
-
The Bluesky App View aggregates data from across the network to service the Bluesky microblogging application. It consumes the firehose from the BGS, processing it into serviceable views of the network such as feeds, post threads, and user profiles. It functions as a fairly traditional web service.
157
-
158
-
When you request a Bluesky-related view from your PDS (`getProfile` for instance), your PDS will actually proxy the request up to App View.
159
-
160
-
Feel free to experiment with running your own App View if you like!
161
-
162
-
# The PDS
163
-
164
-
The PDS (Personal Data Server) is where users host their social data such as posts, profiles, likes, and follows. The goal of the sandbox is to federate many PDS together, so we hope youโll run your own.
165
-
166
-
Weโre not actually running a Bluesky PDS in sandbox. You might see Bluesky team members' accounts in the sandbox environment, but those are self-hosted too.
167
-
168
-
The PDS that youโll be running is much of the same code that is running on the Bluesky production PDS. Notably, all of the in-pds-appview code has been torn out. You can see the actual PDS code that youโre running on the [atproto/simplify-pds](https://github.com/bluesky-social/atproto/pull/1198) branch.
···
+1
installer.sh
+1
installer.sh
···
333
PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX=$(eval "${GENERATE_K256_PRIVATE_KEY_CMD}")
334
PDS_DATA_DIRECTORY=${PDS_DATADIR}
335
PDS_BLOBSTORE_DISK_LOCATION=${PDS_DATADIR}/blocks
336
PDS_DID_PLC_URL=${PDS_DID_PLC_URL}
337
PDS_BSKY_APP_VIEW_URL=${PDS_BSKY_APP_VIEW_URL}
338
PDS_BSKY_APP_VIEW_DID=${PDS_BSKY_APP_VIEW_DID}
···
333
PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX=$(eval "${GENERATE_K256_PRIVATE_KEY_CMD}")
334
PDS_DATA_DIRECTORY=${PDS_DATADIR}
335
PDS_BLOBSTORE_DISK_LOCATION=${PDS_DATADIR}/blocks
336
+
PDS_BLOB_UPLOAD_LIMIT=52428800
337
PDS_DID_PLC_URL=${PDS_DID_PLC_URL}
338
PDS_BSKY_APP_VIEW_URL=${PDS_BSKY_APP_VIEW_URL}
339
PDS_BSKY_APP_VIEW_DID=${PDS_BSKY_APP_VIEW_DID}
+2
-2
pdsadmin/help.sh
+2
-2
pdsadmin/help.sh
···
25
Takedown an account specified by DID.
26
e.g. pdsadmin account takedown did:plc:xyz123abc456
27
untakedown <DID>
28
-
Remove a takedown an account specified by DID.
29
e.g. pdsadmin account untakedown did:plc:xyz123abc456
30
-
password-reset <DID>
31
Reset a password for an account specified by DID.
32
e.g. pdsadmin account reset-password did:plc:xyz123abc456
33
···
25
Takedown an account specified by DID.
26
e.g. pdsadmin account takedown did:plc:xyz123abc456
27
untakedown <DID>
28
+
Remove a takedown from an account specified by DID.
29
e.g. pdsadmin account untakedown did:plc:xyz123abc456
30
+
reset-password <DID>
31
Reset a password for an account specified by DID.
32
e.g. pdsadmin account reset-password did:plc:xyz123abc456
33
+2
-1
service/package.json
+2
-1
service/package.json
+719
-328
service/pnpm-lock.yaml
+719
-328
service/pnpm-lock.yaml
···
6
7
dependencies:
8
'@atproto/pds':
9
-
specifier: 0.4.7
10
-
version: 0.4.7
11
12
packages:
13
14
-
/@atproto/api@0.11.1:
15
-
resolution: {integrity: sha512-U0kdo73e5xFXD4YGLrpviMHPaB/BT4s/22Z/V/geha5V1zjo6DjSC1LVLV1oYx3r/nVaaspPmumwzM0oorU50w==}
16
dependencies:
17
-
'@atproto/common-web': 0.2.4
18
-
'@atproto/lexicon': 0.3.3
19
-
'@atproto/syntax': 0.2.1
20
-
'@atproto/xrpc': 0.4.3
21
multiformats: 9.9.0
22
tlds: 1.250.0
23
-
typed-emitter: 2.1.0
24
-
zod: 3.22.4
25
dev: false
26
27
-
/@atproto/aws@0.1.9:
28
-
resolution: {integrity: sha512-Kz8beQZX9CvnyYZ03/dnx7LQaxC49abNeFCWVWY1tORUabZKforr3JkoPzMsR+06I1dNQaZhDewFMemg1ZnSqQ==}
29
dependencies:
30
-
'@atproto/common': 0.3.4
31
-
'@atproto/crypto': 0.3.0
32
-
'@atproto/repo': 0.3.9
33
'@aws-sdk/client-cloudfront': 3.515.0
34
'@aws-sdk/client-kms': 3.515.0
35
'@aws-sdk/client-s3': 3.515.0
36
'@aws-sdk/lib-storage': 3.515.0(@aws-sdk/client-s3@3.515.0)
37
-
'@noble/curves': 1.3.0
38
key-encoder: 2.0.3
39
multiformats: 9.9.0
40
uint8arrays: 3.0.0
41
transitivePeerDependencies:
42
- aws-crt
43
-
- debug
44
dev: false
45
46
-
/@atproto/common-web@0.2.4:
47
-
resolution: {integrity: sha512-6+DOhQcTklFmeiSkZRx6iFeqi4OFtGl4yEDGATk00q4tEcPoPvyOBtYHN6+G9lrfJIfx5RfmggamvXlJv1PxxA==}
48
dependencies:
49
graphemer: 1.4.0
50
multiformats: 9.9.0
51
uint8arrays: 3.0.0
52
-
zod: 3.22.4
53
dev: false
54
55
/@atproto/common@0.1.1:
···
57
dependencies:
58
'@ipld/dag-cbor': 7.0.3
59
multiformats: 9.9.0
60
-
pino: 8.19.0
61
-
zod: 3.22.4
62
dev: false
63
64
-
/@atproto/common@0.3.4:
65
-
resolution: {integrity: sha512-qjOHcyeHjGRJseYbdnl+0PViDlMRN9GR0/1ToGKAmXh0voz4LbBWU1FwtGF7CvTlbom9MZYhu21lF5pD5RqBwQ==}
66
dependencies:
67
-
'@atproto/common-web': 0.2.4
68
'@ipld/dag-cbor': 7.0.3
69
cbor-x: 1.5.8
70
iso-datestring-validator: 2.2.2
71
multiformats: 9.9.0
72
-
pino: 8.19.0
73
-
zod: 3.21.4
74
dev: false
75
76
/@atproto/crypto@0.1.0:
···
83
uint8arrays: 3.0.0
84
dev: false
85
86
-
/@atproto/crypto@0.3.0:
87
-
resolution: {integrity: sha512-bhcxRTL4fgRY2YX/St0x4o0oDUp18QIPD7ek+7v8UKA0HpsCGQYbo8w9d9hUvwwty5X5p00cYF2tbggUWaPy7A==}
88
dependencies:
89
-
'@noble/curves': 1.3.0
90
-
'@noble/hashes': 1.3.3
91
uint8arrays: 3.0.0
92
dev: false
93
94
-
/@atproto/identity@0.3.3:
95
-
resolution: {integrity: sha512-i5d3eOnXQAXuOrjdm4NcveIBJxdEywYJQ4d74/JOgy27bGdNVFgh9FdZAsOseQRkLv4r7mr0I0C6OlSA2BQIxA==}
96
dependencies:
97
-
'@atproto/common-web': 0.2.4
98
-
'@atproto/crypto': 0.3.0
99
-
axios: 0.27.2
100
-
transitivePeerDependencies:
101
-
- debug
102
dev: false
103
104
-
/@atproto/lexicon@0.3.3:
105
-
resolution: {integrity: sha512-6FOjdc3V05JKrtkhjfhHMS7f/4hMJOeHNtoE3Na7iFMpzBz0Lw5sw8kIFKY8pc8IG79qGcFgELyHLsljZYX+5A==}
106
dependencies:
107
-
'@atproto/common-web': 0.2.4
108
-
'@atproto/syntax': 0.2.1
109
iso-datestring-validator: 2.2.2
110
multiformats: 9.9.0
111
-
zod: 3.22.4
112
dev: false
113
114
-
/@atproto/pds@0.4.7:
115
-
resolution: {integrity: sha512-DxPkgA0O2cGXxrrsp4H8anRaeCQsalISwyS49nmH2EQuheSEcdZ4W3i/KggUd0t9CcZ6RK+wrIruYHViI/slVA==}
116
-
hasBin: true
117
dependencies:
118
-
'@atproto/api': 0.11.1
119
-
'@atproto/aws': 0.1.9
120
-
'@atproto/common': 0.3.4
121
-
'@atproto/crypto': 0.3.0
122
-
'@atproto/identity': 0.3.3
123
-
'@atproto/lexicon': 0.3.3
124
-
'@atproto/repo': 0.3.9
125
-
'@atproto/syntax': 0.2.1
126
-
'@atproto/xrpc': 0.4.3
127
-
'@atproto/xrpc-server': 0.4.4
128
'@did-plc/lib': 0.0.4
129
-
better-sqlite3: 9.4.1
130
bytes: 3.1.2
131
compression: 1.7.4
132
cors: 2.8.5
133
-
disposable-email: 0.2.3
134
express: 4.18.2
135
express-async-errors: 3.1.1(express@4.18.2)
136
file-type: 16.5.4
137
-
form-data: 4.0.0
138
handlebars: 4.7.8
139
-
http-errors: 2.0.0
140
http-terminator: 3.2.0
141
ioredis: 5.3.2
142
jose: 5.2.2
···
146
nodemailer: 6.9.9
147
nodemailer-html-to-text: 3.2.0
148
p-queue: 6.6.2
149
-
pg: 8.11.3
150
-
pino: 8.19.0
151
pino-http: 8.6.1
152
-
sharp: 0.32.6
153
typed-emitter: 2.1.0
154
uint8arrays: 3.0.0
155
-
zod: 3.22.4
156
transitivePeerDependencies:
157
- aws-crt
158
- bufferutil
159
- debug
160
-
- pg-native
161
- supports-color
162
- utf-8-validate
163
dev: false
164
165
-
/@atproto/repo@0.3.9:
166
-
resolution: {integrity: sha512-1TZvvIy0XQihdXPd9JALh04sGbOlr82zk9TxtxVmLX2jic6g5Pl48aB4R1TjvoRiVMAsQVh3VLRVbUN4o66eVg==}
167
dependencies:
168
-
'@atproto/common': 0.3.4
169
-
'@atproto/common-web': 0.2.4
170
-
'@atproto/crypto': 0.3.0
171
-
'@atproto/identity': 0.3.3
172
-
'@atproto/lexicon': 0.3.3
173
-
'@atproto/syntax': 0.2.1
174
-
'@ipld/car': 3.2.4
175
'@ipld/dag-cbor': 7.0.3
176
multiformats: 9.9.0
177
uint8arrays: 3.0.0
178
-
zod: 3.22.4
179
-
transitivePeerDependencies:
180
-
- debug
181
dev: false
182
183
-
/@atproto/syntax@0.2.1:
184
-
resolution: {integrity: sha512-ImOuiICtB5h78j90hAYOfTYzr5q5Wut0irNdELiogA3i74a8EXThe+j6Tj8snanYggrShbu5c6BDc1tVj477Yw==}
185
-
dependencies:
186
-
'@atproto/common-web': 0.2.4
187
dev: false
188
189
-
/@atproto/xrpc-server@0.4.4:
190
-
resolution: {integrity: sha512-R4uYvuia+tUM4wATLlKmMhr/+VEaSImhuAhD7jEHIjN3a+ZxDBE5PnW3PwWf68VBqw720JJ+jmsJMZO7v9y6FA==}
191
dependencies:
192
-
'@atproto/common': 0.3.4
193
-
'@atproto/crypto': 0.3.0
194
-
'@atproto/lexicon': 0.3.3
195
cbor-x: 1.5.8
196
express: 4.18.2
197
http-errors: 2.0.0
···
199
rate-limiter-flexible: 2.4.2
200
uint8arrays: 3.0.0
201
ws: 8.16.0
202
-
zod: 3.22.4
203
transitivePeerDependencies:
204
- bufferutil
205
- supports-color
206
- utf-8-validate
207
dev: false
208
209
-
/@atproto/xrpc@0.4.3:
210
-
resolution: {integrity: sha512-0rn3abHORG0T93mci8WW97Cpg2ClU2aCtTq5rxdCPRsl9P4tyP+8F4snbkrIaMbVO05Rd9D9gFwtWs5Z473pCQ==}
211
dependencies:
212
-
'@atproto/lexicon': 0.3.3
213
-
zod: 3.22.4
214
dev: false
215
216
/@aws-crypto/crc32@3.0.0:
···
1017
axios: 1.6.7
1018
multiformats: 9.9.0
1019
uint8arrays: 3.0.0
1020
-
zod: 3.22.4
1021
transitivePeerDependencies:
1022
- debug
1023
dev: false
1024
1025
-
/@ioredis/commands@1.2.0:
1026
-
resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==}
1027
dev: false
1028
1029
-
/@ipld/car@3.2.4:
1030
-
resolution: {integrity: sha512-rezKd+jk8AsTGOoJKqzfjLJ3WVft7NZNH95f0pfPbicROvzTyvHCNy567HzSUd6gRXZ9im29z5ZEv9Hw49jSYw==}
1031
dependencies:
1032
-
'@ipld/dag-cbor': 7.0.3
1033
-
multiformats: 9.9.0
1034
-
varint: 6.0.0
1035
dev: false
1036
1037
/@ipld/dag-cbor@7.0.3:
···
1041
multiformats: 9.9.0
1042
dev: false
1043
1044
-
/@noble/curves@1.3.0:
1045
-
resolution: {integrity: sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==}
1046
dependencies:
1047
-
'@noble/hashes': 1.3.3
1048
dev: false
1049
1050
-
/@noble/hashes@1.3.3:
1051
-
resolution: {integrity: sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==}
1052
-
engines: {node: '>= 16'}
1053
dev: false
1054
1055
/@noble/secp256k1@1.7.1:
1056
resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==}
1057
dev: false
1058
1059
/@smithy/abort-controller@2.1.1:
1060
resolution: {integrity: sha512-1+qdrUqLhaALYL0iOcN43EP6yAXXQ2wWZ6taf4S2pNGowmOc5gx+iMQv+E42JizNJjB0+gEadOXeV1Bf7JWL1Q==}
···
1548
negotiator: 0.6.3
1549
dev: false
1550
1551
/array-flatten@1.1.1:
1552
resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==}
1553
dev: false
···
1570
engines: {node: '>=8.0.0'}
1571
dev: false
1572
1573
-
/axios@0.27.2:
1574
-
resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==}
1575
-
dependencies:
1576
-
follow-redirects: 1.15.5
1577
-
form-data: 4.0.0
1578
-
transitivePeerDependencies:
1579
-
- debug
1580
dev: false
1581
1582
/axios@1.6.7:
···
1589
- debug
1590
dev: false
1591
1592
-
/b4a@1.6.6:
1593
-
resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==}
1594
-
dev: false
1595
-
1596
-
/bare-events@2.2.0:
1597
-
resolution: {integrity: sha512-Yyyqff4PIFfSuthCZqLlPISTWHmnQxoPuAvkmgzsJEmG3CesdIv6Xweayl0JkCZJSB2yYIdJyEz97tpxNhgjbg==}
1598
-
requiresBuild: true
1599
-
dev: false
1600
-
optional: true
1601
-
1602
-
/bare-fs@2.1.5:
1603
-
resolution: {integrity: sha512-5t0nlecX+N2uJqdxe9d18A98cp2u9BETelbjKpiVgQqzzmVNFYWEAjQHqS+2Khgto1vcwhik9cXucaj5ve2WWA==}
1604
-
requiresBuild: true
1605
-
dependencies:
1606
-
bare-events: 2.2.0
1607
-
bare-os: 2.2.0
1608
-
bare-path: 2.1.0
1609
-
streamx: 2.16.1
1610
dev: false
1611
-
optional: true
1612
-
1613
-
/bare-os@2.2.0:
1614
-
resolution: {integrity: sha512-hD0rOPfYWOMpVirTACt4/nK8mC55La12K5fY1ij8HAdfQakD62M+H4o4tpfKzVGLgRDTuk3vjA4GqGXXCeFbag==}
1615
-
requiresBuild: true
1616
-
dev: false
1617
-
optional: true
1618
-
1619
-
/bare-path@2.1.0:
1620
-
resolution: {integrity: sha512-DIIg7ts8bdRKwJRJrUMy/PICEaQZaPGZ26lsSx9MJSwIhSrcdHn7/C8W+XmnG/rKi6BaRcz+JO00CjZteybDtw==}
1621
-
requiresBuild: true
1622
-
dependencies:
1623
-
bare-os: 2.2.0
1624
-
dev: false
1625
-
optional: true
1626
1627
/base64-js@1.5.1:
1628
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
1629
dev: false
1630
1631
-
/better-sqlite3@9.4.1:
1632
-
resolution: {integrity: sha512-QpqiQeMI4WkE+dQ68zTMX5OzlPGc7lXIDP1iKUt4Omt9PdaVgzKYxHIJRIzt1E+RUBQoFmkip/IbvzyrxehAIg==}
1633
requiresBuild: true
1634
dependencies:
1635
bindings: 1.5.0
···
1681
1682
/boolean@3.2.0:
1683
resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==}
1684
dev: false
1685
1686
/bowser@2.11.0:
1687
resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==}
1688
dev: false
1689
1690
-
/brorand@1.1.0:
1691
-
resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==}
1692
dev: false
1693
1694
-
/buffer-writer@2.0.0:
1695
-
resolution: {integrity: sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==}
1696
-
engines: {node: '>=4'}
1697
dev: false
1698
1699
/buffer@5.6.0:
···
1850
engines: {node: '>= 0.6'}
1851
dev: false
1852
1853
/cors@2.8.5:
1854
resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==}
1855
engines: {node: '>= 0.10'}
1856
dependencies:
1857
object-assign: 4.1.1
1858
vary: 1.1.2
1859
dev: false
1860
1861
/debug@2.6.9:
···
1932
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
1933
dev: false
1934
1935
-
/detect-libc@2.0.2:
1936
-
resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==}
1937
engines: {node: '>=8'}
1938
dev: false
1939
1940
-
/disposable-email@0.2.3:
1941
-
resolution: {integrity: sha512-gkBQQ5Res431ZXqLlAafrXHizG7/1FWmi8U2RTtriD78Vc10HhBUvdJun3R4eSF0KRIQQJs+wHlxjkED/Hr1EQ==}
1942
dev: false
1943
1944
/dom-serializer@1.4.1:
···
1968
domhandler: 4.3.1
1969
dev: false
1970
1971
/ee-first@1.1.1:
1972
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
1973
dev: false
···
1982
inherits: 2.0.4
1983
minimalistic-assert: 1.0.1
1984
minimalistic-crypto-utils: 1.0.1
1985
dev: false
1986
1987
/encodeurl@1.0.2:
···
2086
- supports-color
2087
dev: false
2088
2089
-
/fast-fifo@1.3.2:
2090
-
resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==}
2091
-
dev: false
2092
-
2093
/fast-printf@1.6.9:
2094
resolution: {integrity: sha512-FChq8hbz65WMj4rstcQsFB0O7Cy++nmbNfLYnD9cYv2cRn8EG6k/MGn9kO/tjO66t09DLDugj3yL+V2o6Qftrg==}
2095
engines: {node: '>=10.0'}
···
2147
optional: true
2148
dev: false
2149
2150
/form-data@4.0.0:
2151
resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
2152
engines: {node: '>= 6'}
···
2192
2193
/github-from-package@0.0.0:
2194
resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==}
2195
dev: false
2196
2197
/gopd@1.0.1:
···
2342
engines: {node: '>= 0.10'}
2343
dev: false
2344
2345
/is-arrayish@0.3.2:
2346
resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
2347
dev: false
2348
2349
/iso-datestring-validator@2.2.2:
2350
resolution: {integrity: sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA==}
2351
dev: false
2352
2353
/jose@5.2.2:
···
2376
resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==}
2377
dev: false
2378
2379
-
/lru-cache@6.0.0:
2380
-
resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
2381
-
engines: {node: '>=10'}
2382
-
dependencies:
2383
-
yallist: 4.0.0
2384
dev: false
2385
2386
/media-typer@0.3.0:
···
2428
resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==}
2429
dev: false
2430
2431
/minimist@1.2.8:
2432
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
2433
dev: false
2434
2435
/mkdirp-classic@0.5.3:
···
2469
resolution: {integrity: sha512-uPEjtyh2tFEvWYt4Jw7McOD5FPcHkcxm/tHZc5PWaDB3JYq0rGFUbgaAK+CT5pYpQddBfsZVWI08OwoRfdfbcQ==}
2470
engines: {node: '>=10'}
2471
dependencies:
2472
-
semver: 7.6.0
2473
-
dev: false
2474
-
2475
-
/node-addon-api@6.1.0:
2476
-
resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==}
2477
dev: false
2478
2479
/node-gyp-build-optional-packages@5.1.1:
···
2481
hasBin: true
2482
requiresBuild: true
2483
dependencies:
2484
-
detect-libc: 2.0.2
2485
dev: false
2486
optional: true
2487
···
2560
p-timeout: 3.2.0
2561
dev: false
2562
2563
-
/packet-reader@1.0.0:
2564
-
resolution: {integrity: sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==}
2565
-
dev: false
2566
-
2567
/parseurl@1.3.3:
2568
resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
2569
engines: {node: '>= 0.8'}
2570
dev: false
2571
2572
-
/path-to-regexp@0.1.7:
2573
-
resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==}
2574
-
dev: false
2575
-
2576
-
/peek-readable@4.1.0:
2577
-
resolution: {integrity: sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==}
2578
engines: {node: '>=8'}
2579
dev: false
2580
2581
-
/pg-cloudflare@1.1.1:
2582
-
resolution: {integrity: sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==}
2583
-
requiresBuild: true
2584
-
dev: false
2585
-
optional: true
2586
-
2587
-
/pg-connection-string@2.6.2:
2588
-
resolution: {integrity: sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==}
2589
-
dev: false
2590
-
2591
-
/pg-int8@1.0.1:
2592
-
resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==}
2593
-
engines: {node: '>=4.0.0'}
2594
-
dev: false
2595
-
2596
-
/pg-pool@3.6.1(pg@8.11.3):
2597
-
resolution: {integrity: sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==}
2598
-
peerDependencies:
2599
-
pg: '>=8.0'
2600
dependencies:
2601
-
pg: 8.11.3
2602
-
dev: false
2603
-
2604
-
/pg-protocol@1.6.0:
2605
-
resolution: {integrity: sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==}
2606
dev: false
2607
2608
-
/pg-types@2.2.0:
2609
-
resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==}
2610
-
engines: {node: '>=4'}
2611
-
dependencies:
2612
-
pg-int8: 1.0.1
2613
-
postgres-array: 2.0.0
2614
-
postgres-bytea: 1.0.0
2615
-
postgres-date: 1.0.7
2616
-
postgres-interval: 1.2.0
2617
-
dev: false
2618
-
2619
-
/pg@8.11.3:
2620
-
resolution: {integrity: sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==}
2621
-
engines: {node: '>= 8.0.0'}
2622
-
peerDependencies:
2623
-
pg-native: '>=3.0.1'
2624
-
peerDependenciesMeta:
2625
-
pg-native:
2626
-
optional: true
2627
-
dependencies:
2628
-
buffer-writer: 2.0.0
2629
-
packet-reader: 1.0.0
2630
-
pg-connection-string: 2.6.2
2631
-
pg-pool: 3.6.1(pg@8.11.3)
2632
-
pg-protocol: 1.6.0
2633
-
pg-types: 2.2.0
2634
-
pgpass: 1.0.5
2635
-
optionalDependencies:
2636
-
pg-cloudflare: 1.1.1
2637
dev: false
2638
2639
-
/pgpass@1.0.5:
2640
-
resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==}
2641
-
dependencies:
2642
-
split2: 4.2.0
2643
dev: false
2644
2645
-
/pino-abstract-transport@1.1.0:
2646
-
resolution: {integrity: sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==}
2647
dependencies:
2648
readable-stream: 4.5.2
2649
split2: 4.2.0
···
2653
resolution: {integrity: sha512-J0hiJgUExtBXP2BjrK4VB305tHXS31sCmWJ9XJo2wPkLHa1NFPuW4V9wjG27PAc2fmBCigiNhQKpvrx+kntBPA==}
2654
dependencies:
2655
get-caller-file: 2.0.5
2656
-
pino: 8.19.0
2657
pino-std-serializers: 6.2.2
2658
process-warning: 3.0.0
2659
dev: false
···
2662
resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==}
2663
dev: false
2664
2665
-
/pino@8.19.0:
2666
-
resolution: {integrity: sha512-oswmokxkav9bADfJ2ifrvfHUwad6MLp73Uat0IkQWY3iAw5xTRoznXbXksZs8oaOUMpmhVWD+PZogNzllWpJaA==}
2667
hasBin: true
2668
dependencies:
2669
atomic-sleep: 1.0.0
2670
fast-redact: 3.3.0
2671
on-exit-leak-free: 2.1.2
2672
-
pino-abstract-transport: 1.1.0
2673
pino-std-serializers: 6.2.2
2674
process-warning: 3.0.0
2675
quick-format-unescaped: 4.0.4
2676
real-require: 0.2.0
2677
safe-stable-stringify: 2.4.3
2678
sonic-boom: 3.8.0
2679
-
thread-stream: 2.4.1
2680
-
dev: false
2681
-
2682
-
/postgres-array@2.0.0:
2683
-
resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==}
2684
-
engines: {node: '>=4'}
2685
-
dev: false
2686
-
2687
-
/postgres-bytea@1.0.0:
2688
-
resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==}
2689
-
engines: {node: '>=0.10.0'}
2690
-
dev: false
2691
-
2692
-
/postgres-date@1.0.7:
2693
-
resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==}
2694
-
engines: {node: '>=0.10.0'}
2695
-
dev: false
2696
-
2697
-
/postgres-interval@1.2.0:
2698
-
resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==}
2699
-
engines: {node: '>=0.10.0'}
2700
-
dependencies:
2701
-
xtend: 4.0.2
2702
dev: false
2703
2704
/prebuild-install@7.1.1:
···
2706
engines: {node: '>=10'}
2707
hasBin: true
2708
dependencies:
2709
-
detect-libc: 2.0.2
2710
expand-template: 2.0.3
2711
github-from-package: 0.0.0
2712
minimist: 1.2.8
···
2753
engines: {node: '>=0.6'}
2754
dependencies:
2755
side-channel: 1.0.5
2756
-
dev: false
2757
-
2758
-
/queue-tick@1.0.1:
2759
-
resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==}
2760
-
requiresBuild: true
2761
dev: false
2762
2763
/quick-format-unescaped@4.0.4:
···
2875
resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==}
2876
dev: false
2877
2878
-
/semver@7.6.0:
2879
-
resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==}
2880
engines: {node: '>=10'}
2881
hasBin: true
2882
-
dependencies:
2883
-
lru-cache: 6.0.0
2884
dev: false
2885
2886
/send@0.18.0:
···
2932
resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
2933
dev: false
2934
2935
-
/sharp@0.32.6:
2936
-
resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==}
2937
-
engines: {node: '>=14.15.0'}
2938
requiresBuild: true
2939
dependencies:
2940
color: 4.2.3
2941
-
detect-libc: 2.0.2
2942
-
node-addon-api: 6.1.0
2943
-
prebuild-install: 7.1.1
2944
-
semver: 7.6.0
2945
-
simple-get: 4.0.1
2946
-
tar-fs: 3.0.5
2947
-
tunnel-agent: 0.6.0
2948
dev: false
2949
2950
/side-channel@1.0.5:
···
2955
es-errors: 1.3.0
2956
get-intrinsic: 1.2.4
2957
object-inspect: 1.13.1
2958
dev: false
2959
2960
/simple-concat@1.0.1:
···
3007
readable-stream: 3.6.2
3008
dev: false
3009
3010
-
/streamx@2.16.1:
3011
-
resolution: {integrity: sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==}
3012
dependencies:
3013
-
fast-fifo: 1.3.2
3014
-
queue-tick: 1.0.1
3015
-
optionalDependencies:
3016
-
bare-events: 2.2.0
3017
dev: false
3018
3019
/string_decoder@1.3.0:
3020
resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
3021
dependencies:
3022
safe-buffer: 5.2.1
3023
dev: false
3024
3025
/strip-json-comments@2.0.1:
···
3048
tar-stream: 2.2.0
3049
dev: false
3050
3051
-
/tar-fs@3.0.5:
3052
-
resolution: {integrity: sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg==}
3053
-
dependencies:
3054
-
pump: 3.0.0
3055
-
tar-stream: 3.1.7
3056
-
optionalDependencies:
3057
-
bare-fs: 2.1.5
3058
-
bare-path: 2.1.0
3059
-
dev: false
3060
-
3061
/tar-stream@2.2.0:
3062
resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==}
3063
engines: {node: '>=6'}
···
3069
readable-stream: 3.6.2
3070
dev: false
3071
3072
-
/tar-stream@3.1.7:
3073
-
resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==}
3074
-
dependencies:
3075
-
b4a: 1.6.6
3076
-
fast-fifo: 1.3.2
3077
-
streamx: 2.16.1
3078
-
dev: false
3079
-
3080
-
/thread-stream@2.4.1:
3081
-
resolution: {integrity: sha512-d/Ex2iWd1whipbT681JmTINKw0ZwOUBZm7+Gjs64DHuX34mmw8vJL2bFAaNacaW72zYiTJxSHi5abUuOi5nsfg==}
3082
dependencies:
3083
real-require: 0.2.0
3084
dev: false
···
3152
resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
3153
dev: false
3154
3155
/unpipe@1.0.0:
3156
resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
3157
engines: {node: '>= 0.8'}
···
3180
engines: {node: '>= 0.8'}
3181
dev: false
3182
3183
/wordwrap@1.0.0:
3184
resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==}
3185
dev: false
3186
3187
/wrappy@1.0.2:
3188
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
3189
dev: false
···
3201
optional: true
3202
dev: false
3203
3204
-
/xtend@4.0.2:
3205
-
resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
3206
-
engines: {node: '>=0.4'}
3207
-
dev: false
3208
-
3209
-
/yallist@4.0.0:
3210
-
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
3211
-
dev: false
3212
-
3213
-
/zod@3.21.4:
3214
-
resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==}
3215
-
dev: false
3216
-
3217
-
/zod@3.22.4:
3218
-
resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==}
3219
dev: false
···
6
7
dependencies:
8
'@atproto/pds':
9
+
specifier: 0.4.166
10
+
version: 0.4.166
11
12
packages:
13
14
+
/@atproto-labs/fetch-node@0.1.9:
15
+
resolution: {integrity: sha512-8sHDDXZEzQptLu8ddUU/8U+THS6dumgPynVX0/1PjUYd4S/FWyPcz6yMIiVChTfzKnZvYRRz47+qvOKhydrHQw==}
16
+
engines: {node: '>=18.7.0'}
17
+
dependencies:
18
+
'@atproto-labs/fetch': 0.2.3
19
+
'@atproto-labs/pipe': 0.1.1
20
+
ipaddr.js: 2.2.0
21
+
undici: 6.20.1
22
+
dev: false
23
+
24
+
/@atproto-labs/fetch@0.2.3:
25
+
resolution: {integrity: sha512-NZtbJOCbxKUFRFKMpamT38PUQMY0hX0p7TG5AEYOPhZKZEP7dHZ1K2s1aB8MdVH0qxmqX7nQleNrrvLf09Zfdw==}
26
+
dependencies:
27
+
'@atproto-labs/pipe': 0.1.1
28
+
dev: false
29
+
30
+
/@atproto-labs/pipe@0.1.1:
31
+
resolution: {integrity: sha512-hdNw2oUs2B6BN1lp+32pF7cp8EMKuIN5Qok2Vvv/aOpG/3tNSJ9YkvfI0k6Zd188LeDDYRUpYpxcoFIcGH/FNg==}
32
+
dev: false
33
+
34
+
/@atproto-labs/simple-store-memory@0.1.3:
35
+
resolution: {integrity: sha512-jkitT9+AtU+0b28DoN92iURLaCt/q/q4yX8q6V+9LSwYlUTqKoj/5NFKvF7x6EBuG+gpUdlcycbH7e60gjOhRQ==}
36
dependencies:
37
+
'@atproto-labs/simple-store': 0.2.0
38
+
lru-cache: 10.2.0
39
+
dev: false
40
+
41
+
/@atproto-labs/simple-store@0.2.0:
42
+
resolution: {integrity: sha512-0bRbAlI8Ayh03wRwncAMEAyUKtZ+AuTS1jgPrfym1WVOAOiottI/ZmgccqLl6w5MbxVcClNQF7WYGKvGwGoIhA==}
43
+
dev: false
44
+
45
+
/@atproto-labs/xrpc-utils@0.0.18:
46
+
resolution: {integrity: sha512-Cwrlx2JcLe0jxCK8b3GCT3HRGaH3yPhyyt+3n4JykJapCaGBKqa6FHGs9hK2Fx6lOyPF7TnV5qUPUsJ1qGEUVA==}
47
+
dependencies:
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
63
+
await-lock: 2.2.2
64
multiformats: 9.9.0
65
tlds: 1.250.0
66
+
zod: 3.23.8
67
dev: false
68
69
+
/@atproto/aws@0.2.25:
70
+
resolution: {integrity: sha512-LT4uuda2mjXz2WT4xo7g2aWmWKl+JWusGzscqQpOlD/RFGFXKDmUcVWLVPKY+9Pys2F7X6tyDlm2aUx+/dYdYA==}
71
+
engines: {node: '>=18.7.0'}
72
dependencies:
73
+
'@atproto/common': 0.4.11
74
+
'@atproto/crypto': 0.4.4
75
+
'@atproto/repo': 0.8.5
76
'@aws-sdk/client-cloudfront': 3.515.0
77
'@aws-sdk/client-kms': 3.515.0
78
'@aws-sdk/client-s3': 3.515.0
79
'@aws-sdk/lib-storage': 3.515.0(@aws-sdk/client-s3@3.515.0)
80
+
'@noble/curves': 1.8.1
81
key-encoder: 2.0.3
82
multiformats: 9.9.0
83
uint8arrays: 3.0.0
84
transitivePeerDependencies:
85
- aws-crt
86
dev: false
87
88
+
/@atproto/common-web@0.4.2:
89
+
resolution: {integrity: sha512-vrXwGNoFGogodjQvJDxAeP3QbGtawgZute2ed1XdRO0wMixLk3qewtikZm06H259QDJVu6voKC5mubml+WgQUw==}
90
dependencies:
91
graphemer: 1.4.0
92
multiformats: 9.9.0
93
uint8arrays: 3.0.0
94
+
zod: 3.23.8
95
dev: false
96
97
/@atproto/common@0.1.1:
···
99
dependencies:
100
'@ipld/dag-cbor': 7.0.3
101
multiformats: 9.9.0
102
+
pino: 8.21.0
103
+
zod: 3.23.8
104
dev: false
105
106
+
/@atproto/common@0.4.11:
107
+
resolution: {integrity: sha512-Knv0viYXNMfCdIE7jLUiWJKnnMfEwg+vz2epJQi8WOjqtqCFb3W/3Jn72ZiuovIfpdm13MaOiny6w2NErUQC6g==}
108
+
engines: {node: '>=18.7.0'}
109
dependencies:
110
+
'@atproto/common-web': 0.4.2
111
'@ipld/dag-cbor': 7.0.3
112
cbor-x: 1.5.8
113
iso-datestring-validator: 2.2.2
114
multiformats: 9.9.0
115
+
pino: 8.21.0
116
dev: false
117
118
/@atproto/crypto@0.1.0:
···
125
uint8arrays: 3.0.0
126
dev: false
127
128
+
/@atproto/crypto@0.4.4:
129
+
resolution: {integrity: sha512-Yq9+crJ7WQl7sxStVpHgie5Z51R05etaK9DLWYG/7bR5T4bhdcIgF6IfklLShtZwLYdVVj+K15s0BqW9a8PSDA==}
130
+
engines: {node: '>=18.7.0'}
131
dependencies:
132
+
'@noble/curves': 1.8.1
133
+
'@noble/hashes': 1.7.1
134
uint8arrays: 3.0.0
135
dev: false
136
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'}
146
+
dependencies:
147
+
'@atproto/common-web': 0.4.2
148
+
'@atproto/crypto': 0.4.4
149
+
dev: false
150
+
151
+
/@atproto/jwk-jose@0.1.9:
152
+
resolution: {integrity: sha512-HT9GcUe6htDxI5OSYXWdeS6QZ9lpuDDvJk508ppi8a48E/1f8eumoM0QhgbFRF9IKAnnFrtnZDOAvljQzFKwwQ==}
153
dependencies:
154
+
'@atproto/jwk': 0.4.0
155
+
jose: 5.2.2
156
dev: false
157
158
+
/@atproto/jwk@0.4.0:
159
+
resolution: {integrity: sha512-tvp4iZrzqEzKCeTOKz50/o6WdsZzOuWmWjF6On5QAp04fLwLpsFu2Hixgx/lA1KBO0O4sns7YSGcAqSSX6Rdog==}
160
dependencies:
161
+
multiformats: 9.9.0
162
+
zod: 3.23.8
163
+
dev: false
164
+
165
+
/@atproto/lexicon@0.4.12:
166
+
resolution: {integrity: sha512-fcEvEQ1GpQYF5igZ4IZjPWEoWVpsEF22L9RexxLS3ptfySXLflEyH384e7HITzO/73McDeaJx3lqHIuqn9ulnw==}
167
+
dependencies:
168
+
'@atproto/common-web': 0.4.2
169
+
'@atproto/syntax': 0.4.0
170
iso-datestring-validator: 2.2.2
171
multiformats: 9.9.0
172
+
zod: 3.23.8
173
+
dev: false
174
+
175
+
/@atproto/oauth-provider-api@0.2.0:
176
+
resolution: {integrity: sha512-u18VRCDuz5BloUQKbvTISjQk7CgpDI1hf3leoJ7ADOAo8oW71QZD0tsWDX81R2uB66mKZHptjGSSVxxqpZFipQ==}
177
+
dependencies:
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
215
+
'@hapi/accept': 6.0.3
216
+
'@hapi/address': 5.1.1
217
+
'@hapi/bourne': 3.0.0
218
+
'@hapi/content': 6.0.0
219
+
cookie: 0.7.2
220
+
disposable-email-domains-js: 1.5.0
221
+
forwarded: 0.2.0
222
+
http-errors: 2.0.0
223
+
ioredis: 5.3.2
224
+
jose: 5.2.2
225
+
zod: 3.23.8
226
+
transitivePeerDependencies:
227
+
- supports-color
228
+
dev: false
229
+
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==}
236
dependencies:
237
+
'@atproto/jwk': 0.4.0
238
+
zod: 3.23.8
239
+
dev: false
240
+
241
+
/@atproto/pds@0.4.166:
242
+
resolution: {integrity: sha512-LwLiLQNOZsZ4LgD4qmtWf3W5FJEaTA3Bi3Y1x79TXrBfcvcmIoNYBUE0WOLmDFfLyp44caODqS6HCLvqc11T7g==}
243
+
engines: {node: '>=18.7.0'}
244
+
dependencies:
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
259
'@did-plc/lib': 0.0.4
260
+
'@hapi/address': 5.1.1
261
+
better-sqlite3: 10.1.0
262
bytes: 3.1.2
263
compression: 1.7.4
264
cors: 2.8.5
265
+
disposable-email-domains-js: 1.5.0
266
express: 4.18.2
267
express-async-errors: 3.1.1(express@4.18.2)
268
file-type: 16.5.4
269
+
glob: 10.3.12
270
handlebars: 4.7.8
271
http-terminator: 3.2.0
272
ioredis: 5.3.2
273
jose: 5.2.2
···
277
nodemailer: 6.9.9
278
nodemailer-html-to-text: 3.2.0
279
p-queue: 6.6.2
280
+
pino: 8.21.0
281
pino-http: 8.6.1
282
+
sharp: 0.33.5
283
typed-emitter: 2.1.0
284
uint8arrays: 3.0.0
285
+
undici: 6.20.1
286
+
zod: 3.23.8
287
transitivePeerDependencies:
288
- aws-crt
289
- bufferutil
290
- debug
291
- supports-color
292
- utf-8-validate
293
dev: false
294
295
+
/@atproto/repo@0.8.5:
296
+
resolution: {integrity: sha512-QZ4UWBWDyPMXgPhktmaRYRyCXIw7lIEAyGtaFy7UmCPpJ5TtFKw3GhGrEiNz/fY3/6lrkdDj44/Tzkud/eP/VQ==}
297
+
engines: {node: '>=18.7.0'}
298
dependencies:
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
303
'@ipld/dag-cbor': 7.0.3
304
multiformats: 9.9.0
305
uint8arrays: 3.0.0
306
+
varint: 6.0.0
307
+
zod: 3.23.8
308
dev: false
309
310
+
/@atproto/syntax@0.4.0:
311
+
resolution: {integrity: sha512-b9y5ceHS8YKOfP3mdKmwAx5yVj9294UN7FG2XzP6V5aKUdFazEYRnR9m5n5ZQFKa3GNvz7de9guZCJ/sUTcOAA==}
312
dev: false
313
314
+
/@atproto/xrpc-server@0.9.1:
315
+
resolution: {integrity: sha512-AJfxsKrZgKL/5362Rc0oUEjlgpDCmY/soeyLHHjid8J6clbErAdJVCuFwW4T40aHGFY1J13a29ucwbSfOROx6w==}
316
+
engines: {node: '>=18.7.0'}
317
dependencies:
318
+
'@atproto/common': 0.4.11
319
+
'@atproto/crypto': 0.4.4
320
+
'@atproto/lexicon': 0.4.12
321
+
'@atproto/xrpc': 0.7.1
322
cbor-x: 1.5.8
323
express: 4.18.2
324
http-errors: 2.0.0
···
326
rate-limiter-flexible: 2.4.2
327
uint8arrays: 3.0.0
328
ws: 8.16.0
329
+
zod: 3.23.8
330
transitivePeerDependencies:
331
- bufferutil
332
- supports-color
333
- utf-8-validate
334
dev: false
335
336
+
/@atproto/xrpc@0.7.1:
337
+
resolution: {integrity: sha512-ANHEzlskYlMEdH18m+Itp3a8d0pEJao2qoDybDoMupTnoeNkya4VKIaOgAi6ERQnqatBBZyn9asW+7rJmSt/8g==}
338
dependencies:
339
+
'@atproto/lexicon': 0.4.12
340
+
zod: 3.23.8
341
dev: false
342
343
/@aws-crypto/crc32@3.0.0:
···
1144
axios: 1.6.7
1145
multiformats: 9.9.0
1146
uint8arrays: 3.0.0
1147
+
zod: 3.23.8
1148
transitivePeerDependencies:
1149
- debug
1150
dev: false
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
+
1160
+
/@hapi/accept@6.0.3:
1161
+
resolution: {integrity: sha512-p72f9k56EuF0n3MwlBNThyVE5PXX40g+aQh+C/xbKrfzahM2Oispv3AXmOIU51t3j77zay1qrX7IIziZXspMlw==}
1162
+
dependencies:
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:
1171
+
'@hapi/hoek': 11.0.4
1172
+
dev: false
1173
+
1174
+
/@hapi/boom@10.0.1:
1175
+
resolution: {integrity: sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==}
1176
+
dependencies:
1177
+
'@hapi/hoek': 11.0.4
1178
+
dev: false
1179
+
1180
+
/@hapi/bourne@3.0.0:
1181
+
resolution: {integrity: sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==}
1182
+
dev: false
1183
+
1184
+
/@hapi/content@6.0.0:
1185
+
resolution: {integrity: sha512-CEhs7j+H0iQffKfe5Htdak5LBOz/Qc8TRh51cF+BFv0qnuph3Em4pjGVzJMkI2gfTDdlJKWJISGWS1rK34POGA==}
1186
+
dependencies:
1187
+
'@hapi/boom': 10.0.1
1188
+
dev: false
1189
+
1190
+
/@hapi/hoek@11.0.4:
1191
+
resolution: {integrity: sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==}
1192
+
dev: false
1193
+
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
1202
+
dev: false
1203
+
optional: true
1204
+
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
1351
dependencies:
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==}
1376
dev: false
1377
1378
/@ipld/dag-cbor@7.0.3:
···
1382
multiformats: 9.9.0
1383
dev: false
1384
1385
+
/@isaacs/cliui@8.0.2:
1386
+
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
1387
+
engines: {node: '>=12'}
1388
+
dependencies:
1389
+
string-width: 5.1.2
1390
+
string-width-cjs: /string-width@4.2.3
1391
+
strip-ansi: 7.1.0
1392
+
strip-ansi-cjs: /strip-ansi@6.0.1
1393
+
wrap-ansi: 8.1.0
1394
+
wrap-ansi-cjs: /wrap-ansi@7.0.0
1395
+
dev: false
1396
+
1397
+
/@noble/curves@1.8.1:
1398
+
resolution: {integrity: sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==}
1399
+
engines: {node: ^14.21.3 || >=16}
1400
dependencies:
1401
+
'@noble/hashes': 1.7.1
1402
dev: false
1403
1404
+
/@noble/hashes@1.7.1:
1405
+
resolution: {integrity: sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==}
1406
+
engines: {node: ^14.21.3 || >=16}
1407
dev: false
1408
1409
/@noble/secp256k1@1.7.1:
1410
resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==}
1411
dev: false
1412
+
1413
+
/@pkgjs/parseargs@0.11.0:
1414
+
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
1415
+
engines: {node: '>=14'}
1416
+
requiresBuild: true
1417
+
dev: false
1418
+
optional: true
1419
1420
/@smithy/abort-controller@2.1.1:
1421
resolution: {integrity: sha512-1+qdrUqLhaALYL0iOcN43EP6yAXXQ2wWZ6taf4S2pNGowmOc5gx+iMQv+E42JizNJjB0+gEadOXeV1Bf7JWL1Q==}
···
1909
negotiator: 0.6.3
1910
dev: false
1911
1912
+
/ansi-regex@5.0.1:
1913
+
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
1914
+
engines: {node: '>=8'}
1915
+
dev: false
1916
+
1917
+
/ansi-regex@6.0.1:
1918
+
resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
1919
+
engines: {node: '>=12'}
1920
+
dev: false
1921
+
1922
+
/ansi-styles@4.3.0:
1923
+
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
1924
+
engines: {node: '>=8'}
1925
+
dependencies:
1926
+
color-convert: 2.0.1
1927
+
dev: false
1928
+
1929
+
/ansi-styles@6.2.1:
1930
+
resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
1931
+
engines: {node: '>=12'}
1932
+
dev: false
1933
+
1934
/array-flatten@1.1.1:
1935
resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==}
1936
dev: false
···
1953
engines: {node: '>=8.0.0'}
1954
dev: false
1955
1956
+
/await-lock@2.2.2:
1957
+
resolution: {integrity: sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==}
1958
dev: false
1959
1960
/axios@1.6.7:
···
1967
- debug
1968
dev: false
1969
1970
+
/balanced-match@1.0.2:
1971
+
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
1972
dev: false
1973
1974
/base64-js@1.5.1:
1975
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
1976
dev: false
1977
1978
+
/better-sqlite3@10.1.0:
1979
+
resolution: {integrity: sha512-hqpHJaCfKEZFaAWdMh6crdzRWyzQzfP6Ih8TYI0vFn01a6ZTDSbJIMXN+6AMBaBOh99DzUy8l3PsV9R3qnJDng==}
1980
requiresBuild: true
1981
dependencies:
1982
bindings: 1.5.0
···
2028
2029
/boolean@3.2.0:
2030
resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==}
2031
+
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
2032
dev: false
2033
2034
/bowser@2.11.0:
2035
resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==}
2036
dev: false
2037
2038
+
/brace-expansion@2.0.1:
2039
+
resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
2040
+
dependencies:
2041
+
balanced-match: 1.0.2
2042
dev: false
2043
2044
+
/brorand@1.1.0:
2045
+
resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==}
2046
dev: false
2047
2048
/buffer@5.6.0:
···
2199
engines: {node: '>= 0.6'}
2200
dev: false
2201
2202
+
/cookie@0.7.2:
2203
+
resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==}
2204
+
engines: {node: '>= 0.6'}
2205
+
dev: false
2206
+
2207
/cors@2.8.5:
2208
resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==}
2209
engines: {node: '>= 0.10'}
2210
dependencies:
2211
object-assign: 4.1.1
2212
vary: 1.1.2
2213
+
dev: false
2214
+
2215
+
/cross-spawn@7.0.3:
2216
+
resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
2217
+
engines: {node: '>= 8'}
2218
+
dependencies:
2219
+
path-key: 3.1.1
2220
+
shebang-command: 2.0.0
2221
+
which: 2.0.2
2222
dev: false
2223
2224
/debug@2.6.9:
···
2295
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
2296
dev: false
2297
2298
+
/detect-libc@2.0.3:
2299
+
resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==}
2300
engines: {node: '>=8'}
2301
dev: false
2302
2303
+
/disposable-email-domains-js@1.5.0:
2304
+
resolution: {integrity: sha512-L1cn+cZhKmxUwixH8n+n0HG+WbCz+LF4coyT6yMh930tpkD90ZWFx3A9dHIdFMVM745saaeNGYScIEstm3Y3yg==}
2305
dev: false
2306
2307
/dom-serializer@1.4.1:
···
2331
domhandler: 4.3.1
2332
dev: false
2333
2334
+
/eastasianwidth@0.2.0:
2335
+
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
2336
+
dev: false
2337
+
2338
/ee-first@1.1.1:
2339
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
2340
dev: false
···
2349
inherits: 2.0.4
2350
minimalistic-assert: 1.0.1
2351
minimalistic-crypto-utils: 1.0.1
2352
+
dev: false
2353
+
2354
+
/emoji-regex@8.0.0:
2355
+
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
2356
+
dev: false
2357
+
2358
+
/emoji-regex@9.2.2:
2359
+
resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
2360
dev: false
2361
2362
/encodeurl@1.0.2:
···
2461
- supports-color
2462
dev: false
2463
2464
/fast-printf@1.6.9:
2465
resolution: {integrity: sha512-FChq8hbz65WMj4rstcQsFB0O7Cy++nmbNfLYnD9cYv2cRn8EG6k/MGn9kO/tjO66t09DLDugj3yL+V2o6Qftrg==}
2466
engines: {node: '>=10.0'}
···
2518
optional: true
2519
dev: false
2520
2521
+
/foreground-child@3.1.1:
2522
+
resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==}
2523
+
engines: {node: '>=14'}
2524
+
dependencies:
2525
+
cross-spawn: 7.0.3
2526
+
signal-exit: 4.1.0
2527
+
dev: false
2528
+
2529
/form-data@4.0.0:
2530
resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
2531
engines: {node: '>= 6'}
···
2571
2572
/github-from-package@0.0.0:
2573
resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==}
2574
+
dev: false
2575
+
2576
+
/glob@10.3.12:
2577
+
resolution: {integrity: sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==}
2578
+
engines: {node: '>=16 || 14 >=14.17'}
2579
+
hasBin: true
2580
+
dependencies:
2581
+
foreground-child: 3.1.1
2582
+
jackspeak: 2.3.6
2583
+
minimatch: 9.0.4
2584
+
minipass: 7.0.4
2585
+
path-scurry: 1.10.2
2586
dev: false
2587
2588
/gopd@1.0.1:
···
2733
engines: {node: '>= 0.10'}
2734
dev: false
2735
2736
+
/ipaddr.js@2.2.0:
2737
+
resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==}
2738
+
engines: {node: '>= 10'}
2739
+
dev: false
2740
+
2741
/is-arrayish@0.3.2:
2742
resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
2743
dev: false
2744
2745
+
/is-fullwidth-code-point@3.0.0:
2746
+
resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
2747
+
engines: {node: '>=8'}
2748
+
dev: false
2749
+
2750
+
/isexe@2.0.0:
2751
+
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
2752
+
dev: false
2753
+
2754
/iso-datestring-validator@2.2.2:
2755
resolution: {integrity: sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA==}
2756
+
dev: false
2757
+
2758
+
/jackspeak@2.3.6:
2759
+
resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==}
2760
+
engines: {node: '>=14'}
2761
+
dependencies:
2762
+
'@isaacs/cliui': 8.0.2
2763
+
optionalDependencies:
2764
+
'@pkgjs/parseargs': 0.11.0
2765
dev: false
2766
2767
/jose@5.2.2:
···
2790
resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==}
2791
dev: false
2792
2793
+
/lru-cache@10.2.0:
2794
+
resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==}
2795
+
engines: {node: 14 || >=16.14}
2796
dev: false
2797
2798
/media-typer@0.3.0:
···
2840
resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==}
2841
dev: false
2842
2843
+
/minimatch@9.0.4:
2844
+
resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==}
2845
+
engines: {node: '>=16 || 14 >=14.17'}
2846
+
dependencies:
2847
+
brace-expansion: 2.0.1
2848
+
dev: false
2849
+
2850
/minimist@1.2.8:
2851
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
2852
+
dev: false
2853
+
2854
+
/minipass@7.0.4:
2855
+
resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==}
2856
+
engines: {node: '>=16 || 14 >=14.17'}
2857
dev: false
2858
2859
/mkdirp-classic@0.5.3:
···
2893
resolution: {integrity: sha512-uPEjtyh2tFEvWYt4Jw7McOD5FPcHkcxm/tHZc5PWaDB3JYq0rGFUbgaAK+CT5pYpQddBfsZVWI08OwoRfdfbcQ==}
2894
engines: {node: '>=10'}
2895
dependencies:
2896
+
semver: 7.6.3
2897
dev: false
2898
2899
/node-gyp-build-optional-packages@5.1.1:
···
2901
hasBin: true
2902
requiresBuild: true
2903
dependencies:
2904
+
detect-libc: 2.0.3
2905
dev: false
2906
optional: true
2907
···
2980
p-timeout: 3.2.0
2981
dev: false
2982
2983
/parseurl@1.3.3:
2984
resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
2985
engines: {node: '>= 0.8'}
2986
dev: false
2987
2988
+
/path-key@3.1.1:
2989
+
resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
2990
engines: {node: '>=8'}
2991
dev: false
2992
2993
+
/path-scurry@1.10.2:
2994
+
resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==}
2995
+
engines: {node: '>=16 || 14 >=14.17'}
2996
dependencies:
2997
+
lru-cache: 10.2.0
2998
+
minipass: 7.0.4
2999
dev: false
3000
3001
+
/path-to-regexp@0.1.7:
3002
+
resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==}
3003
dev: false
3004
3005
+
/peek-readable@4.1.0:
3006
+
resolution: {integrity: sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==}
3007
+
engines: {node: '>=8'}
3008
dev: false
3009
3010
+
/pino-abstract-transport@1.2.0:
3011
+
resolution: {integrity: sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==}
3012
dependencies:
3013
readable-stream: 4.5.2
3014
split2: 4.2.0
···
3018
resolution: {integrity: sha512-J0hiJgUExtBXP2BjrK4VB305tHXS31sCmWJ9XJo2wPkLHa1NFPuW4V9wjG27PAc2fmBCigiNhQKpvrx+kntBPA==}
3019
dependencies:
3020
get-caller-file: 2.0.5
3021
+
pino: 8.21.0
3022
pino-std-serializers: 6.2.2
3023
process-warning: 3.0.0
3024
dev: false
···
3027
resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==}
3028
dev: false
3029
3030
+
/pino@8.21.0:
3031
+
resolution: {integrity: sha512-ip4qdzjkAyDDZklUaZkcRFb2iA118H9SgRh8yzTkSQK8HilsOJF7rSY8HoW5+I0M46AZgX/pxbprf2vvzQCE0Q==}
3032
hasBin: true
3033
dependencies:
3034
atomic-sleep: 1.0.0
3035
fast-redact: 3.3.0
3036
on-exit-leak-free: 2.1.2
3037
+
pino-abstract-transport: 1.2.0
3038
pino-std-serializers: 6.2.2
3039
process-warning: 3.0.0
3040
quick-format-unescaped: 4.0.4
3041
real-require: 0.2.0
3042
safe-stable-stringify: 2.4.3
3043
sonic-boom: 3.8.0
3044
+
thread-stream: 2.7.0
3045
dev: false
3046
3047
/prebuild-install@7.1.1:
···
3049
engines: {node: '>=10'}
3050
hasBin: true
3051
dependencies:
3052
+
detect-libc: 2.0.3
3053
expand-template: 2.0.3
3054
github-from-package: 0.0.0
3055
minimist: 1.2.8
···
3096
engines: {node: '>=0.6'}
3097
dependencies:
3098
side-channel: 1.0.5
3099
dev: false
3100
3101
/quick-format-unescaped@4.0.4:
···
3213
resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==}
3214
dev: false
3215
3216
+
/semver@7.6.3:
3217
+
resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==}
3218
engines: {node: '>=10'}
3219
hasBin: true
3220
dev: false
3221
3222
/send@0.18.0:
···
3268
resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
3269
dev: false
3270
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}
3274
requiresBuild: true
3275
dependencies:
3276
color: 4.2.3
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
3299
+
dev: false
3300
+
3301
+
/shebang-command@2.0.0:
3302
+
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
3303
+
engines: {node: '>=8'}
3304
+
dependencies:
3305
+
shebang-regex: 3.0.0
3306
+
dev: false
3307
+
3308
+
/shebang-regex@3.0.0:
3309
+
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
3310
+
engines: {node: '>=8'}
3311
dev: false
3312
3313
/side-channel@1.0.5:
···
3318
es-errors: 1.3.0
3319
get-intrinsic: 1.2.4
3320
object-inspect: 1.13.1
3321
+
dev: false
3322
+
3323
+
/signal-exit@4.1.0:
3324
+
resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
3325
+
engines: {node: '>=14'}
3326
dev: false
3327
3328
/simple-concat@1.0.1:
···
3375
readable-stream: 3.6.2
3376
dev: false
3377
3378
+
/string-width@4.2.3:
3379
+
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
3380
+
engines: {node: '>=8'}
3381
+
dependencies:
3382
+
emoji-regex: 8.0.0
3383
+
is-fullwidth-code-point: 3.0.0
3384
+
strip-ansi: 6.0.1
3385
+
dev: false
3386
+
3387
+
/string-width@5.1.2:
3388
+
resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
3389
+
engines: {node: '>=12'}
3390
dependencies:
3391
+
eastasianwidth: 0.2.0
3392
+
emoji-regex: 9.2.2
3393
+
strip-ansi: 7.1.0
3394
dev: false
3395
3396
/string_decoder@1.3.0:
3397
resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
3398
dependencies:
3399
safe-buffer: 5.2.1
3400
+
dev: false
3401
+
3402
+
/strip-ansi@6.0.1:
3403
+
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
3404
+
engines: {node: '>=8'}
3405
+
dependencies:
3406
+
ansi-regex: 5.0.1
3407
+
dev: false
3408
+
3409
+
/strip-ansi@7.1.0:
3410
+
resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
3411
+
engines: {node: '>=12'}
3412
+
dependencies:
3413
+
ansi-regex: 6.0.1
3414
dev: false
3415
3416
/strip-json-comments@2.0.1:
···
3439
tar-stream: 2.2.0
3440
dev: false
3441
3442
/tar-stream@2.2.0:
3443
resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==}
3444
engines: {node: '>=6'}
···
3450
readable-stream: 3.6.2
3451
dev: false
3452
3453
+
/thread-stream@2.7.0:
3454
+
resolution: {integrity: sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==}
3455
dependencies:
3456
real-require: 0.2.0
3457
dev: false
···
3525
resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
3526
dev: false
3527
3528
+
/undici@6.20.1:
3529
+
resolution: {integrity: sha512-AjQF1QsmqfJys+LXfGTNum+qw4S88CojRInG/6t31W/1fk6G59s92bnAvGz5Cmur+kQv2SURXEvvudLmbrE8QA==}
3530
+
engines: {node: '>=18.17'}
3531
+
dev: false
3532
+
3533
/unpipe@1.0.0:
3534
resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
3535
engines: {node: '>= 0.8'}
···
3558
engines: {node: '>= 0.8'}
3559
dev: false
3560
3561
+
/which@2.0.2:
3562
+
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
3563
+
engines: {node: '>= 8'}
3564
+
hasBin: true
3565
+
dependencies:
3566
+
isexe: 2.0.0
3567
+
dev: false
3568
+
3569
/wordwrap@1.0.0:
3570
resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==}
3571
dev: false
3572
3573
+
/wrap-ansi@7.0.0:
3574
+
resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
3575
+
engines: {node: '>=10'}
3576
+
dependencies:
3577
+
ansi-styles: 4.3.0
3578
+
string-width: 4.2.3
3579
+
strip-ansi: 6.0.1
3580
+
dev: false
3581
+
3582
+
/wrap-ansi@8.1.0:
3583
+
resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
3584
+
engines: {node: '>=12'}
3585
+
dependencies:
3586
+
ansi-styles: 6.2.1
3587
+
string-width: 5.1.2
3588
+
strip-ansi: 7.1.0
3589
+
dev: false
3590
+
3591
/wrappy@1.0.2:
3592
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
3593
dev: false
···
3605
optional: true
3606
dev: false
3607
3608
+
/zod@3.23.8:
3609
+
resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==}
3610
dev: false