social bookmarking for atproto

Compare changes

Choose any two refs to compare.

Changed files
+4302 -5142
.husky
.idea
dictionaries
.tangled
backend
frontend
lexdocs
lexicons
+30
.husky/pre-commit
··· 1 + #!/bin/sh 2 + 3 + # 4 + # clippr: a social bookmarking service for the AT Protocol 5 + # Copyright (c) 2025 clippr contributors. 6 + # SPDX-License-Identifier: AGPL-3.0-only 7 + # 8 + 9 + test() { 10 + cd backend || return 1 11 + pnpm run fmt 12 + pnpm run lint 13 + cd ../frontend || return 1 14 + pnpm run fmt 15 + cd ../lexicons || return 1 16 + pnpm run generate 17 + pnpm run prepublish 18 + } 19 + 20 + echo "Testing code for any errors before committing..." 21 + test 22 + if [ $? -ne 0 ]; then { 23 + echo "Linting failed. Commit aborted." 24 + exit 1 25 + } 26 + fi 27 + 28 + echo "All relevant checks passed. Proceeding with commit." 29 + exit 0 30 +
+2
.idea/dictionaries/project.xml
··· 6 6 <w>appview</w> 7 7 <w>atcute</w> 8 8 <w>atproto</w> 9 + <w>atprotocol</w> 9 10 <w>bluesky</w> 10 11 <w>bsky</w> 11 12 <w>clippr</w> ··· 17 18 <w>llms</w> 18 19 <w>llmstxt</w> 19 20 <w>multiformats</w> 21 + <w>nodeinfo</w> 20 22 <w>nsid</w> 21 23 <w>outdir</w> 22 24 <w>rkey</w>
+5
.tangled/workflows/build_backend.yaml
··· 3 3 branch: [ "main" ] 4 4 - event: [ "manual" ] 5 5 6 + engine: "nixery" 7 + 6 8 dependencies: 7 9 nixpkgs: 8 10 - nodejs ··· 23 25 command: "pnpm run --dir ./backend/ build" 24 26 environment: 25 27 NODE_ENV: "production" 28 + 29 + environment: 30 + GIT_BRANCH: "main" 26 31 27 32 clone: 28 33 skip: false
+5 -3
.tangled/workflows/build_frontend.yaml
··· 3 3 branch: [ "main" ] 4 4 - event: [ "manual" ] 5 5 6 + engine: "nixery" 7 + 6 8 dependencies: 7 9 nixpkgs: 8 10 - nodejs ··· 16 18 NODE_ENV: "development" 17 19 CI: true 18 20 19 - - name: "Run linter" 20 - command: "pnpm run --dir ./frontend/ lint" 21 - 22 21 - name: "Build frontend" 23 22 command: "pnpm run --dir ./frontend/ build" 23 + 24 + environment: 25 + GIT_BRANCH: "main" 24 26 25 27 clone: 26 28 skip: false
+5
.tangled/workflows/build_lexicons.yaml
··· 3 3 branch: [ "main" ] 4 4 - event: [ "manual" ] 5 5 6 + engine: "nixery" 7 + 6 8 dependencies: 7 9 nixpkgs: 8 10 - nodejs ··· 23 25 command: "pnpm run --dir ./lexicons/ prepublish" 24 26 environment: 25 27 NODE_ENV: "production" 28 + 29 + environment: 30 + GIT_BRANCH: "main" 26 31 27 32 clone: 28 33 skip: false
+27 -14
README.md
··· 1 1 # clippr 2 2 3 - social bookmarking for atproto 3 + Social bookmarking for the AT Protocol. 4 4 5 5 ## current status 6 6 7 - we are currently working on completing the appview first before moving on to the frontend or any other packages. 7 + Our current focus is on completing the AppView first before moving on in full earnest to the frontend or any other 8 + packages; however, some may be developed in tandem if necessary. 9 + 10 + The AppView currently has support for indexing records that are created, updated or deleted, some basic queries and DID 11 + service proxying. Authenticated endpoints and most other queries are currently not implemented. 8 12 9 - a lexicon package is available for those using atcute, however, it is still under heavy development. we do not recommend 10 - using it in any way until the appview is ready. 13 + The frontend has OAuth authentication and the ability to view and edit profiles, but is otherwise empty. 11 14 12 - the frontend has no interactivity and is basically just a mockup. 15 + A lexicon package is available for those using [atcute](https://github.com/mary-ext/atcute), but it is still under 16 + heavy development. We do not recommend 17 + using it in any production environment until the AppView is functionally complete. 13 18 14 19 ## what's in here? 15 20 16 - the project is sorted into different sections, with each root-level folder signifying a package. 21 + The project is sorted into different sections, with each root-level folder signifying a package. 17 22 18 - each section will usually contain its own README.md file dedicated to it, going into more detail about that specific 23 + Each section will usually contain its own README.md file dedicated to it, going into more detail about that specific 19 24 package. 20 25 21 - | package | description | 22 - |--------------------------------------------------------------------------|------------------------------------------------------| 23 - | [``backend``](https://tangled.sh/@hexmani.ac/clippr/tree/main/backend) | the reference appview written using node and hono | 24 - | [``frontend``](https://tangled.sh/@hexmani.ac/clippr/tree/main/frontend) | the reference client written in astro and typescript | 25 - | [``lexdocs``](https://tangled.sh/@hexmani.ac/clippr/tree/main/lexdocs) | the original lexicon files | 26 - | [``lexicons``](https://tangled.sh/@hexmani.ac/clippr/tree/main/lexicons) | an atcute package for the clippr lexicons | 26 + | package | description | 27 + |--------------------------------------------------------------------------|---------------------------------------------------| 28 + | [``backend``](https://tangled.sh/@hexmani.ac/clippr/tree/main/backend) | The reference AppView written using Node and Hono | 29 + | [``frontend``](https://tangled.sh/@hexmani.ac/clippr/tree/main/frontend) | The reference client written in Solid | 30 + | [``lexdocs``](https://tangled.sh/@hexmani.ac/clippr/tree/main/lexdocs) | The original Lexicon files | 31 + | [``lexicons``](https://tangled.sh/@hexmani.ac/clippr/tree/main/lexicons) | An atcute package for the clippr lexicons | 27 32 28 33 ## roadmap 29 34 30 - soonโ„ข๏ธ 35 + soonโ„ข๏ธ 36 + 37 + ## license 38 + 39 + All project code is licensed as free software under the 40 + [**GNU Affero General Public License**](https://tangled.sh/@hexmani.ac/clippr/blob/main/LICENSE), exclusively under 41 + version 3. However, the Lexicon schema files are licensed under the permissive 42 + [**MIT License**](https://tangled.sh/@hexmani.ac/clippr/blob/main/lexdocs/LICENSE) to encourage forks and to allow them 43 + to be used in projects that are incompatible with the AGPL.
+16 -17
backend/README.md
··· 1 1 # @clipprjs/server 2 2 3 - typescript implementation of clippr appview using ~~bun~~ deno and hono 3 + TypeScript implementation of the Clippr AppView, using ~~Bun~~ NodeJS and Hono. 4 + 5 + > **Why not Bun?** We currently aren't using Bun due to some compatibility errors. A migration to 6 + > Bun is planned in the future, preferably before launch. 4 7 5 - ## run and develop 8 + ## Start development server 6 9 7 10 ```shell 8 11 pnpm install 12 + cp config.example.toml config.toml # Customize as necessary 9 13 pnpm run db:push 10 14 pnpm run dev 11 15 ``` 12 16 13 - open http://localhost:9090 and enjoy 14 - 15 - ## build for production 17 + ## Build for production 16 18 17 19 ```shell 18 20 pnpm install 21 + cp config.example.toml config.toml # Customize as necessary 19 22 pnpm run db:push 20 23 pnpm run build 21 24 pnpm run start 22 25 ``` 23 26 27 + Open http://localhost:9090 and enjoy 28 + 24 29 ## current status 25 30 26 - right now we're not running on bun because there are 27 - [some issues with partysocket](https://github.com/oven-sh/bun/issues/18807), which haven't been 28 - fixed yet and which the jetstream library we use depends on for the moment. once it has been fixed, 29 - we do plan to use bun over node in the future. 30 - 31 - ### checklist before it's usable 32 - 33 31 - โœ… Ingesting content from the firehose (using Jetstream) 34 - - โœ… Creating the lexicon documents and validating content that comes in from the firehose 32 + - โœ… Validating incoming content according to the Lexicon schema 35 33 - โœ… Indexing valid content from the firehose into a database 36 - - Handling OAuth authentication (public OAuth for the moment) 37 - - Creating responses to API calls 38 - - Create records through the API 39 - - Interact with the frontend 34 + - โœ… Support for DID service proxying and Nodeinfo 35 + - ๐ŸŸก API documentation 36 + - ๐ŸŸก Creating responses to unauthenticated API calls 37 + - ๐ŸŸก Interactions with the frontend 38 + - ๐Ÿ”ด Creating responses to authenticated API calls
+17 -4
backend/config.example.toml
··· 2 2 ## Please copy to "config.example.toml" before starting the server, 3 3 ## otherwise it will not start. Modify as necessary. 4 4 5 + ## Where the server is broadcasted to. 5 6 hostname = "localhost" 6 7 port = 9090 7 8 9 + ## Where the server will be deployed to. 10 + baseUrl = "https://localhost:9090" 11 + 8 12 ## For most deployments, you will want to keep the log level at "info". 9 - ## If you are debugging the software, move it down to "debug". 13 + ## If you are a developer, move it down to "debug" for more information. 10 14 ## 11 15 ## List of all recognized log levels, sorted by importance: 12 16 ## "error" - Critical errors, typically leading to a crash or a degraded state. ··· 16 20 ## "verbose" - Details more of the server's operations. 17 21 ## "debug" - Information for developers, meant for debugging. 18 22 ## "silly" - Anything goes. 19 - log-level = "info" 23 + logLevel = "info" 20 24 21 25 ## How the SQLite database is stored. 22 - ## For testing, you can store the database in memory with ":memory:" 26 + ## NOTE: Storing the database in-memory does not work as the schema is not properly loaded. Fixme! 23 27 [database] 24 28 ## Paths can be used here. 29 + ## It is not recommended to change this if you are using Docker. 25 30 name = "file:clippr.db" 26 31 27 32 ## How the server interacts with the ATproto network. 28 33 [network] 29 - firehose = "jetstream1.us-east.bsky.network" 34 + ## What Jetstream instance to use for receiving content from the network. 35 + ## Non-Bluesky relay: relay2.fire.hose.cam 36 + firehose = "jetstream1.us-east.bsky.network" 37 + ## What DID to use for service proxying. This should be the domain that the API is accessible from. 38 + ## Default: "did:web:localhost%3A9090" 39 + serviceDid = "did:web:localhost%3A9090" 40 + ## A multibase public key to use for DID service proxying, formatted as "did:key:[key]". 41 + ## Do not use the default key outside of development. 42 + didSigningKey = "did:key:zDnaeuuRRQuYp4S76LwosLhHbpU1HJcg6S5oJAUHmdZLVdLM5"
+2 -7
backend/drizzle.config.ts
··· 8 8 // @ts-expect-error Read from the TypeScript file instead of assuming that it's JavaScript 9 9 import { Config } from "./src/config.ts"; 10 10 11 - const config = Config.getInstance(); 12 - let dbname; 13 - 14 - dbname = config.get("database.name"); 15 - if (typeof dbname !== "string") { 16 - dbname = "file:clippr.db"; // Only way to disable linter error 17 - } 11 + const config = Config.getInstance().getConfig(); 12 + const dbname = config.database.name; 18 13 19 14 export default defineConfig({ 20 15 out: "./drizzle",
+22 -19
backend/package.json
··· 9 9 "start": "node dist/src/main.js", 10 10 "lint": "npx eslint .", 11 11 "lint-write": "npx eslint . --fix", 12 + "test": "vitest", 12 13 "fmt": "npx prettier --write .", 13 14 "db:push": "npx drizzle-kit push" 14 15 }, ··· 18 19 "node": ">=22.16.0" 19 20 }, 20 21 "dependencies": { 21 - "@atcute/atproto": "^3.1.1", 22 + "@atcute/atproto": "^3.1.2", 22 23 "@atcute/client": "^4.0.3", 24 + "@atcute/crypto": "^2.2.4", 23 25 "@atcute/identity": "^1.0.3", 24 26 "@atcute/identity-resolver": "^1.1.3", 25 27 "@atcute/lexicon-doc": "^1.0.3", 26 - "@atcute/lexicons": "^1.1.0", 27 - "@clipprjs/lexicons": "^1.0.2", 28 + "@atcute/lexicons": "^1.1.1", 29 + "@clipprjs/lexicons": "^1.0.3", 28 30 "@eslint/eslintrc": "^3.3.1", 29 - "@hono/node-server": "^1.17.1", 30 - "@libsql/client": "^0.15.10", 31 - "@scalar/hono-api-reference": "^0.9.12", 32 - "@scalar/openapi-to-markdown": "^0.2.23", 31 + "@hono/node-server": "^1.19.0", 32 + "@libsql/client": "^0.15.12", 33 + "@scalar/hono-api-reference": "^0.9.15", 34 + "@scalar/openapi-to-markdown": "^0.2.28", 33 35 "@skyware/jetstream": "^0.2.5", 34 - "drizzle-orm": "^0.44.3", 35 - "hono": "^4.8.5", 36 + "drizzle-orm": "^0.44.4", 37 + "hono": "^4.9.4", 36 38 "toml": "^3.0.0", 37 39 "winston": "^3.17.0", 38 40 "xxhash-wasm": "^1.1.0" 39 41 }, 40 42 "devDependencies": { 41 43 "@atcute/lex-cli": "^2.1.1", 42 - "@eslint/js": "^9.31.0", 43 - "@types/node": "^24.1.0", 44 - "@typescript-eslint/eslint-plugin": "^8.38.0", 45 - "@typescript-eslint/parser": "^8.38.0", 44 + "@eslint/js": "^9.33.0", 45 + "@types/node": "^24.3.0", 46 + "@typescript-eslint/eslint-plugin": "^8.40.0", 47 + "@typescript-eslint/parser": "^8.40.0", 46 48 "drizzle-kit": "^0.31.4", 47 - "eslint": "^9.31.0", 49 + "eslint": "^9.33.0", 48 50 "eslint-config-prettier": "^10.1.8", 49 51 "eslint-plugin-drizzle": "^0.2.3", 50 52 "eslint-plugin-import": "^2.32.0", 51 - "eslint-plugin-prettier": "^5.5.3", 53 + "eslint-plugin-prettier": "^5.5.4", 52 54 "globals": "^16.3.0", 53 - "jiti": "^2.4.2", 55 + "jiti": "^2.5.1", 54 56 "prettier": "^3.6.2", 55 - "tsx": "^4.20.3", 56 - "typescript": "^5.8.3", 57 - "typescript-eslint": "^8.38.0" 57 + "tsx": "^4.20.4", 58 + "typescript": "^5.9.2", 59 + "typescript-eslint": "^8.40.0", 60 + "vitest": "^3.2.4" 58 61 } 59 62 }
+1311 -633
backend/pnpm-lock.yaml
··· 9 9 .: 10 10 dependencies: 11 11 '@atcute/atproto': 12 - specifier: ^3.1.1 13 - version: 3.1.1 12 + specifier: ^3.1.2 13 + version: 3.1.2 14 14 '@atcute/client': 15 15 specifier: ^4.0.3 16 16 version: 4.0.3 17 + '@atcute/crypto': 18 + specifier: ^2.2.4 19 + version: 2.2.4 17 20 '@atcute/identity': 18 21 specifier: ^1.0.3 19 22 version: 1.0.3 ··· 24 27 specifier: ^1.0.3 25 28 version: 1.0.3 26 29 '@atcute/lexicons': 27 - specifier: ^1.1.0 28 - version: 1.1.0 30 + specifier: ^1.1.1 31 + version: 1.1.1 29 32 '@clipprjs/lexicons': 30 - specifier: ^1.0.2 31 - version: 1.0.2 33 + specifier: ^1.0.3 34 + version: 1.0.3 32 35 '@eslint/eslintrc': 33 36 specifier: ^3.3.1 34 37 version: 3.3.1 35 38 '@hono/node-server': 36 - specifier: ^1.17.1 37 - version: 1.17.1(hono@4.8.5) 39 + specifier: ^1.19.0 40 + version: 1.19.0(hono@4.9.4) 38 41 '@libsql/client': 39 - specifier: ^0.15.10 40 - version: 0.15.10 42 + specifier: ^0.15.12 43 + version: 0.15.12 41 44 '@scalar/hono-api-reference': 42 - specifier: ^0.9.12 43 - version: 0.9.12(hono@4.8.5) 45 + specifier: ^0.9.15 46 + version: 0.9.15(hono@4.9.4) 44 47 '@scalar/openapi-to-markdown': 45 - specifier: ^0.2.23 46 - version: 0.2.23(typescript@5.8.3) 48 + specifier: ^0.2.28 49 + version: 0.2.28(typescript@5.9.2) 47 50 '@skyware/jetstream': 48 51 specifier: ^0.2.5 49 52 version: 0.2.5 50 53 drizzle-orm: 51 - specifier: ^0.44.3 52 - version: 0.44.3(@libsql/client@0.15.10)(bun-types@1.2.17) 54 + specifier: ^0.44.4 55 + version: 0.44.4(@libsql/client@0.15.12)(bun-types@1.2.17) 53 56 hono: 54 - specifier: ^4.8.5 55 - version: 4.8.5 57 + specifier: ^4.9.4 58 + version: 4.9.4 56 59 toml: 57 60 specifier: ^3.0.0 58 61 version: 3.0.0 ··· 67 70 specifier: ^2.1.1 68 71 version: 2.1.1 69 72 '@eslint/js': 70 - specifier: ^9.31.0 71 - version: 9.31.0 73 + specifier: ^9.33.0 74 + version: 9.33.0 72 75 '@types/node': 73 - specifier: ^24.1.0 74 - version: 24.1.0 76 + specifier: ^24.3.0 77 + version: 24.3.0 75 78 '@typescript-eslint/eslint-plugin': 76 - specifier: ^8.38.0 77 - version: 8.38.0(@typescript-eslint/parser@8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) 79 + specifier: ^8.40.0 80 + version: 8.40.0(@typescript-eslint/parser@8.40.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) 78 81 '@typescript-eslint/parser': 79 - specifier: ^8.38.0 80 - version: 8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) 82 + specifier: ^8.40.0 83 + version: 8.40.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) 81 84 drizzle-kit: 82 85 specifier: ^0.31.4 83 86 version: 0.31.4 84 87 eslint: 85 - specifier: ^9.31.0 86 - version: 9.31.0(jiti@2.4.2) 88 + specifier: ^9.33.0 89 + version: 9.33.0(jiti@2.5.1) 87 90 eslint-config-prettier: 88 91 specifier: ^10.1.8 89 - version: 10.1.8(eslint@9.31.0(jiti@2.4.2)) 92 + version: 10.1.8(eslint@9.33.0(jiti@2.5.1)) 90 93 eslint-plugin-drizzle: 91 94 specifier: ^0.2.3 92 - version: 0.2.3(eslint@9.31.0(jiti@2.4.2)) 95 + version: 0.2.3(eslint@9.33.0(jiti@2.5.1)) 93 96 eslint-plugin-import: 94 97 specifier: ^2.32.0 95 - version: 2.32.0(@typescript-eslint/parser@8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.31.0(jiti@2.4.2)) 98 + version: 2.32.0(@typescript-eslint/parser@8.40.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.33.0(jiti@2.5.1)) 96 99 eslint-plugin-prettier: 97 - specifier: ^5.5.3 98 - version: 5.5.3(eslint-config-prettier@10.1.8(eslint@9.31.0(jiti@2.4.2)))(eslint@9.31.0(jiti@2.4.2))(prettier@3.6.2) 100 + specifier: ^5.5.4 101 + version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.33.0(jiti@2.5.1)))(eslint@9.33.0(jiti@2.5.1))(prettier@3.6.2) 99 102 globals: 100 103 specifier: ^16.3.0 101 104 version: 16.3.0 102 105 jiti: 103 - specifier: ^2.4.2 104 - version: 2.4.2 106 + specifier: ^2.5.1 107 + version: 2.5.1 105 108 prettier: 106 109 specifier: ^3.6.2 107 110 version: 3.6.2 108 111 tsx: 109 - specifier: ^4.20.3 110 - version: 4.20.3 112 + specifier: ^4.20.4 113 + version: 4.20.4 111 114 typescript: 112 - specifier: ^5.8.3 113 - version: 5.8.3 115 + specifier: ^5.9.2 116 + version: 5.9.2 114 117 typescript-eslint: 115 - specifier: ^8.38.0 116 - version: 8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) 118 + specifier: ^8.40.0 119 + version: 8.40.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) 120 + vitest: 121 + specifier: ^3.2.4 122 + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.0) 117 123 118 124 packages: 119 125 120 - '@atcute/atproto@3.1.1': 121 - resolution: {integrity: sha512-D+RLTIPF0xLu7BPZY8KSewAPemJFh+3n3zeQ3ROsLxbTtCHbrTDMAmAFexaVRAPGcPYrwXaBUlv7yZjScJolMg==} 126 + '@atcute/atproto@3.1.2': 127 + resolution: {integrity: sha512-m6OWoGTeL8Wlw7cm8Nrf+NU24rlx5A0DzxEQQPPu1wqYNHw6S33nOU90W+U09vVN0aZGZUrLFfWWhAaSWTp1ZQ==} 122 128 123 - '@atcute/bluesky@3.1.5': 124 - resolution: {integrity: sha512-OJO1HOqRZmpSQ2W2QSbgGIk301JUX7rmLV8LYqQGxsbpNJOLNJ8//vcD4Ag4WsxTRm+Z+vEUZ4qWXnNsZlgXXg==} 129 + '@atcute/bluesky@3.2.1': 130 + resolution: {integrity: sha512-WehZuGNEC9NNB2y7Jg/i4ANzbMEQzs2EwrLYKWDuvJT3YnPHEol3vkc4DK47TODs3TiacQJp4MWhsQyfktsZ6g==} 125 131 126 132 '@atcute/client@4.0.3': 127 133 resolution: {integrity: sha512-RIOZWFVLca/HiPAAUDqQPOdOreCxTbL5cb+WUf5yqQOKIu5yEAP3eksinmlLmgIrlr5qVOE7brazUUzaskFCfw==} 134 + 135 + '@atcute/crypto@2.2.4': 136 + resolution: {integrity: sha512-88LbuJr63bbdJywd949YgbEiaaW4UU5iXJcFE1WqY/5ItYuoHWVdmL3XsqehiM0AfzvrYEfd5ox2wm9CK9dyQQ==} 128 137 129 138 '@atcute/identity-resolver@1.1.3': 130 139 resolution: {integrity: sha512-KZgGgg99CWaV7Df3+h3X/WMrDzTPQVfsaoIVbTNLx2B56BvCL2EmaxPSVw/7BFUJMZHlVU4rtoEB4lyvNyMswA==} ··· 141 150 '@atcute/lexicon-doc@1.0.3': 142 151 resolution: {integrity: sha512-U7rinsTOwXGGcrF6/s7GzTXargcQpDr4BTrj5ci/XTK+POEK5jpcI+Ag1fF932pBX3k97em6y4TWwTSO8M/McQ==} 143 152 144 - '@atcute/lexicons@1.1.0': 145 - resolution: {integrity: sha512-LFqwnria78xLYb62Ri/+WwQpUTgZp2DuyolNGIIOV1dpiKhFFFh//nscHMA6IExFLQRqWDs3tTjy7zv0h3sf1Q==} 153 + '@atcute/lexicons@1.1.1': 154 + resolution: {integrity: sha512-k6qy5p3j9fJJ6ekaMPfEfp3ni4TW/XNuH9ZmsuwC0fi0tOjp+Fa8ZQakHwnqOzFt/cVBfGcmYE/lKNAbeTjgUg==} 155 + 156 + '@atcute/multibase@1.1.5': 157 + resolution: {integrity: sha512-vbmEFxgpntMuRqVZOCBgf6bgq69UGrlznQCZirVSit/mlcgyFVkSGbSEfkRnpIcrM8SnaySwuKbVvL+EPLh2dw==} 158 + 159 + '@atcute/uint8array@1.0.4': 160 + resolution: {integrity: sha512-9jASMDghzhhDwjF3+eW+ZIauvytnUWDPfUVGUValRwnf9AZ7Yqqkc76tC89HVzVDAlJdhwQIUG2dQBsiVqumUA==} 146 161 147 162 '@atcute/util-fetch@1.0.1': 148 163 resolution: {integrity: sha512-Clc0E/5ufyGBVfYBUwWNlHONlZCoblSr4Ho50l1LhmRPGB1Wu/AQ9Sz+rsBg7fdaW/auve8ulmwhRhnX2cGRow==} ··· 155 170 resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} 156 171 engines: {node: '>=6.9.0'} 157 172 158 - '@babel/parser@7.28.0': 159 - resolution: {integrity: sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==} 173 + '@babel/parser@7.28.3': 174 + resolution: {integrity: sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==} 160 175 engines: {node: '>=6.0.0'} 161 176 hasBin: true 162 177 163 - '@babel/types@7.28.1': 164 - resolution: {integrity: sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==} 178 + '@babel/types@7.28.2': 179 + resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==} 165 180 engines: {node: '>=6.9.0'} 166 181 167 - '@badrap/valita@0.4.5': 168 - resolution: {integrity: sha512-4QwGbuhh/JesHRQj79mO/l37PvJj4l/tlAu7+S1n4h47qwaNpZ0WDvIwUGLYUsdi9uQ5UPpiG9wb1Wm3XUFBUQ==} 182 + '@badrap/valita@0.4.6': 183 + resolution: {integrity: sha512-4kdqcjyxo/8RQ8ayjms47HCWZIF5981oE5nIenbfThKDxWXtEHKipAOWlflpPJzZx9y/JWYQkp18Awr7VuepFg==} 169 184 engines: {node: '>= 18'} 170 185 171 - '@clipprjs/lexicons@1.0.2': 172 - resolution: {integrity: sha512-AIof/RWAtwq/8ygMSNS5KzElbPdXWD9WEX4uGCgAb0RQ/FJUe41X7gIpL0MYOrVtLmOwH+A5rHxq8o3Tn3b8Sg==} 186 + '@clipprjs/lexicons@1.0.3': 187 + resolution: {integrity: sha512-RmdrHXcIXBuLcqoDyLexJKNdz06wCvZsHxDlo8XY54J7Qpm7Sp5+K9jeeuEYJEiFZ1b6Tds0aggvi9s0s0NrMw==} 173 188 174 189 '@colors/colors@1.6.0': 175 190 resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} ··· 189 204 resolution: {integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==} 190 205 deprecated: 'Merged into tsx: https://tsx.is' 191 206 192 - '@esbuild/aix-ppc64@0.25.8': 193 - resolution: {integrity: sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==} 207 + '@esbuild/aix-ppc64@0.25.9': 208 + resolution: {integrity: sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==} 194 209 engines: {node: '>=18'} 195 210 cpu: [ppc64] 196 211 os: [aix] ··· 201 216 cpu: [arm64] 202 217 os: [android] 203 218 204 - '@esbuild/android-arm64@0.25.8': 205 - resolution: {integrity: sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==} 219 + '@esbuild/android-arm64@0.25.9': 220 + resolution: {integrity: sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==} 206 221 engines: {node: '>=18'} 207 222 cpu: [arm64] 208 223 os: [android] ··· 213 228 cpu: [arm] 214 229 os: [android] 215 230 216 - '@esbuild/android-arm@0.25.8': 217 - resolution: {integrity: sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==} 231 + '@esbuild/android-arm@0.25.9': 232 + resolution: {integrity: sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==} 218 233 engines: {node: '>=18'} 219 234 cpu: [arm] 220 235 os: [android] ··· 225 240 cpu: [x64] 226 241 os: [android] 227 242 228 - '@esbuild/android-x64@0.25.8': 229 - resolution: {integrity: sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==} 243 + '@esbuild/android-x64@0.25.9': 244 + resolution: {integrity: sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==} 230 245 engines: {node: '>=18'} 231 246 cpu: [x64] 232 247 os: [android] ··· 237 252 cpu: [arm64] 238 253 os: [darwin] 239 254 240 - '@esbuild/darwin-arm64@0.25.8': 241 - resolution: {integrity: sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==} 255 + '@esbuild/darwin-arm64@0.25.9': 256 + resolution: {integrity: sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==} 242 257 engines: {node: '>=18'} 243 258 cpu: [arm64] 244 259 os: [darwin] ··· 249 264 cpu: [x64] 250 265 os: [darwin] 251 266 252 - '@esbuild/darwin-x64@0.25.8': 253 - resolution: {integrity: sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==} 267 + '@esbuild/darwin-x64@0.25.9': 268 + resolution: {integrity: sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==} 254 269 engines: {node: '>=18'} 255 270 cpu: [x64] 256 271 os: [darwin] ··· 261 276 cpu: [arm64] 262 277 os: [freebsd] 263 278 264 - '@esbuild/freebsd-arm64@0.25.8': 265 - resolution: {integrity: sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==} 279 + '@esbuild/freebsd-arm64@0.25.9': 280 + resolution: {integrity: sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==} 266 281 engines: {node: '>=18'} 267 282 cpu: [arm64] 268 283 os: [freebsd] ··· 273 288 cpu: [x64] 274 289 os: [freebsd] 275 290 276 - '@esbuild/freebsd-x64@0.25.8': 277 - resolution: {integrity: sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==} 291 + '@esbuild/freebsd-x64@0.25.9': 292 + resolution: {integrity: sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==} 278 293 engines: {node: '>=18'} 279 294 cpu: [x64] 280 295 os: [freebsd] ··· 285 300 cpu: [arm64] 286 301 os: [linux] 287 302 288 - '@esbuild/linux-arm64@0.25.8': 289 - resolution: {integrity: sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==} 303 + '@esbuild/linux-arm64@0.25.9': 304 + resolution: {integrity: sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==} 290 305 engines: {node: '>=18'} 291 306 cpu: [arm64] 292 307 os: [linux] ··· 297 312 cpu: [arm] 298 313 os: [linux] 299 314 300 - '@esbuild/linux-arm@0.25.8': 301 - resolution: {integrity: sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==} 315 + '@esbuild/linux-arm@0.25.9': 316 + resolution: {integrity: sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==} 302 317 engines: {node: '>=18'} 303 318 cpu: [arm] 304 319 os: [linux] ··· 309 324 cpu: [ia32] 310 325 os: [linux] 311 326 312 - '@esbuild/linux-ia32@0.25.8': 313 - resolution: {integrity: sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==} 327 + '@esbuild/linux-ia32@0.25.9': 328 + resolution: {integrity: sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==} 314 329 engines: {node: '>=18'} 315 330 cpu: [ia32] 316 331 os: [linux] ··· 321 336 cpu: [loong64] 322 337 os: [linux] 323 338 324 - '@esbuild/linux-loong64@0.25.8': 325 - resolution: {integrity: sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==} 339 + '@esbuild/linux-loong64@0.25.9': 340 + resolution: {integrity: sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==} 326 341 engines: {node: '>=18'} 327 342 cpu: [loong64] 328 343 os: [linux] ··· 333 348 cpu: [mips64el] 334 349 os: [linux] 335 350 336 - '@esbuild/linux-mips64el@0.25.8': 337 - resolution: {integrity: sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==} 351 + '@esbuild/linux-mips64el@0.25.9': 352 + resolution: {integrity: sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==} 338 353 engines: {node: '>=18'} 339 354 cpu: [mips64el] 340 355 os: [linux] ··· 345 360 cpu: [ppc64] 346 361 os: [linux] 347 362 348 - '@esbuild/linux-ppc64@0.25.8': 349 - resolution: {integrity: sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==} 363 + '@esbuild/linux-ppc64@0.25.9': 364 + resolution: {integrity: sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==} 350 365 engines: {node: '>=18'} 351 366 cpu: [ppc64] 352 367 os: [linux] ··· 357 372 cpu: [riscv64] 358 373 os: [linux] 359 374 360 - '@esbuild/linux-riscv64@0.25.8': 361 - resolution: {integrity: sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==} 375 + '@esbuild/linux-riscv64@0.25.9': 376 + resolution: {integrity: sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==} 362 377 engines: {node: '>=18'} 363 378 cpu: [riscv64] 364 379 os: [linux] ··· 369 384 cpu: [s390x] 370 385 os: [linux] 371 386 372 - '@esbuild/linux-s390x@0.25.8': 373 - resolution: {integrity: sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==} 387 + '@esbuild/linux-s390x@0.25.9': 388 + resolution: {integrity: sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==} 374 389 engines: {node: '>=18'} 375 390 cpu: [s390x] 376 391 os: [linux] ··· 381 396 cpu: [x64] 382 397 os: [linux] 383 398 384 - '@esbuild/linux-x64@0.25.8': 385 - resolution: {integrity: sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==} 399 + '@esbuild/linux-x64@0.25.9': 400 + resolution: {integrity: sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==} 386 401 engines: {node: '>=18'} 387 402 cpu: [x64] 388 403 os: [linux] 389 404 390 - '@esbuild/netbsd-arm64@0.25.8': 391 - resolution: {integrity: sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==} 405 + '@esbuild/netbsd-arm64@0.25.9': 406 + resolution: {integrity: sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==} 392 407 engines: {node: '>=18'} 393 408 cpu: [arm64] 394 409 os: [netbsd] ··· 399 414 cpu: [x64] 400 415 os: [netbsd] 401 416 402 - '@esbuild/netbsd-x64@0.25.8': 403 - resolution: {integrity: sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==} 417 + '@esbuild/netbsd-x64@0.25.9': 418 + resolution: {integrity: sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==} 404 419 engines: {node: '>=18'} 405 420 cpu: [x64] 406 421 os: [netbsd] 407 422 408 - '@esbuild/openbsd-arm64@0.25.8': 409 - resolution: {integrity: sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==} 423 + '@esbuild/openbsd-arm64@0.25.9': 424 + resolution: {integrity: sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==} 410 425 engines: {node: '>=18'} 411 426 cpu: [arm64] 412 427 os: [openbsd] ··· 417 432 cpu: [x64] 418 433 os: [openbsd] 419 434 420 - '@esbuild/openbsd-x64@0.25.8': 421 - resolution: {integrity: sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==} 435 + '@esbuild/openbsd-x64@0.25.9': 436 + resolution: {integrity: sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==} 422 437 engines: {node: '>=18'} 423 438 cpu: [x64] 424 439 os: [openbsd] 425 440 426 - '@esbuild/openharmony-arm64@0.25.8': 427 - resolution: {integrity: sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==} 441 + '@esbuild/openharmony-arm64@0.25.9': 442 + resolution: {integrity: sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==} 428 443 engines: {node: '>=18'} 429 444 cpu: [arm64] 430 445 os: [openharmony] ··· 435 450 cpu: [x64] 436 451 os: [sunos] 437 452 438 - '@esbuild/sunos-x64@0.25.8': 439 - resolution: {integrity: sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==} 453 + '@esbuild/sunos-x64@0.25.9': 454 + resolution: {integrity: sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==} 440 455 engines: {node: '>=18'} 441 456 cpu: [x64] 442 457 os: [sunos] ··· 447 462 cpu: [arm64] 448 463 os: [win32] 449 464 450 - '@esbuild/win32-arm64@0.25.8': 451 - resolution: {integrity: sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==} 465 + '@esbuild/win32-arm64@0.25.9': 466 + resolution: {integrity: sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==} 452 467 engines: {node: '>=18'} 453 468 cpu: [arm64] 454 469 os: [win32] ··· 459 474 cpu: [ia32] 460 475 os: [win32] 461 476 462 - '@esbuild/win32-ia32@0.25.8': 463 - resolution: {integrity: sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==} 477 + '@esbuild/win32-ia32@0.25.9': 478 + resolution: {integrity: sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==} 464 479 engines: {node: '>=18'} 465 480 cpu: [ia32] 466 481 os: [win32] ··· 471 486 cpu: [x64] 472 487 os: [win32] 473 488 474 - '@esbuild/win32-x64@0.25.8': 475 - resolution: {integrity: sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==} 489 + '@esbuild/win32-x64@0.25.9': 490 + resolution: {integrity: sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==} 476 491 engines: {node: '>=18'} 477 492 cpu: [x64] 478 493 os: [win32] ··· 491 506 resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==} 492 507 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 493 508 494 - '@eslint/config-helpers@0.3.0': 495 - resolution: {integrity: sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==} 509 + '@eslint/config-helpers@0.3.1': 510 + resolution: {integrity: sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==} 496 511 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 497 512 498 - '@eslint/core@0.15.1': 499 - resolution: {integrity: sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==} 513 + '@eslint/core@0.15.2': 514 + resolution: {integrity: sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==} 500 515 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 501 516 502 517 '@eslint/eslintrc@3.3.1': 503 518 resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} 504 519 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 505 520 506 - '@eslint/js@9.31.0': 507 - resolution: {integrity: sha512-LOm5OVt7D4qiKCqoiPbA7LWmI+tbw1VbTUowBcUMgQSuM6poJufkFkYDcQpo5KfgD39TnNySV26QjOh7VFpSyw==} 521 + '@eslint/js@9.33.0': 522 + resolution: {integrity: sha512-5K1/mKhWaMfreBGJTwval43JJmkip0RmM+3+IuqupeSKNC/Th2Kc7ucaq5ovTSra/OOKB9c58CGSz3QMVbWt0A==} 508 523 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 509 524 510 525 '@eslint/object-schema@2.1.6': 511 526 resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} 512 527 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 513 528 514 - '@eslint/plugin-kit@0.3.4': 515 - resolution: {integrity: sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw==} 529 + '@eslint/plugin-kit@0.3.5': 530 + resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==} 516 531 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 517 532 518 533 '@externdefs/collider@0.3.0': ··· 520 535 peerDependencies: 521 536 '@badrap/valita': ^0.4.4 522 537 523 - '@floating-ui/core@1.7.2': 524 - resolution: {integrity: sha512-wNB5ooIKHQc+Kui96jE/n69rHFWAVoxn5CAzL1Xdd8FG03cgY3MLO+GF9U3W737fYDSgPWA6MReKhBQBop6Pcw==} 538 + '@floating-ui/core@1.7.3': 539 + resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==} 525 540 526 - '@floating-ui/dom@1.7.2': 527 - resolution: {integrity: sha512-7cfaOQuCS27HD7DX+6ib2OrnW+b4ZBwDNnCcT0uTyidcmyWb03FnQqJybDBoCnpdxwBSfA94UAYlRCt7mV+TbA==} 541 + '@floating-ui/dom@1.7.4': 542 + resolution: {integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==} 528 543 529 544 '@floating-ui/utils@0.2.10': 530 545 resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} 531 546 532 - '@floating-ui/vue@1.1.7': 533 - resolution: {integrity: sha512-idmAtbAIigGXN2SI5gItiXYBYtNfDTP9yIiObxgu13dgtG7ARCHlNfnR29GxP4LI4o13oiwsJ8wVgghj1lNqcw==} 547 + '@floating-ui/vue@1.1.9': 548 + resolution: {integrity: sha512-BfNqNW6KA83Nexspgb9DZuz578R7HT8MZw1CfK9I6Ah4QReNWEJsXWHN+SdmOVLNGmTPDi+fDT535Df5PzMLbQ==} 534 549 535 550 '@headlessui/vue@1.7.23': 536 551 resolution: {integrity: sha512-JzdCNqurrtuu0YW6QaDtR2PIYCKPUWq28csDyMvN4zmGccmE7lz40Is6hc3LA4HFeCI7sekZ/PQMTNmn9I/4Wg==} ··· 538 553 peerDependencies: 539 554 vue: ^3.2.0 540 555 541 - '@hono/node-server@1.17.1': 542 - resolution: {integrity: sha512-SY79W/C+2b1MyAzmIcV32Q47vO1b5XwLRwj8S9N6Jr5n1QCkIfAIH6umOSgqWZ4/v67hg6qq8Ha5vZonVidGsg==} 556 + '@hono/node-server@1.19.0': 557 + resolution: {integrity: sha512-1k8/8OHf5VIymJEcJyVksFpT+AQ5euY0VA5hUkCnlKpD4mr8FSbvXaHblxeTTEr90OaqWzAkQaqD80qHZQKxBA==} 543 558 engines: {node: '>=18.14.1'} 544 559 peerDependencies: 545 560 hono: ^4 ··· 588 603 '@internationalized/number@3.6.4': 589 604 resolution: {integrity: sha512-P+/h+RDaiX8EGt3shB9AYM1+QgkvHmJ5rKi4/59k4sg9g58k9rqsRW0WxRO7jCoHyvVbFRRFKmVTdFYdehrxHg==} 590 605 591 - '@jridgewell/gen-mapping@0.3.12': 592 - resolution: {integrity: sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==} 606 + '@jridgewell/gen-mapping@0.3.13': 607 + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} 593 608 594 609 '@jridgewell/resolve-uri@3.1.2': 595 610 resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 596 611 engines: {node: '>=6.0.0'} 597 612 598 - '@jridgewell/source-map@0.3.10': 599 - resolution: {integrity: sha512-0pPkgz9dY+bijgistcTTJ5mR+ocqRXLuhXHYdzoMmmoJ2C9S46RCm2GMUbatPEUK9Yjy26IrAy8D/M00lLkv+Q==} 613 + '@jridgewell/source-map@0.3.11': 614 + resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} 600 615 601 - '@jridgewell/sourcemap-codec@1.5.4': 602 - resolution: {integrity: sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==} 616 + '@jridgewell/sourcemap-codec@1.5.5': 617 + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} 603 618 604 - '@jridgewell/trace-mapping@0.3.29': 605 - resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==} 619 + '@jridgewell/trace-mapping@0.3.30': 620 + resolution: {integrity: sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==} 606 621 607 - '@libsql/client@0.15.10': 608 - resolution: {integrity: sha512-J9cJQwrgH92JlPBYjUGxPIH5G9z3j/V/aPnQvcmmCgjatdVb/f7bzK3yNq15Phc+gVuKMwox3toXL+58qUMylg==} 622 + '@libsql/client@0.15.12': 623 + resolution: {integrity: sha512-JIqB0XsNrqYqBQZuhcgZdTcQoNOoQ5AMF+1yxc7vcZrLtm42QJwRazmTuBfyDwtWASEmVgjxeaLF4NT1iyVX8g==} 609 624 610 - '@libsql/core@0.15.10': 611 - resolution: {integrity: sha512-fAMD+GnGQNdZ9zxeNC8AiExpKnou/97GJWkiDDZbTRHj3c9dvF1y4jsRQ0WE72m/CqTdbMGyU98yL0SJ9hQVeg==} 625 + '@libsql/core@0.15.12': 626 + resolution: {integrity: sha512-S3tF6885ZizVjfym7f8SevL2VId/+DzxiKmP5zFbrhA8oMLh2XH8bYXChmhab7o9qUSHx+XjK4jCFpUwR5g+Ig==} 612 627 613 - '@libsql/darwin-arm64@0.5.16': 614 - resolution: {integrity: sha512-Q1fXH2YVTU/Iym8kN79Z2bQiNtkIV1QiDikgRD79a2eLO/v9ZghZqama65U6lDP6zZXXGtxhb6sfisnP9HQrug==} 628 + '@libsql/darwin-arm64@0.5.17': 629 + resolution: {integrity: sha512-WTYG2skZsUnZmfZ2v7WFj7s3/5s2PfrYBZOWBKOnxHA8g4XCDc/4bFDaqob9Q2e88+GC7cWeJ8VNkVBFpD2Xxg==} 615 630 cpu: [arm64] 616 631 os: [darwin] 617 632 618 - '@libsql/darwin-x64@0.5.16': 619 - resolution: {integrity: sha512-EiowJzSxnO2misBttp6R6Hz16UbttdDyRMqnZauSd41X4kRxuLtxvSLCpWRXmZ/3WKcXQ9G5H5X40ZPW1itOTg==} 633 + '@libsql/darwin-x64@0.5.17': 634 + resolution: {integrity: sha512-ab0RlTR4KYrxgjNrZhAhY/10GibKoq6G0W4oi0kdm+eYiAv/Ip8GDMpSaZdAcoKA4T+iKR/ehczKHnMEB8MFxA==} 620 635 cpu: [x64] 621 636 os: [darwin] 622 637 ··· 630 645 '@libsql/isomorphic-ws@0.1.5': 631 646 resolution: {integrity: sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg==} 632 647 633 - '@libsql/linux-arm-gnueabihf@0.5.16': 634 - resolution: {integrity: sha512-Gsumbh97GajJ5D8aAy5D5zJLZxr/HMmMYoaj53+QHmerEJkfTNpxFOalKwVg6bL07DmNfiiuGaku82SJyDGHCQ==} 648 + '@libsql/linux-arm-gnueabihf@0.5.17': 649 + resolution: {integrity: sha512-PcASh4k47RqC+kMWAbLUKf1y6Do0q8vnUGi0yhKY4ghJcimMExViBimjbjYRSa+WIb/zh3QxNoXOhQAXx3tiuw==} 635 650 cpu: [arm] 636 651 os: [linux] 637 652 638 - '@libsql/linux-arm-musleabihf@0.5.16': 639 - resolution: {integrity: sha512-bs+xWR2CJX4J3iQ3J82emWyN8/Hw+4DpD/MdLW07D0NPPG9Byp2KkeqSKW0o0kDHNePjNEz1G2OAfD0dxsC/OA==} 653 + '@libsql/linux-arm-musleabihf@0.5.17': 654 + resolution: {integrity: sha512-vxOkSLG9Wspit+SNle84nuIzMtr2G2qaxFzW7BhsZBjlZ8+kErf9RXcT2YJQdJYxmBYRbsOrc91gg0jLEQVCqg==} 640 655 cpu: [arm] 641 656 os: [linux] 642 657 643 - '@libsql/linux-arm64-gnu@0.5.16': 644 - resolution: {integrity: sha512-oqmweYSg5buJhFyDIweW5MfAEg6HYMLSU/fbOZiXT/LIcHxVJ44JlNA53ffWmYSwYx/nZwTiN00m7dIwPWV2zA==} 658 + '@libsql/linux-arm64-gnu@0.5.17': 659 + resolution: {integrity: sha512-L8jnaN01TxjBJlDuDTX2W2BKzBkAOhcnKfCOf3xzvvygblxnDOK0whkYwIXeTfwtd/rr4jN/d6dZD/bcHiDxEQ==} 645 660 cpu: [arm64] 646 661 os: [linux] 647 662 648 - '@libsql/linux-arm64-musl@0.5.16': 649 - resolution: {integrity: sha512-BRNcyGdZnOPbJfE/HgAVQprikF03JeK3ERmcP4EqRy7AYJ66SuRGFJdW9DSN93O5XSOWkS+upQt+PNFW3OLCew==} 663 + '@libsql/linux-arm64-musl@0.5.17': 664 + resolution: {integrity: sha512-HfFD7TzQtmmTwyQsuiHhWZdMRtdNpKJ1p4tbMMTMRECk+971NFHrj69D64cc2ClVTAmn7fA9XibKPil7WN/Q7w==} 650 665 cpu: [arm64] 651 666 os: [linux] 652 667 653 - '@libsql/linux-x64-gnu@0.5.16': 654 - resolution: {integrity: sha512-NyKxuHvb38rmSfexYbPy7SYV4HqY18L06LYbvU3ZqFfTV7CIGdzuxPOKv05GxHvak46VG+3CjRfq9Q/VIZolwA==} 668 + '@libsql/linux-x64-gnu@0.5.17': 669 + resolution: {integrity: sha512-5l3XxWqUPVFrtX0xnZaXwqsXs0BFbP4w6ahRFTPSdXU50YBfUOajFznJRB6bJTMsCvraDSD0IkHhjSNfrE1CuQ==} 655 670 cpu: [x64] 656 671 os: [linux] 657 672 658 - '@libsql/linux-x64-musl@0.5.16': 659 - resolution: {integrity: sha512-xi0nObdngfYuOnji/y7wQmF6y7JMYmonE/HF0snzAAgZflTFdW6ZBn7N4oRz/aGb9+fMfz8sT3wnEe+CuO05qg==} 673 + '@libsql/linux-x64-musl@0.5.17': 674 + resolution: {integrity: sha512-FvSpWlwc+dIeYIFYlsSv+UdQ/NiZWr+SstwVji+QZ//8NnvzwWQU9cgP+Vpps6Qiq4jyYQm9chJhTYOVT9Y3BA==} 660 675 cpu: [x64] 661 676 os: [linux] 662 677 663 - '@libsql/win32-x64-msvc@0.5.16': 664 - resolution: {integrity: sha512-db37ASxpc7aIC7oBuefBGiAJyLVJdvrQy07X2jEU3AtekxpwYCHbJO3Pd3P71hNitFSbaFfpZHHf0GZenzF4JQ==} 678 + '@libsql/win32-x64-msvc@0.5.17': 679 + resolution: {integrity: sha512-f5bGH8+3A5sn6Lrqg8FsQ09a1pYXPnKGXGTFiAYlfQXVst1tUTxDTugnuWcJYKXyzDe/T7ccxyIZXeSmPOhq8A==} 665 680 cpu: [x64] 666 681 os: [win32] 667 682 668 683 '@neon-rs/load@0.0.4': 669 684 resolution: {integrity: sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw==} 685 + 686 + '@noble/secp256k1@2.3.0': 687 + resolution: {integrity: sha512-0TQed2gcBbIrh7Ccyw+y/uZQvbJwm7Ao4scBUxqpBCcsOlZG0O4KGfjtNAy/li4W8n1xt3dxrwJ0beZ2h2G6Kw==} 670 688 671 689 '@nodelib/fs.scandir@2.1.5': 672 690 resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} ··· 687 705 resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} 688 706 engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} 689 707 708 + '@rollup/rollup-android-arm-eabi@4.50.0': 709 + resolution: {integrity: sha512-lVgpeQyy4fWN5QYebtW4buT/4kn4p4IJ+kDNB4uYNT5b8c8DLJDg6titg20NIg7E8RWwdWZORW6vUFfrLyG3KQ==} 710 + cpu: [arm] 711 + os: [android] 712 + 713 + '@rollup/rollup-android-arm64@4.50.0': 714 + resolution: {integrity: sha512-2O73dR4Dc9bp+wSYhviP6sDziurB5/HCym7xILKifWdE9UsOe2FtNcM+I4xZjKrfLJnq5UR8k9riB87gauiQtw==} 715 + cpu: [arm64] 716 + os: [android] 717 + 718 + '@rollup/rollup-darwin-arm64@4.50.0': 719 + resolution: {integrity: sha512-vwSXQN8T4sKf1RHr1F0s98Pf8UPz7pS6P3LG9NSmuw0TVh7EmaE+5Ny7hJOZ0M2yuTctEsHHRTMi2wuHkdS6Hg==} 720 + cpu: [arm64] 721 + os: [darwin] 722 + 723 + '@rollup/rollup-darwin-x64@4.50.0': 724 + resolution: {integrity: sha512-cQp/WG8HE7BCGyFVuzUg0FNmupxC+EPZEwWu2FCGGw5WDT1o2/YlENbm5e9SMvfDFR6FRhVCBePLqj0o8MN7Vw==} 725 + cpu: [x64] 726 + os: [darwin] 727 + 728 + '@rollup/rollup-freebsd-arm64@4.50.0': 729 + resolution: {integrity: sha512-UR1uTJFU/p801DvvBbtDD7z9mQL8J80xB0bR7DqW7UGQHRm/OaKzp4is7sQSdbt2pjjSS72eAtRh43hNduTnnQ==} 730 + cpu: [arm64] 731 + os: [freebsd] 732 + 733 + '@rollup/rollup-freebsd-x64@4.50.0': 734 + resolution: {integrity: sha512-G/DKyS6PK0dD0+VEzH/6n/hWDNPDZSMBmqsElWnCRGrYOb2jC0VSupp7UAHHQ4+QILwkxSMaYIbQ72dktp8pKA==} 735 + cpu: [x64] 736 + os: [freebsd] 737 + 738 + '@rollup/rollup-linux-arm-gnueabihf@4.50.0': 739 + resolution: {integrity: sha512-u72Mzc6jyJwKjJbZZcIYmd9bumJu7KNmHYdue43vT1rXPm2rITwmPWF0mmPzLm9/vJWxIRbao/jrQmxTO0Sm9w==} 740 + cpu: [arm] 741 + os: [linux] 742 + 743 + '@rollup/rollup-linux-arm-musleabihf@4.50.0': 744 + resolution: {integrity: sha512-S4UefYdV0tnynDJV1mdkNawp0E5Qm2MtSs330IyHgaccOFrwqsvgigUD29uT+B/70PDY1eQ3t40+xf6wIvXJyg==} 745 + cpu: [arm] 746 + os: [linux] 747 + 748 + '@rollup/rollup-linux-arm64-gnu@4.50.0': 749 + resolution: {integrity: sha512-1EhkSvUQXJsIhk4msxP5nNAUWoB4MFDHhtc4gAYvnqoHlaL9V3F37pNHabndawsfy/Tp7BPiy/aSa6XBYbaD1g==} 750 + cpu: [arm64] 751 + os: [linux] 752 + 753 + '@rollup/rollup-linux-arm64-musl@4.50.0': 754 + resolution: {integrity: sha512-EtBDIZuDtVg75xIPIK1l5vCXNNCIRM0OBPUG+tbApDuJAy9mKago6QxX+tfMzbCI6tXEhMuZuN1+CU8iDW+0UQ==} 755 + cpu: [arm64] 756 + os: [linux] 757 + 758 + '@rollup/rollup-linux-loongarch64-gnu@4.50.0': 759 + resolution: {integrity: sha512-BGYSwJdMP0hT5CCmljuSNx7+k+0upweM2M4YGfFBjnFSZMHOLYR0gEEj/dxyYJ6Zc6AiSeaBY8dWOa11GF/ppQ==} 760 + cpu: [loong64] 761 + os: [linux] 762 + 763 + '@rollup/rollup-linux-ppc64-gnu@4.50.0': 764 + resolution: {integrity: sha512-I1gSMzkVe1KzAxKAroCJL30hA4DqSi+wGc5gviD0y3IL/VkvcnAqwBf4RHXHyvH66YVHxpKO8ojrgc4SrWAnLg==} 765 + cpu: [ppc64] 766 + os: [linux] 767 + 768 + '@rollup/rollup-linux-riscv64-gnu@4.50.0': 769 + resolution: {integrity: sha512-bSbWlY3jZo7molh4tc5dKfeSxkqnf48UsLqYbUhnkdnfgZjgufLS/NTA8PcP/dnvct5CCdNkABJ56CbclMRYCA==} 770 + cpu: [riscv64] 771 + os: [linux] 772 + 773 + '@rollup/rollup-linux-riscv64-musl@4.50.0': 774 + resolution: {integrity: sha512-LSXSGumSURzEQLT2e4sFqFOv3LWZsEF8FK7AAv9zHZNDdMnUPYH3t8ZlaeYYZyTXnsob3htwTKeWtBIkPV27iQ==} 775 + cpu: [riscv64] 776 + os: [linux] 777 + 778 + '@rollup/rollup-linux-s390x-gnu@4.50.0': 779 + resolution: {integrity: sha512-CxRKyakfDrsLXiCyucVfVWVoaPA4oFSpPpDwlMcDFQvrv3XY6KEzMtMZrA+e/goC8xxp2WSOxHQubP8fPmmjOQ==} 780 + cpu: [s390x] 781 + os: [linux] 782 + 783 + '@rollup/rollup-linux-x64-gnu@4.50.0': 784 + resolution: {integrity: sha512-8PrJJA7/VU8ToHVEPu14FzuSAqVKyo5gg/J8xUerMbyNkWkO9j2ExBho/68RnJsMGNJq4zH114iAttgm7BZVkA==} 785 + cpu: [x64] 786 + os: [linux] 787 + 788 + '@rollup/rollup-linux-x64-musl@4.50.0': 789 + resolution: {integrity: sha512-SkE6YQp+CzpyOrbw7Oc4MgXFvTw2UIBElvAvLCo230pyxOLmYwRPwZ/L5lBe/VW/qT1ZgND9wJfOsdy0XptRvw==} 790 + cpu: [x64] 791 + os: [linux] 792 + 793 + '@rollup/rollup-openharmony-arm64@4.50.0': 794 + resolution: {integrity: sha512-PZkNLPfvXeIOgJWA804zjSFH7fARBBCpCXxgkGDRjjAhRLOR8o0IGS01ykh5GYfod4c2yiiREuDM8iZ+pVsT+Q==} 795 + cpu: [arm64] 796 + os: [openharmony] 797 + 798 + '@rollup/rollup-win32-arm64-msvc@4.50.0': 799 + resolution: {integrity: sha512-q7cIIdFvWQoaCbLDUyUc8YfR3Jh2xx3unO8Dn6/TTogKjfwrax9SyfmGGK6cQhKtjePI7jRfd7iRYcxYs93esg==} 800 + cpu: [arm64] 801 + os: [win32] 802 + 803 + '@rollup/rollup-win32-ia32-msvc@4.50.0': 804 + resolution: {integrity: sha512-XzNOVg/YnDOmFdDKcxxK410PrcbcqZkBmz+0FicpW5jtjKQxcW1BZJEQOF0NJa6JO7CZhett8GEtRN/wYLYJuw==} 805 + cpu: [ia32] 806 + os: [win32] 807 + 808 + '@rollup/rollup-win32-x64-msvc@4.50.0': 809 + resolution: {integrity: sha512-xMmiWRR8sp72Zqwjgtf3QbZfF1wdh8X2ABu3EaozvZcyHJeU0r+XAnXdKgs4cCAp6ORoYoCygipYP1mjmbjrsg==} 810 + cpu: [x64] 811 + os: [win32] 812 + 690 813 '@rtsao/scc@1.1.0': 691 814 resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} 692 815 693 - '@scalar/code-highlight@0.1.8': 694 - resolution: {integrity: sha512-SH7gqBVGotf9Hw2srAKd/s854Wjf5lpR4FgAf/l3AlCYC5QXJ4hbj+fk1/3tvzeRFm+wvS6/ah4FuiIzvDPOug==} 816 + '@scalar/code-highlight@0.1.9': 817 + resolution: {integrity: sha512-WUUVDd1Wk7QJVKWXl/Zdn/VINc2pc1NlWW8VJFYZRm3/hKJwBhi0on7+HjVQNKgUaRy7+zluru5Ckl1gcTHHEg==} 695 818 engines: {node: '>=20'} 696 819 697 - '@scalar/components@0.14.20': 698 - resolution: {integrity: sha512-wGHsxz3R6l+u7KASwvm4Y9d7byD2HjfWBbCVXAb+qQIDemaMDBNARjRCbXLpRB9UvYLxtgP/8fzdW+R0LEf4/A==} 820 + '@scalar/components@0.14.25': 821 + resolution: {integrity: sha512-1lYVHa+9QVawEipFSBA/H9ROJJLijcAQ/kaFuTkJnZMS5DZ8aRB423TxVApJNSlMm96f8KGzIwS7Fq3sNYsXJg==} 699 822 engines: {node: '>=20'} 700 823 701 - '@scalar/core@0.3.10': 702 - resolution: {integrity: sha512-WKLaZk5zj65CbS0Ox0BMZ1GX9gFrVdwgV/cdRjT2Av8H5CizOSirXk4PwdsU8V8Q4gAltVy9cnt6yKc2ZnRY+w==} 824 + '@scalar/core@0.3.13': 825 + resolution: {integrity: sha512-lgrueSjR1eacM39Zg0jAHikGomGAF2o2/s/5EcMz/ul7VLo/IBymw8gUjcGHZ9zd8PFGdo8DvOwFMRCiXiaDHw==} 703 826 engines: {node: '>=20'} 704 827 705 - '@scalar/helpers@0.0.6': 706 - resolution: {integrity: sha512-VrkpJmEq3zLu0lYFVRplNLA54rZ9rBkiahEI8laVpLnzGl1QilIn2EhxBT9lK7/2jbPprCbTfgnZZv+zHgGYTw==} 828 + '@scalar/helpers@0.0.8': 829 + resolution: {integrity: sha512-9A1CxL3jV7Kl9wGu86/cR/wiJN6J+3tK4WuW3252s2gF+upXsgQRx9WLhFF3xifOP1irIGusitZBiojiKmUSVg==} 707 830 engines: {node: '>=20'} 708 831 709 - '@scalar/hono-api-reference@0.9.12': 710 - resolution: {integrity: sha512-ygbQsh+5QaRyAx851utApy12FW+wSRLuOBTpL2U5RVzDjvN6vMBZs119mqH1BmY6ltVn8k7DvS2Ooyx0ttah/A==} 832 + '@scalar/hono-api-reference@0.9.15': 833 + resolution: {integrity: sha512-Lx/ity79xA3pdp624ikccDwvlY30M79e/1jvl/LjPDToc0byMr2tUVyHbmMhuaX8PVPlUKkdO97XGw0+M5IZJg==} 711 834 engines: {node: '>=20'} 712 835 peerDependencies: 713 836 hono: ^4.0.0 714 837 715 - '@scalar/icons@0.4.6': 716 - resolution: {integrity: sha512-ho9ee29Ik+Jv17bSaQEXvGn1e2ydNEyc7Sv8A8hqPq084aIOiTBtVFISPPt+k/O6z0SIRayfL8FEZqr93GyZPg==} 838 + '@scalar/icons@0.4.7': 839 + resolution: {integrity: sha512-0qXPGRdZ180TMfejWCPYy7ILszBrAraq4KBhPtcM12ghc5qkncFWWpTm5yXI/vrbm10t7wvtTK08CLZ36CnXlQ==} 717 840 engines: {node: '>=20'} 718 841 719 - '@scalar/json-diff@0.0.4': 720 - resolution: {integrity: sha512-4u2gtyhA119T+HdQ4dVKYzQOCOos5Iaj08C1H2Hi6WW64sTNJaZuh9hpVtY94e0I9feRiCyNEtWvmbOjOAxbTw==} 842 + '@scalar/json-magic@0.3.0': 843 + resolution: {integrity: sha512-RmX6tIsV76xHioQWVTB1By85+7tbBkKFFbMn3p+1s5PrPiK/U20AAv9OUTt6f5U5fjaTSuaQNVyyhn5SYjtBQQ==} 721 844 engines: {node: '>=20'} 722 845 723 - '@scalar/oas-utils@0.4.15': 724 - resolution: {integrity: sha512-C2kGex6fwHxmBQhyiAmuVJHlIOP/rYoojuROfWvUQSrfLELkIjE5ZTyh4fj9PhwhGbS9iWWVaaOytjeT+8n8AQ==} 846 + '@scalar/oas-utils@0.4.20': 847 + resolution: {integrity: sha512-zr7WLN6s6OLH+/BitInXOQxGOAr4ZDcIrQi6RFFc+U7F26rmhvhAN0qZXv8ew8SPnWyugH2PGjxZg0IgLs7+lQ==} 725 848 engines: {node: '>=20'} 726 849 727 - '@scalar/object-utils@1.2.2': 728 - resolution: {integrity: sha512-dnH/JeXLudjBfEISpYvnMrH3bLjpc06vWVx7UQmtNNWIIonJ+bDMg1ATnYon7q6m+V8aJZ9/To8SwYsunYRL9g==} 850 + '@scalar/object-utils@1.2.4': 851 + resolution: {integrity: sha512-lX/+9Sp6euZvbsikGRZiHwmfbLd0oTLTttKbJF9v2EkahSrQUT0WF835Ct2N0R8xSkyQauDhT2xCfuA0QNqDeA==} 729 852 engines: {node: '>=20'} 730 853 731 - '@scalar/openapi-parser@0.18.2': 732 - resolution: {integrity: sha512-Mb0rRgnn8QgrwcsOcZY3g4uDr49cSuYcmh87oT7gDuV9IPFg5Wc71fjXNx0HdTRy5k21ugS/lDSl8sL+YBudOw==} 854 + '@scalar/openapi-parser@0.20.0': 855 + resolution: {integrity: sha512-gsqpiDP9BuZNMx8Ma9UXapdoorIXiyAwr3qra/Zb3CsShun2KQoq20jSMJzVSTAm8HnBmNlZIQm1jSUvzDW5Tw==} 733 856 engines: {node: '>=20'} 734 857 735 - '@scalar/openapi-to-markdown@0.2.23': 736 - resolution: {integrity: sha512-j47K57Q0pDT3C1kAHmewV4kIBInQTjlvG+y4W5QgJkE64mzb8n5aZuMqzSCpyEItX4BsMEasIPMDWBCIhiicpw==} 858 + '@scalar/openapi-to-markdown@0.2.28': 859 + resolution: {integrity: sha512-IB1P48kgLzCjVJQfkR0E2+qnnNY9uDLfYrStfZN5drhvWO/EmT7EIgGvGVj7XJHga7B9UVIL+s6CtfhUkPN0EA==} 737 860 engines: {node: '>=20'} 738 861 739 - '@scalar/openapi-types@0.3.6': 740 - resolution: {integrity: sha512-hkLIgDIQxSgZNYCqNkty2p/V8hjeMf711uT8IKIjNw8oaT/cjT1HC/3V0FVhJ6x2eaufir+WXt5Zqv/iVk5pyQ==} 862 + '@scalar/openapi-types@0.3.7': 863 + resolution: {integrity: sha512-QHSvHBVDze3+dUwAhIGq6l1iOev4jdoqdBK7QpfeN1Q4h+6qpVEw3EEqBiH0AXUSh/iWwObBv4uMgfIx0aNZ5g==} 741 864 engines: {node: '>=20'} 742 865 743 - '@scalar/snippetz@0.4.3': 744 - resolution: {integrity: sha512-OcYI4uvz/SbIkGupa3SNS403+lCsp4RoPJRTP1Rd59lRX9Kyc8xXo8ZuJis06GYtlBP5rqshI+jFCIP/Ap+dFw==} 866 + '@scalar/snippetz@0.4.5': 867 + resolution: {integrity: sha512-Pp4EDn5BAA1b/srgm6b7iD23UwzQISdQOh+Ai3gTWFePZlMHNuQBAiaqgDyINs1YUAgkBP+VDLBVlWMCjWC93A==} 745 868 engines: {node: '>=20'} 746 869 747 - '@scalar/themes@0.13.11': 748 - resolution: {integrity: sha512-9rdNfVDbDFUr6Pi9IHt6OKs7Ui6TtrH7tR+ymga+I+jw8Xsnm4dbD1G2TFk1wUaYLVYdiqyQcj+JT15OJEGlkw==} 870 + '@scalar/themes@0.13.13': 871 + resolution: {integrity: sha512-H67wm2Wfds6f+ygb/1qHWaKdieJdU8aGsU8qjGQamYPQriz6m6gr/AYNAc8B73I04ZXLswzJ6Doj/JcounPKZA==} 749 872 engines: {node: '>=20'} 750 873 751 - '@scalar/types@0.2.10': 752 - resolution: {integrity: sha512-ZlOzYoYzzGRnMr6RufAnjksv94MyL4s4HElg9mdo9gQXPch24lNiE0pE0k6vxdB+ncgbGWZ1T6qCC/lJXMLL1Q==} 874 + '@scalar/types@0.2.12': 875 + resolution: {integrity: sha512-CW7jS+gpc3lZdjf+888++I9HtsGCk6zbh4lZscY8spcg/dlXXd3ReYicxee/cx+soDjU1d/Pcqj9o/QqvTFYxQ==} 753 876 engines: {node: '>=20'} 754 877 755 878 '@scalar/use-hooks@0.2.4': ··· 760 883 resolution: {integrity: sha512-u+o77cdTNZ5ePqHPu8ZcFw1BLlISv+cthN0bR1zJHXmqBjvanFTy2kL+Gmv3eW9HxZiHdqycKVETlYd0mWiqJQ==} 761 884 engines: {node: '>=20'} 762 885 763 - '@scalar/workspace-store@0.10.2': 764 - resolution: {integrity: sha512-p4aDfAsZIFBBQPk2CcD96PMc2HFLOtGi2XMRNp86cqpQMncIIAqDTYCydzcsYvMPysmckIAAyuztdKDOPnry7g==} 886 + '@scalar/workspace-store@0.14.0': 887 + resolution: {integrity: sha512-60gY3e3vsPn2ue1kMt4SlAM5mBZHObi0tGVZWYxwkXxvaKik2HaEpHQWZov7F6ZullCy1ECXNThzVE63zjqw9g==} 765 888 engines: {node: '>=18'} 766 889 767 - '@sinclair/typebox@0.34.37': 768 - resolution: {integrity: sha512-2TRuQVgQYfy+EzHRTIvkhv2ADEouJ2xNS/Vq+W5EuuewBdOrvATvljZTxHWZSTYr2sTjTHpGvucaGAt67S2akw==} 890 + '@sinclair/typebox@https://raw.githubusercontent.com/DemonHa/typebox/refs/heads/amrit/build/target/remote/sinclair-typebox-0.34.38.tgz': 891 + resolution: {tarball: https://raw.githubusercontent.com/DemonHa/typebox/refs/heads/amrit/build/target/remote/sinclair-typebox-0.34.38.tgz} 892 + version: 0.34.38 769 893 770 894 '@skyware/jetstream@0.2.5': 771 895 resolution: {integrity: sha512-fM/zs03DLwqRyzZZJFWN20e76KrdqIp97Tlm8Cek+vxn96+tu5d/fx79V6H85L0QN6HvGiX2l9A8hWFqHvYlOA==} ··· 781 905 peerDependencies: 782 906 vue: ^2.7.0 || ^3.0.0 783 907 908 + '@types/chai@5.2.2': 909 + resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} 910 + 784 911 '@types/debug@4.1.12': 785 912 resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} 786 913 914 + '@types/deep-eql@4.0.2': 915 + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} 916 + 787 917 '@types/estree@1.0.8': 788 918 resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} 789 919 ··· 805 935 '@types/ms@2.1.0': 806 936 resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} 807 937 808 - '@types/node@22.16.5': 809 - resolution: {integrity: sha512-bJFoMATwIGaxxx8VJPeM8TonI8t579oRvgAuT8zFugJsJZgzqv0Fu8Mhp68iecjzG7cnN3mO2dJQ5uUM2EFrgQ==} 938 + '@types/node@22.17.2': 939 + resolution: {integrity: sha512-gL6z5N9Jm9mhY+U2KXZpteb+09zyffliRkZyZOHODGATyC5B1Jt/7TzuuiLkFsSUMLbS1OLmlj/E+/3KF4Q/4w==} 810 940 811 - '@types/node@24.1.0': 812 - resolution: {integrity: sha512-ut5FthK5moxFKH2T1CUOC6ctR67rQRvvHdFLCD2Ql6KXmMuCrjsSsRI9UsLCm9M18BMwClv4pn327UvB7eeO1w==} 941 + '@types/node@24.3.0': 942 + resolution: {integrity: sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==} 813 943 814 944 '@types/triple-beam@1.3.5': 815 945 resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==} ··· 823 953 '@types/ws@8.18.1': 824 954 resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} 825 955 826 - '@typescript-eslint/eslint-plugin@8.38.0': 827 - resolution: {integrity: sha512-CPoznzpuAnIOl4nhj4tRr4gIPj5AfKgkiJmGQDaq+fQnRJTYlcBjbX3wbciGmpoPf8DREufuPRe1tNMZnGdanA==} 956 + '@typescript-eslint/eslint-plugin@8.40.0': 957 + resolution: {integrity: sha512-w/EboPlBwnmOBtRbiOvzjD+wdiZdgFeo17lkltrtn7X37vagKKWJABvyfsJXTlHe6XBzugmYgd4A4nW+k8Mixw==} 828 958 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 829 959 peerDependencies: 830 - '@typescript-eslint/parser': ^8.38.0 960 + '@typescript-eslint/parser': ^8.40.0 831 961 eslint: ^8.57.0 || ^9.0.0 832 - typescript: '>=4.8.4 <5.9.0' 962 + typescript: '>=4.8.4 <6.0.0' 833 963 834 - '@typescript-eslint/parser@8.38.0': 835 - resolution: {integrity: sha512-Zhy8HCvBUEfBECzIl1PKqF4p11+d0aUJS1GeUiuqK9WmOug8YCmC4h4bjyBvMyAMI9sbRczmrYL5lKg/YMbrcQ==} 964 + '@typescript-eslint/parser@8.40.0': 965 + resolution: {integrity: sha512-jCNyAuXx8dr5KJMkecGmZ8KI61KBUhkCob+SD+C+I5+Y1FWI2Y3QmY4/cxMCC5WAsZqoEtEETVhUiUMIGCf6Bw==} 836 966 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 837 967 peerDependencies: 838 968 eslint: ^8.57.0 || ^9.0.0 839 - typescript: '>=4.8.4 <5.9.0' 969 + typescript: '>=4.8.4 <6.0.0' 840 970 841 - '@typescript-eslint/project-service@8.38.0': 842 - resolution: {integrity: sha512-dbK7Jvqcb8c9QfH01YB6pORpqX1mn5gDZc9n63Ak/+jD67oWXn3Gs0M6vddAN+eDXBCS5EmNWzbSxsn9SzFWWg==} 971 + '@typescript-eslint/project-service@8.40.0': 972 + resolution: {integrity: sha512-/A89vz7Wf5DEXsGVvcGdYKbVM9F7DyFXj52lNYUDS1L9yJfqjW/fIp5PgMuEJL/KeqVTe2QSbXAGUZljDUpArw==} 843 973 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 844 974 peerDependencies: 845 - typescript: '>=4.8.4 <5.9.0' 975 + typescript: '>=4.8.4 <6.0.0' 846 976 847 - '@typescript-eslint/scope-manager@8.38.0': 848 - resolution: {integrity: sha512-WJw3AVlFFcdT9Ri1xs/lg8LwDqgekWXWhH3iAF+1ZM+QPd7oxQ6jvtW/JPwzAScxitILUIFs0/AnQ/UWHzbATQ==} 977 + '@typescript-eslint/scope-manager@8.40.0': 978 + resolution: {integrity: sha512-y9ObStCcdCiZKzwqsE8CcpyuVMwRouJbbSrNuThDpv16dFAj429IkM6LNb1dZ2m7hK5fHyzNcErZf7CEeKXR4w==} 849 979 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 850 980 851 - '@typescript-eslint/tsconfig-utils@8.38.0': 852 - resolution: {integrity: sha512-Lum9RtSE3EroKk/bYns+sPOodqb2Fv50XOl/gMviMKNvanETUuUcC9ObRbzrJ4VSd2JalPqgSAavwrPiPvnAiQ==} 981 + '@typescript-eslint/tsconfig-utils@8.40.0': 982 + resolution: {integrity: sha512-jtMytmUaG9d/9kqSl/W3E3xaWESo4hFDxAIHGVW/WKKtQhesnRIJSAJO6XckluuJ6KDB5woD1EiqknriCtAmcw==} 853 983 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 854 984 peerDependencies: 855 - typescript: '>=4.8.4 <5.9.0' 985 + typescript: '>=4.8.4 <6.0.0' 856 986 857 - '@typescript-eslint/type-utils@8.38.0': 858 - resolution: {integrity: sha512-c7jAvGEZVf0ao2z+nnz8BUaHZD09Agbh+DY7qvBQqLiz8uJzRgVPj5YvOh8I8uEiH8oIUGIfHzMwUcGVco/SJg==} 987 + '@typescript-eslint/type-utils@8.40.0': 988 + resolution: {integrity: sha512-eE60cK4KzAc6ZrzlJnflXdrMqOBaugeukWICO2rB0KNvwdIMaEaYiywwHMzA1qFpTxrLhN9Lp4E/00EgWcD3Ow==} 859 989 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 860 990 peerDependencies: 861 991 eslint: ^8.57.0 || ^9.0.0 862 - typescript: '>=4.8.4 <5.9.0' 992 + typescript: '>=4.8.4 <6.0.0' 863 993 864 - '@typescript-eslint/types@8.38.0': 865 - resolution: {integrity: sha512-wzkUfX3plUqij4YwWaJyqhiPE5UCRVlFpKn1oCRn2O1bJ592XxWJj8ROQ3JD5MYXLORW84063z3tZTb/cs4Tyw==} 994 + '@typescript-eslint/types@8.40.0': 995 + resolution: {integrity: sha512-ETdbFlgbAmXHyFPwqUIYrfc12ArvpBhEVgGAxVYSwli26dn8Ko+lIo4Su9vI9ykTZdJn+vJprs/0eZU0YMAEQg==} 866 996 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 867 997 868 - '@typescript-eslint/typescript-estree@8.38.0': 869 - resolution: {integrity: sha512-fooELKcAKzxux6fA6pxOflpNS0jc+nOQEEOipXFNjSlBS6fqrJOVY/whSn70SScHrcJ2LDsxWrneFoWYSVfqhQ==} 998 + '@typescript-eslint/typescript-estree@8.40.0': 999 + resolution: {integrity: sha512-k1z9+GJReVVOkc1WfVKs1vBrR5MIKKbdAjDTPvIK3L8De6KbFfPFt6BKpdkdk7rZS2GtC/m6yI5MYX+UsuvVYQ==} 870 1000 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 871 1001 peerDependencies: 872 - typescript: '>=4.8.4 <5.9.0' 1002 + typescript: '>=4.8.4 <6.0.0' 873 1003 874 - '@typescript-eslint/utils@8.38.0': 875 - resolution: {integrity: sha512-hHcMA86Hgt+ijJlrD8fX0j1j8w4C92zue/8LOPAFioIno+W0+L7KqE8QZKCcPGc/92Vs9x36w/4MPTJhqXdyvg==} 1004 + '@typescript-eslint/utils@8.40.0': 1005 + resolution: {integrity: sha512-Cgzi2MXSZyAUOY+BFwGs17s7ad/7L+gKt6Y8rAVVWS+7o6wrjeFN4nVfTpbE25MNcxyJ+iYUXflbs2xR9h4UBg==} 876 1006 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 877 1007 peerDependencies: 878 1008 eslint: ^8.57.0 || ^9.0.0 879 - typescript: '>=4.8.4 <5.9.0' 1009 + typescript: '>=4.8.4 <6.0.0' 880 1010 881 - '@typescript-eslint/visitor-keys@8.38.0': 882 - resolution: {integrity: sha512-pWrTcoFNWuwHlA9CvlfSsGWs14JxfN1TH25zM5L7o0pRLhsoZkDnTsXfQRJBEWJoV5DL0jf+Z+sxiud+K0mq1g==} 1011 + '@typescript-eslint/visitor-keys@8.40.0': 1012 + resolution: {integrity: sha512-8CZ47QwalyRjsypfwnbI3hKy5gJDPmrkLjkgMxhi0+DZZ2QNx2naS6/hWoVYUHU7LU2zleF68V9miaVZvhFfTA==} 883 1013 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 884 1014 885 1015 '@ungap/structured-clone@1.3.0': 886 1016 resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} 887 1017 888 - '@vue/compiler-core@3.5.18': 889 - resolution: {integrity: sha512-3slwjQrrV1TO8MoXgy3aynDQ7lslj5UqDxuHnrzHtpON5CBinhWjJETciPngpin/T3OuW3tXUf86tEurusnztw==} 1018 + '@vitest/expect@3.2.4': 1019 + resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} 1020 + 1021 + '@vitest/mocker@3.2.4': 1022 + resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==} 1023 + peerDependencies: 1024 + msw: ^2.4.9 1025 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0 1026 + peerDependenciesMeta: 1027 + msw: 1028 + optional: true 1029 + vite: 1030 + optional: true 1031 + 1032 + '@vitest/pretty-format@3.2.4': 1033 + resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} 890 1034 891 - '@vue/compiler-dom@3.5.18': 892 - resolution: {integrity: sha512-RMbU6NTU70++B1JyVJbNbeFkK+A+Q7y9XKE2EM4NLGm2WFR8x9MbAtWxPPLdm0wUkuZv9trpwfSlL6tjdIa1+A==} 1035 + '@vitest/runner@3.2.4': 1036 + resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==} 893 1037 894 - '@vue/compiler-sfc@3.5.18': 895 - resolution: {integrity: sha512-5aBjvGqsWs+MoxswZPoTB9nSDb3dhd1x30xrrltKujlCxo48j8HGDNj3QPhF4VIS0VQDUrA1xUfp2hEa+FNyXA==} 1038 + '@vitest/snapshot@3.2.4': 1039 + resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==} 1040 + 1041 + '@vitest/spy@3.2.4': 1042 + resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} 1043 + 1044 + '@vitest/utils@3.2.4': 1045 + resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} 1046 + 1047 + '@vue/compiler-core@3.5.19': 1048 + resolution: {integrity: sha512-/afpyvlkrSNYbPo94Qu8GtIOWS+g5TRdOvs6XZNw6pWQQmj5pBgSZvEPOIZlqWq0YvoUhDDQaQ2TnzuJdOV4hA==} 1049 + 1050 + '@vue/compiler-dom@3.5.19': 1051 + resolution: {integrity: sha512-Drs6rPHQZx/pN9S6ml3Z3K/TWCIRPvzG2B/o5kFK9X0MNHt8/E+38tiRfojufrYBfA6FQUFB2qBBRXlcSXWtOA==} 1052 + 1053 + '@vue/compiler-sfc@3.5.19': 1054 + resolution: {integrity: sha512-YWCm1CYaJ+2RvNmhCwI7t3I3nU+hOrWGWMsn+Z/kmm1jy5iinnVtlmkiZwbLlbV1SRizX7vHsc0/bG5dj0zRTg==} 896 1055 897 - '@vue/compiler-ssr@3.5.18': 898 - resolution: {integrity: sha512-xM16Ak7rSWHkM3m22NlmcdIM+K4BMyFARAfV9hYFl+SFuRzrZ3uGMNW05kA5pmeMa0X9X963Kgou7ufdbpOP9g==} 1056 + '@vue/compiler-ssr@3.5.19': 1057 + resolution: {integrity: sha512-/wx0VZtkWOPdiQLWPeQeqpHWR/LuNC7bHfSX7OayBTtUy8wur6vT6EQIX6Et86aED6J+y8tTw43qo2uoqGg5sw==} 899 1058 900 - '@vue/reactivity@3.5.18': 901 - resolution: {integrity: sha512-x0vPO5Imw+3sChLM5Y+B6G1zPjwdOri9e8V21NnTnlEvkxatHEH5B5KEAJcjuzQ7BsjGrKtfzuQ5eQwXh8HXBg==} 1059 + '@vue/reactivity@3.5.19': 1060 + resolution: {integrity: sha512-4bueZg2qs5MSsK2dQk3sssV0cfvxb/QZntTC8v7J448GLgmfPkQ+27aDjlt40+XFqOwUq5yRxK5uQh14Fc9eVA==} 902 1061 903 - '@vue/runtime-core@3.5.18': 904 - resolution: {integrity: sha512-DUpHa1HpeOQEt6+3nheUfqVXRog2kivkXHUhoqJiKR33SO4x+a5uNOMkV487WPerQkL0vUuRvq/7JhRgLW3S+w==} 1062 + '@vue/runtime-core@3.5.19': 1063 + resolution: {integrity: sha512-TaooCr8Hge1sWjLSyhdubnuofs3shhzZGfyD11gFolZrny76drPwBVQj28/z/4+msSFb18tOIg6VVVgf9/IbIA==} 905 1064 906 - '@vue/runtime-dom@3.5.18': 907 - resolution: {integrity: sha512-YwDj71iV05j4RnzZnZtGaXwPoUWeRsqinblgVJwR8XTXYZ9D5PbahHQgsbmzUvCWNF6x7siQ89HgnX5eWkr3mw==} 1065 + '@vue/runtime-dom@3.5.19': 1066 + resolution: {integrity: sha512-qmahqeok6ztuUTmV8lqd7N9ymbBzctNF885n8gL3xdCC1u2RnM/coX16Via0AiONQXUoYpxPojL3U1IsDgSWUQ==} 908 1067 909 - '@vue/server-renderer@3.5.18': 910 - resolution: {integrity: sha512-PvIHLUoWgSbDG7zLHqSqaCoZvHi6NNmfVFOqO+OnwvqMz/tqQr3FuGWS8ufluNddk7ZLBJYMrjcw1c6XzR12mA==} 1068 + '@vue/server-renderer@3.5.19': 1069 + resolution: {integrity: sha512-ZJ/zV9SQuaIO+BEEVq/2a6fipyrSYfjKMU3267bPUk+oTx/hZq3RzV7VCh0Unlppt39Bvh6+NzxeopIFv4HJNg==} 911 1070 peerDependencies: 912 - vue: 3.5.18 1071 + vue: 3.5.19 913 1072 914 - '@vue/shared@3.5.18': 915 - resolution: {integrity: sha512-cZy8Dq+uuIXbxCZpuLd2GJdeSO/lIzIspC2WtkqIpje5QyFbvLaI5wZtdUjLHjGZrlVX6GilejatWwVYYRc8tA==} 1073 + '@vue/shared@3.5.19': 1074 + resolution: {integrity: sha512-IhXCOn08wgKrLQxRFKKlSacWg4Goi1BolrdEeLYn6tgHjJNXVrWJ5nzoxZqNwl5p88aLlQ8LOaoMa3AYvaKJ/Q==} 916 1075 917 1076 '@vueuse/core@10.11.1': 918 1077 resolution: {integrity: sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww==} 919 1078 1079 + '@vueuse/core@11.3.0': 1080 + resolution: {integrity: sha512-7OC4Rl1f9G8IT6rUfi9JrKiXy4bfmHhZ5x2Ceojy0jnd3mHNEvV4JaRygH362ror6/NZ+Nl+n13LPzGiPN8cKA==} 1081 + 920 1082 '@vueuse/metadata@10.11.1': 921 1083 resolution: {integrity: sha512-IGa5FXd003Ug1qAZmyE8wF3sJ81xGLSqTqtQ6jaVfkeZ4i5kS2mwQF61yhVqojRnenVew5PldLyRgvdl4YYuSw==} 922 1084 1085 + '@vueuse/metadata@11.3.0': 1086 + resolution: {integrity: sha512-pwDnDspTqtTo2HwfLw4Rp6yywuuBdYnPYDq+mO38ZYKGebCUQC/nVj/PXSiK9HX5otxLz8Fn7ECPbjiRz2CC3g==} 1087 + 923 1088 '@vueuse/shared@10.11.1': 924 1089 resolution: {integrity: sha512-LHpC8711VFZlDaYUXEBbFBCQ7GS3dVU9mjOhhMhXP6txTV4EhYQg/KGnQuvt/sPAtoUKq7VVUnL6mVtFoL42sA==} 1090 + 1091 + '@vueuse/shared@11.3.0': 1092 + resolution: {integrity: sha512-P8gSSWQeucH5821ek2mn/ciCk+MS/zoRKqdQIM3bHq6p7GXDAJLmnRRKmF5F65sAVJIfzQlwR3aDzwCn10s8hA==} 925 1093 926 1094 acorn-jsx@5.3.2: 927 1095 resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} ··· 990 1158 resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} 991 1159 engines: {node: '>= 0.4'} 992 1160 1161 + assertion-error@2.0.1: 1162 + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} 1163 + engines: {node: '>=12'} 1164 + 993 1165 async-function@1.0.0: 994 1166 resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} 995 1167 engines: {node: '>= 0.4'} ··· 1023 1195 bun-types@1.2.17: 1024 1196 resolution: {integrity: sha512-ElC7ItwT3SCQwYZDYoAH+q6KT4Fxjl8DtZ6qDulUFBmXA8YB4xo+l54J9ZJN+k2pphfn9vk7kfubeSd5QfTVJQ==} 1025 1197 1198 + cac@6.7.14: 1199 + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 1200 + engines: {node: '>=8'} 1201 + 1026 1202 call-bind-apply-helpers@1.0.2: 1027 1203 resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} 1028 1204 engines: {node: '>= 0.4'} ··· 1045 1221 ccount@2.0.1: 1046 1222 resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} 1047 1223 1224 + chai@5.3.3: 1225 + resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} 1226 + engines: {node: '>=18'} 1227 + 1048 1228 chalk@4.1.2: 1049 1229 resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 1050 1230 engines: {node: '>=10'} 1051 1231 1052 - chalk@5.4.1: 1053 - resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} 1232 + chalk@5.6.0: 1233 + resolution: {integrity: sha512-46QrSQFyVSEyYAgQ22hQ+zDa60YHA4fBstHmtSApj1Y5vKtG27fWowW03jCk5KcbXEWPZUIR894aARCA/G1kfQ==} 1054 1234 engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} 1055 1235 1056 1236 character-entities-html4@2.1.0: ··· 1061 1241 1062 1242 character-entities@2.0.2: 1063 1243 resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} 1244 + 1245 + check-error@2.1.1: 1246 + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} 1247 + engines: {node: '>= 16'} 1064 1248 1065 1249 clean-css@5.3.3: 1066 1250 resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} ··· 1166 1350 decode-named-character-reference@1.2.0: 1167 1351 resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==} 1168 1352 1353 + deep-eql@5.0.2: 1354 + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} 1355 + engines: {node: '>=6'} 1356 + 1169 1357 deep-is@0.1.4: 1170 1358 resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 1171 1359 ··· 1202 1390 resolution: {integrity: sha512-tCPWVZWZqWVx2XUsVpJRnH9Mx0ClVOf5YUHerZ5so1OKSlqww4zy1R5ksEdGRcO3tM3zj0PYN6V48TbQCL1RfA==} 1203 1391 hasBin: true 1204 1392 1205 - drizzle-orm@0.44.3: 1206 - resolution: {integrity: sha512-8nIiYQxOpgUicEL04YFojJmvC4DNO4KoyXsEIqN44+g6gNBr6hmVpWk3uyAt4CaTiRGDwoU+alfqNNeonLAFOQ==} 1393 + drizzle-orm@0.44.4: 1394 + resolution: {integrity: sha512-ZyzKFpTC/Ut3fIqc2c0dPZ6nhchQXriTsqTNs4ayRgl6sZcFlMs9QZKPSHXK4bdOf41GHGWf+FrpcDDYwW+W6Q==} 1207 1395 peerDependencies: 1208 1396 '@aws-sdk/client-rds-data': '>=3' 1209 1397 '@cloudflare/workers-types': '>=4' ··· 1321 1509 resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} 1322 1510 engines: {node: '>= 0.4'} 1323 1511 1512 + es-module-lexer@1.7.0: 1513 + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} 1514 + 1324 1515 es-object-atoms@1.1.1: 1325 1516 resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} 1326 1517 engines: {node: '>= 0.4'} ··· 1347 1538 engines: {node: '>=12'} 1348 1539 hasBin: true 1349 1540 1350 - esbuild@0.25.8: 1351 - resolution: {integrity: sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==} 1541 + esbuild@0.25.9: 1542 + resolution: {integrity: sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==} 1352 1543 engines: {node: '>=18'} 1353 1544 hasBin: true 1354 1545 ··· 1405 1596 '@typescript-eslint/parser': 1406 1597 optional: true 1407 1598 1408 - eslint-plugin-prettier@5.5.3: 1409 - resolution: {integrity: sha512-NAdMYww51ehKfDyDhv59/eIItUVzU0Io9H2E8nHNGKEeeqlnci+1gCvrHib6EmZdf6GxF+LCV5K7UC65Ezvw7w==} 1599 + eslint-plugin-prettier@5.5.4: 1600 + resolution: {integrity: sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==} 1410 1601 engines: {node: ^14.18.0 || >=16.0.0} 1411 1602 peerDependencies: 1412 1603 '@types/eslint': '>=8.0.0' ··· 1431 1622 resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} 1432 1623 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1433 1624 1434 - eslint@9.31.0: 1435 - resolution: {integrity: sha512-QldCVh/ztyKJJZLr4jXNUByx3gR+TDYZCRXEktiZoUR3PGy4qCmSbkxcIle8GEwGpb5JBZazlaJ/CxLidXdEbQ==} 1625 + eslint@9.33.0: 1626 + resolution: {integrity: sha512-TS9bTNIryDzStCpJN93aC5VRSW3uTx9sClUn4B87pwiCaJh220otoI0X8mJKr+VcPtniMdN8GKjlwgWGUv5ZKA==} 1436 1627 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1437 1628 hasBin: true 1438 1629 peerDependencies: ··· 1463 1654 estree-walker@2.0.2: 1464 1655 resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 1465 1656 1657 + estree-walker@3.0.3: 1658 + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 1659 + 1466 1660 esutils@2.0.3: 1467 1661 resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1468 1662 engines: {node: '>=0.10.0'} ··· 1470 1664 event-target-polyfill@0.0.4: 1471 1665 resolution: {integrity: sha512-Gs6RLjzlLRdT8X9ZipJdIZI/Y6/HhRLyq9RdDlCsnpxr/+Nn6bU2EFGuC94GjxqhM+Nmij2Vcq98yoHrU8uNFQ==} 1472 1666 1667 + expect-type@1.2.2: 1668 + resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} 1669 + engines: {node: '>=12.0.0'} 1670 + 1473 1671 extend@3.0.2: 1474 1672 resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} 1475 1673 ··· 1495 1693 fastq@1.19.1: 1496 1694 resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} 1497 1695 1696 + fdir@6.5.0: 1697 + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} 1698 + engines: {node: '>=12.0.0'} 1699 + peerDependencies: 1700 + picomatch: ^3 || ^4 1701 + peerDependenciesMeta: 1702 + picomatch: 1703 + optional: true 1704 + 1498 1705 fecha@4.2.3: 1499 1706 resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} 1500 1707 ··· 1687 1894 highlightjs-vue@1.0.0: 1688 1895 resolution: {integrity: sha512-PDEfEF102G23vHmPhLyPboFCD+BkMGu+GuJe2d9/eH4FsCwvgBpnc9n0pGE+ffKdph38s6foEZiEjdgHdzp+IA==} 1689 1896 1690 - hono@4.8.5: 1691 - resolution: {integrity: sha512-Up2cQbtNz1s111qpnnECdTGqSIUIhZJMLikdKkshebQSEBcoUKq6XJayLGqSZWidiH0zfHRCJqFu062Mz5UuRA==} 1897 + hono@4.9.4: 1898 + resolution: {integrity: sha512-61hl6MF6ojTl/8QSRu5ran6GXt+6zsngIUN95KzF5v5UjiX/xnrLR358BNRawwIRO49JwUqJqQe3Rb2v559R8Q==} 1692 1899 engines: {node: '>=16.9.0'} 1693 1900 1694 1901 html-minifier-terser@7.2.0: ··· 1854 2061 isexe@2.0.0: 1855 2062 resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1856 2063 1857 - jiti@2.4.2: 1858 - resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} 2064 + jiti@2.5.1: 2065 + resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} 1859 2066 hasBin: true 1860 2067 1861 - js-base64@3.7.7: 1862 - resolution: {integrity: sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==} 2068 + js-base64@3.7.8: 2069 + resolution: {integrity: sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow==} 2070 + 2071 + js-tokens@9.0.1: 2072 + resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} 1863 2073 1864 2074 js-yaml@4.1.0: 1865 2075 resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} ··· 1909 2119 resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1910 2120 engines: {node: '>= 0.8.0'} 1911 2121 1912 - libsql@0.5.16: 1913 - resolution: {integrity: sha512-2vZW0MJFDisPQClROZfz956eiqgNZ53eLiALimI0IWBsnPbDLoNDRuqpacd8gu6KCcJHkvKsiEvRa22L0OqNjw==} 2122 + libsql@0.5.17: 2123 + resolution: {integrity: sha512-RRlj5XQI9+Wq+/5UY8EnugSWfRmHEw4hn3DKlPrkUgZONsge1PwTtHcpStP6MSNi8ohcbsRgEHJaymA33a8cBw==} 1914 2124 cpu: [x64, arm64, wasm32, arm] 1915 2125 os: [darwin, linux, win32] 1916 2126 ··· 1928 2138 longest-streak@3.1.0: 1929 2139 resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} 1930 2140 2141 + loupe@3.2.1: 2142 + resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} 2143 + 1931 2144 lower-case@2.0.2: 1932 2145 resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} 1933 2146 1934 2147 lowlight@3.3.0: 1935 2148 resolution: {integrity: sha512-0JNhgFoPvP6U6lE/UdVsSq99tn6DhjjpAj5MxG49ewd2mOBVtwWYIT8ClyABhq198aXXODMU6Ox8DrGy/CpTZQ==} 1936 2149 1937 - magic-string@0.30.17: 1938 - resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} 2150 + magic-string@0.30.18: 2151 + resolution: {integrity: sha512-yi8swmWbO17qHhwIBNeeZxTceJMeBvWJaId6dyvTSOwTipqeHhMhOrz6513r1sOKnpvQ7zkhlG8tPrpilwTxHQ==} 1939 2152 1940 2153 markdown-table@3.0.4: 1941 2154 resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} ··· 2169 2382 parse5@7.3.0: 2170 2383 resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} 2171 2384 2172 - partysocket@1.1.4: 2173 - resolution: {integrity: sha512-jXP7PFj2h5/v4UjDS8P7MZy6NJUQ7sspiFyxL4uc/+oKOL+KdtXzHnTV8INPGxBrLTXgalyG3kd12Qm7WrYc3A==} 2385 + partysocket@1.1.5: 2386 + resolution: {integrity: sha512-8uw9foq9bij4sKLCtTSHvyqMrMTQ5FJjrHc7BjoM2s95Vu7xYCN63ABpI7OZHC7ZMP5xaom/A+SsoFPXmTV6ZQ==} 2174 2387 2175 2388 pascal-case@3.1.2: 2176 2389 resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} ··· 2186 2399 path-parse@1.0.7: 2187 2400 resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 2188 2401 2402 + pathe@2.0.3: 2403 + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} 2404 + 2405 + pathval@2.0.1: 2406 + resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} 2407 + engines: {node: '>= 14.16'} 2408 + 2189 2409 picocolors@1.1.1: 2190 2410 resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 2191 2411 2192 2412 picomatch@2.3.1: 2193 2413 resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 2194 2414 engines: {node: '>=8.6'} 2415 + 2416 + picomatch@4.0.3: 2417 + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} 2418 + engines: {node: '>=12'} 2195 2419 2196 2420 possible-typed-array-names@1.1.0: 2197 2421 resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} ··· 2311 2535 resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} 2312 2536 engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2313 2537 2538 + rollup@4.50.0: 2539 + resolution: {integrity: sha512-/Zl4D8zPifNmyGzJS+3kVoyXeDeT/GrsJM94sACNg9RtUE0hrHa1bNPtRSrfHTMH5HjRzce6K7rlTh3Khiw+pw==} 2540 + engines: {node: '>=18.0.0', npm: '>=8.0.0'} 2541 + hasBin: true 2542 + 2314 2543 run-parallel@1.2.0: 2315 2544 resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 2316 2545 ··· 2381 2610 resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} 2382 2611 engines: {node: '>= 0.4'} 2383 2612 2613 + siginfo@2.0.0: 2614 + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} 2615 + 2384 2616 simple-swizzle@0.2.2: 2385 2617 resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} 2386 2618 ··· 2400 2632 2401 2633 stack-trace@0.0.10: 2402 2634 resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} 2635 + 2636 + stackback@0.0.2: 2637 + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} 2638 + 2639 + std-env@3.9.0: 2640 + resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} 2403 2641 2404 2642 stop-iteration-iterator@1.1.0: 2405 2643 resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} ··· 2435 2673 resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 2436 2674 engines: {node: '>=8'} 2437 2675 2676 + strip-literal@3.0.0: 2677 + resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==} 2678 + 2438 2679 supports-color@7.2.0: 2439 2680 resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 2440 2681 engines: {node: '>=8'} ··· 2461 2702 tiny-emitter@2.1.0: 2462 2703 resolution: {integrity: sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==} 2463 2704 2705 + tinybench@2.9.0: 2706 + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} 2707 + 2708 + tinyexec@0.3.2: 2709 + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} 2710 + 2711 + tinyglobby@0.2.15: 2712 + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} 2713 + engines: {node: '>=12.0.0'} 2714 + 2715 + tinypool@1.1.1: 2716 + resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} 2717 + engines: {node: ^18.0.0 || >=20.0.0} 2718 + 2719 + tinyrainbow@2.0.0: 2720 + resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} 2721 + engines: {node: '>=14.0.0'} 2722 + 2723 + tinyspy@4.0.3: 2724 + resolution: {integrity: sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==} 2725 + engines: {node: '>=14.0.0'} 2726 + 2464 2727 to-regex-range@5.0.1: 2465 2728 resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2466 2729 engines: {node: '>=8.0'} ··· 2497 2760 tslib@2.8.1: 2498 2761 resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 2499 2762 2500 - tsx@4.20.3: 2501 - resolution: {integrity: sha512-qjbnuR9Tr+FJOMBqJCW5ehvIo/buZq7vH7qD7JziU98h6l3qGy0a/yPFjwO+y0/T7GFpNgNAvEcPPVfyT8rrPQ==} 2763 + tsx@4.20.4: 2764 + resolution: {integrity: sha512-yyxBKfORQ7LuRt/BQKBXrpcq59ZvSW0XxwfjAt3w2/8PmdxaFzijtMhTawprSHhpzeM5BgU2hXHG3lklIERZXg==} 2502 2765 engines: {node: '>=18.0.0'} 2503 2766 hasBin: true 2504 2767 ··· 2526 2789 resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} 2527 2790 engines: {node: '>= 0.4'} 2528 2791 2529 - typescript-eslint@8.38.0: 2530 - resolution: {integrity: sha512-FsZlrYK6bPDGoLeZRuvx2v6qrM03I0U0SnfCLPs/XCCPCFD80xU9Pg09H/K+XFa68uJuZo7l/Xhs+eDRg2l3hg==} 2792 + typescript-eslint@8.40.0: 2793 + resolution: {integrity: sha512-Xvd2l+ZmFDPEt4oj1QEXzA4A2uUK6opvKu3eGN9aGjB8au02lIVcLyi375w94hHyejTOmzIU77L8ol2sRg9n7Q==} 2531 2794 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 2532 2795 peerDependencies: 2533 2796 eslint: ^8.57.0 || ^9.0.0 2534 - typescript: '>=4.8.4 <5.9.0' 2797 + typescript: '>=4.8.4 <6.0.0' 2535 2798 2536 - typescript@5.8.3: 2537 - resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} 2799 + typescript@5.9.2: 2800 + resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} 2538 2801 engines: {node: '>=14.17'} 2539 2802 hasBin: true 2540 2803 ··· 2545 2808 undici-types@6.21.0: 2546 2809 resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} 2547 2810 2548 - undici-types@7.8.0: 2549 - resolution: {integrity: sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==} 2811 + undici-types@7.10.0: 2812 + resolution: {integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==} 2550 2813 2551 2814 unified@11.0.5: 2552 2815 resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} ··· 2582 2845 vfile-location@5.0.3: 2583 2846 resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} 2584 2847 2585 - vfile-message@4.0.2: 2586 - resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} 2848 + vfile-message@4.0.3: 2849 + resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} 2587 2850 2588 2851 vfile@6.0.3: 2589 2852 resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} 2590 2853 2854 + vite-node@3.2.4: 2855 + resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==} 2856 + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 2857 + hasBin: true 2858 + 2859 + vite@7.1.4: 2860 + resolution: {integrity: sha512-X5QFK4SGynAeeIt+A7ZWnApdUyHYm+pzv/8/A57LqSGcI88U6R6ipOs3uCesdc6yl7nl+zNO0t8LmqAdXcQihw==} 2861 + engines: {node: ^20.19.0 || >=22.12.0} 2862 + hasBin: true 2863 + peerDependencies: 2864 + '@types/node': ^20.19.0 || >=22.12.0 2865 + jiti: '>=1.21.0' 2866 + less: ^4.0.0 2867 + lightningcss: ^1.21.0 2868 + sass: ^1.70.0 2869 + sass-embedded: ^1.70.0 2870 + stylus: '>=0.54.8' 2871 + sugarss: ^5.0.0 2872 + terser: ^5.16.0 2873 + tsx: ^4.8.1 2874 + yaml: ^2.4.2 2875 + peerDependenciesMeta: 2876 + '@types/node': 2877 + optional: true 2878 + jiti: 2879 + optional: true 2880 + less: 2881 + optional: true 2882 + lightningcss: 2883 + optional: true 2884 + sass: 2885 + optional: true 2886 + sass-embedded: 2887 + optional: true 2888 + stylus: 2889 + optional: true 2890 + sugarss: 2891 + optional: true 2892 + terser: 2893 + optional: true 2894 + tsx: 2895 + optional: true 2896 + yaml: 2897 + optional: true 2898 + 2899 + vitest@3.2.4: 2900 + resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} 2901 + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 2902 + hasBin: true 2903 + peerDependencies: 2904 + '@edge-runtime/vm': '*' 2905 + '@types/debug': ^4.1.12 2906 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 2907 + '@vitest/browser': 3.2.4 2908 + '@vitest/ui': 3.2.4 2909 + happy-dom: '*' 2910 + jsdom: '*' 2911 + peerDependenciesMeta: 2912 + '@edge-runtime/vm': 2913 + optional: true 2914 + '@types/debug': 2915 + optional: true 2916 + '@types/node': 2917 + optional: true 2918 + '@vitest/browser': 2919 + optional: true 2920 + '@vitest/ui': 2921 + optional: true 2922 + happy-dom: 2923 + optional: true 2924 + jsdom: 2925 + optional: true 2926 + 2927 + vue-component-type-helpers@3.0.6: 2928 + resolution: {integrity: sha512-6CRM8X7EJqWCJOiKPvSLQG+hJPb/Oy2gyJx3pLjUEhY7PuaCthQu3e0zAGI1lqUBobrrk9IT0K8sG2GsCluxoQ==} 2929 + 2591 2930 vue-demi@0.14.10: 2592 2931 resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==} 2593 2932 engines: {node: '>=12'} ··· 2602 2941 vue-sonner@1.3.2: 2603 2942 resolution: {integrity: sha512-UbZ48E9VIya3ToiRHAZUbodKute/z/M1iT8/3fU8zEbwBRE11AKuHikssv18LMk2gTTr6eMQT4qf6JoLHWuj/A==} 2604 2943 2605 - vue@3.5.18: 2606 - resolution: {integrity: sha512-7W4Y4ZbMiQ3SEo+m9lnoNpV9xG7QVMLa+/0RFwwiAVkeYoyGXqWE85jabU4pllJNUzqfLShJ5YLptewhCWUgNA==} 2944 + vue@3.5.19: 2945 + resolution: {integrity: sha512-ZRh0HTmw6KChRYWgN8Ox/wi7VhpuGlvMPrHjIsdRbzKNgECFLzy+dKL5z9yGaBSjCpmcfJCbh3I1tNSRmBz2tg==} 2607 2946 peerDependencies: 2608 2947 typescript: '*' 2609 2948 peerDependenciesMeta: ··· 2636 2975 which@2.0.2: 2637 2976 resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 2638 2977 engines: {node: '>= 8'} 2978 + hasBin: true 2979 + 2980 + why-is-node-running@2.3.0: 2981 + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} 2982 + engines: {node: '>=8'} 2639 2983 hasBin: true 2640 2984 2641 2985 winston-transport@4.9.0: ··· 2682 3026 2683 3027 snapshots: 2684 3028 2685 - '@atcute/atproto@3.1.1': 3029 + '@atcute/atproto@3.1.2': 2686 3030 dependencies: 2687 - '@atcute/lexicons': 1.1.0 3031 + '@atcute/lexicons': 1.1.1 2688 3032 2689 - '@atcute/bluesky@3.1.5': 3033 + '@atcute/bluesky@3.2.1': 2690 3034 dependencies: 2691 - '@atcute/atproto': 3.1.1 2692 - '@atcute/lexicons': 1.1.0 3035 + '@atcute/atproto': 3.1.2 3036 + '@atcute/lexicons': 1.1.1 2693 3037 2694 3038 '@atcute/client@4.0.3': 2695 3039 dependencies: 2696 3040 '@atcute/identity': 1.0.3 2697 - '@atcute/lexicons': 1.1.0 3041 + '@atcute/lexicons': 1.1.1 3042 + 3043 + '@atcute/crypto@2.2.4': 3044 + dependencies: 3045 + '@atcute/multibase': 1.1.5 3046 + '@atcute/uint8array': 1.0.4 3047 + '@noble/secp256k1': 2.3.0 2698 3048 2699 3049 '@atcute/identity-resolver@1.1.3(@atcute/identity@1.0.3)': 2700 3050 dependencies: 2701 3051 '@atcute/identity': 1.0.3 2702 - '@atcute/lexicons': 1.1.0 3052 + '@atcute/lexicons': 1.1.1 2703 3053 '@atcute/util-fetch': 1.0.1 2704 - '@badrap/valita': 0.4.5 3054 + '@badrap/valita': 0.4.6 2705 3055 2706 3056 '@atcute/identity@1.0.3': 2707 3057 dependencies: 2708 - '@atcute/lexicons': 1.1.0 2709 - '@badrap/valita': 0.4.5 3058 + '@atcute/lexicons': 1.1.1 3059 + '@badrap/valita': 0.4.6 2710 3060 2711 3061 '@atcute/lex-cli@2.1.1': 2712 3062 dependencies: 2713 3063 '@atcute/lexicon-doc': 1.0.3 2714 - '@badrap/valita': 0.4.5 2715 - '@externdefs/collider': 0.3.0(@badrap/valita@0.4.5) 3064 + '@badrap/valita': 0.4.6 3065 + '@externdefs/collider': 0.3.0(@badrap/valita@0.4.6) 2716 3066 picocolors: 1.1.1 2717 3067 prettier: 3.6.2 2718 3068 2719 3069 '@atcute/lexicon-doc@1.0.3': 2720 3070 dependencies: 2721 - '@badrap/valita': 0.4.5 3071 + '@badrap/valita': 0.4.6 2722 3072 2723 - '@atcute/lexicons@1.1.0': 3073 + '@atcute/lexicons@1.1.1': 2724 3074 dependencies: 2725 3075 esm-env: 1.2.2 2726 3076 3077 + '@atcute/multibase@1.1.5': 3078 + dependencies: 3079 + '@atcute/uint8array': 1.0.4 3080 + 3081 + '@atcute/uint8array@1.0.4': {} 3082 + 2727 3083 '@atcute/util-fetch@1.0.1': 2728 3084 dependencies: 2729 - '@badrap/valita': 0.4.5 3085 + '@badrap/valita': 0.4.6 2730 3086 2731 3087 '@babel/helper-string-parser@7.27.1': {} 2732 3088 2733 3089 '@babel/helper-validator-identifier@7.27.1': {} 2734 3090 2735 - '@babel/parser@7.28.0': 3091 + '@babel/parser@7.28.3': 2736 3092 dependencies: 2737 - '@babel/types': 7.28.1 3093 + '@babel/types': 7.28.2 2738 3094 2739 - '@babel/types@7.28.1': 3095 + '@babel/types@7.28.2': 2740 3096 dependencies: 2741 3097 '@babel/helper-string-parser': 7.27.1 2742 3098 '@babel/helper-validator-identifier': 7.27.1 2743 3099 2744 - '@badrap/valita@0.4.5': {} 3100 + '@badrap/valita@0.4.6': {} 2745 3101 2746 - '@clipprjs/lexicons@1.0.2': 3102 + '@clipprjs/lexicons@1.0.3': 2747 3103 dependencies: 2748 - '@atcute/atproto': 3.1.1 2749 - '@atcute/lexicons': 1.1.0 3104 + '@atcute/atproto': 3.1.2 3105 + '@atcute/lexicons': 1.1.1 2750 3106 2751 3107 '@colors/colors@1.6.0': {} 2752 3108 ··· 2768 3124 '@esbuild-kit/core-utils': 3.3.2 2769 3125 get-tsconfig: 4.10.1 2770 3126 2771 - '@esbuild/aix-ppc64@0.25.8': 3127 + '@esbuild/aix-ppc64@0.25.9': 2772 3128 optional: true 2773 3129 2774 3130 '@esbuild/android-arm64@0.18.20': 2775 3131 optional: true 2776 3132 2777 - '@esbuild/android-arm64@0.25.8': 3133 + '@esbuild/android-arm64@0.25.9': 2778 3134 optional: true 2779 3135 2780 3136 '@esbuild/android-arm@0.18.20': 2781 3137 optional: true 2782 3138 2783 - '@esbuild/android-arm@0.25.8': 3139 + '@esbuild/android-arm@0.25.9': 2784 3140 optional: true 2785 3141 2786 3142 '@esbuild/android-x64@0.18.20': 2787 3143 optional: true 2788 3144 2789 - '@esbuild/android-x64@0.25.8': 3145 + '@esbuild/android-x64@0.25.9': 2790 3146 optional: true 2791 3147 2792 3148 '@esbuild/darwin-arm64@0.18.20': 2793 3149 optional: true 2794 3150 2795 - '@esbuild/darwin-arm64@0.25.8': 3151 + '@esbuild/darwin-arm64@0.25.9': 2796 3152 optional: true 2797 3153 2798 3154 '@esbuild/darwin-x64@0.18.20': 2799 3155 optional: true 2800 3156 2801 - '@esbuild/darwin-x64@0.25.8': 3157 + '@esbuild/darwin-x64@0.25.9': 2802 3158 optional: true 2803 3159 2804 3160 '@esbuild/freebsd-arm64@0.18.20': 2805 3161 optional: true 2806 3162 2807 - '@esbuild/freebsd-arm64@0.25.8': 3163 + '@esbuild/freebsd-arm64@0.25.9': 2808 3164 optional: true 2809 3165 2810 3166 '@esbuild/freebsd-x64@0.18.20': 2811 3167 optional: true 2812 3168 2813 - '@esbuild/freebsd-x64@0.25.8': 3169 + '@esbuild/freebsd-x64@0.25.9': 2814 3170 optional: true 2815 3171 2816 3172 '@esbuild/linux-arm64@0.18.20': 2817 3173 optional: true 2818 3174 2819 - '@esbuild/linux-arm64@0.25.8': 3175 + '@esbuild/linux-arm64@0.25.9': 2820 3176 optional: true 2821 3177 2822 3178 '@esbuild/linux-arm@0.18.20': 2823 3179 optional: true 2824 3180 2825 - '@esbuild/linux-arm@0.25.8': 3181 + '@esbuild/linux-arm@0.25.9': 2826 3182 optional: true 2827 3183 2828 3184 '@esbuild/linux-ia32@0.18.20': 2829 3185 optional: true 2830 3186 2831 - '@esbuild/linux-ia32@0.25.8': 3187 + '@esbuild/linux-ia32@0.25.9': 2832 3188 optional: true 2833 3189 2834 3190 '@esbuild/linux-loong64@0.18.20': 2835 3191 optional: true 2836 3192 2837 - '@esbuild/linux-loong64@0.25.8': 3193 + '@esbuild/linux-loong64@0.25.9': 2838 3194 optional: true 2839 3195 2840 3196 '@esbuild/linux-mips64el@0.18.20': 2841 3197 optional: true 2842 3198 2843 - '@esbuild/linux-mips64el@0.25.8': 3199 + '@esbuild/linux-mips64el@0.25.9': 2844 3200 optional: true 2845 3201 2846 3202 '@esbuild/linux-ppc64@0.18.20': 2847 3203 optional: true 2848 3204 2849 - '@esbuild/linux-ppc64@0.25.8': 3205 + '@esbuild/linux-ppc64@0.25.9': 2850 3206 optional: true 2851 3207 2852 3208 '@esbuild/linux-riscv64@0.18.20': 2853 3209 optional: true 2854 3210 2855 - '@esbuild/linux-riscv64@0.25.8': 3211 + '@esbuild/linux-riscv64@0.25.9': 2856 3212 optional: true 2857 3213 2858 3214 '@esbuild/linux-s390x@0.18.20': 2859 3215 optional: true 2860 3216 2861 - '@esbuild/linux-s390x@0.25.8': 3217 + '@esbuild/linux-s390x@0.25.9': 2862 3218 optional: true 2863 3219 2864 3220 '@esbuild/linux-x64@0.18.20': 2865 3221 optional: true 2866 3222 2867 - '@esbuild/linux-x64@0.25.8': 3223 + '@esbuild/linux-x64@0.25.9': 2868 3224 optional: true 2869 3225 2870 - '@esbuild/netbsd-arm64@0.25.8': 3226 + '@esbuild/netbsd-arm64@0.25.9': 2871 3227 optional: true 2872 3228 2873 3229 '@esbuild/netbsd-x64@0.18.20': 2874 3230 optional: true 2875 3231 2876 - '@esbuild/netbsd-x64@0.25.8': 3232 + '@esbuild/netbsd-x64@0.25.9': 2877 3233 optional: true 2878 3234 2879 - '@esbuild/openbsd-arm64@0.25.8': 3235 + '@esbuild/openbsd-arm64@0.25.9': 2880 3236 optional: true 2881 3237 2882 3238 '@esbuild/openbsd-x64@0.18.20': 2883 3239 optional: true 2884 3240 2885 - '@esbuild/openbsd-x64@0.25.8': 3241 + '@esbuild/openbsd-x64@0.25.9': 2886 3242 optional: true 2887 3243 2888 - '@esbuild/openharmony-arm64@0.25.8': 3244 + '@esbuild/openharmony-arm64@0.25.9': 2889 3245 optional: true 2890 3246 2891 3247 '@esbuild/sunos-x64@0.18.20': 2892 3248 optional: true 2893 3249 2894 - '@esbuild/sunos-x64@0.25.8': 3250 + '@esbuild/sunos-x64@0.25.9': 2895 3251 optional: true 2896 3252 2897 3253 '@esbuild/win32-arm64@0.18.20': 2898 3254 optional: true 2899 3255 2900 - '@esbuild/win32-arm64@0.25.8': 3256 + '@esbuild/win32-arm64@0.25.9': 2901 3257 optional: true 2902 3258 2903 3259 '@esbuild/win32-ia32@0.18.20': 2904 3260 optional: true 2905 3261 2906 - '@esbuild/win32-ia32@0.25.8': 3262 + '@esbuild/win32-ia32@0.25.9': 2907 3263 optional: true 2908 3264 2909 3265 '@esbuild/win32-x64@0.18.20': 2910 3266 optional: true 2911 3267 2912 - '@esbuild/win32-x64@0.25.8': 3268 + '@esbuild/win32-x64@0.25.9': 2913 3269 optional: true 2914 3270 2915 - '@eslint-community/eslint-utils@4.7.0(eslint@9.31.0(jiti@2.4.2))': 3271 + '@eslint-community/eslint-utils@4.7.0(eslint@9.33.0(jiti@2.5.1))': 2916 3272 dependencies: 2917 - eslint: 9.31.0(jiti@2.4.2) 3273 + eslint: 9.33.0(jiti@2.5.1) 2918 3274 eslint-visitor-keys: 3.4.3 2919 3275 2920 3276 '@eslint-community/regexpp@4.12.1': {} ··· 2927 3283 transitivePeerDependencies: 2928 3284 - supports-color 2929 3285 2930 - '@eslint/config-helpers@0.3.0': {} 3286 + '@eslint/config-helpers@0.3.1': {} 2931 3287 2932 - '@eslint/core@0.15.1': 3288 + '@eslint/core@0.15.2': 2933 3289 dependencies: 2934 3290 '@types/json-schema': 7.0.15 2935 3291 ··· 2947 3303 transitivePeerDependencies: 2948 3304 - supports-color 2949 3305 2950 - '@eslint/js@9.31.0': {} 3306 + '@eslint/js@9.33.0': {} 2951 3307 2952 3308 '@eslint/object-schema@2.1.6': {} 2953 3309 2954 - '@eslint/plugin-kit@0.3.4': 3310 + '@eslint/plugin-kit@0.3.5': 2955 3311 dependencies: 2956 - '@eslint/core': 0.15.1 3312 + '@eslint/core': 0.15.2 2957 3313 levn: 0.4.1 2958 3314 2959 - '@externdefs/collider@0.3.0(@badrap/valita@0.4.5)': 3315 + '@externdefs/collider@0.3.0(@badrap/valita@0.4.6)': 2960 3316 dependencies: 2961 - '@badrap/valita': 0.4.5 3317 + '@badrap/valita': 0.4.6 2962 3318 2963 - '@floating-ui/core@1.7.2': 3319 + '@floating-ui/core@1.7.3': 2964 3320 dependencies: 2965 3321 '@floating-ui/utils': 0.2.10 2966 3322 2967 - '@floating-ui/dom@1.7.2': 3323 + '@floating-ui/dom@1.7.4': 2968 3324 dependencies: 2969 - '@floating-ui/core': 1.7.2 3325 + '@floating-ui/core': 1.7.3 2970 3326 '@floating-ui/utils': 0.2.10 2971 3327 2972 3328 '@floating-ui/utils@0.2.10': {} 2973 3329 2974 - '@floating-ui/vue@1.1.7(vue@3.5.18(typescript@5.8.3))': 3330 + '@floating-ui/vue@1.1.9(vue@3.5.19(typescript@5.9.2))': 2975 3331 dependencies: 2976 - '@floating-ui/dom': 1.7.2 3332 + '@floating-ui/dom': 1.7.4 2977 3333 '@floating-ui/utils': 0.2.10 2978 - vue-demi: 0.14.10(vue@3.5.18(typescript@5.8.3)) 3334 + vue-demi: 0.14.10(vue@3.5.19(typescript@5.9.2)) 2979 3335 transitivePeerDependencies: 2980 3336 - '@vue/composition-api' 2981 3337 - vue 2982 3338 2983 - '@headlessui/vue@1.7.23(vue@3.5.18(typescript@5.8.3))': 3339 + '@headlessui/vue@1.7.23(vue@3.5.19(typescript@5.9.2))': 2984 3340 dependencies: 2985 - '@tanstack/vue-virtual': 3.13.12(vue@3.5.18(typescript@5.8.3)) 2986 - vue: 3.5.18(typescript@5.8.3) 3341 + '@tanstack/vue-virtual': 3.13.12(vue@3.5.19(typescript@5.9.2)) 3342 + vue: 3.5.19(typescript@5.9.2) 2987 3343 2988 - '@hono/node-server@1.17.1(hono@4.8.5)': 3344 + '@hono/node-server@1.19.0(hono@4.9.4)': 2989 3345 dependencies: 2990 - hono: 4.8.5 3346 + hono: 4.9.4 2991 3347 2992 3348 '@humanfs/core@0.19.1': {} 2993 3349 ··· 3034 3390 dependencies: 3035 3391 '@swc/helpers': 0.5.17 3036 3392 3037 - '@jridgewell/gen-mapping@0.3.12': 3393 + '@jridgewell/gen-mapping@0.3.13': 3038 3394 dependencies: 3039 - '@jridgewell/sourcemap-codec': 1.5.4 3040 - '@jridgewell/trace-mapping': 0.3.29 3395 + '@jridgewell/sourcemap-codec': 1.5.5 3396 + '@jridgewell/trace-mapping': 0.3.30 3041 3397 3042 3398 '@jridgewell/resolve-uri@3.1.2': {} 3043 3399 3044 - '@jridgewell/source-map@0.3.10': 3400 + '@jridgewell/source-map@0.3.11': 3045 3401 dependencies: 3046 - '@jridgewell/gen-mapping': 0.3.12 3047 - '@jridgewell/trace-mapping': 0.3.29 3402 + '@jridgewell/gen-mapping': 0.3.13 3403 + '@jridgewell/trace-mapping': 0.3.30 3048 3404 3049 - '@jridgewell/sourcemap-codec@1.5.4': {} 3405 + '@jridgewell/sourcemap-codec@1.5.5': {} 3050 3406 3051 - '@jridgewell/trace-mapping@0.3.29': 3407 + '@jridgewell/trace-mapping@0.3.30': 3052 3408 dependencies: 3053 3409 '@jridgewell/resolve-uri': 3.1.2 3054 - '@jridgewell/sourcemap-codec': 1.5.4 3410 + '@jridgewell/sourcemap-codec': 1.5.5 3055 3411 3056 - '@libsql/client@0.15.10': 3412 + '@libsql/client@0.15.12': 3057 3413 dependencies: 3058 - '@libsql/core': 0.15.10 3414 + '@libsql/core': 0.15.12 3059 3415 '@libsql/hrana-client': 0.7.0 3060 - js-base64: 3.7.7 3061 - libsql: 0.5.16 3416 + js-base64: 3.7.8 3417 + libsql: 0.5.17 3062 3418 promise-limit: 2.7.0 3063 3419 transitivePeerDependencies: 3064 3420 - bufferutil 3065 3421 - utf-8-validate 3066 3422 3067 - '@libsql/core@0.15.10': 3423 + '@libsql/core@0.15.12': 3068 3424 dependencies: 3069 - js-base64: 3.7.7 3425 + js-base64: 3.7.8 3070 3426 3071 - '@libsql/darwin-arm64@0.5.16': 3427 + '@libsql/darwin-arm64@0.5.17': 3072 3428 optional: true 3073 3429 3074 - '@libsql/darwin-x64@0.5.16': 3430 + '@libsql/darwin-x64@0.5.17': 3075 3431 optional: true 3076 3432 3077 3433 '@libsql/hrana-client@0.7.0': 3078 3434 dependencies: 3079 3435 '@libsql/isomorphic-fetch': 0.3.1 3080 3436 '@libsql/isomorphic-ws': 0.1.5 3081 - js-base64: 3.7.7 3437 + js-base64: 3.7.8 3082 3438 node-fetch: 3.3.2 3083 3439 transitivePeerDependencies: 3084 3440 - bufferutil ··· 3094 3450 - bufferutil 3095 3451 - utf-8-validate 3096 3452 3097 - '@libsql/linux-arm-gnueabihf@0.5.16': 3453 + '@libsql/linux-arm-gnueabihf@0.5.17': 3098 3454 optional: true 3099 3455 3100 - '@libsql/linux-arm-musleabihf@0.5.16': 3456 + '@libsql/linux-arm-musleabihf@0.5.17': 3101 3457 optional: true 3102 3458 3103 - '@libsql/linux-arm64-gnu@0.5.16': 3459 + '@libsql/linux-arm64-gnu@0.5.17': 3104 3460 optional: true 3105 3461 3106 - '@libsql/linux-arm64-musl@0.5.16': 3462 + '@libsql/linux-arm64-musl@0.5.17': 3107 3463 optional: true 3108 3464 3109 - '@libsql/linux-x64-gnu@0.5.16': 3465 + '@libsql/linux-x64-gnu@0.5.17': 3110 3466 optional: true 3111 3467 3112 - '@libsql/linux-x64-musl@0.5.16': 3468 + '@libsql/linux-x64-musl@0.5.17': 3113 3469 optional: true 3114 3470 3115 - '@libsql/win32-x64-msvc@0.5.16': 3471 + '@libsql/win32-x64-msvc@0.5.17': 3116 3472 optional: true 3117 3473 3118 3474 '@neon-rs/load@0.0.4': {} 3475 + 3476 + '@noble/secp256k1@2.3.0': {} 3119 3477 3120 3478 '@nodelib/fs.scandir@2.1.5': 3121 3479 dependencies: ··· 3133 3491 3134 3492 '@pkgr/core@0.2.9': {} 3135 3493 3494 + '@rollup/rollup-android-arm-eabi@4.50.0': 3495 + optional: true 3496 + 3497 + '@rollup/rollup-android-arm64@4.50.0': 3498 + optional: true 3499 + 3500 + '@rollup/rollup-darwin-arm64@4.50.0': 3501 + optional: true 3502 + 3503 + '@rollup/rollup-darwin-x64@4.50.0': 3504 + optional: true 3505 + 3506 + '@rollup/rollup-freebsd-arm64@4.50.0': 3507 + optional: true 3508 + 3509 + '@rollup/rollup-freebsd-x64@4.50.0': 3510 + optional: true 3511 + 3512 + '@rollup/rollup-linux-arm-gnueabihf@4.50.0': 3513 + optional: true 3514 + 3515 + '@rollup/rollup-linux-arm-musleabihf@4.50.0': 3516 + optional: true 3517 + 3518 + '@rollup/rollup-linux-arm64-gnu@4.50.0': 3519 + optional: true 3520 + 3521 + '@rollup/rollup-linux-arm64-musl@4.50.0': 3522 + optional: true 3523 + 3524 + '@rollup/rollup-linux-loongarch64-gnu@4.50.0': 3525 + optional: true 3526 + 3527 + '@rollup/rollup-linux-ppc64-gnu@4.50.0': 3528 + optional: true 3529 + 3530 + '@rollup/rollup-linux-riscv64-gnu@4.50.0': 3531 + optional: true 3532 + 3533 + '@rollup/rollup-linux-riscv64-musl@4.50.0': 3534 + optional: true 3535 + 3536 + '@rollup/rollup-linux-s390x-gnu@4.50.0': 3537 + optional: true 3538 + 3539 + '@rollup/rollup-linux-x64-gnu@4.50.0': 3540 + optional: true 3541 + 3542 + '@rollup/rollup-linux-x64-musl@4.50.0': 3543 + optional: true 3544 + 3545 + '@rollup/rollup-openharmony-arm64@4.50.0': 3546 + optional: true 3547 + 3548 + '@rollup/rollup-win32-arm64-msvc@4.50.0': 3549 + optional: true 3550 + 3551 + '@rollup/rollup-win32-ia32-msvc@4.50.0': 3552 + optional: true 3553 + 3554 + '@rollup/rollup-win32-x64-msvc@4.50.0': 3555 + optional: true 3556 + 3136 3557 '@rtsao/scc@1.1.0': {} 3137 3558 3138 - '@scalar/code-highlight@0.1.8': 3559 + '@scalar/code-highlight@0.1.9': 3139 3560 dependencies: 3140 3561 hast-util-to-text: 4.0.2 3141 3562 highlight.js: 11.11.1 ··· 3157 3578 transitivePeerDependencies: 3158 3579 - supports-color 3159 3580 3160 - '@scalar/components@0.14.20(typescript@5.8.3)': 3581 + '@scalar/components@0.14.25(typescript@5.9.2)': 3161 3582 dependencies: 3162 3583 '@floating-ui/utils': 0.2.10 3163 - '@floating-ui/vue': 1.1.7(vue@3.5.18(typescript@5.8.3)) 3164 - '@headlessui/vue': 1.7.23(vue@3.5.18(typescript@5.8.3)) 3165 - '@scalar/code-highlight': 0.1.8 3166 - '@scalar/icons': 0.4.6(typescript@5.8.3) 3167 - '@scalar/oas-utils': 0.4.15(typescript@5.8.3) 3168 - '@scalar/themes': 0.13.11 3169 - '@scalar/use-hooks': 0.2.4(typescript@5.8.3) 3170 - '@scalar/use-toasts': 0.8.0(typescript@5.8.3) 3171 - '@vueuse/core': 10.11.1(vue@3.5.18(typescript@5.8.3)) 3172 - cva: 1.0.0-beta.2(typescript@5.8.3) 3584 + '@floating-ui/vue': 1.1.9(vue@3.5.19(typescript@5.9.2)) 3585 + '@headlessui/vue': 1.7.23(vue@3.5.19(typescript@5.9.2)) 3586 + '@scalar/code-highlight': 0.1.9 3587 + '@scalar/helpers': 0.0.8 3588 + '@scalar/icons': 0.4.7(typescript@5.9.2) 3589 + '@scalar/oas-utils': 0.4.20(typescript@5.9.2) 3590 + '@scalar/themes': 0.13.13 3591 + '@scalar/use-hooks': 0.2.4(typescript@5.9.2) 3592 + '@scalar/use-toasts': 0.8.0(typescript@5.9.2) 3593 + '@vueuse/core': 11.3.0(vue@3.5.19(typescript@5.9.2)) 3594 + cva: 1.0.0-beta.2(typescript@5.9.2) 3173 3595 nanoid: 5.1.5 3174 3596 pretty-bytes: 6.1.1 3175 - radix-vue: 1.9.17(vue@3.5.18(typescript@5.8.3)) 3176 - vue: 3.5.18(typescript@5.8.3) 3597 + radix-vue: 1.9.17(vue@3.5.19(typescript@5.9.2)) 3598 + vue: 3.5.19(typescript@5.9.2) 3599 + vue-component-type-helpers: 3.0.6 3177 3600 transitivePeerDependencies: 3178 3601 - '@vue/composition-api' 3179 3602 - supports-color 3180 3603 - typescript 3181 3604 3182 - '@scalar/core@0.3.10': 3605 + '@scalar/core@0.3.13': 3183 3606 dependencies: 3184 - '@scalar/types': 0.2.10 3607 + '@scalar/types': 0.2.12 3185 3608 3186 - '@scalar/helpers@0.0.6': {} 3609 + '@scalar/helpers@0.0.8': {} 3187 3610 3188 - '@scalar/hono-api-reference@0.9.12(hono@4.8.5)': 3611 + '@scalar/hono-api-reference@0.9.15(hono@4.9.4)': 3189 3612 dependencies: 3190 - '@scalar/core': 0.3.10 3191 - hono: 4.8.5 3613 + '@scalar/core': 0.3.13 3614 + hono: 4.9.4 3192 3615 3193 - '@scalar/icons@0.4.6(typescript@5.8.3)': 3616 + '@scalar/icons@0.4.7(typescript@5.9.2)': 3194 3617 dependencies: 3195 3618 '@phosphor-icons/core': 2.1.1 3196 - '@types/node': 22.16.5 3197 - chalk: 5.4.1 3198 - vue: 3.5.18(typescript@5.8.3) 3619 + '@types/node': 22.17.2 3620 + chalk: 5.6.0 3621 + vue: 3.5.19(typescript@5.9.2) 3199 3622 transitivePeerDependencies: 3200 3623 - typescript 3201 3624 3202 - '@scalar/json-diff@0.0.4': {} 3625 + '@scalar/json-magic@0.3.0(typescript@5.9.2)': 3626 + dependencies: 3627 + '@scalar/helpers': 0.0.8 3628 + vue: 3.5.19(typescript@5.9.2) 3629 + yaml: 2.8.0 3630 + transitivePeerDependencies: 3631 + - typescript 3203 3632 3204 - '@scalar/oas-utils@0.4.15(typescript@5.8.3)': 3633 + '@scalar/oas-utils@0.4.20(typescript@5.9.2)': 3205 3634 dependencies: 3206 3635 '@hyperjump/browser': 1.3.1 3207 3636 '@hyperjump/json-schema': 1.16.2(@hyperjump/browser@1.3.1) 3208 - '@scalar/helpers': 0.0.6 3209 - '@scalar/object-utils': 1.2.2 3210 - '@scalar/openapi-types': 0.3.6 3211 - '@scalar/themes': 0.13.11 3212 - '@scalar/types': 0.2.10 3213 - '@scalar/workspace-store': 0.10.2(typescript@5.8.3) 3637 + '@scalar/helpers': 0.0.8 3638 + '@scalar/json-magic': 0.3.0(typescript@5.9.2) 3639 + '@scalar/object-utils': 1.2.4 3640 + '@scalar/openapi-types': 0.3.7 3641 + '@scalar/themes': 0.13.13 3642 + '@scalar/types': 0.2.12 3643 + '@scalar/workspace-store': 0.14.0(typescript@5.9.2) 3214 3644 '@types/har-format': 1.2.16 3215 3645 flatted: 3.3.3 3216 3646 microdiff: 1.5.0 ··· 3222 3652 - supports-color 3223 3653 - typescript 3224 3654 3225 - '@scalar/object-utils@1.2.2': 3655 + '@scalar/object-utils@1.2.4': 3226 3656 dependencies: 3657 + '@scalar/helpers': 0.0.8 3227 3658 flatted: 3.3.3 3228 3659 just-clone: 6.2.0 3229 3660 ts-deepmerge: 7.0.3 3230 3661 type-fest: 4.41.0 3231 3662 3232 - '@scalar/openapi-parser@0.18.2': 3663 + '@scalar/openapi-parser@0.20.0(typescript@5.9.2)': 3233 3664 dependencies: 3665 + '@scalar/json-magic': 0.3.0(typescript@5.9.2) 3666 + '@scalar/openapi-types': 0.3.7 3234 3667 ajv: 8.17.1 3235 3668 ajv-draft-04: 1.0.0(ajv@8.17.1) 3236 3669 ajv-formats: 3.0.1(ajv@8.17.1) 3237 3670 jsonpointer: 5.0.1 3238 3671 leven: 4.0.0 3239 3672 yaml: 2.8.0 3673 + transitivePeerDependencies: 3674 + - typescript 3240 3675 3241 - '@scalar/openapi-to-markdown@0.2.23(typescript@5.8.3)': 3676 + '@scalar/openapi-to-markdown@0.2.28(typescript@5.9.2)': 3242 3677 dependencies: 3243 - '@scalar/components': 0.14.20(typescript@5.8.3) 3244 - '@scalar/oas-utils': 0.4.15(typescript@5.8.3) 3245 - '@scalar/openapi-parser': 0.18.2 3246 - '@scalar/openapi-types': 0.3.6 3247 - '@scalar/snippetz': 0.4.3 3248 - '@scalar/types': 0.2.10 3678 + '@scalar/components': 0.14.25(typescript@5.9.2) 3679 + '@scalar/oas-utils': 0.4.20(typescript@5.9.2) 3680 + '@scalar/openapi-parser': 0.20.0(typescript@5.9.2) 3681 + '@scalar/openapi-types': 0.3.7 3682 + '@scalar/snippetz': 0.4.5 3683 + '@scalar/types': 0.2.12 3249 3684 html-minifier-terser: 7.2.0 3250 3685 object-to-xml: 2.0.0 3251 3686 rehype-parse: 9.0.1 ··· 3255 3690 remark-gfm: 4.0.1 3256 3691 remark-stringify: 11.0.0 3257 3692 unified: 11.0.5 3258 - vue: 3.5.18(typescript@5.8.3) 3693 + vue: 3.5.19(typescript@5.9.2) 3259 3694 transitivePeerDependencies: 3260 3695 - '@vue/composition-api' 3261 3696 - supports-color 3262 3697 - typescript 3263 3698 3264 - '@scalar/openapi-types@0.3.6': 3699 + '@scalar/openapi-types@0.3.7': 3265 3700 dependencies: 3266 3701 zod: 3.24.1 3267 3702 3268 - '@scalar/snippetz@0.4.3': 3703 + '@scalar/snippetz@0.4.5': 3269 3704 dependencies: 3270 - '@scalar/types': 0.2.10 3705 + '@scalar/types': 0.2.12 3271 3706 stringify-object: 5.0.0 3272 3707 3273 - '@scalar/themes@0.13.11': 3708 + '@scalar/themes@0.13.13': 3274 3709 dependencies: 3275 - '@scalar/types': 0.2.10 3710 + '@scalar/types': 0.2.12 3276 3711 nanoid: 5.1.5 3277 3712 3278 - '@scalar/types@0.2.10': 3713 + '@scalar/types@0.2.12': 3279 3714 dependencies: 3280 - '@scalar/openapi-types': 0.3.6 3715 + '@scalar/openapi-types': 0.3.7 3281 3716 nanoid: 5.1.5 3282 3717 zod: 3.24.1 3283 3718 3284 - '@scalar/use-hooks@0.2.4(typescript@5.8.3)': 3719 + '@scalar/use-hooks@0.2.4(typescript@5.9.2)': 3285 3720 dependencies: 3286 - '@scalar/use-toasts': 0.8.0(typescript@5.8.3) 3287 - '@vueuse/core': 10.11.1(vue@3.5.18(typescript@5.8.3)) 3288 - cva: 1.0.0-beta.2(typescript@5.8.3) 3721 + '@scalar/use-toasts': 0.8.0(typescript@5.9.2) 3722 + '@vueuse/core': 10.11.1(vue@3.5.19(typescript@5.9.2)) 3723 + cva: 1.0.0-beta.2(typescript@5.9.2) 3289 3724 tailwind-merge: 2.6.0 3290 - vue: 3.5.18(typescript@5.8.3) 3725 + vue: 3.5.19(typescript@5.9.2) 3291 3726 zod: 3.24.1 3292 3727 transitivePeerDependencies: 3293 3728 - '@vue/composition-api' 3294 3729 - typescript 3295 3730 3296 - '@scalar/use-toasts@0.8.0(typescript@5.8.3)': 3731 + '@scalar/use-toasts@0.8.0(typescript@5.9.2)': 3297 3732 dependencies: 3298 3733 nanoid: 5.1.5 3299 - vue: 3.5.18(typescript@5.8.3) 3734 + vue: 3.5.19(typescript@5.9.2) 3300 3735 vue-sonner: 1.3.2 3301 3736 transitivePeerDependencies: 3302 3737 - typescript 3303 3738 3304 - '@scalar/workspace-store@0.10.2(typescript@5.8.3)': 3739 + '@scalar/workspace-store@0.14.0(typescript@5.9.2)': 3305 3740 dependencies: 3306 - '@scalar/code-highlight': 0.1.8 3307 - '@scalar/helpers': 0.0.6 3308 - '@scalar/json-diff': 0.0.4 3309 - '@scalar/openapi-parser': 0.18.2 3310 - '@scalar/openapi-types': 0.3.6 3311 - '@scalar/types': 0.2.10 3312 - '@sinclair/typebox': 0.34.37 3741 + '@scalar/code-highlight': 0.1.9 3742 + '@scalar/helpers': 0.0.8 3743 + '@scalar/json-magic': 0.3.0(typescript@5.9.2) 3744 + '@scalar/openapi-parser': 0.20.0(typescript@5.9.2) 3745 + '@scalar/types': 0.2.12 3746 + '@sinclair/typebox': https://raw.githubusercontent.com/DemonHa/typebox/refs/heads/amrit/build/target/remote/sinclair-typebox-0.34.38.tgz 3313 3747 github-slugger: 2.0.0 3314 - vue: 3.5.18(typescript@5.8.3) 3748 + type-fest: 4.41.0 3749 + vue: 3.5.19(typescript@5.9.2) 3315 3750 yaml: 2.8.0 3316 3751 transitivePeerDependencies: 3317 3752 - supports-color 3318 3753 - typescript 3319 3754 3320 - '@sinclair/typebox@0.34.37': {} 3755 + '@sinclair/typebox@https://raw.githubusercontent.com/DemonHa/typebox/refs/heads/amrit/build/target/remote/sinclair-typebox-0.34.38.tgz': {} 3321 3756 3322 3757 '@skyware/jetstream@0.2.5': 3323 3758 dependencies: 3324 - '@atcute/atproto': 3.1.1 3325 - '@atcute/bluesky': 3.1.5 3326 - '@atcute/lexicons': 1.1.0 3327 - partysocket: 1.1.4 3759 + '@atcute/atproto': 3.1.2 3760 + '@atcute/bluesky': 3.2.1 3761 + '@atcute/lexicons': 1.1.1 3762 + partysocket: 1.1.5 3328 3763 tiny-emitter: 2.1.0 3329 3764 3330 3765 '@swc/helpers@0.5.17': ··· 3333 3768 3334 3769 '@tanstack/virtual-core@3.13.12': {} 3335 3770 3336 - '@tanstack/vue-virtual@3.13.12(vue@3.5.18(typescript@5.8.3))': 3771 + '@tanstack/vue-virtual@3.13.12(vue@3.5.19(typescript@5.9.2))': 3337 3772 dependencies: 3338 3773 '@tanstack/virtual-core': 3.13.12 3339 - vue: 3.5.18(typescript@5.8.3) 3774 + vue: 3.5.19(typescript@5.9.2) 3775 + 3776 + '@types/chai@5.2.2': 3777 + dependencies: 3778 + '@types/deep-eql': 4.0.2 3340 3779 3341 3780 '@types/debug@4.1.12': 3342 3781 dependencies: 3343 3782 '@types/ms': 2.1.0 3344 3783 3784 + '@types/deep-eql@4.0.2': {} 3785 + 3345 3786 '@types/estree@1.0.8': {} 3346 3787 3347 3788 '@types/har-format@1.2.16': {} ··· 3360 3801 3361 3802 '@types/ms@2.1.0': {} 3362 3803 3363 - '@types/node@22.16.5': 3804 + '@types/node@22.17.2': 3364 3805 dependencies: 3365 3806 undici-types: 6.21.0 3366 3807 3367 - '@types/node@24.1.0': 3808 + '@types/node@24.3.0': 3368 3809 dependencies: 3369 - undici-types: 7.8.0 3810 + undici-types: 7.10.0 3370 3811 3371 3812 '@types/triple-beam@1.3.5': {} 3372 3813 ··· 3376 3817 3377 3818 '@types/ws@8.18.1': 3378 3819 dependencies: 3379 - '@types/node': 24.1.0 3820 + '@types/node': 24.3.0 3380 3821 3381 - '@typescript-eslint/eslint-plugin@8.38.0(@typescript-eslint/parser@8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3)': 3822 + '@typescript-eslint/eslint-plugin@8.40.0(@typescript-eslint/parser@8.40.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2)': 3382 3823 dependencies: 3383 3824 '@eslint-community/regexpp': 4.12.1 3384 - '@typescript-eslint/parser': 8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) 3385 - '@typescript-eslint/scope-manager': 8.38.0 3386 - '@typescript-eslint/type-utils': 8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) 3387 - '@typescript-eslint/utils': 8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) 3388 - '@typescript-eslint/visitor-keys': 8.38.0 3389 - eslint: 9.31.0(jiti@2.4.2) 3825 + '@typescript-eslint/parser': 8.40.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) 3826 + '@typescript-eslint/scope-manager': 8.40.0 3827 + '@typescript-eslint/type-utils': 8.40.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) 3828 + '@typescript-eslint/utils': 8.40.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) 3829 + '@typescript-eslint/visitor-keys': 8.40.0 3830 + eslint: 9.33.0(jiti@2.5.1) 3390 3831 graphemer: 1.4.0 3391 3832 ignore: 7.0.5 3392 3833 natural-compare: 1.4.0 3393 - ts-api-utils: 2.1.0(typescript@5.8.3) 3394 - typescript: 5.8.3 3834 + ts-api-utils: 2.1.0(typescript@5.9.2) 3835 + typescript: 5.9.2 3395 3836 transitivePeerDependencies: 3396 3837 - supports-color 3397 3838 3398 - '@typescript-eslint/parser@8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3)': 3839 + '@typescript-eslint/parser@8.40.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2)': 3399 3840 dependencies: 3400 - '@typescript-eslint/scope-manager': 8.38.0 3401 - '@typescript-eslint/types': 8.38.0 3402 - '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.8.3) 3403 - '@typescript-eslint/visitor-keys': 8.38.0 3841 + '@typescript-eslint/scope-manager': 8.40.0 3842 + '@typescript-eslint/types': 8.40.0 3843 + '@typescript-eslint/typescript-estree': 8.40.0(typescript@5.9.2) 3844 + '@typescript-eslint/visitor-keys': 8.40.0 3404 3845 debug: 4.4.1 3405 - eslint: 9.31.0(jiti@2.4.2) 3406 - typescript: 5.8.3 3846 + eslint: 9.33.0(jiti@2.5.1) 3847 + typescript: 5.9.2 3407 3848 transitivePeerDependencies: 3408 3849 - supports-color 3409 3850 3410 - '@typescript-eslint/project-service@8.38.0(typescript@5.8.3)': 3851 + '@typescript-eslint/project-service@8.40.0(typescript@5.9.2)': 3411 3852 dependencies: 3412 - '@typescript-eslint/tsconfig-utils': 8.38.0(typescript@5.8.3) 3413 - '@typescript-eslint/types': 8.38.0 3853 + '@typescript-eslint/tsconfig-utils': 8.40.0(typescript@5.9.2) 3854 + '@typescript-eslint/types': 8.40.0 3414 3855 debug: 4.4.1 3415 - typescript: 5.8.3 3856 + typescript: 5.9.2 3416 3857 transitivePeerDependencies: 3417 3858 - supports-color 3418 3859 3419 - '@typescript-eslint/scope-manager@8.38.0': 3860 + '@typescript-eslint/scope-manager@8.40.0': 3420 3861 dependencies: 3421 - '@typescript-eslint/types': 8.38.0 3422 - '@typescript-eslint/visitor-keys': 8.38.0 3862 + '@typescript-eslint/types': 8.40.0 3863 + '@typescript-eslint/visitor-keys': 8.40.0 3423 3864 3424 - '@typescript-eslint/tsconfig-utils@8.38.0(typescript@5.8.3)': 3865 + '@typescript-eslint/tsconfig-utils@8.40.0(typescript@5.9.2)': 3425 3866 dependencies: 3426 - typescript: 5.8.3 3867 + typescript: 5.9.2 3427 3868 3428 - '@typescript-eslint/type-utils@8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3)': 3869 + '@typescript-eslint/type-utils@8.40.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2)': 3429 3870 dependencies: 3430 - '@typescript-eslint/types': 8.38.0 3431 - '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.8.3) 3432 - '@typescript-eslint/utils': 8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) 3871 + '@typescript-eslint/types': 8.40.0 3872 + '@typescript-eslint/typescript-estree': 8.40.0(typescript@5.9.2) 3873 + '@typescript-eslint/utils': 8.40.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) 3433 3874 debug: 4.4.1 3434 - eslint: 9.31.0(jiti@2.4.2) 3435 - ts-api-utils: 2.1.0(typescript@5.8.3) 3436 - typescript: 5.8.3 3875 + eslint: 9.33.0(jiti@2.5.1) 3876 + ts-api-utils: 2.1.0(typescript@5.9.2) 3877 + typescript: 5.9.2 3437 3878 transitivePeerDependencies: 3438 3879 - supports-color 3439 3880 3440 - '@typescript-eslint/types@8.38.0': {} 3881 + '@typescript-eslint/types@8.40.0': {} 3441 3882 3442 - '@typescript-eslint/typescript-estree@8.38.0(typescript@5.8.3)': 3883 + '@typescript-eslint/typescript-estree@8.40.0(typescript@5.9.2)': 3443 3884 dependencies: 3444 - '@typescript-eslint/project-service': 8.38.0(typescript@5.8.3) 3445 - '@typescript-eslint/tsconfig-utils': 8.38.0(typescript@5.8.3) 3446 - '@typescript-eslint/types': 8.38.0 3447 - '@typescript-eslint/visitor-keys': 8.38.0 3885 + '@typescript-eslint/project-service': 8.40.0(typescript@5.9.2) 3886 + '@typescript-eslint/tsconfig-utils': 8.40.0(typescript@5.9.2) 3887 + '@typescript-eslint/types': 8.40.0 3888 + '@typescript-eslint/visitor-keys': 8.40.0 3448 3889 debug: 4.4.1 3449 3890 fast-glob: 3.3.3 3450 3891 is-glob: 4.0.3 3451 3892 minimatch: 9.0.5 3452 3893 semver: 7.7.2 3453 - ts-api-utils: 2.1.0(typescript@5.8.3) 3454 - typescript: 5.8.3 3894 + ts-api-utils: 2.1.0(typescript@5.9.2) 3895 + typescript: 5.9.2 3455 3896 transitivePeerDependencies: 3456 3897 - supports-color 3457 3898 3458 - '@typescript-eslint/utils@8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3)': 3899 + '@typescript-eslint/utils@8.40.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2)': 3459 3900 dependencies: 3460 - '@eslint-community/eslint-utils': 4.7.0(eslint@9.31.0(jiti@2.4.2)) 3461 - '@typescript-eslint/scope-manager': 8.38.0 3462 - '@typescript-eslint/types': 8.38.0 3463 - '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.8.3) 3464 - eslint: 9.31.0(jiti@2.4.2) 3465 - typescript: 5.8.3 3901 + '@eslint-community/eslint-utils': 4.7.0(eslint@9.33.0(jiti@2.5.1)) 3902 + '@typescript-eslint/scope-manager': 8.40.0 3903 + '@typescript-eslint/types': 8.40.0 3904 + '@typescript-eslint/typescript-estree': 8.40.0(typescript@5.9.2) 3905 + eslint: 9.33.0(jiti@2.5.1) 3906 + typescript: 5.9.2 3466 3907 transitivePeerDependencies: 3467 3908 - supports-color 3468 3909 3469 - '@typescript-eslint/visitor-keys@8.38.0': 3910 + '@typescript-eslint/visitor-keys@8.40.0': 3470 3911 dependencies: 3471 - '@typescript-eslint/types': 8.38.0 3912 + '@typescript-eslint/types': 8.40.0 3472 3913 eslint-visitor-keys: 4.2.1 3473 3914 3474 3915 '@ungap/structured-clone@1.3.0': {} 3475 3916 3476 - '@vue/compiler-core@3.5.18': 3917 + '@vitest/expect@3.2.4': 3477 3918 dependencies: 3478 - '@babel/parser': 7.28.0 3479 - '@vue/shared': 3.5.18 3919 + '@types/chai': 5.2.2 3920 + '@vitest/spy': 3.2.4 3921 + '@vitest/utils': 3.2.4 3922 + chai: 5.3.3 3923 + tinyrainbow: 2.0.0 3924 + 3925 + '@vitest/mocker@3.2.4(vite@7.1.4(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.0))': 3926 + dependencies: 3927 + '@vitest/spy': 3.2.4 3928 + estree-walker: 3.0.3 3929 + magic-string: 0.30.18 3930 + optionalDependencies: 3931 + vite: 7.1.4(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.0) 3932 + 3933 + '@vitest/pretty-format@3.2.4': 3934 + dependencies: 3935 + tinyrainbow: 2.0.0 3936 + 3937 + '@vitest/runner@3.2.4': 3938 + dependencies: 3939 + '@vitest/utils': 3.2.4 3940 + pathe: 2.0.3 3941 + strip-literal: 3.0.0 3942 + 3943 + '@vitest/snapshot@3.2.4': 3944 + dependencies: 3945 + '@vitest/pretty-format': 3.2.4 3946 + magic-string: 0.30.18 3947 + pathe: 2.0.3 3948 + 3949 + '@vitest/spy@3.2.4': 3950 + dependencies: 3951 + tinyspy: 4.0.3 3952 + 3953 + '@vitest/utils@3.2.4': 3954 + dependencies: 3955 + '@vitest/pretty-format': 3.2.4 3956 + loupe: 3.2.1 3957 + tinyrainbow: 2.0.0 3958 + 3959 + '@vue/compiler-core@3.5.19': 3960 + dependencies: 3961 + '@babel/parser': 7.28.3 3962 + '@vue/shared': 3.5.19 3480 3963 entities: 4.5.0 3481 3964 estree-walker: 2.0.2 3482 3965 source-map-js: 1.2.1 3483 3966 3484 - '@vue/compiler-dom@3.5.18': 3967 + '@vue/compiler-dom@3.5.19': 3485 3968 dependencies: 3486 - '@vue/compiler-core': 3.5.18 3487 - '@vue/shared': 3.5.18 3969 + '@vue/compiler-core': 3.5.19 3970 + '@vue/shared': 3.5.19 3488 3971 3489 - '@vue/compiler-sfc@3.5.18': 3972 + '@vue/compiler-sfc@3.5.19': 3490 3973 dependencies: 3491 - '@babel/parser': 7.28.0 3492 - '@vue/compiler-core': 3.5.18 3493 - '@vue/compiler-dom': 3.5.18 3494 - '@vue/compiler-ssr': 3.5.18 3495 - '@vue/shared': 3.5.18 3974 + '@babel/parser': 7.28.3 3975 + '@vue/compiler-core': 3.5.19 3976 + '@vue/compiler-dom': 3.5.19 3977 + '@vue/compiler-ssr': 3.5.19 3978 + '@vue/shared': 3.5.19 3496 3979 estree-walker: 2.0.2 3497 - magic-string: 0.30.17 3980 + magic-string: 0.30.18 3498 3981 postcss: 8.5.6 3499 3982 source-map-js: 1.2.1 3500 3983 3501 - '@vue/compiler-ssr@3.5.18': 3984 + '@vue/compiler-ssr@3.5.19': 3502 3985 dependencies: 3503 - '@vue/compiler-dom': 3.5.18 3504 - '@vue/shared': 3.5.18 3986 + '@vue/compiler-dom': 3.5.19 3987 + '@vue/shared': 3.5.19 3505 3988 3506 - '@vue/reactivity@3.5.18': 3989 + '@vue/reactivity@3.5.19': 3507 3990 dependencies: 3508 - '@vue/shared': 3.5.18 3991 + '@vue/shared': 3.5.19 3509 3992 3510 - '@vue/runtime-core@3.5.18': 3993 + '@vue/runtime-core@3.5.19': 3511 3994 dependencies: 3512 - '@vue/reactivity': 3.5.18 3513 - '@vue/shared': 3.5.18 3995 + '@vue/reactivity': 3.5.19 3996 + '@vue/shared': 3.5.19 3514 3997 3515 - '@vue/runtime-dom@3.5.18': 3998 + '@vue/runtime-dom@3.5.19': 3516 3999 dependencies: 3517 - '@vue/reactivity': 3.5.18 3518 - '@vue/runtime-core': 3.5.18 3519 - '@vue/shared': 3.5.18 4000 + '@vue/reactivity': 3.5.19 4001 + '@vue/runtime-core': 3.5.19 4002 + '@vue/shared': 3.5.19 3520 4003 csstype: 3.1.3 3521 4004 3522 - '@vue/server-renderer@3.5.18(vue@3.5.18(typescript@5.8.3))': 4005 + '@vue/server-renderer@3.5.19(vue@3.5.19(typescript@5.9.2))': 3523 4006 dependencies: 3524 - '@vue/compiler-ssr': 3.5.18 3525 - '@vue/shared': 3.5.18 3526 - vue: 3.5.18(typescript@5.8.3) 4007 + '@vue/compiler-ssr': 3.5.19 4008 + '@vue/shared': 3.5.19 4009 + vue: 3.5.19(typescript@5.9.2) 3527 4010 3528 - '@vue/shared@3.5.18': {} 4011 + '@vue/shared@3.5.19': {} 3529 4012 3530 - '@vueuse/core@10.11.1(vue@3.5.18(typescript@5.8.3))': 4013 + '@vueuse/core@10.11.1(vue@3.5.19(typescript@5.9.2))': 3531 4014 dependencies: 3532 4015 '@types/web-bluetooth': 0.0.20 3533 4016 '@vueuse/metadata': 10.11.1 3534 - '@vueuse/shared': 10.11.1(vue@3.5.18(typescript@5.8.3)) 3535 - vue-demi: 0.14.10(vue@3.5.18(typescript@5.8.3)) 4017 + '@vueuse/shared': 10.11.1(vue@3.5.19(typescript@5.9.2)) 4018 + vue-demi: 0.14.10(vue@3.5.19(typescript@5.9.2)) 4019 + transitivePeerDependencies: 4020 + - '@vue/composition-api' 4021 + - vue 4022 + 4023 + '@vueuse/core@11.3.0(vue@3.5.19(typescript@5.9.2))': 4024 + dependencies: 4025 + '@types/web-bluetooth': 0.0.20 4026 + '@vueuse/metadata': 11.3.0 4027 + '@vueuse/shared': 11.3.0(vue@3.5.19(typescript@5.9.2)) 4028 + vue-demi: 0.14.10(vue@3.5.19(typescript@5.9.2)) 3536 4029 transitivePeerDependencies: 3537 4030 - '@vue/composition-api' 3538 4031 - vue 3539 4032 3540 4033 '@vueuse/metadata@10.11.1': {} 3541 4034 3542 - '@vueuse/shared@10.11.1(vue@3.5.18(typescript@5.8.3))': 4035 + '@vueuse/metadata@11.3.0': {} 4036 + 4037 + '@vueuse/shared@10.11.1(vue@3.5.19(typescript@5.9.2))': 4038 + dependencies: 4039 + vue-demi: 0.14.10(vue@3.5.19(typescript@5.9.2)) 4040 + transitivePeerDependencies: 4041 + - '@vue/composition-api' 4042 + - vue 4043 + 4044 + '@vueuse/shared@11.3.0(vue@3.5.19(typescript@5.9.2))': 3543 4045 dependencies: 3544 - vue-demi: 0.14.10(vue@3.5.18(typescript@5.8.3)) 4046 + vue-demi: 0.14.10(vue@3.5.19(typescript@5.9.2)) 3545 4047 transitivePeerDependencies: 3546 4048 - '@vue/composition-api' 3547 4049 - vue ··· 3634 4136 get-intrinsic: 1.3.0 3635 4137 is-array-buffer: 3.0.5 3636 4138 4139 + assertion-error@2.0.1: {} 4140 + 3637 4141 async-function@1.0.0: {} 3638 4142 3639 4143 async@3.2.6: {} ··· 3663 4167 3664 4168 bun-types@1.2.17: 3665 4169 dependencies: 3666 - '@types/node': 24.1.0 4170 + '@types/node': 24.3.0 3667 4171 optional: true 4172 + 4173 + cac@6.7.14: {} 3668 4174 3669 4175 call-bind-apply-helpers@1.0.2: 3670 4176 dependencies: ··· 3692 4198 3693 4199 ccount@2.0.1: {} 3694 4200 4201 + chai@5.3.3: 4202 + dependencies: 4203 + assertion-error: 2.0.1 4204 + check-error: 2.1.1 4205 + deep-eql: 5.0.2 4206 + loupe: 3.2.1 4207 + pathval: 2.0.1 4208 + 3695 4209 chalk@4.1.2: 3696 4210 dependencies: 3697 4211 ansi-styles: 4.3.0 3698 4212 supports-color: 7.2.0 3699 4213 3700 - chalk@5.4.1: {} 4214 + chalk@5.6.0: {} 3701 4215 3702 4216 character-entities-html4@2.1.0: {} 3703 4217 3704 4218 character-entities-legacy@3.0.0: {} 3705 4219 3706 4220 character-entities@2.0.2: {} 4221 + 4222 + check-error@2.1.1: {} 3707 4223 3708 4224 clean-css@5.3.3: 3709 4225 dependencies: ··· 3756 4272 3757 4273 csstype@3.1.3: {} 3758 4274 3759 - cva@1.0.0-beta.2(typescript@5.8.3): 4275 + cva@1.0.0-beta.2(typescript@5.9.2): 3760 4276 dependencies: 3761 4277 clsx: 2.1.1 3762 4278 optionalDependencies: 3763 - typescript: 5.8.3 4279 + typescript: 5.9.2 3764 4280 3765 4281 dank-each@1.0.0: {} 3766 4282 ··· 3798 4314 dependencies: 3799 4315 character-entities: 2.0.2 3800 4316 4317 + deep-eql@5.0.2: {} 4318 + 3801 4319 deep-is@0.1.4: {} 3802 4320 3803 4321 define-data-property@1.1.4: ··· 3835 4353 dependencies: 3836 4354 '@drizzle-team/brocli': 0.10.2 3837 4355 '@esbuild-kit/esm-loader': 2.6.5 3838 - esbuild: 0.25.8 3839 - esbuild-register: 3.6.0(esbuild@0.25.8) 4356 + esbuild: 0.25.9 4357 + esbuild-register: 3.6.0(esbuild@0.25.9) 3840 4358 transitivePeerDependencies: 3841 4359 - supports-color 3842 4360 3843 - drizzle-orm@0.44.3(@libsql/client@0.15.10)(bun-types@1.2.17): 4361 + drizzle-orm@0.44.4(@libsql/client@0.15.12)(bun-types@1.2.17): 3844 4362 optionalDependencies: 3845 - '@libsql/client': 0.15.10 4363 + '@libsql/client': 0.15.12 3846 4364 bun-types: 1.2.17 3847 4365 3848 4366 dunder-proto@1.0.1: ··· 3918 4436 3919 4437 es-errors@1.3.0: {} 3920 4438 4439 + es-module-lexer@1.7.0: {} 4440 + 3921 4441 es-object-atoms@1.1.1: 3922 4442 dependencies: 3923 4443 es-errors: 1.3.0 ··· 3939 4459 is-date-object: 1.1.0 3940 4460 is-symbol: 1.1.1 3941 4461 3942 - esbuild-register@3.6.0(esbuild@0.25.8): 4462 + esbuild-register@3.6.0(esbuild@0.25.9): 3943 4463 dependencies: 3944 4464 debug: 4.4.1 3945 - esbuild: 0.25.8 4465 + esbuild: 0.25.9 3946 4466 transitivePeerDependencies: 3947 4467 - supports-color 3948 4468 ··· 3971 4491 '@esbuild/win32-ia32': 0.18.20 3972 4492 '@esbuild/win32-x64': 0.18.20 3973 4493 3974 - esbuild@0.25.8: 4494 + esbuild@0.25.9: 3975 4495 optionalDependencies: 3976 - '@esbuild/aix-ppc64': 0.25.8 3977 - '@esbuild/android-arm': 0.25.8 3978 - '@esbuild/android-arm64': 0.25.8 3979 - '@esbuild/android-x64': 0.25.8 3980 - '@esbuild/darwin-arm64': 0.25.8 3981 - '@esbuild/darwin-x64': 0.25.8 3982 - '@esbuild/freebsd-arm64': 0.25.8 3983 - '@esbuild/freebsd-x64': 0.25.8 3984 - '@esbuild/linux-arm': 0.25.8 3985 - '@esbuild/linux-arm64': 0.25.8 3986 - '@esbuild/linux-ia32': 0.25.8 3987 - '@esbuild/linux-loong64': 0.25.8 3988 - '@esbuild/linux-mips64el': 0.25.8 3989 - '@esbuild/linux-ppc64': 0.25.8 3990 - '@esbuild/linux-riscv64': 0.25.8 3991 - '@esbuild/linux-s390x': 0.25.8 3992 - '@esbuild/linux-x64': 0.25.8 3993 - '@esbuild/netbsd-arm64': 0.25.8 3994 - '@esbuild/netbsd-x64': 0.25.8 3995 - '@esbuild/openbsd-arm64': 0.25.8 3996 - '@esbuild/openbsd-x64': 0.25.8 3997 - '@esbuild/openharmony-arm64': 0.25.8 3998 - '@esbuild/sunos-x64': 0.25.8 3999 - '@esbuild/win32-arm64': 0.25.8 4000 - '@esbuild/win32-ia32': 0.25.8 4001 - '@esbuild/win32-x64': 0.25.8 4496 + '@esbuild/aix-ppc64': 0.25.9 4497 + '@esbuild/android-arm': 0.25.9 4498 + '@esbuild/android-arm64': 0.25.9 4499 + '@esbuild/android-x64': 0.25.9 4500 + '@esbuild/darwin-arm64': 0.25.9 4501 + '@esbuild/darwin-x64': 0.25.9 4502 + '@esbuild/freebsd-arm64': 0.25.9 4503 + '@esbuild/freebsd-x64': 0.25.9 4504 + '@esbuild/linux-arm': 0.25.9 4505 + '@esbuild/linux-arm64': 0.25.9 4506 + '@esbuild/linux-ia32': 0.25.9 4507 + '@esbuild/linux-loong64': 0.25.9 4508 + '@esbuild/linux-mips64el': 0.25.9 4509 + '@esbuild/linux-ppc64': 0.25.9 4510 + '@esbuild/linux-riscv64': 0.25.9 4511 + '@esbuild/linux-s390x': 0.25.9 4512 + '@esbuild/linux-x64': 0.25.9 4513 + '@esbuild/netbsd-arm64': 0.25.9 4514 + '@esbuild/netbsd-x64': 0.25.9 4515 + '@esbuild/openbsd-arm64': 0.25.9 4516 + '@esbuild/openbsd-x64': 0.25.9 4517 + '@esbuild/openharmony-arm64': 0.25.9 4518 + '@esbuild/sunos-x64': 0.25.9 4519 + '@esbuild/win32-arm64': 0.25.9 4520 + '@esbuild/win32-ia32': 0.25.9 4521 + '@esbuild/win32-x64': 0.25.9 4002 4522 4003 4523 escape-string-regexp@4.0.0: {} 4004 4524 4005 4525 escape-string-regexp@5.0.0: {} 4006 4526 4007 - eslint-config-prettier@10.1.8(eslint@9.31.0(jiti@2.4.2)): 4527 + eslint-config-prettier@10.1.8(eslint@9.33.0(jiti@2.5.1)): 4008 4528 dependencies: 4009 - eslint: 9.31.0(jiti@2.4.2) 4529 + eslint: 9.33.0(jiti@2.5.1) 4010 4530 4011 4531 eslint-import-resolver-node@0.3.9: 4012 4532 dependencies: ··· 4016 4536 transitivePeerDependencies: 4017 4537 - supports-color 4018 4538 4019 - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.31.0(jiti@2.4.2)): 4539 + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.40.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.33.0(jiti@2.5.1)): 4020 4540 dependencies: 4021 4541 debug: 3.2.7 4022 4542 optionalDependencies: 4023 - '@typescript-eslint/parser': 8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) 4024 - eslint: 9.31.0(jiti@2.4.2) 4543 + '@typescript-eslint/parser': 8.40.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) 4544 + eslint: 9.33.0(jiti@2.5.1) 4025 4545 eslint-import-resolver-node: 0.3.9 4026 4546 transitivePeerDependencies: 4027 4547 - supports-color 4028 4548 4029 - eslint-plugin-drizzle@0.2.3(eslint@9.31.0(jiti@2.4.2)): 4549 + eslint-plugin-drizzle@0.2.3(eslint@9.33.0(jiti@2.5.1)): 4030 4550 dependencies: 4031 - eslint: 9.31.0(jiti@2.4.2) 4551 + eslint: 9.33.0(jiti@2.5.1) 4032 4552 4033 - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.31.0(jiti@2.4.2)): 4553 + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.40.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.33.0(jiti@2.5.1)): 4034 4554 dependencies: 4035 4555 '@rtsao/scc': 1.1.0 4036 4556 array-includes: 3.1.9 ··· 4039 4559 array.prototype.flatmap: 1.3.3 4040 4560 debug: 3.2.7 4041 4561 doctrine: 2.1.0 4042 - eslint: 9.31.0(jiti@2.4.2) 4562 + eslint: 9.33.0(jiti@2.5.1) 4043 4563 eslint-import-resolver-node: 0.3.9 4044 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.31.0(jiti@2.4.2)) 4564 + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.40.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.33.0(jiti@2.5.1)) 4045 4565 hasown: 2.0.2 4046 4566 is-core-module: 2.16.1 4047 4567 is-glob: 4.0.3 ··· 4053 4573 string.prototype.trimend: 1.0.9 4054 4574 tsconfig-paths: 3.15.0 4055 4575 optionalDependencies: 4056 - '@typescript-eslint/parser': 8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) 4576 + '@typescript-eslint/parser': 8.40.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) 4057 4577 transitivePeerDependencies: 4058 4578 - eslint-import-resolver-typescript 4059 4579 - eslint-import-resolver-webpack 4060 4580 - supports-color 4061 4581 4062 - eslint-plugin-prettier@5.5.3(eslint-config-prettier@10.1.8(eslint@9.31.0(jiti@2.4.2)))(eslint@9.31.0(jiti@2.4.2))(prettier@3.6.2): 4582 + eslint-plugin-prettier@5.5.4(eslint-config-prettier@10.1.8(eslint@9.33.0(jiti@2.5.1)))(eslint@9.33.0(jiti@2.5.1))(prettier@3.6.2): 4063 4583 dependencies: 4064 - eslint: 9.31.0(jiti@2.4.2) 4584 + eslint: 9.33.0(jiti@2.5.1) 4065 4585 prettier: 3.6.2 4066 4586 prettier-linter-helpers: 1.0.0 4067 4587 synckit: 0.11.11 4068 4588 optionalDependencies: 4069 - eslint-config-prettier: 10.1.8(eslint@9.31.0(jiti@2.4.2)) 4589 + eslint-config-prettier: 10.1.8(eslint@9.33.0(jiti@2.5.1)) 4070 4590 4071 4591 eslint-scope@8.4.0: 4072 4592 dependencies: ··· 4077 4597 4078 4598 eslint-visitor-keys@4.2.1: {} 4079 4599 4080 - eslint@9.31.0(jiti@2.4.2): 4600 + eslint@9.33.0(jiti@2.5.1): 4081 4601 dependencies: 4082 - '@eslint-community/eslint-utils': 4.7.0(eslint@9.31.0(jiti@2.4.2)) 4602 + '@eslint-community/eslint-utils': 4.7.0(eslint@9.33.0(jiti@2.5.1)) 4083 4603 '@eslint-community/regexpp': 4.12.1 4084 4604 '@eslint/config-array': 0.21.0 4085 - '@eslint/config-helpers': 0.3.0 4086 - '@eslint/core': 0.15.1 4605 + '@eslint/config-helpers': 0.3.1 4606 + '@eslint/core': 0.15.2 4087 4607 '@eslint/eslintrc': 3.3.1 4088 - '@eslint/js': 9.31.0 4089 - '@eslint/plugin-kit': 0.3.4 4608 + '@eslint/js': 9.33.0 4609 + '@eslint/plugin-kit': 0.3.5 4090 4610 '@humanfs/node': 0.16.6 4091 4611 '@humanwhocodes/module-importer': 1.0.1 4092 4612 '@humanwhocodes/retry': 0.4.3 ··· 4115 4635 natural-compare: 1.4.0 4116 4636 optionator: 0.9.4 4117 4637 optionalDependencies: 4118 - jiti: 2.4.2 4638 + jiti: 2.5.1 4119 4639 transitivePeerDependencies: 4120 4640 - supports-color 4121 4641 ··· 4139 4659 4140 4660 estree-walker@2.0.2: {} 4141 4661 4662 + estree-walker@3.0.3: 4663 + dependencies: 4664 + '@types/estree': 1.0.8 4665 + 4142 4666 esutils@2.0.3: {} 4143 4667 4144 4668 event-target-polyfill@0.0.4: {} 4669 + 4670 + expect-type@1.2.2: {} 4145 4671 4146 4672 extend@3.0.2: {} 4147 4673 ··· 4167 4693 dependencies: 4168 4694 reusify: 1.1.0 4169 4695 4696 + fdir@6.5.0(picomatch@4.0.3): 4697 + optionalDependencies: 4698 + picomatch: 4.0.3 4699 + 4170 4700 fecha@4.2.3: {} 4171 4701 4172 4702 fetch-blob@3.2.0: ··· 4317 4847 hast-util-from-parse5: 8.0.3 4318 4848 parse5: 7.3.0 4319 4849 vfile: 6.0.3 4320 - vfile-message: 4.0.2 4850 + vfile-message: 4.0.3 4321 4851 4322 4852 hast-util-from-parse5@8.0.3: 4323 4853 dependencies: ··· 4450 4980 4451 4981 highlightjs-vue@1.0.0: {} 4452 4982 4453 - hono@4.8.5: {} 4983 + hono@4.9.4: {} 4454 4984 4455 4985 html-minifier-terser@7.2.0: 4456 4986 dependencies: ··· 4608 5138 4609 5139 isexe@2.0.0: {} 4610 5140 4611 - jiti@2.4.2: {} 5141 + jiti@2.5.1: {} 4612 5142 4613 - js-base64@3.7.7: {} 5143 + js-base64@3.7.8: {} 5144 + 5145 + js-tokens@9.0.1: {} 4614 5146 4615 5147 js-yaml@4.1.0: 4616 5148 dependencies: ··· 4649 5181 prelude-ls: 1.2.1 4650 5182 type-check: 0.4.0 4651 5183 4652 - libsql@0.5.16: 5184 + libsql@0.5.17: 4653 5185 dependencies: 4654 5186 '@neon-rs/load': 0.0.4 4655 5187 detect-libc: 2.0.2 4656 5188 optionalDependencies: 4657 - '@libsql/darwin-arm64': 0.5.16 4658 - '@libsql/darwin-x64': 0.5.16 4659 - '@libsql/linux-arm-gnueabihf': 0.5.16 4660 - '@libsql/linux-arm-musleabihf': 0.5.16 4661 - '@libsql/linux-arm64-gnu': 0.5.16 4662 - '@libsql/linux-arm64-musl': 0.5.16 4663 - '@libsql/linux-x64-gnu': 0.5.16 4664 - '@libsql/linux-x64-musl': 0.5.16 4665 - '@libsql/win32-x64-msvc': 0.5.16 5189 + '@libsql/darwin-arm64': 0.5.17 5190 + '@libsql/darwin-x64': 0.5.17 5191 + '@libsql/linux-arm-gnueabihf': 0.5.17 5192 + '@libsql/linux-arm-musleabihf': 0.5.17 5193 + '@libsql/linux-arm64-gnu': 0.5.17 5194 + '@libsql/linux-arm64-musl': 0.5.17 5195 + '@libsql/linux-x64-gnu': 0.5.17 5196 + '@libsql/linux-x64-musl': 0.5.17 5197 + '@libsql/win32-x64-msvc': 0.5.17 4666 5198 4667 5199 locate-path@6.0.0: 4668 5200 dependencies: ··· 4681 5213 4682 5214 longest-streak@3.1.0: {} 4683 5215 5216 + loupe@3.2.1: {} 5217 + 4684 5218 lower-case@2.0.2: 4685 5219 dependencies: 4686 5220 tslib: 2.8.1 ··· 4691 5225 devlop: 1.1.0 4692 5226 highlight.js: 11.11.1 4693 5227 4694 - magic-string@0.30.17: 5228 + magic-string@0.30.18: 4695 5229 dependencies: 4696 - '@jridgewell/sourcemap-codec': 1.5.4 5230 + '@jridgewell/sourcemap-codec': 1.5.5 4697 5231 4698 5232 markdown-table@3.0.4: {} 4699 5233 ··· 5123 5657 dependencies: 5124 5658 entities: 6.0.1 5125 5659 5126 - partysocket@1.1.4: 5660 + partysocket@1.1.5: 5127 5661 dependencies: 5128 5662 event-target-polyfill: 0.0.4 5129 5663 ··· 5138 5672 5139 5673 path-parse@1.0.7: {} 5140 5674 5675 + pathe@2.0.3: {} 5676 + 5677 + pathval@2.0.1: {} 5678 + 5141 5679 picocolors@1.1.1: {} 5142 5680 5143 5681 picomatch@2.3.1: {} 5682 + 5683 + picomatch@4.0.3: {} 5144 5684 5145 5685 possible-typed-array-names@1.1.0: {} 5146 5686 ··· 5170 5710 5171 5711 queue-microtask@1.2.3: {} 5172 5712 5173 - radix-vue@1.9.17(vue@3.5.18(typescript@5.8.3)): 5713 + radix-vue@1.9.17(vue@3.5.19(typescript@5.9.2)): 5174 5714 dependencies: 5175 - '@floating-ui/dom': 1.7.2 5176 - '@floating-ui/vue': 1.1.7(vue@3.5.18(typescript@5.8.3)) 5715 + '@floating-ui/dom': 1.7.4 5716 + '@floating-ui/vue': 1.1.9(vue@3.5.19(typescript@5.9.2)) 5177 5717 '@internationalized/date': 3.8.2 5178 5718 '@internationalized/number': 3.6.4 5179 - '@tanstack/vue-virtual': 3.13.12(vue@3.5.18(typescript@5.8.3)) 5180 - '@vueuse/core': 10.11.1(vue@3.5.18(typescript@5.8.3)) 5181 - '@vueuse/shared': 10.11.1(vue@3.5.18(typescript@5.8.3)) 5719 + '@tanstack/vue-virtual': 3.13.12(vue@3.5.19(typescript@5.9.2)) 5720 + '@vueuse/core': 10.11.1(vue@3.5.19(typescript@5.9.2)) 5721 + '@vueuse/shared': 10.11.1(vue@3.5.19(typescript@5.9.2)) 5182 5722 aria-hidden: 1.2.6 5183 5723 defu: 6.1.4 5184 5724 fast-deep-equal: 3.1.3 5185 5725 nanoid: 5.1.5 5186 - vue: 3.5.18(typescript@5.8.3) 5726 + vue: 3.5.19(typescript@5.9.2) 5187 5727 transitivePeerDependencies: 5188 5728 - '@vue/composition-api' 5189 5729 ··· 5313 5853 5314 5854 reusify@1.1.0: {} 5315 5855 5856 + rollup@4.50.0: 5857 + dependencies: 5858 + '@types/estree': 1.0.8 5859 + optionalDependencies: 5860 + '@rollup/rollup-android-arm-eabi': 4.50.0 5861 + '@rollup/rollup-android-arm64': 4.50.0 5862 + '@rollup/rollup-darwin-arm64': 4.50.0 5863 + '@rollup/rollup-darwin-x64': 4.50.0 5864 + '@rollup/rollup-freebsd-arm64': 4.50.0 5865 + '@rollup/rollup-freebsd-x64': 4.50.0 5866 + '@rollup/rollup-linux-arm-gnueabihf': 4.50.0 5867 + '@rollup/rollup-linux-arm-musleabihf': 4.50.0 5868 + '@rollup/rollup-linux-arm64-gnu': 4.50.0 5869 + '@rollup/rollup-linux-arm64-musl': 4.50.0 5870 + '@rollup/rollup-linux-loongarch64-gnu': 4.50.0 5871 + '@rollup/rollup-linux-ppc64-gnu': 4.50.0 5872 + '@rollup/rollup-linux-riscv64-gnu': 4.50.0 5873 + '@rollup/rollup-linux-riscv64-musl': 4.50.0 5874 + '@rollup/rollup-linux-s390x-gnu': 4.50.0 5875 + '@rollup/rollup-linux-x64-gnu': 4.50.0 5876 + '@rollup/rollup-linux-x64-musl': 4.50.0 5877 + '@rollup/rollup-openharmony-arm64': 4.50.0 5878 + '@rollup/rollup-win32-arm64-msvc': 4.50.0 5879 + '@rollup/rollup-win32-ia32-msvc': 4.50.0 5880 + '@rollup/rollup-win32-x64-msvc': 4.50.0 5881 + fsevents: 2.3.3 5882 + 5316 5883 run-parallel@1.2.0: 5317 5884 dependencies: 5318 5885 queue-microtask: 1.2.3 ··· 5402 5969 side-channel-map: 1.0.1 5403 5970 side-channel-weakmap: 1.0.2 5404 5971 5972 + siginfo@2.0.0: {} 5973 + 5405 5974 simple-swizzle@0.2.2: 5406 5975 dependencies: 5407 5976 is-arrayish: 0.3.2 ··· 5418 5987 space-separated-tokens@2.0.2: {} 5419 5988 5420 5989 stack-trace@0.0.10: {} 5990 + 5991 + stackback@0.0.2: {} 5992 + 5993 + std-env@3.9.0: {} 5421 5994 5422 5995 stop-iteration-iterator@1.1.0: 5423 5996 dependencies: ··· 5465 6038 strip-bom@3.0.0: {} 5466 6039 5467 6040 strip-json-comments@3.1.1: {} 6041 + 6042 + strip-literal@3.0.0: 6043 + dependencies: 6044 + js-tokens: 9.0.1 5468 6045 5469 6046 supports-color@7.2.0: 5470 6047 dependencies: ··· 5480 6057 5481 6058 terser@5.43.1: 5482 6059 dependencies: 5483 - '@jridgewell/source-map': 0.3.10 6060 + '@jridgewell/source-map': 0.3.11 5484 6061 acorn: 8.15.0 5485 6062 commander: 2.20.3 5486 6063 source-map-support: 0.5.21 ··· 5489 6066 5490 6067 tiny-emitter@2.1.0: {} 5491 6068 6069 + tinybench@2.9.0: {} 6070 + 6071 + tinyexec@0.3.2: {} 6072 + 6073 + tinyglobby@0.2.15: 6074 + dependencies: 6075 + fdir: 6.5.0(picomatch@4.0.3) 6076 + picomatch: 4.0.3 6077 + 6078 + tinypool@1.1.1: {} 6079 + 6080 + tinyrainbow@2.0.0: {} 6081 + 6082 + tinyspy@4.0.3: {} 6083 + 5492 6084 to-regex-range@5.0.1: 5493 6085 dependencies: 5494 6086 is-number: 7.0.0 ··· 5503 6095 5504 6096 trough@2.2.0: {} 5505 6097 5506 - ts-api-utils@2.1.0(typescript@5.8.3): 6098 + ts-api-utils@2.1.0(typescript@5.9.2): 5507 6099 dependencies: 5508 - typescript: 5.8.3 6100 + typescript: 5.9.2 5509 6101 5510 6102 ts-deepmerge@7.0.3: {} 5511 6103 ··· 5518 6110 5519 6111 tslib@2.8.1: {} 5520 6112 5521 - tsx@4.20.3: 6113 + tsx@4.20.4: 5522 6114 dependencies: 5523 - esbuild: 0.25.8 6115 + esbuild: 0.25.9 5524 6116 get-tsconfig: 4.10.1 5525 6117 optionalDependencies: 5526 6118 fsevents: 2.3.3 ··· 5564 6156 possible-typed-array-names: 1.1.0 5565 6157 reflect.getprototypeof: 1.0.10 5566 6158 5567 - typescript-eslint@8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3): 6159 + typescript-eslint@8.40.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2): 5568 6160 dependencies: 5569 - '@typescript-eslint/eslint-plugin': 8.38.0(@typescript-eslint/parser@8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) 5570 - '@typescript-eslint/parser': 8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) 5571 - '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.8.3) 5572 - '@typescript-eslint/utils': 8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) 5573 - eslint: 9.31.0(jiti@2.4.2) 5574 - typescript: 5.8.3 6161 + '@typescript-eslint/eslint-plugin': 8.40.0(@typescript-eslint/parser@8.40.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) 6162 + '@typescript-eslint/parser': 8.40.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) 6163 + '@typescript-eslint/typescript-estree': 8.40.0(typescript@5.9.2) 6164 + '@typescript-eslint/utils': 8.40.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) 6165 + eslint: 9.33.0(jiti@2.5.1) 6166 + typescript: 5.9.2 5575 6167 transitivePeerDependencies: 5576 6168 - supports-color 5577 6169 5578 - typescript@5.8.3: {} 6170 + typescript@5.9.2: {} 5579 6171 5580 6172 unbox-primitive@1.1.0: 5581 6173 dependencies: ··· 5586 6178 5587 6179 undici-types@6.21.0: {} 5588 6180 5589 - undici-types@7.8.0: {} 6181 + undici-types@7.10.0: {} 5590 6182 5591 6183 unified@11.0.5: 5592 6184 dependencies: ··· 5639 6231 '@types/unist': 3.0.3 5640 6232 vfile: 6.0.3 5641 6233 5642 - vfile-message@4.0.2: 6234 + vfile-message@4.0.3: 5643 6235 dependencies: 5644 6236 '@types/unist': 3.0.3 5645 6237 unist-util-stringify-position: 4.0.0 ··· 5647 6239 vfile@6.0.3: 5648 6240 dependencies: 5649 6241 '@types/unist': 3.0.3 5650 - vfile-message: 4.0.2 6242 + vfile-message: 4.0.3 6243 + 6244 + vite-node@3.2.4(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.0): 6245 + dependencies: 6246 + cac: 6.7.14 6247 + debug: 4.4.1 6248 + es-module-lexer: 1.7.0 6249 + pathe: 2.0.3 6250 + vite: 7.1.4(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.0) 6251 + transitivePeerDependencies: 6252 + - '@types/node' 6253 + - jiti 6254 + - less 6255 + - lightningcss 6256 + - sass 6257 + - sass-embedded 6258 + - stylus 6259 + - sugarss 6260 + - supports-color 6261 + - terser 6262 + - tsx 6263 + - yaml 6264 + 6265 + vite@7.1.4(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.0): 6266 + dependencies: 6267 + esbuild: 0.25.9 6268 + fdir: 6.5.0(picomatch@4.0.3) 6269 + picomatch: 4.0.3 6270 + postcss: 8.5.6 6271 + rollup: 4.50.0 6272 + tinyglobby: 0.2.15 6273 + optionalDependencies: 6274 + '@types/node': 24.3.0 6275 + fsevents: 2.3.3 6276 + jiti: 2.5.1 6277 + terser: 5.43.1 6278 + tsx: 4.20.4 6279 + yaml: 2.8.0 6280 + 6281 + vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.0): 6282 + dependencies: 6283 + '@types/chai': 5.2.2 6284 + '@vitest/expect': 3.2.4 6285 + '@vitest/mocker': 3.2.4(vite@7.1.4(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.0)) 6286 + '@vitest/pretty-format': 3.2.4 6287 + '@vitest/runner': 3.2.4 6288 + '@vitest/snapshot': 3.2.4 6289 + '@vitest/spy': 3.2.4 6290 + '@vitest/utils': 3.2.4 6291 + chai: 5.3.3 6292 + debug: 4.4.1 6293 + expect-type: 1.2.2 6294 + magic-string: 0.30.18 6295 + pathe: 2.0.3 6296 + picomatch: 4.0.3 6297 + std-env: 3.9.0 6298 + tinybench: 2.9.0 6299 + tinyexec: 0.3.2 6300 + tinyglobby: 0.2.15 6301 + tinypool: 1.1.1 6302 + tinyrainbow: 2.0.0 6303 + vite: 7.1.4(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.0) 6304 + vite-node: 3.2.4(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.0) 6305 + why-is-node-running: 2.3.0 6306 + optionalDependencies: 6307 + '@types/debug': 4.1.12 6308 + '@types/node': 24.3.0 6309 + transitivePeerDependencies: 6310 + - jiti 6311 + - less 6312 + - lightningcss 6313 + - msw 6314 + - sass 6315 + - sass-embedded 6316 + - stylus 6317 + - sugarss 6318 + - supports-color 6319 + - terser 6320 + - tsx 6321 + - yaml 6322 + 6323 + vue-component-type-helpers@3.0.6: {} 5651 6324 5652 - vue-demi@0.14.10(vue@3.5.18(typescript@5.8.3)): 6325 + vue-demi@0.14.10(vue@3.5.19(typescript@5.9.2)): 5653 6326 dependencies: 5654 - vue: 3.5.18(typescript@5.8.3) 6327 + vue: 3.5.19(typescript@5.9.2) 5655 6328 5656 6329 vue-sonner@1.3.2: {} 5657 6330 5658 - vue@3.5.18(typescript@5.8.3): 6331 + vue@3.5.19(typescript@5.9.2): 5659 6332 dependencies: 5660 - '@vue/compiler-dom': 3.5.18 5661 - '@vue/compiler-sfc': 3.5.18 5662 - '@vue/runtime-dom': 3.5.18 5663 - '@vue/server-renderer': 3.5.18(vue@3.5.18(typescript@5.8.3)) 5664 - '@vue/shared': 3.5.18 6333 + '@vue/compiler-dom': 3.5.19 6334 + '@vue/compiler-sfc': 3.5.19 6335 + '@vue/runtime-dom': 3.5.19 6336 + '@vue/server-renderer': 3.5.19(vue@3.5.19(typescript@5.9.2)) 6337 + '@vue/shared': 3.5.19 5665 6338 optionalDependencies: 5666 - typescript: 5.8.3 6339 + typescript: 5.9.2 5667 6340 5668 6341 web-namespaces@2.0.1: {} 5669 6342 ··· 5713 6386 which@2.0.2: 5714 6387 dependencies: 5715 6388 isexe: 2.0.0 6389 + 6390 + why-is-node-running@2.3.0: 6391 + dependencies: 6392 + siginfo: 2.0.0 6393 + stackback: 0.0.2 5716 6394 5717 6395 winston-transport@4.9.0: 5718 6396 dependencies:
+51
backend/src/api/did.ts
··· 1 + /* 2 + * clippr: a social bookmarking service for the AT Protocol 3 + * Copyright (c) 2025 clippr contributors. 4 + * SPDX-License-Identifier: AGPL-3.0-only 5 + */ 6 + 7 + import { 8 + CompositeDidDocumentResolver, 9 + DocumentNotFoundError, 10 + FailedDocumentResolutionError, 11 + HandleResolutionError, 12 + ImproperDidError, 13 + PlcDidDocumentResolver, 14 + UnsupportedDidMethodError, 15 + WebDidDocumentResolver, 16 + } from "@atcute/identity-resolver"; 17 + 18 + // Gets a DID document from a given DID. DID method agnostic. 19 + export async function getDidDocument( 20 + did: `did:plc:${string}` | `did:web:${string}`, 21 + ) { 22 + const docResolver = new CompositeDidDocumentResolver({ 23 + methods: { 24 + plc: new PlcDidDocumentResolver(), 25 + web: new WebDidDocumentResolver(), 26 + }, 27 + }); 28 + 29 + let doc; 30 + try { 31 + doc = await docResolver.resolve(did); 32 + } catch (err) { 33 + if (err instanceof DocumentNotFoundError) { 34 + throw new Error("Document not found"); 35 + } 36 + if (err instanceof UnsupportedDidMethodError) { 37 + throw new Error("Unsupported DID method"); 38 + } 39 + if (err instanceof ImproperDidError) { 40 + throw new Error("Invalid DID"); 41 + } 42 + if (err instanceof FailedDocumentResolutionError) { 43 + throw new Error("Failed document resolution"); 44 + } 45 + if (err instanceof HandleResolutionError) { 46 + throw new Error("Unknown resolution error"); 47 + } 48 + } 49 + 50 + return doc; 51 + }
+36
backend/src/api/stats.ts
··· 1 + /* 2 + * clippr: a social bookmarking service for the AT Protocol 3 + * Copyright (c) 2025 clippr contributors. 4 + * SPDX-License-Identifier: AGPL-3.0-only 5 + */ 6 + 7 + import type { AppviewStatsQuery } from "./types.js"; 8 + import { Database } from "../db/database.js"; 9 + import { clipsTable, tagsTable, usersTable } from "../db/schema.js"; 10 + import { count } from "drizzle-orm"; 11 + 12 + const db = Database.getInstance().getDb(); 13 + 14 + export async function getStats(): Promise<AppviewStatsQuery> { 15 + const clipCount = await db.select({ count: count() }).from(clipsTable); 16 + const tagCount = await db.select({ count: count() }).from(tagsTable); 17 + const userCount = await db.select({ count: count() }).from(usersTable); 18 + 19 + if ( 20 + clipCount[0] === undefined || 21 + tagCount[0] === undefined || 22 + userCount[0] === undefined 23 + ) { 24 + return { 25 + knownClips: 0, 26 + knownTags: 0, 27 + knownUsers: 0, 28 + }; 29 + } 30 + 31 + return { 32 + knownClips: clipCount[0].count, 33 + knownTags: tagCount[0].count, 34 + knownUsers: userCount[0].count, 35 + }; 36 + }
+6
backend/src/api/types.ts
··· 36 36 collection: string; 37 37 recordKey: string; 38 38 } 39 + 40 + export interface AppviewStatsQuery { 41 + knownUsers: number; 42 + knownClips: number; 43 + knownTags: number; 44 + }
+37 -14
backend/src/config.ts
··· 7 7 import { readFileSync } from "fs"; 8 8 import * as toml from "toml"; 9 9 10 + interface ConfigSchema { 11 + hostname: string | "localhost"; 12 + port: number | 9090; 13 + baseUrl: string | "http://localhost:9090"; 14 + logLevel: string | "debug"; 15 + database: { 16 + name: string | "file:clippr.db"; 17 + }; 18 + network: { 19 + firehose: string | "jetstream1.us-east.bsky.network"; 20 + serviceDid: string | "did:web:localhost%3A9090"; 21 + didSigningKey: 22 + | string 23 + | "did:key:zDnaeuuRRQuYp4S76LwosLhHbpU1HJcg6S5oJAUHmdZLVdLM5"; 24 + }; 25 + } 26 + 27 + class ConfigError extends Error { 28 + constructor(message: string) { 29 + super(message); 30 + this.name = "ConfigError"; 31 + } 32 + } 33 + 10 34 export class Config { 11 35 private static instance: Config; 12 - private readonly configData; 36 + private readonly configData: ConfigSchema; 13 37 14 38 private constructor() { 15 39 let tomlString; 16 40 try { 17 41 tomlString = readFileSync("config.toml", "utf-8"); 18 42 } catch { 19 - throw new Error("Config file not found"); 43 + throw new ConfigError("Config file not found"); 44 + } 45 + 46 + try { 47 + this.configData = toml.parse(tomlString); 48 + } catch { 49 + throw new ConfigError(`Config file is not valid TOML`); 20 50 } 21 - this.configData = toml.parse(tomlString); 22 51 } 23 52 53 + /** 54 + * Gets a singleton instance of the program configuration 55 + * @throws {ConfigError} if the config file cannot be read or parsed 56 + */ 24 57 static getInstance(): Config { 25 58 if (!Config.instance) { 26 59 try { ··· 33 66 return Config.instance; 34 67 } 35 68 36 - get<T>(path: string): T | undefined { 37 - const keys = path.split("."); 38 - let value = this.configData; 39 - for (const key of keys) { 40 - if (value == null) return undefined; 41 - value = value[key]; 42 - } 43 - return value; 44 - } 45 - 46 - getAll() { 69 + getConfig(): ConfigSchema { 47 70 return this.configData; 48 71 } 49 72 }
+16 -3
backend/src/db/database.ts
··· 8 8 import { Config } from "../config.js"; 9 9 import Logger from "../logger.js"; 10 10 11 - const config = Config.getInstance(); 12 - const dbname = config.get("database.name"); 11 + const config = Config.getInstance().getConfig(); 12 + const dbname = config.database.name; 13 + 14 + class DatabaseError extends Error { 15 + constructor(message: string) { 16 + super(message); 17 + this.name = "DatabaseError"; 18 + } 19 + } 13 20 14 21 export class Database { 15 22 private static instance: Database; 16 23 private readonly db; 17 24 18 25 private constructor() { 19 - this.db = drizzle({ connection: { url: `${dbname}` } }); 26 + try { 27 + this.db = drizzle({ connection: { url: `${dbname}` } }); 28 + } catch (e: unknown) { 29 + if (e instanceof Error) { 30 + throw new DatabaseError(e.message); 31 + } else throw new DatabaseError("Unknown error"); 32 + } 20 33 } 21 34 22 35 static getInstance(): Database {
+4 -3
backend/src/logger.ts
··· 5 5 */ 6 6 7 7 import { createLogger, format, transports } from "winston"; 8 + import { Config } from "./config.js"; 8 9 9 - // TODO: I can't seem to actually get the config setting for the log level yet. 10 - const loglevel = "debug"; 10 + const config = Config.getInstance().getConfig(); 11 + const logLevel = config.logLevel; 11 12 12 13 const Logger = createLogger({ 13 - level: loglevel, 14 + level: logLevel, 14 15 transports: [ 15 16 new transports.Console({ 16 17 format: format.combine(
+7 -6
backend/src/main.ts
··· 17 17 18 18 async function main() { 19 19 const logger = Logger; 20 - logger.info("Clippr-BE starting..."); 20 + logger.info(`Clippr-BE v${process.env.npm_package_version} starting...`); 21 21 22 - logger.verbose("Reading configuration..."); 23 - const config = Config.getInstance(); 22 + // Config is already loaded into the app (when preparing logger) 23 + const config = Config.getInstance().getConfig(); 24 24 25 25 logger.verbose("Initializing database..."); 26 26 Database.getInstance(); ··· 29 29 startFirehose(); 30 30 readFromFirehose(); 31 31 32 + logger.verbose("Starting XRPC server..."); 32 33 const server: ServerType = serve({ 33 - port: config.get("port"), 34 - hostname: config.get("hostname"), 34 + port: config.port, 35 + hostname: config.hostname, 35 36 fetch: app.fetch, 36 37 }); 37 38 38 39 logger.info( 39 - `XRPC server launched at http://${config.get("hostname")}:${config.get("port")}`, 40 + `XRPC server launched at http://${config.hostname}:${config.port}`, 40 41 ); 41 42 42 43 process.removeAllListeners("SIGINT");
+97 -16
backend/src/network/commit.ts
··· 18 18 import { validateClip, validateProfile, validateTag } from "./validator.js"; 19 19 import { convertDidToString } from "./converters.js"; 20 20 import { hashString } from "../hasher.js"; 21 + import { and, eq } from "drizzle-orm"; 22 + import type { TagRef } from "../api/types.js"; 21 23 22 24 const db = Database.getInstance().getDb(); 23 25 ··· 29 31 export async function handleClip( 30 32 event: CommitEvent<`social.clippr.${string}`>, 31 33 ): Promise<void> { 32 - if (event.commit.operation !== "create") { 33 - Logger.warn( 34 - `Operation '${event.commit.operation}' for ${event.commit.collection} not supported. Ignoring.`, 35 - ); 34 + if (event.commit.operation === "delete") { 35 + await db 36 + .delete(clipsTable) 37 + .where( 38 + and( 39 + eq(clipsTable.did, event.did), 40 + eq(clipsTable.recordKey, event.commit.rkey), 41 + ), 42 + ); 43 + Logger.verbose(`Deleted clip: ${event.did}/${event.commit.rkey}`, event); 36 44 return; 37 - } // We currently do not handle these. 45 + } 38 46 39 47 if (event.commit.record.$type !== "social.clippr.feed.clip") { 40 48 Logger.verbose( ··· 75 83 return; 76 84 } 77 85 78 - if (!(await validateClip(record))) { 86 + if (!(await validateClip(record))) return; 87 + 88 + if (event.commit.operation === "update") { 89 + await db 90 + .update(clipsTable) 91 + .set({ 92 + did: convertDidToString(event.did), 93 + cid: event.commit.cid, 94 + timestamp: convertMicroToDate(event.time_us), 95 + recordKey: event.commit.rkey, 96 + createdAt: new Date(record.createdAt), 97 + indexedAt: new Date(), 98 + url: record.url, 99 + title: record.title, 100 + description: record.description, 101 + tags: record.tags as TagRef[] | undefined, 102 + notes: record.notes, 103 + unlisted: record.unlisted, 104 + unread: record.unread, 105 + languages: record.languages, 106 + }) 107 + .where( 108 + and( 109 + eq(clipsTable.did, event.did), 110 + eq(clipsTable.recordKey, event.commit.rkey), 111 + ), 112 + ); 113 + Logger.verbose(`Updated clip: ${event.did}/${event.commit.rkey}`, event); 79 114 return; 80 115 } 81 116 ··· 103 138 export async function handleTag( 104 139 event: CommitEvent<`social.clippr.${string}`>, 105 140 ): Promise<void> { 106 - if (event.commit.operation !== "create") { 107 - Logger.warn( 108 - `Operation '${event.commit.operation}' for ${event.commit.collection} not supported. Ignoring.`, 109 - ); 141 + if (event.commit.operation === "delete") { 142 + await db 143 + .delete(tagsTable) 144 + .where( 145 + and( 146 + eq(tagsTable.did, event.did), 147 + eq(tagsTable.recordKey, event.commit.rkey), 148 + ), 149 + ); 150 + Logger.verbose(`Deleted tag: ${event.did}/${event.commit.rkey}`, event); 110 151 return; 111 - } // We currently do not handle these. 152 + } 112 153 113 154 if (event.commit.record.$type !== "social.clippr.feed.tag") { 114 155 Logger.verbose( ··· 147 188 return; 148 189 } 149 190 191 + if (event.commit.operation === "update") { 192 + await db 193 + .update(tagsTable) 194 + .set({ 195 + timestamp: convertMicroToDate(event.time_us), 196 + did: convertDidToString(event.did), 197 + cid: event.commit.cid, 198 + recordKey: event.commit.rkey, 199 + name: record.name, 200 + description: record.description, 201 + color: record.color, 202 + createdAt: new Date(record.createdAt), 203 + indexedAt: new Date(), 204 + }) 205 + .where( 206 + and( 207 + eq(tagsTable.did, event.did), 208 + eq(tagsTable.recordKey, event.commit.rkey), 209 + ), 210 + ); 211 + Logger.verbose(`Updated tag: ${event.did}/${event.commit.rkey}`, event); 212 + return; 213 + } 214 + 150 215 await db.insert(tagsTable).values({ 151 216 timestamp: convertMicroToDate(event.time_us), 152 217 did: convertDidToString(event.did), ··· 165 230 export async function handleProfile( 166 231 event: CommitEvent<`social.clippr.${string}`>, 167 232 ): Promise<void> { 168 - if (event.commit.operation !== "create") { 169 - Logger.warn( 170 - `Operation '${event.commit.operation}' for ${event.commit.collection} not supported. Ignoring.`, 171 - ); 233 + if (event.commit.operation === "delete") { 234 + await db.delete(usersTable).where(eq(usersTable.did, event.did)); 235 + Logger.verbose(`Deleted profile: ${event.did}`, event); 172 236 return; 173 - } // We currently do not handle these. 237 + } 174 238 175 239 if (event.commit.record.$type !== "social.clippr.actor.profile") { 176 240 Logger.verbose( ··· 241 305 242 306 // Independent validations 243 307 if (!(await validateProfile(record))) { 308 + return; 309 + } 310 + 311 + if (event.commit.operation === "update") { 312 + await db 313 + .update(usersTable) 314 + .set({ 315 + did: convertDidToString(event.did), 316 + cid: event.commit.cid, 317 + timestamp: convertMicroToDate(event.time_us), 318 + createdAt: new Date(record.createdAt), 319 + displayName: record.displayName, 320 + avatar: record.avatar?.ref.$link, 321 + description: record.description, 322 + }) 323 + .where(eq(usersTable.did, convertDidToString(event.did))); 324 + Logger.verbose(`Updated profile: ${convertDidToString(event.did)}`, event); 244 325 return; 245 326 } 246 327
+5 -38
backend/src/network/converters.ts
··· 4 4 * SPDX-License-Identifier: AGPL-3.0-only 5 5 */ 6 6 7 - import { 8 - CompositeDidDocumentResolver, 9 - DocumentNotFoundError, 10 - FailedDocumentResolutionError, 11 - HandleResolutionError, 12 - ImproperDidError, 13 - PlcDidDocumentResolver, 14 - UnsupportedDidMethodError, 15 - WebDidDocumentResolver, 16 - } from "@atcute/identity-resolver"; 17 7 import { Client, simpleFetchHandler } from "@atcute/client"; 8 + import { getDidDocument } from "../api/did.js"; 18 9 19 10 /// Converts an ``At.DID`` type to a proper string, for type reasons. 20 11 export function convertDidToString(did: `did:${string}`): string { ··· 31 22 } 32 23 } 33 24 34 - // Get a user's handle from their DID. DID method agnostic. 25 + // Get a user's handle from their DID. 26 + // 27 + // WARNING: Handle validation is not performed and is taken from the document as-is. Fix me! 35 28 export async function getHandleFromDid(did: string): Promise<string> { 36 - const docResolver = new CompositeDidDocumentResolver({ 37 - methods: { 38 - plc: new PlcDidDocumentResolver(), 39 - web: new WebDidDocumentResolver(), 40 - }, 41 - }); 42 - 43 - let doc; 44 - try { 45 - doc = await docResolver.resolve(convertStringToTypedDid(did)); 46 - } catch (err) { 47 - if (err instanceof DocumentNotFoundError) { 48 - throw new Error("Document not found"); 49 - } 50 - if (err instanceof UnsupportedDidMethodError) { 51 - throw new Error("Unsupported did method"); 52 - } 53 - if (err instanceof ImproperDidError) { 54 - throw new Error("Improper did"); 55 - } 56 - if (err instanceof FailedDocumentResolutionError) { 57 - throw new Error("Failed document resolution"); 58 - } 59 - if (err instanceof HandleResolutionError) { 60 - throw new Error("Generic handle resolution error"); 61 - } 62 - } 29 + const doc = await getDidDocument(convertStringToTypedDid(did)); 63 30 64 31 if (!doc?.alsoKnownAs) { 65 32 throw new Error("No handles found");
+2 -2
backend/src/network/jetstream.ts
··· 9 9 import { handleClip, handleProfile, handleTag } from "./commit.js"; 10 10 import Logger from "../logger.js"; 11 11 12 - const config = Config.getInstance(); 13 - const hostname = config.get("network.firehose"); 12 + const config = Config.getInstance().getConfig(); 13 + const hostname = config.network.firehose; 14 14 15 15 const jetstream = new Jetstream({ 16 16 endpoint: `wss://${hostname}/subscribe`,
+186
backend/src/routes/well-known.ts
··· 1 + /* 2 + * clippr: a social bookmarking service for the AT Protocol 3 + * Copyright (c) 2025 clippr contributors. 4 + * SPDX-License-Identifier: AGPL-3.0-only 5 + */ 6 + 7 + import { Hono } from "hono"; 8 + import { Config } from "../config.js"; 9 + import { getStats } from "../api/stats.js"; 10 + 11 + const app = new Hono(); 12 + const config = Config.getInstance().getConfig(); 13 + 14 + const serviceDid: string = config.network.serviceDid; 15 + const signingKey: string = config.network.didSigningKey; 16 + let baseUrl: string = config.baseUrl; 17 + 18 + if (!baseUrl.startsWith("http://") || !baseUrl.startsWith("https://")) { 19 + baseUrl = `http://${baseUrl.replace(/^https?:\/\//, "")}`; 20 + } 21 + 22 + app.get("/.well-known/nodeinfo", (c) => { 23 + return c.json({ 24 + links: [ 25 + { 26 + rel: "https://nodeinfo.diaspora.software/ns/schema/2.2", 27 + href: `${baseUrl}/nodeinfo/2.2`, 28 + }, 29 + { 30 + rel: "https://nodeinfo.diaspora.software/ns/schema/2.1", 31 + href: `${baseUrl}/nodeinfo/2.1`, 32 + }, 33 + { 34 + rel: "https://nodeinfo.diaspora.software/ns/schema/2.0", 35 + href: `${baseUrl}/nodeinfo/2.0`, 36 + }, 37 + ], 38 + }); 39 + }); 40 + 41 + app.get("/nodeinfo/2.2", async (c) => { 42 + const appviewStats = await getStats(); 43 + 44 + return c.json({ 45 + version: "2.2", 46 + software: { 47 + name: "clippr", 48 + version: `${process.env.npm_package_version}`, 49 + repository: "https://tangled.sh/@hexmani.ac/clippr", 50 + homepage: "https://clippr.social", 51 + }, 52 + instance: { 53 + name: "clippr", 54 + description: "A social bookmarking service for the AT Protocol", 55 + }, 56 + openRegistrations: true, 57 + protocols: ["atprotocol"], 58 + services: { 59 + inbound: [], 60 + outbound: [], 61 + }, 62 + usage: { 63 + users: { 64 + total: appviewStats.knownUsers, 65 + }, 66 + }, 67 + metadata: { 68 + clips: appviewStats.knownClips, 69 + tags: appviewStats.knownTags, 70 + }, 71 + }); 72 + }); 73 + 74 + app.get("/nodeinfo/2.1", async (c) => { 75 + const appviewStats = await getStats(); 76 + 77 + return c.json({ 78 + version: "2.1", 79 + software: { 80 + name: "clippr", 81 + version: `${process.env.npm_package_version}`, 82 + repository: "https://tangled.sh/@hexmani.ac/clippr", 83 + homepage: "https://clippr.social", 84 + }, 85 + openRegistrations: true, 86 + protocols: ["atprotocol"], 87 + services: { 88 + inbound: [], 89 + outbound: [], 90 + }, 91 + usage: { 92 + users: { 93 + total: appviewStats.knownUsers, 94 + }, 95 + }, 96 + metadata: { 97 + clips: appviewStats.knownClips, 98 + tags: appviewStats.knownTags, 99 + }, 100 + }); 101 + }); 102 + 103 + app.get("/nodeinfo/2.0", async (c) => { 104 + const appviewStats = await getStats(); 105 + 106 + return c.json({ 107 + version: "2.0", 108 + software: { 109 + name: "clippr", 110 + version: `${process.env.npm_package_version}`, 111 + }, 112 + openRegistrations: true, 113 + protocols: ["atprotocol"], 114 + services: { 115 + inbound: [], 116 + outbound: [], 117 + }, 118 + usage: { 119 + users: { 120 + total: appviewStats.knownUsers, 121 + }, 122 + }, 123 + metadata: { 124 + clips: appviewStats.knownClips, 125 + tags: appviewStats.knownTags, 126 + }, 127 + }); 128 + }); 129 + 130 + app.get("/.well-known/did.json", async (c) => { 131 + if (serviceDid === undefined) { 132 + return c.json( 133 + { 134 + error: "Internal Server Error", 135 + message: "Server is not properly configured", 136 + }, 137 + 500, 138 + ); 139 + } 140 + 141 + if (signingKey === undefined) { 142 + return c.json( 143 + { 144 + error: "Internal Server Error", 145 + message: "Server is not properly configured", 146 + }, 147 + 500, 148 + ); 149 + } 150 + 151 + if (!signingKey.replace("did:key:", "").startsWith("z")) { 152 + console.log(signingKey); 153 + return c.json( 154 + { 155 + error: "Internal Server Error", 156 + message: "Server is not properly configured", 157 + }, 158 + 500, 159 + ); 160 + } 161 + 162 + return c.json({ 163 + "@context": [ 164 + "https://www.w3.org/ns/did/v1", 165 + "https://w3id.org/security/multikey/v1", 166 + ], 167 + id: serviceDid, 168 + verificationMethod: [ 169 + { 170 + id: `${serviceDid}#atproto`, 171 + type: "Multikey", 172 + controller: serviceDid, 173 + publicKeyMultibase: `${signingKey.replace("did:key:", "")}`, 174 + }, 175 + ], 176 + services: [ 177 + { 178 + id: "#clippr_appview", 179 + type: "ClipprAppView", 180 + serviceEndpoint: `${baseUrl}`, 181 + }, 182 + ], 183 + }); 184 + }); 185 + 186 + export default app;
+5 -1
backend/src/server.ts
··· 6 6 7 7 import { Hono } from "hono"; 8 8 import misc from "./routes/misc.js"; 9 + import openapi from "./routes/openapi.js"; 9 10 import xrpc from "./routes/xrpc.js"; 11 + import wellKnown from "./routes/well-known.js"; 10 12 import Logger from "./logger.js"; 11 13 import { logger } from "hono/logger"; 12 - import openapi from "./routes/openapi.js"; 14 + import { cors } from "hono/cors"; 13 15 14 16 export function winstonLogger(message: string, ...rest: unknown[]) { 15 17 Logger.http(message, ...rest); ··· 17 19 18 20 const app = new Hono(); 19 21 app.use(logger(winstonLogger)); 22 + app.use(cors()); 20 23 21 24 // Link all routes up 22 25 app.route("/", misc); 23 26 app.route("/", openapi); 27 + app.route("/", wellKnown); 24 28 app.route("/xrpc", xrpc); 25 29 26 30 export default app;
+2 -23
frontend/.gitignore
··· 1 - # build output 1 + node_modules/ 2 2 dist/ 3 - # generated types 4 - .astro/ 5 - 6 - # dependencies 7 - node_modules/ 8 - 9 - # logs 10 - npm-debug.log* 11 - yarn-debug.log* 12 - yarn-error.log* 13 - pnpm-debug.log* 14 - 15 - 16 - # environment variables 17 - .env 18 - .env.production 19 - 20 - # macOS-specific files 21 - .DS_Store 22 - 23 - # jetbrains setting folder 24 - .idea/ 3 + did.json
-7
frontend/.prettierrc
··· 6 6 "semi": true, 7 7 "singleQuote": false, 8 8 "bracketSpacing": true, 9 - "plugins": ["prettier-plugin-astro"], 10 9 "overrides": [ 11 10 { 12 11 "files": ["tsconfig.json", "jsconfig.json"], ··· 19 18 "options": { 20 19 "printWidth": 100, 21 20 "proseWrap": "always" 22 - } 23 - }, 24 - { 25 - "files": "*.astro", 26 - "options": { 27 - "parser": "astro" 28 21 } 29 22 } 30 23 ]
-4
frontend/.vscode/extensions.json
··· 1 - { 2 - "recommendations": ["astro-build.astro-vscode"], 3 - "unwantedRecommendations": [] 4 - }
-11
frontend/.vscode/launch.json
··· 1 - { 2 - "version": "0.2.0", 3 - "configurations": [ 4 - { 5 - "command": "./node_modules/.bin/astro dev", 6 - "name": "Development server", 7 - "request": "launch", 8 - "type": "node-terminal" 9 - } 10 - ] 11 - }
+21 -4
frontend/README.md
··· 1 1 # @clipprjs/client 2 2 3 - astro-based reference frontend for clippr, meant to use as little javascript as possible 3 + This is a reference implementation for the Clippr frontend using Solid. 4 + 5 + ## development 6 + 7 + If you are testing the frontend in conjunction with the AppView, you might want to change the 8 + following: 4 9 5 - ## run 10 + - OAuth automatically adapts to whether the frontend is built or in dev mode. 11 + - `VITE_CLIPPR_APPVIEW` is set to the defaults for both production and development, however, if you 12 + are hosting the appview from another location, you will need to change this. 6 13 7 - ```bash 14 + ```shell 8 15 pnpm install 9 16 pnpm run dev 10 - # pnpm run build 17 + ``` 18 + 19 + ## deployment 20 + 21 + If you plan to deploy the frontend and use another AppView or to add/remove OAuth scopes, you will 22 + have to modify `public/oauth/client-metadata.json` and the `VITE_CLIPPR_APPVIEW` environment 23 + variable. There are plans to add a way to change what AppView DID the frontend proxies its requests 24 + to inside the frontend, but not before launch. 25 + 26 + ```shell 27 + pnpm run build 11 28 ```
-11
frontend/astro.config.ts
··· 1 - /* 2 - * clippr: a social bookmarking service for the AT Protocol 3 - * Copyright (c) 2025 clippr contributors. 4 - * SPDX-License-Identifier: AGPL-3.0-only 5 - */ 6 - 7 - // @ts-check 8 - import { defineConfig } from "astro/config"; 9 - 10 - // https://astro.build/config 11 - export default defineConfig({});
-20
frontend/eslint.config.ts
··· 1 - /* 2 - * clippr: a social bookmarking service for the AT Protocol 3 - * Copyright (c) 2025 clippr contributors. 4 - * SPDX-License-Identifier: AGPL-3.0-only 5 - */ 6 - 7 - // @ts-check 8 - 9 - import eslint from "@eslint/js"; 10 - import tseslint from "typescript-eslint"; 11 - import eslintPluginPrettierRecommended from "eslint-plugin-prettier/recommended"; 12 - import eslintPluginAstro from "eslint-plugin-astro"; 13 - 14 - export default tseslint.config( 15 - eslintPluginPrettierRecommended, 16 - tseslint.configs.recommended, 17 - tseslint.configs.stylistic, 18 - eslint.configs.recommended, 19 - eslintPluginAstro.configs.recommended, 20 - );
+34
frontend/index.html
··· 1 + <!-- 2 + ~ clippr: a social bookmarking service for the AT Protocol 3 + ~ Copyright (c) 2025 clippr contributors. 4 + ~ SPDX-License-Identifier: AGPL-3.0-only 5 + --> 6 + 7 + <!doctype html> 8 + <html lang="en"> 9 + <head> 10 + <meta charset="utf-8" /> 11 + <meta name="viewport" content="width=device-width, initial-scale=1" /> 12 + <link rel="icon" type="image/ico" href="src/assets/favicon.ico" /> 13 + <link rel="stylesheet" href="src/styles/index.css" /> 14 + <meta property="og:title" content="clippr" /> 15 + <meta property="og:type" content="website" /> 16 + <meta property="og:url" content="https://clippr.social" /> 17 + <meta 18 + property="og:description" 19 + content="A social bookmarking service for the AT Protocol." 20 + /> 21 + <meta 22 + property="description" 23 + content="A social bookmarking service for the AT Protocol." 24 + /> 25 + <title>clippr</title> 26 + <script src="src/index.tsx" type="module"></script> 27 + </head> 28 + <body id="root"> 29 + <noscript 30 + >You need to enable JavaScript to run this app. Yes, we know this is 31 + inconvenient.</noscript 32 + > 33 + </body> 34 + </html>
+21 -24
frontend/package.json
··· 1 1 { 2 2 "name": "@clipprjs/client", 3 + "version": "0.1.0", 4 + "description": "Reference implementation frontend for Clippr", 3 5 "type": "module", 4 - "version": "0.1.0", 5 6 "scripts": { 6 - "dev": "astro dev", 7 - "build": "astro build", 8 - "preview": "astro preview", 9 - "astro": "astro", 10 - "lint": "pnpm exec eslint .", 11 - "lint-write": "pnpm exec eslint . --fix", 7 + "start": "vite", 8 + "dev": "vite", 9 + "build": "vite build", 10 + "serve": "vite preview", 12 11 "fmt": "pnpm exec prettier --write ." 13 12 }, 13 + "license": "AGPL-3.0-only", 14 + "devDependencies": { 15 + "@types/node": "^24.3.0", 16 + "prettier": "^3.6.2", 17 + "solid-devtools": "^0.34.3", 18 + "typescript": "^5.9.2", 19 + "vite": "^6.3.5", 20 + "vite-plugin-solid": "^2.11.8" 21 + }, 14 22 "dependencies": { 23 + "@atcute/client": "^4.0.3", 24 + "@atcute/identity-resolver": "^1.1.3", 25 + "@atcute/lexicons": "^1.1.1", 15 26 "@atcute/oauth-browser-client": "^1.0.26", 16 - "astro": "^5.12.3" 17 - }, 18 - "devDependencies": { 19 - "@eslint/eslintrc": "^3.3.1", 20 - "@eslint/js": "^9.32.0", 21 - "@typescript-eslint/eslint-plugin": "^8.38.0", 22 - "@typescript-eslint/parser": "^8.38.0", 23 - "eslint": "^9.32.0", 24 - "eslint-config-prettier": "^10.1.8", 25 - "eslint-plugin-astro": "^1.3.1", 26 - "eslint-plugin-prettier": "^5.5.3", 27 - "globals": "^16.3.0", 28 - "jiti": "^2.5.1", 29 - "prettier": "^3.6.2", 30 - "prettier-plugin-astro": "0.14.1", 31 - "typescript": "^5.8.3", 32 - "typescript-eslint": "^8.38.0" 27 + "@mary/exif-rm": "jsr:^0.2.2", 28 + "@solidjs/router": "^0.15.3", 29 + "solid-js": "^1.9.9" 33 30 } 34 31 }
+762 -3618
frontend/pnpm-lock.yaml
··· 8 8 9 9 .: 10 10 dependencies: 11 + '@atcute/client': 12 + specifier: ^4.0.3 13 + version: 4.0.3 14 + '@atcute/identity-resolver': 15 + specifier: ^1.1.3 16 + version: 1.1.3(@atcute/identity@1.0.3) 17 + '@atcute/lexicons': 18 + specifier: ^1.1.1 19 + version: 1.1.1 11 20 '@atcute/oauth-browser-client': 12 21 specifier: ^1.0.26 13 22 version: 1.0.26 14 - astro: 15 - specifier: ^5.12.3 16 - version: 5.12.3(@types/node@24.1.0)(jiti@2.5.1)(rollup@4.45.3)(typescript@5.8.3) 23 + '@mary/exif-rm': 24 + specifier: jsr:^0.2.2 25 + version: '@jsr/mary__exif-rm@0.2.2' 26 + '@solidjs/router': 27 + specifier: ^0.15.3 28 + version: 0.15.3(solid-js@1.9.9) 29 + solid-js: 30 + specifier: ^1.9.9 31 + version: 1.9.9 17 32 devDependencies: 18 - '@eslint/eslintrc': 19 - specifier: ^3.3.1 20 - version: 3.3.1 21 - '@eslint/js': 22 - specifier: ^9.32.0 23 - version: 9.32.0 24 - '@typescript-eslint/eslint-plugin': 25 - specifier: ^8.38.0 26 - version: 8.38.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3) 27 - '@typescript-eslint/parser': 28 - specifier: ^8.38.0 29 - version: 8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3) 30 - eslint: 31 - specifier: ^9.32.0 32 - version: 9.32.0(jiti@2.5.1) 33 - eslint-config-prettier: 34 - specifier: ^10.1.8 35 - version: 10.1.8(eslint@9.32.0(jiti@2.5.1)) 36 - eslint-plugin-astro: 37 - specifier: ^1.3.1 38 - version: 1.3.1(eslint@9.32.0(jiti@2.5.1)) 39 - eslint-plugin-prettier: 40 - specifier: ^5.5.3 41 - version: 5.5.3(eslint-config-prettier@10.1.8(eslint@9.32.0(jiti@2.5.1)))(eslint@9.32.0(jiti@2.5.1))(prettier@3.6.2) 42 - globals: 43 - specifier: ^16.3.0 44 - version: 16.3.0 45 - jiti: 46 - specifier: ^2.5.1 47 - version: 2.5.1 33 + '@types/node': 34 + specifier: ^24.3.0 35 + version: 24.3.0 48 36 prettier: 49 37 specifier: ^3.6.2 50 38 version: 3.6.2 51 - prettier-plugin-astro: 52 - specifier: 0.14.1 53 - version: 0.14.1 39 + solid-devtools: 40 + specifier: ^0.34.3 41 + version: 0.34.3(solid-js@1.9.9)(vite@6.3.5(@types/node@24.3.0)) 54 42 typescript: 55 - specifier: ^5.8.3 56 - version: 5.8.3 57 - typescript-eslint: 58 - specifier: ^8.38.0 59 - version: 8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3) 43 + specifier: ^5.9.2 44 + version: 5.9.2 45 + vite: 46 + specifier: ^6.3.5 47 + version: 6.3.5(@types/node@24.3.0) 48 + vite-plugin-solid: 49 + specifier: ^2.11.8 50 + version: 2.11.8(solid-js@1.9.9)(vite@6.3.5(@types/node@24.3.0)) 60 51 61 52 packages: 62 53 63 - '@astrojs/compiler@2.12.2': 64 - resolution: {integrity: sha512-w2zfvhjNCkNMmMMOn5b0J8+OmUaBL1o40ipMvqcG6NRpdC+lKxmTi48DT8Xw0SzJ3AfmeFLB45zXZXtmbsjcgw==} 65 - 66 - '@astrojs/internal-helpers@0.6.1': 67 - resolution: {integrity: sha512-l5Pqf6uZu31aG+3Lv8nl/3s4DbUzdlxTWDof4pEpto6GUJNhhCbelVi9dEyurOVyqaelwmS9oSyOWOENSfgo9A==} 68 - 69 - '@astrojs/markdown-remark@6.3.3': 70 - resolution: {integrity: sha512-DDRtD1sPvAuA7ms2btc9A7/7DApKqgLMNrE6kh5tmkfy8utD0Z738gqd3p5aViYYdUtHIyEJ1X4mCMxfCfu15w==} 71 - 72 - '@astrojs/prism@3.3.0': 73 - resolution: {integrity: sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ==} 74 - engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} 75 - 76 - '@astrojs/telemetry@3.3.0': 77 - resolution: {integrity: sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ==} 78 - engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} 54 + '@ampproject/remapping@2.3.0': 55 + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} 56 + engines: {node: '>=6.0.0'} 79 57 80 58 '@atcute/client@4.0.3': 81 59 resolution: {integrity: sha512-RIOZWFVLca/HiPAAUDqQPOdOreCxTbL5cb+WUf5yqQOKIu5yEAP3eksinmlLmgIrlr5qVOE7brazUUzaskFCfw==} 82 60 61 + '@atcute/identity-resolver@1.1.3': 62 + resolution: {integrity: sha512-KZgGgg99CWaV7Df3+h3X/WMrDzTPQVfsaoIVbTNLx2B56BvCL2EmaxPSVw/7BFUJMZHlVU4rtoEB4lyvNyMswA==} 63 + peerDependencies: 64 + '@atcute/identity': ^1.0.0 65 + 83 66 '@atcute/identity@1.0.3': 84 67 resolution: {integrity: sha512-mNMxbKHFGys03A8JXKk0KfMBzdd0vrYMzZZWjpw1nYTs0+ea6bo5S1hwqVUZxHdo1gFHSe/t63jxQIF4yL9aKw==} 85 68 86 - '@atcute/lexicons@1.1.0': 87 - resolution: {integrity: sha512-LFqwnria78xLYb62Ri/+WwQpUTgZp2DuyolNGIIOV1dpiKhFFFh//nscHMA6IExFLQRqWDs3tTjy7zv0h3sf1Q==} 69 + '@atcute/lexicons@1.1.1': 70 + resolution: {integrity: sha512-k6qy5p3j9fJJ6ekaMPfEfp3ni4TW/XNuH9ZmsuwC0fi0tOjp+Fa8ZQakHwnqOzFt/cVBfGcmYE/lKNAbeTjgUg==} 88 71 89 72 '@atcute/multibase@1.1.4': 90 73 resolution: {integrity: sha512-NUf5AeeSOmuZHGU+4GAaMtISJoG+ZHtW/vUVA4lK/YDt/7LODAW0Fd0NNIIUPVUoW0xJS6zSEIWvwLLuxmEHhA==} ··· 95 78 '@atcute/uint8array@1.0.3': 96 79 resolution: {integrity: sha512-M/K+ihiVW8Pl2PFLzaC4E3l4JaZ1IH05Q0AbPWUC4cVHnd/gZ/1kAF5ngdtGvJeDMirHZ2VAy7OmAsPwR/2nlA==} 97 80 81 + '@atcute/util-fetch@1.0.1': 82 + resolution: {integrity: sha512-Clc0E/5ufyGBVfYBUwWNlHONlZCoblSr4Ho50l1LhmRPGB1Wu/AQ9Sz+rsBg7fdaW/auve8ulmwhRhnX2cGRow==} 83 + 84 + '@babel/code-frame@7.27.1': 85 + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} 86 + engines: {node: '>=6.9.0'} 87 + 88 + '@babel/compat-data@7.28.0': 89 + resolution: {integrity: sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==} 90 + engines: {node: '>=6.9.0'} 91 + 92 + '@babel/core@7.28.3': 93 + resolution: {integrity: sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ==} 94 + engines: {node: '>=6.9.0'} 95 + 96 + '@babel/generator@7.28.3': 97 + resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} 98 + engines: {node: '>=6.9.0'} 99 + 100 + '@babel/helper-compilation-targets@7.27.2': 101 + resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} 102 + engines: {node: '>=6.9.0'} 103 + 104 + '@babel/helper-globals@7.28.0': 105 + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} 106 + engines: {node: '>=6.9.0'} 107 + 108 + '@babel/helper-module-imports@7.18.6': 109 + resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} 110 + engines: {node: '>=6.9.0'} 111 + 112 + '@babel/helper-module-imports@7.27.1': 113 + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} 114 + engines: {node: '>=6.9.0'} 115 + 116 + '@babel/helper-module-transforms@7.28.3': 117 + resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} 118 + engines: {node: '>=6.9.0'} 119 + peerDependencies: 120 + '@babel/core': ^7.0.0 121 + 122 + '@babel/helper-plugin-utils@7.27.1': 123 + resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} 124 + engines: {node: '>=6.9.0'} 125 + 98 126 '@babel/helper-string-parser@7.27.1': 99 127 resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} 100 128 engines: {node: '>=6.9.0'} ··· 103 131 resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} 104 132 engines: {node: '>=6.9.0'} 105 133 106 - '@babel/parser@7.28.0': 107 - resolution: {integrity: sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==} 134 + '@babel/helper-validator-option@7.27.1': 135 + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} 136 + engines: {node: '>=6.9.0'} 137 + 138 + '@babel/helpers@7.28.3': 139 + resolution: {integrity: sha512-PTNtvUQihsAsDHMOP5pfobP8C6CM4JWXmP8DrEIt46c3r2bf87Ua1zoqevsMo9g+tWDwgWrFP5EIxuBx5RudAw==} 140 + engines: {node: '>=6.9.0'} 141 + 142 + '@babel/parser@7.28.3': 143 + resolution: {integrity: sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==} 108 144 engines: {node: '>=6.0.0'} 109 145 hasBin: true 110 146 147 + '@babel/plugin-syntax-jsx@7.27.1': 148 + resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} 149 + engines: {node: '>=6.9.0'} 150 + peerDependencies: 151 + '@babel/core': ^7.0.0-0 152 + 153 + '@babel/plugin-syntax-typescript@7.27.1': 154 + resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} 155 + engines: {node: '>=6.9.0'} 156 + peerDependencies: 157 + '@babel/core': ^7.0.0-0 158 + 159 + '@babel/template@7.27.2': 160 + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} 161 + engines: {node: '>=6.9.0'} 162 + 163 + '@babel/traverse@7.28.3': 164 + resolution: {integrity: sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ==} 165 + engines: {node: '>=6.9.0'} 166 + 111 167 '@babel/types@7.28.2': 112 168 resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==} 113 169 engines: {node: '>=6.9.0'} 114 170 115 - '@badrap/valita@0.4.5': 116 - resolution: {integrity: sha512-4QwGbuhh/JesHRQj79mO/l37PvJj4l/tlAu7+S1n4h47qwaNpZ0WDvIwUGLYUsdi9uQ5UPpiG9wb1Wm3XUFBUQ==} 171 + '@badrap/valita@0.4.6': 172 + resolution: {integrity: sha512-4kdqcjyxo/8RQ8ayjms47HCWZIF5981oE5nIenbfThKDxWXtEHKipAOWlflpPJzZx9y/JWYQkp18Awr7VuepFg==} 117 173 engines: {node: '>= 18'} 118 174 119 - '@capsizecss/unpack@2.4.0': 120 - resolution: {integrity: sha512-GrSU71meACqcmIUxPYOJvGKF0yryjN/L1aCuE9DViCTJI7bfkjgYDPD1zbNDcINJwSSP6UaBZY9GAbYDO7re0Q==} 121 - 122 - '@emnapi/runtime@1.4.5': 123 - resolution: {integrity: sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==} 124 - 125 - '@esbuild/aix-ppc64@0.25.8': 126 - resolution: {integrity: sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==} 175 + '@esbuild/aix-ppc64@0.25.9': 176 + resolution: {integrity: sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==} 127 177 engines: {node: '>=18'} 128 178 cpu: [ppc64] 129 179 os: [aix] 130 180 131 - '@esbuild/android-arm64@0.25.8': 132 - resolution: {integrity: sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==} 181 + '@esbuild/android-arm64@0.25.9': 182 + resolution: {integrity: sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==} 133 183 engines: {node: '>=18'} 134 184 cpu: [arm64] 135 185 os: [android] 136 186 137 - '@esbuild/android-arm@0.25.8': 138 - resolution: {integrity: sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==} 187 + '@esbuild/android-arm@0.25.9': 188 + resolution: {integrity: sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==} 139 189 engines: {node: '>=18'} 140 190 cpu: [arm] 141 191 os: [android] 142 192 143 - '@esbuild/android-x64@0.25.8': 144 - resolution: {integrity: sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==} 193 + '@esbuild/android-x64@0.25.9': 194 + resolution: {integrity: sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==} 145 195 engines: {node: '>=18'} 146 196 cpu: [x64] 147 197 os: [android] 148 198 149 - '@esbuild/darwin-arm64@0.25.8': 150 - resolution: {integrity: sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==} 199 + '@esbuild/darwin-arm64@0.25.9': 200 + resolution: {integrity: sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==} 151 201 engines: {node: '>=18'} 152 202 cpu: [arm64] 153 203 os: [darwin] 154 204 155 - '@esbuild/darwin-x64@0.25.8': 156 - resolution: {integrity: sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==} 205 + '@esbuild/darwin-x64@0.25.9': 206 + resolution: {integrity: sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==} 157 207 engines: {node: '>=18'} 158 208 cpu: [x64] 159 209 os: [darwin] 160 210 161 - '@esbuild/freebsd-arm64@0.25.8': 162 - resolution: {integrity: sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==} 211 + '@esbuild/freebsd-arm64@0.25.9': 212 + resolution: {integrity: sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==} 163 213 engines: {node: '>=18'} 164 214 cpu: [arm64] 165 215 os: [freebsd] 166 216 167 - '@esbuild/freebsd-x64@0.25.8': 168 - resolution: {integrity: sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==} 217 + '@esbuild/freebsd-x64@0.25.9': 218 + resolution: {integrity: sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==} 169 219 engines: {node: '>=18'} 170 220 cpu: [x64] 171 221 os: [freebsd] 172 222 173 - '@esbuild/linux-arm64@0.25.8': 174 - resolution: {integrity: sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==} 223 + '@esbuild/linux-arm64@0.25.9': 224 + resolution: {integrity: sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==} 175 225 engines: {node: '>=18'} 176 226 cpu: [arm64] 177 227 os: [linux] 178 228 179 - '@esbuild/linux-arm@0.25.8': 180 - resolution: {integrity: sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==} 229 + '@esbuild/linux-arm@0.25.9': 230 + resolution: {integrity: sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==} 181 231 engines: {node: '>=18'} 182 232 cpu: [arm] 183 233 os: [linux] 184 234 185 - '@esbuild/linux-ia32@0.25.8': 186 - resolution: {integrity: sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==} 235 + '@esbuild/linux-ia32@0.25.9': 236 + resolution: {integrity: sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==} 187 237 engines: {node: '>=18'} 188 238 cpu: [ia32] 189 239 os: [linux] 190 240 191 - '@esbuild/linux-loong64@0.25.8': 192 - resolution: {integrity: sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==} 241 + '@esbuild/linux-loong64@0.25.9': 242 + resolution: {integrity: sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==} 193 243 engines: {node: '>=18'} 194 244 cpu: [loong64] 195 245 os: [linux] 196 246 197 - '@esbuild/linux-mips64el@0.25.8': 198 - resolution: {integrity: sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==} 247 + '@esbuild/linux-mips64el@0.25.9': 248 + resolution: {integrity: sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==} 199 249 engines: {node: '>=18'} 200 250 cpu: [mips64el] 201 251 os: [linux] 202 252 203 - '@esbuild/linux-ppc64@0.25.8': 204 - resolution: {integrity: sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==} 253 + '@esbuild/linux-ppc64@0.25.9': 254 + resolution: {integrity: sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==} 205 255 engines: {node: '>=18'} 206 256 cpu: [ppc64] 207 257 os: [linux] 208 258 209 - '@esbuild/linux-riscv64@0.25.8': 210 - resolution: {integrity: sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==} 259 + '@esbuild/linux-riscv64@0.25.9': 260 + resolution: {integrity: sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==} 211 261 engines: {node: '>=18'} 212 262 cpu: [riscv64] 213 263 os: [linux] 214 264 215 - '@esbuild/linux-s390x@0.25.8': 216 - resolution: {integrity: sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==} 265 + '@esbuild/linux-s390x@0.25.9': 266 + resolution: {integrity: sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==} 217 267 engines: {node: '>=18'} 218 268 cpu: [s390x] 219 269 os: [linux] 220 270 221 - '@esbuild/linux-x64@0.25.8': 222 - resolution: {integrity: sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==} 271 + '@esbuild/linux-x64@0.25.9': 272 + resolution: {integrity: sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==} 223 273 engines: {node: '>=18'} 224 274 cpu: [x64] 225 275 os: [linux] 226 276 227 - '@esbuild/netbsd-arm64@0.25.8': 228 - resolution: {integrity: sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==} 277 + '@esbuild/netbsd-arm64@0.25.9': 278 + resolution: {integrity: sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==} 229 279 engines: {node: '>=18'} 230 280 cpu: [arm64] 231 281 os: [netbsd] 232 282 233 - '@esbuild/netbsd-x64@0.25.8': 234 - resolution: {integrity: sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==} 283 + '@esbuild/netbsd-x64@0.25.9': 284 + resolution: {integrity: sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==} 235 285 engines: {node: '>=18'} 236 286 cpu: [x64] 237 287 os: [netbsd] 238 288 239 - '@esbuild/openbsd-arm64@0.25.8': 240 - resolution: {integrity: sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==} 289 + '@esbuild/openbsd-arm64@0.25.9': 290 + resolution: {integrity: sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==} 241 291 engines: {node: '>=18'} 242 292 cpu: [arm64] 243 293 os: [openbsd] 244 294 245 - '@esbuild/openbsd-x64@0.25.8': 246 - resolution: {integrity: sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==} 295 + '@esbuild/openbsd-x64@0.25.9': 296 + resolution: {integrity: sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==} 247 297 engines: {node: '>=18'} 248 298 cpu: [x64] 249 299 os: [openbsd] 250 300 251 - '@esbuild/openharmony-arm64@0.25.8': 252 - resolution: {integrity: sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==} 301 + '@esbuild/openharmony-arm64@0.25.9': 302 + resolution: {integrity: sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==} 253 303 engines: {node: '>=18'} 254 304 cpu: [arm64] 255 305 os: [openharmony] 256 306 257 - '@esbuild/sunos-x64@0.25.8': 258 - resolution: {integrity: sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==} 307 + '@esbuild/sunos-x64@0.25.9': 308 + resolution: {integrity: sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==} 259 309 engines: {node: '>=18'} 260 310 cpu: [x64] 261 311 os: [sunos] 262 312 263 - '@esbuild/win32-arm64@0.25.8': 264 - resolution: {integrity: sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==} 313 + '@esbuild/win32-arm64@0.25.9': 314 + resolution: {integrity: sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==} 265 315 engines: {node: '>=18'} 266 316 cpu: [arm64] 267 317 os: [win32] 268 318 269 - '@esbuild/win32-ia32@0.25.8': 270 - resolution: {integrity: sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==} 319 + '@esbuild/win32-ia32@0.25.9': 320 + resolution: {integrity: sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==} 271 321 engines: {node: '>=18'} 272 322 cpu: [ia32] 273 323 os: [win32] 274 324 275 - '@esbuild/win32-x64@0.25.8': 276 - resolution: {integrity: sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==} 325 + '@esbuild/win32-x64@0.25.9': 326 + resolution: {integrity: sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==} 277 327 engines: {node: '>=18'} 278 328 cpu: [x64] 279 329 os: [win32] 280 330 281 - '@eslint-community/eslint-utils@4.7.0': 282 - resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} 283 - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 284 - peerDependencies: 285 - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 286 - 287 - '@eslint-community/regexpp@4.12.1': 288 - resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} 289 - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 290 - 291 - '@eslint/config-array@0.21.0': 292 - resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==} 293 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 294 - 295 - '@eslint/config-helpers@0.3.0': 296 - resolution: {integrity: sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==} 297 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 298 - 299 - '@eslint/core@0.15.1': 300 - resolution: {integrity: sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==} 301 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 302 - 303 - '@eslint/eslintrc@3.3.1': 304 - resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} 305 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 306 - 307 - '@eslint/js@9.32.0': 308 - resolution: {integrity: sha512-BBpRFZK3eX6uMLKz8WxFOBIFFcGFJ/g8XuwjTHCqHROSIsopI+ddn/d5Cfh36+7+e5edVS8dbSHnBNhrLEX0zg==} 309 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 310 - 311 - '@eslint/object-schema@2.1.6': 312 - resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} 313 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 314 - 315 - '@eslint/plugin-kit@0.3.4': 316 - resolution: {integrity: sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw==} 317 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 318 - 319 - '@humanfs/core@0.19.1': 320 - resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} 321 - engines: {node: '>=18.18.0'} 322 - 323 - '@humanfs/node@0.16.6': 324 - resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} 325 - engines: {node: '>=18.18.0'} 326 - 327 - '@humanwhocodes/module-importer@1.0.1': 328 - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 329 - engines: {node: '>=12.22'} 330 - 331 - '@humanwhocodes/retry@0.3.1': 332 - resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} 333 - engines: {node: '>=18.18'} 334 - 335 - '@humanwhocodes/retry@0.4.3': 336 - resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} 337 - engines: {node: '>=18.18'} 338 - 339 - '@img/sharp-darwin-arm64@0.33.5': 340 - resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} 341 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 342 - cpu: [arm64] 343 - os: [darwin] 344 - 345 - '@img/sharp-darwin-x64@0.33.5': 346 - resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} 347 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 348 - cpu: [x64] 349 - os: [darwin] 350 - 351 - '@img/sharp-libvips-darwin-arm64@1.0.4': 352 - resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} 353 - cpu: [arm64] 354 - os: [darwin] 355 - 356 - '@img/sharp-libvips-darwin-x64@1.0.4': 357 - resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} 358 - cpu: [x64] 359 - os: [darwin] 360 - 361 - '@img/sharp-libvips-linux-arm64@1.0.4': 362 - resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} 363 - cpu: [arm64] 364 - os: [linux] 365 - 366 - '@img/sharp-libvips-linux-arm@1.0.5': 367 - resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} 368 - cpu: [arm] 369 - os: [linux] 370 - 371 - '@img/sharp-libvips-linux-s390x@1.0.4': 372 - resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} 373 - cpu: [s390x] 374 - os: [linux] 375 - 376 - '@img/sharp-libvips-linux-x64@1.0.4': 377 - resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} 378 - cpu: [x64] 379 - os: [linux] 380 - 381 - '@img/sharp-libvips-linuxmusl-arm64@1.0.4': 382 - resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} 383 - cpu: [arm64] 384 - os: [linux] 385 - 386 - '@img/sharp-libvips-linuxmusl-x64@1.0.4': 387 - resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} 388 - cpu: [x64] 389 - os: [linux] 390 - 391 - '@img/sharp-linux-arm64@0.33.5': 392 - resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} 393 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 394 - cpu: [arm64] 395 - os: [linux] 396 - 397 - '@img/sharp-linux-arm@0.33.5': 398 - resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} 399 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 400 - cpu: [arm] 401 - os: [linux] 331 + '@jridgewell/gen-mapping@0.3.13': 332 + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} 402 333 403 - '@img/sharp-linux-s390x@0.33.5': 404 - resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} 405 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 406 - cpu: [s390x] 407 - os: [linux] 334 + '@jridgewell/resolve-uri@3.1.2': 335 + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 336 + engines: {node: '>=6.0.0'} 408 337 409 - '@img/sharp-linux-x64@0.33.5': 410 - resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} 411 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 412 - cpu: [x64] 413 - os: [linux] 338 + '@jridgewell/sourcemap-codec@1.5.5': 339 + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} 414 340 415 - '@img/sharp-linuxmusl-arm64@0.33.5': 416 - resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} 417 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 418 - cpu: [arm64] 419 - os: [linux] 341 + '@jridgewell/trace-mapping@0.3.30': 342 + resolution: {integrity: sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==} 420 343 421 - '@img/sharp-linuxmusl-x64@0.33.5': 422 - resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} 423 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 424 - cpu: [x64] 425 - os: [linux] 344 + '@jsr/mary__exif-rm@0.2.2': 345 + resolution: {integrity: sha512-+ZpLaC+1CyqWhH608Sqd6/yTG0pOlokn2tCXha7s1SMQ+GLKo4Nn/PskTeeP9Pt+6gNYSu6ednoSlRvXb2ZGxg==, tarball: https://npm.jsr.io/~/11/@jsr/mary__exif-rm/0.2.2.tgz} 426 346 427 - '@img/sharp-wasm32@0.33.5': 428 - resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} 429 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 430 - cpu: [wasm32] 347 + '@nothing-but/utils@0.17.0': 348 + resolution: {integrity: sha512-TuCHcHLOqDL0SnaAxACfuRHBNRgNJcNn9X0GiH5H3YSDBVquCr3qEIG3FOQAuMyZCbu9w8nk2CHhOsn7IvhIwQ==} 431 349 432 - '@img/sharp-win32-ia32@0.33.5': 433 - resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} 434 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 435 - cpu: [ia32] 436 - os: [win32] 437 - 438 - '@img/sharp-win32-x64@0.33.5': 439 - resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} 440 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 441 - cpu: [x64] 442 - os: [win32] 443 - 444 - '@jridgewell/sourcemap-codec@1.5.4': 445 - resolution: {integrity: sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==} 446 - 447 - '@nodelib/fs.scandir@2.1.5': 448 - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 449 - engines: {node: '>= 8'} 450 - 451 - '@nodelib/fs.stat@2.0.5': 452 - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 453 - engines: {node: '>= 8'} 454 - 455 - '@nodelib/fs.walk@1.2.8': 456 - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 457 - engines: {node: '>= 8'} 458 - 459 - '@oslojs/encoding@1.1.0': 460 - resolution: {integrity: sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==} 461 - 462 - '@pkgr/core@0.2.9': 463 - resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} 464 - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} 465 - 466 - '@rollup/pluginutils@5.2.0': 467 - resolution: {integrity: sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==} 468 - engines: {node: '>=14.0.0'} 469 - peerDependencies: 470 - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 471 - peerDependenciesMeta: 472 - rollup: 473 - optional: true 474 - 475 - '@rollup/rollup-android-arm-eabi@4.45.3': 476 - resolution: {integrity: sha512-8oQkCTve4H4B4JpmD2FV7fV2ZPTxJHN//bRhCqPUU8v6c5APlxteAXyc7BFaEb4aGpUzrPLU4PoAcGhwmRzZTA==} 350 + '@rollup/rollup-android-arm-eabi@4.47.1': 351 + resolution: {integrity: sha512-lTahKRJip0knffA/GTNFJMrToD+CM+JJ+Qt5kjzBK/sFQ0EWqfKW3AYQSlZXN98tX0lx66083U9JYIMioMMK7g==} 477 352 cpu: [arm] 478 353 os: [android] 479 354 480 - '@rollup/rollup-android-arm64@4.45.3': 481 - resolution: {integrity: sha512-StOsmdXHU2hx3UFTTs6yYxCSwSIgLsfjUBICXyWj625M32OOjakXlaZuGKL+jA3Nvv35+hMxrm/64eCoT07SYQ==} 355 + '@rollup/rollup-android-arm64@4.47.1': 356 + resolution: {integrity: sha512-uqxkb3RJLzlBbh/bbNQ4r7YpSZnjgMgyoEOY7Fy6GCbelkDSAzeiogxMG9TfLsBbqmGsdDObo3mzGqa8hps4MA==} 482 357 cpu: [arm64] 483 358 os: [android] 484 359 485 - '@rollup/rollup-darwin-arm64@4.45.3': 486 - resolution: {integrity: sha512-6CfLF3eqKhCdhK0GUnR5ZS99OFz+dtOeB/uePznLKxjCsk5QjT/V0eSEBb4vj+o/ri3i35MseSEQHCLLAgClVw==} 360 + '@rollup/rollup-darwin-arm64@4.47.1': 361 + resolution: {integrity: sha512-tV6reObmxBDS4DDyLzTDIpymthNlxrLBGAoQx6m2a7eifSNEZdkXQl1PE4ZjCkEDPVgNXSzND/k9AQ3mC4IOEQ==} 487 362 cpu: [arm64] 488 363 os: [darwin] 489 364 490 - '@rollup/rollup-darwin-x64@4.45.3': 491 - resolution: {integrity: sha512-QLWyWmAJG9elNTNLdcSXUT/M+J7DhEmvs1XPHYcgYkse3UHf9iWTJ+yTPlKMIetiQnNi+cNp+gY4gvjDpREfKw==} 365 + '@rollup/rollup-darwin-x64@4.47.1': 366 + resolution: {integrity: sha512-XuJRPTnMk1lwsSnS3vYyVMu4x/+WIw1MMSiqj5C4j3QOWsMzbJEK90zG+SWV1h0B1ABGCQ0UZUjti+TQK35uHQ==} 492 367 cpu: [x64] 493 368 os: [darwin] 494 369 495 - '@rollup/rollup-freebsd-arm64@4.45.3': 496 - resolution: {integrity: sha512-ZOvBq+5nL0yrZIEo1eq6r7MPvkJ8kC1XATS/yHvcq3WbDNKNKBQ1uIF4hicyzDMoJt72G+sn1nKsFXpifZyRDA==} 370 + '@rollup/rollup-freebsd-arm64@4.47.1': 371 + resolution: {integrity: sha512-79BAm8Ag/tmJ5asCqgOXsb3WY28Rdd5Lxj8ONiQzWzy9LvWORd5qVuOnjlqiWWZJw+dWewEktZb5yiM1DLLaHw==} 497 372 cpu: [arm64] 498 373 os: [freebsd] 499 374 500 - '@rollup/rollup-freebsd-x64@4.45.3': 501 - resolution: {integrity: sha512-AYvGR07wecEnyYSovyJ71pTOulbNvsrpRpK6i/IM1b0UGX1vFx51afYuPYPxnvE9aCl5xPnhQicEvdIMxClRgQ==} 375 + '@rollup/rollup-freebsd-x64@4.47.1': 376 + resolution: {integrity: sha512-OQ2/ZDGzdOOlyfqBiip0ZX/jVFekzYrGtUsqAfLDbWy0jh1PUU18+jYp8UMpqhly5ltEqotc2miLngf9FPSWIA==} 502 377 cpu: [x64] 503 378 os: [freebsd] 504 379 505 - '@rollup/rollup-linux-arm-gnueabihf@4.45.3': 506 - resolution: {integrity: sha512-Yx8Cp38tfRRToVLuIWzBHV25/QPzpUreOPIiUuNV7KahNPurYg2pYQ4l7aYnvpvklO1riX4643bXLvDsYSBIrA==} 380 + '@rollup/rollup-linux-arm-gnueabihf@4.47.1': 381 + resolution: {integrity: sha512-HZZBXJL1udxlCVvoVadstgiU26seKkHbbAMLg7680gAcMnRNP9SAwTMVet02ANA94kXEI2VhBnXs4e5nf7KG2A==} 507 382 cpu: [arm] 508 383 os: [linux] 509 384 510 - '@rollup/rollup-linux-arm-musleabihf@4.45.3': 511 - resolution: {integrity: sha512-4dIYRNxlXGDKnO6qgcda6LxnObPO6r1OBU9HG8F9pAnHHLtfbiOqCzDvkeHknx+5mfFVH4tWOl+h+cHylwsPWA==} 385 + '@rollup/rollup-linux-arm-musleabihf@4.47.1': 386 + resolution: {integrity: sha512-sZ5p2I9UA7T950JmuZ3pgdKA6+RTBr+0FpK427ExW0t7n+QwYOcmDTK/aRlzoBrWyTpJNlS3kacgSlSTUg6P/Q==} 512 387 cpu: [arm] 513 388 os: [linux] 514 389 515 - '@rollup/rollup-linux-arm64-gnu@4.45.3': 516 - resolution: {integrity: sha512-M6uVlWKmhLN7LguLDu6396K1W5IBlAaRonjlHQgc3s4dOGceu0FeBuvbXiUPYvup/6b5Ln7IEX7XNm68DN4vrg==} 390 + '@rollup/rollup-linux-arm64-gnu@4.47.1': 391 + resolution: {integrity: sha512-3hBFoqPyU89Dyf1mQRXCdpc6qC6At3LV6jbbIOZd72jcx7xNk3aAp+EjzAtN6sDlmHFzsDJN5yeUySvorWeRXA==} 517 392 cpu: [arm64] 518 393 os: [linux] 519 394 520 - '@rollup/rollup-linux-arm64-musl@4.45.3': 521 - resolution: {integrity: sha512-emaYiOTQJUd6fC9a6jcw9zIWtzaUiuBC+vomggaM4In2iOra/lA6IMHlqZqQZr08NYXrOPMVigreLMeSAwv3Uw==} 395 + '@rollup/rollup-linux-arm64-musl@4.47.1': 396 + resolution: {integrity: sha512-49J4FnMHfGodJWPw73Ve+/hsPjZgcXQGkmqBGZFvltzBKRS+cvMiWNLadOMXKGnYRhs1ToTGM0sItKISoSGUNA==} 522 397 cpu: [arm64] 523 398 os: [linux] 524 399 525 - '@rollup/rollup-linux-loongarch64-gnu@4.45.3': 526 - resolution: {integrity: sha512-3P77T5AQ4UfVRJSrTKLiUZDJ6XsxeP80027bp6mOFh8sevSD038mYuIYFiUtrSJxxgFb+NgRJFF9oIa0rlUsmg==} 400 + '@rollup/rollup-linux-loongarch64-gnu@4.47.1': 401 + resolution: {integrity: sha512-4yYU8p7AneEpQkRX03pbpLmE21z5JNys16F1BZBZg5fP9rIlb0TkeQjn5du5w4agConCCEoYIG57sNxjryHEGg==} 527 402 cpu: [loong64] 528 403 os: [linux] 529 404 530 - '@rollup/rollup-linux-ppc64-gnu@4.45.3': 531 - resolution: {integrity: sha512-/VPH3ZVeSlmCBPhZdx/+4dMXDjaGMhDsWOBo9EwSkGbw2+OAqaslL53Ao2OqCxR0GgYjmmssJ+OoG+qYGE7IBg==} 405 + '@rollup/rollup-linux-ppc64-gnu@4.47.1': 406 + resolution: {integrity: sha512-fAiq+J28l2YMWgC39jz/zPi2jqc0y3GSRo1yyxlBHt6UN0yYgnegHSRPa3pnHS5amT/efXQrm0ug5+aNEu9UuQ==} 532 407 cpu: [ppc64] 533 408 os: [linux] 534 409 535 - '@rollup/rollup-linux-riscv64-gnu@4.45.3': 536 - resolution: {integrity: sha512-Hs5if0PjROl1MGMmZX3xMAIfqcGxQE2SJWUr/CpDQsOQn43Wq4IvXXxUMWtiY/BrzdqCCJlRgJ5DKxzS3qWkCw==} 410 + '@rollup/rollup-linux-riscv64-gnu@4.47.1': 411 + resolution: {integrity: sha512-daoT0PMENNdjVYYU9xec30Y2prb1AbEIbb64sqkcQcSaR0zYuKkoPuhIztfxuqN82KYCKKrj+tQe4Gi7OSm1ow==} 537 412 cpu: [riscv64] 538 413 os: [linux] 539 414 540 - '@rollup/rollup-linux-riscv64-musl@4.45.3': 541 - resolution: {integrity: sha512-Qm0WOwh3Lk388+HJFl1ILGbd2iOoQf6yl4fdGqOjBzEA+5JYbLcwd+sGsZjs5pkt8Cr/1G42EiXmlRp9ZeTvFA==} 415 + '@rollup/rollup-linux-riscv64-musl@4.47.1': 416 + resolution: {integrity: sha512-JNyXaAhWtdzfXu5pUcHAuNwGQKevR+6z/poYQKVW+pLaYOj9G1meYc57/1Xv2u4uTxfu9qEWmNTjv/H/EpAisw==} 542 417 cpu: [riscv64] 543 418 os: [linux] 544 419 545 - '@rollup/rollup-linux-s390x-gnu@4.45.3': 546 - resolution: {integrity: sha512-VJdknTaYw+TqXzlh9c7vaVMh/fV2sU8Khfk4a9vAdYXJawpjf6z3U1k7vDWx2IQ9ZOPoOPxgVpDfYOYhxD7QUA==} 420 + '@rollup/rollup-linux-s390x-gnu@4.47.1': 421 + resolution: {integrity: sha512-U/CHbqKSwEQyZXjCpY43/GLYcTVKEXeRHw0rMBJP7fP3x6WpYG4LTJWR3ic6TeYKX6ZK7mrhltP4ppolyVhLVQ==} 547 422 cpu: [s390x] 548 423 os: [linux] 549 424 550 - '@rollup/rollup-linux-x64-gnu@4.45.3': 551 - resolution: {integrity: sha512-SUDXU5YabLAMl86FpupSQQEWzVG8X0HM+Q/famnJusbPiUgQnTGuSxtxg4UAYgv1ZmRV1nioYYXsgtSokU/7+Q==} 425 + '@rollup/rollup-linux-x64-gnu@4.47.1': 426 + resolution: {integrity: sha512-uTLEakjxOTElfeZIGWkC34u2auLHB1AYS6wBjPGI00bWdxdLcCzK5awjs25YXpqB9lS8S0vbO0t9ZcBeNibA7g==} 552 427 cpu: [x64] 553 428 os: [linux] 554 429 555 - '@rollup/rollup-linux-x64-musl@4.45.3': 556 - resolution: {integrity: sha512-ezmqknOUFgZMN6wW+Avlo4sXF3Frswd+ncrwMz4duyZ5Eqd+dAYgJ+A1MY+12LNZ7XDhCiijJceueYvtnzdviw==} 430 + '@rollup/rollup-linux-x64-musl@4.47.1': 431 + resolution: {integrity: sha512-Ft+d/9DXs30BK7CHCTX11FtQGHUdpNDLJW0HHLign4lgMgBcPFN3NkdIXhC5r9iwsMwYreBBc4Rho5ieOmKNVQ==} 557 432 cpu: [x64] 558 433 os: [linux] 559 434 560 - '@rollup/rollup-win32-arm64-msvc@4.45.3': 561 - resolution: {integrity: sha512-1YfXoUEE++gIW66zNB9Twd0Ua5xCXpfYppFUxVT/Io5ZT3fO6Se+C/Jvmh3usaIHHyi53t3kpfjydO2GAy5eBA==} 435 + '@rollup/rollup-win32-arm64-msvc@4.47.1': 436 + resolution: {integrity: sha512-N9X5WqGYzZnjGAFsKSfYFtAShYjwOmFJoWbLg3dYixZOZqU7hdMq+/xyS14zKLhFhZDhP9VfkzQnsdk0ZDS9IA==} 562 437 cpu: [arm64] 563 438 os: [win32] 564 439 565 - '@rollup/rollup-win32-ia32-msvc@4.45.3': 566 - resolution: {integrity: sha512-Iok2YA3PvC163rVZf2Zy81A0g88IUcSPeU5pOilcbICXre2EP1mxn1Db/l09Z/SK1vdSLtpJXAnwGuMOyf5O9g==} 440 + '@rollup/rollup-win32-ia32-msvc@4.47.1': 441 + resolution: {integrity: sha512-O+KcfeCORZADEY8oQJk4HK8wtEOCRE4MdOkb8qGZQNun3jzmj2nmhV/B/ZaaZOkPmJyvm/gW9n0gsB4eRa1eiQ==} 567 442 cpu: [ia32] 568 443 os: [win32] 569 444 570 - '@rollup/rollup-win32-x64-msvc@4.45.3': 571 - resolution: {integrity: sha512-HwHCH5GQTOeGYP5wBEBXFVhfQecwRl24Rugoqhh8YwGarsU09bHhOKuqlyW4ZolZCan3eTUax7UJbGSmKSM51A==} 445 + '@rollup/rollup-win32-x64-msvc@4.47.1': 446 + resolution: {integrity: sha512-CpKnYa8eHthJa3c+C38v/E+/KZyF1Jdh2Cz3DyKZqEWYgrM1IHFArXNWvBLPQCKUEsAqqKX27tTqVEFbDNUcOA==} 572 447 cpu: [x64] 573 448 os: [win32] 574 449 575 - '@shikijs/core@3.8.1': 576 - resolution: {integrity: sha512-uTSXzUBQ/IgFcUa6gmGShCHr4tMdR3pxUiiWKDm8pd42UKJdYhkAYsAmHX5mTwybQ5VyGDgTjW4qKSsRvGSang==} 577 - 578 - '@shikijs/engine-javascript@3.8.1': 579 - resolution: {integrity: sha512-rZRp3BM1llrHkuBPAdYAzjlF7OqlM0rm/7EWASeCcY7cRYZIrOnGIHE9qsLz5TCjGefxBFnwgIECzBs2vmOyKA==} 580 - 581 - '@shikijs/engine-oniguruma@3.8.1': 582 - resolution: {integrity: sha512-KGQJZHlNY7c656qPFEQpIoqOuC4LrxjyNndRdzk5WKB/Ie87+NJCF1xo9KkOUxwxylk7rT6nhlZyTGTC4fCe1g==} 583 - 584 - '@shikijs/langs@3.8.1': 585 - resolution: {integrity: sha512-TjOFg2Wp1w07oKnXjs0AUMb4kJvujML+fJ1C5cmEj45lhjbUXtziT1x2bPQb9Db6kmPhkG5NI2tgYW1/DzhUuQ==} 586 - 587 - '@shikijs/themes@3.8.1': 588 - resolution: {integrity: sha512-Vu3t3BBLifc0GB0UPg2Pox1naTemrrvyZv2lkiSw3QayVV60me1ujFQwPZGgUTmwXl1yhCPW8Lieesm0CYruLQ==} 589 - 590 - '@shikijs/types@3.8.1': 591 - resolution: {integrity: sha512-5C39Q8/8r1I26suLh+5TPk1DTrbY/kn3IdWA5HdizR0FhlhD05zx5nKCqhzSfDHH3p4S0ZefxWd77DLV+8FhGg==} 592 - 593 - '@shikijs/vscode-textmate@10.0.2': 594 - resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} 595 - 596 - '@swc/helpers@0.5.17': 597 - resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} 598 - 599 - '@types/debug@4.1.12': 600 - resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} 601 - 602 - '@types/estree@1.0.8': 603 - resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} 604 - 605 - '@types/fontkit@2.0.8': 606 - resolution: {integrity: sha512-wN+8bYxIpJf+5oZdrdtaX04qUuWHcKxcDEgRS9Qm9ZClSHjzEn13SxUC+5eRM+4yXIeTYk8mTzLAWGF64847ew==} 607 - 608 - '@types/hast@3.0.4': 609 - resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} 610 - 611 - '@types/json-schema@7.0.15': 612 - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 613 - 614 - '@types/mdast@4.0.4': 615 - resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} 616 - 617 - '@types/ms@2.1.0': 618 - resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} 619 - 620 - '@types/nlcst@2.0.3': 621 - resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==} 622 - 623 - '@types/node@24.1.0': 624 - resolution: {integrity: sha512-ut5FthK5moxFKH2T1CUOC6ctR67rQRvvHdFLCD2Ql6KXmMuCrjsSsRI9UsLCm9M18BMwClv4pn327UvB7eeO1w==} 625 - 626 - '@types/unist@3.0.3': 627 - resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} 628 - 629 - '@typescript-eslint/eslint-plugin@8.38.0': 630 - resolution: {integrity: sha512-CPoznzpuAnIOl4nhj4tRr4gIPj5AfKgkiJmGQDaq+fQnRJTYlcBjbX3wbciGmpoPf8DREufuPRe1tNMZnGdanA==} 631 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 450 + '@solid-devtools/debugger@0.28.1': 451 + resolution: {integrity: sha512-6qIUI6VYkXoRnL8oF5bvh2KgH71qlJ18hNw/mwSyY6v48eb80ZR48/5PDXufUa3q+MBSuYa1uqTMwLewpay9eg==} 632 452 peerDependencies: 633 - '@typescript-eslint/parser': ^8.38.0 634 - eslint: ^8.57.0 || ^9.0.0 635 - typescript: '>=4.8.4 <5.9.0' 453 + solid-js: ^1.9.0 636 454 637 - '@typescript-eslint/parser@8.38.0': 638 - resolution: {integrity: sha512-Zhy8HCvBUEfBECzIl1PKqF4p11+d0aUJS1GeUiuqK9WmOug8YCmC4h4bjyBvMyAMI9sbRczmrYL5lKg/YMbrcQ==} 639 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 455 + '@solid-devtools/shared@0.20.0': 456 + resolution: {integrity: sha512-o5TACmUOQsxpzpOKCjbQqGk8wL8PMi+frXG9WNu4Lh3PQVUB6hs95Kl/S8xc++zwcMguUKZJn8h5URUiMOca6Q==} 640 457 peerDependencies: 641 - eslint: ^8.57.0 || ^9.0.0 642 - typescript: '>=4.8.4 <5.9.0' 458 + solid-js: ^1.9.0 643 459 644 - '@typescript-eslint/project-service@8.38.0': 645 - resolution: {integrity: sha512-dbK7Jvqcb8c9QfH01YB6pORpqX1mn5gDZc9n63Ak/+jD67oWXn3Gs0M6vddAN+eDXBCS5EmNWzbSxsn9SzFWWg==} 646 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 460 + '@solid-primitives/bounds@0.1.3': 461 + resolution: {integrity: sha512-UbiyKMdSPmtijcEDnYLQL3zzaejpwWDAJJ4Gt5P0hgVs6A72piov0GyNw7V2SroH7NZFwxlYS22YmOr8A5xc1Q==} 647 462 peerDependencies: 648 - typescript: '>=4.8.4 <5.9.0' 649 - 650 - '@typescript-eslint/scope-manager@8.38.0': 651 - resolution: {integrity: sha512-WJw3AVlFFcdT9Ri1xs/lg8LwDqgekWXWhH3iAF+1ZM+QPd7oxQ6jvtW/JPwzAScxitILUIFs0/AnQ/UWHzbATQ==} 652 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 463 + solid-js: ^1.6.12 653 464 654 - '@typescript-eslint/tsconfig-utils@8.38.0': 655 - resolution: {integrity: sha512-Lum9RtSE3EroKk/bYns+sPOodqb2Fv50XOl/gMviMKNvanETUuUcC9ObRbzrJ4VSd2JalPqgSAavwrPiPvnAiQ==} 656 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 465 + '@solid-primitives/event-listener@2.4.3': 466 + resolution: {integrity: sha512-h4VqkYFv6Gf+L7SQj+Y6puigL/5DIi7x5q07VZET7AWcS+9/G3WfIE9WheniHWJs51OEkRB43w6lDys5YeFceg==} 657 467 peerDependencies: 658 - typescript: '>=4.8.4 <5.9.0' 468 + solid-js: ^1.6.12 659 469 660 - '@typescript-eslint/type-utils@8.38.0': 661 - resolution: {integrity: sha512-c7jAvGEZVf0ao2z+nnz8BUaHZD09Agbh+DY7qvBQqLiz8uJzRgVPj5YvOh8I8uEiH8oIUGIfHzMwUcGVco/SJg==} 662 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 470 + '@solid-primitives/keyboard@1.3.3': 471 + resolution: {integrity: sha512-9dQHTTgLBqyAI7aavtO+HnpTVJgWQA1ghBSrmLtMu1SMxLPDuLfuNr+Tk5udb4AL4Ojg7h9JrKOGEEDqsJXWJA==} 663 472 peerDependencies: 664 - eslint: ^8.57.0 || ^9.0.0 665 - typescript: '>=4.8.4 <5.9.0' 473 + solid-js: ^1.6.12 666 474 667 - '@typescript-eslint/types@8.38.0': 668 - resolution: {integrity: sha512-wzkUfX3plUqij4YwWaJyqhiPE5UCRVlFpKn1oCRn2O1bJ592XxWJj8ROQ3JD5MYXLORW84063z3tZTb/cs4Tyw==} 669 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 670 - 671 - '@typescript-eslint/typescript-estree@8.38.0': 672 - resolution: {integrity: sha512-fooELKcAKzxux6fA6pxOflpNS0jc+nOQEEOipXFNjSlBS6fqrJOVY/whSn70SScHrcJ2LDsxWrneFoWYSVfqhQ==} 673 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 475 + '@solid-primitives/media@2.3.3': 476 + resolution: {integrity: sha512-hQ4hLOGvfbugQi5Eu1BFWAIJGIAzztq9x0h02xgBGl2l0Jaa3h7tg6bz5tV1NSuNYVGio4rPoa7zVQQLkkx9dA==} 674 477 peerDependencies: 675 - typescript: '>=4.8.4 <5.9.0' 478 + solid-js: ^1.6.12 676 479 677 - '@typescript-eslint/utils@8.38.0': 678 - resolution: {integrity: sha512-hHcMA86Hgt+ijJlrD8fX0j1j8w4C92zue/8LOPAFioIno+W0+L7KqE8QZKCcPGc/92Vs9x36w/4MPTJhqXdyvg==} 679 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 480 + '@solid-primitives/refs@1.1.2': 481 + resolution: {integrity: sha512-K7tf2thy7L+YJjdqXspXOg5xvNEOH8tgEWsp0+1mQk3obHBRD6hEjYZk7p7FlJphSZImS35je3UfmWuD7MhDfg==} 680 482 peerDependencies: 681 - eslint: ^8.57.0 || ^9.0.0 682 - typescript: '>=4.8.4 <5.9.0' 483 + solid-js: ^1.6.12 683 484 684 - '@typescript-eslint/visitor-keys@8.38.0': 685 - resolution: {integrity: sha512-pWrTcoFNWuwHlA9CvlfSsGWs14JxfN1TH25zM5L7o0pRLhsoZkDnTsXfQRJBEWJoV5DL0jf+Z+sxiud+K0mq1g==} 686 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 485 + '@solid-primitives/resize-observer@2.1.3': 486 + resolution: {integrity: sha512-zBLje5E06TgOg93S7rGPldmhDnouNGhvfZVKOp+oG2XU8snA+GoCSSCz1M+jpNAg5Ek2EakU5UVQqL152WmdXQ==} 487 + peerDependencies: 488 + solid-js: ^1.6.12 687 489 688 - '@ungap/structured-clone@1.3.0': 689 - resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} 490 + '@solid-primitives/rootless@1.5.2': 491 + resolution: {integrity: sha512-9HULb0QAzL2r47CCad0M+NKFtQ+LrGGNHZfteX/ThdGvKIg2o2GYhBooZubTCd/RTu2l2+Nw4s+dEfiDGvdrrQ==} 492 + peerDependencies: 493 + solid-js: ^1.6.12 690 494 691 - acorn-jsx@5.3.2: 692 - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 495 + '@solid-primitives/scheduled@1.5.2': 496 + resolution: {integrity: sha512-/j2igE0xyNaHhj6kMfcUQn5rAVSTLbAX+CDEBm25hSNBmNiHLu2lM7Usj2kJJ5j36D67bE8wR1hBNA8hjtvsQA==} 693 497 peerDependencies: 694 - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 498 + solid-js: ^1.6.12 695 499 696 - acorn@8.15.0: 697 - resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} 698 - engines: {node: '>=0.4.0'} 699 - hasBin: true 500 + '@solid-primitives/static-store@0.1.2': 501 + resolution: {integrity: sha512-ReK+5O38lJ7fT+L6mUFvUr6igFwHBESZF+2Ug842s7fvlVeBdIVEdTCErygff6w7uR6+jrr7J8jQo+cYrEq4Iw==} 502 + peerDependencies: 503 + solid-js: ^1.6.12 700 504 701 - ajv@6.12.6: 702 - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 505 + '@solid-primitives/styles@0.1.2': 506 + resolution: {integrity: sha512-7iX5K+J5b1PRrbgw3Ki92uvU2LgQ0Kd/QMsrAZxDg5dpUBwMyTijZkA3bbs1ikZsT1oQhS41bTyKbjrXeU0Awg==} 507 + peerDependencies: 508 + solid-js: ^1.6.12 703 509 704 - ansi-align@3.0.1: 705 - resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} 510 + '@solid-primitives/utils@6.3.2': 511 + resolution: {integrity: sha512-hZ/M/qr25QOCcwDPOHtGjxTD8w2mNyVAYvcfgwzBHq2RwNqHNdDNsMZYap20+ruRwW4A3Cdkczyoz0TSxLCAPQ==} 512 + peerDependencies: 513 + solid-js: ^1.6.12 706 514 707 - ansi-regex@5.0.1: 708 - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 709 - engines: {node: '>=8'} 515 + '@solidjs/router@0.15.3': 516 + resolution: {integrity: sha512-iEbW8UKok2Oio7o6Y4VTzLj+KFCmQPGEpm1fS3xixwFBdclFVBvaQVeibl1jys4cujfAK5Kn6+uG2uBm3lxOMw==} 517 + peerDependencies: 518 + solid-js: ^1.8.6 710 519 711 - ansi-regex@6.1.0: 712 - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} 713 - engines: {node: '>=12'} 520 + '@types/babel__core@7.20.5': 521 + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} 714 522 715 - ansi-styles@4.3.0: 716 - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 717 - engines: {node: '>=8'} 523 + '@types/babel__generator@7.27.0': 524 + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} 718 525 719 - ansi-styles@6.2.1: 720 - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 721 - engines: {node: '>=12'} 526 + '@types/babel__template@7.4.4': 527 + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} 722 528 723 - anymatch@3.1.3: 724 - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 725 - engines: {node: '>= 8'} 529 + '@types/babel__traverse@7.28.0': 530 + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} 726 531 727 - argparse@2.0.1: 728 - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 729 - 730 - aria-query@5.3.2: 731 - resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} 732 - engines: {node: '>= 0.4'} 532 + '@types/estree@1.0.8': 533 + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} 733 534 734 - array-iterate@2.0.1: 735 - resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} 736 - 737 - astro-eslint-parser@1.2.2: 738 - resolution: {integrity: sha512-JepyLROIad6f44uyqMF6HKE2QbunNzp3mYKRcPoDGt0QkxXmH222FAFC64WTyQu2Kg8NNEXHTN/sWuUId9sSxw==} 739 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 740 - 741 - astro@5.12.3: 742 - resolution: {integrity: sha512-fU1hNPMkccm+FuonGsY5DFkC2QyuLCju++8L2ubzBtYBDBf6bmfgmVM7A2dK+Hl+ZJCUNgepsClhBpczj+2LRw==} 743 - engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} 744 - hasBin: true 535 + '@types/node@24.3.0': 536 + resolution: {integrity: sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==} 745 537 746 - astrojs-compiler-sync@1.1.1: 747 - resolution: {integrity: sha512-0mKvB9sDQRIZPsEJadw6OaFbGJ92cJPPR++ICca9XEyiUAZqgVuk25jNmzHPT0KF80rI94trSZrUR5iHFXGGOQ==} 748 - engines: {node: ^18.18.0 || >=20.9.0} 538 + babel-plugin-jsx-dom-expressions@0.40.1: 539 + resolution: {integrity: sha512-b4iHuirqK7RgaMzB2Lsl7MqrlDgQtVRSSazyrmx7wB3T759ggGjod5Rkok5MfHjQXhR7tRPmdwoeGPqBnW2KfA==} 749 540 peerDependencies: 750 - '@astrojs/compiler': '>=0.27.0' 751 - 752 - axobject-query@4.1.0: 753 - resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} 754 - engines: {node: '>= 0.4'} 755 - 756 - bail@2.0.2: 757 - resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} 541 + '@babel/core': ^7.20.12 758 542 759 - balanced-match@1.0.2: 760 - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 761 - 762 - base-64@1.0.0: 763 - resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==} 543 + babel-preset-solid@1.9.9: 544 + resolution: {integrity: sha512-pCnxWrciluXCeli/dj5PIEHgbNzim3evtTn12snjqqg8QZWJNMjH1AWIp4iG/tbVjqQ72aBEymMSagvmgxubXw==} 545 + peerDependencies: 546 + '@babel/core': ^7.0.0 547 + solid-js: ^1.9.8 548 + peerDependenciesMeta: 549 + solid-js: 550 + optional: true 764 551 765 - base64-js@1.5.1: 766 - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} 552 + browserslist@4.25.3: 553 + resolution: {integrity: sha512-cDGv1kkDI4/0e5yON9yM5G/0A5u8sf5TnmdX5C9qHzI9PPu++sQ9zjm1k9NiOrf3riY4OkK0zSGqfvJyJsgCBQ==} 554 + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 555 + hasBin: true 767 556 768 - blob-to-buffer@1.2.9: 769 - resolution: {integrity: sha512-BF033y5fN6OCofD3vgHmNtwZWRcq9NLyyxyILx9hfMy1sXYy4ojFl765hJ2lP0YaN2fuxPaLO2Vzzoxy0FLFFA==} 557 + caniuse-lite@1.0.30001737: 558 + resolution: {integrity: sha512-BiloLiXtQNrY5UyF0+1nSJLXUENuhka2pzy2Fx5pGxqavdrxSCW4U6Pn/PoG3Efspi2frRbHpBV2XsrPE6EDlw==} 770 559 771 - boxen@8.0.1: 772 - resolution: {integrity: sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==} 773 - engines: {node: '>=18'} 560 + convert-source-map@2.0.0: 561 + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} 774 562 775 - brace-expansion@1.1.12: 776 - resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} 777 - 778 - brace-expansion@2.0.2: 779 - resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} 780 - 781 - braces@3.0.3: 782 - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 783 - engines: {node: '>=8'} 784 - 785 - brotli@1.3.3: 786 - resolution: {integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==} 787 - 788 - callsites@3.1.0: 789 - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 790 - engines: {node: '>=6'} 791 - 792 - camelcase@8.0.0: 793 - resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} 794 - engines: {node: '>=16'} 795 - 796 - ccount@2.0.1: 797 - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} 798 - 799 - chalk@4.1.2: 800 - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 801 - engines: {node: '>=10'} 802 - 803 - chalk@5.4.1: 804 - resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} 805 - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} 806 - 807 - character-entities-html4@2.1.0: 808 - resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} 809 - 810 - character-entities-legacy@3.0.0: 811 - resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} 812 - 813 - character-entities@2.0.2: 814 - resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} 815 - 816 - chokidar@4.0.3: 817 - resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} 818 - engines: {node: '>= 14.16.0'} 819 - 820 - ci-info@4.3.0: 821 - resolution: {integrity: sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==} 822 - engines: {node: '>=8'} 823 - 824 - cli-boxes@3.0.0: 825 - resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} 826 - engines: {node: '>=10'} 827 - 828 - clone@2.1.2: 829 - resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} 830 - engines: {node: '>=0.8'} 831 - 832 - clsx@2.1.1: 833 - resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} 834 - engines: {node: '>=6'} 835 - 836 - color-convert@2.0.1: 837 - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 838 - engines: {node: '>=7.0.0'} 839 - 840 - color-name@1.1.4: 841 - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 842 - 843 - color-string@1.9.1: 844 - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} 845 - 846 - color@4.2.3: 847 - resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} 848 - engines: {node: '>=12.5.0'} 849 - 850 - comma-separated-tokens@2.0.3: 851 - resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} 852 - 853 - common-ancestor-path@1.0.1: 854 - resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} 855 - 856 - concat-map@0.0.1: 857 - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 858 - 859 - cookie-es@1.2.2: 860 - resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} 861 - 862 - cookie@1.0.2: 863 - resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} 864 - engines: {node: '>=18'} 865 - 866 - cross-fetch@3.2.0: 867 - resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==} 868 - 869 - cross-spawn@7.0.6: 870 - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 871 - engines: {node: '>= 8'} 872 - 873 - crossws@0.3.5: 874 - resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==} 875 - 876 - css-tree@3.1.0: 877 - resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} 878 - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} 879 - 880 - cssesc@3.0.0: 881 - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 882 - engines: {node: '>=4'} 883 - hasBin: true 563 + csstype@3.1.3: 564 + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} 884 565 885 566 debug@4.4.1: 886 567 resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} ··· 891 572 supports-color: 892 573 optional: true 893 574 894 - decode-named-character-reference@1.2.0: 895 - resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==} 896 - 897 - deep-is@0.1.4: 898 - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 899 - 900 - defu@6.1.4: 901 - resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} 902 - 903 - dequal@2.0.3: 904 - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} 905 - engines: {node: '>=6'} 906 - 907 - destr@2.0.5: 908 - resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} 909 - 910 - detect-libc@2.0.4: 911 - resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} 912 - engines: {node: '>=8'} 913 - 914 - deterministic-object-hash@2.0.2: 915 - resolution: {integrity: sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==} 916 - engines: {node: '>=18'} 917 - 918 - devalue@5.1.1: 919 - resolution: {integrity: sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==} 920 - 921 - devlop@1.1.0: 922 - resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} 923 - 924 - dfa@1.2.0: 925 - resolution: {integrity: sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==} 926 - 927 - diff@5.2.0: 928 - resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} 929 - engines: {node: '>=0.3.1'} 930 - 931 - dlv@1.1.3: 932 - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 933 - 934 - dset@3.1.4: 935 - resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==} 936 - engines: {node: '>=4'} 937 - 938 - emoji-regex@10.4.0: 939 - resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} 940 - 941 - emoji-regex@8.0.0: 942 - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 575 + electron-to-chromium@1.5.208: 576 + resolution: {integrity: sha512-ozZyibehoe7tOhNaf16lKmljVf+3npZcJIEbJRVftVsmAg5TeA1mGS9dVCZzOwr2xT7xK15V0p7+GZqSPgkuPg==} 943 577 944 578 entities@6.0.1: 945 579 resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} 946 580 engines: {node: '>=0.12'} 947 581 948 - es-module-lexer@1.7.0: 949 - resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} 950 - 951 - esbuild@0.25.8: 952 - resolution: {integrity: sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==} 582 + esbuild@0.25.9: 583 + resolution: {integrity: sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==} 953 584 engines: {node: '>=18'} 954 585 hasBin: true 955 586 956 - escape-string-regexp@4.0.0: 957 - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 958 - engines: {node: '>=10'} 959 - 960 - escape-string-regexp@5.0.0: 961 - resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} 962 - engines: {node: '>=12'} 963 - 964 - eslint-compat-utils@0.6.5: 965 - resolution: {integrity: sha512-vAUHYzue4YAa2hNACjB8HvUQj5yehAZgiClyFVVom9cP8z5NSFq3PwB/TtJslN2zAMgRX6FCFCjYBbQh71g5RQ==} 966 - engines: {node: '>=12'} 967 - peerDependencies: 968 - eslint: '>=6.0.0' 969 - 970 - eslint-config-prettier@10.1.8: 971 - resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==} 972 - hasBin: true 973 - peerDependencies: 974 - eslint: '>=7.0.0' 975 - 976 - eslint-plugin-astro@1.3.1: 977 - resolution: {integrity: sha512-2XaLCMQm8htW1UvJvy1Zcmg8l0ziskitiUfJTn/w1Mk7r4Mxj0fZeNpN6UTNrm64XBIXSa5h8UCGrg8mdu47+g==} 978 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 979 - peerDependencies: 980 - eslint: '>=8.57.0' 981 - 982 - eslint-plugin-prettier@5.5.3: 983 - resolution: {integrity: sha512-NAdMYww51ehKfDyDhv59/eIItUVzU0Io9H2E8nHNGKEeeqlnci+1gCvrHib6EmZdf6GxF+LCV5K7UC65Ezvw7w==} 984 - engines: {node: ^14.18.0 || >=16.0.0} 985 - peerDependencies: 986 - '@types/eslint': '>=8.0.0' 987 - eslint: '>=8.0.0' 988 - eslint-config-prettier: '>= 7.0.0 <10.0.0 || >=10.1.0' 989 - prettier: '>=3.0.0' 990 - peerDependenciesMeta: 991 - '@types/eslint': 992 - optional: true 993 - eslint-config-prettier: 994 - optional: true 995 - 996 - eslint-scope@8.4.0: 997 - resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} 998 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 999 - 1000 - eslint-visitor-keys@3.4.3: 1001 - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 1002 - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1003 - 1004 - eslint-visitor-keys@4.2.1: 1005 - resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} 1006 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1007 - 1008 - eslint@9.32.0: 1009 - resolution: {integrity: sha512-LSehfdpgMeWcTZkWZVIJl+tkZ2nuSkyyB9C27MZqFWXuph7DvaowgcTvKqxvpLW1JZIk8PN7hFY3Rj9LQ7m7lg==} 1010 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1011 - hasBin: true 1012 - peerDependencies: 1013 - jiti: '*' 1014 - peerDependenciesMeta: 1015 - jiti: 1016 - optional: true 587 + escalade@3.2.0: 588 + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 589 + engines: {node: '>=6'} 1017 590 1018 591 esm-env@1.2.2: 1019 592 resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==} 1020 593 1021 - espree@10.4.0: 1022 - resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} 1023 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1024 - 1025 - esquery@1.6.0: 1026 - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 1027 - engines: {node: '>=0.10'} 1028 - 1029 - esrecurse@4.3.0: 1030 - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1031 - engines: {node: '>=4.0'} 1032 - 1033 - estraverse@5.3.0: 1034 - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1035 - engines: {node: '>=4.0'} 1036 - 1037 - estree-walker@2.0.2: 1038 - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 1039 - 1040 - estree-walker@3.0.3: 1041 - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 1042 - 1043 - esutils@2.0.3: 1044 - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1045 - engines: {node: '>=0.10.0'} 1046 - 1047 - eventemitter3@5.0.1: 1048 - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} 1049 - 1050 - extend@3.0.2: 1051 - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} 1052 - 1053 - fast-deep-equal@3.1.3: 1054 - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1055 - 1056 - fast-diff@1.3.0: 1057 - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} 1058 - 1059 - fast-glob@3.3.3: 1060 - resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} 1061 - engines: {node: '>=8.6.0'} 1062 - 1063 - fast-json-stable-stringify@2.1.0: 1064 - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1065 - 1066 - fast-levenshtein@2.0.6: 1067 - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1068 - 1069 - fastq@1.19.1: 1070 - resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} 1071 - 1072 - fdir@6.4.6: 1073 - resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==} 594 + fdir@6.5.0: 595 + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} 596 + engines: {node: '>=12.0.0'} 1074 597 peerDependencies: 1075 598 picomatch: ^3 || ^4 1076 599 peerDependenciesMeta: 1077 600 picomatch: 1078 601 optional: true 1079 602 1080 - file-entry-cache@8.0.0: 1081 - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 1082 - engines: {node: '>=16.0.0'} 1083 - 1084 - fill-range@7.1.1: 1085 - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 1086 - engines: {node: '>=8'} 1087 - 1088 - find-up@5.0.0: 1089 - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1090 - engines: {node: '>=10'} 1091 - 1092 - flat-cache@4.0.1: 1093 - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 1094 - engines: {node: '>=16'} 1095 - 1096 - flatted@3.3.3: 1097 - resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} 1098 - 1099 - flattie@1.1.1: 1100 - resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} 1101 - engines: {node: '>=8'} 1102 - 1103 - fontace@0.3.0: 1104 - resolution: {integrity: sha512-czoqATrcnxgWb/nAkfyIrRp6Q8biYj7nGnL6zfhTcX+JKKpWHFBnb8uNMw/kZr7u++3Y3wYSYoZgHkCcsuBpBg==} 1105 - 1106 - fontkit@2.0.4: 1107 - resolution: {integrity: sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g==} 1108 - 1109 603 fsevents@2.3.3: 1110 604 resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 1111 605 engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1112 606 os: [darwin] 1113 607 1114 - get-east-asian-width@1.3.0: 1115 - resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} 1116 - engines: {node: '>=18'} 608 + gensync@1.0.0-beta.2: 609 + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 610 + engines: {node: '>=6.9.0'} 1117 611 1118 - github-slugger@2.0.0: 1119 - resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} 1120 - 1121 - glob-parent@5.1.2: 1122 - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1123 - engines: {node: '>= 6'} 612 + html-entities@2.3.3: 613 + resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} 1124 614 1125 - glob-parent@6.0.2: 1126 - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1127 - engines: {node: '>=10.13.0'} 615 + is-what@4.1.16: 616 + resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} 617 + engines: {node: '>=12.13'} 1128 618 1129 - globals@14.0.0: 1130 - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 1131 - engines: {node: '>=18'} 619 + js-tokens@4.0.0: 620 + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1132 621 1133 - globals@15.15.0: 1134 - resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} 1135 - engines: {node: '>=18'} 1136 - 1137 - globals@16.3.0: 1138 - resolution: {integrity: sha512-bqWEnJ1Nt3neqx2q5SFfGS8r/ahumIakg3HcwtNlrVlwXIeNumWn/c7Pn/wKzGhf6SaW6H6uWXLqC30STCMchQ==} 1139 - engines: {node: '>=18'} 1140 - 1141 - graphemer@1.4.0: 1142 - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 1143 - 1144 - h3@1.15.3: 1145 - resolution: {integrity: sha512-z6GknHqyX0h9aQaTx22VZDf6QyZn+0Nh+Ym8O/u0SGSkyF5cuTJYKlc8MkzW3Nzf9LE1ivcpmYC3FUGpywhuUQ==} 1146 - 1147 - has-flag@4.0.0: 1148 - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1149 - engines: {node: '>=8'} 1150 - 1151 - hast-util-from-html@2.0.3: 1152 - resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==} 1153 - 1154 - hast-util-from-parse5@8.0.3: 1155 - resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==} 1156 - 1157 - hast-util-is-element@3.0.0: 1158 - resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} 1159 - 1160 - hast-util-parse-selector@4.0.0: 1161 - resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} 1162 - 1163 - hast-util-raw@9.1.0: 1164 - resolution: {integrity: sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==} 1165 - 1166 - hast-util-to-html@9.0.5: 1167 - resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} 1168 - 1169 - hast-util-to-parse5@8.0.0: 1170 - resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} 1171 - 1172 - hast-util-to-text@4.0.2: 1173 - resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==} 1174 - 1175 - hast-util-whitespace@3.0.0: 1176 - resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} 1177 - 1178 - hastscript@9.0.1: 1179 - resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==} 1180 - 1181 - html-escaper@3.0.3: 1182 - resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} 1183 - 1184 - html-void-elements@3.0.0: 1185 - resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} 1186 - 1187 - http-cache-semantics@4.2.0: 1188 - resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} 1189 - 1190 - ignore@5.3.2: 1191 - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 1192 - engines: {node: '>= 4'} 1193 - 1194 - ignore@7.0.5: 1195 - resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} 1196 - engines: {node: '>= 4'} 1197 - 1198 - import-fresh@3.3.1: 1199 - resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} 622 + jsesc@3.1.0: 623 + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} 1200 624 engines: {node: '>=6'} 1201 - 1202 - import-meta-resolve@4.1.0: 1203 - resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} 1204 - 1205 - imurmurhash@0.1.4: 1206 - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1207 - engines: {node: '>=0.8.19'} 1208 - 1209 - iron-webcrypto@1.2.1: 1210 - resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} 1211 - 1212 - is-arrayish@0.3.2: 1213 - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} 1214 - 1215 - is-docker@3.0.0: 1216 - resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} 1217 - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1218 625 hasBin: true 1219 626 1220 - is-extglob@2.1.1: 1221 - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1222 - engines: {node: '>=0.10.0'} 1223 - 1224 - is-fullwidth-code-point@3.0.0: 1225 - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1226 - engines: {node: '>=8'} 1227 - 1228 - is-glob@4.0.3: 1229 - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1230 - engines: {node: '>=0.10.0'} 1231 - 1232 - is-inside-container@1.0.0: 1233 - resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} 1234 - engines: {node: '>=14.16'} 1235 - hasBin: true 1236 - 1237 - is-number@7.0.0: 1238 - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1239 - engines: {node: '>=0.12.0'} 1240 - 1241 - is-plain-obj@4.1.0: 1242 - resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} 1243 - engines: {node: '>=12'} 1244 - 1245 - is-wsl@3.1.0: 1246 - resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} 1247 - engines: {node: '>=16'} 1248 - 1249 - isexe@2.0.0: 1250 - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1251 - 1252 - jiti@2.5.1: 1253 - resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} 1254 - hasBin: true 1255 - 1256 - js-yaml@4.1.0: 1257 - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1258 - hasBin: true 1259 - 1260 - json-buffer@3.0.1: 1261 - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 1262 - 1263 - json-schema-traverse@0.4.1: 1264 - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1265 - 1266 - json-stable-stringify-without-jsonify@1.0.1: 1267 - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1268 - 1269 - keyv@4.5.4: 1270 - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 1271 - 1272 - kleur@3.0.3: 1273 - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} 627 + json5@2.2.3: 628 + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 1274 629 engines: {node: '>=6'} 1275 - 1276 - kleur@4.1.5: 1277 - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 1278 - engines: {node: '>=6'} 1279 - 1280 - levn@0.4.1: 1281 - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1282 - engines: {node: '>= 0.8.0'} 1283 - 1284 - locate-path@6.0.0: 1285 - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1286 - engines: {node: '>=10'} 1287 - 1288 - lodash.merge@4.6.2: 1289 - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1290 - 1291 - longest-streak@3.1.0: 1292 - resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} 1293 - 1294 - lru-cache@10.4.3: 1295 - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} 1296 - 1297 - magic-string@0.30.17: 1298 - resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} 1299 - 1300 - magicast@0.3.5: 1301 - resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} 1302 - 1303 - markdown-table@3.0.4: 1304 - resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} 1305 - 1306 - mdast-util-definitions@6.0.0: 1307 - resolution: {integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==} 1308 - 1309 - mdast-util-find-and-replace@3.0.2: 1310 - resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} 1311 - 1312 - mdast-util-from-markdown@2.0.2: 1313 - resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} 1314 - 1315 - mdast-util-gfm-autolink-literal@2.0.1: 1316 - resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} 1317 - 1318 - mdast-util-gfm-footnote@2.1.0: 1319 - resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} 1320 - 1321 - mdast-util-gfm-strikethrough@2.0.0: 1322 - resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} 1323 - 1324 - mdast-util-gfm-table@2.0.0: 1325 - resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} 1326 - 1327 - mdast-util-gfm-task-list-item@2.0.0: 1328 - resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} 1329 - 1330 - mdast-util-gfm@3.1.0: 1331 - resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} 1332 - 1333 - mdast-util-phrasing@4.1.0: 1334 - resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} 1335 - 1336 - mdast-util-to-hast@13.2.0: 1337 - resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} 1338 - 1339 - mdast-util-to-markdown@2.1.2: 1340 - resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} 1341 - 1342 - mdast-util-to-string@4.0.0: 1343 - resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} 1344 - 1345 - mdn-data@2.12.2: 1346 - resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} 1347 - 1348 - merge2@1.4.1: 1349 - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1350 - engines: {node: '>= 8'} 630 + hasBin: true 1351 631 1352 - micromark-core-commonmark@2.0.3: 1353 - resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} 632 + lru-cache@5.1.1: 633 + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 1354 634 1355 - micromark-extension-gfm-autolink-literal@2.1.0: 1356 - resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} 1357 - 1358 - micromark-extension-gfm-footnote@2.1.0: 1359 - resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} 1360 - 1361 - micromark-extension-gfm-strikethrough@2.1.0: 1362 - resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} 1363 - 1364 - micromark-extension-gfm-table@2.1.1: 1365 - resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} 1366 - 1367 - micromark-extension-gfm-tagfilter@2.0.0: 1368 - resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} 1369 - 1370 - micromark-extension-gfm-task-list-item@2.1.0: 1371 - resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} 1372 - 1373 - micromark-extension-gfm@3.0.0: 1374 - resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} 1375 - 1376 - micromark-factory-destination@2.0.1: 1377 - resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} 1378 - 1379 - micromark-factory-label@2.0.1: 1380 - resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} 1381 - 1382 - micromark-factory-space@2.0.1: 1383 - resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} 1384 - 1385 - micromark-factory-title@2.0.1: 1386 - resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} 1387 - 1388 - micromark-factory-whitespace@2.0.1: 1389 - resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} 1390 - 1391 - micromark-util-character@2.1.1: 1392 - resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} 1393 - 1394 - micromark-util-chunked@2.0.1: 1395 - resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} 1396 - 1397 - micromark-util-classify-character@2.0.1: 1398 - resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} 1399 - 1400 - micromark-util-combine-extensions@2.0.1: 1401 - resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} 1402 - 1403 - micromark-util-decode-numeric-character-reference@2.0.2: 1404 - resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} 1405 - 1406 - micromark-util-decode-string@2.0.1: 1407 - resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} 1408 - 1409 - micromark-util-encode@2.0.1: 1410 - resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} 1411 - 1412 - micromark-util-html-tag-name@2.0.1: 1413 - resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} 1414 - 1415 - micromark-util-normalize-identifier@2.0.1: 1416 - resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} 1417 - 1418 - micromark-util-resolve-all@2.0.1: 1419 - resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} 1420 - 1421 - micromark-util-sanitize-uri@2.0.1: 1422 - resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} 1423 - 1424 - micromark-util-subtokenize@2.1.0: 1425 - resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} 1426 - 1427 - micromark-util-symbol@2.0.1: 1428 - resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} 1429 - 1430 - micromark-util-types@2.0.2: 1431 - resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} 1432 - 1433 - micromark@4.0.2: 1434 - resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} 1435 - 1436 - micromatch@4.0.8: 1437 - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 1438 - engines: {node: '>=8.6'} 1439 - 1440 - minimatch@3.1.2: 1441 - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1442 - 1443 - minimatch@9.0.5: 1444 - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 1445 - engines: {node: '>=16 || 14 >=14.17'} 1446 - 1447 - mrmime@2.0.1: 1448 - resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} 1449 - engines: {node: '>=10'} 635 + merge-anything@5.1.7: 636 + resolution: {integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==} 637 + engines: {node: '>=12.13'} 1450 638 1451 639 ms@2.1.3: 1452 640 resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} ··· 1461 649 engines: {node: ^18 || >=20} 1462 650 hasBin: true 1463 651 1464 - natural-compare@1.4.0: 1465 - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1466 - 1467 - neotraverse@0.6.18: 1468 - resolution: {integrity: sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==} 1469 - engines: {node: '>= 10'} 1470 - 1471 - nlcst-to-string@4.0.0: 1472 - resolution: {integrity: sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==} 1473 - 1474 - node-fetch-native@1.6.6: 1475 - resolution: {integrity: sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==} 1476 - 1477 - node-fetch@2.7.0: 1478 - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} 1479 - engines: {node: 4.x || >=6.0.0} 1480 - peerDependencies: 1481 - encoding: ^0.1.0 1482 - peerDependenciesMeta: 1483 - encoding: 1484 - optional: true 1485 - 1486 - node-mock-http@1.0.1: 1487 - resolution: {integrity: sha512-0gJJgENizp4ghds/Ywu2FCmcRsgBTmRQzYPZm61wy+Em2sBarSka0OhQS5huLBg6od1zkNpnWMCZloQDFVvOMQ==} 1488 - 1489 - normalize-path@3.0.0: 1490 - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1491 - engines: {node: '>=0.10.0'} 1492 - 1493 - ofetch@1.4.1: 1494 - resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} 1495 - 1496 - ohash@2.0.11: 1497 - resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} 1498 - 1499 - oniguruma-parser@0.12.1: 1500 - resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} 1501 - 1502 - oniguruma-to-es@4.3.3: 1503 - resolution: {integrity: sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==} 1504 - 1505 - optionator@0.9.4: 1506 - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 1507 - engines: {node: '>= 0.8.0'} 1508 - 1509 - p-limit@3.1.0: 1510 - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1511 - engines: {node: '>=10'} 1512 - 1513 - p-limit@6.2.0: 1514 - resolution: {integrity: sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==} 1515 - engines: {node: '>=18'} 1516 - 1517 - p-locate@5.0.0: 1518 - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1519 - engines: {node: '>=10'} 1520 - 1521 - p-queue@8.1.0: 1522 - resolution: {integrity: sha512-mxLDbbGIBEXTJL0zEx8JIylaj3xQ7Z/7eEVjcF9fJX4DBiH9oqe+oahYnlKKxm0Ci9TlWTyhSHgygxMxjIB2jw==} 1523 - engines: {node: '>=18'} 1524 - 1525 - p-timeout@6.1.4: 1526 - resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==} 1527 - engines: {node: '>=14.16'} 1528 - 1529 - package-manager-detector@1.3.0: 1530 - resolution: {integrity: sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==} 1531 - 1532 - pako@0.2.9: 1533 - resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} 1534 - 1535 - parent-module@1.0.1: 1536 - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1537 - engines: {node: '>=6'} 1538 - 1539 - parse-latin@7.0.0: 1540 - resolution: {integrity: sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==} 652 + node-releases@2.0.19: 653 + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} 1541 654 1542 655 parse5@7.3.0: 1543 656 resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} 1544 657 1545 - path-exists@4.0.0: 1546 - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1547 - engines: {node: '>=8'} 1548 - 1549 - path-key@3.1.1: 1550 - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1551 - engines: {node: '>=8'} 1552 - 1553 658 picocolors@1.1.1: 1554 659 resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1555 660 1556 - picomatch@2.3.1: 1557 - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1558 - engines: {node: '>=8.6'} 1559 - 1560 661 picomatch@4.0.3: 1561 662 resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} 1562 663 engines: {node: '>=12'} 1563 664 1564 - postcss-selector-parser@7.1.0: 1565 - resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} 1566 - engines: {node: '>=4'} 1567 - 1568 665 postcss@8.5.6: 1569 666 resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} 1570 667 engines: {node: ^10 || ^12 || >=14} 1571 668 1572 - prelude-ls@1.2.1: 1573 - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1574 - engines: {node: '>= 0.8.0'} 1575 - 1576 - prettier-linter-helpers@1.0.0: 1577 - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} 1578 - engines: {node: '>=6.0.0'} 1579 - 1580 - prettier-plugin-astro@0.14.1: 1581 - resolution: {integrity: sha512-RiBETaaP9veVstE4vUwSIcdATj6dKmXljouXc/DDNwBSPTp8FRkLGDSGFClKsAFeeg+13SB0Z1JZvbD76bigJw==} 1582 - engines: {node: ^14.15.0 || >=16.0.0} 1583 - 1584 669 prettier@3.6.2: 1585 670 resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} 1586 671 engines: {node: '>=14'} 1587 672 hasBin: true 1588 673 1589 - prismjs@1.30.0: 1590 - resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} 1591 - engines: {node: '>=6'} 1592 - 1593 - prompts@2.4.2: 1594 - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} 1595 - engines: {node: '>= 6'} 1596 - 1597 - property-information@6.5.0: 1598 - resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} 1599 - 1600 - property-information@7.1.0: 1601 - resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} 1602 - 1603 - punycode@2.3.1: 1604 - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1605 - engines: {node: '>=6'} 1606 - 1607 - queue-microtask@1.2.3: 1608 - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1609 - 1610 - radix3@1.1.2: 1611 - resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} 1612 - 1613 - readdirp@4.1.2: 1614 - resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} 1615 - engines: {node: '>= 14.18.0'} 1616 - 1617 - regex-recursion@6.0.2: 1618 - resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} 1619 - 1620 - regex-utilities@2.3.0: 1621 - resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} 1622 - 1623 - regex@6.0.1: 1624 - resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==} 1625 - 1626 - rehype-parse@9.0.1: 1627 - resolution: {integrity: sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==} 1628 - 1629 - rehype-raw@7.0.0: 1630 - resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} 1631 - 1632 - rehype-stringify@10.0.1: 1633 - resolution: {integrity: sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==} 1634 - 1635 - rehype@13.0.2: 1636 - resolution: {integrity: sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A==} 1637 - 1638 - remark-gfm@4.0.1: 1639 - resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} 1640 - 1641 - remark-parse@11.0.0: 1642 - resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} 1643 - 1644 - remark-rehype@11.1.2: 1645 - resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} 1646 - 1647 - remark-smartypants@3.0.2: 1648 - resolution: {integrity: sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==} 1649 - engines: {node: '>=16.0.0'} 1650 - 1651 - remark-stringify@11.0.0: 1652 - resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} 1653 - 1654 - resolve-from@4.0.0: 1655 - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1656 - engines: {node: '>=4'} 1657 - 1658 - restructure@3.0.2: 1659 - resolution: {integrity: sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==} 1660 - 1661 - retext-latin@4.0.0: 1662 - resolution: {integrity: sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==} 1663 - 1664 - retext-smartypants@6.2.0: 1665 - resolution: {integrity: sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==} 1666 - 1667 - retext-stringify@4.0.0: 1668 - resolution: {integrity: sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==} 1669 - 1670 - retext@9.0.0: 1671 - resolution: {integrity: sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==} 1672 - 1673 - reusify@1.1.0: 1674 - resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} 1675 - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1676 - 1677 - rollup@4.45.3: 1678 - resolution: {integrity: sha512-STwyHZF3G+CrmZhB+qDiROq9s8B5PrOCYN6dtmOvwz585XBnyeHk1GTEhHJtUVb355/9uZhOazyVclTt5uahzA==} 674 + rollup@4.47.1: 675 + resolution: {integrity: sha512-iasGAQoZ5dWDzULEUX3jiW0oB1qyFOepSyDyoU6S/OhVlDIwj5knI5QBa5RRQ0sK7OE0v+8VIi2JuV+G+3tfNg==} 1679 676 engines: {node: '>=18.0.0', npm: '>=8.0.0'} 1680 677 hasBin: true 1681 678 1682 - run-parallel@1.2.0: 1683 - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 679 + semver@6.3.1: 680 + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 681 + hasBin: true 1684 682 1685 - s.color@0.0.15: 1686 - resolution: {integrity: sha512-AUNrbEUHeKY8XsYr/DYpl+qk5+aM+DChopnWOPEzn8YKzOhv4l2zH6LzZms3tOZP3wwdOyc0RmTciyi46HLIuA==} 1687 - 1688 - sass-formatter@0.7.9: 1689 - resolution: {integrity: sha512-CWZ8XiSim+fJVG0cFLStwDvft1VI7uvXdCNJYXhDvowiv+DsbD1nXLiQ4zrE5UBvj5DWZJ93cwN0NX5PMsr1Pw==} 683 + seroval-plugins@1.3.2: 684 + resolution: {integrity: sha512-0QvCV2lM3aj/U3YozDiVwx9zpH0q8A60CTWIv4Jszj/givcudPb48B+rkU5D51NJ0pTpweGMttHjboPa9/zoIQ==} 685 + engines: {node: '>=10'} 686 + peerDependencies: 687 + seroval: ^1.0 1690 688 1691 - semver@7.7.2: 1692 - resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} 689 + seroval@1.3.2: 690 + resolution: {integrity: sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ==} 1693 691 engines: {node: '>=10'} 1694 - hasBin: true 1695 692 1696 - sharp@0.33.5: 1697 - resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} 1698 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 693 + solid-devtools@0.34.3: 694 + resolution: {integrity: sha512-ZQua959n+Zu3sLbm9g0IRjYUb1YYlYbu83PWLRoKbSsq0a3ItQNhnS2OBU7rQNmOKZiMexNo9Z3izas9BcOKDg==} 695 + peerDependencies: 696 + solid-js: ^1.9.0 697 + vite: ^2.2.3 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 698 + peerDependenciesMeta: 699 + vite: 700 + optional: true 1699 701 1700 - shebang-command@2.0.0: 1701 - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1702 - engines: {node: '>=8'} 1703 - 1704 - shebang-regex@3.0.0: 1705 - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1706 - engines: {node: '>=8'} 1707 - 1708 - shiki@3.8.1: 1709 - resolution: {integrity: sha512-+MYIyjwGPCaegbpBeFN9+oOifI8CKiKG3awI/6h3JeT85c//H2wDW/xCJEGuQ5jPqtbboKNqNy+JyX9PYpGwNg==} 1710 - 1711 - simple-swizzle@0.2.2: 1712 - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} 1713 - 1714 - sisteransi@1.0.5: 1715 - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} 702 + solid-js@1.9.9: 703 + resolution: {integrity: sha512-A0ZBPJQldAeGCTW0YRYJmt7RCeh5rbFfPZ2aOttgYnctHE7HgKeHCBB/PVc2P7eOfmNXqMFFFoYYdm3S4dcbkA==} 1716 704 1717 - smol-toml@1.4.1: 1718 - resolution: {integrity: sha512-CxdwHXyYTONGHThDbq5XdwbFsuY4wlClRGejfE2NtwUtiHYsP1QtNsHb/hnj31jKYSchztJsaA8pSQoVzkfCFg==} 1719 - engines: {node: '>= 18'} 705 + solid-refresh@0.6.3: 706 + resolution: {integrity: sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==} 707 + peerDependencies: 708 + solid-js: ^1.3 1720 709 1721 710 source-map-js@1.2.1: 1722 711 resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 1723 712 engines: {node: '>=0.10.0'} 1724 - 1725 - space-separated-tokens@2.0.2: 1726 - resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} 1727 - 1728 - string-width@4.2.3: 1729 - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 1730 - engines: {node: '>=8'} 1731 - 1732 - string-width@7.2.0: 1733 - resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} 1734 - engines: {node: '>=18'} 1735 - 1736 - stringify-entities@4.0.4: 1737 - resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} 1738 - 1739 - strip-ansi@6.0.1: 1740 - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1741 - engines: {node: '>=8'} 1742 - 1743 - strip-ansi@7.1.0: 1744 - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 1745 - engines: {node: '>=12'} 1746 - 1747 - strip-json-comments@3.1.1: 1748 - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1749 - engines: {node: '>=8'} 1750 - 1751 - suf-log@2.5.3: 1752 - resolution: {integrity: sha512-KvC8OPjzdNOe+xQ4XWJV2whQA0aM1kGVczMQ8+dStAO6KfEB140JEVQ9dE76ONZ0/Ylf67ni4tILPJB41U0eow==} 1753 - 1754 - supports-color@7.2.0: 1755 - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1756 - engines: {node: '>=8'} 1757 - 1758 - synckit@0.11.11: 1759 - resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==} 1760 - engines: {node: ^14.18.0 || >=16.0.0} 1761 - 1762 - tiny-inflate@1.0.3: 1763 - resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} 1764 - 1765 - tinyexec@0.3.2: 1766 - resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} 1767 713 1768 714 tinyglobby@0.2.14: 1769 715 resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} 1770 716 engines: {node: '>=12.0.0'} 1771 717 1772 - to-regex-range@5.0.1: 1773 - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1774 - engines: {node: '>=8.0'} 1775 - 1776 - tr46@0.0.3: 1777 - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} 718 + typescript@5.9.2: 719 + resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} 720 + engines: {node: '>=14.17'} 721 + hasBin: true 1778 722 1779 - trim-lines@3.0.1: 1780 - resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} 723 + undici-types@7.10.0: 724 + resolution: {integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==} 1781 725 1782 - trough@2.2.0: 1783 - resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} 1784 - 1785 - ts-api-utils@2.1.0: 1786 - resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} 1787 - engines: {node: '>=18.12'} 1788 - peerDependencies: 1789 - typescript: '>=4.8.4' 1790 - 1791 - tsconfck@3.1.6: 1792 - resolution: {integrity: sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==} 1793 - engines: {node: ^18 || >=20} 726 + update-browserslist-db@1.1.3: 727 + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} 1794 728 hasBin: true 1795 729 peerDependencies: 1796 - typescript: ^5.0.0 1797 - peerDependenciesMeta: 1798 - typescript: 1799 - optional: true 730 + browserslist: '>= 4.21.0' 1800 731 1801 - tslib@2.8.1: 1802 - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 732 + validate-html-nesting@1.2.3: 733 + resolution: {integrity: sha512-kdkWdCl6eCeLlRShJKbjVOU2kFKxMF8Ghu50n+crEoyx+VKm3FxAxF9z4DCy6+bbTOqNW0+jcIYRnjoIRzigRw==} 1803 734 1804 - type-check@0.4.0: 1805 - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1806 - engines: {node: '>= 0.8.0'} 1807 - 1808 - type-fest@4.41.0: 1809 - resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} 1810 - engines: {node: '>=16'} 1811 - 1812 - typescript-eslint@8.38.0: 1813 - resolution: {integrity: sha512-FsZlrYK6bPDGoLeZRuvx2v6qrM03I0U0SnfCLPs/XCCPCFD80xU9Pg09H/K+XFa68uJuZo7l/Xhs+eDRg2l3hg==} 1814 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 735 + vite-plugin-solid@2.11.8: 736 + resolution: {integrity: sha512-hFrCxBfv3B1BmFqnJF4JOCYpjrmi/zwyeKjcomQ0khh8HFyQ8SbuBWQ7zGojfrz6HUOBFrJBNySDi/JgAHytWg==} 1815 737 peerDependencies: 1816 - eslint: ^8.57.0 || ^9.0.0 1817 - typescript: '>=4.8.4 <5.9.0' 1818 - 1819 - typescript@5.8.3: 1820 - resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} 1821 - engines: {node: '>=14.17'} 1822 - hasBin: true 1823 - 1824 - ufo@1.6.1: 1825 - resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} 1826 - 1827 - ultrahtml@1.6.0: 1828 - resolution: {integrity: sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==} 1829 - 1830 - uncrypto@0.1.3: 1831 - resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} 1832 - 1833 - undici-types@7.8.0: 1834 - resolution: {integrity: sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==} 1835 - 1836 - unicode-properties@1.4.1: 1837 - resolution: {integrity: sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==} 1838 - 1839 - unicode-trie@2.0.0: 1840 - resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==} 1841 - 1842 - unified@11.0.5: 1843 - resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} 1844 - 1845 - unifont@0.5.2: 1846 - resolution: {integrity: sha512-LzR4WUqzH9ILFvjLAUU7dK3Lnou/qd5kD+IakBtBK4S15/+x2y9VX+DcWQv6s551R6W+vzwgVS6tFg3XggGBgg==} 1847 - 1848 - unist-util-find-after@5.0.0: 1849 - resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} 1850 - 1851 - unist-util-is@6.0.0: 1852 - resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} 1853 - 1854 - unist-util-modify-children@4.0.0: 1855 - resolution: {integrity: sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==} 1856 - 1857 - unist-util-position@5.0.0: 1858 - resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} 1859 - 1860 - unist-util-remove-position@5.0.0: 1861 - resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} 1862 - 1863 - unist-util-stringify-position@4.0.0: 1864 - resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} 1865 - 1866 - unist-util-visit-children@3.0.0: 1867 - resolution: {integrity: sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==} 1868 - 1869 - unist-util-visit-parents@6.0.1: 1870 - resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} 1871 - 1872 - unist-util-visit@5.0.0: 1873 - resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} 1874 - 1875 - unstorage@1.16.1: 1876 - resolution: {integrity: sha512-gdpZ3guLDhz+zWIlYP1UwQ259tG5T5vYRzDaHMkQ1bBY1SQPutvZnrRjTFaWUUpseErJIgAZS51h6NOcZVZiqQ==} 1877 - peerDependencies: 1878 - '@azure/app-configuration': ^1.8.0 1879 - '@azure/cosmos': ^4.2.0 1880 - '@azure/data-tables': ^13.3.0 1881 - '@azure/identity': ^4.6.0 1882 - '@azure/keyvault-secrets': ^4.9.0 1883 - '@azure/storage-blob': ^12.26.0 1884 - '@capacitor/preferences': ^6.0.3 || ^7.0.0 1885 - '@deno/kv': '>=0.9.0' 1886 - '@netlify/blobs': ^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0 1887 - '@planetscale/database': ^1.19.0 1888 - '@upstash/redis': ^1.34.3 1889 - '@vercel/blob': '>=0.27.1' 1890 - '@vercel/kv': ^1.0.1 1891 - aws4fetch: ^1.0.20 1892 - db0: '>=0.2.1' 1893 - idb-keyval: ^6.2.1 1894 - ioredis: ^5.4.2 1895 - uploadthing: ^7.4.4 738 + '@testing-library/jest-dom': ^5.16.6 || ^5.17.0 || ^6.* 739 + solid-js: ^1.7.2 740 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 1896 741 peerDependenciesMeta: 1897 - '@azure/app-configuration': 1898 - optional: true 1899 - '@azure/cosmos': 742 + '@testing-library/jest-dom': 1900 743 optional: true 1901 - '@azure/data-tables': 1902 - optional: true 1903 - '@azure/identity': 1904 - optional: true 1905 - '@azure/keyvault-secrets': 1906 - optional: true 1907 - '@azure/storage-blob': 1908 - optional: true 1909 - '@capacitor/preferences': 1910 - optional: true 1911 - '@deno/kv': 1912 - optional: true 1913 - '@netlify/blobs': 1914 - optional: true 1915 - '@planetscale/database': 1916 - optional: true 1917 - '@upstash/redis': 1918 - optional: true 1919 - '@vercel/blob': 1920 - optional: true 1921 - '@vercel/kv': 1922 - optional: true 1923 - aws4fetch: 1924 - optional: true 1925 - db0: 1926 - optional: true 1927 - idb-keyval: 1928 - optional: true 1929 - ioredis: 1930 - optional: true 1931 - uploadthing: 1932 - optional: true 1933 - 1934 - uri-js@4.4.1: 1935 - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1936 - 1937 - util-deprecate@1.0.2: 1938 - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 1939 - 1940 - vfile-location@5.0.3: 1941 - resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} 1942 - 1943 - vfile-message@4.0.3: 1944 - resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} 1945 - 1946 - vfile@6.0.3: 1947 - resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} 1948 744 1949 745 vite@6.3.5: 1950 746 resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==} ··· 1994 790 vite: 1995 791 optional: true 1996 792 1997 - web-namespaces@2.0.1: 1998 - resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} 1999 - 2000 - webidl-conversions@3.0.1: 2001 - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} 2002 - 2003 - whatwg-url@5.0.0: 2004 - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} 2005 - 2006 - which-pm-runs@1.1.0: 2007 - resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==} 2008 - engines: {node: '>=4'} 2009 - 2010 - which@2.0.2: 2011 - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 2012 - engines: {node: '>= 8'} 2013 - hasBin: true 2014 - 2015 - widest-line@5.0.0: 2016 - resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==} 2017 - engines: {node: '>=18'} 2018 - 2019 - word-wrap@1.2.5: 2020 - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 2021 - engines: {node: '>=0.10.0'} 2022 - 2023 - wrap-ansi@9.0.0: 2024 - resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} 2025 - engines: {node: '>=18'} 2026 - 2027 - xxhash-wasm@1.1.0: 2028 - resolution: {integrity: sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==} 2029 - 2030 - yargs-parser@21.1.1: 2031 - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} 2032 - engines: {node: '>=12'} 2033 - 2034 - yocto-queue@0.1.0: 2035 - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 2036 - engines: {node: '>=10'} 2037 - 2038 - yocto-queue@1.2.1: 2039 - resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} 2040 - engines: {node: '>=12.20'} 2041 - 2042 - yocto-spinner@0.2.3: 2043 - resolution: {integrity: sha512-sqBChb33loEnkoXte1bLg45bEBsOP9N1kzQh5JZNKj/0rik4zAPTNSAVPj3uQAdc6slYJ0Ksc403G2XgxsJQFQ==} 2044 - engines: {node: '>=18.19'} 2045 - 2046 - yoctocolors@2.1.1: 2047 - resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==} 2048 - engines: {node: '>=18'} 2049 - 2050 - zod-to-json-schema@3.24.6: 2051 - resolution: {integrity: sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==} 2052 - peerDependencies: 2053 - zod: ^3.24.1 2054 - 2055 - zod-to-ts@1.2.0: 2056 - resolution: {integrity: sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==} 2057 - peerDependencies: 2058 - typescript: ^4.9.4 || ^5.0.2 2059 - zod: ^3 2060 - 2061 - zod@3.25.76: 2062 - resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} 2063 - 2064 - zwitch@2.0.4: 2065 - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} 793 + yallist@3.1.1: 794 + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 2066 795 2067 796 snapshots: 2068 797 2069 - '@astrojs/compiler@2.12.2': {} 2070 - 2071 - '@astrojs/internal-helpers@0.6.1': {} 2072 - 2073 - '@astrojs/markdown-remark@6.3.3': 798 + '@ampproject/remapping@2.3.0': 2074 799 dependencies: 2075 - '@astrojs/internal-helpers': 0.6.1 2076 - '@astrojs/prism': 3.3.0 2077 - github-slugger: 2.0.0 2078 - hast-util-from-html: 2.0.3 2079 - hast-util-to-text: 4.0.2 2080 - import-meta-resolve: 4.1.0 2081 - js-yaml: 4.1.0 2082 - mdast-util-definitions: 6.0.0 2083 - rehype-raw: 7.0.0 2084 - rehype-stringify: 10.0.1 2085 - remark-gfm: 4.0.1 2086 - remark-parse: 11.0.0 2087 - remark-rehype: 11.1.2 2088 - remark-smartypants: 3.0.2 2089 - shiki: 3.8.1 2090 - smol-toml: 1.4.1 2091 - unified: 11.0.5 2092 - unist-util-remove-position: 5.0.0 2093 - unist-util-visit: 5.0.0 2094 - unist-util-visit-parents: 6.0.1 2095 - vfile: 6.0.3 2096 - transitivePeerDependencies: 2097 - - supports-color 800 + '@jridgewell/gen-mapping': 0.3.13 801 + '@jridgewell/trace-mapping': 0.3.30 2098 802 2099 - '@astrojs/prism@3.3.0': 2100 - dependencies: 2101 - prismjs: 1.30.0 2102 - 2103 - '@astrojs/telemetry@3.3.0': 803 + '@atcute/client@4.0.3': 2104 804 dependencies: 2105 - ci-info: 4.3.0 2106 - debug: 4.4.1 2107 - dlv: 1.1.3 2108 - dset: 3.1.4 2109 - is-docker: 3.0.0 2110 - is-wsl: 3.1.0 2111 - which-pm-runs: 1.1.0 2112 - transitivePeerDependencies: 2113 - - supports-color 805 + '@atcute/identity': 1.0.3 806 + '@atcute/lexicons': 1.1.1 2114 807 2115 - '@atcute/client@4.0.3': 808 + '@atcute/identity-resolver@1.1.3(@atcute/identity@1.0.3)': 2116 809 dependencies: 2117 810 '@atcute/identity': 1.0.3 2118 - '@atcute/lexicons': 1.1.0 811 + '@atcute/lexicons': 1.1.1 812 + '@atcute/util-fetch': 1.0.1 813 + '@badrap/valita': 0.4.6 2119 814 2120 815 '@atcute/identity@1.0.3': 2121 816 dependencies: 2122 - '@atcute/lexicons': 1.1.0 2123 - '@badrap/valita': 0.4.5 817 + '@atcute/lexicons': 1.1.1 818 + '@badrap/valita': 0.4.6 2124 819 2125 - '@atcute/lexicons@1.1.0': 820 + '@atcute/lexicons@1.1.1': 2126 821 dependencies: 2127 822 esm-env: 1.2.2 2128 823 ··· 2134 829 dependencies: 2135 830 '@atcute/client': 4.0.3 2136 831 '@atcute/identity': 1.0.3 2137 - '@atcute/lexicons': 1.1.0 832 + '@atcute/lexicons': 1.1.1 2138 833 '@atcute/multibase': 1.1.4 2139 834 '@atcute/uint8array': 1.0.3 2140 835 nanoid: 5.1.5 2141 836 2142 837 '@atcute/uint8array@1.0.3': {} 2143 838 2144 - '@babel/helper-string-parser@7.27.1': {} 2145 - 2146 - '@babel/helper-validator-identifier@7.27.1': {} 2147 - 2148 - '@babel/parser@7.28.0': 839 + '@atcute/util-fetch@1.0.1': 2149 840 dependencies: 2150 - '@babel/types': 7.28.2 841 + '@badrap/valita': 0.4.6 2151 842 2152 - '@babel/types@7.28.2': 843 + '@babel/code-frame@7.27.1': 2153 844 dependencies: 2154 - '@babel/helper-string-parser': 7.27.1 2155 845 '@babel/helper-validator-identifier': 7.27.1 846 + js-tokens: 4.0.0 847 + picocolors: 1.1.1 2156 848 2157 - '@badrap/valita@0.4.5': {} 849 + '@babel/compat-data@7.28.0': {} 2158 850 2159 - '@capsizecss/unpack@2.4.0': 851 + '@babel/core@7.28.3': 2160 852 dependencies: 2161 - blob-to-buffer: 1.2.9 2162 - cross-fetch: 3.2.0 2163 - fontkit: 2.0.4 853 + '@ampproject/remapping': 2.3.0 854 + '@babel/code-frame': 7.27.1 855 + '@babel/generator': 7.28.3 856 + '@babel/helper-compilation-targets': 7.27.2 857 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.3) 858 + '@babel/helpers': 7.28.3 859 + '@babel/parser': 7.28.3 860 + '@babel/template': 7.27.2 861 + '@babel/traverse': 7.28.3 862 + '@babel/types': 7.28.2 863 + convert-source-map: 2.0.0 864 + debug: 4.4.1 865 + gensync: 1.0.0-beta.2 866 + json5: 2.2.3 867 + semver: 6.3.1 2164 868 transitivePeerDependencies: 2165 - - encoding 869 + - supports-color 2166 870 2167 - '@emnapi/runtime@1.4.5': 871 + '@babel/generator@7.28.3': 2168 872 dependencies: 2169 - tslib: 2.8.1 2170 - optional: true 2171 - 2172 - '@esbuild/aix-ppc64@0.25.8': 2173 - optional: true 2174 - 2175 - '@esbuild/android-arm64@0.25.8': 2176 - optional: true 2177 - 2178 - '@esbuild/android-arm@0.25.8': 2179 - optional: true 2180 - 2181 - '@esbuild/android-x64@0.25.8': 2182 - optional: true 2183 - 2184 - '@esbuild/darwin-arm64@0.25.8': 2185 - optional: true 2186 - 2187 - '@esbuild/darwin-x64@0.25.8': 2188 - optional: true 2189 - 2190 - '@esbuild/freebsd-arm64@0.25.8': 2191 - optional: true 2192 - 2193 - '@esbuild/freebsd-x64@0.25.8': 2194 - optional: true 2195 - 2196 - '@esbuild/linux-arm64@0.25.8': 2197 - optional: true 2198 - 2199 - '@esbuild/linux-arm@0.25.8': 2200 - optional: true 2201 - 2202 - '@esbuild/linux-ia32@0.25.8': 2203 - optional: true 2204 - 2205 - '@esbuild/linux-loong64@0.25.8': 2206 - optional: true 2207 - 2208 - '@esbuild/linux-mips64el@0.25.8': 2209 - optional: true 2210 - 2211 - '@esbuild/linux-ppc64@0.25.8': 2212 - optional: true 2213 - 2214 - '@esbuild/linux-riscv64@0.25.8': 2215 - optional: true 2216 - 2217 - '@esbuild/linux-s390x@0.25.8': 2218 - optional: true 2219 - 2220 - '@esbuild/linux-x64@0.25.8': 2221 - optional: true 873 + '@babel/parser': 7.28.3 874 + '@babel/types': 7.28.2 875 + '@jridgewell/gen-mapping': 0.3.13 876 + '@jridgewell/trace-mapping': 0.3.30 877 + jsesc: 3.1.0 2222 878 2223 - '@esbuild/netbsd-arm64@0.25.8': 2224 - optional: true 879 + '@babel/helper-compilation-targets@7.27.2': 880 + dependencies: 881 + '@babel/compat-data': 7.28.0 882 + '@babel/helper-validator-option': 7.27.1 883 + browserslist: 4.25.3 884 + lru-cache: 5.1.1 885 + semver: 6.3.1 2225 886 2226 - '@esbuild/netbsd-x64@0.25.8': 2227 - optional: true 887 + '@babel/helper-globals@7.28.0': {} 2228 888 2229 - '@esbuild/openbsd-arm64@0.25.8': 2230 - optional: true 889 + '@babel/helper-module-imports@7.18.6': 890 + dependencies: 891 + '@babel/types': 7.28.2 2231 892 2232 - '@esbuild/openbsd-x64@0.25.8': 2233 - optional: true 893 + '@babel/helper-module-imports@7.27.1': 894 + dependencies: 895 + '@babel/traverse': 7.28.3 896 + '@babel/types': 7.28.2 897 + transitivePeerDependencies: 898 + - supports-color 2234 899 2235 - '@esbuild/openharmony-arm64@0.25.8': 2236 - optional: true 900 + '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.3)': 901 + dependencies: 902 + '@babel/core': 7.28.3 903 + '@babel/helper-module-imports': 7.27.1 904 + '@babel/helper-validator-identifier': 7.27.1 905 + '@babel/traverse': 7.28.3 906 + transitivePeerDependencies: 907 + - supports-color 2237 908 2238 - '@esbuild/sunos-x64@0.25.8': 2239 - optional: true 909 + '@babel/helper-plugin-utils@7.27.1': {} 2240 910 2241 - '@esbuild/win32-arm64@0.25.8': 2242 - optional: true 911 + '@babel/helper-string-parser@7.27.1': {} 2243 912 2244 - '@esbuild/win32-ia32@0.25.8': 2245 - optional: true 913 + '@babel/helper-validator-identifier@7.27.1': {} 2246 914 2247 - '@esbuild/win32-x64@0.25.8': 2248 - optional: true 915 + '@babel/helper-validator-option@7.27.1': {} 2249 916 2250 - '@eslint-community/eslint-utils@4.7.0(eslint@9.32.0(jiti@2.5.1))': 917 + '@babel/helpers@7.28.3': 2251 918 dependencies: 2252 - eslint: 9.32.0(jiti@2.5.1) 2253 - eslint-visitor-keys: 3.4.3 919 + '@babel/template': 7.27.2 920 + '@babel/types': 7.28.2 2254 921 2255 - '@eslint-community/regexpp@4.12.1': {} 922 + '@babel/parser@7.28.3': 923 + dependencies: 924 + '@babel/types': 7.28.2 2256 925 2257 - '@eslint/config-array@0.21.0': 926 + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.3)': 2258 927 dependencies: 2259 - '@eslint/object-schema': 2.1.6 2260 - debug: 4.4.1 2261 - minimatch: 3.1.2 2262 - transitivePeerDependencies: 2263 - - supports-color 928 + '@babel/core': 7.28.3 929 + '@babel/helper-plugin-utils': 7.27.1 2264 930 2265 - '@eslint/config-helpers@0.3.0': {} 931 + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.3)': 932 + dependencies: 933 + '@babel/core': 7.28.3 934 + '@babel/helper-plugin-utils': 7.27.1 2266 935 2267 - '@eslint/core@0.15.1': 936 + '@babel/template@7.27.2': 2268 937 dependencies: 2269 - '@types/json-schema': 7.0.15 938 + '@babel/code-frame': 7.27.1 939 + '@babel/parser': 7.28.3 940 + '@babel/types': 7.28.2 2270 941 2271 - '@eslint/eslintrc@3.3.1': 942 + '@babel/traverse@7.28.3': 2272 943 dependencies: 2273 - ajv: 6.12.6 944 + '@babel/code-frame': 7.27.1 945 + '@babel/generator': 7.28.3 946 + '@babel/helper-globals': 7.28.0 947 + '@babel/parser': 7.28.3 948 + '@babel/template': 7.27.2 949 + '@babel/types': 7.28.2 2274 950 debug: 4.4.1 2275 - espree: 10.4.0 2276 - globals: 14.0.0 2277 - ignore: 5.3.2 2278 - import-fresh: 3.3.1 2279 - js-yaml: 4.1.0 2280 - minimatch: 3.1.2 2281 - strip-json-comments: 3.1.1 2282 951 transitivePeerDependencies: 2283 952 - supports-color 2284 953 2285 - '@eslint/js@9.32.0': {} 2286 - 2287 - '@eslint/object-schema@2.1.6': {} 2288 - 2289 - '@eslint/plugin-kit@0.3.4': 954 + '@babel/types@7.28.2': 2290 955 dependencies: 2291 - '@eslint/core': 0.15.1 2292 - levn: 0.4.1 956 + '@babel/helper-string-parser': 7.27.1 957 + '@babel/helper-validator-identifier': 7.27.1 2293 958 2294 - '@humanfs/core@0.19.1': {} 959 + '@badrap/valita@0.4.6': {} 2295 960 2296 - '@humanfs/node@0.16.6': 2297 - dependencies: 2298 - '@humanfs/core': 0.19.1 2299 - '@humanwhocodes/retry': 0.3.1 961 + '@esbuild/aix-ppc64@0.25.9': 962 + optional: true 2300 963 2301 - '@humanwhocodes/module-importer@1.0.1': {} 964 + '@esbuild/android-arm64@0.25.9': 965 + optional: true 2302 966 2303 - '@humanwhocodes/retry@0.3.1': {} 967 + '@esbuild/android-arm@0.25.9': 968 + optional: true 2304 969 2305 - '@humanwhocodes/retry@0.4.3': {} 970 + '@esbuild/android-x64@0.25.9': 971 + optional: true 2306 972 2307 - '@img/sharp-darwin-arm64@0.33.5': 2308 - optionalDependencies: 2309 - '@img/sharp-libvips-darwin-arm64': 1.0.4 973 + '@esbuild/darwin-arm64@0.25.9': 2310 974 optional: true 2311 975 2312 - '@img/sharp-darwin-x64@0.33.5': 2313 - optionalDependencies: 2314 - '@img/sharp-libvips-darwin-x64': 1.0.4 976 + '@esbuild/darwin-x64@0.25.9': 2315 977 optional: true 2316 978 2317 - '@img/sharp-libvips-darwin-arm64@1.0.4': 979 + '@esbuild/freebsd-arm64@0.25.9': 2318 980 optional: true 2319 981 2320 - '@img/sharp-libvips-darwin-x64@1.0.4': 982 + '@esbuild/freebsd-x64@0.25.9': 2321 983 optional: true 2322 984 2323 - '@img/sharp-libvips-linux-arm64@1.0.4': 985 + '@esbuild/linux-arm64@0.25.9': 2324 986 optional: true 2325 987 2326 - '@img/sharp-libvips-linux-arm@1.0.5': 988 + '@esbuild/linux-arm@0.25.9': 2327 989 optional: true 2328 990 2329 - '@img/sharp-libvips-linux-s390x@1.0.4': 991 + '@esbuild/linux-ia32@0.25.9': 2330 992 optional: true 2331 993 2332 - '@img/sharp-libvips-linux-x64@1.0.4': 994 + '@esbuild/linux-loong64@0.25.9': 2333 995 optional: true 2334 996 2335 - '@img/sharp-libvips-linuxmusl-arm64@1.0.4': 997 + '@esbuild/linux-mips64el@0.25.9': 2336 998 optional: true 2337 999 2338 - '@img/sharp-libvips-linuxmusl-x64@1.0.4': 1000 + '@esbuild/linux-ppc64@0.25.9': 2339 1001 optional: true 2340 1002 2341 - '@img/sharp-linux-arm64@0.33.5': 2342 - optionalDependencies: 2343 - '@img/sharp-libvips-linux-arm64': 1.0.4 1003 + '@esbuild/linux-riscv64@0.25.9': 2344 1004 optional: true 2345 1005 2346 - '@img/sharp-linux-arm@0.33.5': 2347 - optionalDependencies: 2348 - '@img/sharp-libvips-linux-arm': 1.0.5 1006 + '@esbuild/linux-s390x@0.25.9': 2349 1007 optional: true 2350 1008 2351 - '@img/sharp-linux-s390x@0.33.5': 2352 - optionalDependencies: 2353 - '@img/sharp-libvips-linux-s390x': 1.0.4 1009 + '@esbuild/linux-x64@0.25.9': 2354 1010 optional: true 2355 1011 2356 - '@img/sharp-linux-x64@0.33.5': 2357 - optionalDependencies: 2358 - '@img/sharp-libvips-linux-x64': 1.0.4 1012 + '@esbuild/netbsd-arm64@0.25.9': 2359 1013 optional: true 2360 1014 2361 - '@img/sharp-linuxmusl-arm64@0.33.5': 2362 - optionalDependencies: 2363 - '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 1015 + '@esbuild/netbsd-x64@0.25.9': 2364 1016 optional: true 2365 1017 2366 - '@img/sharp-linuxmusl-x64@0.33.5': 2367 - optionalDependencies: 2368 - '@img/sharp-libvips-linuxmusl-x64': 1.0.4 1018 + '@esbuild/openbsd-arm64@0.25.9': 2369 1019 optional: true 2370 1020 2371 - '@img/sharp-wasm32@0.33.5': 2372 - dependencies: 2373 - '@emnapi/runtime': 1.4.5 1021 + '@esbuild/openbsd-x64@0.25.9': 2374 1022 optional: true 2375 1023 2376 - '@img/sharp-win32-ia32@0.33.5': 1024 + '@esbuild/openharmony-arm64@0.25.9': 2377 1025 optional: true 2378 1026 2379 - '@img/sharp-win32-x64@0.33.5': 1027 + '@esbuild/sunos-x64@0.25.9': 2380 1028 optional: true 2381 1029 2382 - '@jridgewell/sourcemap-codec@1.5.4': {} 1030 + '@esbuild/win32-arm64@0.25.9': 1031 + optional: true 2383 1032 2384 - '@nodelib/fs.scandir@2.1.5': 2385 - dependencies: 2386 - '@nodelib/fs.stat': 2.0.5 2387 - run-parallel: 1.2.0 1033 + '@esbuild/win32-ia32@0.25.9': 1034 + optional: true 2388 1035 2389 - '@nodelib/fs.stat@2.0.5': {} 1036 + '@esbuild/win32-x64@0.25.9': 1037 + optional: true 2390 1038 2391 - '@nodelib/fs.walk@1.2.8': 1039 + '@jridgewell/gen-mapping@0.3.13': 2392 1040 dependencies: 2393 - '@nodelib/fs.scandir': 2.1.5 2394 - fastq: 1.19.1 1041 + '@jridgewell/sourcemap-codec': 1.5.5 1042 + '@jridgewell/trace-mapping': 0.3.30 2395 1043 2396 - '@oslojs/encoding@1.1.0': {} 1044 + '@jridgewell/resolve-uri@3.1.2': {} 2397 1045 2398 - '@pkgr/core@0.2.9': {} 1046 + '@jridgewell/sourcemap-codec@1.5.5': {} 2399 1047 2400 - '@rollup/pluginutils@5.2.0(rollup@4.45.3)': 1048 + '@jridgewell/trace-mapping@0.3.30': 2401 1049 dependencies: 2402 - '@types/estree': 1.0.8 2403 - estree-walker: 2.0.2 2404 - picomatch: 4.0.3 2405 - optionalDependencies: 2406 - rollup: 4.45.3 1050 + '@jridgewell/resolve-uri': 3.1.2 1051 + '@jridgewell/sourcemap-codec': 1.5.5 2407 1052 2408 - '@rollup/rollup-android-arm-eabi@4.45.3': 2409 - optional: true 1053 + '@jsr/mary__exif-rm@0.2.2': {} 2410 1054 2411 - '@rollup/rollup-android-arm64@4.45.3': 2412 - optional: true 1055 + '@nothing-but/utils@0.17.0': {} 2413 1056 2414 - '@rollup/rollup-darwin-arm64@4.45.3': 1057 + '@rollup/rollup-android-arm-eabi@4.47.1': 2415 1058 optional: true 2416 1059 2417 - '@rollup/rollup-darwin-x64@4.45.3': 1060 + '@rollup/rollup-android-arm64@4.47.1': 2418 1061 optional: true 2419 1062 2420 - '@rollup/rollup-freebsd-arm64@4.45.3': 1063 + '@rollup/rollup-darwin-arm64@4.47.1': 2421 1064 optional: true 2422 1065 2423 - '@rollup/rollup-freebsd-x64@4.45.3': 1066 + '@rollup/rollup-darwin-x64@4.47.1': 2424 1067 optional: true 2425 1068 2426 - '@rollup/rollup-linux-arm-gnueabihf@4.45.3': 1069 + '@rollup/rollup-freebsd-arm64@4.47.1': 2427 1070 optional: true 2428 1071 2429 - '@rollup/rollup-linux-arm-musleabihf@4.45.3': 1072 + '@rollup/rollup-freebsd-x64@4.47.1': 2430 1073 optional: true 2431 1074 2432 - '@rollup/rollup-linux-arm64-gnu@4.45.3': 1075 + '@rollup/rollup-linux-arm-gnueabihf@4.47.1': 2433 1076 optional: true 2434 1077 2435 - '@rollup/rollup-linux-arm64-musl@4.45.3': 1078 + '@rollup/rollup-linux-arm-musleabihf@4.47.1': 2436 1079 optional: true 2437 1080 2438 - '@rollup/rollup-linux-loongarch64-gnu@4.45.3': 1081 + '@rollup/rollup-linux-arm64-gnu@4.47.1': 2439 1082 optional: true 2440 1083 2441 - '@rollup/rollup-linux-ppc64-gnu@4.45.3': 1084 + '@rollup/rollup-linux-arm64-musl@4.47.1': 2442 1085 optional: true 2443 1086 2444 - '@rollup/rollup-linux-riscv64-gnu@4.45.3': 1087 + '@rollup/rollup-linux-loongarch64-gnu@4.47.1': 2445 1088 optional: true 2446 1089 2447 - '@rollup/rollup-linux-riscv64-musl@4.45.3': 1090 + '@rollup/rollup-linux-ppc64-gnu@4.47.1': 2448 1091 optional: true 2449 1092 2450 - '@rollup/rollup-linux-s390x-gnu@4.45.3': 1093 + '@rollup/rollup-linux-riscv64-gnu@4.47.1': 2451 1094 optional: true 2452 1095 2453 - '@rollup/rollup-linux-x64-gnu@4.45.3': 1096 + '@rollup/rollup-linux-riscv64-musl@4.47.1': 2454 1097 optional: true 2455 1098 2456 - '@rollup/rollup-linux-x64-musl@4.45.3': 1099 + '@rollup/rollup-linux-s390x-gnu@4.47.1': 2457 1100 optional: true 2458 1101 2459 - '@rollup/rollup-win32-arm64-msvc@4.45.3': 1102 + '@rollup/rollup-linux-x64-gnu@4.47.1': 2460 1103 optional: true 2461 1104 2462 - '@rollup/rollup-win32-ia32-msvc@4.45.3': 1105 + '@rollup/rollup-linux-x64-musl@4.47.1': 2463 1106 optional: true 2464 1107 2465 - '@rollup/rollup-win32-x64-msvc@4.45.3': 1108 + '@rollup/rollup-win32-arm64-msvc@4.47.1': 2466 1109 optional: true 2467 1110 2468 - '@shikijs/core@3.8.1': 2469 - dependencies: 2470 - '@shikijs/types': 3.8.1 2471 - '@shikijs/vscode-textmate': 10.0.2 2472 - '@types/hast': 3.0.4 2473 - hast-util-to-html: 9.0.5 2474 - 2475 - '@shikijs/engine-javascript@3.8.1': 2476 - dependencies: 2477 - '@shikijs/types': 3.8.1 2478 - '@shikijs/vscode-textmate': 10.0.2 2479 - oniguruma-to-es: 4.3.3 2480 - 2481 - '@shikijs/engine-oniguruma@3.8.1': 2482 - dependencies: 2483 - '@shikijs/types': 3.8.1 2484 - '@shikijs/vscode-textmate': 10.0.2 2485 - 2486 - '@shikijs/langs@3.8.1': 2487 - dependencies: 2488 - '@shikijs/types': 3.8.1 1111 + '@rollup/rollup-win32-ia32-msvc@4.47.1': 1112 + optional: true 2489 1113 2490 - '@shikijs/themes@3.8.1': 2491 - dependencies: 2492 - '@shikijs/types': 3.8.1 1114 + '@rollup/rollup-win32-x64-msvc@4.47.1': 1115 + optional: true 2493 1116 2494 - '@shikijs/types@3.8.1': 1117 + '@solid-devtools/debugger@0.28.1(solid-js@1.9.9)': 2495 1118 dependencies: 2496 - '@shikijs/vscode-textmate': 10.0.2 2497 - '@types/hast': 3.0.4 1119 + '@nothing-but/utils': 0.17.0 1120 + '@solid-devtools/shared': 0.20.0(solid-js@1.9.9) 1121 + '@solid-primitives/bounds': 0.1.3(solid-js@1.9.9) 1122 + '@solid-primitives/event-listener': 2.4.3(solid-js@1.9.9) 1123 + '@solid-primitives/keyboard': 1.3.3(solid-js@1.9.9) 1124 + '@solid-primitives/rootless': 1.5.2(solid-js@1.9.9) 1125 + '@solid-primitives/scheduled': 1.5.2(solid-js@1.9.9) 1126 + '@solid-primitives/static-store': 0.1.2(solid-js@1.9.9) 1127 + '@solid-primitives/utils': 6.3.2(solid-js@1.9.9) 1128 + solid-js: 1.9.9 2498 1129 2499 - '@shikijs/vscode-textmate@10.0.2': {} 2500 - 2501 - '@swc/helpers@0.5.17': 1130 + '@solid-devtools/shared@0.20.0(solid-js@1.9.9)': 2502 1131 dependencies: 2503 - tslib: 2.8.1 1132 + '@nothing-but/utils': 0.17.0 1133 + '@solid-primitives/event-listener': 2.4.3(solid-js@1.9.9) 1134 + '@solid-primitives/media': 2.3.3(solid-js@1.9.9) 1135 + '@solid-primitives/refs': 1.1.2(solid-js@1.9.9) 1136 + '@solid-primitives/rootless': 1.5.2(solid-js@1.9.9) 1137 + '@solid-primitives/scheduled': 1.5.2(solid-js@1.9.9) 1138 + '@solid-primitives/static-store': 0.1.2(solid-js@1.9.9) 1139 + '@solid-primitives/styles': 0.1.2(solid-js@1.9.9) 1140 + '@solid-primitives/utils': 6.3.2(solid-js@1.9.9) 1141 + solid-js: 1.9.9 2504 1142 2505 - '@types/debug@4.1.12': 1143 + '@solid-primitives/bounds@0.1.3(solid-js@1.9.9)': 2506 1144 dependencies: 2507 - '@types/ms': 2.1.0 1145 + '@solid-primitives/event-listener': 2.4.3(solid-js@1.9.9) 1146 + '@solid-primitives/resize-observer': 2.1.3(solid-js@1.9.9) 1147 + '@solid-primitives/static-store': 0.1.2(solid-js@1.9.9) 1148 + '@solid-primitives/utils': 6.3.2(solid-js@1.9.9) 1149 + solid-js: 1.9.9 2508 1150 2509 - '@types/estree@1.0.8': {} 2510 - 2511 - '@types/fontkit@2.0.8': 1151 + '@solid-primitives/event-listener@2.4.3(solid-js@1.9.9)': 2512 1152 dependencies: 2513 - '@types/node': 24.1.0 1153 + '@solid-primitives/utils': 6.3.2(solid-js@1.9.9) 1154 + solid-js: 1.9.9 2514 1155 2515 - '@types/hast@3.0.4': 1156 + '@solid-primitives/keyboard@1.3.3(solid-js@1.9.9)': 2516 1157 dependencies: 2517 - '@types/unist': 3.0.3 1158 + '@solid-primitives/event-listener': 2.4.3(solid-js@1.9.9) 1159 + '@solid-primitives/rootless': 1.5.2(solid-js@1.9.9) 1160 + '@solid-primitives/utils': 6.3.2(solid-js@1.9.9) 1161 + solid-js: 1.9.9 2518 1162 2519 - '@types/json-schema@7.0.15': {} 2520 - 2521 - '@types/mdast@4.0.4': 1163 + '@solid-primitives/media@2.3.3(solid-js@1.9.9)': 2522 1164 dependencies: 2523 - '@types/unist': 3.0.3 1165 + '@solid-primitives/event-listener': 2.4.3(solid-js@1.9.9) 1166 + '@solid-primitives/rootless': 1.5.2(solid-js@1.9.9) 1167 + '@solid-primitives/static-store': 0.1.2(solid-js@1.9.9) 1168 + '@solid-primitives/utils': 6.3.2(solid-js@1.9.9) 1169 + solid-js: 1.9.9 2524 1170 2525 - '@types/ms@2.1.0': {} 2526 - 2527 - '@types/nlcst@2.0.3': 1171 + '@solid-primitives/refs@1.1.2(solid-js@1.9.9)': 2528 1172 dependencies: 2529 - '@types/unist': 3.0.3 2530 - 2531 - '@types/node@24.1.0': 2532 - dependencies: 2533 - undici-types: 7.8.0 2534 - 2535 - '@types/unist@3.0.3': {} 2536 - 2537 - '@typescript-eslint/eslint-plugin@8.38.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3)': 2538 - dependencies: 2539 - '@eslint-community/regexpp': 4.12.1 2540 - '@typescript-eslint/parser': 8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3) 2541 - '@typescript-eslint/scope-manager': 8.38.0 2542 - '@typescript-eslint/type-utils': 8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3) 2543 - '@typescript-eslint/utils': 8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3) 2544 - '@typescript-eslint/visitor-keys': 8.38.0 2545 - eslint: 9.32.0(jiti@2.5.1) 2546 - graphemer: 1.4.0 2547 - ignore: 7.0.5 2548 - natural-compare: 1.4.0 2549 - ts-api-utils: 2.1.0(typescript@5.8.3) 2550 - typescript: 5.8.3 2551 - transitivePeerDependencies: 2552 - - supports-color 2553 - 2554 - '@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3)': 2555 - dependencies: 2556 - '@typescript-eslint/scope-manager': 8.38.0 2557 - '@typescript-eslint/types': 8.38.0 2558 - '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.8.3) 2559 - '@typescript-eslint/visitor-keys': 8.38.0 2560 - debug: 4.4.1 2561 - eslint: 9.32.0(jiti@2.5.1) 2562 - typescript: 5.8.3 2563 - transitivePeerDependencies: 2564 - - supports-color 1173 + '@solid-primitives/utils': 6.3.2(solid-js@1.9.9) 1174 + solid-js: 1.9.9 2565 1175 2566 - '@typescript-eslint/project-service@8.38.0(typescript@5.8.3)': 1176 + '@solid-primitives/resize-observer@2.1.3(solid-js@1.9.9)': 2567 1177 dependencies: 2568 - '@typescript-eslint/tsconfig-utils': 8.38.0(typescript@5.8.3) 2569 - '@typescript-eslint/types': 8.38.0 2570 - debug: 4.4.1 2571 - typescript: 5.8.3 2572 - transitivePeerDependencies: 2573 - - supports-color 1178 + '@solid-primitives/event-listener': 2.4.3(solid-js@1.9.9) 1179 + '@solid-primitives/rootless': 1.5.2(solid-js@1.9.9) 1180 + '@solid-primitives/static-store': 0.1.2(solid-js@1.9.9) 1181 + '@solid-primitives/utils': 6.3.2(solid-js@1.9.9) 1182 + solid-js: 1.9.9 2574 1183 2575 - '@typescript-eslint/scope-manager@8.38.0': 1184 + '@solid-primitives/rootless@1.5.2(solid-js@1.9.9)': 2576 1185 dependencies: 2577 - '@typescript-eslint/types': 8.38.0 2578 - '@typescript-eslint/visitor-keys': 8.38.0 1186 + '@solid-primitives/utils': 6.3.2(solid-js@1.9.9) 1187 + solid-js: 1.9.9 2579 1188 2580 - '@typescript-eslint/tsconfig-utils@8.38.0(typescript@5.8.3)': 1189 + '@solid-primitives/scheduled@1.5.2(solid-js@1.9.9)': 2581 1190 dependencies: 2582 - typescript: 5.8.3 1191 + solid-js: 1.9.9 2583 1192 2584 - '@typescript-eslint/type-utils@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3)': 1193 + '@solid-primitives/static-store@0.1.2(solid-js@1.9.9)': 2585 1194 dependencies: 2586 - '@typescript-eslint/types': 8.38.0 2587 - '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.8.3) 2588 - '@typescript-eslint/utils': 8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3) 2589 - debug: 4.4.1 2590 - eslint: 9.32.0(jiti@2.5.1) 2591 - ts-api-utils: 2.1.0(typescript@5.8.3) 2592 - typescript: 5.8.3 2593 - transitivePeerDependencies: 2594 - - supports-color 2595 - 2596 - '@typescript-eslint/types@8.38.0': {} 1195 + '@solid-primitives/utils': 6.3.2(solid-js@1.9.9) 1196 + solid-js: 1.9.9 2597 1197 2598 - '@typescript-eslint/typescript-estree@8.38.0(typescript@5.8.3)': 1198 + '@solid-primitives/styles@0.1.2(solid-js@1.9.9)': 2599 1199 dependencies: 2600 - '@typescript-eslint/project-service': 8.38.0(typescript@5.8.3) 2601 - '@typescript-eslint/tsconfig-utils': 8.38.0(typescript@5.8.3) 2602 - '@typescript-eslint/types': 8.38.0 2603 - '@typescript-eslint/visitor-keys': 8.38.0 2604 - debug: 4.4.1 2605 - fast-glob: 3.3.3 2606 - is-glob: 4.0.3 2607 - minimatch: 9.0.5 2608 - semver: 7.7.2 2609 - ts-api-utils: 2.1.0(typescript@5.8.3) 2610 - typescript: 5.8.3 2611 - transitivePeerDependencies: 2612 - - supports-color 1200 + '@solid-primitives/rootless': 1.5.2(solid-js@1.9.9) 1201 + '@solid-primitives/utils': 6.3.2(solid-js@1.9.9) 1202 + solid-js: 1.9.9 2613 1203 2614 - '@typescript-eslint/utils@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3)': 1204 + '@solid-primitives/utils@6.3.2(solid-js@1.9.9)': 2615 1205 dependencies: 2616 - '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.5.1)) 2617 - '@typescript-eslint/scope-manager': 8.38.0 2618 - '@typescript-eslint/types': 8.38.0 2619 - '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.8.3) 2620 - eslint: 9.32.0(jiti@2.5.1) 2621 - typescript: 5.8.3 2622 - transitivePeerDependencies: 2623 - - supports-color 1206 + solid-js: 1.9.9 2624 1207 2625 - '@typescript-eslint/visitor-keys@8.38.0': 1208 + '@solidjs/router@0.15.3(solid-js@1.9.9)': 2626 1209 dependencies: 2627 - '@typescript-eslint/types': 8.38.0 2628 - eslint-visitor-keys: 4.2.1 1210 + solid-js: 1.9.9 2629 1211 2630 - '@ungap/structured-clone@1.3.0': {} 2631 - 2632 - acorn-jsx@5.3.2(acorn@8.15.0): 1212 + '@types/babel__core@7.20.5': 2633 1213 dependencies: 2634 - acorn: 8.15.0 2635 - 2636 - acorn@8.15.0: {} 1214 + '@babel/parser': 7.28.3 1215 + '@babel/types': 7.28.2 1216 + '@types/babel__generator': 7.27.0 1217 + '@types/babel__template': 7.4.4 1218 + '@types/babel__traverse': 7.28.0 2637 1219 2638 - ajv@6.12.6: 1220 + '@types/babel__generator@7.27.0': 2639 1221 dependencies: 2640 - fast-deep-equal: 3.1.3 2641 - fast-json-stable-stringify: 2.1.0 2642 - json-schema-traverse: 0.4.1 2643 - uri-js: 4.4.1 1222 + '@babel/types': 7.28.2 2644 1223 2645 - ansi-align@3.0.1: 1224 + '@types/babel__template@7.4.4': 2646 1225 dependencies: 2647 - string-width: 4.2.3 1226 + '@babel/parser': 7.28.3 1227 + '@babel/types': 7.28.2 2648 1228 2649 - ansi-regex@5.0.1: {} 2650 - 2651 - ansi-regex@6.1.0: {} 2652 - 2653 - ansi-styles@4.3.0: 1229 + '@types/babel__traverse@7.28.0': 2654 1230 dependencies: 2655 - color-convert: 2.0.1 1231 + '@babel/types': 7.28.2 2656 1232 2657 - ansi-styles@6.2.1: {} 1233 + '@types/estree@1.0.8': {} 2658 1234 2659 - anymatch@3.1.3: 1235 + '@types/node@24.3.0': 2660 1236 dependencies: 2661 - normalize-path: 3.0.0 2662 - picomatch: 2.3.1 2663 - 2664 - argparse@2.0.1: {} 2665 - 2666 - aria-query@5.3.2: {} 1237 + undici-types: 7.10.0 2667 1238 2668 - array-iterate@2.0.1: {} 2669 - 2670 - astro-eslint-parser@1.2.2: 1239 + babel-plugin-jsx-dom-expressions@0.40.1(@babel/core@7.28.3): 2671 1240 dependencies: 2672 - '@astrojs/compiler': 2.12.2 2673 - '@typescript-eslint/scope-manager': 8.38.0 2674 - '@typescript-eslint/types': 8.38.0 2675 - astrojs-compiler-sync: 1.1.1(@astrojs/compiler@2.12.2) 2676 - debug: 4.4.1 2677 - entities: 6.0.1 2678 - eslint-scope: 8.4.0 2679 - eslint-visitor-keys: 4.2.1 2680 - espree: 10.4.0 2681 - fast-glob: 3.3.3 2682 - is-glob: 4.0.3 2683 - semver: 7.7.2 2684 - transitivePeerDependencies: 2685 - - supports-color 1241 + '@babel/core': 7.28.3 1242 + '@babel/helper-module-imports': 7.18.6 1243 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.3) 1244 + '@babel/types': 7.28.2 1245 + html-entities: 2.3.3 1246 + parse5: 7.3.0 1247 + validate-html-nesting: 1.2.3 2686 1248 2687 - astro@5.12.3(@types/node@24.1.0)(jiti@2.5.1)(rollup@4.45.3)(typescript@5.8.3): 1249 + babel-preset-solid@1.9.9(@babel/core@7.28.3)(solid-js@1.9.9): 2688 1250 dependencies: 2689 - '@astrojs/compiler': 2.12.2 2690 - '@astrojs/internal-helpers': 0.6.1 2691 - '@astrojs/markdown-remark': 6.3.3 2692 - '@astrojs/telemetry': 3.3.0 2693 - '@capsizecss/unpack': 2.4.0 2694 - '@oslojs/encoding': 1.1.0 2695 - '@rollup/pluginutils': 5.2.0(rollup@4.45.3) 2696 - acorn: 8.15.0 2697 - aria-query: 5.3.2 2698 - axobject-query: 4.1.0 2699 - boxen: 8.0.1 2700 - ci-info: 4.3.0 2701 - clsx: 2.1.1 2702 - common-ancestor-path: 1.0.1 2703 - cookie: 1.0.2 2704 - cssesc: 3.0.0 2705 - debug: 4.4.1 2706 - deterministic-object-hash: 2.0.2 2707 - devalue: 5.1.1 2708 - diff: 5.2.0 2709 - dlv: 1.1.3 2710 - dset: 3.1.4 2711 - es-module-lexer: 1.7.0 2712 - esbuild: 0.25.8 2713 - estree-walker: 3.0.3 2714 - flattie: 1.1.1 2715 - fontace: 0.3.0 2716 - github-slugger: 2.0.0 2717 - html-escaper: 3.0.3 2718 - http-cache-semantics: 4.2.0 2719 - import-meta-resolve: 4.1.0 2720 - js-yaml: 4.1.0 2721 - kleur: 4.1.5 2722 - magic-string: 0.30.17 2723 - magicast: 0.3.5 2724 - mrmime: 2.0.1 2725 - neotraverse: 0.6.18 2726 - p-limit: 6.2.0 2727 - p-queue: 8.1.0 2728 - package-manager-detector: 1.3.0 2729 - picomatch: 4.0.3 2730 - prompts: 2.4.2 2731 - rehype: 13.0.2 2732 - semver: 7.7.2 2733 - shiki: 3.8.1 2734 - smol-toml: 1.4.1 2735 - tinyexec: 0.3.2 2736 - tinyglobby: 0.2.14 2737 - tsconfck: 3.1.6(typescript@5.8.3) 2738 - ultrahtml: 1.6.0 2739 - unifont: 0.5.2 2740 - unist-util-visit: 5.0.0 2741 - unstorage: 1.16.1 2742 - vfile: 6.0.3 2743 - vite: 6.3.5(@types/node@24.1.0)(jiti@2.5.1) 2744 - vitefu: 1.1.1(vite@6.3.5(@types/node@24.1.0)(jiti@2.5.1)) 2745 - xxhash-wasm: 1.1.0 2746 - yargs-parser: 21.1.1 2747 - yocto-spinner: 0.2.3 2748 - zod: 3.25.76 2749 - zod-to-json-schema: 3.24.6(zod@3.25.76) 2750 - zod-to-ts: 1.2.0(typescript@5.8.3)(zod@3.25.76) 1251 + '@babel/core': 7.28.3 1252 + babel-plugin-jsx-dom-expressions: 0.40.1(@babel/core@7.28.3) 2751 1253 optionalDependencies: 2752 - sharp: 0.33.5 2753 - transitivePeerDependencies: 2754 - - '@azure/app-configuration' 2755 - - '@azure/cosmos' 2756 - - '@azure/data-tables' 2757 - - '@azure/identity' 2758 - - '@azure/keyvault-secrets' 2759 - - '@azure/storage-blob' 2760 - - '@capacitor/preferences' 2761 - - '@deno/kv' 2762 - - '@netlify/blobs' 2763 - - '@planetscale/database' 2764 - - '@types/node' 2765 - - '@upstash/redis' 2766 - - '@vercel/blob' 2767 - - '@vercel/kv' 2768 - - aws4fetch 2769 - - db0 2770 - - encoding 2771 - - idb-keyval 2772 - - ioredis 2773 - - jiti 2774 - - less 2775 - - lightningcss 2776 - - rollup 2777 - - sass 2778 - - sass-embedded 2779 - - stylus 2780 - - sugarss 2781 - - supports-color 2782 - - terser 2783 - - tsx 2784 - - typescript 2785 - - uploadthing 2786 - - yaml 2787 - 2788 - astrojs-compiler-sync@1.1.1(@astrojs/compiler@2.12.2): 2789 - dependencies: 2790 - '@astrojs/compiler': 2.12.2 2791 - synckit: 0.11.11 2792 - 2793 - axobject-query@4.1.0: {} 2794 - 2795 - bail@2.0.2: {} 2796 - 2797 - balanced-match@1.0.2: {} 2798 - 2799 - base-64@1.0.0: {} 2800 - 2801 - base64-js@1.5.1: {} 2802 - 2803 - blob-to-buffer@1.2.9: {} 2804 - 2805 - boxen@8.0.1: 2806 - dependencies: 2807 - ansi-align: 3.0.1 2808 - camelcase: 8.0.0 2809 - chalk: 5.4.1 2810 - cli-boxes: 3.0.0 2811 - string-width: 7.2.0 2812 - type-fest: 4.41.0 2813 - widest-line: 5.0.0 2814 - wrap-ansi: 9.0.0 2815 - 2816 - brace-expansion@1.1.12: 2817 - dependencies: 2818 - balanced-match: 1.0.2 2819 - concat-map: 0.0.1 2820 - 2821 - brace-expansion@2.0.2: 2822 - dependencies: 2823 - balanced-match: 1.0.2 2824 - 2825 - braces@3.0.3: 2826 - dependencies: 2827 - fill-range: 7.1.1 2828 - 2829 - brotli@1.3.3: 2830 - dependencies: 2831 - base64-js: 1.5.1 2832 - 2833 - callsites@3.1.0: {} 2834 - 2835 - camelcase@8.0.0: {} 2836 - 2837 - ccount@2.0.1: {} 2838 - 2839 - chalk@4.1.2: 2840 - dependencies: 2841 - ansi-styles: 4.3.0 2842 - supports-color: 7.2.0 2843 - 2844 - chalk@5.4.1: {} 2845 - 2846 - character-entities-html4@2.1.0: {} 1254 + solid-js: 1.9.9 2847 1255 2848 - character-entities-legacy@3.0.0: {} 2849 - 2850 - character-entities@2.0.2: {} 2851 - 2852 - chokidar@4.0.3: 1256 + browserslist@4.25.3: 2853 1257 dependencies: 2854 - readdirp: 4.1.2 1258 + caniuse-lite: 1.0.30001737 1259 + electron-to-chromium: 1.5.208 1260 + node-releases: 2.0.19 1261 + update-browserslist-db: 1.1.3(browserslist@4.25.3) 2855 1262 2856 - ci-info@4.3.0: {} 1263 + caniuse-lite@1.0.30001737: {} 2857 1264 2858 - cli-boxes@3.0.0: {} 1265 + convert-source-map@2.0.0: {} 2859 1266 2860 - clone@2.1.2: {} 2861 - 2862 - clsx@2.1.1: {} 2863 - 2864 - color-convert@2.0.1: 2865 - dependencies: 2866 - color-name: 1.1.4 2867 - 2868 - color-name@1.1.4: {} 2869 - 2870 - color-string@1.9.1: 2871 - dependencies: 2872 - color-name: 1.1.4 2873 - simple-swizzle: 0.2.2 2874 - optional: true 2875 - 2876 - color@4.2.3: 2877 - dependencies: 2878 - color-convert: 2.0.1 2879 - color-string: 1.9.1 2880 - optional: true 2881 - 2882 - comma-separated-tokens@2.0.3: {} 2883 - 2884 - common-ancestor-path@1.0.1: {} 2885 - 2886 - concat-map@0.0.1: {} 2887 - 2888 - cookie-es@1.2.2: {} 2889 - 2890 - cookie@1.0.2: {} 2891 - 2892 - cross-fetch@3.2.0: 2893 - dependencies: 2894 - node-fetch: 2.7.0 2895 - transitivePeerDependencies: 2896 - - encoding 2897 - 2898 - cross-spawn@7.0.6: 2899 - dependencies: 2900 - path-key: 3.1.1 2901 - shebang-command: 2.0.0 2902 - which: 2.0.2 2903 - 2904 - crossws@0.3.5: 2905 - dependencies: 2906 - uncrypto: 0.1.3 2907 - 2908 - css-tree@3.1.0: 2909 - dependencies: 2910 - mdn-data: 2.12.2 2911 - source-map-js: 1.2.1 2912 - 2913 - cssesc@3.0.0: {} 1267 + csstype@3.1.3: {} 2914 1268 2915 1269 debug@4.4.1: 2916 1270 dependencies: 2917 1271 ms: 2.1.3 2918 1272 2919 - decode-named-character-reference@1.2.0: 2920 - dependencies: 2921 - character-entities: 2.0.2 2922 - 2923 - deep-is@0.1.4: {} 2924 - 2925 - defu@6.1.4: {} 2926 - 2927 - dequal@2.0.3: {} 2928 - 2929 - destr@2.0.5: {} 2930 - 2931 - detect-libc@2.0.4: 2932 - optional: true 2933 - 2934 - deterministic-object-hash@2.0.2: 2935 - dependencies: 2936 - base-64: 1.0.0 2937 - 2938 - devalue@5.1.1: {} 2939 - 2940 - devlop@1.1.0: 2941 - dependencies: 2942 - dequal: 2.0.3 2943 - 2944 - dfa@1.2.0: {} 2945 - 2946 - diff@5.2.0: {} 2947 - 2948 - dlv@1.1.3: {} 2949 - 2950 - dset@3.1.4: {} 2951 - 2952 - emoji-regex@10.4.0: {} 2953 - 2954 - emoji-regex@8.0.0: {} 1273 + electron-to-chromium@1.5.208: {} 2955 1274 2956 1275 entities@6.0.1: {} 2957 1276 2958 - es-module-lexer@1.7.0: {} 2959 - 2960 - esbuild@0.25.8: 1277 + esbuild@0.25.9: 2961 1278 optionalDependencies: 2962 - '@esbuild/aix-ppc64': 0.25.8 2963 - '@esbuild/android-arm': 0.25.8 2964 - '@esbuild/android-arm64': 0.25.8 2965 - '@esbuild/android-x64': 0.25.8 2966 - '@esbuild/darwin-arm64': 0.25.8 2967 - '@esbuild/darwin-x64': 0.25.8 2968 - '@esbuild/freebsd-arm64': 0.25.8 2969 - '@esbuild/freebsd-x64': 0.25.8 2970 - '@esbuild/linux-arm': 0.25.8 2971 - '@esbuild/linux-arm64': 0.25.8 2972 - '@esbuild/linux-ia32': 0.25.8 2973 - '@esbuild/linux-loong64': 0.25.8 2974 - '@esbuild/linux-mips64el': 0.25.8 2975 - '@esbuild/linux-ppc64': 0.25.8 2976 - '@esbuild/linux-riscv64': 0.25.8 2977 - '@esbuild/linux-s390x': 0.25.8 2978 - '@esbuild/linux-x64': 0.25.8 2979 - '@esbuild/netbsd-arm64': 0.25.8 2980 - '@esbuild/netbsd-x64': 0.25.8 2981 - '@esbuild/openbsd-arm64': 0.25.8 2982 - '@esbuild/openbsd-x64': 0.25.8 2983 - '@esbuild/openharmony-arm64': 0.25.8 2984 - '@esbuild/sunos-x64': 0.25.8 2985 - '@esbuild/win32-arm64': 0.25.8 2986 - '@esbuild/win32-ia32': 0.25.8 2987 - '@esbuild/win32-x64': 0.25.8 1279 + '@esbuild/aix-ppc64': 0.25.9 1280 + '@esbuild/android-arm': 0.25.9 1281 + '@esbuild/android-arm64': 0.25.9 1282 + '@esbuild/android-x64': 0.25.9 1283 + '@esbuild/darwin-arm64': 0.25.9 1284 + '@esbuild/darwin-x64': 0.25.9 1285 + '@esbuild/freebsd-arm64': 0.25.9 1286 + '@esbuild/freebsd-x64': 0.25.9 1287 + '@esbuild/linux-arm': 0.25.9 1288 + '@esbuild/linux-arm64': 0.25.9 1289 + '@esbuild/linux-ia32': 0.25.9 1290 + '@esbuild/linux-loong64': 0.25.9 1291 + '@esbuild/linux-mips64el': 0.25.9 1292 + '@esbuild/linux-ppc64': 0.25.9 1293 + '@esbuild/linux-riscv64': 0.25.9 1294 + '@esbuild/linux-s390x': 0.25.9 1295 + '@esbuild/linux-x64': 0.25.9 1296 + '@esbuild/netbsd-arm64': 0.25.9 1297 + '@esbuild/netbsd-x64': 0.25.9 1298 + '@esbuild/openbsd-arm64': 0.25.9 1299 + '@esbuild/openbsd-x64': 0.25.9 1300 + '@esbuild/openharmony-arm64': 0.25.9 1301 + '@esbuild/sunos-x64': 0.25.9 1302 + '@esbuild/win32-arm64': 0.25.9 1303 + '@esbuild/win32-ia32': 0.25.9 1304 + '@esbuild/win32-x64': 0.25.9 2988 1305 2989 - escape-string-regexp@4.0.0: {} 2990 - 2991 - escape-string-regexp@5.0.0: {} 2992 - 2993 - eslint-compat-utils@0.6.5(eslint@9.32.0(jiti@2.5.1)): 2994 - dependencies: 2995 - eslint: 9.32.0(jiti@2.5.1) 2996 - semver: 7.7.2 2997 - 2998 - eslint-config-prettier@10.1.8(eslint@9.32.0(jiti@2.5.1)): 2999 - dependencies: 3000 - eslint: 9.32.0(jiti@2.5.1) 3001 - 3002 - eslint-plugin-astro@1.3.1(eslint@9.32.0(jiti@2.5.1)): 3003 - dependencies: 3004 - '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.5.1)) 3005 - '@jridgewell/sourcemap-codec': 1.5.4 3006 - '@typescript-eslint/types': 8.38.0 3007 - astro-eslint-parser: 1.2.2 3008 - eslint: 9.32.0(jiti@2.5.1) 3009 - eslint-compat-utils: 0.6.5(eslint@9.32.0(jiti@2.5.1)) 3010 - globals: 15.15.0 3011 - postcss: 8.5.6 3012 - postcss-selector-parser: 7.1.0 3013 - transitivePeerDependencies: 3014 - - supports-color 3015 - 3016 - eslint-plugin-prettier@5.5.3(eslint-config-prettier@10.1.8(eslint@9.32.0(jiti@2.5.1)))(eslint@9.32.0(jiti@2.5.1))(prettier@3.6.2): 3017 - dependencies: 3018 - eslint: 9.32.0(jiti@2.5.1) 3019 - prettier: 3.6.2 3020 - prettier-linter-helpers: 1.0.0 3021 - synckit: 0.11.11 3022 - optionalDependencies: 3023 - eslint-config-prettier: 10.1.8(eslint@9.32.0(jiti@2.5.1)) 3024 - 3025 - eslint-scope@8.4.0: 3026 - dependencies: 3027 - esrecurse: 4.3.0 3028 - estraverse: 5.3.0 3029 - 3030 - eslint-visitor-keys@3.4.3: {} 3031 - 3032 - eslint-visitor-keys@4.2.1: {} 3033 - 3034 - eslint@9.32.0(jiti@2.5.1): 3035 - dependencies: 3036 - '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.5.1)) 3037 - '@eslint-community/regexpp': 4.12.1 3038 - '@eslint/config-array': 0.21.0 3039 - '@eslint/config-helpers': 0.3.0 3040 - '@eslint/core': 0.15.1 3041 - '@eslint/eslintrc': 3.3.1 3042 - '@eslint/js': 9.32.0 3043 - '@eslint/plugin-kit': 0.3.4 3044 - '@humanfs/node': 0.16.6 3045 - '@humanwhocodes/module-importer': 1.0.1 3046 - '@humanwhocodes/retry': 0.4.3 3047 - '@types/estree': 1.0.8 3048 - '@types/json-schema': 7.0.15 3049 - ajv: 6.12.6 3050 - chalk: 4.1.2 3051 - cross-spawn: 7.0.6 3052 - debug: 4.4.1 3053 - escape-string-regexp: 4.0.0 3054 - eslint-scope: 8.4.0 3055 - eslint-visitor-keys: 4.2.1 3056 - espree: 10.4.0 3057 - esquery: 1.6.0 3058 - esutils: 2.0.3 3059 - fast-deep-equal: 3.1.3 3060 - file-entry-cache: 8.0.0 3061 - find-up: 5.0.0 3062 - glob-parent: 6.0.2 3063 - ignore: 5.3.2 3064 - imurmurhash: 0.1.4 3065 - is-glob: 4.0.3 3066 - json-stable-stringify-without-jsonify: 1.0.1 3067 - lodash.merge: 4.6.2 3068 - minimatch: 3.1.2 3069 - natural-compare: 1.4.0 3070 - optionator: 0.9.4 3071 - optionalDependencies: 3072 - jiti: 2.5.1 3073 - transitivePeerDependencies: 3074 - - supports-color 1306 + escalade@3.2.0: {} 3075 1307 3076 1308 esm-env@1.2.2: {} 3077 1309 3078 - espree@10.4.0: 3079 - dependencies: 3080 - acorn: 8.15.0 3081 - acorn-jsx: 5.3.2(acorn@8.15.0) 3082 - eslint-visitor-keys: 4.2.1 3083 - 3084 - esquery@1.6.0: 3085 - dependencies: 3086 - estraverse: 5.3.0 3087 - 3088 - esrecurse@4.3.0: 3089 - dependencies: 3090 - estraverse: 5.3.0 3091 - 3092 - estraverse@5.3.0: {} 3093 - 3094 - estree-walker@2.0.2: {} 3095 - 3096 - estree-walker@3.0.3: 3097 - dependencies: 3098 - '@types/estree': 1.0.8 3099 - 3100 - esutils@2.0.3: {} 3101 - 3102 - eventemitter3@5.0.1: {} 3103 - 3104 - extend@3.0.2: {} 3105 - 3106 - fast-deep-equal@3.1.3: {} 3107 - 3108 - fast-diff@1.3.0: {} 3109 - 3110 - fast-glob@3.3.3: 3111 - dependencies: 3112 - '@nodelib/fs.stat': 2.0.5 3113 - '@nodelib/fs.walk': 1.2.8 3114 - glob-parent: 5.1.2 3115 - merge2: 1.4.1 3116 - micromatch: 4.0.8 3117 - 3118 - fast-json-stable-stringify@2.1.0: {} 3119 - 3120 - fast-levenshtein@2.0.6: {} 3121 - 3122 - fastq@1.19.1: 3123 - dependencies: 3124 - reusify: 1.1.0 3125 - 3126 - fdir@6.4.6(picomatch@4.0.3): 1310 + fdir@6.5.0(picomatch@4.0.3): 3127 1311 optionalDependencies: 3128 1312 picomatch: 4.0.3 3129 1313 3130 - file-entry-cache@8.0.0: 3131 - dependencies: 3132 - flat-cache: 4.0.1 3133 - 3134 - fill-range@7.1.1: 3135 - dependencies: 3136 - to-regex-range: 5.0.1 3137 - 3138 - find-up@5.0.0: 3139 - dependencies: 3140 - locate-path: 6.0.0 3141 - path-exists: 4.0.0 3142 - 3143 - flat-cache@4.0.1: 3144 - dependencies: 3145 - flatted: 3.3.3 3146 - keyv: 4.5.4 3147 - 3148 - flatted@3.3.3: {} 3149 - 3150 - flattie@1.1.1: {} 3151 - 3152 - fontace@0.3.0: 3153 - dependencies: 3154 - '@types/fontkit': 2.0.8 3155 - fontkit: 2.0.4 3156 - 3157 - fontkit@2.0.4: 3158 - dependencies: 3159 - '@swc/helpers': 0.5.17 3160 - brotli: 1.3.3 3161 - clone: 2.1.2 3162 - dfa: 1.2.0 3163 - fast-deep-equal: 3.1.3 3164 - restructure: 3.0.2 3165 - tiny-inflate: 1.0.3 3166 - unicode-properties: 1.4.1 3167 - unicode-trie: 2.0.0 3168 - 3169 1314 fsevents@2.3.3: 3170 1315 optional: true 3171 1316 3172 - get-east-asian-width@1.3.0: {} 3173 - 3174 - github-slugger@2.0.0: {} 3175 - 3176 - glob-parent@5.1.2: 3177 - dependencies: 3178 - is-glob: 4.0.3 3179 - 3180 - glob-parent@6.0.2: 3181 - dependencies: 3182 - is-glob: 4.0.3 3183 - 3184 - globals@14.0.0: {} 3185 - 3186 - globals@15.15.0: {} 3187 - 3188 - globals@16.3.0: {} 3189 - 3190 - graphemer@1.4.0: {} 3191 - 3192 - h3@1.15.3: 3193 - dependencies: 3194 - cookie-es: 1.2.2 3195 - crossws: 0.3.5 3196 - defu: 6.1.4 3197 - destr: 2.0.5 3198 - iron-webcrypto: 1.2.1 3199 - node-mock-http: 1.0.1 3200 - radix3: 1.1.2 3201 - ufo: 1.6.1 3202 - uncrypto: 0.1.3 3203 - 3204 - has-flag@4.0.0: {} 3205 - 3206 - hast-util-from-html@2.0.3: 3207 - dependencies: 3208 - '@types/hast': 3.0.4 3209 - devlop: 1.1.0 3210 - hast-util-from-parse5: 8.0.3 3211 - parse5: 7.3.0 3212 - vfile: 6.0.3 3213 - vfile-message: 4.0.3 3214 - 3215 - hast-util-from-parse5@8.0.3: 3216 - dependencies: 3217 - '@types/hast': 3.0.4 3218 - '@types/unist': 3.0.3 3219 - devlop: 1.1.0 3220 - hastscript: 9.0.1 3221 - property-information: 7.1.0 3222 - vfile: 6.0.3 3223 - vfile-location: 5.0.3 3224 - web-namespaces: 2.0.1 3225 - 3226 - hast-util-is-element@3.0.0: 3227 - dependencies: 3228 - '@types/hast': 3.0.4 3229 - 3230 - hast-util-parse-selector@4.0.0: 3231 - dependencies: 3232 - '@types/hast': 3.0.4 3233 - 3234 - hast-util-raw@9.1.0: 3235 - dependencies: 3236 - '@types/hast': 3.0.4 3237 - '@types/unist': 3.0.3 3238 - '@ungap/structured-clone': 1.3.0 3239 - hast-util-from-parse5: 8.0.3 3240 - hast-util-to-parse5: 8.0.0 3241 - html-void-elements: 3.0.0 3242 - mdast-util-to-hast: 13.2.0 3243 - parse5: 7.3.0 3244 - unist-util-position: 5.0.0 3245 - unist-util-visit: 5.0.0 3246 - vfile: 6.0.3 3247 - web-namespaces: 2.0.1 3248 - zwitch: 2.0.4 3249 - 3250 - hast-util-to-html@9.0.5: 3251 - dependencies: 3252 - '@types/hast': 3.0.4 3253 - '@types/unist': 3.0.3 3254 - ccount: 2.0.1 3255 - comma-separated-tokens: 2.0.3 3256 - hast-util-whitespace: 3.0.0 3257 - html-void-elements: 3.0.0 3258 - mdast-util-to-hast: 13.2.0 3259 - property-information: 7.1.0 3260 - space-separated-tokens: 2.0.2 3261 - stringify-entities: 4.0.4 3262 - zwitch: 2.0.4 3263 - 3264 - hast-util-to-parse5@8.0.0: 3265 - dependencies: 3266 - '@types/hast': 3.0.4 3267 - comma-separated-tokens: 2.0.3 3268 - devlop: 1.1.0 3269 - property-information: 6.5.0 3270 - space-separated-tokens: 2.0.2 3271 - web-namespaces: 2.0.1 3272 - zwitch: 2.0.4 3273 - 3274 - hast-util-to-text@4.0.2: 3275 - dependencies: 3276 - '@types/hast': 3.0.4 3277 - '@types/unist': 3.0.3 3278 - hast-util-is-element: 3.0.0 3279 - unist-util-find-after: 5.0.0 3280 - 3281 - hast-util-whitespace@3.0.0: 3282 - dependencies: 3283 - '@types/hast': 3.0.4 3284 - 3285 - hastscript@9.0.1: 3286 - dependencies: 3287 - '@types/hast': 3.0.4 3288 - comma-separated-tokens: 2.0.3 3289 - hast-util-parse-selector: 4.0.0 3290 - property-information: 7.1.0 3291 - space-separated-tokens: 2.0.2 3292 - 3293 - html-escaper@3.0.3: {} 3294 - 3295 - html-void-elements@3.0.0: {} 3296 - 3297 - http-cache-semantics@4.2.0: {} 3298 - 3299 - ignore@5.3.2: {} 3300 - 3301 - ignore@7.0.5: {} 3302 - 3303 - import-fresh@3.3.1: 3304 - dependencies: 3305 - parent-module: 1.0.1 3306 - resolve-from: 4.0.0 3307 - 3308 - import-meta-resolve@4.1.0: {} 3309 - 3310 - imurmurhash@0.1.4: {} 3311 - 3312 - iron-webcrypto@1.2.1: {} 3313 - 3314 - is-arrayish@0.3.2: 3315 - optional: true 3316 - 3317 - is-docker@3.0.0: {} 3318 - 3319 - is-extglob@2.1.1: {} 3320 - 3321 - is-fullwidth-code-point@3.0.0: {} 3322 - 3323 - is-glob@4.0.3: 3324 - dependencies: 3325 - is-extglob: 2.1.1 3326 - 3327 - is-inside-container@1.0.0: 3328 - dependencies: 3329 - is-docker: 3.0.0 3330 - 3331 - is-number@7.0.0: {} 3332 - 3333 - is-plain-obj@4.1.0: {} 3334 - 3335 - is-wsl@3.1.0: 3336 - dependencies: 3337 - is-inside-container: 1.0.0 3338 - 3339 - isexe@2.0.0: {} 3340 - 3341 - jiti@2.5.1: {} 3342 - 3343 - js-yaml@4.1.0: 3344 - dependencies: 3345 - argparse: 2.0.1 3346 - 3347 - json-buffer@3.0.1: {} 3348 - 3349 - json-schema-traverse@0.4.1: {} 3350 - 3351 - json-stable-stringify-without-jsonify@1.0.1: {} 3352 - 3353 - keyv@4.5.4: 3354 - dependencies: 3355 - json-buffer: 3.0.1 3356 - 3357 - kleur@3.0.3: {} 3358 - 3359 - kleur@4.1.5: {} 3360 - 3361 - levn@0.4.1: 3362 - dependencies: 3363 - prelude-ls: 1.2.1 3364 - type-check: 0.4.0 3365 - 3366 - locate-path@6.0.0: 3367 - dependencies: 3368 - p-locate: 5.0.0 3369 - 3370 - lodash.merge@4.6.2: {} 3371 - 3372 - longest-streak@3.1.0: {} 3373 - 3374 - lru-cache@10.4.3: {} 3375 - 3376 - magic-string@0.30.17: 3377 - dependencies: 3378 - '@jridgewell/sourcemap-codec': 1.5.4 3379 - 3380 - magicast@0.3.5: 3381 - dependencies: 3382 - '@babel/parser': 7.28.0 3383 - '@babel/types': 7.28.2 3384 - source-map-js: 1.2.1 3385 - 3386 - markdown-table@3.0.4: {} 3387 - 3388 - mdast-util-definitions@6.0.0: 3389 - dependencies: 3390 - '@types/mdast': 4.0.4 3391 - '@types/unist': 3.0.3 3392 - unist-util-visit: 5.0.0 3393 - 3394 - mdast-util-find-and-replace@3.0.2: 3395 - dependencies: 3396 - '@types/mdast': 4.0.4 3397 - escape-string-regexp: 5.0.0 3398 - unist-util-is: 6.0.0 3399 - unist-util-visit-parents: 6.0.1 3400 - 3401 - mdast-util-from-markdown@2.0.2: 3402 - dependencies: 3403 - '@types/mdast': 4.0.4 3404 - '@types/unist': 3.0.3 3405 - decode-named-character-reference: 1.2.0 3406 - devlop: 1.1.0 3407 - mdast-util-to-string: 4.0.0 3408 - micromark: 4.0.2 3409 - micromark-util-decode-numeric-character-reference: 2.0.2 3410 - micromark-util-decode-string: 2.0.1 3411 - micromark-util-normalize-identifier: 2.0.1 3412 - micromark-util-symbol: 2.0.1 3413 - micromark-util-types: 2.0.2 3414 - unist-util-stringify-position: 4.0.0 3415 - transitivePeerDependencies: 3416 - - supports-color 3417 - 3418 - mdast-util-gfm-autolink-literal@2.0.1: 3419 - dependencies: 3420 - '@types/mdast': 4.0.4 3421 - ccount: 2.0.1 3422 - devlop: 1.1.0 3423 - mdast-util-find-and-replace: 3.0.2 3424 - micromark-util-character: 2.1.1 3425 - 3426 - mdast-util-gfm-footnote@2.1.0: 3427 - dependencies: 3428 - '@types/mdast': 4.0.4 3429 - devlop: 1.1.0 3430 - mdast-util-from-markdown: 2.0.2 3431 - mdast-util-to-markdown: 2.1.2 3432 - micromark-util-normalize-identifier: 2.0.1 3433 - transitivePeerDependencies: 3434 - - supports-color 3435 - 3436 - mdast-util-gfm-strikethrough@2.0.0: 3437 - dependencies: 3438 - '@types/mdast': 4.0.4 3439 - mdast-util-from-markdown: 2.0.2 3440 - mdast-util-to-markdown: 2.1.2 3441 - transitivePeerDependencies: 3442 - - supports-color 3443 - 3444 - mdast-util-gfm-table@2.0.0: 3445 - dependencies: 3446 - '@types/mdast': 4.0.4 3447 - devlop: 1.1.0 3448 - markdown-table: 3.0.4 3449 - mdast-util-from-markdown: 2.0.2 3450 - mdast-util-to-markdown: 2.1.2 3451 - transitivePeerDependencies: 3452 - - supports-color 3453 - 3454 - mdast-util-gfm-task-list-item@2.0.0: 3455 - dependencies: 3456 - '@types/mdast': 4.0.4 3457 - devlop: 1.1.0 3458 - mdast-util-from-markdown: 2.0.2 3459 - mdast-util-to-markdown: 2.1.2 3460 - transitivePeerDependencies: 3461 - - supports-color 3462 - 3463 - mdast-util-gfm@3.1.0: 3464 - dependencies: 3465 - mdast-util-from-markdown: 2.0.2 3466 - mdast-util-gfm-autolink-literal: 2.0.1 3467 - mdast-util-gfm-footnote: 2.1.0 3468 - mdast-util-gfm-strikethrough: 2.0.0 3469 - mdast-util-gfm-table: 2.0.0 3470 - mdast-util-gfm-task-list-item: 2.0.0 3471 - mdast-util-to-markdown: 2.1.2 3472 - transitivePeerDependencies: 3473 - - supports-color 3474 - 3475 - mdast-util-phrasing@4.1.0: 3476 - dependencies: 3477 - '@types/mdast': 4.0.4 3478 - unist-util-is: 6.0.0 3479 - 3480 - mdast-util-to-hast@13.2.0: 3481 - dependencies: 3482 - '@types/hast': 3.0.4 3483 - '@types/mdast': 4.0.4 3484 - '@ungap/structured-clone': 1.3.0 3485 - devlop: 1.1.0 3486 - micromark-util-sanitize-uri: 2.0.1 3487 - trim-lines: 3.0.1 3488 - unist-util-position: 5.0.0 3489 - unist-util-visit: 5.0.0 3490 - vfile: 6.0.3 3491 - 3492 - mdast-util-to-markdown@2.1.2: 3493 - dependencies: 3494 - '@types/mdast': 4.0.4 3495 - '@types/unist': 3.0.3 3496 - longest-streak: 3.1.0 3497 - mdast-util-phrasing: 4.1.0 3498 - mdast-util-to-string: 4.0.0 3499 - micromark-util-classify-character: 2.0.1 3500 - micromark-util-decode-string: 2.0.1 3501 - unist-util-visit: 5.0.0 3502 - zwitch: 2.0.4 3503 - 3504 - mdast-util-to-string@4.0.0: 3505 - dependencies: 3506 - '@types/mdast': 4.0.4 3507 - 3508 - mdn-data@2.12.2: {} 3509 - 3510 - merge2@1.4.1: {} 3511 - 3512 - micromark-core-commonmark@2.0.3: 3513 - dependencies: 3514 - decode-named-character-reference: 1.2.0 3515 - devlop: 1.1.0 3516 - micromark-factory-destination: 2.0.1 3517 - micromark-factory-label: 2.0.1 3518 - micromark-factory-space: 2.0.1 3519 - micromark-factory-title: 2.0.1 3520 - micromark-factory-whitespace: 2.0.1 3521 - micromark-util-character: 2.1.1 3522 - micromark-util-chunked: 2.0.1 3523 - micromark-util-classify-character: 2.0.1 3524 - micromark-util-html-tag-name: 2.0.1 3525 - micromark-util-normalize-identifier: 2.0.1 3526 - micromark-util-resolve-all: 2.0.1 3527 - micromark-util-subtokenize: 2.1.0 3528 - micromark-util-symbol: 2.0.1 3529 - micromark-util-types: 2.0.2 3530 - 3531 - micromark-extension-gfm-autolink-literal@2.1.0: 3532 - dependencies: 3533 - micromark-util-character: 2.1.1 3534 - micromark-util-sanitize-uri: 2.0.1 3535 - micromark-util-symbol: 2.0.1 3536 - micromark-util-types: 2.0.2 3537 - 3538 - micromark-extension-gfm-footnote@2.1.0: 3539 - dependencies: 3540 - devlop: 1.1.0 3541 - micromark-core-commonmark: 2.0.3 3542 - micromark-factory-space: 2.0.1 3543 - micromark-util-character: 2.1.1 3544 - micromark-util-normalize-identifier: 2.0.1 3545 - micromark-util-sanitize-uri: 2.0.1 3546 - micromark-util-symbol: 2.0.1 3547 - micromark-util-types: 2.0.2 3548 - 3549 - micromark-extension-gfm-strikethrough@2.1.0: 3550 - dependencies: 3551 - devlop: 1.1.0 3552 - micromark-util-chunked: 2.0.1 3553 - micromark-util-classify-character: 2.0.1 3554 - micromark-util-resolve-all: 2.0.1 3555 - micromark-util-symbol: 2.0.1 3556 - micromark-util-types: 2.0.2 3557 - 3558 - micromark-extension-gfm-table@2.1.1: 3559 - dependencies: 3560 - devlop: 1.1.0 3561 - micromark-factory-space: 2.0.1 3562 - micromark-util-character: 2.1.1 3563 - micromark-util-symbol: 2.0.1 3564 - micromark-util-types: 2.0.2 3565 - 3566 - micromark-extension-gfm-tagfilter@2.0.0: 3567 - dependencies: 3568 - micromark-util-types: 2.0.2 3569 - 3570 - micromark-extension-gfm-task-list-item@2.1.0: 3571 - dependencies: 3572 - devlop: 1.1.0 3573 - micromark-factory-space: 2.0.1 3574 - micromark-util-character: 2.1.1 3575 - micromark-util-symbol: 2.0.1 3576 - micromark-util-types: 2.0.2 3577 - 3578 - micromark-extension-gfm@3.0.0: 3579 - dependencies: 3580 - micromark-extension-gfm-autolink-literal: 2.1.0 3581 - micromark-extension-gfm-footnote: 2.1.0 3582 - micromark-extension-gfm-strikethrough: 2.1.0 3583 - micromark-extension-gfm-table: 2.1.1 3584 - micromark-extension-gfm-tagfilter: 2.0.0 3585 - micromark-extension-gfm-task-list-item: 2.1.0 3586 - micromark-util-combine-extensions: 2.0.1 3587 - micromark-util-types: 2.0.2 3588 - 3589 - micromark-factory-destination@2.0.1: 3590 - dependencies: 3591 - micromark-util-character: 2.1.1 3592 - micromark-util-symbol: 2.0.1 3593 - micromark-util-types: 2.0.2 3594 - 3595 - micromark-factory-label@2.0.1: 3596 - dependencies: 3597 - devlop: 1.1.0 3598 - micromark-util-character: 2.1.1 3599 - micromark-util-symbol: 2.0.1 3600 - micromark-util-types: 2.0.2 3601 - 3602 - micromark-factory-space@2.0.1: 3603 - dependencies: 3604 - micromark-util-character: 2.1.1 3605 - micromark-util-types: 2.0.2 3606 - 3607 - micromark-factory-title@2.0.1: 3608 - dependencies: 3609 - micromark-factory-space: 2.0.1 3610 - micromark-util-character: 2.1.1 3611 - micromark-util-symbol: 2.0.1 3612 - micromark-util-types: 2.0.2 3613 - 3614 - micromark-factory-whitespace@2.0.1: 3615 - dependencies: 3616 - micromark-factory-space: 2.0.1 3617 - micromark-util-character: 2.1.1 3618 - micromark-util-symbol: 2.0.1 3619 - micromark-util-types: 2.0.2 3620 - 3621 - micromark-util-character@2.1.1: 3622 - dependencies: 3623 - micromark-util-symbol: 2.0.1 3624 - micromark-util-types: 2.0.2 3625 - 3626 - micromark-util-chunked@2.0.1: 3627 - dependencies: 3628 - micromark-util-symbol: 2.0.1 3629 - 3630 - micromark-util-classify-character@2.0.1: 3631 - dependencies: 3632 - micromark-util-character: 2.1.1 3633 - micromark-util-symbol: 2.0.1 3634 - micromark-util-types: 2.0.2 3635 - 3636 - micromark-util-combine-extensions@2.0.1: 3637 - dependencies: 3638 - micromark-util-chunked: 2.0.1 3639 - micromark-util-types: 2.0.2 3640 - 3641 - micromark-util-decode-numeric-character-reference@2.0.2: 3642 - dependencies: 3643 - micromark-util-symbol: 2.0.1 3644 - 3645 - micromark-util-decode-string@2.0.1: 3646 - dependencies: 3647 - decode-named-character-reference: 1.2.0 3648 - micromark-util-character: 2.1.1 3649 - micromark-util-decode-numeric-character-reference: 2.0.2 3650 - micromark-util-symbol: 2.0.1 3651 - 3652 - micromark-util-encode@2.0.1: {} 1317 + gensync@1.0.0-beta.2: {} 3653 1318 3654 - micromark-util-html-tag-name@2.0.1: {} 1319 + html-entities@2.3.3: {} 3655 1320 3656 - micromark-util-normalize-identifier@2.0.1: 3657 - dependencies: 3658 - micromark-util-symbol: 2.0.1 1321 + is-what@4.1.16: {} 3659 1322 3660 - micromark-util-resolve-all@2.0.1: 3661 - dependencies: 3662 - micromark-util-types: 2.0.2 1323 + js-tokens@4.0.0: {} 3663 1324 3664 - micromark-util-sanitize-uri@2.0.1: 3665 - dependencies: 3666 - micromark-util-character: 2.1.1 3667 - micromark-util-encode: 2.0.1 3668 - micromark-util-symbol: 2.0.1 1325 + jsesc@3.1.0: {} 3669 1326 3670 - micromark-util-subtokenize@2.1.0: 3671 - dependencies: 3672 - devlop: 1.1.0 3673 - micromark-util-chunked: 2.0.1 3674 - micromark-util-symbol: 2.0.1 3675 - micromark-util-types: 2.0.2 1327 + json5@2.2.3: {} 3676 1328 3677 - micromark-util-symbol@2.0.1: {} 3678 - 3679 - micromark-util-types@2.0.2: {} 3680 - 3681 - micromark@4.0.2: 1329 + lru-cache@5.1.1: 3682 1330 dependencies: 3683 - '@types/debug': 4.1.12 3684 - debug: 4.4.1 3685 - decode-named-character-reference: 1.2.0 3686 - devlop: 1.1.0 3687 - micromark-core-commonmark: 2.0.3 3688 - micromark-factory-space: 2.0.1 3689 - micromark-util-character: 2.1.1 3690 - micromark-util-chunked: 2.0.1 3691 - micromark-util-combine-extensions: 2.0.1 3692 - micromark-util-decode-numeric-character-reference: 2.0.2 3693 - micromark-util-encode: 2.0.1 3694 - micromark-util-normalize-identifier: 2.0.1 3695 - micromark-util-resolve-all: 2.0.1 3696 - micromark-util-sanitize-uri: 2.0.1 3697 - micromark-util-subtokenize: 2.1.0 3698 - micromark-util-symbol: 2.0.1 3699 - micromark-util-types: 2.0.2 3700 - transitivePeerDependencies: 3701 - - supports-color 1331 + yallist: 3.1.1 3702 1332 3703 - micromatch@4.0.8: 3704 - dependencies: 3705 - braces: 3.0.3 3706 - picomatch: 2.3.1 3707 - 3708 - minimatch@3.1.2: 1333 + merge-anything@5.1.7: 3709 1334 dependencies: 3710 - brace-expansion: 1.1.12 3711 - 3712 - minimatch@9.0.5: 3713 - dependencies: 3714 - brace-expansion: 2.0.2 3715 - 3716 - mrmime@2.0.1: {} 1335 + is-what: 4.1.16 3717 1336 3718 1337 ms@2.1.3: {} 3719 1338 ··· 3721 1340 3722 1341 nanoid@5.1.5: {} 3723 1342 3724 - natural-compare@1.4.0: {} 3725 - 3726 - neotraverse@0.6.18: {} 3727 - 3728 - nlcst-to-string@4.0.0: 3729 - dependencies: 3730 - '@types/nlcst': 2.0.3 3731 - 3732 - node-fetch-native@1.6.6: {} 3733 - 3734 - node-fetch@2.7.0: 3735 - dependencies: 3736 - whatwg-url: 5.0.0 3737 - 3738 - node-mock-http@1.0.1: {} 3739 - 3740 - normalize-path@3.0.0: {} 3741 - 3742 - ofetch@1.4.1: 3743 - dependencies: 3744 - destr: 2.0.5 3745 - node-fetch-native: 1.6.6 3746 - ufo: 1.6.1 3747 - 3748 - ohash@2.0.11: {} 3749 - 3750 - oniguruma-parser@0.12.1: {} 3751 - 3752 - oniguruma-to-es@4.3.3: 3753 - dependencies: 3754 - oniguruma-parser: 0.12.1 3755 - regex: 6.0.1 3756 - regex-recursion: 6.0.2 3757 - 3758 - optionator@0.9.4: 3759 - dependencies: 3760 - deep-is: 0.1.4 3761 - fast-levenshtein: 2.0.6 3762 - levn: 0.4.1 3763 - prelude-ls: 1.2.1 3764 - type-check: 0.4.0 3765 - word-wrap: 1.2.5 3766 - 3767 - p-limit@3.1.0: 3768 - dependencies: 3769 - yocto-queue: 0.1.0 3770 - 3771 - p-limit@6.2.0: 3772 - dependencies: 3773 - yocto-queue: 1.2.1 3774 - 3775 - p-locate@5.0.0: 3776 - dependencies: 3777 - p-limit: 3.1.0 3778 - 3779 - p-queue@8.1.0: 3780 - dependencies: 3781 - eventemitter3: 5.0.1 3782 - p-timeout: 6.1.4 3783 - 3784 - p-timeout@6.1.4: {} 3785 - 3786 - package-manager-detector@1.3.0: {} 3787 - 3788 - pako@0.2.9: {} 3789 - 3790 - parent-module@1.0.1: 3791 - dependencies: 3792 - callsites: 3.1.0 3793 - 3794 - parse-latin@7.0.0: 3795 - dependencies: 3796 - '@types/nlcst': 2.0.3 3797 - '@types/unist': 3.0.3 3798 - nlcst-to-string: 4.0.0 3799 - unist-util-modify-children: 4.0.0 3800 - unist-util-visit-children: 3.0.0 3801 - vfile: 6.0.3 1343 + node-releases@2.0.19: {} 3802 1344 3803 1345 parse5@7.3.0: 3804 1346 dependencies: 3805 1347 entities: 6.0.1 3806 1348 3807 - path-exists@4.0.0: {} 3808 - 3809 - path-key@3.1.1: {} 3810 - 3811 1349 picocolors@1.1.1: {} 3812 1350 3813 - picomatch@2.3.1: {} 3814 - 3815 1351 picomatch@4.0.3: {} 3816 - 3817 - postcss-selector-parser@7.1.0: 3818 - dependencies: 3819 - cssesc: 3.0.0 3820 - util-deprecate: 1.0.2 3821 1352 3822 1353 postcss@8.5.6: 3823 1354 dependencies: ··· 3825 1356 picocolors: 1.1.1 3826 1357 source-map-js: 1.2.1 3827 1358 3828 - prelude-ls@1.2.1: {} 3829 - 3830 - prettier-linter-helpers@1.0.0: 3831 - dependencies: 3832 - fast-diff: 1.3.0 3833 - 3834 - prettier-plugin-astro@0.14.1: 3835 - dependencies: 3836 - '@astrojs/compiler': 2.12.2 3837 - prettier: 3.6.2 3838 - sass-formatter: 0.7.9 3839 - 3840 1359 prettier@3.6.2: {} 3841 1360 3842 - prismjs@1.30.0: {} 3843 - 3844 - prompts@2.4.2: 3845 - dependencies: 3846 - kleur: 3.0.3 3847 - sisteransi: 1.0.5 3848 - 3849 - property-information@6.5.0: {} 3850 - 3851 - property-information@7.1.0: {} 3852 - 3853 - punycode@2.3.1: {} 3854 - 3855 - queue-microtask@1.2.3: {} 3856 - 3857 - radix3@1.1.2: {} 3858 - 3859 - readdirp@4.1.2: {} 3860 - 3861 - regex-recursion@6.0.2: 3862 - dependencies: 3863 - regex-utilities: 2.3.0 3864 - 3865 - regex-utilities@2.3.0: {} 3866 - 3867 - regex@6.0.1: 3868 - dependencies: 3869 - regex-utilities: 2.3.0 3870 - 3871 - rehype-parse@9.0.1: 3872 - dependencies: 3873 - '@types/hast': 3.0.4 3874 - hast-util-from-html: 2.0.3 3875 - unified: 11.0.5 3876 - 3877 - rehype-raw@7.0.0: 3878 - dependencies: 3879 - '@types/hast': 3.0.4 3880 - hast-util-raw: 9.1.0 3881 - vfile: 6.0.3 3882 - 3883 - rehype-stringify@10.0.1: 3884 - dependencies: 3885 - '@types/hast': 3.0.4 3886 - hast-util-to-html: 9.0.5 3887 - unified: 11.0.5 3888 - 3889 - rehype@13.0.2: 3890 - dependencies: 3891 - '@types/hast': 3.0.4 3892 - rehype-parse: 9.0.1 3893 - rehype-stringify: 10.0.1 3894 - unified: 11.0.5 3895 - 3896 - remark-gfm@4.0.1: 3897 - dependencies: 3898 - '@types/mdast': 4.0.4 3899 - mdast-util-gfm: 3.1.0 3900 - micromark-extension-gfm: 3.0.0 3901 - remark-parse: 11.0.0 3902 - remark-stringify: 11.0.0 3903 - unified: 11.0.5 3904 - transitivePeerDependencies: 3905 - - supports-color 3906 - 3907 - remark-parse@11.0.0: 3908 - dependencies: 3909 - '@types/mdast': 4.0.4 3910 - mdast-util-from-markdown: 2.0.2 3911 - micromark-util-types: 2.0.2 3912 - unified: 11.0.5 3913 - transitivePeerDependencies: 3914 - - supports-color 3915 - 3916 - remark-rehype@11.1.2: 3917 - dependencies: 3918 - '@types/hast': 3.0.4 3919 - '@types/mdast': 4.0.4 3920 - mdast-util-to-hast: 13.2.0 3921 - unified: 11.0.5 3922 - vfile: 6.0.3 3923 - 3924 - remark-smartypants@3.0.2: 3925 - dependencies: 3926 - retext: 9.0.0 3927 - retext-smartypants: 6.2.0 3928 - unified: 11.0.5 3929 - unist-util-visit: 5.0.0 3930 - 3931 - remark-stringify@11.0.0: 3932 - dependencies: 3933 - '@types/mdast': 4.0.4 3934 - mdast-util-to-markdown: 2.1.2 3935 - unified: 11.0.5 3936 - 3937 - resolve-from@4.0.0: {} 3938 - 3939 - restructure@3.0.2: {} 3940 - 3941 - retext-latin@4.0.0: 3942 - dependencies: 3943 - '@types/nlcst': 2.0.3 3944 - parse-latin: 7.0.0 3945 - unified: 11.0.5 3946 - 3947 - retext-smartypants@6.2.0: 3948 - dependencies: 3949 - '@types/nlcst': 2.0.3 3950 - nlcst-to-string: 4.0.0 3951 - unist-util-visit: 5.0.0 3952 - 3953 - retext-stringify@4.0.0: 3954 - dependencies: 3955 - '@types/nlcst': 2.0.3 3956 - nlcst-to-string: 4.0.0 3957 - unified: 11.0.5 3958 - 3959 - retext@9.0.0: 3960 - dependencies: 3961 - '@types/nlcst': 2.0.3 3962 - retext-latin: 4.0.0 3963 - retext-stringify: 4.0.0 3964 - unified: 11.0.5 3965 - 3966 - reusify@1.1.0: {} 3967 - 3968 - rollup@4.45.3: 1361 + rollup@4.47.1: 3969 1362 dependencies: 3970 1363 '@types/estree': 1.0.8 3971 1364 optionalDependencies: 3972 - '@rollup/rollup-android-arm-eabi': 4.45.3 3973 - '@rollup/rollup-android-arm64': 4.45.3 3974 - '@rollup/rollup-darwin-arm64': 4.45.3 3975 - '@rollup/rollup-darwin-x64': 4.45.3 3976 - '@rollup/rollup-freebsd-arm64': 4.45.3 3977 - '@rollup/rollup-freebsd-x64': 4.45.3 3978 - '@rollup/rollup-linux-arm-gnueabihf': 4.45.3 3979 - '@rollup/rollup-linux-arm-musleabihf': 4.45.3 3980 - '@rollup/rollup-linux-arm64-gnu': 4.45.3 3981 - '@rollup/rollup-linux-arm64-musl': 4.45.3 3982 - '@rollup/rollup-linux-loongarch64-gnu': 4.45.3 3983 - '@rollup/rollup-linux-ppc64-gnu': 4.45.3 3984 - '@rollup/rollup-linux-riscv64-gnu': 4.45.3 3985 - '@rollup/rollup-linux-riscv64-musl': 4.45.3 3986 - '@rollup/rollup-linux-s390x-gnu': 4.45.3 3987 - '@rollup/rollup-linux-x64-gnu': 4.45.3 3988 - '@rollup/rollup-linux-x64-musl': 4.45.3 3989 - '@rollup/rollup-win32-arm64-msvc': 4.45.3 3990 - '@rollup/rollup-win32-ia32-msvc': 4.45.3 3991 - '@rollup/rollup-win32-x64-msvc': 4.45.3 1365 + '@rollup/rollup-android-arm-eabi': 4.47.1 1366 + '@rollup/rollup-android-arm64': 4.47.1 1367 + '@rollup/rollup-darwin-arm64': 4.47.1 1368 + '@rollup/rollup-darwin-x64': 4.47.1 1369 + '@rollup/rollup-freebsd-arm64': 4.47.1 1370 + '@rollup/rollup-freebsd-x64': 4.47.1 1371 + '@rollup/rollup-linux-arm-gnueabihf': 4.47.1 1372 + '@rollup/rollup-linux-arm-musleabihf': 4.47.1 1373 + '@rollup/rollup-linux-arm64-gnu': 4.47.1 1374 + '@rollup/rollup-linux-arm64-musl': 4.47.1 1375 + '@rollup/rollup-linux-loongarch64-gnu': 4.47.1 1376 + '@rollup/rollup-linux-ppc64-gnu': 4.47.1 1377 + '@rollup/rollup-linux-riscv64-gnu': 4.47.1 1378 + '@rollup/rollup-linux-riscv64-musl': 4.47.1 1379 + '@rollup/rollup-linux-s390x-gnu': 4.47.1 1380 + '@rollup/rollup-linux-x64-gnu': 4.47.1 1381 + '@rollup/rollup-linux-x64-musl': 4.47.1 1382 + '@rollup/rollup-win32-arm64-msvc': 4.47.1 1383 + '@rollup/rollup-win32-ia32-msvc': 4.47.1 1384 + '@rollup/rollup-win32-x64-msvc': 4.47.1 3992 1385 fsevents: 2.3.3 3993 1386 3994 - run-parallel@1.2.0: 3995 - dependencies: 3996 - queue-microtask: 1.2.3 3997 - 3998 - s.color@0.0.15: {} 1387 + semver@6.3.1: {} 3999 1388 4000 - sass-formatter@0.7.9: 1389 + seroval-plugins@1.3.2(seroval@1.3.2): 4001 1390 dependencies: 4002 - suf-log: 2.5.3 1391 + seroval: 1.3.2 4003 1392 4004 - semver@7.7.2: {} 1393 + seroval@1.3.2: {} 4005 1394 4006 - sharp@0.33.5: 1395 + solid-devtools@0.34.3(solid-js@1.9.9)(vite@6.3.5(@types/node@24.3.0)): 4007 1396 dependencies: 4008 - color: 4.2.3 4009 - detect-libc: 2.0.4 4010 - semver: 7.7.2 1397 + '@babel/core': 7.28.3 1398 + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.3) 1399 + '@babel/types': 7.28.2 1400 + '@solid-devtools/debugger': 0.28.1(solid-js@1.9.9) 1401 + '@solid-devtools/shared': 0.20.0(solid-js@1.9.9) 1402 + solid-js: 1.9.9 4011 1403 optionalDependencies: 4012 - '@img/sharp-darwin-arm64': 0.33.5 4013 - '@img/sharp-darwin-x64': 0.33.5 4014 - '@img/sharp-libvips-darwin-arm64': 1.0.4 4015 - '@img/sharp-libvips-darwin-x64': 1.0.4 4016 - '@img/sharp-libvips-linux-arm': 1.0.5 4017 - '@img/sharp-libvips-linux-arm64': 1.0.4 4018 - '@img/sharp-libvips-linux-s390x': 1.0.4 4019 - '@img/sharp-libvips-linux-x64': 1.0.4 4020 - '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 4021 - '@img/sharp-libvips-linuxmusl-x64': 1.0.4 4022 - '@img/sharp-linux-arm': 0.33.5 4023 - '@img/sharp-linux-arm64': 0.33.5 4024 - '@img/sharp-linux-s390x': 0.33.5 4025 - '@img/sharp-linux-x64': 0.33.5 4026 - '@img/sharp-linuxmusl-arm64': 0.33.5 4027 - '@img/sharp-linuxmusl-x64': 0.33.5 4028 - '@img/sharp-wasm32': 0.33.5 4029 - '@img/sharp-win32-ia32': 0.33.5 4030 - '@img/sharp-win32-x64': 0.33.5 4031 - optional: true 1404 + vite: 6.3.5(@types/node@24.3.0) 1405 + transitivePeerDependencies: 1406 + - supports-color 4032 1407 4033 - shebang-command@2.0.0: 1408 + solid-js@1.9.9: 4034 1409 dependencies: 4035 - shebang-regex: 3.0.0 4036 - 4037 - shebang-regex@3.0.0: {} 4038 - 4039 - shiki@3.8.1: 4040 - dependencies: 4041 - '@shikijs/core': 3.8.1 4042 - '@shikijs/engine-javascript': 3.8.1 4043 - '@shikijs/engine-oniguruma': 3.8.1 4044 - '@shikijs/langs': 3.8.1 4045 - '@shikijs/themes': 3.8.1 4046 - '@shikijs/types': 3.8.1 4047 - '@shikijs/vscode-textmate': 10.0.2 4048 - '@types/hast': 3.0.4 1410 + csstype: 3.1.3 1411 + seroval: 1.3.2 1412 + seroval-plugins: 1.3.2(seroval@1.3.2) 4049 1413 4050 - simple-swizzle@0.2.2: 1414 + solid-refresh@0.6.3(solid-js@1.9.9): 4051 1415 dependencies: 4052 - is-arrayish: 0.3.2 4053 - optional: true 4054 - 4055 - sisteransi@1.0.5: {} 4056 - 4057 - smol-toml@1.4.1: {} 1416 + '@babel/generator': 7.28.3 1417 + '@babel/helper-module-imports': 7.27.1 1418 + '@babel/types': 7.28.2 1419 + solid-js: 1.9.9 1420 + transitivePeerDependencies: 1421 + - supports-color 4058 1422 4059 1423 source-map-js@1.2.1: {} 4060 1424 4061 - space-separated-tokens@2.0.2: {} 4062 - 4063 - string-width@4.2.3: 4064 - dependencies: 4065 - emoji-regex: 8.0.0 4066 - is-fullwidth-code-point: 3.0.0 4067 - strip-ansi: 6.0.1 4068 - 4069 - string-width@7.2.0: 4070 - dependencies: 4071 - emoji-regex: 10.4.0 4072 - get-east-asian-width: 1.3.0 4073 - strip-ansi: 7.1.0 4074 - 4075 - stringify-entities@4.0.4: 4076 - dependencies: 4077 - character-entities-html4: 2.1.0 4078 - character-entities-legacy: 3.0.0 4079 - 4080 - strip-ansi@6.0.1: 4081 - dependencies: 4082 - ansi-regex: 5.0.1 4083 - 4084 - strip-ansi@7.1.0: 4085 - dependencies: 4086 - ansi-regex: 6.1.0 4087 - 4088 - strip-json-comments@3.1.1: {} 4089 - 4090 - suf-log@2.5.3: 4091 - dependencies: 4092 - s.color: 0.0.15 4093 - 4094 - supports-color@7.2.0: 4095 - dependencies: 4096 - has-flag: 4.0.0 4097 - 4098 - synckit@0.11.11: 4099 - dependencies: 4100 - '@pkgr/core': 0.2.9 4101 - 4102 - tiny-inflate@1.0.3: {} 4103 - 4104 - tinyexec@0.3.2: {} 4105 - 4106 1425 tinyglobby@0.2.14: 4107 1426 dependencies: 4108 - fdir: 6.4.6(picomatch@4.0.3) 1427 + fdir: 6.5.0(picomatch@4.0.3) 4109 1428 picomatch: 4.0.3 4110 1429 4111 - to-regex-range@5.0.1: 4112 - dependencies: 4113 - is-number: 7.0.0 1430 + typescript@5.9.2: {} 4114 1431 4115 - tr46@0.0.3: {} 1432 + undici-types@7.10.0: {} 4116 1433 4117 - trim-lines@3.0.1: {} 4118 - 4119 - trough@2.2.0: {} 4120 - 4121 - ts-api-utils@2.1.0(typescript@5.8.3): 1434 + update-browserslist-db@1.1.3(browserslist@4.25.3): 4122 1435 dependencies: 4123 - typescript: 5.8.3 1436 + browserslist: 4.25.3 1437 + escalade: 3.2.0 1438 + picocolors: 1.1.1 4124 1439 4125 - tsconfck@3.1.6(typescript@5.8.3): 4126 - optionalDependencies: 4127 - typescript: 5.8.3 1440 + validate-html-nesting@1.2.3: {} 4128 1441 4129 - tslib@2.8.1: {} 4130 - 4131 - type-check@0.4.0: 1442 + vite-plugin-solid@2.11.8(solid-js@1.9.9)(vite@6.3.5(@types/node@24.3.0)): 4132 1443 dependencies: 4133 - prelude-ls: 1.2.1 4134 - 4135 - type-fest@4.41.0: {} 4136 - 4137 - typescript-eslint@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3): 4138 - dependencies: 4139 - '@typescript-eslint/eslint-plugin': 8.38.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3) 4140 - '@typescript-eslint/parser': 8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3) 4141 - '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.8.3) 4142 - '@typescript-eslint/utils': 8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3) 4143 - eslint: 9.32.0(jiti@2.5.1) 4144 - typescript: 5.8.3 1444 + '@babel/core': 7.28.3 1445 + '@types/babel__core': 7.20.5 1446 + babel-preset-solid: 1.9.9(@babel/core@7.28.3)(solid-js@1.9.9) 1447 + merge-anything: 5.1.7 1448 + solid-js: 1.9.9 1449 + solid-refresh: 0.6.3(solid-js@1.9.9) 1450 + vite: 6.3.5(@types/node@24.3.0) 1451 + vitefu: 1.1.1(vite@6.3.5(@types/node@24.3.0)) 4145 1452 transitivePeerDependencies: 4146 1453 - supports-color 4147 1454 4148 - typescript@5.8.3: {} 4149 - 4150 - ufo@1.6.1: {} 4151 - 4152 - ultrahtml@1.6.0: {} 4153 - 4154 - uncrypto@0.1.3: {} 4155 - 4156 - undici-types@7.8.0: {} 4157 - 4158 - unicode-properties@1.4.1: 4159 - dependencies: 4160 - base64-js: 1.5.1 4161 - unicode-trie: 2.0.0 4162 - 4163 - unicode-trie@2.0.0: 4164 - dependencies: 4165 - pako: 0.2.9 4166 - tiny-inflate: 1.0.3 4167 - 4168 - unified@11.0.5: 4169 - dependencies: 4170 - '@types/unist': 3.0.3 4171 - bail: 2.0.2 4172 - devlop: 1.1.0 4173 - extend: 3.0.2 4174 - is-plain-obj: 4.1.0 4175 - trough: 2.2.0 4176 - vfile: 6.0.3 4177 - 4178 - unifont@0.5.2: 1455 + vite@6.3.5(@types/node@24.3.0): 4179 1456 dependencies: 4180 - css-tree: 3.1.0 4181 - ofetch: 1.4.1 4182 - ohash: 2.0.11 4183 - 4184 - unist-util-find-after@5.0.0: 4185 - dependencies: 4186 - '@types/unist': 3.0.3 4187 - unist-util-is: 6.0.0 4188 - 4189 - unist-util-is@6.0.0: 4190 - dependencies: 4191 - '@types/unist': 3.0.3 4192 - 4193 - unist-util-modify-children@4.0.0: 4194 - dependencies: 4195 - '@types/unist': 3.0.3 4196 - array-iterate: 2.0.1 4197 - 4198 - unist-util-position@5.0.0: 4199 - dependencies: 4200 - '@types/unist': 3.0.3 4201 - 4202 - unist-util-remove-position@5.0.0: 4203 - dependencies: 4204 - '@types/unist': 3.0.3 4205 - unist-util-visit: 5.0.0 4206 - 4207 - unist-util-stringify-position@4.0.0: 4208 - dependencies: 4209 - '@types/unist': 3.0.3 4210 - 4211 - unist-util-visit-children@3.0.0: 4212 - dependencies: 4213 - '@types/unist': 3.0.3 4214 - 4215 - unist-util-visit-parents@6.0.1: 4216 - dependencies: 4217 - '@types/unist': 3.0.3 4218 - unist-util-is: 6.0.0 4219 - 4220 - unist-util-visit@5.0.0: 4221 - dependencies: 4222 - '@types/unist': 3.0.3 4223 - unist-util-is: 6.0.0 4224 - unist-util-visit-parents: 6.0.1 4225 - 4226 - unstorage@1.16.1: 4227 - dependencies: 4228 - anymatch: 3.1.3 4229 - chokidar: 4.0.3 4230 - destr: 2.0.5 4231 - h3: 1.15.3 4232 - lru-cache: 10.4.3 4233 - node-fetch-native: 1.6.6 4234 - ofetch: 1.4.1 4235 - ufo: 1.6.1 4236 - 4237 - uri-js@4.4.1: 4238 - dependencies: 4239 - punycode: 2.3.1 4240 - 4241 - util-deprecate@1.0.2: {} 4242 - 4243 - vfile-location@5.0.3: 4244 - dependencies: 4245 - '@types/unist': 3.0.3 4246 - vfile: 6.0.3 4247 - 4248 - vfile-message@4.0.3: 4249 - dependencies: 4250 - '@types/unist': 3.0.3 4251 - unist-util-stringify-position: 4.0.0 4252 - 4253 - vfile@6.0.3: 4254 - dependencies: 4255 - '@types/unist': 3.0.3 4256 - vfile-message: 4.0.3 4257 - 4258 - vite@6.3.5(@types/node@24.1.0)(jiti@2.5.1): 4259 - dependencies: 4260 - esbuild: 0.25.8 4261 - fdir: 6.4.6(picomatch@4.0.3) 1457 + esbuild: 0.25.9 1458 + fdir: 6.5.0(picomatch@4.0.3) 4262 1459 picomatch: 4.0.3 4263 1460 postcss: 8.5.6 4264 - rollup: 4.45.3 1461 + rollup: 4.47.1 4265 1462 tinyglobby: 0.2.14 4266 1463 optionalDependencies: 4267 - '@types/node': 24.1.0 1464 + '@types/node': 24.3.0 4268 1465 fsevents: 2.3.3 4269 - jiti: 2.5.1 4270 1466 4271 - vitefu@1.1.1(vite@6.3.5(@types/node@24.1.0)(jiti@2.5.1)): 1467 + vitefu@1.1.1(vite@6.3.5(@types/node@24.3.0)): 4272 1468 optionalDependencies: 4273 - vite: 6.3.5(@types/node@24.1.0)(jiti@2.5.1) 4274 - 4275 - web-namespaces@2.0.1: {} 4276 - 4277 - webidl-conversions@3.0.1: {} 4278 - 4279 - whatwg-url@5.0.0: 4280 - dependencies: 4281 - tr46: 0.0.3 4282 - webidl-conversions: 3.0.1 4283 - 4284 - which-pm-runs@1.1.0: {} 4285 - 4286 - which@2.0.2: 4287 - dependencies: 4288 - isexe: 2.0.0 4289 - 4290 - widest-line@5.0.0: 4291 - dependencies: 4292 - string-width: 7.2.0 4293 - 4294 - word-wrap@1.2.5: {} 4295 - 4296 - wrap-ansi@9.0.0: 4297 - dependencies: 4298 - ansi-styles: 6.2.1 4299 - string-width: 7.2.0 4300 - strip-ansi: 7.1.0 4301 - 4302 - xxhash-wasm@1.1.0: {} 4303 - 4304 - yargs-parser@21.1.1: {} 4305 - 4306 - yocto-queue@0.1.0: {} 4307 - 4308 - yocto-queue@1.2.1: {} 4309 - 4310 - yocto-spinner@0.2.3: 4311 - dependencies: 4312 - yoctocolors: 2.1.1 1469 + vite: 6.3.5(@types/node@24.3.0) 4313 1470 4314 - yoctocolors@2.1.1: {} 4315 - 4316 - zod-to-json-schema@3.24.6(zod@3.25.76): 4317 - dependencies: 4318 - zod: 3.25.76 4319 - 4320 - zod-to-ts@1.2.0(typescript@5.8.3)(zod@3.25.76): 4321 - dependencies: 4322 - typescript: 5.8.3 4323 - zod: 3.25.76 4324 - 4325 - zod@3.25.76: {} 4326 - 4327 - zwitch@2.0.4: {} 1471 + yallist@3.1.1: {}
-1
frontend/pnpm-workspace.yaml
··· 1 1 onlyBuiltDependencies: 2 2 - esbuild 3 - - sharp
-9
frontend/public/favicon.svg
··· 1 - <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 128 128"> 2 - <path d="M50.4 78.5a75.1 75.1 0 0 0-28.5 6.9l24.2-65.7c.7-2 1.9-3.2 3.4-3.2h29c1.5 0 2.7 1.2 3.4 3.2l24.2 65.7s-11.6-7-28.5-7L67 45.5c-.4-1.7-1.6-2.8-2.9-2.8-1.3 0-2.5 1.1-2.9 2.7L50.4 78.5Zm-1.1 28.2Zm-4.2-20.2c-2 6.6-.6 15.8 4.2 20.2a17.5 17.5 0 0 1 .2-.7 5.5 5.5 0 0 1 5.7-4.5c2.8.1 4.3 1.5 4.7 4.7.2 1.1.2 2.3.2 3.5v.4c0 2.7.7 5.2 2.2 7.4a13 13 0 0 0 5.7 4.9v-.3l-.2-.3c-1.8-5.6-.5-9.5 4.4-12.8l1.5-1a73 73 0 0 0 3.2-2.2 16 16 0 0 0 6.8-11.4c.3-2 .1-4-.6-6l-.8.6-1.6 1a37 37 0 0 1-22.4 2.7c-5-.7-9.7-2-13.2-6.2Z" /> 3 - <style> 4 - path { fill: #000; } 5 - @media (prefers-color-scheme: dark) { 6 - path { fill: #FFF; } 7 - } 8 - </style> 9 - </svg>
frontend/public/images/404.png

This is a binary file and will not be displayed.

+12
frontend/public/oauth-client-metadata.json
··· 1 + { 2 + "client_id": "https://clippr.social/oauth/client-metadata.json", 3 + "client_name": "Clippr", 4 + "client_uri": "https://clippr.social", 5 + "redirect_uris": ["https://clippr.social/"], 6 + "scope": "atproto blob?accept=image/* repo:social.clippr.actor.profile repo:social.clippr.feed.clip repo:social.clippr.feed.tag", 7 + "grant_types": ["authorization_code", "refresh_token"], 8 + "response_types": ["code"], 9 + "token_endpoint_auth_method": "none", 10 + "application_type": "web", 11 + "dpop_bound_access_tokens": true 12 + }
frontend/src/assets/favicon.ico

This is a binary file and will not be displayed.

-23
frontend/src/components/Clip.astro
··· 1 - --- 2 - import TagList from "./TagList.astro"; 3 - const { title, tagList, link, description, originalClipper, firstClipDate } = 4 - Astro.props; 5 - --- 6 - 7 - <div class="clip"> 8 - <div class="clip-head"> 9 - <h2 class="clip-title"><a href={link}>{title}</a></h2> 10 - <TagList tags={tagList} /> 11 - </div> 12 - <small class="clip-link"><a href={link}>{link}</a></small> 13 - <p class="clip-description">{description}</p> 14 - <div class="clip-actions"> 15 - <a href="#">clip</a> 16 - <a href="#">respond</a> 17 - <a href="#">hide</a> 18 - <span class="original-clipper" 19 - >[first clipped by <a href="#">@{originalClipper}</a> 20 - {firstClipDate} ago]</span 21 - > 22 - </div> 23 - </div>
-10
frontend/src/components/SidebarItem.astro
··· 1 - --- 2 - const { title } = Astro.props; 3 - --- 4 - 5 - <div class="sidebar-item"> 6 - <h2>{title}</h2> 7 - <div class="sidebar-content"> 8 - <slot /> 9 - </div> 10 - </div>
-11
frontend/src/components/TagList.astro
··· 1 - --- 2 - const { tags } = Astro.props; 3 - let tags_arr; 4 - if (typeof tags !== "undefined") { 5 - tags_arr = tags.split(","); 6 - } 7 - --- 8 - 9 - <div class="clip-tags"> 10 - {tags_arr?.map((element: string) => <small>{element}</small>)} 11 - </div>
+24
frontend/src/components/footer.tsx
··· 1 + /* 2 + * clippr: a social bookmarking service for the AT Protocol 3 + * Copyright (c) 2025 clippr contributors. 4 + * SPDX-License-Identifier: AGPL-3.0-only 5 + */ 6 + 7 + const Footer = () => { 8 + return ( 9 + <footer> 10 + <div id="footer-left"> 11 + <p>copyright ยฉ 2025 clippr contributors</p> 12 + </div> 13 + <div id="footer-right"> 14 + <nav> 15 + <a href="https://bsky.app/profile/did:web:clippr.social">bluesky</a> 16 + <a href="https://pol.is/8cijewmm37">feedback</a> 17 + <a href="https://tangled.sh/@hexmani.ac/clippr">git</a> 18 + </nav> 19 + </div> 20 + </footer> 21 + ); 22 + }; 23 + 24 + export { Footer };
+34
frontend/src/components/header.tsx
··· 1 + /* 2 + * clippr: a social bookmarking service for the AT Protocol 3 + * Copyright (c) 2025 clippr contributors. 4 + * SPDX-License-Identifier: AGPL-3.0-only 5 + */ 6 + 7 + import { agent, loginState } from "./loginForm.tsx"; 8 + import { A } from "@solidjs/router"; 9 + 10 + const Header = () => { 11 + return ( 12 + <header> 13 + <div id="header-left"> 14 + <A href={loginState() ? "/home" : "/"}> 15 + <p class="silent-link">clippr (beta)</p> 16 + </A> 17 + </div> 18 + <div id="header-right"> 19 + <nav> 20 + {loginState() ? ( 21 + <> 22 + <A href={`/profile/${agent.sub}`}>profile</A> 23 + <A href="/settings">settings</A> 24 + </> 25 + ) : ( 26 + <A href="/login">login</A> 27 + )} 28 + </nav> 29 + </div> 30 + </header> 31 + ); 32 + }; 33 + 34 + export { Header };
+141
frontend/src/components/loginForm.tsx
··· 1 + /* 2 + * clippr: a social bookmarking service for the AT Protocol 3 + * Copyright (c) 2025 clippr contributors. 4 + * SPDX-License-Identifier: AGPL-3.0-only 5 + */ 6 + 7 + import { 8 + configureOAuth, 9 + createAuthorizationUrl, 10 + deleteStoredSession, 11 + finalizeAuthorization, 12 + getSession, 13 + OAuthUserAgent, 14 + resolveFromIdentity, 15 + resolveFromService, 16 + Session, 17 + } from "@atcute/oauth-browser-client"; 18 + import { createSignal } from "solid-js"; 19 + import { Did, isHandle } from "@atcute/lexicons/syntax"; 20 + 21 + configureOAuth({ 22 + metadata: { 23 + client_id: import.meta.env.VITE_OAUTH_CLIENT_ID, 24 + redirect_uri: import.meta.env.VITE_OAUTH_REDIRECT_URI, 25 + }, 26 + }); 27 + 28 + export const [loginState, setLoginState] = createSignal(false); 29 + let agent: OAuthUserAgent; 30 + 31 + const LoginForm = () => { 32 + const [notice, setNotice] = createSignal(""); 33 + const [loginInput, setLoginInput] = createSignal(""); 34 + 35 + const login = async (handle: string) => { 36 + try { 37 + if (!handle) return; 38 + let resolved; 39 + document.getElementById("submitDetails")!.removeAttribute("hidden"); 40 + document 41 + .querySelector('button[type="submit"]')! 42 + .setAttribute("disabled", "true"); 43 + if (!isHandle(handle)) { 44 + setNotice(`Resolving your service...`); 45 + resolved = await resolveFromService(handle); 46 + } else { 47 + setNotice(`Resolving your identity...`); 48 + resolved = await resolveFromIdentity(handle); 49 + } 50 + 51 + setNotice(`Contacting your data server...`); 52 + const authUrl = await createAuthorizationUrl({ 53 + scope: import.meta.env.VITE_OAUTH_SCOPE, 54 + ...resolved, 55 + }); 56 + 57 + setNotice(`Redirecting...`); 58 + await new Promise((resolve) => setTimeout(resolve, 500)); 59 + 60 + location.assign(authUrl); 61 + } catch (e: unknown) { 62 + if (e instanceof Error) { 63 + console.error(e); 64 + setNotice(`${e.message}`); 65 + } else { 66 + console.error(e); 67 + setNotice(`Unknown error, check console ยฏ\\_(ใƒ„)_/ยฏ`); 68 + } 69 + } 70 + }; 71 + 72 + return ( 73 + <> 74 + <form onclick={(e) => e.preventDefault()}> 75 + <label for="handle">Bluesky handle or DID</label> 76 + <input 77 + type="text" 78 + name="handle" 79 + id="handle" 80 + placeholder="alice.bsky.social" 81 + onInput={(e) => setLoginInput(e.currentTarget.value)} 82 + /> 83 + <button type="submit" onclick={() => login(loginInput())}> 84 + log in 85 + </button> 86 + </form> 87 + <p id="submitDetails" hidden> 88 + {notice()} 89 + </p> 90 + </> 91 + ); 92 + }; 93 + 94 + const retrieveSession = async (): Promise<void> => { 95 + const init = async (): Promise<Session | undefined> => { 96 + const params = new URLSearchParams(location.hash.slice(1)); 97 + 98 + if (params.has("state") && (params.has("code") || params.has("error"))) { 99 + history.replaceState(null, "", location.pathname + location.search); 100 + 101 + const session = await finalizeAuthorization(params); 102 + console.log("Finalizing authorization...", session); 103 + const agent = new OAuthUserAgent(session); 104 + console.log(await agent.getSession()); 105 + const did = session.info.sub; 106 + 107 + localStorage.setItem("currentUser", did); 108 + return session; 109 + } else { 110 + const currentUser = localStorage.getItem("currentUser"); 111 + 112 + if (currentUser) { 113 + try { 114 + console.log("Retrieving session..."); 115 + return await getSession(currentUser as Did); 116 + } catch (err) { 117 + deleteStoredSession(currentUser as Did); 118 + localStorage.removeItem("currentUser"); 119 + throw err; 120 + } 121 + } 122 + } 123 + }; 124 + 125 + const session = await init().catch(() => {}); 126 + 127 + if (session) { 128 + console.log("Retrieved session!", session); 129 + agent = new OAuthUserAgent(session); 130 + setLoginState(true); 131 + } 132 + }; 133 + 134 + const killSession = async (): Promise<void> => { 135 + await agent.signOut(); 136 + setLoginState(false); 137 + localStorage.removeItem("currentUser"); 138 + location.href = "/"; 139 + }; 140 + 141 + export { LoginForm, retrieveSession, agent, killSession };
+52
frontend/src/components/pageLocation.tsx
··· 1 + /* 2 + * clippr: a social bookmarking service for the AT Protocol 3 + * Copyright (c) 2025 clippr contributors. 4 + * SPDX-License-Identifier: AGPL-3.0-only 5 + */ 6 + 7 + import { splitProps } from "solid-js"; 8 + 9 + // How to define the path because I forgot how to and struggled for half an hour: 10 + // ``` 11 + // [ 12 + // { 13 + // name: "home", 14 + // link: "/" 15 + // } 16 + // ] 17 + // ``` 18 + type PathItem = { 19 + name: string; 20 + link: string; 21 + }; 22 + 23 + const PageLocation = (props: any) => { 24 + const [local, others] = splitProps(props, ["lastLocation", "path"]); 25 + const path = local.path; 26 + 27 + if (typeof path === "undefined") { 28 + return ( 29 + <div id="page-location"> 30 + <p id="page-location-last">{local.lastLocation || "blank"}</p> 31 + </div> 32 + ); 33 + } 34 + 35 + return ( 36 + <div id="page-location"> 37 + {path.map((item: PathItem) => { 38 + return ( 39 + <> 40 + <p class="page-location-parent" {...others}> 41 + <a href={item.link || ""}>{item.name}</a> 42 + </p> 43 + <p>โ†’</p> 44 + </> 45 + ); 46 + })} 47 + <p id="page-location-last">{local.lastLocation || "blank"}</p> 48 + </div> 49 + ); 50 + }; 51 + 52 + export { PageLocation };
+190
frontend/src/components/profileEditor.tsx
··· 1 + /* 2 + * clippr: a social bookmarking service for the AT Protocol 3 + * Copyright (c) 2025 clippr contributors. 4 + * SPDX-License-Identifier: AGPL-3.0-only 5 + */ 6 + 7 + import { createResource, createSignal } from "solid-js"; 8 + import { Client, ClientResponse } from "@atcute/client"; 9 + import { remove } from "@mary/exif-rm"; 10 + import { agent } from "./loginForm.tsx"; 11 + import { fetchProfile } from "../utils/profile.ts"; 12 + 13 + const ProfileEditor = () => { 14 + const [actor, setActor] = createSignal(); 15 + const [avatarPreview, setAvatarPreview] = createSignal(""); 16 + const [notice, setNotice] = createSignal(""); 17 + let formRef: HTMLFormElement = document.createElement("form"); 18 + 19 + setActor(agent.session.info.sub); 20 + const [profile] = createResource(actor, fetchProfile); 21 + 22 + const uploadBlob = async () => { 23 + setNotice(""); 24 + console.log("starting avatar upload..."); 25 + let blob: Blob; 26 + 27 + const file = (document.getElementById("avatar") as HTMLInputElement) 28 + ?.files?.[0]; 29 + if (!file) return; 30 + 31 + if (!file.type.startsWith("image/")) { 32 + setNotice("error: avatar must be an image"); 33 + console.log(file); 34 + return; 35 + } 36 + 37 + if (file.size > 1000000) { 38 + setNotice("error: avatar must be less than 1MB"); 39 + console.log(file); 40 + return; 41 + } 42 + 43 + blob = file; 44 + console.log("removing exif data..."); 45 + const exifRemoved = remove(new Uint8Array(await blob.arrayBuffer())); 46 + if (exifRemoved !== null) { 47 + // @ts-ignore 48 + blob = new Blob([exifRemoved], { type: blob.type }); 49 + } 50 + 51 + console.log(blob); 52 + 53 + const rpc = new Client({ handler: agent! }); 54 + setNotice("uploading avatar..."); 55 + const uploadRes: ClientResponse<any, any> = await rpc.post( 56 + // @ts-ignore 57 + "com.atproto.repo.uploadBlob", 58 + { 59 + input: blob, 60 + }, 61 + ); 62 + (document.getElementById("avatar") as HTMLInputElement).value = ""; 63 + if (!uploadRes.ok) { 64 + setNotice(uploadRes.data.error); 65 + return; 66 + } 67 + setNotice(""); 68 + setAvatarPreview(URL.createObjectURL(blob)); 69 + 70 + console.log(uploadRes.data); 71 + localStorage.setItem("avatar", JSON.stringify(uploadRes.data.blob)); 72 + }; 73 + 74 + const applyProfileChanges = async (formData: FormData) => { 75 + const rpc = new Client({ handler: agent! }); 76 + 77 + const avatar = localStorage.getItem("avatar"); 78 + 79 + if (avatar === null) { 80 + setNotice("error: avatar is missing"); 81 + return; 82 + } 83 + 84 + const displayName = formData.get("displayName") as string; 85 + if (displayName === null || displayName === "") { 86 + setNotice("error: display name is missing"); 87 + return; 88 + } 89 + 90 + if (displayName.length > 64) { 91 + setNotice("error: display name is too long"); 92 + return; 93 + } 94 + 95 + let description = formData.get("description") as string; 96 + if (description === null || description === "") { 97 + description = "This user does not have a bio."; 98 + } 99 + 100 + if (description.length > 500) { 101 + setNotice("error: description is too long"); 102 + return; 103 + } 104 + 105 + try { 106 + // @ts-ignore 107 + const res = await rpc.post("com.atproto.repo.putRecord", { 108 + input: { 109 + repo: agent!.sub, 110 + collection: "social.clippr.actor.profile", 111 + rkey: "self", 112 + record: { 113 + $type: "social.clippr.actor.profile", 114 + avatar: JSON.parse(avatar), 115 + displayName: formData.get("displayName"), 116 + description: formData.get("description") || "", 117 + // TODO: Take 'createdAt' string from previous version if it exists 118 + createdAt: new Date().toISOString(), 119 + }, 120 + }, 121 + }); 122 + 123 + if (!res.ok) { 124 + setNotice(res.data.error); 125 + return; 126 + } 127 + } catch (e: any) { 128 + setNotice(e.message); 129 + return; 130 + } 131 + 132 + setNotice("profile changed!"); 133 + localStorage.removeItem("avatar"); 134 + }; 135 + 136 + return ( 137 + <div> 138 + <form ref={formRef}> 139 + <label for="avatar" class="file-upload"> 140 + upload avatar 141 + </label> 142 + <input 143 + type="file" 144 + name="avatar" 145 + id="avatar" 146 + accept=".jpg,.jpeg,.png,image/jpeg,image/png" 147 + onChange={() => uploadBlob()} 148 + /> 149 + <img 150 + class="profile-picture" 151 + src={avatarPreview()} 152 + alt="The user's uploaded avatar." 153 + hidden={avatarPreview() === ""} 154 + /> 155 + <label for="displayName">display name</label> 156 + <input 157 + type="text" 158 + name="displayName" 159 + id="displayName" 160 + maxLength="64" 161 + placeholder="Alice" 162 + value={profile()?.displayName || ""} 163 + /> 164 + <label for="description">bio</label> 165 + <textarea 166 + name="description" 167 + id="description" 168 + maxLength="500" 169 + placeholder="describe yourself..." 170 + value={profile()?.description || ""} 171 + ></textarea> 172 + <button 173 + type="submit" 174 + onClick={(e) => { 175 + e.preventDefault(); 176 + // @ts-ignore 177 + applyProfileChanges(new FormData(formRef)).then(); 178 + }} 179 + > 180 + apply changes 181 + </button> 182 + </form> 183 + <p id="submitDetails" hidden={notice() === null}> 184 + {notice()} 185 + </p> 186 + </div> 187 + ); 188 + }; 189 + 190 + export { ProfileEditor };
+53
frontend/src/components/profileWidget.tsx
··· 1 + /* 2 + * clippr: a social bookmarking service for the AT Protocol 3 + * Copyright (c) 2025 clippr contributors. 4 + * SPDX-License-Identifier: AGPL-3.0-only 5 + */ 6 + 7 + import { createResource, Match, Show, splitProps, Switch } from "solid-js"; 8 + import { agent } from "./loginForm.tsx"; 9 + import { fetchProfile } from "../utils/profile.ts"; 10 + 11 + interface ProfileProps { 12 + actor?: string; 13 + } 14 + 15 + const ProfileWidget = (props: ProfileProps) => { 16 + const [local] = splitProps(props, ["actor"]); 17 + const actor = () => local.actor ?? agent.session.info.sub; 18 + 19 + const [profile] = createResource(actor, fetchProfile); 20 + 21 + return ( 22 + <div> 23 + <Show when={profile.loading}> 24 + <p>loading...</p> 25 + </Show> 26 + <Switch> 27 + <Match when={profile.error}> 28 + <p>error: {profile.error.message}</p> 29 + </Match> 30 + <Match when={profile()}> 31 + <div id="profile-view"> 32 + <img 33 + src={profile()?.avatar} 34 + class="profile-picture" 35 + alt="The user's avatar." 36 + /> 37 + <div> 38 + <p> 39 + <b>{profile()?.displayName}</b> 40 + </p> 41 + <p title={profile()?.did}> 42 + {profile()?.handle.replace("at://", "@")} 43 + </p> 44 + <p>{profile()?.description}</p> 45 + </div> 46 + </div> 47 + </Match> 48 + </Switch> 49 + </div> 50 + ); 51 + }; 52 + 53 + export { ProfileWidget };
+31
frontend/src/index.tsx
··· 1 + /* 2 + * clippr: a social bookmarking service for the AT Protocol 3 + * Copyright (c) 2025 clippr contributors. 4 + * SPDX-License-Identifier: AGPL-3.0-only 5 + */ 6 + 7 + /* @refresh reload */ 8 + import { render } from "solid-js/web"; 9 + import { Route, Router } from "@solidjs/router"; 10 + import { Layout } from "./layout.tsx"; 11 + import { LandingPage } from "./views/landingPage.tsx"; 12 + import { Login } from "./views/login.tsx"; 13 + import { NotFound } from "./views/notFound.tsx"; 14 + import { Home } from "./views/home.tsx"; 15 + import "solid-devtools"; 16 + import { Profile } from "./views/profile.tsx"; 17 + import { Settings } from "./views/settings.tsx"; 18 + 19 + render( 20 + () => ( 21 + <Router root={Layout}> 22 + <Route path="/" component={LandingPage} /> 23 + <Route path="/login" component={Login} /> 24 + <Route path="/home" component={Home} /> 25 + <Route path={["/profile/:id", "/profile"]} component={Profile} /> 26 + <Route path="/settings" component={Settings} /> 27 + <Route path="*paramName" component={NotFound} /> 28 + </Router> 29 + ), 30 + document.getElementById("root") as HTMLElement, 31 + );
+35
frontend/src/layout.tsx
··· 1 + /* 2 + * clippr: a social bookmarking service for the AT Protocol 3 + * Copyright (c) 2025 clippr contributors. 4 + * SPDX-License-Identifier: AGPL-3.0-only 5 + */ 6 + 7 + import { RouteSectionProps } from "@solidjs/router"; 8 + import { Header } from "./components/header.tsx"; 9 + import { Footer } from "./components/footer.tsx"; 10 + import { onMount, createSignal, Show } from "solid-js"; 11 + import { loginState, retrieveSession } from "./components/loginForm.tsx"; 12 + 13 + const Layout = (props: RouteSectionProps<unknown>) => { 14 + const [isLoading, setIsLoading] = createSignal(true); 15 + 16 + onMount(async () => { 17 + await retrieveSession(); 18 + if (loginState() && location.pathname === "/") { 19 + window.location.href = "/home"; 20 + } 21 + setIsLoading(false); 22 + }); 23 + 24 + return ( 25 + <Show when={!isLoading()} fallback={<></>}> 26 + <> 27 + <Header /> 28 + {props.children} 29 + <Footer /> 30 + </> 31 + </Show> 32 + ); 33 + }; 34 + 35 + export { Layout };
-21
frontend/src/layouts/Base.astro
··· 1 - --- 2 - const { title } = Astro.props; 3 - import "../styles/main.css"; 4 - --- 5 - 6 - <!doctype html> 7 - <!-- 8 - * clippr: a social bookmarking service for the AT Protocol 9 - * Copyright (c) 2025 clippr contributors. 10 - * SPDX-License-Identifier: AGPL-3.0-only 11 - --> 12 - <html lang="en"> 13 - <head> 14 - <meta charset="UTF-8" /> 15 - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 16 - <title>{title} | clippr</title> 17 - </head> 18 - <body> 19 - <slot /> 20 - </body> 21 - </html>
-24
frontend/src/layouts/Footer.astro
··· 1 - --- 2 - 3 - --- 4 - 5 - <footer> 6 - <small> 7 - shoutout popbob! | ยฉ 2025 clippr contributors | <a 8 - href="https://tangled.sh/@noob.quest/clippr">source code</a 9 - > 10 - </small> 11 - </footer> 12 - 13 - <style> 14 - footer { 15 - background-color: #ddd; 16 - padding: 1em 0; 17 - color: black; 18 - text-align: center; 19 - 20 - a { 21 - color: revert; 22 - } 23 - } 24 - </style>
-12
frontend/src/layouts/Header.astro
··· 1 - --- 2 - 3 - --- 4 - 5 - <header id="header-navbar"> 6 - <h1>clippr (beta!)</h1> 7 - <ul> 8 - <li><a href="/">home</a></li> 9 - <li><a href="/about">about</a></li> 10 - <li><a href="/login">login</a></li> 11 - </ul> 12 - </header>
-34
frontend/src/pages/404.astro
··· 1 - --- 2 - import Base from "../layouts/Base.astro"; 3 - import Header from "../layouts/Header.astro"; 4 - import Footer from "../layouts/Footer.astro"; 5 - --- 6 - 7 - <Base title="404"> 8 - <Header /> 9 - <main class="404-page"> 10 - <h2>404 | page not found</h2> 11 - <p>the party seems to be over...</p> 12 - <a href="/">ยซ go home</a> 13 - </main> 14 - <Footer /> 15 - </Base> 16 - 17 - <style> 18 - main { 19 - display: flex !important; 20 - flex-direction: column !important; 21 - gap: 0.1rem; 22 - align-items: center; 23 - justify-content: center; 24 - } 25 - 26 - h2, 27 - p { 28 - margin: 0.5rem 0; 29 - } 30 - 31 - a { 32 - color: revert; 33 - } 34 - </style>
-13
frontend/src/pages/about.astro
··· 1 - --- 2 - import Base from "../layouts/Base.astro"; 3 - import Header from "../layouts/Header.astro"; 4 - import Footer from "../layouts/Footer.astro"; 5 - --- 6 - 7 - <Base title="about"> 8 - <Header /> 9 - <main> 10 - <p>Fill in later!</p> 11 - </main> 12 - <Footer /> 13 - </Base>
-45
frontend/src/pages/index.astro
··· 1 - --- 2 - import Base from "../layouts/Base.astro"; 3 - import Header from "../layouts/Header.astro"; 4 - import Footer from "../layouts/Footer.astro"; 5 - import Clip from "../components/Clip.astro"; 6 - import SidebarItem from "../components/SidebarItem.astro"; 7 - --- 8 - 9 - <Base title="home"> 10 - <Header /> 11 - <main> 12 - <div id="main-content"> 13 - <div id="clip-list"> 14 - <Clip 15 - title="google" 16 - link="https://google.com" 17 - tagList="technology,search,google" 18 - description="tests woah" 19 - originalClipper="popbob.com" 20 - firstClipDate="30m" 21 - /> 22 - </div> 23 - </div> 24 - <div id="sidebar"> 25 - <SidebarItem title="what is clippr?"> 26 - <p>clippr is a bookmarking site that doubles as a news aggregator.</p> 27 - <p> 28 - using your bookmarks (or "clips") and their associated tags, a 29 - constantly updated news feed is created based on what users are 30 - clipping to their collection. 31 - </p> 32 - <a href="/about">learn more ยป</a> 33 - </SidebarItem> 34 - <SidebarItem title="stats"> 35 - <h3>clips</h3> 36 - <p class="item-counter">0</p> 37 - <h3>sites</h3> 38 - <p class="item-counter">0</p> 39 - <h3>users</h3> 40 - <p class="item-counter">0</p> 41 - </SidebarItem> 42 - </div> 43 - </main> 44 - <Footer /> 45 - </Base>
-101
frontend/src/pages/login.astro
··· 1 - --- 2 - import Base from "../layouts/Base.astro"; 3 - import Header from "../layouts/Header.astro"; 4 - import Footer from "../layouts/Footer.astro"; 5 - --- 6 - 7 - <Base title="login"> 8 - <Header /> 9 - <main> 10 - <div id="oauth-login"> 11 - <h2>log in</h2> 12 - <p>Enter your Bluesky handle.</p> 13 - <form> 14 - <label for="handle">handle</label> 15 - <input 16 - type="text" 17 - id="handle" 18 - name="handle" 19 - placeholder="clippr.social" 20 - /> 21 - <input type="submit" value="Authenticate" /> 22 - </form> 23 - </div> 24 - <!--<p id="or">or...</p>--> 25 - <!--<div id="bluesky-login">--> 26 - <!-- <h2>use your bluesky account</h2>--> 27 - <!-- <button id="bluesky-login-button">login to bluesky</button>--> 28 - <!--</div>--> 29 - </main> 30 - <Footer /> 31 - </Base> 32 - 33 - <style> 34 - main { 35 - display: flex !important; 36 - flex-direction: column; 37 - align-items: center; 38 - justify-content: center; 39 - gap: 1rem; 40 - } 41 - 42 - form { 43 - display: flex; 44 - flex-direction: column; 45 - justify-content: center; 46 - 47 - label { 48 - text-align: center; 49 - font-weight: bold; 50 - margin-bottom: 0.5rem; 51 - } 52 - 53 - input[type="submit"] { 54 - margin: 1rem 0 0 0; 55 - padding: 0.5rem 0; 56 - width: 50%; 57 - align-self: center; 58 - } 59 - } 60 - 61 - a { 62 - color: revert; 63 - } 64 - 65 - #or { 66 - border: 2px black solid; 67 - padding: 0.5rem 2rem; 68 - margin: 0; 69 - font-weight: bold; 70 - } 71 - 72 - h2 { 73 - text-align: center; 74 - margin-top: 0; 75 - } 76 - 77 - #bluesky-login { 78 - display: flex; 79 - flex-direction: column; 80 - justify-content: center; 81 - align-items: center; 82 - 83 - h2 { 84 - margin: 0 0 1rem; 85 - } 86 - } 87 - 88 - #bluesky-login-button { 89 - background: linear-gradient(deepskyblue, lightskyblue); 90 - border: none; 91 - border-radius: 10px; 92 - font-weight: bold; 93 - padding: 1rem 2rem; 94 - } 95 - 96 - #bluesky-login-button:hover { 97 - cursor: pointer; 98 - filter: brightness(90%); 99 - transition: filter 0.3s ease-in-out; 100 - } 101 - </style>
+264
frontend/src/styles/index.css
··· 1 + /* 2 + * clippr: a social bookmarking service for the AT Protocol 3 + * Copyright (c) 2025 clippr contributors. 4 + * SPDX-License-Identifier: AGPL-3.0-only 5 + */ 6 + 7 + :root { 8 + color-scheme: dark light; 9 + font-family: Arial, sans-serif; 10 + } 11 + 12 + @media (prefers-color-scheme: dark) { 13 + :root { 14 + --bg: #222 !important; 15 + --fg: #fff !important; 16 + --controls-bg: #2b2a33 !important; 17 + --controls-bg-hover: #52525e !important; 18 + --controls-border: #8f8f9d !important; 19 + } 20 + } 21 + 22 + @media (prefers-color-scheme: light) { 23 + :root { 24 + --bg: #fff !important; 25 + --fg: #222 !important; 26 + --controls-bg: #e9e9ed !important; 27 + --controls-bg-hover: #d0d0d7 !important; 28 + --controls-border: #8f8f9d !important; 29 + } 30 + } 31 + 32 + body { 33 + background-color: var(--bg); 34 + color: var(--fg); 35 + width: 70vw; 36 + margin: 1rem auto; 37 + } 38 + 39 + header { 40 + display: flex; 41 + justify-content: space-between; 42 + align-items: center; 43 + padding: 0 1rem; 44 + border-bottom: 1px solid var(--fg); 45 + 46 + #header-left { 47 + font-weight: bold; 48 + } 49 + 50 + #header-right nav { 51 + display: inline-flex; 52 + align-items: center; 53 + justify-content: space-between; 54 + gap: 1rem; 55 + } 56 + } 57 + 58 + main { 59 + margin: 1rem; 60 + } 61 + 62 + #main-headings { 63 + h1 { 64 + margin: 0; 65 + } 66 + 67 + margin: 1rem 0 1rem 0; 68 + } 69 + 70 + #page-location { 71 + display: flex; 72 + align-items: start; 73 + gap: 0.5rem; 74 + padding: 0 0 0 0.5rem; 75 + border: 1px solid var(--fg); 76 + 77 + p { 78 + margin: 0; 79 + padding: 0.5rem 0; 80 + } 81 + } 82 + 83 + #page-location-last { 84 + font-weight: bold; 85 + } 86 + 87 + #content { 88 + display: flex; 89 + flex-direction: row; 90 + gap: 2rem; 91 + justify-content: space-between; 92 + } 93 + 94 + #main-content { 95 + h3 { 96 + margin: 0; 97 + } 98 + 99 + p { 100 + line-height: 1.5; 101 + } 102 + } 103 + 104 + #sidebar { 105 + display: flex; 106 + flex-direction: column; 107 + gap: 1rem; 108 + } 109 + 110 + .centered { 111 + text-align: center; 112 + margin: 0 auto; 113 + } 114 + 115 + .sidebar-item { 116 + border: 1px solid var(--fg); 117 + display: flex; 118 + flex-direction: column; 119 + align-items: center; 120 + justify-content: space-between; 121 + padding: 0.5rem; 122 + text-align: center; 123 + 124 + h3 { 125 + margin: 0.5rem 0 1rem 0; 126 + } 127 + 128 + h4 { 129 + margin: 0; 130 + } 131 + } 132 + 133 + .stat-counter { 134 + font-weight: bold; 135 + font-size: 1.5rem; 136 + margin: 0.5rem 0; 137 + } 138 + 139 + form { 140 + display: flex; 141 + flex-direction: column; 142 + align-items: center; 143 + gap: 0.5rem; 144 + 145 + input { 146 + padding: 0.25rem; 147 + margin: 0.5rem; 148 + } 149 + } 150 + 151 + button { 152 + padding: 0.25rem 2rem; 153 + margin: 0 0 0.5rem 0; 154 + } 155 + 156 + footer { 157 + display: flex; 158 + justify-content: space-between; 159 + align-items: center; 160 + padding: 0 1rem; 161 + border-top: 1px solid var(--fg); 162 + 163 + #footer-right nav { 164 + display: inline-flex; 165 + align-items: center; 166 + justify-content: space-between; 167 + gap: 1rem; 168 + } 169 + } 170 + 171 + a { 172 + text-decoration: none; 173 + color: #8c8cfe; 174 + } 175 + 176 + a:hover { 177 + font-style: italic; 178 + font-weight: bold; 179 + cursor: pointer; 180 + } 181 + 182 + a:visited { 183 + color: #8c8cfe; 184 + } 185 + 186 + .silent-link { 187 + color: var(--fg); 188 + 189 + &:hover { 190 + font-style: revert; 191 + font-weight: revert; 192 + } 193 + } 194 + 195 + #profile-view { 196 + display: flex; 197 + flex-direction: row; 198 + align-items: center; 199 + gap: 2rem; 200 + 201 + div { 202 + text-align: left; 203 + } 204 + 205 + * { 206 + margin: 0.5rem 0; 207 + } 208 + } 209 + 210 + .profile-picture { 211 + border-radius: 50%; 212 + width: 150px; 213 + height: 150px; 214 + } 215 + 216 + form input[type="file"] { 217 + display: none; 218 + } 219 + 220 + .file-upload { 221 + border: 1px solid var(--controls-border); 222 + display: inline-block; 223 + padding: 6px 12px; 224 + background-color: var(--controls-bg); 225 + border-radius: 6px; 226 + margin: 0.5rem 0; 227 + } 228 + 229 + .file-upload:hover { 230 + background-color: var(--controls-bg-hover); 231 + } 232 + 233 + textarea { 234 + padding: 0.5rem; 235 + width: 275px; 236 + height: 100px; 237 + font-family: Arial, sans-serif; 238 + } 239 + 240 + @media (max-width: 768px) { 241 + body { 242 + width: 90vw; 243 + } 244 + 245 + header { 246 + flex-direction: column; 247 + padding-bottom: 1rem; 248 + } 249 + 250 + #content { 251 + flex-direction: column; 252 + } 253 + 254 + #profile-view { 255 + flex-direction: column; 256 + align-items: center; 257 + gap: 0.1rem; 258 + } 259 + 260 + footer { 261 + flex-direction: column; 262 + text-align: center; 263 + } 264 + }
-184
frontend/src/styles/main.css
··· 1 - /* 2 - * clippr: a social bookmarking service for the AT Protocol 3 - * Copyright (c) 2025 clippr contributors. 4 - * SPDX-License-Identifier: AGPL-3.0-only 5 - */ 6 - 7 - body { 8 - margin: 2rem auto; 9 - font-family: Arial, sans-serif; 10 - background-color: #bbb; 11 - width: 63%; 12 - } 13 - 14 - @media (max-width: 768px) { 15 - body { 16 - margin: auto; 17 - width: 100%; 18 - } 19 - } 20 - 21 - header { 22 - background-image: linear-gradient(#455372, #2b3854); 23 - color: white; 24 - display: flex; 25 - flex-direction: row; 26 - align-items: center; 27 - justify-content: space-between; 28 - padding: 0.5rem 1rem; 29 - 30 - h1 { 31 - font-size: 1rem; 32 - } 33 - 34 - ul { 35 - list-style-type: none; 36 - margin: 0; 37 - display: flex; 38 - flex-direction: row; 39 - gap: 1.5rem; 40 - } 41 - } 42 - 43 - a { 44 - text-decoration: none; 45 - color: white; 46 - } 47 - 48 - a:hover { 49 - font-style: italic; 50 - font-weight: bold; 51 - } 52 - 53 - main { 54 - background-color: white; 55 - background-clip: border-box; 56 - padding: 1rem 0.5rem; 57 - 58 - display: grid; 59 - grid-template-columns: 70% 30%; 60 - } 61 - 62 - #clip-list { 63 - margin: 0 0.5rem; 64 - 65 - .clip:first-of-type { 66 - margin: 0; 67 - } 68 - 69 - .clip { 70 - margin: 1.5rem 0; 71 - } 72 - } 73 - 74 - .clip { 75 - display: grid; 76 - grid-template-columns: auto; 77 - grid-template-rows: auto; 78 - grid-gap: 0.5rem; 79 - 80 - a { 81 - color: revert; 82 - } 83 - 84 - .clip-head { 85 - display: flex; 86 - flex-direction: row; 87 - align-items: center; 88 - gap: 1rem; 89 - 90 - h2 { 91 - margin: 0; 92 - } 93 - 94 - grid-column: 1; 95 - grid-row: 1; 96 - } 97 - 98 - .clip-link { 99 - grid-column: 1; 100 - grid-row: 2; 101 - } 102 - 103 - .clip-description { 104 - grid-column: 1; 105 - grid-row: 3; 106 - 107 - font-size: 0.8rem; 108 - margin: 0.25rem 0; 109 - } 110 - 111 - .clip-tags { 112 - margin: 0; 113 - } 114 - 115 - .clip-tags * { 116 - background: linear-gradient(#ffe076, #fff0cb) !important; 117 - padding: 0.25rem; 118 - margin: 0 0.25rem !important; 119 - border-radius: 0.34rem; 120 - border: 0.09rem solid black; 121 - } 122 - 123 - .clip-actions { 124 - display: flex; 125 - flex-direction: row; 126 - gap: 0.5rem; 127 - font-size: 0.8rem; 128 - 129 - grid-column: 1; 130 - grid-row: 4; 131 - } 132 - 133 - .original-clipper { 134 - color: #777 !important; 135 - } 136 - } 137 - 138 - #sidebar { 139 - margin: 0 1rem; 140 - } 141 - 142 - .sidebar-content { 143 - background-color: #bbbbbb; 144 - display: flex; 145 - flex-direction: column; 146 - align-items: center; 147 - justify-content: center; 148 - 149 - h3, 150 - p { 151 - margin: 0.5rem; 152 - } 153 - 154 - .item-counter { 155 - font-size: 2rem; 156 - } 157 - } 158 - 159 - .sidebar-item { 160 - padding: 0.5rem 0; 161 - 162 - h2 { 163 - margin: 0.5rem 0; 164 - } 165 - 166 - a { 167 - align-self: start; 168 - color: revert; 169 - padding: 0.5rem 0.5rem; 170 - } 171 - 172 - a:hover { 173 - font-style: revert; 174 - text-decoration: underline; 175 - } 176 - } 177 - 178 - .sidebar-item:first-of-type { 179 - padding-top: 0; 180 - 181 - h2 { 182 - margin-top: 0; 183 - } 184 - }
+19
frontend/src/types.ts
··· 1 + /* 2 + * clippr: a social bookmarking service for the AT Protocol 3 + * Copyright (c) 2025 clippr contributors. 4 + * SPDX-License-Identifier: AGPL-3.0-only 5 + */ 6 + 7 + export type ErrorResponse = { 8 + error: string; 9 + message: string; 10 + }; 11 + 12 + export type ProfileViewQuery = Object & { 13 + did: string; 14 + handle: string; 15 + displayName: string; 16 + avatar: string; 17 + description: string; 18 + createdAt: string; 19 + };
+19
frontend/src/utils/client.ts
··· 1 + /* 2 + * clippr: a social bookmarking service for the AT Protocol 3 + * Copyright (c) 2025 clippr contributors. 4 + * SPDX-License-Identifier: AGPL-3.0-only 5 + */ 6 + 7 + import { ServiceProxyOptions } from "@atcute/client"; 8 + 9 + // Converts the AppView environment variable into options for the client's server proxy options. 10 + export const createServiceProxy = (): ServiceProxyOptions | undefined => { 11 + const appviewUrl = import.meta.env.VITE_CLIPPR_APPVIEW; 12 + if (appviewUrl.includes("localhost:")) return undefined; // TODO: You can't do PDS proxying if you're testing locally!!! 13 + let sanitizedUrl = appviewUrl.replace(/^(https?:\/\/)/, "did:web:"); 14 + 15 + return { 16 + did: sanitizedUrl as `did:${string}:${string}`, 17 + serviceId: "#clippr_appview", 18 + }; 19 + };
+83
frontend/src/utils/profile.ts
··· 1 + /* 2 + * clippr: a social bookmarking service for the AT Protocol 3 + * Copyright (c) 2025 clippr contributors. 4 + * SPDX-License-Identifier: AGPL-3.0-only 5 + */ 6 + 7 + import { ErrorResponse, ProfileViewQuery } from "../types.ts"; 8 + import { 9 + CompositeDidDocumentResolver, 10 + DocumentNotFoundError, 11 + FailedDocumentResolutionError, 12 + HandleResolutionError, 13 + ImproperDidError, 14 + PlcDidDocumentResolver, 15 + UnsupportedDidMethodError, 16 + WebDidDocumentResolver, 17 + } from "@atcute/identity-resolver"; 18 + 19 + export const fetchProfile = async (actor: any): Promise<ProfileViewQuery> => { 20 + const response: Response = await fetch( 21 + `${import.meta.env.VITE_CLIPPR_APPVIEW}/xrpc/social.clippr.actor.getProfile?actor=${actor}`, 22 + ); 23 + 24 + if (response.status !== 200) { 25 + if (response.status === 400) { 26 + const json: ErrorResponse = await response.json(); 27 + console.log(json); 28 + throw new Error(json.message); 29 + } else { 30 + throw new Error(response.statusText); 31 + } 32 + } 33 + 34 + return response.json(); 35 + }; 36 + 37 + export const convertDidToHandle = async (did: string): Promise<string> => { 38 + let convertedDid; 39 + if (did.startsWith("did:plc:")) { 40 + convertedDid = did as `did:plc:${string}`; 41 + } else convertedDid = did as `did:web:${string}`; 42 + const docResolver = new CompositeDidDocumentResolver({ 43 + methods: { 44 + plc: new PlcDidDocumentResolver(), 45 + web: new WebDidDocumentResolver(), 46 + }, 47 + }); 48 + 49 + let doc; 50 + 51 + try { 52 + doc = await docResolver.resolve(convertedDid); 53 + } catch (err) { 54 + if (err instanceof DocumentNotFoundError) { 55 + throw new Error("Document not found"); 56 + } 57 + if (err instanceof UnsupportedDidMethodError) { 58 + throw new Error("Unsupported did method"); 59 + } 60 + if (err instanceof ImproperDidError) { 61 + throw new Error("Improper did"); 62 + } 63 + if (err instanceof FailedDocumentResolutionError) { 64 + throw new Error("Failed document resolution"); 65 + } 66 + if (err instanceof HandleResolutionError) { 67 + throw new Error("Generic handle resolution error"); 68 + } 69 + } 70 + 71 + if (doc === undefined) { 72 + throw new Error("Could not get DID document"); 73 + } 74 + 75 + if (doc.alsoKnownAs === undefined) { 76 + throw new Error("No handles found"); 77 + } 78 + if (doc.alsoKnownAs[0] === undefined) { 79 + throw new Error("No handles found"); 80 + } 81 + 82 + return doc.alsoKnownAs[0].substring(doc.alsoKnownAs[0].lastIndexOf("/") + 1); 83 + };
+28
frontend/src/views/home.tsx
··· 1 + /* 2 + * clippr: a social bookmarking service for the AT Protocol 3 + * Copyright (c) 2025 clippr contributors. 4 + * SPDX-License-Identifier: AGPL-3.0-only 5 + */ 6 + 7 + import { loginState } from "../components/loginForm.tsx"; 8 + import { ProfileWidget } from "../components/profileWidget.tsx"; 9 + import { PageLocation } from "../components/pageLocation.tsx"; 10 + 11 + const Home = () => { 12 + if (!loginState()) { 13 + location.href = "/login"; 14 + } 15 + 16 + return ( 17 + <main> 18 + <PageLocation lastLocation={"home"} /> 19 + <div id="content"> 20 + <div id="main-content" class="centered"> 21 + <ProfileWidget /> 22 + </div> 23 + </div> 24 + </main> 25 + ); 26 + }; 27 + 28 + export { Home };
+86
frontend/src/views/landingPage.tsx
··· 1 + /* 2 + * clippr: a social bookmarking service for the AT Protocol 3 + * Copyright (c) 2025 clippr contributors. 4 + * SPDX-License-Identifier: AGPL-3.0-only 5 + */ 6 + 7 + import { LoginForm } from "../components/loginForm.tsx"; 8 + 9 + const LandingPage = () => { 10 + return ( 11 + <> 12 + <main> 13 + <div id="main-headings"> 14 + <h1>clippr</h1> 15 + <h2>social bookmarking for the AT Protocol</h2> 16 + </div> 17 + 18 + <div id="content"> 19 + <div id="main-content"> 20 + <h3>what is clippr?</h3> 21 + <p> 22 + Clippr is an application based on the{" "} 23 + <a href="https://atproto.com">AT Protocol</a> that allows you to 24 + bookmark, organize and share links with your friends. 25 + </p> 26 + <h3>is this app ready yet?</h3> 27 + <p> 28 + While you can use it right now, the application is still in{" "} 29 + <i>heavy</i> development, and things will eventually break. We do 30 + not recommend using Clippr as your primary bookmarking tool until 31 + it is out of beta. 32 + </p> 33 + <h3>what is the AT Protocol?</h3> 34 + <p> 35 + The AT Protocol (or "ATproto" for short) is a decentralized social 36 + networking protocol designed to allow users to have a single, 37 + portable identity across multiple interoperable applications. It 38 + is used mainly by the microblogging app Bluesky, but anyone can 39 + build an application that uses the protocol, even if it isn't 40 + related to Bluesky. 41 + </p> 42 + <h3> 43 + what's different about clippr compared to [other social 44 + bookmarking app]? 45 + </h3> 46 + <p> 47 + The main difference between Clippr and other bookmarking 48 + application such as Pocket, Instapaper, Wallabag, Linkding or 49 + Pinboard is that your data isn't locked to a specific platform. 50 + Anyone can build an extension or application that is interoperable 51 + with Clippr's API and data structures (or any other application), 52 + and we encourage you to do so. 53 + <br /> 54 + <br /> 55 + All of our code is available as{" "} 56 + <a href="https://tangled.sh/@hexmani.ac/clippr">free software</a>, 57 + and we provide a{" "} 58 + <a href="https://www.npmjs.com/package/@clipprjs/lexicons"> 59 + NPM package 60 + </a>{" "} 61 + to make it easier to develop with Clippr. 62 + </p> 63 + </div> 64 + 65 + <div id="sidebar"> 66 + <div class="sidebar-item"> 67 + <h3>log in</h3> 68 + <LoginForm /> 69 + </div> 70 + <div class="sidebar-item"> 71 + <h3>stats</h3> 72 + <h4>clips</h4> 73 + <p class="stat-counter">0</p> 74 + <h4>tags</h4> 75 + <p class="stat-counter">0</p> 76 + <h4>users</h4> 77 + <p class="stat-counter">0</p> 78 + </div> 79 + </div> 80 + </div> 81 + </main> 82 + </> 83 + ); 84 + }; 85 + 86 + export { LandingPage };
+29
frontend/src/views/login.tsx
··· 1 + /* 2 + * clippr: a social bookmarking service for the AT Protocol 3 + * Copyright (c) 2025 clippr contributors. 4 + * SPDX-License-Identifier: AGPL-3.0-only 5 + */ 6 + 7 + import { LoginForm, loginState } from "../components/loginForm.tsx"; 8 + 9 + const Login = () => { 10 + // TODO: Fix weird transition states 11 + if (loginState()) { 12 + location.href = "/home"; 13 + } 14 + 15 + return ( 16 + <> 17 + <main> 18 + <div id="content"> 19 + <div id="main-content" class="centered"> 20 + <h2>login</h2> 21 + <LoginForm /> 22 + </div> 23 + </div> 24 + </main> 25 + </> 26 + ); 27 + }; 28 + 29 + export { Login };
+27
frontend/src/views/notFound.tsx
··· 1 + /* 2 + * clippr: a social bookmarking service for the AT Protocol 3 + * Copyright (c) 2025 clippr contributors. 4 + * SPDX-License-Identifier: AGPL-3.0-only 5 + */ 6 + 7 + import { loginState } from "../components/loginForm.tsx"; 8 + 9 + const NotFound = () => { 10 + return ( 11 + <> 12 + <main> 13 + <div id="content"> 14 + <div id="main-content" class="centered"> 15 + <h2>404 | page not found</h2> 16 + <p>the party seems to be over...</p> 17 + <a href={loginState() ? "/home" : "/"}>go home</a> 18 + <br /> 19 + <br /> 20 + </div> 21 + </div> 22 + </main> 23 + </> 24 + ); 25 + }; 26 + 27 + export { NotFound };
+47
frontend/src/views/profile.tsx
··· 1 + /* 2 + * clippr: a social bookmarking service for the AT Protocol 3 + * Copyright (c) 2025 clippr contributors. 4 + * SPDX-License-Identifier: AGPL-3.0-only 5 + */ 6 + 7 + import { createAsync, useParams } from "@solidjs/router"; 8 + import { PageLocation } from "../components/pageLocation.tsx"; 9 + import { ProfileWidget } from "../components/profileWidget.tsx"; 10 + import { agent, loginState } from "../components/loginForm.tsx"; 11 + import { convertDidToHandle } from "../utils/profile.ts"; 12 + 13 + const Profile = () => { 14 + const params = useParams(); 15 + 16 + // Authentication check for profile route catch-all 17 + if (!loginState() && location.pathname === "/profile") { 18 + location.href = "/login"; 19 + } 20 + 21 + let handle; 22 + try { 23 + handle = createAsync(() => convertDidToHandle(params.id || agent.sub)); 24 + } catch (e) { 25 + console.error(e); 26 + handle = null; 27 + } 28 + 29 + return ( 30 + <main> 31 + <PageLocation 32 + path={[{ name: "home", link: `${loginState() ? "/home" : "/"}` }]} 33 + lastLocation={handle || params.id} 34 + /> 35 + <div id="main-headings"> 36 + <h1>profile</h1> 37 + </div> 38 + <div id="content"> 39 + <div id="main-content" class="centered"> 40 + <ProfileWidget actor={params.id} /> 41 + </div> 42 + </div> 43 + </main> 44 + ); 45 + }; 46 + 47 + export { Profile };
+31
frontend/src/views/settings.tsx
··· 1 + /* 2 + * clippr: a social bookmarking service for the AT Protocol 3 + * Copyright (c) 2025 clippr contributors. 4 + * SPDX-License-Identifier: AGPL-3.0-only 5 + */ 6 + 7 + import { ProfileEditor } from "../components/profileEditor.tsx"; 8 + import { killSession, loginState } from "../components/loginForm.tsx"; 9 + import { PageLocation } from "../components/pageLocation.tsx"; 10 + 11 + const Settings = () => { 12 + if (!loginState()) { 13 + location.href = "/login"; 14 + } 15 + 16 + return ( 17 + <main> 18 + <PageLocation lastLocation={"settings"} /> 19 + <div id="content"> 20 + <div id="main-content" class="centered"> 21 + <h2>account settings</h2> 22 + <button onclick={killSession}>Log out</button> 23 + <h2>edit profile</h2> 24 + <ProfileEditor /> 25 + </div> 26 + </div> 27 + </main> 28 + ); 29 + }; 30 + 31 + export { Settings };
+24
frontend/src/vite-env.d.ts
··· 1 + /* 2 + * clippr: a social bookmarking service for the AT Protocol 3 + * Copyright (c) 2025 clippr contributors. 4 + * SPDX-License-Identifier: AGPL-3.0-only 5 + */ 6 + 7 + interface ImportMetaEnv { 8 + readonly VITE_DEV_SERVER_PORT?: string; 9 + 10 + /// OAuth environment variables 11 + readonly VITE_CLIENT_URI: string; 12 + readonly VITE_OAUTH_CLIENT_ID: string; 13 + readonly VITE_OAUTH_REDIRECT_URI: string; 14 + readonly VITE_OAUTH_SCOPE: string; 15 + 16 + /// Clippr-related environment variables 17 + /// 18 + /// A URL for where the clippr appview is hosted 19 + readonly VITE_CLIPPR_APPVIEW: string; 20 + } 21 + 22 + interface ImportMeta { 23 + readonly env: ImportMetaEnv; 24 + }
+26
frontend/tsconfig.app.json
··· 1 + { 2 + "compilerOptions": { 3 + "target": "ESNext", 4 + "useDefineForClassFields": true, 5 + "module": "ESNext", 6 + "lib": ["ESNext", "DOM", "DOM.Iterable"], 7 + "types": [], 8 + "skipLibCheck": true, 9 + 10 + /* Bundler mode */ 11 + "moduleResolution": "bundler", 12 + "allowImportingTsExtensions": true, 13 + "isolatedModules": true, 14 + "moduleDetection": "force", 15 + "noEmit": true, 16 + "jsx": "preserve", 17 + "jsxImportSource": "solid-js", 18 + 19 + /* Linting */ 20 + "strict": true, 21 + "noUnusedLocals": true, 22 + "noUnusedParameters": true, 23 + "noFallthroughCasesInSwitch": true 24 + }, 25 + "include": ["src"] 26 + }
+5 -3
frontend/tsconfig.json
··· 1 1 { 2 - "extends": "astro/tsconfigs/strictest", 3 - "include": [".astro/types.d.ts", "**/*"], 4 - "exclude": ["dist"], 2 + "files": [], 3 + "references": [ 4 + { "path": "./tsconfig.app.json" }, 5 + { "path": "./tsconfig.node.json" }, 6 + ], 5 7 }
+23
frontend/tsconfig.node.json
··· 1 + { 2 + "compilerOptions": { 3 + "target": "ESNext", 4 + "lib": ["ESNext"], 5 + "types": ["node"], 6 + "module": "ESNext", 7 + "skipLibCheck": true, 8 + 9 + /* Bundler mode */ 10 + "moduleResolution": "bundler", 11 + "allowImportingTsExtensions": true, 12 + "isolatedModules": true, 13 + "moduleDetection": "force", 14 + "noEmit": true, 15 + 16 + /* Linting */ 17 + "strict": true, 18 + "noUnusedLocals": true, 19 + "noUnusedParameters": true, 20 + "noFallthroughCasesInSwitch": true 21 + }, 22 + "include": ["vite.config.ts"] 23 + }
+58
frontend/vite.config.ts
··· 1 + /* 2 + * clippr: a social bookmarking service for the AT Protocol 3 + * Copyright (c) 2025 clippr contributors. 4 + * SPDX-License-Identifier: AGPL-3.0-only 5 + */ 6 + 7 + import { defineConfig } from "vite"; 8 + import solidPlugin from "vite-plugin-solid"; 9 + import metadata from "./public/oauth-client-metadata.json"; 10 + import { devtoolsPlugin } from "solid-devtools/vite"; 11 + 12 + const SERVER_HOST = "127.0.0.1"; 13 + const SERVER_PORT = 3000; 14 + 15 + export default defineConfig({ 16 + plugins: [ 17 + devtoolsPlugin({ 18 + autoname: true, 19 + }), 20 + solidPlugin(), 21 + { 22 + // Shamelessly stolen from PDSls: https://github.com/notjuliet/pdsls/blob/main/vite.config.ts 23 + name: "oauth", 24 + config(_conf, { command }) { 25 + if (command === "build") { 26 + process.env.VITE_OAUTH_CLIENT_ID = metadata.client_id; 27 + process.env.VITE_OAUTH_REDIRECT_URI = metadata.redirect_uris[0]; 28 + process.env.VITE_CLIPPR_APPVIEW = "https://api.clippr.social"; 29 + } else { 30 + const redirectUri = ((): string => { 31 + const url = new URL(metadata.redirect_uris[0]); 32 + return `http://${SERVER_HOST}:${SERVER_PORT}${url.pathname}`; 33 + })(); 34 + 35 + const clientId = 36 + `http://localhost` + 37 + `?redirect_uri=${encodeURIComponent(redirectUri)}` + 38 + `&scope=${encodeURIComponent(metadata.scope)}`; 39 + 40 + process.env.VITE_DEV_SERVER_PORT = "" + SERVER_PORT; 41 + process.env.VITE_OAUTH_CLIENT_ID = clientId; 42 + process.env.VITE_OAUTH_REDIRECT_URI = redirectUri; 43 + process.env.VITE_CLIPPR_APPVIEW = `http://localhost:9090`; 44 + } 45 + 46 + process.env.VITE_CLIENT_URI = metadata.client_uri; 47 + process.env.VITE_OAUTH_SCOPE = metadata.scope; 48 + }, 49 + }, 50 + ], 51 + server: { 52 + host: SERVER_HOST, 53 + port: SERVER_PORT, 54 + }, 55 + build: { 56 + target: "esnext", 57 + }, 58 + });
+21
lexdocs/LICENSE
··· 1 + MIT License 2 + 3 + Copyright (c) 2025 clippr contributors 4 + 5 + Permission is hereby granted, free of charge, to any person obtaining a copy 6 + of this software and associated documentation files (the "Software"), to deal 7 + in the Software without restriction, including without limitation the rights 8 + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 + copies of the Software, and to permit persons to whom the Software is 10 + furnished to do so, subject to the following conditions: 11 + 12 + The above copyright notice and this permission notice shall be included in all 13 + copies or substantial portions of the Software. 14 + 15 + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 + SOFTWARE.
+1 -1
lexdocs/social/clippr/actor/defs.json
··· 31 31 "type": "string", 32 32 "maxGraphemes": 500, 33 33 "maxLength": 5000, 34 - "description": "The biography associated to the profile" 34 + "description": "A description (or 'bio') associated to the profile" 35 35 }, 36 36 "avatar": { 37 37 "type": "string",
+1 -1
lexdocs/social/clippr/actor/getPreferences.json
··· 4 4 "defs": { 5 5 "main": { 6 6 "type": "query", 7 - "description": "Get the private user preferences associated to the account.", 7 + "description": "Get the private user preferences associated to the requesting account.", 8 8 "parameters": { 9 9 "type": "params", 10 10 "properties": {}
+1 -1
lexdocs/social/clippr/actor/getProfile.json
··· 23 23 "schema": { 24 24 "type": "ref", 25 25 "ref": "social.clippr.actor.defs#profileView", 26 - "description": "A reference to the profile view of the actor" 26 + "description": "A ref to the hydrated profile view of the actor" 27 27 } 28 28 } 29 29 }
+1 -1
lexdocs/social/clippr/actor/putPreferences.json
··· 4 4 "defs": { 5 5 "main": { 6 6 "type": "procedure", 7 - "description": "Set the private preferences attached to the account.", 7 + "description": "Set the private user preferences associated to the requesting account.", 8 8 "input": { 9 9 "encoding": "application/json", 10 10 "schema": {
+5 -1
lexdocs/social/clippr/actor/searchProfiles.json
··· 7 7 "description": "Find profiles matching search criteria. Does not require auth.", 8 8 "parameters": { 9 9 "type": "params", 10 + "required": [ 11 + "q" 12 + ], 10 13 "properties": { 11 14 "q": { 12 15 "type": "string", ··· 42 45 "items": { 43 46 "type": "ref", 44 47 "ref": "social.clippr.actor.defs#profileView" 45 - } 48 + }, 49 + "description": "An array of hydrated profile views" 46 50 } 47 51 } 48 52 }
+2 -2
lexdocs/social/clippr/feed/defs.json
··· 26 26 "author": { 27 27 "type": "ref", 28 28 "ref": "social.clippr.actor.defs#profileView", 29 - "description": "A reference to the actor's profile" 29 + "description": "A ref to the actor's profile" 30 30 }, 31 31 "record": { 32 32 "type": "unknown", ··· 63 63 "author": { 64 64 "type": "ref", 65 65 "ref": "social.clippr.actor.defs#profileView", 66 - "description": "A reference to the actor's profile" 66 + "description": "A ref to the actor's profile" 67 67 }, 68 68 "record": { 69 69 "type": "unknown",
+1 -1
lexdocs/social/clippr/feed/getClips.json
··· 4 4 "defs": { 5 5 "main": { 6 6 "type": "query", 7 - "description": "Get a list of clips. Does not require auth.", 7 + "description": "Get a list of hydrated clips. Does not require auth.", 8 8 "parameters": { 9 9 "type": "params", 10 10 "required": [
+6 -4
lexdocs/social/clippr/feed/getProfileClips.json
··· 4 4 "defs": { 5 5 "main": { 6 6 "type": "query", 7 - "description": "Get a view of a profile's reverse-chronological clips feed. Does not require auth.", 7 + "description": "Get a view of a profile's reverse-chronological feed containing their clips. Does not require auth.", 8 8 "parameters": { 9 9 "type": "params", 10 10 "required": [ ··· 35 35 "untagged_clips" 36 36 ], 37 37 "default": "all_clips", 38 - "description": "What types to include in response" 38 + "description": "What types of clips to include in response" 39 39 } 40 40 } 41 41 }, ··· 48 48 ], 49 49 "properties": { 50 50 "cursor": { 51 - "type": "string" 51 + "type": "string", 52 + "description": "A parameter to paginate results" 52 53 }, 53 54 "feed": { 54 55 "type": "array", 55 56 "items": { 56 57 "type": "ref", 57 58 "ref": "social.clippr.feed.defs#clipView" 58 - } 59 + }, 60 + "description": "An array of hydrated clip views" 59 61 } 60 62 } 61 63 }
+5 -3
lexdocs/social/clippr/feed/getProfileTags.json
··· 4 4 "defs": { 5 5 "main": { 6 6 "type": "query", 7 - "description": "Get a view of a profile's reverse-chronological clips feed. Does not require auth.", 7 + "description": "Get a view of a profile's reverse-chronological feed containing their tags. Does not require auth.", 8 8 "parameters": { 9 9 "type": "params", 10 10 "required": [ ··· 38 38 ], 39 39 "properties": { 40 40 "cursor": { 41 - "type": "string" 41 + "type": "string", 42 + "description": "A parameter to paginate results" 42 43 }, 43 44 "feed": { 44 45 "type": "array", 45 46 "items": { 46 47 "type": "ref", 47 48 "ref": "social.clippr.feed.defs#tagView" 48 - } 49 + }, 50 + "description": "An array of hydrated tag views" 49 51 } 50 52 } 51 53 }
+64
lexdocs/social/clippr/feed/getTagClips.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "social.clippr.feed.getTagClips", 4 + "defs": { 5 + "main": { 6 + "type": "query", 7 + "description": "Get a list of clips that are linked to a tag. Does not require auth.", 8 + "parameters": { 9 + "type": "params", 10 + "required": [ 11 + "actor", 12 + "tag" 13 + ], 14 + "properties": { 15 + "actor": { 16 + "type": "string", 17 + "format": "at-identifier", 18 + "description": "An actor to get valid tags from" 19 + }, 20 + "tag": { 21 + "type": "string", 22 + "maxGraphemes": 64, 23 + "maxLength": 640, 24 + "description": "A tag to use for discovering linked clips" 25 + }, 26 + "limit": { 27 + "type": "integer", 28 + "minimum": 1, 29 + "maximum": 1000, 30 + "default": 50, 31 + "description": "How many results to return with the query" 32 + }, 33 + "cursor": { 34 + "type": "string", 35 + "description": "A parameter to paginate results" 36 + } 37 + } 38 + }, 39 + "output": { 40 + "encoding": "application/json", 41 + "schema": { 42 + "type": "object", 43 + "required": [ 44 + "clips" 45 + ], 46 + "properties": { 47 + "cursor": { 48 + "type": "string", 49 + "description": "A parameter to paginate results" 50 + }, 51 + "clips": { 52 + "type": "array", 53 + "items": { 54 + "type": "ref", 55 + "ref": "social.clippr.feed.defs#clipView" 56 + }, 57 + "description": "An array of hydrated clip views" 58 + } 59 + } 60 + } 61 + } 62 + } 63 + } 64 + }
+1 -1
lexdocs/social/clippr/feed/searchClips.json
··· 51 51 "type": "ref", 52 52 "ref": "social.clippr.feed.defs#clipView" 53 53 }, 54 - "description": "A list of clips and their associated details" 54 + "description": "An array of hydrated clip views" 55 55 } 56 56 } 57 57 }
+1 -1
lexdocs/social/clippr/feed/searchTags.json
··· 51 51 "type": "ref", 52 52 "ref": "social.clippr.feed.defs#tagView" 53 53 }, 54 - "description": "A list of tags and their associated details" 54 + "description": "An array of hydrated tag views" 55 55 } 56 56 } 57 57 }
+7
lexicons/CHANGELOG.md
··· 1 1 # changelog for @clipprjs/lexicons 2 2 3 + ## v1.0.3 4 + 5 + * add ``social.clippr.feed.getTagClips`` query 6 + * make query parameter required for ``social.clippr.actor.searchProfiles`` 7 + * improved lexicon documentation 8 + 3 9 ## v1.0.2 10 + 4 11 * fix some description typos 5 12 * fix `social.clippr.feed.getTags` not existing due to an ID collision 6 13
+1 -1
lexicons/README.md
··· 58 58 import type {} from '@clipprjs/lexicons'; 59 59 ``` 60 60 61 - All the XRPC operations should be visible in the client afterward. 61 + All the Lexicon record schemas and XRPC operations should be visible in the client afterward.
+1 -6
lexicons/lib/lexicons/index.ts
··· 1 - /* 2 - * clippr: a social bookmarking service for the AT Protocol 3 - * Copyright (c) 2025 clippr contributors. 4 - * SPDX-License-Identifier: AGPL-3.0-only 5 - */ 6 - 7 1 export * as SocialClipprActorDefs from "./types/social/clippr/actor/defs.js"; 8 2 export * as SocialClipprActorGetPreferences from "./types/social/clippr/actor/getPreferences.js"; 9 3 export * as SocialClipprActorGetProfile from "./types/social/clippr/actor/getProfile.js"; ··· 17 11 export * as SocialClipprFeedGetClips from "./types/social/clippr/feed/getClips.js"; 18 12 export * as SocialClipprFeedGetProfileClips from "./types/social/clippr/feed/getProfileClips.js"; 19 13 export * as SocialClipprFeedGetProfileTags from "./types/social/clippr/feed/getProfileTags.js"; 14 + export * as SocialClipprFeedGetTagClips from "./types/social/clippr/feed/getTagClips.js"; 20 15 export * as SocialClipprFeedGetTagList from "./types/social/clippr/feed/getTagList.js"; 21 16 export * as SocialClipprFeedGetTags from "./types/social/clippr/feed/getTags.js"; 22 17 export * as SocialClipprFeedTag from "./types/social/clippr/feed/tag.js";
-6
lexicons/lib/lexicons/types/social/clippr/actor/defs.ts
··· 1 - /* 2 - * clippr: a social bookmarking service for the AT Protocol 3 - * Copyright (c) 2025 clippr contributors. 4 - * SPDX-License-Identifier: AGPL-3.0-only 5 - */ 6 - 7 1 import type {} from "@atcute/lexicons"; 8 2 import * as v from "@atcute/lexicons/validations"; 9 3
-6
lexicons/lib/lexicons/types/social/clippr/actor/getPreferences.ts
··· 1 - /* 2 - * clippr: a social bookmarking service for the AT Protocol 3 - * Copyright (c) 2025 clippr contributors. 4 - * SPDX-License-Identifier: AGPL-3.0-only 5 - */ 6 - 7 1 import type {} from "@atcute/lexicons"; 8 2 import * as v from "@atcute/lexicons/validations"; 9 3 import type {} from "@atcute/lexicons/ambient";
-6
lexicons/lib/lexicons/types/social/clippr/actor/getProfile.ts
··· 1 - /* 2 - * clippr: a social bookmarking service for the AT Protocol 3 - * Copyright (c) 2025 clippr contributors. 4 - * SPDX-License-Identifier: AGPL-3.0-only 5 - */ 6 - 7 1 import type {} from "@atcute/lexicons"; 8 2 import * as v from "@atcute/lexicons/validations"; 9 3 import type {} from "@atcute/lexicons/ambient";
-6
lexicons/lib/lexicons/types/social/clippr/actor/profile.ts
··· 1 - /* 2 - * clippr: a social bookmarking service for the AT Protocol 3 - * Copyright (c) 2025 clippr contributors. 4 - * SPDX-License-Identifier: AGPL-3.0-only 5 - */ 6 - 7 1 import type {} from "@atcute/lexicons"; 8 2 import * as v from "@atcute/lexicons/validations"; 9 3 import type {} from "@atcute/lexicons/ambient";
-6
lexicons/lib/lexicons/types/social/clippr/actor/putPreferences.ts
··· 1 - /* 2 - * clippr: a social bookmarking service for the AT Protocol 3 - * Copyright (c) 2025 clippr contributors. 4 - * SPDX-License-Identifier: AGPL-3.0-only 5 - */ 6 - 7 1 import type {} from "@atcute/lexicons"; 8 2 import * as v from "@atcute/lexicons/validations"; 9 3 import type {} from "@atcute/lexicons/ambient";
-6
lexicons/lib/lexicons/types/social/clippr/actor/searchClips.ts
··· 1 - /* 2 - * clippr: a social bookmarking service for the AT Protocol 3 - * Copyright (c) 2025 clippr contributors. 4 - * SPDX-License-Identifier: AGPL-3.0-only 5 - */ 6 - 7 1 import type {} from "@atcute/lexicons"; 8 2 import * as v from "@atcute/lexicons/validations"; 9 3 import type {} from "@atcute/lexicons/ambient";
+1 -7
lexicons/lib/lexicons/types/social/clippr/actor/searchProfiles.ts
··· 1 - /* 2 - * clippr: a social bookmarking service for the AT Protocol 3 - * Copyright (c) 2025 clippr contributors. 4 - * SPDX-License-Identifier: AGPL-3.0-only 5 - */ 6 - 7 1 import type {} from "@atcute/lexicons"; 8 2 import * as v from "@atcute/lexicons/validations"; 9 3 import type {} from "@atcute/lexicons/ambient"; ··· 20 14 ]), 21 15 25, 22 16 ), 23 - q: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.string()), 17 + q: /*#__PURE__*/ v.string(), 24 18 }), 25 19 output: { 26 20 type: "lex",
-6
lexicons/lib/lexicons/types/social/clippr/actor/searchTags.ts
··· 1 - /* 2 - * clippr: a social bookmarking service for the AT Protocol 3 - * Copyright (c) 2025 clippr contributors. 4 - * SPDX-License-Identifier: AGPL-3.0-only 5 - */ 6 - 7 1 import type {} from "@atcute/lexicons"; 8 2 import * as v from "@atcute/lexicons/validations"; 9 3 import type {} from "@atcute/lexicons/ambient";
-6
lexicons/lib/lexicons/types/social/clippr/feed/clip.ts
··· 1 - /* 2 - * clippr: a social bookmarking service for the AT Protocol 3 - * Copyright (c) 2025 clippr contributors. 4 - * SPDX-License-Identifier: AGPL-3.0-only 5 - */ 6 - 7 1 import type {} from "@atcute/lexicons"; 8 2 import * as v from "@atcute/lexicons/validations"; 9 3 import type {} from "@atcute/lexicons/ambient";
-6
lexicons/lib/lexicons/types/social/clippr/feed/defs.ts
··· 1 - /* 2 - * clippr: a social bookmarking service for the AT Protocol 3 - * Copyright (c) 2025 clippr contributors. 4 - * SPDX-License-Identifier: AGPL-3.0-only 5 - */ 6 - 7 1 import type {} from "@atcute/lexicons"; 8 2 import * as v from "@atcute/lexicons/validations"; 9 3 import * as SocialClipprActorDefs from "../actor/defs.js";
-6
lexicons/lib/lexicons/types/social/clippr/feed/getClips.ts
··· 1 - /* 2 - * clippr: a social bookmarking service for the AT Protocol 3 - * Copyright (c) 2025 clippr contributors. 4 - * SPDX-License-Identifier: AGPL-3.0-only 5 - */ 6 - 7 1 import type {} from "@atcute/lexicons"; 8 2 import * as v from "@atcute/lexicons/validations"; 9 3 import type {} from "@atcute/lexicons/ambient";
-6
lexicons/lib/lexicons/types/social/clippr/feed/getProfileClips.ts
··· 1 - /* 2 - * clippr: a social bookmarking service for the AT Protocol 3 - * Copyright (c) 2025 clippr contributors. 4 - * SPDX-License-Identifier: AGPL-3.0-only 5 - */ 6 - 7 1 import type {} from "@atcute/lexicons"; 8 2 import * as v from "@atcute/lexicons/validations"; 9 3 import type {} from "@atcute/lexicons/ambient";
-6
lexicons/lib/lexicons/types/social/clippr/feed/getProfileTags.ts
··· 1 - /* 2 - * clippr: a social bookmarking service for the AT Protocol 3 - * Copyright (c) 2025 clippr contributors. 4 - * SPDX-License-Identifier: AGPL-3.0-only 5 - */ 6 - 7 1 import type {} from "@atcute/lexicons"; 8 2 import * as v from "@atcute/lexicons/validations"; 9 3 import type {} from "@atcute/lexicons/ambient";
+45
lexicons/lib/lexicons/types/social/clippr/feed/getTagClips.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 SocialClipprFeedDefs from "./defs.js"; 5 + 6 + const _mainSchema = /*#__PURE__*/ v.query("social.clippr.feed.getTagClips", { 7 + params: /*#__PURE__*/ v.object({ 8 + actor: /*#__PURE__*/ v.actorIdentifierString(), 9 + cursor: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.string()), 10 + limit: /*#__PURE__*/ v.optional( 11 + /*#__PURE__*/ v.constrain(/*#__PURE__*/ v.integer(), [ 12 + /*#__PURE__*/ v.integerRange(1, 1000), 13 + ]), 14 + 50, 15 + ), 16 + tag: /*#__PURE__*/ v.constrain(/*#__PURE__*/ v.string(), [ 17 + /*#__PURE__*/ v.stringLength(0, 640), 18 + /*#__PURE__*/ v.stringGraphemes(0, 64), 19 + ]), 20 + }), 21 + output: { 22 + type: "lex", 23 + schema: /*#__PURE__*/ v.object({ 24 + get clips() { 25 + return /*#__PURE__*/ v.array(SocialClipprFeedDefs.clipViewSchema); 26 + }, 27 + cursor: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.string()), 28 + }), 29 + }, 30 + }); 31 + 32 + type main$schematype = typeof _mainSchema; 33 + 34 + export interface mainSchema extends main$schematype {} 35 + 36 + export const mainSchema = _mainSchema as mainSchema; 37 + 38 + export interface $params extends v.InferInput<mainSchema["params"]> {} 39 + export interface $output extends v.InferXRPCBodyInput<mainSchema["output"]> {} 40 + 41 + declare module "@atcute/lexicons/ambient" { 42 + interface XRPCQueries { 43 + "social.clippr.feed.getTagClips": mainSchema; 44 + } 45 + }
-6
lexicons/lib/lexicons/types/social/clippr/feed/getTagList.ts
··· 1 - /* 2 - * clippr: a social bookmarking service for the AT Protocol 3 - * Copyright (c) 2025 clippr contributors. 4 - * SPDX-License-Identifier: AGPL-3.0-only 5 - */ 6 - 7 1 import type {} from "@atcute/lexicons"; 8 2 import * as v from "@atcute/lexicons/validations"; 9 3 import type {} from "@atcute/lexicons/ambient";
-6
lexicons/lib/lexicons/types/social/clippr/feed/getTags.ts
··· 1 - /* 2 - * clippr: a social bookmarking service for the AT Protocol 3 - * Copyright (c) 2025 clippr contributors. 4 - * SPDX-License-Identifier: AGPL-3.0-only 5 - */ 6 - 7 1 import type {} from "@atcute/lexicons"; 8 2 import * as v from "@atcute/lexicons/validations"; 9 3 import type {} from "@atcute/lexicons/ambient";
-6
lexicons/lib/lexicons/types/social/clippr/feed/tag.ts
··· 1 - /* 2 - * clippr: a social bookmarking service for the AT Protocol 3 - * Copyright (c) 2025 clippr contributors. 4 - * SPDX-License-Identifier: AGPL-3.0-only 5 - */ 6 - 7 1 import type {} from "@atcute/lexicons"; 8 2 import * as v from "@atcute/lexicons/validations"; 9 3 import type {} from "@atcute/lexicons/ambient";
+4 -4
lexicons/package.json
··· 1 1 { 2 2 "type": "module", 3 3 "name": "@clipprjs/lexicons", 4 - "version": "1.0.2", 4 + "version": "1.0.3", 5 5 "description": "Clippr schema definitions", 6 6 "license": "AGPL-3.0-only", 7 7 "private": false, ··· 29 29 "prepublish": "rm -rf dist; pnpm run build" 30 30 }, 31 31 "dependencies": { 32 - "@atcute/atproto": "^3.1.1", 33 - "@atcute/lexicons": "^1.1.0" 32 + "@atcute/atproto": "^3.1.2", 33 + "@atcute/lexicons": "^1.1.1" 34 34 }, 35 35 "devDependencies": { 36 36 "@atcute/lex-cli": "^2.1.1", 37 - "typescript": "^5.8.3" 37 + "typescript": "^5.9.2" 38 38 } 39 39 }
+24 -24
lexicons/pnpm-lock.yaml
··· 9 9 .: 10 10 dependencies: 11 11 '@atcute/atproto': 12 - specifier: ^3.1.1 13 - version: 3.1.1 12 + specifier: ^3.1.2 13 + version: 3.1.2 14 14 '@atcute/lexicons': 15 - specifier: ^1.1.0 16 - version: 1.1.0 15 + specifier: ^1.1.1 16 + version: 1.1.1 17 17 devDependencies: 18 18 '@atcute/lex-cli': 19 19 specifier: ^2.1.1 20 20 version: 2.1.1 21 21 typescript: 22 - specifier: ^5.8.3 23 - version: 5.8.3 22 + specifier: ^5.9.2 23 + version: 5.9.2 24 24 25 25 packages: 26 26 27 - '@atcute/atproto@3.1.1': 28 - resolution: {integrity: sha512-D+RLTIPF0xLu7BPZY8KSewAPemJFh+3n3zeQ3ROsLxbTtCHbrTDMAmAFexaVRAPGcPYrwXaBUlv7yZjScJolMg==} 27 + '@atcute/atproto@3.1.2': 28 + resolution: {integrity: sha512-m6OWoGTeL8Wlw7cm8Nrf+NU24rlx5A0DzxEQQPPu1wqYNHw6S33nOU90W+U09vVN0aZGZUrLFfWWhAaSWTp1ZQ==} 29 29 30 30 '@atcute/lex-cli@2.1.1': 31 31 resolution: {integrity: sha512-QaR0sOP8Z24opGHKsSfleDbP/ahUb6HECkVaOqSwG7ORZzbLK1w0265o1BRjCVr2dT6FxlsMUa2Ge85JMA9bxg==} ··· 34 34 '@atcute/lexicon-doc@1.0.3': 35 35 resolution: {integrity: sha512-U7rinsTOwXGGcrF6/s7GzTXargcQpDr4BTrj5ci/XTK+POEK5jpcI+Ag1fF932pBX3k97em6y4TWwTSO8M/McQ==} 36 36 37 - '@atcute/lexicons@1.1.0': 38 - resolution: {integrity: sha512-LFqwnria78xLYb62Ri/+WwQpUTgZp2DuyolNGIIOV1dpiKhFFFh//nscHMA6IExFLQRqWDs3tTjy7zv0h3sf1Q==} 37 + '@atcute/lexicons@1.1.1': 38 + resolution: {integrity: sha512-k6qy5p3j9fJJ6ekaMPfEfp3ni4TW/XNuH9ZmsuwC0fi0tOjp+Fa8ZQakHwnqOzFt/cVBfGcmYE/lKNAbeTjgUg==} 39 39 40 - '@badrap/valita@0.4.5': 41 - resolution: {integrity: sha512-4QwGbuhh/JesHRQj79mO/l37PvJj4l/tlAu7+S1n4h47qwaNpZ0WDvIwUGLYUsdi9uQ5UPpiG9wb1Wm3XUFBUQ==} 40 + '@badrap/valita@0.4.6': 41 + resolution: {integrity: sha512-4kdqcjyxo/8RQ8ayjms47HCWZIF5981oE5nIenbfThKDxWXtEHKipAOWlflpPJzZx9y/JWYQkp18Awr7VuepFg==} 42 42 engines: {node: '>= 18'} 43 43 44 44 '@externdefs/collider@0.3.0': ··· 57 57 engines: {node: '>=14'} 58 58 hasBin: true 59 59 60 - typescript@5.8.3: 61 - resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} 60 + typescript@5.9.2: 61 + resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} 62 62 engines: {node: '>=14.17'} 63 63 hasBin: true 64 64 65 65 snapshots: 66 66 67 - '@atcute/atproto@3.1.1': 67 + '@atcute/atproto@3.1.2': 68 68 dependencies: 69 - '@atcute/lexicons': 1.1.0 69 + '@atcute/lexicons': 1.1.1 70 70 71 71 '@atcute/lex-cli@2.1.1': 72 72 dependencies: 73 73 '@atcute/lexicon-doc': 1.0.3 74 - '@badrap/valita': 0.4.5 75 - '@externdefs/collider': 0.3.0(@badrap/valita@0.4.5) 74 + '@badrap/valita': 0.4.6 75 + '@externdefs/collider': 0.3.0(@badrap/valita@0.4.6) 76 76 picocolors: 1.1.1 77 77 prettier: 3.6.2 78 78 79 79 '@atcute/lexicon-doc@1.0.3': 80 80 dependencies: 81 - '@badrap/valita': 0.4.5 81 + '@badrap/valita': 0.4.6 82 82 83 - '@atcute/lexicons@1.1.0': 83 + '@atcute/lexicons@1.1.1': 84 84 dependencies: 85 85 esm-env: 1.2.2 86 86 87 - '@badrap/valita@0.4.5': {} 87 + '@badrap/valita@0.4.6': {} 88 88 89 - '@externdefs/collider@0.3.0(@badrap/valita@0.4.5)': 89 + '@externdefs/collider@0.3.0(@badrap/valita@0.4.6)': 90 90 dependencies: 91 - '@badrap/valita': 0.4.5 91 + '@badrap/valita': 0.4.6 92 92 93 93 esm-env@1.2.2: {} 94 94 ··· 96 96 97 97 prettier@3.6.2: {} 98 98 99 - typescript@5.8.3: {} 99 + typescript@5.9.2: {}
+10
package.json
··· 1 + { 2 + "private": true, 3 + "type": "module", 4 + "devDependencies": { 5 + "husky": "^9.1.7" 6 + }, 7 + "scripts": { 8 + "prepare-hooks": "husky" 9 + } 10 + }
+24
pnpm-lock.yaml
··· 1 + lockfileVersion: '9.0' 2 + 3 + settings: 4 + autoInstallPeers: true 5 + excludeLinksFromLockfile: false 6 + 7 + importers: 8 + 9 + .: 10 + devDependencies: 11 + husky: 12 + specifier: ^9.1.7 13 + version: 9.1.7 14 + 15 + packages: 16 + 17 + husky@9.1.7: 18 + resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} 19 + engines: {node: '>=18'} 20 + hasBin: true 21 + 22 + snapshots: 23 + 24 + husky@9.1.7: {}