Compare changes

Choose any two refs to compare.

+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
··· 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 + }
+5
.changeset/sweet-rockets-fetch.md
··· 1 + --- 2 + "@nulfrost/leaflet-loader-astro": patch 3 + --- 4 + 5 + Add JSDoc comments for available loader options for leafletStaticLoader and leafletLiveLoader
+5
.changeset/tired-suits-double.md
··· 1 + --- 2 + "@nulfrost/leaflet-loader-astro": minor 3 + --- 4 + 5 + Add support for blockquotes
+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
··· 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 }}
+3 -1
.gitignore
··· 1 - node_modules 1 + node_modules 2 + dist 3 + *.tgz
+34
CHANGELOG.md
··· 1 + # leaflet-loader-astro 2 + 3 + ## 1.1.0 4 + 5 + ### Minor Changes 6 + 7 + - 6d70cc6: Added support for these leaflet blocks: 8 + 9 + - ul/li 10 + - math 11 + - code 12 + - img 13 + - hr 14 + 15 + 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 16 + 17 + - 5524ce5: Added the ability to use a handle or did when specifying a repo for leafletStaticLoader and leafletLiveLoader 18 + 19 + ```ts 20 + import { defineLiveCollection } from "astro:content"; 21 + import { leafletLiveLoader } from "leaflet-loader-astro"; 22 + 23 + const documents = defineLiveCollection({ 24 + loader: leafletLiveLoader({ repo: "dane.computer" }), // or repo: did:plc:qttsv4e7pu2jl3ilanfgc3zn, both work! 25 + }); 26 + 27 + export const collections = { documents }; 28 + ``` 29 + 30 + ## 1.0.0 31 + 32 + ### Major Changes 33 + 34 + - b4309c0: This is the initial release for `leaflet-loader-astro`
+204 -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 + ``` 32 + 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 2 92 3 - TODO 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 + 201 + ## License 202 + 203 + MIT 204 + 205 + For questions, contributions, and support, please open an issue on GitHub.
+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
··· 1 + import { defineLexiconConfig } from "@atcute/lex-cli"; 2 + 3 + export default defineLexiconConfig({ 4 + files: ["lexicons/**/*.json"], 5 + outdir: "lib/lexicons/", 6 + });
+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
··· 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
··· 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
··· 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
··· 1 + { 2 + "lexicon": 1, 3 + "id": "pub.leaflet.blocks.horizontalRule", 4 + "defs": { 5 + "main": { 6 + "type": "object", 7 + "required": [], 8 + "properties": {} 9 + } 10 + } 11 + }
+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
··· 1 + { 2 + "lexicon": 1, 3 + "id": "pub.leaflet.blocks.math", 4 + "defs": { 5 + "main": { 6 + "type": "object", 7 + "required": ["tex"], 8 + "properties": { 9 + "tex": { 10 + "type": "string" 11 + } 12 + } 13 + } 14 + } 15 + }
+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
··· 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
··· 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
··· 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
··· 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
··· 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
··· 1 + export { leafletLiveLoader } from "./leaflet-live-loader.js"; 2 + export { leafletStaticLoader } from "./leaftlet-static-loader.js";
+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
··· 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 + }
+13
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 PubLeafletBlocksImage from "./types/pub/leaflet/blocks/image.js"; 7 + export * as PubLeafletBlocksMath from "./types/pub/leaflet/blocks/math.js"; 8 + export * as PubLeafletBlocksText from "./types/pub/leaflet/blocks/text.js"; 9 + export * as PubLeafletBlocksUnorderedList from "./types/pub/leaflet/blocks/unorderedList.js"; 10 + export * as PubLeafletBlocksWebsite from "./types/pub/leaflet/blocks/website.js"; 11 + export * as PubLeafletDocument from "./types/pub/leaflet/document.js"; 12 + export * as PubLeafletPagesLinearDocument from "./types/pub/leaflet/pages/linearDocument.js"; 13 + export * as PubLeafletRichtextFacet from "./types/pub/leaflet/richtext/facet.js";
+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
··· 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
··· 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
··· 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
··· 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> {}
+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
··· 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
··· 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
··· 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
··· 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
··· 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
··· 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
··· 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
··· 1 + import { z } from "astro/zod"; 2 + 3 + export const LeafletDocumentSchema = z.object({ 4 + rkey: z.string(), 5 + cid: z.string(), 6 + title: z.string(), 7 + description: z.string(), 8 + author: z.string(), 9 + publication: z.string(), 10 + publishedAt: z.string(), 11 + });
+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}`;
+380
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 + PubLeafletBlocksImage, 12 + PubLeafletBlocksMath, 13 + PubLeafletBlocksText, 14 + PubLeafletBlocksUnorderedList, 15 + PubLeafletPagesLinearDocument, 16 + } from "./lexicons/index.js"; 17 + import type { 18 + Did, 19 + Facet, 20 + GetLeafletDocumentsParams, 21 + GetSingleLeafletDocumentParams, 22 + LeafletDocumentRecord, 23 + LeafletDocumentView, 24 + MiniDoc, 25 + RichTextSegment, 26 + } from "./types.js"; 27 + 28 + export class LiveLoaderError extends Error { 29 + constructor( 30 + message: string, 31 + public code?: string, 32 + ) { 33 + super(message); 34 + this.name = "LiveLoaderError"; 35 + } 36 + } 37 + 38 + export function uriToRkey(uri: string): string { 39 + const u = AtUri.make(uri); 40 + if (!u.rkey) { 41 + throw new Error("failed to get rkey"); 42 + } 43 + return u.rkey; 44 + } 45 + 46 + export async function resolveMiniDoc(handleOrDid: string) { 47 + try { 48 + const response = await fetch( 49 + `https://slingshot.microcosm.blue/xrpc/com.bad-example.identity.resolveMiniDoc?identifier=${handleOrDid}`, 50 + ); 51 + 52 + if (!response.ok || response.status >= 300) { 53 + throw new Error( 54 + `could not resolve did doc due to invalid handle or did ${handleOrDid}`, 55 + ); 56 + } 57 + const data = (await response.json()) as MiniDoc; 58 + 59 + return { 60 + pds: data.pds, 61 + did: data.did, 62 + }; 63 + } catch { 64 + throw new Error(`failed to resolve handle: ${handleOrDid}`); 65 + } 66 + } 67 + 68 + export async function getLeafletDocuments({ 69 + repo, 70 + reverse, 71 + cursor, 72 + rpc, 73 + limit, 74 + }: GetLeafletDocumentsParams) { 75 + const { ok, data } = await rpc.get("com.atproto.repo.listRecords", { 76 + params: { 77 + collection: "pub.leaflet.document", 78 + cursor, 79 + reverse, 80 + limit, 81 + repo, 82 + }, 83 + }); 84 + 85 + if (!ok) { 86 + throw new LiveLoaderError( 87 + "error fetching leaflet documents", 88 + "DOCUMENT_FETCH_ERROR", 89 + ); 90 + } 91 + 92 + return { 93 + documents: data?.records, 94 + cursor: data?.cursor, 95 + }; 96 + } 97 + 98 + export async function getSingleLeafletDocument({ 99 + rpc, 100 + repo, 101 + id, 102 + }: GetSingleLeafletDocumentParams) { 103 + const { ok, data } = await rpc.get("com.atproto.repo.getRecord", { 104 + params: { 105 + collection: "pub.leaflet.document", 106 + repo, 107 + rkey: id, 108 + }, 109 + }); 110 + 111 + if (!ok) { 112 + throw new LiveLoaderError( 113 + "error fetching single document", 114 + "DOCUMENT_FETCH_ERROR", 115 + ); 116 + } 117 + 118 + return data; 119 + } 120 + 121 + export function leafletDocumentRecordToView({ 122 + uri, 123 + cid, 124 + value, 125 + }: { 126 + uri: string; 127 + cid: string; 128 + value: LeafletDocumentRecord; 129 + }): LeafletDocumentView { 130 + return { 131 + rkey: uriToRkey(uri), 132 + cid, 133 + title: value.title, 134 + description: value.description, 135 + author: value.author, 136 + publication: value.publication, 137 + publishedAt: value.publishedAt, 138 + }; 139 + } 140 + 141 + export function leafletBlocksToHTML({ 142 + record, 143 + did, 144 + }: { 145 + record: LeafletDocumentRecord; 146 + did: string; 147 + }) { 148 + let html = ""; 149 + const firstPage = record.pages[0]; 150 + let blocks: PubLeafletPagesLinearDocument.Block[] = []; 151 + 152 + if (is(PubLeafletPagesLinearDocument.mainSchema, firstPage)) { 153 + blocks = firstPage.blocks || []; 154 + } 155 + 156 + for (const block of blocks) { 157 + html += parseBlocks({ block, did }); 158 + } 159 + 160 + return sanitizeHTML(html, { 161 + allowedAttributes: { 162 + "*": ["class", "style"], 163 + img: ["src", "height", "width", "alt"], 164 + a: ["href", "target", "rel"], 165 + }, 166 + allowedTags: [ 167 + "img", 168 + "pre", 169 + "code", 170 + "p", 171 + "a", 172 + "b", 173 + "s", 174 + "ul", 175 + "li", 176 + "i", 177 + "h1", 178 + "h2", 179 + "h3", 180 + "h4", 181 + "h5", 182 + "h6", 183 + "hr", 184 + "div", 185 + "span", 186 + "blockquote", 187 + ], 188 + selfClosing: ["img"], 189 + }); 190 + } 191 + 192 + export class RichText { 193 + unicodeText: UnicodeString; 194 + facets?: Facet[]; 195 + constructor(props: { text: string; facets: Facet[] }) { 196 + this.unicodeText = new UnicodeString(props.text); 197 + this.facets = props.facets; 198 + if (this.facets) { 199 + this.facets = this.facets 200 + .filter((facet) => facet.index.byteStart <= facet.index.byteEnd) 201 + .sort((a, b) => a.index.byteStart - b.index.byteStart); 202 + } 203 + } 204 + 205 + *segments(): Generator<RichTextSegment, void, void> { 206 + const facets = this.facets || []; 207 + if (!facets.length) { 208 + yield { text: this.unicodeText.utf16 }; 209 + return; 210 + } 211 + 212 + let textCursor = 0; 213 + let facetCursor = 0; 214 + do { 215 + const currFacet = facets[facetCursor]; 216 + if (currFacet) { 217 + if (textCursor < currFacet.index.byteStart) { 218 + yield { 219 + text: this.unicodeText.slice(textCursor, currFacet.index.byteStart), 220 + }; 221 + } else if (textCursor > currFacet.index.byteStart) { 222 + facetCursor++; 223 + continue; 224 + } 225 + if (currFacet.index.byteStart < currFacet.index.byteEnd) { 226 + const subtext = this.unicodeText.slice( 227 + currFacet.index.byteStart, 228 + currFacet.index.byteEnd, 229 + ); 230 + if (!subtext.trim()) { 231 + // dont empty string entities 232 + yield { text: subtext }; 233 + } else { 234 + yield { text: subtext, facet: currFacet.features }; 235 + } 236 + } 237 + textCursor = currFacet.index.byteEnd; 238 + facetCursor++; 239 + } 240 + } while (facetCursor < facets.length); 241 + if (textCursor < this.unicodeText.length) { 242 + yield { 243 + text: this.unicodeText.slice(textCursor, this.unicodeText.length), 244 + }; 245 + } 246 + } 247 + } 248 + 249 + export function parseTextBlock(block: PubLeafletBlocksText.Main) { 250 + let html = ""; 251 + const rt = new RichText({ 252 + text: block.plaintext, 253 + facets: block.facets || [], 254 + }); 255 + const children = []; 256 + for (const segment of rt.segments()) { 257 + const link = segment.facet?.find( 258 + (segment) => segment.$type === "pub.leaflet.richtext.facet#link", 259 + ); 260 + const isBold = segment.facet?.find( 261 + (segment) => segment.$type === "pub.leaflet.richtext.facet#bold", 262 + ); 263 + const isCode = segment.facet?.find( 264 + (segment) => segment.$type === "pub.leaflet.richtext.facet#code", 265 + ); 266 + const isStrikethrough = segment.facet?.find( 267 + (segment) => segment.$type === "pub.leaflet.richtext.facet#strikethrough", 268 + ); 269 + const isUnderline = segment.facet?.find( 270 + (segment) => segment.$type === "pub.leaflet.richtext.facet#underline", 271 + ); 272 + const isItalic = segment.facet?.find( 273 + (segment) => segment.$type === "pub.leaflet.richtext.facet#italic", 274 + ); 275 + if (isCode) { 276 + children.push(`<pre><code>${segment.text}</code></pre>`); 277 + } else if (link) { 278 + children.push( 279 + `<a href="${link.uri}" target="_blank" rel="noopener noreferrer">${segment.text}</a>`, 280 + ); 281 + } else if (isBold) { 282 + children.push(`<b>${segment.text}</b>`); 283 + } else if (isStrikethrough) { 284 + children.push(`<s>${segment.text}</s>`); 285 + } else if (isUnderline) { 286 + children.push( 287 + `<span style="text-decoration:underline;">${segment.text}</span>`, 288 + ); 289 + } else if (isItalic) { 290 + children.push(`<i>${segment.text}</i>`); 291 + } else { 292 + children.push(`${segment.text}`); 293 + } 294 + } 295 + html += `<p>${children.join("")}</p>`; 296 + 297 + return html.trim(); 298 + } 299 + 300 + export function parseBlocks({ 301 + block, 302 + did, 303 + }: { 304 + block: PubLeafletPagesLinearDocument.Block; 305 + did: string; 306 + }): string { 307 + let html = ""; 308 + 309 + if (is(PubLeafletBlocksText.mainSchema, block.block)) { 310 + html += parseTextBlock(block.block); 311 + } 312 + 313 + if (is(PubLeafletBlocksHeader.mainSchema, block.block)) { 314 + if (block.block.level === 1) { 315 + html += `<h2>${block.block.plaintext}</h2>`; 316 + } 317 + } 318 + if (is(PubLeafletBlocksHeader.mainSchema, block.block)) { 319 + if (block.block.level === 2) { 320 + html += `<h3>${block.block.plaintext}</h3>`; 321 + } 322 + } 323 + if (is(PubLeafletBlocksHeader.mainSchema, block.block)) { 324 + if (block.block.level === 3) { 325 + html += `<h4>${block.block.plaintext}</h4>`; 326 + } 327 + } 328 + if (is(PubLeafletBlocksHeader.mainSchema, block.block)) { 329 + if (!block.block.level) { 330 + html += `<h6>${block.block.plaintext}</h6>`; 331 + } 332 + } 333 + 334 + if (is(PubLeafletBlocksHorizontalRule.mainSchema, block.block)) { 335 + html += `<hr />`; 336 + } 337 + if (is(PubLeafletBlocksUnorderedList.mainSchema, block.block)) { 338 + html += `<ul>${block.block.children.map((child) => renderListItem({ item: child, did })).join("")}</ul>`; 339 + } 340 + 341 + if (is(PubLeafletBlocksMath.mainSchema, block.block)) { 342 + html += `<div>${katex.renderToString(block.block.tex, { displayMode: true, output: "html", throwOnError: false })}</div>`; 343 + } 344 + 345 + if (is(PubLeafletBlocksCode.mainSchema, block.block)) { 346 + html += `<pre><code data-language=${block.block.language}>${block.block.plaintext}</code></pre>`; 347 + } 348 + 349 + if (is(PubLeafletBlocksImage.mainSchema, block.block)) { 350 + // @ts-ignore 351 + 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>`; 352 + } 353 + 354 + if (is(PubLeafletBlocksBlockquote.mainSchema, block.block)) { 355 + html += `<blockquote>${parseTextBlock(block.block)}</blockquote>`; 356 + } 357 + 358 + return html.trim(); 359 + } 360 + 361 + export function renderListItem({ 362 + item, 363 + did, 364 + }: { 365 + item: PubLeafletBlocksUnorderedList.ListItem; 366 + did: string; 367 + }): string { 368 + const children: string | null = item.children?.length 369 + ? `<ul>${item.children.map((child) => renderListItem({ item: child, did }))}</ul>` 370 + : ""; 371 + 372 + return `<li>${parseBlocks({ block: { block: item.content }, did })}${children}</li>`; 373 + } 374 + 375 + // yoinked from: https://github.com/mary-ext/atcute/blob/trunk/packages/lexicons/lexicons/lib/syntax/handle.ts 376 + const PLC_DID_RE = /^did:plc:([a-z2-7]{24})$/; 377 + 378 + export const isPlcDid = (input: string): input is Did<"plc"> => { 379 + return input.length === 32 && PLC_DID_RE.test(input); 380 + };
+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.1.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
··· 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
··· 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
··· 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
··· 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
··· 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
··· 1 + import { defineConfig } from "tsup"; 2 + 3 + export default defineConfig({ 4 + entryPoints: ["lib/index.ts"], 5 + format: ["cjs", "esm"], 6 + dts: true, 7 + outDir: "dist", 8 + clean: true, 9 + });
+8
vitest.config.ts
··· 1 + import { defineConfig } from "vitest/config"; 2 + 3 + export default defineConfig({ 4 + test: { 5 + globals: true, 6 + environment: "node", 7 + }, 8 + });