Compare changes

Choose any two refs to compare.

+3
.env.example
···
+
ASTRO_DB_REMOTE_URL=file://local.db
+
# below is only needed if you have a hosted db
+
# ASTRO_DB_APP_TOKEN=""
+62 -12
README.md
···
- [Infrastructure](#infrastructure)
- [Notes](#notes)
- [Structure](#structure)
+
- [Contributing](#contributing)
+
- [Support](#support)
+
+
> [!WARNING]
+
> This is alpha software, there's no guarantee that this will work on your system. But if you'd like to try hacking at this, take a look at the [Contributing](#contributing) section once instructions are written up.
## Background
···
1. The client (the actual site that displays data)
2. The PDS (the server that stores user's data)
-
3. The AppView (the thing that grabs only relevant data)
+
3. The AppView (the thing that grabs only relevant data and serves as an API)
4. The Lexicon (the blueprint for data to be used in AppViews and clients)
... And probably more, and there's a lot of discussion around how user data ownership / censorship / etc gets handled on those layers.
···
Currently, I'm using these technologies:
- Astro
-
- Drizzle ORM
-
- Turso
-
- Unstorage
+
- Drizzle ORM (via Astro DB)
+
- Turso (LibSQL under the hood)
+
- Unstorage (via [@fujocoded/authproto](https://github.com/FujoWebDev/fujocoded-plugins/tree/main/astro-authproto))
Mainly because: 1, Astro is a really well-documented web framework that's pretty approachable as someone who used to handwrite HTML pages; 2, SQLite / LibSQL are (to my knowledge) fairly cheap databases to run; and 3, Unstorage is pretty dead simple for setting up auth sessions from scratch.
### Structure
-
#### `src/actions`
+
#### Database: `db`
+
+
This holds all the relevant database code. This also contains the structure and types for database tables.
+
+
#### Actions: `src/actions`
-
These hold actions that run every time a user wants to publish a new work or signs up for the archive.
+
These hold actions that run every time a user wants to publish a new work or signs up for the archive. Basically the backend functionality for this project.
-
#### `src/assets`
+
#### Assets: `src/assets`
This has images / libre font / `.css` files to be used stylistically throughout the site.
-
#### `src/components`
+
#### Components: `src/components`
These hold components that are reused throughout `src/pages`. Like PHP includes but in HTML and JavaScript (well, technically it's JSX).
-
#### `src/lib/db`
+
#### Pages: `src/pages`
-
This holds all the relevant database connecting code. This also contains the types for database tables.
+
These are the actual routes that are available to end-users. Under the pages are nested pages grouped under folders, namely:
+
+
##### Users: `src/pages/users`
+
+
These are pages where users can view all user profiles, find a specific user profile, or update their account settings.
-
#### `src/pages`
+
##### Works: `src/pages/works`
-
These are the actual pages where data, user interactions, etc happen. So this would be more HTML/CSS/JavaScript-oriented.
+
These only hold pages that are relevant to adding, editing, deleting, or viewing works.
+
+
## Contributing
+
+
The instructions may change in the future in case the development workflow changes. Please feel free to [report an issue](/issues) if you come across any during development or building.
+
+
### Prerequisites
+
+
- Git
+
- Node.js
+
- `v18.20.8` or `v20.3.0`, `v22.0.0` or higher. (`v19` and `v21` are not supported.)
+
- `npm` or similar package manager
+
+
> [!IMPORTANT]
+
> Running this with `deno` does not work. You'll get an "Unsupported key curve for this operation" error when running the project and testing OAuth. See [this issue](https://github.com/panva/jose/discussions/740).
+
+
### Instructions
+
+
1. Clone the repo to your system using the following command:
+
```bash
+
git clone https://github.com/haetae-bit/fanfic-atproto
+
```
+
2. Use whatever runtime you use to install packages:
+
```bash
+
npm install
+
```
+
3. To run the development server, use this command:
+
```bash
+
npm run dev
+
```
+
+
## Support
+
+
If you want to support me making making this, please feel free to donate a coffee.
+
+
<a href="https://buymeacoffee.com/haetae" target="_blank" referrerpolicy="no-referrer">
+
<img src="https://cdn.buymeacoffee.com/buttons/default-blue.png" alt="buy me a coffee" />
+
</a>
+112 -9
astro.config.mjs
···
import { defineConfig, fontProviders } from 'astro/config';
import node from '@astrojs/node';
import db from "@astrojs/db";
-
import fujocodedAuthproto from "@fujocoded/authproto";
+
import authproto from "@fujocoded/authproto";
+
import tailwindcss from "@tailwindcss/vite";
// https://astro.build/config
export default defineConfig({
···
}),
integrations: [
db(),
-
fujocodedAuthproto({
+
authproto({
applicationName: "fan archive",
applicationDomain: "localhost:4321",
-
// driver: {
-
// name: "astro:db",
-
// },
+
driver: {
+
name: "astro:db",
+
},
+
scopes: {
+
genericData: true,
+
},
})
],
+
vite: {
+
// @ts-ignore
+
plugins: [tailwindcss()],
+
},
experimental: {
fonts: [
{
provider: fontProviders.fontsource(),
name: "IBM Plex Serif",
-
cssVariable: "--junicode",
-
fallbacks: [ 'Charter', 'Bitstream Charter', 'Sitka Text', 'Cambria', 'Georgia', "serif"],
+
cssVariable: "--plex-serif",
+
},
+
{
+
provider: fontProviders.fontsource(),
+
name: "Libertinus Serif",
+
cssVariable: "--libertinus-serif",
+
},
+
{
+
provider: fontProviders.fontsource(),
+
name: "Noto Serif",
+
cssVariable: "--noto-serif",
+
},
+
{
+
provider: fontProviders.fontsource(),
+
name: "Lora",
+
cssVariable: "--lora",
+
},
+
{
+
provider: fontProviders.fontsource(),
+
name: "iA Writer Mono",
+
cssVariable: "--writer-mono",
+
},
+
{
+
provider: fontProviders.fontsource(),
+
name: "Intel One Mono",
+
cssVariable: "--intel-mono",
+
},
+
{
+
provider: fontProviders.fontsource(),
+
name: "Recursive",
+
cssVariable: "--recursive",
+
styles: ["oblique", "normal"],
+
weights: [300, 1000],
+
variationSettings: "'slnt' -15 0, 'CASL' 0 1, 'CRSV' 0 1, 'MONO' 0 1",
+
},
+
{
+
provider: fontProviders.fontsource(),
+
name: "iA Writer Quattro",
+
cssVariable: "--quattro",
+
},
+
{
+
provider: fontProviders.fontsource(),
+
name: "Sora",
+
cssVariable: "--sora",
+
},
+
{
+
provider: fontProviders.fontsource(),
+
name: "Readex Pro",
+
cssVariable: "--readex",
},
{
provider: fontProviders.fontsource(),
-
name: "Atkinson Hyperlegible",
+
name: "Atkinson Hyperlegible Next",
cssVariable: "--atkinson",
-
}
+
},
+
{
+
provider: "local",
+
name: "OpenDyslexic",
+
cssVariable: "--dyslexic",
+
variants: [
+
{
+
src: [
+
"./src/assets/fonts/opendyslexic/OpenDyslexic-Regular.otf",
+
"./src/assets/fonts/opendyslexic/OpenDyslexic-Regular.woff",
+
"./src/assets/fonts/opendyslexic/OpenDyslexic-Regular.woff2",
+
],
+
weight: 400,
+
style: "normal"
+
},
+
{
+
src: [
+
"./src/assets/fonts/opendyslexic/OpenDyslexic-Italic.otf",
+
"./src/assets/fonts/opendyslexic/OpenDyslexic-Italic.woff",
+
"./src/assets/fonts/opendyslexic/OpenDyslexic-Italic.woff2",
+
],
+
weight: 400,
+
style: "italic",
+
},
+
{
+
src: [
+
"./src/assets/fonts/opendyslexic/OpenDyslexic-Bold.otf",
+
"./src/assets/fonts/opendyslexic/OpenDyslexic-Bold.woff",
+
"./src/assets/fonts/opendyslexic/OpenDyslexic-Bold.woff2",
+
],
+
weight: 700,
+
style: "normal",
+
},
+
{
+
src: [
+
"./src/assets/fonts/opendyslexic/OpenDyslexic-Bold-Italic.otf",
+
"./src/assets/fonts/opendyslexic/OpenDyslexic-Bold-Italic.woff",
+
"./src/assets/fonts/opendyslexic/OpenDyslexic-Bold-Italic.woff2",
+
],
+
weight: 700,
+
style: "italic",
+
},
+
],
+
},
+
{
+
provider: fontProviders.fontsource(),
+
name: "Jacquard 12",
+
cssVariable: "--jacquard-12",
+
},
],
},
});
-885
bun.lock
···
-
{
-
"lockfileVersion": 1,
-
"workspaces": {
-
"": {
-
"name": "atproto-ao3",
-
"dependencies": {
-
"@astrojs/db": "^0.17.1",
-
"@astrojs/node": "^9.4.3",
-
"@fujocoded/authproto": "^0.0.4",
-
"astro": "^5.13.5",
-
},
-
},
-
},
-
"packages": {
-
"@astrojs/compiler": ["@astrojs/compiler@2.12.2", "", {}, "sha512-w2zfvhjNCkNMmMMOn5b0J8+OmUaBL1o40ipMvqcG6NRpdC+lKxmTi48DT8Xw0SzJ3AfmeFLB45zXZXtmbsjcgw=="],
-
-
"@astrojs/db": ["@astrojs/db@0.17.1", "", { "dependencies": { "@libsql/client": "^0.15.2", "deep-diff": "^1.0.2", "drizzle-orm": "^0.42.0", "kleur": "^4.1.5", "nanoid": "^5.1.5", "prompts": "^2.4.2", "yargs-parser": "^21.1.1", "zod": "^3.24.4" } }, "sha512-QL09xZf5Om8AshIlt+YhLDYf6M1QSzv+kfuljsPrhEXJ8U/tuKnbWs2M3wimFaLG3/fU0prFix8lWt7zU8ytfA=="],
-
-
"@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.7.2", "", {}, "sha512-KCkCqR3Goym79soqEtbtLzJfqhTWMyVaizUi35FLzgGSzBotSw8DB1qwsu7U96ihOJgYhDk2nVPz+3LnXPeX6g=="],
-
-
"@astrojs/markdown-remark": ["@astrojs/markdown-remark@6.3.6", "", { "dependencies": { "@astrojs/internal-helpers": "0.7.2", "@astrojs/prism": "3.3.0", "github-slugger": "^2.0.0", "hast-util-from-html": "^2.0.3", "hast-util-to-text": "^4.0.2", "import-meta-resolve": "^4.1.0", "js-yaml": "^4.1.0", "mdast-util-definitions": "^6.0.0", "rehype-raw": "^7.0.0", "rehype-stringify": "^10.0.1", "remark-gfm": "^4.0.1", "remark-parse": "^11.0.0", "remark-rehype": "^11.1.2", "remark-smartypants": "^3.0.2", "shiki": "^3.2.1", "smol-toml": "^1.3.4", "unified": "^11.0.5", "unist-util-remove-position": "^5.0.0", "unist-util-visit": "^5.0.0", "unist-util-visit-parents": "^6.0.1", "vfile": "^6.0.3" } }, "sha512-bwylYktCTsLMVoCOEHbn2GSUA3c5KT/qilekBKA3CBng0bo1TYjNZPr761vxumRk9kJGqTOtU+fgCAp5Vwokug=="],
-
-
"@astrojs/node": ["@astrojs/node@9.4.3", "", { "dependencies": { "@astrojs/internal-helpers": "0.7.2", "send": "^1.2.0", "server-destroy": "^1.0.1" }, "peerDependencies": { "astro": "^5.7.0" } }, "sha512-P9BQHY8wQU1y9obknXzxV5SS3EpdaRnuDuHKr3RFC7t+2AzcMXeVmMJprQGijnQ8VdijJ8aS7+12tx325TURMQ=="],
-
-
"@astrojs/prism": ["@astrojs/prism@3.3.0", "", { "dependencies": { "prismjs": "^1.30.0" } }, "sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ=="],
-
-
"@astrojs/telemetry": ["@astrojs/telemetry@3.3.0", "", { "dependencies": { "ci-info": "^4.2.0", "debug": "^4.4.0", "dlv": "^1.1.3", "dset": "^3.1.4", "is-docker": "^3.0.0", "is-wsl": "^3.1.0", "which-pm-runs": "^1.1.0" } }, "sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ=="],
-
-
"@atproto-labs/did-resolver": ["@atproto-labs/did-resolver@0.2.1", "", { "dependencies": { "@atproto-labs/fetch": "0.2.3", "@atproto-labs/pipe": "0.1.1", "@atproto-labs/simple-store": "0.3.0", "@atproto-labs/simple-store-memory": "0.1.4", "@atproto/did": "0.2.0", "zod": "^3.23.8" } }, "sha512-zSoHyqwwRYUtMNLW+RrWsImt1U5S47nJv5FfmAXTmon6wVKjxKD/PFrD1pg/4G6THqJmQHTs1Hj+54XVupYnvQ=="],
-
-
"@atproto-labs/fetch": ["@atproto-labs/fetch@0.2.3", "", { "dependencies": { "@atproto-labs/pipe": "0.1.1" } }, "sha512-NZtbJOCbxKUFRFKMpamT38PUQMY0hX0p7TG5AEYOPhZKZEP7dHZ1K2s1aB8MdVH0qxmqX7nQleNrrvLf09Zfdw=="],
-
-
"@atproto-labs/fetch-node": ["@atproto-labs/fetch-node@0.1.10", "", { "dependencies": { "@atproto-labs/fetch": "0.2.3", "@atproto-labs/pipe": "0.1.1", "ipaddr.js": "^2.1.0", "undici": "^6.14.1" } }, "sha512-o7hGaonA71A6p7O107VhM6UBUN/g9tTyYohMp1q0Kf6xQ4npnuZYRSHSf2g6reSfGQJ1GoFNjBObETTT1ge/jQ=="],
-
-
"@atproto-labs/handle-resolver": ["@atproto-labs/handle-resolver@0.3.1", "", { "dependencies": { "@atproto-labs/simple-store": "0.3.0", "@atproto-labs/simple-store-memory": "0.1.4", "@atproto/did": "0.2.0", "zod": "^3.23.8" } }, "sha512-mLZdMNvwomgnn9sffKO1/xr02ctgeiT0FUVw7JekbchTckub2RM7qMu8Rw1mC4bpCpW+i7DXDiOxpoajkppwYQ=="],
-
-
"@atproto-labs/handle-resolver-node": ["@atproto-labs/handle-resolver-node@0.1.19", "", { "dependencies": { "@atproto-labs/fetch-node": "0.1.10", "@atproto-labs/handle-resolver": "0.3.1", "@atproto/did": "0.2.0" } }, "sha512-nNVCfiKudvMYfDcWCa9koOMOpCYaC0wG4Uys5dZev99s/Nka7tRlIZIV+u+GWivnG9lqCupKATkoyCd6Per8Gw=="],
-
-
"@atproto-labs/identity-resolver": ["@atproto-labs/identity-resolver@0.3.1", "", { "dependencies": { "@atproto-labs/did-resolver": "0.2.1", "@atproto-labs/handle-resolver": "0.3.1" } }, "sha512-jCgotRRqPykPwh4gh0FBLOqeofv1G8OH/DZ5s88HWm7biUZeksZwDrEvL5TnqEFUpXT3O9Hcyp/XEpfCAplRoQ=="],
-
-
"@atproto-labs/pipe": ["@atproto-labs/pipe@0.1.1", "", {}, "sha512-hdNw2oUs2B6BN1lp+32pF7cp8EMKuIN5Qok2Vvv/aOpG/3tNSJ9YkvfI0k6Zd188LeDDYRUpYpxcoFIcGH/FNg=="],
-
-
"@atproto-labs/simple-store": ["@atproto-labs/simple-store@0.3.0", "", {}, "sha512-nOb6ONKBRJHRlukW1sVawUkBqReLlLx6hT35VS3imaNPwiXDxLnTK7lxw3Lrl9k5yugSBDQAkZAq3MPTEFSUBQ=="],
-
-
"@atproto-labs/simple-store-memory": ["@atproto-labs/simple-store-memory@0.1.4", "", { "dependencies": { "@atproto-labs/simple-store": "0.3.0", "lru-cache": "^10.2.0" } }, "sha512-3mKY4dP8I7yKPFj9VKpYyCRzGJOi5CEpOLPlRhoJyLmgs3J4RzDrjn323Oakjz2Aj2JzRU/AIvWRAZVhpYNJHw=="],
-
-
"@atproto/common-web": ["@atproto/common-web@0.4.2", "", { "dependencies": { "graphemer": "^1.4.0", "multiformats": "^9.9.0", "uint8arrays": "3.0.0", "zod": "^3.23.8" } }, "sha512-vrXwGNoFGogodjQvJDxAeP3QbGtawgZute2ed1XdRO0wMixLk3qewtikZm06H259QDJVu6voKC5mubml+WgQUw=="],
-
-
"@atproto/crypto": ["@atproto/crypto@0.4.4", "", { "dependencies": { "@noble/curves": "^1.7.0", "@noble/hashes": "^1.6.1", "uint8arrays": "3.0.0" } }, "sha512-Yq9+crJ7WQl7sxStVpHgie5Z51R05etaK9DLWYG/7bR5T4bhdcIgF6IfklLShtZwLYdVVj+K15s0BqW9a8PSDA=="],
-
-
"@atproto/did": ["@atproto/did@0.2.0", "", { "dependencies": { "zod": "^3.23.8" } }, "sha512-BskT39KYbwY1DUsWekkHh47xS+wvJpFq5F9acsicNfYniinyAMnNTzGKQEhnjQuG7K0qQItg/SnmC+y0tJXV7Q=="],
-
-
"@atproto/identity": ["@atproto/identity@0.4.8", "", { "dependencies": { "@atproto/common-web": "^0.4.2", "@atproto/crypto": "^0.4.4" } }, "sha512-Z0sLnJ87SeNdAifT+rqpgE1Rc3layMMW25gfWNo4u40RGuRODbdfAZlTwBSU2r+Vk45hU+iE+xeQspfednCEnA=="],
-
-
"@atproto/jwk": ["@atproto/jwk@0.5.0", "", { "dependencies": { "multiformats": "^9.9.0", "zod": "^3.23.8" } }, "sha512-Qi2NtEqhkG+uz3CKia4+H05WMV/z//dz3ESo5+cyBKrOnxVTJ5ZubMyltWjoYvy6v/jLhorXdDWcjn07yky7MQ=="],
-
-
"@atproto/jwk-jose": ["@atproto/jwk-jose@0.1.10", "", { "dependencies": { "@atproto/jwk": "0.5.0", "jose": "^5.2.0" } }, "sha512-Eiu/u4tZHz3IIhHZt0zneYEffSAO3Oqk/ToKwlu1TqKte6sjtPs/4uquSiAAGFYozqgo92JC/AQclWzzkHI5QQ=="],
-
-
"@atproto/jwk-webcrypto": ["@atproto/jwk-webcrypto@0.1.10", "", { "dependencies": { "@atproto/jwk": "0.5.0", "@atproto/jwk-jose": "0.1.10", "zod": "^3.23.8" } }, "sha512-JZsavs6JiSmw5rgcjkGDwzr1aCJGdybZOjVfYH+m9sXRU1BrUCA30uwNfZY7eFyWXyRAnCFiYiGVZgypXyKotw=="],
-
-
"@atproto/lexicon": ["@atproto/lexicon@0.5.0", "", { "dependencies": { "@atproto/common-web": "^0.4.2", "@atproto/syntax": "^0.4.1", "iso-datestring-validator": "^2.2.2", "multiformats": "^9.9.0", "zod": "^3.23.8" } }, "sha512-3aAzEAy9EAPs3CxznzMhEcqDd7m3vz1eze/ya9/ThbB7yleqJIhz5GY2q76tCCwHPhn5qDDMhlA9kKV6fG23gA=="],
-
-
"@atproto/oauth-client": ["@atproto/oauth-client@0.5.5", "", { "dependencies": { "@atproto-labs/did-resolver": "0.2.1", "@atproto-labs/fetch": "0.2.3", "@atproto-labs/handle-resolver": "0.3.1", "@atproto-labs/identity-resolver": "0.3.1", "@atproto-labs/simple-store": "0.3.0", "@atproto-labs/simple-store-memory": "0.1.4", "@atproto/did": "0.2.0", "@atproto/jwk": "0.5.0", "@atproto/oauth-types": "0.4.1", "@atproto/xrpc": "0.7.4", "multiformats": "^9.9.0", "zod": "^3.23.8" } }, "sha512-J0WK3vKVduxUuV+0XmXjCc0QJ1pUzKYZbrtFUF7wVzXnufSRsoaZqQP25cdzgADyUOwW7dttJBi06aOkY1mTKA=="],
-
-
"@atproto/oauth-client-node": ["@atproto/oauth-client-node@0.3.7", "", { "dependencies": { "@atproto-labs/did-resolver": "0.2.1", "@atproto-labs/handle-resolver-node": "0.1.19", "@atproto-labs/simple-store": "0.3.0", "@atproto/did": "0.2.0", "@atproto/jwk": "0.5.0", "@atproto/jwk-jose": "0.1.10", "@atproto/jwk-webcrypto": "0.1.10", "@atproto/oauth-client": "0.5.5", "@atproto/oauth-types": "0.4.1" } }, "sha512-6xtOSmYwB/nfT/YWI3Syrl1ywa0MFre8FmFeiGtvZ4jVSx5aJFR7plG3RaWtu2U9InAiK2Iz7RMPZTvDGkTiWg=="],
-
-
"@atproto/oauth-types": ["@atproto/oauth-types@0.4.1", "", { "dependencies": { "@atproto/jwk": "0.5.0", "zod": "^3.23.8" } }, "sha512-c5ixf2ZOzcltOu1fDBnO/tok6Wj7JDDK66+Z0q/+bAr8LXgOnxP7zQfJ+DD4gTkB+saTqsqWtVv8qvx/IEtm1g=="],
-
-
"@atproto/syntax": ["@atproto/syntax@0.4.1", "", {}, "sha512-CJdImtLAiFO+0z3BWTtxwk6aY5w4t8orHTMVJgkf++QRJWTxPbIFko/0hrkADB7n2EruDxDSeAgfUGehpH6ngw=="],
-
-
"@atproto/xrpc": ["@atproto/xrpc@0.7.4", "", { "dependencies": { "@atproto/lexicon": "^0.5.0", "zod": "^3.23.8" } }, "sha512-sDi68+QE1XHegTaNAndlX41Gp827pouSzSs8CyAwhrqZdsJUxE3P7TMtrA0z+zAjvxVyvzscRc0TsN/fGUGrhw=="],
-
-
"@babel/helper-string-parser": ["@babel/helper-string-parser@7.27.1", "", {}, "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA=="],
-
-
"@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.27.1", "", {}, "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow=="],
-
-
"@babel/parser": ["@babel/parser@7.28.3", "", { "dependencies": { "@babel/types": "^7.28.2" }, "bin": "./bin/babel-parser.js" }, "sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA=="],
-
-
"@babel/types": ["@babel/types@7.28.2", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1" } }, "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ=="],
-
-
"@capsizecss/unpack": ["@capsizecss/unpack@2.4.0", "", { "dependencies": { "blob-to-buffer": "^1.2.8", "cross-fetch": "^3.0.4", "fontkit": "^2.0.2" } }, "sha512-GrSU71meACqcmIUxPYOJvGKF0yryjN/L1aCuE9DViCTJI7bfkjgYDPD1zbNDcINJwSSP6UaBZY9GAbYDO7re0Q=="],
-
-
"@emnapi/runtime": ["@emnapi/runtime@1.5.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ=="],
-
-
"@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.9", "", { "os": "aix", "cpu": "ppc64" }, "sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA=="],
-
-
"@esbuild/android-arm": ["@esbuild/android-arm@0.25.9", "", { "os": "android", "cpu": "arm" }, "sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ=="],
-
-
"@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.9", "", { "os": "android", "cpu": "arm64" }, "sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg=="],
-
-
"@esbuild/android-x64": ["@esbuild/android-x64@0.25.9", "", { "os": "android", "cpu": "x64" }, "sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw=="],
-
-
"@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.9", "", { "os": "darwin", "cpu": "arm64" }, "sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg=="],
-
-
"@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.9", "", { "os": "darwin", "cpu": "x64" }, "sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ=="],
-
-
"@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.9", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q=="],
-
-
"@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.9", "", { "os": "freebsd", "cpu": "x64" }, "sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg=="],
-
-
"@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.9", "", { "os": "linux", "cpu": "arm" }, "sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw=="],
-
-
"@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.9", "", { "os": "linux", "cpu": "arm64" }, "sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw=="],
-
-
"@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.9", "", { "os": "linux", "cpu": "ia32" }, "sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A=="],
-
-
"@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.9", "", { "os": "linux", "cpu": "none" }, "sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ=="],
-
-
"@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.9", "", { "os": "linux", "cpu": "none" }, "sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA=="],
-
-
"@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.9", "", { "os": "linux", "cpu": "ppc64" }, "sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w=="],
-
-
"@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.9", "", { "os": "linux", "cpu": "none" }, "sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg=="],
-
-
"@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.9", "", { "os": "linux", "cpu": "s390x" }, "sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA=="],
-
-
"@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.9", "", { "os": "linux", "cpu": "x64" }, "sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg=="],
-
-
"@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.9", "", { "os": "none", "cpu": "arm64" }, "sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q=="],
-
-
"@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.9", "", { "os": "none", "cpu": "x64" }, "sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g=="],
-
-
"@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.9", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ=="],
-
-
"@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.9", "", { "os": "openbsd", "cpu": "x64" }, "sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA=="],
-
-
"@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.25.9", "", { "os": "none", "cpu": "arm64" }, "sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg=="],
-
-
"@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.9", "", { "os": "sunos", "cpu": "x64" }, "sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw=="],
-
-
"@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.9", "", { "os": "win32", "cpu": "arm64" }, "sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ=="],
-
-
"@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.9", "", { "os": "win32", "cpu": "ia32" }, "sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww=="],
-
-
"@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.9", "", { "os": "win32", "cpu": "x64" }, "sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ=="],
-
-
"@fujocoded/authproto": ["@fujocoded/authproto@0.0.4", "", { "dependencies": { "@astrojs/db": "^0.17.1", "@atproto/identity": "^0.4.8", "@atproto/oauth-client-node": "^0.3.3", "astro-integration-kit": "^0.19.0", "unstorage": "^1.16.1" }, "peerDependencies": { "astro": "^5.13.0" } }, "sha512-VoKfScLMaGLAOB6WKFsU7lEsCNvy98KW7MaPfqLKIbjg0MqWrbeyvCak4mGDjQUe96jm8DBMkd6b2W+T369PNA=="],
-
-
"@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.0.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ=="],
-
-
"@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.0.4" }, "os": "darwin", "cpu": "x64" }, "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q=="],
-
-
"@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.0.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg=="],
-
-
"@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.0.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ=="],
-
-
"@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.0.5", "", { "os": "linux", "cpu": "arm" }, "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g=="],
-
-
"@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.0.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA=="],
-
-
"@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.0.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA=="],
-
-
"@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.0.4", "", { "os": "linux", "cpu": "x64" }, "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw=="],
-
-
"@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.0.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA=="],
-
-
"@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.0.4", "", { "os": "linux", "cpu": "x64" }, "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw=="],
-
-
"@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.0.5" }, "os": "linux", "cpu": "arm" }, "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ=="],
-
-
"@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.0.4" }, "os": "linux", "cpu": "arm64" }, "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA=="],
-
-
"@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.0.4" }, "os": "linux", "cpu": "s390x" }, "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q=="],
-
-
"@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.0.4" }, "os": "linux", "cpu": "x64" }, "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA=="],
-
-
"@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" }, "os": "linux", "cpu": "arm64" }, "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g=="],
-
-
"@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.0.4" }, "os": "linux", "cpu": "x64" }, "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw=="],
-
-
"@img/sharp-wasm32": ["@img/sharp-wasm32@0.33.5", "", { "dependencies": { "@emnapi/runtime": "^1.2.0" }, "cpu": "none" }, "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg=="],
-
-
"@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.33.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ=="],
-
-
"@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.33.5", "", { "os": "win32", "cpu": "x64" }, "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg=="],
-
-
"@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="],
-
-
"@libsql/client": ["@libsql/client@0.15.14", "", { "dependencies": { "@libsql/core": "^0.15.14", "@libsql/hrana-client": "^0.7.0", "js-base64": "^3.7.5", "libsql": "^0.5.20", "promise-limit": "^2.7.0" } }, "sha512-oXeFYcSyAsYWvpWVmynrwNwb+NHNHtMfSIVdfQTF1B9RsgDXQE5YCDP3SS0i1FA8nuLWy2trFDVwP1b2LNdNPQ=="],
-
-
"@libsql/core": ["@libsql/core@0.15.14", "", { "dependencies": { "js-base64": "^3.7.5" } }, "sha512-b2eVQma78Ss+edIIFi7LnhhyUy5hAJjYvrSAD5RFdO/YKP2rEvNAT1pIn2Li7NrqcsMmoEQWlpUWH4fWMdXtpQ=="],
-
-
"@libsql/darwin-arm64": ["@libsql/darwin-arm64@0.5.22", "", { "os": "darwin", "cpu": "arm64" }, "sha512-4B8ZlX3nIDPndfct7GNe0nI3Yw6ibocEicWdC4fvQbSs/jdq/RC2oCsoJxJ4NzXkvktX70C1J4FcmmoBy069UA=="],
-
-
"@libsql/darwin-x64": ["@libsql/darwin-x64@0.5.22", "", { "os": "darwin", "cpu": "x64" }, "sha512-ny2HYWt6lFSIdNFzUFIJ04uiW6finXfMNJ7wypkAD8Pqdm6nAByO+Fdqu8t7sD0sqJGeUCiOg480icjyQ2/8VA=="],
-
-
"@libsql/hrana-client": ["@libsql/hrana-client@0.7.0", "", { "dependencies": { "@libsql/isomorphic-fetch": "^0.3.1", "@libsql/isomorphic-ws": "^0.1.5", "js-base64": "^3.7.5", "node-fetch": "^3.3.2" } }, "sha512-OF8fFQSkbL7vJY9rfuegK1R7sPgQ6kFMkDamiEccNUvieQ+3urzfDFI616oPl8V7T9zRmnTkSjMOImYCAVRVuw=="],
-
-
"@libsql/isomorphic-fetch": ["@libsql/isomorphic-fetch@0.3.1", "", {}, "sha512-6kK3SUK5Uu56zPq/Las620n5aS9xJq+jMBcNSOmjhNf/MUvdyji4vrMTqD7ptY7/4/CAVEAYDeotUz60LNQHtw=="],
-
-
"@libsql/isomorphic-ws": ["@libsql/isomorphic-ws@0.1.5", "", { "dependencies": { "@types/ws": "^8.5.4", "ws": "^8.13.0" } }, "sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg=="],
-
-
"@libsql/linux-arm-gnueabihf": ["@libsql/linux-arm-gnueabihf@0.5.22", "", { "os": "linux", "cpu": "arm" }, "sha512-3Uo3SoDPJe/zBnyZKosziRGtszXaEtv57raWrZIahtQDsjxBVjuzYQinCm9LRCJCUT5t2r5Z5nLDPJi2CwZVoA=="],
-
-
"@libsql/linux-arm-musleabihf": ["@libsql/linux-arm-musleabihf@0.5.22", "", { "os": "linux", "cpu": "arm" }, "sha512-LCsXh07jvSojTNJptT9CowOzwITznD+YFGGW+1XxUr7fS+7/ydUrpDfsMX7UqTqjm7xG17eq86VkWJgHJfvpNg=="],
-
-
"@libsql/linux-arm64-gnu": ["@libsql/linux-arm64-gnu@0.5.22", "", { "os": "linux", "cpu": "arm64" }, "sha512-KSdnOMy88c9mpOFKUEzPskSaF3VLflfSUCBwas/pn1/sV3pEhtMF6H8VUCd2rsedwoukeeCSEONqX7LLnQwRMA=="],
-
-
"@libsql/linux-arm64-musl": ["@libsql/linux-arm64-musl@0.5.22", "", { "os": "linux", "cpu": "arm64" }, "sha512-mCHSMAsDTLK5YH//lcV3eFEgiR23Ym0U9oEvgZA0667gqRZg/2px+7LshDvErEKv2XZ8ixzw3p1IrBzLQHGSsw=="],
-
-
"@libsql/linux-x64-gnu": ["@libsql/linux-x64-gnu@0.5.22", "", { "os": "linux", "cpu": "x64" }, "sha512-kNBHaIkSg78Y4BqAdgjcR2mBilZXs4HYkAmi58J+4GRwDQZh5fIUWbnQvB9f95DkWUIGVeenqLRFY2pcTmlsew=="],
-
-
"@libsql/linux-x64-musl": ["@libsql/linux-x64-musl@0.5.22", "", { "os": "linux", "cpu": "x64" }, "sha512-UZ4Xdxm4pu3pQXjvfJiyCzZop/9j/eA2JjmhMaAhe3EVLH2g11Fy4fwyUp9sT1QJYR1kpc2JLuybPM0kuXv/Tg=="],
-
-
"@libsql/win32-x64-msvc": ["@libsql/win32-x64-msvc@0.5.22", "", { "os": "win32", "cpu": "x64" }, "sha512-Fj0j8RnBpo43tVZUVoNK6BV/9AtDUM5S7DF3LB4qTYg1LMSZqi3yeCneUTLJD6XomQJlZzbI4mst89yspVSAnA=="],
-
-
"@neon-rs/load": ["@neon-rs/load@0.0.4", "", {}, "sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw=="],
-
-
"@noble/curves": ["@noble/curves@1.9.7", "", { "dependencies": { "@noble/hashes": "1.8.0" } }, "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw=="],
-
-
"@noble/hashes": ["@noble/hashes@1.8.0", "", {}, "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A=="],
-
-
"@oslojs/encoding": ["@oslojs/encoding@1.1.0", "", {}, "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ=="],
-
-
"@rollup/pluginutils": ["@rollup/pluginutils@5.2.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", "picomatch": "^4.0.2" }, "peerDependencies": { "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "optionalPeers": ["rollup"] }, "sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw=="],
-
-
"@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.50.0", "", { "os": "android", "cpu": "arm" }, "sha512-lVgpeQyy4fWN5QYebtW4buT/4kn4p4IJ+kDNB4uYNT5b8c8DLJDg6titg20NIg7E8RWwdWZORW6vUFfrLyG3KQ=="],
-
-
"@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.50.0", "", { "os": "android", "cpu": "arm64" }, "sha512-2O73dR4Dc9bp+wSYhviP6sDziurB5/HCym7xILKifWdE9UsOe2FtNcM+I4xZjKrfLJnq5UR8k9riB87gauiQtw=="],
-
-
"@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.50.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-vwSXQN8T4sKf1RHr1F0s98Pf8UPz7pS6P3LG9NSmuw0TVh7EmaE+5Ny7hJOZ0M2yuTctEsHHRTMi2wuHkdS6Hg=="],
-
-
"@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.50.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-cQp/WG8HE7BCGyFVuzUg0FNmupxC+EPZEwWu2FCGGw5WDT1o2/YlENbm5e9SMvfDFR6FRhVCBePLqj0o8MN7Vw=="],
-
-
"@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.50.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-UR1uTJFU/p801DvvBbtDD7z9mQL8J80xB0bR7DqW7UGQHRm/OaKzp4is7sQSdbt2pjjSS72eAtRh43hNduTnnQ=="],
-
-
"@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.50.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-G/DKyS6PK0dD0+VEzH/6n/hWDNPDZSMBmqsElWnCRGrYOb2jC0VSupp7UAHHQ4+QILwkxSMaYIbQ72dktp8pKA=="],
-
-
"@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.50.0", "", { "os": "linux", "cpu": "arm" }, "sha512-u72Mzc6jyJwKjJbZZcIYmd9bumJu7KNmHYdue43vT1rXPm2rITwmPWF0mmPzLm9/vJWxIRbao/jrQmxTO0Sm9w=="],
-
-
"@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.50.0", "", { "os": "linux", "cpu": "arm" }, "sha512-S4UefYdV0tnynDJV1mdkNawp0E5Qm2MtSs330IyHgaccOFrwqsvgigUD29uT+B/70PDY1eQ3t40+xf6wIvXJyg=="],
-
-
"@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.50.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-1EhkSvUQXJsIhk4msxP5nNAUWoB4MFDHhtc4gAYvnqoHlaL9V3F37pNHabndawsfy/Tp7BPiy/aSa6XBYbaD1g=="],
-
-
"@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.50.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-EtBDIZuDtVg75xIPIK1l5vCXNNCIRM0OBPUG+tbApDuJAy9mKago6QxX+tfMzbCI6tXEhMuZuN1+CU8iDW+0UQ=="],
-
-
"@rollup/rollup-linux-loongarch64-gnu": ["@rollup/rollup-linux-loongarch64-gnu@4.50.0", "", { "os": "linux", "cpu": "none" }, "sha512-BGYSwJdMP0hT5CCmljuSNx7+k+0upweM2M4YGfFBjnFSZMHOLYR0gEEj/dxyYJ6Zc6AiSeaBY8dWOa11GF/ppQ=="],
-
-
"@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.50.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-I1gSMzkVe1KzAxKAroCJL30hA4DqSi+wGc5gviD0y3IL/VkvcnAqwBf4RHXHyvH66YVHxpKO8ojrgc4SrWAnLg=="],
-
-
"@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.50.0", "", { "os": "linux", "cpu": "none" }, "sha512-bSbWlY3jZo7molh4tc5dKfeSxkqnf48UsLqYbUhnkdnfgZjgufLS/NTA8PcP/dnvct5CCdNkABJ56CbclMRYCA=="],
-
-
"@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.50.0", "", { "os": "linux", "cpu": "none" }, "sha512-LSXSGumSURzEQLT2e4sFqFOv3LWZsEF8FK7AAv9zHZNDdMnUPYH3t8ZlaeYYZyTXnsob3htwTKeWtBIkPV27iQ=="],
-
-
"@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.50.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-CxRKyakfDrsLXiCyucVfVWVoaPA4oFSpPpDwlMcDFQvrv3XY6KEzMtMZrA+e/goC8xxp2WSOxHQubP8fPmmjOQ=="],
-
-
"@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.50.0", "", { "os": "linux", "cpu": "x64" }, "sha512-8PrJJA7/VU8ToHVEPu14FzuSAqVKyo5gg/J8xUerMbyNkWkO9j2ExBho/68RnJsMGNJq4zH114iAttgm7BZVkA=="],
-
-
"@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.50.0", "", { "os": "linux", "cpu": "x64" }, "sha512-SkE6YQp+CzpyOrbw7Oc4MgXFvTw2UIBElvAvLCo230pyxOLmYwRPwZ/L5lBe/VW/qT1ZgND9wJfOsdy0XptRvw=="],
-
-
"@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.50.0", "", { "os": "none", "cpu": "arm64" }, "sha512-PZkNLPfvXeIOgJWA804zjSFH7fARBBCpCXxgkGDRjjAhRLOR8o0IGS01ykh5GYfod4c2yiiREuDM8iZ+pVsT+Q=="],
-
-
"@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.50.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-q7cIIdFvWQoaCbLDUyUc8YfR3Jh2xx3unO8Dn6/TTogKjfwrax9SyfmGGK6cQhKtjePI7jRfd7iRYcxYs93esg=="],
-
-
"@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.50.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-XzNOVg/YnDOmFdDKcxxK410PrcbcqZkBmz+0FicpW5jtjKQxcW1BZJEQOF0NJa6JO7CZhett8GEtRN/wYLYJuw=="],
-
-
"@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.50.0", "", { "os": "win32", "cpu": "x64" }, "sha512-xMmiWRR8sp72Zqwjgtf3QbZfF1wdh8X2ABu3EaozvZcyHJeU0r+XAnXdKgs4cCAp6ORoYoCygipYP1mjmbjrsg=="],
-
-
"@shikijs/core": ["@shikijs/core@3.12.2", "", { "dependencies": { "@shikijs/types": "3.12.2", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-L1Safnhra3tX/oJK5kYHaWmLEBJi1irASwewzY3taX5ibyXyMkkSDZlq01qigjryOBwrXSdFgTiZ3ryzSNeu7Q=="],
-
-
"@shikijs/engine-javascript": ["@shikijs/engine-javascript@3.12.2", "", { "dependencies": { "@shikijs/types": "3.12.2", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.3" } }, "sha512-Nm3/azSsaVS7hk6EwtHEnTythjQfwvrO5tKqMlaH9TwG1P+PNaR8M0EAKZ+GaH2DFwvcr4iSfTveyxMIvXEHMw=="],
-
-
"@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@3.12.2", "", { "dependencies": { "@shikijs/types": "3.12.2", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-hozwnFHsLvujK4/CPVHNo3Bcg2EsnG8krI/ZQ2FlBlCRpPZW4XAEQmEwqegJsypsTAN9ehu2tEYe30lYKSZW/w=="],
-
-
"@shikijs/langs": ["@shikijs/langs@3.12.2", "", { "dependencies": { "@shikijs/types": "3.12.2" } }, "sha512-bVx5PfuZHDSHoBal+KzJZGheFuyH4qwwcwG/n+MsWno5cTlKmaNtTsGzJpHYQ8YPbB5BdEdKU1rga5/6JGY8ww=="],
-
-
"@shikijs/themes": ["@shikijs/themes@3.12.2", "", { "dependencies": { "@shikijs/types": "3.12.2" } }, "sha512-fTR3QAgnwYpfGczpIbzPjlRnxyONJOerguQv1iwpyQZ9QXX4qy/XFQqXlf17XTsorxnHoJGbH/LXBvwtqDsF5A=="],
-
-
"@shikijs/types": ["@shikijs/types@3.12.2", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-K5UIBzxCyv0YoxN3LMrKB9zuhp1bV+LgewxuVwHdl4Gz5oePoUFrr9EfgJlGlDeXCU1b/yhdnXeuRvAnz8HN8Q=="],
-
-
"@shikijs/vscode-textmate": ["@shikijs/vscode-textmate@10.0.2", "", {}, "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg=="],
-
-
"@swc/helpers": ["@swc/helpers@0.5.17", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A=="],
-
-
"@types/debug": ["@types/debug@4.1.12", "", { "dependencies": { "@types/ms": "*" } }, "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ=="],
-
-
"@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="],
-
-
"@types/fontkit": ["@types/fontkit@2.0.8", "", { "dependencies": { "@types/node": "*" } }, "sha512-wN+8bYxIpJf+5oZdrdtaX04qUuWHcKxcDEgRS9Qm9ZClSHjzEn13SxUC+5eRM+4yXIeTYk8mTzLAWGF64847ew=="],
-
-
"@types/hast": ["@types/hast@3.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ=="],
-
-
"@types/mdast": ["@types/mdast@4.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA=="],
-
-
"@types/ms": ["@types/ms@2.1.0", "", {}, "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="],
-
-
"@types/nlcst": ["@types/nlcst@2.0.3", "", { "dependencies": { "@types/unist": "*" } }, "sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA=="],
-
-
"@types/node": ["@types/node@24.3.0", "", { "dependencies": { "undici-types": "~7.10.0" } }, "sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow=="],
-
-
"@types/unist": ["@types/unist@3.0.3", "", {}, "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="],
-
-
"@types/ws": ["@types/ws@8.18.1", "", { "dependencies": { "@types/node": "*" } }, "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg=="],
-
-
"@ungap/structured-clone": ["@ungap/structured-clone@1.3.0", "", {}, "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g=="],
-
-
"acorn": ["acorn@8.15.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="],
-
-
"ansi-align": ["ansi-align@3.0.1", "", { "dependencies": { "string-width": "^4.1.0" } }, "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w=="],
-
-
"ansi-regex": ["ansi-regex@6.2.0", "", {}, "sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg=="],
-
-
"ansi-styles": ["ansi-styles@6.2.1", "", {}, "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="],
-
-
"anymatch": ["anymatch@3.1.3", "", { "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw=="],
-
-
"argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="],
-
-
"aria-query": ["aria-query@5.3.2", "", {}, "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw=="],
-
-
"array-iterate": ["array-iterate@2.0.1", "", {}, "sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg=="],
-
-
"astro": ["astro@5.13.5", "", { "dependencies": { "@astrojs/compiler": "^2.12.2", "@astrojs/internal-helpers": "0.7.2", "@astrojs/markdown-remark": "6.3.6", "@astrojs/telemetry": "3.3.0", "@capsizecss/unpack": "^2.4.0", "@oslojs/encoding": "^1.1.0", "@rollup/pluginutils": "^5.1.4", "acorn": "^8.14.1", "aria-query": "^5.3.2", "axobject-query": "^4.1.0", "boxen": "8.0.1", "ci-info": "^4.2.0", "clsx": "^2.1.1", "common-ancestor-path": "^1.0.1", "cookie": "^1.0.2", "cssesc": "^3.0.0", "debug": "^4.4.0", "deterministic-object-hash": "^2.0.2", "devalue": "^5.1.1", "diff": "^5.2.0", "dlv": "^1.1.3", "dset": "^3.1.4", "es-module-lexer": "^1.6.0", "esbuild": "^0.25.0", "estree-walker": "^3.0.3", "flattie": "^1.1.1", "fontace": "~0.3.0", "github-slugger": "^2.0.0", "html-escaper": "3.0.3", "http-cache-semantics": "^4.1.1", "import-meta-resolve": "^4.1.0", "js-yaml": "^4.1.0", "kleur": "^4.1.5", "magic-string": "^0.30.17", "magicast": "^0.3.5", "mrmime": "^2.0.1", "neotraverse": "^0.6.18", "p-limit": "^6.2.0", "p-queue": "^8.1.0", "package-manager-detector": "^1.1.0", "picomatch": "^4.0.2", "prompts": "^2.4.2", "rehype": "^13.0.2", "semver": "^7.7.1", "shiki": "^3.2.1", "smol-toml": "^1.3.4", "tinyexec": "^0.3.2", "tinyglobby": "^0.2.12", "tsconfck": "^3.1.5", "ultrahtml": "^1.6.0", "unifont": "~0.5.0", "unist-util-visit": "^5.0.0", "unstorage": "^1.15.0", "vfile": "^6.0.3", "vite": "^6.3.4", "vitefu": "^1.0.6", "xxhash-wasm": "^1.1.0", "yargs-parser": "^21.1.1", "yocto-spinner": "^0.2.1", "zod": "^3.24.4", "zod-to-json-schema": "^3.24.5", "zod-to-ts": "^1.2.0" }, "optionalDependencies": { "sharp": "^0.33.3" }, "bin": { "astro": "astro.js" } }, "sha512-XmBzkl13XU97+n/QiOM5uXQdAVe0yKt5gO+Wlgc8dHRwHR499qhMQ5sMFckLJweUINLzcNGjP3F5nG4wV8a2XA=="],
-
-
"astro-integration-kit": ["astro-integration-kit@0.19.0", "", { "dependencies": { "pathe": "^1.1.2" }, "peerDependencies": { "astro": "^4.14.0 || ^5.0.0" } }, "sha512-ftDrem91kJZoenhpJJfRtB29D/bmNglEp2oOXqF1uL5yODZauGIy3tDgIbec0UEMp6tNuky4tfWseUXpej5Dng=="],
-
-
"axobject-query": ["axobject-query@4.1.0", "", {}, "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ=="],
-
-
"bail": ["bail@2.0.2", "", {}, "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="],
-
-
"base-64": ["base-64@1.0.0", "", {}, "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg=="],
-
-
"base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="],
-
-
"blob-to-buffer": ["blob-to-buffer@1.2.9", "", {}, "sha512-BF033y5fN6OCofD3vgHmNtwZWRcq9NLyyxyILx9hfMy1sXYy4ojFl765hJ2lP0YaN2fuxPaLO2Vzzoxy0FLFFA=="],
-
-
"boxen": ["boxen@8.0.1", "", { "dependencies": { "ansi-align": "^3.0.1", "camelcase": "^8.0.0", "chalk": "^5.3.0", "cli-boxes": "^3.0.0", "string-width": "^7.2.0", "type-fest": "^4.21.0", "widest-line": "^5.0.0", "wrap-ansi": "^9.0.0" } }, "sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw=="],
-
-
"brotli": ["brotli@1.3.3", "", { "dependencies": { "base64-js": "^1.1.2" } }, "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg=="],
-
-
"camelcase": ["camelcase@8.0.0", "", {}, "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA=="],
-
-
"ccount": ["ccount@2.0.1", "", {}, "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="],
-
-
"chalk": ["chalk@5.6.0", "", {}, "sha512-46QrSQFyVSEyYAgQ22hQ+zDa60YHA4fBstHmtSApj1Y5vKtG27fWowW03jCk5KcbXEWPZUIR894aARCA/G1kfQ=="],
-
-
"character-entities": ["character-entities@2.0.2", "", {}, "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ=="],
-
-
"character-entities-html4": ["character-entities-html4@2.1.0", "", {}, "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA=="],
-
-
"character-entities-legacy": ["character-entities-legacy@3.0.0", "", {}, "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ=="],
-
-
"chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="],
-
-
"ci-info": ["ci-info@4.3.0", "", {}, "sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ=="],
-
-
"cli-boxes": ["cli-boxes@3.0.0", "", {}, "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g=="],
-
-
"clone": ["clone@2.1.2", "", {}, "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w=="],
-
-
"clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="],
-
-
"color": ["color@4.2.3", "", { "dependencies": { "color-convert": "^2.0.1", "color-string": "^1.9.0" } }, "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A=="],
-
-
"color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="],
-
-
"color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="],
-
-
"color-string": ["color-string@1.9.1", "", { "dependencies": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" } }, "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg=="],
-
-
"comma-separated-tokens": ["comma-separated-tokens@2.0.3", "", {}, "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="],
-
-
"common-ancestor-path": ["common-ancestor-path@1.0.1", "", {}, "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w=="],
-
-
"cookie": ["cookie@1.0.2", "", {}, "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA=="],
-
-
"cookie-es": ["cookie-es@1.2.2", "", {}, "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg=="],
-
-
"cross-fetch": ["cross-fetch@3.2.0", "", { "dependencies": { "node-fetch": "^2.7.0" } }, "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q=="],
-
-
"crossws": ["crossws@0.3.5", "", { "dependencies": { "uncrypto": "^0.1.3" } }, "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA=="],
-
-
"css-tree": ["css-tree@3.1.0", "", { "dependencies": { "mdn-data": "2.12.2", "source-map-js": "^1.0.1" } }, "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w=="],
-
-
"cssesc": ["cssesc@3.0.0", "", { "bin": { "cssesc": "bin/cssesc" } }, "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="],
-
-
"data-uri-to-buffer": ["data-uri-to-buffer@4.0.1", "", {}, "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A=="],
-
-
"db0": ["db0@0.3.2", "", { "peerDependencies": { "@electric-sql/pglite": "*", "@libsql/client": "*", "better-sqlite3": "*", "drizzle-orm": "*", "mysql2": "*", "sqlite3": "*" }, "optionalPeers": ["@electric-sql/pglite", "@libsql/client", "better-sqlite3", "drizzle-orm", "mysql2", "sqlite3"] }, "sha512-xzWNQ6jk/+NtdfLyXEipbX55dmDSeteLFt/ayF+wZUU5bzKgmrDOxmInUTbyVRp46YwnJdkDA1KhB7WIXFofJw=="],
-
-
"debug": ["debug@4.4.1", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ=="],
-
-
"decode-named-character-reference": ["decode-named-character-reference@1.2.0", "", { "dependencies": { "character-entities": "^2.0.0" } }, "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q=="],
-
-
"deep-diff": ["deep-diff@1.0.2", "", {}, "sha512-aWS3UIVH+NPGCD1kki+DCU9Dua032iSsO43LqQpcs4R3+dVv7tX0qBGjiVHJHjplsoUM2XRO/KB92glqc68awg=="],
-
-
"defu": ["defu@6.1.4", "", {}, "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg=="],
-
-
"depd": ["depd@2.0.0", "", {}, "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="],
-
-
"dequal": ["dequal@2.0.3", "", {}, "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="],
-
-
"destr": ["destr@2.0.5", "", {}, "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA=="],
-
-
"detect-libc": ["detect-libc@2.0.4", "", {}, "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA=="],
-
-
"deterministic-object-hash": ["deterministic-object-hash@2.0.2", "", { "dependencies": { "base-64": "^1.0.0" } }, "sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ=="],
-
-
"devalue": ["devalue@5.3.2", "", {}, "sha512-UDsjUbpQn9kvm68slnrs+mfxwFkIflOhkanmyabZ8zOYk8SMEIbJ3TK+88g70hSIeytu4y18f0z/hYHMTrXIWw=="],
-
-
"devlop": ["devlop@1.1.0", "", { "dependencies": { "dequal": "^2.0.0" } }, "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA=="],
-
-
"dfa": ["dfa@1.2.0", "", {}, "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q=="],
-
-
"diff": ["diff@5.2.0", "", {}, "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A=="],
-
-
"dlv": ["dlv@1.1.3", "", {}, "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="],
-
-
"drizzle-orm": ["drizzle-orm@0.42.0", "", { "peerDependencies": { "@aws-sdk/client-rds-data": ">=3", "@cloudflare/workers-types": ">=4", "@electric-sql/pglite": ">=0.2.0", "@libsql/client": ">=0.10.0", "@libsql/client-wasm": ">=0.10.0", "@neondatabase/serverless": ">=0.10.0", "@op-engineering/op-sqlite": ">=2", "@opentelemetry/api": "^1.4.1", "@planetscale/database": ">=1.13", "@prisma/client": "*", "@tidbcloud/serverless": "*", "@types/better-sqlite3": "*", "@types/pg": "*", "@types/sql.js": "*", "@vercel/postgres": ">=0.8.0", "@xata.io/client": "*", "better-sqlite3": ">=7", "bun-types": "*", "expo-sqlite": ">=14.0.0", "gel": ">=2", "knex": "*", "kysely": "*", "mysql2": ">=2", "pg": ">=8", "postgres": ">=3", "sql.js": ">=1", "sqlite3": ">=5" }, "optionalPeers": ["@aws-sdk/client-rds-data", "@cloudflare/workers-types", "@electric-sql/pglite", "@libsql/client", "@libsql/client-wasm", "@neondatabase/serverless", "@op-engineering/op-sqlite", "@opentelemetry/api", "@planetscale/database", "@prisma/client", "@tidbcloud/serverless", "@types/better-sqlite3", "@types/pg", "@types/sql.js", "@vercel/postgres", "@xata.io/client", "better-sqlite3", "bun-types", "expo-sqlite", "gel", "knex", "kysely", "mysql2", "pg", "postgres", "sql.js", "sqlite3"] }, "sha512-pS8nNJm2kBNZwrOjTHJfdKkaU+KuUQmV/vk5D57NojDq4FG+0uAYGMulXtYT///HfgsMF0hnFFvu1ezI3OwOkg=="],
-
-
"dset": ["dset@3.1.4", "", {}, "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA=="],
-
-
"ee-first": ["ee-first@1.1.1", "", {}, "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="],
-
-
"emoji-regex": ["emoji-regex@10.5.0", "", {}, "sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg=="],
-
-
"encodeurl": ["encodeurl@2.0.0", "", {}, "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg=="],
-
-
"entities": ["entities@6.0.1", "", {}, "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g=="],
-
-
"es-module-lexer": ["es-module-lexer@1.7.0", "", {}, "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA=="],
-
-
"esbuild": ["esbuild@0.25.9", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.9", "@esbuild/android-arm": "0.25.9", "@esbuild/android-arm64": "0.25.9", "@esbuild/android-x64": "0.25.9", "@esbuild/darwin-arm64": "0.25.9", "@esbuild/darwin-x64": "0.25.9", "@esbuild/freebsd-arm64": "0.25.9", "@esbuild/freebsd-x64": "0.25.9", "@esbuild/linux-arm": "0.25.9", "@esbuild/linux-arm64": "0.25.9", "@esbuild/linux-ia32": "0.25.9", "@esbuild/linux-loong64": "0.25.9", "@esbuild/linux-mips64el": "0.25.9", "@esbuild/linux-ppc64": "0.25.9", "@esbuild/linux-riscv64": "0.25.9", "@esbuild/linux-s390x": "0.25.9", "@esbuild/linux-x64": "0.25.9", "@esbuild/netbsd-arm64": "0.25.9", "@esbuild/netbsd-x64": "0.25.9", "@esbuild/openbsd-arm64": "0.25.9", "@esbuild/openbsd-x64": "0.25.9", "@esbuild/openharmony-arm64": "0.25.9", "@esbuild/sunos-x64": "0.25.9", "@esbuild/win32-arm64": "0.25.9", "@esbuild/win32-ia32": "0.25.9", "@esbuild/win32-x64": "0.25.9" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g=="],
-
-
"escape-html": ["escape-html@1.0.3", "", {}, "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="],
-
-
"escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="],
-
-
"estree-walker": ["estree-walker@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="],
-
-
"etag": ["etag@1.8.1", "", {}, "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="],
-
-
"eventemitter3": ["eventemitter3@5.0.1", "", {}, "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA=="],
-
-
"extend": ["extend@3.0.2", "", {}, "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="],
-
-
"fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="],
-
-
"fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="],
-
-
"fetch-blob": ["fetch-blob@3.2.0", "", { "dependencies": { "node-domexception": "^1.0.0", "web-streams-polyfill": "^3.0.3" } }, "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ=="],
-
-
"flattie": ["flattie@1.1.1", "", {}, "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ=="],
-
-
"fontace": ["fontace@0.3.0", "", { "dependencies": { "@types/fontkit": "^2.0.8", "fontkit": "^2.0.4" } }, "sha512-czoqATrcnxgWb/nAkfyIrRp6Q8biYj7nGnL6zfhTcX+JKKpWHFBnb8uNMw/kZr7u++3Y3wYSYoZgHkCcsuBpBg=="],
-
-
"fontkit": ["fontkit@2.0.4", "", { "dependencies": { "@swc/helpers": "^0.5.12", "brotli": "^1.3.2", "clone": "^2.1.2", "dfa": "^1.2.0", "fast-deep-equal": "^3.1.3", "restructure": "^3.0.0", "tiny-inflate": "^1.0.3", "unicode-properties": "^1.4.0", "unicode-trie": "^2.0.0" } }, "sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g=="],
-
-
"formdata-polyfill": ["formdata-polyfill@4.0.10", "", { "dependencies": { "fetch-blob": "^3.1.2" } }, "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g=="],
-
-
"fresh": ["fresh@2.0.0", "", {}, "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A=="],
-
-
"fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="],
-
-
"get-east-asian-width": ["get-east-asian-width@1.3.1", "", {}, "sha512-R1QfovbPsKmosqTnPoRFiJ7CF9MLRgb53ChvMZm+r4p76/+8yKDy17qLL2PKInORy2RkZZekuK0efYgmzTkXyQ=="],
-
-
"github-slugger": ["github-slugger@2.0.0", "", {}, "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw=="],
-
-
"graphemer": ["graphemer@1.4.0", "", {}, "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag=="],
-
-
"h3": ["h3@1.15.4", "", { "dependencies": { "cookie-es": "^1.2.2", "crossws": "^0.3.5", "defu": "^6.1.4", "destr": "^2.0.5", "iron-webcrypto": "^1.2.1", "node-mock-http": "^1.0.2", "radix3": "^1.1.2", "ufo": "^1.6.1", "uncrypto": "^0.1.3" } }, "sha512-z5cFQWDffyOe4vQ9xIqNfCZdV4p//vy6fBnr8Q1AWnVZ0teurKMG66rLj++TKwKPUP3u7iMUvrvKaEUiQw2QWQ=="],
-
-
"hast-util-from-html": ["hast-util-from-html@2.0.3", "", { "dependencies": { "@types/hast": "^3.0.0", "devlop": "^1.1.0", "hast-util-from-parse5": "^8.0.0", "parse5": "^7.0.0", "vfile": "^6.0.0", "vfile-message": "^4.0.0" } }, "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw=="],
-
-
"hast-util-from-parse5": ["hast-util-from-parse5@8.0.3", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "devlop": "^1.0.0", "hastscript": "^9.0.0", "property-information": "^7.0.0", "vfile": "^6.0.0", "vfile-location": "^5.0.0", "web-namespaces": "^2.0.0" } }, "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg=="],
-
-
"hast-util-is-element": ["hast-util-is-element@3.0.0", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g=="],
-
-
"hast-util-parse-selector": ["hast-util-parse-selector@4.0.0", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A=="],
-
-
"hast-util-raw": ["hast-util-raw@9.1.0", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "@ungap/structured-clone": "^1.0.0", "hast-util-from-parse5": "^8.0.0", "hast-util-to-parse5": "^8.0.0", "html-void-elements": "^3.0.0", "mdast-util-to-hast": "^13.0.0", "parse5": "^7.0.0", "unist-util-position": "^5.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0", "web-namespaces": "^2.0.0", "zwitch": "^2.0.0" } }, "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw=="],
-
-
"hast-util-to-html": ["hast-util-to-html@9.0.5", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "ccount": "^2.0.0", "comma-separated-tokens": "^2.0.0", "hast-util-whitespace": "^3.0.0", "html-void-elements": "^3.0.0", "mdast-util-to-hast": "^13.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "stringify-entities": "^4.0.0", "zwitch": "^2.0.4" } }, "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw=="],
-
-
"hast-util-to-parse5": ["hast-util-to-parse5@8.0.0", "", { "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "devlop": "^1.0.0", "property-information": "^6.0.0", "space-separated-tokens": "^2.0.0", "web-namespaces": "^2.0.0", "zwitch": "^2.0.0" } }, "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw=="],
-
-
"hast-util-to-text": ["hast-util-to-text@4.0.2", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "hast-util-is-element": "^3.0.0", "unist-util-find-after": "^5.0.0" } }, "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A=="],
-
-
"hast-util-whitespace": ["hast-util-whitespace@3.0.0", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw=="],
-
-
"hastscript": ["hastscript@9.0.1", "", { "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "hast-util-parse-selector": "^4.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0" } }, "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w=="],
-
-
"html-escaper": ["html-escaper@3.0.3", "", {}, "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ=="],
-
-
"html-void-elements": ["html-void-elements@3.0.0", "", {}, "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg=="],
-
-
"http-cache-semantics": ["http-cache-semantics@4.2.0", "", {}, "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ=="],
-
-
"http-errors": ["http-errors@2.0.0", "", { "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", "setprototypeof": "1.2.0", "statuses": "2.0.1", "toidentifier": "1.0.1" } }, "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ=="],
-
-
"import-meta-resolve": ["import-meta-resolve@4.2.0", "", {}, "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg=="],
-
-
"inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="],
-
-
"ipaddr.js": ["ipaddr.js@2.2.0", "", {}, "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA=="],
-
-
"iron-webcrypto": ["iron-webcrypto@1.2.1", "", {}, "sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg=="],
-
-
"is-arrayish": ["is-arrayish@0.3.2", "", {}, "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="],
-
-
"is-docker": ["is-docker@3.0.0", "", { "bin": { "is-docker": "cli.js" } }, "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ=="],
-
-
"is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="],
-
-
"is-inside-container": ["is-inside-container@1.0.0", "", { "dependencies": { "is-docker": "^3.0.0" }, "bin": { "is-inside-container": "cli.js" } }, "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA=="],
-
-
"is-plain-obj": ["is-plain-obj@4.1.0", "", {}, "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="],
-
-
"is-wsl": ["is-wsl@3.1.0", "", { "dependencies": { "is-inside-container": "^1.0.0" } }, "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw=="],
-
-
"iso-datestring-validator": ["iso-datestring-validator@2.2.2", "", {}, "sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA=="],
-
-
"jose": ["jose@5.10.0", "", {}, "sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg=="],
-
-
"js-base64": ["js-base64@3.7.8", "", {}, "sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow=="],
-
-
"js-yaml": ["js-yaml@4.1.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA=="],
-
-
"kleur": ["kleur@4.1.5", "", {}, "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ=="],
-
-
"libsql": ["libsql@0.5.22", "", { "dependencies": { "@neon-rs/load": "^0.0.4", "detect-libc": "2.0.2" }, "optionalDependencies": { "@libsql/darwin-arm64": "0.5.22", "@libsql/darwin-x64": "0.5.22", "@libsql/linux-arm-gnueabihf": "0.5.22", "@libsql/linux-arm-musleabihf": "0.5.22", "@libsql/linux-arm64-gnu": "0.5.22", "@libsql/linux-arm64-musl": "0.5.22", "@libsql/linux-x64-gnu": "0.5.22", "@libsql/linux-x64-musl": "0.5.22", "@libsql/win32-x64-msvc": "0.5.22" }, "os": [ "linux", "win32", "darwin", ], "cpu": [ "arm", "x64", "arm64", ] }, "sha512-NscWthMQt7fpU8lqd7LXMvT9pi+KhhmTHAJWUB/Lj6MWa0MKFv0F2V4C6WKKpjCVZl0VwcDz4nOI3CyaT1DDiA=="],
-
-
"longest-streak": ["longest-streak@3.1.0", "", {}, "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g=="],
-
-
"lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="],
-
-
"magic-string": ["magic-string@0.30.18", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-yi8swmWbO17qHhwIBNeeZxTceJMeBvWJaId6dyvTSOwTipqeHhMhOrz6513r1sOKnpvQ7zkhlG8tPrpilwTxHQ=="],
-
-
"magicast": ["magicast@0.3.5", "", { "dependencies": { "@babel/parser": "^7.25.4", "@babel/types": "^7.25.4", "source-map-js": "^1.2.0" } }, "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ=="],
-
-
"markdown-table": ["markdown-table@3.0.4", "", {}, "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw=="],
-
-
"mdast-util-definitions": ["mdast-util-definitions@6.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "unist-util-visit": "^5.0.0" } }, "sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ=="],
-
-
"mdast-util-find-and-replace": ["mdast-util-find-and-replace@3.0.2", "", { "dependencies": { "@types/mdast": "^4.0.0", "escape-string-regexp": "^5.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg=="],
-
-
"mdast-util-from-markdown": ["mdast-util-from-markdown@2.0.2", "", { "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "mdast-util-to-string": "^4.0.0", "micromark": "^4.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-decode-string": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA=="],
-
-
"mdast-util-gfm": ["mdast-util-gfm@3.1.0", "", { "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-gfm-autolink-literal": "^2.0.0", "mdast-util-gfm-footnote": "^2.0.0", "mdast-util-gfm-strikethrough": "^2.0.0", "mdast-util-gfm-table": "^2.0.0", "mdast-util-gfm-task-list-item": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ=="],
-
-
"mdast-util-gfm-autolink-literal": ["mdast-util-gfm-autolink-literal@2.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "ccount": "^2.0.0", "devlop": "^1.0.0", "mdast-util-find-and-replace": "^3.0.0", "micromark-util-character": "^2.0.0" } }, "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ=="],
-
-
"mdast-util-gfm-footnote": ["mdast-util-gfm-footnote@2.1.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.1.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0" } }, "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ=="],
-
-
"mdast-util-gfm-strikethrough": ["mdast-util-gfm-strikethrough@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg=="],
-
-
"mdast-util-gfm-table": ["mdast-util-gfm-table@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "markdown-table": "^3.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg=="],
-
-
"mdast-util-gfm-task-list-item": ["mdast-util-gfm-task-list-item@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ=="],
-
-
"mdast-util-phrasing": ["mdast-util-phrasing@4.1.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "unist-util-is": "^6.0.0" } }, "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w=="],
-
-
"mdast-util-to-hast": ["mdast-util-to-hast@13.2.0", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "@ungap/structured-clone": "^1.0.0", "devlop": "^1.0.0", "micromark-util-sanitize-uri": "^2.0.0", "trim-lines": "^3.0.0", "unist-util-position": "^5.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" } }, "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA=="],
-
-
"mdast-util-to-markdown": ["mdast-util-to-markdown@2.1.2", "", { "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "longest-streak": "^3.0.0", "mdast-util-phrasing": "^4.0.0", "mdast-util-to-string": "^4.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-decode-string": "^2.0.0", "unist-util-visit": "^5.0.0", "zwitch": "^2.0.0" } }, "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA=="],
-
-
"mdast-util-to-string": ["mdast-util-to-string@4.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0" } }, "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg=="],
-
-
"mdn-data": ["mdn-data@2.12.2", "", {}, "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA=="],
-
-
"micromark": ["micromark@4.0.2", "", { "dependencies": { "@types/debug": "^4.0.0", "debug": "^4.0.0", "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA=="],
-
-
"micromark-core-commonmark": ["micromark-core-commonmark@2.0.3", "", { "dependencies": { "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-factory-destination": "^2.0.0", "micromark-factory-label": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-factory-title": "^2.0.0", "micromark-factory-whitespace": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-html-tag-name": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg=="],
-
-
"micromark-extension-gfm": ["micromark-extension-gfm@3.0.0", "", { "dependencies": { "micromark-extension-gfm-autolink-literal": "^2.0.0", "micromark-extension-gfm-footnote": "^2.0.0", "micromark-extension-gfm-strikethrough": "^2.0.0", "micromark-extension-gfm-table": "^2.0.0", "micromark-extension-gfm-tagfilter": "^2.0.0", "micromark-extension-gfm-task-list-item": "^2.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w=="],
-
-
"micromark-extension-gfm-autolink-literal": ["micromark-extension-gfm-autolink-literal@2.1.0", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw=="],
-
-
"micromark-extension-gfm-footnote": ["micromark-extension-gfm-footnote@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw=="],
-
-
"micromark-extension-gfm-strikethrough": ["micromark-extension-gfm-strikethrough@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw=="],
-
-
"micromark-extension-gfm-table": ["micromark-extension-gfm-table@2.1.1", "", { "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg=="],
-
-
"micromark-extension-gfm-tagfilter": ["micromark-extension-gfm-tagfilter@2.0.0", "", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg=="],
-
-
"micromark-extension-gfm-task-list-item": ["micromark-extension-gfm-task-list-item@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw=="],
-
-
"micromark-factory-destination": ["micromark-factory-destination@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA=="],
-
-
"micromark-factory-label": ["micromark-factory-label@2.0.1", "", { "dependencies": { "devlop": "^1.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg=="],
-
-
"micromark-factory-space": ["micromark-factory-space@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg=="],
-
-
"micromark-factory-title": ["micromark-factory-title@2.0.1", "", { "dependencies": { "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw=="],
-
-
"micromark-factory-whitespace": ["micromark-factory-whitespace@2.0.1", "", { "dependencies": { "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ=="],
-
-
"micromark-util-character": ["micromark-util-character@2.1.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="],
-
-
"micromark-util-chunked": ["micromark-util-chunked@2.0.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA=="],
-
-
"micromark-util-classify-character": ["micromark-util-classify-character@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q=="],
-
-
"micromark-util-combine-extensions": ["micromark-util-combine-extensions@2.0.1", "", { "dependencies": { "micromark-util-chunked": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg=="],
-
-
"micromark-util-decode-numeric-character-reference": ["micromark-util-decode-numeric-character-reference@2.0.2", "", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw=="],
-
-
"micromark-util-decode-string": ["micromark-util-decode-string@2.0.1", "", { "dependencies": { "decode-named-character-reference": "^1.0.0", "micromark-util-character": "^2.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-symbol": "^2.0.0" } }, "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ=="],
-
-
"micromark-util-encode": ["micromark-util-encode@2.0.1", "", {}, "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw=="],
-
-
"micromark-util-html-tag-name": ["micromark-util-html-tag-name@2.0.1", "", {}, "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA=="],
-
-
"micromark-util-normalize-identifier": ["micromark-util-normalize-identifier@2.0.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q=="],
-
-
"micromark-util-resolve-all": ["micromark-util-resolve-all@2.0.1", "", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg=="],
-
-
"micromark-util-sanitize-uri": ["micromark-util-sanitize-uri@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-symbol": "^2.0.0" } }, "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ=="],
-
-
"micromark-util-subtokenize": ["micromark-util-subtokenize@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA=="],
-
-
"micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="],
-
-
"micromark-util-types": ["micromark-util-types@2.0.2", "", {}, "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA=="],
-
-
"mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="],
-
-
"mime-types": ["mime-types@3.0.1", "", { "dependencies": { "mime-db": "^1.54.0" } }, "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA=="],
-
-
"mrmime": ["mrmime@2.0.1", "", {}, "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ=="],
-
-
"ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="],
-
-
"multiformats": ["multiformats@9.9.0", "", {}, "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg=="],
-
-
"nanoid": ["nanoid@5.1.5", "", { "bin": { "nanoid": "bin/nanoid.js" } }, "sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw=="],
-
-
"neotraverse": ["neotraverse@0.6.18", "", {}, "sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA=="],
-
-
"nlcst-to-string": ["nlcst-to-string@4.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0" } }, "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA=="],
-
-
"node-domexception": ["node-domexception@1.0.0", "", {}, "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ=="],
-
-
"node-fetch": ["node-fetch@3.3.2", "", { "dependencies": { "data-uri-to-buffer": "^4.0.0", "fetch-blob": "^3.1.4", "formdata-polyfill": "^4.0.10" } }, "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA=="],
-
-
"node-fetch-native": ["node-fetch-native@1.6.7", "", {}, "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q=="],
-
-
"node-mock-http": ["node-mock-http@1.0.2", "", {}, "sha512-zWaamgDUdo9SSLw47we78+zYw/bDr5gH8pH7oRRs8V3KmBtu8GLgGIbV2p/gRPd3LWpEOpjQj7X1FOU3VFMJ8g=="],
-
-
"normalize-path": ["normalize-path@3.0.0", "", {}, "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="],
-
-
"ofetch": ["ofetch@1.4.1", "", { "dependencies": { "destr": "^2.0.3", "node-fetch-native": "^1.6.4", "ufo": "^1.5.4" } }, "sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw=="],
-
-
"ohash": ["ohash@2.0.11", "", {}, "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ=="],
-
-
"on-finished": ["on-finished@2.4.1", "", { "dependencies": { "ee-first": "1.1.1" } }, "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg=="],
-
-
"oniguruma-parser": ["oniguruma-parser@0.12.1", "", {}, "sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w=="],
-
-
"oniguruma-to-es": ["oniguruma-to-es@4.3.3", "", { "dependencies": { "oniguruma-parser": "^0.12.1", "regex": "^6.0.1", "regex-recursion": "^6.0.2" } }, "sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg=="],
-
-
"p-limit": ["p-limit@6.2.0", "", { "dependencies": { "yocto-queue": "^1.1.1" } }, "sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA=="],
-
-
"p-queue": ["p-queue@8.1.0", "", { "dependencies": { "eventemitter3": "^5.0.1", "p-timeout": "^6.1.2" } }, "sha512-mxLDbbGIBEXTJL0zEx8JIylaj3xQ7Z/7eEVjcF9fJX4DBiH9oqe+oahYnlKKxm0Ci9TlWTyhSHgygxMxjIB2jw=="],
-
-
"p-timeout": ["p-timeout@6.1.4", "", {}, "sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg=="],
-
-
"package-manager-detector": ["package-manager-detector@1.3.0", "", {}, "sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ=="],
-
-
"pako": ["pako@0.2.9", "", {}, "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA=="],
-
-
"parse-latin": ["parse-latin@7.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0", "@types/unist": "^3.0.0", "nlcst-to-string": "^4.0.0", "unist-util-modify-children": "^4.0.0", "unist-util-visit-children": "^3.0.0", "vfile": "^6.0.0" } }, "sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ=="],
-
-
"parse5": ["parse5@7.3.0", "", { "dependencies": { "entities": "^6.0.0" } }, "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw=="],
-
-
"pathe": ["pathe@1.1.2", "", {}, "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ=="],
-
-
"picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="],
-
-
"picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="],
-
-
"postcss": ["postcss@8.5.6", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg=="],
-
-
"prismjs": ["prismjs@1.30.0", "", {}, "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw=="],
-
-
"promise-limit": ["promise-limit@2.7.0", "", {}, "sha512-7nJ6v5lnJsXwGprnGXga4wx6d1POjvi5Qmf1ivTRxTjH4Z/9Czja/UCMLVmB9N93GeWOU93XaFaEt6jbuoagNw=="],
-
-
"prompts": ["prompts@2.4.2", "", { "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" } }, "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q=="],
-
-
"property-information": ["property-information@7.1.0", "", {}, "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ=="],
-
-
"radix3": ["radix3@1.1.2", "", {}, "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA=="],
-
-
"range-parser": ["range-parser@1.2.1", "", {}, "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="],
-
-
"readdirp": ["readdirp@4.1.2", "", {}, "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="],
-
-
"regex": ["regex@6.0.1", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA=="],
-
-
"regex-recursion": ["regex-recursion@6.0.2", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg=="],
-
-
"regex-utilities": ["regex-utilities@2.3.0", "", {}, "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng=="],
-
-
"rehype": ["rehype@13.0.2", "", { "dependencies": { "@types/hast": "^3.0.0", "rehype-parse": "^9.0.0", "rehype-stringify": "^10.0.0", "unified": "^11.0.0" } }, "sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A=="],
-
-
"rehype-parse": ["rehype-parse@9.0.1", "", { "dependencies": { "@types/hast": "^3.0.0", "hast-util-from-html": "^2.0.0", "unified": "^11.0.0" } }, "sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag=="],
-
-
"rehype-raw": ["rehype-raw@7.0.0", "", { "dependencies": { "@types/hast": "^3.0.0", "hast-util-raw": "^9.0.0", "vfile": "^6.0.0" } }, "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww=="],
-
-
"rehype-stringify": ["rehype-stringify@10.0.1", "", { "dependencies": { "@types/hast": "^3.0.0", "hast-util-to-html": "^9.0.0", "unified": "^11.0.0" } }, "sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA=="],
-
-
"remark-gfm": ["remark-gfm@4.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-gfm": "^3.0.0", "micromark-extension-gfm": "^3.0.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", "unified": "^11.0.0" } }, "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg=="],
-
-
"remark-parse": ["remark-parse@11.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", "micromark-util-types": "^2.0.0", "unified": "^11.0.0" } }, "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA=="],
-
-
"remark-rehype": ["remark-rehype@11.1.2", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "mdast-util-to-hast": "^13.0.0", "unified": "^11.0.0", "vfile": "^6.0.0" } }, "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw=="],
-
-
"remark-smartypants": ["remark-smartypants@3.0.2", "", { "dependencies": { "retext": "^9.0.0", "retext-smartypants": "^6.0.0", "unified": "^11.0.4", "unist-util-visit": "^5.0.0" } }, "sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA=="],
-
-
"remark-stringify": ["remark-stringify@11.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-to-markdown": "^2.0.0", "unified": "^11.0.0" } }, "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw=="],
-
-
"restructure": ["restructure@3.0.2", "", {}, "sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw=="],
-
-
"retext": ["retext@9.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0", "retext-latin": "^4.0.0", "retext-stringify": "^4.0.0", "unified": "^11.0.0" } }, "sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA=="],
-
-
"retext-latin": ["retext-latin@4.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0", "parse-latin": "^7.0.0", "unified": "^11.0.0" } }, "sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA=="],
-
-
"retext-smartypants": ["retext-smartypants@6.2.0", "", { "dependencies": { "@types/nlcst": "^2.0.0", "nlcst-to-string": "^4.0.0", "unist-util-visit": "^5.0.0" } }, "sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ=="],
-
-
"retext-stringify": ["retext-stringify@4.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0", "nlcst-to-string": "^4.0.0", "unified": "^11.0.0" } }, "sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA=="],
-
-
"rollup": ["rollup@4.50.0", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.50.0", "@rollup/rollup-android-arm64": "4.50.0", "@rollup/rollup-darwin-arm64": "4.50.0", "@rollup/rollup-darwin-x64": "4.50.0", "@rollup/rollup-freebsd-arm64": "4.50.0", "@rollup/rollup-freebsd-x64": "4.50.0", "@rollup/rollup-linux-arm-gnueabihf": "4.50.0", "@rollup/rollup-linux-arm-musleabihf": "4.50.0", "@rollup/rollup-linux-arm64-gnu": "4.50.0", "@rollup/rollup-linux-arm64-musl": "4.50.0", "@rollup/rollup-linux-loongarch64-gnu": "4.50.0", "@rollup/rollup-linux-ppc64-gnu": "4.50.0", "@rollup/rollup-linux-riscv64-gnu": "4.50.0", "@rollup/rollup-linux-riscv64-musl": "4.50.0", "@rollup/rollup-linux-s390x-gnu": "4.50.0", "@rollup/rollup-linux-x64-gnu": "4.50.0", "@rollup/rollup-linux-x64-musl": "4.50.0", "@rollup/rollup-openharmony-arm64": "4.50.0", "@rollup/rollup-win32-arm64-msvc": "4.50.0", "@rollup/rollup-win32-ia32-msvc": "4.50.0", "@rollup/rollup-win32-x64-msvc": "4.50.0", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-/Zl4D8zPifNmyGzJS+3kVoyXeDeT/GrsJM94sACNg9RtUE0hrHa1bNPtRSrfHTMH5HjRzce6K7rlTh3Khiw+pw=="],
-
-
"semver": ["semver@7.7.2", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA=="],
-
-
"send": ["send@1.2.0", "", { "dependencies": { "debug": "^4.3.5", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", "fresh": "^2.0.0", "http-errors": "^2.0.0", "mime-types": "^3.0.1", "ms": "^2.1.3", "on-finished": "^2.4.1", "range-parser": "^1.2.1", "statuses": "^2.0.1" } }, "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw=="],
-
-
"server-destroy": ["server-destroy@1.0.1", "", {}, "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ=="],
-
-
"setprototypeof": ["setprototypeof@1.2.0", "", {}, "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="],
-
-
"sharp": ["sharp@0.33.5", "", { "dependencies": { "color": "^4.2.3", "detect-libc": "^2.0.3", "semver": "^7.6.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.33.5", "@img/sharp-darwin-x64": "0.33.5", "@img/sharp-libvips-darwin-arm64": "1.0.4", "@img/sharp-libvips-darwin-x64": "1.0.4", "@img/sharp-libvips-linux-arm": "1.0.5", "@img/sharp-libvips-linux-arm64": "1.0.4", "@img/sharp-libvips-linux-s390x": "1.0.4", "@img/sharp-libvips-linux-x64": "1.0.4", "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", "@img/sharp-libvips-linuxmusl-x64": "1.0.4", "@img/sharp-linux-arm": "0.33.5", "@img/sharp-linux-arm64": "0.33.5", "@img/sharp-linux-s390x": "0.33.5", "@img/sharp-linux-x64": "0.33.5", "@img/sharp-linuxmusl-arm64": "0.33.5", "@img/sharp-linuxmusl-x64": "0.33.5", "@img/sharp-wasm32": "0.33.5", "@img/sharp-win32-ia32": "0.33.5", "@img/sharp-win32-x64": "0.33.5" } }, "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw=="],
-
-
"shiki": ["shiki@3.12.2", "", { "dependencies": { "@shikijs/core": "3.12.2", "@shikijs/engine-javascript": "3.12.2", "@shikijs/engine-oniguruma": "3.12.2", "@shikijs/langs": "3.12.2", "@shikijs/themes": "3.12.2", "@shikijs/types": "3.12.2", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-uIrKI+f9IPz1zDT+GMz+0RjzKJiijVr6WDWm9Pe3NNY6QigKCfifCEv9v9R2mDASKKjzjQ2QpFLcxaR3iHSnMA=="],
-
-
"simple-swizzle": ["simple-swizzle@0.2.2", "", { "dependencies": { "is-arrayish": "^0.3.1" } }, "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg=="],
-
-
"sisteransi": ["sisteransi@1.0.5", "", {}, "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="],
-
-
"smol-toml": ["smol-toml@1.4.2", "", {}, "sha512-rInDH6lCNiEyn3+hH8KVGFdbjc099j47+OSgbMrfDYX1CmXLfdKd7qi6IfcWj2wFxvSVkuI46M+wPGYfEOEj6g=="],
-
-
"source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="],
-
-
"space-separated-tokens": ["space-separated-tokens@2.0.2", "", {}, "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q=="],
-
-
"statuses": ["statuses@2.0.2", "", {}, "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw=="],
-
-
"string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="],
-
-
"stringify-entities": ["stringify-entities@4.0.4", "", { "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" } }, "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg=="],
-
-
"strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="],
-
-
"tiny-inflate": ["tiny-inflate@1.0.3", "", {}, "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw=="],
-
-
"tinyexec": ["tinyexec@0.3.2", "", {}, "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA=="],
-
-
"tinyglobby": ["tinyglobby@0.2.14", "", { "dependencies": { "fdir": "^6.4.4", "picomatch": "^4.0.2" } }, "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ=="],
-
-
"toidentifier": ["toidentifier@1.0.1", "", {}, "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="],
-
-
"tr46": ["tr46@0.0.3", "", {}, "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="],
-
-
"trim-lines": ["trim-lines@3.0.1", "", {}, "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg=="],
-
-
"trough": ["trough@2.2.0", "", {}, "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw=="],
-
-
"tsconfck": ["tsconfck@3.1.6", "", { "peerDependencies": { "typescript": "^5.0.0" }, "optionalPeers": ["typescript"], "bin": { "tsconfck": "bin/tsconfck.js" } }, "sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w=="],
-
-
"tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
-
-
"type-fest": ["type-fest@4.41.0", "", {}, "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA=="],
-
-
"typescript": ["typescript@5.9.2", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A=="],
-
-
"ufo": ["ufo@1.6.1", "", {}, "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA=="],
-
-
"uint8arrays": ["uint8arrays@3.0.0", "", { "dependencies": { "multiformats": "^9.4.2" } }, "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA=="],
-
-
"ultrahtml": ["ultrahtml@1.6.0", "", {}, "sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw=="],
-
-
"uncrypto": ["uncrypto@0.1.3", "", {}, "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q=="],
-
-
"undici": ["undici@6.21.3", "", {}, "sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw=="],
-
-
"undici-types": ["undici-types@7.10.0", "", {}, "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag=="],
-
-
"unicode-properties": ["unicode-properties@1.4.1", "", { "dependencies": { "base64-js": "^1.3.0", "unicode-trie": "^2.0.0" } }, "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg=="],
-
-
"unicode-trie": ["unicode-trie@2.0.0", "", { "dependencies": { "pako": "^0.2.5", "tiny-inflate": "^1.0.0" } }, "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ=="],
-
-
"unified": ["unified@11.0.5", "", { "dependencies": { "@types/unist": "^3.0.0", "bail": "^2.0.0", "devlop": "^1.0.0", "extend": "^3.0.0", "is-plain-obj": "^4.0.0", "trough": "^2.0.0", "vfile": "^6.0.0" } }, "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA=="],
-
-
"unifont": ["unifont@0.5.2", "", { "dependencies": { "css-tree": "^3.0.0", "ofetch": "^1.4.1", "ohash": "^2.0.0" } }, "sha512-LzR4WUqzH9ILFvjLAUU7dK3Lnou/qd5kD+IakBtBK4S15/+x2y9VX+DcWQv6s551R6W+vzwgVS6tFg3XggGBgg=="],
-
-
"unist-util-find-after": ["unist-util-find-after@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ=="],
-
-
"unist-util-is": ["unist-util-is@6.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw=="],
-
-
"unist-util-modify-children": ["unist-util-modify-children@4.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "array-iterate": "^2.0.0" } }, "sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw=="],
-
-
"unist-util-position": ["unist-util-position@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA=="],
-
-
"unist-util-remove-position": ["unist-util-remove-position@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-visit": "^5.0.0" } }, "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q=="],
-
-
"unist-util-stringify-position": ["unist-util-stringify-position@4.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ=="],
-
-
"unist-util-visit": ["unist-util-visit@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg=="],
-
-
"unist-util-visit-children": ["unist-util-visit-children@3.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA=="],
-
-
"unist-util-visit-parents": ["unist-util-visit-parents@6.0.1", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw=="],
-
-
"unstorage": ["unstorage@1.17.0", "", { "dependencies": { "anymatch": "^3.1.3", "chokidar": "^4.0.3", "destr": "^2.0.5", "h3": "^1.15.4", "lru-cache": "^10.4.3", "node-fetch-native": "^1.6.7", "ofetch": "^1.4.1", "ufo": "^1.6.1" }, "peerDependencies": { "@azure/app-configuration": "^1.8.0", "@azure/cosmos": "^4.2.0", "@azure/data-tables": "^13.3.0", "@azure/identity": "^4.6.0", "@azure/keyvault-secrets": "^4.9.0", "@azure/storage-blob": "^12.26.0", "@capacitor/preferences": "^6.0.3 || ^7.0.0", "@deno/kv": ">=0.9.0", "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", "@planetscale/database": "^1.19.0", "@upstash/redis": "^1.34.3", "@vercel/blob": ">=0.27.1", "@vercel/functions": "^2.2.12", "@vercel/kv": "^1.0.1", "aws4fetch": "^1.0.20", "db0": ">=0.2.1", "idb-keyval": "^6.2.1", "ioredis": "^5.4.2", "uploadthing": "^7.4.4" }, "optionalPeers": ["@azure/app-configuration", "@azure/cosmos", "@azure/data-tables", "@azure/identity", "@azure/keyvault-secrets", "@azure/storage-blob", "@capacitor/preferences", "@deno/kv", "@netlify/blobs", "@planetscale/database", "@upstash/redis", "@vercel/blob", "@vercel/functions", "@vercel/kv", "aws4fetch", "db0", "idb-keyval", "ioredis", "uploadthing"] }, "sha512-l9Z7lBiwtNp8ZmcoZ/dmPkFXFdtEdZtTZafCSnEIj3YvtkXeGAtL2rN8MQFy/0cs4eOLpuRJMp9ivdug7TCvww=="],
-
-
"vfile": ["vfile@6.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "vfile-message": "^4.0.0" } }, "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q=="],
-
-
"vfile-location": ["vfile-location@5.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "vfile": "^6.0.0" } }, "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg=="],
-
-
"vfile-message": ["vfile-message@4.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw=="],
-
-
"vite": ["vite@6.3.5", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", "picomatch": "^4.0.2", "postcss": "^8.5.3", "rollup": "^4.34.9", "tinyglobby": "^0.2.13" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ=="],
-
-
"vitefu": ["vitefu@1.1.1", "", { "peerDependencies": { "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0" }, "optionalPeers": ["vite"] }, "sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ=="],
-
-
"web-namespaces": ["web-namespaces@2.0.1", "", {}, "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ=="],
-
-
"web-streams-polyfill": ["web-streams-polyfill@3.3.3", "", {}, "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw=="],
-
-
"webidl-conversions": ["webidl-conversions@3.0.1", "", {}, "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="],
-
-
"whatwg-url": ["whatwg-url@5.0.0", "", { "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } }, "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw=="],
-
-
"which-pm-runs": ["which-pm-runs@1.1.0", "", {}, "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA=="],
-
-
"widest-line": ["widest-line@5.0.0", "", { "dependencies": { "string-width": "^7.0.0" } }, "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA=="],
-
-
"wrap-ansi": ["wrap-ansi@9.0.0", "", { "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", "strip-ansi": "^7.1.0" } }, "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q=="],
-
-
"ws": ["ws@8.18.3", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg=="],
-
-
"xxhash-wasm": ["xxhash-wasm@1.1.0", "", {}, "sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA=="],
-
-
"yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="],
-
-
"yocto-queue": ["yocto-queue@1.2.1", "", {}, "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg=="],
-
-
"yocto-spinner": ["yocto-spinner@0.2.3", "", { "dependencies": { "yoctocolors": "^2.1.1" } }, "sha512-sqBChb33loEnkoXte1bLg45bEBsOP9N1kzQh5JZNKj/0rik4zAPTNSAVPj3uQAdc6slYJ0Ksc403G2XgxsJQFQ=="],
-
-
"yoctocolors": ["yoctocolors@2.1.2", "", {}, "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug=="],
-
-
"zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="],
-
-
"zod-to-json-schema": ["zod-to-json-schema@3.24.6", "", { "peerDependencies": { "zod": "^3.24.1" } }, "sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg=="],
-
-
"zod-to-ts": ["zod-to-ts@1.2.0", "", { "peerDependencies": { "typescript": "^4.9.4 || ^5.0.2", "zod": "^3" } }, "sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA=="],
-
-
"zwitch": ["zwitch@2.0.4", "", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="],
-
-
"@rollup/pluginutils/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="],
-
-
"ansi-align/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],
-
-
"anymatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="],
-
-
"cross-fetch/node-fetch": ["node-fetch@2.7.0", "", { "dependencies": { "whatwg-url": "^5.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "optionalPeers": ["encoding"] }, "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A=="],
-
-
"hast-util-to-parse5/property-information": ["property-information@6.5.0", "", {}, "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig=="],
-
-
"http-errors/statuses": ["statuses@2.0.1", "", {}, "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="],
-
-
"libsql/detect-libc": ["detect-libc@2.0.2", "", {}, "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw=="],
-
-
"postcss/nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="],
-
-
"prompts/kleur": ["kleur@3.0.3", "", {}, "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="],
-
-
"ansi-align/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="],
-
-
"ansi-align/string-width/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
-
-
"ansi-align/string-width/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
-
}
-
}
+16 -2
db/config.ts
···
const Users = defineTable({
columns: {
id: column.number({ primaryKey: true }),
+
nickname: column.text({ unique: true, optional: true }),
userDid: column.text({ name: "user_did", unique: true }),
joinedAt: column.date({ name: "joined_at", default: NOW }),
},
···
const Works = defineTable({
columns: {
id: column.number({ primaryKey: true }),
+
uri: column.text({ unique: true, optional: true }),
+
slug: column.text({ unique: true }),
+
title: column.text(),
author: column.text({ references: () => Users.columns.userDid }),
-
// recordkey
-
title: column.text(),
content: column.text({ multiline: true }),
tags: column.json(),
createdAt: column.date({ name: "created_at", default: NOW }),
updatedAt: column.date({ name: "updated_at", optional: true }),
+
},
+
indexes: [
+
{ on: ["slug", "createdAt"], unique: true },
+
{ on: ["uri", "createdAt"], unique: true },
+
],
+
});
+
+
const Tags = defineTable({
+
columns: {
+
id: column.number({ primaryKey: true }),
+
type: column.text({ enum: ["character", "relationship", "series", "warnings"] }),
+
label: column.text(),
},
});
+12 -1
db/seed.ts
···
await db.insert(Users).values([
{ id: 1, userDid: "test" },
{ id: 2, userDid: "another" },
+
{ userDid: "did:plc:dg2qmmjic7mmecrbvpuhtvh6", nickname: "haetae" },
]);
await db.insert(Works).values([
-
{
+
{
+
slug: "1234",
author: "test",
title: "Hey there title",
content: "<p>i have evil html</p>",
tags: [{ label: "test", url: "#" }],
},
{
+
slug: "1235",
author: "another",
title: "Hello world",
content: "<p>whoag i have <b>BOLD</b></p>",
tags: [{ label: "label", url: "#" }],
},
+
{
+
uri: "at://did:plc:dg2qmmjic7mmecrbvpuhtvh6/moe.fanfics.works/3lyeiyq32ek2o",
+
slug: "1236",
+
author: "did:plc:dg2qmmjic7mmecrbvpuhtvh6",
+
title: "testing title",
+
content: "what's up?! <b>bold</b> and <em>italics</em> should work.",
+
tags: "hey",
+
}
]);
}
+35
lexicon/moe.fanfics/chapter.json
···
+
{
+
"lexicon": 1,
+
"id": "moe.fanfics.works.chapter",
+
"defs": {
+
"chapter": {
+
"type": "object",
+
"properties": {
+
"title": {
+
"type": "string",
+
"minLength": 1,
+
"maxLength": 1000,
+
"maxGraphemes": 1000
+
},
+
"authorsNote": {
+
"type": "string",
+
"minLength": 1,
+
"maxLength": 2560,
+
"maxGraphemes": 256
+
},
+
"content": {
+
"type": "string",
+
"minLength": 1
+
},
+
"createdAt": {
+
"type": "string",
+
"format": "datetime"
+
},
+
"updatedAt": {
+
"type": "string",
+
"format": "datetime"
+
}
+
}
+
}
+
}
+
}
+29
lexicon/moe.fanfics/comment.json
···
+
{
+
"lexicon": 1,
+
"id": "moe.fanfics.works.comment",
+
"defs": {
+
"main": {
+
"type": "record",
+
"key": "tid",
+
"record": {
+
"type": "object",
+
"properties": {
+
"content": {
+
"type": "string",
+
"minLength": 1,
+
"maxLength": 8096000,
+
"maxGraphemes": 4096000
+
},
+
"createdAt": {
+
"type": "string",
+
"format": "datetime"
+
},
+
"postedTo": {
+
"type": "string",
+
"format": "at-uri"
+
}
+
}
+
}
+
}
+
}
+
}
+55
lexicon/moe.fanfics/works.json
···
+
{
+
"lexicon": 1,
+
"id": "moe.fanfics.works",
+
"defs": {
+
"main": {
+
"type": "record",
+
"key": "tid",
+
"record": {
+
"type": "object",
+
"properties": {
+
"author": {
+
"type": "string",
+
"format": "at-identifier"
+
},
+
"title": {
+
"type": "string",
+
"minLength": 1,
+
"maxLength": 1280,
+
"maxGraphemes": 128
+
},
+
"tags": {
+
"type": "array",
+
"description": "Tags for content the work may be related to, for example 'fluff' or 'meta'",
+
"items": {
+
"type": "string"
+
}
+
},
+
"summary": {
+
"type": "string",
+
"minLength": 1,
+
"maxLength": 3000,
+
"maxGraphemes": 300
+
},
+
"chapters": {
+
"type": "array",
+
"items": {
+
"type": "union",
+
"refs": [
+
"moe.fanfics.works.chapter"
+
]
+
}
+
},
+
"createdAt": {
+
"type": "string",
+
"format": "datetime"
+
},
+
"updatedAt": {
+
"type": "string",
+
"format": "datetime"
+
}
+
}
+
}
+
}
+
}
+
}
+17 -4
package.json
···
"name": "atproto-ao3",
"version": "0.0.1",
"dependencies": {
-
"@astrojs/db": "^0.17.1",
+
"@astrojs/db": "^0.17.2",
"@astrojs/node": "^9.4.3",
-
"@fujocoded/authproto": "^0.0.4",
-
"astro": "^5.13.5"
+
"@atproto/api": "^0.16.9",
+
"@floating-ui/dom": "^1.7.4",
+
"@fujocoded/authproto": "^0.1.1",
+
"@lucide/astro": "^0.542.0",
+
"@tailwindcss/vite": "^4.1.13",
+
"astro": "^5.13.7",
+
"nanoid": "^5.1.5",
+
"tailwindcss": "^4.1.13"
},
"scripts": {
"dev": "astro dev",
···
"preview": "astro preview",
"astro": "astro"
},
-
"type": "module"
+
"type": "module",
+
"devDependencies": {
+
"@tailwindcss/typography": "^0.5.16",
+
"daisyui": "^5.1.10"
+
},
+
"trustedDependencies": [
+
"@tailwindcss/oxide"
+
]
}
+4526
pnpm-lock.yaml
···
+
lockfileVersion: '9.0'
+
+
settings:
+
autoInstallPeers: true
+
excludeLinksFromLockfile: false
+
+
importers:
+
+
.:
+
dependencies:
+
'@astrojs/db':
+
specifier: ^0.17.2
+
version: 0.17.2
+
'@astrojs/node':
+
specifier: ^9.4.3
+
version: 9.4.3(astro@5.13.7(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.50.1)(typescript@5.9.2))
+
'@atproto/api':
+
specifier: ^0.16.9
+
version: 0.16.9
+
'@floating-ui/dom':
+
specifier: ^1.7.4
+
version: 1.7.4
+
'@fujocoded/authproto':
+
specifier: ^0.1.1
+
version: 0.1.1(astro@5.13.7(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.50.1)(typescript@5.9.2))
+
'@lucide/astro':
+
specifier: ^0.542.0
+
version: 0.542.0(astro@5.13.7(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.50.1)(typescript@5.9.2))
+
'@tailwindcss/vite':
+
specifier: ^4.1.13
+
version: 4.1.13(vite@6.3.6(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1))
+
astro:
+
specifier: ^5.13.7
+
version: 5.13.7(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.50.1)(typescript@5.9.2)
+
nanoid:
+
specifier: ^5.1.5
+
version: 5.1.5
+
tailwindcss:
+
specifier: ^4.1.13
+
version: 4.1.13
+
devDependencies:
+
'@tailwindcss/typography':
+
specifier: ^0.5.16
+
version: 0.5.16(tailwindcss@4.1.13)
+
daisyui:
+
specifier: ^5.1.10
+
version: 5.1.10
+
+
packages:
+
+
'@astrojs/compiler@2.12.2':
+
resolution: {integrity: sha512-w2zfvhjNCkNMmMMOn5b0J8+OmUaBL1o40ipMvqcG6NRpdC+lKxmTi48DT8Xw0SzJ3AfmeFLB45zXZXtmbsjcgw==}
+
+
'@astrojs/db@0.17.2':
+
resolution: {integrity: sha512-rFkw8Cj/kLwr63n1bS/sUw3hNywyvTkPZbKCdwAqd9FfbH3LdN+dH29XwmBC0NhXOxK3wA1jZBRsOOxpcVkV5w==}
+
+
'@astrojs/internal-helpers@0.7.2':
+
resolution: {integrity: sha512-KCkCqR3Goym79soqEtbtLzJfqhTWMyVaizUi35FLzgGSzBotSw8DB1qwsu7U96ihOJgYhDk2nVPz+3LnXPeX6g==}
+
+
'@astrojs/markdown-remark@6.3.6':
+
resolution: {integrity: sha512-bwylYktCTsLMVoCOEHbn2GSUA3c5KT/qilekBKA3CBng0bo1TYjNZPr761vxumRk9kJGqTOtU+fgCAp5Vwokug==}
+
+
'@astrojs/node@9.4.3':
+
resolution: {integrity: sha512-P9BQHY8wQU1y9obknXzxV5SS3EpdaRnuDuHKr3RFC7t+2AzcMXeVmMJprQGijnQ8VdijJ8aS7+12tx325TURMQ==}
+
peerDependencies:
+
astro: ^5.7.0
+
+
'@astrojs/prism@3.3.0':
+
resolution: {integrity: sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ==}
+
engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0}
+
+
'@astrojs/telemetry@3.3.0':
+
resolution: {integrity: sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ==}
+
engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0}
+
+
'@atproto-labs/did-resolver@0.2.1':
+
resolution: {integrity: sha512-zSoHyqwwRYUtMNLW+RrWsImt1U5S47nJv5FfmAXTmon6wVKjxKD/PFrD1pg/4G6THqJmQHTs1Hj+54XVupYnvQ==}
+
+
'@atproto-labs/fetch-node@0.1.10':
+
resolution: {integrity: sha512-o7hGaonA71A6p7O107VhM6UBUN/g9tTyYohMp1q0Kf6xQ4npnuZYRSHSf2g6reSfGQJ1GoFNjBObETTT1ge/jQ==}
+
engines: {node: '>=18.7.0'}
+
+
'@atproto-labs/fetch@0.2.3':
+
resolution: {integrity: sha512-NZtbJOCbxKUFRFKMpamT38PUQMY0hX0p7TG5AEYOPhZKZEP7dHZ1K2s1aB8MdVH0qxmqX7nQleNrrvLf09Zfdw==}
+
+
'@atproto-labs/handle-resolver-node@0.1.19':
+
resolution: {integrity: sha512-nNVCfiKudvMYfDcWCa9koOMOpCYaC0wG4Uys5dZev99s/Nka7tRlIZIV+u+GWivnG9lqCupKATkoyCd6Per8Gw==}
+
engines: {node: '>=18.7.0'}
+
+
'@atproto-labs/handle-resolver@0.3.1':
+
resolution: {integrity: sha512-mLZdMNvwomgnn9sffKO1/xr02ctgeiT0FUVw7JekbchTckub2RM7qMu8Rw1mC4bpCpW+i7DXDiOxpoajkppwYQ==}
+
+
'@atproto-labs/identity-resolver@0.3.1':
+
resolution: {integrity: sha512-jCgotRRqPykPwh4gh0FBLOqeofv1G8OH/DZ5s88HWm7biUZeksZwDrEvL5TnqEFUpXT3O9Hcyp/XEpfCAplRoQ==}
+
+
'@atproto-labs/pipe@0.1.1':
+
resolution: {integrity: sha512-hdNw2oUs2B6BN1lp+32pF7cp8EMKuIN5Qok2Vvv/aOpG/3tNSJ9YkvfI0k6Zd188LeDDYRUpYpxcoFIcGH/FNg==}
+
+
'@atproto-labs/simple-store-memory@0.1.4':
+
resolution: {integrity: sha512-3mKY4dP8I7yKPFj9VKpYyCRzGJOi5CEpOLPlRhoJyLmgs3J4RzDrjn323Oakjz2Aj2JzRU/AIvWRAZVhpYNJHw==}
+
+
'@atproto-labs/simple-store@0.3.0':
+
resolution: {integrity: sha512-nOb6ONKBRJHRlukW1sVawUkBqReLlLx6hT35VS3imaNPwiXDxLnTK7lxw3Lrl9k5yugSBDQAkZAq3MPTEFSUBQ==}
+
+
'@atproto/api@0.16.9':
+
resolution: {integrity: sha512-hXbnBIDEIwXxxyduxxZsf0aP8Z+JKyfG7L47FZqAYOI6uNm8oBTLLrHQ2RmJZZeyMIMM17gvxNtPDoULKQfupw==}
+
+
'@atproto/common-web@0.4.3':
+
resolution: {integrity: sha512-nRDINmSe4VycJzPo6fP/hEltBcULFxt9Kw7fQk6405FyAWZiTluYHlXOnU7GkQfeUK44OENG1qFTBcmCJ7e8pg==}
+
+
'@atproto/crypto@0.4.4':
+
resolution: {integrity: sha512-Yq9+crJ7WQl7sxStVpHgie5Z51R05etaK9DLWYG/7bR5T4bhdcIgF6IfklLShtZwLYdVVj+K15s0BqW9a8PSDA==}
+
engines: {node: '>=18.7.0'}
+
+
'@atproto/did@0.2.0':
+
resolution: {integrity: sha512-BskT39KYbwY1DUsWekkHh47xS+wvJpFq5F9acsicNfYniinyAMnNTzGKQEhnjQuG7K0qQItg/SnmC+y0tJXV7Q==}
+
+
'@atproto/identity@0.4.9':
+
resolution: {integrity: sha512-pRYCaeaEJMZ4vQlRQYYTrF3cMiRp21n/k/pUT1o7dgKby56zuLErDmFXkbKfKWPf7SgWRgamSaNmsGLqAOD7lQ==}
+
engines: {node: '>=18.7.0'}
+
+
'@atproto/jwk-jose@0.1.10':
+
resolution: {integrity: sha512-Eiu/u4tZHz3IIhHZt0zneYEffSAO3Oqk/ToKwlu1TqKte6sjtPs/4uquSiAAGFYozqgo92JC/AQclWzzkHI5QQ==}
+
+
'@atproto/jwk-webcrypto@0.1.10':
+
resolution: {integrity: sha512-JZsavs6JiSmw5rgcjkGDwzr1aCJGdybZOjVfYH+m9sXRU1BrUCA30uwNfZY7eFyWXyRAnCFiYiGVZgypXyKotw==}
+
+
'@atproto/jwk@0.5.0':
+
resolution: {integrity: sha512-Qi2NtEqhkG+uz3CKia4+H05WMV/z//dz3ESo5+cyBKrOnxVTJ5ZubMyltWjoYvy6v/jLhorXdDWcjn07yky7MQ==}
+
+
'@atproto/lexicon@0.5.1':
+
resolution: {integrity: sha512-y8AEtYmfgVl4fqFxqXAeGvhesiGkxiy3CWoJIfsFDDdTlZUC8DFnZrYhcqkIop3OlCkkljvpSJi1hbeC1tbi8A==}
+
+
'@atproto/oauth-client-node@0.3.8':
+
resolution: {integrity: sha512-HIBiYQERj04Xa0l8cJkqcZC0BbHH5uqDEvhqHWnJ5umSq/ms0+HZi3JKJXGv1XfYOvxUxx6NKgXJ8VhhYoQa5A==}
+
engines: {node: '>=18.7.0'}
+
+
'@atproto/oauth-client@0.5.6':
+
resolution: {integrity: sha512-O1S9lPptJxWPcNd2kODaLgWntz+A7PzskU2hP4IFa7hVLs4aEnEt9dKq5wJE97tDli8mgyh/ndPQhxUaCVQ5iQ==}
+
+
'@atproto/oauth-types@0.4.1':
+
resolution: {integrity: sha512-c5ixf2ZOzcltOu1fDBnO/tok6Wj7JDDK66+Z0q/+bAr8LXgOnxP7zQfJ+DD4gTkB+saTqsqWtVv8qvx/IEtm1g==}
+
+
'@atproto/syntax@0.4.1':
+
resolution: {integrity: sha512-CJdImtLAiFO+0z3BWTtxwk6aY5w4t8orHTMVJgkf++QRJWTxPbIFko/0hrkADB7n2EruDxDSeAgfUGehpH6ngw==}
+
+
'@atproto/xrpc@0.7.5':
+
resolution: {integrity: sha512-MUYNn5d2hv8yVegRL0ccHvTHAVj5JSnW07bkbiaz96UH45lvYNRVwt44z+yYVnb0/mvBzyD3/ZQ55TRGt7fHkA==}
+
+
'@babel/helper-string-parser@7.27.1':
+
resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
+
engines: {node: '>=6.9.0'}
+
+
'@babel/helper-validator-identifier@7.27.1':
+
resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==}
+
engines: {node: '>=6.9.0'}
+
+
'@babel/parser@7.28.4':
+
resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==}
+
engines: {node: '>=6.0.0'}
+
hasBin: true
+
+
'@babel/types@7.28.4':
+
resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==}
+
engines: {node: '>=6.9.0'}
+
+
'@capsizecss/unpack@2.4.0':
+
resolution: {integrity: sha512-GrSU71meACqcmIUxPYOJvGKF0yryjN/L1aCuE9DViCTJI7bfkjgYDPD1zbNDcINJwSSP6UaBZY9GAbYDO7re0Q==}
+
+
'@emnapi/runtime@1.5.0':
+
resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==}
+
+
'@esbuild/aix-ppc64@0.25.9':
+
resolution: {integrity: sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==}
+
engines: {node: '>=18'}
+
cpu: [ppc64]
+
os: [aix]
+
+
'@esbuild/android-arm64@0.25.9':
+
resolution: {integrity: sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==}
+
engines: {node: '>=18'}
+
cpu: [arm64]
+
os: [android]
+
+
'@esbuild/android-arm@0.25.9':
+
resolution: {integrity: sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==}
+
engines: {node: '>=18'}
+
cpu: [arm]
+
os: [android]
+
+
'@esbuild/android-x64@0.25.9':
+
resolution: {integrity: sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==}
+
engines: {node: '>=18'}
+
cpu: [x64]
+
os: [android]
+
+
'@esbuild/darwin-arm64@0.25.9':
+
resolution: {integrity: sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==}
+
engines: {node: '>=18'}
+
cpu: [arm64]
+
os: [darwin]
+
+
'@esbuild/darwin-x64@0.25.9':
+
resolution: {integrity: sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==}
+
engines: {node: '>=18'}
+
cpu: [x64]
+
os: [darwin]
+
+
'@esbuild/freebsd-arm64@0.25.9':
+
resolution: {integrity: sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==}
+
engines: {node: '>=18'}
+
cpu: [arm64]
+
os: [freebsd]
+
+
'@esbuild/freebsd-x64@0.25.9':
+
resolution: {integrity: sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==}
+
engines: {node: '>=18'}
+
cpu: [x64]
+
os: [freebsd]
+
+
'@esbuild/linux-arm64@0.25.9':
+
resolution: {integrity: sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==}
+
engines: {node: '>=18'}
+
cpu: [arm64]
+
os: [linux]
+
+
'@esbuild/linux-arm@0.25.9':
+
resolution: {integrity: sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==}
+
engines: {node: '>=18'}
+
cpu: [arm]
+
os: [linux]
+
+
'@esbuild/linux-ia32@0.25.9':
+
resolution: {integrity: sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==}
+
engines: {node: '>=18'}
+
cpu: [ia32]
+
os: [linux]
+
+
'@esbuild/linux-loong64@0.25.9':
+
resolution: {integrity: sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==}
+
engines: {node: '>=18'}
+
cpu: [loong64]
+
os: [linux]
+
+
'@esbuild/linux-mips64el@0.25.9':
+
resolution: {integrity: sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==}
+
engines: {node: '>=18'}
+
cpu: [mips64el]
+
os: [linux]
+
+
'@esbuild/linux-ppc64@0.25.9':
+
resolution: {integrity: sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==}
+
engines: {node: '>=18'}
+
cpu: [ppc64]
+
os: [linux]
+
+
'@esbuild/linux-riscv64@0.25.9':
+
resolution: {integrity: sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==}
+
engines: {node: '>=18'}
+
cpu: [riscv64]
+
os: [linux]
+
+
'@esbuild/linux-s390x@0.25.9':
+
resolution: {integrity: sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==}
+
engines: {node: '>=18'}
+
cpu: [s390x]
+
os: [linux]
+
+
'@esbuild/linux-x64@0.25.9':
+
resolution: {integrity: sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==}
+
engines: {node: '>=18'}
+
cpu: [x64]
+
os: [linux]
+
+
'@esbuild/netbsd-arm64@0.25.9':
+
resolution: {integrity: sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==}
+
engines: {node: '>=18'}
+
cpu: [arm64]
+
os: [netbsd]
+
+
'@esbuild/netbsd-x64@0.25.9':
+
resolution: {integrity: sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==}
+
engines: {node: '>=18'}
+
cpu: [x64]
+
os: [netbsd]
+
+
'@esbuild/openbsd-arm64@0.25.9':
+
resolution: {integrity: sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==}
+
engines: {node: '>=18'}
+
cpu: [arm64]
+
os: [openbsd]
+
+
'@esbuild/openbsd-x64@0.25.9':
+
resolution: {integrity: sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==}
+
engines: {node: '>=18'}
+
cpu: [x64]
+
os: [openbsd]
+
+
'@esbuild/openharmony-arm64@0.25.9':
+
resolution: {integrity: sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==}
+
engines: {node: '>=18'}
+
cpu: [arm64]
+
os: [openharmony]
+
+
'@esbuild/sunos-x64@0.25.9':
+
resolution: {integrity: sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==}
+
engines: {node: '>=18'}
+
cpu: [x64]
+
os: [sunos]
+
+
'@esbuild/win32-arm64@0.25.9':
+
resolution: {integrity: sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==}
+
engines: {node: '>=18'}
+
cpu: [arm64]
+
os: [win32]
+
+
'@esbuild/win32-ia32@0.25.9':
+
resolution: {integrity: sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==}
+
engines: {node: '>=18'}
+
cpu: [ia32]
+
os: [win32]
+
+
'@esbuild/win32-x64@0.25.9':
+
resolution: {integrity: sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==}
+
engines: {node: '>=18'}
+
cpu: [x64]
+
os: [win32]
+
+
'@floating-ui/core@1.7.3':
+
resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==}
+
+
'@floating-ui/dom@1.7.4':
+
resolution: {integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==}
+
+
'@floating-ui/utils@0.2.10':
+
resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==}
+
+
'@fujocoded/authproto@0.1.1':
+
resolution: {integrity: sha512-UaVhcYVMfrfeypmM9BulnSxO9SFnwwP2R38XZNgKvJE0uLa0AJjyaUO5JRHxEVrrEC/F5mp+SnplopArpulPNA==}
+
peerDependencies:
+
astro: ^5.13.0
+
+
'@img/sharp-darwin-arm64@0.34.3':
+
resolution: {integrity: sha512-ryFMfvxxpQRsgZJqBd4wsttYQbCxsJksrv9Lw/v798JcQ8+w84mBWuXwl+TT0WJ/WrYOLaYpwQXi3sA9nTIaIg==}
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+
cpu: [arm64]
+
os: [darwin]
+
+
'@img/sharp-darwin-x64@0.34.3':
+
resolution: {integrity: sha512-yHpJYynROAj12TA6qil58hmPmAwxKKC7reUqtGLzsOHfP7/rniNGTL8tjWX6L3CTV4+5P4ypcS7Pp+7OB+8ihA==}
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+
cpu: [x64]
+
os: [darwin]
+
+
'@img/sharp-libvips-darwin-arm64@1.2.0':
+
resolution: {integrity: sha512-sBZmpwmxqwlqG9ueWFXtockhsxefaV6O84BMOrhtg/YqbTaRdqDE7hxraVE3y6gVM4eExmfzW4a8el9ArLeEiQ==}
+
cpu: [arm64]
+
os: [darwin]
+
+
'@img/sharp-libvips-darwin-x64@1.2.0':
+
resolution: {integrity: sha512-M64XVuL94OgiNHa5/m2YvEQI5q2cl9d/wk0qFTDVXcYzi43lxuiFTftMR1tOnFQovVXNZJ5TURSDK2pNe9Yzqg==}
+
cpu: [x64]
+
os: [darwin]
+
+
'@img/sharp-libvips-linux-arm64@1.2.0':
+
resolution: {integrity: sha512-RXwd0CgG+uPRX5YYrkzKyalt2OJYRiJQ8ED/fi1tq9WQW2jsQIn0tqrlR5l5dr/rjqq6AHAxURhj2DVjyQWSOA==}
+
cpu: [arm64]
+
os: [linux]
+
+
'@img/sharp-libvips-linux-arm@1.2.0':
+
resolution: {integrity: sha512-mWd2uWvDtL/nvIzThLq3fr2nnGfyr/XMXlq8ZJ9WMR6PXijHlC3ksp0IpuhK6bougvQrchUAfzRLnbsen0Cqvw==}
+
cpu: [arm]
+
os: [linux]
+
+
'@img/sharp-libvips-linux-ppc64@1.2.0':
+
resolution: {integrity: sha512-Xod/7KaDDHkYu2phxxfeEPXfVXFKx70EAFZ0qyUdOjCcxbjqyJOEUpDe6RIyaunGxT34Anf9ue/wuWOqBW2WcQ==}
+
cpu: [ppc64]
+
os: [linux]
+
+
'@img/sharp-libvips-linux-s390x@1.2.0':
+
resolution: {integrity: sha512-eMKfzDxLGT8mnmPJTNMcjfO33fLiTDsrMlUVcp6b96ETbnJmd4uvZxVJSKPQfS+odwfVaGifhsB07J1LynFehw==}
+
cpu: [s390x]
+
os: [linux]
+
+
'@img/sharp-libvips-linux-x64@1.2.0':
+
resolution: {integrity: sha512-ZW3FPWIc7K1sH9E3nxIGB3y3dZkpJlMnkk7z5tu1nSkBoCgw2nSRTFHI5pB/3CQaJM0pdzMF3paf9ckKMSE9Tg==}
+
cpu: [x64]
+
os: [linux]
+
+
'@img/sharp-libvips-linuxmusl-arm64@1.2.0':
+
resolution: {integrity: sha512-UG+LqQJbf5VJ8NWJ5Z3tdIe/HXjuIdo4JeVNADXBFuG7z9zjoegpzzGIyV5zQKi4zaJjnAd2+g2nna8TZvuW9Q==}
+
cpu: [arm64]
+
os: [linux]
+
+
'@img/sharp-libvips-linuxmusl-x64@1.2.0':
+
resolution: {integrity: sha512-SRYOLR7CXPgNze8akZwjoGBoN1ThNZoqpOgfnOxmWsklTGVfJiGJoC/Lod7aNMGA1jSsKWM1+HRX43OP6p9+6Q==}
+
cpu: [x64]
+
os: [linux]
+
+
'@img/sharp-linux-arm64@0.34.3':
+
resolution: {integrity: sha512-QdrKe3EvQrqwkDrtuTIjI0bu6YEJHTgEeqdzI3uWJOH6G1O8Nl1iEeVYRGdj1h5I21CqxSvQp1Yv7xeU3ZewbA==}
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+
cpu: [arm64]
+
os: [linux]
+
+
'@img/sharp-linux-arm@0.34.3':
+
resolution: {integrity: sha512-oBK9l+h6KBN0i3dC8rYntLiVfW8D8wH+NPNT3O/WBHeW0OQWCjfWksLUaPidsrDKpJgXp3G3/hkmhptAW0I3+A==}
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+
cpu: [arm]
+
os: [linux]
+
+
'@img/sharp-linux-ppc64@0.34.3':
+
resolution: {integrity: sha512-GLtbLQMCNC5nxuImPR2+RgrviwKwVql28FWZIW1zWruy6zLgA5/x2ZXk3mxj58X/tszVF69KK0Is83V8YgWhLA==}
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+
cpu: [ppc64]
+
os: [linux]
+
+
'@img/sharp-linux-s390x@0.34.3':
+
resolution: {integrity: sha512-3gahT+A6c4cdc2edhsLHmIOXMb17ltffJlxR0aC2VPZfwKoTGZec6u5GrFgdR7ciJSsHT27BD3TIuGcuRT0KmQ==}
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+
cpu: [s390x]
+
os: [linux]
+
+
'@img/sharp-linux-x64@0.34.3':
+
resolution: {integrity: sha512-8kYso8d806ypnSq3/Ly0QEw90V5ZoHh10yH0HnrzOCr6DKAPI6QVHvwleqMkVQ0m+fc7EH8ah0BB0QPuWY6zJQ==}
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+
cpu: [x64]
+
os: [linux]
+
+
'@img/sharp-linuxmusl-arm64@0.34.3':
+
resolution: {integrity: sha512-vAjbHDlr4izEiXM1OTggpCcPg9tn4YriK5vAjowJsHwdBIdx0fYRsURkxLG2RLm9gyBq66gwtWI8Gx0/ov+JKQ==}
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+
cpu: [arm64]
+
os: [linux]
+
+
'@img/sharp-linuxmusl-x64@0.34.3':
+
resolution: {integrity: sha512-gCWUn9547K5bwvOn9l5XGAEjVTTRji4aPTqLzGXHvIr6bIDZKNTA34seMPgM0WmSf+RYBH411VavCejp3PkOeQ==}
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+
cpu: [x64]
+
os: [linux]
+
+
'@img/sharp-wasm32@0.34.3':
+
resolution: {integrity: sha512-+CyRcpagHMGteySaWos8IbnXcHgfDn7pO2fiC2slJxvNq9gDipYBN42/RagzctVRKgxATmfqOSulgZv5e1RdMg==}
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+
cpu: [wasm32]
+
+
'@img/sharp-win32-arm64@0.34.3':
+
resolution: {integrity: sha512-MjnHPnbqMXNC2UgeLJtX4XqoVHHlZNd+nPt1kRPmj63wURegwBhZlApELdtxM2OIZDRv/DFtLcNhVbd1z8GYXQ==}
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+
cpu: [arm64]
+
os: [win32]
+
+
'@img/sharp-win32-ia32@0.34.3':
+
resolution: {integrity: sha512-xuCdhH44WxuXgOM714hn4amodJMZl3OEvf0GVTm0BEyMeA2to+8HEdRPShH0SLYptJY1uBw+SCFP9WVQi1Q/cw==}
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+
cpu: [ia32]
+
os: [win32]
+
+
'@img/sharp-win32-x64@0.34.3':
+
resolution: {integrity: sha512-OWwz05d++TxzLEv4VnsTz5CmZ6mI6S05sfQGEMrNrQcOEERbX46332IvE7pO/EUiw7jUrrS40z/M7kPyjfl04g==}
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+
cpu: [x64]
+
os: [win32]
+
+
'@isaacs/fs-minipass@4.0.1':
+
resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==}
+
engines: {node: '>=18.0.0'}
+
+
'@jridgewell/gen-mapping@0.3.13':
+
resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
+
+
'@jridgewell/remapping@2.3.5':
+
resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
+
+
'@jridgewell/resolve-uri@3.1.2':
+
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
+
engines: {node: '>=6.0.0'}
+
+
'@jridgewell/sourcemap-codec@1.5.5':
+
resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
+
+
'@jridgewell/trace-mapping@0.3.31':
+
resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
+
+
'@libsql/client@0.15.15':
+
resolution: {integrity: sha512-twC0hQxPNHPKfeOv3sNT6u2pturQjLcI+CnpTM0SjRpocEGgfiZ7DWKXLNnsothjyJmDqEsBQJ5ztq9Wlu470w==}
+
+
'@libsql/core@0.15.15':
+
resolution: {integrity: sha512-C88Z6UKl+OyuKKPwz224riz02ih/zHYI3Ho/LAcVOgjsunIRZoBw7fjRfaH9oPMmSNeQfhGklSG2il1URoOIsA==}
+
+
'@libsql/darwin-arm64@0.5.22':
+
resolution: {integrity: sha512-4B8ZlX3nIDPndfct7GNe0nI3Yw6ibocEicWdC4fvQbSs/jdq/RC2oCsoJxJ4NzXkvktX70C1J4FcmmoBy069UA==}
+
cpu: [arm64]
+
os: [darwin]
+
+
'@libsql/darwin-x64@0.5.22':
+
resolution: {integrity: sha512-ny2HYWt6lFSIdNFzUFIJ04uiW6finXfMNJ7wypkAD8Pqdm6nAByO+Fdqu8t7sD0sqJGeUCiOg480icjyQ2/8VA==}
+
cpu: [x64]
+
os: [darwin]
+
+
'@libsql/hrana-client@0.7.0':
+
resolution: {integrity: sha512-OF8fFQSkbL7vJY9rfuegK1R7sPgQ6kFMkDamiEccNUvieQ+3urzfDFI616oPl8V7T9zRmnTkSjMOImYCAVRVuw==}
+
+
'@libsql/isomorphic-fetch@0.3.1':
+
resolution: {integrity: sha512-6kK3SUK5Uu56zPq/Las620n5aS9xJq+jMBcNSOmjhNf/MUvdyji4vrMTqD7ptY7/4/CAVEAYDeotUz60LNQHtw==}
+
engines: {node: '>=18.0.0'}
+
+
'@libsql/isomorphic-ws@0.1.5':
+
resolution: {integrity: sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg==}
+
+
'@libsql/linux-arm-gnueabihf@0.5.22':
+
resolution: {integrity: sha512-3Uo3SoDPJe/zBnyZKosziRGtszXaEtv57raWrZIahtQDsjxBVjuzYQinCm9LRCJCUT5t2r5Z5nLDPJi2CwZVoA==}
+
cpu: [arm]
+
os: [linux]
+
+
'@libsql/linux-arm-musleabihf@0.5.22':
+
resolution: {integrity: sha512-LCsXh07jvSojTNJptT9CowOzwITznD+YFGGW+1XxUr7fS+7/ydUrpDfsMX7UqTqjm7xG17eq86VkWJgHJfvpNg==}
+
cpu: [arm]
+
os: [linux]
+
+
'@libsql/linux-arm64-gnu@0.5.22':
+
resolution: {integrity: sha512-KSdnOMy88c9mpOFKUEzPskSaF3VLflfSUCBwas/pn1/sV3pEhtMF6H8VUCd2rsedwoukeeCSEONqX7LLnQwRMA==}
+
cpu: [arm64]
+
os: [linux]
+
+
'@libsql/linux-arm64-musl@0.5.22':
+
resolution: {integrity: sha512-mCHSMAsDTLK5YH//lcV3eFEgiR23Ym0U9oEvgZA0667gqRZg/2px+7LshDvErEKv2XZ8ixzw3p1IrBzLQHGSsw==}
+
cpu: [arm64]
+
os: [linux]
+
+
'@libsql/linux-x64-gnu@0.5.22':
+
resolution: {integrity: sha512-kNBHaIkSg78Y4BqAdgjcR2mBilZXs4HYkAmi58J+4GRwDQZh5fIUWbnQvB9f95DkWUIGVeenqLRFY2pcTmlsew==}
+
cpu: [x64]
+
os: [linux]
+
+
'@libsql/linux-x64-musl@0.5.22':
+
resolution: {integrity: sha512-UZ4Xdxm4pu3pQXjvfJiyCzZop/9j/eA2JjmhMaAhe3EVLH2g11Fy4fwyUp9sT1QJYR1kpc2JLuybPM0kuXv/Tg==}
+
cpu: [x64]
+
os: [linux]
+
+
'@libsql/win32-x64-msvc@0.5.22':
+
resolution: {integrity: sha512-Fj0j8RnBpo43tVZUVoNK6BV/9AtDUM5S7DF3LB4qTYg1LMSZqi3yeCneUTLJD6XomQJlZzbI4mst89yspVSAnA==}
+
cpu: [x64]
+
os: [win32]
+
+
'@lucide/astro@0.542.0':
+
resolution: {integrity: sha512-W1WcrLm4iZgjy40fhkAX8EW5LA4mGK23pewBixfRYhMj/J00Tba3GgHOEls5JqAsvlwQc6ClOLYSYA3Spzzb7w==}
+
peerDependencies:
+
astro: ^4 || ^5
+
+
'@neon-rs/load@0.0.4':
+
resolution: {integrity: sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw==}
+
+
'@noble/curves@1.9.7':
+
resolution: {integrity: sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==}
+
engines: {node: ^14.21.3 || >=16}
+
+
'@noble/hashes@1.8.0':
+
resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==}
+
engines: {node: ^14.21.3 || >=16}
+
+
'@oslojs/encoding@1.1.0':
+
resolution: {integrity: sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==}
+
+
'@rollup/pluginutils@5.3.0':
+
resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==}
+
engines: {node: '>=14.0.0'}
+
peerDependencies:
+
rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
+
peerDependenciesMeta:
+
rollup:
+
optional: true
+
+
'@rollup/rollup-android-arm-eabi@4.50.1':
+
resolution: {integrity: sha512-HJXwzoZN4eYTdD8bVV22DN8gsPCAj3V20NHKOs8ezfXanGpmVPR7kalUHd+Y31IJp9stdB87VKPFbsGY3H/2ag==}
+
cpu: [arm]
+
os: [android]
+
+
'@rollup/rollup-android-arm64@4.50.1':
+
resolution: {integrity: sha512-PZlsJVcjHfcH53mOImyt3bc97Ep3FJDXRpk9sMdGX0qgLmY0EIWxCag6EigerGhLVuL8lDVYNnSo8qnTElO4xw==}
+
cpu: [arm64]
+
os: [android]
+
+
'@rollup/rollup-darwin-arm64@4.50.1':
+
resolution: {integrity: sha512-xc6i2AuWh++oGi4ylOFPmzJOEeAa2lJeGUGb4MudOtgfyyjr4UPNK+eEWTPLvmPJIY/pgw6ssFIox23SyrkkJw==}
+
cpu: [arm64]
+
os: [darwin]
+
+
'@rollup/rollup-darwin-x64@4.50.1':
+
resolution: {integrity: sha512-2ofU89lEpDYhdLAbRdeyz/kX3Y2lpYc6ShRnDjY35bZhd2ipuDMDi6ZTQ9NIag94K28nFMofdnKeHR7BT0CATw==}
+
cpu: [x64]
+
os: [darwin]
+
+
'@rollup/rollup-freebsd-arm64@4.50.1':
+
resolution: {integrity: sha512-wOsE6H2u6PxsHY/BeFHA4VGQN3KUJFZp7QJBmDYI983fgxq5Th8FDkVuERb2l9vDMs1D5XhOrhBrnqcEY6l8ZA==}
+
cpu: [arm64]
+
os: [freebsd]
+
+
'@rollup/rollup-freebsd-x64@4.50.1':
+
resolution: {integrity: sha512-A/xeqaHTlKbQggxCqispFAcNjycpUEHP52mwMQZUNqDUJFFYtPHCXS1VAG29uMlDzIVr+i00tSFWFLivMcoIBQ==}
+
cpu: [x64]
+
os: [freebsd]
+
+
'@rollup/rollup-linux-arm-gnueabihf@4.50.1':
+
resolution: {integrity: sha512-54v4okehwl5TaSIkpp97rAHGp7t3ghinRd/vyC1iXqXMfjYUTm7TfYmCzXDoHUPTTf36L8pr0E7YsD3CfB3ZDg==}
+
cpu: [arm]
+
os: [linux]
+
+
'@rollup/rollup-linux-arm-musleabihf@4.50.1':
+
resolution: {integrity: sha512-p/LaFyajPN/0PUHjv8TNyxLiA7RwmDoVY3flXHPSzqrGcIp/c2FjwPPP5++u87DGHtw+5kSH5bCJz0mvXngYxw==}
+
cpu: [arm]
+
os: [linux]
+
+
'@rollup/rollup-linux-arm64-gnu@4.50.1':
+
resolution: {integrity: sha512-2AbMhFFkTo6Ptna1zO7kAXXDLi7H9fGTbVaIq2AAYO7yzcAsuTNWPHhb2aTA6GPiP+JXh85Y8CiS54iZoj4opw==}
+
cpu: [arm64]
+
os: [linux]
+
+
'@rollup/rollup-linux-arm64-musl@4.50.1':
+
resolution: {integrity: sha512-Cgef+5aZwuvesQNw9eX7g19FfKX5/pQRIyhoXLCiBOrWopjo7ycfB292TX9MDcDijiuIJlx1IzJz3IoCPfqs9w==}
+
cpu: [arm64]
+
os: [linux]
+
+
'@rollup/rollup-linux-loongarch64-gnu@4.50.1':
+
resolution: {integrity: sha512-RPhTwWMzpYYrHrJAS7CmpdtHNKtt2Ueo+BlLBjfZEhYBhK00OsEqM08/7f+eohiF6poe0YRDDd8nAvwtE/Y62Q==}
+
cpu: [loong64]
+
os: [linux]
+
+
'@rollup/rollup-linux-ppc64-gnu@4.50.1':
+
resolution: {integrity: sha512-eSGMVQw9iekut62O7eBdbiccRguuDgiPMsw++BVUg+1K7WjZXHOg/YOT9SWMzPZA+w98G+Fa1VqJgHZOHHnY0Q==}
+
cpu: [ppc64]
+
os: [linux]
+
+
'@rollup/rollup-linux-riscv64-gnu@4.50.1':
+
resolution: {integrity: sha512-S208ojx8a4ciIPrLgazF6AgdcNJzQE4+S9rsmOmDJkusvctii+ZvEuIC4v/xFqzbuP8yDjn73oBlNDgF6YGSXQ==}
+
cpu: [riscv64]
+
os: [linux]
+
+
'@rollup/rollup-linux-riscv64-musl@4.50.1':
+
resolution: {integrity: sha512-3Ag8Ls1ggqkGUvSZWYcdgFwriy2lWo+0QlYgEFra/5JGtAd6C5Hw59oojx1DeqcA2Wds2ayRgvJ4qxVTzCHgzg==}
+
cpu: [riscv64]
+
os: [linux]
+
+
'@rollup/rollup-linux-s390x-gnu@4.50.1':
+
resolution: {integrity: sha512-t9YrKfaxCYe7l7ldFERE1BRg/4TATxIg+YieHQ966jwvo7ddHJxPj9cNFWLAzhkVsbBvNA4qTbPVNsZKBO4NSg==}
+
cpu: [s390x]
+
os: [linux]
+
+
'@rollup/rollup-linux-x64-gnu@4.50.1':
+
resolution: {integrity: sha512-MCgtFB2+SVNuQmmjHf+wfI4CMxy3Tk8XjA5Z//A0AKD7QXUYFMQcns91K6dEHBvZPCnhJSyDWLApk40Iq/H3tA==}
+
cpu: [x64]
+
os: [linux]
+
+
'@rollup/rollup-linux-x64-musl@4.50.1':
+
resolution: {integrity: sha512-nEvqG+0jeRmqaUMuwzlfMKwcIVffy/9KGbAGyoa26iu6eSngAYQ512bMXuqqPrlTyfqdlB9FVINs93j534UJrg==}
+
cpu: [x64]
+
os: [linux]
+
+
'@rollup/rollup-openharmony-arm64@4.50.1':
+
resolution: {integrity: sha512-RDsLm+phmT3MJd9SNxA9MNuEAO/J2fhW8GXk62G/B4G7sLVumNFbRwDL6v5NrESb48k+QMqdGbHgEtfU0LCpbA==}
+
cpu: [arm64]
+
os: [openharmony]
+
+
'@rollup/rollup-win32-arm64-msvc@4.50.1':
+
resolution: {integrity: sha512-hpZB/TImk2FlAFAIsoElM3tLzq57uxnGYwplg6WDyAxbYczSi8O2eQ+H2Lx74504rwKtZ3N2g4bCUkiamzS6TQ==}
+
cpu: [arm64]
+
os: [win32]
+
+
'@rollup/rollup-win32-ia32-msvc@4.50.1':
+
resolution: {integrity: sha512-SXjv8JlbzKM0fTJidX4eVsH+Wmnp0/WcD8gJxIZyR6Gay5Qcsmdbi9zVtnbkGPG8v2vMR1AD06lGWy5FLMcG7A==}
+
cpu: [ia32]
+
os: [win32]
+
+
'@rollup/rollup-win32-x64-msvc@4.50.1':
+
resolution: {integrity: sha512-StxAO/8ts62KZVRAm4JZYq9+NqNsV7RvimNK+YM7ry//zebEH6meuugqW/P5OFUCjyQgui+9fUxT6d5NShvMvA==}
+
cpu: [x64]
+
os: [win32]
+
+
'@shikijs/core@3.12.2':
+
resolution: {integrity: sha512-L1Safnhra3tX/oJK5kYHaWmLEBJi1irASwewzY3taX5ibyXyMkkSDZlq01qigjryOBwrXSdFgTiZ3ryzSNeu7Q==}
+
+
'@shikijs/engine-javascript@3.12.2':
+
resolution: {integrity: sha512-Nm3/azSsaVS7hk6EwtHEnTythjQfwvrO5tKqMlaH9TwG1P+PNaR8M0EAKZ+GaH2DFwvcr4iSfTveyxMIvXEHMw==}
+
+
'@shikijs/engine-oniguruma@3.12.2':
+
resolution: {integrity: sha512-hozwnFHsLvujK4/CPVHNo3Bcg2EsnG8krI/ZQ2FlBlCRpPZW4XAEQmEwqegJsypsTAN9ehu2tEYe30lYKSZW/w==}
+
+
'@shikijs/langs@3.12.2':
+
resolution: {integrity: sha512-bVx5PfuZHDSHoBal+KzJZGheFuyH4qwwcwG/n+MsWno5cTlKmaNtTsGzJpHYQ8YPbB5BdEdKU1rga5/6JGY8ww==}
+
+
'@shikijs/themes@3.12.2':
+
resolution: {integrity: sha512-fTR3QAgnwYpfGczpIbzPjlRnxyONJOerguQv1iwpyQZ9QXX4qy/XFQqXlf17XTsorxnHoJGbH/LXBvwtqDsF5A==}
+
+
'@shikijs/types@3.12.2':
+
resolution: {integrity: sha512-K5UIBzxCyv0YoxN3LMrKB9zuhp1bV+LgewxuVwHdl4Gz5oePoUFrr9EfgJlGlDeXCU1b/yhdnXeuRvAnz8HN8Q==}
+
+
'@shikijs/vscode-textmate@10.0.2':
+
resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
+
+
'@swc/helpers@0.5.17':
+
resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==}
+
+
'@tailwindcss/node@4.1.13':
+
resolution: {integrity: sha512-eq3ouolC1oEFOAvOMOBAmfCIqZBJuvWvvYWh5h5iOYfe1HFC6+GZ6EIL0JdM3/niGRJmnrOc+8gl9/HGUaaptw==}
+
+
'@tailwindcss/oxide-android-arm64@4.1.13':
+
resolution: {integrity: sha512-BrpTrVYyejbgGo57yc8ieE+D6VT9GOgnNdmh5Sac6+t0m+v+sKQevpFVpwX3pBrM2qKrQwJ0c5eDbtjouY/+ew==}
+
engines: {node: '>= 10'}
+
cpu: [arm64]
+
os: [android]
+
+
'@tailwindcss/oxide-darwin-arm64@4.1.13':
+
resolution: {integrity: sha512-YP+Jksc4U0KHcu76UhRDHq9bx4qtBftp9ShK/7UGfq0wpaP96YVnnjFnj3ZFrUAjc5iECzODl/Ts0AN7ZPOANQ==}
+
engines: {node: '>= 10'}
+
cpu: [arm64]
+
os: [darwin]
+
+
'@tailwindcss/oxide-darwin-x64@4.1.13':
+
resolution: {integrity: sha512-aAJ3bbwrn/PQHDxCto9sxwQfT30PzyYJFG0u/BWZGeVXi5Hx6uuUOQEI2Fa43qvmUjTRQNZnGqe9t0Zntexeuw==}
+
engines: {node: '>= 10'}
+
cpu: [x64]
+
os: [darwin]
+
+
'@tailwindcss/oxide-freebsd-x64@4.1.13':
+
resolution: {integrity: sha512-Wt8KvASHwSXhKE/dJLCCWcTSVmBj3xhVhp/aF3RpAhGeZ3sVo7+NTfgiN8Vey/Fi8prRClDs6/f0KXPDTZE6nQ==}
+
engines: {node: '>= 10'}
+
cpu: [x64]
+
os: [freebsd]
+
+
'@tailwindcss/oxide-linux-arm-gnueabihf@4.1.13':
+
resolution: {integrity: sha512-mbVbcAsW3Gkm2MGwA93eLtWrwajz91aXZCNSkGTx/R5eb6KpKD5q8Ueckkh9YNboU8RH7jiv+ol/I7ZyQ9H7Bw==}
+
engines: {node: '>= 10'}
+
cpu: [arm]
+
os: [linux]
+
+
'@tailwindcss/oxide-linux-arm64-gnu@4.1.13':
+
resolution: {integrity: sha512-wdtfkmpXiwej/yoAkrCP2DNzRXCALq9NVLgLELgLim1QpSfhQM5+ZxQQF8fkOiEpuNoKLp4nKZ6RC4kmeFH0HQ==}
+
engines: {node: '>= 10'}
+
cpu: [arm64]
+
os: [linux]
+
+
'@tailwindcss/oxide-linux-arm64-musl@4.1.13':
+
resolution: {integrity: sha512-hZQrmtLdhyqzXHB7mkXfq0IYbxegaqTmfa1p9MBj72WPoDD3oNOh1Lnxf6xZLY9C3OV6qiCYkO1i/LrzEdW2mg==}
+
engines: {node: '>= 10'}
+
cpu: [arm64]
+
os: [linux]
+
+
'@tailwindcss/oxide-linux-x64-gnu@4.1.13':
+
resolution: {integrity: sha512-uaZTYWxSXyMWDJZNY1Ul7XkJTCBRFZ5Fo6wtjrgBKzZLoJNrG+WderJwAjPzuNZOnmdrVg260DKwXCFtJ/hWRQ==}
+
engines: {node: '>= 10'}
+
cpu: [x64]
+
os: [linux]
+
+
'@tailwindcss/oxide-linux-x64-musl@4.1.13':
+
resolution: {integrity: sha512-oXiPj5mi4Hdn50v5RdnuuIms0PVPI/EG4fxAfFiIKQh5TgQgX7oSuDWntHW7WNIi/yVLAiS+CRGW4RkoGSSgVQ==}
+
engines: {node: '>= 10'}
+
cpu: [x64]
+
os: [linux]
+
+
'@tailwindcss/oxide-wasm32-wasi@4.1.13':
+
resolution: {integrity: sha512-+LC2nNtPovtrDwBc/nqnIKYh/W2+R69FA0hgoeOn64BdCX522u19ryLh3Vf3F8W49XBcMIxSe665kwy21FkhvA==}
+
engines: {node: '>=14.0.0'}
+
cpu: [wasm32]
+
bundledDependencies:
+
- '@napi-rs/wasm-runtime'
+
- '@emnapi/core'
+
- '@emnapi/runtime'
+
- '@tybys/wasm-util'
+
- '@emnapi/wasi-threads'
+
- tslib
+
+
'@tailwindcss/oxide-win32-arm64-msvc@4.1.13':
+
resolution: {integrity: sha512-dziTNeQXtoQ2KBXmrjCxsuPk3F3CQ/yb7ZNZNA+UkNTeiTGgfeh+gH5Pi7mRncVgcPD2xgHvkFCh/MhZWSgyQg==}
+
engines: {node: '>= 10'}
+
cpu: [arm64]
+
os: [win32]
+
+
'@tailwindcss/oxide-win32-x64-msvc@4.1.13':
+
resolution: {integrity: sha512-3+LKesjXydTkHk5zXX01b5KMzLV1xl2mcktBJkje7rhFUpUlYJy7IMOLqjIRQncLTa1WZZiFY/foAeB5nmaiTw==}
+
engines: {node: '>= 10'}
+
cpu: [x64]
+
os: [win32]
+
+
'@tailwindcss/oxide@4.1.13':
+
resolution: {integrity: sha512-CPgsM1IpGRa880sMbYmG1s4xhAy3xEt1QULgTJGQmZUeNgXFR7s1YxYygmJyBGtou4SyEosGAGEeYqY7R53bIA==}
+
engines: {node: '>= 10'}
+
+
'@tailwindcss/typography@0.5.16':
+
resolution: {integrity: sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA==}
+
peerDependencies:
+
tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1'
+
+
'@tailwindcss/vite@4.1.13':
+
resolution: {integrity: sha512-0PmqLQ010N58SbMTJ7BVJ4I2xopiQn/5i6nlb4JmxzQf8zcS5+m2Cv6tqh+sfDwtIdjoEnOvwsGQ1hkUi8QEHQ==}
+
peerDependencies:
+
vite: ^5.2.0 || ^6 || ^7
+
+
'@types/debug@4.1.12':
+
resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
+
+
'@types/estree@1.0.8':
+
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
+
+
'@types/fontkit@2.0.8':
+
resolution: {integrity: sha512-wN+8bYxIpJf+5oZdrdtaX04qUuWHcKxcDEgRS9Qm9ZClSHjzEn13SxUC+5eRM+4yXIeTYk8mTzLAWGF64847ew==}
+
+
'@types/hast@3.0.4':
+
resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==}
+
+
'@types/mdast@4.0.4':
+
resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==}
+
+
'@types/ms@2.1.0':
+
resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
+
+
'@types/nlcst@2.0.3':
+
resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==}
+
+
'@types/node@24.3.1':
+
resolution: {integrity: sha512-3vXmQDXy+woz+gnrTvuvNrPzekOi+Ds0ReMxw0LzBiK3a+1k0kQn9f2NWk+lgD4rJehFUmYy2gMhJ2ZI+7YP9g==}
+
+
'@types/unist@3.0.3':
+
resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
+
+
'@types/ws@8.18.1':
+
resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==}
+
+
'@ungap/structured-clone@1.3.0':
+
resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
+
+
acorn@8.15.0:
+
resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==}
+
engines: {node: '>=0.4.0'}
+
hasBin: true
+
+
ansi-align@3.0.1:
+
resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==}
+
+
ansi-regex@5.0.1:
+
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
+
engines: {node: '>=8'}
+
+
ansi-regex@6.2.2:
+
resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==}
+
engines: {node: '>=12'}
+
+
ansi-styles@6.2.3:
+
resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==}
+
engines: {node: '>=12'}
+
+
anymatch@3.1.3:
+
resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
+
engines: {node: '>= 8'}
+
+
argparse@2.0.1:
+
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+
+
aria-query@5.3.2:
+
resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==}
+
engines: {node: '>= 0.4'}
+
+
array-iterate@2.0.1:
+
resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==}
+
+
astro-integration-kit@0.19.0:
+
resolution: {integrity: sha512-ftDrem91kJZoenhpJJfRtB29D/bmNglEp2oOXqF1uL5yODZauGIy3tDgIbec0UEMp6tNuky4tfWseUXpej5Dng==}
+
peerDependencies:
+
astro: ^4.14.0 || ^5.0.0
+
+
astro@5.13.7:
+
resolution: {integrity: sha512-Of2tST7ErbE4y1dVb4aWDXaQSIRBAfraJ4jDqaA3PzPRJOn6Ina36+tQ+8BezjYqiWwRRJdOEE07PRAJXnsddw==}
+
engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'}
+
hasBin: true
+
+
await-lock@2.2.2:
+
resolution: {integrity: sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==}
+
+
axobject-query@4.1.0:
+
resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
+
engines: {node: '>= 0.4'}
+
+
bail@2.0.2:
+
resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
+
+
base-64@1.0.0:
+
resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==}
+
+
base64-js@1.5.1:
+
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
+
+
blob-to-buffer@1.2.9:
+
resolution: {integrity: sha512-BF033y5fN6OCofD3vgHmNtwZWRcq9NLyyxyILx9hfMy1sXYy4ojFl765hJ2lP0YaN2fuxPaLO2Vzzoxy0FLFFA==}
+
+
boxen@8.0.1:
+
resolution: {integrity: sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==}
+
engines: {node: '>=18'}
+
+
brotli@1.3.3:
+
resolution: {integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==}
+
+
camelcase@8.0.0:
+
resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==}
+
engines: {node: '>=16'}
+
+
ccount@2.0.1:
+
resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
+
+
chalk@5.6.2:
+
resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==}
+
engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
+
+
character-entities-html4@2.1.0:
+
resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==}
+
+
character-entities-legacy@3.0.0:
+
resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==}
+
+
character-entities@2.0.2:
+
resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==}
+
+
chokidar@4.0.3:
+
resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
+
engines: {node: '>= 14.16.0'}
+
+
chownr@3.0.0:
+
resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==}
+
engines: {node: '>=18'}
+
+
ci-info@4.3.0:
+
resolution: {integrity: sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==}
+
engines: {node: '>=8'}
+
+
cli-boxes@3.0.0:
+
resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==}
+
engines: {node: '>=10'}
+
+
clone@2.1.2:
+
resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==}
+
engines: {node: '>=0.8'}
+
+
clsx@2.1.1:
+
resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
+
engines: {node: '>=6'}
+
+
color-convert@2.0.1:
+
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+
engines: {node: '>=7.0.0'}
+
+
color-name@1.1.4:
+
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+
+
color-string@1.9.1:
+
resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
+
+
color@4.2.3:
+
resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
+
engines: {node: '>=12.5.0'}
+
+
comma-separated-tokens@2.0.3:
+
resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
+
+
common-ancestor-path@1.0.1:
+
resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==}
+
+
cookie-es@1.2.2:
+
resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==}
+
+
cookie@1.0.2:
+
resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==}
+
engines: {node: '>=18'}
+
+
cross-fetch@3.2.0:
+
resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==}
+
+
crossws@0.3.5:
+
resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==}
+
+
css-tree@3.1.0:
+
resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==}
+
engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
+
+
cssesc@3.0.0:
+
resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
+
engines: {node: '>=4'}
+
hasBin: true
+
+
daisyui@5.1.10:
+
resolution: {integrity: sha512-p1J/HME2WmaSiy6u2alIbeP3gd5PNVft3+6Bdll0BRSm/UdI4084+pD01LxFug/5wGexNewWqbcEL6nB2n2o+Q==}
+
+
data-uri-to-buffer@4.0.1:
+
resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==}
+
engines: {node: '>= 12'}
+
+
debug@4.4.1:
+
resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==}
+
engines: {node: '>=6.0'}
+
peerDependencies:
+
supports-color: '*'
+
peerDependenciesMeta:
+
supports-color:
+
optional: true
+
+
decode-named-character-reference@1.2.0:
+
resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==}
+
+
deep-diff@1.0.2:
+
resolution: {integrity: sha512-aWS3UIVH+NPGCD1kki+DCU9Dua032iSsO43LqQpcs4R3+dVv7tX0qBGjiVHJHjplsoUM2XRO/KB92glqc68awg==}
+
+
defu@6.1.4:
+
resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==}
+
+
depd@2.0.0:
+
resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
+
engines: {node: '>= 0.8'}
+
+
dequal@2.0.3:
+
resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
+
engines: {node: '>=6'}
+
+
destr@2.0.5:
+
resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==}
+
+
detect-libc@2.0.2:
+
resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==}
+
engines: {node: '>=8'}
+
+
detect-libc@2.0.4:
+
resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==}
+
engines: {node: '>=8'}
+
+
deterministic-object-hash@2.0.2:
+
resolution: {integrity: sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==}
+
engines: {node: '>=18'}
+
+
devalue@5.3.2:
+
resolution: {integrity: sha512-UDsjUbpQn9kvm68slnrs+mfxwFkIflOhkanmyabZ8zOYk8SMEIbJ3TK+88g70hSIeytu4y18f0z/hYHMTrXIWw==}
+
+
devlop@1.1.0:
+
resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
+
+
dfa@1.2.0:
+
resolution: {integrity: sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==}
+
+
diff@5.2.0:
+
resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==}
+
engines: {node: '>=0.3.1'}
+
+
dlv@1.1.3:
+
resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
+
+
drizzle-orm@0.42.0:
+
resolution: {integrity: sha512-pS8nNJm2kBNZwrOjTHJfdKkaU+KuUQmV/vk5D57NojDq4FG+0uAYGMulXtYT///HfgsMF0hnFFvu1ezI3OwOkg==}
+
peerDependencies:
+
'@aws-sdk/client-rds-data': '>=3'
+
'@cloudflare/workers-types': '>=4'
+
'@electric-sql/pglite': '>=0.2.0'
+
'@libsql/client': '>=0.10.0'
+
'@libsql/client-wasm': '>=0.10.0'
+
'@neondatabase/serverless': '>=0.10.0'
+
'@op-engineering/op-sqlite': '>=2'
+
'@opentelemetry/api': ^1.4.1
+
'@planetscale/database': '>=1.13'
+
'@prisma/client': '*'
+
'@tidbcloud/serverless': '*'
+
'@types/better-sqlite3': '*'
+
'@types/pg': '*'
+
'@types/sql.js': '*'
+
'@vercel/postgres': '>=0.8.0'
+
'@xata.io/client': '*'
+
better-sqlite3: '>=7'
+
bun-types: '*'
+
expo-sqlite: '>=14.0.0'
+
gel: '>=2'
+
knex: '*'
+
kysely: '*'
+
mysql2: '>=2'
+
pg: '>=8'
+
postgres: '>=3'
+
prisma: '*'
+
sql.js: '>=1'
+
sqlite3: '>=5'
+
peerDependenciesMeta:
+
'@aws-sdk/client-rds-data':
+
optional: true
+
'@cloudflare/workers-types':
+
optional: true
+
'@electric-sql/pglite':
+
optional: true
+
'@libsql/client':
+
optional: true
+
'@libsql/client-wasm':
+
optional: true
+
'@neondatabase/serverless':
+
optional: true
+
'@op-engineering/op-sqlite':
+
optional: true
+
'@opentelemetry/api':
+
optional: true
+
'@planetscale/database':
+
optional: true
+
'@prisma/client':
+
optional: true
+
'@tidbcloud/serverless':
+
optional: true
+
'@types/better-sqlite3':
+
optional: true
+
'@types/pg':
+
optional: true
+
'@types/sql.js':
+
optional: true
+
'@vercel/postgres':
+
optional: true
+
'@xata.io/client':
+
optional: true
+
better-sqlite3:
+
optional: true
+
bun-types:
+
optional: true
+
expo-sqlite:
+
optional: true
+
gel:
+
optional: true
+
knex:
+
optional: true
+
kysely:
+
optional: true
+
mysql2:
+
optional: true
+
pg:
+
optional: true
+
postgres:
+
optional: true
+
prisma:
+
optional: true
+
sql.js:
+
optional: true
+
sqlite3:
+
optional: true
+
+
dset@3.1.4:
+
resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==}
+
engines: {node: '>=4'}
+
+
ee-first@1.1.1:
+
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
+
+
emoji-regex@10.5.0:
+
resolution: {integrity: sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==}
+
+
emoji-regex@8.0.0:
+
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+
+
encodeurl@2.0.0:
+
resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==}
+
engines: {node: '>= 0.8'}
+
+
enhanced-resolve@5.18.3:
+
resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==}
+
engines: {node: '>=10.13.0'}
+
+
entities@6.0.1:
+
resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==}
+
engines: {node: '>=0.12'}
+
+
es-module-lexer@1.7.0:
+
resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==}
+
+
esbuild@0.25.9:
+
resolution: {integrity: sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==}
+
engines: {node: '>=18'}
+
hasBin: true
+
+
escape-html@1.0.3:
+
resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
+
+
escape-string-regexp@5.0.0:
+
resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
+
engines: {node: '>=12'}
+
+
estree-walker@2.0.2:
+
resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
+
+
estree-walker@3.0.3:
+
resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
+
+
etag@1.8.1:
+
resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
+
engines: {node: '>= 0.6'}
+
+
eventemitter3@5.0.1:
+
resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
+
+
extend@3.0.2:
+
resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
+
+
fast-deep-equal@3.1.3:
+
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+
+
fdir@6.5.0:
+
resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
+
engines: {node: '>=12.0.0'}
+
peerDependencies:
+
picomatch: ^3 || ^4
+
peerDependenciesMeta:
+
picomatch:
+
optional: true
+
+
fetch-blob@3.2.0:
+
resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==}
+
engines: {node: ^12.20 || >= 14.13}
+
+
flattie@1.1.1:
+
resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==}
+
engines: {node: '>=8'}
+
+
fontace@0.3.0:
+
resolution: {integrity: sha512-czoqATrcnxgWb/nAkfyIrRp6Q8biYj7nGnL6zfhTcX+JKKpWHFBnb8uNMw/kZr7u++3Y3wYSYoZgHkCcsuBpBg==}
+
+
fontkit@2.0.4:
+
resolution: {integrity: sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g==}
+
+
formdata-polyfill@4.0.10:
+
resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==}
+
engines: {node: '>=12.20.0'}
+
+
fresh@2.0.0:
+
resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==}
+
engines: {node: '>= 0.8'}
+
+
fsevents@2.3.3:
+
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+
os: [darwin]
+
+
get-east-asian-width@1.4.0:
+
resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==}
+
engines: {node: '>=18'}
+
+
github-slugger@2.0.0:
+
resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==}
+
+
graceful-fs@4.2.11:
+
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
+
+
graphemer@1.4.0:
+
resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
+
+
h3@1.15.4:
+
resolution: {integrity: sha512-z5cFQWDffyOe4vQ9xIqNfCZdV4p//vy6fBnr8Q1AWnVZ0teurKMG66rLj++TKwKPUP3u7iMUvrvKaEUiQw2QWQ==}
+
+
hast-util-from-html@2.0.3:
+
resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==}
+
+
hast-util-from-parse5@8.0.3:
+
resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==}
+
+
hast-util-is-element@3.0.0:
+
resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==}
+
+
hast-util-parse-selector@4.0.0:
+
resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==}
+
+
hast-util-raw@9.1.0:
+
resolution: {integrity: sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==}
+
+
hast-util-to-html@9.0.5:
+
resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==}
+
+
hast-util-to-parse5@8.0.0:
+
resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==}
+
+
hast-util-to-text@4.0.2:
+
resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==}
+
+
hast-util-whitespace@3.0.0:
+
resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
+
+
hastscript@9.0.1:
+
resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==}
+
+
html-escaper@3.0.3:
+
resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==}
+
+
html-void-elements@3.0.0:
+
resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==}
+
+
http-cache-semantics@4.2.0:
+
resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==}
+
+
http-errors@2.0.0:
+
resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
+
engines: {node: '>= 0.8'}
+
+
import-meta-resolve@4.2.0:
+
resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==}
+
+
inherits@2.0.4:
+
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+
+
ipaddr.js@2.2.0:
+
resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==}
+
engines: {node: '>= 10'}
+
+
iron-webcrypto@1.2.1:
+
resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==}
+
+
is-arrayish@0.3.2:
+
resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
+
+
is-docker@3.0.0:
+
resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==}
+
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
hasBin: true
+
+
is-fullwidth-code-point@3.0.0:
+
resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
+
engines: {node: '>=8'}
+
+
is-inside-container@1.0.0:
+
resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==}
+
engines: {node: '>=14.16'}
+
hasBin: true
+
+
is-plain-obj@4.1.0:
+
resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
+
engines: {node: '>=12'}
+
+
is-wsl@3.1.0:
+
resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==}
+
engines: {node: '>=16'}
+
+
iso-datestring-validator@2.2.2:
+
resolution: {integrity: sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA==}
+
+
jiti@2.5.1:
+
resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==}
+
hasBin: true
+
+
jose@5.10.0:
+
resolution: {integrity: sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg==}
+
+
js-base64@3.7.8:
+
resolution: {integrity: sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow==}
+
+
js-yaml@4.1.0:
+
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
+
hasBin: true
+
+
kleur@3.0.3:
+
resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
+
engines: {node: '>=6'}
+
+
kleur@4.1.5:
+
resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
+
engines: {node: '>=6'}
+
+
libsql@0.5.22:
+
resolution: {integrity: sha512-NscWthMQt7fpU8lqd7LXMvT9pi+KhhmTHAJWUB/Lj6MWa0MKFv0F2V4C6WKKpjCVZl0VwcDz4nOI3CyaT1DDiA==}
+
cpu: [x64, arm64, wasm32, arm]
+
os: [darwin, linux, win32]
+
+
lightningcss-darwin-arm64@1.30.1:
+
resolution: {integrity: sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==}
+
engines: {node: '>= 12.0.0'}
+
cpu: [arm64]
+
os: [darwin]
+
+
lightningcss-darwin-x64@1.30.1:
+
resolution: {integrity: sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==}
+
engines: {node: '>= 12.0.0'}
+
cpu: [x64]
+
os: [darwin]
+
+
lightningcss-freebsd-x64@1.30.1:
+
resolution: {integrity: sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==}
+
engines: {node: '>= 12.0.0'}
+
cpu: [x64]
+
os: [freebsd]
+
+
lightningcss-linux-arm-gnueabihf@1.30.1:
+
resolution: {integrity: sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==}
+
engines: {node: '>= 12.0.0'}
+
cpu: [arm]
+
os: [linux]
+
+
lightningcss-linux-arm64-gnu@1.30.1:
+
resolution: {integrity: sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==}
+
engines: {node: '>= 12.0.0'}
+
cpu: [arm64]
+
os: [linux]
+
+
lightningcss-linux-arm64-musl@1.30.1:
+
resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==}
+
engines: {node: '>= 12.0.0'}
+
cpu: [arm64]
+
os: [linux]
+
+
lightningcss-linux-x64-gnu@1.30.1:
+
resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==}
+
engines: {node: '>= 12.0.0'}
+
cpu: [x64]
+
os: [linux]
+
+
lightningcss-linux-x64-musl@1.30.1:
+
resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==}
+
engines: {node: '>= 12.0.0'}
+
cpu: [x64]
+
os: [linux]
+
+
lightningcss-win32-arm64-msvc@1.30.1:
+
resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==}
+
engines: {node: '>= 12.0.0'}
+
cpu: [arm64]
+
os: [win32]
+
+
lightningcss-win32-x64-msvc@1.30.1:
+
resolution: {integrity: sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==}
+
engines: {node: '>= 12.0.0'}
+
cpu: [x64]
+
os: [win32]
+
+
lightningcss@1.30.1:
+
resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==}
+
engines: {node: '>= 12.0.0'}
+
+
lodash.castarray@4.4.0:
+
resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==}
+
+
lodash.isplainobject@4.0.6:
+
resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==}
+
+
lodash.merge@4.6.2:
+
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
+
+
longest-streak@3.1.0:
+
resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
+
+
lru-cache@10.4.3:
+
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
+
+
magic-string@0.30.19:
+
resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==}
+
+
magicast@0.3.5:
+
resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==}
+
+
markdown-table@3.0.4:
+
resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==}
+
+
mdast-util-definitions@6.0.0:
+
resolution: {integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==}
+
+
mdast-util-find-and-replace@3.0.2:
+
resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==}
+
+
mdast-util-from-markdown@2.0.2:
+
resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==}
+
+
mdast-util-gfm-autolink-literal@2.0.1:
+
resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==}
+
+
mdast-util-gfm-footnote@2.1.0:
+
resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==}
+
+
mdast-util-gfm-strikethrough@2.0.0:
+
resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==}
+
+
mdast-util-gfm-table@2.0.0:
+
resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==}
+
+
mdast-util-gfm-task-list-item@2.0.0:
+
resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==}
+
+
mdast-util-gfm@3.1.0:
+
resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==}
+
+
mdast-util-phrasing@4.1.0:
+
resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==}
+
+
mdast-util-to-hast@13.2.0:
+
resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==}
+
+
mdast-util-to-markdown@2.1.2:
+
resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==}
+
+
mdast-util-to-string@4.0.0:
+
resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==}
+
+
mdn-data@2.12.2:
+
resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==}
+
+
micromark-core-commonmark@2.0.3:
+
resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==}
+
+
micromark-extension-gfm-autolink-literal@2.1.0:
+
resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==}
+
+
micromark-extension-gfm-footnote@2.1.0:
+
resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==}
+
+
micromark-extension-gfm-strikethrough@2.1.0:
+
resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==}
+
+
micromark-extension-gfm-table@2.1.1:
+
resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==}
+
+
micromark-extension-gfm-tagfilter@2.0.0:
+
resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==}
+
+
micromark-extension-gfm-task-list-item@2.1.0:
+
resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==}
+
+
micromark-extension-gfm@3.0.0:
+
resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==}
+
+
micromark-factory-destination@2.0.1:
+
resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==}
+
+
micromark-factory-label@2.0.1:
+
resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==}
+
+
micromark-factory-space@2.0.1:
+
resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==}
+
+
micromark-factory-title@2.0.1:
+
resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==}
+
+
micromark-factory-whitespace@2.0.1:
+
resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==}
+
+
micromark-util-character@2.1.1:
+
resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==}
+
+
micromark-util-chunked@2.0.1:
+
resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==}
+
+
micromark-util-classify-character@2.0.1:
+
resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==}
+
+
micromark-util-combine-extensions@2.0.1:
+
resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==}
+
+
micromark-util-decode-numeric-character-reference@2.0.2:
+
resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==}
+
+
micromark-util-decode-string@2.0.1:
+
resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==}
+
+
micromark-util-encode@2.0.1:
+
resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==}
+
+
micromark-util-html-tag-name@2.0.1:
+
resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==}
+
+
micromark-util-normalize-identifier@2.0.1:
+
resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==}
+
+
micromark-util-resolve-all@2.0.1:
+
resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==}
+
+
micromark-util-sanitize-uri@2.0.1:
+
resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==}
+
+
micromark-util-subtokenize@2.1.0:
+
resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==}
+
+
micromark-util-symbol@2.0.1:
+
resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==}
+
+
micromark-util-types@2.0.2:
+
resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==}
+
+
micromark@4.0.2:
+
resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==}
+
+
mime-db@1.54.0:
+
resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==}
+
engines: {node: '>= 0.6'}
+
+
mime-types@3.0.1:
+
resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==}
+
engines: {node: '>= 0.6'}
+
+
minipass@7.1.2:
+
resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
+
engines: {node: '>=16 || 14 >=14.17'}
+
+
minizlib@3.0.2:
+
resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==}
+
engines: {node: '>= 18'}
+
+
mkdirp@3.0.1:
+
resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==}
+
engines: {node: '>=10'}
+
hasBin: true
+
+
mrmime@2.0.1:
+
resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==}
+
engines: {node: '>=10'}
+
+
ms@2.1.3:
+
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+
+
multiformats@9.9.0:
+
resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==}
+
+
nanoid@3.3.11:
+
resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
+
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+
hasBin: true
+
+
nanoid@5.1.5:
+
resolution: {integrity: sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw==}
+
engines: {node: ^18 || >=20}
+
hasBin: true
+
+
neotraverse@0.6.18:
+
resolution: {integrity: sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==}
+
engines: {node: '>= 10'}
+
+
nlcst-to-string@4.0.0:
+
resolution: {integrity: sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==}
+
+
node-domexception@1.0.0:
+
resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==}
+
engines: {node: '>=10.5.0'}
+
deprecated: Use your platform's native DOMException instead
+
+
node-fetch-native@1.6.7:
+
resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==}
+
+
node-fetch@2.7.0:
+
resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
+
engines: {node: 4.x || >=6.0.0}
+
peerDependencies:
+
encoding: ^0.1.0
+
peerDependenciesMeta:
+
encoding:
+
optional: true
+
+
node-fetch@3.3.2:
+
resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==}
+
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+
node-mock-http@1.0.3:
+
resolution: {integrity: sha512-jN8dK25fsfnMrVsEhluUTPkBFY+6ybu7jSB1n+ri/vOGjJxU8J9CZhpSGkHXSkFjtUhbmoncG/YG9ta5Ludqog==}
+
+
normalize-path@3.0.0:
+
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+
engines: {node: '>=0.10.0'}
+
+
ofetch@1.4.1:
+
resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==}
+
+
ohash@2.0.11:
+
resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==}
+
+
on-finished@2.4.1:
+
resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
+
engines: {node: '>= 0.8'}
+
+
oniguruma-parser@0.12.1:
+
resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==}
+
+
oniguruma-to-es@4.3.3:
+
resolution: {integrity: sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==}
+
+
p-limit@6.2.0:
+
resolution: {integrity: sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==}
+
engines: {node: '>=18'}
+
+
p-queue@8.1.1:
+
resolution: {integrity: sha512-aNZ+VfjobsWryoiPnEApGGmf5WmNsCo9xu8dfaYamG5qaLP7ClhLN6NgsFe6SwJ2UbLEBK5dv9x8Mn5+RVhMWQ==}
+
engines: {node: '>=18'}
+
+
p-timeout@6.1.4:
+
resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==}
+
engines: {node: '>=14.16'}
+
+
package-manager-detector@1.3.0:
+
resolution: {integrity: sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==}
+
+
pako@0.2.9:
+
resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==}
+
+
parse-latin@7.0.0:
+
resolution: {integrity: sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==}
+
+
parse5@7.3.0:
+
resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==}
+
+
pathe@1.1.2:
+
resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
+
+
picocolors@1.1.1:
+
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
+
+
picomatch@2.3.1:
+
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+
engines: {node: '>=8.6'}
+
+
picomatch@4.0.3:
+
resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
+
engines: {node: '>=12'}
+
+
postcss-selector-parser@6.0.10:
+
resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==}
+
engines: {node: '>=4'}
+
+
postcss@8.5.6:
+
resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
+
engines: {node: ^10 || ^12 || >=14}
+
+
prismjs@1.30.0:
+
resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==}
+
engines: {node: '>=6'}
+
+
promise-limit@2.7.0:
+
resolution: {integrity: sha512-7nJ6v5lnJsXwGprnGXga4wx6d1POjvi5Qmf1ivTRxTjH4Z/9Czja/UCMLVmB9N93GeWOU93XaFaEt6jbuoagNw==}
+
+
prompts@2.4.2:
+
resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==}
+
engines: {node: '>= 6'}
+
+
property-information@6.5.0:
+
resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==}
+
+
property-information@7.1.0:
+
resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==}
+
+
radix3@1.1.2:
+
resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==}
+
+
range-parser@1.2.1:
+
resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
+
engines: {node: '>= 0.6'}
+
+
readdirp@4.1.2:
+
resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
+
engines: {node: '>= 14.18.0'}
+
+
regex-recursion@6.0.2:
+
resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==}
+
+
regex-utilities@2.3.0:
+
resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==}
+
+
regex@6.0.1:
+
resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==}
+
+
rehype-parse@9.0.1:
+
resolution: {integrity: sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==}
+
+
rehype-raw@7.0.0:
+
resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==}
+
+
rehype-stringify@10.0.1:
+
resolution: {integrity: sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==}
+
+
rehype@13.0.2:
+
resolution: {integrity: sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A==}
+
+
remark-gfm@4.0.1:
+
resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==}
+
+
remark-parse@11.0.0:
+
resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==}
+
+
remark-rehype@11.1.2:
+
resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==}
+
+
remark-smartypants@3.0.2:
+
resolution: {integrity: sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==}
+
engines: {node: '>=16.0.0'}
+
+
remark-stringify@11.0.0:
+
resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==}
+
+
restructure@3.0.2:
+
resolution: {integrity: sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==}
+
+
retext-latin@4.0.0:
+
resolution: {integrity: sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==}
+
+
retext-smartypants@6.2.0:
+
resolution: {integrity: sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==}
+
+
retext-stringify@4.0.0:
+
resolution: {integrity: sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==}
+
+
retext@9.0.0:
+
resolution: {integrity: sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==}
+
+
rollup@4.50.1:
+
resolution: {integrity: sha512-78E9voJHwnXQMiQdiqswVLZwJIzdBKJ1GdI5Zx6XwoFKUIk09/sSrr+05QFzvYb8q6Y9pPV45zzDuYa3907TZA==}
+
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
+
hasBin: true
+
+
semver@7.7.2:
+
resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==}
+
engines: {node: '>=10'}
+
hasBin: true
+
+
send@1.2.0:
+
resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==}
+
engines: {node: '>= 18'}
+
+
server-destroy@1.0.1:
+
resolution: {integrity: sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==}
+
+
setprototypeof@1.2.0:
+
resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
+
+
sharp@0.34.3:
+
resolution: {integrity: sha512-eX2IQ6nFohW4DbvHIOLRB3MHFpYqaqvXd3Tp5e/T/dSH83fxaNJQRvDMhASmkNTsNTVF2/OOopzRCt7xokgPfg==}
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+
+
shiki@3.12.2:
+
resolution: {integrity: sha512-uIrKI+f9IPz1zDT+GMz+0RjzKJiijVr6WDWm9Pe3NNY6QigKCfifCEv9v9R2mDASKKjzjQ2QpFLcxaR3iHSnMA==}
+
+
simple-swizzle@0.2.2:
+
resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
+
+
sisteransi@1.0.5:
+
resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
+
+
smol-toml@1.4.2:
+
resolution: {integrity: sha512-rInDH6lCNiEyn3+hH8KVGFdbjc099j47+OSgbMrfDYX1CmXLfdKd7qi6IfcWj2wFxvSVkuI46M+wPGYfEOEj6g==}
+
engines: {node: '>= 18'}
+
+
source-map-js@1.2.1:
+
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
+
engines: {node: '>=0.10.0'}
+
+
space-separated-tokens@2.0.2:
+
resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
+
+
statuses@2.0.1:
+
resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
+
engines: {node: '>= 0.8'}
+
+
statuses@2.0.2:
+
resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==}
+
engines: {node: '>= 0.8'}
+
+
string-width@4.2.3:
+
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
+
engines: {node: '>=8'}
+
+
string-width@7.2.0:
+
resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==}
+
engines: {node: '>=18'}
+
+
stringify-entities@4.0.4:
+
resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==}
+
+
strip-ansi@6.0.1:
+
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
+
engines: {node: '>=8'}
+
+
strip-ansi@7.1.2:
+
resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==}
+
engines: {node: '>=12'}
+
+
tailwindcss@4.1.13:
+
resolution: {integrity: sha512-i+zidfmTqtwquj4hMEwdjshYYgMbOrPzb9a0M3ZgNa0JMoZeFC6bxZvO8yr8ozS6ix2SDz0+mvryPeBs2TFE+w==}
+
+
tapable@2.2.3:
+
resolution: {integrity: sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==}
+
engines: {node: '>=6'}
+
+
tar@7.4.3:
+
resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==}
+
engines: {node: '>=18'}
+
+
tiny-inflate@1.0.3:
+
resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==}
+
+
tinyexec@0.3.2:
+
resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==}
+
+
tinyglobby@0.2.15:
+
resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
+
engines: {node: '>=12.0.0'}
+
+
tlds@1.260.0:
+
resolution: {integrity: sha512-78+28EWBhCEE7qlyaHA9OR3IPvbCLiDh3Ckla593TksfFc9vfTsgvH7eS+dr3o9qr31gwGbogcI16yN91PoRjQ==}
+
hasBin: true
+
+
toidentifier@1.0.1:
+
resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
+
engines: {node: '>=0.6'}
+
+
tr46@0.0.3:
+
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
+
+
trim-lines@3.0.1:
+
resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
+
+
trough@2.2.0:
+
resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==}
+
+
tsconfck@3.1.6:
+
resolution: {integrity: sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==}
+
engines: {node: ^18 || >=20}
+
hasBin: true
+
peerDependencies:
+
typescript: ^5.0.0
+
peerDependenciesMeta:
+
typescript:
+
optional: true
+
+
tslib@2.8.1:
+
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
+
+
type-fest@4.41.0:
+
resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==}
+
engines: {node: '>=16'}
+
+
typescript@5.9.2:
+
resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==}
+
engines: {node: '>=14.17'}
+
hasBin: true
+
+
ufo@1.6.1:
+
resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==}
+
+
uint8arrays@3.0.0:
+
resolution: {integrity: sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==}
+
+
ultrahtml@1.6.0:
+
resolution: {integrity: sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==}
+
+
uncrypto@0.1.3:
+
resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==}
+
+
undici-types@7.10.0:
+
resolution: {integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==}
+
+
undici@6.21.3:
+
resolution: {integrity: sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw==}
+
engines: {node: '>=18.17'}
+
+
unicode-properties@1.4.1:
+
resolution: {integrity: sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==}
+
+
unicode-trie@2.0.0:
+
resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==}
+
+
unified@11.0.5:
+
resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==}
+
+
unifont@0.5.2:
+
resolution: {integrity: sha512-LzR4WUqzH9ILFvjLAUU7dK3Lnou/qd5kD+IakBtBK4S15/+x2y9VX+DcWQv6s551R6W+vzwgVS6tFg3XggGBgg==}
+
+
unist-util-find-after@5.0.0:
+
resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==}
+
+
unist-util-is@6.0.0:
+
resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==}
+
+
unist-util-modify-children@4.0.0:
+
resolution: {integrity: sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==}
+
+
unist-util-position@5.0.0:
+
resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==}
+
+
unist-util-remove-position@5.0.0:
+
resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==}
+
+
unist-util-stringify-position@4.0.0:
+
resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==}
+
+
unist-util-visit-children@3.0.0:
+
resolution: {integrity: sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==}
+
+
unist-util-visit-parents@6.0.1:
+
resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==}
+
+
unist-util-visit@5.0.0:
+
resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==}
+
+
unstorage@1.17.1:
+
resolution: {integrity: sha512-KKGwRTT0iVBCErKemkJCLs7JdxNVfqTPc/85ae1XES0+bsHbc/sFBfVi5kJp156cc51BHinIH2l3k0EZ24vOBQ==}
+
peerDependencies:
+
'@azure/app-configuration': ^1.8.0
+
'@azure/cosmos': ^4.2.0
+
'@azure/data-tables': ^13.3.0
+
'@azure/identity': ^4.6.0
+
'@azure/keyvault-secrets': ^4.9.0
+
'@azure/storage-blob': ^12.26.0
+
'@capacitor/preferences': ^6.0.3 || ^7.0.0
+
'@deno/kv': '>=0.9.0'
+
'@netlify/blobs': ^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0
+
'@planetscale/database': ^1.19.0
+
'@upstash/redis': ^1.34.3
+
'@vercel/blob': '>=0.27.1'
+
'@vercel/functions': ^2.2.12 || ^3.0.0
+
'@vercel/kv': ^1.0.1
+
aws4fetch: ^1.0.20
+
db0: '>=0.2.1'
+
idb-keyval: ^6.2.1
+
ioredis: ^5.4.2
+
uploadthing: ^7.4.4
+
peerDependenciesMeta:
+
'@azure/app-configuration':
+
optional: true
+
'@azure/cosmos':
+
optional: true
+
'@azure/data-tables':
+
optional: true
+
'@azure/identity':
+
optional: true
+
'@azure/keyvault-secrets':
+
optional: true
+
'@azure/storage-blob':
+
optional: true
+
'@capacitor/preferences':
+
optional: true
+
'@deno/kv':
+
optional: true
+
'@netlify/blobs':
+
optional: true
+
'@planetscale/database':
+
optional: true
+
'@upstash/redis':
+
optional: true
+
'@vercel/blob':
+
optional: true
+
'@vercel/functions':
+
optional: true
+
'@vercel/kv':
+
optional: true
+
aws4fetch:
+
optional: true
+
db0:
+
optional: true
+
idb-keyval:
+
optional: true
+
ioredis:
+
optional: true
+
uploadthing:
+
optional: true
+
+
util-deprecate@1.0.2:
+
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+
+
vfile-location@5.0.3:
+
resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==}
+
+
vfile-message@4.0.3:
+
resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==}
+
+
vfile@6.0.3:
+
resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
+
+
vite@6.3.6:
+
resolution: {integrity: sha512-0msEVHJEScQbhkbVTb/4iHZdJ6SXp/AvxL2sjwYQFfBqleHtnCqv1J3sa9zbWz/6kW1m9Tfzn92vW+kZ1WV6QA==}
+
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
+
hasBin: true
+
peerDependencies:
+
'@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0
+
jiti: '>=1.21.0'
+
less: '*'
+
lightningcss: ^1.21.0
+
sass: '*'
+
sass-embedded: '*'
+
stylus: '*'
+
sugarss: '*'
+
terser: ^5.16.0
+
tsx: ^4.8.1
+
yaml: ^2.4.2
+
peerDependenciesMeta:
+
'@types/node':
+
optional: true
+
jiti:
+
optional: true
+
less:
+
optional: true
+
lightningcss:
+
optional: true
+
sass:
+
optional: true
+
sass-embedded:
+
optional: true
+
stylus:
+
optional: true
+
sugarss:
+
optional: true
+
terser:
+
optional: true
+
tsx:
+
optional: true
+
yaml:
+
optional: true
+
+
vitefu@1.1.1:
+
resolution: {integrity: sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==}
+
peerDependencies:
+
vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0
+
peerDependenciesMeta:
+
vite:
+
optional: true
+
+
web-namespaces@2.0.1:
+
resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==}
+
+
web-streams-polyfill@3.3.3:
+
resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==}
+
engines: {node: '>= 8'}
+
+
webidl-conversions@3.0.1:
+
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
+
+
whatwg-url@5.0.0:
+
resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
+
+
which-pm-runs@1.1.0:
+
resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==}
+
engines: {node: '>=4'}
+
+
widest-line@5.0.0:
+
resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==}
+
engines: {node: '>=18'}
+
+
wrap-ansi@9.0.2:
+
resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==}
+
engines: {node: '>=18'}
+
+
ws@8.18.3:
+
resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==}
+
engines: {node: '>=10.0.0'}
+
peerDependencies:
+
bufferutil: ^4.0.1
+
utf-8-validate: '>=5.0.2'
+
peerDependenciesMeta:
+
bufferutil:
+
optional: true
+
utf-8-validate:
+
optional: true
+
+
xxhash-wasm@1.1.0:
+
resolution: {integrity: sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==}
+
+
yallist@5.0.0:
+
resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==}
+
engines: {node: '>=18'}
+
+
yargs-parser@21.1.1:
+
resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
+
engines: {node: '>=12'}
+
+
yocto-queue@1.2.1:
+
resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==}
+
engines: {node: '>=12.20'}
+
+
yocto-spinner@0.2.3:
+
resolution: {integrity: sha512-sqBChb33loEnkoXte1bLg45bEBsOP9N1kzQh5JZNKj/0rik4zAPTNSAVPj3uQAdc6slYJ0Ksc403G2XgxsJQFQ==}
+
engines: {node: '>=18.19'}
+
+
yoctocolors@2.1.2:
+
resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==}
+
engines: {node: '>=18'}
+
+
zod-to-json-schema@3.24.6:
+
resolution: {integrity: sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==}
+
peerDependencies:
+
zod: ^3.24.1
+
+
zod-to-ts@1.2.0:
+
resolution: {integrity: sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==}
+
peerDependencies:
+
typescript: ^4.9.4 || ^5.0.2
+
zod: ^3
+
+
zod@3.25.76:
+
resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==}
+
+
zwitch@2.0.4:
+
resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
+
+
snapshots:
+
+
'@astrojs/compiler@2.12.2': {}
+
+
'@astrojs/db@0.17.2':
+
dependencies:
+
'@libsql/client': 0.15.15
+
deep-diff: 1.0.2
+
drizzle-orm: 0.42.0(@libsql/client@0.15.15)
+
kleur: 4.1.5
+
nanoid: 5.1.5
+
prompts: 2.4.2
+
yargs-parser: 21.1.1
+
zod: 3.25.76
+
transitivePeerDependencies:
+
- '@aws-sdk/client-rds-data'
+
- '@cloudflare/workers-types'
+
- '@electric-sql/pglite'
+
- '@libsql/client-wasm'
+
- '@neondatabase/serverless'
+
- '@op-engineering/op-sqlite'
+
- '@opentelemetry/api'
+
- '@planetscale/database'
+
- '@prisma/client'
+
- '@tidbcloud/serverless'
+
- '@types/better-sqlite3'
+
- '@types/pg'
+
- '@types/sql.js'
+
- '@vercel/postgres'
+
- '@xata.io/client'
+
- better-sqlite3
+
- bufferutil
+
- bun-types
+
- expo-sqlite
+
- gel
+
- knex
+
- kysely
+
- mysql2
+
- pg
+
- postgres
+
- prisma
+
- sql.js
+
- sqlite3
+
- utf-8-validate
+
+
'@astrojs/internal-helpers@0.7.2': {}
+
+
'@astrojs/markdown-remark@6.3.6':
+
dependencies:
+
'@astrojs/internal-helpers': 0.7.2
+
'@astrojs/prism': 3.3.0
+
github-slugger: 2.0.0
+
hast-util-from-html: 2.0.3
+
hast-util-to-text: 4.0.2
+
import-meta-resolve: 4.2.0
+
js-yaml: 4.1.0
+
mdast-util-definitions: 6.0.0
+
rehype-raw: 7.0.0
+
rehype-stringify: 10.0.1
+
remark-gfm: 4.0.1
+
remark-parse: 11.0.0
+
remark-rehype: 11.1.2
+
remark-smartypants: 3.0.2
+
shiki: 3.12.2
+
smol-toml: 1.4.2
+
unified: 11.0.5
+
unist-util-remove-position: 5.0.0
+
unist-util-visit: 5.0.0
+
unist-util-visit-parents: 6.0.1
+
vfile: 6.0.3
+
transitivePeerDependencies:
+
- supports-color
+
+
'@astrojs/node@9.4.3(astro@5.13.7(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.50.1)(typescript@5.9.2))':
+
dependencies:
+
'@astrojs/internal-helpers': 0.7.2
+
astro: 5.13.7(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.50.1)(typescript@5.9.2)
+
send: 1.2.0
+
server-destroy: 1.0.1
+
transitivePeerDependencies:
+
- supports-color
+
+
'@astrojs/prism@3.3.0':
+
dependencies:
+
prismjs: 1.30.0
+
+
'@astrojs/telemetry@3.3.0':
+
dependencies:
+
ci-info: 4.3.0
+
debug: 4.4.1
+
dlv: 1.1.3
+
dset: 3.1.4
+
is-docker: 3.0.0
+
is-wsl: 3.1.0
+
which-pm-runs: 1.1.0
+
transitivePeerDependencies:
+
- supports-color
+
+
'@atproto-labs/did-resolver@0.2.1':
+
dependencies:
+
'@atproto-labs/fetch': 0.2.3
+
'@atproto-labs/pipe': 0.1.1
+
'@atproto-labs/simple-store': 0.3.0
+
'@atproto-labs/simple-store-memory': 0.1.4
+
'@atproto/did': 0.2.0
+
zod: 3.25.76
+
+
'@atproto-labs/fetch-node@0.1.10':
+
dependencies:
+
'@atproto-labs/fetch': 0.2.3
+
'@atproto-labs/pipe': 0.1.1
+
ipaddr.js: 2.2.0
+
undici: 6.21.3
+
+
'@atproto-labs/fetch@0.2.3':
+
dependencies:
+
'@atproto-labs/pipe': 0.1.1
+
+
'@atproto-labs/handle-resolver-node@0.1.19':
+
dependencies:
+
'@atproto-labs/fetch-node': 0.1.10
+
'@atproto-labs/handle-resolver': 0.3.1
+
'@atproto/did': 0.2.0
+
+
'@atproto-labs/handle-resolver@0.3.1':
+
dependencies:
+
'@atproto-labs/simple-store': 0.3.0
+
'@atproto-labs/simple-store-memory': 0.1.4
+
'@atproto/did': 0.2.0
+
zod: 3.25.76
+
+
'@atproto-labs/identity-resolver@0.3.1':
+
dependencies:
+
'@atproto-labs/did-resolver': 0.2.1
+
'@atproto-labs/handle-resolver': 0.3.1
+
+
'@atproto-labs/pipe@0.1.1': {}
+
+
'@atproto-labs/simple-store-memory@0.1.4':
+
dependencies:
+
'@atproto-labs/simple-store': 0.3.0
+
lru-cache: 10.4.3
+
+
'@atproto-labs/simple-store@0.3.0': {}
+
+
'@atproto/api@0.16.9':
+
dependencies:
+
'@atproto/common-web': 0.4.3
+
'@atproto/lexicon': 0.5.1
+
'@atproto/syntax': 0.4.1
+
'@atproto/xrpc': 0.7.5
+
await-lock: 2.2.2
+
multiformats: 9.9.0
+
tlds: 1.260.0
+
zod: 3.25.76
+
+
'@atproto/common-web@0.4.3':
+
dependencies:
+
graphemer: 1.4.0
+
multiformats: 9.9.0
+
uint8arrays: 3.0.0
+
zod: 3.25.76
+
+
'@atproto/crypto@0.4.4':
+
dependencies:
+
'@noble/curves': 1.9.7
+
'@noble/hashes': 1.8.0
+
uint8arrays: 3.0.0
+
+
'@atproto/did@0.2.0':
+
dependencies:
+
zod: 3.25.76
+
+
'@atproto/identity@0.4.9':
+
dependencies:
+
'@atproto/common-web': 0.4.3
+
'@atproto/crypto': 0.4.4
+
+
'@atproto/jwk-jose@0.1.10':
+
dependencies:
+
'@atproto/jwk': 0.5.0
+
jose: 5.10.0
+
+
'@atproto/jwk-webcrypto@0.1.10':
+
dependencies:
+
'@atproto/jwk': 0.5.0
+
'@atproto/jwk-jose': 0.1.10
+
zod: 3.25.76
+
+
'@atproto/jwk@0.5.0':
+
dependencies:
+
multiformats: 9.9.0
+
zod: 3.25.76
+
+
'@atproto/lexicon@0.5.1':
+
dependencies:
+
'@atproto/common-web': 0.4.3
+
'@atproto/syntax': 0.4.1
+
iso-datestring-validator: 2.2.2
+
multiformats: 9.9.0
+
zod: 3.25.76
+
+
'@atproto/oauth-client-node@0.3.8':
+
dependencies:
+
'@atproto-labs/did-resolver': 0.2.1
+
'@atproto-labs/handle-resolver-node': 0.1.19
+
'@atproto-labs/simple-store': 0.3.0
+
'@atproto/did': 0.2.0
+
'@atproto/jwk': 0.5.0
+
'@atproto/jwk-jose': 0.1.10
+
'@atproto/jwk-webcrypto': 0.1.10
+
'@atproto/oauth-client': 0.5.6
+
'@atproto/oauth-types': 0.4.1
+
+
'@atproto/oauth-client@0.5.6':
+
dependencies:
+
'@atproto-labs/did-resolver': 0.2.1
+
'@atproto-labs/fetch': 0.2.3
+
'@atproto-labs/handle-resolver': 0.3.1
+
'@atproto-labs/identity-resolver': 0.3.1
+
'@atproto-labs/simple-store': 0.3.0
+
'@atproto-labs/simple-store-memory': 0.1.4
+
'@atproto/did': 0.2.0
+
'@atproto/jwk': 0.5.0
+
'@atproto/oauth-types': 0.4.1
+
'@atproto/xrpc': 0.7.5
+
multiformats: 9.9.0
+
zod: 3.25.76
+
+
'@atproto/oauth-types@0.4.1':
+
dependencies:
+
'@atproto/jwk': 0.5.0
+
zod: 3.25.76
+
+
'@atproto/syntax@0.4.1': {}
+
+
'@atproto/xrpc@0.7.5':
+
dependencies:
+
'@atproto/lexicon': 0.5.1
+
zod: 3.25.76
+
+
'@babel/helper-string-parser@7.27.1': {}
+
+
'@babel/helper-validator-identifier@7.27.1': {}
+
+
'@babel/parser@7.28.4':
+
dependencies:
+
'@babel/types': 7.28.4
+
+
'@babel/types@7.28.4':
+
dependencies:
+
'@babel/helper-string-parser': 7.27.1
+
'@babel/helper-validator-identifier': 7.27.1
+
+
'@capsizecss/unpack@2.4.0':
+
dependencies:
+
blob-to-buffer: 1.2.9
+
cross-fetch: 3.2.0
+
fontkit: 2.0.4
+
transitivePeerDependencies:
+
- encoding
+
+
'@emnapi/runtime@1.5.0':
+
dependencies:
+
tslib: 2.8.1
+
optional: true
+
+
'@esbuild/aix-ppc64@0.25.9':
+
optional: true
+
+
'@esbuild/android-arm64@0.25.9':
+
optional: true
+
+
'@esbuild/android-arm@0.25.9':
+
optional: true
+
+
'@esbuild/android-x64@0.25.9':
+
optional: true
+
+
'@esbuild/darwin-arm64@0.25.9':
+
optional: true
+
+
'@esbuild/darwin-x64@0.25.9':
+
optional: true
+
+
'@esbuild/freebsd-arm64@0.25.9':
+
optional: true
+
+
'@esbuild/freebsd-x64@0.25.9':
+
optional: true
+
+
'@esbuild/linux-arm64@0.25.9':
+
optional: true
+
+
'@esbuild/linux-arm@0.25.9':
+
optional: true
+
+
'@esbuild/linux-ia32@0.25.9':
+
optional: true
+
+
'@esbuild/linux-loong64@0.25.9':
+
optional: true
+
+
'@esbuild/linux-mips64el@0.25.9':
+
optional: true
+
+
'@esbuild/linux-ppc64@0.25.9':
+
optional: true
+
+
'@esbuild/linux-riscv64@0.25.9':
+
optional: true
+
+
'@esbuild/linux-s390x@0.25.9':
+
optional: true
+
+
'@esbuild/linux-x64@0.25.9':
+
optional: true
+
+
'@esbuild/netbsd-arm64@0.25.9':
+
optional: true
+
+
'@esbuild/netbsd-x64@0.25.9':
+
optional: true
+
+
'@esbuild/openbsd-arm64@0.25.9':
+
optional: true
+
+
'@esbuild/openbsd-x64@0.25.9':
+
optional: true
+
+
'@esbuild/openharmony-arm64@0.25.9':
+
optional: true
+
+
'@esbuild/sunos-x64@0.25.9':
+
optional: true
+
+
'@esbuild/win32-arm64@0.25.9':
+
optional: true
+
+
'@esbuild/win32-ia32@0.25.9':
+
optional: true
+
+
'@esbuild/win32-x64@0.25.9':
+
optional: true
+
+
'@floating-ui/core@1.7.3':
+
dependencies:
+
'@floating-ui/utils': 0.2.10
+
+
'@floating-ui/dom@1.7.4':
+
dependencies:
+
'@floating-ui/core': 1.7.3
+
'@floating-ui/utils': 0.2.10
+
+
'@floating-ui/utils@0.2.10': {}
+
+
'@fujocoded/authproto@0.1.1(astro@5.13.7(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.50.1)(typescript@5.9.2))':
+
dependencies:
+
'@astrojs/db': 0.17.2
+
'@atproto/identity': 0.4.9
+
'@atproto/oauth-client-node': 0.3.8
+
astro: 5.13.7(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.50.1)(typescript@5.9.2)
+
astro-integration-kit: 0.19.0(astro@5.13.7(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.50.1)(typescript@5.9.2))
+
unstorage: 1.17.1
+
transitivePeerDependencies:
+
- '@aws-sdk/client-rds-data'
+
- '@azure/app-configuration'
+
- '@azure/cosmos'
+
- '@azure/data-tables'
+
- '@azure/identity'
+
- '@azure/keyvault-secrets'
+
- '@azure/storage-blob'
+
- '@capacitor/preferences'
+
- '@cloudflare/workers-types'
+
- '@deno/kv'
+
- '@electric-sql/pglite'
+
- '@libsql/client-wasm'
+
- '@neondatabase/serverless'
+
- '@netlify/blobs'
+
- '@op-engineering/op-sqlite'
+
- '@opentelemetry/api'
+
- '@planetscale/database'
+
- '@prisma/client'
+
- '@tidbcloud/serverless'
+
- '@types/better-sqlite3'
+
- '@types/pg'
+
- '@types/sql.js'
+
- '@upstash/redis'
+
- '@vercel/blob'
+
- '@vercel/functions'
+
- '@vercel/kv'
+
- '@vercel/postgres'
+
- '@xata.io/client'
+
- aws4fetch
+
- better-sqlite3
+
- bufferutil
+
- bun-types
+
- db0
+
- expo-sqlite
+
- gel
+
- idb-keyval
+
- ioredis
+
- knex
+
- kysely
+
- mysql2
+
- pg
+
- postgres
+
- prisma
+
- sql.js
+
- sqlite3
+
- uploadthing
+
- utf-8-validate
+
+
'@img/sharp-darwin-arm64@0.34.3':
+
optionalDependencies:
+
'@img/sharp-libvips-darwin-arm64': 1.2.0
+
optional: true
+
+
'@img/sharp-darwin-x64@0.34.3':
+
optionalDependencies:
+
'@img/sharp-libvips-darwin-x64': 1.2.0
+
optional: true
+
+
'@img/sharp-libvips-darwin-arm64@1.2.0':
+
optional: true
+
+
'@img/sharp-libvips-darwin-x64@1.2.0':
+
optional: true
+
+
'@img/sharp-libvips-linux-arm64@1.2.0':
+
optional: true
+
+
'@img/sharp-libvips-linux-arm@1.2.0':
+
optional: true
+
+
'@img/sharp-libvips-linux-ppc64@1.2.0':
+
optional: true
+
+
'@img/sharp-libvips-linux-s390x@1.2.0':
+
optional: true
+
+
'@img/sharp-libvips-linux-x64@1.2.0':
+
optional: true
+
+
'@img/sharp-libvips-linuxmusl-arm64@1.2.0':
+
optional: true
+
+
'@img/sharp-libvips-linuxmusl-x64@1.2.0':
+
optional: true
+
+
'@img/sharp-linux-arm64@0.34.3':
+
optionalDependencies:
+
'@img/sharp-libvips-linux-arm64': 1.2.0
+
optional: true
+
+
'@img/sharp-linux-arm@0.34.3':
+
optionalDependencies:
+
'@img/sharp-libvips-linux-arm': 1.2.0
+
optional: true
+
+
'@img/sharp-linux-ppc64@0.34.3':
+
optionalDependencies:
+
'@img/sharp-libvips-linux-ppc64': 1.2.0
+
optional: true
+
+
'@img/sharp-linux-s390x@0.34.3':
+
optionalDependencies:
+
'@img/sharp-libvips-linux-s390x': 1.2.0
+
optional: true
+
+
'@img/sharp-linux-x64@0.34.3':
+
optionalDependencies:
+
'@img/sharp-libvips-linux-x64': 1.2.0
+
optional: true
+
+
'@img/sharp-linuxmusl-arm64@0.34.3':
+
optionalDependencies:
+
'@img/sharp-libvips-linuxmusl-arm64': 1.2.0
+
optional: true
+
+
'@img/sharp-linuxmusl-x64@0.34.3':
+
optionalDependencies:
+
'@img/sharp-libvips-linuxmusl-x64': 1.2.0
+
optional: true
+
+
'@img/sharp-wasm32@0.34.3':
+
dependencies:
+
'@emnapi/runtime': 1.5.0
+
optional: true
+
+
'@img/sharp-win32-arm64@0.34.3':
+
optional: true
+
+
'@img/sharp-win32-ia32@0.34.3':
+
optional: true
+
+
'@img/sharp-win32-x64@0.34.3':
+
optional: true
+
+
'@isaacs/fs-minipass@4.0.1':
+
dependencies:
+
minipass: 7.1.2
+
+
'@jridgewell/gen-mapping@0.3.13':
+
dependencies:
+
'@jridgewell/sourcemap-codec': 1.5.5
+
'@jridgewell/trace-mapping': 0.3.31
+
+
'@jridgewell/remapping@2.3.5':
+
dependencies:
+
'@jridgewell/gen-mapping': 0.3.13
+
'@jridgewell/trace-mapping': 0.3.31
+
+
'@jridgewell/resolve-uri@3.1.2': {}
+
+
'@jridgewell/sourcemap-codec@1.5.5': {}
+
+
'@jridgewell/trace-mapping@0.3.31':
+
dependencies:
+
'@jridgewell/resolve-uri': 3.1.2
+
'@jridgewell/sourcemap-codec': 1.5.5
+
+
'@libsql/client@0.15.15':
+
dependencies:
+
'@libsql/core': 0.15.15
+
'@libsql/hrana-client': 0.7.0
+
js-base64: 3.7.8
+
libsql: 0.5.22
+
promise-limit: 2.7.0
+
transitivePeerDependencies:
+
- bufferutil
+
- utf-8-validate
+
+
'@libsql/core@0.15.15':
+
dependencies:
+
js-base64: 3.7.8
+
+
'@libsql/darwin-arm64@0.5.22':
+
optional: true
+
+
'@libsql/darwin-x64@0.5.22':
+
optional: true
+
+
'@libsql/hrana-client@0.7.0':
+
dependencies:
+
'@libsql/isomorphic-fetch': 0.3.1
+
'@libsql/isomorphic-ws': 0.1.5
+
js-base64: 3.7.8
+
node-fetch: 3.3.2
+
transitivePeerDependencies:
+
- bufferutil
+
- utf-8-validate
+
+
'@libsql/isomorphic-fetch@0.3.1': {}
+
+
'@libsql/isomorphic-ws@0.1.5':
+
dependencies:
+
'@types/ws': 8.18.1
+
ws: 8.18.3
+
transitivePeerDependencies:
+
- bufferutil
+
- utf-8-validate
+
+
'@libsql/linux-arm-gnueabihf@0.5.22':
+
optional: true
+
+
'@libsql/linux-arm-musleabihf@0.5.22':
+
optional: true
+
+
'@libsql/linux-arm64-gnu@0.5.22':
+
optional: true
+
+
'@libsql/linux-arm64-musl@0.5.22':
+
optional: true
+
+
'@libsql/linux-x64-gnu@0.5.22':
+
optional: true
+
+
'@libsql/linux-x64-musl@0.5.22':
+
optional: true
+
+
'@libsql/win32-x64-msvc@0.5.22':
+
optional: true
+
+
'@lucide/astro@0.542.0(astro@5.13.7(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.50.1)(typescript@5.9.2))':
+
dependencies:
+
astro: 5.13.7(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.50.1)(typescript@5.9.2)
+
+
'@neon-rs/load@0.0.4': {}
+
+
'@noble/curves@1.9.7':
+
dependencies:
+
'@noble/hashes': 1.8.0
+
+
'@noble/hashes@1.8.0': {}
+
+
'@oslojs/encoding@1.1.0': {}
+
+
'@rollup/pluginutils@5.3.0(rollup@4.50.1)':
+
dependencies:
+
'@types/estree': 1.0.8
+
estree-walker: 2.0.2
+
picomatch: 4.0.3
+
optionalDependencies:
+
rollup: 4.50.1
+
+
'@rollup/rollup-android-arm-eabi@4.50.1':
+
optional: true
+
+
'@rollup/rollup-android-arm64@4.50.1':
+
optional: true
+
+
'@rollup/rollup-darwin-arm64@4.50.1':
+
optional: true
+
+
'@rollup/rollup-darwin-x64@4.50.1':
+
optional: true
+
+
'@rollup/rollup-freebsd-arm64@4.50.1':
+
optional: true
+
+
'@rollup/rollup-freebsd-x64@4.50.1':
+
optional: true
+
+
'@rollup/rollup-linux-arm-gnueabihf@4.50.1':
+
optional: true
+
+
'@rollup/rollup-linux-arm-musleabihf@4.50.1':
+
optional: true
+
+
'@rollup/rollup-linux-arm64-gnu@4.50.1':
+
optional: true
+
+
'@rollup/rollup-linux-arm64-musl@4.50.1':
+
optional: true
+
+
'@rollup/rollup-linux-loongarch64-gnu@4.50.1':
+
optional: true
+
+
'@rollup/rollup-linux-ppc64-gnu@4.50.1':
+
optional: true
+
+
'@rollup/rollup-linux-riscv64-gnu@4.50.1':
+
optional: true
+
+
'@rollup/rollup-linux-riscv64-musl@4.50.1':
+
optional: true
+
+
'@rollup/rollup-linux-s390x-gnu@4.50.1':
+
optional: true
+
+
'@rollup/rollup-linux-x64-gnu@4.50.1':
+
optional: true
+
+
'@rollup/rollup-linux-x64-musl@4.50.1':
+
optional: true
+
+
'@rollup/rollup-openharmony-arm64@4.50.1':
+
optional: true
+
+
'@rollup/rollup-win32-arm64-msvc@4.50.1':
+
optional: true
+
+
'@rollup/rollup-win32-ia32-msvc@4.50.1':
+
optional: true
+
+
'@rollup/rollup-win32-x64-msvc@4.50.1':
+
optional: true
+
+
'@shikijs/core@3.12.2':
+
dependencies:
+
'@shikijs/types': 3.12.2
+
'@shikijs/vscode-textmate': 10.0.2
+
'@types/hast': 3.0.4
+
hast-util-to-html: 9.0.5
+
+
'@shikijs/engine-javascript@3.12.2':
+
dependencies:
+
'@shikijs/types': 3.12.2
+
'@shikijs/vscode-textmate': 10.0.2
+
oniguruma-to-es: 4.3.3
+
+
'@shikijs/engine-oniguruma@3.12.2':
+
dependencies:
+
'@shikijs/types': 3.12.2
+
'@shikijs/vscode-textmate': 10.0.2
+
+
'@shikijs/langs@3.12.2':
+
dependencies:
+
'@shikijs/types': 3.12.2
+
+
'@shikijs/themes@3.12.2':
+
dependencies:
+
'@shikijs/types': 3.12.2
+
+
'@shikijs/types@3.12.2':
+
dependencies:
+
'@shikijs/vscode-textmate': 10.0.2
+
'@types/hast': 3.0.4
+
+
'@shikijs/vscode-textmate@10.0.2': {}
+
+
'@swc/helpers@0.5.17':
+
dependencies:
+
tslib: 2.8.1
+
+
'@tailwindcss/node@4.1.13':
+
dependencies:
+
'@jridgewell/remapping': 2.3.5
+
enhanced-resolve: 5.18.3
+
jiti: 2.5.1
+
lightningcss: 1.30.1
+
magic-string: 0.30.19
+
source-map-js: 1.2.1
+
tailwindcss: 4.1.13
+
+
'@tailwindcss/oxide-android-arm64@4.1.13':
+
optional: true
+
+
'@tailwindcss/oxide-darwin-arm64@4.1.13':
+
optional: true
+
+
'@tailwindcss/oxide-darwin-x64@4.1.13':
+
optional: true
+
+
'@tailwindcss/oxide-freebsd-x64@4.1.13':
+
optional: true
+
+
'@tailwindcss/oxide-linux-arm-gnueabihf@4.1.13':
+
optional: true
+
+
'@tailwindcss/oxide-linux-arm64-gnu@4.1.13':
+
optional: true
+
+
'@tailwindcss/oxide-linux-arm64-musl@4.1.13':
+
optional: true
+
+
'@tailwindcss/oxide-linux-x64-gnu@4.1.13':
+
optional: true
+
+
'@tailwindcss/oxide-linux-x64-musl@4.1.13':
+
optional: true
+
+
'@tailwindcss/oxide-wasm32-wasi@4.1.13':
+
optional: true
+
+
'@tailwindcss/oxide-win32-arm64-msvc@4.1.13':
+
optional: true
+
+
'@tailwindcss/oxide-win32-x64-msvc@4.1.13':
+
optional: true
+
+
'@tailwindcss/oxide@4.1.13':
+
dependencies:
+
detect-libc: 2.0.4
+
tar: 7.4.3
+
optionalDependencies:
+
'@tailwindcss/oxide-android-arm64': 4.1.13
+
'@tailwindcss/oxide-darwin-arm64': 4.1.13
+
'@tailwindcss/oxide-darwin-x64': 4.1.13
+
'@tailwindcss/oxide-freebsd-x64': 4.1.13
+
'@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.13
+
'@tailwindcss/oxide-linux-arm64-gnu': 4.1.13
+
'@tailwindcss/oxide-linux-arm64-musl': 4.1.13
+
'@tailwindcss/oxide-linux-x64-gnu': 4.1.13
+
'@tailwindcss/oxide-linux-x64-musl': 4.1.13
+
'@tailwindcss/oxide-wasm32-wasi': 4.1.13
+
'@tailwindcss/oxide-win32-arm64-msvc': 4.1.13
+
'@tailwindcss/oxide-win32-x64-msvc': 4.1.13
+
+
'@tailwindcss/typography@0.5.16(tailwindcss@4.1.13)':
+
dependencies:
+
lodash.castarray: 4.4.0
+
lodash.isplainobject: 4.0.6
+
lodash.merge: 4.6.2
+
postcss-selector-parser: 6.0.10
+
tailwindcss: 4.1.13
+
+
'@tailwindcss/vite@4.1.13(vite@6.3.6(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1))':
+
dependencies:
+
'@tailwindcss/node': 4.1.13
+
'@tailwindcss/oxide': 4.1.13
+
tailwindcss: 4.1.13
+
vite: 6.3.6(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)
+
+
'@types/debug@4.1.12':
+
dependencies:
+
'@types/ms': 2.1.0
+
+
'@types/estree@1.0.8': {}
+
+
'@types/fontkit@2.0.8':
+
dependencies:
+
'@types/node': 24.3.1
+
+
'@types/hast@3.0.4':
+
dependencies:
+
'@types/unist': 3.0.3
+
+
'@types/mdast@4.0.4':
+
dependencies:
+
'@types/unist': 3.0.3
+
+
'@types/ms@2.1.0': {}
+
+
'@types/nlcst@2.0.3':
+
dependencies:
+
'@types/unist': 3.0.3
+
+
'@types/node@24.3.1':
+
dependencies:
+
undici-types: 7.10.0
+
+
'@types/unist@3.0.3': {}
+
+
'@types/ws@8.18.1':
+
dependencies:
+
'@types/node': 24.3.1
+
+
'@ungap/structured-clone@1.3.0': {}
+
+
acorn@8.15.0: {}
+
+
ansi-align@3.0.1:
+
dependencies:
+
string-width: 4.2.3
+
+
ansi-regex@5.0.1: {}
+
+
ansi-regex@6.2.2: {}
+
+
ansi-styles@6.2.3: {}
+
+
anymatch@3.1.3:
+
dependencies:
+
normalize-path: 3.0.0
+
picomatch: 2.3.1
+
+
argparse@2.0.1: {}
+
+
aria-query@5.3.2: {}
+
+
array-iterate@2.0.1: {}
+
+
astro-integration-kit@0.19.0(astro@5.13.7(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.50.1)(typescript@5.9.2)):
+
dependencies:
+
astro: 5.13.7(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.50.1)(typescript@5.9.2)
+
pathe: 1.1.2
+
+
astro@5.13.7(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.50.1)(typescript@5.9.2):
+
dependencies:
+
'@astrojs/compiler': 2.12.2
+
'@astrojs/internal-helpers': 0.7.2
+
'@astrojs/markdown-remark': 6.3.6
+
'@astrojs/telemetry': 3.3.0
+
'@capsizecss/unpack': 2.4.0
+
'@oslojs/encoding': 1.1.0
+
'@rollup/pluginutils': 5.3.0(rollup@4.50.1)
+
acorn: 8.15.0
+
aria-query: 5.3.2
+
axobject-query: 4.1.0
+
boxen: 8.0.1
+
ci-info: 4.3.0
+
clsx: 2.1.1
+
common-ancestor-path: 1.0.1
+
cookie: 1.0.2
+
cssesc: 3.0.0
+
debug: 4.4.1
+
deterministic-object-hash: 2.0.2
+
devalue: 5.3.2
+
diff: 5.2.0
+
dlv: 1.1.3
+
dset: 3.1.4
+
es-module-lexer: 1.7.0
+
esbuild: 0.25.9
+
estree-walker: 3.0.3
+
flattie: 1.1.1
+
fontace: 0.3.0
+
github-slugger: 2.0.0
+
html-escaper: 3.0.3
+
http-cache-semantics: 4.2.0
+
import-meta-resolve: 4.2.0
+
js-yaml: 4.1.0
+
kleur: 4.1.5
+
magic-string: 0.30.19
+
magicast: 0.3.5
+
mrmime: 2.0.1
+
neotraverse: 0.6.18
+
p-limit: 6.2.0
+
p-queue: 8.1.1
+
package-manager-detector: 1.3.0
+
picomatch: 4.0.3
+
prompts: 2.4.2
+
rehype: 13.0.2
+
semver: 7.7.2
+
shiki: 3.12.2
+
smol-toml: 1.4.2
+
tinyexec: 0.3.2
+
tinyglobby: 0.2.15
+
tsconfck: 3.1.6(typescript@5.9.2)
+
ultrahtml: 1.6.0
+
unifont: 0.5.2
+
unist-util-visit: 5.0.0
+
unstorage: 1.17.1
+
vfile: 6.0.3
+
vite: 6.3.6(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)
+
vitefu: 1.1.1(vite@6.3.6(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1))
+
xxhash-wasm: 1.1.0
+
yargs-parser: 21.1.1
+
yocto-spinner: 0.2.3
+
zod: 3.25.76
+
zod-to-json-schema: 3.24.6(zod@3.25.76)
+
zod-to-ts: 1.2.0(typescript@5.9.2)(zod@3.25.76)
+
optionalDependencies:
+
sharp: 0.34.3
+
transitivePeerDependencies:
+
- '@azure/app-configuration'
+
- '@azure/cosmos'
+
- '@azure/data-tables'
+
- '@azure/identity'
+
- '@azure/keyvault-secrets'
+
- '@azure/storage-blob'
+
- '@capacitor/preferences'
+
- '@deno/kv'
+
- '@netlify/blobs'
+
- '@planetscale/database'
+
- '@types/node'
+
- '@upstash/redis'
+
- '@vercel/blob'
+
- '@vercel/functions'
+
- '@vercel/kv'
+
- aws4fetch
+
- db0
+
- encoding
+
- idb-keyval
+
- ioredis
+
- jiti
+
- less
+
- lightningcss
+
- rollup
+
- sass
+
- sass-embedded
+
- stylus
+
- sugarss
+
- supports-color
+
- terser
+
- tsx
+
- typescript
+
- uploadthing
+
- yaml
+
+
await-lock@2.2.2: {}
+
+
axobject-query@4.1.0: {}
+
+
bail@2.0.2: {}
+
+
base-64@1.0.0: {}
+
+
base64-js@1.5.1: {}
+
+
blob-to-buffer@1.2.9: {}
+
+
boxen@8.0.1:
+
dependencies:
+
ansi-align: 3.0.1
+
camelcase: 8.0.0
+
chalk: 5.6.2
+
cli-boxes: 3.0.0
+
string-width: 7.2.0
+
type-fest: 4.41.0
+
widest-line: 5.0.0
+
wrap-ansi: 9.0.2
+
+
brotli@1.3.3:
+
dependencies:
+
base64-js: 1.5.1
+
+
camelcase@8.0.0: {}
+
+
ccount@2.0.1: {}
+
+
chalk@5.6.2: {}
+
+
character-entities-html4@2.1.0: {}
+
+
character-entities-legacy@3.0.0: {}
+
+
character-entities@2.0.2: {}
+
+
chokidar@4.0.3:
+
dependencies:
+
readdirp: 4.1.2
+
+
chownr@3.0.0: {}
+
+
ci-info@4.3.0: {}
+
+
cli-boxes@3.0.0: {}
+
+
clone@2.1.2: {}
+
+
clsx@2.1.1: {}
+
+
color-convert@2.0.1:
+
dependencies:
+
color-name: 1.1.4
+
optional: true
+
+
color-name@1.1.4:
+
optional: true
+
+
color-string@1.9.1:
+
dependencies:
+
color-name: 1.1.4
+
simple-swizzle: 0.2.2
+
optional: true
+
+
color@4.2.3:
+
dependencies:
+
color-convert: 2.0.1
+
color-string: 1.9.1
+
optional: true
+
+
comma-separated-tokens@2.0.3: {}
+
+
common-ancestor-path@1.0.1: {}
+
+
cookie-es@1.2.2: {}
+
+
cookie@1.0.2: {}
+
+
cross-fetch@3.2.0:
+
dependencies:
+
node-fetch: 2.7.0
+
transitivePeerDependencies:
+
- encoding
+
+
crossws@0.3.5:
+
dependencies:
+
uncrypto: 0.1.3
+
+
css-tree@3.1.0:
+
dependencies:
+
mdn-data: 2.12.2
+
source-map-js: 1.2.1
+
+
cssesc@3.0.0: {}
+
+
daisyui@5.1.10: {}
+
+
data-uri-to-buffer@4.0.1: {}
+
+
debug@4.4.1:
+
dependencies:
+
ms: 2.1.3
+
+
decode-named-character-reference@1.2.0:
+
dependencies:
+
character-entities: 2.0.2
+
+
deep-diff@1.0.2: {}
+
+
defu@6.1.4: {}
+
+
depd@2.0.0: {}
+
+
dequal@2.0.3: {}
+
+
destr@2.0.5: {}
+
+
detect-libc@2.0.2: {}
+
+
detect-libc@2.0.4: {}
+
+
deterministic-object-hash@2.0.2:
+
dependencies:
+
base-64: 1.0.0
+
+
devalue@5.3.2: {}
+
+
devlop@1.1.0:
+
dependencies:
+
dequal: 2.0.3
+
+
dfa@1.2.0: {}
+
+
diff@5.2.0: {}
+
+
dlv@1.1.3: {}
+
+
drizzle-orm@0.42.0(@libsql/client@0.15.15):
+
optionalDependencies:
+
'@libsql/client': 0.15.15
+
+
dset@3.1.4: {}
+
+
ee-first@1.1.1: {}
+
+
emoji-regex@10.5.0: {}
+
+
emoji-regex@8.0.0: {}
+
+
encodeurl@2.0.0: {}
+
+
enhanced-resolve@5.18.3:
+
dependencies:
+
graceful-fs: 4.2.11
+
tapable: 2.2.3
+
+
entities@6.0.1: {}
+
+
es-module-lexer@1.7.0: {}
+
+
esbuild@0.25.9:
+
optionalDependencies:
+
'@esbuild/aix-ppc64': 0.25.9
+
'@esbuild/android-arm': 0.25.9
+
'@esbuild/android-arm64': 0.25.9
+
'@esbuild/android-x64': 0.25.9
+
'@esbuild/darwin-arm64': 0.25.9
+
'@esbuild/darwin-x64': 0.25.9
+
'@esbuild/freebsd-arm64': 0.25.9
+
'@esbuild/freebsd-x64': 0.25.9
+
'@esbuild/linux-arm': 0.25.9
+
'@esbuild/linux-arm64': 0.25.9
+
'@esbuild/linux-ia32': 0.25.9
+
'@esbuild/linux-loong64': 0.25.9
+
'@esbuild/linux-mips64el': 0.25.9
+
'@esbuild/linux-ppc64': 0.25.9
+
'@esbuild/linux-riscv64': 0.25.9
+
'@esbuild/linux-s390x': 0.25.9
+
'@esbuild/linux-x64': 0.25.9
+
'@esbuild/netbsd-arm64': 0.25.9
+
'@esbuild/netbsd-x64': 0.25.9
+
'@esbuild/openbsd-arm64': 0.25.9
+
'@esbuild/openbsd-x64': 0.25.9
+
'@esbuild/openharmony-arm64': 0.25.9
+
'@esbuild/sunos-x64': 0.25.9
+
'@esbuild/win32-arm64': 0.25.9
+
'@esbuild/win32-ia32': 0.25.9
+
'@esbuild/win32-x64': 0.25.9
+
+
escape-html@1.0.3: {}
+
+
escape-string-regexp@5.0.0: {}
+
+
estree-walker@2.0.2: {}
+
+
estree-walker@3.0.3:
+
dependencies:
+
'@types/estree': 1.0.8
+
+
etag@1.8.1: {}
+
+
eventemitter3@5.0.1: {}
+
+
extend@3.0.2: {}
+
+
fast-deep-equal@3.1.3: {}
+
+
fdir@6.5.0(picomatch@4.0.3):
+
optionalDependencies:
+
picomatch: 4.0.3
+
+
fetch-blob@3.2.0:
+
dependencies:
+
node-domexception: 1.0.0
+
web-streams-polyfill: 3.3.3
+
+
flattie@1.1.1: {}
+
+
fontace@0.3.0:
+
dependencies:
+
'@types/fontkit': 2.0.8
+
fontkit: 2.0.4
+
+
fontkit@2.0.4:
+
dependencies:
+
'@swc/helpers': 0.5.17
+
brotli: 1.3.3
+
clone: 2.1.2
+
dfa: 1.2.0
+
fast-deep-equal: 3.1.3
+
restructure: 3.0.2
+
tiny-inflate: 1.0.3
+
unicode-properties: 1.4.1
+
unicode-trie: 2.0.0
+
+
formdata-polyfill@4.0.10:
+
dependencies:
+
fetch-blob: 3.2.0
+
+
fresh@2.0.0: {}
+
+
fsevents@2.3.3:
+
optional: true
+
+
get-east-asian-width@1.4.0: {}
+
+
github-slugger@2.0.0: {}
+
+
graceful-fs@4.2.11: {}
+
+
graphemer@1.4.0: {}
+
+
h3@1.15.4:
+
dependencies:
+
cookie-es: 1.2.2
+
crossws: 0.3.5
+
defu: 6.1.4
+
destr: 2.0.5
+
iron-webcrypto: 1.2.1
+
node-mock-http: 1.0.3
+
radix3: 1.1.2
+
ufo: 1.6.1
+
uncrypto: 0.1.3
+
+
hast-util-from-html@2.0.3:
+
dependencies:
+
'@types/hast': 3.0.4
+
devlop: 1.1.0
+
hast-util-from-parse5: 8.0.3
+
parse5: 7.3.0
+
vfile: 6.0.3
+
vfile-message: 4.0.3
+
+
hast-util-from-parse5@8.0.3:
+
dependencies:
+
'@types/hast': 3.0.4
+
'@types/unist': 3.0.3
+
devlop: 1.1.0
+
hastscript: 9.0.1
+
property-information: 7.1.0
+
vfile: 6.0.3
+
vfile-location: 5.0.3
+
web-namespaces: 2.0.1
+
+
hast-util-is-element@3.0.0:
+
dependencies:
+
'@types/hast': 3.0.4
+
+
hast-util-parse-selector@4.0.0:
+
dependencies:
+
'@types/hast': 3.0.4
+
+
hast-util-raw@9.1.0:
+
dependencies:
+
'@types/hast': 3.0.4
+
'@types/unist': 3.0.3
+
'@ungap/structured-clone': 1.3.0
+
hast-util-from-parse5: 8.0.3
+
hast-util-to-parse5: 8.0.0
+
html-void-elements: 3.0.0
+
mdast-util-to-hast: 13.2.0
+
parse5: 7.3.0
+
unist-util-position: 5.0.0
+
unist-util-visit: 5.0.0
+
vfile: 6.0.3
+
web-namespaces: 2.0.1
+
zwitch: 2.0.4
+
+
hast-util-to-html@9.0.5:
+
dependencies:
+
'@types/hast': 3.0.4
+
'@types/unist': 3.0.3
+
ccount: 2.0.1
+
comma-separated-tokens: 2.0.3
+
hast-util-whitespace: 3.0.0
+
html-void-elements: 3.0.0
+
mdast-util-to-hast: 13.2.0
+
property-information: 7.1.0
+
space-separated-tokens: 2.0.2
+
stringify-entities: 4.0.4
+
zwitch: 2.0.4
+
+
hast-util-to-parse5@8.0.0:
+
dependencies:
+
'@types/hast': 3.0.4
+
comma-separated-tokens: 2.0.3
+
devlop: 1.1.0
+
property-information: 6.5.0
+
space-separated-tokens: 2.0.2
+
web-namespaces: 2.0.1
+
zwitch: 2.0.4
+
+
hast-util-to-text@4.0.2:
+
dependencies:
+
'@types/hast': 3.0.4
+
'@types/unist': 3.0.3
+
hast-util-is-element: 3.0.0
+
unist-util-find-after: 5.0.0
+
+
hast-util-whitespace@3.0.0:
+
dependencies:
+
'@types/hast': 3.0.4
+
+
hastscript@9.0.1:
+
dependencies:
+
'@types/hast': 3.0.4
+
comma-separated-tokens: 2.0.3
+
hast-util-parse-selector: 4.0.0
+
property-information: 7.1.0
+
space-separated-tokens: 2.0.2
+
+
html-escaper@3.0.3: {}
+
+
html-void-elements@3.0.0: {}
+
+
http-cache-semantics@4.2.0: {}
+
+
http-errors@2.0.0:
+
dependencies:
+
depd: 2.0.0
+
inherits: 2.0.4
+
setprototypeof: 1.2.0
+
statuses: 2.0.1
+
toidentifier: 1.0.1
+
+
import-meta-resolve@4.2.0: {}
+
+
inherits@2.0.4: {}
+
+
ipaddr.js@2.2.0: {}
+
+
iron-webcrypto@1.2.1: {}
+
+
is-arrayish@0.3.2:
+
optional: true
+
+
is-docker@3.0.0: {}
+
+
is-fullwidth-code-point@3.0.0: {}
+
+
is-inside-container@1.0.0:
+
dependencies:
+
is-docker: 3.0.0
+
+
is-plain-obj@4.1.0: {}
+
+
is-wsl@3.1.0:
+
dependencies:
+
is-inside-container: 1.0.0
+
+
iso-datestring-validator@2.2.2: {}
+
+
jiti@2.5.1: {}
+
+
jose@5.10.0: {}
+
+
js-base64@3.7.8: {}
+
+
js-yaml@4.1.0:
+
dependencies:
+
argparse: 2.0.1
+
+
kleur@3.0.3: {}
+
+
kleur@4.1.5: {}
+
+
libsql@0.5.22:
+
dependencies:
+
'@neon-rs/load': 0.0.4
+
detect-libc: 2.0.2
+
optionalDependencies:
+
'@libsql/darwin-arm64': 0.5.22
+
'@libsql/darwin-x64': 0.5.22
+
'@libsql/linux-arm-gnueabihf': 0.5.22
+
'@libsql/linux-arm-musleabihf': 0.5.22
+
'@libsql/linux-arm64-gnu': 0.5.22
+
'@libsql/linux-arm64-musl': 0.5.22
+
'@libsql/linux-x64-gnu': 0.5.22
+
'@libsql/linux-x64-musl': 0.5.22
+
'@libsql/win32-x64-msvc': 0.5.22
+
+
lightningcss-darwin-arm64@1.30.1:
+
optional: true
+
+
lightningcss-darwin-x64@1.30.1:
+
optional: true
+
+
lightningcss-freebsd-x64@1.30.1:
+
optional: true
+
+
lightningcss-linux-arm-gnueabihf@1.30.1:
+
optional: true
+
+
lightningcss-linux-arm64-gnu@1.30.1:
+
optional: true
+
+
lightningcss-linux-arm64-musl@1.30.1:
+
optional: true
+
+
lightningcss-linux-x64-gnu@1.30.1:
+
optional: true
+
+
lightningcss-linux-x64-musl@1.30.1:
+
optional: true
+
+
lightningcss-win32-arm64-msvc@1.30.1:
+
optional: true
+
+
lightningcss-win32-x64-msvc@1.30.1:
+
optional: true
+
+
lightningcss@1.30.1:
+
dependencies:
+
detect-libc: 2.0.4
+
optionalDependencies:
+
lightningcss-darwin-arm64: 1.30.1
+
lightningcss-darwin-x64: 1.30.1
+
lightningcss-freebsd-x64: 1.30.1
+
lightningcss-linux-arm-gnueabihf: 1.30.1
+
lightningcss-linux-arm64-gnu: 1.30.1
+
lightningcss-linux-arm64-musl: 1.30.1
+
lightningcss-linux-x64-gnu: 1.30.1
+
lightningcss-linux-x64-musl: 1.30.1
+
lightningcss-win32-arm64-msvc: 1.30.1
+
lightningcss-win32-x64-msvc: 1.30.1
+
+
lodash.castarray@4.4.0: {}
+
+
lodash.isplainobject@4.0.6: {}
+
+
lodash.merge@4.6.2: {}
+
+
longest-streak@3.1.0: {}
+
+
lru-cache@10.4.3: {}
+
+
magic-string@0.30.19:
+
dependencies:
+
'@jridgewell/sourcemap-codec': 1.5.5
+
+
magicast@0.3.5:
+
dependencies:
+
'@babel/parser': 7.28.4
+
'@babel/types': 7.28.4
+
source-map-js: 1.2.1
+
+
markdown-table@3.0.4: {}
+
+
mdast-util-definitions@6.0.0:
+
dependencies:
+
'@types/mdast': 4.0.4
+
'@types/unist': 3.0.3
+
unist-util-visit: 5.0.0
+
+
mdast-util-find-and-replace@3.0.2:
+
dependencies:
+
'@types/mdast': 4.0.4
+
escape-string-regexp: 5.0.0
+
unist-util-is: 6.0.0
+
unist-util-visit-parents: 6.0.1
+
+
mdast-util-from-markdown@2.0.2:
+
dependencies:
+
'@types/mdast': 4.0.4
+
'@types/unist': 3.0.3
+
decode-named-character-reference: 1.2.0
+
devlop: 1.1.0
+
mdast-util-to-string: 4.0.0
+
micromark: 4.0.2
+
micromark-util-decode-numeric-character-reference: 2.0.2
+
micromark-util-decode-string: 2.0.1
+
micromark-util-normalize-identifier: 2.0.1
+
micromark-util-symbol: 2.0.1
+
micromark-util-types: 2.0.2
+
unist-util-stringify-position: 4.0.0
+
transitivePeerDependencies:
+
- supports-color
+
+
mdast-util-gfm-autolink-literal@2.0.1:
+
dependencies:
+
'@types/mdast': 4.0.4
+
ccount: 2.0.1
+
devlop: 1.1.0
+
mdast-util-find-and-replace: 3.0.2
+
micromark-util-character: 2.1.1
+
+
mdast-util-gfm-footnote@2.1.0:
+
dependencies:
+
'@types/mdast': 4.0.4
+
devlop: 1.1.0
+
mdast-util-from-markdown: 2.0.2
+
mdast-util-to-markdown: 2.1.2
+
micromark-util-normalize-identifier: 2.0.1
+
transitivePeerDependencies:
+
- supports-color
+
+
mdast-util-gfm-strikethrough@2.0.0:
+
dependencies:
+
'@types/mdast': 4.0.4
+
mdast-util-from-markdown: 2.0.2
+
mdast-util-to-markdown: 2.1.2
+
transitivePeerDependencies:
+
- supports-color
+
+
mdast-util-gfm-table@2.0.0:
+
dependencies:
+
'@types/mdast': 4.0.4
+
devlop: 1.1.0
+
markdown-table: 3.0.4
+
mdast-util-from-markdown: 2.0.2
+
mdast-util-to-markdown: 2.1.2
+
transitivePeerDependencies:
+
- supports-color
+
+
mdast-util-gfm-task-list-item@2.0.0:
+
dependencies:
+
'@types/mdast': 4.0.4
+
devlop: 1.1.0
+
mdast-util-from-markdown: 2.0.2
+
mdast-util-to-markdown: 2.1.2
+
transitivePeerDependencies:
+
- supports-color
+
+
mdast-util-gfm@3.1.0:
+
dependencies:
+
mdast-util-from-markdown: 2.0.2
+
mdast-util-gfm-autolink-literal: 2.0.1
+
mdast-util-gfm-footnote: 2.1.0
+
mdast-util-gfm-strikethrough: 2.0.0
+
mdast-util-gfm-table: 2.0.0
+
mdast-util-gfm-task-list-item: 2.0.0
+
mdast-util-to-markdown: 2.1.2
+
transitivePeerDependencies:
+
- supports-color
+
+
mdast-util-phrasing@4.1.0:
+
dependencies:
+
'@types/mdast': 4.0.4
+
unist-util-is: 6.0.0
+
+
mdast-util-to-hast@13.2.0:
+
dependencies:
+
'@types/hast': 3.0.4
+
'@types/mdast': 4.0.4
+
'@ungap/structured-clone': 1.3.0
+
devlop: 1.1.0
+
micromark-util-sanitize-uri: 2.0.1
+
trim-lines: 3.0.1
+
unist-util-position: 5.0.0
+
unist-util-visit: 5.0.0
+
vfile: 6.0.3
+
+
mdast-util-to-markdown@2.1.2:
+
dependencies:
+
'@types/mdast': 4.0.4
+
'@types/unist': 3.0.3
+
longest-streak: 3.1.0
+
mdast-util-phrasing: 4.1.0
+
mdast-util-to-string: 4.0.0
+
micromark-util-classify-character: 2.0.1
+
micromark-util-decode-string: 2.0.1
+
unist-util-visit: 5.0.0
+
zwitch: 2.0.4
+
+
mdast-util-to-string@4.0.0:
+
dependencies:
+
'@types/mdast': 4.0.4
+
+
mdn-data@2.12.2: {}
+
+
micromark-core-commonmark@2.0.3:
+
dependencies:
+
decode-named-character-reference: 1.2.0
+
devlop: 1.1.0
+
micromark-factory-destination: 2.0.1
+
micromark-factory-label: 2.0.1
+
micromark-factory-space: 2.0.1
+
micromark-factory-title: 2.0.1
+
micromark-factory-whitespace: 2.0.1
+
micromark-util-character: 2.1.1
+
micromark-util-chunked: 2.0.1
+
micromark-util-classify-character: 2.0.1
+
micromark-util-html-tag-name: 2.0.1
+
micromark-util-normalize-identifier: 2.0.1
+
micromark-util-resolve-all: 2.0.1
+
micromark-util-subtokenize: 2.1.0
+
micromark-util-symbol: 2.0.1
+
micromark-util-types: 2.0.2
+
+
micromark-extension-gfm-autolink-literal@2.1.0:
+
dependencies:
+
micromark-util-character: 2.1.1
+
micromark-util-sanitize-uri: 2.0.1
+
micromark-util-symbol: 2.0.1
+
micromark-util-types: 2.0.2
+
+
micromark-extension-gfm-footnote@2.1.0:
+
dependencies:
+
devlop: 1.1.0
+
micromark-core-commonmark: 2.0.3
+
micromark-factory-space: 2.0.1
+
micromark-util-character: 2.1.1
+
micromark-util-normalize-identifier: 2.0.1
+
micromark-util-sanitize-uri: 2.0.1
+
micromark-util-symbol: 2.0.1
+
micromark-util-types: 2.0.2
+
+
micromark-extension-gfm-strikethrough@2.1.0:
+
dependencies:
+
devlop: 1.1.0
+
micromark-util-chunked: 2.0.1
+
micromark-util-classify-character: 2.0.1
+
micromark-util-resolve-all: 2.0.1
+
micromark-util-symbol: 2.0.1
+
micromark-util-types: 2.0.2
+
+
micromark-extension-gfm-table@2.1.1:
+
dependencies:
+
devlop: 1.1.0
+
micromark-factory-space: 2.0.1
+
micromark-util-character: 2.1.1
+
micromark-util-symbol: 2.0.1
+
micromark-util-types: 2.0.2
+
+
micromark-extension-gfm-tagfilter@2.0.0:
+
dependencies:
+
micromark-util-types: 2.0.2
+
+
micromark-extension-gfm-task-list-item@2.1.0:
+
dependencies:
+
devlop: 1.1.0
+
micromark-factory-space: 2.0.1
+
micromark-util-character: 2.1.1
+
micromark-util-symbol: 2.0.1
+
micromark-util-types: 2.0.2
+
+
micromark-extension-gfm@3.0.0:
+
dependencies:
+
micromark-extension-gfm-autolink-literal: 2.1.0
+
micromark-extension-gfm-footnote: 2.1.0
+
micromark-extension-gfm-strikethrough: 2.1.0
+
micromark-extension-gfm-table: 2.1.1
+
micromark-extension-gfm-tagfilter: 2.0.0
+
micromark-extension-gfm-task-list-item: 2.1.0
+
micromark-util-combine-extensions: 2.0.1
+
micromark-util-types: 2.0.2
+
+
micromark-factory-destination@2.0.1:
+
dependencies:
+
micromark-util-character: 2.1.1
+
micromark-util-symbol: 2.0.1
+
micromark-util-types: 2.0.2
+
+
micromark-factory-label@2.0.1:
+
dependencies:
+
devlop: 1.1.0
+
micromark-util-character: 2.1.1
+
micromark-util-symbol: 2.0.1
+
micromark-util-types: 2.0.2
+
+
micromark-factory-space@2.0.1:
+
dependencies:
+
micromark-util-character: 2.1.1
+
micromark-util-types: 2.0.2
+
+
micromark-factory-title@2.0.1:
+
dependencies:
+
micromark-factory-space: 2.0.1
+
micromark-util-character: 2.1.1
+
micromark-util-symbol: 2.0.1
+
micromark-util-types: 2.0.2
+
+
micromark-factory-whitespace@2.0.1:
+
dependencies:
+
micromark-factory-space: 2.0.1
+
micromark-util-character: 2.1.1
+
micromark-util-symbol: 2.0.1
+
micromark-util-types: 2.0.2
+
+
micromark-util-character@2.1.1:
+
dependencies:
+
micromark-util-symbol: 2.0.1
+
micromark-util-types: 2.0.2
+
+
micromark-util-chunked@2.0.1:
+
dependencies:
+
micromark-util-symbol: 2.0.1
+
+
micromark-util-classify-character@2.0.1:
+
dependencies:
+
micromark-util-character: 2.1.1
+
micromark-util-symbol: 2.0.1
+
micromark-util-types: 2.0.2
+
+
micromark-util-combine-extensions@2.0.1:
+
dependencies:
+
micromark-util-chunked: 2.0.1
+
micromark-util-types: 2.0.2
+
+
micromark-util-decode-numeric-character-reference@2.0.2:
+
dependencies:
+
micromark-util-symbol: 2.0.1
+
+
micromark-util-decode-string@2.0.1:
+
dependencies:
+
decode-named-character-reference: 1.2.0
+
micromark-util-character: 2.1.1
+
micromark-util-decode-numeric-character-reference: 2.0.2
+
micromark-util-symbol: 2.0.1
+
+
micromark-util-encode@2.0.1: {}
+
+
micromark-util-html-tag-name@2.0.1: {}
+
+
micromark-util-normalize-identifier@2.0.1:
+
dependencies:
+
micromark-util-symbol: 2.0.1
+
+
micromark-util-resolve-all@2.0.1:
+
dependencies:
+
micromark-util-types: 2.0.2
+
+
micromark-util-sanitize-uri@2.0.1:
+
dependencies:
+
micromark-util-character: 2.1.1
+
micromark-util-encode: 2.0.1
+
micromark-util-symbol: 2.0.1
+
+
micromark-util-subtokenize@2.1.0:
+
dependencies:
+
devlop: 1.1.0
+
micromark-util-chunked: 2.0.1
+
micromark-util-symbol: 2.0.1
+
micromark-util-types: 2.0.2
+
+
micromark-util-symbol@2.0.1: {}
+
+
micromark-util-types@2.0.2: {}
+
+
micromark@4.0.2:
+
dependencies:
+
'@types/debug': 4.1.12
+
debug: 4.4.1
+
decode-named-character-reference: 1.2.0
+
devlop: 1.1.0
+
micromark-core-commonmark: 2.0.3
+
micromark-factory-space: 2.0.1
+
micromark-util-character: 2.1.1
+
micromark-util-chunked: 2.0.1
+
micromark-util-combine-extensions: 2.0.1
+
micromark-util-decode-numeric-character-reference: 2.0.2
+
micromark-util-encode: 2.0.1
+
micromark-util-normalize-identifier: 2.0.1
+
micromark-util-resolve-all: 2.0.1
+
micromark-util-sanitize-uri: 2.0.1
+
micromark-util-subtokenize: 2.1.0
+
micromark-util-symbol: 2.0.1
+
micromark-util-types: 2.0.2
+
transitivePeerDependencies:
+
- supports-color
+
+
mime-db@1.54.0: {}
+
+
mime-types@3.0.1:
+
dependencies:
+
mime-db: 1.54.0
+
+
minipass@7.1.2: {}
+
+
minizlib@3.0.2:
+
dependencies:
+
minipass: 7.1.2
+
+
mkdirp@3.0.1: {}
+
+
mrmime@2.0.1: {}
+
+
ms@2.1.3: {}
+
+
multiformats@9.9.0: {}
+
+
nanoid@3.3.11: {}
+
+
nanoid@5.1.5: {}
+
+
neotraverse@0.6.18: {}
+
+
nlcst-to-string@4.0.0:
+
dependencies:
+
'@types/nlcst': 2.0.3
+
+
node-domexception@1.0.0: {}
+
+
node-fetch-native@1.6.7: {}
+
+
node-fetch@2.7.0:
+
dependencies:
+
whatwg-url: 5.0.0
+
+
node-fetch@3.3.2:
+
dependencies:
+
data-uri-to-buffer: 4.0.1
+
fetch-blob: 3.2.0
+
formdata-polyfill: 4.0.10
+
+
node-mock-http@1.0.3: {}
+
+
normalize-path@3.0.0: {}
+
+
ofetch@1.4.1:
+
dependencies:
+
destr: 2.0.5
+
node-fetch-native: 1.6.7
+
ufo: 1.6.1
+
+
ohash@2.0.11: {}
+
+
on-finished@2.4.1:
+
dependencies:
+
ee-first: 1.1.1
+
+
oniguruma-parser@0.12.1: {}
+
+
oniguruma-to-es@4.3.3:
+
dependencies:
+
oniguruma-parser: 0.12.1
+
regex: 6.0.1
+
regex-recursion: 6.0.2
+
+
p-limit@6.2.0:
+
dependencies:
+
yocto-queue: 1.2.1
+
+
p-queue@8.1.1:
+
dependencies:
+
eventemitter3: 5.0.1
+
p-timeout: 6.1.4
+
+
p-timeout@6.1.4: {}
+
+
package-manager-detector@1.3.0: {}
+
+
pako@0.2.9: {}
+
+
parse-latin@7.0.0:
+
dependencies:
+
'@types/nlcst': 2.0.3
+
'@types/unist': 3.0.3
+
nlcst-to-string: 4.0.0
+
unist-util-modify-children: 4.0.0
+
unist-util-visit-children: 3.0.0
+
vfile: 6.0.3
+
+
parse5@7.3.0:
+
dependencies:
+
entities: 6.0.1
+
+
pathe@1.1.2: {}
+
+
picocolors@1.1.1: {}
+
+
picomatch@2.3.1: {}
+
+
picomatch@4.0.3: {}
+
+
postcss-selector-parser@6.0.10:
+
dependencies:
+
cssesc: 3.0.0
+
util-deprecate: 1.0.2
+
+
postcss@8.5.6:
+
dependencies:
+
nanoid: 3.3.11
+
picocolors: 1.1.1
+
source-map-js: 1.2.1
+
+
prismjs@1.30.0: {}
+
+
promise-limit@2.7.0: {}
+
+
prompts@2.4.2:
+
dependencies:
+
kleur: 3.0.3
+
sisteransi: 1.0.5
+
+
property-information@6.5.0: {}
+
+
property-information@7.1.0: {}
+
+
radix3@1.1.2: {}
+
+
range-parser@1.2.1: {}
+
+
readdirp@4.1.2: {}
+
+
regex-recursion@6.0.2:
+
dependencies:
+
regex-utilities: 2.3.0
+
+
regex-utilities@2.3.0: {}
+
+
regex@6.0.1:
+
dependencies:
+
regex-utilities: 2.3.0
+
+
rehype-parse@9.0.1:
+
dependencies:
+
'@types/hast': 3.0.4
+
hast-util-from-html: 2.0.3
+
unified: 11.0.5
+
+
rehype-raw@7.0.0:
+
dependencies:
+
'@types/hast': 3.0.4
+
hast-util-raw: 9.1.0
+
vfile: 6.0.3
+
+
rehype-stringify@10.0.1:
+
dependencies:
+
'@types/hast': 3.0.4
+
hast-util-to-html: 9.0.5
+
unified: 11.0.5
+
+
rehype@13.0.2:
+
dependencies:
+
'@types/hast': 3.0.4
+
rehype-parse: 9.0.1
+
rehype-stringify: 10.0.1
+
unified: 11.0.5
+
+
remark-gfm@4.0.1:
+
dependencies:
+
'@types/mdast': 4.0.4
+
mdast-util-gfm: 3.1.0
+
micromark-extension-gfm: 3.0.0
+
remark-parse: 11.0.0
+
remark-stringify: 11.0.0
+
unified: 11.0.5
+
transitivePeerDependencies:
+
- supports-color
+
+
remark-parse@11.0.0:
+
dependencies:
+
'@types/mdast': 4.0.4
+
mdast-util-from-markdown: 2.0.2
+
micromark-util-types: 2.0.2
+
unified: 11.0.5
+
transitivePeerDependencies:
+
- supports-color
+
+
remark-rehype@11.1.2:
+
dependencies:
+
'@types/hast': 3.0.4
+
'@types/mdast': 4.0.4
+
mdast-util-to-hast: 13.2.0
+
unified: 11.0.5
+
vfile: 6.0.3
+
+
remark-smartypants@3.0.2:
+
dependencies:
+
retext: 9.0.0
+
retext-smartypants: 6.2.0
+
unified: 11.0.5
+
unist-util-visit: 5.0.0
+
+
remark-stringify@11.0.0:
+
dependencies:
+
'@types/mdast': 4.0.4
+
mdast-util-to-markdown: 2.1.2
+
unified: 11.0.5
+
+
restructure@3.0.2: {}
+
+
retext-latin@4.0.0:
+
dependencies:
+
'@types/nlcst': 2.0.3
+
parse-latin: 7.0.0
+
unified: 11.0.5
+
+
retext-smartypants@6.2.0:
+
dependencies:
+
'@types/nlcst': 2.0.3
+
nlcst-to-string: 4.0.0
+
unist-util-visit: 5.0.0
+
+
retext-stringify@4.0.0:
+
dependencies:
+
'@types/nlcst': 2.0.3
+
nlcst-to-string: 4.0.0
+
unified: 11.0.5
+
+
retext@9.0.0:
+
dependencies:
+
'@types/nlcst': 2.0.3
+
retext-latin: 4.0.0
+
retext-stringify: 4.0.0
+
unified: 11.0.5
+
+
rollup@4.50.1:
+
dependencies:
+
'@types/estree': 1.0.8
+
optionalDependencies:
+
'@rollup/rollup-android-arm-eabi': 4.50.1
+
'@rollup/rollup-android-arm64': 4.50.1
+
'@rollup/rollup-darwin-arm64': 4.50.1
+
'@rollup/rollup-darwin-x64': 4.50.1
+
'@rollup/rollup-freebsd-arm64': 4.50.1
+
'@rollup/rollup-freebsd-x64': 4.50.1
+
'@rollup/rollup-linux-arm-gnueabihf': 4.50.1
+
'@rollup/rollup-linux-arm-musleabihf': 4.50.1
+
'@rollup/rollup-linux-arm64-gnu': 4.50.1
+
'@rollup/rollup-linux-arm64-musl': 4.50.1
+
'@rollup/rollup-linux-loongarch64-gnu': 4.50.1
+
'@rollup/rollup-linux-ppc64-gnu': 4.50.1
+
'@rollup/rollup-linux-riscv64-gnu': 4.50.1
+
'@rollup/rollup-linux-riscv64-musl': 4.50.1
+
'@rollup/rollup-linux-s390x-gnu': 4.50.1
+
'@rollup/rollup-linux-x64-gnu': 4.50.1
+
'@rollup/rollup-linux-x64-musl': 4.50.1
+
'@rollup/rollup-openharmony-arm64': 4.50.1
+
'@rollup/rollup-win32-arm64-msvc': 4.50.1
+
'@rollup/rollup-win32-ia32-msvc': 4.50.1
+
'@rollup/rollup-win32-x64-msvc': 4.50.1
+
fsevents: 2.3.3
+
+
semver@7.7.2: {}
+
+
send@1.2.0:
+
dependencies:
+
debug: 4.4.1
+
encodeurl: 2.0.0
+
escape-html: 1.0.3
+
etag: 1.8.1
+
fresh: 2.0.0
+
http-errors: 2.0.0
+
mime-types: 3.0.1
+
ms: 2.1.3
+
on-finished: 2.4.1
+
range-parser: 1.2.1
+
statuses: 2.0.2
+
transitivePeerDependencies:
+
- supports-color
+
+
server-destroy@1.0.1: {}
+
+
setprototypeof@1.2.0: {}
+
+
sharp@0.34.3:
+
dependencies:
+
color: 4.2.3
+
detect-libc: 2.0.4
+
semver: 7.7.2
+
optionalDependencies:
+
'@img/sharp-darwin-arm64': 0.34.3
+
'@img/sharp-darwin-x64': 0.34.3
+
'@img/sharp-libvips-darwin-arm64': 1.2.0
+
'@img/sharp-libvips-darwin-x64': 1.2.0
+
'@img/sharp-libvips-linux-arm': 1.2.0
+
'@img/sharp-libvips-linux-arm64': 1.2.0
+
'@img/sharp-libvips-linux-ppc64': 1.2.0
+
'@img/sharp-libvips-linux-s390x': 1.2.0
+
'@img/sharp-libvips-linux-x64': 1.2.0
+
'@img/sharp-libvips-linuxmusl-arm64': 1.2.0
+
'@img/sharp-libvips-linuxmusl-x64': 1.2.0
+
'@img/sharp-linux-arm': 0.34.3
+
'@img/sharp-linux-arm64': 0.34.3
+
'@img/sharp-linux-ppc64': 0.34.3
+
'@img/sharp-linux-s390x': 0.34.3
+
'@img/sharp-linux-x64': 0.34.3
+
'@img/sharp-linuxmusl-arm64': 0.34.3
+
'@img/sharp-linuxmusl-x64': 0.34.3
+
'@img/sharp-wasm32': 0.34.3
+
'@img/sharp-win32-arm64': 0.34.3
+
'@img/sharp-win32-ia32': 0.34.3
+
'@img/sharp-win32-x64': 0.34.3
+
optional: true
+
+
shiki@3.12.2:
+
dependencies:
+
'@shikijs/core': 3.12.2
+
'@shikijs/engine-javascript': 3.12.2
+
'@shikijs/engine-oniguruma': 3.12.2
+
'@shikijs/langs': 3.12.2
+
'@shikijs/themes': 3.12.2
+
'@shikijs/types': 3.12.2
+
'@shikijs/vscode-textmate': 10.0.2
+
'@types/hast': 3.0.4
+
+
simple-swizzle@0.2.2:
+
dependencies:
+
is-arrayish: 0.3.2
+
optional: true
+
+
sisteransi@1.0.5: {}
+
+
smol-toml@1.4.2: {}
+
+
source-map-js@1.2.1: {}
+
+
space-separated-tokens@2.0.2: {}
+
+
statuses@2.0.1: {}
+
+
statuses@2.0.2: {}
+
+
string-width@4.2.3:
+
dependencies:
+
emoji-regex: 8.0.0
+
is-fullwidth-code-point: 3.0.0
+
strip-ansi: 6.0.1
+
+
string-width@7.2.0:
+
dependencies:
+
emoji-regex: 10.5.0
+
get-east-asian-width: 1.4.0
+
strip-ansi: 7.1.2
+
+
stringify-entities@4.0.4:
+
dependencies:
+
character-entities-html4: 2.1.0
+
character-entities-legacy: 3.0.0
+
+
strip-ansi@6.0.1:
+
dependencies:
+
ansi-regex: 5.0.1
+
+
strip-ansi@7.1.2:
+
dependencies:
+
ansi-regex: 6.2.2
+
+
tailwindcss@4.1.13: {}
+
+
tapable@2.2.3: {}
+
+
tar@7.4.3:
+
dependencies:
+
'@isaacs/fs-minipass': 4.0.1
+
chownr: 3.0.0
+
minipass: 7.1.2
+
minizlib: 3.0.2
+
mkdirp: 3.0.1
+
yallist: 5.0.0
+
+
tiny-inflate@1.0.3: {}
+
+
tinyexec@0.3.2: {}
+
+
tinyglobby@0.2.15:
+
dependencies:
+
fdir: 6.5.0(picomatch@4.0.3)
+
picomatch: 4.0.3
+
+
tlds@1.260.0: {}
+
+
toidentifier@1.0.1: {}
+
+
tr46@0.0.3: {}
+
+
trim-lines@3.0.1: {}
+
+
trough@2.2.0: {}
+
+
tsconfck@3.1.6(typescript@5.9.2):
+
optionalDependencies:
+
typescript: 5.9.2
+
+
tslib@2.8.1: {}
+
+
type-fest@4.41.0: {}
+
+
typescript@5.9.2: {}
+
+
ufo@1.6.1: {}
+
+
uint8arrays@3.0.0:
+
dependencies:
+
multiformats: 9.9.0
+
+
ultrahtml@1.6.0: {}
+
+
uncrypto@0.1.3: {}
+
+
undici-types@7.10.0: {}
+
+
undici@6.21.3: {}
+
+
unicode-properties@1.4.1:
+
dependencies:
+
base64-js: 1.5.1
+
unicode-trie: 2.0.0
+
+
unicode-trie@2.0.0:
+
dependencies:
+
pako: 0.2.9
+
tiny-inflate: 1.0.3
+
+
unified@11.0.5:
+
dependencies:
+
'@types/unist': 3.0.3
+
bail: 2.0.2
+
devlop: 1.1.0
+
extend: 3.0.2
+
is-plain-obj: 4.1.0
+
trough: 2.2.0
+
vfile: 6.0.3
+
+
unifont@0.5.2:
+
dependencies:
+
css-tree: 3.1.0
+
ofetch: 1.4.1
+
ohash: 2.0.11
+
+
unist-util-find-after@5.0.0:
+
dependencies:
+
'@types/unist': 3.0.3
+
unist-util-is: 6.0.0
+
+
unist-util-is@6.0.0:
+
dependencies:
+
'@types/unist': 3.0.3
+
+
unist-util-modify-children@4.0.0:
+
dependencies:
+
'@types/unist': 3.0.3
+
array-iterate: 2.0.1
+
+
unist-util-position@5.0.0:
+
dependencies:
+
'@types/unist': 3.0.3
+
+
unist-util-remove-position@5.0.0:
+
dependencies:
+
'@types/unist': 3.0.3
+
unist-util-visit: 5.0.0
+
+
unist-util-stringify-position@4.0.0:
+
dependencies:
+
'@types/unist': 3.0.3
+
+
unist-util-visit-children@3.0.0:
+
dependencies:
+
'@types/unist': 3.0.3
+
+
unist-util-visit-parents@6.0.1:
+
dependencies:
+
'@types/unist': 3.0.3
+
unist-util-is: 6.0.0
+
+
unist-util-visit@5.0.0:
+
dependencies:
+
'@types/unist': 3.0.3
+
unist-util-is: 6.0.0
+
unist-util-visit-parents: 6.0.1
+
+
unstorage@1.17.1:
+
dependencies:
+
anymatch: 3.1.3
+
chokidar: 4.0.3
+
destr: 2.0.5
+
h3: 1.15.4
+
lru-cache: 10.4.3
+
node-fetch-native: 1.6.7
+
ofetch: 1.4.1
+
ufo: 1.6.1
+
+
util-deprecate@1.0.2: {}
+
+
vfile-location@5.0.3:
+
dependencies:
+
'@types/unist': 3.0.3
+
vfile: 6.0.3
+
+
vfile-message@4.0.3:
+
dependencies:
+
'@types/unist': 3.0.3
+
unist-util-stringify-position: 4.0.0
+
+
vfile@6.0.3:
+
dependencies:
+
'@types/unist': 3.0.3
+
vfile-message: 4.0.3
+
+
vite@6.3.6(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1):
+
dependencies:
+
esbuild: 0.25.9
+
fdir: 6.5.0(picomatch@4.0.3)
+
picomatch: 4.0.3
+
postcss: 8.5.6
+
rollup: 4.50.1
+
tinyglobby: 0.2.15
+
optionalDependencies:
+
'@types/node': 24.3.1
+
fsevents: 2.3.3
+
jiti: 2.5.1
+
lightningcss: 1.30.1
+
+
vitefu@1.1.1(vite@6.3.6(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)):
+
optionalDependencies:
+
vite: 6.3.6(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)
+
+
web-namespaces@2.0.1: {}
+
+
web-streams-polyfill@3.3.3: {}
+
+
webidl-conversions@3.0.1: {}
+
+
whatwg-url@5.0.0:
+
dependencies:
+
tr46: 0.0.3
+
webidl-conversions: 3.0.1
+
+
which-pm-runs@1.1.0: {}
+
+
widest-line@5.0.0:
+
dependencies:
+
string-width: 7.2.0
+
+
wrap-ansi@9.0.2:
+
dependencies:
+
ansi-styles: 6.2.3
+
string-width: 7.2.0
+
strip-ansi: 7.1.2
+
+
ws@8.18.3: {}
+
+
xxhash-wasm@1.1.0: {}
+
+
yallist@5.0.0: {}
+
+
yargs-parser@21.1.1: {}
+
+
yocto-queue@1.2.1: {}
+
+
yocto-spinner@0.2.3:
+
dependencies:
+
yoctocolors: 2.1.2
+
+
yoctocolors@2.1.2: {}
+
+
zod-to-json-schema@3.24.6(zod@3.25.76):
+
dependencies:
+
zod: 3.25.76
+
+
zod-to-ts@1.2.0(typescript@5.9.2)(zod@3.25.76):
+
dependencies:
+
typescript: 5.9.2
+
zod: 3.25.76
+
+
zod@3.25.76: {}
+
+
zwitch@2.0.4: {}
+6
pnpm-workspace.yaml
···
+
onlyBuiltDependencies:
+
- '@tailwindcss/oxide'
+
- esbuild
+
- sharp
+
+
shamefullyHoist: true
+2
src/actions/index.ts
···
+
import { usersActions } from "./users";
import { worksActions } from "./works";
export const server = {
+
usersActions,
worksActions,
};
+68
src/actions/users.ts
···
+
import { ActionError, defineAction } from "astro:actions";
+
import { z } from "astro:content";
+
import { db, eq, Users } from "astro:db";
+
+
export const usersActions = {
+
addUser: defineAction({
+
accept: "form",
+
input: z.object({
+
nickname: z.string().optional(),
+
}),
+
handler: async (input, context) => {
+
const loggedInUser = context.locals.loggedInUser;
+
+
if (!loggedInUser) {
+
throw new ActionError({
+
code: "UNAUTHORIZED",
+
message: "To connect your PDS, you need to be logged in!",
+
});
+
}
+
+
const user = await db
+
.insert(Users)
+
.values({
+
...input.nickname && { nickname: input.nickname },
+
userDid: loggedInUser.did,
+
})
+
.returning();
+
+
return user;
+
},
+
}),
+
editUser: defineAction({
+
accept: "form",
+
input: z.object({
+
nickname: z.string().nonempty({ message: "Don't submit an empty nickname!" }),
+
}),
+
handler: async ({ nickname }, context) => {
+
const loggedInUser = context.locals.loggedInUser;
+
+
if (!loggedInUser) {
+
throw new ActionError({
+
code: "UNAUTHORIZED",
+
message: "You need to be logged in to set a nickname!",
+
});
+
}
+
+
// check if the user exists
+
const user = await db.select()
+
.from(Users)
+
.where(eq(Users.userDid, loggedInUser.did))
+
.limit(1);
+
+
if (user.length === 0) {
+
throw new ActionError({
+
code: "NOT_FOUND",
+
message: "Either you haven't connected your PDS account or something went wrong.",
+
});
+
}
+
+
const updatedUser = await db.update(Users)
+
.set({ nickname })
+
.where(eq(Users.userDid, loggedInUser.did))
+
.returning();
+
+
return updatedUser;
+
},
+
}),
+
}
+242 -22
src/actions/works.ts
···
+
import { AtUri } from "@atproto/api";
+
import { TID } from "@atproto/common-web";
+
import { getAgent } from "@/lib/atproto";
import { ActionError, defineAction } from "astro:actions";
import { z } from "astro:content";
-
import { db, eq, Users, Works } from "astro:db";
+
import { db, eq, and, Users, Works } from "astro:db";
+
import { customAlphabet } from "nanoid";
const workSchema = z.object({
title: z.string(),
content: z.string(),
-
tags: z.array(
-
z.object({
-
label: z.string(),
-
uri: z.string(),
-
})
-
),
+
tags: z.string(),
+
publish: z.boolean(),
});
export const worksActions = {
addWork: defineAction({
accept: "form",
input: workSchema,
-
handler: async (input, context) => {
+
handler: async ({ title, content, tags, publish }, context) => {
+
const loggedInUser = context.locals.loggedInUser;
+
// check against auth
-
if (!context.locals.loggedInUser) {
+
if (!loggedInUser) {
throw new ActionError({
code: "UNAUTHORIZED",
message: "You're not logged in!",
});
}
-
// const agent = await
-
-
// find the id of the logged in user
-
const userId = await db
+
// find the did of the logged in user from our db
+
const [user] = await db
.select({ did: Users.userDid })
.from(Users)
-
.where(
-
eq(Users.userDid, context.locals.loggedInUser.did)
-
);
-
+
.where(eq(Users.userDid, loggedInUser.did))
+
.limit(1);
+
+
if (!user) {
+
throw new ActionError({
+
code: "UNAUTHORIZED",
+
message: "You can only add a work if you connected your PDS!",
+
});
+
}
+
+
// convert the tags into json thru shenaniganery
+
console.log(tags);
+
+
// we'll create a timestamp and record here
+
const createdAt = new Date();
+
const record = {
+
title,
+
content,
+
tags,
+
};
+
+
let uri; // we'll assign this after a successful request was made
+
// depending on whether someone toggled the privacy option, push this into user pds
+
if (publish) {
+
try {
+
const rkey = TID.nextStr();
+
const agent = await getAgent(context.locals);
+
+
if (!agent) {
+
console.error("Agent not found!");
+
throw new ActionError({
+
code: "BAD_REQUEST",
+
message: "Something went wrong when connecting to your PDS.",
+
});
+
}
+
+
// ideally, we'd like tags to be references to another record but we won't process them here
+
// we'll just smush this in and pray
+
const result = await agent.com.atproto.repo.createRecord({
+
repo: user.did,
+
collection: "moe.fanfics.works",
+
rkey,
+
record: {
+
...record,
+
createdAt: createdAt.toISOString(),
+
},
+
validate: false,
+
});
+
+
uri = result.data.uri;
+
} catch (error) {
+
console.error(error);
+
throw new ActionError({
+
code: "BAD_REQUEST",
+
message: "Something went wrong with posting your fic to your PDS!",
+
});
+
}
+
}
+
+
// check nanoid for collision probability: https://zelark.github.io/nano-id-cc/
+
const alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
+
const nanoid = customAlphabet(alphabet, 16);
+
const slug = nanoid();
+
const work = await db.insert(Works).values({
-
author: userId[0].did,
-
title: input.title,
-
content: input.content,
-
tags: input.tags,
+
uri,
+
slug,
+
createdAt,
+
author: user.did,
+
...record,
}).returning();
+
+
const [newWork] = work;
+
return newWork;
+
},
+
}),
+
updateWork: defineAction({
+
accept: "form",
+
input: workSchema,
+
handler: async ({ title, content, tags }, context) => {
+
const workId = context.params["workId"];
+
const loggedInUser = context.locals.loggedInUser;
+
+
if (!loggedInUser) {
+
throw new ActionError({
+
code: "UNAUTHORIZED",
+
message: "You're not logged in!",
+
});
+
}
-
return work;
+
const [work] = await db.select().from(Works)
+
.where(and(
+
eq(Works.slug, workId!),
+
eq(Works.author, loggedInUser.did)
+
))
+
.limit(1);
+
+
if (!work) {
+
throw new ActionError({
+
code: "NOT_FOUND",
+
message: "Could not find the work to update!",
+
});
+
}
+
+
const updatedAt = new Date();
+
// if the work has a uri, we should update the record to the pds
+
if (work.uri) {
+
try {
+
const { rkey, host } = new AtUri(work.uri);
+
const agent = await getAgent(context.locals);
+
+
if (!agent) {
+
console.error("Agent not found!");
+
throw new ActionError({
+
code: "INTERNAL_SERVER_ERROR",
+
message: "Something went wrong when connecting to your PDS.",
+
});
+
}
+
+
if (loggedInUser.did !== host) {
+
throw new ActionError({
+
code: "UNAUTHORIZED",
+
message: "You can only update your own work!",
+
});
+
}
+
+
const result = await agent.com.atproto.repo.putRecord({
+
repo: work.author, // since the author will be a did
+
collection: "moe.fanfics.works",
+
rkey,
+
record: {
+
title,
+
tags,
+
content,
+
createdAt: work.createdAt.toISOString(),
+
updatedAt: updatedAt.toISOString(),
+
},
+
validate: false,
+
});
+
+
if (!result.success) {
+
throw new ActionError({
+
code: "INTERNAL_SERVER_ERROR",
+
message: "Something went wrong with updating your fic on your PDS!",
+
});
+
}
+
} catch (error) {
+
console.error(error);
+
throw new ActionError({
+
code: "BAD_REQUEST",
+
message: "Something went wrong with updating your fic on your PDS!",
+
});
+
}
+
}
+
+
const [result] = await db.update(Works)
+
.set({
+
title,
+
tags,
+
content,
+
updatedAt,
+
})
+
.where(and(
+
eq(Works.slug, workId!),
+
eq(Works.author, loggedInUser.did)
+
))
+
.returning();
+
+
return result;
+
},
+
}),
+
deleteWork: defineAction({
+
accept: "form",
+
handler: async (_, context) => {
+
const workId = context.params["workId"];
+
const loggedInUser = context.locals.loggedInUser;
+
+
if (!loggedInUser) {
+
throw new ActionError({
+
code: "UNAUTHORIZED",
+
message: "You're not logged in!",
+
});
+
}
+
+
const [work] = await db.select().from(Works)
+
.where(and(
+
eq(Works.slug, workId!),
+
eq(Works.author, loggedInUser.did)
+
))
+
.limit(1);
+
+
if (!work) {
+
throw new ActionError({
+
code: "NOT_FOUND",
+
message: "Could not find the work!",
+
});
+
}
+
+
if (work.uri) {
+
try {
+
const { rkey, host } = new AtUri(work.uri);
+
const agent = await getAgent(context.locals);
+
+
if (!agent) {
+
console.error("Agent not found!");
+
throw new ActionError({
+
code: "INTERNAL_SERVER_ERROR",
+
message: "Something went wrong when connecting to your PDS.",
+
});
+
}
+
+
if (loggedInUser.did !== host) {
+
throw new ActionError({
+
code: "UNAUTHORIZED",
+
message: "You can only delete works that you own!",
+
});
+
}
+
+
// we'll just smush this in and pray
+
const result = await agent.com.atproto.repo.deleteRecord({
+
repo: work.author, // since the author will be a did
+
collection: "moe.fanfics.works",
+
rkey,
+
});
+
} catch (error) {
+
console.error(error);
+
throw new ActionError({
+
code: "BAD_REQUEST",
+
message: "Something went wrong with deleting your fic from your PDS!",
+
});
+
}
+
}
},
}),
};
src/assets/fonts/opendyslexic/OpenDyslexic-Bold-Italic.otf

This is a binary file and will not be displayed.

src/assets/fonts/opendyslexic/OpenDyslexic-Bold-Italic.woff

This is a binary file and will not be displayed.

src/assets/fonts/opendyslexic/OpenDyslexic-Bold-Italic.woff2

This is a binary file and will not be displayed.

src/assets/fonts/opendyslexic/OpenDyslexic-Bold.otf

This is a binary file and will not be displayed.

src/assets/fonts/opendyslexic/OpenDyslexic-Bold.woff

This is a binary file and will not be displayed.

src/assets/fonts/opendyslexic/OpenDyslexic-Bold.woff2

This is a binary file and will not be displayed.

src/assets/fonts/opendyslexic/OpenDyslexic-Italic.otf

This is a binary file and will not be displayed.

src/assets/fonts/opendyslexic/OpenDyslexic-Italic.woff

This is a binary file and will not be displayed.

src/assets/fonts/opendyslexic/OpenDyslexic-Italic.woff2

This is a binary file and will not be displayed.

src/assets/fonts/opendyslexic/OpenDyslexic-Regular.otf

This is a binary file and will not be displayed.

src/assets/fonts/opendyslexic/OpenDyslexic-Regular.woff

This is a binary file and will not be displayed.

src/assets/fonts/opendyslexic/OpenDyslexic-Regular.woff2

This is a binary file and will not be displayed.

+5 -1
src/assets/styles/base.css
···
--space-2xl-3xl: clamp(4.5rem, 3.2727rem + 5.4545cqi, 7.5rem);
/* font tokens */
-
--body: var(--junicode);
+
--sans: var(--atkinson);
+
--serif: var(--plex-serif);
+
--mono: var(--plex-mono);
+
+
--body: var(--serif);
}
body {
+39
src/assets/styles/global.css
···
+
@import "tailwindcss";
+
@plugin "daisyui" {
+
themes: all;
+
/* add new themes here */
+
}
+
@plugin "@tailwindcss/typography";
+
+
/* default theme */
+
@theme {
+
/* font tokens */
+
--font-sans: var(--quattro);
+
--font-serif: var(--plex-serif);
+
--font-mono: var(--intel-mono);
+
--font-dyslexic: var(--dyslexic);
+
--font-display: var(--jacquard-12);
+
+
/* color tokens */
+
+
/* size tokens */
+
/* @link https://utopia.fyi/type/calculator?c=360,18,1.618,1240,20,1.25,10,2,&s=0.75|0.5|0.25,1.5|2|3|4|6,s-l&g=s,l,xl,12 */
+
--text-xs: clamp(0.4297rem, 0.2783rem + 0.6732cqi, 0.8rem);
+
--text-sm: clamp(0.6953rem, 0.5707rem + 0.554cqi, 1rem);
+
--text-base: clamp(1.125rem, 1.0739rem + 0.2273cqi, 1.25rem);
+
--text-lg: clamp(1.5625rem, 1.9257rem + -0.4686cqi, 1.8203rem);
+
--text-xl: clamp(1.9531rem, 3.351rem + -1.8037cqi, 2.9452rem);
+
--text-2xl: clamp(2.4414rem, 5.716rem + -4.2252cqi, 4.7653rem);
+
--text-3xl: clamp(3.0518rem, 9.616rem + -8.4699cqi, 7.7102rem);
+
--text-4xl: clamp(3.8147rem, 16.018rem + -15.7462cqi, 12.4751rem);
+
--text-5xl: clamp(4.7684rem, 26.4915rem + -28.0298cqi, 20.1848rem);
+
--text-6xl: clamp(5.9605rem, 43.581rem + -48.5427cqi, 32.6589rem);
+
--text-7xl: clamp(7.4506rem, 71.4115rem + -82.5302cqi, 52.8422rem);
+
--text-8xl: clamp(9.3132rem, 116.6654rem + -138.5189cqi, 85.4986rem);
+
--text-9xl: clamp(11.6415rem, 190.1667rem + -230.355cqi, 138.3368rem);
+
}
+
+
@utility title {
+
font-family: var(--font-display);
+
font-size: var(--text-xl);
+
}
+34 -10
src/components/Dialog.astro
···
---
+
import X from "@lucide/astro/icons/x";
+
interface Props {
id: string;
title: string;
+
class?: string;
alert?: boolean;
}
-
const { id, title, alert = false } = Astro.props;
+
const { id, title, class: className, alert = false } = Astro.props;
---
-
<dialog {id} role={alert ? "alertdialog" : undefined} closedby="any">
-
<header>
-
<h1>{title}</h1>
-
<form method="dialog">
-
<button>close</button>
-
</form>
-
</header>
-
-
<slot />
+
<dialog
+
{id}
+
class:list={[
+
"modal modal-bottom sm:modal-middle",
+
className,
+
]}
+
role={alert ? "alertdialog" : undefined}
+
closedby="any"
+
>
+
<div class="modal-box">
+
<header class="modal-header">
+
<h1 class="text-lg leading-none flex-1 pl-2">{title}</h1>
+
<form method="dialog">
+
<button aria-label="close" class="btn btn-error">
+
<X />
+
</button>
+
</form>
+
</header>
+
+
<div class="mt-14">
+
<slot />
+
</div>
+
</div>
</dialog>
+
<style>
+
@reference "../assets/styles/global.css";
+
+
.modal-header {
+
@apply absolute top-0 left-0 flex items-center justify-between p-2 container bg-accent text-accent-content;
+
}
+
</style>
+21
src/components/Navbar.astro
···
+
---
+
const loggedInUser = Astro.locals.loggedInUser;
+
---
+
<nav id="main-nav" class="navbar bg-base-100">
+
<div class="flex-1">
+
<a href="/" class="btn btn-ghost font-display text-xl">Home</a>
+
</div>
+
<div class="flex-none">
+
<ul class="menu menu-horizontal px-1">
+
<li><a href="/search">Search</a></li>
+
<li><a href="/works">Works</a></li>
+
{loggedInUser
+
? <>
+
<li><a href="/works/add">New Work</a></li>
+
<li><a href="/user">Settings</a></li>
+
</>
+
: <li><a href="/login">Login</a></li>
+
}
+
</ul>
+
</div>
+
</nav>
+115 -25
src/components/Popover.astro
···
---
+
import { Info, TriangleAlert, Skull } from "@lucide/astro";
+
interface Props {
+
id?: string;
label: string;
-
icon?: string;
+
icon?: "info" | "warning" | "danger";
title?: string;
class?: string;
}
-
const { label, icon, title, class: className, ...rest } = Astro.props;
+
const { id, label, icon, title, class: className, ...rest } = Astro.props;
---
-
<details class:list={["popup", className]} {...rest}>
-
<summary>
-
{icon
-
? <div class="icon" aria-label={label}>x</div>
-
: <span>{label}</span>
-
}
-
</summary>
-
-
{title &&
-
<h3>{title}</h3>
+
<!-- type button needs to be set here, otherwise it doesn't work inside forms -->
+
<button
+
type="button"
+
id={`${id}-trigger`}
+
class:list={[
+
"btn btn-xs",
+
icon && ["btn-circle", "btn-ghost"],
+
icon &&
+
(icon === "info") ? "text-info" :
+
(icon === "warning") ? "text-warning" :
+
(icon === "danger") ? "text-error" :
+
"text-base-content",
+
"popover-btn"
+
]}
+
aria-describedby={id}
+
popovertarget={id}
+
>
+
{icon
+
?
+
<div class="icon" aria-label={label}>
+
{icon &&
+
(icon === "info") ? <Info /> :
+
(icon === "warning") ? <TriangleAlert /> :
+
(icon === "danger") ? <Skull /> :
+
<></>
+
}
+
</div>
+
: <span>{label}</span>
}
-
-
<slot />
-
</details>
+
</button>
-
<style>
-
.popup {
-
display: inline-block;
+
<div
+
{id}
+
class:list={[
+
"popover-content",
+
className,
+
]}
+
role="tooltip"
+
popover="auto"
+
{...rest}
+
>
+
<div class="card-body">
+
{title && (
+
<h3 class="card-title">{title}</h3>
+
)}
+
+
<slot />
+
</div>
+
</div>
-
summary {
-
font-size: var(--step--2);
-
cursor: pointer;
+
<style define:vars={{ anchor: `--${id}-anchor` }}>
+
@reference "../assets/styles/global.css";
+
+
.popover-btn {
+
@supports (anchor-name: var(--anchor)) {
+
anchor-name: var(--anchor);
}
+
}
-
&::details-content {
-
position: absolute;
-
z-index: 1;
+
.popover-content {
+
@apply dropdown card mx-0 inset-auto bg-base-100 w-72 shadow;
+
+
@supports (position-anchor: var(--anchor)) and (left: anchor(center)) {
+
position-anchor: var(--anchor);
+
left: anchor(center);
+
transform: translateX(-50%);
}
}
-
</style>
+
</style>
+
+
<script>
+
import { computePosition, autoUpdate, shift, flip } from "@floating-ui/dom";
+
const triggers = document.querySelectorAll(".popover-btn");
+
+
triggers.forEach(trigger => {
+
const btn = trigger as HTMLButtonElement;
+
// triggering button will always end with "-trigger"
+
// so slice that from the id
+
const id = btn.id.slice(0, -8);
+
const popover = document.getElementById(`${id}`) as HTMLElement;
+
+
btn.addEventListener("click", (e) => {
+
e.preventDefault();
+
popover.togglePopover();
+
});
+
+
popover.addEventListener("toggle", (e) => {
+
const cleanup = autoUpdate(
+
btn,
+
popover,
+
() => {
+
computePosition(btn, popover, {
+
middleware: [
+
flip(),
+
shift({
+
crossAxis: false,
+
}),
+
],
+
}).then(({ placement, middlewareData }) => {
+
Object.assign(popover.style, {
+
top: `anchor(${placement})`,
+
...(placement === "top") && {
+
transform: (middlewareData.shift?.enabled.x)
+
? `translate(calc(-50% + ${middlewareData.shift.x}px), -100%)`
+
: `translate(-50%, -100%)`,
+
},
+
});
+
});
+
});
+
if (e.newState === "open") {
+
cleanup;
+
} else {
+
cleanup();
+
}
+
});
+
});
+
</script>
+49 -23
src/components/Settings.astro
···
-
<div id="settings">
+
---
+
import Dialog from "./Dialog.astro";
+
---
+
<Dialog id="settings" title="User preferences">
<form id="user-settings">
-
<label for="font-family">font family</label>
-
<select name="fontFamily" id="font-family">
-
<option value="default">choose...</option>
-
<option value="--serif">serif</option>
-
<option value="--mono">monospaced</option>
-
<option value="--sans-serif">sans serif</option>
-
<option value="--dyslexia">dyslexic</option>
-
</select>
-
-
<label for="font-size">text size</label>
-
<input type="range" name="fontSize" id="font-size" min="-1" max="2" step="1" />
+
<fieldset class="fieldset">
+
<label for="font-family">font family</label>
+
<select class="select" name="fontFamily" id="font-family">
+
<option value="default">choose...</option>
+
<option value="--font-serif">serif</option>
+
<option value="--font-mono">monospaced</option>
+
<option value="--font-sans">sans serif</option>
+
<option value="--font-dyslexic">dyslexic</option>
+
</select>
+
</fieldset>
-
<label for="line-height">line height</label>
-
<input type="range" name="lineHeight" id="line-height" min="1" max="2" step="0.05" />
+
<fieldset class="fieldset">
+
<label for="font-size">text size</label>
+
<input class="range" type="range" name="fontSize" id="font-size" min="-1" max="2" step="1" />
+
</fieldset>
-
<label for="letter-spacing">letter spacing</label>
-
<input type="range" name="letterSpacing" id="letter-spacing" min="0" max="0.1" step="0.01" />
+
<fieldset class="fieldset">
+
<label for="line-height">line height</label>
+
<input class="range" type="range" name="lineHeight" id="line-height" min="1" max="2" step="0.05" />
+
</fieldset>
+
+
<fieldset class="fieldset">
+
<label for="letter-spacing">letter spacing</label>
+
<input class="range" type="range" name="letterSpacing" id="letter-spacing" min="0" max="0.1" step="0.01" />
+
</fieldset>
-
<label for="word-spacing">word spacing</label>
-
<input type="range" name="wordSpacing" id="word-spacing" min="0" max="0.5" step="0.01" />
+
<fieldset class="fieldset">
+
<label for="word-spacing">word spacing</label>
+
<input class="range" type="range" name="wordSpacing" id="word-spacing" min="0" max="0.5" step="0.01" />
+
</fieldset>
-
<div id="test-area">
+
<div id="test-area" class="mt-4 text-(length:--size) leading-(--line-height) tracking-(--letter-spacing) line-clamp-4">
<p>Lorem ipsum dolor, sit amet consectetur adipisicing elit. Asperiores quae dolorum debitis vero nostrum nobis aspernatur ipsam sunt dolorem, eum ut corrupti unde commodi soluta natus repellendus totam animi adipisci.</p>
</div>
-
<button id="confirm-settings">save</button>
+
<div class="modal-action">
+
<button formmethod="dialog" value="default" class="btn btn-neutral">Cancel</button>
+
<button id="confirm-settings" class="btn btn-primary">Save</button>
+
</div>
</form>
-
</div>
+
</Dialog>
<style>
#test-area {
-
--font: var(--body);
+
--step--1: clamp(0.6953rem, 0.5707rem + 0.554vw, 1rem);
+
--step-0: clamp(1.125rem, 1.0739rem + 0.2273vw, 1.25rem);
+
--step-1: clamp(1.5625rem, 1.9257rem + -0.4686vw, 1.8203rem);
+
--step-2: clamp(1.9531rem, 3.351rem + -1.8037vw, 2.9452rem);
+
+
--font: var(--font-sans);
--size: var(--step-0);
--letter-spacing: 0em;
--word-spacing: 0em;
···
const test = document.getElementById("test-area");
form?.addEventListener("submit", (e) => {
-
e.preventDefault();
+
const target = e.target as HTMLFormElement;
+
if (target.nodeValue === null) {
+
return;
+
} else {
+
e.preventDefault();
+
}
});
inputs.forEach((input) => {
src/components/TagsInput.astro

This is a binary file and will not be displayed.

+43 -6
src/layouts/Layout.astro
···
---
+
import "$/styles/global.css";
import { Font } from "astro:assets";
-
import "$/styles/base.css";
+
import Navbar from "~/Navbar.astro";
+
+
interface Props {
+
title?: string;
+
skipLink?: string;
+
class?: string;
+
}
-
const { title = "fanfics" } = Astro.props;
+
const { title = "fanfics", skipLink, class: className, ...rest } = Astro.props;
---
<html lang="en">
<head>
···
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<meta name="viewport" content="width=device-width" />
<title>{title}</title>
-
<Font cssVariable="--junicode" preload />
+
<Font cssVariable="--quattro" preload />
+
<Font cssVariable="--dyslexic" preload />
+
<Font cssVariable="--intel-mono" preload />
+
<Font cssVariable="--plex-serif" preload />
+
<Font cssVariable="--jacquard-12" preload />
<slot name="head" />
</head>
-
<body>
-
<slot />
+
<body class="flex flex-col min-h-svh">
+
<header>
+
{skipLink && (
+
<a class="skip-link" href={`#${skipLink}`}>Skip to content</a>
+
)}
+
+
<Navbar />
+
</header>
+
+
<div class:list={["sm:w-10/12 sm:mx-auto max-w-full mx-6 text-base", className]} {...rest}>
+
<slot />
+
</div>
+
+
<footer class="footer sm:footer-horizontal footer-center bg-base-300 text-base-content mt-auto p-5">
+
copyright or something ig
+
</footer>
</body>
-
</html>
+
</html>
+
+
<style>
+
@reference "../assets/styles/global.css";
+
+
.skip-link {
+
@apply absolute top-3 -left-full transition-all ease-in-out btn btn-ghost;
+
+
&:focus {
+
@apply left-3;
+
}
+
}
+
</style>
-57
src/layouts/Work.astro
···
-
---
-
import Layout from "./Layout.astro";
-
-
interface Props {
-
title: string;
-
has_previous: boolean;
-
has_next: boolean;
-
}
-
-
const { title, has_previous, has_next } = Astro.props;
-
---
-
<Layout title={title}>
-
<a href="#workname-content">to content</a>
-
-
<nav id="work-menu">
-
{has_previous && (
-
// chapterid - 1?
-
<a href="">previous chaptertitle</a>
-
)}
-
<!-- if theres more than one chapter, render this box -->
-
<select name="workname-chapters" id="workname-chapters">
-
<option value="default" selected>Choose chapter...</option>
-
<!-- map each chapter here -->
-
</select>
-
-
{has_next && (
-
// chapterid + 1 ?
-
<a href="">next chaptertitle</a>
-
)}
-
</nav>
-
-
<main>
-
<header>
-
<h1>{title}</h1>
-
<h2>author name</h2>
-
-
<div id="summary">
-
summary
-
</div>
-
</header>
-
-
<section id="workname-content">
-
<!-- if work has its own style, render it here somehow -->
-
<details>
-
<summary>Author's notes</summary>
-
this should include author's notes
-
</details>
-
-
<slot />
-
</section>
-
-
<aside id="workname-comments">
-
<!-- use bsky api to render comments here -->
-
<!-- paginate this -->
-
</aside>
-
</main>
-
</Layout>
+70
src/layouts/WorkPage.astro
···
+
---
+
import Layout from "./Layout.astro";
+
+
interface Props {
+
slug: string;
+
title: string;
+
author: string;
+
// tags: Tag[];
+
tags: any;
+
createdAt: Date;
+
updatedAt?: Date | null;
+
comments?: boolean;
+
previous?: boolean;
+
next?: boolean;
+
}
+
+
const { slug, title, author, tags, createdAt, updatedAt, comments, previous, next } = Astro.props;
+
---
+
<Layout title={title} skipLink="work-body">
+
<nav id="work-menu">
+
{previous && (
+
// chapterid - 1?
+
<a href="">previous chaptertitle</a>
+
)}
+
<!-- if theres more than one chapter, render this box -->
+
<select name="chapterSelect" id={`${slug}-chapters`} class="select">
+
<option value="default" selected>Choose chapter...</option>
+
<!-- map each chapter here -->
+
</select>
+
+
{next && (
+
// chapterid + 1 ?
+
<a href="">next chaptertitle</a>
+
)}
+
</nav>
+
+
<main id="work-body">
+
<header>
+
<h1>{title}</h1>
+
<h2>{author}</h2>
+
<!-- replace this at some point -->
+
{JSON.stringify(tags)}
+
<time datetime={createdAt.toISOString()}>{createdAt}</time>
+
{updatedAt && (
+
<time datetime={updatedAt.toISOString()}>{updatedAt}</time>
+
)}
+
+
<div id="summary">
+
summary
+
</div>
+
</header>
+
+
<section id={`${slug}-content`}>
+
<!-- if work has its own style, render it here somehow -->
+
<details>
+
<summary>Author's notes</summary>
+
this should include author's notes
+
</details>
+
+
<slot />
+
</section>
+
+
{comments && (
+
<aside id={`${slug}-comments`}>
+
<!-- use bsky api to render comments here -->
+
<!-- paginate this -->
+
</aside>
+
)}
+
</main>
+
</Layout>
+23 -2
src/lib/atproto.ts
···
import type { APIContext } from "astro";
+
import { AtpBaseClient } from "@atproto/api";
+
import { DidResolver } from "@atproto/identity";
-
async function getAgent(locals: APIContext["locals"]) {
-
const agent = new Object()
+
export async function getAgent(locals: APIContext["locals"]) {
+
const loggedInUser = locals.loggedInUser;
+
try {
+
const agent = new AtpBaseClient(loggedInUser?.fetchHandler!);
+
return agent;
+
} catch (error) {
+
// we don't need to return anything to make sure the site still functions for not logged in users?
+
console.error(error);
+
return;
+
}
+
}
+
+
const RESOLVER = new DidResolver({});
+
export async function didToHandle(did: string) {
+
try {
+
const atProtoData = await RESOLVER.resolveAtprotoData(did);
+
return atProtoData.handle;
+
} catch (error) {
+
// console.error(error);
+
return "Invalid handle";
+
}
}
+5 -5
src/lib/types.ts
···
export interface Work {
-
id: number;
+
slug: string;
title: string;
-
author: number | string;
-
tags: Array<Tag>;
+
author: string;
+
tags: Tag[];
content: string;
-
createdAt: Date | string;
-
updatedAt: Date | string | undefined;
+
createdAt: Date;
+
updatedAt: Date | undefined;
}
export interface Tag {
+8
src/pages/errors/not-found.astro
···
+
---
+
import Layout from "@/layouts/Layout.astro";
+
---
+
<Layout>
+
<h1 class="title">Not found!</h1>
+
<p>There's a chance that the resource you're looking for doesn't exist or there was a typo in the URL.</p>
+
<p>You can go back to the <a href="/">home page</a> or report the issue through the contact form.</p>
+
</Layout>
+7
src/pages/errors/unauthorized.astro
···
+
---
+
import Layout from "@/layouts/Layout.astro";
+
---
+
<Layout>
+
<h1 class="title">Unauthorized</h1>
+
<p>You don't have the proper permissions to make that operation.</p>
+
</Layout>
+8 -11
src/pages/index.astro
···
---
import Layout from "../layouts/Layout.astro";
-
import Settings from "~/Settings.astro";
const currentUser = Astro.locals.loggedInUser;
---
-
<Layout>
-
<h1>hi</h1>
-
<main>
+
<Layout skipLink="content">
+
<main id="content">
+
<h1 class="font-display text-xl">hi</h1>
<p>Lorem ipsum dolor, sit amet consectetur adipisicing elit. Praesentium eum est quisquam distinctio magni recusandae quia vero tempore consectetur! Dolore repellat, voluptatem dignissimos sit eaque iste atque facilis in saepe?</p>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolorem, maxime libero eveniet repellat corporis, architecto voluptate maiores ullam accusamus quasi nostrum nihil placeat cum earum ex voluptatum, harum sunt quam!</p>
</main>
-
<Settings />
-
{currentUser
? <>
-
<p>you're logged in!</p>
-
<form action="/oauth/logout" method="post">
-
<button>logout</button>
-
</form>
-
</>
+
<p>you're logged in!</p>
+
<form action="/oauth/logout" method="post">
+
<button>logout</button>
+
</form>
+
</>
: <a href="/login">login</a>}
</Layout>
+26 -21
src/pages/login.astro
···
const currentUser = Astro.locals.loggedInUser;
---
<Layout>
-
{
-
currentUser ? (
-
// If there's a current user, show the log out button
-
<form action="/oauth/logout" method="post">
-
<button type="submit">Logout</button>
-
</form>
-
) : (
-
// If there's no current user, show the log in button
-
<form action="/oauth/login" method="post">
-
<label for="handle">Input your handle
-
<Popover label="help">
-
<h3>What's my handle?</h3>
-
<p>It'll look like a website URL without the <samp>https://</samp> or slashes, so a typical BlueSky handle will look something like: <b>alice.bsky.social</b>.</p>
-
<p>What yours will look like depends on whether you made a custom handle!</p>
-
</Popover>
-
</label>
-
<input name="atproto-id" id="handle" required />
-
<button type="submit">Login</button>
-
</form>
-
)
-
}
+
<main id="content">
+
<h1 class="font-display text-xl">Log in</h1>
+
{
+
currentUser ? (
+
// If there's a current user, show the log out button
+
<form action="/oauth/logout" method="post">
+
<button type="submit">Logout</button>
+
</form>
+
) : (
+
// If there's no current user, show the log in button
+
<form action="/oauth/login" method="post">
+
<fieldset class="fieldset mx-auto place-content-center max-w-md">
+
<label class="fieldset-label" for="handle">
+
Input your handle
+
<Popover id="handle-help" icon="info" label="help" title="What's my handle?">
+
<p>It'll look like a website URL without the <samp>https://</samp> or slashes, so a typical BlueSky handle will look something like: <b>alice.bsky.social</b>.</p>
+
<p>What yours will look like depends on whether you made a custom handle!</p>
+
</Popover>
+
</label>
+
<input type="text" class="input w-full" name="atproto-id" id="handle" required />
+
<button class="btn btn-primary" type="submit">Login</button>
+
</fieldset>
+
</form>
+
)
+
}
+
</main>
</Layout>
+14
src/pages/search.astro
···
+
---
+
import Layout from "../layouts/Layout.astro";
+
// we need an appview to search all possible fanfics in the protocol
+
---
+
+
<Layout>
+
<main id="search">
+
<h1 class="text-lg">Search</h1>
+
<form method="get">
+
<label class="label" for="work-search">Title</label>
+
<input class="input" type="search" name="workSearch" id="work-search" />
+
</form>
+
</main>
+
</Layout>
+26
src/pages/user/[userDid].astro
···
+
---
+
import Layout from "@/layouts/Layout.astro";
+
import { didToHandle } from "@/lib/atproto";
+
import { db, eq, Users, Works } from "astro:db";
+
+
const { userDid } = Astro.params;
+
+
const [user] = await db.select()
+
.from(Users)
+
.where(eq(Users.userDid, userDid!))
+
.innerJoin(Works, eq(Works.author, Users.userDid))
+
.limit(1);
+
+
if (!user) {
+
return Astro.redirect("/not-found");
+
}
+
---
+
<Layout>
+
<h1 class="title">
+
{user.Users.nickname
+
? user.Users.nickname
+
: await didToHandle(user.Users.userDid)}
+
</h1>
+
+
{JSON.stringify(user.Works)}
+
</Layout>
+122
src/pages/user/index.astro
···
+
---
+
import Layout from "@/layouts/Layout.astro";
+
import { Info } from "@lucide/astro";
+
import { actions } from "astro:actions";
+
import { db, eq, Users, Works } from "astro:db";
+
import Dialog from "~/Dialog.astro";
+
import Popover from "~/Popover.astro";
+
import Settings from "~/Settings.astro";
+
+
const loggedInUser = Astro.locals.loggedInUser;
+
+
if (!loggedInUser) {
+
return Astro.redirect("/login");
+
}
+
+
const query = await db.select()
+
.from(Users)
+
.where(eq(Users.userDid, loggedInUser.did))
+
.limit(1);
+
const user = query[0];
+
+
const works = await db.select()
+
.from(Works)
+
.where(eq(Works.author, user?.userDid ?? loggedInUser.did));
+
---
+
<Layout skipLink="user-profile">
+
<main id="user-profile">
+
<h1 class="text-xl">User Settings</h1>
+
<p>{loggedInUser?.handle}</p>
+
+
<!-- registration will only happen in the below form! -->
+
{(query.length === 0) && (
+
<>
+
<h2 class="text-lg">Connect account</h2>
+
<div class="info">
+
<p>Right now, you aren't connected to the site. You can connect your BlueSky / self-hosted PDS account to this website to post a work.</p>
+
<p>Please check out the Terms of Service, Privacy Policy, and Code of Conduct before connecting your account.</p>
+
</div>
+
<button id="trigger-confirm" class="btn btn-accent">Connect your PDS Account</button>
+
+
<Dialog id="connect-account" title="Are you sure?">
+
<form action={actions.usersActions.addUser} method="post">
+
<fieldset class="fieldset">
+
<div class="flex gap-1">
+
<label for="nickname" class="label">Nickname</label>
+
<Popover id="nickname-note" label="info" icon="warning" title="Important">
+
<p>If you do set a nickname, please make sure it's unique! Having two people with the same nickname would cause confusion, unfortunately.</p>
+
</Popover>
+
</div>
+
<input class="input w-full" type="text" name="nickname" id="nickname" aria-describedby="nickname-info" />
+
<div id="nickname-info" class="alert">
+
<Info class="text-info" />
+
<div>
+
<p>You can optionally set your nickname for this site.</p>
+
<p>This is separate from your handle and acts similarly to a penname.</p>
+
</div>
+
</div>
+
</fieldset>
+
+
<div class="modal-action">
+
<button class="btn btn-neutral" formmethod="dialog">Cancel</button>
+
<button class="btn btn-primary">Confirm</button>
+
</div>
+
</form>
+
</Dialog>
+
</>
+
)}
+
+
{user && (
+
<>
+
<h2>your nickname???</h2>
+
<time datetime={user.joinedAt.toISOString()}>{user.joinedAt}</time>
+
<p>{user.userDid}</p>
+
+
{works && (
+
<section>
+
<ul>
+
{works.map(work => (
+
<article>
+
<h3>{work.title}</h3>
+
+
<time datetime={work.createdAt.toISOString()}>
+
{work.createdAt}
+
</time>
+
{work.updatedAt && (
+
<time datetime={work.updatedAt.toISOString()}>
+
{work.updatedAt}
+
</time>
+
)}
+
+
<ul>
+
{JSON.stringify(work.tags)}
+
</ul>
+
+
summary here
+
</article>
+
))}
+
</ul>
+
</section>
+
)}
+
</>
+
)}
+
+
<button class="btn btn-primary" id="trigger-settings">Set preferences</button>
+
<Settings />
+
</main>
+
</Layout>
+
+
<script>
+
const trigger = document.getElementById("trigger-confirm");
+
const trigger2 = document.getElementById("trigger-settings");
+
const confirmDialog = document.getElementById("connect-account") as HTMLDialogElement;
+
const settingsDialog = document.getElementById("settings") as HTMLDialogElement;
+
+
trigger?.addEventListener("click", (_) => {
+
confirmDialog.showModal();
+
});
+
+
trigger2?.addEventListener("click", (_) => {
+
settingsDialog.showModal();
+
});
+
</script>
-29
src/pages/works/[id].astro
···
-
---
-
import Layout from "@/layouts/Layout.astro";
-
import type { Tag } from "@/lib/types";
-
import type { GetStaticPaths } from "astro";
-
import { db, eq, Users, Works } from "astro:db";
-
-
export const getStaticPaths = (async () => {
-
const works = await db.select().from(Works).all();
-
return works.map(work => {
-
return {
-
params: { id: work.id, },
-
props: { work },
-
};
-
});
-
}) satisfies GetStaticPaths;
-
-
const { work } = Astro.props;
-
// const author = await db.select().from(Users).where(eq(Users.id, Works.author));
-
---
-
<Layout>
-
<h1>{work.title}</h1>
-
<!-- <h2>{author[0].userDid}</h2> -->
-
<time datetime={work.createdAt.toISOString()}>{work.createdAt}</time>
-
{(work.tags as Tag[]).map(tag => (
-
<a href={tag.url}>{tag.label}</a>
-
))}
-
-
<Fragment set:html={work.content} />
-
</Layout>
+107
src/pages/works/[workId]/edit.astro
···
+
---
+
import Layout from "@/layouts/Layout.astro";
+
import { isInputError } from "astro:actions";
+
import { actions } from "astro:actions";
+
import { db, eq, Users, Works } from "astro:db";
+
+
const { workId } = Astro.params;
+
const loggedInUser = Astro.locals.loggedInUser;
+
+
// the work could be fetched from the database or from the pds
+
// would this potentially lighten db load? maybe
+
const [work] = await db.select()
+
.from(Works)
+
.where(eq(Works.slug, workId!))
+
.innerJoin(Users, eq(Works.author, Users.userDid))
+
.limit(1);
+
+
if (!work) {
+
return Astro.redirect("/errors/not-found");
+
}
+
+
if (!loggedInUser) {
+
return Astro.redirect("/login");
+
}
+
+
if (work.Users.userDid !== loggedInUser.did) {
+
return Astro.redirect("/errors/unauthorized");
+
}
+
+
const result = Astro.getActionResult(actions.worksActions.updateWork);
+
const errors = isInputError(result?.error) ? result.error.fields : {};
+
---
+
<Layout skipLink={`edit-${workId}`}>
+
<main id={`edit-${workId}`}>
+
<form action={actions.worksActions.updateWork} method="post">
+
<fieldset class="fieldset">
+
<label for="title" class="label">Title</label>
+
<input
+
type="text"
+
name="title"
+
id="title"
+
class="input w-full"
+
aria-describedby="title-error"
+
value={work.Works.title}
+
required
+
transition:persist
+
/>
+
{errors.title && (
+
<div id="title-error">
+
{errors.title}
+
</div>
+
)}
+
</fieldset>
+
+
<fieldset class="fieldset">
+
<label for="tags" class="label">Add tags</label>
+
<input
+
type="text"
+
list="tags-list"
+
name="tags"
+
id="tags"
+
class="input"
+
aria-describedby="tags-error"
+
value={work.Works.tags as string}
+
transition:persist
+
/>
+
<!-- could be cool to fetch tags from a tags server or smth? idk -->
+
<datalist id="tags-list">
+
<option value="test">here</option>
+
<option value="tag2">another</option>
+
<option value="tag3">try them all!</option>
+
</datalist>
+
{errors.tags && (
+
<div id="tags-error">
+
{errors.tags}
+
</div>
+
)}
+
</fieldset>
+
+
<fieldset class="fieldset">
+
<label for="content" class="label">Body</label>
+
<textarea
+
name="content"
+
id="content"
+
class="textarea"
+
aria-describedby="content-error"
+
transition:persist
+
>
+
{work.Works.content.trim()}
+
</textarea>
+
{errors.content && (
+
<div id="content-error">
+
{errors.content}
+
</div>
+
)}
+
</fieldset>
+
+
<button class="btn btn-primary">Submit</button>
+
</form>
+
+
{result?.error && (
+
<div class="error">
+
{result.error.message}
+
</div>
+
)}
+
</main>
+
</Layout>
+36
src/pages/works/[workId]/index.astro
···
+
---
+
import WorkPage from "@/layouts/WorkPage.astro";
+
import { didToHandle } from "@/lib/atproto";
+
import { db, eq, Users, Works } from "astro:db";
+
+
const { workId } = Astro.params;
+
const loggedInUser = Astro.locals.loggedInUser;
+
+
const [work] = await db.select()
+
.from(Works)
+
.where(eq(Works.slug, workId!))
+
.innerJoin(Users, eq(Works.author, Users.userDid))
+
.limit(1);
+
+
if (!work) {
+
return Astro.redirect("/not-found");
+
}
+
---
+
<WorkPage
+
slug={work.Works.slug}
+
title={work.Works.title}
+
author={work.Users.nickname
+
? work.Users.nickname
+
: await didToHandle(work.Users.userDid)}
+
createdAt={work.Works.createdAt}
+
updatedAt={work.Works.updatedAt}
+
tags={work.Works.tags}
+
>
+
{(work.Users.userDid === loggedInUser?.did) && (
+
<a href={`/works/${workId}/edit`}>Edit your work</a>
+
)}
+
+
<div class="prose lg:prose-xl">
+
<Fragment set:html={work.Works.content} />
+
</div>
+
</WorkPage>
+66 -19
src/pages/works/add.astro
···
---
import Layout from "@/layouts/Layout.astro";
-
import { actions } from "astro:actions";
+
import { actions, isInputError } from "astro:actions";
const loggedInUser = Astro.locals.loggedInUser;
if (!loggedInUser) {
-
Astro.redirect("/works");
+
// put in a thing that tells the user they're not logged in
+
return Astro.redirect("/works");
}
const result = Astro.getActionResult(actions.worksActions.addWork);
+
const errors = isInputError(result?.error) ? result.error.fields : {};
+
+
if (result && !result.error) {
+
return Astro.redirect(`/works/${result.data.slug}`);
+
}
---
-
<Layout>
-
<h1>Add a new work</h1>
+
<Layout skipLink="new-work">
+
<main id="new-work">
+
<h1>Add a new work</h1>
-
<form action={actions.worksActions.addWork} method="post">
-
<label for="title">title</label>
-
<input type="text" name="title" id="title" required />
+
<form action={actions.worksActions.addWork} method="post">
+
<label for="title">title</label>
+
<input
+
type="text"
+
name="title"
+
id="title"
+
aria-describedby="title-error"
+
required
+
transition:persist
+
/>
+
{errors.title && (
+
<div id="title-error">
+
{errors.title}
+
</div>
+
)}
-
<label for="tags">add tags</label>
-
<input list="tags-list" name="tags" id="tags" />
-
<!-- could be cool to fetch tags from a tags server or smth? idk -->
-
<datalist id="tags-list">
-
<option value="test">here</option>
-
<option value="tag2">another</option>
-
<option value="tag3">try them all!</option>
-
</datalist>
+
<label for="tags">add tags</label>
+
<input
+
type="text"
+
list="tags-list"
+
name="tags"
+
id="tags"
+
aria-describedby="tags-error"
+
transition:persist
+
/>
+
<!-- could be cool to fetch tags from a tags server or smth? idk -->
+
<datalist id="tags-list">
+
<option value="test">here</option>
+
<option value="tag2">another</option>
+
<option value="tag3">try them all!</option>
+
</datalist>
+
{errors.tags && (
+
<div id="tags-error">
+
{errors.tags}
+
</div>
+
)}
-
<label for="content">body</label>
-
<textarea name="content" id="content"></textarea>
+
<label for="content">body</label>
+
<!-- replace this with a rich text editor / code editor later -->
+
<textarea name="content" id="content" aria-describedby="content-error" transition:persist></textarea>
+
{errors.content && (
+
<div id="content-error">
+
{errors.content}
+
</div>
+
)}
+
+
<label for="publish">Publish to your PDS?</label>
+
<input type="checkbox" name="publish" id="publish" />
+
+
<button>submit</button>
+
</form>
-
<button>submit</button>
-
</form>
+
{result?.error && (
+
<div class="error">
+
{result.error.message}
+
</div>
+
)}
+
</main>
</Layout>
+47 -16
src/pages/works/index.astro
···
---
import Layout from "@/layouts/Layout.astro";
+
import { didToHandle } from "@/lib/atproto";
import type { Tag } from "@/lib/types";
import { db, eq, Users, Works } from "astro:db";
···
---
<Layout>
-
<h1>works</h1>
-
{loggedInUser &&
-
<a href="/works/add">wanna write kid?</a>
-
}
+
<h1 class="title">Works</h1>
+
+
<main id="content" class="flex flex-col gap-5 max-w-full">
+
{loggedInUser &&
+
<a href="/works/add">wanna write kid?</a>
+
}
+
+
{works.map(async ({ Works, Users }) => (
+
<article class="card rounded-box shadow p-5">
+
<header>
+
<div class="flex items-center justify-between">
+
<hgroup class="flex-1">
+
<h2 class="card-title">
+
<a href={`/works/${Works.slug}`}>{Works.title}</a>
+
</h2>
+
<h3>
+
{Users.nickname
+
? Users.nickname
+
: await didToHandle(Users.userDid)}
+
</h3>
+
</hgroup>
+
<time datetime={Works.createdAt.toISOString()}>
+
{Works.createdAt.toLocaleDateString()}
+
</time>
+
</div>
+
{JSON.stringify(Works.tags)}
+
{/* <ul class="flex flex-wrap gap-1.5">
+
{(Works.tags as Tag[]).map((tag: Tag) => (
+
<li><a class="tag" href={tag.url}>{tag.label}</a></li>
+
))}
+
</ul> */}
+
</header>
-
{works.map(({ Works, Users }) => (
-
<article>
-
<h2>{Works.title}</h2>
-
<h3>{Users.userDid}</h3>
-
<time datetime={Works.createdAt.toISOString()}>{Works.createdAt}</time>
-
{(Works.tags as Tag[]).map((tag: Tag) => (
-
<a href={tag.url}>{tag.label}</a>
-
))}
+
<div class="card-body prose lg:prose-xl">
+
<Fragment set:html={Works.content} />
+
</div>
+
</article>
+
))}
+
</main>
+
</Layout>
+
+
<style>
+
@reference "../../assets/styles/global.css";
-
<Fragment set:html={Works.content} />
-
</article>
-
))}
-
</Layout>
+
.tag {
+
@apply btn btn-accent;
+
}
+
</style>