+8
.changeset/README.md
+8
.changeset/README.md
···
1
+
# Changesets
2
+
3
+
Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
4
+
with multi-package repos, or single-package repos to help you version and publish your code. You can
5
+
find the full documentation for it [in our repository](https://github.com/changesets/changesets)
6
+
7
+
We have a quick list of common questions to get you started engaging with this project in
8
+
[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)
+11
.changeset/config.json
+11
.changeset/config.json
···
1
+
{
2
+
"$schema": "https://unpkg.com/@changesets/config@3.1.1/schema.json",
3
+
"changelog": "@changesets/cli/changelog",
4
+
"commit": false,
5
+
"fixed": [],
6
+
"linked": [],
7
+
"access": "restricted",
8
+
"baseBranch": "main",
9
+
"updateInternalDependencies": "patch",
10
+
"ignore": []
11
+
}
+64
.github/workflows/ci.yml
+64
.github/workflows/ci.yml
···
1
+
name: CI
2
+
3
+
on:
4
+
push:
5
+
branches:
6
+
- main
7
+
pull_request:
8
+
branches: ["main"]
9
+
10
+
11
+
concurrency:
12
+
group: ${{ github.workflow }}-${{ github.ref }}
13
+
cancel-in-progress: true
14
+
15
+
jobs:
16
+
lint:
17
+
runs-on: ubuntu-latest
18
+
steps:
19
+
- uses: actions/checkout@v4
20
+
- name: Install PNPM
21
+
uses: pnpm/action-setup@v4
22
+
with:
23
+
version: 10
24
+
- name: Setup Node
25
+
uses: actions/setup-node@v4
26
+
with:
27
+
cache: "pnpm"
28
+
- name: Install dependencies
29
+
run: pnpm install
30
+
- name: Lint
31
+
run: pnpm lint
32
+
test:
33
+
runs-on: ubuntu-latest
34
+
steps:
35
+
- uses: actions/checkout@v4
36
+
- name: Install PNPM
37
+
uses: pnpm/action-setup@v4
38
+
with:
39
+
version: 10
40
+
- name: Setup Node
41
+
uses: actions/setup-node@v4
42
+
with:
43
+
cache: "pnpm"
44
+
- name: Install dependencies
45
+
run: pnpm install
46
+
- name: Test
47
+
run: pnpm test
48
+
format:
49
+
needs: [lint, test]
50
+
runs-on: ubuntu-latest
51
+
steps:
52
+
- uses: actions/checkout@v4
53
+
- name: Install PNPM
54
+
uses: pnpm/action-setup@v4
55
+
with:
56
+
version: 10
57
+
- name: Setup Node
58
+
uses: actions/setup-node@v4
59
+
with:
60
+
cache: "pnpm"
61
+
- name: Install dependencies
62
+
run: pnpm install
63
+
- name: Lint
64
+
run: pnpm lint
+34
.github/workflows/publish.yml
+34
.github/workflows/publish.yml
···
1
+
name: Publish
2
+
on:
3
+
workflow_run:
4
+
workflows: [CI]
5
+
branches: [main]
6
+
types: [completed]
7
+
8
+
concurrency: ${{ github.workflow }}-${{ github.ref }}
9
+
10
+
permissions:
11
+
contents: write
12
+
pull-requests: write
13
+
14
+
jobs:
15
+
publish:
16
+
if: ${{ github.event.workflow_run.conclusion == 'success' }}
17
+
runs-on: ubuntu-latest
18
+
steps:
19
+
- uses: actions/checkout@v4
20
+
- uses: pnpm/action-setup@v2
21
+
with:
22
+
version: 10
23
+
- uses: actions/setup-node@v4
24
+
with:
25
+
cache: "pnpm"
26
+
- run: pnpm install --frozen-lockfile
27
+
- name: Create Release Pull Request or Publish
28
+
id: changesets
29
+
uses: changesets/action@v1
30
+
with:
31
+
publish: pnpm run release
32
+
env:
33
+
GITHUB_TOKEN: ${{ secrets.GHA_TOKEN }}
34
+
NPM_TOKEN: ${{ secrets.LEAFLET_PUBLISHING_TOKEN }}
+50
CHANGELOG.md
+50
CHANGELOG.md
···
1
+
# leaflet-loader-astro
2
+
3
+
## 1.3.0
4
+
5
+
### Minor Changes
6
+
7
+
- eb3bc4b: Add iframe block
8
+
9
+
## 1.2.0
10
+
11
+
### Minor Changes
12
+
13
+
- f920153: Add support for blockquotes
14
+
15
+
### Patch Changes
16
+
17
+
- 8922bb1: Add JSDoc comments for available loader options for leafletStaticLoader and leafletLiveLoader
18
+
19
+
## 1.1.0
20
+
21
+
### Minor Changes
22
+
23
+
- 6d70cc6: Added support for these leaflet blocks:
24
+
25
+
- ul/li
26
+
- math
27
+
- code
28
+
- img
29
+
- hr
30
+
31
+
the only remaining block to implement is "website", though I haven't thought of a good way to output that yet. stay tuned for a further release
32
+
33
+
- 5524ce5: Added the ability to use a handle or did when specifying a repo for leafletStaticLoader and leafletLiveLoader
34
+
35
+
```ts
36
+
import { defineLiveCollection } from "astro:content";
37
+
import { leafletLiveLoader } from "leaflet-loader-astro";
38
+
39
+
const documents = defineLiveCollection({
40
+
loader: leafletLiveLoader({ repo: "dane.computer" }), // or repo: did:plc:qttsv4e7pu2jl3ilanfgc3zn, both work!
41
+
});
42
+
43
+
export const collections = { documents };
44
+
```
45
+
46
+
## 1.0.0
47
+
48
+
### Major Changes
49
+
50
+
- b4309c0: This is the initial release for `leaflet-loader-astro`
+218
-2
README.md
+218
-2
README.md
···
1
-
# An astro loader for leaflet.pub
1
+
# Leaflet Astro Loader
2
+
3
+
This loader is for [leaflet.pub](https://leaflet.pub/). It fetches leaflet document records from your personal data server to then be used on your astro site.
4
+
5
+
There are two different types of loaders you can use from this package:
6
+
7
+
- **Static Loader:** Fetches data at build time and is served statically on your website
8
+
- **Live Loader (experimental astro feature):** Fetches data on each request. **Note**: This package does not provide any caching mechanisms for the live loader. So to avoid slamming your PDS (or someone elses PDS) with requests it's probably a good idea to set up some sort of cache either using cache headers or some other means.
9
+
10
+
## Installation
11
+
12
+
```bash
13
+
npm install @nulfrost/leaflet-loader-astro
14
+
```
15
+
16
+
## Usage
17
+
18
+
<details>
19
+
<summary>Build-time loader: leafletStaticLoader **(recommended)**</summary>
20
+
21
+
```ts
22
+
// src/content.config.ts
23
+
import { defineCollection, z } from "astro:content";
24
+
import { leafletStaticLoader } from "@nulfrost/leaflet-loader-astro";
25
+
26
+
const documents = defineCollection({
27
+
loader: leafletStaticLoader({ repo: "did:plc:qttsv4e7pu2jl3ilanfgc3zn" }), // or repo: dane.is.extraordinarily.cool
28
+
});
29
+
30
+
export const collections = { documents };
31
+
```
2
32
3
-
TODO
33
+
```ts
34
+
// src/pages/index.astro
35
+
---
36
+
import { getCollection } from "astro:content";
37
+
38
+
const documents = await getCollection("documents");
39
+
---
40
+
41
+
<html lang="en">
42
+
<head>
43
+
<meta charset="utf-8" />
44
+
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
45
+
<meta name="viewport" content="width=device-width" />
46
+
<meta name="generator" content={Astro.generator} />
47
+
<title>Astro</title>
48
+
</head>
49
+
<body>
50
+
<h1>Astro + Leaflet.pub</h1>
51
+
<ul>
52
+
{documents.map(document => <li>
53
+
<a href={`/blogs/${document.id}`}>{document.data.title}</a>
54
+
</li>)}
55
+
</ul>
56
+
</body>
57
+
</html>
58
+
```
59
+
60
+
```ts
61
+
// src/pages/blog/[blog].astro
62
+
---
63
+
import { getCollection, getEntry } from "astro:content";
64
+
import { render } from "astro:content";
65
+
66
+
export async function getStaticPaths() {
67
+
const documents = await getCollection("documents");
68
+
return documents.map((document) => ({
69
+
params: { blog: document.id },
70
+
props: document,
71
+
}));
72
+
}
73
+
74
+
const document = await getEntry("documents", Astro.params.blog);
75
+
76
+
if (!document) {
77
+
throw new Error(`Document with id "${Astro.params.blog}" not found`);
78
+
}
79
+
80
+
const { Content } = await render(document);
81
+
---
82
+
83
+
<Content />
84
+
```
85
+
</details>
86
+
87
+
<details>
88
+
<summary>Live loader: leafletLiveLoader</summary>
89
+
90
+
```ts
91
+
// astro.config.mjs
92
+
93
+
// @ts-check
94
+
import { defineConfig } from "astro/config";
95
+
96
+
// https://astro.build/config
97
+
export default defineConfig({
98
+
experimental: {
99
+
liveContentCollections: true, // make sure to enable this
100
+
},
101
+
});
102
+
```
103
+
104
+
```ts
105
+
// src/live.config.ts
106
+
import { defineLiveCollection, z } from "astro:content";
107
+
import { leafletLiveLoader } from "@nulfrost/leaflet-loader-astro";
108
+
109
+
const documents = defineLiveCollection({
110
+
loader: leafletLiveLoader({ repo: "did:plc:qttsv4e7pu2jl3ilanfgc3zn" }), // or repo: dane.is.extraordinarily.cool
111
+
});
112
+
113
+
export const collections = { documents };
114
+
```
115
+
116
+
```ts
117
+
// src/pages/index.astro
118
+
---
119
+
import { getLiveCollection } from "astro:content";
120
+
121
+
export const prerender = false;
122
+
123
+
const documents = await getLiveCollection("documents");
124
+
---
125
+
126
+
<html lang="en">
127
+
<head>
128
+
<meta charset="utf-8" />
129
+
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
130
+
<meta name="viewport" content="width=device-width" />
131
+
<meta name="generator" content={Astro.generator} />
132
+
<title>Astro</title>
133
+
</head>
134
+
<body>
135
+
<h1>Astro + Leaflet.pub</h1>
136
+
<ul>
137
+
{documents.map(document => <li>
138
+
<a href={`/blogs/${document.id}`}>{document.data.title}</a>
139
+
</li>)}
140
+
</ul>
141
+
</body>
142
+
</html>
143
+
```
144
+
145
+
```ts
146
+
// src/pages/blog/[blog].astro
147
+
---
148
+
import { getLiveEntry } from "astro:content";
149
+
import { render } from "astro:content";
150
+
151
+
export const prerender = false;
152
+
153
+
const document = await getLiveEntry("documents", Astro.params.blog);
154
+
155
+
if (!document) {
156
+
throw new Error(`Document with id "${Astro.params.blog}" not found`);
157
+
}
158
+
159
+
const { Content } = await render(document?.entry);
160
+
---
161
+
162
+
<Content />
163
+
```
164
+
165
+
</details>
166
+
167
+
## Loader Options
168
+
169
+
### Static Loader
170
+
171
+
```ts
172
+
leafletStaticLoader()
173
+
```
174
+
175
+
`repo`: This can be either your DID (did:plc:qttsv4e7pu2jl3ilanfgc3zn) or your handle (dane.is.extraordinarily.cool)
176
+
177
+
`limit`: How many leaflet documents to return when calling `getCollection`. The default is 50 and the range is from 1 to 100.
178
+
179
+
`reverse`: Whether or not to return the leaflet documents in reverse order. By default this is false.
180
+
181
+
### Live Loader
182
+
183
+
```ts
184
+
leafletLiveLoader()
185
+
```
186
+
187
+
`repo`: This can be either your DID (did:plc:qttsv4e7pu2jl3ilanfgc3zn) or your handle (dane.is.extraordinarily.cool)
188
+
189
+
> [!NOTE]
190
+
> `getLiveCollection` supports a second argument where you can add additional filters, similar to the options you have access to for `leafletStaticLoader`
191
+
192
+
```ts
193
+
getLiveCollection()
194
+
```
195
+
196
+
`limit`: How many leaflet documents to return when calling `getCollection`. The default is 50 and the range is from 1 to 100.
197
+
198
+
`reverse`: Whether or not to return the leaflet documents in reverse order. By default this is false.
199
+
200
+
## Supported Leaflet Blocks
201
+
202
+
- [ ] Bluesky post
203
+
- [x] Iframe
204
+
- [x] Horizontal Rule
205
+
- [x] Unordered List
206
+
- [x] Math
207
+
- [x] Code
208
+
- [ ] Website
209
+
- [x] Image
210
+
- [x] Blockquote
211
+
- [x] Text
212
+
- [x] Header
213
+
- [x] List Item
214
+
215
+
## License
216
+
217
+
MIT
218
+
219
+
For questions, contributions, and support, please open an issue on GitHub.
+35
biome.json
+35
biome.json
···
1
+
{
2
+
"$schema": "https://biomejs.dev/schemas/2.1.3/schema.json",
3
+
"vcs": {
4
+
"enabled": false,
5
+
"clientKind": "git",
6
+
"useIgnoreFile": false
7
+
},
8
+
"files": {
9
+
"ignoreUnknown": false,
10
+
"includes": ["**", "!src/lexicons/**/*.ts"]
11
+
},
12
+
"formatter": {
13
+
"enabled": true,
14
+
"indentStyle": "tab"
15
+
},
16
+
"linter": {
17
+
"enabled": true,
18
+
"rules": {
19
+
"recommended": true
20
+
}
21
+
},
22
+
"javascript": {
23
+
"formatter": {
24
+
"quoteStyle": "double"
25
+
}
26
+
},
27
+
"assist": {
28
+
"enabled": true,
29
+
"actions": {
30
+
"source": {
31
+
"organizeImports": "on"
32
+
}
33
+
}
34
+
}
35
+
}
+6
lex.config.js
+6
lex.config.js
+15
lexicons/com/atproto/repo/strongRef.json
+15
lexicons/com/atproto/repo/strongRef.json
···
1
+
{
2
+
"lexicon": 1,
3
+
"id": "com.atproto.repo.strongRef",
4
+
"description": "A URI with a content-hash fingerprint.",
5
+
"defs": {
6
+
"main": {
7
+
"type": "object",
8
+
"required": ["uri", "cid"],
9
+
"properties": {
10
+
"uri": { "type": "string", "format": "at-uri" },
11
+
"cid": { "type": "string", "format": "cid" }
12
+
}
13
+
}
14
+
}
15
+
}
+22
lexicons/pub/leaflet/blocks/blockquote.json
+22
lexicons/pub/leaflet/blocks/blockquote.json
···
1
+
{
2
+
"lexicon": 1,
3
+
"id": "pub.leaflet.blocks.blockquote",
4
+
"defs": {
5
+
"main": {
6
+
"type": "object",
7
+
"required": ["plaintext"],
8
+
"properties": {
9
+
"plaintext": {
10
+
"type": "string"
11
+
},
12
+
"facets": {
13
+
"type": "array",
14
+
"items": {
15
+
"type": "ref",
16
+
"ref": "pub.leaflet.richtext.facet"
17
+
}
18
+
}
19
+
}
20
+
}
21
+
}
22
+
}
+21
lexicons/pub/leaflet/blocks/code.json
+21
lexicons/pub/leaflet/blocks/code.json
···
1
+
{
2
+
"lexicon": 1,
3
+
"id": "pub.leaflet.blocks.code",
4
+
"defs": {
5
+
"main": {
6
+
"type": "object",
7
+
"required": ["plaintext"],
8
+
"properties": {
9
+
"plaintext": {
10
+
"type": "string"
11
+
},
12
+
"language": {
13
+
"type": "string"
14
+
},
15
+
"syntaxHighlightingTheme": {
16
+
"type": "string"
17
+
}
18
+
}
19
+
}
20
+
}
21
+
}
+27
lexicons/pub/leaflet/blocks/header.json
+27
lexicons/pub/leaflet/blocks/header.json
···
1
+
{
2
+
"lexicon": 1,
3
+
"id": "pub.leaflet.blocks.header",
4
+
"defs": {
5
+
"main": {
6
+
"type": "object",
7
+
"required": ["plaintext"],
8
+
"properties": {
9
+
"level": {
10
+
"type": "integer",
11
+
"minimum": 1,
12
+
"maximum": 6
13
+
},
14
+
"plaintext": {
15
+
"type": "string"
16
+
},
17
+
"facets": {
18
+
"type": "array",
19
+
"items": {
20
+
"type": "ref",
21
+
"ref": "pub.leaflet.richtext.facet"
22
+
}
23
+
}
24
+
}
25
+
}
26
+
}
27
+
}
+11
lexicons/pub/leaflet/blocks/horizontalRule.json
+11
lexicons/pub/leaflet/blocks/horizontalRule.json
+21
lexicons/pub/leaflet/blocks/iframe.json
+21
lexicons/pub/leaflet/blocks/iframe.json
···
1
+
{
2
+
"lexicon": 1,
3
+
"id": "pub.leaflet.blocks.iframe",
4
+
"defs": {
5
+
"main": {
6
+
"type": "object",
7
+
"required": ["url"],
8
+
"properties": {
9
+
"url": {
10
+
"type": "string",
11
+
"format": "uri"
12
+
},
13
+
"height": {
14
+
"type": "integer",
15
+
"minimum": 16,
16
+
"maximum": 1600
17
+
}
18
+
}
19
+
}
20
+
}
21
+
}
+37
lexicons/pub/leaflet/blocks/image.json
+37
lexicons/pub/leaflet/blocks/image.json
···
1
+
{
2
+
"lexicon": 1,
3
+
"id": "pub.leaflet.blocks.image",
4
+
"defs": {
5
+
"main": {
6
+
"type": "object",
7
+
"required": ["image", "aspectRatio"],
8
+
"properties": {
9
+
"image": {
10
+
"type": "blob",
11
+
"accept": ["image/*"],
12
+
"maxSize": 1000000
13
+
},
14
+
"alt": {
15
+
"type": "string",
16
+
"description": "Alt text description of the image, for accessibility."
17
+
},
18
+
"aspectRatio": {
19
+
"type": "ref",
20
+
"ref": "#aspectRatio"
21
+
}
22
+
}
23
+
},
24
+
"aspectRatio": {
25
+
"type": "object",
26
+
"required": ["width", "height"],
27
+
"properties": {
28
+
"width": {
29
+
"type": "integer"
30
+
},
31
+
"height": {
32
+
"type": "integer"
33
+
}
34
+
}
35
+
}
36
+
}
37
+
}
+15
lexicons/pub/leaflet/blocks/math.json
+15
lexicons/pub/leaflet/blocks/math.json
+22
lexicons/pub/leaflet/blocks/text.json
+22
lexicons/pub/leaflet/blocks/text.json
···
1
+
{
2
+
"lexicon": 1,
3
+
"id": "pub.leaflet.blocks.text",
4
+
"defs": {
5
+
"main": {
6
+
"type": "object",
7
+
"required": ["plaintext"],
8
+
"properties": {
9
+
"plaintext": {
10
+
"type": "string"
11
+
},
12
+
"facets": {
13
+
"type": "array",
14
+
"items": {
15
+
"type": "ref",
16
+
"ref": "pub.leaflet.richtext.facet"
17
+
}
18
+
}
19
+
}
20
+
}
21
+
}
22
+
}
+40
lexicons/pub/leaflet/blocks/unorderedList.json
+40
lexicons/pub/leaflet/blocks/unorderedList.json
···
1
+
{
2
+
"lexicon": 1,
3
+
"id": "pub.leaflet.blocks.unorderedList",
4
+
"defs": {
5
+
"main": {
6
+
"type": "object",
7
+
"required": ["children"],
8
+
"properties": {
9
+
"children": {
10
+
"type": "array",
11
+
"items": {
12
+
"type": "ref",
13
+
"ref": "#listItem"
14
+
}
15
+
}
16
+
}
17
+
},
18
+
"listItem": {
19
+
"type": "object",
20
+
"required": ["content"],
21
+
"properties": {
22
+
"content": {
23
+
"type": "union",
24
+
"refs": [
25
+
"pub.leaflet.blocks.text",
26
+
"pub.leaflet.blocks.header",
27
+
"pub.leaflet.blocks.image"
28
+
]
29
+
},
30
+
"children": {
31
+
"type": "array",
32
+
"items": {
33
+
"type": "ref",
34
+
"ref": "#listItem"
35
+
}
36
+
}
37
+
}
38
+
}
39
+
}
40
+
}
+27
lexicons/pub/leaflet/blocks/website.json
+27
lexicons/pub/leaflet/blocks/website.json
···
1
+
{
2
+
"lexicon": 1,
3
+
"id": "pub.leaflet.blocks.website",
4
+
"defs": {
5
+
"main": {
6
+
"type": "object",
7
+
"required": ["src"],
8
+
"properties": {
9
+
"previewImage": {
10
+
"type": "blob",
11
+
"accept": ["image/*"],
12
+
"maxSize": 1000000
13
+
},
14
+
"title": {
15
+
"type": "string"
16
+
},
17
+
"description": {
18
+
"type": "string"
19
+
},
20
+
"src": {
21
+
"type": "string",
22
+
"format": "uri"
23
+
}
24
+
}
25
+
}
26
+
}
27
+
}
+52
lexicons/pub/leaflet/document.json
+52
lexicons/pub/leaflet/document.json
···
1
+
{
2
+
"lexicon": 1,
3
+
"id": "pub.leaflet.document",
4
+
"revision": 1,
5
+
"description": "A lexicon for long form rich media documents",
6
+
"defs": {
7
+
"main": {
8
+
"type": "record",
9
+
"key": "tid",
10
+
"description": "Record containing a document",
11
+
"record": {
12
+
"type": "object",
13
+
"required": ["pages", "author", "title", "publication"],
14
+
"properties": {
15
+
"title": {
16
+
"type": "string",
17
+
"maxLength": 1280,
18
+
"maxGraphemes": 128
19
+
},
20
+
"postRef": {
21
+
"type": "ref",
22
+
"ref": "com.atproto.repo.strongRef"
23
+
},
24
+
"description": {
25
+
"type": "string",
26
+
"maxLength": 3000,
27
+
"maxGraphemes": 300
28
+
},
29
+
"publishedAt": {
30
+
"type": "string",
31
+
"format": "datetime"
32
+
},
33
+
"publication": {
34
+
"type": "string",
35
+
"format": "at-uri"
36
+
},
37
+
"author": {
38
+
"type": "string",
39
+
"format": "at-identifier"
40
+
},
41
+
"pages": {
42
+
"type": "array",
43
+
"items": {
44
+
"type": "union",
45
+
"refs": ["pub.leaflet.pages.linearDocument"]
46
+
}
47
+
}
48
+
}
49
+
}
50
+
}
51
+
}
52
+
}
+53
lexicons/pub/leaflet/pages/linearDocument.json
+53
lexicons/pub/leaflet/pages/linearDocument.json
···
1
+
{
2
+
"lexicon": 1,
3
+
"id": "pub.leaflet.pages.linearDocument",
4
+
"defs": {
5
+
"main": {
6
+
"type": "object",
7
+
"properties": {
8
+
"blocks": {
9
+
"type": "array",
10
+
"items": {
11
+
"type": "ref",
12
+
"ref": "#block"
13
+
}
14
+
}
15
+
}
16
+
},
17
+
"block": {
18
+
"type": "object",
19
+
"required": ["block"],
20
+
"properties": {
21
+
"block": {
22
+
"type": "union",
23
+
"refs": [
24
+
"pub.leaflet.blocks.text",
25
+
"pub.leaflet.blocks.header",
26
+
"pub.leaflet.blocks.image",
27
+
"pub.leaflet.blocks.unorderedList",
28
+
"pub.leaflet.blocks.website",
29
+
"pub.leaflet.blocks.math",
30
+
"pub.leaflet.blocks.code"
31
+
]
32
+
},
33
+
"alignment": {
34
+
"type": "string",
35
+
"knownValues": [
36
+
"#textAlignLeft",
37
+
"#textAlignCenter",
38
+
"#textAlignRight"
39
+
]
40
+
}
41
+
}
42
+
},
43
+
"textAlignLeft": {
44
+
"type": "token"
45
+
},
46
+
"textAlignCenter": {
47
+
"type": "token"
48
+
},
49
+
"textAlignRight": {
50
+
"type": "token"
51
+
}
52
+
}
53
+
}
+105
lexicons/pub/leaflet/richtext/facet.json
+105
lexicons/pub/leaflet/richtext/facet.json
···
1
+
{
2
+
"lexicon": 1,
3
+
"id": "pub.leaflet.richtext.facet",
4
+
"defs": {
5
+
"main": {
6
+
"type": "object",
7
+
"description": "Annotation of a sub-string within rich text.",
8
+
"required": ["index", "features"],
9
+
"properties": {
10
+
"index": {
11
+
"type": "ref",
12
+
"ref": "#byteSlice"
13
+
},
14
+
"features": {
15
+
"type": "array",
16
+
"items": {
17
+
"type": "union",
18
+
"refs": [
19
+
"#link",
20
+
"#code",
21
+
"#highlight",
22
+
"#underline",
23
+
"#strikethrough",
24
+
"#id",
25
+
"#bold",
26
+
"#italic"
27
+
]
28
+
}
29
+
}
30
+
}
31
+
},
32
+
"byteSlice": {
33
+
"type": "object",
34
+
"description": "Specifies the sub-string range a facet feature applies to. Start index is inclusive, end index is exclusive. Indices are zero-indexed, counting bytes of the UTF-8 encoded text. NOTE: some languages, like Javascript, use UTF-16 or Unicode codepoints for string slice indexing; in these languages, convert to byte arrays before working with facets.",
35
+
"required": ["byteStart", "byteEnd"],
36
+
"properties": {
37
+
"byteStart": {
38
+
"type": "integer",
39
+
"minimum": 0
40
+
},
41
+
"byteEnd": {
42
+
"type": "integer",
43
+
"minimum": 0
44
+
}
45
+
}
46
+
},
47
+
"link": {
48
+
"type": "object",
49
+
"description": "Facet feature for a URL. The text URL may have been simplified or truncated, but the facet reference should be a complete URL.",
50
+
"required": ["uri"],
51
+
"properties": {
52
+
"uri": {
53
+
"type": "string",
54
+
"format": "uri"
55
+
}
56
+
}
57
+
},
58
+
"code": {
59
+
"type": "object",
60
+
"description": "Facet feature for inline code.",
61
+
"required": [],
62
+
"properties": {}
63
+
},
64
+
"highlight": {
65
+
"type": "object",
66
+
"description": "Facet feature for highlighted text.",
67
+
"required": [],
68
+
"properties": {}
69
+
},
70
+
"underline": {
71
+
"type": "object",
72
+
"description": "Facet feature for underline markup",
73
+
"required": [],
74
+
"properties": {}
75
+
},
76
+
"strikethrough": {
77
+
"type": "object",
78
+
"description": "Facet feature for strikethrough markup",
79
+
"required": [],
80
+
"properties": {}
81
+
},
82
+
"id": {
83
+
"type": "object",
84
+
"description": "Facet feature for an identifier. Used for linking to a segment",
85
+
"required": [],
86
+
"properties": {
87
+
"id": {
88
+
"type": "string"
89
+
}
90
+
}
91
+
},
92
+
"bold": {
93
+
"type": "object",
94
+
"description": "Facet feature for bold text",
95
+
"required": [],
96
+
"properties": {}
97
+
},
98
+
"italic": {
99
+
"type": "object",
100
+
"description": "Facet feature for italic text",
101
+
"required": [],
102
+
"properties": {}
103
+
}
104
+
}
105
+
}
+2
lib/index.ts
+2
lib/index.ts
+139
lib/leaflet-live-loader.ts
+139
lib/leaflet-live-loader.ts
···
1
+
import { Client, simpleFetchHandler } from "@atcute/client";
2
+
import { isHandle } from "@atcute/lexicons/syntax";
3
+
import type { LiveLoader } from "astro/loaders";
4
+
import type {
5
+
CollectionFilter,
6
+
EntryFilter,
7
+
LeafletDocumentRecord,
8
+
LeafletDocumentView,
9
+
LiveLeafletLoaderOptions,
10
+
} from "./types.js";
11
+
import {
12
+
getLeafletDocuments,
13
+
getSingleLeafletDocument,
14
+
isPlcDid,
15
+
leafletBlocksToHTML,
16
+
leafletDocumentRecordToView,
17
+
LiveLoaderError,
18
+
resolveMiniDoc,
19
+
uriToRkey,
20
+
} from "./utils.js";
21
+
22
+
export function leafletLiveLoader(
23
+
options: LiveLeafletLoaderOptions,
24
+
): LiveLoader<
25
+
LeafletDocumentView,
26
+
EntryFilter,
27
+
CollectionFilter,
28
+
LiveLoaderError
29
+
> {
30
+
const { repo } = options;
31
+
32
+
if (!repo || typeof repo !== "string") {
33
+
throw new LiveLoaderError(
34
+
"missing or invalid did",
35
+
"MISSING_OR_INVALID_DID",
36
+
);
37
+
}
38
+
39
+
// not a valid handle, check if valid did
40
+
if (!isHandle(repo)) {
41
+
// not a valid handle or did, throw
42
+
if (!isPlcDid(repo)) {
43
+
throw new LiveLoaderError(
44
+
"invalid handle or did",
45
+
"INVALID_HANDLE_OR_DID",
46
+
);
47
+
}
48
+
}
49
+
50
+
return {
51
+
name: "leaflet-loader-astro",
52
+
loadCollection: async ({ filter }) => {
53
+
try {
54
+
const { pds, did } = await resolveMiniDoc(repo);
55
+
const handler = simpleFetchHandler({ service: pds });
56
+
const rpc = new Client({ handler });
57
+
58
+
const { documents } = await getLeafletDocuments({
59
+
rpc,
60
+
repo,
61
+
reverse: filter?.reverse,
62
+
cursor: filter?.cursor,
63
+
limit: filter?.limit,
64
+
});
65
+
66
+
return {
67
+
entries: documents.map((document) => {
68
+
const id = uriToRkey(document.uri);
69
+
return {
70
+
id,
71
+
data: leafletDocumentRecordToView({
72
+
uri: document.uri,
73
+
cid: document.cid,
74
+
value: document.value as unknown as LeafletDocumentRecord,
75
+
}),
76
+
rendered: {
77
+
html: leafletBlocksToHTML({
78
+
record: document.value as unknown as LeafletDocumentRecord,
79
+
did,
80
+
}),
81
+
},
82
+
};
83
+
}),
84
+
};
85
+
} catch {
86
+
return {
87
+
error: new LiveLoaderError(
88
+
"could not recover from error, please report on github",
89
+
"UNRECOVERABLE_ERROR",
90
+
),
91
+
};
92
+
}
93
+
},
94
+
loadEntry: async ({ filter }) => {
95
+
if (!filter.id) {
96
+
return {
97
+
error: new LiveLoaderError(
98
+
"must provide an id for specific document",
99
+
"MISSING_DOCUMENT_ID",
100
+
),
101
+
};
102
+
}
103
+
try {
104
+
const { pds, did } = await resolveMiniDoc(repo);
105
+
const handler = simpleFetchHandler({ service: pds });
106
+
const rpc = new Client({ handler });
107
+
const document = await getSingleLeafletDocument({
108
+
rpc,
109
+
id: filter.id,
110
+
repo,
111
+
});
112
+
113
+
const cid = document?.cid?.toString() ?? "";
114
+
115
+
return {
116
+
id: filter.id,
117
+
data: leafletDocumentRecordToView({
118
+
uri: document.uri,
119
+
cid,
120
+
value: document.value as unknown as LeafletDocumentRecord,
121
+
}),
122
+
rendered: {
123
+
html: leafletBlocksToHTML({
124
+
record: document.value as unknown as LeafletDocumentRecord,
125
+
did,
126
+
}),
127
+
},
128
+
};
129
+
} catch {
130
+
return {
131
+
error: new LiveLoaderError(
132
+
"could not recover from error, please report on github",
133
+
"UNRECOVERABLE_ERROR",
134
+
),
135
+
};
136
+
}
137
+
},
138
+
};
139
+
}
+111
lib/leaftlet-static-loader.ts
+111
lib/leaftlet-static-loader.ts
···
1
+
import { Client, simpleFetchHandler } from "@atcute/client";
2
+
import { isHandle } from "@atcute/lexicons/syntax";
3
+
import type { Loader, LoaderContext } from "astro/loaders";
4
+
import { LeafletDocumentSchema } from "schema.js";
5
+
import type {
6
+
LeafletDocumentRecord,
7
+
StaticLeafletLoaderOptions,
8
+
} from "types.js";
9
+
import {
10
+
getLeafletDocuments,
11
+
isPlcDid,
12
+
leafletBlocksToHTML,
13
+
leafletDocumentRecordToView,
14
+
LiveLoaderError,
15
+
resolveMiniDoc,
16
+
uriToRkey,
17
+
} from "utils.js";
18
+
19
+
export function leafletStaticLoader(
20
+
options: StaticLeafletLoaderOptions,
21
+
): Loader {
22
+
const { repo, limit, reverse } = options;
23
+
24
+
if (!repo || typeof repo !== "string") {
25
+
throw new LiveLoaderError(
26
+
"missing or invalid did",
27
+
"MISSING_OR_INVALID_DID",
28
+
);
29
+
}
30
+
31
+
// not a valid handle, check if valid did
32
+
if (!isHandle(repo)) {
33
+
// not a valid handle or did, throw
34
+
if (!isPlcDid(repo)) {
35
+
throw new LiveLoaderError(
36
+
"invalid handle or did",
37
+
"INVALID_HANDLE_OR_DID",
38
+
);
39
+
}
40
+
}
41
+
42
+
return {
43
+
name: "static-leaflet-loader-astro",
44
+
schema: LeafletDocumentSchema,
45
+
load: async ({
46
+
store,
47
+
logger,
48
+
generateDigest,
49
+
parseData,
50
+
}: LoaderContext) => {
51
+
try {
52
+
logger.info("fetching latest leaflet documents");
53
+
const { pds, did } = await resolveMiniDoc(repo);
54
+
const handler = simpleFetchHandler({ service: pds });
55
+
const rpc = new Client({ handler });
56
+
57
+
let cursor: string | undefined;
58
+
let count = 0;
59
+
60
+
fetching: do {
61
+
const { documents, cursor: documentsCursor } =
62
+
await getLeafletDocuments({
63
+
rpc,
64
+
repo,
65
+
cursor,
66
+
reverse,
67
+
limit: 50,
68
+
});
69
+
for (const document of documents) {
70
+
if (limit && count >= limit) {
71
+
count++;
72
+
break fetching;
73
+
}
74
+
count++;
75
+
76
+
const id = uriToRkey(document.uri);
77
+
const digest = generateDigest(document.value);
78
+
store.set({
79
+
id,
80
+
data: await parseData({
81
+
id,
82
+
data: JSON.parse(
83
+
JSON.stringify(
84
+
leafletDocumentRecordToView({
85
+
uri: document.uri,
86
+
cid: document.cid,
87
+
value: document.value as unknown as LeafletDocumentRecord,
88
+
}),
89
+
),
90
+
),
91
+
}),
92
+
digest,
93
+
rendered: {
94
+
html: leafletBlocksToHTML({
95
+
record: document.value as unknown as LeafletDocumentRecord,
96
+
did,
97
+
}),
98
+
},
99
+
});
100
+
}
101
+
cursor = documentsCursor;
102
+
logger.info(`Fetched ${count} posts`);
103
+
} while (cursor);
104
+
} catch (error) {
105
+
logger.error(
106
+
`There was an error fetching the leaflet documents: ${(error as Error).message}`,
107
+
);
108
+
}
109
+
},
110
+
};
111
+
}
+14
lib/lexicons/index.ts
+14
lib/lexicons/index.ts
···
1
+
export * as ComAtprotoRepoStrongRef from "./types/com/atproto/repo/strongRef.js";
2
+
export * as PubLeafletBlocksBlockquote from "./types/pub/leaflet/blocks/blockquote.js";
3
+
export * as PubLeafletBlocksCode from "./types/pub/leaflet/blocks/code.js";
4
+
export * as PubLeafletBlocksHeader from "./types/pub/leaflet/blocks/header.js";
5
+
export * as PubLeafletBlocksHorizontalRule from "./types/pub/leaflet/blocks/horizontalRule.js";
6
+
export * as PubLeafletBlocksIframe from "./types/pub/leaflet/blocks/iframe.js";
7
+
export * as PubLeafletBlocksImage from "./types/pub/leaflet/blocks/image.js";
8
+
export * as PubLeafletBlocksMath from "./types/pub/leaflet/blocks/math.js";
9
+
export * as PubLeafletBlocksText from "./types/pub/leaflet/blocks/text.js";
10
+
export * as PubLeafletBlocksUnorderedList from "./types/pub/leaflet/blocks/unorderedList.js";
11
+
export * as PubLeafletBlocksWebsite from "./types/pub/leaflet/blocks/website.js";
12
+
export * as PubLeafletDocument from "./types/pub/leaflet/document.js";
13
+
export * as PubLeafletPagesLinearDocument from "./types/pub/leaflet/pages/linearDocument.js";
14
+
export * as PubLeafletRichtextFacet from "./types/pub/leaflet/richtext/facet.js";
+18
lib/lexicons/types/com/atproto/repo/strongRef.ts
+18
lib/lexicons/types/com/atproto/repo/strongRef.ts
···
1
+
import type {} from "@atcute/lexicons";
2
+
import * as v from "@atcute/lexicons/validations";
3
+
4
+
const _mainSchema = /*#__PURE__*/ v.object({
5
+
$type: /*#__PURE__*/ v.optional(
6
+
/*#__PURE__*/ v.literal("com.atproto.repo.strongRef"),
7
+
),
8
+
cid: /*#__PURE__*/ v.cidString(),
9
+
uri: /*#__PURE__*/ v.resourceUriString(),
10
+
});
11
+
12
+
type main$schematype = typeof _mainSchema;
13
+
14
+
export interface mainSchema extends main$schematype {}
15
+
16
+
export const mainSchema = _mainSchema as mainSchema;
17
+
18
+
export interface Main extends v.InferInput<typeof mainSchema> {}
+23
lib/lexicons/types/pub/leaflet/blocks/blockquote.ts
+23
lib/lexicons/types/pub/leaflet/blocks/blockquote.ts
···
1
+
import type {} from "@atcute/lexicons";
2
+
import * as v from "@atcute/lexicons/validations";
3
+
import * as PubLeafletRichtextFacet from "../richtext/facet.js";
4
+
5
+
const _mainSchema = /*#__PURE__*/ v.object({
6
+
$type: /*#__PURE__*/ v.optional(
7
+
/*#__PURE__*/ v.literal("pub.leaflet.blocks.blockquote"),
8
+
),
9
+
get facets() {
10
+
return /*#__PURE__*/ v.optional(
11
+
/*#__PURE__*/ v.array(PubLeafletRichtextFacet.mainSchema),
12
+
);
13
+
},
14
+
plaintext: /*#__PURE__*/ v.string(),
15
+
});
16
+
17
+
type main$schematype = typeof _mainSchema;
18
+
19
+
export interface mainSchema extends main$schematype {}
20
+
21
+
export const mainSchema = _mainSchema as mainSchema;
22
+
23
+
export interface Main extends v.InferInput<typeof mainSchema> {}
+19
lib/lexicons/types/pub/leaflet/blocks/code.ts
+19
lib/lexicons/types/pub/leaflet/blocks/code.ts
···
1
+
import type {} from "@atcute/lexicons";
2
+
import * as v from "@atcute/lexicons/validations";
3
+
4
+
const _mainSchema = /*#__PURE__*/ v.object({
5
+
$type: /*#__PURE__*/ v.optional(
6
+
/*#__PURE__*/ v.literal("pub.leaflet.blocks.code"),
7
+
),
8
+
language: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.string()),
9
+
plaintext: /*#__PURE__*/ v.string(),
10
+
syntaxHighlightingTheme: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.string()),
11
+
});
12
+
13
+
type main$schematype = typeof _mainSchema;
14
+
15
+
export interface mainSchema extends main$schematype {}
16
+
17
+
export const mainSchema = _mainSchema as mainSchema;
18
+
19
+
export interface Main extends v.InferInput<typeof mainSchema> {}
+28
lib/lexicons/types/pub/leaflet/blocks/header.ts
+28
lib/lexicons/types/pub/leaflet/blocks/header.ts
···
1
+
import type {} from "@atcute/lexicons";
2
+
import * as v from "@atcute/lexicons/validations";
3
+
import * as PubLeafletRichtextFacet from "../richtext/facet.js";
4
+
5
+
const _mainSchema = /*#__PURE__*/ v.object({
6
+
$type: /*#__PURE__*/ v.optional(
7
+
/*#__PURE__*/ v.literal("pub.leaflet.blocks.header"),
8
+
),
9
+
get facets() {
10
+
return /*#__PURE__*/ v.optional(
11
+
/*#__PURE__*/ v.array(PubLeafletRichtextFacet.mainSchema),
12
+
);
13
+
},
14
+
level: /*#__PURE__*/ v.optional(
15
+
/*#__PURE__*/ v.constrain(/*#__PURE__*/ v.integer(), [
16
+
/*#__PURE__*/ v.integerRange(1, 6),
17
+
]),
18
+
),
19
+
plaintext: /*#__PURE__*/ v.string(),
20
+
});
21
+
22
+
type main$schematype = typeof _mainSchema;
23
+
24
+
export interface mainSchema extends main$schematype {}
25
+
26
+
export const mainSchema = _mainSchema as mainSchema;
27
+
28
+
export interface Main extends v.InferInput<typeof mainSchema> {}
+16
lib/lexicons/types/pub/leaflet/blocks/horizontalRule.ts
+16
lib/lexicons/types/pub/leaflet/blocks/horizontalRule.ts
···
1
+
import type {} from "@atcute/lexicons";
2
+
import * as v from "@atcute/lexicons/validations";
3
+
4
+
const _mainSchema = /*#__PURE__*/ v.object({
5
+
$type: /*#__PURE__*/ v.optional(
6
+
/*#__PURE__*/ v.literal("pub.leaflet.blocks.horizontalRule"),
7
+
),
8
+
});
9
+
10
+
type main$schematype = typeof _mainSchema;
11
+
12
+
export interface mainSchema extends main$schematype {}
13
+
14
+
export const mainSchema = _mainSchema as mainSchema;
15
+
16
+
export interface Main extends v.InferInput<typeof mainSchema> {}
+22
lib/lexicons/types/pub/leaflet/blocks/iframe.ts
+22
lib/lexicons/types/pub/leaflet/blocks/iframe.ts
···
1
+
import type {} from "@atcute/lexicons";
2
+
import * as v from "@atcute/lexicons/validations";
3
+
4
+
const _mainSchema = /*#__PURE__*/ v.object({
5
+
$type: /*#__PURE__*/ v.optional(
6
+
/*#__PURE__*/ v.literal("pub.leaflet.blocks.iframe"),
7
+
),
8
+
height: /*#__PURE__*/ v.optional(
9
+
/*#__PURE__*/ v.constrain(/*#__PURE__*/ v.integer(), [
10
+
/*#__PURE__*/ v.integerRange(16, 1600),
11
+
]),
12
+
),
13
+
url: /*#__PURE__*/ v.genericUriString(),
14
+
});
15
+
16
+
type main$schematype = typeof _mainSchema;
17
+
18
+
export interface mainSchema extends main$schematype {}
19
+
20
+
export const mainSchema = _mainSchema as mainSchema;
21
+
22
+
export interface Main extends v.InferInput<typeof mainSchema> {}
+32
lib/lexicons/types/pub/leaflet/blocks/image.ts
+32
lib/lexicons/types/pub/leaflet/blocks/image.ts
···
1
+
import type {} from "@atcute/lexicons";
2
+
import * as v from "@atcute/lexicons/validations";
3
+
4
+
const _aspectRatioSchema = /*#__PURE__*/ v.object({
5
+
$type: /*#__PURE__*/ v.optional(
6
+
/*#__PURE__*/ v.literal("pub.leaflet.blocks.image#aspectRatio"),
7
+
),
8
+
height: /*#__PURE__*/ v.integer(),
9
+
width: /*#__PURE__*/ v.integer(),
10
+
});
11
+
const _mainSchema = /*#__PURE__*/ v.object({
12
+
$type: /*#__PURE__*/ v.optional(
13
+
/*#__PURE__*/ v.literal("pub.leaflet.blocks.image"),
14
+
),
15
+
alt: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.string()),
16
+
get aspectRatio() {
17
+
return aspectRatioSchema;
18
+
},
19
+
image: /*#__PURE__*/ v.blob(),
20
+
});
21
+
22
+
type aspectRatio$schematype = typeof _aspectRatioSchema;
23
+
type main$schematype = typeof _mainSchema;
24
+
25
+
export interface aspectRatioSchema extends aspectRatio$schematype {}
26
+
export interface mainSchema extends main$schematype {}
27
+
28
+
export const aspectRatioSchema = _aspectRatioSchema as aspectRatioSchema;
29
+
export const mainSchema = _mainSchema as mainSchema;
30
+
31
+
export interface AspectRatio extends v.InferInput<typeof aspectRatioSchema> {}
32
+
export interface Main extends v.InferInput<typeof mainSchema> {}
+17
lib/lexicons/types/pub/leaflet/blocks/math.ts
+17
lib/lexicons/types/pub/leaflet/blocks/math.ts
···
1
+
import type {} from "@atcute/lexicons";
2
+
import * as v from "@atcute/lexicons/validations";
3
+
4
+
const _mainSchema = /*#__PURE__*/ v.object({
5
+
$type: /*#__PURE__*/ v.optional(
6
+
/*#__PURE__*/ v.literal("pub.leaflet.blocks.math"),
7
+
),
8
+
tex: /*#__PURE__*/ v.string(),
9
+
});
10
+
11
+
type main$schematype = typeof _mainSchema;
12
+
13
+
export interface mainSchema extends main$schematype {}
14
+
15
+
export const mainSchema = _mainSchema as mainSchema;
16
+
17
+
export interface Main extends v.InferInput<typeof mainSchema> {}
+23
lib/lexicons/types/pub/leaflet/blocks/text.ts
+23
lib/lexicons/types/pub/leaflet/blocks/text.ts
···
1
+
import type {} from "@atcute/lexicons";
2
+
import * as v from "@atcute/lexicons/validations";
3
+
import * as PubLeafletRichtextFacet from "../richtext/facet.js";
4
+
5
+
const _mainSchema = /*#__PURE__*/ v.object({
6
+
$type: /*#__PURE__*/ v.optional(
7
+
/*#__PURE__*/ v.literal("pub.leaflet.blocks.text"),
8
+
),
9
+
get facets() {
10
+
return /*#__PURE__*/ v.optional(
11
+
/*#__PURE__*/ v.array(PubLeafletRichtextFacet.mainSchema),
12
+
);
13
+
},
14
+
plaintext: /*#__PURE__*/ v.string(),
15
+
});
16
+
17
+
type main$schematype = typeof _mainSchema;
18
+
19
+
export interface mainSchema extends main$schematype {}
20
+
21
+
export const mainSchema = _mainSchema as mainSchema;
22
+
23
+
export interface Main extends v.InferInput<typeof mainSchema> {}
+41
lib/lexicons/types/pub/leaflet/blocks/unorderedList.ts
+41
lib/lexicons/types/pub/leaflet/blocks/unorderedList.ts
···
1
+
import type {} from "@atcute/lexicons";
2
+
import * as v from "@atcute/lexicons/validations";
3
+
import * as PubLeafletBlocksHeader from "./header.js";
4
+
import * as PubLeafletBlocksImage from "./image.js";
5
+
import * as PubLeafletBlocksText from "./text.js";
6
+
7
+
const _listItemSchema = /*#__PURE__*/ v.object({
8
+
$type: /*#__PURE__*/ v.optional(
9
+
/*#__PURE__*/ v.literal("pub.leaflet.blocks.unorderedList#listItem"),
10
+
),
11
+
get children() {
12
+
return /*#__PURE__*/ v.optional(/*#__PURE__*/ v.array(listItemSchema));
13
+
},
14
+
get content() {
15
+
return /*#__PURE__*/ v.variant([
16
+
PubLeafletBlocksHeader.mainSchema,
17
+
PubLeafletBlocksImage.mainSchema,
18
+
PubLeafletBlocksText.mainSchema,
19
+
]);
20
+
},
21
+
});
22
+
const _mainSchema = /*#__PURE__*/ v.object({
23
+
$type: /*#__PURE__*/ v.optional(
24
+
/*#__PURE__*/ v.literal("pub.leaflet.blocks.unorderedList"),
25
+
),
26
+
get children() {
27
+
return /*#__PURE__*/ v.array(listItemSchema);
28
+
},
29
+
});
30
+
31
+
type listItem$schematype = typeof _listItemSchema;
32
+
type main$schematype = typeof _mainSchema;
33
+
34
+
export interface listItemSchema extends listItem$schematype {}
35
+
export interface mainSchema extends main$schematype {}
36
+
37
+
export const listItemSchema = _listItemSchema as listItemSchema;
38
+
export const mainSchema = _mainSchema as mainSchema;
39
+
40
+
export interface ListItem extends v.InferInput<typeof listItemSchema> {}
41
+
export interface Main extends v.InferInput<typeof mainSchema> {}
+20
lib/lexicons/types/pub/leaflet/blocks/website.ts
+20
lib/lexicons/types/pub/leaflet/blocks/website.ts
···
1
+
import type {} from "@atcute/lexicons";
2
+
import * as v from "@atcute/lexicons/validations";
3
+
4
+
const _mainSchema = /*#__PURE__*/ v.object({
5
+
$type: /*#__PURE__*/ v.optional(
6
+
/*#__PURE__*/ v.literal("pub.leaflet.blocks.website"),
7
+
),
8
+
description: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.string()),
9
+
previewImage: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.blob()),
10
+
src: /*#__PURE__*/ v.genericUriString(),
11
+
title: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.string()),
12
+
});
13
+
14
+
type main$schematype = typeof _mainSchema;
15
+
16
+
export interface mainSchema extends main$schematype {}
17
+
18
+
export const mainSchema = _mainSchema as mainSchema;
19
+
20
+
export interface Main extends v.InferInput<typeof mainSchema> {}
+47
lib/lexicons/types/pub/leaflet/document.ts
+47
lib/lexicons/types/pub/leaflet/document.ts
···
1
+
import type {} from "@atcute/lexicons";
2
+
import * as v from "@atcute/lexicons/validations";
3
+
import type {} from "@atcute/lexicons/ambient";
4
+
import * as ComAtprotoRepoStrongRef from "../../com/atproto/repo/strongRef.js";
5
+
import * as PubLeafletPagesLinearDocument from "./pages/linearDocument.js";
6
+
7
+
const _mainSchema = /*#__PURE__*/ v.record(
8
+
/*#__PURE__*/ v.tidString(),
9
+
/*#__PURE__*/ v.object({
10
+
$type: /*#__PURE__*/ v.literal("pub.leaflet.document"),
11
+
author: /*#__PURE__*/ v.actorIdentifierString(),
12
+
description: /*#__PURE__*/ v.optional(
13
+
/*#__PURE__*/ v.constrain(/*#__PURE__*/ v.string(), [
14
+
/*#__PURE__*/ v.stringLength(0, 3000),
15
+
/*#__PURE__*/ v.stringGraphemes(0, 300),
16
+
]),
17
+
),
18
+
get pages() {
19
+
return /*#__PURE__*/ v.array(
20
+
/*#__PURE__*/ v.variant([PubLeafletPagesLinearDocument.mainSchema]),
21
+
);
22
+
},
23
+
get postRef() {
24
+
return /*#__PURE__*/ v.optional(ComAtprotoRepoStrongRef.mainSchema);
25
+
},
26
+
publication: /*#__PURE__*/ v.resourceUriString(),
27
+
publishedAt: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.datetimeString()),
28
+
title: /*#__PURE__*/ v.constrain(/*#__PURE__*/ v.string(), [
29
+
/*#__PURE__*/ v.stringLength(0, 1280),
30
+
/*#__PURE__*/ v.stringGraphemes(0, 128),
31
+
]),
32
+
}),
33
+
);
34
+
35
+
type main$schematype = typeof _mainSchema;
36
+
37
+
export interface mainSchema extends main$schematype {}
38
+
39
+
export const mainSchema = _mainSchema as mainSchema;
40
+
41
+
export interface Main extends v.InferInput<typeof mainSchema> {}
42
+
43
+
declare module "@atcute/lexicons/ambient" {
44
+
interface Records {
45
+
"pub.leaflet.document": mainSchema;
46
+
}
47
+
}
+74
lib/lexicons/types/pub/leaflet/pages/linearDocument.ts
+74
lib/lexicons/types/pub/leaflet/pages/linearDocument.ts
···
1
+
import type {} from "@atcute/lexicons";
2
+
import * as v from "@atcute/lexicons/validations";
3
+
import * as PubLeafletBlocksCode from "../blocks/code.js";
4
+
import * as PubLeafletBlocksHeader from "../blocks/header.js";
5
+
import * as PubLeafletBlocksImage from "../blocks/image.js";
6
+
import * as PubLeafletBlocksMath from "../blocks/math.js";
7
+
import * as PubLeafletBlocksText from "../blocks/text.js";
8
+
import * as PubLeafletBlocksUnorderedList from "../blocks/unorderedList.js";
9
+
import * as PubLeafletBlocksWebsite from "../blocks/website.js";
10
+
11
+
const _blockSchema = /*#__PURE__*/ v.object({
12
+
$type: /*#__PURE__*/ v.optional(
13
+
/*#__PURE__*/ v.literal("pub.leaflet.pages.linearDocument#block"),
14
+
),
15
+
alignment: /*#__PURE__*/ v.optional(
16
+
/*#__PURE__*/ v.string<
17
+
"#textAlignCenter" | "#textAlignLeft" | "#textAlignRight" | (string & {})
18
+
>(),
19
+
),
20
+
get block() {
21
+
return /*#__PURE__*/ v.variant([
22
+
PubLeafletBlocksCode.mainSchema,
23
+
PubLeafletBlocksHeader.mainSchema,
24
+
PubLeafletBlocksImage.mainSchema,
25
+
PubLeafletBlocksMath.mainSchema,
26
+
PubLeafletBlocksText.mainSchema,
27
+
PubLeafletBlocksUnorderedList.mainSchema,
28
+
PubLeafletBlocksWebsite.mainSchema,
29
+
]);
30
+
},
31
+
});
32
+
const _mainSchema = /*#__PURE__*/ v.object({
33
+
$type: /*#__PURE__*/ v.optional(
34
+
/*#__PURE__*/ v.literal("pub.leaflet.pages.linearDocument"),
35
+
),
36
+
get blocks() {
37
+
return /*#__PURE__*/ v.optional(/*#__PURE__*/ v.array(blockSchema));
38
+
},
39
+
});
40
+
const _textAlignCenterSchema = /*#__PURE__*/ v.literal(
41
+
"pub.leaflet.pages.linearDocument#textAlignCenter",
42
+
);
43
+
const _textAlignLeftSchema = /*#__PURE__*/ v.literal(
44
+
"pub.leaflet.pages.linearDocument#textAlignLeft",
45
+
);
46
+
const _textAlignRightSchema = /*#__PURE__*/ v.literal(
47
+
"pub.leaflet.pages.linearDocument#textAlignRight",
48
+
);
49
+
50
+
type block$schematype = typeof _blockSchema;
51
+
type main$schematype = typeof _mainSchema;
52
+
type textAlignCenter$schematype = typeof _textAlignCenterSchema;
53
+
type textAlignLeft$schematype = typeof _textAlignLeftSchema;
54
+
type textAlignRight$schematype = typeof _textAlignRightSchema;
55
+
56
+
export interface blockSchema extends block$schematype {}
57
+
export interface mainSchema extends main$schematype {}
58
+
export interface textAlignCenterSchema extends textAlignCenter$schematype {}
59
+
export interface textAlignLeftSchema extends textAlignLeft$schematype {}
60
+
export interface textAlignRightSchema extends textAlignRight$schematype {}
61
+
62
+
export const blockSchema = _blockSchema as blockSchema;
63
+
export const mainSchema = _mainSchema as mainSchema;
64
+
export const textAlignCenterSchema =
65
+
_textAlignCenterSchema as textAlignCenterSchema;
66
+
export const textAlignLeftSchema = _textAlignLeftSchema as textAlignLeftSchema;
67
+
export const textAlignRightSchema =
68
+
_textAlignRightSchema as textAlignRightSchema;
69
+
70
+
export interface Block extends v.InferInput<typeof blockSchema> {}
71
+
export interface Main extends v.InferInput<typeof mainSchema> {}
72
+
export type TextAlignCenter = v.InferInput<typeof textAlignCenterSchema>;
73
+
export type TextAlignLeft = v.InferInput<typeof textAlignLeftSchema>;
74
+
export type TextAlignRight = v.InferInput<typeof textAlignRightSchema>;
+119
lib/lexicons/types/pub/leaflet/richtext/facet.ts
+119
lib/lexicons/types/pub/leaflet/richtext/facet.ts
···
1
+
import type {} from "@atcute/lexicons";
2
+
import * as v from "@atcute/lexicons/validations";
3
+
4
+
const _boldSchema = /*#__PURE__*/ v.object({
5
+
$type: /*#__PURE__*/ v.optional(
6
+
/*#__PURE__*/ v.literal("pub.leaflet.richtext.facet#bold"),
7
+
),
8
+
});
9
+
const _byteSliceSchema = /*#__PURE__*/ v.object({
10
+
$type: /*#__PURE__*/ v.optional(
11
+
/*#__PURE__*/ v.literal("pub.leaflet.richtext.facet#byteSlice"),
12
+
),
13
+
byteEnd: /*#__PURE__*/ v.integer(),
14
+
byteStart: /*#__PURE__*/ v.integer(),
15
+
});
16
+
const _codeSchema = /*#__PURE__*/ v.object({
17
+
$type: /*#__PURE__*/ v.optional(
18
+
/*#__PURE__*/ v.literal("pub.leaflet.richtext.facet#code"),
19
+
),
20
+
});
21
+
const _highlightSchema = /*#__PURE__*/ v.object({
22
+
$type: /*#__PURE__*/ v.optional(
23
+
/*#__PURE__*/ v.literal("pub.leaflet.richtext.facet#highlight"),
24
+
),
25
+
});
26
+
const _idSchema = /*#__PURE__*/ v.object({
27
+
$type: /*#__PURE__*/ v.optional(
28
+
/*#__PURE__*/ v.literal("pub.leaflet.richtext.facet#id"),
29
+
),
30
+
id: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.string()),
31
+
});
32
+
const _italicSchema = /*#__PURE__*/ v.object({
33
+
$type: /*#__PURE__*/ v.optional(
34
+
/*#__PURE__*/ v.literal("pub.leaflet.richtext.facet#italic"),
35
+
),
36
+
});
37
+
const _linkSchema = /*#__PURE__*/ v.object({
38
+
$type: /*#__PURE__*/ v.optional(
39
+
/*#__PURE__*/ v.literal("pub.leaflet.richtext.facet#link"),
40
+
),
41
+
uri: /*#__PURE__*/ v.genericUriString(),
42
+
});
43
+
const _mainSchema = /*#__PURE__*/ v.object({
44
+
$type: /*#__PURE__*/ v.optional(
45
+
/*#__PURE__*/ v.literal("pub.leaflet.richtext.facet"),
46
+
),
47
+
get features() {
48
+
return /*#__PURE__*/ v.array(
49
+
/*#__PURE__*/ v.variant([
50
+
boldSchema,
51
+
codeSchema,
52
+
highlightSchema,
53
+
idSchema,
54
+
italicSchema,
55
+
linkSchema,
56
+
strikethroughSchema,
57
+
underlineSchema,
58
+
]),
59
+
);
60
+
},
61
+
get index() {
62
+
return byteSliceSchema;
63
+
},
64
+
});
65
+
const _strikethroughSchema = /*#__PURE__*/ v.object({
66
+
$type: /*#__PURE__*/ v.optional(
67
+
/*#__PURE__*/ v.literal("pub.leaflet.richtext.facet#strikethrough"),
68
+
),
69
+
});
70
+
const _underlineSchema = /*#__PURE__*/ v.object({
71
+
$type: /*#__PURE__*/ v.optional(
72
+
/*#__PURE__*/ v.literal("pub.leaflet.richtext.facet#underline"),
73
+
),
74
+
});
75
+
76
+
type bold$schematype = typeof _boldSchema;
77
+
type byteSlice$schematype = typeof _byteSliceSchema;
78
+
type code$schematype = typeof _codeSchema;
79
+
type highlight$schematype = typeof _highlightSchema;
80
+
type id$schematype = typeof _idSchema;
81
+
type italic$schematype = typeof _italicSchema;
82
+
type link$schematype = typeof _linkSchema;
83
+
type main$schematype = typeof _mainSchema;
84
+
type strikethrough$schematype = typeof _strikethroughSchema;
85
+
type underline$schematype = typeof _underlineSchema;
86
+
87
+
export interface boldSchema extends bold$schematype {}
88
+
export interface byteSliceSchema extends byteSlice$schematype {}
89
+
export interface codeSchema extends code$schematype {}
90
+
export interface highlightSchema extends highlight$schematype {}
91
+
export interface idSchema extends id$schematype {}
92
+
export interface italicSchema extends italic$schematype {}
93
+
export interface linkSchema extends link$schematype {}
94
+
export interface mainSchema extends main$schematype {}
95
+
export interface strikethroughSchema extends strikethrough$schematype {}
96
+
export interface underlineSchema extends underline$schematype {}
97
+
98
+
export const boldSchema = _boldSchema as boldSchema;
99
+
export const byteSliceSchema = _byteSliceSchema as byteSliceSchema;
100
+
export const codeSchema = _codeSchema as codeSchema;
101
+
export const highlightSchema = _highlightSchema as highlightSchema;
102
+
export const idSchema = _idSchema as idSchema;
103
+
export const italicSchema = _italicSchema as italicSchema;
104
+
export const linkSchema = _linkSchema as linkSchema;
105
+
export const mainSchema = _mainSchema as mainSchema;
106
+
export const strikethroughSchema = _strikethroughSchema as strikethroughSchema;
107
+
export const underlineSchema = _underlineSchema as underlineSchema;
108
+
109
+
export interface Bold extends v.InferInput<typeof boldSchema> {}
110
+
export interface ByteSlice extends v.InferInput<typeof byteSliceSchema> {}
111
+
export interface Code extends v.InferInput<typeof codeSchema> {}
112
+
export interface Highlight extends v.InferInput<typeof highlightSchema> {}
113
+
export interface Id extends v.InferInput<typeof idSchema> {}
114
+
export interface Italic extends v.InferInput<typeof italicSchema> {}
115
+
export interface Link extends v.InferInput<typeof linkSchema> {}
116
+
export interface Main extends v.InferInput<typeof mainSchema> {}
117
+
export interface Strikethrough
118
+
extends v.InferInput<typeof strikethroughSchema> {}
119
+
export interface Underline extends v.InferInput<typeof underlineSchema> {}
+11
lib/schema.ts
+11
lib/schema.ts
+91
lib/types.ts
+91
lib/types.ts
···
1
+
import type { Client } from "@atcute/client";
2
+
import type { ActorIdentifier } from "@atcute/lexicons";
3
+
import type { XRPCProcedures, XRPCQueries } from "@atcute/lexicons/ambient";
4
+
import type { PubLeafletRichtextFacet } from "./lexicons/index.js";
5
+
6
+
export interface LiveLeafletLoaderOptions {
7
+
/**
8
+
* @description Your repo is your DID (did:plc... or did:web...) or handle (username.bsky.social). You can find this information using: https://pdsls.dev
9
+
*/
10
+
repo: string;
11
+
}
12
+
13
+
export interface StaticLeafletLoaderOptions {
14
+
/**
15
+
* @description Your repo is your DID (did:plc... or did:web...) or handle (username.bsky.social). You can find this information using: https://pdsls.dev
16
+
*/
17
+
repo: string;
18
+
/**
19
+
* @description The number of records leaflet records to return for getCollection, the default being 50. The range can be from 1 to 100.
20
+
* @default 50
21
+
*/
22
+
limit?: number;
23
+
/**
24
+
* @description Whether or not the records should be returned in reverse order.
25
+
* @default undefined
26
+
*/
27
+
reverse?: boolean;
28
+
}
29
+
30
+
export interface LeafletDocumentRecord {
31
+
$type: "pub.leaflet.document";
32
+
pages: { [x: string]: unknown };
33
+
title: string;
34
+
author: string;
35
+
description: string;
36
+
publication: string;
37
+
publishedAt: string;
38
+
}
39
+
40
+
export interface LeafletDocumentView {
41
+
rkey: string;
42
+
cid: string;
43
+
title: string;
44
+
description: string;
45
+
author: string;
46
+
publication: string;
47
+
publishedAt: string;
48
+
}
49
+
50
+
export interface MiniDoc {
51
+
did: string;
52
+
handle: string;
53
+
pds: string;
54
+
signing_key: string;
55
+
}
56
+
57
+
export interface CollectionFilter {
58
+
limit?: number;
59
+
reverse?: boolean;
60
+
cursor?: string;
61
+
}
62
+
63
+
export interface EntryFilter {
64
+
id?: string;
65
+
}
66
+
67
+
export interface GetLeafletDocumentsParams {
68
+
repo: ActorIdentifier;
69
+
rpc: Client<XRPCQueries, XRPCProcedures>;
70
+
cursor?: string;
71
+
limit?: number;
72
+
reverse?: boolean;
73
+
}
74
+
75
+
export interface GetSingleLeafletDocumentParams {
76
+
repo: ActorIdentifier;
77
+
rpc: Client<XRPCQueries, XRPCProcedures>;
78
+
id: string;
79
+
}
80
+
81
+
export interface Facet extends PubLeafletRichtextFacet.Main {}
82
+
export interface RichTextSegment {
83
+
text: string;
84
+
facet?: Exclude<Facet["features"], { $type: string }>;
85
+
}
86
+
87
+
// yoinked from: https://github.com/mary-ext/atcute/blob/trunk/packages/lexicons/lexicons/lib/syntax/handle.ts
88
+
/**
89
+
* represents a decentralized identifier (DID).
90
+
*/
91
+
export type Did<Method extends string = string> = `did:${Method}:${string}`;
+388
lib/utils.ts
+388
lib/utils.ts
···
1
+
import type {} from "@atcute/atproto";
2
+
import { is } from "@atcute/lexicons";
3
+
import { AtUri, UnicodeString } from "@atproto/api";
4
+
import katex from "katex";
5
+
import sanitizeHTML from "sanitize-html";
6
+
import {
7
+
PubLeafletBlocksBlockquote,
8
+
PubLeafletBlocksCode,
9
+
PubLeafletBlocksHeader,
10
+
PubLeafletBlocksHorizontalRule,
11
+
PubLeafletBlocksIframe,
12
+
PubLeafletBlocksImage,
13
+
PubLeafletBlocksMath,
14
+
PubLeafletBlocksText,
15
+
PubLeafletBlocksUnorderedList,
16
+
PubLeafletPagesLinearDocument,
17
+
} from "./lexicons/index.js";
18
+
import type {
19
+
Did,
20
+
Facet,
21
+
GetLeafletDocumentsParams,
22
+
GetSingleLeafletDocumentParams,
23
+
LeafletDocumentRecord,
24
+
LeafletDocumentView,
25
+
MiniDoc,
26
+
RichTextSegment,
27
+
} from "./types.js";
28
+
29
+
export class LiveLoaderError extends Error {
30
+
constructor(
31
+
message: string,
32
+
public code?: string,
33
+
) {
34
+
super(message);
35
+
this.name = "LiveLoaderError";
36
+
}
37
+
}
38
+
39
+
export function uriToRkey(uri: string): string {
40
+
const u = AtUri.make(uri);
41
+
if (!u.rkey) {
42
+
throw new Error("failed to get rkey");
43
+
}
44
+
return u.rkey;
45
+
}
46
+
47
+
export async function resolveMiniDoc(handleOrDid: string) {
48
+
try {
49
+
const response = await fetch(
50
+
`https://slingshot.microcosm.blue/xrpc/com.bad-example.identity.resolveMiniDoc?identifier=${handleOrDid}`,
51
+
);
52
+
53
+
if (!response.ok || response.status >= 300) {
54
+
throw new Error(
55
+
`could not resolve did doc due to invalid handle or did ${handleOrDid}`,
56
+
);
57
+
}
58
+
const data = (await response.json()) as MiniDoc;
59
+
60
+
return {
61
+
pds: data.pds,
62
+
did: data.did,
63
+
};
64
+
} catch {
65
+
throw new Error(`failed to resolve handle: ${handleOrDid}`);
66
+
}
67
+
}
68
+
69
+
export async function getLeafletDocuments({
70
+
repo,
71
+
reverse,
72
+
cursor,
73
+
rpc,
74
+
limit,
75
+
}: GetLeafletDocumentsParams) {
76
+
const { ok, data } = await rpc.get("com.atproto.repo.listRecords", {
77
+
params: {
78
+
collection: "pub.leaflet.document",
79
+
cursor,
80
+
reverse,
81
+
limit,
82
+
repo,
83
+
},
84
+
});
85
+
86
+
if (!ok) {
87
+
throw new LiveLoaderError(
88
+
"error fetching leaflet documents",
89
+
"DOCUMENT_FETCH_ERROR",
90
+
);
91
+
}
92
+
93
+
return {
94
+
documents: data?.records,
95
+
cursor: data?.cursor,
96
+
};
97
+
}
98
+
99
+
export async function getSingleLeafletDocument({
100
+
rpc,
101
+
repo,
102
+
id,
103
+
}: GetSingleLeafletDocumentParams) {
104
+
const { ok, data } = await rpc.get("com.atproto.repo.getRecord", {
105
+
params: {
106
+
collection: "pub.leaflet.document",
107
+
repo,
108
+
rkey: id,
109
+
},
110
+
});
111
+
112
+
if (!ok) {
113
+
throw new LiveLoaderError(
114
+
"error fetching single document",
115
+
"DOCUMENT_FETCH_ERROR",
116
+
);
117
+
}
118
+
119
+
return data;
120
+
}
121
+
122
+
export function leafletDocumentRecordToView({
123
+
uri,
124
+
cid,
125
+
value,
126
+
}: {
127
+
uri: string;
128
+
cid: string;
129
+
value: LeafletDocumentRecord;
130
+
}): LeafletDocumentView {
131
+
return {
132
+
rkey: uriToRkey(uri),
133
+
cid,
134
+
title: value.title,
135
+
description: value.description,
136
+
author: value.author,
137
+
publication: value.publication,
138
+
publishedAt: value.publishedAt,
139
+
};
140
+
}
141
+
142
+
export function leafletBlocksToHTML({
143
+
record,
144
+
did,
145
+
}: {
146
+
record: LeafletDocumentRecord;
147
+
did: string;
148
+
}) {
149
+
let html = "";
150
+
const firstPage = record.pages[0];
151
+
let blocks: PubLeafletPagesLinearDocument.Block[] = [];
152
+
153
+
if (is(PubLeafletPagesLinearDocument.mainSchema, firstPage)) {
154
+
blocks = firstPage.blocks || [];
155
+
}
156
+
157
+
for (const block of blocks) {
158
+
html += parseBlocks({ block, did });
159
+
}
160
+
161
+
return sanitizeHTML(html, {
162
+
allowedAttributes: {
163
+
"*": ["class", "style"],
164
+
img: ["src", "height", "width", "alt"],
165
+
a: ["href", "target", "rel"],
166
+
iframe: ["height", "allow", "loading", "src"],
167
+
},
168
+
allowedTags: [
169
+
"img",
170
+
"pre",
171
+
"code",
172
+
"p",
173
+
"a",
174
+
"b",
175
+
"s",
176
+
"ul",
177
+
"li",
178
+
"i",
179
+
"h1",
180
+
"h2",
181
+
"h3",
182
+
"h4",
183
+
"h5",
184
+
"h6",
185
+
"hr",
186
+
"div",
187
+
"span",
188
+
"blockquote",
189
+
"iframe",
190
+
],
191
+
selfClosing: ["img"],
192
+
});
193
+
}
194
+
195
+
export class RichText {
196
+
unicodeText: UnicodeString;
197
+
facets?: Facet[];
198
+
constructor(props: { text: string; facets: Facet[] }) {
199
+
this.unicodeText = new UnicodeString(props.text);
200
+
this.facets = props.facets;
201
+
if (this.facets) {
202
+
this.facets = this.facets
203
+
.filter((facet) => facet.index.byteStart <= facet.index.byteEnd)
204
+
.sort((a, b) => a.index.byteStart - b.index.byteStart);
205
+
}
206
+
}
207
+
208
+
*segments(): Generator<RichTextSegment, void, void> {
209
+
const facets = this.facets || [];
210
+
if (!facets.length) {
211
+
yield { text: this.unicodeText.utf16 };
212
+
return;
213
+
}
214
+
215
+
let textCursor = 0;
216
+
let facetCursor = 0;
217
+
do {
218
+
const currFacet = facets[facetCursor];
219
+
if (currFacet) {
220
+
if (textCursor < currFacet.index.byteStart) {
221
+
yield {
222
+
text: this.unicodeText.slice(textCursor, currFacet.index.byteStart),
223
+
};
224
+
} else if (textCursor > currFacet.index.byteStart) {
225
+
facetCursor++;
226
+
continue;
227
+
}
228
+
if (currFacet.index.byteStart < currFacet.index.byteEnd) {
229
+
const subtext = this.unicodeText.slice(
230
+
currFacet.index.byteStart,
231
+
currFacet.index.byteEnd,
232
+
);
233
+
if (!subtext.trim()) {
234
+
// dont empty string entities
235
+
yield { text: subtext };
236
+
} else {
237
+
yield { text: subtext, facet: currFacet.features };
238
+
}
239
+
}
240
+
textCursor = currFacet.index.byteEnd;
241
+
facetCursor++;
242
+
}
243
+
} while (facetCursor < facets.length);
244
+
if (textCursor < this.unicodeText.length) {
245
+
yield {
246
+
text: this.unicodeText.slice(textCursor, this.unicodeText.length),
247
+
};
248
+
}
249
+
}
250
+
}
251
+
252
+
export function parseTextBlock(block: PubLeafletBlocksText.Main) {
253
+
let html = "";
254
+
const rt = new RichText({
255
+
text: block.plaintext,
256
+
facets: block.facets || [],
257
+
});
258
+
const children = [];
259
+
for (const segment of rt.segments()) {
260
+
const link = segment.facet?.find(
261
+
(segment) => segment.$type === "pub.leaflet.richtext.facet#link",
262
+
);
263
+
const isBold = segment.facet?.find(
264
+
(segment) => segment.$type === "pub.leaflet.richtext.facet#bold",
265
+
);
266
+
const isCode = segment.facet?.find(
267
+
(segment) => segment.$type === "pub.leaflet.richtext.facet#code",
268
+
);
269
+
const isStrikethrough = segment.facet?.find(
270
+
(segment) => segment.$type === "pub.leaflet.richtext.facet#strikethrough",
271
+
);
272
+
const isUnderline = segment.facet?.find(
273
+
(segment) => segment.$type === "pub.leaflet.richtext.facet#underline",
274
+
);
275
+
const isItalic = segment.facet?.find(
276
+
(segment) => segment.$type === "pub.leaflet.richtext.facet#italic",
277
+
);
278
+
if (isCode) {
279
+
children.push(`<pre><code>${segment.text}</code></pre>`);
280
+
} else if (link) {
281
+
children.push(
282
+
`<a href="${link.uri}" target="_blank" rel="noopener noreferrer">${segment.text}</a>`,
283
+
);
284
+
} else if (isBold) {
285
+
children.push(`<b>${segment.text}</b>`);
286
+
} else if (isStrikethrough) {
287
+
children.push(`<s>${segment.text}</s>`);
288
+
} else if (isUnderline) {
289
+
children.push(
290
+
`<span style="text-decoration:underline;">${segment.text}</span>`,
291
+
);
292
+
} else if (isItalic) {
293
+
children.push(`<i>${segment.text}</i>`);
294
+
} else {
295
+
children.push(`${segment.text}`);
296
+
}
297
+
}
298
+
html += `<p>${children.join("")}</p>`;
299
+
300
+
return html.trim();
301
+
}
302
+
303
+
export function parseBlocks({
304
+
block,
305
+
did,
306
+
}: {
307
+
block: PubLeafletPagesLinearDocument.Block;
308
+
did: string;
309
+
}): string {
310
+
let html = "";
311
+
312
+
if (is(PubLeafletBlocksText.mainSchema, block.block)) {
313
+
html += parseTextBlock(block.block);
314
+
}
315
+
316
+
if (is(PubLeafletBlocksHeader.mainSchema, block.block)) {
317
+
if (block.block.level === 1) {
318
+
html += `<h2>${block.block.plaintext}</h2>`;
319
+
}
320
+
}
321
+
if (is(PubLeafletBlocksHeader.mainSchema, block.block)) {
322
+
if (block.block.level === 2) {
323
+
html += `<h3>${block.block.plaintext}</h3>`;
324
+
}
325
+
}
326
+
if (is(PubLeafletBlocksHeader.mainSchema, block.block)) {
327
+
if (block.block.level === 3) {
328
+
html += `<h4>${block.block.plaintext}</h4>`;
329
+
}
330
+
}
331
+
if (is(PubLeafletBlocksHeader.mainSchema, block.block)) {
332
+
if (!block.block.level) {
333
+
html += `<h6>${block.block.plaintext}</h6>`;
334
+
}
335
+
}
336
+
337
+
if (is(PubLeafletBlocksHorizontalRule.mainSchema, block.block)) {
338
+
html += `<hr />`;
339
+
}
340
+
if (is(PubLeafletBlocksUnorderedList.mainSchema, block.block)) {
341
+
html += `<ul>${block.block.children.map((child) => renderListItem({ item: child, did })).join("")}</ul>`;
342
+
}
343
+
344
+
if (is(PubLeafletBlocksMath.mainSchema, block.block)) {
345
+
html += `<div>${katex.renderToString(block.block.tex, { displayMode: true, output: "html", throwOnError: false })}</div>`;
346
+
}
347
+
348
+
if (is(PubLeafletBlocksCode.mainSchema, block.block)) {
349
+
html += `<pre><code data-language=${block.block.language}>${block.block.plaintext}</code></pre>`;
350
+
}
351
+
352
+
if (is(PubLeafletBlocksImage.mainSchema, block.block)) {
353
+
// @ts-ignore
354
+
html += `<div><img src="https://cdn.bsky.app/img/feed_fullsize/plain/${did}/${block.block.image.ref.$link}@jpeg" height="${block.block.aspectRatio.height}" width="${block.block.aspectRatio.width}" alt="${block.block.alt}" /></div>`;
355
+
}
356
+
357
+
if (is(PubLeafletBlocksBlockquote.mainSchema, block.block)) {
358
+
html += `<blockquote>${parseTextBlock(block.block)}</blockquote>`;
359
+
}
360
+
361
+
if (is(PubLeafletBlocksIframe.mainSchema, block.block)) {
362
+
// @ts-ignore
363
+
html += `<iframe height="${block.block.height}" allow="fullscreen" loading="lazy" src="${block.block.url}"></iframe>`;
364
+
}
365
+
366
+
return html.trim();
367
+
}
368
+
369
+
export function renderListItem({
370
+
item,
371
+
did,
372
+
}: {
373
+
item: PubLeafletBlocksUnorderedList.ListItem;
374
+
did: string;
375
+
}): string {
376
+
const children: string | null = item.children?.length
377
+
? `<ul>${item.children.map((child) => renderListItem({ item: child, did }))}</ul>`
378
+
: "";
379
+
380
+
return `<li>${parseBlocks({ block: { block: item.content }, did })}${children}</li>`;
381
+
}
382
+
383
+
// yoinked from: https://github.com/mary-ext/atcute/blob/trunk/packages/lexicons/lexicons/lib/syntax/handle.ts
384
+
const PLC_DID_RE = /^did:plc:([a-z2-7]{24})$/;
385
+
386
+
export const isPlcDid = (input: string): input is Did<"plc"> => {
387
+
return input.length === 32 && PLC_DID_RE.test(input);
388
+
};
+48
-7
package.json
+48
-7
package.json
···
1
1
{
2
-
"name": "leaflet-loader-astro",
3
-
"version": "0.0.1",
2
+
"name": "@nulfrost/leaflet-loader-astro",
3
+
"version": "1.3.0",
4
4
"description": "A leaflet.pub astro collection loader",
5
-
"keywords": ["astro", "at", "protocol", "leaflet.pub"],
5
+
"keywords": [
6
+
"astro",
7
+
"at",
8
+
"protocol",
9
+
"leaflet.pub"
10
+
],
6
11
"homepage": "https://github.com/nulfrost/leaflet-loader-astro",
7
12
"bugs": {
8
13
"url": "https://github.com/nulfrost/leaflet-loader-astro/issues"
9
14
},
10
-
"author": "Dane Miller",
15
+
"author": "Dane Miller <me@dane.computer>",
11
16
"repository": {
12
17
"type": "git",
13
18
"url": "git+https://github.com/nulfrost/leaflet-loader-astro.git"
14
19
},
15
20
"scripts": {
16
-
"build": "tsc"
21
+
"lint": "biome lint",
22
+
"format": "biome format --write ./lib",
23
+
"lex": "lex-cli generate -c ./lex.config.js",
24
+
"test": "vitest --run",
25
+
"typecheck": "tsc",
26
+
"release": "pnpm run build && changeset publish",
27
+
"build": "rm -rf dist && tsup --format esm --dts",
28
+
"pack": "rm -rf *.tgz && pnpm build && pnpm pack"
17
29
},
18
30
"license": "MIT",
19
-
"files": ["dist"],
31
+
"files": [
32
+
"dist"
33
+
],
34
+
"publishConfig": {
35
+
"access": "public"
36
+
},
20
37
"type": "module",
21
38
"main": "dist/index.js",
39
+
"module": "dist/index.js",
40
+
"types": "dist/index.d.ts",
41
+
"exports": {
42
+
".": {
43
+
"import": "./dist/index.js",
44
+
"require": "./dist/index.cjs"
45
+
}
46
+
},
22
47
"devDependencies": {
23
-
"typescript": "^5.9.2"
48
+
"@atcute/atproto": "^3.1.1",
49
+
"@atcute/lex-cli": "^2.1.1",
50
+
"@biomejs/biome": "2.1.3",
51
+
"@changesets/cli": "^2.29.5",
52
+
"@types/bun": "^1.2.19",
53
+
"@types/sanitize-html": "^2.16.0",
54
+
"astro": "^5.12.8",
55
+
"tsup": "^8.5.0",
56
+
"typescript": "^5.9.2",
57
+
"vitest": "^3.2.4"
58
+
},
59
+
"dependencies": {
60
+
"@atcute/client": "^4.0.3",
61
+
"@atcute/lexicons": "^1.1.0",
62
+
"@atproto/api": "^0.16.2",
63
+
"katex": "^0.16.22",
64
+
"sanitize-html": "^2.17.0"
24
65
}
25
66
}
+5028
pnpm-lock.yaml
+5028
pnpm-lock.yaml
···
7
7
importers:
8
8
9
9
.:
10
+
dependencies:
11
+
'@atcute/client':
12
+
specifier: ^4.0.3
13
+
version: 4.0.3
14
+
'@atcute/lexicons':
15
+
specifier: ^1.1.0
16
+
version: 1.1.0
17
+
'@atproto/api':
18
+
specifier: ^0.16.2
19
+
version: 0.16.2
20
+
katex:
21
+
specifier: ^0.16.22
22
+
version: 0.16.22
23
+
sanitize-html:
24
+
specifier: ^2.17.0
25
+
version: 2.17.0
10
26
devDependencies:
27
+
'@atcute/atproto':
28
+
specifier: ^3.1.1
29
+
version: 3.1.1
30
+
'@atcute/lex-cli':
31
+
specifier: ^2.1.1
32
+
version: 2.1.1
33
+
'@biomejs/biome':
34
+
specifier: 2.1.3
35
+
version: 2.1.3
36
+
'@changesets/cli':
37
+
specifier: ^2.29.5
38
+
version: 2.29.5
39
+
'@types/bun':
40
+
specifier: ^1.2.19
41
+
version: 1.2.19(@types/react@19.1.9)
42
+
'@types/sanitize-html':
43
+
specifier: ^2.16.0
44
+
version: 2.16.0
45
+
astro:
46
+
specifier: ^5.12.8
47
+
version: 5.12.9(@types/node@24.2.1)(rollup@4.46.2)(typescript@5.9.2)
48
+
tsup:
49
+
specifier: ^8.5.0
50
+
version: 8.5.0(postcss@8.5.6)(typescript@5.9.2)
11
51
typescript:
12
52
specifier: ^5.9.2
13
53
version: 5.9.2
54
+
vitest:
55
+
specifier: ^3.2.4
56
+
version: 3.2.4(@types/debug@4.1.12)(@types/node@24.2.1)
14
57
15
58
packages:
16
59
60
+
'@astrojs/compiler@2.12.2':
61
+
resolution: {integrity: sha512-w2zfvhjNCkNMmMMOn5b0J8+OmUaBL1o40ipMvqcG6NRpdC+lKxmTi48DT8Xw0SzJ3AfmeFLB45zXZXtmbsjcgw==}
62
+
63
+
'@astrojs/internal-helpers@0.7.1':
64
+
resolution: {integrity: sha512-7dwEVigz9vUWDw3nRwLQ/yH/xYovlUA0ZD86xoeKEBmkz9O6iELG1yri67PgAPW6VLL/xInA4t7H0CK6VmtkKQ==}
65
+
66
+
'@astrojs/markdown-remark@6.3.5':
67
+
resolution: {integrity: sha512-MiR92CkE2BcyWf3b86cBBw/1dKiOH0qhLgXH2OXA6cScrrmmks1Rr4Tl0p/lFpvmgQQrP54Pd1uidJfmxGrpWQ==}
68
+
69
+
'@astrojs/prism@3.3.0':
70
+
resolution: {integrity: sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ==}
71
+
engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0}
72
+
73
+
'@astrojs/telemetry@3.3.0':
74
+
resolution: {integrity: sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ==}
75
+
engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0}
76
+
77
+
'@atcute/atproto@3.1.1':
78
+
resolution: {integrity: sha512-D+RLTIPF0xLu7BPZY8KSewAPemJFh+3n3zeQ3ROsLxbTtCHbrTDMAmAFexaVRAPGcPYrwXaBUlv7yZjScJolMg==}
79
+
80
+
'@atcute/client@4.0.3':
81
+
resolution: {integrity: sha512-RIOZWFVLca/HiPAAUDqQPOdOreCxTbL5cb+WUf5yqQOKIu5yEAP3eksinmlLmgIrlr5qVOE7brazUUzaskFCfw==}
82
+
83
+
'@atcute/identity@1.0.3':
84
+
resolution: {integrity: sha512-mNMxbKHFGys03A8JXKk0KfMBzdd0vrYMzZZWjpw1nYTs0+ea6bo5S1hwqVUZxHdo1gFHSe/t63jxQIF4yL9aKw==}
85
+
86
+
'@atcute/lex-cli@2.1.1':
87
+
resolution: {integrity: sha512-QaR0sOP8Z24opGHKsSfleDbP/ahUb6HECkVaOqSwG7ORZzbLK1w0265o1BRjCVr2dT6FxlsMUa2Ge85JMA9bxg==}
88
+
hasBin: true
89
+
90
+
'@atcute/lexicon-doc@1.0.3':
91
+
resolution: {integrity: sha512-U7rinsTOwXGGcrF6/s7GzTXargcQpDr4BTrj5ci/XTK+POEK5jpcI+Ag1fF932pBX3k97em6y4TWwTSO8M/McQ==}
92
+
93
+
'@atcute/lexicons@1.1.0':
94
+
resolution: {integrity: sha512-LFqwnria78xLYb62Ri/+WwQpUTgZp2DuyolNGIIOV1dpiKhFFFh//nscHMA6IExFLQRqWDs3tTjy7zv0h3sf1Q==}
95
+
96
+
'@atproto/api@0.16.2':
97
+
resolution: {integrity: sha512-sSTg31J8ws8DNaoiizp+/uJideRxRaJsq+Nyl8rnSxGw0w3oCvoeRU19iRWh2t0jZEmiRJAGkveGu23NKmPYEQ==}
98
+
99
+
'@atproto/common-web@0.4.2':
100
+
resolution: {integrity: sha512-vrXwGNoFGogodjQvJDxAeP3QbGtawgZute2ed1XdRO0wMixLk3qewtikZm06H259QDJVu6voKC5mubml+WgQUw==}
101
+
102
+
'@atproto/lexicon@0.4.12':
103
+
resolution: {integrity: sha512-fcEvEQ1GpQYF5igZ4IZjPWEoWVpsEF22L9RexxLS3ptfySXLflEyH384e7HITzO/73McDeaJx3lqHIuqn9ulnw==}
104
+
105
+
'@atproto/syntax@0.4.0':
106
+
resolution: {integrity: sha512-b9y5ceHS8YKOfP3mdKmwAx5yVj9294UN7FG2XzP6V5aKUdFazEYRnR9m5n5ZQFKa3GNvz7de9guZCJ/sUTcOAA==}
107
+
108
+
'@atproto/xrpc@0.7.1':
109
+
resolution: {integrity: sha512-ANHEzlskYlMEdH18m+Itp3a8d0pEJao2qoDybDoMupTnoeNkya4VKIaOgAi6ERQnqatBBZyn9asW+7rJmSt/8g==}
110
+
111
+
'@babel/helper-string-parser@7.27.1':
112
+
resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
113
+
engines: {node: '>=6.9.0'}
114
+
115
+
'@babel/helper-validator-identifier@7.27.1':
116
+
resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==}
117
+
engines: {node: '>=6.9.0'}
118
+
119
+
'@babel/parser@7.28.0':
120
+
resolution: {integrity: sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==}
121
+
engines: {node: '>=6.0.0'}
122
+
hasBin: true
123
+
124
+
'@babel/runtime@7.28.2':
125
+
resolution: {integrity: sha512-KHp2IflsnGywDjBWDkR9iEqiWSpc8GIi0lgTT3mOElT0PP1tG26P4tmFI2YvAdzgq9RGyoHZQEIEdZy6Ec5xCA==}
126
+
engines: {node: '>=6.9.0'}
127
+
128
+
'@babel/types@7.28.2':
129
+
resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==}
130
+
engines: {node: '>=6.9.0'}
131
+
132
+
'@badrap/valita@0.4.6':
133
+
resolution: {integrity: sha512-4kdqcjyxo/8RQ8ayjms47HCWZIF5981oE5nIenbfThKDxWXtEHKipAOWlflpPJzZx9y/JWYQkp18Awr7VuepFg==}
134
+
engines: {node: '>= 18'}
135
+
136
+
'@biomejs/biome@2.1.3':
137
+
resolution: {integrity: sha512-KE/tegvJIxTkl7gJbGWSgun7G6X/n2M6C35COT6ctYrAy7SiPyNvi6JtoQERVK/VRbttZfgGq96j2bFmhmnH4w==}
138
+
engines: {node: '>=14.21.3'}
139
+
hasBin: true
140
+
141
+
'@biomejs/cli-darwin-arm64@2.1.3':
142
+
resolution: {integrity: sha512-LFLkSWRoSGS1wVUD/BE6Nlt2dSn0ulH3XImzg2O/36BoToJHKXjSxzPEMAqT9QvwVtk7/9AQhZpTneERU9qaXA==}
143
+
engines: {node: '>=14.21.3'}
144
+
cpu: [arm64]
145
+
os: [darwin]
146
+
147
+
'@biomejs/cli-darwin-x64@2.1.3':
148
+
resolution: {integrity: sha512-Q/4OTw8P9No9QeowyxswcWdm0n2MsdCwWcc5NcKQQvzwPjwuPdf8dpPPf4r+x0RWKBtl1FLiAUtJvBlri6DnYw==}
149
+
engines: {node: '>=14.21.3'}
150
+
cpu: [x64]
151
+
os: [darwin]
152
+
153
+
'@biomejs/cli-linux-arm64-musl@2.1.3':
154
+
resolution: {integrity: sha512-KXouFSBnoxAWZYDQrnNRzZBbt5s9UJkIm40hdvSL9mBxSSoxRFQJbtg1hP3aa8A2SnXyQHxQfpiVeJlczZt76w==}
155
+
engines: {node: '>=14.21.3'}
156
+
cpu: [arm64]
157
+
os: [linux]
158
+
159
+
'@biomejs/cli-linux-arm64@2.1.3':
160
+
resolution: {integrity: sha512-2hS6LgylRqMFmAZCOFwYrf77QMdUwJp49oe8PX/O8+P2yKZMSpyQTf3Eo5ewnsMFUEmYbPOskafdV1ds1MZMJA==}
161
+
engines: {node: '>=14.21.3'}
162
+
cpu: [arm64]
163
+
os: [linux]
164
+
165
+
'@biomejs/cli-linux-x64-musl@2.1.3':
166
+
resolution: {integrity: sha512-KaLAxnROouzIWtl6a0Y88r/4hW5oDUJTIqQorOTVQITaKQsKjZX4XCUmHIhdEk8zMnaiLZzRTAwk1yIAl+mIew==}
167
+
engines: {node: '>=14.21.3'}
168
+
cpu: [x64]
169
+
os: [linux]
170
+
171
+
'@biomejs/cli-linux-x64@2.1.3':
172
+
resolution: {integrity: sha512-NxlSCBhLvQtWGagEztfAZ4WcE1AkMTntZV65ZvR+J9jp06+EtOYEBPQndA70ZGhHbEDG57bR6uNvqkd1WrEYVA==}
173
+
engines: {node: '>=14.21.3'}
174
+
cpu: [x64]
175
+
os: [linux]
176
+
177
+
'@biomejs/cli-win32-arm64@2.1.3':
178
+
resolution: {integrity: sha512-V9CUZCtWH4u0YwyCYbQ3W5F4ZGPWp2C2TYcsiWFNNyRfmOW1j/TY/jAurl33SaRjgZPO5UUhGyr9m6BN9t84NQ==}
179
+
engines: {node: '>=14.21.3'}
180
+
cpu: [arm64]
181
+
os: [win32]
182
+
183
+
'@biomejs/cli-win32-x64@2.1.3':
184
+
resolution: {integrity: sha512-dxy599q6lgp8ANPpR8sDMscwdp9oOumEsVXuVCVT9N2vAho8uYXlCz53JhxX6LtJOXaE73qzgkGQ7QqvFlMC0g==}
185
+
engines: {node: '>=14.21.3'}
186
+
cpu: [x64]
187
+
os: [win32]
188
+
189
+
'@capsizecss/unpack@2.4.0':
190
+
resolution: {integrity: sha512-GrSU71meACqcmIUxPYOJvGKF0yryjN/L1aCuE9DViCTJI7bfkjgYDPD1zbNDcINJwSSP6UaBZY9GAbYDO7re0Q==}
191
+
192
+
'@changesets/apply-release-plan@7.0.12':
193
+
resolution: {integrity: sha512-EaET7As5CeuhTzvXTQCRZeBUcisoYPDDcXvgTE/2jmmypKp0RC7LxKj/yzqeh/1qFTZI7oDGFcL1PHRuQuketQ==}
194
+
195
+
'@changesets/assemble-release-plan@6.0.9':
196
+
resolution: {integrity: sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==}
197
+
198
+
'@changesets/changelog-git@0.2.1':
199
+
resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==}
200
+
201
+
'@changesets/cli@2.29.5':
202
+
resolution: {integrity: sha512-0j0cPq3fgxt2dPdFsg4XvO+6L66RC0pZybT9F4dG5TBrLA3jA/1pNkdTXH9IBBVHkgsKrNKenI3n1mPyPlIydg==}
203
+
hasBin: true
204
+
205
+
'@changesets/config@3.1.1':
206
+
resolution: {integrity: sha512-bd+3Ap2TKXxljCggI0mKPfzCQKeV/TU4yO2h2C6vAihIo8tzseAn2e7klSuiyYYXvgu53zMN1OeYMIQkaQoWnA==}
207
+
208
+
'@changesets/errors@0.2.0':
209
+
resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==}
210
+
211
+
'@changesets/get-dependents-graph@2.1.3':
212
+
resolution: {integrity: sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==}
213
+
214
+
'@changesets/get-release-plan@4.0.13':
215
+
resolution: {integrity: sha512-DWG1pus72FcNeXkM12tx+xtExyH/c9I1z+2aXlObH3i9YA7+WZEVaiHzHl03thpvAgWTRaH64MpfHxozfF7Dvg==}
216
+
217
+
'@changesets/get-version-range-type@0.4.0':
218
+
resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==}
219
+
220
+
'@changesets/git@3.0.4':
221
+
resolution: {integrity: sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==}
222
+
223
+
'@changesets/logger@0.1.1':
224
+
resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==}
225
+
226
+
'@changesets/parse@0.4.1':
227
+
resolution: {integrity: sha512-iwksMs5Bf/wUItfcg+OXrEpravm5rEd9Bf4oyIPL4kVTmJQ7PNDSd6MDYkpSJR1pn7tz/k8Zf2DhTCqX08Ou+Q==}
228
+
229
+
'@changesets/pre@2.0.2':
230
+
resolution: {integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==}
231
+
232
+
'@changesets/read@0.6.5':
233
+
resolution: {integrity: sha512-UPzNGhsSjHD3Veb0xO/MwvasGe8eMyNrR/sT9gR8Q3DhOQZirgKhhXv/8hVsI0QpPjR004Z9iFxoJU6in3uGMg==}
234
+
235
+
'@changesets/should-skip-package@0.1.2':
236
+
resolution: {integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==}
237
+
238
+
'@changesets/types@4.1.0':
239
+
resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==}
240
+
241
+
'@changesets/types@6.1.0':
242
+
resolution: {integrity: sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==}
243
+
244
+
'@changesets/write@0.4.0':
245
+
resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==}
246
+
247
+
'@emnapi/runtime@1.4.5':
248
+
resolution: {integrity: sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==}
249
+
250
+
'@esbuild/aix-ppc64@0.25.8':
251
+
resolution: {integrity: sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==}
252
+
engines: {node: '>=18'}
253
+
cpu: [ppc64]
254
+
os: [aix]
255
+
256
+
'@esbuild/android-arm64@0.25.8':
257
+
resolution: {integrity: sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==}
258
+
engines: {node: '>=18'}
259
+
cpu: [arm64]
260
+
os: [android]
261
+
262
+
'@esbuild/android-arm@0.25.8':
263
+
resolution: {integrity: sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==}
264
+
engines: {node: '>=18'}
265
+
cpu: [arm]
266
+
os: [android]
267
+
268
+
'@esbuild/android-x64@0.25.8':
269
+
resolution: {integrity: sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==}
270
+
engines: {node: '>=18'}
271
+
cpu: [x64]
272
+
os: [android]
273
+
274
+
'@esbuild/darwin-arm64@0.25.8':
275
+
resolution: {integrity: sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==}
276
+
engines: {node: '>=18'}
277
+
cpu: [arm64]
278
+
os: [darwin]
279
+
280
+
'@esbuild/darwin-x64@0.25.8':
281
+
resolution: {integrity: sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==}
282
+
engines: {node: '>=18'}
283
+
cpu: [x64]
284
+
os: [darwin]
285
+
286
+
'@esbuild/freebsd-arm64@0.25.8':
287
+
resolution: {integrity: sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==}
288
+
engines: {node: '>=18'}
289
+
cpu: [arm64]
290
+
os: [freebsd]
291
+
292
+
'@esbuild/freebsd-x64@0.25.8':
293
+
resolution: {integrity: sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==}
294
+
engines: {node: '>=18'}
295
+
cpu: [x64]
296
+
os: [freebsd]
297
+
298
+
'@esbuild/linux-arm64@0.25.8':
299
+
resolution: {integrity: sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==}
300
+
engines: {node: '>=18'}
301
+
cpu: [arm64]
302
+
os: [linux]
303
+
304
+
'@esbuild/linux-arm@0.25.8':
305
+
resolution: {integrity: sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==}
306
+
engines: {node: '>=18'}
307
+
cpu: [arm]
308
+
os: [linux]
309
+
310
+
'@esbuild/linux-ia32@0.25.8':
311
+
resolution: {integrity: sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==}
312
+
engines: {node: '>=18'}
313
+
cpu: [ia32]
314
+
os: [linux]
315
+
316
+
'@esbuild/linux-loong64@0.25.8':
317
+
resolution: {integrity: sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==}
318
+
engines: {node: '>=18'}
319
+
cpu: [loong64]
320
+
os: [linux]
321
+
322
+
'@esbuild/linux-mips64el@0.25.8':
323
+
resolution: {integrity: sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==}
324
+
engines: {node: '>=18'}
325
+
cpu: [mips64el]
326
+
os: [linux]
327
+
328
+
'@esbuild/linux-ppc64@0.25.8':
329
+
resolution: {integrity: sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==}
330
+
engines: {node: '>=18'}
331
+
cpu: [ppc64]
332
+
os: [linux]
333
+
334
+
'@esbuild/linux-riscv64@0.25.8':
335
+
resolution: {integrity: sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==}
336
+
engines: {node: '>=18'}
337
+
cpu: [riscv64]
338
+
os: [linux]
339
+
340
+
'@esbuild/linux-s390x@0.25.8':
341
+
resolution: {integrity: sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==}
342
+
engines: {node: '>=18'}
343
+
cpu: [s390x]
344
+
os: [linux]
345
+
346
+
'@esbuild/linux-x64@0.25.8':
347
+
resolution: {integrity: sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==}
348
+
engines: {node: '>=18'}
349
+
cpu: [x64]
350
+
os: [linux]
351
+
352
+
'@esbuild/netbsd-arm64@0.25.8':
353
+
resolution: {integrity: sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==}
354
+
engines: {node: '>=18'}
355
+
cpu: [arm64]
356
+
os: [netbsd]
357
+
358
+
'@esbuild/netbsd-x64@0.25.8':
359
+
resolution: {integrity: sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==}
360
+
engines: {node: '>=18'}
361
+
cpu: [x64]
362
+
os: [netbsd]
363
+
364
+
'@esbuild/openbsd-arm64@0.25.8':
365
+
resolution: {integrity: sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==}
366
+
engines: {node: '>=18'}
367
+
cpu: [arm64]
368
+
os: [openbsd]
369
+
370
+
'@esbuild/openbsd-x64@0.25.8':
371
+
resolution: {integrity: sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==}
372
+
engines: {node: '>=18'}
373
+
cpu: [x64]
374
+
os: [openbsd]
375
+
376
+
'@esbuild/openharmony-arm64@0.25.8':
377
+
resolution: {integrity: sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==}
378
+
engines: {node: '>=18'}
379
+
cpu: [arm64]
380
+
os: [openharmony]
381
+
382
+
'@esbuild/sunos-x64@0.25.8':
383
+
resolution: {integrity: sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==}
384
+
engines: {node: '>=18'}
385
+
cpu: [x64]
386
+
os: [sunos]
387
+
388
+
'@esbuild/win32-arm64@0.25.8':
389
+
resolution: {integrity: sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==}
390
+
engines: {node: '>=18'}
391
+
cpu: [arm64]
392
+
os: [win32]
393
+
394
+
'@esbuild/win32-ia32@0.25.8':
395
+
resolution: {integrity: sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==}
396
+
engines: {node: '>=18'}
397
+
cpu: [ia32]
398
+
os: [win32]
399
+
400
+
'@esbuild/win32-x64@0.25.8':
401
+
resolution: {integrity: sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==}
402
+
engines: {node: '>=18'}
403
+
cpu: [x64]
404
+
os: [win32]
405
+
406
+
'@externdefs/collider@0.3.0':
407
+
resolution: {integrity: sha512-x5CpeZ4c8n+1wMFthUMWSQKqCGcQo52/Qbda5ES+JFRRg/D8Ep6/JOvUUq5HExFuv/wW+6UYG2U/mXzw0IAd8Q==}
408
+
peerDependencies:
409
+
'@badrap/valita': ^0.4.4
410
+
411
+
'@img/sharp-darwin-arm64@0.33.5':
412
+
resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==}
413
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
414
+
cpu: [arm64]
415
+
os: [darwin]
416
+
417
+
'@img/sharp-darwin-x64@0.33.5':
418
+
resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==}
419
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
420
+
cpu: [x64]
421
+
os: [darwin]
422
+
423
+
'@img/sharp-libvips-darwin-arm64@1.0.4':
424
+
resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==}
425
+
cpu: [arm64]
426
+
os: [darwin]
427
+
428
+
'@img/sharp-libvips-darwin-x64@1.0.4':
429
+
resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==}
430
+
cpu: [x64]
431
+
os: [darwin]
432
+
433
+
'@img/sharp-libvips-linux-arm64@1.0.4':
434
+
resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==}
435
+
cpu: [arm64]
436
+
os: [linux]
437
+
438
+
'@img/sharp-libvips-linux-arm@1.0.5':
439
+
resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==}
440
+
cpu: [arm]
441
+
os: [linux]
442
+
443
+
'@img/sharp-libvips-linux-s390x@1.0.4':
444
+
resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==}
445
+
cpu: [s390x]
446
+
os: [linux]
447
+
448
+
'@img/sharp-libvips-linux-x64@1.0.4':
449
+
resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==}
450
+
cpu: [x64]
451
+
os: [linux]
452
+
453
+
'@img/sharp-libvips-linuxmusl-arm64@1.0.4':
454
+
resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==}
455
+
cpu: [arm64]
456
+
os: [linux]
457
+
458
+
'@img/sharp-libvips-linuxmusl-x64@1.0.4':
459
+
resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==}
460
+
cpu: [x64]
461
+
os: [linux]
462
+
463
+
'@img/sharp-linux-arm64@0.33.5':
464
+
resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==}
465
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
466
+
cpu: [arm64]
467
+
os: [linux]
468
+
469
+
'@img/sharp-linux-arm@0.33.5':
470
+
resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==}
471
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
472
+
cpu: [arm]
473
+
os: [linux]
474
+
475
+
'@img/sharp-linux-s390x@0.33.5':
476
+
resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==}
477
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
478
+
cpu: [s390x]
479
+
os: [linux]
480
+
481
+
'@img/sharp-linux-x64@0.33.5':
482
+
resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==}
483
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
484
+
cpu: [x64]
485
+
os: [linux]
486
+
487
+
'@img/sharp-linuxmusl-arm64@0.33.5':
488
+
resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==}
489
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
490
+
cpu: [arm64]
491
+
os: [linux]
492
+
493
+
'@img/sharp-linuxmusl-x64@0.33.5':
494
+
resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==}
495
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
496
+
cpu: [x64]
497
+
os: [linux]
498
+
499
+
'@img/sharp-wasm32@0.33.5':
500
+
resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==}
501
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
502
+
cpu: [wasm32]
503
+
504
+
'@img/sharp-win32-ia32@0.33.5':
505
+
resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==}
506
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
507
+
cpu: [ia32]
508
+
os: [win32]
509
+
510
+
'@img/sharp-win32-x64@0.33.5':
511
+
resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==}
512
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
513
+
cpu: [x64]
514
+
os: [win32]
515
+
516
+
'@isaacs/cliui@8.0.2':
517
+
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
518
+
engines: {node: '>=12'}
519
+
520
+
'@jridgewell/gen-mapping@0.3.12':
521
+
resolution: {integrity: sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==}
522
+
523
+
'@jridgewell/resolve-uri@3.1.2':
524
+
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
525
+
engines: {node: '>=6.0.0'}
526
+
527
+
'@jridgewell/sourcemap-codec@1.5.4':
528
+
resolution: {integrity: sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==}
529
+
530
+
'@jridgewell/trace-mapping@0.3.29':
531
+
resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==}
532
+
533
+
'@manypkg/find-root@1.1.0':
534
+
resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==}
535
+
536
+
'@manypkg/get-packages@1.1.3':
537
+
resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==}
538
+
539
+
'@nodelib/fs.scandir@2.1.5':
540
+
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
541
+
engines: {node: '>= 8'}
542
+
543
+
'@nodelib/fs.stat@2.0.5':
544
+
resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
545
+
engines: {node: '>= 8'}
546
+
547
+
'@nodelib/fs.walk@1.2.8':
548
+
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
549
+
engines: {node: '>= 8'}
550
+
551
+
'@oslojs/encoding@1.1.0':
552
+
resolution: {integrity: sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==}
553
+
554
+
'@pkgjs/parseargs@0.11.0':
555
+
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
556
+
engines: {node: '>=14'}
557
+
558
+
'@rollup/pluginutils@5.2.0':
559
+
resolution: {integrity: sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==}
560
+
engines: {node: '>=14.0.0'}
561
+
peerDependencies:
562
+
rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
563
+
peerDependenciesMeta:
564
+
rollup:
565
+
optional: true
566
+
567
+
'@rollup/rollup-android-arm-eabi@4.46.2':
568
+
resolution: {integrity: sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA==}
569
+
cpu: [arm]
570
+
os: [android]
571
+
572
+
'@rollup/rollup-android-arm64@4.46.2':
573
+
resolution: {integrity: sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ==}
574
+
cpu: [arm64]
575
+
os: [android]
576
+
577
+
'@rollup/rollup-darwin-arm64@4.46.2':
578
+
resolution: {integrity: sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ==}
579
+
cpu: [arm64]
580
+
os: [darwin]
581
+
582
+
'@rollup/rollup-darwin-x64@4.46.2':
583
+
resolution: {integrity: sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA==}
584
+
cpu: [x64]
585
+
os: [darwin]
586
+
587
+
'@rollup/rollup-freebsd-arm64@4.46.2':
588
+
resolution: {integrity: sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg==}
589
+
cpu: [arm64]
590
+
os: [freebsd]
591
+
592
+
'@rollup/rollup-freebsd-x64@4.46.2':
593
+
resolution: {integrity: sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw==}
594
+
cpu: [x64]
595
+
os: [freebsd]
596
+
597
+
'@rollup/rollup-linux-arm-gnueabihf@4.46.2':
598
+
resolution: {integrity: sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA==}
599
+
cpu: [arm]
600
+
os: [linux]
601
+
602
+
'@rollup/rollup-linux-arm-musleabihf@4.46.2':
603
+
resolution: {integrity: sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ==}
604
+
cpu: [arm]
605
+
os: [linux]
606
+
607
+
'@rollup/rollup-linux-arm64-gnu@4.46.2':
608
+
resolution: {integrity: sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng==}
609
+
cpu: [arm64]
610
+
os: [linux]
611
+
612
+
'@rollup/rollup-linux-arm64-musl@4.46.2':
613
+
resolution: {integrity: sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg==}
614
+
cpu: [arm64]
615
+
os: [linux]
616
+
617
+
'@rollup/rollup-linux-loongarch64-gnu@4.46.2':
618
+
resolution: {integrity: sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA==}
619
+
cpu: [loong64]
620
+
os: [linux]
621
+
622
+
'@rollup/rollup-linux-ppc64-gnu@4.46.2':
623
+
resolution: {integrity: sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw==}
624
+
cpu: [ppc64]
625
+
os: [linux]
626
+
627
+
'@rollup/rollup-linux-riscv64-gnu@4.46.2':
628
+
resolution: {integrity: sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ==}
629
+
cpu: [riscv64]
630
+
os: [linux]
631
+
632
+
'@rollup/rollup-linux-riscv64-musl@4.46.2':
633
+
resolution: {integrity: sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw==}
634
+
cpu: [riscv64]
635
+
os: [linux]
636
+
637
+
'@rollup/rollup-linux-s390x-gnu@4.46.2':
638
+
resolution: {integrity: sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA==}
639
+
cpu: [s390x]
640
+
os: [linux]
641
+
642
+
'@rollup/rollup-linux-x64-gnu@4.46.2':
643
+
resolution: {integrity: sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA==}
644
+
cpu: [x64]
645
+
os: [linux]
646
+
647
+
'@rollup/rollup-linux-x64-musl@4.46.2':
648
+
resolution: {integrity: sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA==}
649
+
cpu: [x64]
650
+
os: [linux]
651
+
652
+
'@rollup/rollup-win32-arm64-msvc@4.46.2':
653
+
resolution: {integrity: sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g==}
654
+
cpu: [arm64]
655
+
os: [win32]
656
+
657
+
'@rollup/rollup-win32-ia32-msvc@4.46.2':
658
+
resolution: {integrity: sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ==}
659
+
cpu: [ia32]
660
+
os: [win32]
661
+
662
+
'@rollup/rollup-win32-x64-msvc@4.46.2':
663
+
resolution: {integrity: sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg==}
664
+
cpu: [x64]
665
+
os: [win32]
666
+
667
+
'@shikijs/core@3.9.2':
668
+
resolution: {integrity: sha512-3q/mzmw09B2B6PgFNeiaN8pkNOixWS726IHmJEpjDAcneDPMQmUg2cweT9cWXY4XcyQS3i6mOOUgQz9RRUP6HA==}
669
+
670
+
'@shikijs/engine-javascript@3.9.2':
671
+
resolution: {integrity: sha512-kUTRVKPsB/28H5Ko6qEsyudBiWEDLst+Sfi+hwr59E0GLHV0h8RfgbQU7fdN5Lt9A8R1ulRiZyTvAizkROjwDA==}
672
+
673
+
'@shikijs/engine-oniguruma@3.9.2':
674
+
resolution: {integrity: sha512-Vn/w5oyQ6TUgTVDIC/BrpXwIlfK6V6kGWDVVz2eRkF2v13YoENUvaNwxMsQU/t6oCuZKzqp9vqtEtEzKl9VegA==}
675
+
676
+
'@shikijs/langs@3.9.2':
677
+
resolution: {integrity: sha512-X1Q6wRRQXY7HqAuX3I8WjMscjeGjqXCg/Sve7J2GWFORXkSrXud23UECqTBIdCSNKJioFtmUGJQNKtlMMZMn0w==}
678
+
679
+
'@shikijs/themes@3.9.2':
680
+
resolution: {integrity: sha512-6z5lBPBMRfLyyEsgf6uJDHPa6NAGVzFJqH4EAZ+03+7sedYir2yJBRu2uPZOKmj43GyhVHWHvyduLDAwJQfDjA==}
681
+
682
+
'@shikijs/types@3.9.2':
683
+
resolution: {integrity: sha512-/M5L0Uc2ljyn2jKvj4Yiah7ow/W+DJSglVafvWAJ/b8AZDeeRAdMu3c2riDzB7N42VD+jSnWxeP9AKtd4TfYVw==}
684
+
685
+
'@shikijs/vscode-textmate@10.0.2':
686
+
resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
687
+
688
+
'@swc/helpers@0.5.17':
689
+
resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==}
690
+
691
+
'@types/bun@1.2.19':
692
+
resolution: {integrity: sha512-d9ZCmrH3CJ2uYKXQIUuZ/pUnTqIvLDS0SK7pFmbx8ma+ziH/FRMoAq5bYpRG7y+w1gl+HgyNZbtqgMq4W4e2Lg==}
693
+
694
+
'@types/chai@5.2.2':
695
+
resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==}
696
+
697
+
'@types/debug@4.1.12':
698
+
resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
699
+
700
+
'@types/deep-eql@4.0.2':
701
+
resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==}
702
+
703
+
'@types/estree@1.0.8':
704
+
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
705
+
706
+
'@types/fontkit@2.0.8':
707
+
resolution: {integrity: sha512-wN+8bYxIpJf+5oZdrdtaX04qUuWHcKxcDEgRS9Qm9ZClSHjzEn13SxUC+5eRM+4yXIeTYk8mTzLAWGF64847ew==}
708
+
709
+
'@types/hast@3.0.4':
710
+
resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==}
711
+
712
+
'@types/mdast@4.0.4':
713
+
resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==}
714
+
715
+
'@types/ms@2.1.0':
716
+
resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
717
+
718
+
'@types/nlcst@2.0.3':
719
+
resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==}
720
+
721
+
'@types/node@12.20.55':
722
+
resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==}
723
+
724
+
'@types/node@24.2.1':
725
+
resolution: {integrity: sha512-DRh5K+ka5eJic8CjH7td8QpYEV6Zo10gfRkjHCO3weqZHWDtAaSTFtl4+VMqOJ4N5jcuhZ9/l+yy8rVgw7BQeQ==}
726
+
727
+
'@types/react@19.1.9':
728
+
resolution: {integrity: sha512-WmdoynAX8Stew/36uTSVMcLJJ1KRh6L3IZRx1PZ7qJtBqT3dYTgyDTx8H1qoRghErydW7xw9mSJ3wS//tCRpFA==}
729
+
730
+
'@types/sanitize-html@2.16.0':
731
+
resolution: {integrity: sha512-l6rX1MUXje5ztPT0cAFtUayXF06DqPhRyfVXareEN5gGCFaP/iwsxIyKODr9XDhfxPpN6vXUFNfo5kZMXCxBtw==}
732
+
733
+
'@types/unist@3.0.3':
734
+
resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
735
+
736
+
'@ungap/structured-clone@1.3.0':
737
+
resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
738
+
739
+
'@vitest/expect@3.2.4':
740
+
resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==}
741
+
742
+
'@vitest/mocker@3.2.4':
743
+
resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==}
744
+
peerDependencies:
745
+
msw: ^2.4.9
746
+
vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0
747
+
peerDependenciesMeta:
748
+
msw:
749
+
optional: true
750
+
vite:
751
+
optional: true
752
+
753
+
'@vitest/pretty-format@3.2.4':
754
+
resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==}
755
+
756
+
'@vitest/runner@3.2.4':
757
+
resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==}
758
+
759
+
'@vitest/snapshot@3.2.4':
760
+
resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==}
761
+
762
+
'@vitest/spy@3.2.4':
763
+
resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==}
764
+
765
+
'@vitest/utils@3.2.4':
766
+
resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==}
767
+
768
+
acorn@8.15.0:
769
+
resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==}
770
+
engines: {node: '>=0.4.0'}
771
+
hasBin: true
772
+
773
+
ansi-align@3.0.1:
774
+
resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==}
775
+
776
+
ansi-colors@4.1.3:
777
+
resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==}
778
+
engines: {node: '>=6'}
779
+
780
+
ansi-regex@5.0.1:
781
+
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
782
+
engines: {node: '>=8'}
783
+
784
+
ansi-regex@6.1.0:
785
+
resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==}
786
+
engines: {node: '>=12'}
787
+
788
+
ansi-styles@4.3.0:
789
+
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
790
+
engines: {node: '>=8'}
791
+
792
+
ansi-styles@6.2.1:
793
+
resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
794
+
engines: {node: '>=12'}
795
+
796
+
any-promise@1.3.0:
797
+
resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
798
+
799
+
anymatch@3.1.3:
800
+
resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
801
+
engines: {node: '>= 8'}
802
+
803
+
argparse@1.0.10:
804
+
resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
805
+
806
+
argparse@2.0.1:
807
+
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
808
+
809
+
aria-query@5.3.2:
810
+
resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==}
811
+
engines: {node: '>= 0.4'}
812
+
813
+
array-iterate@2.0.1:
814
+
resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==}
815
+
816
+
array-union@2.1.0:
817
+
resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
818
+
engines: {node: '>=8'}
819
+
820
+
assertion-error@2.0.1:
821
+
resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
822
+
engines: {node: '>=12'}
823
+
824
+
astro@5.12.9:
825
+
resolution: {integrity: sha512-cZ7kZ61jyE5nwSrFKSRyf5Gds+uJELqQxJFqMkcgiWQvhWZJUSShn8Uz3yc9WLyLw5Kim5P5un9SkJSGogfEZQ==}
826
+
engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'}
827
+
hasBin: true
828
+
829
+
await-lock@2.2.2:
830
+
resolution: {integrity: sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==}
831
+
832
+
axobject-query@4.1.0:
833
+
resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
834
+
engines: {node: '>= 0.4'}
835
+
836
+
bail@2.0.2:
837
+
resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
838
+
839
+
balanced-match@1.0.2:
840
+
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
841
+
842
+
base-64@1.0.0:
843
+
resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==}
844
+
845
+
base64-js@1.5.1:
846
+
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
847
+
848
+
better-path-resolve@1.0.0:
849
+
resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==}
850
+
engines: {node: '>=4'}
851
+
852
+
blob-to-buffer@1.2.9:
853
+
resolution: {integrity: sha512-BF033y5fN6OCofD3vgHmNtwZWRcq9NLyyxyILx9hfMy1sXYy4ojFl765hJ2lP0YaN2fuxPaLO2Vzzoxy0FLFFA==}
854
+
855
+
boxen@8.0.1:
856
+
resolution: {integrity: sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==}
857
+
engines: {node: '>=18'}
858
+
859
+
brace-expansion@2.0.2:
860
+
resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==}
861
+
862
+
braces@3.0.3:
863
+
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
864
+
engines: {node: '>=8'}
865
+
866
+
brotli@1.3.3:
867
+
resolution: {integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==}
868
+
869
+
bun-types@1.2.19:
870
+
resolution: {integrity: sha512-uAOTaZSPuYsWIXRpj7o56Let0g/wjihKCkeRqUBhlLVM/Bt+Fj9xTo+LhC1OV1XDaGkz4hNC80et5xgy+9KTHQ==}
871
+
peerDependencies:
872
+
'@types/react': ^19
873
+
874
+
bundle-require@5.1.0:
875
+
resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==}
876
+
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
877
+
peerDependencies:
878
+
esbuild: '>=0.18'
879
+
880
+
cac@6.7.14:
881
+
resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
882
+
engines: {node: '>=8'}
883
+
884
+
camelcase@8.0.0:
885
+
resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==}
886
+
engines: {node: '>=16'}
887
+
888
+
ccount@2.0.1:
889
+
resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
890
+
891
+
chai@5.2.1:
892
+
resolution: {integrity: sha512-5nFxhUrX0PqtyogoYOA8IPswy5sZFTOsBFl/9bNsmDLgsxYTzSZQJDPppDnZPTQbzSEm0hqGjWPzRemQCYbD6A==}
893
+
engines: {node: '>=18'}
894
+
895
+
chalk@5.5.0:
896
+
resolution: {integrity: sha512-1tm8DTaJhPBG3bIkVeZt1iZM9GfSX2lzOeDVZH9R9ffRHpmHvxZ/QhgQH/aDTkswQVt+YHdXAdS/In/30OjCbg==}
897
+
engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
898
+
899
+
character-entities-html4@2.1.0:
900
+
resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==}
901
+
902
+
character-entities-legacy@3.0.0:
903
+
resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==}
904
+
905
+
character-entities@2.0.2:
906
+
resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==}
907
+
908
+
chardet@0.7.0:
909
+
resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==}
910
+
911
+
check-error@2.1.1:
912
+
resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==}
913
+
engines: {node: '>= 16'}
914
+
915
+
chokidar@4.0.3:
916
+
resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
917
+
engines: {node: '>= 14.16.0'}
918
+
919
+
ci-info@3.9.0:
920
+
resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
921
+
engines: {node: '>=8'}
922
+
923
+
ci-info@4.3.0:
924
+
resolution: {integrity: sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==}
925
+
engines: {node: '>=8'}
926
+
927
+
cli-boxes@3.0.0:
928
+
resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==}
929
+
engines: {node: '>=10'}
930
+
931
+
clone@2.1.2:
932
+
resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==}
933
+
engines: {node: '>=0.8'}
934
+
935
+
clsx@2.1.1:
936
+
resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
937
+
engines: {node: '>=6'}
938
+
939
+
color-convert@2.0.1:
940
+
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
941
+
engines: {node: '>=7.0.0'}
942
+
943
+
color-name@1.1.4:
944
+
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
945
+
946
+
color-string@1.9.1:
947
+
resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
948
+
949
+
color@4.2.3:
950
+
resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
951
+
engines: {node: '>=12.5.0'}
952
+
953
+
comma-separated-tokens@2.0.3:
954
+
resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
955
+
956
+
commander@4.1.1:
957
+
resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
958
+
engines: {node: '>= 6'}
959
+
960
+
commander@8.3.0:
961
+
resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==}
962
+
engines: {node: '>= 12'}
963
+
964
+
common-ancestor-path@1.0.1:
965
+
resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==}
966
+
967
+
confbox@0.1.8:
968
+
resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==}
969
+
970
+
consola@3.4.2:
971
+
resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==}
972
+
engines: {node: ^14.18.0 || >=16.10.0}
973
+
974
+
cookie-es@1.2.2:
975
+
resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==}
976
+
977
+
cookie@1.0.2:
978
+
resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==}
979
+
engines: {node: '>=18'}
980
+
981
+
cross-fetch@3.2.0:
982
+
resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==}
983
+
984
+
cross-spawn@7.0.6:
985
+
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
986
+
engines: {node: '>= 8'}
987
+
988
+
crossws@0.3.5:
989
+
resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==}
990
+
991
+
css-tree@3.1.0:
992
+
resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==}
993
+
engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
994
+
995
+
cssesc@3.0.0:
996
+
resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
997
+
engines: {node: '>=4'}
998
+
hasBin: true
999
+
1000
+
csstype@3.1.3:
1001
+
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
1002
+
1003
+
debug@4.4.1:
1004
+
resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==}
1005
+
engines: {node: '>=6.0'}
1006
+
peerDependencies:
1007
+
supports-color: '*'
1008
+
peerDependenciesMeta:
1009
+
supports-color:
1010
+
optional: true
1011
+
1012
+
decode-named-character-reference@1.2.0:
1013
+
resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==}
1014
+
1015
+
deep-eql@5.0.2:
1016
+
resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==}
1017
+
engines: {node: '>=6'}
1018
+
1019
+
deepmerge@4.3.1:
1020
+
resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
1021
+
engines: {node: '>=0.10.0'}
1022
+
1023
+
defu@6.1.4:
1024
+
resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==}
1025
+
1026
+
dequal@2.0.3:
1027
+
resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
1028
+
engines: {node: '>=6'}
1029
+
1030
+
destr@2.0.5:
1031
+
resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==}
1032
+
1033
+
detect-indent@6.1.0:
1034
+
resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==}
1035
+
engines: {node: '>=8'}
1036
+
1037
+
detect-libc@2.0.4:
1038
+
resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==}
1039
+
engines: {node: '>=8'}
1040
+
1041
+
deterministic-object-hash@2.0.2:
1042
+
resolution: {integrity: sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==}
1043
+
engines: {node: '>=18'}
1044
+
1045
+
devalue@5.1.1:
1046
+
resolution: {integrity: sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==}
1047
+
1048
+
devlop@1.1.0:
1049
+
resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
1050
+
1051
+
dfa@1.2.0:
1052
+
resolution: {integrity: sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==}
1053
+
1054
+
diff@5.2.0:
1055
+
resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==}
1056
+
engines: {node: '>=0.3.1'}
1057
+
1058
+
dir-glob@3.0.1:
1059
+
resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
1060
+
engines: {node: '>=8'}
1061
+
1062
+
dlv@1.1.3:
1063
+
resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
1064
+
1065
+
dom-serializer@2.0.0:
1066
+
resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==}
1067
+
1068
+
domelementtype@2.3.0:
1069
+
resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
1070
+
1071
+
domhandler@5.0.3:
1072
+
resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==}
1073
+
engines: {node: '>= 4'}
1074
+
1075
+
domutils@3.2.2:
1076
+
resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==}
1077
+
1078
+
dset@3.1.4:
1079
+
resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==}
1080
+
engines: {node: '>=4'}
1081
+
1082
+
eastasianwidth@0.2.0:
1083
+
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
1084
+
1085
+
emoji-regex@10.4.0:
1086
+
resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==}
1087
+
1088
+
emoji-regex@8.0.0:
1089
+
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
1090
+
1091
+
emoji-regex@9.2.2:
1092
+
resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
1093
+
1094
+
enquirer@2.4.1:
1095
+
resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==}
1096
+
engines: {node: '>=8.6'}
1097
+
1098
+
entities@4.5.0:
1099
+
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
1100
+
engines: {node: '>=0.12'}
1101
+
1102
+
entities@6.0.1:
1103
+
resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==}
1104
+
engines: {node: '>=0.12'}
1105
+
1106
+
es-module-lexer@1.7.0:
1107
+
resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==}
1108
+
1109
+
esbuild@0.25.8:
1110
+
resolution: {integrity: sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==}
1111
+
engines: {node: '>=18'}
1112
+
hasBin: true
1113
+
1114
+
escape-string-regexp@4.0.0:
1115
+
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
1116
+
engines: {node: '>=10'}
1117
+
1118
+
escape-string-regexp@5.0.0:
1119
+
resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
1120
+
engines: {node: '>=12'}
1121
+
1122
+
esm-env@1.2.2:
1123
+
resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==}
1124
+
1125
+
esprima@4.0.1:
1126
+
resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
1127
+
engines: {node: '>=4'}
1128
+
hasBin: true
1129
+
1130
+
estree-walker@2.0.2:
1131
+
resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
1132
+
1133
+
estree-walker@3.0.3:
1134
+
resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
1135
+
1136
+
eventemitter3@5.0.1:
1137
+
resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
1138
+
1139
+
expect-type@1.2.2:
1140
+
resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==}
1141
+
engines: {node: '>=12.0.0'}
1142
+
1143
+
extend@3.0.2:
1144
+
resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
1145
+
1146
+
extendable-error@0.1.7:
1147
+
resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==}
1148
+
1149
+
external-editor@3.1.0:
1150
+
resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==}
1151
+
engines: {node: '>=4'}
1152
+
1153
+
fast-deep-equal@3.1.3:
1154
+
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
1155
+
1156
+
fast-glob@3.3.3:
1157
+
resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
1158
+
engines: {node: '>=8.6.0'}
1159
+
1160
+
fastq@1.19.1:
1161
+
resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==}
1162
+
1163
+
fdir@6.4.6:
1164
+
resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==}
1165
+
peerDependencies:
1166
+
picomatch: ^3 || ^4
1167
+
peerDependenciesMeta:
1168
+
picomatch:
1169
+
optional: true
1170
+
1171
+
fill-range@7.1.1:
1172
+
resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
1173
+
engines: {node: '>=8'}
1174
+
1175
+
find-up@4.1.0:
1176
+
resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
1177
+
engines: {node: '>=8'}
1178
+
1179
+
fix-dts-default-cjs-exports@1.0.1:
1180
+
resolution: {integrity: sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==}
1181
+
1182
+
flattie@1.1.1:
1183
+
resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==}
1184
+
engines: {node: '>=8'}
1185
+
1186
+
fontace@0.3.0:
1187
+
resolution: {integrity: sha512-czoqATrcnxgWb/nAkfyIrRp6Q8biYj7nGnL6zfhTcX+JKKpWHFBnb8uNMw/kZr7u++3Y3wYSYoZgHkCcsuBpBg==}
1188
+
1189
+
fontkit@2.0.4:
1190
+
resolution: {integrity: sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g==}
1191
+
1192
+
foreground-child@3.3.1:
1193
+
resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==}
1194
+
engines: {node: '>=14'}
1195
+
1196
+
fs-extra@7.0.1:
1197
+
resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==}
1198
+
engines: {node: '>=6 <7 || >=8'}
1199
+
1200
+
fs-extra@8.1.0:
1201
+
resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==}
1202
+
engines: {node: '>=6 <7 || >=8'}
1203
+
1204
+
fsevents@2.3.3:
1205
+
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
1206
+
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
1207
+
os: [darwin]
1208
+
1209
+
get-east-asian-width@1.3.0:
1210
+
resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==}
1211
+
engines: {node: '>=18'}
1212
+
1213
+
github-slugger@2.0.0:
1214
+
resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==}
1215
+
1216
+
glob-parent@5.1.2:
1217
+
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
1218
+
engines: {node: '>= 6'}
1219
+
1220
+
glob@10.4.5:
1221
+
resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
1222
+
hasBin: true
1223
+
1224
+
globby@11.1.0:
1225
+
resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
1226
+
engines: {node: '>=10'}
1227
+
1228
+
graceful-fs@4.2.11:
1229
+
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
1230
+
1231
+
graphemer@1.4.0:
1232
+
resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
1233
+
1234
+
h3@1.15.4:
1235
+
resolution: {integrity: sha512-z5cFQWDffyOe4vQ9xIqNfCZdV4p//vy6fBnr8Q1AWnVZ0teurKMG66rLj++TKwKPUP3u7iMUvrvKaEUiQw2QWQ==}
1236
+
1237
+
hast-util-from-html@2.0.3:
1238
+
resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==}
1239
+
1240
+
hast-util-from-parse5@8.0.3:
1241
+
resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==}
1242
+
1243
+
hast-util-is-element@3.0.0:
1244
+
resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==}
1245
+
1246
+
hast-util-parse-selector@4.0.0:
1247
+
resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==}
1248
+
1249
+
hast-util-raw@9.1.0:
1250
+
resolution: {integrity: sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==}
1251
+
1252
+
hast-util-to-html@9.0.5:
1253
+
resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==}
1254
+
1255
+
hast-util-to-parse5@8.0.0:
1256
+
resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==}
1257
+
1258
+
hast-util-to-text@4.0.2:
1259
+
resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==}
1260
+
1261
+
hast-util-whitespace@3.0.0:
1262
+
resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
1263
+
1264
+
hastscript@9.0.1:
1265
+
resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==}
1266
+
1267
+
html-escaper@3.0.3:
1268
+
resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==}
1269
+
1270
+
html-void-elements@3.0.0:
1271
+
resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==}
1272
+
1273
+
htmlparser2@8.0.2:
1274
+
resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==}
1275
+
1276
+
http-cache-semantics@4.2.0:
1277
+
resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==}
1278
+
1279
+
human-id@4.1.1:
1280
+
resolution: {integrity: sha512-3gKm/gCSUipeLsRYZbbdA1BD83lBoWUkZ7G9VFrhWPAU76KwYo5KR8V28bpoPm/ygy0x5/GCbpRQdY7VLYCoIg==}
1281
+
hasBin: true
1282
+
1283
+
iconv-lite@0.4.24:
1284
+
resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
1285
+
engines: {node: '>=0.10.0'}
1286
+
1287
+
ignore@5.3.2:
1288
+
resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
1289
+
engines: {node: '>= 4'}
1290
+
1291
+
import-meta-resolve@4.1.0:
1292
+
resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==}
1293
+
1294
+
iron-webcrypto@1.2.1:
1295
+
resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==}
1296
+
1297
+
is-arrayish@0.3.2:
1298
+
resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
1299
+
1300
+
is-docker@3.0.0:
1301
+
resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==}
1302
+
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1303
+
hasBin: true
1304
+
1305
+
is-extglob@2.1.1:
1306
+
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
1307
+
engines: {node: '>=0.10.0'}
1308
+
1309
+
is-fullwidth-code-point@3.0.0:
1310
+
resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
1311
+
engines: {node: '>=8'}
1312
+
1313
+
is-glob@4.0.3:
1314
+
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
1315
+
engines: {node: '>=0.10.0'}
1316
+
1317
+
is-inside-container@1.0.0:
1318
+
resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==}
1319
+
engines: {node: '>=14.16'}
1320
+
hasBin: true
1321
+
1322
+
is-number@7.0.0:
1323
+
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
1324
+
engines: {node: '>=0.12.0'}
1325
+
1326
+
is-plain-obj@4.1.0:
1327
+
resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
1328
+
engines: {node: '>=12'}
1329
+
1330
+
is-plain-object@5.0.0:
1331
+
resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==}
1332
+
engines: {node: '>=0.10.0'}
1333
+
1334
+
is-subdir@1.2.0:
1335
+
resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==}
1336
+
engines: {node: '>=4'}
1337
+
1338
+
is-windows@1.0.2:
1339
+
resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==}
1340
+
engines: {node: '>=0.10.0'}
1341
+
1342
+
is-wsl@3.1.0:
1343
+
resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==}
1344
+
engines: {node: '>=16'}
1345
+
1346
+
isexe@2.0.0:
1347
+
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
1348
+
1349
+
iso-datestring-validator@2.2.2:
1350
+
resolution: {integrity: sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA==}
1351
+
1352
+
jackspeak@3.4.3:
1353
+
resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
1354
+
1355
+
joycon@3.1.1:
1356
+
resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
1357
+
engines: {node: '>=10'}
1358
+
1359
+
js-tokens@9.0.1:
1360
+
resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==}
1361
+
1362
+
js-yaml@3.14.1:
1363
+
resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
1364
+
hasBin: true
1365
+
1366
+
js-yaml@4.1.0:
1367
+
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
1368
+
hasBin: true
1369
+
1370
+
jsonfile@4.0.0:
1371
+
resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
1372
+
1373
+
katex@0.16.22:
1374
+
resolution: {integrity: sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg==}
1375
+
hasBin: true
1376
+
1377
+
kleur@3.0.3:
1378
+
resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
1379
+
engines: {node: '>=6'}
1380
+
1381
+
kleur@4.1.5:
1382
+
resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
1383
+
engines: {node: '>=6'}
1384
+
1385
+
lilconfig@3.1.3:
1386
+
resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==}
1387
+
engines: {node: '>=14'}
1388
+
1389
+
lines-and-columns@1.2.4:
1390
+
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
1391
+
1392
+
load-tsconfig@0.2.5:
1393
+
resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==}
1394
+
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1395
+
1396
+
locate-path@5.0.0:
1397
+
resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
1398
+
engines: {node: '>=8'}
1399
+
1400
+
lodash.sortby@4.7.0:
1401
+
resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==}
1402
+
1403
+
lodash.startcase@4.4.0:
1404
+
resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==}
1405
+
1406
+
longest-streak@3.1.0:
1407
+
resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
1408
+
1409
+
loupe@3.2.0:
1410
+
resolution: {integrity: sha512-2NCfZcT5VGVNX9mSZIxLRkEAegDGBpuQZBy13desuHeVORmBDyAET4TkJr4SjqQy3A8JDofMN6LpkK8Xcm/dlw==}
1411
+
1412
+
lru-cache@10.4.3:
1413
+
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
1414
+
1415
+
magic-string@0.30.17:
1416
+
resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
1417
+
1418
+
magicast@0.3.5:
1419
+
resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==}
1420
+
1421
+
markdown-table@3.0.4:
1422
+
resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==}
1423
+
1424
+
mdast-util-definitions@6.0.0:
1425
+
resolution: {integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==}
1426
+
1427
+
mdast-util-find-and-replace@3.0.2:
1428
+
resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==}
1429
+
1430
+
mdast-util-from-markdown@2.0.2:
1431
+
resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==}
1432
+
1433
+
mdast-util-gfm-autolink-literal@2.0.1:
1434
+
resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==}
1435
+
1436
+
mdast-util-gfm-footnote@2.1.0:
1437
+
resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==}
1438
+
1439
+
mdast-util-gfm-strikethrough@2.0.0:
1440
+
resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==}
1441
+
1442
+
mdast-util-gfm-table@2.0.0:
1443
+
resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==}
1444
+
1445
+
mdast-util-gfm-task-list-item@2.0.0:
1446
+
resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==}
1447
+
1448
+
mdast-util-gfm@3.1.0:
1449
+
resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==}
1450
+
1451
+
mdast-util-phrasing@4.1.0:
1452
+
resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==}
1453
+
1454
+
mdast-util-to-hast@13.2.0:
1455
+
resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==}
1456
+
1457
+
mdast-util-to-markdown@2.1.2:
1458
+
resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==}
1459
+
1460
+
mdast-util-to-string@4.0.0:
1461
+
resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==}
1462
+
1463
+
mdn-data@2.12.2:
1464
+
resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==}
1465
+
1466
+
merge2@1.4.1:
1467
+
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
1468
+
engines: {node: '>= 8'}
1469
+
1470
+
micromark-core-commonmark@2.0.3:
1471
+
resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==}
1472
+
1473
+
micromark-extension-gfm-autolink-literal@2.1.0:
1474
+
resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==}
1475
+
1476
+
micromark-extension-gfm-footnote@2.1.0:
1477
+
resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==}
1478
+
1479
+
micromark-extension-gfm-strikethrough@2.1.0:
1480
+
resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==}
1481
+
1482
+
micromark-extension-gfm-table@2.1.1:
1483
+
resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==}
1484
+
1485
+
micromark-extension-gfm-tagfilter@2.0.0:
1486
+
resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==}
1487
+
1488
+
micromark-extension-gfm-task-list-item@2.1.0:
1489
+
resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==}
1490
+
1491
+
micromark-extension-gfm@3.0.0:
1492
+
resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==}
1493
+
1494
+
micromark-factory-destination@2.0.1:
1495
+
resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==}
1496
+
1497
+
micromark-factory-label@2.0.1:
1498
+
resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==}
1499
+
1500
+
micromark-factory-space@2.0.1:
1501
+
resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==}
1502
+
1503
+
micromark-factory-title@2.0.1:
1504
+
resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==}
1505
+
1506
+
micromark-factory-whitespace@2.0.1:
1507
+
resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==}
1508
+
1509
+
micromark-util-character@2.1.1:
1510
+
resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==}
1511
+
1512
+
micromark-util-chunked@2.0.1:
1513
+
resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==}
1514
+
1515
+
micromark-util-classify-character@2.0.1:
1516
+
resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==}
1517
+
1518
+
micromark-util-combine-extensions@2.0.1:
1519
+
resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==}
1520
+
1521
+
micromark-util-decode-numeric-character-reference@2.0.2:
1522
+
resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==}
1523
+
1524
+
micromark-util-decode-string@2.0.1:
1525
+
resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==}
1526
+
1527
+
micromark-util-encode@2.0.1:
1528
+
resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==}
1529
+
1530
+
micromark-util-html-tag-name@2.0.1:
1531
+
resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==}
1532
+
1533
+
micromark-util-normalize-identifier@2.0.1:
1534
+
resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==}
1535
+
1536
+
micromark-util-resolve-all@2.0.1:
1537
+
resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==}
1538
+
1539
+
micromark-util-sanitize-uri@2.0.1:
1540
+
resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==}
1541
+
1542
+
micromark-util-subtokenize@2.1.0:
1543
+
resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==}
1544
+
1545
+
micromark-util-symbol@2.0.1:
1546
+
resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==}
1547
+
1548
+
micromark-util-types@2.0.2:
1549
+
resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==}
1550
+
1551
+
micromark@4.0.2:
1552
+
resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==}
1553
+
1554
+
micromatch@4.0.8:
1555
+
resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
1556
+
engines: {node: '>=8.6'}
1557
+
1558
+
minimatch@9.0.5:
1559
+
resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
1560
+
engines: {node: '>=16 || 14 >=14.17'}
1561
+
1562
+
minipass@7.1.2:
1563
+
resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
1564
+
engines: {node: '>=16 || 14 >=14.17'}
1565
+
1566
+
mlly@1.7.4:
1567
+
resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==}
1568
+
1569
+
mri@1.2.0:
1570
+
resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
1571
+
engines: {node: '>=4'}
1572
+
1573
+
mrmime@2.0.1:
1574
+
resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==}
1575
+
engines: {node: '>=10'}
1576
+
1577
+
ms@2.1.3:
1578
+
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
1579
+
1580
+
multiformats@9.9.0:
1581
+
resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==}
1582
+
1583
+
mz@2.7.0:
1584
+
resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
1585
+
1586
+
nanoid@3.3.11:
1587
+
resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
1588
+
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
1589
+
hasBin: true
1590
+
1591
+
neotraverse@0.6.18:
1592
+
resolution: {integrity: sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==}
1593
+
engines: {node: '>= 10'}
1594
+
1595
+
nlcst-to-string@4.0.0:
1596
+
resolution: {integrity: sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==}
1597
+
1598
+
node-fetch-native@1.6.7:
1599
+
resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==}
1600
+
1601
+
node-fetch@2.7.0:
1602
+
resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
1603
+
engines: {node: 4.x || >=6.0.0}
1604
+
peerDependencies:
1605
+
encoding: ^0.1.0
1606
+
peerDependenciesMeta:
1607
+
encoding:
1608
+
optional: true
1609
+
1610
+
node-mock-http@1.0.2:
1611
+
resolution: {integrity: sha512-zWaamgDUdo9SSLw47we78+zYw/bDr5gH8pH7oRRs8V3KmBtu8GLgGIbV2p/gRPd3LWpEOpjQj7X1FOU3VFMJ8g==}
1612
+
1613
+
normalize-path@3.0.0:
1614
+
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
1615
+
engines: {node: '>=0.10.0'}
1616
+
1617
+
object-assign@4.1.1:
1618
+
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
1619
+
engines: {node: '>=0.10.0'}
1620
+
1621
+
ofetch@1.4.1:
1622
+
resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==}
1623
+
1624
+
ohash@2.0.11:
1625
+
resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==}
1626
+
1627
+
oniguruma-parser@0.12.1:
1628
+
resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==}
1629
+
1630
+
oniguruma-to-es@4.3.3:
1631
+
resolution: {integrity: sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==}
1632
+
1633
+
os-tmpdir@1.0.2:
1634
+
resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==}
1635
+
engines: {node: '>=0.10.0'}
1636
+
1637
+
outdent@0.5.0:
1638
+
resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==}
1639
+
1640
+
p-filter@2.1.0:
1641
+
resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==}
1642
+
engines: {node: '>=8'}
1643
+
1644
+
p-limit@2.3.0:
1645
+
resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
1646
+
engines: {node: '>=6'}
1647
+
1648
+
p-limit@6.2.0:
1649
+
resolution: {integrity: sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==}
1650
+
engines: {node: '>=18'}
1651
+
1652
+
p-locate@4.1.0:
1653
+
resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
1654
+
engines: {node: '>=8'}
1655
+
1656
+
p-map@2.1.0:
1657
+
resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==}
1658
+
engines: {node: '>=6'}
1659
+
1660
+
p-queue@8.1.0:
1661
+
resolution: {integrity: sha512-mxLDbbGIBEXTJL0zEx8JIylaj3xQ7Z/7eEVjcF9fJX4DBiH9oqe+oahYnlKKxm0Ci9TlWTyhSHgygxMxjIB2jw==}
1662
+
engines: {node: '>=18'}
1663
+
1664
+
p-timeout@6.1.4:
1665
+
resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==}
1666
+
engines: {node: '>=14.16'}
1667
+
1668
+
p-try@2.2.0:
1669
+
resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
1670
+
engines: {node: '>=6'}
1671
+
1672
+
package-json-from-dist@1.0.1:
1673
+
resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
1674
+
1675
+
package-manager-detector@0.2.11:
1676
+
resolution: {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==}
1677
+
1678
+
package-manager-detector@1.3.0:
1679
+
resolution: {integrity: sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==}
1680
+
1681
+
pako@0.2.9:
1682
+
resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==}
1683
+
1684
+
parse-latin@7.0.0:
1685
+
resolution: {integrity: sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==}
1686
+
1687
+
parse-srcset@1.0.2:
1688
+
resolution: {integrity: sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==}
1689
+
1690
+
parse5@7.3.0:
1691
+
resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==}
1692
+
1693
+
path-exists@4.0.0:
1694
+
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
1695
+
engines: {node: '>=8'}
1696
+
1697
+
path-key@3.1.1:
1698
+
resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
1699
+
engines: {node: '>=8'}
1700
+
1701
+
path-scurry@1.11.1:
1702
+
resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
1703
+
engines: {node: '>=16 || 14 >=14.18'}
1704
+
1705
+
path-type@4.0.0:
1706
+
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
1707
+
engines: {node: '>=8'}
1708
+
1709
+
pathe@2.0.3:
1710
+
resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
1711
+
1712
+
pathval@2.0.1:
1713
+
resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==}
1714
+
engines: {node: '>= 14.16'}
1715
+
1716
+
picocolors@1.1.1:
1717
+
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
1718
+
1719
+
picomatch@2.3.1:
1720
+
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
1721
+
engines: {node: '>=8.6'}
1722
+
1723
+
picomatch@4.0.3:
1724
+
resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
1725
+
engines: {node: '>=12'}
1726
+
1727
+
pify@4.0.1:
1728
+
resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
1729
+
engines: {node: '>=6'}
1730
+
1731
+
pirates@4.0.7:
1732
+
resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==}
1733
+
engines: {node: '>= 6'}
1734
+
1735
+
pkg-types@1.3.1:
1736
+
resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==}
1737
+
1738
+
postcss-load-config@6.0.1:
1739
+
resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==}
1740
+
engines: {node: '>= 18'}
1741
+
peerDependencies:
1742
+
jiti: '>=1.21.0'
1743
+
postcss: '>=8.0.9'
1744
+
tsx: ^4.8.1
1745
+
yaml: ^2.4.2
1746
+
peerDependenciesMeta:
1747
+
jiti:
1748
+
optional: true
1749
+
postcss:
1750
+
optional: true
1751
+
tsx:
1752
+
optional: true
1753
+
yaml:
1754
+
optional: true
1755
+
1756
+
postcss@8.5.6:
1757
+
resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
1758
+
engines: {node: ^10 || ^12 || >=14}
1759
+
1760
+
prettier@2.8.8:
1761
+
resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==}
1762
+
engines: {node: '>=10.13.0'}
1763
+
hasBin: true
1764
+
1765
+
prettier@3.6.2:
1766
+
resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==}
1767
+
engines: {node: '>=14'}
1768
+
hasBin: true
1769
+
1770
+
prismjs@1.30.0:
1771
+
resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==}
1772
+
engines: {node: '>=6'}
1773
+
1774
+
prompts@2.4.2:
1775
+
resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==}
1776
+
engines: {node: '>= 6'}
1777
+
1778
+
property-information@6.5.0:
1779
+
resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==}
1780
+
1781
+
property-information@7.1.0:
1782
+
resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==}
1783
+
1784
+
punycode@2.3.1:
1785
+
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
1786
+
engines: {node: '>=6'}
1787
+
1788
+
quansync@0.2.10:
1789
+
resolution: {integrity: sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==}
1790
+
1791
+
queue-microtask@1.2.3:
1792
+
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
1793
+
1794
+
radix3@1.1.2:
1795
+
resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==}
1796
+
1797
+
read-yaml-file@1.1.0:
1798
+
resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==}
1799
+
engines: {node: '>=6'}
1800
+
1801
+
readdirp@4.1.2:
1802
+
resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
1803
+
engines: {node: '>= 14.18.0'}
1804
+
1805
+
regex-recursion@6.0.2:
1806
+
resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==}
1807
+
1808
+
regex-utilities@2.3.0:
1809
+
resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==}
1810
+
1811
+
regex@6.0.1:
1812
+
resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==}
1813
+
1814
+
rehype-parse@9.0.1:
1815
+
resolution: {integrity: sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==}
1816
+
1817
+
rehype-raw@7.0.0:
1818
+
resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==}
1819
+
1820
+
rehype-stringify@10.0.1:
1821
+
resolution: {integrity: sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==}
1822
+
1823
+
rehype@13.0.2:
1824
+
resolution: {integrity: sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A==}
1825
+
1826
+
remark-gfm@4.0.1:
1827
+
resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==}
1828
+
1829
+
remark-parse@11.0.0:
1830
+
resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==}
1831
+
1832
+
remark-rehype@11.1.2:
1833
+
resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==}
1834
+
1835
+
remark-smartypants@3.0.2:
1836
+
resolution: {integrity: sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==}
1837
+
engines: {node: '>=16.0.0'}
1838
+
1839
+
remark-stringify@11.0.0:
1840
+
resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==}
1841
+
1842
+
resolve-from@5.0.0:
1843
+
resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
1844
+
engines: {node: '>=8'}
1845
+
1846
+
restructure@3.0.2:
1847
+
resolution: {integrity: sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==}
1848
+
1849
+
retext-latin@4.0.0:
1850
+
resolution: {integrity: sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==}
1851
+
1852
+
retext-smartypants@6.2.0:
1853
+
resolution: {integrity: sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==}
1854
+
1855
+
retext-stringify@4.0.0:
1856
+
resolution: {integrity: sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==}
1857
+
1858
+
retext@9.0.0:
1859
+
resolution: {integrity: sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==}
1860
+
1861
+
reusify@1.1.0:
1862
+
resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
1863
+
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
1864
+
1865
+
rollup@4.46.2:
1866
+
resolution: {integrity: sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg==}
1867
+
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
1868
+
hasBin: true
1869
+
1870
+
run-parallel@1.2.0:
1871
+
resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
1872
+
1873
+
safer-buffer@2.1.2:
1874
+
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
1875
+
1876
+
sanitize-html@2.17.0:
1877
+
resolution: {integrity: sha512-dLAADUSS8rBwhaevT12yCezvioCA+bmUTPH/u57xKPT8d++voeYE6HeluA/bPbQ15TwDBG2ii+QZIEmYx8VdxA==}
1878
+
1879
+
semver@7.7.2:
1880
+
resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==}
1881
+
engines: {node: '>=10'}
1882
+
hasBin: true
1883
+
1884
+
sharp@0.33.5:
1885
+
resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==}
1886
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
1887
+
1888
+
shebang-command@2.0.0:
1889
+
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
1890
+
engines: {node: '>=8'}
1891
+
1892
+
shebang-regex@3.0.0:
1893
+
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
1894
+
engines: {node: '>=8'}
1895
+
1896
+
shiki@3.9.2:
1897
+
resolution: {integrity: sha512-t6NKl5e/zGTvw/IyftLcumolgOczhuroqwXngDeMqJ3h3EQiTY/7wmfgPlsmloD8oYfqkEDqxiaH37Pjm1zUhQ==}
1898
+
1899
+
siginfo@2.0.0:
1900
+
resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
1901
+
1902
+
signal-exit@4.1.0:
1903
+
resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
1904
+
engines: {node: '>=14'}
1905
+
1906
+
simple-swizzle@0.2.2:
1907
+
resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
1908
+
1909
+
sisteransi@1.0.5:
1910
+
resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
1911
+
1912
+
slash@3.0.0:
1913
+
resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
1914
+
engines: {node: '>=8'}
1915
+
1916
+
smol-toml@1.4.2:
1917
+
resolution: {integrity: sha512-rInDH6lCNiEyn3+hH8KVGFdbjc099j47+OSgbMrfDYX1CmXLfdKd7qi6IfcWj2wFxvSVkuI46M+wPGYfEOEj6g==}
1918
+
engines: {node: '>= 18'}
1919
+
1920
+
source-map-js@1.2.1:
1921
+
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
1922
+
engines: {node: '>=0.10.0'}
1923
+
1924
+
source-map@0.8.0-beta.0:
1925
+
resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==}
1926
+
engines: {node: '>= 8'}
1927
+
deprecated: The work that was done in this beta branch won't be included in future versions
1928
+
1929
+
space-separated-tokens@2.0.2:
1930
+
resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
1931
+
1932
+
spawndamnit@3.0.1:
1933
+
resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==}
1934
+
1935
+
sprintf-js@1.0.3:
1936
+
resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
1937
+
1938
+
stackback@0.0.2:
1939
+
resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
1940
+
1941
+
std-env@3.9.0:
1942
+
resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==}
1943
+
1944
+
string-width@4.2.3:
1945
+
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
1946
+
engines: {node: '>=8'}
1947
+
1948
+
string-width@5.1.2:
1949
+
resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
1950
+
engines: {node: '>=12'}
1951
+
1952
+
string-width@7.2.0:
1953
+
resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==}
1954
+
engines: {node: '>=18'}
1955
+
1956
+
stringify-entities@4.0.4:
1957
+
resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==}
1958
+
1959
+
strip-ansi@6.0.1:
1960
+
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
1961
+
engines: {node: '>=8'}
1962
+
1963
+
strip-ansi@7.1.0:
1964
+
resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
1965
+
engines: {node: '>=12'}
1966
+
1967
+
strip-bom@3.0.0:
1968
+
resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
1969
+
engines: {node: '>=4'}
1970
+
1971
+
strip-literal@3.0.0:
1972
+
resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==}
1973
+
1974
+
sucrase@3.35.0:
1975
+
resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==}
1976
+
engines: {node: '>=16 || 14 >=14.17'}
1977
+
hasBin: true
1978
+
1979
+
term-size@2.2.1:
1980
+
resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==}
1981
+
engines: {node: '>=8'}
1982
+
1983
+
thenify-all@1.6.0:
1984
+
resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
1985
+
engines: {node: '>=0.8'}
1986
+
1987
+
thenify@3.3.1:
1988
+
resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
1989
+
1990
+
tiny-inflate@1.0.3:
1991
+
resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==}
1992
+
1993
+
tinybench@2.9.0:
1994
+
resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
1995
+
1996
+
tinyexec@0.3.2:
1997
+
resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==}
1998
+
1999
+
tinyglobby@0.2.14:
2000
+
resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==}
2001
+
engines: {node: '>=12.0.0'}
2002
+
2003
+
tinypool@1.1.1:
2004
+
resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==}
2005
+
engines: {node: ^18.0.0 || >=20.0.0}
2006
+
2007
+
tinyrainbow@2.0.0:
2008
+
resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==}
2009
+
engines: {node: '>=14.0.0'}
2010
+
2011
+
tinyspy@4.0.3:
2012
+
resolution: {integrity: sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==}
2013
+
engines: {node: '>=14.0.0'}
2014
+
2015
+
tlds@1.259.0:
2016
+
resolution: {integrity: sha512-AldGGlDP0PNgwppe2quAvuBl18UcjuNtOnDuUkqhd6ipPqrYYBt3aTxK1QTsBVknk97lS2JcafWMghjGWFtunw==}
2017
+
hasBin: true
2018
+
2019
+
tmp@0.0.33:
2020
+
resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==}
2021
+
engines: {node: '>=0.6.0'}
2022
+
2023
+
to-regex-range@5.0.1:
2024
+
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
2025
+
engines: {node: '>=8.0'}
2026
+
2027
+
tr46@0.0.3:
2028
+
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
2029
+
2030
+
tr46@1.0.1:
2031
+
resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==}
2032
+
2033
+
tree-kill@1.2.2:
2034
+
resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
2035
+
hasBin: true
2036
+
2037
+
trim-lines@3.0.1:
2038
+
resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
2039
+
2040
+
trough@2.2.0:
2041
+
resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==}
2042
+
2043
+
ts-interface-checker@0.1.13:
2044
+
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
2045
+
2046
+
tsconfck@3.1.6:
2047
+
resolution: {integrity: sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==}
2048
+
engines: {node: ^18 || >=20}
2049
+
hasBin: true
2050
+
peerDependencies:
2051
+
typescript: ^5.0.0
2052
+
peerDependenciesMeta:
2053
+
typescript:
2054
+
optional: true
2055
+
2056
+
tslib@2.8.1:
2057
+
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
2058
+
2059
+
tsup@8.5.0:
2060
+
resolution: {integrity: sha512-VmBp77lWNQq6PfuMqCHD3xWl22vEoWsKajkF8t+yMBawlUS8JzEI+vOVMeuNZIuMML8qXRizFKi9oD5glKQVcQ==}
2061
+
engines: {node: '>=18'}
2062
+
hasBin: true
2063
+
peerDependencies:
2064
+
'@microsoft/api-extractor': ^7.36.0
2065
+
'@swc/core': ^1
2066
+
postcss: ^8.4.12
2067
+
typescript: '>=4.5.0'
2068
+
peerDependenciesMeta:
2069
+
'@microsoft/api-extractor':
2070
+
optional: true
2071
+
'@swc/core':
2072
+
optional: true
2073
+
postcss:
2074
+
optional: true
2075
+
typescript:
2076
+
optional: true
2077
+
2078
+
type-fest@4.41.0:
2079
+
resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==}
2080
+
engines: {node: '>=16'}
2081
+
17
2082
typescript@5.9.2:
18
2083
resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==}
19
2084
engines: {node: '>=14.17'}
20
2085
hasBin: true
21
2086
2087
+
ufo@1.6.1:
2088
+
resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==}
2089
+
2090
+
uint8arrays@3.0.0:
2091
+
resolution: {integrity: sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==}
2092
+
2093
+
ultrahtml@1.6.0:
2094
+
resolution: {integrity: sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==}
2095
+
2096
+
uncrypto@0.1.3:
2097
+
resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==}
2098
+
2099
+
undici-types@7.10.0:
2100
+
resolution: {integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==}
2101
+
2102
+
unicode-properties@1.4.1:
2103
+
resolution: {integrity: sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==}
2104
+
2105
+
unicode-trie@2.0.0:
2106
+
resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==}
2107
+
2108
+
unified@11.0.5:
2109
+
resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==}
2110
+
2111
+
unifont@0.5.2:
2112
+
resolution: {integrity: sha512-LzR4WUqzH9ILFvjLAUU7dK3Lnou/qd5kD+IakBtBK4S15/+x2y9VX+DcWQv6s551R6W+vzwgVS6tFg3XggGBgg==}
2113
+
2114
+
unist-util-find-after@5.0.0:
2115
+
resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==}
2116
+
2117
+
unist-util-is@6.0.0:
2118
+
resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==}
2119
+
2120
+
unist-util-modify-children@4.0.0:
2121
+
resolution: {integrity: sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==}
2122
+
2123
+
unist-util-position@5.0.0:
2124
+
resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==}
2125
+
2126
+
unist-util-remove-position@5.0.0:
2127
+
resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==}
2128
+
2129
+
unist-util-stringify-position@4.0.0:
2130
+
resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==}
2131
+
2132
+
unist-util-visit-children@3.0.0:
2133
+
resolution: {integrity: sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==}
2134
+
2135
+
unist-util-visit-parents@6.0.1:
2136
+
resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==}
2137
+
2138
+
unist-util-visit@5.0.0:
2139
+
resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==}
2140
+
2141
+
universalify@0.1.2:
2142
+
resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
2143
+
engines: {node: '>= 4.0.0'}
2144
+
2145
+
unstorage@1.16.1:
2146
+
resolution: {integrity: sha512-gdpZ3guLDhz+zWIlYP1UwQ259tG5T5vYRzDaHMkQ1bBY1SQPutvZnrRjTFaWUUpseErJIgAZS51h6NOcZVZiqQ==}
2147
+
peerDependencies:
2148
+
'@azure/app-configuration': ^1.8.0
2149
+
'@azure/cosmos': ^4.2.0
2150
+
'@azure/data-tables': ^13.3.0
2151
+
'@azure/identity': ^4.6.0
2152
+
'@azure/keyvault-secrets': ^4.9.0
2153
+
'@azure/storage-blob': ^12.26.0
2154
+
'@capacitor/preferences': ^6.0.3 || ^7.0.0
2155
+
'@deno/kv': '>=0.9.0'
2156
+
'@netlify/blobs': ^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0
2157
+
'@planetscale/database': ^1.19.0
2158
+
'@upstash/redis': ^1.34.3
2159
+
'@vercel/blob': '>=0.27.1'
2160
+
'@vercel/kv': ^1.0.1
2161
+
aws4fetch: ^1.0.20
2162
+
db0: '>=0.2.1'
2163
+
idb-keyval: ^6.2.1
2164
+
ioredis: ^5.4.2
2165
+
uploadthing: ^7.4.4
2166
+
peerDependenciesMeta:
2167
+
'@azure/app-configuration':
2168
+
optional: true
2169
+
'@azure/cosmos':
2170
+
optional: true
2171
+
'@azure/data-tables':
2172
+
optional: true
2173
+
'@azure/identity':
2174
+
optional: true
2175
+
'@azure/keyvault-secrets':
2176
+
optional: true
2177
+
'@azure/storage-blob':
2178
+
optional: true
2179
+
'@capacitor/preferences':
2180
+
optional: true
2181
+
'@deno/kv':
2182
+
optional: true
2183
+
'@netlify/blobs':
2184
+
optional: true
2185
+
'@planetscale/database':
2186
+
optional: true
2187
+
'@upstash/redis':
2188
+
optional: true
2189
+
'@vercel/blob':
2190
+
optional: true
2191
+
'@vercel/kv':
2192
+
optional: true
2193
+
aws4fetch:
2194
+
optional: true
2195
+
db0:
2196
+
optional: true
2197
+
idb-keyval:
2198
+
optional: true
2199
+
ioredis:
2200
+
optional: true
2201
+
uploadthing:
2202
+
optional: true
2203
+
2204
+
vfile-location@5.0.3:
2205
+
resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==}
2206
+
2207
+
vfile-message@4.0.3:
2208
+
resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==}
2209
+
2210
+
vfile@6.0.3:
2211
+
resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
2212
+
2213
+
vite-node@3.2.4:
2214
+
resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==}
2215
+
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
2216
+
hasBin: true
2217
+
2218
+
vite@6.3.5:
2219
+
resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==}
2220
+
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
2221
+
hasBin: true
2222
+
peerDependencies:
2223
+
'@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0
2224
+
jiti: '>=1.21.0'
2225
+
less: '*'
2226
+
lightningcss: ^1.21.0
2227
+
sass: '*'
2228
+
sass-embedded: '*'
2229
+
stylus: '*'
2230
+
sugarss: '*'
2231
+
terser: ^5.16.0
2232
+
tsx: ^4.8.1
2233
+
yaml: ^2.4.2
2234
+
peerDependenciesMeta:
2235
+
'@types/node':
2236
+
optional: true
2237
+
jiti:
2238
+
optional: true
2239
+
less:
2240
+
optional: true
2241
+
lightningcss:
2242
+
optional: true
2243
+
sass:
2244
+
optional: true
2245
+
sass-embedded:
2246
+
optional: true
2247
+
stylus:
2248
+
optional: true
2249
+
sugarss:
2250
+
optional: true
2251
+
terser:
2252
+
optional: true
2253
+
tsx:
2254
+
optional: true
2255
+
yaml:
2256
+
optional: true
2257
+
2258
+
vite@7.1.1:
2259
+
resolution: {integrity: sha512-yJ+Mp7OyV+4S+afWo+QyoL9jFWD11QFH0i5i7JypnfTcA1rmgxCbiA8WwAICDEtZ1Z1hzrVhN8R8rGTqkTY8ZQ==}
2260
+
engines: {node: ^20.19.0 || >=22.12.0}
2261
+
hasBin: true
2262
+
peerDependencies:
2263
+
'@types/node': ^20.19.0 || >=22.12.0
2264
+
jiti: '>=1.21.0'
2265
+
less: ^4.0.0
2266
+
lightningcss: ^1.21.0
2267
+
sass: ^1.70.0
2268
+
sass-embedded: ^1.70.0
2269
+
stylus: '>=0.54.8'
2270
+
sugarss: ^5.0.0
2271
+
terser: ^5.16.0
2272
+
tsx: ^4.8.1
2273
+
yaml: ^2.4.2
2274
+
peerDependenciesMeta:
2275
+
'@types/node':
2276
+
optional: true
2277
+
jiti:
2278
+
optional: true
2279
+
less:
2280
+
optional: true
2281
+
lightningcss:
2282
+
optional: true
2283
+
sass:
2284
+
optional: true
2285
+
sass-embedded:
2286
+
optional: true
2287
+
stylus:
2288
+
optional: true
2289
+
sugarss:
2290
+
optional: true
2291
+
terser:
2292
+
optional: true
2293
+
tsx:
2294
+
optional: true
2295
+
yaml:
2296
+
optional: true
2297
+
2298
+
vitefu@1.1.1:
2299
+
resolution: {integrity: sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==}
2300
+
peerDependencies:
2301
+
vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0
2302
+
peerDependenciesMeta:
2303
+
vite:
2304
+
optional: true
2305
+
2306
+
vitest@3.2.4:
2307
+
resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==}
2308
+
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
2309
+
hasBin: true
2310
+
peerDependencies:
2311
+
'@edge-runtime/vm': '*'
2312
+
'@types/debug': ^4.1.12
2313
+
'@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0
2314
+
'@vitest/browser': 3.2.4
2315
+
'@vitest/ui': 3.2.4
2316
+
happy-dom: '*'
2317
+
jsdom: '*'
2318
+
peerDependenciesMeta:
2319
+
'@edge-runtime/vm':
2320
+
optional: true
2321
+
'@types/debug':
2322
+
optional: true
2323
+
'@types/node':
2324
+
optional: true
2325
+
'@vitest/browser':
2326
+
optional: true
2327
+
'@vitest/ui':
2328
+
optional: true
2329
+
happy-dom:
2330
+
optional: true
2331
+
jsdom:
2332
+
optional: true
2333
+
2334
+
web-namespaces@2.0.1:
2335
+
resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==}
2336
+
2337
+
webidl-conversions@3.0.1:
2338
+
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
2339
+
2340
+
webidl-conversions@4.0.2:
2341
+
resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==}
2342
+
2343
+
whatwg-url@5.0.0:
2344
+
resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
2345
+
2346
+
whatwg-url@7.1.0:
2347
+
resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==}
2348
+
2349
+
which-pm-runs@1.1.0:
2350
+
resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==}
2351
+
engines: {node: '>=4'}
2352
+
2353
+
which@2.0.2:
2354
+
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
2355
+
engines: {node: '>= 8'}
2356
+
hasBin: true
2357
+
2358
+
why-is-node-running@2.3.0:
2359
+
resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==}
2360
+
engines: {node: '>=8'}
2361
+
hasBin: true
2362
+
2363
+
widest-line@5.0.0:
2364
+
resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==}
2365
+
engines: {node: '>=18'}
2366
+
2367
+
wrap-ansi@7.0.0:
2368
+
resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
2369
+
engines: {node: '>=10'}
2370
+
2371
+
wrap-ansi@8.1.0:
2372
+
resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
2373
+
engines: {node: '>=12'}
2374
+
2375
+
wrap-ansi@9.0.0:
2376
+
resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==}
2377
+
engines: {node: '>=18'}
2378
+
2379
+
xxhash-wasm@1.1.0:
2380
+
resolution: {integrity: sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==}
2381
+
2382
+
yargs-parser@21.1.1:
2383
+
resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
2384
+
engines: {node: '>=12'}
2385
+
2386
+
yocto-queue@1.2.1:
2387
+
resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==}
2388
+
engines: {node: '>=12.20'}
2389
+
2390
+
yocto-spinner@0.2.3:
2391
+
resolution: {integrity: sha512-sqBChb33loEnkoXte1bLg45bEBsOP9N1kzQh5JZNKj/0rik4zAPTNSAVPj3uQAdc6slYJ0Ksc403G2XgxsJQFQ==}
2392
+
engines: {node: '>=18.19'}
2393
+
2394
+
yoctocolors@2.1.1:
2395
+
resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==}
2396
+
engines: {node: '>=18'}
2397
+
2398
+
zod-to-json-schema@3.24.6:
2399
+
resolution: {integrity: sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==}
2400
+
peerDependencies:
2401
+
zod: ^3.24.1
2402
+
2403
+
zod-to-ts@1.2.0:
2404
+
resolution: {integrity: sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==}
2405
+
peerDependencies:
2406
+
typescript: ^4.9.4 || ^5.0.2
2407
+
zod: ^3
2408
+
2409
+
zod@3.25.76:
2410
+
resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==}
2411
+
2412
+
zwitch@2.0.4:
2413
+
resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
2414
+
22
2415
snapshots:
23
2416
2417
+
'@astrojs/compiler@2.12.2': {}
2418
+
2419
+
'@astrojs/internal-helpers@0.7.1': {}
2420
+
2421
+
'@astrojs/markdown-remark@6.3.5':
2422
+
dependencies:
2423
+
'@astrojs/internal-helpers': 0.7.1
2424
+
'@astrojs/prism': 3.3.0
2425
+
github-slugger: 2.0.0
2426
+
hast-util-from-html: 2.0.3
2427
+
hast-util-to-text: 4.0.2
2428
+
import-meta-resolve: 4.1.0
2429
+
js-yaml: 4.1.0
2430
+
mdast-util-definitions: 6.0.0
2431
+
rehype-raw: 7.0.0
2432
+
rehype-stringify: 10.0.1
2433
+
remark-gfm: 4.0.1
2434
+
remark-parse: 11.0.0
2435
+
remark-rehype: 11.1.2
2436
+
remark-smartypants: 3.0.2
2437
+
shiki: 3.9.2
2438
+
smol-toml: 1.4.2
2439
+
unified: 11.0.5
2440
+
unist-util-remove-position: 5.0.0
2441
+
unist-util-visit: 5.0.0
2442
+
unist-util-visit-parents: 6.0.1
2443
+
vfile: 6.0.3
2444
+
transitivePeerDependencies:
2445
+
- supports-color
2446
+
2447
+
'@astrojs/prism@3.3.0':
2448
+
dependencies:
2449
+
prismjs: 1.30.0
2450
+
2451
+
'@astrojs/telemetry@3.3.0':
2452
+
dependencies:
2453
+
ci-info: 4.3.0
2454
+
debug: 4.4.1
2455
+
dlv: 1.1.3
2456
+
dset: 3.1.4
2457
+
is-docker: 3.0.0
2458
+
is-wsl: 3.1.0
2459
+
which-pm-runs: 1.1.0
2460
+
transitivePeerDependencies:
2461
+
- supports-color
2462
+
2463
+
'@atcute/atproto@3.1.1':
2464
+
dependencies:
2465
+
'@atcute/lexicons': 1.1.0
2466
+
2467
+
'@atcute/client@4.0.3':
2468
+
dependencies:
2469
+
'@atcute/identity': 1.0.3
2470
+
'@atcute/lexicons': 1.1.0
2471
+
2472
+
'@atcute/identity@1.0.3':
2473
+
dependencies:
2474
+
'@atcute/lexicons': 1.1.0
2475
+
'@badrap/valita': 0.4.6
2476
+
2477
+
'@atcute/lex-cli@2.1.1':
2478
+
dependencies:
2479
+
'@atcute/lexicon-doc': 1.0.3
2480
+
'@badrap/valita': 0.4.6
2481
+
'@externdefs/collider': 0.3.0(@badrap/valita@0.4.6)
2482
+
picocolors: 1.1.1
2483
+
prettier: 3.6.2
2484
+
2485
+
'@atcute/lexicon-doc@1.0.3':
2486
+
dependencies:
2487
+
'@badrap/valita': 0.4.6
2488
+
2489
+
'@atcute/lexicons@1.1.0':
2490
+
dependencies:
2491
+
esm-env: 1.2.2
2492
+
2493
+
'@atproto/api@0.16.2':
2494
+
dependencies:
2495
+
'@atproto/common-web': 0.4.2
2496
+
'@atproto/lexicon': 0.4.12
2497
+
'@atproto/syntax': 0.4.0
2498
+
'@atproto/xrpc': 0.7.1
2499
+
await-lock: 2.2.2
2500
+
multiformats: 9.9.0
2501
+
tlds: 1.259.0
2502
+
zod: 3.25.76
2503
+
2504
+
'@atproto/common-web@0.4.2':
2505
+
dependencies:
2506
+
graphemer: 1.4.0
2507
+
multiformats: 9.9.0
2508
+
uint8arrays: 3.0.0
2509
+
zod: 3.25.76
2510
+
2511
+
'@atproto/lexicon@0.4.12':
2512
+
dependencies:
2513
+
'@atproto/common-web': 0.4.2
2514
+
'@atproto/syntax': 0.4.0
2515
+
iso-datestring-validator: 2.2.2
2516
+
multiformats: 9.9.0
2517
+
zod: 3.25.76
2518
+
2519
+
'@atproto/syntax@0.4.0': {}
2520
+
2521
+
'@atproto/xrpc@0.7.1':
2522
+
dependencies:
2523
+
'@atproto/lexicon': 0.4.12
2524
+
zod: 3.25.76
2525
+
2526
+
'@babel/helper-string-parser@7.27.1': {}
2527
+
2528
+
'@babel/helper-validator-identifier@7.27.1': {}
2529
+
2530
+
'@babel/parser@7.28.0':
2531
+
dependencies:
2532
+
'@babel/types': 7.28.2
2533
+
2534
+
'@babel/runtime@7.28.2': {}
2535
+
2536
+
'@babel/types@7.28.2':
2537
+
dependencies:
2538
+
'@babel/helper-string-parser': 7.27.1
2539
+
'@babel/helper-validator-identifier': 7.27.1
2540
+
2541
+
'@badrap/valita@0.4.6': {}
2542
+
2543
+
'@biomejs/biome@2.1.3':
2544
+
optionalDependencies:
2545
+
'@biomejs/cli-darwin-arm64': 2.1.3
2546
+
'@biomejs/cli-darwin-x64': 2.1.3
2547
+
'@biomejs/cli-linux-arm64': 2.1.3
2548
+
'@biomejs/cli-linux-arm64-musl': 2.1.3
2549
+
'@biomejs/cli-linux-x64': 2.1.3
2550
+
'@biomejs/cli-linux-x64-musl': 2.1.3
2551
+
'@biomejs/cli-win32-arm64': 2.1.3
2552
+
'@biomejs/cli-win32-x64': 2.1.3
2553
+
2554
+
'@biomejs/cli-darwin-arm64@2.1.3':
2555
+
optional: true
2556
+
2557
+
'@biomejs/cli-darwin-x64@2.1.3':
2558
+
optional: true
2559
+
2560
+
'@biomejs/cli-linux-arm64-musl@2.1.3':
2561
+
optional: true
2562
+
2563
+
'@biomejs/cli-linux-arm64@2.1.3':
2564
+
optional: true
2565
+
2566
+
'@biomejs/cli-linux-x64-musl@2.1.3':
2567
+
optional: true
2568
+
2569
+
'@biomejs/cli-linux-x64@2.1.3':
2570
+
optional: true
2571
+
2572
+
'@biomejs/cli-win32-arm64@2.1.3':
2573
+
optional: true
2574
+
2575
+
'@biomejs/cli-win32-x64@2.1.3':
2576
+
optional: true
2577
+
2578
+
'@capsizecss/unpack@2.4.0':
2579
+
dependencies:
2580
+
blob-to-buffer: 1.2.9
2581
+
cross-fetch: 3.2.0
2582
+
fontkit: 2.0.4
2583
+
transitivePeerDependencies:
2584
+
- encoding
2585
+
2586
+
'@changesets/apply-release-plan@7.0.12':
2587
+
dependencies:
2588
+
'@changesets/config': 3.1.1
2589
+
'@changesets/get-version-range-type': 0.4.0
2590
+
'@changesets/git': 3.0.4
2591
+
'@changesets/should-skip-package': 0.1.2
2592
+
'@changesets/types': 6.1.0
2593
+
'@manypkg/get-packages': 1.1.3
2594
+
detect-indent: 6.1.0
2595
+
fs-extra: 7.0.1
2596
+
lodash.startcase: 4.4.0
2597
+
outdent: 0.5.0
2598
+
prettier: 2.8.8
2599
+
resolve-from: 5.0.0
2600
+
semver: 7.7.2
2601
+
2602
+
'@changesets/assemble-release-plan@6.0.9':
2603
+
dependencies:
2604
+
'@changesets/errors': 0.2.0
2605
+
'@changesets/get-dependents-graph': 2.1.3
2606
+
'@changesets/should-skip-package': 0.1.2
2607
+
'@changesets/types': 6.1.0
2608
+
'@manypkg/get-packages': 1.1.3
2609
+
semver: 7.7.2
2610
+
2611
+
'@changesets/changelog-git@0.2.1':
2612
+
dependencies:
2613
+
'@changesets/types': 6.1.0
2614
+
2615
+
'@changesets/cli@2.29.5':
2616
+
dependencies:
2617
+
'@changesets/apply-release-plan': 7.0.12
2618
+
'@changesets/assemble-release-plan': 6.0.9
2619
+
'@changesets/changelog-git': 0.2.1
2620
+
'@changesets/config': 3.1.1
2621
+
'@changesets/errors': 0.2.0
2622
+
'@changesets/get-dependents-graph': 2.1.3
2623
+
'@changesets/get-release-plan': 4.0.13
2624
+
'@changesets/git': 3.0.4
2625
+
'@changesets/logger': 0.1.1
2626
+
'@changesets/pre': 2.0.2
2627
+
'@changesets/read': 0.6.5
2628
+
'@changesets/should-skip-package': 0.1.2
2629
+
'@changesets/types': 6.1.0
2630
+
'@changesets/write': 0.4.0
2631
+
'@manypkg/get-packages': 1.1.3
2632
+
ansi-colors: 4.1.3
2633
+
ci-info: 3.9.0
2634
+
enquirer: 2.4.1
2635
+
external-editor: 3.1.0
2636
+
fs-extra: 7.0.1
2637
+
mri: 1.2.0
2638
+
p-limit: 2.3.0
2639
+
package-manager-detector: 0.2.11
2640
+
picocolors: 1.1.1
2641
+
resolve-from: 5.0.0
2642
+
semver: 7.7.2
2643
+
spawndamnit: 3.0.1
2644
+
term-size: 2.2.1
2645
+
2646
+
'@changesets/config@3.1.1':
2647
+
dependencies:
2648
+
'@changesets/errors': 0.2.0
2649
+
'@changesets/get-dependents-graph': 2.1.3
2650
+
'@changesets/logger': 0.1.1
2651
+
'@changesets/types': 6.1.0
2652
+
'@manypkg/get-packages': 1.1.3
2653
+
fs-extra: 7.0.1
2654
+
micromatch: 4.0.8
2655
+
2656
+
'@changesets/errors@0.2.0':
2657
+
dependencies:
2658
+
extendable-error: 0.1.7
2659
+
2660
+
'@changesets/get-dependents-graph@2.1.3':
2661
+
dependencies:
2662
+
'@changesets/types': 6.1.0
2663
+
'@manypkg/get-packages': 1.1.3
2664
+
picocolors: 1.1.1
2665
+
semver: 7.7.2
2666
+
2667
+
'@changesets/get-release-plan@4.0.13':
2668
+
dependencies:
2669
+
'@changesets/assemble-release-plan': 6.0.9
2670
+
'@changesets/config': 3.1.1
2671
+
'@changesets/pre': 2.0.2
2672
+
'@changesets/read': 0.6.5
2673
+
'@changesets/types': 6.1.0
2674
+
'@manypkg/get-packages': 1.1.3
2675
+
2676
+
'@changesets/get-version-range-type@0.4.0': {}
2677
+
2678
+
'@changesets/git@3.0.4':
2679
+
dependencies:
2680
+
'@changesets/errors': 0.2.0
2681
+
'@manypkg/get-packages': 1.1.3
2682
+
is-subdir: 1.2.0
2683
+
micromatch: 4.0.8
2684
+
spawndamnit: 3.0.1
2685
+
2686
+
'@changesets/logger@0.1.1':
2687
+
dependencies:
2688
+
picocolors: 1.1.1
2689
+
2690
+
'@changesets/parse@0.4.1':
2691
+
dependencies:
2692
+
'@changesets/types': 6.1.0
2693
+
js-yaml: 3.14.1
2694
+
2695
+
'@changesets/pre@2.0.2':
2696
+
dependencies:
2697
+
'@changesets/errors': 0.2.0
2698
+
'@changesets/types': 6.1.0
2699
+
'@manypkg/get-packages': 1.1.3
2700
+
fs-extra: 7.0.1
2701
+
2702
+
'@changesets/read@0.6.5':
2703
+
dependencies:
2704
+
'@changesets/git': 3.0.4
2705
+
'@changesets/logger': 0.1.1
2706
+
'@changesets/parse': 0.4.1
2707
+
'@changesets/types': 6.1.0
2708
+
fs-extra: 7.0.1
2709
+
p-filter: 2.1.0
2710
+
picocolors: 1.1.1
2711
+
2712
+
'@changesets/should-skip-package@0.1.2':
2713
+
dependencies:
2714
+
'@changesets/types': 6.1.0
2715
+
'@manypkg/get-packages': 1.1.3
2716
+
2717
+
'@changesets/types@4.1.0': {}
2718
+
2719
+
'@changesets/types@6.1.0': {}
2720
+
2721
+
'@changesets/write@0.4.0':
2722
+
dependencies:
2723
+
'@changesets/types': 6.1.0
2724
+
fs-extra: 7.0.1
2725
+
human-id: 4.1.1
2726
+
prettier: 2.8.8
2727
+
2728
+
'@emnapi/runtime@1.4.5':
2729
+
dependencies:
2730
+
tslib: 2.8.1
2731
+
optional: true
2732
+
2733
+
'@esbuild/aix-ppc64@0.25.8':
2734
+
optional: true
2735
+
2736
+
'@esbuild/android-arm64@0.25.8':
2737
+
optional: true
2738
+
2739
+
'@esbuild/android-arm@0.25.8':
2740
+
optional: true
2741
+
2742
+
'@esbuild/android-x64@0.25.8':
2743
+
optional: true
2744
+
2745
+
'@esbuild/darwin-arm64@0.25.8':
2746
+
optional: true
2747
+
2748
+
'@esbuild/darwin-x64@0.25.8':
2749
+
optional: true
2750
+
2751
+
'@esbuild/freebsd-arm64@0.25.8':
2752
+
optional: true
2753
+
2754
+
'@esbuild/freebsd-x64@0.25.8':
2755
+
optional: true
2756
+
2757
+
'@esbuild/linux-arm64@0.25.8':
2758
+
optional: true
2759
+
2760
+
'@esbuild/linux-arm@0.25.8':
2761
+
optional: true
2762
+
2763
+
'@esbuild/linux-ia32@0.25.8':
2764
+
optional: true
2765
+
2766
+
'@esbuild/linux-loong64@0.25.8':
2767
+
optional: true
2768
+
2769
+
'@esbuild/linux-mips64el@0.25.8':
2770
+
optional: true
2771
+
2772
+
'@esbuild/linux-ppc64@0.25.8':
2773
+
optional: true
2774
+
2775
+
'@esbuild/linux-riscv64@0.25.8':
2776
+
optional: true
2777
+
2778
+
'@esbuild/linux-s390x@0.25.8':
2779
+
optional: true
2780
+
2781
+
'@esbuild/linux-x64@0.25.8':
2782
+
optional: true
2783
+
2784
+
'@esbuild/netbsd-arm64@0.25.8':
2785
+
optional: true
2786
+
2787
+
'@esbuild/netbsd-x64@0.25.8':
2788
+
optional: true
2789
+
2790
+
'@esbuild/openbsd-arm64@0.25.8':
2791
+
optional: true
2792
+
2793
+
'@esbuild/openbsd-x64@0.25.8':
2794
+
optional: true
2795
+
2796
+
'@esbuild/openharmony-arm64@0.25.8':
2797
+
optional: true
2798
+
2799
+
'@esbuild/sunos-x64@0.25.8':
2800
+
optional: true
2801
+
2802
+
'@esbuild/win32-arm64@0.25.8':
2803
+
optional: true
2804
+
2805
+
'@esbuild/win32-ia32@0.25.8':
2806
+
optional: true
2807
+
2808
+
'@esbuild/win32-x64@0.25.8':
2809
+
optional: true
2810
+
2811
+
'@externdefs/collider@0.3.0(@badrap/valita@0.4.6)':
2812
+
dependencies:
2813
+
'@badrap/valita': 0.4.6
2814
+
2815
+
'@img/sharp-darwin-arm64@0.33.5':
2816
+
optionalDependencies:
2817
+
'@img/sharp-libvips-darwin-arm64': 1.0.4
2818
+
optional: true
2819
+
2820
+
'@img/sharp-darwin-x64@0.33.5':
2821
+
optionalDependencies:
2822
+
'@img/sharp-libvips-darwin-x64': 1.0.4
2823
+
optional: true
2824
+
2825
+
'@img/sharp-libvips-darwin-arm64@1.0.4':
2826
+
optional: true
2827
+
2828
+
'@img/sharp-libvips-darwin-x64@1.0.4':
2829
+
optional: true
2830
+
2831
+
'@img/sharp-libvips-linux-arm64@1.0.4':
2832
+
optional: true
2833
+
2834
+
'@img/sharp-libvips-linux-arm@1.0.5':
2835
+
optional: true
2836
+
2837
+
'@img/sharp-libvips-linux-s390x@1.0.4':
2838
+
optional: true
2839
+
2840
+
'@img/sharp-libvips-linux-x64@1.0.4':
2841
+
optional: true
2842
+
2843
+
'@img/sharp-libvips-linuxmusl-arm64@1.0.4':
2844
+
optional: true
2845
+
2846
+
'@img/sharp-libvips-linuxmusl-x64@1.0.4':
2847
+
optional: true
2848
+
2849
+
'@img/sharp-linux-arm64@0.33.5':
2850
+
optionalDependencies:
2851
+
'@img/sharp-libvips-linux-arm64': 1.0.4
2852
+
optional: true
2853
+
2854
+
'@img/sharp-linux-arm@0.33.5':
2855
+
optionalDependencies:
2856
+
'@img/sharp-libvips-linux-arm': 1.0.5
2857
+
optional: true
2858
+
2859
+
'@img/sharp-linux-s390x@0.33.5':
2860
+
optionalDependencies:
2861
+
'@img/sharp-libvips-linux-s390x': 1.0.4
2862
+
optional: true
2863
+
2864
+
'@img/sharp-linux-x64@0.33.5':
2865
+
optionalDependencies:
2866
+
'@img/sharp-libvips-linux-x64': 1.0.4
2867
+
optional: true
2868
+
2869
+
'@img/sharp-linuxmusl-arm64@0.33.5':
2870
+
optionalDependencies:
2871
+
'@img/sharp-libvips-linuxmusl-arm64': 1.0.4
2872
+
optional: true
2873
+
2874
+
'@img/sharp-linuxmusl-x64@0.33.5':
2875
+
optionalDependencies:
2876
+
'@img/sharp-libvips-linuxmusl-x64': 1.0.4
2877
+
optional: true
2878
+
2879
+
'@img/sharp-wasm32@0.33.5':
2880
+
dependencies:
2881
+
'@emnapi/runtime': 1.4.5
2882
+
optional: true
2883
+
2884
+
'@img/sharp-win32-ia32@0.33.5':
2885
+
optional: true
2886
+
2887
+
'@img/sharp-win32-x64@0.33.5':
2888
+
optional: true
2889
+
2890
+
'@isaacs/cliui@8.0.2':
2891
+
dependencies:
2892
+
string-width: 5.1.2
2893
+
string-width-cjs: string-width@4.2.3
2894
+
strip-ansi: 7.1.0
2895
+
strip-ansi-cjs: strip-ansi@6.0.1
2896
+
wrap-ansi: 8.1.0
2897
+
wrap-ansi-cjs: wrap-ansi@7.0.0
2898
+
2899
+
'@jridgewell/gen-mapping@0.3.12':
2900
+
dependencies:
2901
+
'@jridgewell/sourcemap-codec': 1.5.4
2902
+
'@jridgewell/trace-mapping': 0.3.29
2903
+
2904
+
'@jridgewell/resolve-uri@3.1.2': {}
2905
+
2906
+
'@jridgewell/sourcemap-codec@1.5.4': {}
2907
+
2908
+
'@jridgewell/trace-mapping@0.3.29':
2909
+
dependencies:
2910
+
'@jridgewell/resolve-uri': 3.1.2
2911
+
'@jridgewell/sourcemap-codec': 1.5.4
2912
+
2913
+
'@manypkg/find-root@1.1.0':
2914
+
dependencies:
2915
+
'@babel/runtime': 7.28.2
2916
+
'@types/node': 12.20.55
2917
+
find-up: 4.1.0
2918
+
fs-extra: 8.1.0
2919
+
2920
+
'@manypkg/get-packages@1.1.3':
2921
+
dependencies:
2922
+
'@babel/runtime': 7.28.2
2923
+
'@changesets/types': 4.1.0
2924
+
'@manypkg/find-root': 1.1.0
2925
+
fs-extra: 8.1.0
2926
+
globby: 11.1.0
2927
+
read-yaml-file: 1.1.0
2928
+
2929
+
'@nodelib/fs.scandir@2.1.5':
2930
+
dependencies:
2931
+
'@nodelib/fs.stat': 2.0.5
2932
+
run-parallel: 1.2.0
2933
+
2934
+
'@nodelib/fs.stat@2.0.5': {}
2935
+
2936
+
'@nodelib/fs.walk@1.2.8':
2937
+
dependencies:
2938
+
'@nodelib/fs.scandir': 2.1.5
2939
+
fastq: 1.19.1
2940
+
2941
+
'@oslojs/encoding@1.1.0': {}
2942
+
2943
+
'@pkgjs/parseargs@0.11.0':
2944
+
optional: true
2945
+
2946
+
'@rollup/pluginutils@5.2.0(rollup@4.46.2)':
2947
+
dependencies:
2948
+
'@types/estree': 1.0.8
2949
+
estree-walker: 2.0.2
2950
+
picomatch: 4.0.3
2951
+
optionalDependencies:
2952
+
rollup: 4.46.2
2953
+
2954
+
'@rollup/rollup-android-arm-eabi@4.46.2':
2955
+
optional: true
2956
+
2957
+
'@rollup/rollup-android-arm64@4.46.2':
2958
+
optional: true
2959
+
2960
+
'@rollup/rollup-darwin-arm64@4.46.2':
2961
+
optional: true
2962
+
2963
+
'@rollup/rollup-darwin-x64@4.46.2':
2964
+
optional: true
2965
+
2966
+
'@rollup/rollup-freebsd-arm64@4.46.2':
2967
+
optional: true
2968
+
2969
+
'@rollup/rollup-freebsd-x64@4.46.2':
2970
+
optional: true
2971
+
2972
+
'@rollup/rollup-linux-arm-gnueabihf@4.46.2':
2973
+
optional: true
2974
+
2975
+
'@rollup/rollup-linux-arm-musleabihf@4.46.2':
2976
+
optional: true
2977
+
2978
+
'@rollup/rollup-linux-arm64-gnu@4.46.2':
2979
+
optional: true
2980
+
2981
+
'@rollup/rollup-linux-arm64-musl@4.46.2':
2982
+
optional: true
2983
+
2984
+
'@rollup/rollup-linux-loongarch64-gnu@4.46.2':
2985
+
optional: true
2986
+
2987
+
'@rollup/rollup-linux-ppc64-gnu@4.46.2':
2988
+
optional: true
2989
+
2990
+
'@rollup/rollup-linux-riscv64-gnu@4.46.2':
2991
+
optional: true
2992
+
2993
+
'@rollup/rollup-linux-riscv64-musl@4.46.2':
2994
+
optional: true
2995
+
2996
+
'@rollup/rollup-linux-s390x-gnu@4.46.2':
2997
+
optional: true
2998
+
2999
+
'@rollup/rollup-linux-x64-gnu@4.46.2':
3000
+
optional: true
3001
+
3002
+
'@rollup/rollup-linux-x64-musl@4.46.2':
3003
+
optional: true
3004
+
3005
+
'@rollup/rollup-win32-arm64-msvc@4.46.2':
3006
+
optional: true
3007
+
3008
+
'@rollup/rollup-win32-ia32-msvc@4.46.2':
3009
+
optional: true
3010
+
3011
+
'@rollup/rollup-win32-x64-msvc@4.46.2':
3012
+
optional: true
3013
+
3014
+
'@shikijs/core@3.9.2':
3015
+
dependencies:
3016
+
'@shikijs/types': 3.9.2
3017
+
'@shikijs/vscode-textmate': 10.0.2
3018
+
'@types/hast': 3.0.4
3019
+
hast-util-to-html: 9.0.5
3020
+
3021
+
'@shikijs/engine-javascript@3.9.2':
3022
+
dependencies:
3023
+
'@shikijs/types': 3.9.2
3024
+
'@shikijs/vscode-textmate': 10.0.2
3025
+
oniguruma-to-es: 4.3.3
3026
+
3027
+
'@shikijs/engine-oniguruma@3.9.2':
3028
+
dependencies:
3029
+
'@shikijs/types': 3.9.2
3030
+
'@shikijs/vscode-textmate': 10.0.2
3031
+
3032
+
'@shikijs/langs@3.9.2':
3033
+
dependencies:
3034
+
'@shikijs/types': 3.9.2
3035
+
3036
+
'@shikijs/themes@3.9.2':
3037
+
dependencies:
3038
+
'@shikijs/types': 3.9.2
3039
+
3040
+
'@shikijs/types@3.9.2':
3041
+
dependencies:
3042
+
'@shikijs/vscode-textmate': 10.0.2
3043
+
'@types/hast': 3.0.4
3044
+
3045
+
'@shikijs/vscode-textmate@10.0.2': {}
3046
+
3047
+
'@swc/helpers@0.5.17':
3048
+
dependencies:
3049
+
tslib: 2.8.1
3050
+
3051
+
'@types/bun@1.2.19(@types/react@19.1.9)':
3052
+
dependencies:
3053
+
bun-types: 1.2.19(@types/react@19.1.9)
3054
+
transitivePeerDependencies:
3055
+
- '@types/react'
3056
+
3057
+
'@types/chai@5.2.2':
3058
+
dependencies:
3059
+
'@types/deep-eql': 4.0.2
3060
+
3061
+
'@types/debug@4.1.12':
3062
+
dependencies:
3063
+
'@types/ms': 2.1.0
3064
+
3065
+
'@types/deep-eql@4.0.2': {}
3066
+
3067
+
'@types/estree@1.0.8': {}
3068
+
3069
+
'@types/fontkit@2.0.8':
3070
+
dependencies:
3071
+
'@types/node': 24.2.1
3072
+
3073
+
'@types/hast@3.0.4':
3074
+
dependencies:
3075
+
'@types/unist': 3.0.3
3076
+
3077
+
'@types/mdast@4.0.4':
3078
+
dependencies:
3079
+
'@types/unist': 3.0.3
3080
+
3081
+
'@types/ms@2.1.0': {}
3082
+
3083
+
'@types/nlcst@2.0.3':
3084
+
dependencies:
3085
+
'@types/unist': 3.0.3
3086
+
3087
+
'@types/node@12.20.55': {}
3088
+
3089
+
'@types/node@24.2.1':
3090
+
dependencies:
3091
+
undici-types: 7.10.0
3092
+
3093
+
'@types/react@19.1.9':
3094
+
dependencies:
3095
+
csstype: 3.1.3
3096
+
3097
+
'@types/sanitize-html@2.16.0':
3098
+
dependencies:
3099
+
htmlparser2: 8.0.2
3100
+
3101
+
'@types/unist@3.0.3': {}
3102
+
3103
+
'@ungap/structured-clone@1.3.0': {}
3104
+
3105
+
'@vitest/expect@3.2.4':
3106
+
dependencies:
3107
+
'@types/chai': 5.2.2
3108
+
'@vitest/spy': 3.2.4
3109
+
'@vitest/utils': 3.2.4
3110
+
chai: 5.2.1
3111
+
tinyrainbow: 2.0.0
3112
+
3113
+
'@vitest/mocker@3.2.4(vite@7.1.1(@types/node@24.2.1))':
3114
+
dependencies:
3115
+
'@vitest/spy': 3.2.4
3116
+
estree-walker: 3.0.3
3117
+
magic-string: 0.30.17
3118
+
optionalDependencies:
3119
+
vite: 7.1.1(@types/node@24.2.1)
3120
+
3121
+
'@vitest/pretty-format@3.2.4':
3122
+
dependencies:
3123
+
tinyrainbow: 2.0.0
3124
+
3125
+
'@vitest/runner@3.2.4':
3126
+
dependencies:
3127
+
'@vitest/utils': 3.2.4
3128
+
pathe: 2.0.3
3129
+
strip-literal: 3.0.0
3130
+
3131
+
'@vitest/snapshot@3.2.4':
3132
+
dependencies:
3133
+
'@vitest/pretty-format': 3.2.4
3134
+
magic-string: 0.30.17
3135
+
pathe: 2.0.3
3136
+
3137
+
'@vitest/spy@3.2.4':
3138
+
dependencies:
3139
+
tinyspy: 4.0.3
3140
+
3141
+
'@vitest/utils@3.2.4':
3142
+
dependencies:
3143
+
'@vitest/pretty-format': 3.2.4
3144
+
loupe: 3.2.0
3145
+
tinyrainbow: 2.0.0
3146
+
3147
+
acorn@8.15.0: {}
3148
+
3149
+
ansi-align@3.0.1:
3150
+
dependencies:
3151
+
string-width: 4.2.3
3152
+
3153
+
ansi-colors@4.1.3: {}
3154
+
3155
+
ansi-regex@5.0.1: {}
3156
+
3157
+
ansi-regex@6.1.0: {}
3158
+
3159
+
ansi-styles@4.3.0:
3160
+
dependencies:
3161
+
color-convert: 2.0.1
3162
+
3163
+
ansi-styles@6.2.1: {}
3164
+
3165
+
any-promise@1.3.0: {}
3166
+
3167
+
anymatch@3.1.3:
3168
+
dependencies:
3169
+
normalize-path: 3.0.0
3170
+
picomatch: 2.3.1
3171
+
3172
+
argparse@1.0.10:
3173
+
dependencies:
3174
+
sprintf-js: 1.0.3
3175
+
3176
+
argparse@2.0.1: {}
3177
+
3178
+
aria-query@5.3.2: {}
3179
+
3180
+
array-iterate@2.0.1: {}
3181
+
3182
+
array-union@2.1.0: {}
3183
+
3184
+
assertion-error@2.0.1: {}
3185
+
3186
+
astro@5.12.9(@types/node@24.2.1)(rollup@4.46.2)(typescript@5.9.2):
3187
+
dependencies:
3188
+
'@astrojs/compiler': 2.12.2
3189
+
'@astrojs/internal-helpers': 0.7.1
3190
+
'@astrojs/markdown-remark': 6.3.5
3191
+
'@astrojs/telemetry': 3.3.0
3192
+
'@capsizecss/unpack': 2.4.0
3193
+
'@oslojs/encoding': 1.1.0
3194
+
'@rollup/pluginutils': 5.2.0(rollup@4.46.2)
3195
+
acorn: 8.15.0
3196
+
aria-query: 5.3.2
3197
+
axobject-query: 4.1.0
3198
+
boxen: 8.0.1
3199
+
ci-info: 4.3.0
3200
+
clsx: 2.1.1
3201
+
common-ancestor-path: 1.0.1
3202
+
cookie: 1.0.2
3203
+
cssesc: 3.0.0
3204
+
debug: 4.4.1
3205
+
deterministic-object-hash: 2.0.2
3206
+
devalue: 5.1.1
3207
+
diff: 5.2.0
3208
+
dlv: 1.1.3
3209
+
dset: 3.1.4
3210
+
es-module-lexer: 1.7.0
3211
+
esbuild: 0.25.8
3212
+
estree-walker: 3.0.3
3213
+
flattie: 1.1.1
3214
+
fontace: 0.3.0
3215
+
github-slugger: 2.0.0
3216
+
html-escaper: 3.0.3
3217
+
http-cache-semantics: 4.2.0
3218
+
import-meta-resolve: 4.1.0
3219
+
js-yaml: 4.1.0
3220
+
kleur: 4.1.5
3221
+
magic-string: 0.30.17
3222
+
magicast: 0.3.5
3223
+
mrmime: 2.0.1
3224
+
neotraverse: 0.6.18
3225
+
p-limit: 6.2.0
3226
+
p-queue: 8.1.0
3227
+
package-manager-detector: 1.3.0
3228
+
picomatch: 4.0.3
3229
+
prompts: 2.4.2
3230
+
rehype: 13.0.2
3231
+
semver: 7.7.2
3232
+
shiki: 3.9.2
3233
+
smol-toml: 1.4.2
3234
+
tinyexec: 0.3.2
3235
+
tinyglobby: 0.2.14
3236
+
tsconfck: 3.1.6(typescript@5.9.2)
3237
+
ultrahtml: 1.6.0
3238
+
unifont: 0.5.2
3239
+
unist-util-visit: 5.0.0
3240
+
unstorage: 1.16.1
3241
+
vfile: 6.0.3
3242
+
vite: 6.3.5(@types/node@24.2.1)
3243
+
vitefu: 1.1.1(vite@6.3.5(@types/node@24.2.1))
3244
+
xxhash-wasm: 1.1.0
3245
+
yargs-parser: 21.1.1
3246
+
yocto-spinner: 0.2.3
3247
+
zod: 3.25.76
3248
+
zod-to-json-schema: 3.24.6(zod@3.25.76)
3249
+
zod-to-ts: 1.2.0(typescript@5.9.2)(zod@3.25.76)
3250
+
optionalDependencies:
3251
+
sharp: 0.33.5
3252
+
transitivePeerDependencies:
3253
+
- '@azure/app-configuration'
3254
+
- '@azure/cosmos'
3255
+
- '@azure/data-tables'
3256
+
- '@azure/identity'
3257
+
- '@azure/keyvault-secrets'
3258
+
- '@azure/storage-blob'
3259
+
- '@capacitor/preferences'
3260
+
- '@deno/kv'
3261
+
- '@netlify/blobs'
3262
+
- '@planetscale/database'
3263
+
- '@types/node'
3264
+
- '@upstash/redis'
3265
+
- '@vercel/blob'
3266
+
- '@vercel/kv'
3267
+
- aws4fetch
3268
+
- db0
3269
+
- encoding
3270
+
- idb-keyval
3271
+
- ioredis
3272
+
- jiti
3273
+
- less
3274
+
- lightningcss
3275
+
- rollup
3276
+
- sass
3277
+
- sass-embedded
3278
+
- stylus
3279
+
- sugarss
3280
+
- supports-color
3281
+
- terser
3282
+
- tsx
3283
+
- typescript
3284
+
- uploadthing
3285
+
- yaml
3286
+
3287
+
await-lock@2.2.2: {}
3288
+
3289
+
axobject-query@4.1.0: {}
3290
+
3291
+
bail@2.0.2: {}
3292
+
3293
+
balanced-match@1.0.2: {}
3294
+
3295
+
base-64@1.0.0: {}
3296
+
3297
+
base64-js@1.5.1: {}
3298
+
3299
+
better-path-resolve@1.0.0:
3300
+
dependencies:
3301
+
is-windows: 1.0.2
3302
+
3303
+
blob-to-buffer@1.2.9: {}
3304
+
3305
+
boxen@8.0.1:
3306
+
dependencies:
3307
+
ansi-align: 3.0.1
3308
+
camelcase: 8.0.0
3309
+
chalk: 5.5.0
3310
+
cli-boxes: 3.0.0
3311
+
string-width: 7.2.0
3312
+
type-fest: 4.41.0
3313
+
widest-line: 5.0.0
3314
+
wrap-ansi: 9.0.0
3315
+
3316
+
brace-expansion@2.0.2:
3317
+
dependencies:
3318
+
balanced-match: 1.0.2
3319
+
3320
+
braces@3.0.3:
3321
+
dependencies:
3322
+
fill-range: 7.1.1
3323
+
3324
+
brotli@1.3.3:
3325
+
dependencies:
3326
+
base64-js: 1.5.1
3327
+
3328
+
bun-types@1.2.19(@types/react@19.1.9):
3329
+
dependencies:
3330
+
'@types/node': 24.2.1
3331
+
'@types/react': 19.1.9
3332
+
3333
+
bundle-require@5.1.0(esbuild@0.25.8):
3334
+
dependencies:
3335
+
esbuild: 0.25.8
3336
+
load-tsconfig: 0.2.5
3337
+
3338
+
cac@6.7.14: {}
3339
+
3340
+
camelcase@8.0.0: {}
3341
+
3342
+
ccount@2.0.1: {}
3343
+
3344
+
chai@5.2.1:
3345
+
dependencies:
3346
+
assertion-error: 2.0.1
3347
+
check-error: 2.1.1
3348
+
deep-eql: 5.0.2
3349
+
loupe: 3.2.0
3350
+
pathval: 2.0.1
3351
+
3352
+
chalk@5.5.0: {}
3353
+
3354
+
character-entities-html4@2.1.0: {}
3355
+
3356
+
character-entities-legacy@3.0.0: {}
3357
+
3358
+
character-entities@2.0.2: {}
3359
+
3360
+
chardet@0.7.0: {}
3361
+
3362
+
check-error@2.1.1: {}
3363
+
3364
+
chokidar@4.0.3:
3365
+
dependencies:
3366
+
readdirp: 4.1.2
3367
+
3368
+
ci-info@3.9.0: {}
3369
+
3370
+
ci-info@4.3.0: {}
3371
+
3372
+
cli-boxes@3.0.0: {}
3373
+
3374
+
clone@2.1.2: {}
3375
+
3376
+
clsx@2.1.1: {}
3377
+
3378
+
color-convert@2.0.1:
3379
+
dependencies:
3380
+
color-name: 1.1.4
3381
+
3382
+
color-name@1.1.4: {}
3383
+
3384
+
color-string@1.9.1:
3385
+
dependencies:
3386
+
color-name: 1.1.4
3387
+
simple-swizzle: 0.2.2
3388
+
optional: true
3389
+
3390
+
color@4.2.3:
3391
+
dependencies:
3392
+
color-convert: 2.0.1
3393
+
color-string: 1.9.1
3394
+
optional: true
3395
+
3396
+
comma-separated-tokens@2.0.3: {}
3397
+
3398
+
commander@4.1.1: {}
3399
+
3400
+
commander@8.3.0: {}
3401
+
3402
+
common-ancestor-path@1.0.1: {}
3403
+
3404
+
confbox@0.1.8: {}
3405
+
3406
+
consola@3.4.2: {}
3407
+
3408
+
cookie-es@1.2.2: {}
3409
+
3410
+
cookie@1.0.2: {}
3411
+
3412
+
cross-fetch@3.2.0:
3413
+
dependencies:
3414
+
node-fetch: 2.7.0
3415
+
transitivePeerDependencies:
3416
+
- encoding
3417
+
3418
+
cross-spawn@7.0.6:
3419
+
dependencies:
3420
+
path-key: 3.1.1
3421
+
shebang-command: 2.0.0
3422
+
which: 2.0.2
3423
+
3424
+
crossws@0.3.5:
3425
+
dependencies:
3426
+
uncrypto: 0.1.3
3427
+
3428
+
css-tree@3.1.0:
3429
+
dependencies:
3430
+
mdn-data: 2.12.2
3431
+
source-map-js: 1.2.1
3432
+
3433
+
cssesc@3.0.0: {}
3434
+
3435
+
csstype@3.1.3: {}
3436
+
3437
+
debug@4.4.1:
3438
+
dependencies:
3439
+
ms: 2.1.3
3440
+
3441
+
decode-named-character-reference@1.2.0:
3442
+
dependencies:
3443
+
character-entities: 2.0.2
3444
+
3445
+
deep-eql@5.0.2: {}
3446
+
3447
+
deepmerge@4.3.1: {}
3448
+
3449
+
defu@6.1.4: {}
3450
+
3451
+
dequal@2.0.3: {}
3452
+
3453
+
destr@2.0.5: {}
3454
+
3455
+
detect-indent@6.1.0: {}
3456
+
3457
+
detect-libc@2.0.4:
3458
+
optional: true
3459
+
3460
+
deterministic-object-hash@2.0.2:
3461
+
dependencies:
3462
+
base-64: 1.0.0
3463
+
3464
+
devalue@5.1.1: {}
3465
+
3466
+
devlop@1.1.0:
3467
+
dependencies:
3468
+
dequal: 2.0.3
3469
+
3470
+
dfa@1.2.0: {}
3471
+
3472
+
diff@5.2.0: {}
3473
+
3474
+
dir-glob@3.0.1:
3475
+
dependencies:
3476
+
path-type: 4.0.0
3477
+
3478
+
dlv@1.1.3: {}
3479
+
3480
+
dom-serializer@2.0.0:
3481
+
dependencies:
3482
+
domelementtype: 2.3.0
3483
+
domhandler: 5.0.3
3484
+
entities: 4.5.0
3485
+
3486
+
domelementtype@2.3.0: {}
3487
+
3488
+
domhandler@5.0.3:
3489
+
dependencies:
3490
+
domelementtype: 2.3.0
3491
+
3492
+
domutils@3.2.2:
3493
+
dependencies:
3494
+
dom-serializer: 2.0.0
3495
+
domelementtype: 2.3.0
3496
+
domhandler: 5.0.3
3497
+
3498
+
dset@3.1.4: {}
3499
+
3500
+
eastasianwidth@0.2.0: {}
3501
+
3502
+
emoji-regex@10.4.0: {}
3503
+
3504
+
emoji-regex@8.0.0: {}
3505
+
3506
+
emoji-regex@9.2.2: {}
3507
+
3508
+
enquirer@2.4.1:
3509
+
dependencies:
3510
+
ansi-colors: 4.1.3
3511
+
strip-ansi: 6.0.1
3512
+
3513
+
entities@4.5.0: {}
3514
+
3515
+
entities@6.0.1: {}
3516
+
3517
+
es-module-lexer@1.7.0: {}
3518
+
3519
+
esbuild@0.25.8:
3520
+
optionalDependencies:
3521
+
'@esbuild/aix-ppc64': 0.25.8
3522
+
'@esbuild/android-arm': 0.25.8
3523
+
'@esbuild/android-arm64': 0.25.8
3524
+
'@esbuild/android-x64': 0.25.8
3525
+
'@esbuild/darwin-arm64': 0.25.8
3526
+
'@esbuild/darwin-x64': 0.25.8
3527
+
'@esbuild/freebsd-arm64': 0.25.8
3528
+
'@esbuild/freebsd-x64': 0.25.8
3529
+
'@esbuild/linux-arm': 0.25.8
3530
+
'@esbuild/linux-arm64': 0.25.8
3531
+
'@esbuild/linux-ia32': 0.25.8
3532
+
'@esbuild/linux-loong64': 0.25.8
3533
+
'@esbuild/linux-mips64el': 0.25.8
3534
+
'@esbuild/linux-ppc64': 0.25.8
3535
+
'@esbuild/linux-riscv64': 0.25.8
3536
+
'@esbuild/linux-s390x': 0.25.8
3537
+
'@esbuild/linux-x64': 0.25.8
3538
+
'@esbuild/netbsd-arm64': 0.25.8
3539
+
'@esbuild/netbsd-x64': 0.25.8
3540
+
'@esbuild/openbsd-arm64': 0.25.8
3541
+
'@esbuild/openbsd-x64': 0.25.8
3542
+
'@esbuild/openharmony-arm64': 0.25.8
3543
+
'@esbuild/sunos-x64': 0.25.8
3544
+
'@esbuild/win32-arm64': 0.25.8
3545
+
'@esbuild/win32-ia32': 0.25.8
3546
+
'@esbuild/win32-x64': 0.25.8
3547
+
3548
+
escape-string-regexp@4.0.0: {}
3549
+
3550
+
escape-string-regexp@5.0.0: {}
3551
+
3552
+
esm-env@1.2.2: {}
3553
+
3554
+
esprima@4.0.1: {}
3555
+
3556
+
estree-walker@2.0.2: {}
3557
+
3558
+
estree-walker@3.0.3:
3559
+
dependencies:
3560
+
'@types/estree': 1.0.8
3561
+
3562
+
eventemitter3@5.0.1: {}
3563
+
3564
+
expect-type@1.2.2: {}
3565
+
3566
+
extend@3.0.2: {}
3567
+
3568
+
extendable-error@0.1.7: {}
3569
+
3570
+
external-editor@3.1.0:
3571
+
dependencies:
3572
+
chardet: 0.7.0
3573
+
iconv-lite: 0.4.24
3574
+
tmp: 0.0.33
3575
+
3576
+
fast-deep-equal@3.1.3: {}
3577
+
3578
+
fast-glob@3.3.3:
3579
+
dependencies:
3580
+
'@nodelib/fs.stat': 2.0.5
3581
+
'@nodelib/fs.walk': 1.2.8
3582
+
glob-parent: 5.1.2
3583
+
merge2: 1.4.1
3584
+
micromatch: 4.0.8
3585
+
3586
+
fastq@1.19.1:
3587
+
dependencies:
3588
+
reusify: 1.1.0
3589
+
3590
+
fdir@6.4.6(picomatch@4.0.3):
3591
+
optionalDependencies:
3592
+
picomatch: 4.0.3
3593
+
3594
+
fill-range@7.1.1:
3595
+
dependencies:
3596
+
to-regex-range: 5.0.1
3597
+
3598
+
find-up@4.1.0:
3599
+
dependencies:
3600
+
locate-path: 5.0.0
3601
+
path-exists: 4.0.0
3602
+
3603
+
fix-dts-default-cjs-exports@1.0.1:
3604
+
dependencies:
3605
+
magic-string: 0.30.17
3606
+
mlly: 1.7.4
3607
+
rollup: 4.46.2
3608
+
3609
+
flattie@1.1.1: {}
3610
+
3611
+
fontace@0.3.0:
3612
+
dependencies:
3613
+
'@types/fontkit': 2.0.8
3614
+
fontkit: 2.0.4
3615
+
3616
+
fontkit@2.0.4:
3617
+
dependencies:
3618
+
'@swc/helpers': 0.5.17
3619
+
brotli: 1.3.3
3620
+
clone: 2.1.2
3621
+
dfa: 1.2.0
3622
+
fast-deep-equal: 3.1.3
3623
+
restructure: 3.0.2
3624
+
tiny-inflate: 1.0.3
3625
+
unicode-properties: 1.4.1
3626
+
unicode-trie: 2.0.0
3627
+
3628
+
foreground-child@3.3.1:
3629
+
dependencies:
3630
+
cross-spawn: 7.0.6
3631
+
signal-exit: 4.1.0
3632
+
3633
+
fs-extra@7.0.1:
3634
+
dependencies:
3635
+
graceful-fs: 4.2.11
3636
+
jsonfile: 4.0.0
3637
+
universalify: 0.1.2
3638
+
3639
+
fs-extra@8.1.0:
3640
+
dependencies:
3641
+
graceful-fs: 4.2.11
3642
+
jsonfile: 4.0.0
3643
+
universalify: 0.1.2
3644
+
3645
+
fsevents@2.3.3:
3646
+
optional: true
3647
+
3648
+
get-east-asian-width@1.3.0: {}
3649
+
3650
+
github-slugger@2.0.0: {}
3651
+
3652
+
glob-parent@5.1.2:
3653
+
dependencies:
3654
+
is-glob: 4.0.3
3655
+
3656
+
glob@10.4.5:
3657
+
dependencies:
3658
+
foreground-child: 3.3.1
3659
+
jackspeak: 3.4.3
3660
+
minimatch: 9.0.5
3661
+
minipass: 7.1.2
3662
+
package-json-from-dist: 1.0.1
3663
+
path-scurry: 1.11.1
3664
+
3665
+
globby@11.1.0:
3666
+
dependencies:
3667
+
array-union: 2.1.0
3668
+
dir-glob: 3.0.1
3669
+
fast-glob: 3.3.3
3670
+
ignore: 5.3.2
3671
+
merge2: 1.4.1
3672
+
slash: 3.0.0
3673
+
3674
+
graceful-fs@4.2.11: {}
3675
+
3676
+
graphemer@1.4.0: {}
3677
+
3678
+
h3@1.15.4:
3679
+
dependencies:
3680
+
cookie-es: 1.2.2
3681
+
crossws: 0.3.5
3682
+
defu: 6.1.4
3683
+
destr: 2.0.5
3684
+
iron-webcrypto: 1.2.1
3685
+
node-mock-http: 1.0.2
3686
+
radix3: 1.1.2
3687
+
ufo: 1.6.1
3688
+
uncrypto: 0.1.3
3689
+
3690
+
hast-util-from-html@2.0.3:
3691
+
dependencies:
3692
+
'@types/hast': 3.0.4
3693
+
devlop: 1.1.0
3694
+
hast-util-from-parse5: 8.0.3
3695
+
parse5: 7.3.0
3696
+
vfile: 6.0.3
3697
+
vfile-message: 4.0.3
3698
+
3699
+
hast-util-from-parse5@8.0.3:
3700
+
dependencies:
3701
+
'@types/hast': 3.0.4
3702
+
'@types/unist': 3.0.3
3703
+
devlop: 1.1.0
3704
+
hastscript: 9.0.1
3705
+
property-information: 7.1.0
3706
+
vfile: 6.0.3
3707
+
vfile-location: 5.0.3
3708
+
web-namespaces: 2.0.1
3709
+
3710
+
hast-util-is-element@3.0.0:
3711
+
dependencies:
3712
+
'@types/hast': 3.0.4
3713
+
3714
+
hast-util-parse-selector@4.0.0:
3715
+
dependencies:
3716
+
'@types/hast': 3.0.4
3717
+
3718
+
hast-util-raw@9.1.0:
3719
+
dependencies:
3720
+
'@types/hast': 3.0.4
3721
+
'@types/unist': 3.0.3
3722
+
'@ungap/structured-clone': 1.3.0
3723
+
hast-util-from-parse5: 8.0.3
3724
+
hast-util-to-parse5: 8.0.0
3725
+
html-void-elements: 3.0.0
3726
+
mdast-util-to-hast: 13.2.0
3727
+
parse5: 7.3.0
3728
+
unist-util-position: 5.0.0
3729
+
unist-util-visit: 5.0.0
3730
+
vfile: 6.0.3
3731
+
web-namespaces: 2.0.1
3732
+
zwitch: 2.0.4
3733
+
3734
+
hast-util-to-html@9.0.5:
3735
+
dependencies:
3736
+
'@types/hast': 3.0.4
3737
+
'@types/unist': 3.0.3
3738
+
ccount: 2.0.1
3739
+
comma-separated-tokens: 2.0.3
3740
+
hast-util-whitespace: 3.0.0
3741
+
html-void-elements: 3.0.0
3742
+
mdast-util-to-hast: 13.2.0
3743
+
property-information: 7.1.0
3744
+
space-separated-tokens: 2.0.2
3745
+
stringify-entities: 4.0.4
3746
+
zwitch: 2.0.4
3747
+
3748
+
hast-util-to-parse5@8.0.0:
3749
+
dependencies:
3750
+
'@types/hast': 3.0.4
3751
+
comma-separated-tokens: 2.0.3
3752
+
devlop: 1.1.0
3753
+
property-information: 6.5.0
3754
+
space-separated-tokens: 2.0.2
3755
+
web-namespaces: 2.0.1
3756
+
zwitch: 2.0.4
3757
+
3758
+
hast-util-to-text@4.0.2:
3759
+
dependencies:
3760
+
'@types/hast': 3.0.4
3761
+
'@types/unist': 3.0.3
3762
+
hast-util-is-element: 3.0.0
3763
+
unist-util-find-after: 5.0.0
3764
+
3765
+
hast-util-whitespace@3.0.0:
3766
+
dependencies:
3767
+
'@types/hast': 3.0.4
3768
+
3769
+
hastscript@9.0.1:
3770
+
dependencies:
3771
+
'@types/hast': 3.0.4
3772
+
comma-separated-tokens: 2.0.3
3773
+
hast-util-parse-selector: 4.0.0
3774
+
property-information: 7.1.0
3775
+
space-separated-tokens: 2.0.2
3776
+
3777
+
html-escaper@3.0.3: {}
3778
+
3779
+
html-void-elements@3.0.0: {}
3780
+
3781
+
htmlparser2@8.0.2:
3782
+
dependencies:
3783
+
domelementtype: 2.3.0
3784
+
domhandler: 5.0.3
3785
+
domutils: 3.2.2
3786
+
entities: 4.5.0
3787
+
3788
+
http-cache-semantics@4.2.0: {}
3789
+
3790
+
human-id@4.1.1: {}
3791
+
3792
+
iconv-lite@0.4.24:
3793
+
dependencies:
3794
+
safer-buffer: 2.1.2
3795
+
3796
+
ignore@5.3.2: {}
3797
+
3798
+
import-meta-resolve@4.1.0: {}
3799
+
3800
+
iron-webcrypto@1.2.1: {}
3801
+
3802
+
is-arrayish@0.3.2:
3803
+
optional: true
3804
+
3805
+
is-docker@3.0.0: {}
3806
+
3807
+
is-extglob@2.1.1: {}
3808
+
3809
+
is-fullwidth-code-point@3.0.0: {}
3810
+
3811
+
is-glob@4.0.3:
3812
+
dependencies:
3813
+
is-extglob: 2.1.1
3814
+
3815
+
is-inside-container@1.0.0:
3816
+
dependencies:
3817
+
is-docker: 3.0.0
3818
+
3819
+
is-number@7.0.0: {}
3820
+
3821
+
is-plain-obj@4.1.0: {}
3822
+
3823
+
is-plain-object@5.0.0: {}
3824
+
3825
+
is-subdir@1.2.0:
3826
+
dependencies:
3827
+
better-path-resolve: 1.0.0
3828
+
3829
+
is-windows@1.0.2: {}
3830
+
3831
+
is-wsl@3.1.0:
3832
+
dependencies:
3833
+
is-inside-container: 1.0.0
3834
+
3835
+
isexe@2.0.0: {}
3836
+
3837
+
iso-datestring-validator@2.2.2: {}
3838
+
3839
+
jackspeak@3.4.3:
3840
+
dependencies:
3841
+
'@isaacs/cliui': 8.0.2
3842
+
optionalDependencies:
3843
+
'@pkgjs/parseargs': 0.11.0
3844
+
3845
+
joycon@3.1.1: {}
3846
+
3847
+
js-tokens@9.0.1: {}
3848
+
3849
+
js-yaml@3.14.1:
3850
+
dependencies:
3851
+
argparse: 1.0.10
3852
+
esprima: 4.0.1
3853
+
3854
+
js-yaml@4.1.0:
3855
+
dependencies:
3856
+
argparse: 2.0.1
3857
+
3858
+
jsonfile@4.0.0:
3859
+
optionalDependencies:
3860
+
graceful-fs: 4.2.11
3861
+
3862
+
katex@0.16.22:
3863
+
dependencies:
3864
+
commander: 8.3.0
3865
+
3866
+
kleur@3.0.3: {}
3867
+
3868
+
kleur@4.1.5: {}
3869
+
3870
+
lilconfig@3.1.3: {}
3871
+
3872
+
lines-and-columns@1.2.4: {}
3873
+
3874
+
load-tsconfig@0.2.5: {}
3875
+
3876
+
locate-path@5.0.0:
3877
+
dependencies:
3878
+
p-locate: 4.1.0
3879
+
3880
+
lodash.sortby@4.7.0: {}
3881
+
3882
+
lodash.startcase@4.4.0: {}
3883
+
3884
+
longest-streak@3.1.0: {}
3885
+
3886
+
loupe@3.2.0: {}
3887
+
3888
+
lru-cache@10.4.3: {}
3889
+
3890
+
magic-string@0.30.17:
3891
+
dependencies:
3892
+
'@jridgewell/sourcemap-codec': 1.5.4
3893
+
3894
+
magicast@0.3.5:
3895
+
dependencies:
3896
+
'@babel/parser': 7.28.0
3897
+
'@babel/types': 7.28.2
3898
+
source-map-js: 1.2.1
3899
+
3900
+
markdown-table@3.0.4: {}
3901
+
3902
+
mdast-util-definitions@6.0.0:
3903
+
dependencies:
3904
+
'@types/mdast': 4.0.4
3905
+
'@types/unist': 3.0.3
3906
+
unist-util-visit: 5.0.0
3907
+
3908
+
mdast-util-find-and-replace@3.0.2:
3909
+
dependencies:
3910
+
'@types/mdast': 4.0.4
3911
+
escape-string-regexp: 5.0.0
3912
+
unist-util-is: 6.0.0
3913
+
unist-util-visit-parents: 6.0.1
3914
+
3915
+
mdast-util-from-markdown@2.0.2:
3916
+
dependencies:
3917
+
'@types/mdast': 4.0.4
3918
+
'@types/unist': 3.0.3
3919
+
decode-named-character-reference: 1.2.0
3920
+
devlop: 1.1.0
3921
+
mdast-util-to-string: 4.0.0
3922
+
micromark: 4.0.2
3923
+
micromark-util-decode-numeric-character-reference: 2.0.2
3924
+
micromark-util-decode-string: 2.0.1
3925
+
micromark-util-normalize-identifier: 2.0.1
3926
+
micromark-util-symbol: 2.0.1
3927
+
micromark-util-types: 2.0.2
3928
+
unist-util-stringify-position: 4.0.0
3929
+
transitivePeerDependencies:
3930
+
- supports-color
3931
+
3932
+
mdast-util-gfm-autolink-literal@2.0.1:
3933
+
dependencies:
3934
+
'@types/mdast': 4.0.4
3935
+
ccount: 2.0.1
3936
+
devlop: 1.1.0
3937
+
mdast-util-find-and-replace: 3.0.2
3938
+
micromark-util-character: 2.1.1
3939
+
3940
+
mdast-util-gfm-footnote@2.1.0:
3941
+
dependencies:
3942
+
'@types/mdast': 4.0.4
3943
+
devlop: 1.1.0
3944
+
mdast-util-from-markdown: 2.0.2
3945
+
mdast-util-to-markdown: 2.1.2
3946
+
micromark-util-normalize-identifier: 2.0.1
3947
+
transitivePeerDependencies:
3948
+
- supports-color
3949
+
3950
+
mdast-util-gfm-strikethrough@2.0.0:
3951
+
dependencies:
3952
+
'@types/mdast': 4.0.4
3953
+
mdast-util-from-markdown: 2.0.2
3954
+
mdast-util-to-markdown: 2.1.2
3955
+
transitivePeerDependencies:
3956
+
- supports-color
3957
+
3958
+
mdast-util-gfm-table@2.0.0:
3959
+
dependencies:
3960
+
'@types/mdast': 4.0.4
3961
+
devlop: 1.1.0
3962
+
markdown-table: 3.0.4
3963
+
mdast-util-from-markdown: 2.0.2
3964
+
mdast-util-to-markdown: 2.1.2
3965
+
transitivePeerDependencies:
3966
+
- supports-color
3967
+
3968
+
mdast-util-gfm-task-list-item@2.0.0:
3969
+
dependencies:
3970
+
'@types/mdast': 4.0.4
3971
+
devlop: 1.1.0
3972
+
mdast-util-from-markdown: 2.0.2
3973
+
mdast-util-to-markdown: 2.1.2
3974
+
transitivePeerDependencies:
3975
+
- supports-color
3976
+
3977
+
mdast-util-gfm@3.1.0:
3978
+
dependencies:
3979
+
mdast-util-from-markdown: 2.0.2
3980
+
mdast-util-gfm-autolink-literal: 2.0.1
3981
+
mdast-util-gfm-footnote: 2.1.0
3982
+
mdast-util-gfm-strikethrough: 2.0.0
3983
+
mdast-util-gfm-table: 2.0.0
3984
+
mdast-util-gfm-task-list-item: 2.0.0
3985
+
mdast-util-to-markdown: 2.1.2
3986
+
transitivePeerDependencies:
3987
+
- supports-color
3988
+
3989
+
mdast-util-phrasing@4.1.0:
3990
+
dependencies:
3991
+
'@types/mdast': 4.0.4
3992
+
unist-util-is: 6.0.0
3993
+
3994
+
mdast-util-to-hast@13.2.0:
3995
+
dependencies:
3996
+
'@types/hast': 3.0.4
3997
+
'@types/mdast': 4.0.4
3998
+
'@ungap/structured-clone': 1.3.0
3999
+
devlop: 1.1.0
4000
+
micromark-util-sanitize-uri: 2.0.1
4001
+
trim-lines: 3.0.1
4002
+
unist-util-position: 5.0.0
4003
+
unist-util-visit: 5.0.0
4004
+
vfile: 6.0.3
4005
+
4006
+
mdast-util-to-markdown@2.1.2:
4007
+
dependencies:
4008
+
'@types/mdast': 4.0.4
4009
+
'@types/unist': 3.0.3
4010
+
longest-streak: 3.1.0
4011
+
mdast-util-phrasing: 4.1.0
4012
+
mdast-util-to-string: 4.0.0
4013
+
micromark-util-classify-character: 2.0.1
4014
+
micromark-util-decode-string: 2.0.1
4015
+
unist-util-visit: 5.0.0
4016
+
zwitch: 2.0.4
4017
+
4018
+
mdast-util-to-string@4.0.0:
4019
+
dependencies:
4020
+
'@types/mdast': 4.0.4
4021
+
4022
+
mdn-data@2.12.2: {}
4023
+
4024
+
merge2@1.4.1: {}
4025
+
4026
+
micromark-core-commonmark@2.0.3:
4027
+
dependencies:
4028
+
decode-named-character-reference: 1.2.0
4029
+
devlop: 1.1.0
4030
+
micromark-factory-destination: 2.0.1
4031
+
micromark-factory-label: 2.0.1
4032
+
micromark-factory-space: 2.0.1
4033
+
micromark-factory-title: 2.0.1
4034
+
micromark-factory-whitespace: 2.0.1
4035
+
micromark-util-character: 2.1.1
4036
+
micromark-util-chunked: 2.0.1
4037
+
micromark-util-classify-character: 2.0.1
4038
+
micromark-util-html-tag-name: 2.0.1
4039
+
micromark-util-normalize-identifier: 2.0.1
4040
+
micromark-util-resolve-all: 2.0.1
4041
+
micromark-util-subtokenize: 2.1.0
4042
+
micromark-util-symbol: 2.0.1
4043
+
micromark-util-types: 2.0.2
4044
+
4045
+
micromark-extension-gfm-autolink-literal@2.1.0:
4046
+
dependencies:
4047
+
micromark-util-character: 2.1.1
4048
+
micromark-util-sanitize-uri: 2.0.1
4049
+
micromark-util-symbol: 2.0.1
4050
+
micromark-util-types: 2.0.2
4051
+
4052
+
micromark-extension-gfm-footnote@2.1.0:
4053
+
dependencies:
4054
+
devlop: 1.1.0
4055
+
micromark-core-commonmark: 2.0.3
4056
+
micromark-factory-space: 2.0.1
4057
+
micromark-util-character: 2.1.1
4058
+
micromark-util-normalize-identifier: 2.0.1
4059
+
micromark-util-sanitize-uri: 2.0.1
4060
+
micromark-util-symbol: 2.0.1
4061
+
micromark-util-types: 2.0.2
4062
+
4063
+
micromark-extension-gfm-strikethrough@2.1.0:
4064
+
dependencies:
4065
+
devlop: 1.1.0
4066
+
micromark-util-chunked: 2.0.1
4067
+
micromark-util-classify-character: 2.0.1
4068
+
micromark-util-resolve-all: 2.0.1
4069
+
micromark-util-symbol: 2.0.1
4070
+
micromark-util-types: 2.0.2
4071
+
4072
+
micromark-extension-gfm-table@2.1.1:
4073
+
dependencies:
4074
+
devlop: 1.1.0
4075
+
micromark-factory-space: 2.0.1
4076
+
micromark-util-character: 2.1.1
4077
+
micromark-util-symbol: 2.0.1
4078
+
micromark-util-types: 2.0.2
4079
+
4080
+
micromark-extension-gfm-tagfilter@2.0.0:
4081
+
dependencies:
4082
+
micromark-util-types: 2.0.2
4083
+
4084
+
micromark-extension-gfm-task-list-item@2.1.0:
4085
+
dependencies:
4086
+
devlop: 1.1.0
4087
+
micromark-factory-space: 2.0.1
4088
+
micromark-util-character: 2.1.1
4089
+
micromark-util-symbol: 2.0.1
4090
+
micromark-util-types: 2.0.2
4091
+
4092
+
micromark-extension-gfm@3.0.0:
4093
+
dependencies:
4094
+
micromark-extension-gfm-autolink-literal: 2.1.0
4095
+
micromark-extension-gfm-footnote: 2.1.0
4096
+
micromark-extension-gfm-strikethrough: 2.1.0
4097
+
micromark-extension-gfm-table: 2.1.1
4098
+
micromark-extension-gfm-tagfilter: 2.0.0
4099
+
micromark-extension-gfm-task-list-item: 2.1.0
4100
+
micromark-util-combine-extensions: 2.0.1
4101
+
micromark-util-types: 2.0.2
4102
+
4103
+
micromark-factory-destination@2.0.1:
4104
+
dependencies:
4105
+
micromark-util-character: 2.1.1
4106
+
micromark-util-symbol: 2.0.1
4107
+
micromark-util-types: 2.0.2
4108
+
4109
+
micromark-factory-label@2.0.1:
4110
+
dependencies:
4111
+
devlop: 1.1.0
4112
+
micromark-util-character: 2.1.1
4113
+
micromark-util-symbol: 2.0.1
4114
+
micromark-util-types: 2.0.2
4115
+
4116
+
micromark-factory-space@2.0.1:
4117
+
dependencies:
4118
+
micromark-util-character: 2.1.1
4119
+
micromark-util-types: 2.0.2
4120
+
4121
+
micromark-factory-title@2.0.1:
4122
+
dependencies:
4123
+
micromark-factory-space: 2.0.1
4124
+
micromark-util-character: 2.1.1
4125
+
micromark-util-symbol: 2.0.1
4126
+
micromark-util-types: 2.0.2
4127
+
4128
+
micromark-factory-whitespace@2.0.1:
4129
+
dependencies:
4130
+
micromark-factory-space: 2.0.1
4131
+
micromark-util-character: 2.1.1
4132
+
micromark-util-symbol: 2.0.1
4133
+
micromark-util-types: 2.0.2
4134
+
4135
+
micromark-util-character@2.1.1:
4136
+
dependencies:
4137
+
micromark-util-symbol: 2.0.1
4138
+
micromark-util-types: 2.0.2
4139
+
4140
+
micromark-util-chunked@2.0.1:
4141
+
dependencies:
4142
+
micromark-util-symbol: 2.0.1
4143
+
4144
+
micromark-util-classify-character@2.0.1:
4145
+
dependencies:
4146
+
micromark-util-character: 2.1.1
4147
+
micromark-util-symbol: 2.0.1
4148
+
micromark-util-types: 2.0.2
4149
+
4150
+
micromark-util-combine-extensions@2.0.1:
4151
+
dependencies:
4152
+
micromark-util-chunked: 2.0.1
4153
+
micromark-util-types: 2.0.2
4154
+
4155
+
micromark-util-decode-numeric-character-reference@2.0.2:
4156
+
dependencies:
4157
+
micromark-util-symbol: 2.0.1
4158
+
4159
+
micromark-util-decode-string@2.0.1:
4160
+
dependencies:
4161
+
decode-named-character-reference: 1.2.0
4162
+
micromark-util-character: 2.1.1
4163
+
micromark-util-decode-numeric-character-reference: 2.0.2
4164
+
micromark-util-symbol: 2.0.1
4165
+
4166
+
micromark-util-encode@2.0.1: {}
4167
+
4168
+
micromark-util-html-tag-name@2.0.1: {}
4169
+
4170
+
micromark-util-normalize-identifier@2.0.1:
4171
+
dependencies:
4172
+
micromark-util-symbol: 2.0.1
4173
+
4174
+
micromark-util-resolve-all@2.0.1:
4175
+
dependencies:
4176
+
micromark-util-types: 2.0.2
4177
+
4178
+
micromark-util-sanitize-uri@2.0.1:
4179
+
dependencies:
4180
+
micromark-util-character: 2.1.1
4181
+
micromark-util-encode: 2.0.1
4182
+
micromark-util-symbol: 2.0.1
4183
+
4184
+
micromark-util-subtokenize@2.1.0:
4185
+
dependencies:
4186
+
devlop: 1.1.0
4187
+
micromark-util-chunked: 2.0.1
4188
+
micromark-util-symbol: 2.0.1
4189
+
micromark-util-types: 2.0.2
4190
+
4191
+
micromark-util-symbol@2.0.1: {}
4192
+
4193
+
micromark-util-types@2.0.2: {}
4194
+
4195
+
micromark@4.0.2:
4196
+
dependencies:
4197
+
'@types/debug': 4.1.12
4198
+
debug: 4.4.1
4199
+
decode-named-character-reference: 1.2.0
4200
+
devlop: 1.1.0
4201
+
micromark-core-commonmark: 2.0.3
4202
+
micromark-factory-space: 2.0.1
4203
+
micromark-util-character: 2.1.1
4204
+
micromark-util-chunked: 2.0.1
4205
+
micromark-util-combine-extensions: 2.0.1
4206
+
micromark-util-decode-numeric-character-reference: 2.0.2
4207
+
micromark-util-encode: 2.0.1
4208
+
micromark-util-normalize-identifier: 2.0.1
4209
+
micromark-util-resolve-all: 2.0.1
4210
+
micromark-util-sanitize-uri: 2.0.1
4211
+
micromark-util-subtokenize: 2.1.0
4212
+
micromark-util-symbol: 2.0.1
4213
+
micromark-util-types: 2.0.2
4214
+
transitivePeerDependencies:
4215
+
- supports-color
4216
+
4217
+
micromatch@4.0.8:
4218
+
dependencies:
4219
+
braces: 3.0.3
4220
+
picomatch: 2.3.1
4221
+
4222
+
minimatch@9.0.5:
4223
+
dependencies:
4224
+
brace-expansion: 2.0.2
4225
+
4226
+
minipass@7.1.2: {}
4227
+
4228
+
mlly@1.7.4:
4229
+
dependencies:
4230
+
acorn: 8.15.0
4231
+
pathe: 2.0.3
4232
+
pkg-types: 1.3.1
4233
+
ufo: 1.6.1
4234
+
4235
+
mri@1.2.0: {}
4236
+
4237
+
mrmime@2.0.1: {}
4238
+
4239
+
ms@2.1.3: {}
4240
+
4241
+
multiformats@9.9.0: {}
4242
+
4243
+
mz@2.7.0:
4244
+
dependencies:
4245
+
any-promise: 1.3.0
4246
+
object-assign: 4.1.1
4247
+
thenify-all: 1.6.0
4248
+
4249
+
nanoid@3.3.11: {}
4250
+
4251
+
neotraverse@0.6.18: {}
4252
+
4253
+
nlcst-to-string@4.0.0:
4254
+
dependencies:
4255
+
'@types/nlcst': 2.0.3
4256
+
4257
+
node-fetch-native@1.6.7: {}
4258
+
4259
+
node-fetch@2.7.0:
4260
+
dependencies:
4261
+
whatwg-url: 5.0.0
4262
+
4263
+
node-mock-http@1.0.2: {}
4264
+
4265
+
normalize-path@3.0.0: {}
4266
+
4267
+
object-assign@4.1.1: {}
4268
+
4269
+
ofetch@1.4.1:
4270
+
dependencies:
4271
+
destr: 2.0.5
4272
+
node-fetch-native: 1.6.7
4273
+
ufo: 1.6.1
4274
+
4275
+
ohash@2.0.11: {}
4276
+
4277
+
oniguruma-parser@0.12.1: {}
4278
+
4279
+
oniguruma-to-es@4.3.3:
4280
+
dependencies:
4281
+
oniguruma-parser: 0.12.1
4282
+
regex: 6.0.1
4283
+
regex-recursion: 6.0.2
4284
+
4285
+
os-tmpdir@1.0.2: {}
4286
+
4287
+
outdent@0.5.0: {}
4288
+
4289
+
p-filter@2.1.0:
4290
+
dependencies:
4291
+
p-map: 2.1.0
4292
+
4293
+
p-limit@2.3.0:
4294
+
dependencies:
4295
+
p-try: 2.2.0
4296
+
4297
+
p-limit@6.2.0:
4298
+
dependencies:
4299
+
yocto-queue: 1.2.1
4300
+
4301
+
p-locate@4.1.0:
4302
+
dependencies:
4303
+
p-limit: 2.3.0
4304
+
4305
+
p-map@2.1.0: {}
4306
+
4307
+
p-queue@8.1.0:
4308
+
dependencies:
4309
+
eventemitter3: 5.0.1
4310
+
p-timeout: 6.1.4
4311
+
4312
+
p-timeout@6.1.4: {}
4313
+
4314
+
p-try@2.2.0: {}
4315
+
4316
+
package-json-from-dist@1.0.1: {}
4317
+
4318
+
package-manager-detector@0.2.11:
4319
+
dependencies:
4320
+
quansync: 0.2.10
4321
+
4322
+
package-manager-detector@1.3.0: {}
4323
+
4324
+
pako@0.2.9: {}
4325
+
4326
+
parse-latin@7.0.0:
4327
+
dependencies:
4328
+
'@types/nlcst': 2.0.3
4329
+
'@types/unist': 3.0.3
4330
+
nlcst-to-string: 4.0.0
4331
+
unist-util-modify-children: 4.0.0
4332
+
unist-util-visit-children: 3.0.0
4333
+
vfile: 6.0.3
4334
+
4335
+
parse-srcset@1.0.2: {}
4336
+
4337
+
parse5@7.3.0:
4338
+
dependencies:
4339
+
entities: 6.0.1
4340
+
4341
+
path-exists@4.0.0: {}
4342
+
4343
+
path-key@3.1.1: {}
4344
+
4345
+
path-scurry@1.11.1:
4346
+
dependencies:
4347
+
lru-cache: 10.4.3
4348
+
minipass: 7.1.2
4349
+
4350
+
path-type@4.0.0: {}
4351
+
4352
+
pathe@2.0.3: {}
4353
+
4354
+
pathval@2.0.1: {}
4355
+
4356
+
picocolors@1.1.1: {}
4357
+
4358
+
picomatch@2.3.1: {}
4359
+
4360
+
picomatch@4.0.3: {}
4361
+
4362
+
pify@4.0.1: {}
4363
+
4364
+
pirates@4.0.7: {}
4365
+
4366
+
pkg-types@1.3.1:
4367
+
dependencies:
4368
+
confbox: 0.1.8
4369
+
mlly: 1.7.4
4370
+
pathe: 2.0.3
4371
+
4372
+
postcss-load-config@6.0.1(postcss@8.5.6):
4373
+
dependencies:
4374
+
lilconfig: 3.1.3
4375
+
optionalDependencies:
4376
+
postcss: 8.5.6
4377
+
4378
+
postcss@8.5.6:
4379
+
dependencies:
4380
+
nanoid: 3.3.11
4381
+
picocolors: 1.1.1
4382
+
source-map-js: 1.2.1
4383
+
4384
+
prettier@2.8.8: {}
4385
+
4386
+
prettier@3.6.2: {}
4387
+
4388
+
prismjs@1.30.0: {}
4389
+
4390
+
prompts@2.4.2:
4391
+
dependencies:
4392
+
kleur: 3.0.3
4393
+
sisteransi: 1.0.5
4394
+
4395
+
property-information@6.5.0: {}
4396
+
4397
+
property-information@7.1.0: {}
4398
+
4399
+
punycode@2.3.1: {}
4400
+
4401
+
quansync@0.2.10: {}
4402
+
4403
+
queue-microtask@1.2.3: {}
4404
+
4405
+
radix3@1.1.2: {}
4406
+
4407
+
read-yaml-file@1.1.0:
4408
+
dependencies:
4409
+
graceful-fs: 4.2.11
4410
+
js-yaml: 3.14.1
4411
+
pify: 4.0.1
4412
+
strip-bom: 3.0.0
4413
+
4414
+
readdirp@4.1.2: {}
4415
+
4416
+
regex-recursion@6.0.2:
4417
+
dependencies:
4418
+
regex-utilities: 2.3.0
4419
+
4420
+
regex-utilities@2.3.0: {}
4421
+
4422
+
regex@6.0.1:
4423
+
dependencies:
4424
+
regex-utilities: 2.3.0
4425
+
4426
+
rehype-parse@9.0.1:
4427
+
dependencies:
4428
+
'@types/hast': 3.0.4
4429
+
hast-util-from-html: 2.0.3
4430
+
unified: 11.0.5
4431
+
4432
+
rehype-raw@7.0.0:
4433
+
dependencies:
4434
+
'@types/hast': 3.0.4
4435
+
hast-util-raw: 9.1.0
4436
+
vfile: 6.0.3
4437
+
4438
+
rehype-stringify@10.0.1:
4439
+
dependencies:
4440
+
'@types/hast': 3.0.4
4441
+
hast-util-to-html: 9.0.5
4442
+
unified: 11.0.5
4443
+
4444
+
rehype@13.0.2:
4445
+
dependencies:
4446
+
'@types/hast': 3.0.4
4447
+
rehype-parse: 9.0.1
4448
+
rehype-stringify: 10.0.1
4449
+
unified: 11.0.5
4450
+
4451
+
remark-gfm@4.0.1:
4452
+
dependencies:
4453
+
'@types/mdast': 4.0.4
4454
+
mdast-util-gfm: 3.1.0
4455
+
micromark-extension-gfm: 3.0.0
4456
+
remark-parse: 11.0.0
4457
+
remark-stringify: 11.0.0
4458
+
unified: 11.0.5
4459
+
transitivePeerDependencies:
4460
+
- supports-color
4461
+
4462
+
remark-parse@11.0.0:
4463
+
dependencies:
4464
+
'@types/mdast': 4.0.4
4465
+
mdast-util-from-markdown: 2.0.2
4466
+
micromark-util-types: 2.0.2
4467
+
unified: 11.0.5
4468
+
transitivePeerDependencies:
4469
+
- supports-color
4470
+
4471
+
remark-rehype@11.1.2:
4472
+
dependencies:
4473
+
'@types/hast': 3.0.4
4474
+
'@types/mdast': 4.0.4
4475
+
mdast-util-to-hast: 13.2.0
4476
+
unified: 11.0.5
4477
+
vfile: 6.0.3
4478
+
4479
+
remark-smartypants@3.0.2:
4480
+
dependencies:
4481
+
retext: 9.0.0
4482
+
retext-smartypants: 6.2.0
4483
+
unified: 11.0.5
4484
+
unist-util-visit: 5.0.0
4485
+
4486
+
remark-stringify@11.0.0:
4487
+
dependencies:
4488
+
'@types/mdast': 4.0.4
4489
+
mdast-util-to-markdown: 2.1.2
4490
+
unified: 11.0.5
4491
+
4492
+
resolve-from@5.0.0: {}
4493
+
4494
+
restructure@3.0.2: {}
4495
+
4496
+
retext-latin@4.0.0:
4497
+
dependencies:
4498
+
'@types/nlcst': 2.0.3
4499
+
parse-latin: 7.0.0
4500
+
unified: 11.0.5
4501
+
4502
+
retext-smartypants@6.2.0:
4503
+
dependencies:
4504
+
'@types/nlcst': 2.0.3
4505
+
nlcst-to-string: 4.0.0
4506
+
unist-util-visit: 5.0.0
4507
+
4508
+
retext-stringify@4.0.0:
4509
+
dependencies:
4510
+
'@types/nlcst': 2.0.3
4511
+
nlcst-to-string: 4.0.0
4512
+
unified: 11.0.5
4513
+
4514
+
retext@9.0.0:
4515
+
dependencies:
4516
+
'@types/nlcst': 2.0.3
4517
+
retext-latin: 4.0.0
4518
+
retext-stringify: 4.0.0
4519
+
unified: 11.0.5
4520
+
4521
+
reusify@1.1.0: {}
4522
+
4523
+
rollup@4.46.2:
4524
+
dependencies:
4525
+
'@types/estree': 1.0.8
4526
+
optionalDependencies:
4527
+
'@rollup/rollup-android-arm-eabi': 4.46.2
4528
+
'@rollup/rollup-android-arm64': 4.46.2
4529
+
'@rollup/rollup-darwin-arm64': 4.46.2
4530
+
'@rollup/rollup-darwin-x64': 4.46.2
4531
+
'@rollup/rollup-freebsd-arm64': 4.46.2
4532
+
'@rollup/rollup-freebsd-x64': 4.46.2
4533
+
'@rollup/rollup-linux-arm-gnueabihf': 4.46.2
4534
+
'@rollup/rollup-linux-arm-musleabihf': 4.46.2
4535
+
'@rollup/rollup-linux-arm64-gnu': 4.46.2
4536
+
'@rollup/rollup-linux-arm64-musl': 4.46.2
4537
+
'@rollup/rollup-linux-loongarch64-gnu': 4.46.2
4538
+
'@rollup/rollup-linux-ppc64-gnu': 4.46.2
4539
+
'@rollup/rollup-linux-riscv64-gnu': 4.46.2
4540
+
'@rollup/rollup-linux-riscv64-musl': 4.46.2
4541
+
'@rollup/rollup-linux-s390x-gnu': 4.46.2
4542
+
'@rollup/rollup-linux-x64-gnu': 4.46.2
4543
+
'@rollup/rollup-linux-x64-musl': 4.46.2
4544
+
'@rollup/rollup-win32-arm64-msvc': 4.46.2
4545
+
'@rollup/rollup-win32-ia32-msvc': 4.46.2
4546
+
'@rollup/rollup-win32-x64-msvc': 4.46.2
4547
+
fsevents: 2.3.3
4548
+
4549
+
run-parallel@1.2.0:
4550
+
dependencies:
4551
+
queue-microtask: 1.2.3
4552
+
4553
+
safer-buffer@2.1.2: {}
4554
+
4555
+
sanitize-html@2.17.0:
4556
+
dependencies:
4557
+
deepmerge: 4.3.1
4558
+
escape-string-regexp: 4.0.0
4559
+
htmlparser2: 8.0.2
4560
+
is-plain-object: 5.0.0
4561
+
parse-srcset: 1.0.2
4562
+
postcss: 8.5.6
4563
+
4564
+
semver@7.7.2: {}
4565
+
4566
+
sharp@0.33.5:
4567
+
dependencies:
4568
+
color: 4.2.3
4569
+
detect-libc: 2.0.4
4570
+
semver: 7.7.2
4571
+
optionalDependencies:
4572
+
'@img/sharp-darwin-arm64': 0.33.5
4573
+
'@img/sharp-darwin-x64': 0.33.5
4574
+
'@img/sharp-libvips-darwin-arm64': 1.0.4
4575
+
'@img/sharp-libvips-darwin-x64': 1.0.4
4576
+
'@img/sharp-libvips-linux-arm': 1.0.5
4577
+
'@img/sharp-libvips-linux-arm64': 1.0.4
4578
+
'@img/sharp-libvips-linux-s390x': 1.0.4
4579
+
'@img/sharp-libvips-linux-x64': 1.0.4
4580
+
'@img/sharp-libvips-linuxmusl-arm64': 1.0.4
4581
+
'@img/sharp-libvips-linuxmusl-x64': 1.0.4
4582
+
'@img/sharp-linux-arm': 0.33.5
4583
+
'@img/sharp-linux-arm64': 0.33.5
4584
+
'@img/sharp-linux-s390x': 0.33.5
4585
+
'@img/sharp-linux-x64': 0.33.5
4586
+
'@img/sharp-linuxmusl-arm64': 0.33.5
4587
+
'@img/sharp-linuxmusl-x64': 0.33.5
4588
+
'@img/sharp-wasm32': 0.33.5
4589
+
'@img/sharp-win32-ia32': 0.33.5
4590
+
'@img/sharp-win32-x64': 0.33.5
4591
+
optional: true
4592
+
4593
+
shebang-command@2.0.0:
4594
+
dependencies:
4595
+
shebang-regex: 3.0.0
4596
+
4597
+
shebang-regex@3.0.0: {}
4598
+
4599
+
shiki@3.9.2:
4600
+
dependencies:
4601
+
'@shikijs/core': 3.9.2
4602
+
'@shikijs/engine-javascript': 3.9.2
4603
+
'@shikijs/engine-oniguruma': 3.9.2
4604
+
'@shikijs/langs': 3.9.2
4605
+
'@shikijs/themes': 3.9.2
4606
+
'@shikijs/types': 3.9.2
4607
+
'@shikijs/vscode-textmate': 10.0.2
4608
+
'@types/hast': 3.0.4
4609
+
4610
+
siginfo@2.0.0: {}
4611
+
4612
+
signal-exit@4.1.0: {}
4613
+
4614
+
simple-swizzle@0.2.2:
4615
+
dependencies:
4616
+
is-arrayish: 0.3.2
4617
+
optional: true
4618
+
4619
+
sisteransi@1.0.5: {}
4620
+
4621
+
slash@3.0.0: {}
4622
+
4623
+
smol-toml@1.4.2: {}
4624
+
4625
+
source-map-js@1.2.1: {}
4626
+
4627
+
source-map@0.8.0-beta.0:
4628
+
dependencies:
4629
+
whatwg-url: 7.1.0
4630
+
4631
+
space-separated-tokens@2.0.2: {}
4632
+
4633
+
spawndamnit@3.0.1:
4634
+
dependencies:
4635
+
cross-spawn: 7.0.6
4636
+
signal-exit: 4.1.0
4637
+
4638
+
sprintf-js@1.0.3: {}
4639
+
4640
+
stackback@0.0.2: {}
4641
+
4642
+
std-env@3.9.0: {}
4643
+
4644
+
string-width@4.2.3:
4645
+
dependencies:
4646
+
emoji-regex: 8.0.0
4647
+
is-fullwidth-code-point: 3.0.0
4648
+
strip-ansi: 6.0.1
4649
+
4650
+
string-width@5.1.2:
4651
+
dependencies:
4652
+
eastasianwidth: 0.2.0
4653
+
emoji-regex: 9.2.2
4654
+
strip-ansi: 7.1.0
4655
+
4656
+
string-width@7.2.0:
4657
+
dependencies:
4658
+
emoji-regex: 10.4.0
4659
+
get-east-asian-width: 1.3.0
4660
+
strip-ansi: 7.1.0
4661
+
4662
+
stringify-entities@4.0.4:
4663
+
dependencies:
4664
+
character-entities-html4: 2.1.0
4665
+
character-entities-legacy: 3.0.0
4666
+
4667
+
strip-ansi@6.0.1:
4668
+
dependencies:
4669
+
ansi-regex: 5.0.1
4670
+
4671
+
strip-ansi@7.1.0:
4672
+
dependencies:
4673
+
ansi-regex: 6.1.0
4674
+
4675
+
strip-bom@3.0.0: {}
4676
+
4677
+
strip-literal@3.0.0:
4678
+
dependencies:
4679
+
js-tokens: 9.0.1
4680
+
4681
+
sucrase@3.35.0:
4682
+
dependencies:
4683
+
'@jridgewell/gen-mapping': 0.3.12
4684
+
commander: 4.1.1
4685
+
glob: 10.4.5
4686
+
lines-and-columns: 1.2.4
4687
+
mz: 2.7.0
4688
+
pirates: 4.0.7
4689
+
ts-interface-checker: 0.1.13
4690
+
4691
+
term-size@2.2.1: {}
4692
+
4693
+
thenify-all@1.6.0:
4694
+
dependencies:
4695
+
thenify: 3.3.1
4696
+
4697
+
thenify@3.3.1:
4698
+
dependencies:
4699
+
any-promise: 1.3.0
4700
+
4701
+
tiny-inflate@1.0.3: {}
4702
+
4703
+
tinybench@2.9.0: {}
4704
+
4705
+
tinyexec@0.3.2: {}
4706
+
4707
+
tinyglobby@0.2.14:
4708
+
dependencies:
4709
+
fdir: 6.4.6(picomatch@4.0.3)
4710
+
picomatch: 4.0.3
4711
+
4712
+
tinypool@1.1.1: {}
4713
+
4714
+
tinyrainbow@2.0.0: {}
4715
+
4716
+
tinyspy@4.0.3: {}
4717
+
4718
+
tlds@1.259.0: {}
4719
+
4720
+
tmp@0.0.33:
4721
+
dependencies:
4722
+
os-tmpdir: 1.0.2
4723
+
4724
+
to-regex-range@5.0.1:
4725
+
dependencies:
4726
+
is-number: 7.0.0
4727
+
4728
+
tr46@0.0.3: {}
4729
+
4730
+
tr46@1.0.1:
4731
+
dependencies:
4732
+
punycode: 2.3.1
4733
+
4734
+
tree-kill@1.2.2: {}
4735
+
4736
+
trim-lines@3.0.1: {}
4737
+
4738
+
trough@2.2.0: {}
4739
+
4740
+
ts-interface-checker@0.1.13: {}
4741
+
4742
+
tsconfck@3.1.6(typescript@5.9.2):
4743
+
optionalDependencies:
4744
+
typescript: 5.9.2
4745
+
4746
+
tslib@2.8.1: {}
4747
+
4748
+
tsup@8.5.0(postcss@8.5.6)(typescript@5.9.2):
4749
+
dependencies:
4750
+
bundle-require: 5.1.0(esbuild@0.25.8)
4751
+
cac: 6.7.14
4752
+
chokidar: 4.0.3
4753
+
consola: 3.4.2
4754
+
debug: 4.4.1
4755
+
esbuild: 0.25.8
4756
+
fix-dts-default-cjs-exports: 1.0.1
4757
+
joycon: 3.1.1
4758
+
picocolors: 1.1.1
4759
+
postcss-load-config: 6.0.1(postcss@8.5.6)
4760
+
resolve-from: 5.0.0
4761
+
rollup: 4.46.2
4762
+
source-map: 0.8.0-beta.0
4763
+
sucrase: 3.35.0
4764
+
tinyexec: 0.3.2
4765
+
tinyglobby: 0.2.14
4766
+
tree-kill: 1.2.2
4767
+
optionalDependencies:
4768
+
postcss: 8.5.6
4769
+
typescript: 5.9.2
4770
+
transitivePeerDependencies:
4771
+
- jiti
4772
+
- supports-color
4773
+
- tsx
4774
+
- yaml
4775
+
4776
+
type-fest@4.41.0: {}
4777
+
24
4778
typescript@5.9.2: {}
4779
+
4780
+
ufo@1.6.1: {}
4781
+
4782
+
uint8arrays@3.0.0:
4783
+
dependencies:
4784
+
multiformats: 9.9.0
4785
+
4786
+
ultrahtml@1.6.0: {}
4787
+
4788
+
uncrypto@0.1.3: {}
4789
+
4790
+
undici-types@7.10.0: {}
4791
+
4792
+
unicode-properties@1.4.1:
4793
+
dependencies:
4794
+
base64-js: 1.5.1
4795
+
unicode-trie: 2.0.0
4796
+
4797
+
unicode-trie@2.0.0:
4798
+
dependencies:
4799
+
pako: 0.2.9
4800
+
tiny-inflate: 1.0.3
4801
+
4802
+
unified@11.0.5:
4803
+
dependencies:
4804
+
'@types/unist': 3.0.3
4805
+
bail: 2.0.2
4806
+
devlop: 1.1.0
4807
+
extend: 3.0.2
4808
+
is-plain-obj: 4.1.0
4809
+
trough: 2.2.0
4810
+
vfile: 6.0.3
4811
+
4812
+
unifont@0.5.2:
4813
+
dependencies:
4814
+
css-tree: 3.1.0
4815
+
ofetch: 1.4.1
4816
+
ohash: 2.0.11
4817
+
4818
+
unist-util-find-after@5.0.0:
4819
+
dependencies:
4820
+
'@types/unist': 3.0.3
4821
+
unist-util-is: 6.0.0
4822
+
4823
+
unist-util-is@6.0.0:
4824
+
dependencies:
4825
+
'@types/unist': 3.0.3
4826
+
4827
+
unist-util-modify-children@4.0.0:
4828
+
dependencies:
4829
+
'@types/unist': 3.0.3
4830
+
array-iterate: 2.0.1
4831
+
4832
+
unist-util-position@5.0.0:
4833
+
dependencies:
4834
+
'@types/unist': 3.0.3
4835
+
4836
+
unist-util-remove-position@5.0.0:
4837
+
dependencies:
4838
+
'@types/unist': 3.0.3
4839
+
unist-util-visit: 5.0.0
4840
+
4841
+
unist-util-stringify-position@4.0.0:
4842
+
dependencies:
4843
+
'@types/unist': 3.0.3
4844
+
4845
+
unist-util-visit-children@3.0.0:
4846
+
dependencies:
4847
+
'@types/unist': 3.0.3
4848
+
4849
+
unist-util-visit-parents@6.0.1:
4850
+
dependencies:
4851
+
'@types/unist': 3.0.3
4852
+
unist-util-is: 6.0.0
4853
+
4854
+
unist-util-visit@5.0.0:
4855
+
dependencies:
4856
+
'@types/unist': 3.0.3
4857
+
unist-util-is: 6.0.0
4858
+
unist-util-visit-parents: 6.0.1
4859
+
4860
+
universalify@0.1.2: {}
4861
+
4862
+
unstorage@1.16.1:
4863
+
dependencies:
4864
+
anymatch: 3.1.3
4865
+
chokidar: 4.0.3
4866
+
destr: 2.0.5
4867
+
h3: 1.15.4
4868
+
lru-cache: 10.4.3
4869
+
node-fetch-native: 1.6.7
4870
+
ofetch: 1.4.1
4871
+
ufo: 1.6.1
4872
+
4873
+
vfile-location@5.0.3:
4874
+
dependencies:
4875
+
'@types/unist': 3.0.3
4876
+
vfile: 6.0.3
4877
+
4878
+
vfile-message@4.0.3:
4879
+
dependencies:
4880
+
'@types/unist': 3.0.3
4881
+
unist-util-stringify-position: 4.0.0
4882
+
4883
+
vfile@6.0.3:
4884
+
dependencies:
4885
+
'@types/unist': 3.0.3
4886
+
vfile-message: 4.0.3
4887
+
4888
+
vite-node@3.2.4(@types/node@24.2.1):
4889
+
dependencies:
4890
+
cac: 6.7.14
4891
+
debug: 4.4.1
4892
+
es-module-lexer: 1.7.0
4893
+
pathe: 2.0.3
4894
+
vite: 7.1.1(@types/node@24.2.1)
4895
+
transitivePeerDependencies:
4896
+
- '@types/node'
4897
+
- jiti
4898
+
- less
4899
+
- lightningcss
4900
+
- sass
4901
+
- sass-embedded
4902
+
- stylus
4903
+
- sugarss
4904
+
- supports-color
4905
+
- terser
4906
+
- tsx
4907
+
- yaml
4908
+
4909
+
vite@6.3.5(@types/node@24.2.1):
4910
+
dependencies:
4911
+
esbuild: 0.25.8
4912
+
fdir: 6.4.6(picomatch@4.0.3)
4913
+
picomatch: 4.0.3
4914
+
postcss: 8.5.6
4915
+
rollup: 4.46.2
4916
+
tinyglobby: 0.2.14
4917
+
optionalDependencies:
4918
+
'@types/node': 24.2.1
4919
+
fsevents: 2.3.3
4920
+
4921
+
vite@7.1.1(@types/node@24.2.1):
4922
+
dependencies:
4923
+
esbuild: 0.25.8
4924
+
fdir: 6.4.6(picomatch@4.0.3)
4925
+
picomatch: 4.0.3
4926
+
postcss: 8.5.6
4927
+
rollup: 4.46.2
4928
+
tinyglobby: 0.2.14
4929
+
optionalDependencies:
4930
+
'@types/node': 24.2.1
4931
+
fsevents: 2.3.3
4932
+
4933
+
vitefu@1.1.1(vite@6.3.5(@types/node@24.2.1)):
4934
+
optionalDependencies:
4935
+
vite: 6.3.5(@types/node@24.2.1)
4936
+
4937
+
vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.2.1):
4938
+
dependencies:
4939
+
'@types/chai': 5.2.2
4940
+
'@vitest/expect': 3.2.4
4941
+
'@vitest/mocker': 3.2.4(vite@7.1.1(@types/node@24.2.1))
4942
+
'@vitest/pretty-format': 3.2.4
4943
+
'@vitest/runner': 3.2.4
4944
+
'@vitest/snapshot': 3.2.4
4945
+
'@vitest/spy': 3.2.4
4946
+
'@vitest/utils': 3.2.4
4947
+
chai: 5.2.1
4948
+
debug: 4.4.1
4949
+
expect-type: 1.2.2
4950
+
magic-string: 0.30.17
4951
+
pathe: 2.0.3
4952
+
picomatch: 4.0.3
4953
+
std-env: 3.9.0
4954
+
tinybench: 2.9.0
4955
+
tinyexec: 0.3.2
4956
+
tinyglobby: 0.2.14
4957
+
tinypool: 1.1.1
4958
+
tinyrainbow: 2.0.0
4959
+
vite: 7.1.1(@types/node@24.2.1)
4960
+
vite-node: 3.2.4(@types/node@24.2.1)
4961
+
why-is-node-running: 2.3.0
4962
+
optionalDependencies:
4963
+
'@types/debug': 4.1.12
4964
+
'@types/node': 24.2.1
4965
+
transitivePeerDependencies:
4966
+
- jiti
4967
+
- less
4968
+
- lightningcss
4969
+
- msw
4970
+
- sass
4971
+
- sass-embedded
4972
+
- stylus
4973
+
- sugarss
4974
+
- supports-color
4975
+
- terser
4976
+
- tsx
4977
+
- yaml
4978
+
4979
+
web-namespaces@2.0.1: {}
4980
+
4981
+
webidl-conversions@3.0.1: {}
4982
+
4983
+
webidl-conversions@4.0.2: {}
4984
+
4985
+
whatwg-url@5.0.0:
4986
+
dependencies:
4987
+
tr46: 0.0.3
4988
+
webidl-conversions: 3.0.1
4989
+
4990
+
whatwg-url@7.1.0:
4991
+
dependencies:
4992
+
lodash.sortby: 4.7.0
4993
+
tr46: 1.0.1
4994
+
webidl-conversions: 4.0.2
4995
+
4996
+
which-pm-runs@1.1.0: {}
4997
+
4998
+
which@2.0.2:
4999
+
dependencies:
5000
+
isexe: 2.0.0
5001
+
5002
+
why-is-node-running@2.3.0:
5003
+
dependencies:
5004
+
siginfo: 2.0.0
5005
+
stackback: 0.0.2
5006
+
5007
+
widest-line@5.0.0:
5008
+
dependencies:
5009
+
string-width: 7.2.0
5010
+
5011
+
wrap-ansi@7.0.0:
5012
+
dependencies:
5013
+
ansi-styles: 4.3.0
5014
+
string-width: 4.2.3
5015
+
strip-ansi: 6.0.1
5016
+
5017
+
wrap-ansi@8.1.0:
5018
+
dependencies:
5019
+
ansi-styles: 6.2.1
5020
+
string-width: 5.1.2
5021
+
strip-ansi: 7.1.0
5022
+
5023
+
wrap-ansi@9.0.0:
5024
+
dependencies:
5025
+
ansi-styles: 6.2.1
5026
+
string-width: 7.2.0
5027
+
strip-ansi: 7.1.0
5028
+
5029
+
xxhash-wasm@1.1.0: {}
5030
+
5031
+
yargs-parser@21.1.1: {}
5032
+
5033
+
yocto-queue@1.2.1: {}
5034
+
5035
+
yocto-spinner@0.2.3:
5036
+
dependencies:
5037
+
yoctocolors: 2.1.1
5038
+
5039
+
yoctocolors@2.1.1: {}
5040
+
5041
+
zod-to-json-schema@3.24.6(zod@3.25.76):
5042
+
dependencies:
5043
+
zod: 3.25.76
5044
+
5045
+
zod-to-ts@1.2.0(typescript@5.9.2)(zod@3.25.76):
5046
+
dependencies:
5047
+
typescript: 5.9.2
5048
+
zod: 3.25.76
5049
+
5050
+
zod@3.25.76: {}
5051
+
5052
+
zwitch@2.0.4: {}
+189
tests/parse-blocks.test.ts
+189
tests/parse-blocks.test.ts
···
1
+
import { expect, test } from "vitest";
2
+
import { parseBlocks } from "../lib/utils";
3
+
4
+
test("should correctly parse an h1 block to an h2 tag", () => {
5
+
const html = parseBlocks({
6
+
block: {
7
+
$type: "pub.leaflet.pages.linearDocument#block",
8
+
block: {
9
+
$type: "pub.leaflet.blocks.header",
10
+
level: 1,
11
+
facets: [],
12
+
plaintext: "heading 1",
13
+
},
14
+
},
15
+
did: "did:plc:qttsv4e7pu2jl3ilanfgc3zn",
16
+
});
17
+
18
+
expect(html).toMatchInlineSnapshot(`"<h2>heading 1</h2>"`);
19
+
});
20
+
21
+
test("should correctly parse an h2 block to an h3 tag", () => {
22
+
const html = parseBlocks({
23
+
block: {
24
+
$type: "pub.leaflet.pages.linearDocument#block",
25
+
block: {
26
+
$type: "pub.leaflet.blocks.header",
27
+
level: 2,
28
+
facets: [],
29
+
plaintext: "heading 2",
30
+
},
31
+
},
32
+
did: "did:plc:qttsv4e7pu2jl3ilanfgc3zn",
33
+
});
34
+
35
+
expect(html).toMatchInlineSnapshot(`"<h3>heading 2</h3>"`);
36
+
});
37
+
38
+
test("should correctly parse an h3 block to an h4 tag", () => {
39
+
const html = parseBlocks({
40
+
block: {
41
+
$type: "pub.leaflet.pages.linearDocument#block",
42
+
block: {
43
+
$type: "pub.leaflet.blocks.header",
44
+
level: 3,
45
+
facets: [],
46
+
plaintext: "heading 3",
47
+
},
48
+
},
49
+
did: "did:plc:qttsv4e7pu2jl3ilanfgc3zn",
50
+
});
51
+
52
+
expect(html).toMatchInlineSnapshot(`"<h4>heading 3</h4>"`);
53
+
});
54
+
55
+
test("should correctly parse a block with no level to an h6 tag", () => {
56
+
const html = parseBlocks({
57
+
block: {
58
+
$type: "pub.leaflet.pages.linearDocument#block",
59
+
block: {
60
+
$type: "pub.leaflet.blocks.header",
61
+
facets: [],
62
+
plaintext: "heading 6",
63
+
},
64
+
},
65
+
did: "did:plc:qttsv4e7pu2jl3ilanfgc3zn",
66
+
});
67
+
68
+
expect(html).toMatchInlineSnapshot(`"<h6>heading 6</h6>"`);
69
+
});
70
+
71
+
test("should correctly parse an unordered list block", () => {
72
+
const html = parseBlocks({
73
+
block: {
74
+
$type: "pub.leaflet.pages.linearDocument#block",
75
+
block: {
76
+
$type: "pub.leaflet.blocks.unorderedList",
77
+
children: [
78
+
{
79
+
$type: "pub.leaflet.blocks.unorderedList#listItem",
80
+
content: {
81
+
$type: "pub.leaflet.blocks.text",
82
+
facets: [
83
+
{
84
+
index: {
85
+
byteEnd: 18,
86
+
byteStart: 0,
87
+
},
88
+
features: [
89
+
{
90
+
uri: "https://pdsls.dev/",
91
+
$type: "pub.leaflet.richtext.facet#link",
92
+
},
93
+
],
94
+
},
95
+
{
96
+
index: {
97
+
byteEnd: 28,
98
+
byteStart: 22,
99
+
},
100
+
features: [
101
+
{
102
+
uri: "https://bsky.app/profile/juli.ee",
103
+
$type: "pub.leaflet.richtext.facet#link",
104
+
},
105
+
],
106
+
},
107
+
],
108
+
plaintext: "https://pdsls.dev/ by Juliet",
109
+
},
110
+
children: [],
111
+
},
112
+
{
113
+
$type: "pub.leaflet.blocks.unorderedList#listItem",
114
+
content: {
115
+
$type: "pub.leaflet.blocks.text",
116
+
facets: [
117
+
{
118
+
index: {
119
+
byteEnd: 34,
120
+
byteStart: 0,
121
+
},
122
+
features: [
123
+
{
124
+
uri: "https://github.com/mary-ext/atcute",
125
+
$type: "pub.leaflet.richtext.facet#link",
126
+
},
127
+
],
128
+
},
129
+
{
130
+
index: {
131
+
byteEnd: 42,
132
+
byteStart: 38,
133
+
},
134
+
features: [
135
+
{
136
+
uri: "https://bsky.app/profile/mary.my.id",
137
+
$type: "pub.leaflet.richtext.facet#link",
138
+
},
139
+
],
140
+
},
141
+
],
142
+
plaintext: "https://github.com/mary-ext/atcute by mary",
143
+
},
144
+
children: [],
145
+
},
146
+
{
147
+
$type: "pub.leaflet.blocks.unorderedList#listItem",
148
+
content: {
149
+
$type: "pub.leaflet.blocks.text",
150
+
facets: [
151
+
{
152
+
index: {
153
+
byteEnd: 27,
154
+
byteStart: 0,
155
+
},
156
+
features: [
157
+
{
158
+
uri: "https://www.microcosm.blue/",
159
+
$type: "pub.leaflet.richtext.facet#link",
160
+
},
161
+
],
162
+
},
163
+
{
164
+
index: {
165
+
byteEnd: 35,
166
+
byteStart: 31,
167
+
},
168
+
features: [
169
+
{
170
+
uri: "https://bsky.app/profile/bad-example.com",
171
+
$type: "pub.leaflet.richtext.facet#link",
172
+
},
173
+
],
174
+
},
175
+
],
176
+
plaintext: "https://www.microcosm.blue/ by phil",
177
+
},
178
+
children: [],
179
+
},
180
+
],
181
+
},
182
+
},
183
+
did: "did:plc:qttsv4e7pu2jl3ilanfgc3zn",
184
+
});
185
+
186
+
expect(html).toMatchInlineSnapshot(
187
+
`"<ul><li><p><a href="https://pdsls.dev/" target="_blank" rel="noopener noreferrer">https://pdsls.dev/</a> by <a href="https://bsky.app/profile/juli.ee" target="_blank" rel="noopener noreferrer">Juliet</a></p></li><li><p><a href="https://github.com/mary-ext/atcute" target="_blank" rel="noopener noreferrer">https://github.com/mary-ext/atcute</a> by <a href="https://bsky.app/profile/mary.my.id" target="_blank" rel="noopener noreferrer">mary</a></p></li><li><p><a href="https://www.microcosm.blue/" target="_blank" rel="noopener noreferrer">https://www.microcosm.blue/</a> by <a href="https://bsky.app/profile/bad-example.com" target="_blank" rel="noopener noreferrer">phil</a></p></li></ul>"`,
188
+
);
189
+
});
+133
tests/parse-text-blocks.test.ts
+133
tests/parse-text-blocks.test.ts
···
1
+
import { expect, test } from "vitest";
2
+
import { parseTextBlock } from "../lib/utils";
3
+
4
+
test("should correctly parse a text block without facets", () => {
5
+
const html = parseTextBlock({
6
+
$type: "pub.leaflet.blocks.text",
7
+
facets: [],
8
+
plaintext: "just plaintext no facets",
9
+
});
10
+
11
+
expect(html).toMatchInlineSnapshot(`"<p>just plaintext no facets</p>"`);
12
+
});
13
+
14
+
test("should correctly parse a text block with bolded text", () => {
15
+
const html = parseTextBlock({
16
+
$type: "pub.leaflet.blocks.text",
17
+
facets: [
18
+
{
19
+
index: {
20
+
byteEnd: 11,
21
+
byteStart: 0,
22
+
},
23
+
features: [
24
+
{
25
+
$type: "pub.leaflet.richtext.facet#bold",
26
+
},
27
+
],
28
+
},
29
+
],
30
+
plaintext: "bolded text with some plaintext",
31
+
});
32
+
33
+
expect(html).toMatchInlineSnapshot(
34
+
`"<p><b>bolded text</b> with some plaintext</p>"`,
35
+
);
36
+
});
37
+
38
+
test("should correctly parse a text block with an inline link", () => {
39
+
const html = parseTextBlock({
40
+
$type: "pub.leaflet.blocks.text",
41
+
facets: [
42
+
{
43
+
index: {
44
+
byteEnd: 27,
45
+
byteStart: 0,
46
+
},
47
+
features: [
48
+
{
49
+
uri: "https://blacksky.community/",
50
+
$type: "pub.leaflet.richtext.facet#link",
51
+
},
52
+
],
53
+
},
54
+
],
55
+
plaintext: "https://blacksky.community/",
56
+
});
57
+
58
+
expect(html).toMatchInlineSnapshot(
59
+
`"<p><a href="https://blacksky.community/" target="_blank" rel="noopener noreferrer">https://blacksky.community/</a></p>"`,
60
+
);
61
+
});
62
+
63
+
test("should correctly parse a text block with strikethrough text", () => {
64
+
const html = parseTextBlock({
65
+
$type: "pub.leaflet.blocks.text",
66
+
facets: [
67
+
{
68
+
index: {
69
+
byteEnd: 13,
70
+
byteStart: 0,
71
+
},
72
+
features: [
73
+
{
74
+
$type: "pub.leaflet.richtext.facet#strikethrough",
75
+
},
76
+
],
77
+
},
78
+
],
79
+
plaintext: "strikethrough text with some plaintext",
80
+
});
81
+
82
+
expect(html).toMatchInlineSnapshot(
83
+
`"<p><s>strikethrough</s> text with some plaintext</p>"`,
84
+
);
85
+
});
86
+
87
+
test("should correctly parse a text block with underlined text", () => {
88
+
const html = parseTextBlock({
89
+
$type: "pub.leaflet.blocks.text",
90
+
facets: [
91
+
{
92
+
index: {
93
+
byteEnd: 10,
94
+
byteStart: 0,
95
+
},
96
+
features: [
97
+
{
98
+
$type: "pub.leaflet.richtext.facet#underline",
99
+
},
100
+
],
101
+
},
102
+
],
103
+
plaintext: "underlined text with some plaintext",
104
+
});
105
+
106
+
expect(html).toMatchInlineSnapshot(
107
+
`"<p><span style="text-decoration:underline;">underlined</span> text with some plaintext</p>"`,
108
+
);
109
+
});
110
+
111
+
test("should correctly parse a text block with italicized text", () => {
112
+
const html = parseTextBlock({
113
+
$type: "pub.leaflet.blocks.text",
114
+
facets: [
115
+
{
116
+
index: {
117
+
byteEnd: 10,
118
+
byteStart: 0,
119
+
},
120
+
features: [
121
+
{
122
+
$type: "pub.leaflet.richtext.facet#italic",
123
+
},
124
+
],
125
+
},
126
+
],
127
+
plaintext: "italicized text with some plaintext",
128
+
});
129
+
130
+
expect(html).toMatchInlineSnapshot(
131
+
`"<p><i>italicized</i> text with some plaintext</p>"`,
132
+
);
133
+
});
+18
tests/uri-to-rkey.test.ts
+18
tests/uri-to-rkey.test.ts
···
1
+
import { expect, test } from "vitest";
2
+
import { uriToRkey } from "../lib/utils";
3
+
4
+
test("should throw if invalid at uri is passed in", () => {
5
+
expect(() => uriToRkey("test")).toThrowError("get rkey");
6
+
});
7
+
8
+
test("should pass if valid at uri is passed in", () => {
9
+
expect(
10
+
uriToRkey(
11
+
"at://did:plc:qttsv4e7pu2jl3ilanfgc3zn/pub.leaflet.document/3lvl7m6jd4s2e",
12
+
),
13
+
).toBe("3lvl7m6jd4s2e");
14
+
});
15
+
16
+
test("should not pass if invalid uri is passed in", () => {
17
+
expect(() => uriToRkey("invalid")).toThrowError(/failed to get rkey/i);
18
+
});
+8
-5
tsconfig.json
+8
-5
tsconfig.json
···
6
6
"lib": ["es2022"],
7
7
"target": "es2022",
8
8
"allowJs": true,
9
-
"resolveJsonModule": true,
10
9
"moduleDetection": "force",
11
10
"isolatedModules": true,
12
-
"verbatimModuleSyntax": true,
13
11
"strict": true,
14
12
"noUncheckedIndexedAccess": true,
15
13
"noImplicitOverride": true,
16
-
"module": "NodeNext",
14
+
"module": "nodenext",
15
+
"baseUrl": "lib",
17
16
"outDir": "dist",
18
-
"rootDir": "src",
17
+
"moduleResolution": "nodenext",
18
+
"rootDir": "lib",
19
19
"sourceMap": true,
20
+
"noEmit": true,
20
21
"declaration": true
21
-
}
22
+
},
23
+
"include": ["lib"],
24
+
"exclude": ["node_modules", "dist", "**/*.test.ts"]
22
25
}
+9
tsup.config.ts
+9
tsup.config.ts