+30
.husky/pre-commit
+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
+
+1
.idea/clippr.iml
+1
.idea/clippr.iml
···
10
10
<excludeFolder url="file://$MODULE_DIR$/backend/build" />
11
11
<excludeFolder url="file://$MODULE_DIR$/.idea/dataSources" />
12
12
<excludeFolder url="file://$MODULE_DIR$/lexicons/dist" />
13
+
<excludeFolder url="file://$MODULE_DIR$/backend/logs" />
13
14
</content>
14
15
<orderEntry type="inheritedJdk" />
15
16
<orderEntry type="sourceFolder" forTests="false" />
+1
-1
.idea/dataSources.xml
+1
-1
.idea/dataSources.xml
···
1
1
<?xml version="1.0" encoding="UTF-8"?>
2
2
<project version="4">
3
3
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
4
-
<data-source source="LOCAL" name="Backend DB" read-only="true" uuid="befffb07-c652-4b9d-8f1c-31a01590f686">
4
+
<data-source source="LOCAL" name="Backend DB" uuid="befffb07-c652-4b9d-8f1c-31a01590f686">
5
5
<driver-ref>sqlite.xerial</driver-ref>
6
6
<synchronize>true</synchronize>
7
7
<jdbc-driver>org.sqlite.JDBC</jdbc-driver>
+9
.idea/dictionaries/project.xml
+9
.idea/dictionaries/project.xml
···
1
1
<component name="ProjectDictionaryState">
2
2
<dictionary name="project">
3
3
<words>
4
+
<w>affero</w>
4
5
<w>agpl</w>
5
6
<w>appview</w>
6
7
<w>atcute</w>
7
8
<w>atproto</w>
9
+
<w>atprotocol</w>
10
+
<w>bluesky</w>
8
11
<w>bsky</w>
9
12
<w>clippr</w>
10
13
<w>clipprjs</w>
11
14
<w>dids</w>
12
15
<w>hono</w>
13
16
<w>jetstream</w>
17
+
<w>lexdocs</w>
18
+
<w>llms</w>
19
+
<w>llmstxt</w>
14
20
<w>multiformats</w>
21
+
<w>nodeinfo</w>
22
+
<w>nsid</w>
23
+
<w>outdir</w>
15
24
<w>rkey</w>
16
25
<w>tseslint</w>
17
26
<w>xrpc</w>
+27
.idea/jsonSchemas.xml
+27
.idea/jsonSchemas.xml
···
1
+
<?xml version="1.0" encoding="UTF-8"?>
2
+
<project version="4">
3
+
<component name="JsonSchemaMappingsProjectConfiguration">
4
+
<state>
5
+
<map>
6
+
<entry key="Lexicon Schema">
7
+
<value>
8
+
<SchemaInfo>
9
+
<option name="generatedName" value="New Schema" />
10
+
<option name="name" value="Lexicon Schema" />
11
+
<option name="relativePathToSchema" value="https://cdn.justdavi.dev/lexiconschema.json" />
12
+
<option name="patterns">
13
+
<list>
14
+
<Item>
15
+
<option name="directory" value="true" />
16
+
<option name="path" value="lexdocs" />
17
+
<option name="mappingKind" value="Directory" />
18
+
</Item>
19
+
</list>
20
+
</option>
21
+
</SchemaInfo>
22
+
</value>
23
+
</entry>
24
+
</map>
25
+
</state>
26
+
</component>
27
+
</project>
+5
.tangled/workflows/build_backend.yaml
+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
.tangled/workflows/build_frontend.yaml
+5
.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
···
18
20
19
21
- name: "Build frontend"
20
22
command: "pnpm run --dir ./frontend/ build"
23
+
24
+
environment:
25
+
GIT_BRANCH: "main"
21
26
22
27
clone:
23
28
skip: false
+5
.tangled/workflows/build_lexicons.yaml
+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
+37
-6
README.md
+37
-6
README.md
···
1
1
# clippr
2
2
3
-
social bookmarking for atproto
3
+
Social bookmarking for the AT Protocol.
4
+
5
+
## current status
6
+
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.
12
+
13
+
The frontend has OAuth authentication and the ability to view and edit profiles, but is otherwise empty.
14
+
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.
4
18
5
19
## what's in here?
6
20
7
-
the project is sorted into four directories, comprised of:
21
+
The project is sorted into different sections, with each root-level folder signifying a package.
22
+
23
+
Each section will usually contain its own README.md file dedicated to it, going into more detail about that specific
24
+
package.
25
+
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 |
32
+
33
+
## roadmap
34
+
35
+
soonโข๏ธ
36
+
37
+
## license
8
38
9
-
* ``backend`` - the reference appview written using node and hono
10
-
* ``frontend`` - the reference frontend written in astro and typescript
11
-
* ``lex-src`` - the original lexicon files
12
-
* ``lexicons`` - an atcute package for the clippr lexicon
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.
+2
-7
backend/.prettierrc
+2
-7
backend/.prettierrc
···
8
8
"bracketSpacing": true,
9
9
"overrides": [
10
10
{
11
-
"files": [
12
-
"tsconfig.json",
13
-
"jsconfig.json"
14
-
],
11
+
"files": ["tsconfig.json", "jsconfig.json"],
15
12
"options": {
16
13
"parser": "jsonc"
17
14
}
18
15
},
19
16
{
20
-
"files": [
21
-
"*.md"
22
-
],
17
+
"files": ["*.md"],
23
18
"options": {
24
19
"printWidth": 100,
25
20
"proseWrap": "always"
+27
-17
backend/README.md
+27
-17
backend/README.md
···
1
-
# clippr-be
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
-
```sh
10
+
```shell
8
11
pnpm install
12
+
cp config.example.toml config.toml # Customize as necessary
13
+
pnpm run db:push
9
14
pnpm run dev
10
15
```
11
16
12
-
open http://localhost:9090 and enjoy
17
+
## Build for production
13
18
14
-
## current status
19
+
```shell
20
+
pnpm install
21
+
cp config.example.toml config.toml # Customize as necessary
22
+
pnpm run db:push
23
+
pnpm run build
24
+
pnpm run start
25
+
```
15
26
16
-
right now we're not running on bun because there are
17
-
[some issues with the jetstream library](https://github.com/oven-sh/bun/issues/18807), which haven't
18
-
been fixed yet.
27
+
Open http://localhost:9090 and enjoy
19
28
20
-
### checklist before it's usable
29
+
## current status
21
30
22
-
- [x] Ingesting content from the firehose (using Jetstream)
23
-
- [x] Creating the lexicon documents and validating content that comes in from the firehose
24
-
- [x] Indexing valid content from the firehose into a database
25
-
- [ ] Handling OAuth authentication (public OAuth for the moment)
26
-
- [ ] Creating responses to API calls
27
-
- [ ] Create records through the API
28
-
- [ ] Interact with the frontend
31
+
- โ
Ingesting content from the firehose (using Jetstream)
32
+
- โ
Validating incoming content according to the Lexicon schema
33
+
- โ
Indexing valid content from the firehose into a database
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
+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
+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",
+5
backend/eslint.config.ts
+5
backend/eslint.config.ts
+28
-19
backend/package.json
+28
-19
backend/package.json
···
5
5
"license": "AGPL-3.0-only",
6
6
"scripts": {
7
7
"dev": "tsx watch src/main.ts",
8
-
"build": "rm -r dist/; tsc",
8
+
"build": "tsc",
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.0",
22
+
"@atcute/atproto": "^3.1.2",
23
+
"@atcute/client": "^4.0.3",
24
+
"@atcute/crypto": "^2.2.4",
25
+
"@atcute/identity": "^1.0.3",
26
+
"@atcute/identity-resolver": "^1.1.3",
22
27
"@atcute/lexicon-doc": "^1.0.3",
23
-
"@atcute/lexicons": "^1.1.0",
24
-
"@clipprjs/lexicons": "^0.1.3",
28
+
"@atcute/lexicons": "^1.1.1",
29
+
"@clipprjs/lexicons": "^1.0.3",
25
30
"@eslint/eslintrc": "^3.3.1",
26
-
"@hono/node-server": "^1.15.0",
27
-
"@libsql/client": "^0.15.9",
28
-
"@skyware/jetstream": "^0.2.2",
29
-
"drizzle-orm": "^0.44.2",
30
-
"hono": "^4.8.4",
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",
35
+
"@skyware/jetstream": "^0.2.5",
36
+
"drizzle-orm": "^0.44.4",
37
+
"hono": "^4.9.4",
31
38
"toml": "^3.0.0",
32
39
"winston": "^3.17.0",
33
40
"xxhash-wasm": "^1.1.0"
34
41
},
35
42
"devDependencies": {
36
43
"@atcute/lex-cli": "^2.1.1",
37
-
"@eslint/js": "^9.30.1",
38
-
"@typescript-eslint/eslint-plugin": "^8.35.1",
39
-
"@typescript-eslint/parser": "^8.35.1",
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",
40
48
"drizzle-kit": "^0.31.4",
41
-
"eslint": "^9.30.1",
42
-
"eslint-config-prettier": "^10.1.5",
49
+
"eslint": "^9.33.0",
50
+
"eslint-config-prettier": "^10.1.8",
43
51
"eslint-plugin-drizzle": "^0.2.3",
44
52
"eslint-plugin-import": "^2.32.0",
45
-
"eslint-plugin-prettier": "^5.5.1",
53
+
"eslint-plugin-prettier": "^5.5.4",
46
54
"globals": "^16.3.0",
47
-
"jiti": "^2.4.2",
55
+
"jiti": "^2.5.1",
48
56
"prettier": "^3.6.2",
49
-
"tsx": "^4.20.3",
50
-
"typescript": "^5.8.3",
51
-
"typescript-eslint": "^8.35.1"
57
+
"tsx": "^4.20.4",
58
+
"typescript": "^5.9.2",
59
+
"typescript-eslint": "^8.40.0",
60
+
"vitest": "^3.2.4"
52
61
}
53
62
}
+3219
-410
backend/pnpm-lock.yaml
+3219
-410
backend/pnpm-lock.yaml
···
9
9
.:
10
10
dependencies:
11
11
'@atcute/atproto':
12
-
specifier: ^3.1.0
13
-
version: 3.1.0
12
+
specifier: ^3.1.2
13
+
version: 3.1.2
14
+
'@atcute/client':
15
+
specifier: ^4.0.3
16
+
version: 4.0.3
17
+
'@atcute/crypto':
18
+
specifier: ^2.2.4
19
+
version: 2.2.4
20
+
'@atcute/identity':
21
+
specifier: ^1.0.3
22
+
version: 1.0.3
23
+
'@atcute/identity-resolver':
24
+
specifier: ^1.1.3
25
+
version: 1.1.3(@atcute/identity@1.0.3)
14
26
'@atcute/lexicon-doc':
15
27
specifier: ^1.0.3
16
28
version: 1.0.3
17
29
'@atcute/lexicons':
18
-
specifier: ^1.1.0
19
-
version: 1.1.0
30
+
specifier: ^1.1.1
31
+
version: 1.1.1
20
32
'@clipprjs/lexicons':
21
-
specifier: ^0.1.3
22
-
version: 0.1.3
33
+
specifier: ^1.0.3
34
+
version: 1.0.3
23
35
'@eslint/eslintrc':
24
36
specifier: ^3.3.1
25
37
version: 3.3.1
26
38
'@hono/node-server':
27
-
specifier: ^1.15.0
28
-
version: 1.15.0(hono@4.8.4)
39
+
specifier: ^1.19.0
40
+
version: 1.19.0(hono@4.9.4)
29
41
'@libsql/client':
30
-
specifier: ^0.15.9
31
-
version: 0.15.9
42
+
specifier: ^0.15.12
43
+
version: 0.15.12
44
+
'@scalar/hono-api-reference':
45
+
specifier: ^0.9.15
46
+
version: 0.9.15(hono@4.9.4)
47
+
'@scalar/openapi-to-markdown':
48
+
specifier: ^0.2.28
49
+
version: 0.2.28(typescript@5.9.2)
32
50
'@skyware/jetstream':
33
-
specifier: ^0.2.2
34
-
version: 0.2.2(@atcute/client@2.0.9)
51
+
specifier: ^0.2.5
52
+
version: 0.2.5
35
53
drizzle-orm:
36
-
specifier: ^0.44.2
37
-
version: 0.44.2(@libsql/client@0.15.9)(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)
38
56
hono:
39
-
specifier: ^4.8.4
40
-
version: 4.8.4
57
+
specifier: ^4.9.4
58
+
version: 4.9.4
41
59
toml:
42
60
specifier: ^3.0.0
43
61
version: 3.0.0
···
52
70
specifier: ^2.1.1
53
71
version: 2.1.1
54
72
'@eslint/js':
55
-
specifier: ^9.30.1
56
-
version: 9.30.1
73
+
specifier: ^9.33.0
74
+
version: 9.33.0
75
+
'@types/node':
76
+
specifier: ^24.3.0
77
+
version: 24.3.0
57
78
'@typescript-eslint/eslint-plugin':
58
-
specifier: ^8.35.1
59
-
version: 8.35.1(@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(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)
60
81
'@typescript-eslint/parser':
61
-
specifier: ^8.35.1
62
-
version: 8.35.1(eslint@9.30.1(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)
63
84
drizzle-kit:
64
85
specifier: ^0.31.4
65
86
version: 0.31.4
66
87
eslint:
67
-
specifier: ^9.30.1
68
-
version: 9.30.1(jiti@2.4.2)
88
+
specifier: ^9.33.0
89
+
version: 9.33.0(jiti@2.5.1)
69
90
eslint-config-prettier:
70
-
specifier: ^10.1.5
71
-
version: 10.1.5(eslint@9.30.1(jiti@2.4.2))
91
+
specifier: ^10.1.8
92
+
version: 10.1.8(eslint@9.33.0(jiti@2.5.1))
72
93
eslint-plugin-drizzle:
73
94
specifier: ^0.2.3
74
-
version: 0.2.3(eslint@9.30.1(jiti@2.4.2))
95
+
version: 0.2.3(eslint@9.33.0(jiti@2.5.1))
75
96
eslint-plugin-import:
76
97
specifier: ^2.32.0
77
-
version: 2.32.0(@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(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))
78
99
eslint-plugin-prettier:
79
-
specifier: ^5.5.1
80
-
version: 5.5.1(eslint-config-prettier@10.1.5(eslint@9.30.1(jiti@2.4.2)))(eslint@9.30.1(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)
81
102
globals:
82
103
specifier: ^16.3.0
83
104
version: 16.3.0
84
105
jiti:
85
-
specifier: ^2.4.2
86
-
version: 2.4.2
106
+
specifier: ^2.5.1
107
+
version: 2.5.1
87
108
prettier:
88
109
specifier: ^3.6.2
89
110
version: 3.6.2
90
111
tsx:
91
-
specifier: ^4.20.3
92
-
version: 4.20.3
112
+
specifier: ^4.20.4
113
+
version: 4.20.4
93
114
typescript:
94
-
specifier: ^5.8.3
95
-
version: 5.8.3
115
+
specifier: ^5.9.2
116
+
version: 5.9.2
96
117
typescript-eslint:
97
-
specifier: ^8.35.1
98
-
version: 8.35.1(eslint@9.30.1(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)
99
123
100
124
packages:
101
125
102
-
'@atcute/atproto@3.1.0':
103
-
resolution: {integrity: sha512-aJbDsY7FcIh8APWKAimBtshPwqoRE056tc0UV6vw4TW4e3nYaHedoJmKhlh/k8KQWxyw64MQThNGMaC89HNoTg==}
126
+
'@atcute/atproto@3.1.2':
127
+
resolution: {integrity: sha512-m6OWoGTeL8Wlw7cm8Nrf+NU24rlx5A0DzxEQQPPu1wqYNHw6S33nOU90W+U09vVN0aZGZUrLFfWWhAaSWTp1ZQ==}
128
+
129
+
'@atcute/bluesky@3.2.1':
130
+
resolution: {integrity: sha512-WehZuGNEC9NNB2y7Jg/i4ANzbMEQzs2EwrLYKWDuvJT3YnPHEol3vkc4DK47TODs3TiacQJp4MWhsQyfktsZ6g==}
104
131
105
-
'@atcute/bluesky@1.0.15':
106
-
resolution: {integrity: sha512-+EFiybmKQ97aBAgtaD+cKRJER5AMn3cZMkEwEg/pDdWyzxYJ9m1UgemmLdTgI8VrxPufKqdXS2nl7uO7TY6BPA==}
132
+
'@atcute/client@4.0.3':
133
+
resolution: {integrity: sha512-RIOZWFVLca/HiPAAUDqQPOdOreCxTbL5cb+WUf5yqQOKIu5yEAP3eksinmlLmgIrlr5qVOE7brazUUzaskFCfw==}
134
+
135
+
'@atcute/crypto@2.2.4':
136
+
resolution: {integrity: sha512-88LbuJr63bbdJywd949YgbEiaaW4UU5iXJcFE1WqY/5ItYuoHWVdmL3XsqehiM0AfzvrYEfd5ox2wm9CK9dyQQ==}
137
+
138
+
'@atcute/identity-resolver@1.1.3':
139
+
resolution: {integrity: sha512-KZgGgg99CWaV7Df3+h3X/WMrDzTPQVfsaoIVbTNLx2B56BvCL2EmaxPSVw/7BFUJMZHlVU4rtoEB4lyvNyMswA==}
107
140
peerDependencies:
108
-
'@atcute/client': ^1.0.0 || ^2.0.0
141
+
'@atcute/identity': ^1.0.0
109
142
110
-
'@atcute/client@2.0.9':
111
-
resolution: {integrity: sha512-QNDm9gMP6x9LY77ArwY+urQOBtQW74/onEAz42c40JxRm6Rl9K9cU4ROvNKJ+5cpVmEm1sthEWVRmDr5CSZENA==}
143
+
'@atcute/identity@1.0.3':
144
+
resolution: {integrity: sha512-mNMxbKHFGys03A8JXKk0KfMBzdd0vrYMzZZWjpw1nYTs0+ea6bo5S1hwqVUZxHdo1gFHSe/t63jxQIF4yL9aKw==}
112
145
113
146
'@atcute/lex-cli@2.1.1':
114
147
resolution: {integrity: sha512-QaR0sOP8Z24opGHKsSfleDbP/ahUb6HECkVaOqSwG7ORZzbLK1w0265o1BRjCVr2dT6FxlsMUa2Ge85JMA9bxg==}
···
117
150
'@atcute/lexicon-doc@1.0.3':
118
151
resolution: {integrity: sha512-U7rinsTOwXGGcrF6/s7GzTXargcQpDr4BTrj5ci/XTK+POEK5jpcI+Ag1fF932pBX3k97em6y4TWwTSO8M/McQ==}
119
152
120
-
'@atcute/lexicons@1.1.0':
121
-
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==}
161
+
162
+
'@atcute/util-fetch@1.0.1':
163
+
resolution: {integrity: sha512-Clc0E/5ufyGBVfYBUwWNlHONlZCoblSr4Ho50l1LhmRPGB1Wu/AQ9Sz+rsBg7fdaW/auve8ulmwhRhnX2cGRow==}
164
+
165
+
'@babel/helper-string-parser@7.27.1':
166
+
resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
167
+
engines: {node: '>=6.9.0'}
168
+
169
+
'@babel/helper-validator-identifier@7.27.1':
170
+
resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==}
171
+
engines: {node: '>=6.9.0'}
172
+
173
+
'@babel/parser@7.28.3':
174
+
resolution: {integrity: sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==}
175
+
engines: {node: '>=6.0.0'}
176
+
hasBin: true
122
177
123
-
'@badrap/valita@0.4.5':
124
-
resolution: {integrity: sha512-4QwGbuhh/JesHRQj79mO/l37PvJj4l/tlAu7+S1n4h47qwaNpZ0WDvIwUGLYUsdi9uQ5UPpiG9wb1Wm3XUFBUQ==}
178
+
'@babel/types@7.28.2':
179
+
resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==}
180
+
engines: {node: '>=6.9.0'}
181
+
182
+
'@badrap/valita@0.4.6':
183
+
resolution: {integrity: sha512-4kdqcjyxo/8RQ8ayjms47HCWZIF5981oE5nIenbfThKDxWXtEHKipAOWlflpPJzZx9y/JWYQkp18Awr7VuepFg==}
125
184
engines: {node: '>= 18'}
126
185
127
-
'@clipprjs/lexicons@0.1.3':
128
-
resolution: {integrity: sha512-jv52Ib/E4hhoD/rXntZgBmVcCqBJe1EY7+WOLBqCyVvkdajMzpYHDHMFxALU61z7Gc6ducYJK3S5Ki7EnBywCw==}
186
+
'@clipprjs/lexicons@1.0.3':
187
+
resolution: {integrity: sha512-RmdrHXcIXBuLcqoDyLexJKNdz06wCvZsHxDlo8XY54J7Qpm7Sp5+K9jeeuEYJEiFZ1b6Tds0aggvi9s0s0NrMw==}
129
188
130
189
'@colors/colors@1.6.0':
131
190
resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==}
···
145
204
resolution: {integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==}
146
205
deprecated: 'Merged into tsx: https://tsx.is'
147
206
148
-
'@esbuild/aix-ppc64@0.25.5':
149
-
resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==}
207
+
'@esbuild/aix-ppc64@0.25.9':
208
+
resolution: {integrity: sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==}
150
209
engines: {node: '>=18'}
151
210
cpu: [ppc64]
152
211
os: [aix]
···
157
216
cpu: [arm64]
158
217
os: [android]
159
218
160
-
'@esbuild/android-arm64@0.25.5':
161
-
resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==}
219
+
'@esbuild/android-arm64@0.25.9':
220
+
resolution: {integrity: sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==}
162
221
engines: {node: '>=18'}
163
222
cpu: [arm64]
164
223
os: [android]
···
169
228
cpu: [arm]
170
229
os: [android]
171
230
172
-
'@esbuild/android-arm@0.25.5':
173
-
resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==}
231
+
'@esbuild/android-arm@0.25.9':
232
+
resolution: {integrity: sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==}
174
233
engines: {node: '>=18'}
175
234
cpu: [arm]
176
235
os: [android]
···
181
240
cpu: [x64]
182
241
os: [android]
183
242
184
-
'@esbuild/android-x64@0.25.5':
185
-
resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==}
243
+
'@esbuild/android-x64@0.25.9':
244
+
resolution: {integrity: sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==}
186
245
engines: {node: '>=18'}
187
246
cpu: [x64]
188
247
os: [android]
···
193
252
cpu: [arm64]
194
253
os: [darwin]
195
254
196
-
'@esbuild/darwin-arm64@0.25.5':
197
-
resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==}
255
+
'@esbuild/darwin-arm64@0.25.9':
256
+
resolution: {integrity: sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==}
198
257
engines: {node: '>=18'}
199
258
cpu: [arm64]
200
259
os: [darwin]
···
205
264
cpu: [x64]
206
265
os: [darwin]
207
266
208
-
'@esbuild/darwin-x64@0.25.5':
209
-
resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==}
267
+
'@esbuild/darwin-x64@0.25.9':
268
+
resolution: {integrity: sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==}
210
269
engines: {node: '>=18'}
211
270
cpu: [x64]
212
271
os: [darwin]
···
217
276
cpu: [arm64]
218
277
os: [freebsd]
219
278
220
-
'@esbuild/freebsd-arm64@0.25.5':
221
-
resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==}
279
+
'@esbuild/freebsd-arm64@0.25.9':
280
+
resolution: {integrity: sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==}
222
281
engines: {node: '>=18'}
223
282
cpu: [arm64]
224
283
os: [freebsd]
···
229
288
cpu: [x64]
230
289
os: [freebsd]
231
290
232
-
'@esbuild/freebsd-x64@0.25.5':
233
-
resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==}
291
+
'@esbuild/freebsd-x64@0.25.9':
292
+
resolution: {integrity: sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==}
234
293
engines: {node: '>=18'}
235
294
cpu: [x64]
236
295
os: [freebsd]
···
241
300
cpu: [arm64]
242
301
os: [linux]
243
302
244
-
'@esbuild/linux-arm64@0.25.5':
245
-
resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==}
303
+
'@esbuild/linux-arm64@0.25.9':
304
+
resolution: {integrity: sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==}
246
305
engines: {node: '>=18'}
247
306
cpu: [arm64]
248
307
os: [linux]
···
253
312
cpu: [arm]
254
313
os: [linux]
255
314
256
-
'@esbuild/linux-arm@0.25.5':
257
-
resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==}
315
+
'@esbuild/linux-arm@0.25.9':
316
+
resolution: {integrity: sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==}
258
317
engines: {node: '>=18'}
259
318
cpu: [arm]
260
319
os: [linux]
···
265
324
cpu: [ia32]
266
325
os: [linux]
267
326
268
-
'@esbuild/linux-ia32@0.25.5':
269
-
resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==}
327
+
'@esbuild/linux-ia32@0.25.9':
328
+
resolution: {integrity: sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==}
270
329
engines: {node: '>=18'}
271
330
cpu: [ia32]
272
331
os: [linux]
···
277
336
cpu: [loong64]
278
337
os: [linux]
279
338
280
-
'@esbuild/linux-loong64@0.25.5':
281
-
resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==}
339
+
'@esbuild/linux-loong64@0.25.9':
340
+
resolution: {integrity: sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==}
282
341
engines: {node: '>=18'}
283
342
cpu: [loong64]
284
343
os: [linux]
···
289
348
cpu: [mips64el]
290
349
os: [linux]
291
350
292
-
'@esbuild/linux-mips64el@0.25.5':
293
-
resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==}
351
+
'@esbuild/linux-mips64el@0.25.9':
352
+
resolution: {integrity: sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==}
294
353
engines: {node: '>=18'}
295
354
cpu: [mips64el]
296
355
os: [linux]
···
301
360
cpu: [ppc64]
302
361
os: [linux]
303
362
304
-
'@esbuild/linux-ppc64@0.25.5':
305
-
resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==}
363
+
'@esbuild/linux-ppc64@0.25.9':
364
+
resolution: {integrity: sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==}
306
365
engines: {node: '>=18'}
307
366
cpu: [ppc64]
308
367
os: [linux]
···
313
372
cpu: [riscv64]
314
373
os: [linux]
315
374
316
-
'@esbuild/linux-riscv64@0.25.5':
317
-
resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==}
375
+
'@esbuild/linux-riscv64@0.25.9':
376
+
resolution: {integrity: sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==}
318
377
engines: {node: '>=18'}
319
378
cpu: [riscv64]
320
379
os: [linux]
···
325
384
cpu: [s390x]
326
385
os: [linux]
327
386
328
-
'@esbuild/linux-s390x@0.25.5':
329
-
resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==}
387
+
'@esbuild/linux-s390x@0.25.9':
388
+
resolution: {integrity: sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==}
330
389
engines: {node: '>=18'}
331
390
cpu: [s390x]
332
391
os: [linux]
···
337
396
cpu: [x64]
338
397
os: [linux]
339
398
340
-
'@esbuild/linux-x64@0.25.5':
341
-
resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==}
399
+
'@esbuild/linux-x64@0.25.9':
400
+
resolution: {integrity: sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==}
342
401
engines: {node: '>=18'}
343
402
cpu: [x64]
344
403
os: [linux]
345
404
346
-
'@esbuild/netbsd-arm64@0.25.5':
347
-
resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==}
405
+
'@esbuild/netbsd-arm64@0.25.9':
406
+
resolution: {integrity: sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==}
348
407
engines: {node: '>=18'}
349
408
cpu: [arm64]
350
409
os: [netbsd]
···
355
414
cpu: [x64]
356
415
os: [netbsd]
357
416
358
-
'@esbuild/netbsd-x64@0.25.5':
359
-
resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==}
417
+
'@esbuild/netbsd-x64@0.25.9':
418
+
resolution: {integrity: sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==}
360
419
engines: {node: '>=18'}
361
420
cpu: [x64]
362
421
os: [netbsd]
363
422
364
-
'@esbuild/openbsd-arm64@0.25.5':
365
-
resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==}
423
+
'@esbuild/openbsd-arm64@0.25.9':
424
+
resolution: {integrity: sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==}
366
425
engines: {node: '>=18'}
367
426
cpu: [arm64]
368
427
os: [openbsd]
···
373
432
cpu: [x64]
374
433
os: [openbsd]
375
434
376
-
'@esbuild/openbsd-x64@0.25.5':
377
-
resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==}
435
+
'@esbuild/openbsd-x64@0.25.9':
436
+
resolution: {integrity: sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==}
378
437
engines: {node: '>=18'}
379
438
cpu: [x64]
380
439
os: [openbsd]
381
440
441
+
'@esbuild/openharmony-arm64@0.25.9':
442
+
resolution: {integrity: sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==}
443
+
engines: {node: '>=18'}
444
+
cpu: [arm64]
445
+
os: [openharmony]
446
+
382
447
'@esbuild/sunos-x64@0.18.20':
383
448
resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==}
384
449
engines: {node: '>=12'}
385
450
cpu: [x64]
386
451
os: [sunos]
387
452
388
-
'@esbuild/sunos-x64@0.25.5':
389
-
resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==}
453
+
'@esbuild/sunos-x64@0.25.9':
454
+
resolution: {integrity: sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==}
390
455
engines: {node: '>=18'}
391
456
cpu: [x64]
392
457
os: [sunos]
···
397
462
cpu: [arm64]
398
463
os: [win32]
399
464
400
-
'@esbuild/win32-arm64@0.25.5':
401
-
resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==}
465
+
'@esbuild/win32-arm64@0.25.9':
466
+
resolution: {integrity: sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==}
402
467
engines: {node: '>=18'}
403
468
cpu: [arm64]
404
469
os: [win32]
···
409
474
cpu: [ia32]
410
475
os: [win32]
411
476
412
-
'@esbuild/win32-ia32@0.25.5':
413
-
resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==}
477
+
'@esbuild/win32-ia32@0.25.9':
478
+
resolution: {integrity: sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==}
414
479
engines: {node: '>=18'}
415
480
cpu: [ia32]
416
481
os: [win32]
···
421
486
cpu: [x64]
422
487
os: [win32]
423
488
424
-
'@esbuild/win32-x64@0.25.5':
425
-
resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==}
489
+
'@esbuild/win32-x64@0.25.9':
490
+
resolution: {integrity: sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==}
426
491
engines: {node: '>=18'}
427
492
cpu: [x64]
428
493
os: [win32]
···
441
506
resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==}
442
507
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
443
508
444
-
'@eslint/config-helpers@0.3.0':
445
-
resolution: {integrity: sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==}
446
-
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
447
-
448
-
'@eslint/core@0.14.0':
449
-
resolution: {integrity: sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==}
509
+
'@eslint/config-helpers@0.3.1':
510
+
resolution: {integrity: sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==}
450
511
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
451
512
452
-
'@eslint/core@0.15.1':
453
-
resolution: {integrity: sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==}
513
+
'@eslint/core@0.15.2':
514
+
resolution: {integrity: sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==}
454
515
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
455
516
456
517
'@eslint/eslintrc@3.3.1':
457
518
resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==}
458
519
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
459
520
460
-
'@eslint/js@9.30.1':
461
-
resolution: {integrity: sha512-zXhuECFlyep42KZUhWjfvsmXGX39W8K8LFb8AWXM9gSV9dQB+MrJGLKvW6Zw0Ggnbpw0VHTtrhFXYe3Gym18jg==}
521
+
'@eslint/js@9.33.0':
522
+
resolution: {integrity: sha512-5K1/mKhWaMfreBGJTwval43JJmkip0RmM+3+IuqupeSKNC/Th2Kc7ucaq5ovTSra/OOKB9c58CGSz3QMVbWt0A==}
462
523
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
463
524
464
525
'@eslint/object-schema@2.1.6':
465
526
resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==}
466
527
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
467
528
468
-
'@eslint/plugin-kit@0.3.3':
469
-
resolution: {integrity: sha512-1+WqvgNMhmlAambTvT3KPtCl/Ibr68VldY2XY40SL1CE0ZXiakFR/cbTspaF5HsnpDMvcYYoJHfl4980NBjGag==}
529
+
'@eslint/plugin-kit@0.3.5':
530
+
resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==}
470
531
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
471
532
472
533
'@externdefs/collider@0.3.0':
···
474
535
peerDependencies:
475
536
'@badrap/valita': ^0.4.4
476
537
477
-
'@hono/node-server@1.15.0':
478
-
resolution: {integrity: sha512-MjmK4l5N4dQpZ9OSWN0tCj7ejuc7WvuWMzSKtc89bnknJykAeHxzRigXBTYZk85H6Awrii6RM59iUiUluApu2A==}
538
+
'@floating-ui/core@1.7.3':
539
+
resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==}
540
+
541
+
'@floating-ui/dom@1.7.4':
542
+
resolution: {integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==}
543
+
544
+
'@floating-ui/utils@0.2.10':
545
+
resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==}
546
+
547
+
'@floating-ui/vue@1.1.9':
548
+
resolution: {integrity: sha512-BfNqNW6KA83Nexspgb9DZuz578R7HT8MZw1CfK9I6Ah4QReNWEJsXWHN+SdmOVLNGmTPDi+fDT535Df5PzMLbQ==}
549
+
550
+
'@headlessui/vue@1.7.23':
551
+
resolution: {integrity: sha512-JzdCNqurrtuu0YW6QaDtR2PIYCKPUWq28csDyMvN4zmGccmE7lz40Is6hc3LA4HFeCI7sekZ/PQMTNmn9I/4Wg==}
552
+
engines: {node: '>=10'}
553
+
peerDependencies:
554
+
vue: ^3.2.0
555
+
556
+
'@hono/node-server@1.19.0':
557
+
resolution: {integrity: sha512-1k8/8OHf5VIymJEcJyVksFpT+AQ5euY0VA5hUkCnlKpD4mr8FSbvXaHblxeTTEr90OaqWzAkQaqD80qHZQKxBA==}
479
558
engines: {node: '>=18.14.1'}
480
559
peerDependencies:
481
560
hono: ^4
···
500
579
resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==}
501
580
engines: {node: '>=18.18'}
502
581
503
-
'@libsql/client@0.15.9':
504
-
resolution: {integrity: sha512-VT3do0a0vwYVaNcp/y05ikkKS3OrFR5UeEf5SUuYZVgKVl1Nc1k9ajoYSsOid8AD/vlhLDB5yFQaV4HmT/OB9w==}
582
+
'@hyperjump/browser@1.3.1':
583
+
resolution: {integrity: sha512-Le5XZUjnVqVjkgLYv6yyWgALat/0HpB1XaCPuCZ+GCFki9NvXloSZITIJ0H+wRW7mb9At1SxvohKBbNQbrr/cw==}
584
+
engines: {node: '>=18.0.0'}
585
+
586
+
'@hyperjump/json-pointer@1.1.1':
587
+
resolution: {integrity: sha512-M0T3s7TC2JepoWPMZQn1W6eYhFh06OXwpMqL+8c5wMVpvnCKNsPgpu9u7WyCI03xVQti8JAeAy4RzUa6SYlJLA==}
588
+
589
+
'@hyperjump/json-schema@1.16.2':
590
+
resolution: {integrity: sha512-MJNvaEFc79+h5rvBPgAJK4OHEUr0RqsKcLC5rc3V9FEsJyQAjnP910deRFoZCE068kX/NrAPPhunMgUMwonPtg==}
591
+
peerDependencies:
592
+
'@hyperjump/browser': ^1.1.0
593
+
594
+
'@hyperjump/pact@1.4.0':
595
+
resolution: {integrity: sha512-01Q7VY6BcAkp9W31Fv+ciiZycxZHGlR2N6ba9BifgyclHYHdbaZgITo0U6QMhYRlem4k8pf8J31/tApxvqAz8A==}
596
+
597
+
'@hyperjump/uri@1.3.1':
598
+
resolution: {integrity: sha512-2ecKymxf6prQMgrNpAvlx4RhsuM5+PFT6oh6uUTZdv5qmBv0RZvxv8LJ7oR30ZxGhdPdZAl4We/1NFc0nqHeAw==}
599
+
600
+
'@internationalized/date@3.8.2':
601
+
resolution: {integrity: sha512-/wENk7CbvLbkUvX1tu0mwq49CVkkWpkXubGel6birjRPyo6uQ4nQpnq5xZu823zRCwwn82zgHrvgF1vZyvmVgA==}
602
+
603
+
'@internationalized/number@3.6.4':
604
+
resolution: {integrity: sha512-P+/h+RDaiX8EGt3shB9AYM1+QgkvHmJ5rKi4/59k4sg9g58k9rqsRW0WxRO7jCoHyvVbFRRFKmVTdFYdehrxHg==}
605
+
606
+
'@jridgewell/gen-mapping@0.3.13':
607
+
resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
608
+
609
+
'@jridgewell/resolve-uri@3.1.2':
610
+
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
611
+
engines: {node: '>=6.0.0'}
612
+
613
+
'@jridgewell/source-map@0.3.11':
614
+
resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==}
615
+
616
+
'@jridgewell/sourcemap-codec@1.5.5':
617
+
resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
618
+
619
+
'@jridgewell/trace-mapping@0.3.30':
620
+
resolution: {integrity: sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==}
621
+
622
+
'@libsql/client@0.15.12':
623
+
resolution: {integrity: sha512-JIqB0XsNrqYqBQZuhcgZdTcQoNOoQ5AMF+1yxc7vcZrLtm42QJwRazmTuBfyDwtWASEmVgjxeaLF4NT1iyVX8g==}
505
624
506
-
'@libsql/core@0.15.9':
507
-
resolution: {integrity: sha512-4OVdeAmuaCUq5hYT8NNn0nxlO9AcA/eTjXfUZ+QK8MT3Dz7Z76m73x7KxjU6I64WyXX98dauVH2b9XM+d84npw==}
625
+
'@libsql/core@0.15.12':
626
+
resolution: {integrity: sha512-S3tF6885ZizVjfym7f8SevL2VId/+DzxiKmP5zFbrhA8oMLh2XH8bYXChmhab7o9qUSHx+XjK4jCFpUwR5g+Ig==}
508
627
509
-
'@libsql/darwin-arm64@0.5.13':
510
-
resolution: {integrity: sha512-ASz/EAMLDLx3oq9PVvZ4zBXXHbz2TxtxUwX2xpTRFR4V4uSHAN07+jpLu3aK5HUBLuv58z7+GjaL5w/cyjR28Q==}
628
+
'@libsql/darwin-arm64@0.5.17':
629
+
resolution: {integrity: sha512-WTYG2skZsUnZmfZ2v7WFj7s3/5s2PfrYBZOWBKOnxHA8g4XCDc/4bFDaqob9Q2e88+GC7cWeJ8VNkVBFpD2Xxg==}
511
630
cpu: [arm64]
512
631
os: [darwin]
513
632
514
-
'@libsql/darwin-x64@0.5.13':
515
-
resolution: {integrity: sha512-kzglniv1difkq8opusSXM7u9H0WoEPeKxw0ixIfcGfvlCVMJ+t9UNtXmyNHW68ljdllje6a4C6c94iPmIYafYA==}
633
+
'@libsql/darwin-x64@0.5.17':
634
+
resolution: {integrity: sha512-ab0RlTR4KYrxgjNrZhAhY/10GibKoq6G0W4oi0kdm+eYiAv/Ip8GDMpSaZdAcoKA4T+iKR/ehczKHnMEB8MFxA==}
516
635
cpu: [x64]
517
636
os: [darwin]
518
637
···
526
645
'@libsql/isomorphic-ws@0.1.5':
527
646
resolution: {integrity: sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg==}
528
647
529
-
'@libsql/linux-arm-gnueabihf@0.5.13':
530
-
resolution: {integrity: sha512-UEW+VZN2r0mFkfztKOS7cqfS8IemuekbjUXbXCwULHtusww2QNCXvM5KU9eJCNE419SZCb0qaEWYytcfka8qeA==}
648
+
'@libsql/linux-arm-gnueabihf@0.5.17':
649
+
resolution: {integrity: sha512-PcASh4k47RqC+kMWAbLUKf1y6Do0q8vnUGi0yhKY4ghJcimMExViBimjbjYRSa+WIb/zh3QxNoXOhQAXx3tiuw==}
531
650
cpu: [arm]
532
651
os: [linux]
533
652
534
-
'@libsql/linux-arm-musleabihf@0.5.13':
535
-
resolution: {integrity: sha512-NMDgLqryYBv4Sr3WoO/m++XDjR5KLlw9r/JK4Ym6A1XBv2bxQQNhH0Lxx3bjLW8qqhBD4+0xfms4d2cOlexPyA==}
653
+
'@libsql/linux-arm-musleabihf@0.5.17':
654
+
resolution: {integrity: sha512-vxOkSLG9Wspit+SNle84nuIzMtr2G2qaxFzW7BhsZBjlZ8+kErf9RXcT2YJQdJYxmBYRbsOrc91gg0jLEQVCqg==}
536
655
cpu: [arm]
537
656
os: [linux]
538
657
539
-
'@libsql/linux-arm64-gnu@0.5.13':
540
-
resolution: {integrity: sha512-/wCxVdrwl1ee6D6LEjwl+w4SxuLm5UL9Kb1LD5n0bBGs0q+49ChdPPh7tp175iRgkcrTgl23emymvt1yj3KxVQ==}
658
+
'@libsql/linux-arm64-gnu@0.5.17':
659
+
resolution: {integrity: sha512-L8jnaN01TxjBJlDuDTX2W2BKzBkAOhcnKfCOf3xzvvygblxnDOK0whkYwIXeTfwtd/rr4jN/d6dZD/bcHiDxEQ==}
541
660
cpu: [arm64]
542
661
os: [linux]
543
662
544
-
'@libsql/linux-arm64-musl@0.5.13':
545
-
resolution: {integrity: sha512-xnVAbZIanUgX57XqeI5sNaDnVilp0Di5syCLSEo+bRyBobe/1IAeehNZpyVbCy91U2N6rH1C/mZU7jicVI9x+A==}
663
+
'@libsql/linux-arm64-musl@0.5.17':
664
+
resolution: {integrity: sha512-HfFD7TzQtmmTwyQsuiHhWZdMRtdNpKJ1p4tbMMTMRECk+971NFHrj69D64cc2ClVTAmn7fA9XibKPil7WN/Q7w==}
546
665
cpu: [arm64]
547
666
os: [linux]
548
667
549
-
'@libsql/linux-x64-gnu@0.5.13':
550
-
resolution: {integrity: sha512-/mfMRxcQAI9f8t7tU3QZyh25lXgXKzgin9B9TOSnchD73PWtsVhlyfA6qOCfjQl5kr4sHscdXD5Yb3KIoUgrpQ==}
668
+
'@libsql/linux-x64-gnu@0.5.17':
669
+
resolution: {integrity: sha512-5l3XxWqUPVFrtX0xnZaXwqsXs0BFbP4w6ahRFTPSdXU50YBfUOajFznJRB6bJTMsCvraDSD0IkHhjSNfrE1CuQ==}
551
670
cpu: [x64]
552
671
os: [linux]
553
672
554
-
'@libsql/linux-x64-musl@0.5.13':
555
-
resolution: {integrity: sha512-rdefPTpQCVwUjIQYbDLMv3qpd5MdrT0IeD0UZPGqhT9AWU8nJSQoj2lfyIDAWEz7PPOVCY4jHuEn7FS2sw9kRA==}
673
+
'@libsql/linux-x64-musl@0.5.17':
674
+
resolution: {integrity: sha512-FvSpWlwc+dIeYIFYlsSv+UdQ/NiZWr+SstwVji+QZ//8NnvzwWQU9cgP+Vpps6Qiq4jyYQm9chJhTYOVT9Y3BA==}
556
675
cpu: [x64]
557
676
os: [linux]
558
677
559
-
'@libsql/win32-x64-msvc@0.5.13':
560
-
resolution: {integrity: sha512-aNcmDrD1Ws+dNZIv9ECbxBQumqB9MlSVEykwfXJpqv/593nABb8Ttg5nAGUPtnADyaGDTrGvPPP81d/KsKho4Q==}
678
+
'@libsql/win32-x64-msvc@0.5.17':
679
+
resolution: {integrity: sha512-f5bGH8+3A5sn6Lrqg8FsQ09a1pYXPnKGXGTFiAYlfQXVst1tUTxDTugnuWcJYKXyzDe/T7ccxyIZXeSmPOhq8A==}
561
680
cpu: [x64]
562
681
os: [win32]
563
682
564
683
'@neon-rs/load@0.0.4':
565
684
resolution: {integrity: sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw==}
685
+
686
+
'@noble/secp256k1@2.3.0':
687
+
resolution: {integrity: sha512-0TQed2gcBbIrh7Ccyw+y/uZQvbJwm7Ao4scBUxqpBCcsOlZG0O4KGfjtNAy/li4W8n1xt3dxrwJ0beZ2h2G6Kw==}
566
688
567
689
'@nodelib/fs.scandir@2.1.5':
568
690
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
···
576
698
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
577
699
engines: {node: '>= 8'}
578
700
579
-
'@pkgr/core@0.2.7':
580
-
resolution: {integrity: sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg==}
701
+
'@phosphor-icons/core@2.1.1':
702
+
resolution: {integrity: sha512-v4ARvrip4qBCImOE5rmPUylOEK4iiED9ZyKjcvzuezqMaiRASCHKcRIuvvxL/twvLpkfnEODCOJp5dM4eZilxQ==}
703
+
704
+
'@pkgr/core@0.2.9':
705
+
resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==}
581
706
engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
582
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
+
583
813
'@rtsao/scc@1.1.0':
584
814
resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==}
585
815
586
-
'@skyware/jetstream@0.2.2':
587
-
resolution: {integrity: sha512-d1MtWPTIFEciSzV8OClXZCJoz0DJ7aupt4EZSwpGAASYG0ZIPmZTt7RVJkoFzQyqRPHAMD7CvEwu0ut3MHX1og==}
816
+
'@scalar/code-highlight@0.1.9':
817
+
resolution: {integrity: sha512-WUUVDd1Wk7QJVKWXl/Zdn/VINc2pc1NlWW8VJFYZRm3/hKJwBhi0on7+HjVQNKgUaRy7+zluru5Ckl1gcTHHEg==}
818
+
engines: {node: '>=20'}
819
+
820
+
'@scalar/components@0.14.25':
821
+
resolution: {integrity: sha512-1lYVHa+9QVawEipFSBA/H9ROJJLijcAQ/kaFuTkJnZMS5DZ8aRB423TxVApJNSlMm96f8KGzIwS7Fq3sNYsXJg==}
822
+
engines: {node: '>=20'}
823
+
824
+
'@scalar/core@0.3.13':
825
+
resolution: {integrity: sha512-lgrueSjR1eacM39Zg0jAHikGomGAF2o2/s/5EcMz/ul7VLo/IBymw8gUjcGHZ9zd8PFGdo8DvOwFMRCiXiaDHw==}
826
+
engines: {node: '>=20'}
827
+
828
+
'@scalar/helpers@0.0.8':
829
+
resolution: {integrity: sha512-9A1CxL3jV7Kl9wGu86/cR/wiJN6J+3tK4WuW3252s2gF+upXsgQRx9WLhFF3xifOP1irIGusitZBiojiKmUSVg==}
830
+
engines: {node: '>=20'}
831
+
832
+
'@scalar/hono-api-reference@0.9.15':
833
+
resolution: {integrity: sha512-Lx/ity79xA3pdp624ikccDwvlY30M79e/1jvl/LjPDToc0byMr2tUVyHbmMhuaX8PVPlUKkdO97XGw0+M5IZJg==}
834
+
engines: {node: '>=20'}
835
+
peerDependencies:
836
+
hono: ^4.0.0
837
+
838
+
'@scalar/icons@0.4.7':
839
+
resolution: {integrity: sha512-0qXPGRdZ180TMfejWCPYy7ILszBrAraq4KBhPtcM12ghc5qkncFWWpTm5yXI/vrbm10t7wvtTK08CLZ36CnXlQ==}
840
+
engines: {node: '>=20'}
841
+
842
+
'@scalar/json-magic@0.3.0':
843
+
resolution: {integrity: sha512-RmX6tIsV76xHioQWVTB1By85+7tbBkKFFbMn3p+1s5PrPiK/U20AAv9OUTt6f5U5fjaTSuaQNVyyhn5SYjtBQQ==}
844
+
engines: {node: '>=20'}
845
+
846
+
'@scalar/oas-utils@0.4.20':
847
+
resolution: {integrity: sha512-zr7WLN6s6OLH+/BitInXOQxGOAr4ZDcIrQi6RFFc+U7F26rmhvhAN0qZXv8ew8SPnWyugH2PGjxZg0IgLs7+lQ==}
848
+
engines: {node: '>=20'}
849
+
850
+
'@scalar/object-utils@1.2.4':
851
+
resolution: {integrity: sha512-lX/+9Sp6euZvbsikGRZiHwmfbLd0oTLTttKbJF9v2EkahSrQUT0WF835Ct2N0R8xSkyQauDhT2xCfuA0QNqDeA==}
852
+
engines: {node: '>=20'}
853
+
854
+
'@scalar/openapi-parser@0.20.0':
855
+
resolution: {integrity: sha512-gsqpiDP9BuZNMx8Ma9UXapdoorIXiyAwr3qra/Zb3CsShun2KQoq20jSMJzVSTAm8HnBmNlZIQm1jSUvzDW5Tw==}
856
+
engines: {node: '>=20'}
857
+
858
+
'@scalar/openapi-to-markdown@0.2.28':
859
+
resolution: {integrity: sha512-IB1P48kgLzCjVJQfkR0E2+qnnNY9uDLfYrStfZN5drhvWO/EmT7EIgGvGVj7XJHga7B9UVIL+s6CtfhUkPN0EA==}
860
+
engines: {node: '>=20'}
861
+
862
+
'@scalar/openapi-types@0.3.7':
863
+
resolution: {integrity: sha512-QHSvHBVDze3+dUwAhIGq6l1iOev4jdoqdBK7QpfeN1Q4h+6qpVEw3EEqBiH0AXUSh/iWwObBv4uMgfIx0aNZ5g==}
864
+
engines: {node: '>=20'}
865
+
866
+
'@scalar/snippetz@0.4.5':
867
+
resolution: {integrity: sha512-Pp4EDn5BAA1b/srgm6b7iD23UwzQISdQOh+Ai3gTWFePZlMHNuQBAiaqgDyINs1YUAgkBP+VDLBVlWMCjWC93A==}
868
+
engines: {node: '>=20'}
869
+
870
+
'@scalar/themes@0.13.13':
871
+
resolution: {integrity: sha512-H67wm2Wfds6f+ygb/1qHWaKdieJdU8aGsU8qjGQamYPQriz6m6gr/AYNAc8B73I04ZXLswzJ6Doj/JcounPKZA==}
872
+
engines: {node: '>=20'}
873
+
874
+
'@scalar/types@0.2.12':
875
+
resolution: {integrity: sha512-CW7jS+gpc3lZdjf+888++I9HtsGCk6zbh4lZscY8spcg/dlXXd3ReYicxee/cx+soDjU1d/Pcqj9o/QqvTFYxQ==}
876
+
engines: {node: '>=20'}
877
+
878
+
'@scalar/use-hooks@0.2.4':
879
+
resolution: {integrity: sha512-TXviVV9Cfmei6g24QadnfuFj2r1YkZY56ufsSnwHgLNbtDRd9U9jXGIswXAuA+k7whaEVEgcoZ3Zmq2v5ZLF8w==}
880
+
engines: {node: '>=20'}
881
+
882
+
'@scalar/use-toasts@0.8.0':
883
+
resolution: {integrity: sha512-u+o77cdTNZ5ePqHPu8ZcFw1BLlISv+cthN0bR1zJHXmqBjvanFTy2kL+Gmv3eW9HxZiHdqycKVETlYd0mWiqJQ==}
884
+
engines: {node: '>=20'}
885
+
886
+
'@scalar/workspace-store@0.14.0':
887
+
resolution: {integrity: sha512-60gY3e3vsPn2ue1kMt4SlAM5mBZHObi0tGVZWYxwkXxvaKik2HaEpHQWZov7F6ZullCy1ECXNThzVE63zjqw9g==}
888
+
engines: {node: '>=18'}
889
+
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
893
+
894
+
'@skyware/jetstream@0.2.5':
895
+
resolution: {integrity: sha512-fM/zs03DLwqRyzZZJFWN20e76KrdqIp97Tlm8Cek+vxn96+tu5d/fx79V6H85L0QN6HvGiX2l9A8hWFqHvYlOA==}
896
+
897
+
'@swc/helpers@0.5.17':
898
+
resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==}
899
+
900
+
'@tanstack/virtual-core@3.13.12':
901
+
resolution: {integrity: sha512-1YBOJfRHV4sXUmWsFSf5rQor4Ss82G8dQWLRbnk3GA4jeP8hQt1hxXh0tmflpC0dz3VgEv/1+qwPyLeWkQuPFA==}
902
+
903
+
'@tanstack/vue-virtual@3.13.12':
904
+
resolution: {integrity: sha512-vhF7kEU9EXWXh+HdAwKJ2m3xaOnTTmgcdXcF2pim8g4GvI7eRrk2YRuV5nUlZnd/NbCIX4/Ja2OZu5EjJL06Ww==}
905
+
peerDependencies:
906
+
vue: ^2.7.0 || ^3.0.0
907
+
908
+
'@types/chai@5.2.2':
909
+
resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==}
910
+
911
+
'@types/debug@4.1.12':
912
+
resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
913
+
914
+
'@types/deep-eql@4.0.2':
915
+
resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==}
588
916
589
917
'@types/estree@1.0.8':
590
918
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
591
919
920
+
'@types/har-format@1.2.16':
921
+
resolution: {integrity: sha512-fluxdy7ryD3MV6h8pTfTYpy/xQzCFC7m89nOH9y94cNqJ1mDIDPut7MnRHI3F6qRmh/cT2fUjG1MLdCNb4hE9A==}
922
+
923
+
'@types/hast@3.0.4':
924
+
resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==}
925
+
592
926
'@types/json-schema@7.0.15':
593
927
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
594
928
595
929
'@types/json5@0.0.29':
596
930
resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
597
931
598
-
'@types/node@24.0.10':
599
-
resolution: {integrity: sha512-ENHwaH+JIRTDIEEbDK6QSQntAYGtbvdDXnMXnZaZ6k13Du1dPMmprkEHIL7ok2Wl2aZevetwTAb5S+7yIF+enA==}
932
+
'@types/mdast@4.0.4':
933
+
resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==}
934
+
935
+
'@types/ms@2.1.0':
936
+
resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
937
+
938
+
'@types/node@22.17.2':
939
+
resolution: {integrity: sha512-gL6z5N9Jm9mhY+U2KXZpteb+09zyffliRkZyZOHODGATyC5B1Jt/7TzuuiLkFsSUMLbS1OLmlj/E+/3KF4Q/4w==}
940
+
941
+
'@types/node@24.3.0':
942
+
resolution: {integrity: sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==}
600
943
601
944
'@types/triple-beam@1.3.5':
602
945
resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==}
603
946
947
+
'@types/unist@3.0.3':
948
+
resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
949
+
950
+
'@types/web-bluetooth@0.0.20':
951
+
resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==}
952
+
604
953
'@types/ws@8.18.1':
605
954
resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==}
606
955
607
-
'@typescript-eslint/eslint-plugin@8.35.1':
608
-
resolution: {integrity: sha512-9XNTlo7P7RJxbVeICaIIIEipqxLKguyh+3UbXuT2XQuFp6d8VOeDEGuz5IiX0dgZo8CiI6aOFLg4e8cF71SFVg==}
956
+
'@typescript-eslint/eslint-plugin@8.40.0':
957
+
resolution: {integrity: sha512-w/EboPlBwnmOBtRbiOvzjD+wdiZdgFeo17lkltrtn7X37vagKKWJABvyfsJXTlHe6XBzugmYgd4A4nW+k8Mixw==}
609
958
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
610
959
peerDependencies:
611
-
'@typescript-eslint/parser': ^8.35.1
960
+
'@typescript-eslint/parser': ^8.40.0
612
961
eslint: ^8.57.0 || ^9.0.0
613
-
typescript: '>=4.8.4 <5.9.0'
962
+
typescript: '>=4.8.4 <6.0.0'
614
963
615
-
'@typescript-eslint/parser@8.35.1':
616
-
resolution: {integrity: sha512-3MyiDfrfLeK06bi/g9DqJxP5pV74LNv4rFTyvGDmT3x2p1yp1lOd+qYZfiRPIOf/oON+WRZR5wxxuF85qOar+w==}
964
+
'@typescript-eslint/parser@8.40.0':
965
+
resolution: {integrity: sha512-jCNyAuXx8dr5KJMkecGmZ8KI61KBUhkCob+SD+C+I5+Y1FWI2Y3QmY4/cxMCC5WAsZqoEtEETVhUiUMIGCf6Bw==}
617
966
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
618
967
peerDependencies:
619
968
eslint: ^8.57.0 || ^9.0.0
620
-
typescript: '>=4.8.4 <5.9.0'
969
+
typescript: '>=4.8.4 <6.0.0'
621
970
622
-
'@typescript-eslint/project-service@8.35.1':
623
-
resolution: {integrity: sha512-VYxn/5LOpVxADAuP3NrnxxHYfzVtQzLKeldIhDhzC8UHaiQvYlXvKuVho1qLduFbJjjy5U5bkGwa3rUGUb1Q6Q==}
971
+
'@typescript-eslint/project-service@8.40.0':
972
+
resolution: {integrity: sha512-/A89vz7Wf5DEXsGVvcGdYKbVM9F7DyFXj52lNYUDS1L9yJfqjW/fIp5PgMuEJL/KeqVTe2QSbXAGUZljDUpArw==}
624
973
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
625
974
peerDependencies:
626
-
typescript: '>=4.8.4 <5.9.0'
975
+
typescript: '>=4.8.4 <6.0.0'
627
976
628
-
'@typescript-eslint/scope-manager@8.35.1':
629
-
resolution: {integrity: sha512-s/Bpd4i7ht2934nG+UoSPlYXd08KYz3bmjLEb7Ye1UVob0d1ENiT3lY8bsCmik4RqfSbPw9xJJHbugpPpP5JUg==}
977
+
'@typescript-eslint/scope-manager@8.40.0':
978
+
resolution: {integrity: sha512-y9ObStCcdCiZKzwqsE8CcpyuVMwRouJbbSrNuThDpv16dFAj429IkM6LNb1dZ2m7hK5fHyzNcErZf7CEeKXR4w==}
630
979
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
631
980
632
-
'@typescript-eslint/tsconfig-utils@8.35.1':
633
-
resolution: {integrity: sha512-K5/U9VmT9dTHoNowWZpz+/TObS3xqC5h0xAIjXPw+MNcKV9qg6eSatEnmeAwkjHijhACH0/N7bkhKvbt1+DXWQ==}
981
+
'@typescript-eslint/tsconfig-utils@8.40.0':
982
+
resolution: {integrity: sha512-jtMytmUaG9d/9kqSl/W3E3xaWESo4hFDxAIHGVW/WKKtQhesnRIJSAJO6XckluuJ6KDB5woD1EiqknriCtAmcw==}
634
983
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
635
984
peerDependencies:
636
-
typescript: '>=4.8.4 <5.9.0'
985
+
typescript: '>=4.8.4 <6.0.0'
637
986
638
-
'@typescript-eslint/type-utils@8.35.1':
639
-
resolution: {integrity: sha512-HOrUBlfVRz5W2LIKpXzZoy6VTZzMu2n8q9C2V/cFngIC5U1nStJgv0tMV4sZPzdf4wQm9/ToWUFPMN9Vq9VJQQ==}
987
+
'@typescript-eslint/type-utils@8.40.0':
988
+
resolution: {integrity: sha512-eE60cK4KzAc6ZrzlJnflXdrMqOBaugeukWICO2rB0KNvwdIMaEaYiywwHMzA1qFpTxrLhN9Lp4E/00EgWcD3Ow==}
640
989
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
641
990
peerDependencies:
642
991
eslint: ^8.57.0 || ^9.0.0
643
-
typescript: '>=4.8.4 <5.9.0'
992
+
typescript: '>=4.8.4 <6.0.0'
644
993
645
-
'@typescript-eslint/types@8.35.1':
646
-
resolution: {integrity: sha512-q/O04vVnKHfrrhNAscndAn1tuQhIkwqnaW+eu5waD5IPts2eX1dgJxgqcPx5BX109/qAz7IG6VrEPTOYKCNfRQ==}
994
+
'@typescript-eslint/types@8.40.0':
995
+
resolution: {integrity: sha512-ETdbFlgbAmXHyFPwqUIYrfc12ArvpBhEVgGAxVYSwli26dn8Ko+lIo4Su9vI9ykTZdJn+vJprs/0eZU0YMAEQg==}
647
996
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
648
997
649
-
'@typescript-eslint/typescript-estree@8.35.1':
650
-
resolution: {integrity: sha512-Vvpuvj4tBxIka7cPs6Y1uvM7gJgdF5Uu9F+mBJBPY4MhvjrjWGK4H0lVgLJd/8PWZ23FTqsaJaLEkBCFUk8Y9g==}
998
+
'@typescript-eslint/typescript-estree@8.40.0':
999
+
resolution: {integrity: sha512-k1z9+GJReVVOkc1WfVKs1vBrR5MIKKbdAjDTPvIK3L8De6KbFfPFt6BKpdkdk7rZS2GtC/m6yI5MYX+UsuvVYQ==}
651
1000
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
652
1001
peerDependencies:
653
-
typescript: '>=4.8.4 <5.9.0'
1002
+
typescript: '>=4.8.4 <6.0.0'
654
1003
655
-
'@typescript-eslint/utils@8.35.1':
656
-
resolution: {integrity: sha512-lhnwatFmOFcazAsUm3ZnZFpXSxiwoa1Lj50HphnDe1Et01NF4+hrdXONSUHIcbVu2eFb1bAf+5yjXkGVkXBKAQ==}
1004
+
'@typescript-eslint/utils@8.40.0':
1005
+
resolution: {integrity: sha512-Cgzi2MXSZyAUOY+BFwGs17s7ad/7L+gKt6Y8rAVVWS+7o6wrjeFN4nVfTpbE25MNcxyJ+iYUXflbs2xR9h4UBg==}
657
1006
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
658
1007
peerDependencies:
659
1008
eslint: ^8.57.0 || ^9.0.0
660
-
typescript: '>=4.8.4 <5.9.0'
1009
+
typescript: '>=4.8.4 <6.0.0'
661
1010
662
-
'@typescript-eslint/visitor-keys@8.35.1':
663
-
resolution: {integrity: sha512-VRwixir4zBWCSTP/ljEo091lbpypz57PoeAQ9imjG+vbeof9LplljsL1mos4ccG6H9IjfrVGM359RozUnuFhpw==}
1011
+
'@typescript-eslint/visitor-keys@8.40.0':
1012
+
resolution: {integrity: sha512-8CZ47QwalyRjsypfwnbI3hKy5gJDPmrkLjkgMxhi0+DZZ2QNx2naS6/hWoVYUHU7LU2zleF68V9miaVZvhFfTA==}
664
1013
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
665
1014
1015
+
'@ungap/structured-clone@1.3.0':
1016
+
resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
1017
+
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==}
1034
+
1035
+
'@vitest/runner@3.2.4':
1036
+
resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==}
1037
+
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==}
1055
+
1056
+
'@vue/compiler-ssr@3.5.19':
1057
+
resolution: {integrity: sha512-/wx0VZtkWOPdiQLWPeQeqpHWR/LuNC7bHfSX7OayBTtUy8wur6vT6EQIX6Et86aED6J+y8tTw43qo2uoqGg5sw==}
1058
+
1059
+
'@vue/reactivity@3.5.19':
1060
+
resolution: {integrity: sha512-4bueZg2qs5MSsK2dQk3sssV0cfvxb/QZntTC8v7J448GLgmfPkQ+27aDjlt40+XFqOwUq5yRxK5uQh14Fc9eVA==}
1061
+
1062
+
'@vue/runtime-core@3.5.19':
1063
+
resolution: {integrity: sha512-TaooCr8Hge1sWjLSyhdubnuofs3shhzZGfyD11gFolZrny76drPwBVQj28/z/4+msSFb18tOIg6VVVgf9/IbIA==}
1064
+
1065
+
'@vue/runtime-dom@3.5.19':
1066
+
resolution: {integrity: sha512-qmahqeok6ztuUTmV8lqd7N9ymbBzctNF885n8gL3xdCC1u2RnM/coX16Via0AiONQXUoYpxPojL3U1IsDgSWUQ==}
1067
+
1068
+
'@vue/server-renderer@3.5.19':
1069
+
resolution: {integrity: sha512-ZJ/zV9SQuaIO+BEEVq/2a6fipyrSYfjKMU3267bPUk+oTx/hZq3RzV7VCh0Unlppt39Bvh6+NzxeopIFv4HJNg==}
1070
+
peerDependencies:
1071
+
vue: 3.5.19
1072
+
1073
+
'@vue/shared@3.5.19':
1074
+
resolution: {integrity: sha512-IhXCOn08wgKrLQxRFKKlSacWg4Goi1BolrdEeLYn6tgHjJNXVrWJ5nzoxZqNwl5p88aLlQ8LOaoMa3AYvaKJ/Q==}
1075
+
1076
+
'@vueuse/core@10.11.1':
1077
+
resolution: {integrity: sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww==}
1078
+
1079
+
'@vueuse/core@11.3.0':
1080
+
resolution: {integrity: sha512-7OC4Rl1f9G8IT6rUfi9JrKiXy4bfmHhZ5x2Ceojy0jnd3mHNEvV4JaRygH362ror6/NZ+Nl+n13LPzGiPN8cKA==}
1081
+
1082
+
'@vueuse/metadata@10.11.1':
1083
+
resolution: {integrity: sha512-IGa5FXd003Ug1qAZmyE8wF3sJ81xGLSqTqtQ6jaVfkeZ4i5kS2mwQF61yhVqojRnenVew5PldLyRgvdl4YYuSw==}
1084
+
1085
+
'@vueuse/metadata@11.3.0':
1086
+
resolution: {integrity: sha512-pwDnDspTqtTo2HwfLw4Rp6yywuuBdYnPYDq+mO38ZYKGebCUQC/nVj/PXSiK9HX5otxLz8Fn7ECPbjiRz2CC3g==}
1087
+
1088
+
'@vueuse/shared@10.11.1':
1089
+
resolution: {integrity: sha512-LHpC8711VFZlDaYUXEBbFBCQ7GS3dVU9mjOhhMhXP6txTV4EhYQg/KGnQuvt/sPAtoUKq7VVUnL6mVtFoL42sA==}
1090
+
1091
+
'@vueuse/shared@11.3.0':
1092
+
resolution: {integrity: sha512-P8gSSWQeucH5821ek2mn/ciCk+MS/zoRKqdQIM3bHq6p7GXDAJLmnRRKmF5F65sAVJIfzQlwR3aDzwCn10s8hA==}
1093
+
666
1094
acorn-jsx@5.3.2:
667
1095
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
668
1096
peerDependencies:
···
673
1101
engines: {node: '>=0.4.0'}
674
1102
hasBin: true
675
1103
1104
+
ajv-draft-04@1.0.0:
1105
+
resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==}
1106
+
peerDependencies:
1107
+
ajv: ^8.5.0
1108
+
peerDependenciesMeta:
1109
+
ajv:
1110
+
optional: true
1111
+
1112
+
ajv-formats@3.0.1:
1113
+
resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==}
1114
+
peerDependencies:
1115
+
ajv: ^8.0.0
1116
+
peerDependenciesMeta:
1117
+
ajv:
1118
+
optional: true
1119
+
676
1120
ajv@6.12.6:
677
1121
resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
678
1122
1123
+
ajv@8.17.1:
1124
+
resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==}
1125
+
679
1126
ansi-styles@4.3.0:
680
1127
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
681
1128
engines: {node: '>=8'}
682
1129
683
1130
argparse@2.0.1:
684
1131
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
1132
+
1133
+
aria-hidden@1.2.6:
1134
+
resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==}
1135
+
engines: {node: '>=10'}
685
1136
686
1137
array-buffer-byte-length@1.0.2:
687
1138
resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==}
···
707
1158
resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==}
708
1159
engines: {node: '>= 0.4'}
709
1160
1161
+
assertion-error@2.0.1:
1162
+
resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
1163
+
engines: {node: '>=12'}
1164
+
710
1165
async-function@1.0.0:
711
1166
resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==}
712
1167
engines: {node: '>= 0.4'}
···
717
1172
available-typed-arrays@1.0.7:
718
1173
resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
719
1174
engines: {node: '>= 0.4'}
1175
+
1176
+
bail@2.0.2:
1177
+
resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
720
1178
721
1179
balanced-match@1.0.2:
722
1180
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
···
737
1195
bun-types@1.2.17:
738
1196
resolution: {integrity: sha512-ElC7ItwT3SCQwYZDYoAH+q6KT4Fxjl8DtZ6qDulUFBmXA8YB4xo+l54J9ZJN+k2pphfn9vk7kfubeSd5QfTVJQ==}
739
1197
1198
+
cac@6.7.14:
1199
+
resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
1200
+
engines: {node: '>=8'}
1201
+
740
1202
call-bind-apply-helpers@1.0.2:
741
1203
resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
742
1204
engines: {node: '>= 0.4'}
···
753
1215
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
754
1216
engines: {node: '>=6'}
755
1217
1218
+
camel-case@4.1.2:
1219
+
resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==}
1220
+
1221
+
ccount@2.0.1:
1222
+
resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
1223
+
1224
+
chai@5.3.3:
1225
+
resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==}
1226
+
engines: {node: '>=18'}
1227
+
756
1228
chalk@4.1.2:
757
1229
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
758
1230
engines: {node: '>=10'}
759
1231
1232
+
chalk@5.6.0:
1233
+
resolution: {integrity: sha512-46QrSQFyVSEyYAgQ22hQ+zDa60YHA4fBstHmtSApj1Y5vKtG27fWowW03jCk5KcbXEWPZUIR894aARCA/G1kfQ==}
1234
+
engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
1235
+
1236
+
character-entities-html4@2.1.0:
1237
+
resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==}
1238
+
1239
+
character-entities-legacy@3.0.0:
1240
+
resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==}
1241
+
1242
+
character-entities@2.0.2:
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'}
1248
+
1249
+
clean-css@5.3.3:
1250
+
resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==}
1251
+
engines: {node: '>= 10.0'}
1252
+
1253
+
clsx@2.1.1:
1254
+
resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
1255
+
engines: {node: '>=6'}
1256
+
760
1257
color-convert@1.9.3:
761
1258
resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
762
1259
···
779
1276
colorspace@1.1.4:
780
1277
resolution: {integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==}
781
1278
1279
+
comma-separated-tokens@2.0.3:
1280
+
resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
1281
+
1282
+
commander@10.0.1:
1283
+
resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==}
1284
+
engines: {node: '>=14'}
1285
+
1286
+
commander@2.20.3:
1287
+
resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
1288
+
782
1289
concat-map@0.0.1:
783
1290
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
784
1291
1292
+
content-type@1.0.5:
1293
+
resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
1294
+
engines: {node: '>= 0.6'}
1295
+
785
1296
cross-spawn@7.0.6:
786
1297
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
787
1298
engines: {node: '>= 8'}
788
1299
1300
+
csstype@3.1.3:
1301
+
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
1302
+
1303
+
cva@1.0.0-beta.2:
1304
+
resolution: {integrity: sha512-dqcOFe247I5pKxfuzqfq3seLL5iMYsTgo40Uw7+pKZAntPgFtR7Tmy59P5IVIq/XgB0NQWoIvYDt9TwHkuK8Cg==}
1305
+
peerDependencies:
1306
+
typescript: '>= 4.5.5 < 6'
1307
+
peerDependenciesMeta:
1308
+
typescript:
1309
+
optional: true
1310
+
1311
+
dank-each@1.0.0:
1312
+
resolution: {integrity: sha512-gMDy24y+3LlnAaHq4WFwRKliMZRkGp41Gy9JVsD1BO5tprb/lEh4afJlkankcTqRoppSaHRwgFQX61QjJ5ClfQ==}
1313
+
1314
+
dank-map@0.1.0:
1315
+
resolution: {integrity: sha512-mQoLySkWc5bQM8XKXz0rIuISX/+12rSSfPojYlTVT6KPj3LsvfLURtrv0w+QEt1gRIKwp9mxnwOcL5nsOTkk2Q==}
1316
+
789
1317
data-uri-to-buffer@4.0.1:
790
1318
resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==}
791
1319
engines: {node: '>= 12'}
···
819
1347
supports-color:
820
1348
optional: true
821
1349
1350
+
decode-named-character-reference@1.2.0:
1351
+
resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==}
1352
+
1353
+
deep-eql@5.0.2:
1354
+
resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==}
1355
+
engines: {node: '>=6'}
1356
+
822
1357
deep-is@0.1.4:
823
1358
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
824
1359
···
830
1365
resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
831
1366
engines: {node: '>= 0.4'}
832
1367
1368
+
defu@6.1.4:
1369
+
resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==}
1370
+
1371
+
dequal@2.0.3:
1372
+
resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
1373
+
engines: {node: '>=6'}
1374
+
833
1375
detect-libc@2.0.2:
834
1376
resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==}
835
1377
engines: {node: '>=8'}
1378
+
1379
+
devlop@1.1.0:
1380
+
resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
836
1381
837
1382
doctrine@2.1.0:
838
1383
resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
839
1384
engines: {node: '>=0.10.0'}
840
1385
1386
+
dot-case@3.0.4:
1387
+
resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==}
1388
+
841
1389
drizzle-kit@0.31.4:
842
1390
resolution: {integrity: sha512-tCPWVZWZqWVx2XUsVpJRnH9Mx0ClVOf5YUHerZ5so1OKSlqww4zy1R5ksEdGRcO3tM3zj0PYN6V48TbQCL1RfA==}
843
1391
hasBin: true
844
1392
845
-
drizzle-orm@0.44.2:
846
-
resolution: {integrity: sha512-zGAqBzWWkVSFjZpwPOrmCrgO++1kZ5H/rZ4qTGeGOe18iXGVJWf3WPfHOVwFIbmi8kHjfJstC6rJomzGx8g/dQ==}
1393
+
drizzle-orm@0.44.4:
1394
+
resolution: {integrity: sha512-ZyzKFpTC/Ut3fIqc2c0dPZ6nhchQXriTsqTNs4ayRgl6sZcFlMs9QZKPSHXK4bdOf41GHGWf+FrpcDDYwW+W6Q==}
847
1395
peerDependencies:
848
1396
'@aws-sdk/client-rds-data': '>=3'
849
1397
'@cloudflare/workers-types': '>=4'
···
941
1489
enabled@2.0.0:
942
1490
resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==}
943
1491
1492
+
entities@4.5.0:
1493
+
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
1494
+
engines: {node: '>=0.12'}
1495
+
1496
+
entities@6.0.1:
1497
+
resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==}
1498
+
engines: {node: '>=0.12'}
1499
+
944
1500
es-abstract@1.24.0:
945
1501
resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==}
946
1502
engines: {node: '>= 0.4'}
···
952
1508
es-errors@1.3.0:
953
1509
resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
954
1510
engines: {node: '>= 0.4'}
1511
+
1512
+
es-module-lexer@1.7.0:
1513
+
resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==}
955
1514
956
1515
es-object-atoms@1.1.1:
957
1516
resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
···
979
1538
engines: {node: '>=12'}
980
1539
hasBin: true
981
1540
982
-
esbuild@0.25.5:
983
-
resolution: {integrity: sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==}
1541
+
esbuild@0.25.9:
1542
+
resolution: {integrity: sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==}
984
1543
engines: {node: '>=18'}
985
1544
hasBin: true
986
1545
···
988
1547
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
989
1548
engines: {node: '>=10'}
990
1549
991
-
eslint-config-prettier@10.1.5:
992
-
resolution: {integrity: sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw==}
1550
+
escape-string-regexp@5.0.0:
1551
+
resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
1552
+
engines: {node: '>=12'}
1553
+
1554
+
eslint-config-prettier@10.1.8:
1555
+
resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==}
993
1556
hasBin: true
994
1557
peerDependencies:
995
1558
eslint: '>=7.0.0'
···
1033
1596
'@typescript-eslint/parser':
1034
1597
optional: true
1035
1598
1036
-
eslint-plugin-prettier@5.5.1:
1037
-
resolution: {integrity: sha512-dobTkHT6XaEVOo8IO90Q4DOSxnm3Y151QxPJlM/vKC0bVy+d6cVWQZLlFiuZPP0wS6vZwSKeJgKkcS+KfMBlRw==}
1599
+
eslint-plugin-prettier@5.5.4:
1600
+
resolution: {integrity: sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==}
1038
1601
engines: {node: ^14.18.0 || >=16.0.0}
1039
1602
peerDependencies:
1040
1603
'@types/eslint': '>=8.0.0'
···
1059
1622
resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==}
1060
1623
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
1061
1624
1062
-
eslint@9.30.1:
1063
-
resolution: {integrity: sha512-zmxXPNMOXmwm9E0yQLi5uqXHs7uq2UIiqEKo3Gq+3fwo1XrJ+hijAZImyF7hclW3E6oHz43Yk3RP8at6OTKflQ==}
1625
+
eslint@9.33.0:
1626
+
resolution: {integrity: sha512-TS9bTNIryDzStCpJN93aC5VRSW3uTx9sClUn4B87pwiCaJh220otoI0X8mJKr+VcPtniMdN8GKjlwgWGUv5ZKA==}
1064
1627
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
1065
1628
hasBin: true
1066
1629
peerDependencies:
···
1088
1651
resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
1089
1652
engines: {node: '>=4.0'}
1090
1653
1654
+
estree-walker@2.0.2:
1655
+
resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
1656
+
1657
+
estree-walker@3.0.3:
1658
+
resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
1659
+
1091
1660
esutils@2.0.3:
1092
1661
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
1093
1662
engines: {node: '>=0.10.0'}
···
1095
1664
event-target-polyfill@0.0.4:
1096
1665
resolution: {integrity: sha512-Gs6RLjzlLRdT8X9ZipJdIZI/Y6/HhRLyq9RdDlCsnpxr/+Nn6bU2EFGuC94GjxqhM+Nmij2Vcq98yoHrU8uNFQ==}
1097
1666
1667
+
expect-type@1.2.2:
1668
+
resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==}
1669
+
engines: {node: '>=12.0.0'}
1670
+
1671
+
extend@3.0.2:
1672
+
resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
1673
+
1098
1674
fast-deep-equal@3.1.3:
1099
1675
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
1100
1676
···
1111
1687
fast-levenshtein@2.0.6:
1112
1688
resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
1113
1689
1690
+
fast-uri@3.0.6:
1691
+
resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==}
1692
+
1114
1693
fastq@1.19.1:
1115
1694
resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==}
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
1116
1704
1117
1705
fecha@4.2.3:
1118
1706
resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==}
···
1170
1758
resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
1171
1759
engines: {node: '>= 0.4'}
1172
1760
1761
+
get-own-enumerable-keys@1.0.0:
1762
+
resolution: {integrity: sha512-PKsK2FSrQCyxcGHsGrLDcK0lx+0Ke+6e8KFFozA9/fIQLhQzPaRvJFdcz7+Axg3jUH/Mq+NI4xa5u/UT2tQskA==}
1763
+
engines: {node: '>=14.16'}
1764
+
1173
1765
get-proto@1.0.1:
1174
1766
resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
1175
1767
engines: {node: '>= 0.4'}
···
1180
1772
1181
1773
get-tsconfig@4.10.1:
1182
1774
resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==}
1775
+
1776
+
github-slugger@2.0.0:
1777
+
resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==}
1183
1778
1184
1779
glob-parent@5.1.2:
1185
1780
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
···
1235
1830
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
1236
1831
engines: {node: '>= 0.4'}
1237
1832
1238
-
hono@4.8.4:
1239
-
resolution: {integrity: sha512-KOIBp1+iUs0HrKztM4EHiB2UtzZDTBihDtOF5K6+WaJjCPeaW4Q92R8j63jOhvJI5+tZSMuKD9REVEXXY9illg==}
1833
+
hast-util-embedded@3.0.0:
1834
+
resolution: {integrity: sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==}
1835
+
1836
+
hast-util-format@1.1.0:
1837
+
resolution: {integrity: sha512-yY1UDz6bC9rDvCWHpx12aIBGRG7krurX0p0Fm6pT547LwDIZZiNr8a+IHDogorAdreULSEzP82Nlv5SZkHZcjA==}
1838
+
1839
+
hast-util-from-html@2.0.3:
1840
+
resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==}
1841
+
1842
+
hast-util-from-parse5@8.0.3:
1843
+
resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==}
1844
+
1845
+
hast-util-has-property@3.0.0:
1846
+
resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==}
1847
+
1848
+
hast-util-is-body-ok-link@3.0.1:
1849
+
resolution: {integrity: sha512-0qpnzOBLztXHbHQenVB8uNuxTnm/QBFUOmdOSsEn7GnBtyY07+ENTWVFBAnXd/zEgd9/SUG3lRY7hSIBWRgGpQ==}
1850
+
1851
+
hast-util-is-element@3.0.0:
1852
+
resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==}
1853
+
1854
+
hast-util-minify-whitespace@1.0.1:
1855
+
resolution: {integrity: sha512-L96fPOVpnclQE0xzdWb/D12VT5FabA7SnZOUMtL1DbXmYiHJMXZvFkIZfiMmTCNJHUeO2K9UYNXoVyfz+QHuOw==}
1856
+
1857
+
hast-util-parse-selector@4.0.0:
1858
+
resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==}
1859
+
1860
+
hast-util-phrasing@3.0.1:
1861
+
resolution: {integrity: sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==}
1862
+
1863
+
hast-util-raw@9.1.0:
1864
+
resolution: {integrity: sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==}
1865
+
1866
+
hast-util-sanitize@5.0.2:
1867
+
resolution: {integrity: sha512-3yTWghByc50aGS7JlGhk61SPenfE/p1oaFeNwkOOyrscaOkMGrcW9+Cy/QAIOBpZxP1yqDIzFMR0+Np0i0+usg==}
1868
+
1869
+
hast-util-to-html@9.0.5:
1870
+
resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==}
1871
+
1872
+
hast-util-to-mdast@10.1.2:
1873
+
resolution: {integrity: sha512-FiCRI7NmOvM4y+f5w32jPRzcxDIz+PUqDwEqn1A+1q2cdp3B8Gx7aVrXORdOKjMNDQsD1ogOr896+0jJHW1EFQ==}
1874
+
1875
+
hast-util-to-parse5@8.0.0:
1876
+
resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==}
1877
+
1878
+
hast-util-to-text@4.0.2:
1879
+
resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==}
1880
+
1881
+
hast-util-whitespace@3.0.0:
1882
+
resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
1883
+
1884
+
hastscript@9.0.1:
1885
+
resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==}
1886
+
1887
+
highlight.js@11.11.1:
1888
+
resolution: {integrity: sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==}
1889
+
engines: {node: '>=12.0.0'}
1890
+
1891
+
highlightjs-curl@1.3.0:
1892
+
resolution: {integrity: sha512-50UEfZq1KR0Lfk2Tr6xb/MUIZH3h10oNC0OTy9g7WELcs5Fgy/mKN1vEhuKTkKbdo8vr5F9GXstu2eLhApfQ3A==}
1893
+
1894
+
highlightjs-vue@1.0.0:
1895
+
resolution: {integrity: sha512-PDEfEF102G23vHmPhLyPboFCD+BkMGu+GuJe2d9/eH4FsCwvgBpnc9n0pGE+ffKdph38s6foEZiEjdgHdzp+IA==}
1896
+
1897
+
hono@4.9.4:
1898
+
resolution: {integrity: sha512-61hl6MF6ojTl/8QSRu5ran6GXt+6zsngIUN95KzF5v5UjiX/xnrLR358BNRawwIRO49JwUqJqQe3Rb2v559R8Q==}
1240
1899
engines: {node: '>=16.9.0'}
1900
+
1901
+
html-minifier-terser@7.2.0:
1902
+
resolution: {integrity: sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==}
1903
+
engines: {node: ^14.13.1 || >=16.0.0}
1904
+
hasBin: true
1905
+
1906
+
html-void-elements@3.0.0:
1907
+
resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==}
1908
+
1909
+
html-whitespace-sensitive-tag-names@3.0.1:
1910
+
resolution: {integrity: sha512-q+310vW8zmymYHALr1da4HyXUQ0zgiIwIicEfotYPWGN0OJVEN/58IJ3A4GBYcEq3LGAZqKb+ugvP0GNB9CEAA==}
1241
1911
1242
1912
ignore@5.3.2:
1243
1913
resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
···
1261
1931
internal-slot@1.1.0:
1262
1932
resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==}
1263
1933
engines: {node: '>= 0.4'}
1934
+
1935
+
is-absolute-url@4.0.1:
1936
+
resolution: {integrity: sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==}
1937
+
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1264
1938
1265
1939
is-array-buffer@3.0.5:
1266
1940
resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==}
···
1329
2003
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
1330
2004
engines: {node: '>=0.12.0'}
1331
2005
2006
+
is-obj@3.0.0:
2007
+
resolution: {integrity: sha512-IlsXEHOjtKhpN8r/tRFj2nDyTmHvcfNeu/nrRIcXE17ROeatXchkojffa1SpdqW4cr/Fj6QkEf/Gn4zf6KKvEQ==}
2008
+
engines: {node: '>=12'}
2009
+
2010
+
is-plain-obj@4.1.0:
2011
+
resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
2012
+
engines: {node: '>=12'}
2013
+
1332
2014
is-regex@1.2.1:
1333
2015
resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==}
1334
2016
engines: {node: '>= 0.4'}
1335
2017
2018
+
is-regexp@3.1.0:
2019
+
resolution: {integrity: sha512-rbku49cWloU5bSMI+zaRaXdQHXnthP6DZ/vLnfdSKyL4zUzuWnomtOEiZZOd+ioQ+avFo/qau3KPTc7Fjy1uPA==}
2020
+
engines: {node: '>=12'}
2021
+
1336
2022
is-set@2.0.3:
1337
2023
resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==}
1338
2024
engines: {node: '>= 0.4'}
···
1375
2061
isexe@2.0.0:
1376
2062
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
1377
2063
1378
-
jiti@2.4.2:
1379
-
resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==}
2064
+
jiti@2.5.1:
2065
+
resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==}
1380
2066
hasBin: true
1381
2067
1382
-
js-base64@3.7.7:
1383
-
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==}
1384
2073
1385
2074
js-yaml@4.1.0:
1386
2075
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
···
1392
2081
json-schema-traverse@0.4.1:
1393
2082
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
1394
2083
2084
+
json-schema-traverse@1.0.0:
2085
+
resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
2086
+
1395
2087
json-stable-stringify-without-jsonify@1.0.1:
1396
2088
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
1397
2089
2090
+
json-stringify-deterministic@1.0.12:
2091
+
resolution: {integrity: sha512-q3PN0lbUdv0pmurkBNdJH3pfFvOTL/Zp0lquqpvcjfKzt6Y0j49EPHAmVHCAS4Ceq/Y+PejWTzyiVpoY71+D6g==}
2092
+
engines: {node: '>= 4'}
2093
+
1398
2094
json5@1.0.2:
1399
2095
resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
1400
2096
hasBin: true
1401
2097
2098
+
jsonpointer@5.0.1:
2099
+
resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==}
2100
+
engines: {node: '>=0.10.0'}
2101
+
2102
+
just-clone@6.2.0:
2103
+
resolution: {integrity: sha512-1IynUYEc/HAwxhi3WDpIpxJbZpMCvvrrmZVqvj9EhpvbH8lls7HhdhiByjL7DkAaWlLIzpC0Xc/VPvy/UxLNjA==}
2104
+
2105
+
just-curry-it@5.3.0:
2106
+
resolution: {integrity: sha512-silMIRiFjUWlfaDhkgSzpuAyQ6EX/o09Eu8ZBfmFwQMbax7+LQzeIU2CBrICT6Ne4l86ITCGvUCBpCubWYy0Yw==}
2107
+
1402
2108
keyv@4.5.4:
1403
2109
resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
1404
2110
1405
2111
kuler@2.0.0:
1406
2112
resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==}
1407
2113
2114
+
leven@4.0.0:
2115
+
resolution: {integrity: sha512-puehA3YKku3osqPlNuzGDUHq8WpwXupUg1V6NXdV38G+gr+gkBwFC8g1b/+YcIvp8gnqVIus+eJCH/eGsRmJNw==}
2116
+
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
2117
+
1408
2118
levn@0.4.1:
1409
2119
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
1410
2120
engines: {node: '>= 0.8.0'}
1411
2121
1412
-
libsql@0.5.13:
1413
-
resolution: {integrity: sha512-5Bwoa/CqzgkTwySgqHA5TsaUDRrdLIbdM4egdPcaAnqO3aC+qAgS6BwdzuZwARA5digXwiskogZ8H7Yy4XfdOg==}
2122
+
libsql@0.5.17:
2123
+
resolution: {integrity: sha512-RRlj5XQI9+Wq+/5UY8EnugSWfRmHEw4hn3DKlPrkUgZONsge1PwTtHcpStP6MSNi8ohcbsRgEHJaymA33a8cBw==}
1414
2124
cpu: [x64, arm64, wasm32, arm]
1415
2125
os: [darwin, linux, win32]
1416
2126
···
1425
2135
resolution: {integrity: sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==}
1426
2136
engines: {node: '>= 12.0.0'}
1427
2137
2138
+
longest-streak@3.1.0:
2139
+
resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
2140
+
2141
+
loupe@3.2.1:
2142
+
resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==}
2143
+
2144
+
lower-case@2.0.2:
2145
+
resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==}
2146
+
2147
+
lowlight@3.3.0:
2148
+
resolution: {integrity: sha512-0JNhgFoPvP6U6lE/UdVsSq99tn6DhjjpAj5MxG49ewd2mOBVtwWYIT8ClyABhq198aXXODMU6Ox8DrGy/CpTZQ==}
2149
+
2150
+
magic-string@0.30.18:
2151
+
resolution: {integrity: sha512-yi8swmWbO17qHhwIBNeeZxTceJMeBvWJaId6dyvTSOwTipqeHhMhOrz6513r1sOKnpvQ7zkhlG8tPrpilwTxHQ==}
2152
+
2153
+
markdown-table@3.0.4:
2154
+
resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==}
2155
+
1428
2156
math-intrinsics@1.1.0:
1429
2157
resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
1430
2158
engines: {node: '>= 0.4'}
1431
2159
2160
+
mdast-util-find-and-replace@3.0.2:
2161
+
resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==}
2162
+
2163
+
mdast-util-from-markdown@2.0.2:
2164
+
resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==}
2165
+
2166
+
mdast-util-gfm-autolink-literal@2.0.1:
2167
+
resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==}
2168
+
2169
+
mdast-util-gfm-footnote@2.1.0:
2170
+
resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==}
2171
+
2172
+
mdast-util-gfm-strikethrough@2.0.0:
2173
+
resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==}
2174
+
2175
+
mdast-util-gfm-table@2.0.0:
2176
+
resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==}
2177
+
2178
+
mdast-util-gfm-task-list-item@2.0.0:
2179
+
resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==}
2180
+
2181
+
mdast-util-gfm@3.1.0:
2182
+
resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==}
2183
+
2184
+
mdast-util-phrasing@4.1.0:
2185
+
resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==}
2186
+
2187
+
mdast-util-to-hast@13.2.0:
2188
+
resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==}
2189
+
2190
+
mdast-util-to-markdown@2.1.2:
2191
+
resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==}
2192
+
2193
+
mdast-util-to-string@4.0.0:
2194
+
resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==}
2195
+
1432
2196
merge2@1.4.1:
1433
2197
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
1434
2198
engines: {node: '>= 8'}
1435
2199
2200
+
microdiff@1.5.0:
2201
+
resolution: {integrity: sha512-Drq+/THMvDdzRYrK0oxJmOKiC24ayUV8ahrt8l3oRK51PWt6gdtrIGrlIH3pT/lFh1z93FbAcidtsHcWbnRz8Q==}
2202
+
2203
+
micromark-core-commonmark@2.0.3:
2204
+
resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==}
2205
+
2206
+
micromark-extension-gfm-autolink-literal@2.1.0:
2207
+
resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==}
2208
+
2209
+
micromark-extension-gfm-footnote@2.1.0:
2210
+
resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==}
2211
+
2212
+
micromark-extension-gfm-strikethrough@2.1.0:
2213
+
resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==}
2214
+
2215
+
micromark-extension-gfm-table@2.1.1:
2216
+
resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==}
2217
+
2218
+
micromark-extension-gfm-tagfilter@2.0.0:
2219
+
resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==}
2220
+
2221
+
micromark-extension-gfm-task-list-item@2.1.0:
2222
+
resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==}
2223
+
2224
+
micromark-extension-gfm@3.0.0:
2225
+
resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==}
2226
+
2227
+
micromark-factory-destination@2.0.1:
2228
+
resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==}
2229
+
2230
+
micromark-factory-label@2.0.1:
2231
+
resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==}
2232
+
2233
+
micromark-factory-space@2.0.1:
2234
+
resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==}
2235
+
2236
+
micromark-factory-title@2.0.1:
2237
+
resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==}
2238
+
2239
+
micromark-factory-whitespace@2.0.1:
2240
+
resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==}
2241
+
2242
+
micromark-util-character@2.1.1:
2243
+
resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==}
2244
+
2245
+
micromark-util-chunked@2.0.1:
2246
+
resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==}
2247
+
2248
+
micromark-util-classify-character@2.0.1:
2249
+
resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==}
2250
+
2251
+
micromark-util-combine-extensions@2.0.1:
2252
+
resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==}
2253
+
2254
+
micromark-util-decode-numeric-character-reference@2.0.2:
2255
+
resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==}
2256
+
2257
+
micromark-util-decode-string@2.0.1:
2258
+
resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==}
2259
+
2260
+
micromark-util-encode@2.0.1:
2261
+
resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==}
2262
+
2263
+
micromark-util-html-tag-name@2.0.1:
2264
+
resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==}
2265
+
2266
+
micromark-util-normalize-identifier@2.0.1:
2267
+
resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==}
2268
+
2269
+
micromark-util-resolve-all@2.0.1:
2270
+
resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==}
2271
+
2272
+
micromark-util-sanitize-uri@2.0.1:
2273
+
resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==}
2274
+
2275
+
micromark-util-subtokenize@2.1.0:
2276
+
resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==}
2277
+
2278
+
micromark-util-symbol@2.0.1:
2279
+
resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==}
2280
+
2281
+
micromark-util-types@2.0.2:
2282
+
resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==}
2283
+
2284
+
micromark@4.0.2:
2285
+
resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==}
2286
+
1436
2287
micromatch@4.0.8:
1437
2288
resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
1438
2289
engines: {node: '>=8.6'}
···
1450
2301
ms@2.1.3:
1451
2302
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
1452
2303
2304
+
nanoid@3.3.11:
2305
+
resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
2306
+
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
2307
+
hasBin: true
2308
+
2309
+
nanoid@5.1.5:
2310
+
resolution: {integrity: sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw==}
2311
+
engines: {node: ^18 || >=20}
2312
+
hasBin: true
2313
+
1453
2314
natural-compare@1.4.0:
1454
2315
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
2316
+
2317
+
no-case@3.0.4:
2318
+
resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==}
1455
2319
1456
2320
node-domexception@1.0.0:
1457
2321
resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==}
···
1470
2334
resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
1471
2335
engines: {node: '>= 0.4'}
1472
2336
2337
+
object-to-xml@2.0.0:
2338
+
resolution: {integrity: sha512-bArXy7WCF1V9R88/zF9adSZSeFQnFmmKhMqNuNLAxqrbkvzcWP8HgnaRCcVJsfvIgvpdHiYd0qzJi7LM7QFfcQ==}
2339
+
1473
2340
object.assign@4.1.7:
1474
2341
resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==}
1475
2342
engines: {node: '>= 0.4'}
···
1505
2372
resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
1506
2373
engines: {node: '>=10'}
1507
2374
2375
+
param-case@3.0.4:
2376
+
resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==}
2377
+
1508
2378
parent-module@1.0.1:
1509
2379
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
1510
2380
engines: {node: '>=6'}
1511
2381
1512
-
partysocket@1.1.4:
1513
-
resolution: {integrity: sha512-jXP7PFj2h5/v4UjDS8P7MZy6NJUQ7sspiFyxL4uc/+oKOL+KdtXzHnTV8INPGxBrLTXgalyG3kd12Qm7WrYc3A==}
2382
+
parse5@7.3.0:
2383
+
resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==}
2384
+
2385
+
partysocket@1.1.5:
2386
+
resolution: {integrity: sha512-8uw9foq9bij4sKLCtTSHvyqMrMTQ5FJjrHc7BjoM2s95Vu7xYCN63ABpI7OZHC7ZMP5xaom/A+SsoFPXmTV6ZQ==}
2387
+
2388
+
pascal-case@3.1.2:
2389
+
resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==}
1514
2390
1515
2391
path-exists@4.0.0:
1516
2392
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
···
1523
2399
path-parse@1.0.7:
1524
2400
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
1525
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
+
1526
2409
picocolors@1.1.1:
1527
2410
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
1528
2411
···
1530
2413
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
1531
2414
engines: {node: '>=8.6'}
1532
2415
2416
+
picomatch@4.0.3:
2417
+
resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
2418
+
engines: {node: '>=12'}
2419
+
1533
2420
possible-typed-array-names@1.1.0:
1534
2421
resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==}
1535
2422
engines: {node: '>= 0.4'}
1536
2423
2424
+
postcss@8.5.6:
2425
+
resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
2426
+
engines: {node: ^10 || ^12 || >=14}
2427
+
1537
2428
prelude-ls@1.2.1:
1538
2429
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
1539
2430
engines: {node: '>= 0.8.0'}
···
1547
2438
engines: {node: '>=14'}
1548
2439
hasBin: true
1549
2440
2441
+
pretty-bytes@6.1.1:
2442
+
resolution: {integrity: sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==}
2443
+
engines: {node: ^14.13.1 || >=16.0.0}
2444
+
1550
2445
promise-limit@2.7.0:
1551
2446
resolution: {integrity: sha512-7nJ6v5lnJsXwGprnGXga4wx6d1POjvi5Qmf1ivTRxTjH4Z/9Czja/UCMLVmB9N93GeWOU93XaFaEt6jbuoagNw==}
1552
2447
2448
+
property-information@6.5.0:
2449
+
resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==}
2450
+
2451
+
property-information@7.1.0:
2452
+
resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==}
2453
+
1553
2454
punycode@2.3.1:
1554
2455
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
1555
2456
engines: {node: '>=6'}
···
1557
2458
queue-microtask@1.2.3:
1558
2459
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
1559
2460
2461
+
radix-vue@1.9.17:
2462
+
resolution: {integrity: sha512-mVCu7I2vXt1L2IUYHTt0sZMz7s1K2ZtqKeTIxG3yC5mMFfLBG4FtE1FDeRMpDd+Hhg/ybi9+iXmAP1ISREndoQ==}
2463
+
peerDependencies:
2464
+
vue: '>= 3.2.0'
2465
+
1560
2466
readable-stream@3.6.2:
1561
2467
resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
1562
2468
engines: {node: '>= 6'}
···
1569
2475
resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==}
1570
2476
engines: {node: '>= 0.4'}
1571
2477
2478
+
rehype-external-links@3.0.0:
2479
+
resolution: {integrity: sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw==}
2480
+
2481
+
rehype-format@5.0.1:
2482
+
resolution: {integrity: sha512-zvmVru9uB0josBVpr946OR8ui7nJEdzZobwLOOqHb/OOD88W0Vk2SqLwoVOj0fM6IPCCO6TaV9CvQvJMWwukFQ==}
2483
+
2484
+
rehype-minify-whitespace@6.0.2:
2485
+
resolution: {integrity: sha512-Zk0pyQ06A3Lyxhe9vGtOtzz3Z0+qZ5+7icZ/PL/2x1SHPbKao5oB/g/rlc6BCTajqBb33JcOe71Ye1oFsuYbnw==}
2486
+
2487
+
rehype-parse@9.0.1:
2488
+
resolution: {integrity: sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==}
2489
+
2490
+
rehype-raw@7.0.0:
2491
+
resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==}
2492
+
2493
+
rehype-remark@10.0.1:
2494
+
resolution: {integrity: sha512-EmDndlb5NVwXGfUa4c9GPK+lXeItTilLhE6ADSaQuHr4JUlKw9MidzGzx4HpqZrNCt6vnHmEifXQiiA+CEnjYQ==}
2495
+
2496
+
rehype-sanitize@6.0.0:
2497
+
resolution: {integrity: sha512-CsnhKNsyI8Tub6L4sm5ZFsme4puGfc6pYylvXo1AeqaGbjOYyzNv3qZPwvs0oMJ39eryyeOdmxwUIo94IpEhqg==}
2498
+
2499
+
rehype-stringify@10.0.1:
2500
+
resolution: {integrity: sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==}
2501
+
2502
+
relateurl@0.2.7:
2503
+
resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==}
2504
+
engines: {node: '>= 0.10'}
2505
+
2506
+
remark-gfm@4.0.1:
2507
+
resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==}
2508
+
2509
+
remark-parse@11.0.0:
2510
+
resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==}
2511
+
2512
+
remark-rehype@11.1.2:
2513
+
resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==}
2514
+
2515
+
remark-stringify@11.0.0:
2516
+
resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==}
2517
+
2518
+
require-from-string@2.0.2:
2519
+
resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
2520
+
engines: {node: '>=0.10.0'}
2521
+
1572
2522
resolve-from@4.0.0:
1573
2523
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
1574
2524
engines: {node: '>=4'}
···
1585
2535
resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
1586
2536
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
1587
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
+
1588
2543
run-parallel@1.2.0:
1589
2544
resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
1590
2545
···
1606
2561
safe-stable-stringify@2.5.0:
1607
2562
resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==}
1608
2563
engines: {node: '>=10'}
2564
+
2565
+
sanitizer@0.1.3:
2566
+
resolution: {integrity: sha512-j05vL56tR90rsYqm9ZD05v6K4HI7t4yMDEvvU0x4f+IADXM9Jx1x9mzatxOs5drJq6dGhugxDW99mcPvXVLl+Q==}
1609
2567
1610
2568
semver@6.3.1:
1611
2569
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
···
1652
2610
resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
1653
2611
engines: {node: '>= 0.4'}
1654
2612
2613
+
siginfo@2.0.0:
2614
+
resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
2615
+
1655
2616
simple-swizzle@0.2.2:
1656
2617
resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
1657
2618
2619
+
source-map-js@1.2.1:
2620
+
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
2621
+
engines: {node: '>=0.10.0'}
2622
+
1658
2623
source-map-support@0.5.21:
1659
2624
resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
1660
2625
···
1662
2627
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
1663
2628
engines: {node: '>=0.10.0'}
1664
2629
2630
+
space-separated-tokens@2.0.2:
2631
+
resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
2632
+
1665
2633
stack-trace@0.0.10:
1666
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==}
1667
2641
1668
2642
stop-iteration-iterator@1.1.0:
1669
2643
resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==}
···
1684
2658
string_decoder@1.3.0:
1685
2659
resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
1686
2660
2661
+
stringify-entities@4.0.4:
2662
+
resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==}
2663
+
2664
+
stringify-object@5.0.0:
2665
+
resolution: {integrity: sha512-zaJYxz2FtcMb4f+g60KsRNFOpVMUyuJgA51Zi5Z1DOTC3S59+OQiVOzE9GZt0x72uBGWKsQIuBKeF9iusmKFsg==}
2666
+
engines: {node: '>=14.16'}
2667
+
1687
2668
strip-bom@3.0.0:
1688
2669
resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
1689
2670
engines: {node: '>=4'}
···
1691
2672
strip-json-comments@3.1.1:
1692
2673
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
1693
2674
engines: {node: '>=8'}
2675
+
2676
+
strip-literal@3.0.0:
2677
+
resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==}
1694
2678
1695
2679
supports-color@7.2.0:
1696
2680
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
···
1700
2684
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
1701
2685
engines: {node: '>= 0.4'}
1702
2686
1703
-
synckit@0.11.8:
1704
-
resolution: {integrity: sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A==}
2687
+
synckit@0.11.11:
2688
+
resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==}
1705
2689
engines: {node: ^14.18.0 || >=16.0.0}
1706
2690
2691
+
tailwind-merge@2.6.0:
2692
+
resolution: {integrity: sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==}
2693
+
2694
+
terser@5.43.1:
2695
+
resolution: {integrity: sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==}
2696
+
engines: {node: '>=10'}
2697
+
hasBin: true
2698
+
1707
2699
text-hex@1.0.0:
1708
2700
resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==}
1709
2701
2702
+
tiny-emitter@2.1.0:
2703
+
resolution: {integrity: sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==}
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
+
1710
2727
to-regex-range@5.0.1:
1711
2728
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
1712
2729
engines: {node: '>=8.0'}
···
1714
2731
toml@3.0.0:
1715
2732
resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==}
1716
2733
2734
+
trim-lines@3.0.1:
2735
+
resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
2736
+
2737
+
trim-trailing-lines@2.1.0:
2738
+
resolution: {integrity: sha512-5UR5Biq4VlVOtzqkm2AZlgvSlDJtME46uV0br0gENbwN4l5+mMKT4b9gJKqWtuL2zAIqajGJGuvbCbcAJUZqBg==}
2739
+
1717
2740
triple-beam@1.4.1:
1718
2741
resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==}
1719
2742
engines: {node: '>= 14.0.0'}
2743
+
2744
+
trough@2.2.0:
2745
+
resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==}
1720
2746
1721
2747
ts-api-utils@2.1.0:
1722
2748
resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==}
···
1724
2750
peerDependencies:
1725
2751
typescript: '>=4.8.4'
1726
2752
2753
+
ts-deepmerge@7.0.3:
2754
+
resolution: {integrity: sha512-Du/ZW2RfwV/D4cmA5rXafYjBQVuvu4qGiEEla4EmEHVHgRdx68Gftx7i66jn2bzHPwSVZY36Ae6OuDn9el4ZKA==}
2755
+
engines: {node: '>=14.13.1'}
2756
+
1727
2757
tsconfig-paths@3.15.0:
1728
2758
resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==}
1729
2759
1730
-
tsx@4.20.3:
1731
-
resolution: {integrity: sha512-qjbnuR9Tr+FJOMBqJCW5ehvIo/buZq7vH7qD7JziU98h6l3qGy0a/yPFjwO+y0/T7GFpNgNAvEcPPVfyT8rrPQ==}
2760
+
tslib@2.8.1:
2761
+
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
2762
+
2763
+
tsx@4.20.4:
2764
+
resolution: {integrity: sha512-yyxBKfORQ7LuRt/BQKBXrpcq59ZvSW0XxwfjAt3w2/8PmdxaFzijtMhTawprSHhpzeM5BgU2hXHG3lklIERZXg==}
1732
2765
engines: {node: '>=18.0.0'}
1733
2766
hasBin: true
1734
2767
1735
2768
type-check@0.4.0:
1736
2769
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
1737
2770
engines: {node: '>= 0.8.0'}
2771
+
2772
+
type-fest@4.41.0:
2773
+
resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==}
2774
+
engines: {node: '>=16'}
1738
2775
1739
2776
typed-array-buffer@1.0.3:
1740
2777
resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==}
···
1752
2789
resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==}
1753
2790
engines: {node: '>= 0.4'}
1754
2791
1755
-
typescript-eslint@8.35.1:
1756
-
resolution: {integrity: sha512-xslJjFzhOmHYQzSB/QTeASAHbjmxOGEP6Coh93TXmUBFQoJ1VU35UHIDmG06Jd6taf3wqqC1ntBnCMeymy5Ovw==}
2792
+
typescript-eslint@8.40.0:
2793
+
resolution: {integrity: sha512-Xvd2l+ZmFDPEt4oj1QEXzA4A2uUK6opvKu3eGN9aGjB8au02lIVcLyi375w94hHyejTOmzIU77L8ol2sRg9n7Q==}
1757
2794
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
1758
2795
peerDependencies:
1759
2796
eslint: ^8.57.0 || ^9.0.0
1760
-
typescript: '>=4.8.4 <5.9.0'
2797
+
typescript: '>=4.8.4 <6.0.0'
1761
2798
1762
-
typescript@5.8.3:
1763
-
resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==}
2799
+
typescript@5.9.2:
2800
+
resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==}
1764
2801
engines: {node: '>=14.17'}
1765
2802
hasBin: true
1766
2803
···
1768
2805
resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==}
1769
2806
engines: {node: '>= 0.4'}
1770
2807
1771
-
undici-types@7.8.0:
1772
-
resolution: {integrity: sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==}
2808
+
undici-types@6.21.0:
2809
+
resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
2810
+
2811
+
undici-types@7.10.0:
2812
+
resolution: {integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==}
2813
+
2814
+
unified@11.0.5:
2815
+
resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==}
2816
+
2817
+
unist-util-find-after@5.0.0:
2818
+
resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==}
2819
+
2820
+
unist-util-is@6.0.0:
2821
+
resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==}
2822
+
2823
+
unist-util-position@5.0.0:
2824
+
resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==}
2825
+
2826
+
unist-util-stringify-position@4.0.0:
2827
+
resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==}
2828
+
2829
+
unist-util-visit-parents@6.0.1:
2830
+
resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==}
2831
+
2832
+
unist-util-visit@5.0.0:
2833
+
resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==}
1773
2834
1774
2835
uri-js@4.4.1:
1775
2836
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
···
1777
2838
util-deprecate@1.0.2:
1778
2839
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
1779
2840
2841
+
uuid@9.0.1:
2842
+
resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==}
2843
+
hasBin: true
2844
+
2845
+
vfile-location@5.0.3:
2846
+
resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==}
2847
+
2848
+
vfile-message@4.0.3:
2849
+
resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==}
2850
+
2851
+
vfile@6.0.3:
2852
+
resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
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
+
2930
+
vue-demi@0.14.10:
2931
+
resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==}
2932
+
engines: {node: '>=12'}
2933
+
hasBin: true
2934
+
peerDependencies:
2935
+
'@vue/composition-api': ^1.0.0-rc.1
2936
+
vue: ^3.0.0-0 || ^2.6.0
2937
+
peerDependenciesMeta:
2938
+
'@vue/composition-api':
2939
+
optional: true
2940
+
2941
+
vue-sonner@1.3.2:
2942
+
resolution: {integrity: sha512-UbZ48E9VIya3ToiRHAZUbodKute/z/M1iT8/3fU8zEbwBRE11AKuHikssv18LMk2gTTr6eMQT4qf6JoLHWuj/A==}
2943
+
2944
+
vue@3.5.19:
2945
+
resolution: {integrity: sha512-ZRh0HTmw6KChRYWgN8Ox/wi7VhpuGlvMPrHjIsdRbzKNgECFLzy+dKL5z9yGaBSjCpmcfJCbh3I1tNSRmBz2tg==}
2946
+
peerDependencies:
2947
+
typescript: '*'
2948
+
peerDependenciesMeta:
2949
+
typescript:
2950
+
optional: true
2951
+
2952
+
web-namespaces@2.0.1:
2953
+
resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==}
2954
+
1780
2955
web-streams-polyfill@3.3.3:
1781
2956
resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==}
1782
2957
engines: {node: '>= 8'}
···
1802
2977
engines: {node: '>= 8'}
1803
2978
hasBin: true
1804
2979
2980
+
why-is-node-running@2.3.0:
2981
+
resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==}
2982
+
engines: {node: '>=8'}
2983
+
hasBin: true
2984
+
1805
2985
winston-transport@4.9.0:
1806
2986
resolution: {integrity: sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==}
1807
2987
engines: {node: '>= 12.0.0'}
···
1828
3008
1829
3009
xxhash-wasm@1.1.0:
1830
3010
resolution: {integrity: sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==}
3011
+
3012
+
yaml@2.8.0:
3013
+
resolution: {integrity: sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==}
3014
+
engines: {node: '>= 14.6'}
3015
+
hasBin: true
1831
3016
1832
3017
yocto-queue@0.1.0:
1833
3018
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
1834
3019
engines: {node: '>=10'}
1835
3020
3021
+
zod@3.24.1:
3022
+
resolution: {integrity: sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==}
3023
+
3024
+
zwitch@2.0.4:
3025
+
resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
3026
+
1836
3027
snapshots:
1837
3028
1838
-
'@atcute/atproto@3.1.0':
3029
+
'@atcute/atproto@3.1.2':
3030
+
dependencies:
3031
+
'@atcute/lexicons': 1.1.1
3032
+
3033
+
'@atcute/bluesky@3.2.1':
3034
+
dependencies:
3035
+
'@atcute/atproto': 3.1.2
3036
+
'@atcute/lexicons': 1.1.1
3037
+
3038
+
'@atcute/client@4.0.3':
1839
3039
dependencies:
1840
-
'@atcute/lexicons': 1.1.0
3040
+
'@atcute/identity': 1.0.3
3041
+
'@atcute/lexicons': 1.1.1
1841
3042
1842
-
'@atcute/bluesky@1.0.15(@atcute/client@2.0.9)':
3043
+
'@atcute/crypto@2.2.4':
1843
3044
dependencies:
1844
-
'@atcute/client': 2.0.9
3045
+
'@atcute/multibase': 1.1.5
3046
+
'@atcute/uint8array': 1.0.4
3047
+
'@noble/secp256k1': 2.3.0
3048
+
3049
+
'@atcute/identity-resolver@1.1.3(@atcute/identity@1.0.3)':
3050
+
dependencies:
3051
+
'@atcute/identity': 1.0.3
3052
+
'@atcute/lexicons': 1.1.1
3053
+
'@atcute/util-fetch': 1.0.1
3054
+
'@badrap/valita': 0.4.6
1845
3055
1846
-
'@atcute/client@2.0.9': {}
3056
+
'@atcute/identity@1.0.3':
3057
+
dependencies:
3058
+
'@atcute/lexicons': 1.1.1
3059
+
'@badrap/valita': 0.4.6
1847
3060
1848
3061
'@atcute/lex-cli@2.1.1':
1849
3062
dependencies:
1850
3063
'@atcute/lexicon-doc': 1.0.3
1851
-
'@badrap/valita': 0.4.5
1852
-
'@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)
1853
3066
picocolors: 1.1.1
1854
3067
prettier: 3.6.2
1855
3068
1856
3069
'@atcute/lexicon-doc@1.0.3':
1857
3070
dependencies:
1858
-
'@badrap/valita': 0.4.5
3071
+
'@badrap/valita': 0.4.6
1859
3072
1860
-
'@atcute/lexicons@1.1.0':
3073
+
'@atcute/lexicons@1.1.1':
1861
3074
dependencies:
1862
3075
esm-env: 1.2.2
1863
3076
1864
-
'@badrap/valita@0.4.5': {}
3077
+
'@atcute/multibase@1.1.5':
3078
+
dependencies:
3079
+
'@atcute/uint8array': 1.0.4
3080
+
3081
+
'@atcute/uint8array@1.0.4': {}
3082
+
3083
+
'@atcute/util-fetch@1.0.1':
3084
+
dependencies:
3085
+
'@badrap/valita': 0.4.6
3086
+
3087
+
'@babel/helper-string-parser@7.27.1': {}
1865
3088
1866
-
'@clipprjs/lexicons@0.1.3':
3089
+
'@babel/helper-validator-identifier@7.27.1': {}
3090
+
3091
+
'@babel/parser@7.28.3':
1867
3092
dependencies:
1868
-
'@atcute/atproto': 3.1.0
1869
-
'@atcute/lexicons': 1.1.0
3093
+
'@babel/types': 7.28.2
3094
+
3095
+
'@babel/types@7.28.2':
3096
+
dependencies:
3097
+
'@babel/helper-string-parser': 7.27.1
3098
+
'@babel/helper-validator-identifier': 7.27.1
3099
+
3100
+
'@badrap/valita@0.4.6': {}
3101
+
3102
+
'@clipprjs/lexicons@1.0.3':
3103
+
dependencies:
3104
+
'@atcute/atproto': 3.1.2
3105
+
'@atcute/lexicons': 1.1.1
1870
3106
1871
3107
'@colors/colors@1.6.0': {}
1872
3108
···
1888
3124
'@esbuild-kit/core-utils': 3.3.2
1889
3125
get-tsconfig: 4.10.1
1890
3126
1891
-
'@esbuild/aix-ppc64@0.25.5':
3127
+
'@esbuild/aix-ppc64@0.25.9':
1892
3128
optional: true
1893
3129
1894
3130
'@esbuild/android-arm64@0.18.20':
1895
3131
optional: true
1896
3132
1897
-
'@esbuild/android-arm64@0.25.5':
3133
+
'@esbuild/android-arm64@0.25.9':
1898
3134
optional: true
1899
3135
1900
3136
'@esbuild/android-arm@0.18.20':
1901
3137
optional: true
1902
3138
1903
-
'@esbuild/android-arm@0.25.5':
3139
+
'@esbuild/android-arm@0.25.9':
1904
3140
optional: true
1905
3141
1906
3142
'@esbuild/android-x64@0.18.20':
1907
3143
optional: true
1908
3144
1909
-
'@esbuild/android-x64@0.25.5':
3145
+
'@esbuild/android-x64@0.25.9':
1910
3146
optional: true
1911
3147
1912
3148
'@esbuild/darwin-arm64@0.18.20':
1913
3149
optional: true
1914
3150
1915
-
'@esbuild/darwin-arm64@0.25.5':
3151
+
'@esbuild/darwin-arm64@0.25.9':
1916
3152
optional: true
1917
3153
1918
3154
'@esbuild/darwin-x64@0.18.20':
1919
3155
optional: true
1920
3156
1921
-
'@esbuild/darwin-x64@0.25.5':
3157
+
'@esbuild/darwin-x64@0.25.9':
1922
3158
optional: true
1923
3159
1924
3160
'@esbuild/freebsd-arm64@0.18.20':
1925
3161
optional: true
1926
3162
1927
-
'@esbuild/freebsd-arm64@0.25.5':
3163
+
'@esbuild/freebsd-arm64@0.25.9':
1928
3164
optional: true
1929
3165
1930
3166
'@esbuild/freebsd-x64@0.18.20':
1931
3167
optional: true
1932
3168
1933
-
'@esbuild/freebsd-x64@0.25.5':
3169
+
'@esbuild/freebsd-x64@0.25.9':
1934
3170
optional: true
1935
3171
1936
3172
'@esbuild/linux-arm64@0.18.20':
1937
3173
optional: true
1938
3174
1939
-
'@esbuild/linux-arm64@0.25.5':
3175
+
'@esbuild/linux-arm64@0.25.9':
1940
3176
optional: true
1941
3177
1942
3178
'@esbuild/linux-arm@0.18.20':
1943
3179
optional: true
1944
3180
1945
-
'@esbuild/linux-arm@0.25.5':
3181
+
'@esbuild/linux-arm@0.25.9':
1946
3182
optional: true
1947
3183
1948
3184
'@esbuild/linux-ia32@0.18.20':
1949
3185
optional: true
1950
3186
1951
-
'@esbuild/linux-ia32@0.25.5':
3187
+
'@esbuild/linux-ia32@0.25.9':
1952
3188
optional: true
1953
3189
1954
3190
'@esbuild/linux-loong64@0.18.20':
1955
3191
optional: true
1956
3192
1957
-
'@esbuild/linux-loong64@0.25.5':
3193
+
'@esbuild/linux-loong64@0.25.9':
1958
3194
optional: true
1959
3195
1960
3196
'@esbuild/linux-mips64el@0.18.20':
1961
3197
optional: true
1962
3198
1963
-
'@esbuild/linux-mips64el@0.25.5':
3199
+
'@esbuild/linux-mips64el@0.25.9':
1964
3200
optional: true
1965
3201
1966
3202
'@esbuild/linux-ppc64@0.18.20':
1967
3203
optional: true
1968
3204
1969
-
'@esbuild/linux-ppc64@0.25.5':
3205
+
'@esbuild/linux-ppc64@0.25.9':
1970
3206
optional: true
1971
3207
1972
3208
'@esbuild/linux-riscv64@0.18.20':
1973
3209
optional: true
1974
3210
1975
-
'@esbuild/linux-riscv64@0.25.5':
3211
+
'@esbuild/linux-riscv64@0.25.9':
1976
3212
optional: true
1977
3213
1978
3214
'@esbuild/linux-s390x@0.18.20':
1979
3215
optional: true
1980
3216
1981
-
'@esbuild/linux-s390x@0.25.5':
3217
+
'@esbuild/linux-s390x@0.25.9':
1982
3218
optional: true
1983
3219
1984
3220
'@esbuild/linux-x64@0.18.20':
1985
3221
optional: true
1986
3222
1987
-
'@esbuild/linux-x64@0.25.5':
3223
+
'@esbuild/linux-x64@0.25.9':
1988
3224
optional: true
1989
3225
1990
-
'@esbuild/netbsd-arm64@0.25.5':
3226
+
'@esbuild/netbsd-arm64@0.25.9':
1991
3227
optional: true
1992
3228
1993
3229
'@esbuild/netbsd-x64@0.18.20':
1994
3230
optional: true
1995
3231
1996
-
'@esbuild/netbsd-x64@0.25.5':
3232
+
'@esbuild/netbsd-x64@0.25.9':
1997
3233
optional: true
1998
3234
1999
-
'@esbuild/openbsd-arm64@0.25.5':
3235
+
'@esbuild/openbsd-arm64@0.25.9':
2000
3236
optional: true
2001
3237
2002
3238
'@esbuild/openbsd-x64@0.18.20':
2003
3239
optional: true
2004
3240
2005
-
'@esbuild/openbsd-x64@0.25.5':
3241
+
'@esbuild/openbsd-x64@0.25.9':
3242
+
optional: true
3243
+
3244
+
'@esbuild/openharmony-arm64@0.25.9':
2006
3245
optional: true
2007
3246
2008
3247
'@esbuild/sunos-x64@0.18.20':
2009
3248
optional: true
2010
3249
2011
-
'@esbuild/sunos-x64@0.25.5':
3250
+
'@esbuild/sunos-x64@0.25.9':
2012
3251
optional: true
2013
3252
2014
3253
'@esbuild/win32-arm64@0.18.20':
2015
3254
optional: true
2016
3255
2017
-
'@esbuild/win32-arm64@0.25.5':
3256
+
'@esbuild/win32-arm64@0.25.9':
2018
3257
optional: true
2019
3258
2020
3259
'@esbuild/win32-ia32@0.18.20':
2021
3260
optional: true
2022
3261
2023
-
'@esbuild/win32-ia32@0.25.5':
3262
+
'@esbuild/win32-ia32@0.25.9':
2024
3263
optional: true
2025
3264
2026
3265
'@esbuild/win32-x64@0.18.20':
2027
3266
optional: true
2028
3267
2029
-
'@esbuild/win32-x64@0.25.5':
3268
+
'@esbuild/win32-x64@0.25.9':
2030
3269
optional: true
2031
3270
2032
-
'@eslint-community/eslint-utils@4.7.0(eslint@9.30.1(jiti@2.4.2))':
3271
+
'@eslint-community/eslint-utils@4.7.0(eslint@9.33.0(jiti@2.5.1))':
2033
3272
dependencies:
2034
-
eslint: 9.30.1(jiti@2.4.2)
3273
+
eslint: 9.33.0(jiti@2.5.1)
2035
3274
eslint-visitor-keys: 3.4.3
2036
3275
2037
3276
'@eslint-community/regexpp@4.12.1': {}
···
2044
3283
transitivePeerDependencies:
2045
3284
- supports-color
2046
3285
2047
-
'@eslint/config-helpers@0.3.0': {}
3286
+
'@eslint/config-helpers@0.3.1': {}
2048
3287
2049
-
'@eslint/core@0.14.0':
2050
-
dependencies:
2051
-
'@types/json-schema': 7.0.15
2052
-
2053
-
'@eslint/core@0.15.1':
3288
+
'@eslint/core@0.15.2':
2054
3289
dependencies:
2055
3290
'@types/json-schema': 7.0.15
2056
3291
···
2068
3303
transitivePeerDependencies:
2069
3304
- supports-color
2070
3305
2071
-
'@eslint/js@9.30.1': {}
3306
+
'@eslint/js@9.33.0': {}
2072
3307
2073
3308
'@eslint/object-schema@2.1.6': {}
2074
3309
2075
-
'@eslint/plugin-kit@0.3.3':
3310
+
'@eslint/plugin-kit@0.3.5':
2076
3311
dependencies:
2077
-
'@eslint/core': 0.15.1
3312
+
'@eslint/core': 0.15.2
2078
3313
levn: 0.4.1
2079
3314
2080
-
'@externdefs/collider@0.3.0(@badrap/valita@0.4.5)':
3315
+
'@externdefs/collider@0.3.0(@badrap/valita@0.4.6)':
3316
+
dependencies:
3317
+
'@badrap/valita': 0.4.6
3318
+
3319
+
'@floating-ui/core@1.7.3':
3320
+
dependencies:
3321
+
'@floating-ui/utils': 0.2.10
3322
+
3323
+
'@floating-ui/dom@1.7.4':
3324
+
dependencies:
3325
+
'@floating-ui/core': 1.7.3
3326
+
'@floating-ui/utils': 0.2.10
3327
+
3328
+
'@floating-ui/utils@0.2.10': {}
3329
+
3330
+
'@floating-ui/vue@1.1.9(vue@3.5.19(typescript@5.9.2))':
3331
+
dependencies:
3332
+
'@floating-ui/dom': 1.7.4
3333
+
'@floating-ui/utils': 0.2.10
3334
+
vue-demi: 0.14.10(vue@3.5.19(typescript@5.9.2))
3335
+
transitivePeerDependencies:
3336
+
- '@vue/composition-api'
3337
+
- vue
3338
+
3339
+
'@headlessui/vue@1.7.23(vue@3.5.19(typescript@5.9.2))':
2081
3340
dependencies:
2082
-
'@badrap/valita': 0.4.5
3341
+
'@tanstack/vue-virtual': 3.13.12(vue@3.5.19(typescript@5.9.2))
3342
+
vue: 3.5.19(typescript@5.9.2)
2083
3343
2084
-
'@hono/node-server@1.15.0(hono@4.8.4)':
3344
+
'@hono/node-server@1.19.0(hono@4.9.4)':
2085
3345
dependencies:
2086
-
hono: 4.8.4
3346
+
hono: 4.9.4
2087
3347
2088
3348
'@humanfs/core@0.19.1': {}
2089
3349
···
2098
3358
2099
3359
'@humanwhocodes/retry@0.4.3': {}
2100
3360
2101
-
'@libsql/client@0.15.9':
3361
+
'@hyperjump/browser@1.3.1':
3362
+
dependencies:
3363
+
'@hyperjump/json-pointer': 1.1.1
3364
+
'@hyperjump/uri': 1.3.1
3365
+
content-type: 1.0.5
3366
+
just-curry-it: 5.3.0
3367
+
3368
+
'@hyperjump/json-pointer@1.1.1': {}
3369
+
3370
+
'@hyperjump/json-schema@1.16.2(@hyperjump/browser@1.3.1)':
3371
+
dependencies:
3372
+
'@hyperjump/browser': 1.3.1
3373
+
'@hyperjump/json-pointer': 1.1.1
3374
+
'@hyperjump/pact': 1.4.0
3375
+
'@hyperjump/uri': 1.3.1
3376
+
content-type: 1.0.5
3377
+
json-stringify-deterministic: 1.0.12
3378
+
just-curry-it: 5.3.0
3379
+
uuid: 9.0.1
3380
+
3381
+
'@hyperjump/pact@1.4.0': {}
3382
+
3383
+
'@hyperjump/uri@1.3.1': {}
3384
+
3385
+
'@internationalized/date@3.8.2':
3386
+
dependencies:
3387
+
'@swc/helpers': 0.5.17
3388
+
3389
+
'@internationalized/number@3.6.4':
3390
+
dependencies:
3391
+
'@swc/helpers': 0.5.17
3392
+
3393
+
'@jridgewell/gen-mapping@0.3.13':
3394
+
dependencies:
3395
+
'@jridgewell/sourcemap-codec': 1.5.5
3396
+
'@jridgewell/trace-mapping': 0.3.30
3397
+
3398
+
'@jridgewell/resolve-uri@3.1.2': {}
3399
+
3400
+
'@jridgewell/source-map@0.3.11':
3401
+
dependencies:
3402
+
'@jridgewell/gen-mapping': 0.3.13
3403
+
'@jridgewell/trace-mapping': 0.3.30
3404
+
3405
+
'@jridgewell/sourcemap-codec@1.5.5': {}
3406
+
3407
+
'@jridgewell/trace-mapping@0.3.30':
3408
+
dependencies:
3409
+
'@jridgewell/resolve-uri': 3.1.2
3410
+
'@jridgewell/sourcemap-codec': 1.5.5
3411
+
3412
+
'@libsql/client@0.15.12':
2102
3413
dependencies:
2103
-
'@libsql/core': 0.15.9
3414
+
'@libsql/core': 0.15.12
2104
3415
'@libsql/hrana-client': 0.7.0
2105
-
js-base64: 3.7.7
2106
-
libsql: 0.5.13
3416
+
js-base64: 3.7.8
3417
+
libsql: 0.5.17
2107
3418
promise-limit: 2.7.0
2108
3419
transitivePeerDependencies:
2109
3420
- bufferutil
2110
3421
- utf-8-validate
2111
3422
2112
-
'@libsql/core@0.15.9':
3423
+
'@libsql/core@0.15.12':
2113
3424
dependencies:
2114
-
js-base64: 3.7.7
3425
+
js-base64: 3.7.8
2115
3426
2116
-
'@libsql/darwin-arm64@0.5.13':
3427
+
'@libsql/darwin-arm64@0.5.17':
2117
3428
optional: true
2118
3429
2119
-
'@libsql/darwin-x64@0.5.13':
3430
+
'@libsql/darwin-x64@0.5.17':
2120
3431
optional: true
2121
3432
2122
3433
'@libsql/hrana-client@0.7.0':
2123
3434
dependencies:
2124
3435
'@libsql/isomorphic-fetch': 0.3.1
2125
3436
'@libsql/isomorphic-ws': 0.1.5
2126
-
js-base64: 3.7.7
3437
+
js-base64: 3.7.8
2127
3438
node-fetch: 3.3.2
2128
3439
transitivePeerDependencies:
2129
3440
- bufferutil
···
2139
3450
- bufferutil
2140
3451
- utf-8-validate
2141
3452
2142
-
'@libsql/linux-arm-gnueabihf@0.5.13':
3453
+
'@libsql/linux-arm-gnueabihf@0.5.17':
2143
3454
optional: true
2144
3455
2145
-
'@libsql/linux-arm-musleabihf@0.5.13':
3456
+
'@libsql/linux-arm-musleabihf@0.5.17':
2146
3457
optional: true
2147
3458
2148
-
'@libsql/linux-arm64-gnu@0.5.13':
3459
+
'@libsql/linux-arm64-gnu@0.5.17':
2149
3460
optional: true
2150
3461
2151
-
'@libsql/linux-arm64-musl@0.5.13':
3462
+
'@libsql/linux-arm64-musl@0.5.17':
2152
3463
optional: true
2153
3464
2154
-
'@libsql/linux-x64-gnu@0.5.13':
3465
+
'@libsql/linux-x64-gnu@0.5.17':
2155
3466
optional: true
2156
3467
2157
-
'@libsql/linux-x64-musl@0.5.13':
3468
+
'@libsql/linux-x64-musl@0.5.17':
2158
3469
optional: true
2159
3470
2160
-
'@libsql/win32-x64-msvc@0.5.13':
3471
+
'@libsql/win32-x64-msvc@0.5.17':
2161
3472
optional: true
2162
3473
2163
3474
'@neon-rs/load@0.0.4': {}
3475
+
3476
+
'@noble/secp256k1@2.3.0': {}
2164
3477
2165
3478
'@nodelib/fs.scandir@2.1.5':
2166
3479
dependencies:
···
2174
3487
'@nodelib/fs.scandir': 2.1.5
2175
3488
fastq: 1.19.1
2176
3489
2177
-
'@pkgr/core@0.2.7': {}
3490
+
'@phosphor-icons/core@2.1.1': {}
3491
+
3492
+
'@pkgr/core@0.2.9': {}
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
2178
3556
2179
3557
'@rtsao/scc@1.1.0': {}
2180
3558
2181
-
'@skyware/jetstream@0.2.2(@atcute/client@2.0.9)':
3559
+
'@scalar/code-highlight@0.1.9':
3560
+
dependencies:
3561
+
hast-util-to-text: 4.0.2
3562
+
highlight.js: 11.11.1
3563
+
highlightjs-curl: 1.3.0
3564
+
highlightjs-vue: 1.0.0
3565
+
lowlight: 3.3.0
3566
+
rehype-external-links: 3.0.0
3567
+
rehype-format: 5.0.1
3568
+
rehype-parse: 9.0.1
3569
+
rehype-raw: 7.0.0
3570
+
rehype-sanitize: 6.0.0
3571
+
rehype-stringify: 10.0.1
3572
+
remark-gfm: 4.0.1
3573
+
remark-parse: 11.0.0
3574
+
remark-rehype: 11.1.2
3575
+
remark-stringify: 11.0.0
3576
+
unified: 11.0.5
3577
+
unist-util-visit: 5.0.0
3578
+
transitivePeerDependencies:
3579
+
- supports-color
3580
+
3581
+
'@scalar/components@0.14.25(typescript@5.9.2)':
3582
+
dependencies:
3583
+
'@floating-ui/utils': 0.2.10
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)
3595
+
nanoid: 5.1.5
3596
+
pretty-bytes: 6.1.1
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
3600
+
transitivePeerDependencies:
3601
+
- '@vue/composition-api'
3602
+
- supports-color
3603
+
- typescript
3604
+
3605
+
'@scalar/core@0.3.13':
3606
+
dependencies:
3607
+
'@scalar/types': 0.2.12
3608
+
3609
+
'@scalar/helpers@0.0.8': {}
3610
+
3611
+
'@scalar/hono-api-reference@0.9.15(hono@4.9.4)':
3612
+
dependencies:
3613
+
'@scalar/core': 0.3.13
3614
+
hono: 4.9.4
3615
+
3616
+
'@scalar/icons@0.4.7(typescript@5.9.2)':
3617
+
dependencies:
3618
+
'@phosphor-icons/core': 2.1.1
3619
+
'@types/node': 22.17.2
3620
+
chalk: 5.6.0
3621
+
vue: 3.5.19(typescript@5.9.2)
3622
+
transitivePeerDependencies:
3623
+
- typescript
3624
+
3625
+
'@scalar/json-magic@0.3.0(typescript@5.9.2)':
2182
3626
dependencies:
2183
-
'@atcute/bluesky': 1.0.15(@atcute/client@2.0.9)
2184
-
partysocket: 1.1.4
3627
+
'@scalar/helpers': 0.0.8
3628
+
vue: 3.5.19(typescript@5.9.2)
3629
+
yaml: 2.8.0
2185
3630
transitivePeerDependencies:
2186
-
- '@atcute/client'
3631
+
- typescript
3632
+
3633
+
'@scalar/oas-utils@0.4.20(typescript@5.9.2)':
3634
+
dependencies:
3635
+
'@hyperjump/browser': 1.3.1
3636
+
'@hyperjump/json-schema': 1.16.2(@hyperjump/browser@1.3.1)
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)
3644
+
'@types/har-format': 1.2.16
3645
+
flatted: 3.3.3
3646
+
microdiff: 1.5.0
3647
+
nanoid: 5.1.5
3648
+
type-fest: 4.41.0
3649
+
yaml: 2.8.0
3650
+
zod: 3.24.1
3651
+
transitivePeerDependencies:
3652
+
- supports-color
3653
+
- typescript
3654
+
3655
+
'@scalar/object-utils@1.2.4':
3656
+
dependencies:
3657
+
'@scalar/helpers': 0.0.8
3658
+
flatted: 3.3.3
3659
+
just-clone: 6.2.0
3660
+
ts-deepmerge: 7.0.3
3661
+
type-fest: 4.41.0
3662
+
3663
+
'@scalar/openapi-parser@0.20.0(typescript@5.9.2)':
3664
+
dependencies:
3665
+
'@scalar/json-magic': 0.3.0(typescript@5.9.2)
3666
+
'@scalar/openapi-types': 0.3.7
3667
+
ajv: 8.17.1
3668
+
ajv-draft-04: 1.0.0(ajv@8.17.1)
3669
+
ajv-formats: 3.0.1(ajv@8.17.1)
3670
+
jsonpointer: 5.0.1
3671
+
leven: 4.0.0
3672
+
yaml: 2.8.0
3673
+
transitivePeerDependencies:
3674
+
- typescript
3675
+
3676
+
'@scalar/openapi-to-markdown@0.2.28(typescript@5.9.2)':
3677
+
dependencies:
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
3684
+
html-minifier-terser: 7.2.0
3685
+
object-to-xml: 2.0.0
3686
+
rehype-parse: 9.0.1
3687
+
rehype-remark: 10.0.1
3688
+
rehype-sanitize: 6.0.0
3689
+
rehype-stringify: 10.0.1
3690
+
remark-gfm: 4.0.1
3691
+
remark-stringify: 11.0.0
3692
+
unified: 11.0.5
3693
+
vue: 3.5.19(typescript@5.9.2)
3694
+
transitivePeerDependencies:
3695
+
- '@vue/composition-api'
3696
+
- supports-color
3697
+
- typescript
3698
+
3699
+
'@scalar/openapi-types@0.3.7':
3700
+
dependencies:
3701
+
zod: 3.24.1
3702
+
3703
+
'@scalar/snippetz@0.4.5':
3704
+
dependencies:
3705
+
'@scalar/types': 0.2.12
3706
+
stringify-object: 5.0.0
3707
+
3708
+
'@scalar/themes@0.13.13':
3709
+
dependencies:
3710
+
'@scalar/types': 0.2.12
3711
+
nanoid: 5.1.5
3712
+
3713
+
'@scalar/types@0.2.12':
3714
+
dependencies:
3715
+
'@scalar/openapi-types': 0.3.7
3716
+
nanoid: 5.1.5
3717
+
zod: 3.24.1
3718
+
3719
+
'@scalar/use-hooks@0.2.4(typescript@5.9.2)':
3720
+
dependencies:
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)
3724
+
tailwind-merge: 2.6.0
3725
+
vue: 3.5.19(typescript@5.9.2)
3726
+
zod: 3.24.1
3727
+
transitivePeerDependencies:
3728
+
- '@vue/composition-api'
3729
+
- typescript
3730
+
3731
+
'@scalar/use-toasts@0.8.0(typescript@5.9.2)':
3732
+
dependencies:
3733
+
nanoid: 5.1.5
3734
+
vue: 3.5.19(typescript@5.9.2)
3735
+
vue-sonner: 1.3.2
3736
+
transitivePeerDependencies:
3737
+
- typescript
3738
+
3739
+
'@scalar/workspace-store@0.14.0(typescript@5.9.2)':
3740
+
dependencies:
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
3747
+
github-slugger: 2.0.0
3748
+
type-fest: 4.41.0
3749
+
vue: 3.5.19(typescript@5.9.2)
3750
+
yaml: 2.8.0
3751
+
transitivePeerDependencies:
3752
+
- supports-color
3753
+
- typescript
3754
+
3755
+
'@sinclair/typebox@https://raw.githubusercontent.com/DemonHa/typebox/refs/heads/amrit/build/target/remote/sinclair-typebox-0.34.38.tgz': {}
3756
+
3757
+
'@skyware/jetstream@0.2.5':
3758
+
dependencies:
3759
+
'@atcute/atproto': 3.1.2
3760
+
'@atcute/bluesky': 3.2.1
3761
+
'@atcute/lexicons': 1.1.1
3762
+
partysocket: 1.1.5
3763
+
tiny-emitter: 2.1.0
3764
+
3765
+
'@swc/helpers@0.5.17':
3766
+
dependencies:
3767
+
tslib: 2.8.1
3768
+
3769
+
'@tanstack/virtual-core@3.13.12': {}
3770
+
3771
+
'@tanstack/vue-virtual@3.13.12(vue@3.5.19(typescript@5.9.2))':
3772
+
dependencies:
3773
+
'@tanstack/virtual-core': 3.13.12
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
3779
+
3780
+
'@types/debug@4.1.12':
3781
+
dependencies:
3782
+
'@types/ms': 2.1.0
3783
+
3784
+
'@types/deep-eql@4.0.2': {}
2187
3785
2188
3786
'@types/estree@1.0.8': {}
3787
+
3788
+
'@types/har-format@1.2.16': {}
3789
+
3790
+
'@types/hast@3.0.4':
3791
+
dependencies:
3792
+
'@types/unist': 3.0.3
2189
3793
2190
3794
'@types/json-schema@7.0.15': {}
2191
3795
2192
3796
'@types/json5@0.0.29': {}
2193
3797
2194
-
'@types/node@24.0.10':
3798
+
'@types/mdast@4.0.4':
3799
+
dependencies:
3800
+
'@types/unist': 3.0.3
3801
+
3802
+
'@types/ms@2.1.0': {}
3803
+
3804
+
'@types/node@22.17.2':
3805
+
dependencies:
3806
+
undici-types: 6.21.0
3807
+
3808
+
'@types/node@24.3.0':
2195
3809
dependencies:
2196
-
undici-types: 7.8.0
3810
+
undici-types: 7.10.0
2197
3811
2198
3812
'@types/triple-beam@1.3.5': {}
2199
3813
3814
+
'@types/unist@3.0.3': {}
3815
+
3816
+
'@types/web-bluetooth@0.0.20': {}
3817
+
2200
3818
'@types/ws@8.18.1':
2201
3819
dependencies:
2202
-
'@types/node': 24.0.10
3820
+
'@types/node': 24.3.0
2203
3821
2204
-
'@typescript-eslint/eslint-plugin@8.35.1(@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(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)':
2205
3823
dependencies:
2206
3824
'@eslint-community/regexpp': 4.12.1
2207
-
'@typescript-eslint/parser': 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
2208
-
'@typescript-eslint/scope-manager': 8.35.1
2209
-
'@typescript-eslint/type-utils': 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
2210
-
'@typescript-eslint/utils': 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
2211
-
'@typescript-eslint/visitor-keys': 8.35.1
2212
-
eslint: 9.30.1(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)
2213
3831
graphemer: 1.4.0
2214
3832
ignore: 7.0.5
2215
3833
natural-compare: 1.4.0
2216
-
ts-api-utils: 2.1.0(typescript@5.8.3)
2217
-
typescript: 5.8.3
3834
+
ts-api-utils: 2.1.0(typescript@5.9.2)
3835
+
typescript: 5.9.2
2218
3836
transitivePeerDependencies:
2219
3837
- supports-color
2220
3838
2221
-
'@typescript-eslint/parser@8.35.1(eslint@9.30.1(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)':
2222
3840
dependencies:
2223
-
'@typescript-eslint/scope-manager': 8.35.1
2224
-
'@typescript-eslint/types': 8.35.1
2225
-
'@typescript-eslint/typescript-estree': 8.35.1(typescript@5.8.3)
2226
-
'@typescript-eslint/visitor-keys': 8.35.1
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
2227
3845
debug: 4.4.1
2228
-
eslint: 9.30.1(jiti@2.4.2)
2229
-
typescript: 5.8.3
3846
+
eslint: 9.33.0(jiti@2.5.1)
3847
+
typescript: 5.9.2
2230
3848
transitivePeerDependencies:
2231
3849
- supports-color
2232
3850
2233
-
'@typescript-eslint/project-service@8.35.1(typescript@5.8.3)':
3851
+
'@typescript-eslint/project-service@8.40.0(typescript@5.9.2)':
2234
3852
dependencies:
2235
-
'@typescript-eslint/tsconfig-utils': 8.35.1(typescript@5.8.3)
2236
-
'@typescript-eslint/types': 8.35.1
3853
+
'@typescript-eslint/tsconfig-utils': 8.40.0(typescript@5.9.2)
3854
+
'@typescript-eslint/types': 8.40.0
2237
3855
debug: 4.4.1
2238
-
typescript: 5.8.3
3856
+
typescript: 5.9.2
2239
3857
transitivePeerDependencies:
2240
3858
- supports-color
2241
3859
2242
-
'@typescript-eslint/scope-manager@8.35.1':
3860
+
'@typescript-eslint/scope-manager@8.40.0':
2243
3861
dependencies:
2244
-
'@typescript-eslint/types': 8.35.1
2245
-
'@typescript-eslint/visitor-keys': 8.35.1
3862
+
'@typescript-eslint/types': 8.40.0
3863
+
'@typescript-eslint/visitor-keys': 8.40.0
2246
3864
2247
-
'@typescript-eslint/tsconfig-utils@8.35.1(typescript@5.8.3)':
3865
+
'@typescript-eslint/tsconfig-utils@8.40.0(typescript@5.9.2)':
2248
3866
dependencies:
2249
-
typescript: 5.8.3
3867
+
typescript: 5.9.2
2250
3868
2251
-
'@typescript-eslint/type-utils@8.35.1(eslint@9.30.1(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)':
2252
3870
dependencies:
2253
-
'@typescript-eslint/typescript-estree': 8.35.1(typescript@5.8.3)
2254
-
'@typescript-eslint/utils': 8.35.1(eslint@9.30.1(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)
2255
3874
debug: 4.4.1
2256
-
eslint: 9.30.1(jiti@2.4.2)
2257
-
ts-api-utils: 2.1.0(typescript@5.8.3)
2258
-
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
2259
3878
transitivePeerDependencies:
2260
3879
- supports-color
2261
3880
2262
-
'@typescript-eslint/types@8.35.1': {}
3881
+
'@typescript-eslint/types@8.40.0': {}
2263
3882
2264
-
'@typescript-eslint/typescript-estree@8.35.1(typescript@5.8.3)':
3883
+
'@typescript-eslint/typescript-estree@8.40.0(typescript@5.9.2)':
2265
3884
dependencies:
2266
-
'@typescript-eslint/project-service': 8.35.1(typescript@5.8.3)
2267
-
'@typescript-eslint/tsconfig-utils': 8.35.1(typescript@5.8.3)
2268
-
'@typescript-eslint/types': 8.35.1
2269
-
'@typescript-eslint/visitor-keys': 8.35.1
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
2270
3889
debug: 4.4.1
2271
3890
fast-glob: 3.3.3
2272
3891
is-glob: 4.0.3
2273
3892
minimatch: 9.0.5
2274
3893
semver: 7.7.2
2275
-
ts-api-utils: 2.1.0(typescript@5.8.3)
2276
-
typescript: 5.8.3
3894
+
ts-api-utils: 2.1.0(typescript@5.9.2)
3895
+
typescript: 5.9.2
2277
3896
transitivePeerDependencies:
2278
3897
- supports-color
2279
3898
2280
-
'@typescript-eslint/utils@8.35.1(eslint@9.30.1(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)':
2281
3900
dependencies:
2282
-
'@eslint-community/eslint-utils': 4.7.0(eslint@9.30.1(jiti@2.4.2))
2283
-
'@typescript-eslint/scope-manager': 8.35.1
2284
-
'@typescript-eslint/types': 8.35.1
2285
-
'@typescript-eslint/typescript-estree': 8.35.1(typescript@5.8.3)
2286
-
eslint: 9.30.1(jiti@2.4.2)
2287
-
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
2288
3907
transitivePeerDependencies:
2289
3908
- supports-color
2290
3909
2291
-
'@typescript-eslint/visitor-keys@8.35.1':
3910
+
'@typescript-eslint/visitor-keys@8.40.0':
2292
3911
dependencies:
2293
-
'@typescript-eslint/types': 8.35.1
3912
+
'@typescript-eslint/types': 8.40.0
2294
3913
eslint-visitor-keys: 4.2.1
2295
3914
3915
+
'@ungap/structured-clone@1.3.0': {}
3916
+
3917
+
'@vitest/expect@3.2.4':
3918
+
dependencies:
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
3963
+
entities: 4.5.0
3964
+
estree-walker: 2.0.2
3965
+
source-map-js: 1.2.1
3966
+
3967
+
'@vue/compiler-dom@3.5.19':
3968
+
dependencies:
3969
+
'@vue/compiler-core': 3.5.19
3970
+
'@vue/shared': 3.5.19
3971
+
3972
+
'@vue/compiler-sfc@3.5.19':
3973
+
dependencies:
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
3979
+
estree-walker: 2.0.2
3980
+
magic-string: 0.30.18
3981
+
postcss: 8.5.6
3982
+
source-map-js: 1.2.1
3983
+
3984
+
'@vue/compiler-ssr@3.5.19':
3985
+
dependencies:
3986
+
'@vue/compiler-dom': 3.5.19
3987
+
'@vue/shared': 3.5.19
3988
+
3989
+
'@vue/reactivity@3.5.19':
3990
+
dependencies:
3991
+
'@vue/shared': 3.5.19
3992
+
3993
+
'@vue/runtime-core@3.5.19':
3994
+
dependencies:
3995
+
'@vue/reactivity': 3.5.19
3996
+
'@vue/shared': 3.5.19
3997
+
3998
+
'@vue/runtime-dom@3.5.19':
3999
+
dependencies:
4000
+
'@vue/reactivity': 3.5.19
4001
+
'@vue/runtime-core': 3.5.19
4002
+
'@vue/shared': 3.5.19
4003
+
csstype: 3.1.3
4004
+
4005
+
'@vue/server-renderer@3.5.19(vue@3.5.19(typescript@5.9.2))':
4006
+
dependencies:
4007
+
'@vue/compiler-ssr': 3.5.19
4008
+
'@vue/shared': 3.5.19
4009
+
vue: 3.5.19(typescript@5.9.2)
4010
+
4011
+
'@vue/shared@3.5.19': {}
4012
+
4013
+
'@vueuse/core@10.11.1(vue@3.5.19(typescript@5.9.2))':
4014
+
dependencies:
4015
+
'@types/web-bluetooth': 0.0.20
4016
+
'@vueuse/metadata': 10.11.1
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))
4029
+
transitivePeerDependencies:
4030
+
- '@vue/composition-api'
4031
+
- vue
4032
+
4033
+
'@vueuse/metadata@10.11.1': {}
4034
+
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))':
4045
+
dependencies:
4046
+
vue-demi: 0.14.10(vue@3.5.19(typescript@5.9.2))
4047
+
transitivePeerDependencies:
4048
+
- '@vue/composition-api'
4049
+
- vue
4050
+
2296
4051
acorn-jsx@5.3.2(acorn@8.15.0):
2297
4052
dependencies:
2298
4053
acorn: 8.15.0
2299
4054
2300
4055
acorn@8.15.0: {}
2301
4056
4057
+
ajv-draft-04@1.0.0(ajv@8.17.1):
4058
+
optionalDependencies:
4059
+
ajv: 8.17.1
4060
+
4061
+
ajv-formats@3.0.1(ajv@8.17.1):
4062
+
optionalDependencies:
4063
+
ajv: 8.17.1
4064
+
2302
4065
ajv@6.12.6:
2303
4066
dependencies:
2304
4067
fast-deep-equal: 3.1.3
···
2306
4069
json-schema-traverse: 0.4.1
2307
4070
uri-js: 4.4.1
2308
4071
4072
+
ajv@8.17.1:
4073
+
dependencies:
4074
+
fast-deep-equal: 3.1.3
4075
+
fast-uri: 3.0.6
4076
+
json-schema-traverse: 1.0.0
4077
+
require-from-string: 2.0.2
4078
+
2309
4079
ansi-styles@4.3.0:
2310
4080
dependencies:
2311
4081
color-convert: 2.0.1
2312
4082
2313
4083
argparse@2.0.1: {}
2314
4084
4085
+
aria-hidden@1.2.6:
4086
+
dependencies:
4087
+
tslib: 2.8.1
4088
+
2315
4089
array-buffer-byte-length@1.0.2:
2316
4090
dependencies:
2317
4091
call-bound: 1.0.4
···
2362
4136
get-intrinsic: 1.3.0
2363
4137
is-array-buffer: 3.0.5
2364
4138
4139
+
assertion-error@2.0.1: {}
4140
+
2365
4141
async-function@1.0.0: {}
2366
4142
2367
4143
async@3.2.6: {}
···
2369
4145
available-typed-arrays@1.0.7:
2370
4146
dependencies:
2371
4147
possible-typed-array-names: 1.1.0
4148
+
4149
+
bail@2.0.2: {}
2372
4150
2373
4151
balanced-match@1.0.2: {}
2374
4152
···
2389
4167
2390
4168
bun-types@1.2.17:
2391
4169
dependencies:
2392
-
'@types/node': 24.0.10
4170
+
'@types/node': 24.3.0
2393
4171
optional: true
4172
+
4173
+
cac@6.7.14: {}
2394
4174
2395
4175
call-bind-apply-helpers@1.0.2:
2396
4176
dependencies:
···
2411
4191
2412
4192
callsites@3.1.0: {}
2413
4193
4194
+
camel-case@4.1.2:
4195
+
dependencies:
4196
+
pascal-case: 3.1.2
4197
+
tslib: 2.8.1
4198
+
4199
+
ccount@2.0.1: {}
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
+
2414
4209
chalk@4.1.2:
2415
4210
dependencies:
2416
4211
ansi-styles: 4.3.0
2417
4212
supports-color: 7.2.0
2418
4213
4214
+
chalk@5.6.0: {}
4215
+
4216
+
character-entities-html4@2.1.0: {}
4217
+
4218
+
character-entities-legacy@3.0.0: {}
4219
+
4220
+
character-entities@2.0.2: {}
4221
+
4222
+
check-error@2.1.1: {}
4223
+
4224
+
clean-css@5.3.3:
4225
+
dependencies:
4226
+
source-map: 0.6.1
4227
+
4228
+
clsx@2.1.1: {}
4229
+
2419
4230
color-convert@1.9.3:
2420
4231
dependencies:
2421
4232
color-name: 1.1.3
···
2443
4254
color: 3.2.1
2444
4255
text-hex: 1.0.0
2445
4256
4257
+
comma-separated-tokens@2.0.3: {}
4258
+
4259
+
commander@10.0.1: {}
4260
+
4261
+
commander@2.20.3: {}
4262
+
2446
4263
concat-map@0.0.1: {}
4264
+
4265
+
content-type@1.0.5: {}
2447
4266
2448
4267
cross-spawn@7.0.6:
2449
4268
dependencies:
···
2451
4270
shebang-command: 2.0.0
2452
4271
which: 2.0.2
2453
4272
4273
+
csstype@3.1.3: {}
4274
+
4275
+
cva@1.0.0-beta.2(typescript@5.9.2):
4276
+
dependencies:
4277
+
clsx: 2.1.1
4278
+
optionalDependencies:
4279
+
typescript: 5.9.2
4280
+
4281
+
dank-each@1.0.0: {}
4282
+
4283
+
dank-map@0.1.0: {}
4284
+
2454
4285
data-uri-to-buffer@4.0.1: {}
2455
4286
2456
4287
data-view-buffer@1.0.2:
···
2479
4310
dependencies:
2480
4311
ms: 2.1.3
2481
4312
4313
+
decode-named-character-reference@1.2.0:
4314
+
dependencies:
4315
+
character-entities: 2.0.2
4316
+
4317
+
deep-eql@5.0.2: {}
4318
+
2482
4319
deep-is@0.1.4: {}
2483
4320
2484
4321
define-data-property@1.1.4:
···
2493
4330
has-property-descriptors: 1.0.2
2494
4331
object-keys: 1.1.1
2495
4332
4333
+
defu@6.1.4: {}
4334
+
4335
+
dequal@2.0.3: {}
4336
+
2496
4337
detect-libc@2.0.2: {}
2497
4338
4339
+
devlop@1.1.0:
4340
+
dependencies:
4341
+
dequal: 2.0.3
4342
+
2498
4343
doctrine@2.1.0:
2499
4344
dependencies:
2500
4345
esutils: 2.0.3
2501
4346
4347
+
dot-case@3.0.4:
4348
+
dependencies:
4349
+
no-case: 3.0.4
4350
+
tslib: 2.8.1
4351
+
2502
4352
drizzle-kit@0.31.4:
2503
4353
dependencies:
2504
4354
'@drizzle-team/brocli': 0.10.2
2505
4355
'@esbuild-kit/esm-loader': 2.6.5
2506
-
esbuild: 0.25.5
2507
-
esbuild-register: 3.6.0(esbuild@0.25.5)
4356
+
esbuild: 0.25.9
4357
+
esbuild-register: 3.6.0(esbuild@0.25.9)
2508
4358
transitivePeerDependencies:
2509
4359
- supports-color
2510
4360
2511
-
drizzle-orm@0.44.2(@libsql/client@0.15.9)(bun-types@1.2.17):
4361
+
drizzle-orm@0.44.4(@libsql/client@0.15.12)(bun-types@1.2.17):
2512
4362
optionalDependencies:
2513
-
'@libsql/client': 0.15.9
4363
+
'@libsql/client': 0.15.12
2514
4364
bun-types: 1.2.17
2515
4365
2516
4366
dunder-proto@1.0.1:
···
2520
4370
gopd: 1.2.0
2521
4371
2522
4372
enabled@2.0.0: {}
4373
+
4374
+
entities@4.5.0: {}
4375
+
4376
+
entities@6.0.1: {}
2523
4377
2524
4378
es-abstract@1.24.0:
2525
4379
dependencies:
···
2582
4436
2583
4437
es-errors@1.3.0: {}
2584
4438
4439
+
es-module-lexer@1.7.0: {}
4440
+
2585
4441
es-object-atoms@1.1.1:
2586
4442
dependencies:
2587
4443
es-errors: 1.3.0
···
2603
4459
is-date-object: 1.1.0
2604
4460
is-symbol: 1.1.1
2605
4461
2606
-
esbuild-register@3.6.0(esbuild@0.25.5):
4462
+
esbuild-register@3.6.0(esbuild@0.25.9):
2607
4463
dependencies:
2608
4464
debug: 4.4.1
2609
-
esbuild: 0.25.5
4465
+
esbuild: 0.25.9
2610
4466
transitivePeerDependencies:
2611
4467
- supports-color
2612
4468
···
2635
4491
'@esbuild/win32-ia32': 0.18.20
2636
4492
'@esbuild/win32-x64': 0.18.20
2637
4493
2638
-
esbuild@0.25.5:
4494
+
esbuild@0.25.9:
2639
4495
optionalDependencies:
2640
-
'@esbuild/aix-ppc64': 0.25.5
2641
-
'@esbuild/android-arm': 0.25.5
2642
-
'@esbuild/android-arm64': 0.25.5
2643
-
'@esbuild/android-x64': 0.25.5
2644
-
'@esbuild/darwin-arm64': 0.25.5
2645
-
'@esbuild/darwin-x64': 0.25.5
2646
-
'@esbuild/freebsd-arm64': 0.25.5
2647
-
'@esbuild/freebsd-x64': 0.25.5
2648
-
'@esbuild/linux-arm': 0.25.5
2649
-
'@esbuild/linux-arm64': 0.25.5
2650
-
'@esbuild/linux-ia32': 0.25.5
2651
-
'@esbuild/linux-loong64': 0.25.5
2652
-
'@esbuild/linux-mips64el': 0.25.5
2653
-
'@esbuild/linux-ppc64': 0.25.5
2654
-
'@esbuild/linux-riscv64': 0.25.5
2655
-
'@esbuild/linux-s390x': 0.25.5
2656
-
'@esbuild/linux-x64': 0.25.5
2657
-
'@esbuild/netbsd-arm64': 0.25.5
2658
-
'@esbuild/netbsd-x64': 0.25.5
2659
-
'@esbuild/openbsd-arm64': 0.25.5
2660
-
'@esbuild/openbsd-x64': 0.25.5
2661
-
'@esbuild/sunos-x64': 0.25.5
2662
-
'@esbuild/win32-arm64': 0.25.5
2663
-
'@esbuild/win32-ia32': 0.25.5
2664
-
'@esbuild/win32-x64': 0.25.5
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
2665
4522
2666
4523
escape-string-regexp@4.0.0: {}
2667
4524
2668
-
eslint-config-prettier@10.1.5(eslint@9.30.1(jiti@2.4.2)):
4525
+
escape-string-regexp@5.0.0: {}
4526
+
4527
+
eslint-config-prettier@10.1.8(eslint@9.33.0(jiti@2.5.1)):
2669
4528
dependencies:
2670
-
eslint: 9.30.1(jiti@2.4.2)
4529
+
eslint: 9.33.0(jiti@2.5.1)
2671
4530
2672
4531
eslint-import-resolver-node@0.3.9:
2673
4532
dependencies:
···
2677
4536
transitivePeerDependencies:
2678
4537
- supports-color
2679
4538
2680
-
eslint-module-utils@2.12.1(@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.30.1(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)):
2681
4540
dependencies:
2682
4541
debug: 3.2.7
2683
4542
optionalDependencies:
2684
-
'@typescript-eslint/parser': 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
2685
-
eslint: 9.30.1(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)
2686
4545
eslint-import-resolver-node: 0.3.9
2687
4546
transitivePeerDependencies:
2688
4547
- supports-color
2689
4548
2690
-
eslint-plugin-drizzle@0.2.3(eslint@9.30.1(jiti@2.4.2)):
4549
+
eslint-plugin-drizzle@0.2.3(eslint@9.33.0(jiti@2.5.1)):
2691
4550
dependencies:
2692
-
eslint: 9.30.1(jiti@2.4.2)
4551
+
eslint: 9.33.0(jiti@2.5.1)
2693
4552
2694
-
eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(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)):
2695
4554
dependencies:
2696
4555
'@rtsao/scc': 1.1.0
2697
4556
array-includes: 3.1.9
···
2700
4559
array.prototype.flatmap: 1.3.3
2701
4560
debug: 3.2.7
2702
4561
doctrine: 2.1.0
2703
-
eslint: 9.30.1(jiti@2.4.2)
4562
+
eslint: 9.33.0(jiti@2.5.1)
2704
4563
eslint-import-resolver-node: 0.3.9
2705
-
eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.30.1(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))
2706
4565
hasown: 2.0.2
2707
4566
is-core-module: 2.16.1
2708
4567
is-glob: 4.0.3
···
2714
4573
string.prototype.trimend: 1.0.9
2715
4574
tsconfig-paths: 3.15.0
2716
4575
optionalDependencies:
2717
-
'@typescript-eslint/parser': 8.35.1(eslint@9.30.1(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)
2718
4577
transitivePeerDependencies:
2719
4578
- eslint-import-resolver-typescript
2720
4579
- eslint-import-resolver-webpack
2721
4580
- supports-color
2722
4581
2723
-
eslint-plugin-prettier@5.5.1(eslint-config-prettier@10.1.5(eslint@9.30.1(jiti@2.4.2)))(eslint@9.30.1(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):
2724
4583
dependencies:
2725
-
eslint: 9.30.1(jiti@2.4.2)
4584
+
eslint: 9.33.0(jiti@2.5.1)
2726
4585
prettier: 3.6.2
2727
4586
prettier-linter-helpers: 1.0.0
2728
-
synckit: 0.11.8
4587
+
synckit: 0.11.11
2729
4588
optionalDependencies:
2730
-
eslint-config-prettier: 10.1.5(eslint@9.30.1(jiti@2.4.2))
4589
+
eslint-config-prettier: 10.1.8(eslint@9.33.0(jiti@2.5.1))
2731
4590
2732
4591
eslint-scope@8.4.0:
2733
4592
dependencies:
···
2738
4597
2739
4598
eslint-visitor-keys@4.2.1: {}
2740
4599
2741
-
eslint@9.30.1(jiti@2.4.2):
4600
+
eslint@9.33.0(jiti@2.5.1):
2742
4601
dependencies:
2743
-
'@eslint-community/eslint-utils': 4.7.0(eslint@9.30.1(jiti@2.4.2))
4602
+
'@eslint-community/eslint-utils': 4.7.0(eslint@9.33.0(jiti@2.5.1))
2744
4603
'@eslint-community/regexpp': 4.12.1
2745
4604
'@eslint/config-array': 0.21.0
2746
-
'@eslint/config-helpers': 0.3.0
2747
-
'@eslint/core': 0.14.0
4605
+
'@eslint/config-helpers': 0.3.1
4606
+
'@eslint/core': 0.15.2
2748
4607
'@eslint/eslintrc': 3.3.1
2749
-
'@eslint/js': 9.30.1
2750
-
'@eslint/plugin-kit': 0.3.3
4608
+
'@eslint/js': 9.33.0
4609
+
'@eslint/plugin-kit': 0.3.5
2751
4610
'@humanfs/node': 0.16.6
2752
4611
'@humanwhocodes/module-importer': 1.0.1
2753
4612
'@humanwhocodes/retry': 0.4.3
···
2776
4635
natural-compare: 1.4.0
2777
4636
optionator: 0.9.4
2778
4637
optionalDependencies:
2779
-
jiti: 2.4.2
4638
+
jiti: 2.5.1
2780
4639
transitivePeerDependencies:
2781
4640
- supports-color
2782
4641
···
2798
4657
2799
4658
estraverse@5.3.0: {}
2800
4659
4660
+
estree-walker@2.0.2: {}
4661
+
4662
+
estree-walker@3.0.3:
4663
+
dependencies:
4664
+
'@types/estree': 1.0.8
4665
+
2801
4666
esutils@2.0.3: {}
2802
4667
2803
4668
event-target-polyfill@0.0.4: {}
2804
4669
4670
+
expect-type@1.2.2: {}
4671
+
4672
+
extend@3.0.2: {}
4673
+
2805
4674
fast-deep-equal@3.1.3: {}
2806
4675
2807
4676
fast-diff@1.3.0: {}
···
2818
4687
2819
4688
fast-levenshtein@2.0.6: {}
2820
4689
4690
+
fast-uri@3.0.6: {}
4691
+
2821
4692
fastq@1.19.1:
2822
4693
dependencies:
2823
4694
reusify: 1.1.0
2824
4695
4696
+
fdir@6.5.0(picomatch@4.0.3):
4697
+
optionalDependencies:
4698
+
picomatch: 4.0.3
4699
+
2825
4700
fecha@4.2.3: {}
2826
4701
2827
4702
fetch-blob@3.2.0:
···
2888
4763
hasown: 2.0.2
2889
4764
math-intrinsics: 1.1.0
2890
4765
4766
+
get-own-enumerable-keys@1.0.0: {}
4767
+
2891
4768
get-proto@1.0.1:
2892
4769
dependencies:
2893
4770
dunder-proto: 1.0.1
···
2902
4779
get-tsconfig@4.10.1:
2903
4780
dependencies:
2904
4781
resolve-pkg-maps: 1.0.0
4782
+
4783
+
github-slugger@2.0.0: {}
2905
4784
2906
4785
glob-parent@5.1.2:
2907
4786
dependencies:
···
2946
4825
dependencies:
2947
4826
function-bind: 1.1.2
2948
4827
2949
-
hono@4.8.4: {}
4828
+
hast-util-embedded@3.0.0:
4829
+
dependencies:
4830
+
'@types/hast': 3.0.4
4831
+
hast-util-is-element: 3.0.0
4832
+
4833
+
hast-util-format@1.1.0:
4834
+
dependencies:
4835
+
'@types/hast': 3.0.4
4836
+
hast-util-embedded: 3.0.0
4837
+
hast-util-minify-whitespace: 1.0.1
4838
+
hast-util-phrasing: 3.0.1
4839
+
hast-util-whitespace: 3.0.0
4840
+
html-whitespace-sensitive-tag-names: 3.0.1
4841
+
unist-util-visit-parents: 6.0.1
4842
+
4843
+
hast-util-from-html@2.0.3:
4844
+
dependencies:
4845
+
'@types/hast': 3.0.4
4846
+
devlop: 1.1.0
4847
+
hast-util-from-parse5: 8.0.3
4848
+
parse5: 7.3.0
4849
+
vfile: 6.0.3
4850
+
vfile-message: 4.0.3
4851
+
4852
+
hast-util-from-parse5@8.0.3:
4853
+
dependencies:
4854
+
'@types/hast': 3.0.4
4855
+
'@types/unist': 3.0.3
4856
+
devlop: 1.1.0
4857
+
hastscript: 9.0.1
4858
+
property-information: 7.1.0
4859
+
vfile: 6.0.3
4860
+
vfile-location: 5.0.3
4861
+
web-namespaces: 2.0.1
4862
+
4863
+
hast-util-has-property@3.0.0:
4864
+
dependencies:
4865
+
'@types/hast': 3.0.4
4866
+
4867
+
hast-util-is-body-ok-link@3.0.1:
4868
+
dependencies:
4869
+
'@types/hast': 3.0.4
4870
+
4871
+
hast-util-is-element@3.0.0:
4872
+
dependencies:
4873
+
'@types/hast': 3.0.4
4874
+
4875
+
hast-util-minify-whitespace@1.0.1:
4876
+
dependencies:
4877
+
'@types/hast': 3.0.4
4878
+
hast-util-embedded: 3.0.0
4879
+
hast-util-is-element: 3.0.0
4880
+
hast-util-whitespace: 3.0.0
4881
+
unist-util-is: 6.0.0
4882
+
4883
+
hast-util-parse-selector@4.0.0:
4884
+
dependencies:
4885
+
'@types/hast': 3.0.4
4886
+
4887
+
hast-util-phrasing@3.0.1:
4888
+
dependencies:
4889
+
'@types/hast': 3.0.4
4890
+
hast-util-embedded: 3.0.0
4891
+
hast-util-has-property: 3.0.0
4892
+
hast-util-is-body-ok-link: 3.0.1
4893
+
hast-util-is-element: 3.0.0
4894
+
4895
+
hast-util-raw@9.1.0:
4896
+
dependencies:
4897
+
'@types/hast': 3.0.4
4898
+
'@types/unist': 3.0.3
4899
+
'@ungap/structured-clone': 1.3.0
4900
+
hast-util-from-parse5: 8.0.3
4901
+
hast-util-to-parse5: 8.0.0
4902
+
html-void-elements: 3.0.0
4903
+
mdast-util-to-hast: 13.2.0
4904
+
parse5: 7.3.0
4905
+
unist-util-position: 5.0.0
4906
+
unist-util-visit: 5.0.0
4907
+
vfile: 6.0.3
4908
+
web-namespaces: 2.0.1
4909
+
zwitch: 2.0.4
4910
+
4911
+
hast-util-sanitize@5.0.2:
4912
+
dependencies:
4913
+
'@types/hast': 3.0.4
4914
+
'@ungap/structured-clone': 1.3.0
4915
+
unist-util-position: 5.0.0
4916
+
4917
+
hast-util-to-html@9.0.5:
4918
+
dependencies:
4919
+
'@types/hast': 3.0.4
4920
+
'@types/unist': 3.0.3
4921
+
ccount: 2.0.1
4922
+
comma-separated-tokens: 2.0.3
4923
+
hast-util-whitespace: 3.0.0
4924
+
html-void-elements: 3.0.0
4925
+
mdast-util-to-hast: 13.2.0
4926
+
property-information: 7.1.0
4927
+
space-separated-tokens: 2.0.2
4928
+
stringify-entities: 4.0.4
4929
+
zwitch: 2.0.4
4930
+
4931
+
hast-util-to-mdast@10.1.2:
4932
+
dependencies:
4933
+
'@types/hast': 3.0.4
4934
+
'@types/mdast': 4.0.4
4935
+
'@ungap/structured-clone': 1.3.0
4936
+
hast-util-phrasing: 3.0.1
4937
+
hast-util-to-html: 9.0.5
4938
+
hast-util-to-text: 4.0.2
4939
+
hast-util-whitespace: 3.0.0
4940
+
mdast-util-phrasing: 4.1.0
4941
+
mdast-util-to-hast: 13.2.0
4942
+
mdast-util-to-string: 4.0.0
4943
+
rehype-minify-whitespace: 6.0.2
4944
+
trim-trailing-lines: 2.1.0
4945
+
unist-util-position: 5.0.0
4946
+
unist-util-visit: 5.0.0
4947
+
4948
+
hast-util-to-parse5@8.0.0:
4949
+
dependencies:
4950
+
'@types/hast': 3.0.4
4951
+
comma-separated-tokens: 2.0.3
4952
+
devlop: 1.1.0
4953
+
property-information: 6.5.0
4954
+
space-separated-tokens: 2.0.2
4955
+
web-namespaces: 2.0.1
4956
+
zwitch: 2.0.4
4957
+
4958
+
hast-util-to-text@4.0.2:
4959
+
dependencies:
4960
+
'@types/hast': 3.0.4
4961
+
'@types/unist': 3.0.3
4962
+
hast-util-is-element: 3.0.0
4963
+
unist-util-find-after: 5.0.0
4964
+
4965
+
hast-util-whitespace@3.0.0:
4966
+
dependencies:
4967
+
'@types/hast': 3.0.4
4968
+
4969
+
hastscript@9.0.1:
4970
+
dependencies:
4971
+
'@types/hast': 3.0.4
4972
+
comma-separated-tokens: 2.0.3
4973
+
hast-util-parse-selector: 4.0.0
4974
+
property-information: 7.1.0
4975
+
space-separated-tokens: 2.0.2
4976
+
4977
+
highlight.js@11.11.1: {}
4978
+
4979
+
highlightjs-curl@1.3.0: {}
4980
+
4981
+
highlightjs-vue@1.0.0: {}
4982
+
4983
+
hono@4.9.4: {}
4984
+
4985
+
html-minifier-terser@7.2.0:
4986
+
dependencies:
4987
+
camel-case: 4.1.2
4988
+
clean-css: 5.3.3
4989
+
commander: 10.0.1
4990
+
entities: 4.5.0
4991
+
param-case: 3.0.4
4992
+
relateurl: 0.2.7
4993
+
terser: 5.43.1
4994
+
4995
+
html-void-elements@3.0.0: {}
4996
+
4997
+
html-whitespace-sensitive-tag-names@3.0.1: {}
2950
4998
2951
4999
ignore@5.3.2: {}
2952
5000
···
2966
5014
es-errors: 1.3.0
2967
5015
hasown: 2.0.2
2968
5016
side-channel: 1.1.0
5017
+
5018
+
is-absolute-url@4.0.1: {}
2969
5019
2970
5020
is-array-buffer@3.0.5:
2971
5021
dependencies:
···
3037
5087
3038
5088
is-number@7.0.0: {}
3039
5089
5090
+
is-obj@3.0.0: {}
5091
+
5092
+
is-plain-obj@4.1.0: {}
5093
+
3040
5094
is-regex@1.2.1:
3041
5095
dependencies:
3042
5096
call-bound: 1.0.4
3043
5097
gopd: 1.2.0
3044
5098
has-tostringtag: 1.0.2
3045
5099
hasown: 2.0.2
5100
+
5101
+
is-regexp@3.1.0: {}
3046
5102
3047
5103
is-set@2.0.3: {}
3048
5104
···
3082
5138
3083
5139
isexe@2.0.0: {}
3084
5140
3085
-
jiti@2.4.2: {}
5141
+
jiti@2.5.1: {}
3086
5142
3087
-
js-base64@3.7.7: {}
5143
+
js-base64@3.7.8: {}
5144
+
5145
+
js-tokens@9.0.1: {}
3088
5146
3089
5147
js-yaml@4.1.0:
3090
5148
dependencies:
···
3094
5152
3095
5153
json-schema-traverse@0.4.1: {}
3096
5154
5155
+
json-schema-traverse@1.0.0: {}
5156
+
3097
5157
json-stable-stringify-without-jsonify@1.0.1: {}
3098
5158
5159
+
json-stringify-deterministic@1.0.12: {}
5160
+
3099
5161
json5@1.0.2:
3100
5162
dependencies:
3101
5163
minimist: 1.2.8
3102
5164
5165
+
jsonpointer@5.0.1: {}
5166
+
5167
+
just-clone@6.2.0: {}
5168
+
5169
+
just-curry-it@5.3.0: {}
5170
+
3103
5171
keyv@4.5.4:
3104
5172
dependencies:
3105
5173
json-buffer: 3.0.1
3106
5174
3107
5175
kuler@2.0.0: {}
5176
+
5177
+
leven@4.0.0: {}
3108
5178
3109
5179
levn@0.4.1:
3110
5180
dependencies:
3111
5181
prelude-ls: 1.2.1
3112
5182
type-check: 0.4.0
3113
5183
3114
-
libsql@0.5.13:
5184
+
libsql@0.5.17:
3115
5185
dependencies:
3116
5186
'@neon-rs/load': 0.0.4
3117
5187
detect-libc: 2.0.2
3118
5188
optionalDependencies:
3119
-
'@libsql/darwin-arm64': 0.5.13
3120
-
'@libsql/darwin-x64': 0.5.13
3121
-
'@libsql/linux-arm-gnueabihf': 0.5.13
3122
-
'@libsql/linux-arm-musleabihf': 0.5.13
3123
-
'@libsql/linux-arm64-gnu': 0.5.13
3124
-
'@libsql/linux-arm64-musl': 0.5.13
3125
-
'@libsql/linux-x64-gnu': 0.5.13
3126
-
'@libsql/linux-x64-musl': 0.5.13
3127
-
'@libsql/win32-x64-msvc': 0.5.13
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
3128
5198
3129
5199
locate-path@6.0.0:
3130
5200
dependencies:
···
3141
5211
safe-stable-stringify: 2.5.0
3142
5212
triple-beam: 1.4.1
3143
5213
5214
+
longest-streak@3.1.0: {}
5215
+
5216
+
loupe@3.2.1: {}
5217
+
5218
+
lower-case@2.0.2:
5219
+
dependencies:
5220
+
tslib: 2.8.1
5221
+
5222
+
lowlight@3.3.0:
5223
+
dependencies:
5224
+
'@types/hast': 3.0.4
5225
+
devlop: 1.1.0
5226
+
highlight.js: 11.11.1
5227
+
5228
+
magic-string@0.30.18:
5229
+
dependencies:
5230
+
'@jridgewell/sourcemap-codec': 1.5.5
5231
+
5232
+
markdown-table@3.0.4: {}
5233
+
3144
5234
math-intrinsics@1.1.0: {}
3145
5235
5236
+
mdast-util-find-and-replace@3.0.2:
5237
+
dependencies:
5238
+
'@types/mdast': 4.0.4
5239
+
escape-string-regexp: 5.0.0
5240
+
unist-util-is: 6.0.0
5241
+
unist-util-visit-parents: 6.0.1
5242
+
5243
+
mdast-util-from-markdown@2.0.2:
5244
+
dependencies:
5245
+
'@types/mdast': 4.0.4
5246
+
'@types/unist': 3.0.3
5247
+
decode-named-character-reference: 1.2.0
5248
+
devlop: 1.1.0
5249
+
mdast-util-to-string: 4.0.0
5250
+
micromark: 4.0.2
5251
+
micromark-util-decode-numeric-character-reference: 2.0.2
5252
+
micromark-util-decode-string: 2.0.1
5253
+
micromark-util-normalize-identifier: 2.0.1
5254
+
micromark-util-symbol: 2.0.1
5255
+
micromark-util-types: 2.0.2
5256
+
unist-util-stringify-position: 4.0.0
5257
+
transitivePeerDependencies:
5258
+
- supports-color
5259
+
5260
+
mdast-util-gfm-autolink-literal@2.0.1:
5261
+
dependencies:
5262
+
'@types/mdast': 4.0.4
5263
+
ccount: 2.0.1
5264
+
devlop: 1.1.0
5265
+
mdast-util-find-and-replace: 3.0.2
5266
+
micromark-util-character: 2.1.1
5267
+
5268
+
mdast-util-gfm-footnote@2.1.0:
5269
+
dependencies:
5270
+
'@types/mdast': 4.0.4
5271
+
devlop: 1.1.0
5272
+
mdast-util-from-markdown: 2.0.2
5273
+
mdast-util-to-markdown: 2.1.2
5274
+
micromark-util-normalize-identifier: 2.0.1
5275
+
transitivePeerDependencies:
5276
+
- supports-color
5277
+
5278
+
mdast-util-gfm-strikethrough@2.0.0:
5279
+
dependencies:
5280
+
'@types/mdast': 4.0.4
5281
+
mdast-util-from-markdown: 2.0.2
5282
+
mdast-util-to-markdown: 2.1.2
5283
+
transitivePeerDependencies:
5284
+
- supports-color
5285
+
5286
+
mdast-util-gfm-table@2.0.0:
5287
+
dependencies:
5288
+
'@types/mdast': 4.0.4
5289
+
devlop: 1.1.0
5290
+
markdown-table: 3.0.4
5291
+
mdast-util-from-markdown: 2.0.2
5292
+
mdast-util-to-markdown: 2.1.2
5293
+
transitivePeerDependencies:
5294
+
- supports-color
5295
+
5296
+
mdast-util-gfm-task-list-item@2.0.0:
5297
+
dependencies:
5298
+
'@types/mdast': 4.0.4
5299
+
devlop: 1.1.0
5300
+
mdast-util-from-markdown: 2.0.2
5301
+
mdast-util-to-markdown: 2.1.2
5302
+
transitivePeerDependencies:
5303
+
- supports-color
5304
+
5305
+
mdast-util-gfm@3.1.0:
5306
+
dependencies:
5307
+
mdast-util-from-markdown: 2.0.2
5308
+
mdast-util-gfm-autolink-literal: 2.0.1
5309
+
mdast-util-gfm-footnote: 2.1.0
5310
+
mdast-util-gfm-strikethrough: 2.0.0
5311
+
mdast-util-gfm-table: 2.0.0
5312
+
mdast-util-gfm-task-list-item: 2.0.0
5313
+
mdast-util-to-markdown: 2.1.2
5314
+
transitivePeerDependencies:
5315
+
- supports-color
5316
+
5317
+
mdast-util-phrasing@4.1.0:
5318
+
dependencies:
5319
+
'@types/mdast': 4.0.4
5320
+
unist-util-is: 6.0.0
5321
+
5322
+
mdast-util-to-hast@13.2.0:
5323
+
dependencies:
5324
+
'@types/hast': 3.0.4
5325
+
'@types/mdast': 4.0.4
5326
+
'@ungap/structured-clone': 1.3.0
5327
+
devlop: 1.1.0
5328
+
micromark-util-sanitize-uri: 2.0.1
5329
+
trim-lines: 3.0.1
5330
+
unist-util-position: 5.0.0
5331
+
unist-util-visit: 5.0.0
5332
+
vfile: 6.0.3
5333
+
5334
+
mdast-util-to-markdown@2.1.2:
5335
+
dependencies:
5336
+
'@types/mdast': 4.0.4
5337
+
'@types/unist': 3.0.3
5338
+
longest-streak: 3.1.0
5339
+
mdast-util-phrasing: 4.1.0
5340
+
mdast-util-to-string: 4.0.0
5341
+
micromark-util-classify-character: 2.0.1
5342
+
micromark-util-decode-string: 2.0.1
5343
+
unist-util-visit: 5.0.0
5344
+
zwitch: 2.0.4
5345
+
5346
+
mdast-util-to-string@4.0.0:
5347
+
dependencies:
5348
+
'@types/mdast': 4.0.4
5349
+
3146
5350
merge2@1.4.1: {}
3147
5351
5352
+
microdiff@1.5.0: {}
5353
+
5354
+
micromark-core-commonmark@2.0.3:
5355
+
dependencies:
5356
+
decode-named-character-reference: 1.2.0
5357
+
devlop: 1.1.0
5358
+
micromark-factory-destination: 2.0.1
5359
+
micromark-factory-label: 2.0.1
5360
+
micromark-factory-space: 2.0.1
5361
+
micromark-factory-title: 2.0.1
5362
+
micromark-factory-whitespace: 2.0.1
5363
+
micromark-util-character: 2.1.1
5364
+
micromark-util-chunked: 2.0.1
5365
+
micromark-util-classify-character: 2.0.1
5366
+
micromark-util-html-tag-name: 2.0.1
5367
+
micromark-util-normalize-identifier: 2.0.1
5368
+
micromark-util-resolve-all: 2.0.1
5369
+
micromark-util-subtokenize: 2.1.0
5370
+
micromark-util-symbol: 2.0.1
5371
+
micromark-util-types: 2.0.2
5372
+
5373
+
micromark-extension-gfm-autolink-literal@2.1.0:
5374
+
dependencies:
5375
+
micromark-util-character: 2.1.1
5376
+
micromark-util-sanitize-uri: 2.0.1
5377
+
micromark-util-symbol: 2.0.1
5378
+
micromark-util-types: 2.0.2
5379
+
5380
+
micromark-extension-gfm-footnote@2.1.0:
5381
+
dependencies:
5382
+
devlop: 1.1.0
5383
+
micromark-core-commonmark: 2.0.3
5384
+
micromark-factory-space: 2.0.1
5385
+
micromark-util-character: 2.1.1
5386
+
micromark-util-normalize-identifier: 2.0.1
5387
+
micromark-util-sanitize-uri: 2.0.1
5388
+
micromark-util-symbol: 2.0.1
5389
+
micromark-util-types: 2.0.2
5390
+
5391
+
micromark-extension-gfm-strikethrough@2.1.0:
5392
+
dependencies:
5393
+
devlop: 1.1.0
5394
+
micromark-util-chunked: 2.0.1
5395
+
micromark-util-classify-character: 2.0.1
5396
+
micromark-util-resolve-all: 2.0.1
5397
+
micromark-util-symbol: 2.0.1
5398
+
micromark-util-types: 2.0.2
5399
+
5400
+
micromark-extension-gfm-table@2.1.1:
5401
+
dependencies:
5402
+
devlop: 1.1.0
5403
+
micromark-factory-space: 2.0.1
5404
+
micromark-util-character: 2.1.1
5405
+
micromark-util-symbol: 2.0.1
5406
+
micromark-util-types: 2.0.2
5407
+
5408
+
micromark-extension-gfm-tagfilter@2.0.0:
5409
+
dependencies:
5410
+
micromark-util-types: 2.0.2
5411
+
5412
+
micromark-extension-gfm-task-list-item@2.1.0:
5413
+
dependencies:
5414
+
devlop: 1.1.0
5415
+
micromark-factory-space: 2.0.1
5416
+
micromark-util-character: 2.1.1
5417
+
micromark-util-symbol: 2.0.1
5418
+
micromark-util-types: 2.0.2
5419
+
5420
+
micromark-extension-gfm@3.0.0:
5421
+
dependencies:
5422
+
micromark-extension-gfm-autolink-literal: 2.1.0
5423
+
micromark-extension-gfm-footnote: 2.1.0
5424
+
micromark-extension-gfm-strikethrough: 2.1.0
5425
+
micromark-extension-gfm-table: 2.1.1
5426
+
micromark-extension-gfm-tagfilter: 2.0.0
5427
+
micromark-extension-gfm-task-list-item: 2.1.0
5428
+
micromark-util-combine-extensions: 2.0.1
5429
+
micromark-util-types: 2.0.2
5430
+
5431
+
micromark-factory-destination@2.0.1:
5432
+
dependencies:
5433
+
micromark-util-character: 2.1.1
5434
+
micromark-util-symbol: 2.0.1
5435
+
micromark-util-types: 2.0.2
5436
+
5437
+
micromark-factory-label@2.0.1:
5438
+
dependencies:
5439
+
devlop: 1.1.0
5440
+
micromark-util-character: 2.1.1
5441
+
micromark-util-symbol: 2.0.1
5442
+
micromark-util-types: 2.0.2
5443
+
5444
+
micromark-factory-space@2.0.1:
5445
+
dependencies:
5446
+
micromark-util-character: 2.1.1
5447
+
micromark-util-types: 2.0.2
5448
+
5449
+
micromark-factory-title@2.0.1:
5450
+
dependencies:
5451
+
micromark-factory-space: 2.0.1
5452
+
micromark-util-character: 2.1.1
5453
+
micromark-util-symbol: 2.0.1
5454
+
micromark-util-types: 2.0.2
5455
+
5456
+
micromark-factory-whitespace@2.0.1:
5457
+
dependencies:
5458
+
micromark-factory-space: 2.0.1
5459
+
micromark-util-character: 2.1.1
5460
+
micromark-util-symbol: 2.0.1
5461
+
micromark-util-types: 2.0.2
5462
+
5463
+
micromark-util-character@2.1.1:
5464
+
dependencies:
5465
+
micromark-util-symbol: 2.0.1
5466
+
micromark-util-types: 2.0.2
5467
+
5468
+
micromark-util-chunked@2.0.1:
5469
+
dependencies:
5470
+
micromark-util-symbol: 2.0.1
5471
+
5472
+
micromark-util-classify-character@2.0.1:
5473
+
dependencies:
5474
+
micromark-util-character: 2.1.1
5475
+
micromark-util-symbol: 2.0.1
5476
+
micromark-util-types: 2.0.2
5477
+
5478
+
micromark-util-combine-extensions@2.0.1:
5479
+
dependencies:
5480
+
micromark-util-chunked: 2.0.1
5481
+
micromark-util-types: 2.0.2
5482
+
5483
+
micromark-util-decode-numeric-character-reference@2.0.2:
5484
+
dependencies:
5485
+
micromark-util-symbol: 2.0.1
5486
+
5487
+
micromark-util-decode-string@2.0.1:
5488
+
dependencies:
5489
+
decode-named-character-reference: 1.2.0
5490
+
micromark-util-character: 2.1.1
5491
+
micromark-util-decode-numeric-character-reference: 2.0.2
5492
+
micromark-util-symbol: 2.0.1
5493
+
5494
+
micromark-util-encode@2.0.1: {}
5495
+
5496
+
micromark-util-html-tag-name@2.0.1: {}
5497
+
5498
+
micromark-util-normalize-identifier@2.0.1:
5499
+
dependencies:
5500
+
micromark-util-symbol: 2.0.1
5501
+
5502
+
micromark-util-resolve-all@2.0.1:
5503
+
dependencies:
5504
+
micromark-util-types: 2.0.2
5505
+
5506
+
micromark-util-sanitize-uri@2.0.1:
5507
+
dependencies:
5508
+
micromark-util-character: 2.1.1
5509
+
micromark-util-encode: 2.0.1
5510
+
micromark-util-symbol: 2.0.1
5511
+
5512
+
micromark-util-subtokenize@2.1.0:
5513
+
dependencies:
5514
+
devlop: 1.1.0
5515
+
micromark-util-chunked: 2.0.1
5516
+
micromark-util-symbol: 2.0.1
5517
+
micromark-util-types: 2.0.2
5518
+
5519
+
micromark-util-symbol@2.0.1: {}
5520
+
5521
+
micromark-util-types@2.0.2: {}
5522
+
5523
+
micromark@4.0.2:
5524
+
dependencies:
5525
+
'@types/debug': 4.1.12
5526
+
debug: 4.4.1
5527
+
decode-named-character-reference: 1.2.0
5528
+
devlop: 1.1.0
5529
+
micromark-core-commonmark: 2.0.3
5530
+
micromark-factory-space: 2.0.1
5531
+
micromark-util-character: 2.1.1
5532
+
micromark-util-chunked: 2.0.1
5533
+
micromark-util-combine-extensions: 2.0.1
5534
+
micromark-util-decode-numeric-character-reference: 2.0.2
5535
+
micromark-util-encode: 2.0.1
5536
+
micromark-util-normalize-identifier: 2.0.1
5537
+
micromark-util-resolve-all: 2.0.1
5538
+
micromark-util-sanitize-uri: 2.0.1
5539
+
micromark-util-subtokenize: 2.1.0
5540
+
micromark-util-symbol: 2.0.1
5541
+
micromark-util-types: 2.0.2
5542
+
transitivePeerDependencies:
5543
+
- supports-color
5544
+
3148
5545
micromatch@4.0.8:
3149
5546
dependencies:
3150
5547
braces: 3.0.3
···
3161
5558
minimist@1.2.8: {}
3162
5559
3163
5560
ms@2.1.3: {}
5561
+
5562
+
nanoid@3.3.11: {}
5563
+
5564
+
nanoid@5.1.5: {}
3164
5565
3165
5566
natural-compare@1.4.0: {}
3166
5567
5568
+
no-case@3.0.4:
5569
+
dependencies:
5570
+
lower-case: 2.0.2
5571
+
tslib: 2.8.1
5572
+
3167
5573
node-domexception@1.0.0: {}
3168
5574
3169
5575
node-fetch@3.3.2:
···
3175
5581
object-inspect@1.13.4: {}
3176
5582
3177
5583
object-keys@1.1.1: {}
5584
+
5585
+
object-to-xml@2.0.0:
5586
+
dependencies:
5587
+
dank-each: 1.0.0
5588
+
dank-map: 0.1.0
5589
+
sanitizer: 0.1.3
3178
5590
3179
5591
object.assign@4.1.7:
3180
5592
dependencies:
···
3232
5644
dependencies:
3233
5645
p-limit: 3.1.0
3234
5646
5647
+
param-case@3.0.4:
5648
+
dependencies:
5649
+
dot-case: 3.0.4
5650
+
tslib: 2.8.1
5651
+
3235
5652
parent-module@1.0.1:
3236
5653
dependencies:
3237
5654
callsites: 3.1.0
3238
5655
3239
-
partysocket@1.1.4:
5656
+
parse5@7.3.0:
5657
+
dependencies:
5658
+
entities: 6.0.1
5659
+
5660
+
partysocket@1.1.5:
3240
5661
dependencies:
3241
5662
event-target-polyfill: 0.0.4
3242
5663
5664
+
pascal-case@3.1.2:
5665
+
dependencies:
5666
+
no-case: 3.0.4
5667
+
tslib: 2.8.1
5668
+
3243
5669
path-exists@4.0.0: {}
3244
5670
3245
5671
path-key@3.1.1: {}
3246
5672
3247
5673
path-parse@1.0.7: {}
3248
5674
5675
+
pathe@2.0.3: {}
5676
+
5677
+
pathval@2.0.1: {}
5678
+
3249
5679
picocolors@1.1.1: {}
3250
5680
3251
5681
picomatch@2.3.1: {}
3252
5682
5683
+
picomatch@4.0.3: {}
5684
+
3253
5685
possible-typed-array-names@1.1.0: {}
3254
5686
5687
+
postcss@8.5.6:
5688
+
dependencies:
5689
+
nanoid: 3.3.11
5690
+
picocolors: 1.1.1
5691
+
source-map-js: 1.2.1
5692
+
3255
5693
prelude-ls@1.2.1: {}
3256
5694
3257
5695
prettier-linter-helpers@1.0.0:
···
3260
5698
3261
5699
prettier@3.6.2: {}
3262
5700
5701
+
pretty-bytes@6.1.1: {}
5702
+
3263
5703
promise-limit@2.7.0: {}
3264
5704
5705
+
property-information@6.5.0: {}
5706
+
5707
+
property-information@7.1.0: {}
5708
+
3265
5709
punycode@2.3.1: {}
3266
5710
3267
5711
queue-microtask@1.2.3: {}
3268
5712
5713
+
radix-vue@1.9.17(vue@3.5.19(typescript@5.9.2)):
5714
+
dependencies:
5715
+
'@floating-ui/dom': 1.7.4
5716
+
'@floating-ui/vue': 1.1.9(vue@3.5.19(typescript@5.9.2))
5717
+
'@internationalized/date': 3.8.2
5718
+
'@internationalized/number': 3.6.4
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))
5722
+
aria-hidden: 1.2.6
5723
+
defu: 6.1.4
5724
+
fast-deep-equal: 3.1.3
5725
+
nanoid: 5.1.5
5726
+
vue: 3.5.19(typescript@5.9.2)
5727
+
transitivePeerDependencies:
5728
+
- '@vue/composition-api'
5729
+
3269
5730
readable-stream@3.6.2:
3270
5731
dependencies:
3271
5732
inherits: 2.0.4
···
3292
5753
gopd: 1.2.0
3293
5754
set-function-name: 2.0.2
3294
5755
5756
+
rehype-external-links@3.0.0:
5757
+
dependencies:
5758
+
'@types/hast': 3.0.4
5759
+
'@ungap/structured-clone': 1.3.0
5760
+
hast-util-is-element: 3.0.0
5761
+
is-absolute-url: 4.0.1
5762
+
space-separated-tokens: 2.0.2
5763
+
unist-util-visit: 5.0.0
5764
+
5765
+
rehype-format@5.0.1:
5766
+
dependencies:
5767
+
'@types/hast': 3.0.4
5768
+
hast-util-format: 1.1.0
5769
+
5770
+
rehype-minify-whitespace@6.0.2:
5771
+
dependencies:
5772
+
'@types/hast': 3.0.4
5773
+
hast-util-minify-whitespace: 1.0.1
5774
+
5775
+
rehype-parse@9.0.1:
5776
+
dependencies:
5777
+
'@types/hast': 3.0.4
5778
+
hast-util-from-html: 2.0.3
5779
+
unified: 11.0.5
5780
+
5781
+
rehype-raw@7.0.0:
5782
+
dependencies:
5783
+
'@types/hast': 3.0.4
5784
+
hast-util-raw: 9.1.0
5785
+
vfile: 6.0.3
5786
+
5787
+
rehype-remark@10.0.1:
5788
+
dependencies:
5789
+
'@types/hast': 3.0.4
5790
+
'@types/mdast': 4.0.4
5791
+
hast-util-to-mdast: 10.1.2
5792
+
unified: 11.0.5
5793
+
vfile: 6.0.3
5794
+
5795
+
rehype-sanitize@6.0.0:
5796
+
dependencies:
5797
+
'@types/hast': 3.0.4
5798
+
hast-util-sanitize: 5.0.2
5799
+
5800
+
rehype-stringify@10.0.1:
5801
+
dependencies:
5802
+
'@types/hast': 3.0.4
5803
+
hast-util-to-html: 9.0.5
5804
+
unified: 11.0.5
5805
+
5806
+
relateurl@0.2.7: {}
5807
+
5808
+
remark-gfm@4.0.1:
5809
+
dependencies:
5810
+
'@types/mdast': 4.0.4
5811
+
mdast-util-gfm: 3.1.0
5812
+
micromark-extension-gfm: 3.0.0
5813
+
remark-parse: 11.0.0
5814
+
remark-stringify: 11.0.0
5815
+
unified: 11.0.5
5816
+
transitivePeerDependencies:
5817
+
- supports-color
5818
+
5819
+
remark-parse@11.0.0:
5820
+
dependencies:
5821
+
'@types/mdast': 4.0.4
5822
+
mdast-util-from-markdown: 2.0.2
5823
+
micromark-util-types: 2.0.2
5824
+
unified: 11.0.5
5825
+
transitivePeerDependencies:
5826
+
- supports-color
5827
+
5828
+
remark-rehype@11.1.2:
5829
+
dependencies:
5830
+
'@types/hast': 3.0.4
5831
+
'@types/mdast': 4.0.4
5832
+
mdast-util-to-hast: 13.2.0
5833
+
unified: 11.0.5
5834
+
vfile: 6.0.3
5835
+
5836
+
remark-stringify@11.0.0:
5837
+
dependencies:
5838
+
'@types/mdast': 4.0.4
5839
+
mdast-util-to-markdown: 2.1.2
5840
+
unified: 11.0.5
5841
+
5842
+
require-from-string@2.0.2: {}
5843
+
3295
5844
resolve-from@4.0.0: {}
3296
5845
3297
5846
resolve-pkg-maps@1.0.0: {}
···
3304
5853
3305
5854
reusify@1.1.0: {}
3306
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
+
3307
5883
run-parallel@1.2.0:
3308
5884
dependencies:
3309
5885
queue-microtask: 1.2.3
···
3330
5906
is-regex: 1.2.1
3331
5907
3332
5908
safe-stable-stringify@2.5.0: {}
5909
+
5910
+
sanitizer@0.1.3: {}
3333
5911
3334
5912
semver@6.3.1: {}
3335
5913
···
3391
5969
side-channel-map: 1.0.1
3392
5970
side-channel-weakmap: 1.0.2
3393
5971
5972
+
siginfo@2.0.0: {}
5973
+
3394
5974
simple-swizzle@0.2.2:
3395
5975
dependencies:
3396
5976
is-arrayish: 0.3.2
5977
+
5978
+
source-map-js@1.2.1: {}
3397
5979
3398
5980
source-map-support@0.5.21:
3399
5981
dependencies:
···
3402
5984
3403
5985
source-map@0.6.1: {}
3404
5986
5987
+
space-separated-tokens@2.0.2: {}
5988
+
3405
5989
stack-trace@0.0.10: {}
5990
+
5991
+
stackback@0.0.2: {}
5992
+
5993
+
std-env@3.9.0: {}
3406
5994
3407
5995
stop-iteration-iterator@1.1.0:
3408
5996
dependencies:
···
3436
6024
dependencies:
3437
6025
safe-buffer: 5.2.1
3438
6026
6027
+
stringify-entities@4.0.4:
6028
+
dependencies:
6029
+
character-entities-html4: 2.1.0
6030
+
character-entities-legacy: 3.0.0
6031
+
6032
+
stringify-object@5.0.0:
6033
+
dependencies:
6034
+
get-own-enumerable-keys: 1.0.0
6035
+
is-obj: 3.0.0
6036
+
is-regexp: 3.1.0
6037
+
3439
6038
strip-bom@3.0.0: {}
3440
6039
3441
6040
strip-json-comments@3.1.1: {}
3442
6041
6042
+
strip-literal@3.0.0:
6043
+
dependencies:
6044
+
js-tokens: 9.0.1
6045
+
3443
6046
supports-color@7.2.0:
3444
6047
dependencies:
3445
6048
has-flag: 4.0.0
3446
6049
3447
6050
supports-preserve-symlinks-flag@1.0.0: {}
3448
6051
3449
-
synckit@0.11.8:
6052
+
synckit@0.11.11:
6053
+
dependencies:
6054
+
'@pkgr/core': 0.2.9
6055
+
6056
+
tailwind-merge@2.6.0: {}
6057
+
6058
+
terser@5.43.1:
3450
6059
dependencies:
3451
-
'@pkgr/core': 0.2.7
6060
+
'@jridgewell/source-map': 0.3.11
6061
+
acorn: 8.15.0
6062
+
commander: 2.20.3
6063
+
source-map-support: 0.5.21
3452
6064
3453
6065
text-hex@1.0.0: {}
3454
6066
6067
+
tiny-emitter@2.1.0: {}
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
+
3455
6084
to-regex-range@5.0.1:
3456
6085
dependencies:
3457
6086
is-number: 7.0.0
3458
6087
3459
6088
toml@3.0.0: {}
3460
6089
6090
+
trim-lines@3.0.1: {}
6091
+
6092
+
trim-trailing-lines@2.1.0: {}
6093
+
3461
6094
triple-beam@1.4.1: {}
3462
6095
3463
-
ts-api-utils@2.1.0(typescript@5.8.3):
6096
+
trough@2.2.0: {}
6097
+
6098
+
ts-api-utils@2.1.0(typescript@5.9.2):
3464
6099
dependencies:
3465
-
typescript: 5.8.3
6100
+
typescript: 5.9.2
6101
+
6102
+
ts-deepmerge@7.0.3: {}
3466
6103
3467
6104
tsconfig-paths@3.15.0:
3468
6105
dependencies:
···
3471
6108
minimist: 1.2.8
3472
6109
strip-bom: 3.0.0
3473
6110
3474
-
tsx@4.20.3:
6111
+
tslib@2.8.1: {}
6112
+
6113
+
tsx@4.20.4:
3475
6114
dependencies:
3476
-
esbuild: 0.25.5
6115
+
esbuild: 0.25.9
3477
6116
get-tsconfig: 4.10.1
3478
6117
optionalDependencies:
3479
6118
fsevents: 2.3.3
···
3481
6120
type-check@0.4.0:
3482
6121
dependencies:
3483
6122
prelude-ls: 1.2.1
6123
+
6124
+
type-fest@4.41.0: {}
3484
6125
3485
6126
typed-array-buffer@1.0.3:
3486
6127
dependencies:
···
3515
6156
possible-typed-array-names: 1.1.0
3516
6157
reflect.getprototypeof: 1.0.10
3517
6158
3518
-
typescript-eslint@8.35.1(eslint@9.30.1(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):
3519
6160
dependencies:
3520
-
'@typescript-eslint/eslint-plugin': 8.35.1(@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
3521
-
'@typescript-eslint/parser': 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
3522
-
'@typescript-eslint/utils': 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
3523
-
eslint: 9.30.1(jiti@2.4.2)
3524
-
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
3525
6167
transitivePeerDependencies:
3526
6168
- supports-color
3527
6169
3528
-
typescript@5.8.3: {}
6170
+
typescript@5.9.2: {}
3529
6171
3530
6172
unbox-primitive@1.1.0:
3531
6173
dependencies:
···
3534
6176
has-symbols: 1.1.0
3535
6177
which-boxed-primitive: 1.1.1
3536
6178
3537
-
undici-types@7.8.0: {}
6179
+
undici-types@6.21.0: {}
6180
+
6181
+
undici-types@7.10.0: {}
6182
+
6183
+
unified@11.0.5:
6184
+
dependencies:
6185
+
'@types/unist': 3.0.3
6186
+
bail: 2.0.2
6187
+
devlop: 1.1.0
6188
+
extend: 3.0.2
6189
+
is-plain-obj: 4.1.0
6190
+
trough: 2.2.0
6191
+
vfile: 6.0.3
6192
+
6193
+
unist-util-find-after@5.0.0:
6194
+
dependencies:
6195
+
'@types/unist': 3.0.3
6196
+
unist-util-is: 6.0.0
6197
+
6198
+
unist-util-is@6.0.0:
6199
+
dependencies:
6200
+
'@types/unist': 3.0.3
6201
+
6202
+
unist-util-position@5.0.0:
6203
+
dependencies:
6204
+
'@types/unist': 3.0.3
6205
+
6206
+
unist-util-stringify-position@4.0.0:
6207
+
dependencies:
6208
+
'@types/unist': 3.0.3
6209
+
6210
+
unist-util-visit-parents@6.0.1:
6211
+
dependencies:
6212
+
'@types/unist': 3.0.3
6213
+
unist-util-is: 6.0.0
6214
+
6215
+
unist-util-visit@5.0.0:
6216
+
dependencies:
6217
+
'@types/unist': 3.0.3
6218
+
unist-util-is: 6.0.0
6219
+
unist-util-visit-parents: 6.0.1
3538
6220
3539
6221
uri-js@4.4.1:
3540
6222
dependencies:
···
3542
6224
3543
6225
util-deprecate@1.0.2: {}
3544
6226
6227
+
uuid@9.0.1: {}
6228
+
6229
+
vfile-location@5.0.3:
6230
+
dependencies:
6231
+
'@types/unist': 3.0.3
6232
+
vfile: 6.0.3
6233
+
6234
+
vfile-message@4.0.3:
6235
+
dependencies:
6236
+
'@types/unist': 3.0.3
6237
+
unist-util-stringify-position: 4.0.0
6238
+
6239
+
vfile@6.0.3:
6240
+
dependencies:
6241
+
'@types/unist': 3.0.3
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: {}
6324
+
6325
+
vue-demi@0.14.10(vue@3.5.19(typescript@5.9.2)):
6326
+
dependencies:
6327
+
vue: 3.5.19(typescript@5.9.2)
6328
+
6329
+
vue-sonner@1.3.2: {}
6330
+
6331
+
vue@3.5.19(typescript@5.9.2):
6332
+
dependencies:
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
6338
+
optionalDependencies:
6339
+
typescript: 5.9.2
6340
+
6341
+
web-namespaces@2.0.1: {}
6342
+
3545
6343
web-streams-polyfill@3.3.3: {}
3546
6344
3547
6345
which-boxed-primitive@1.1.1:
···
3589
6387
dependencies:
3590
6388
isexe: 2.0.0
3591
6389
6390
+
why-is-node-running@2.3.0:
6391
+
dependencies:
6392
+
siginfo: 2.0.0
6393
+
stackback: 0.0.2
6394
+
3592
6395
winston-transport@4.9.0:
3593
6396
dependencies:
3594
6397
logform: 2.7.0
···
3615
6418
3616
6419
xxhash-wasm@1.1.0: {}
3617
6420
6421
+
yaml@2.8.0: {}
6422
+
3618
6423
yocto-queue@0.1.0: {}
6424
+
6425
+
zod@3.24.1: {}
6426
+
6427
+
zwitch@2.0.4: {}
+51
backend/src/api/did.ts
+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
+
}
+123
backend/src/api/feed.ts
+123
backend/src/api/feed.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
+
SocialClipprActorDefs,
9
+
SocialClipprFeedClip,
10
+
SocialClipprFeedDefs,
11
+
} from "@clipprjs/lexicons";
12
+
import type { ClipViewQuery, ErrorResponse, TagRef } from "./types.js";
13
+
import { getHandleFromDid } from "../network/converters.js";
14
+
import { Database } from "../db/database.js";
15
+
import { clipsTable } from "../db/schema.js";
16
+
import { and, eq } from "drizzle-orm";
17
+
import { createProfileView } from "./profile.js";
18
+
import { is } from "@atcute/lexicons";
19
+
import { validateHash } from "../hasher.js";
20
+
21
+
const db = Database.getInstance().getDb();
22
+
23
+
export async function createClipView(
24
+
query: ClipViewQuery,
25
+
): Promise<SocialClipprFeedDefs.ClipView | ErrorResponse> {
26
+
if (!query.did.startsWith("did:")) {
27
+
let did;
28
+
try {
29
+
did = await getHandleFromDid(query.did);
30
+
} catch (e: unknown) {
31
+
if (e instanceof Error) {
32
+
return {
33
+
error: "InvalidRequest",
34
+
message: `Error: A queried URI does not have a valid DID or handle: ${e.message}`,
35
+
};
36
+
} else {
37
+
return {
38
+
error: "InvalidRequest",
39
+
message:
40
+
"Error: A queried URI does not have a valid DID or handle: unknown error",
41
+
};
42
+
}
43
+
}
44
+
query.did = did;
45
+
}
46
+
47
+
if (query.collection !== "social.clippr.feed.clip") {
48
+
return {
49
+
error: "InvalidRequest",
50
+
message: "Error: A queried URI is not a proper clip",
51
+
};
52
+
}
53
+
54
+
const dbQuery = await db
55
+
.selectDistinct()
56
+
.from(clipsTable)
57
+
.where(
58
+
and(
59
+
eq(clipsTable.did, query.did),
60
+
eq(clipsTable.recordKey, query.recordKey),
61
+
),
62
+
);
63
+
64
+
if (dbQuery.length === 0) {
65
+
return {
66
+
error: "InvalidRequest",
67
+
message: "Could not find a given URI",
68
+
};
69
+
}
70
+
71
+
// Yes, the array thing is not ideal.
72
+
if (!dbQuery[0]?.cid) {
73
+
return {
74
+
error: "InvalidRequest",
75
+
message: "Could not find a given URI",
76
+
};
77
+
}
78
+
79
+
if (!(await validateHash(dbQuery[0]?.url, query.recordKey))) {
80
+
return {
81
+
error: "InvalidRequest",
82
+
message: "Could not find a given URI",
83
+
};
84
+
}
85
+
86
+
const authorView: ErrorResponse | SocialClipprActorDefs.ProfileView =
87
+
await createProfileView(query.did);
88
+
89
+
if (!is(SocialClipprActorDefs.profileViewSchema, authorView)) {
90
+
console.log(authorView);
91
+
return {
92
+
error: "InvalidRequest",
93
+
message: "Could not validate profile view", // I can't get the error message, it seems to always assume the type is the ProfileView
94
+
} as ErrorResponse;
95
+
}
96
+
97
+
let clipTags: TagRef[] | undefined;
98
+
99
+
if (dbQuery[0]?.tags === null) {
100
+
clipTags = undefined;
101
+
}
102
+
103
+
const clipRecord: SocialClipprFeedClip.Main = {
104
+
$type: "social.clippr.feed.clip",
105
+
url: dbQuery[0]?.url as `${string}:${string}`,
106
+
title: dbQuery[0]?.title,
107
+
description: dbQuery[0]?.description,
108
+
tags: clipTags || undefined,
109
+
unlisted: dbQuery[0]?.unlisted,
110
+
unread: dbQuery[0]?.unread || undefined,
111
+
notes: dbQuery[0]?.notes || undefined,
112
+
languages: dbQuery[0]?.languages || undefined,
113
+
createdAt: dbQuery[0]?.createdAt.toISOString(),
114
+
};
115
+
116
+
return {
117
+
cid: dbQuery[0]?.cid,
118
+
uri: `at://${query.did}/${query.collection}/${query.recordKey}`,
119
+
author: authorView,
120
+
record: clipRecord,
121
+
indexedAt: dbQuery[0]?.indexedAt.toISOString(),
122
+
};
123
+
}
+101
backend/src/api/profile.ts
+101
backend/src/api/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 { SocialClipprActorDefs } from "@clipprjs/lexicons";
8
+
import type { ErrorResponse } from "./types.js";
9
+
import { getDidFromHandle, getHandleFromDid } from "../network/converters.js";
10
+
import { Database } from "../db/database.js";
11
+
import { usersTable } from "../db/schema.js";
12
+
import { eq } from "drizzle-orm";
13
+
14
+
const db = Database.getInstance().getDb();
15
+
16
+
// TODO: Stop leeching off the Bluesky CDN and get the blob directly from the user's PDS
17
+
//
18
+
// Get a CDN URI from a blob's CID
19
+
export async function createAvatarLink(
20
+
did: string,
21
+
cid: string,
22
+
): Promise<string> {
23
+
return `https://cdn.bsky.app/img/avatar/plain/${did}/${cid}`;
24
+
}
25
+
26
+
export async function createProfileView(
27
+
actor: string,
28
+
): Promise<SocialClipprActorDefs.ProfileView | ErrorResponse> {
29
+
let viewHandle;
30
+
let viewDid;
31
+
32
+
if (actor.startsWith("did:")) {
33
+
viewDid = actor;
34
+
try {
35
+
viewHandle = await getHandleFromDid(viewDid);
36
+
viewHandle = viewHandle.replace("at://", "");
37
+
} catch (e: unknown) {
38
+
if (e instanceof Error) {
39
+
return {
40
+
error: "InvalidRequest",
41
+
message: `Error: A queried URI does not have a valid DID or handle: ${e.message}`,
42
+
};
43
+
} else {
44
+
return {
45
+
error: "InvalidRequest",
46
+
message:
47
+
"Error: A queried URI does not have a valid DID or handle: unknown error",
48
+
};
49
+
}
50
+
}
51
+
} else {
52
+
viewHandle = actor;
53
+
viewHandle = viewHandle.replace("at://", "");
54
+
try {
55
+
viewDid = await getDidFromHandle(viewHandle);
56
+
} catch (e: unknown) {
57
+
if (e instanceof Error) {
58
+
return {
59
+
error: "InvalidRequest",
60
+
message: `Error: A queried URI does not have a valid DID or handle: ${e.message}`,
61
+
};
62
+
} else {
63
+
return {
64
+
error: "InvalidRequest",
65
+
message:
66
+
"Error: A queried URI does not have a valid DID or handle: unknown error",
67
+
};
68
+
}
69
+
}
70
+
}
71
+
72
+
const dbQuery = await db
73
+
.selectDistinct()
74
+
.from(usersTable)
75
+
.where(eq(usersTable.did, viewDid));
76
+
77
+
if (dbQuery.length === 0) {
78
+
return {
79
+
error: "InvalidRequest",
80
+
message: "Could not find a queried URI's profile",
81
+
} as ErrorResponse;
82
+
}
83
+
84
+
const avatarCid = dbQuery[0]?.avatar;
85
+
86
+
let viewAvatar;
87
+
88
+
if (avatarCid === undefined || avatarCid === null) {
89
+
viewAvatar = "https://missing.avatar";
90
+
} else viewAvatar = await createAvatarLink(viewDid, avatarCid);
91
+
92
+
return {
93
+
$type: "social.clippr.actor.defs#profileView",
94
+
did: viewDid as `did:${string}:${string}`,
95
+
handle: viewHandle as `${string}.${string}`,
96
+
avatar: (viewAvatar as `${string}:${string}`) || undefined,
97
+
createdAt: dbQuery[0]?.createdAt.toISOString(),
98
+
description: dbQuery[0]?.description || undefined,
99
+
displayName: dbQuery[0]?.displayName || viewHandle,
100
+
};
101
+
}
+36
backend/src/api/stats.ts
+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
+
}
+44
backend/src/api/types.ts
+44
backend/src/api/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
+
import type { ResourceUri } from "@atcute/lexicons";
8
+
9
+
export interface ErrorResponse {
10
+
error: string;
11
+
message: string;
12
+
}
13
+
14
+
export interface ProfileViewQuery {
15
+
actor: string;
16
+
}
17
+
18
+
export interface ClipViewQuery {
19
+
did: string;
20
+
collection: string;
21
+
recordKey: string;
22
+
}
23
+
24
+
export const isClipViewQuery = (query: unknown): query is ClipViewQuery => {
25
+
return typeof query === "object" && query !== null && "did" in query;
26
+
};
27
+
28
+
export interface TagRef {
29
+
$type: "com.atproto.repo.strongRef";
30
+
cid: string;
31
+
uri: ResourceUri;
32
+
}
33
+
34
+
export interface TagViewQuery {
35
+
did: string;
36
+
collection: string;
37
+
recordKey: string;
38
+
}
39
+
40
+
export interface AppviewStatsQuery {
41
+
knownUsers: number;
42
+
knownClips: number;
43
+
knownTags: number;
44
+
}
+37
-14
backend/src/config.ts
+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
+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 {
+26
-5
backend/src/db/schema.ts
+26
-5
backend/src/db/schema.ts
···
4
4
* SPDX-License-Identifier: AGPL-3.0-only
5
5
*/
6
6
7
-
// noinspection Annotator
8
-
9
7
import { int, sqliteTable, text } from "drizzle-orm/sqlite-core";
10
8
import { sql } from "drizzle-orm";
9
+
import type { TagRef } from "../api/types.js";
11
10
12
11
// WebStorm keeps throwing errors with the default statements as it wants
13
12
// an actual SQLite query, despite being valid. Sucks.
···
18
17
.default(sql`(unixepoch() * 1000)`),
19
18
did: text("did").notNull(),
20
19
recordKey: text("rkey").notNull(),
20
+
cid: text("cid").notNull(),
21
21
url: text("url").notNull(),
22
22
title: text("title").notNull(),
23
23
description: text("description").notNull(),
24
24
unlisted: int("unlisted", { mode: "boolean" }).notNull(),
25
25
notes: text("notes"),
26
26
tags: text("tags", { mode: "json" })
27
-
.$type<string[]>()
27
+
.$type<TagRef[]>()
28
28
.default(sql`'[]'`),
29
29
unread: int("unread", { mode: "boolean" }),
30
30
languages: text("languages", { mode: "json" })
···
33
33
createdAt: int("createdAt", { mode: "timestamp_ms" })
34
34
.notNull()
35
35
.default(sql`(unixepoch() * 1000)`),
36
+
indexedAt: int("indexedAt", { mode: "timestamp_ms" })
37
+
.notNull()
38
+
.default(sql`(unixepoch() * 1000)`),
36
39
});
37
40
38
41
export const tagsTable = sqliteTable("tags", {
···
42
45
.default(sql`(unixepoch() * 1000)`),
43
46
did: text("did").notNull(),
44
47
recordKey: text("rkey").notNull(),
48
+
cid: text("cid").notNull(),
45
49
name: text("name").notNull(),
50
+
description: text("description"),
46
51
color: text("color"),
47
52
createdAt: int("createdAt", { mode: "timestamp_ms" })
48
53
.notNull()
49
54
.default(sql`(unixepoch() * 1000)`),
55
+
indexedAt: int("indexedAt", { mode: "timestamp_ms" })
56
+
.notNull()
57
+
.default(sql`(unixepoch() * 1000)`),
50
58
});
51
59
52
60
export const usersTable = sqliteTable("profiles", {
···
54
62
timestamp: int("time_us", { mode: "timestamp_ms" })
55
63
.notNull()
56
64
.default(sql`(unixepoch() * 1000)`),
57
-
did: text("did").notNull(),
58
-
displayName: text("displayName"),
65
+
did: text("did").notNull().unique(),
66
+
cid: text("cid").notNull(),
67
+
displayName: text("displayName").notNull(),
59
68
description: text("description"),
60
69
avatar: text("avatar"),
61
70
createdAt: int("createdAt", { mode: "timestamp_ms" })
62
71
.notNull()
63
72
.default(sql`(unixepoch() * 1000)`),
64
73
});
74
+
75
+
export const preferencesTable = sqliteTable("preferences", {
76
+
id: int("id").primaryKey({ autoIncrement: true }),
77
+
did: text("did").notNull().unique(),
78
+
handle: text("handle").notNull(),
79
+
publishingScopesPref: text("publishingScopesPref", { mode: "json" })
80
+
.$type<string[]>()
81
+
.default(sql`'[]'`),
82
+
lastModified: int("lastModified", { mode: "timestamp_ms" })
83
+
.notNull()
84
+
.default(sql`(unixepoch() * 1000)`),
85
+
});
+21
backend/src/hasher.ts
+21
backend/src/hasher.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 xxhash from "xxhash-wasm";
8
+
9
+
/// Hash a given string into a hexadecimal xxh64 string.
10
+
export async function hashString(data: string): Promise<string> {
11
+
const { h64 } = await xxhash();
12
+
return h64(data).toString(16);
13
+
}
14
+
15
+
/// Check if a string is equivalent to a given hash.
16
+
export async function validateHash(
17
+
data: string,
18
+
hash: string,
19
+
): Promise<boolean> {
20
+
return hash === (await hashString(data));
21
+
}
+4
-3
backend/src/logger.ts
+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(
+13
-8
backend/src/main.ts
+13
-8
backend/src/main.ts
···
6
6
7
7
import { serve, type ServerType } from "@hono/node-server";
8
8
import { Config } from "./config.js";
9
-
import { readFromFirehose, startFirehose, stopFirehose } from "./network/jetstream.js";
9
+
import {
10
+
readFromFirehose,
11
+
startFirehose,
12
+
stopFirehose,
13
+
} from "./network/jetstream.js";
10
14
import app from "./server.js";
11
15
import { Database } from "./db/database.js";
12
16
import Logger from "./logger.js";
13
17
14
18
async function main() {
15
19
const logger = Logger;
16
-
logger.info("Clippr-BE starting...");
20
+
logger.info(`Clippr-BE v${process.env.npm_package_version} starting...`);
17
21
18
-
logger.verbose("Reading configuration...");
19
-
const config = Config.getInstance();
22
+
// Config is already loaded into the app (when preparing logger)
23
+
const config = Config.getInstance().getConfig();
20
24
21
25
logger.verbose("Initializing database...");
22
26
Database.getInstance();
···
25
29
startFirehose();
26
30
readFromFirehose();
27
31
32
+
logger.verbose("Starting XRPC server...");
28
33
const server: ServerType = serve({
29
-
port: config.get("port"),
30
-
hostname: config.get("hostname"),
34
+
port: config.port,
35
+
hostname: config.hostname,
31
36
fetch: app.fetch,
32
37
});
33
38
34
39
logger.info(
35
-
`XRPC server launched at http://${config.get("hostname")}:${config.get("port")}`,
40
+
`XRPC server launched at http://${config.hostname}:${config.port}`,
36
41
);
37
42
38
43
process.removeAllListeners("SIGINT");
···
43
48
44
49
function gracefulShutdown(signal: string) {
45
50
logger.info(`Received ${signal}, shutting down...`);
46
-
stopFirehose();
47
51
server.close();
52
+
stopFirehose();
48
53
logger.info("Bye!");
49
54
process.exit(0);
50
55
}
+142
-44
backend/src/network/commit.ts
+142
-44
backend/src/network/commit.ts
···
8
8
import { Database } from "../db/database.js";
9
9
import { clipsTable, tagsTable, usersTable } from "../db/schema.js";
10
10
import { is } from "@atcute/lexicons";
11
-
import { SocialClipprActorProfile, SocialClipprFeedClip, SocialClipprFeedTag } from "@clipprjs/lexicons";
12
-
import type { At } from "@atcute/client/lexicons";
11
+
import {
12
+
SocialClipprActorProfile,
13
+
SocialClipprFeedClip,
14
+
SocialClipprFeedTag,
15
+
} from "@clipprjs/lexicons";
13
16
import Logger from "../logger.js";
14
17
import { isBlob } from "@atcute/lexicons/interfaces";
15
18
import { validateClip, validateProfile, validateTag } from "./validator.js";
16
-
import xxhash from "xxhash-wasm";
19
+
import { convertDidToString } from "./converters.js";
20
+
import { hashString } from "../hasher.js";
21
+
import { and, eq } from "drizzle-orm";
22
+
import type { TagRef } from "../api/types.js";
17
23
18
24
const db = Database.getInstance().getDb();
19
25
20
-
/// Converts an ``At.DID`` type to a proper string, for type reasons.
21
-
function convertDidToString(did: At.DID): string {
22
-
return did.toString();
23
-
}
24
-
25
26
/// Converts a microsecond Unix date to a Date object, for type reasons.
26
27
function convertMicroToDate(micro: number): Date {
27
28
return new Date(micro / 1000);
···
30
31
export async function handleClip(
31
32
event: CommitEvent<`social.clippr.${string}`>,
32
33
): Promise<void> {
33
-
if (event.commit.operation !== "create") {
34
-
Logger.warn(
35
-
`Operation '${event.commit.operation}' for ${event.commit.collection} not supported. Ignoring.`,
36
-
);
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);
37
44
return;
38
-
} // We currently do not handle these.
45
+
}
39
46
40
47
if (event.commit.record.$type !== "social.clippr.feed.clip") {
41
48
Logger.verbose(
42
-
"Invalid type for incoming clip record",
49
+
`Mismatched type for incoming clip record (${event.did}/${event.commit.rkey})`,
43
50
event.commit.record,
44
51
);
45
52
}
46
53
47
54
if (!is(SocialClipprFeedClip.mainSchema, event.commit.record)) {
48
55
Logger.verbose(
49
-
"Invalid schema for incoming clip record",
56
+
`Invalid schema for incoming clip record (${event.did}/${event.commit.rkey})`,
50
57
event.commit.record,
51
58
);
52
59
return;
···
66
73
};
67
74
68
75
// xxh64, NOT xxh3 learned that the hard way
69
-
const { h64 } = await xxhash();
70
-
const urlHash = h64(record.url).toString(16);
76
+
const urlHash: string = await hashString(record.url);
71
77
72
78
if (urlHash !== event.commit.rkey) {
73
79
Logger.verbose(
74
-
`Record key hash (${event.commit.rkey}) does not match hash of URL (${urlHash}) in incoming clip record`,
80
+
`Record key hash (${event.commit.rkey}) does not match hash of URL (${urlHash}) in incoming clip record (${event.did})`,
75
81
event.commit.record,
76
82
);
77
83
return;
78
84
}
79
85
80
-
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);
81
114
return;
82
115
}
83
116
84
117
await db.insert(clipsTable).values({
85
118
// @ts-expect-error Weird type error despite being a normal string.
86
119
did: convertDidToString(event.did),
120
+
cid: event.commit.cid,
87
121
timestamp: convertMicroToDate(event.time_us),
88
122
recordKey: event.commit.rkey,
89
123
createdAt: new Date(record.createdAt),
124
+
indexedAt: new Date(),
90
125
url: record.url,
91
126
title: record.title,
92
127
description: record.description,
···
97
132
languages: record.languages,
98
133
});
99
134
100
-
Logger.verbose("Indexed new clip:", event.did, event.commit.rkey);
135
+
Logger.verbose(`Indexed new clip: ${event.did}/${event.commit.rkey}`, event);
101
136
}
102
137
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
-
Logger.verbose("Invalid type for incoming tag record", event.commit.record);
155
+
Logger.verbose(
156
+
`Mismatched type for incoming tag record (${event.did}/${event.commit.rkey})`,
157
+
event.commit.record,
158
+
);
115
159
return;
116
160
}
117
161
118
162
if (!is(SocialClipprFeedTag.mainSchema, event.commit.record)) {
119
163
Logger.verbose(
120
-
"Invalid schema for incoming tag record",
164
+
`Invalid schema for incoming tag record (${event.did}/${event.commit.rkey})`,
121
165
event.commit.record,
122
166
);
123
167
return;
···
128
172
createdAt: event.commit.record.createdAt,
129
173
name: event.commit.record.name,
130
174
color: event.commit.record.color,
175
+
description: event.commit.record.description,
131
176
};
132
177
133
178
if (record.name !== event.commit.rkey) {
134
179
Logger.verbose(
135
-
"Record key does not match name of incoming tag record",
180
+
`Record key does not match name of incoming tag record (${event.did}/${event.commit.rkey})`,
136
181
event.commit.record,
137
182
);
138
183
return;
···
143
188
return;
144
189
}
145
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
+
146
215
await db.insert(tagsTable).values({
147
-
did: convertDidToString(event.did),
148
216
timestamp: convertMicroToDate(event.time_us),
217
+
did: convertDidToString(event.did),
218
+
cid: event.commit.cid,
149
219
recordKey: event.commit.rkey,
150
-
createdAt: new Date(record.createdAt),
151
220
name: record.name,
221
+
description: record.description,
152
222
color: record.color,
223
+
createdAt: new Date(record.createdAt),
224
+
indexedAt: new Date(),
153
225
});
154
226
155
-
Logger.verbose("Indexed new tag:", event.did, event.commit.rkey);
227
+
Logger.verbose(`Indexed new tag: ${event.did}/${event.commit.rkey}`, event);
156
228
}
157
229
158
230
export async function handleProfile(
159
231
event: CommitEvent<`social.clippr.${string}`>,
160
232
): Promise<void> {
161
-
if (event.commit.operation !== "create") {
162
-
Logger.warn(
163
-
`Operation '${event.commit.operation}' for ${event.commit.collection} not supported. Ignoring.`,
164
-
);
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);
165
236
return;
166
-
} // We currently do not handle these.
237
+
}
167
238
168
239
if (event.commit.record.$type !== "social.clippr.actor.profile") {
169
240
Logger.verbose(
170
-
"Invalid type for incoming profile record",
241
+
`Mismatched type for incoming profile record (${event.did})`,
171
242
event.commit.record,
172
243
);
173
244
return;
···
175
246
176
247
if (!is(SocialClipprActorProfile.mainSchema, event.commit.record)) {
177
248
Logger.verbose(
178
-
"Invalid schema for incoming profile record",
249
+
`Invalid schema for incoming profile record (${event.did})`,
179
250
event.commit.record,
180
251
);
181
252
return;
···
191
262
192
263
if (event.commit.rkey !== "self") {
193
264
Logger.verbose(
194
-
"Record key of incoming profile record does not match 'self'",
265
+
`Record key of incoming profile record does not match 'self' (${event.did})`,
195
266
event.commit.record,
196
267
);
197
268
return;
···
200
271
// This needs to be here so the avatar can be recognized as a proper blob.
201
272
if (record.avatar) {
202
273
if (!isBlob(record.avatar)) {
203
-
Logger.verbose("Avatar in incoming profile record is not a blob", record);
274
+
Logger.verbose(
275
+
`Avatar in incoming profile record is not a blob (${event.did})`,
276
+
record,
277
+
);
204
278
return;
205
279
}
206
280
207
281
if (record.avatar.mimeType.match(/^image\/(png|jpeg)$/i) === null) {
208
282
Logger.verbose(
209
-
"Avatar in incoming profile record is not a PNG or JPEG",
283
+
`Avatar in incoming profile record is not a PNG or JPEG (${event.did})`,
210
284
record,
211
285
);
212
286
return;
···
214
288
215
289
if (record.avatar.ref?.$link === undefined) {
216
290
Logger.verbose(
217
-
"Avatar in incoming profile record has no link to blob",
291
+
`Avatar in incoming profile record has no link to blob (${event.did})`,
218
292
record,
219
293
);
220
294
return;
221
295
}
222
296
223
297
if (record.avatar.size > 1000000) {
224
-
Logger.verbose("Avatar in incoming profile record is too large", record);
298
+
Logger.verbose(
299
+
`Avatar in incoming profile record is too large (${event.did})`,
300
+
record,
301
+
);
225
302
return;
226
303
}
227
304
}
···
231
308
return;
232
309
}
233
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);
325
+
return;
326
+
}
327
+
234
328
await db.insert(usersTable).values({
235
329
did: convertDidToString(event.did),
330
+
cid: event.commit.cid,
236
331
timestamp: convertMicroToDate(event.time_us),
237
332
createdAt: new Date(record.createdAt),
238
333
displayName: record.displayName,
···
240
335
description: record.description,
241
336
});
242
337
243
-
Logger.verbose("Indexed new profile for:", convertDidToString(event.did));
338
+
Logger.verbose(
339
+
`Indexed new profile: ${convertDidToString(event.did)}`,
340
+
event,
341
+
);
244
342
}
+85
backend/src/network/converters.ts
+85
backend/src/network/converters.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 { Client, simpleFetchHandler } from "@atcute/client";
8
+
import { getDidDocument } from "../api/did.js";
9
+
10
+
/// Converts an ``At.DID`` type to a proper string, for type reasons.
11
+
export function convertDidToString(did: `did:${string}`): string {
12
+
return did.toString();
13
+
}
14
+
15
+
export function convertStringToTypedDid(did: string) {
16
+
if (did.startsWith("did:plc:")) {
17
+
return did as `did:plc:${string}`;
18
+
} else if (did.startsWith("did:web:")) {
19
+
return did as `did:web:${string}`;
20
+
} else {
21
+
return did as `did:plc:${string}`;
22
+
}
23
+
}
24
+
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!
28
+
export async function getHandleFromDid(did: string): Promise<string> {
29
+
const doc = await getDidDocument(convertStringToTypedDid(did));
30
+
31
+
if (!doc?.alsoKnownAs) {
32
+
throw new Error("No handles found");
33
+
}
34
+
35
+
if (doc?.alsoKnownAs[0] === undefined) {
36
+
throw new Error("No handles found");
37
+
}
38
+
39
+
return doc?.alsoKnownAs[0].substring(
40
+
doc?.alsoKnownAs[0].lastIndexOf("/" + 1),
41
+
);
42
+
}
43
+
44
+
// Get a user's DID from their handle.
45
+
export async function getDidFromHandle(handle: string): Promise<string> {
46
+
const handler = simpleFetchHandler({
47
+
service: "https://public.api.bsky.app",
48
+
});
49
+
const rpc = new Client({ handler });
50
+
51
+
const { ok, data } = await rpc.get("com.atproto.identity.resolveHandle", {
52
+
params: {
53
+
handle: handle as `${string}.${string}`,
54
+
},
55
+
});
56
+
57
+
if (!ok) {
58
+
switch (data.error) {
59
+
case "InvalidRequest": {
60
+
throw new Error("InvalidRequest", { cause: data.message });
61
+
}
62
+
case "AccountTakedown": {
63
+
throw new Error("AccountTakedown", { cause: data.message });
64
+
}
65
+
case "AccountDeactivated": {
66
+
throw new Error("AccountDeactivated", { cause: data.message });
67
+
}
68
+
default: {
69
+
throw new Error(data.error, { cause: data.message });
70
+
}
71
+
}
72
+
}
73
+
74
+
let actorDid;
75
+
76
+
if (ok) {
77
+
actorDid = data.did as string;
78
+
}
79
+
80
+
if (actorDid === undefined) {
81
+
throw new Error("InvalidRequest");
82
+
}
83
+
84
+
return actorDid;
85
+
}
+2
-2
backend/src/network/jetstream.ts
+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`,
+64
-7
backend/src/network/validator.ts
+64
-7
backend/src/network/validator.ts
···
4
4
* SPDX-License-Identifier: AGPL-3.0-only
5
5
*/
6
6
7
-
import {SocialClipprActorProfile, SocialClipprFeedClip, SocialClipprFeedTag,} from "@clipprjs/lexicons";
8
-
import {isDatetime, isLanguageCode} from "@atcute/lexicons/syntax";
7
+
import {
8
+
SocialClipprActorProfile,
9
+
SocialClipprFeedClip,
10
+
SocialClipprFeedTag,
11
+
} from "@clipprjs/lexicons";
12
+
import {
13
+
isDatetime,
14
+
isGenericUri,
15
+
isLanguageCode,
16
+
} from "@atcute/lexicons/syntax";
9
17
import Logger from "../logger.js";
18
+
import { ComAtprotoRepoStrongRef } from "@atcute/atproto";
19
+
import { is } from "@atcute/lexicons";
10
20
11
21
export async function validateProfile(
12
22
record: SocialClipprActorProfile.Main,
···
27
37
);
28
38
return false;
29
39
}
40
+
41
+
if (record.displayName.length < 1) {
42
+
Logger.verbose(
43
+
"Too short displayName from incoming profile record",
44
+
record,
45
+
);
46
+
return false;
47
+
}
30
48
} else {
31
49
Logger.verbose("No displayName from incoming profile record", record);
32
50
return false;
···
40
58
);
41
59
return false;
42
60
}
61
+
62
+
if (record.description.length < 1) {
63
+
Logger.verbose(
64
+
"Too short description from incoming profile record",
65
+
record,
66
+
);
67
+
return false;
68
+
}
43
69
}
44
70
45
71
return true;
···
57
83
}
58
84
59
85
if (record.name.length > 64) {
60
-
Logger.verbose("Invalid name length for incoming tag record", record);
86
+
Logger.verbose("Name from incoming tag record is too long", record);
61
87
return false;
62
88
}
63
89
64
90
if (record.color) {
65
91
if (record.color.length > 7) {
66
-
Logger.verbose("Invalid color length for incoming tag record", record);
92
+
Logger.verbose("Color from incoming tag record is too long", record);
67
93
return false;
68
94
}
69
95
···
76
102
}
77
103
}
78
104
105
+
if (record.description) {
106
+
if (record.description.length > 500) {
107
+
Logger.verbose(
108
+
"Description from incoming tag record is too long",
109
+
record,
110
+
);
111
+
return false;
112
+
}
113
+
}
114
+
79
115
return true;
80
116
}
81
117
82
118
export async function validateClip(
83
119
record: SocialClipprFeedClip.Main,
84
120
): Promise<boolean> {
121
+
if (!isGenericUri(record.url)) {
122
+
Logger.verbose("Invalid url from incoming clip record", record);
123
+
return false;
124
+
}
125
+
85
126
if (record.url.length > 2000) {
86
127
Logger.verbose("Too long url from incoming clip record", record);
87
128
return false;
···
105
146
}
106
147
107
148
if (record.tags) {
108
-
if (record.tags.some((tag) => tag.$type !== "com.atproto.repo.strongRef")) {
149
+
if (
150
+
record.tags.some((tag) => {
151
+
return tag.$type !== "com.atproto.repo.strongRef";
152
+
})
153
+
) {
154
+
Logger.verbose(
155
+
"A tag from incoming clip record is not typed as strongRef",
156
+
record,
157
+
);
158
+
return false;
159
+
}
160
+
161
+
if (
162
+
record.tags.some((tag) => {
163
+
return !is(ComAtprotoRepoStrongRef.mainSchema, tag);
164
+
})
165
+
) {
109
166
Logger.verbose(
110
-
"A tag ref from incoming clip record is not a strongRef",
167
+
"A tag from incoming clip record is not a valid strongRef",
111
168
record,
112
169
);
113
170
return false;
114
171
}
115
172
116
-
// There should be more tests here, but I'm not exactly sure what to add...
173
+
// There should definitely be more tests here, but I'm not exactly sure what to add...
117
174
}
118
175
119
176
if (typeof record.unlisted !== "boolean") {
+44
backend/src/routes/openapi.ts
+44
backend/src/routes/openapi.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 { Scalar } from "@scalar/hono-api-reference";
9
+
import { createMarkdownFromOpenApi } from "@scalar/openapi-to-markdown";
10
+
import { serveStatic } from "@hono/node-server/serve-static";
11
+
import { readFileSync } from "fs";
12
+
13
+
const app = new Hono();
14
+
15
+
app.get(
16
+
"/api.json",
17
+
serveStatic({
18
+
path: "./static/api.json",
19
+
}),
20
+
);
21
+
22
+
app.on(
23
+
"GET",
24
+
["/scalar", "/docs"],
25
+
Scalar({
26
+
url: "/api.json",
27
+
theme: "bluePlanet",
28
+
pageTitle: "Clippr AppView API documentation",
29
+
layout: "modern",
30
+
hideClientButton: true,
31
+
forceDarkModeState: "dark",
32
+
}),
33
+
);
34
+
35
+
/**
36
+
* Create a Markdown document for LLMs to read
37
+
* @see https://llmstxt.org/
38
+
*/
39
+
const markdown = await createMarkdownFromOpenApi(
40
+
readFileSync("./static/api.json", "utf-8"),
41
+
);
42
+
app.get("/llms.txt", (c) => c.text(markdown));
43
+
44
+
export default app;
+186
backend/src/routes/well-known.ts
+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;
+237
backend/src/routes/xrpc.ts
+237
backend/src/routes/xrpc.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 { Database } from "../db/database.js";
9
+
import { usersTable } from "../db/schema.js";
10
+
import { eq } from "drizzle-orm";
11
+
import { getDidFromHandle, getHandleFromDid } from "../network/converters.js";
12
+
import { createClipView } from "../api/feed.js";
13
+
import { type ClipViewQuery, type ErrorResponse } from "../api/types.js";
14
+
import { createAvatarLink } from "../api/profile.js";
15
+
import { SocialClipprFeedDefs } from "@clipprjs/lexicons";
16
+
import { is } from "@atcute/lexicons";
17
+
18
+
const app = new Hono();
19
+
const db = Database.getInstance().getDb();
20
+
21
+
app.get("/social.clippr.actor.getProfile", async (c) => {
22
+
const actor = c.req.query("actor");
23
+
if (actor === undefined || actor.trim().length === 0) {
24
+
return c.json(
25
+
{
26
+
error: "InvalidRequest",
27
+
message: "Error: Parameters must have the actor property included",
28
+
},
29
+
400,
30
+
);
31
+
}
32
+
33
+
let actorDid = actor;
34
+
35
+
if (!actor.startsWith("did:")) {
36
+
try {
37
+
actorDid = await getDidFromHandle(actor);
38
+
} catch (e: unknown) {
39
+
if (e instanceof Error) {
40
+
return c.json(
41
+
{
42
+
error: e.message,
43
+
message: e.cause,
44
+
},
45
+
400,
46
+
);
47
+
} else {
48
+
return c.json(
49
+
{
50
+
error: "InvalidRequest" as string,
51
+
message: "Unknown error while resolving DID from handle" as string,
52
+
},
53
+
400,
54
+
);
55
+
}
56
+
}
57
+
}
58
+
59
+
const profileSearch = await db
60
+
.selectDistinct()
61
+
.from(usersTable)
62
+
.where(eq(usersTable.did, actorDid));
63
+
64
+
if (profileSearch.length === 0) {
65
+
return c.json(
66
+
{
67
+
error: "InvalidRequest",
68
+
message: "Profile not found",
69
+
},
70
+
400,
71
+
);
72
+
}
73
+
74
+
let actorHandle;
75
+
76
+
if (actor.startsWith("did:")) {
77
+
try {
78
+
actorHandle = await getHandleFromDid(actor);
79
+
} catch (e: unknown) {
80
+
if (e instanceof Error) {
81
+
return c.json(
82
+
{
83
+
error: "InvalidRequest",
84
+
message: `${e.message}`,
85
+
},
86
+
400,
87
+
);
88
+
} else {
89
+
return c.json(
90
+
{
91
+
error: "InvalidRequest" as string,
92
+
message: "Unknown error while resolving handle from DID" as string,
93
+
},
94
+
400,
95
+
);
96
+
}
97
+
}
98
+
99
+
if (actorHandle === undefined) {
100
+
actorHandle = "invalid.handle";
101
+
}
102
+
} else actorHandle = actor;
103
+
104
+
// TODO: Add placeholder avatar
105
+
// This is a mess and should be replaced with a real solution!
106
+
const avatarCid: string =
107
+
profileSearch[0]?.avatar || "https://missing.avatar";
108
+
let actorAvatar;
109
+
if (avatarCid !== "https://missing.avatar") {
110
+
actorAvatar = await createAvatarLink(actorDid, avatarCid);
111
+
} else actorAvatar = avatarCid;
112
+
113
+
// Right now we don't do de-duplication in the database, so we just take the
114
+
// first result and use that for our return call.
115
+
return c.json({
116
+
did: actorDid,
117
+
handle: actorHandle,
118
+
displayName: profileSearch[0]?.displayName,
119
+
avatar: actorAvatar,
120
+
description: profileSearch[0]?.description || null,
121
+
createdAt: profileSearch[0]?.createdAt,
122
+
});
123
+
});
124
+
125
+
app.get("/social.clippr.feed.getClips", async (c) => {
126
+
const uris = c.req.query("uris");
127
+
if (uris === undefined || uris.trim().length === 0) {
128
+
return c.json(
129
+
{
130
+
error: "InvalidRequest",
131
+
message: "Error: Parameters must have the uris property included",
132
+
},
133
+
400,
134
+
);
135
+
}
136
+
137
+
const rawUriArray: string[] = uris.split(",");
138
+
139
+
if (rawUriArray.length > 25) {
140
+
return c.json(
141
+
{
142
+
error: "InvalidRequest",
143
+
message: "Error: More than 25 URIs have been provided",
144
+
},
145
+
400,
146
+
);
147
+
}
148
+
149
+
if (
150
+
rawUriArray.some((value) => {
151
+
return !value.startsWith("at://");
152
+
})
153
+
) {
154
+
return c.json(
155
+
{
156
+
error: "InvalidRequest",
157
+
message: "Error: A queried URI is missing the at:// identifier",
158
+
},
159
+
400,
160
+
);
161
+
}
162
+
163
+
const parsedUriArray: object[] = [];
164
+
165
+
for (let value of rawUriArray) {
166
+
value = value.replace("at://", "");
167
+
const splitUri: string[] = value.split("/");
168
+
169
+
if (splitUri.length !== 3) {
170
+
c.json(
171
+
{
172
+
error: "InvalidRequest",
173
+
message: "Error: A queried URI is not a proper clip",
174
+
},
175
+
400,
176
+
);
177
+
}
178
+
179
+
let splitUriObject: ClipViewQuery = {
180
+
did: "",
181
+
collection: "",
182
+
recordKey: "",
183
+
};
184
+
185
+
// validate type
186
+
if (
187
+
!splitUri[0] ||
188
+
!splitUri[1] ||
189
+
!splitUri[2] ||
190
+
typeof splitUri[0] !== "string" ||
191
+
typeof splitUri[1] !== "string" ||
192
+
typeof splitUri[2] !== "string"
193
+
) {
194
+
c.json(
195
+
{
196
+
error: "InvalidRequest",
197
+
message: "Error: A queried URI is not a proper clip",
198
+
},
199
+
400,
200
+
);
201
+
} else {
202
+
splitUriObject = {
203
+
did: splitUri[0],
204
+
collection: splitUri[1],
205
+
recordKey: splitUri[2],
206
+
};
207
+
}
208
+
209
+
const clipView = await createClipView(splitUriObject);
210
+
211
+
if (!is(SocialClipprFeedDefs.clipViewSchema, value)) {
212
+
c.json(clipView, 400);
213
+
}
214
+
215
+
parsedUriArray.push(clipView);
216
+
}
217
+
218
+
if (parsedUriArray.length === 0) {
219
+
return c.json(
220
+
{
221
+
error: "InvalidRequest",
222
+
message: "No queried URIs exist",
223
+
} as ErrorResponse,
224
+
400,
225
+
);
226
+
}
227
+
228
+
return c.json(parsedUriArray, 200);
229
+
});
230
+
231
+
app.get("/_health", async (c) => {
232
+
return c.json({
233
+
version: process.env.npm_package_version,
234
+
});
235
+
});
236
+
237
+
export default app;
+8
backend/src/server.ts
+8
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";
10
+
import xrpc from "./routes/xrpc.js";
11
+
import wellKnown from "./routes/well-known.js";
9
12
import Logger from "./logger.js";
10
13
import { logger } from "hono/logger";
14
+
import { cors } from "hono/cors";
11
15
12
16
export function winstonLogger(message: string, ...rest: unknown[]) {
13
17
Logger.http(message, ...rest);
···
15
19
16
20
const app = new Hono();
17
21
app.use(logger(winstonLogger));
22
+
app.use(cors());
18
23
19
24
// Link all routes up
20
25
app.route("/", misc);
26
+
app.route("/", openapi);
27
+
app.route("/", wellKnown);
28
+
app.route("/xrpc", xrpc);
21
29
22
30
export default app;
+1228
backend/static/api.json
+1228
backend/static/api.json
···
1
+
{
2
+
"openapi": "3.1.1",
3
+
"info": {
4
+
"title": "Clippr AppView API",
5
+
"version": "1.0.1",
6
+
"description": "API reference documentation for Clippr's backend.",
7
+
"license": {
8
+
"name": "GNU Affero General Public License v3.0 only",
9
+
"identifier": "AGPL-3.0-only"
10
+
}
11
+
},
12
+
"servers": [
13
+
{
14
+
"url": "http://localhost:9090",
15
+
"description": "Development server"
16
+
},
17
+
{
18
+
"url": "https://api.clippr.social",
19
+
"description": "Production server"
20
+
}
21
+
],
22
+
"tags": [
23
+
{
24
+
"name": "Clips",
25
+
"description": "API paths that relate to user bookmarks, or 'clips'."
26
+
},
27
+
{
28
+
"name": "Tags",
29
+
"description": "API paths that relate to user tags."
30
+
},
31
+
{
32
+
"name": "Profile",
33
+
"description": "API paths that relate to user profiles."
34
+
},
35
+
{
36
+
"name": "Misc",
37
+
"description": "API paths that don't fit into any other category."
38
+
}
39
+
],
40
+
"paths": {
41
+
"/xrpc/social.clippr.actor.getPreferences": {
42
+
"get": {
43
+
"tags": ["Profile"],
44
+
"summary": "Get a user's preferences",
45
+
"operationId": "social.clippr.actor.getPreferences",
46
+
"description": "Get a user's private preferences. Requires authentication.",
47
+
"security": [
48
+
{
49
+
"Bearer": []
50
+
}
51
+
],
52
+
"responses": {
53
+
"200": {
54
+
"description": "OK",
55
+
"content": {
56
+
"application/json": {
57
+
"schema": {
58
+
"$ref": "#/components/schemas/social.clippr.actor.defs.preferences"
59
+
}
60
+
}
61
+
}
62
+
},
63
+
"400": {
64
+
"description": "Bad Request",
65
+
"content": {
66
+
"application/json": {
67
+
"schema": {
68
+
"type": "object",
69
+
"properties": {
70
+
"error": {
71
+
"type": "string",
72
+
"description": "A general error code",
73
+
"oneOf": [
74
+
{
75
+
"const": "InvalidRequest"
76
+
},
77
+
{
78
+
"const": "ExpiredToken"
79
+
},
80
+
{
81
+
"const": "InvalidToken"
82
+
}
83
+
]
84
+
},
85
+
"message": {
86
+
"type": "string",
87
+
"description": "A detailed description of the error"
88
+
}
89
+
}
90
+
}
91
+
}
92
+
}
93
+
},
94
+
"401": {
95
+
"description": "Unauthorized",
96
+
"content": {
97
+
"application/json": {
98
+
"schema": {
99
+
"type": "object",
100
+
"properties": {
101
+
"error": {
102
+
"type": "string",
103
+
"description": "A general error code",
104
+
"oneOf": [
105
+
{
106
+
"const": "AuthMissing"
107
+
}
108
+
]
109
+
},
110
+
"message": {
111
+
"type": "string",
112
+
"description": "A detailed description of the error"
113
+
}
114
+
}
115
+
}
116
+
}
117
+
}
118
+
}
119
+
}
120
+
}
121
+
},
122
+
"/xrpc/social.clippr.actor.getProfile": {
123
+
"get": {
124
+
"tags": ["Profile"],
125
+
"summary": "Get a profile",
126
+
"operationId": "social.clippr.actor.getProfile",
127
+
"description": "Get a user's profile based on a given DID or handle.",
128
+
"parameters": [
129
+
{
130
+
"name": "actor",
131
+
"in": "query",
132
+
"description": "Handle or DID of account to fetch profile of",
133
+
"required": true,
134
+
"content": {
135
+
"schema": {
136
+
"type": "string",
137
+
"description": "Handle or DID of account to fetch profile of",
138
+
"format": "at-identifier"
139
+
}
140
+
},
141
+
"deprecated": false,
142
+
"allowEmptyValue": false
143
+
}
144
+
],
145
+
"responses": {
146
+
"200": {
147
+
"description": "OK",
148
+
"content": {
149
+
"application/json": {
150
+
"schema": {
151
+
"type": "object",
152
+
"$ref": "#/components/schemas/social.clippr.actor.defs.profileView"
153
+
}
154
+
}
155
+
}
156
+
},
157
+
"400": {
158
+
"description": "Bad Request",
159
+
"content": {
160
+
"application/json": {
161
+
"schema": {
162
+
"type": "object",
163
+
"properties": {
164
+
"error": {
165
+
"type": "string",
166
+
"description": "A general error code",
167
+
"oneOf": [
168
+
{
169
+
"const": "InvalidRequest"
170
+
}
171
+
]
172
+
},
173
+
"message": {
174
+
"type": "string",
175
+
"description": "A detailed description of the error"
176
+
}
177
+
}
178
+
}
179
+
}
180
+
}
181
+
}
182
+
}
183
+
}
184
+
},
185
+
"/xrpc/social.clippr.actor.putPreferences": {
186
+
"post": {
187
+
"tags": ["Profile"],
188
+
"summary": "Set a user's preferences",
189
+
"operationId": "social.clippr.actor.putPreferences",
190
+
"description": "Sets the private preferences attached to the account. Requires authentication.",
191
+
"security": [
192
+
{
193
+
"Bearer": []
194
+
}
195
+
],
196
+
"requestBody": {
197
+
"required": true,
198
+
"content": {
199
+
"application/json": {
200
+
"schema": {
201
+
"type": "object",
202
+
"properties": {
203
+
"preferences": {
204
+
"$ref": "#/components/schemas/social.clippr.actor.defs.preferences"
205
+
}
206
+
}
207
+
}
208
+
}
209
+
}
210
+
},
211
+
"responses": {
212
+
"200": {
213
+
"description": "OK"
214
+
},
215
+
"400": {
216
+
"description": "Bad Request",
217
+
"content": {
218
+
"application/json": {
219
+
"schema": {
220
+
"type": "object",
221
+
"properties": {
222
+
"error": {
223
+
"type": "string",
224
+
"oneOf": [
225
+
{
226
+
"const": "InvalidRequest"
227
+
},
228
+
{
229
+
"const": "ExpiredToken"
230
+
},
231
+
{
232
+
"const": "InvalidToken"
233
+
}
234
+
],
235
+
"description": "A general error code"
236
+
},
237
+
"message": {
238
+
"type": "string",
239
+
"description": "A detailed description of the error"
240
+
}
241
+
}
242
+
}
243
+
}
244
+
}
245
+
},
246
+
"401": {
247
+
"description": "Unauthorized",
248
+
"content": {
249
+
"application/json": {
250
+
"schema": {
251
+
"type": "object",
252
+
"properties": {
253
+
"error": {
254
+
"type": "string",
255
+
"description": "A general error code",
256
+
"oneOf": [
257
+
{
258
+
"const": "AuthMissing"
259
+
}
260
+
]
261
+
},
262
+
"message": {
263
+
"type": "string",
264
+
"description": "A detailed description of the error"
265
+
}
266
+
}
267
+
}
268
+
}
269
+
}
270
+
}
271
+
}
272
+
}
273
+
},
274
+
"/xrpc/social.clippr.actor.searchClips": {
275
+
"get": {
276
+
"tags": ["Clips"],
277
+
"summary": "Search clips",
278
+
"operationId": "social.clippr.actor.searchClips",
279
+
"description": "Find clips matching search criteria.",
280
+
"parameters": [
281
+
{
282
+
"name": "q",
283
+
"in": "query",
284
+
"description": "Search query string",
285
+
"required": true,
286
+
"schema": {
287
+
"type": "string",
288
+
"description": "Search query string"
289
+
}
290
+
},
291
+
{
292
+
"name": "limit",
293
+
"in": "query",
294
+
"description": "How many clips to return in the query output",
295
+
"required": false,
296
+
"schema": {
297
+
"type": "integer",
298
+
"minimum": 1,
299
+
"maximum": 100,
300
+
"default": 25
301
+
}
302
+
},
303
+
{
304
+
"name": "actor",
305
+
"in": "query",
306
+
"description": "An actor to filter results to",
307
+
"required": false,
308
+
"schema": {
309
+
"type": "string",
310
+
"description": "An actor to filter results to",
311
+
"format": "at-identifier"
312
+
}
313
+
},
314
+
{
315
+
"name": "cursor",
316
+
"in": "query",
317
+
"description": "A parameter to paginate results",
318
+
"required": false,
319
+
"schema": {
320
+
"type": "string",
321
+
"description": "A parameter to paginate results"
322
+
}
323
+
}
324
+
],
325
+
"responses": {
326
+
"200": {
327
+
"description": "OK",
328
+
"content": {
329
+
"application/json": {
330
+
"schema": {
331
+
"type": "object",
332
+
"properties": {
333
+
"cursor": {
334
+
"type": "string",
335
+
"description": "A parameter to paginate results"
336
+
},
337
+
"clips": {
338
+
"type": "array",
339
+
"items": {
340
+
"$ref": "#/components/schemas/social.clippr.feed.defs.clipView"
341
+
}
342
+
}
343
+
}
344
+
}
345
+
}
346
+
}
347
+
},
348
+
"400": {
349
+
"description": "Bad Request",
350
+
"content": {
351
+
"application/json": {
352
+
"schema": {
353
+
"type": "object",
354
+
"properties": {
355
+
"error": {
356
+
"type": "string",
357
+
"description": "A general error code",
358
+
"oneOf": [
359
+
{
360
+
"const": "InvalidRequest"
361
+
}
362
+
]
363
+
},
364
+
"message": {
365
+
"type": "string",
366
+
"description": "A detailed description of the error"
367
+
}
368
+
}
369
+
}
370
+
}
371
+
}
372
+
}
373
+
}
374
+
}
375
+
},
376
+
"/xrpc/social.clippr.actor.searchProfiles": {
377
+
"get": {
378
+
"tags": ["Profile"],
379
+
"summary": "Search profiles",
380
+
"operationId": "social.clippr.actor.searchProfiles",
381
+
"description": "Find profiles matching search criteria.",
382
+
"parameters": [
383
+
{
384
+
"name": "q",
385
+
"in": "query",
386
+
"description": "Search query string",
387
+
"required": false,
388
+
"schema": {
389
+
"type": "string",
390
+
"description": "Search query string"
391
+
}
392
+
},
393
+
{
394
+
"name": "limit",
395
+
"in": "query",
396
+
"description": "The number of profiles to be returned in the query",
397
+
"required": false,
398
+
"schema": {
399
+
"type": "integer",
400
+
"minimum": 1,
401
+
"maximum": 100,
402
+
"default": 25
403
+
}
404
+
},
405
+
{
406
+
"name": "cursor",
407
+
"in": "query",
408
+
"description": "A parameter used for pagination",
409
+
"required": false,
410
+
"schema": {
411
+
"type": "string",
412
+
"description": "A parameter used for pagination"
413
+
}
414
+
}
415
+
],
416
+
"responses": {
417
+
"200": {
418
+
"description": "OK",
419
+
"content": {
420
+
"application/json": {
421
+
"schema": {
422
+
"type": "object",
423
+
"properties": {
424
+
"cursor": {
425
+
"type": "string",
426
+
"description": "A parameter used for pagination"
427
+
},
428
+
"actors": {
429
+
"type": "array",
430
+
"items": {
431
+
"$ref": "#/components/schemas/social.clippr.actor.defs.profileView"
432
+
}
433
+
}
434
+
}
435
+
}
436
+
}
437
+
}
438
+
},
439
+
"400": {
440
+
"description": "Bad Request",
441
+
"content": {
442
+
"application/json": {
443
+
"schema": {
444
+
"type": "object",
445
+
"properties": {
446
+
"error": {
447
+
"type": "string",
448
+
"description": "A general error code",
449
+
"oneOf": [
450
+
{
451
+
"const": "InvalidRequest"
452
+
}
453
+
]
454
+
},
455
+
"message": {
456
+
"type": "string",
457
+
"description": "A detailed description of the error"
458
+
}
459
+
}
460
+
}
461
+
}
462
+
}
463
+
}
464
+
}
465
+
}
466
+
},
467
+
"/xrpc/social.clippr.actor.searchTags": {
468
+
"get": {
469
+
"tags": ["Tags"],
470
+
"summary": "Search tags",
471
+
"operationId": "social.clippr.actor.searchTags",
472
+
"description": "Find tags matching search criteria.",
473
+
"parameters": [
474
+
{
475
+
"name": "q",
476
+
"in": "query",
477
+
"description": "Search query string",
478
+
"required": true,
479
+
"schema": {
480
+
"type": "string",
481
+
"description": "Search query string"
482
+
}
483
+
},
484
+
{
485
+
"name": "limit",
486
+
"in": "query",
487
+
"description": "How many tags to return in the query output",
488
+
"required": false,
489
+
"schema": {
490
+
"type": "integer",
491
+
"minimum": 1,
492
+
"maximum": 100,
493
+
"default": 25
494
+
}
495
+
},
496
+
{
497
+
"name": "actor",
498
+
"in": "query",
499
+
"description": "An actor to filter results to",
500
+
"required": false,
501
+
"schema": {
502
+
"type": "string",
503
+
"description": "An actor to filter results to",
504
+
"format": "at-identifier"
505
+
}
506
+
},
507
+
{
508
+
"name": "cursor",
509
+
"in": "query",
510
+
"description": "A parameter to paginate results",
511
+
"required": false,
512
+
"schema": {
513
+
"type": "string",
514
+
"description": "A parameter to paginate results"
515
+
}
516
+
}
517
+
],
518
+
"responses": {
519
+
"200": {
520
+
"description": "OK",
521
+
"content": {
522
+
"application/json": {
523
+
"schema": {
524
+
"type": "object",
525
+
"properties": {
526
+
"cursor": {
527
+
"type": "string",
528
+
"description": "A parameter to paginate results"
529
+
},
530
+
"tags": {
531
+
"type": "array",
532
+
"items": {
533
+
"$ref": "#/components/schemas/social.clippr.feed.defs.tagView"
534
+
}
535
+
}
536
+
}
537
+
}
538
+
}
539
+
}
540
+
},
541
+
"400": {
542
+
"description": "Bad Request",
543
+
"content": {
544
+
"application/json": {
545
+
"schema": {
546
+
"type": "object",
547
+
"properties": {
548
+
"error": {
549
+
"type": "string",
550
+
"description": "A general error code",
551
+
"oneOf": [
552
+
{
553
+
"const": "InvalidRequest"
554
+
}
555
+
]
556
+
},
557
+
"message": {
558
+
"type": "string",
559
+
"description": "A detailed description of the error"
560
+
}
561
+
}
562
+
}
563
+
}
564
+
}
565
+
}
566
+
}
567
+
}
568
+
},
569
+
"/xrpc/social.clippr.feed.getClips": {
570
+
"get": {
571
+
"tags": ["Clips"],
572
+
"summary": "Get clips",
573
+
"operationId": "social.clippr.feed.getClips",
574
+
"description": "Get the hydrated views of a list of clips from their AT URIs.",
575
+
"parameters": [
576
+
{
577
+
"name": "uris",
578
+
"in": "query",
579
+
"description": "List of tag AT-URIs to return hydrated views for",
580
+
"required": true,
581
+
"schema": {
582
+
"type": "array",
583
+
"items": {
584
+
"type": "string",
585
+
"format": "at-uri"
586
+
},
587
+
"maxItems": 25
588
+
}
589
+
}
590
+
],
591
+
"responses": {
592
+
"200": {
593
+
"description": "OK",
594
+
"content": {
595
+
"application/json": {
596
+
"schema": {
597
+
"type": "array",
598
+
"items": {
599
+
"$ref": "#/components/schemas/social.clippr.feed.defs.clipView"
600
+
}
601
+
}
602
+
}
603
+
}
604
+
},
605
+
"400": {
606
+
"description": "Bad Request",
607
+
"content": {
608
+
"application/json": {
609
+
"schema": {
610
+
"type": "object",
611
+
"properties": {
612
+
"error": {
613
+
"type": "string",
614
+
"description": "A general error code",
615
+
"oneOf": [
616
+
{
617
+
"const": "InvalidRequest"
618
+
}
619
+
]
620
+
},
621
+
"message": {
622
+
"type": "string",
623
+
"description": "A detailed description of the error"
624
+
}
625
+
}
626
+
}
627
+
}
628
+
}
629
+
}
630
+
}
631
+
}
632
+
},
633
+
"/xrpc/social.clippr.feed.getTags": {
634
+
"get": {
635
+
"tags": ["Tags"],
636
+
"summary": "Get tags",
637
+
"operationId": "social.clippr.feed.getTags",
638
+
"description": "Get a the hydrated views of a list of tags from their AT URIs.",
639
+
"parameters": [
640
+
{
641
+
"name": "uris",
642
+
"in": "query",
643
+
"description": "List of tag AT-URIs to return hydrated views for",
644
+
"required": true,
645
+
"schema": {
646
+
"type": "array",
647
+
"items": {
648
+
"type": "string",
649
+
"format": "at-uri"
650
+
},
651
+
"maxItems": 25
652
+
}
653
+
}
654
+
],
655
+
"responses": {
656
+
"200": {
657
+
"description": "OK",
658
+
"content": {
659
+
"application/json": {
660
+
"schema": {
661
+
"type": "array",
662
+
"items": {
663
+
"$ref": "#/components/schemas/social.clippr.feed.defs.tagView"
664
+
}
665
+
}
666
+
}
667
+
}
668
+
},
669
+
"400": {
670
+
"description": "Bad Request",
671
+
"content": {
672
+
"application/json": {
673
+
"schema": {
674
+
"type": "object",
675
+
"properties": {
676
+
"error": {
677
+
"type": "string",
678
+
"description": "A general error code",
679
+
"oneOf": [
680
+
{
681
+
"const": "InvalidRequest"
682
+
}
683
+
]
684
+
},
685
+
"message": {
686
+
"type": "string",
687
+
"description": "A detailed description of the error"
688
+
}
689
+
}
690
+
}
691
+
}
692
+
}
693
+
}
694
+
}
695
+
}
696
+
},
697
+
"/xrpc/social.clippr.feed.getProfileClips": {
698
+
"get": {
699
+
"tags": ["Clips"],
700
+
"summary": "Get a profile's clip feed",
701
+
"operationId": "social.clippr.feed.getProfileClips",
702
+
"description": "Get a view of a profile's reverse-chronological clips feed.",
703
+
"parameters": [
704
+
{
705
+
"name": "actor",
706
+
"in": "query",
707
+
"description": "An actor to get feed data from",
708
+
"required": true,
709
+
"schema": {
710
+
"type": "string",
711
+
"description": "An actor to get feed data from",
712
+
"format": "at-identifier"
713
+
}
714
+
},
715
+
{
716
+
"name": "limit",
717
+
"in": "query",
718
+
"description": "How many results to return with the query",
719
+
"required": false,
720
+
"schema": {
721
+
"type": "integer",
722
+
"minimum": 1,
723
+
"maximum": 100,
724
+
"default": 50
725
+
}
726
+
},
727
+
{
728
+
"name": "cursor",
729
+
"in": "query",
730
+
"description": "A parameter to paginate results",
731
+
"required": false,
732
+
"schema": {
733
+
"type": "string",
734
+
"description": "A parameter to paginate results"
735
+
}
736
+
},
737
+
{
738
+
"name": "filter",
739
+
"in": "query",
740
+
"description": "What types to include in response",
741
+
"required": false,
742
+
"schema": {
743
+
"type": "string",
744
+
"description": "What types of clips to include in response",
745
+
"default": "all_clips",
746
+
"enum": ["all_clips", "tagged_clips", "untagged_clips"]
747
+
}
748
+
}
749
+
],
750
+
"responses": {
751
+
"200": {
752
+
"description": "OK",
753
+
"content": {
754
+
"application/json": {
755
+
"schema": {
756
+
"type": "object",
757
+
"properties": {
758
+
"cursor": {
759
+
"type": "string"
760
+
},
761
+
"feed": {
762
+
"type": "array",
763
+
"items": {
764
+
"$ref": "#/components/schemas/social.clippr.feed.defs.clipView"
765
+
}
766
+
}
767
+
}
768
+
}
769
+
}
770
+
}
771
+
},
772
+
"400": {
773
+
"description": "Bad Request",
774
+
"content": {
775
+
"application/json": {
776
+
"schema": {
777
+
"type": "object",
778
+
"properties": {
779
+
"error": {
780
+
"type": "string",
781
+
"description": "A general error code",
782
+
"oneOf": [
783
+
{
784
+
"const": "InvalidRequest"
785
+
}
786
+
]
787
+
},
788
+
"message": {
789
+
"type": "string",
790
+
"description": "A detailed description of the error"
791
+
}
792
+
}
793
+
}
794
+
}
795
+
}
796
+
}
797
+
}
798
+
}
799
+
},
800
+
"/xrpc/social.clippr.feed.getProfileTags": {
801
+
"get": {
802
+
"tags": ["Tags"],
803
+
"summary": "Get a profile's tag feed",
804
+
"operationId": "social.clippr.feed.getProfileTags",
805
+
"description": "Get a view of a profile's reverse-chronological clips feed.",
806
+
"parameters": [
807
+
{
808
+
"name": "actor",
809
+
"in": "query",
810
+
"description": "An actor to get feed data from",
811
+
"required": true,
812
+
"schema": {
813
+
"type": "string",
814
+
"description": "An actor to get feed data from",
815
+
"format": "at-identifier"
816
+
}
817
+
},
818
+
{
819
+
"name": "limit",
820
+
"in": "query",
821
+
"description": "How many results to return with the query",
822
+
"required": false,
823
+
"schema": {
824
+
"type": "integer",
825
+
"minimum": 1,
826
+
"maximum": 100,
827
+
"default": 50
828
+
}
829
+
},
830
+
{
831
+
"name": "cursor",
832
+
"in": "query",
833
+
"description": "A parameter to paginate results",
834
+
"required": false,
835
+
"schema": {
836
+
"type": "string",
837
+
"description": "A parameter to paginate results"
838
+
}
839
+
}
840
+
],
841
+
"responses": {
842
+
"200": {
843
+
"description": "OK",
844
+
"content": {
845
+
"application/json": {
846
+
"schema": {
847
+
"type": "object",
848
+
"properties": {
849
+
"cursor": {
850
+
"type": "string"
851
+
},
852
+
"feed": {
853
+
"type": "array",
854
+
"items": {
855
+
"$ref": "#/components/schemas/social.clippr.feed.defs.tagView"
856
+
}
857
+
}
858
+
}
859
+
}
860
+
}
861
+
}
862
+
},
863
+
"400": {
864
+
"description": "Bad Request",
865
+
"content": {
866
+
"application/json": {
867
+
"schema": {
868
+
"type": "object",
869
+
"properties": {
870
+
"error": {
871
+
"type": "string",
872
+
"description": "A general error code",
873
+
"oneOf": [
874
+
{
875
+
"const": "InvalidRequest"
876
+
}
877
+
]
878
+
},
879
+
"message": {
880
+
"type": "string",
881
+
"description": "A detailed description of the error"
882
+
}
883
+
}
884
+
}
885
+
}
886
+
}
887
+
}
888
+
}
889
+
}
890
+
},
891
+
"/xrpc/social.clippr.feed.getTagList": {
892
+
"get": {
893
+
"tags": ["Tags"],
894
+
"summary": "Get a profile's tag list",
895
+
"operationId": "social.clippr.feed.getProfileTags",
896
+
"description": "Get a profile's complete list of tags.",
897
+
"parameters": [
898
+
{
899
+
"name": "actor",
900
+
"in": "query",
901
+
"description": "An actor to fetch the tag list from",
902
+
"required": false,
903
+
"schema": {
904
+
"type": "string",
905
+
"description": "An actor to fetch the tag list from",
906
+
"format": "at-identifier"
907
+
}
908
+
}
909
+
],
910
+
"responses": {
911
+
"200": {
912
+
"description": "OK",
913
+
"content": {
914
+
"application/json": {
915
+
"schema": {
916
+
"type": "object",
917
+
"properties": {
918
+
"tags": {
919
+
"type": "array",
920
+
"items": {
921
+
"$ref": "#/components/schemas/social.clippr.feed.defs.tagView"
922
+
}
923
+
}
924
+
}
925
+
}
926
+
}
927
+
}
928
+
},
929
+
"400": {
930
+
"description": "Bad Request",
931
+
"content": {
932
+
"application/json": {
933
+
"schema": {
934
+
"type": "object",
935
+
"properties": {
936
+
"error": {
937
+
"type": "string",
938
+
"description": "A general error code",
939
+
"oneOf": [
940
+
{
941
+
"error": "InvalidRequest"
942
+
}
943
+
]
944
+
},
945
+
"message": {
946
+
"type": "string",
947
+
"description": "A detailed description of the error"
948
+
}
949
+
}
950
+
}
951
+
}
952
+
}
953
+
}
954
+
}
955
+
}
956
+
},
957
+
"/xrpc/_health": {
958
+
"get": {
959
+
"summary": "Health check",
960
+
"description": "Check the health of the server. If it is functioning properly, you will receive the server's version number.",
961
+
"responses": {
962
+
"200": {
963
+
"description": "OK",
964
+
"content": {
965
+
"application/json": {
966
+
"schema": {
967
+
"type": "object",
968
+
"properties": {
969
+
"version": {
970
+
"type": "string",
971
+
"description": "The version number of the AppView."
972
+
}
973
+
}
974
+
}
975
+
}
976
+
}
977
+
}
978
+
},
979
+
"tags": ["Misc"]
980
+
}
981
+
}
982
+
},
983
+
"components": {
984
+
"schemas": {
985
+
"com.atproto.repo.strongRef": {
986
+
"type": "object",
987
+
"required": ["uri", "cid"],
988
+
"properties": {
989
+
"uri": {
990
+
"type": "string",
991
+
"format": "at-uri"
992
+
},
993
+
"cid": {
994
+
"type": "string",
995
+
"format": "cid"
996
+
}
997
+
}
998
+
},
999
+
"social.clippr.actor.defs.profileView": {
1000
+
"type": "object",
1001
+
"description": "A view of an actor's profile",
1002
+
"required": ["did", "handle", "displayName"],
1003
+
"properties": {
1004
+
"did": {
1005
+
"type": "string",
1006
+
"description": "The DID of the profile",
1007
+
"format": "did"
1008
+
},
1009
+
"handle": {
1010
+
"type": "string",
1011
+
"description": "The handle of the profile",
1012
+
"format": "handle"
1013
+
},
1014
+
"displayName": {
1015
+
"type": "string",
1016
+
"description": "The display name associated to the profile",
1017
+
"maxLength": 64
1018
+
},
1019
+
"description": {
1020
+
"type": "string",
1021
+
"description": "The biography associated to the profile",
1022
+
"maxLength": 500
1023
+
},
1024
+
"avatar": {
1025
+
"type": "string",
1026
+
"description": "A link to the profile's avatar",
1027
+
"format": "uri"
1028
+
},
1029
+
"createdAt": {
1030
+
"type": "string",
1031
+
"description": "When the profile record was first created",
1032
+
"format": "date-time"
1033
+
}
1034
+
}
1035
+
},
1036
+
"social.clippr.actor.defs.preferences": {
1037
+
"type": "array",
1038
+
"items": {
1039
+
"oneOf": [
1040
+
{
1041
+
"$ref": "#/components/schemas/social.clippr.actor.defs.publishingScopesPref"
1042
+
}
1043
+
]
1044
+
}
1045
+
},
1046
+
"social.clippr.actor.defs.publishingScopesPref": {
1047
+
"type": "object",
1048
+
"description": "Preferences for a user's publishing scopes",
1049
+
"required": ["defaultScope"],
1050
+
"properties": {
1051
+
"defaultScope": {
1052
+
"type": "string",
1053
+
"description": "What publishing scope to mark a clip as by default",
1054
+
"enum": ["public", "unlisted"]
1055
+
}
1056
+
}
1057
+
},
1058
+
"social.clippr.feed.defs.clipView": {
1059
+
"type": "object",
1060
+
"description": "A view of a single bookmark (or 'clip')",
1061
+
"required": ["uri", "cid", "author", "record", "indexedAt"],
1062
+
"properties": {
1063
+
"uri": {
1064
+
"type": "string",
1065
+
"description": "The AT-URI of the clip",
1066
+
"format": "at-uri"
1067
+
},
1068
+
"cid": {
1069
+
"type": "string",
1070
+
"description": "The CID of the clip",
1071
+
"format": "cid"
1072
+
},
1073
+
"author": {
1074
+
"description": "A reference to the actor's profile",
1075
+
"$ref": "#/components/schemas/social.clippr.actor.defs.profileView"
1076
+
},
1077
+
"record": {
1078
+
"type": "object",
1079
+
"description": "The raw record of the clip"
1080
+
},
1081
+
"indexedAt": {
1082
+
"type": "string",
1083
+
"description": "The time in which the clip's record was indexed by the AppView",
1084
+
"format": "date-time"
1085
+
}
1086
+
}
1087
+
},
1088
+
"social.clippr.feed.defs.tagView": {
1089
+
"type": "object",
1090
+
"description": "A view of a single tag",
1091
+
"required": ["uri", "cid", "author", "record", "indexedAt"],
1092
+
"properties": {
1093
+
"uri": {
1094
+
"type": "string",
1095
+
"description": "The AT-URI to the tag",
1096
+
"format": "at-uri"
1097
+
},
1098
+
"cid": {
1099
+
"type": "string",
1100
+
"description": "The CID of the tag",
1101
+
"format": "cid"
1102
+
},
1103
+
"author": {
1104
+
"description": "A reference to the actor's profile",
1105
+
"$ref": "#/components/schemas/social.clippr.actor.defs.profileView"
1106
+
},
1107
+
"record": {
1108
+
"type": "object",
1109
+
"description": "The raw record of the clip"
1110
+
},
1111
+
"indexedAt": {
1112
+
"type": "string",
1113
+
"description": "The time in which the tag's record was indexed by the AppView",
1114
+
"format": "date-time"
1115
+
}
1116
+
}
1117
+
},
1118
+
"social.clippr.actor.profile": {
1119
+
"type": "object",
1120
+
"required": ["createdAt", "displayName"],
1121
+
"properties": {
1122
+
"displayName": {
1123
+
"type": "string",
1124
+
"description": "A display name to be shown on a profile",
1125
+
"maxLength": 64
1126
+
},
1127
+
"description": {
1128
+
"type": "string",
1129
+
"description": "Text for user to describe themselves",
1130
+
"maxLength": 500
1131
+
},
1132
+
"avatar": {
1133
+
"type": "blob",
1134
+
"maxSize": 1000000,
1135
+
"description": "Image to show on user's profiles"
1136
+
},
1137
+
"createdAt": {
1138
+
"type": "string",
1139
+
"description": "The creation date of the profile",
1140
+
"format": "date-time"
1141
+
}
1142
+
}
1143
+
},
1144
+
"social.clippr.feed.clip": {
1145
+
"type": "object",
1146
+
"required": ["url", "title", "description", "unlisted", "createdAt"],
1147
+
"properties": {
1148
+
"url": {
1149
+
"type": "string",
1150
+
"description": "The URL of the bookmark. Cannot be left empty or be modified after creation.",
1151
+
"format": "uri",
1152
+
"maxLength": 2000
1153
+
},
1154
+
"title": {
1155
+
"type": "string",
1156
+
"description": "The title of the bookmark. If left empty, reuse the URL.",
1157
+
"maxLength": 2048
1158
+
},
1159
+
"description": {
1160
+
"type": "string",
1161
+
"description": "A description of the bookmark's content. This should be ripped from the URL metadata and be static for all records using the URL.",
1162
+
"maxLength": 4096
1163
+
},
1164
+
"notes": {
1165
+
"type": "string",
1166
+
"description": "User-written notes for the bookmark. Public and personal.",
1167
+
"maxLength": 10000
1168
+
},
1169
+
"tags": {
1170
+
"type": "array",
1171
+
"description": "An array of tags. A format of solely alphanumeric characters and dashes should be used.",
1172
+
"items": {
1173
+
"$ref": "#/components/schemas/com.atproto.repo.strongRef"
1174
+
}
1175
+
},
1176
+
"unlisted": {
1177
+
"type": "boolean",
1178
+
"description": "Whether the bookmark can be used for feed indexing and aggregation"
1179
+
},
1180
+
"unread": {
1181
+
"type": "boolean",
1182
+
"description": "Whether the bookmark has been read by the user",
1183
+
"default": true
1184
+
},
1185
+
"languages": {
1186
+
"type": "array",
1187
+
"items": {
1188
+
"type": "string",
1189
+
"format": "language"
1190
+
},
1191
+
"maxItems": 5
1192
+
},
1193
+
"createdAt": {
1194
+
"type": "string",
1195
+
"description": "Client-declared timestamp when the bookmark is created",
1196
+
"format": "date-time"
1197
+
}
1198
+
}
1199
+
},
1200
+
"social.clippr.feed.tag": {
1201
+
"type": "object",
1202
+
"required": ["name", "createdAt"],
1203
+
"properties": {
1204
+
"name": {
1205
+
"type": "string",
1206
+
"description": "A de-duplicated string containing the name of the tag",
1207
+
"maxLength": 64
1208
+
},
1209
+
"color": {
1210
+
"type": "string",
1211
+
"description": "A hexadecimal color code",
1212
+
"maxLength": 7
1213
+
},
1214
+
"description": {
1215
+
"type": "string",
1216
+
"description": "A description of the tag for additional context",
1217
+
"maxLength": 5000
1218
+
},
1219
+
"createdAt": {
1220
+
"type": "string",
1221
+
"description": "A client-defined timestamp for the creation of the tag",
1222
+
"format": "date-time"
1223
+
}
1224
+
}
1225
+
}
1226
+
}
1227
+
}
1228
+
}
+39
-29
backend/static/index.html
+39
-29
backend/static/index.html
···
6
6
7
7
<!doctype html>
8
8
<html lang="en">
9
-
<head>
10
-
<meta charset="UTF-8"/>
11
-
<meta content="IE=edge" http-equiv="X-UA-Compatible"/>
12
-
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
13
-
<link href="main.css" rel="stylesheet"/>
14
-
<title>clippr-BE</title>
15
-
</head>
16
-
<body>
17
-
<div id="container">
18
-
<header>
19
-
<p>clippr-BE</p>
20
-
</header>
21
-
<main>
22
-
<p>welcome to the <b>clippr</b> appview!</p>
23
-
<p>the API routes live under <code>/xrpc</code></p>
24
-
<a href="http://tangled.sh/@hexmani.ac/clippr-ts">source code</a>
25
-
</main>
26
-
<footer>
27
-
<br/>
28
-
<small>
29
-
copyright ยฉ clippr contributors 2025 | this software is released
30
-
under the
31
-
<a href="https://www.gnu.org/licenses/agpl-3.0.en.html#license-text"
32
-
>AGPL</a
33
-
>
34
-
</small>
35
-
</footer>
36
-
</div>
37
-
</body>
9
+
<head>
10
+
<meta charset="UTF-8" />
11
+
<meta content="IE=edge" http-equiv="X-UA-Compatible" />
12
+
<meta content="width=device-width, initial-scale=1.0" name="viewport" />
13
+
<link href="main.css" rel="stylesheet" />
14
+
<title>clippr-BE</title>
15
+
</head>
16
+
<body>
17
+
<div id="container">
18
+
<header>
19
+
<p>clippr-BE</p>
20
+
</header>
21
+
<main>
22
+
<p>Welcome to the <b>clippr</b> appview!</p>
23
+
<h3>Links</h3>
24
+
<ul>
25
+
<li>
26
+
<a href="/docs">API Documentation</a>
27
+
</li>
28
+
<li>
29
+
<a href="/llms.txt">LLMs.txt</a>
30
+
</li>
31
+
<li>
32
+
<a href="http://tangled.sh/@hexmani.ac/clippr">Source Code</a>
33
+
</li>
34
+
</ul>
35
+
</main>
36
+
<footer>
37
+
<br />
38
+
<small>
39
+
Copyright ยฉ clippr contributors 2025 | This software is released
40
+
under the
41
+
<a href="https://www.gnu.org/licenses/agpl-3.0.en.html#license-text"
42
+
>AGPL</a
43
+
>
44
+
</small>
45
+
</footer>
46
+
</div>
47
+
</body>
38
48
</html>
+21
-29
backend/tsconfig.json
+21
-29
backend/tsconfig.json
···
1
1
{
2
-
"compilerOptions": {
3
-
"esModuleInterop": true,
4
-
"skipLibCheck": true,
5
-
"target": "ESNext",
6
-
"module": "NodeNext",
7
-
"moduleResolution": "NodeNext",
8
-
"allowJs": true,
9
-
"resolveJsonModule": true,
10
-
"moduleDetection": "force",
11
-
"isolatedModules": true,
12
-
"verbatimModuleSyntax": true,
13
-
"types": [
14
-
"node",
15
-
"@atcute/atproto",
16
-
"@clipprjs/lexicons"
17
-
],
18
-
"strict": true,
19
-
"noUncheckedIndexedAccess": true,
20
-
"noImplicitOverride": true,
21
-
"jsx": "react-jsx",
22
-
"jsxImportSource": "hono/jsx",
23
-
"outDir": "dist/",
24
-
"lib": [
25
-
"ESNext"
26
-
]
27
-
},
28
-
"exclude": [
29
-
"node_modules"
30
-
]
2
+
"compilerOptions": {
3
+
"esModuleInterop": true,
4
+
"skipLibCheck": true,
5
+
"target": "ESNext",
6
+
"module": "NodeNext",
7
+
"moduleResolution": "NodeNext",
8
+
"allowJs": true,
9
+
"resolveJsonModule": true,
10
+
"moduleDetection": "force",
11
+
"isolatedModules": true,
12
+
"verbatimModuleSyntax": true,
13
+
"types": ["node", "@atcute/atproto", "@clipprjs/lexicons"],
14
+
"strict": true,
15
+
"noUncheckedIndexedAccess": true,
16
+
"noImplicitOverride": true,
17
+
"jsx": "react-jsx",
18
+
"jsxImportSource": "hono/jsx",
19
+
"outDir": "dist/",
20
+
"lib": ["ESNext"],
21
+
},
22
+
"exclude": ["node_modules", "dist/"],
31
23
}
+2
-23
frontend/.gitignore
+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
+24
frontend/.prettierrc
+24
frontend/.prettierrc
···
1
+
{
2
+
"trailingComma": "all",
3
+
"useTabs": true,
4
+
"tabWidth": 2,
5
+
"printWidth": 80,
6
+
"semi": true,
7
+
"singleQuote": false,
8
+
"bracketSpacing": true,
9
+
"overrides": [
10
+
{
11
+
"files": ["tsconfig.json", "jsconfig.json"],
12
+
"options": {
13
+
"parser": "jsonc"
14
+
}
15
+
},
16
+
{
17
+
"files": ["*.md"],
18
+
"options": {
19
+
"printWidth": 100,
20
+
"proseWrap": "always"
21
+
}
22
+
}
23
+
]
24
+
}
-4
frontend/.vscode/extensions.json
-4
frontend/.vscode/extensions.json
-11
frontend/.vscode/launch.json
-11
frontend/.vscode/launch.json
+25
-6
frontend/README.md
+25
-6
frontend/README.md
···
1
-
# clippr-fe
2
-
Astro-based reference frontend for clippr
1
+
# @clipprjs/client
3
2
4
-
## run
5
-
```bash
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:
9
+
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.
13
+
14
+
```shell
6
15
pnpm install
7
16
pnpm run dev
8
-
# pnpm run build
9
-
```
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
28
+
```
-11
frontend/astro.config.mts
-11
frontend/astro.config.mts
···
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({});
+34
frontend/index.html
+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>
+30
-13
frontend/package.json
+30
-13
frontend/package.json
···
1
1
{
2
-
"name": "@clipprjs/client",
3
-
"type": "module",
4
-
"version": "0.1.0",
5
-
"scripts": {
6
-
"dev": "astro dev",
7
-
"build": "astro build",
8
-
"preview": "astro preview",
9
-
"astro": "astro"
10
-
},
11
-
"dependencies": {
12
-
"astro": "^5.9.1"
13
-
}
14
-
}
2
+
"name": "@clipprjs/client",
3
+
"version": "0.1.0",
4
+
"description": "Reference implementation frontend for Clippr",
5
+
"type": "module",
6
+
"scripts": {
7
+
"start": "vite",
8
+
"dev": "vite",
9
+
"build": "vite build",
10
+
"serve": "vite preview",
11
+
"fmt": "pnpm exec prettier --write ."
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
+
},
22
+
"dependencies": {
23
+
"@atcute/client": "^4.0.3",
24
+
"@atcute/identity-resolver": "^1.1.3",
25
+
"@atcute/lexicons": "^1.1.1",
26
+
"@atcute/oauth-browser-client": "^1.0.26",
27
+
"@mary/exif-rm": "jsr:^0.2.2",
28
+
"@solidjs/router": "^0.15.3",
29
+
"solid-js": "^1.9.9"
30
+
}
31
+
}
+844
-2472
frontend/pnpm-lock.yaml
+844
-2472
frontend/pnpm-lock.yaml
···
8
8
9
9
.:
10
10
dependencies:
11
-
astro:
12
-
specifier: ^5.9.1
13
-
version: 5.9.1(@types/node@22.15.30)(rollup@4.42.0)(typescript@5.8.3)
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
20
+
'@atcute/oauth-browser-client':
21
+
specifier: ^1.0.26
22
+
version: 1.0.26
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
32
+
devDependencies:
33
+
'@types/node':
34
+
specifier: ^24.3.0
35
+
version: 24.3.0
36
+
prettier:
37
+
specifier: ^3.6.2
38
+
version: 3.6.2
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))
42
+
typescript:
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))
14
51
15
52
packages:
16
53
17
-
'@astrojs/compiler@2.12.1':
18
-
resolution: {integrity: sha512-WDSyVIiz7sNcJcCJxJFITu6XjfGhJ50Z0auyaWsrM+xb07IlhBLFtQuDkNy0caVHWNcKTM2LISAaHhgkRqGAVg==}
54
+
'@ampproject/remapping@2.3.0':
55
+
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
56
+
engines: {node: '>=6.0.0'}
19
57
20
-
'@astrojs/internal-helpers@0.6.1':
21
-
resolution: {integrity: sha512-l5Pqf6uZu31aG+3Lv8nl/3s4DbUzdlxTWDof4pEpto6GUJNhhCbelVi9dEyurOVyqaelwmS9oSyOWOENSfgo9A==}
58
+
'@atcute/client@4.0.3':
59
+
resolution: {integrity: sha512-RIOZWFVLca/HiPAAUDqQPOdOreCxTbL5cb+WUf5yqQOKIu5yEAP3eksinmlLmgIrlr5qVOE7brazUUzaskFCfw==}
22
60
23
-
'@astrojs/markdown-remark@6.3.2':
24
-
resolution: {integrity: sha512-bO35JbWpVvyKRl7cmSJD822e8YA8ThR/YbUsciWNA7yTcqpIAL2hJDToWP5KcZBWxGT6IOdOkHSXARSNZc4l/Q==}
61
+
'@atcute/identity-resolver@1.1.3':
62
+
resolution: {integrity: sha512-KZgGgg99CWaV7Df3+h3X/WMrDzTPQVfsaoIVbTNLx2B56BvCL2EmaxPSVw/7BFUJMZHlVU4rtoEB4lyvNyMswA==}
63
+
peerDependencies:
64
+
'@atcute/identity': ^1.0.0
25
65
26
-
'@astrojs/prism@3.3.0':
27
-
resolution: {integrity: sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ==}
28
-
engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0}
66
+
'@atcute/identity@1.0.3':
67
+
resolution: {integrity: sha512-mNMxbKHFGys03A8JXKk0KfMBzdd0vrYMzZZWjpw1nYTs0+ea6bo5S1hwqVUZxHdo1gFHSe/t63jxQIF4yL9aKw==}
29
68
30
-
'@astrojs/telemetry@3.3.0':
31
-
resolution: {integrity: sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ==}
32
-
engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0}
69
+
'@atcute/lexicons@1.1.1':
70
+
resolution: {integrity: sha512-k6qy5p3j9fJJ6ekaMPfEfp3ni4TW/XNuH9ZmsuwC0fi0tOjp+Fa8ZQakHwnqOzFt/cVBfGcmYE/lKNAbeTjgUg==}
71
+
72
+
'@atcute/multibase@1.1.4':
73
+
resolution: {integrity: sha512-NUf5AeeSOmuZHGU+4GAaMtISJoG+ZHtW/vUVA4lK/YDt/7LODAW0Fd0NNIIUPVUoW0xJS6zSEIWvwLLuxmEHhA==}
74
+
75
+
'@atcute/oauth-browser-client@1.0.26':
76
+
resolution: {integrity: sha512-z8VUmwRO1sFu5Dq1qYQOQLenkTSNaOyzlUZhVwFR41ru+AP84MS5UHHW/NsdC1xJAq1v6mlLySJ+pjxdDW8IYA==}
77
+
78
+
'@atcute/uint8array@1.0.3':
79
+
resolution: {integrity: sha512-M/K+ihiVW8Pl2PFLzaC4E3l4JaZ1IH05Q0AbPWUC4cVHnd/gZ/1kAF5ngdtGvJeDMirHZ2VAy7OmAsPwR/2nlA==}
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'}
33
125
34
126
'@babel/helper-string-parser@7.27.1':
35
127
resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
···
39
131
resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==}
40
132
engines: {node: '>=6.9.0'}
41
133
42
-
'@babel/parser@7.27.5':
43
-
resolution: {integrity: sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==}
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==}
44
144
engines: {node: '>=6.0.0'}
45
145
hasBin: true
46
146
47
-
'@babel/types@7.27.6':
48
-
resolution: {integrity: sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==}
147
+
'@babel/plugin-syntax-jsx@7.27.1':
148
+
resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==}
49
149
engines: {node: '>=6.9.0'}
150
+
peerDependencies:
151
+
'@babel/core': ^7.0.0-0
50
152
51
-
'@capsizecss/unpack@2.4.0':
52
-
resolution: {integrity: sha512-GrSU71meACqcmIUxPYOJvGKF0yryjN/L1aCuE9DViCTJI7bfkjgYDPD1zbNDcINJwSSP6UaBZY9GAbYDO7re0Q==}
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
53
158
54
-
'@emnapi/runtime@1.4.3':
55
-
resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==}
159
+
'@babel/template@7.27.2':
160
+
resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==}
161
+
engines: {node: '>=6.9.0'}
56
162
57
-
'@esbuild/aix-ppc64@0.25.5':
58
-
resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==}
163
+
'@babel/traverse@7.28.3':
164
+
resolution: {integrity: sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ==}
165
+
engines: {node: '>=6.9.0'}
166
+
167
+
'@babel/types@7.28.2':
168
+
resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==}
169
+
engines: {node: '>=6.9.0'}
170
+
171
+
'@badrap/valita@0.4.6':
172
+
resolution: {integrity: sha512-4kdqcjyxo/8RQ8ayjms47HCWZIF5981oE5nIenbfThKDxWXtEHKipAOWlflpPJzZx9y/JWYQkp18Awr7VuepFg==}
173
+
engines: {node: '>= 18'}
174
+
175
+
'@esbuild/aix-ppc64@0.25.9':
176
+
resolution: {integrity: sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==}
59
177
engines: {node: '>=18'}
60
178
cpu: [ppc64]
61
179
os: [aix]
62
180
63
-
'@esbuild/android-arm64@0.25.5':
64
-
resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==}
181
+
'@esbuild/android-arm64@0.25.9':
182
+
resolution: {integrity: sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==}
65
183
engines: {node: '>=18'}
66
184
cpu: [arm64]
67
185
os: [android]
68
186
69
-
'@esbuild/android-arm@0.25.5':
70
-
resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==}
187
+
'@esbuild/android-arm@0.25.9':
188
+
resolution: {integrity: sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==}
71
189
engines: {node: '>=18'}
72
190
cpu: [arm]
73
191
os: [android]
74
192
75
-
'@esbuild/android-x64@0.25.5':
76
-
resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==}
193
+
'@esbuild/android-x64@0.25.9':
194
+
resolution: {integrity: sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==}
77
195
engines: {node: '>=18'}
78
196
cpu: [x64]
79
197
os: [android]
80
198
81
-
'@esbuild/darwin-arm64@0.25.5':
82
-
resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==}
199
+
'@esbuild/darwin-arm64@0.25.9':
200
+
resolution: {integrity: sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==}
83
201
engines: {node: '>=18'}
84
202
cpu: [arm64]
85
203
os: [darwin]
86
204
87
-
'@esbuild/darwin-x64@0.25.5':
88
-
resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==}
205
+
'@esbuild/darwin-x64@0.25.9':
206
+
resolution: {integrity: sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==}
89
207
engines: {node: '>=18'}
90
208
cpu: [x64]
91
209
os: [darwin]
92
210
93
-
'@esbuild/freebsd-arm64@0.25.5':
94
-
resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==}
211
+
'@esbuild/freebsd-arm64@0.25.9':
212
+
resolution: {integrity: sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==}
95
213
engines: {node: '>=18'}
96
214
cpu: [arm64]
97
215
os: [freebsd]
98
216
99
-
'@esbuild/freebsd-x64@0.25.5':
100
-
resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==}
217
+
'@esbuild/freebsd-x64@0.25.9':
218
+
resolution: {integrity: sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==}
101
219
engines: {node: '>=18'}
102
220
cpu: [x64]
103
221
os: [freebsd]
104
222
105
-
'@esbuild/linux-arm64@0.25.5':
106
-
resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==}
223
+
'@esbuild/linux-arm64@0.25.9':
224
+
resolution: {integrity: sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==}
107
225
engines: {node: '>=18'}
108
226
cpu: [arm64]
109
227
os: [linux]
110
228
111
-
'@esbuild/linux-arm@0.25.5':
112
-
resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==}
229
+
'@esbuild/linux-arm@0.25.9':
230
+
resolution: {integrity: sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==}
113
231
engines: {node: '>=18'}
114
232
cpu: [arm]
115
233
os: [linux]
116
234
117
-
'@esbuild/linux-ia32@0.25.5':
118
-
resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==}
235
+
'@esbuild/linux-ia32@0.25.9':
236
+
resolution: {integrity: sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==}
119
237
engines: {node: '>=18'}
120
238
cpu: [ia32]
121
239
os: [linux]
122
240
123
-
'@esbuild/linux-loong64@0.25.5':
124
-
resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==}
241
+
'@esbuild/linux-loong64@0.25.9':
242
+
resolution: {integrity: sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==}
125
243
engines: {node: '>=18'}
126
244
cpu: [loong64]
127
245
os: [linux]
128
246
129
-
'@esbuild/linux-mips64el@0.25.5':
130
-
resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==}
247
+
'@esbuild/linux-mips64el@0.25.9':
248
+
resolution: {integrity: sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==}
131
249
engines: {node: '>=18'}
132
250
cpu: [mips64el]
133
251
os: [linux]
134
252
135
-
'@esbuild/linux-ppc64@0.25.5':
136
-
resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==}
253
+
'@esbuild/linux-ppc64@0.25.9':
254
+
resolution: {integrity: sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==}
137
255
engines: {node: '>=18'}
138
256
cpu: [ppc64]
139
257
os: [linux]
140
258
141
-
'@esbuild/linux-riscv64@0.25.5':
142
-
resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==}
259
+
'@esbuild/linux-riscv64@0.25.9':
260
+
resolution: {integrity: sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==}
143
261
engines: {node: '>=18'}
144
262
cpu: [riscv64]
145
263
os: [linux]
146
264
147
-
'@esbuild/linux-s390x@0.25.5':
148
-
resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==}
265
+
'@esbuild/linux-s390x@0.25.9':
266
+
resolution: {integrity: sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==}
149
267
engines: {node: '>=18'}
150
268
cpu: [s390x]
151
269
os: [linux]
152
270
153
-
'@esbuild/linux-x64@0.25.5':
154
-
resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==}
271
+
'@esbuild/linux-x64@0.25.9':
272
+
resolution: {integrity: sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==}
155
273
engines: {node: '>=18'}
156
274
cpu: [x64]
157
275
os: [linux]
158
276
159
-
'@esbuild/netbsd-arm64@0.25.5':
160
-
resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==}
277
+
'@esbuild/netbsd-arm64@0.25.9':
278
+
resolution: {integrity: sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==}
161
279
engines: {node: '>=18'}
162
280
cpu: [arm64]
163
281
os: [netbsd]
164
282
165
-
'@esbuild/netbsd-x64@0.25.5':
166
-
resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==}
283
+
'@esbuild/netbsd-x64@0.25.9':
284
+
resolution: {integrity: sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==}
167
285
engines: {node: '>=18'}
168
286
cpu: [x64]
169
287
os: [netbsd]
170
288
171
-
'@esbuild/openbsd-arm64@0.25.5':
172
-
resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==}
289
+
'@esbuild/openbsd-arm64@0.25.9':
290
+
resolution: {integrity: sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==}
173
291
engines: {node: '>=18'}
174
292
cpu: [arm64]
175
293
os: [openbsd]
176
294
177
-
'@esbuild/openbsd-x64@0.25.5':
178
-
resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==}
295
+
'@esbuild/openbsd-x64@0.25.9':
296
+
resolution: {integrity: sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==}
179
297
engines: {node: '>=18'}
180
298
cpu: [x64]
181
299
os: [openbsd]
182
300
183
-
'@esbuild/sunos-x64@0.25.5':
184
-
resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==}
301
+
'@esbuild/openharmony-arm64@0.25.9':
302
+
resolution: {integrity: sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==}
303
+
engines: {node: '>=18'}
304
+
cpu: [arm64]
305
+
os: [openharmony]
306
+
307
+
'@esbuild/sunos-x64@0.25.9':
308
+
resolution: {integrity: sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==}
185
309
engines: {node: '>=18'}
186
310
cpu: [x64]
187
311
os: [sunos]
188
312
189
-
'@esbuild/win32-arm64@0.25.5':
190
-
resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==}
313
+
'@esbuild/win32-arm64@0.25.9':
314
+
resolution: {integrity: sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==}
191
315
engines: {node: '>=18'}
192
316
cpu: [arm64]
193
317
os: [win32]
194
318
195
-
'@esbuild/win32-ia32@0.25.5':
196
-
resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==}
319
+
'@esbuild/win32-ia32@0.25.9':
320
+
resolution: {integrity: sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==}
197
321
engines: {node: '>=18'}
198
322
cpu: [ia32]
199
323
os: [win32]
200
324
201
-
'@esbuild/win32-x64@0.25.5':
202
-
resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==}
325
+
'@esbuild/win32-x64@0.25.9':
326
+
resolution: {integrity: sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==}
203
327
engines: {node: '>=18'}
204
328
cpu: [x64]
205
329
os: [win32]
206
330
207
-
'@img/sharp-darwin-arm64@0.33.5':
208
-
resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==}
209
-
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
210
-
cpu: [arm64]
211
-
os: [darwin]
331
+
'@jridgewell/gen-mapping@0.3.13':
332
+
resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
212
333
213
-
'@img/sharp-darwin-x64@0.33.5':
214
-
resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==}
215
-
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
216
-
cpu: [x64]
217
-
os: [darwin]
334
+
'@jridgewell/resolve-uri@3.1.2':
335
+
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
336
+
engines: {node: '>=6.0.0'}
218
337
219
-
'@img/sharp-libvips-darwin-arm64@1.0.4':
220
-
resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==}
221
-
cpu: [arm64]
222
-
os: [darwin]
338
+
'@jridgewell/sourcemap-codec@1.5.5':
339
+
resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
223
340
224
-
'@img/sharp-libvips-darwin-x64@1.0.4':
225
-
resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==}
226
-
cpu: [x64]
227
-
os: [darwin]
341
+
'@jridgewell/trace-mapping@0.3.30':
342
+
resolution: {integrity: sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==}
228
343
229
-
'@img/sharp-libvips-linux-arm64@1.0.4':
230
-
resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==}
231
-
cpu: [arm64]
232
-
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}
233
346
234
-
'@img/sharp-libvips-linux-arm@1.0.5':
235
-
resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==}
236
-
cpu: [arm]
237
-
os: [linux]
347
+
'@nothing-but/utils@0.17.0':
348
+
resolution: {integrity: sha512-TuCHcHLOqDL0SnaAxACfuRHBNRgNJcNn9X0GiH5H3YSDBVquCr3qEIG3FOQAuMyZCbu9w8nk2CHhOsn7IvhIwQ==}
238
349
239
-
'@img/sharp-libvips-linux-s390x@1.0.4':
240
-
resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==}
241
-
cpu: [s390x]
242
-
os: [linux]
243
-
244
-
'@img/sharp-libvips-linux-x64@1.0.4':
245
-
resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==}
246
-
cpu: [x64]
247
-
os: [linux]
248
-
249
-
'@img/sharp-libvips-linuxmusl-arm64@1.0.4':
250
-
resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==}
251
-
cpu: [arm64]
252
-
os: [linux]
253
-
254
-
'@img/sharp-libvips-linuxmusl-x64@1.0.4':
255
-
resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==}
256
-
cpu: [x64]
257
-
os: [linux]
258
-
259
-
'@img/sharp-linux-arm64@0.33.5':
260
-
resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==}
261
-
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
262
-
cpu: [arm64]
263
-
os: [linux]
264
-
265
-
'@img/sharp-linux-arm@0.33.5':
266
-
resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==}
267
-
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
268
-
cpu: [arm]
269
-
os: [linux]
270
-
271
-
'@img/sharp-linux-s390x@0.33.5':
272
-
resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==}
273
-
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
274
-
cpu: [s390x]
275
-
os: [linux]
276
-
277
-
'@img/sharp-linux-x64@0.33.5':
278
-
resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==}
279
-
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
280
-
cpu: [x64]
281
-
os: [linux]
282
-
283
-
'@img/sharp-linuxmusl-arm64@0.33.5':
284
-
resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==}
285
-
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
286
-
cpu: [arm64]
287
-
os: [linux]
288
-
289
-
'@img/sharp-linuxmusl-x64@0.33.5':
290
-
resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==}
291
-
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
292
-
cpu: [x64]
293
-
os: [linux]
294
-
295
-
'@img/sharp-wasm32@0.33.5':
296
-
resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==}
297
-
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
298
-
cpu: [wasm32]
299
-
300
-
'@img/sharp-win32-ia32@0.33.5':
301
-
resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==}
302
-
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
303
-
cpu: [ia32]
304
-
os: [win32]
305
-
306
-
'@img/sharp-win32-x64@0.33.5':
307
-
resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==}
308
-
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
309
-
cpu: [x64]
310
-
os: [win32]
311
-
312
-
'@jridgewell/sourcemap-codec@1.5.0':
313
-
resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
314
-
315
-
'@oslojs/encoding@1.1.0':
316
-
resolution: {integrity: sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==}
317
-
318
-
'@rollup/pluginutils@5.1.4':
319
-
resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==}
320
-
engines: {node: '>=14.0.0'}
321
-
peerDependencies:
322
-
rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
323
-
peerDependenciesMeta:
324
-
rollup:
325
-
optional: true
326
-
327
-
'@rollup/rollup-android-arm-eabi@4.42.0':
328
-
resolution: {integrity: sha512-gldmAyS9hpj+H6LpRNlcjQWbuKUtb94lodB9uCz71Jm+7BxK1VIOo7y62tZZwxhA7j1ylv/yQz080L5WkS+LoQ==}
350
+
'@rollup/rollup-android-arm-eabi@4.47.1':
351
+
resolution: {integrity: sha512-lTahKRJip0knffA/GTNFJMrToD+CM+JJ+Qt5kjzBK/sFQ0EWqfKW3AYQSlZXN98tX0lx66083U9JYIMioMMK7g==}
329
352
cpu: [arm]
330
353
os: [android]
331
354
332
-
'@rollup/rollup-android-arm64@4.42.0':
333
-
resolution: {integrity: sha512-bpRipfTgmGFdCZDFLRvIkSNO1/3RGS74aWkJJTFJBH7h3MRV4UijkaEUeOMbi9wxtxYmtAbVcnMtHTPBhLEkaw==}
355
+
'@rollup/rollup-android-arm64@4.47.1':
356
+
resolution: {integrity: sha512-uqxkb3RJLzlBbh/bbNQ4r7YpSZnjgMgyoEOY7Fy6GCbelkDSAzeiogxMG9TfLsBbqmGsdDObo3mzGqa8hps4MA==}
334
357
cpu: [arm64]
335
358
os: [android]
336
359
337
-
'@rollup/rollup-darwin-arm64@4.42.0':
338
-
resolution: {integrity: sha512-JxHtA081izPBVCHLKnl6GEA0w3920mlJPLh89NojpU2GsBSB6ypu4erFg/Wx1qbpUbepn0jY4dVWMGZM8gplgA==}
360
+
'@rollup/rollup-darwin-arm64@4.47.1':
361
+
resolution: {integrity: sha512-tV6reObmxBDS4DDyLzTDIpymthNlxrLBGAoQx6m2a7eifSNEZdkXQl1PE4ZjCkEDPVgNXSzND/k9AQ3mC4IOEQ==}
339
362
cpu: [arm64]
340
363
os: [darwin]
341
364
342
-
'@rollup/rollup-darwin-x64@4.42.0':
343
-
resolution: {integrity: sha512-rv5UZaWVIJTDMyQ3dCEK+m0SAn6G7H3PRc2AZmExvbDvtaDc+qXkei0knQWcI3+c9tEs7iL/4I4pTQoPbNL2SA==}
365
+
'@rollup/rollup-darwin-x64@4.47.1':
366
+
resolution: {integrity: sha512-XuJRPTnMk1lwsSnS3vYyVMu4x/+WIw1MMSiqj5C4j3QOWsMzbJEK90zG+SWV1h0B1ABGCQ0UZUjti+TQK35uHQ==}
344
367
cpu: [x64]
345
368
os: [darwin]
346
369
347
-
'@rollup/rollup-freebsd-arm64@4.42.0':
348
-
resolution: {integrity: sha512-fJcN4uSGPWdpVmvLuMtALUFwCHgb2XiQjuECkHT3lWLZhSQ3MBQ9pq+WoWeJq2PrNxr9rPM1Qx+IjyGj8/c6zQ==}
370
+
'@rollup/rollup-freebsd-arm64@4.47.1':
371
+
resolution: {integrity: sha512-79BAm8Ag/tmJ5asCqgOXsb3WY28Rdd5Lxj8ONiQzWzy9LvWORd5qVuOnjlqiWWZJw+dWewEktZb5yiM1DLLaHw==}
349
372
cpu: [arm64]
350
373
os: [freebsd]
351
374
352
-
'@rollup/rollup-freebsd-x64@4.42.0':
353
-
resolution: {integrity: sha512-CziHfyzpp8hJpCVE/ZdTizw58gr+m7Y2Xq5VOuCSrZR++th2xWAz4Nqk52MoIIrV3JHtVBhbBsJcAxs6NammOQ==}
375
+
'@rollup/rollup-freebsd-x64@4.47.1':
376
+
resolution: {integrity: sha512-OQ2/ZDGzdOOlyfqBiip0ZX/jVFekzYrGtUsqAfLDbWy0jh1PUU18+jYp8UMpqhly5ltEqotc2miLngf9FPSWIA==}
354
377
cpu: [x64]
355
378
os: [freebsd]
356
379
357
-
'@rollup/rollup-linux-arm-gnueabihf@4.42.0':
358
-
resolution: {integrity: sha512-UsQD5fyLWm2Fe5CDM7VPYAo+UC7+2Px4Y+N3AcPh/LdZu23YcuGPegQly++XEVaC8XUTFVPscl5y5Cl1twEI4A==}
380
+
'@rollup/rollup-linux-arm-gnueabihf@4.47.1':
381
+
resolution: {integrity: sha512-HZZBXJL1udxlCVvoVadstgiU26seKkHbbAMLg7680gAcMnRNP9SAwTMVet02ANA94kXEI2VhBnXs4e5nf7KG2A==}
359
382
cpu: [arm]
360
383
os: [linux]
361
384
362
-
'@rollup/rollup-linux-arm-musleabihf@4.42.0':
363
-
resolution: {integrity: sha512-/i8NIrlgc/+4n1lnoWl1zgH7Uo0XK5xK3EDqVTf38KvyYgCU/Rm04+o1VvvzJZnVS5/cWSd07owkzcVasgfIkQ==}
385
+
'@rollup/rollup-linux-arm-musleabihf@4.47.1':
386
+
resolution: {integrity: sha512-sZ5p2I9UA7T950JmuZ3pgdKA6+RTBr+0FpK427ExW0t7n+QwYOcmDTK/aRlzoBrWyTpJNlS3kacgSlSTUg6P/Q==}
364
387
cpu: [arm]
365
388
os: [linux]
366
389
367
-
'@rollup/rollup-linux-arm64-gnu@4.42.0':
368
-
resolution: {integrity: sha512-eoujJFOvoIBjZEi9hJnXAbWg+Vo1Ov8n/0IKZZcPZ7JhBzxh2A+2NFyeMZIRkY9iwBvSjloKgcvnjTbGKHE44Q==}
390
+
'@rollup/rollup-linux-arm64-gnu@4.47.1':
391
+
resolution: {integrity: sha512-3hBFoqPyU89Dyf1mQRXCdpc6qC6At3LV6jbbIOZd72jcx7xNk3aAp+EjzAtN6sDlmHFzsDJN5yeUySvorWeRXA==}
369
392
cpu: [arm64]
370
393
os: [linux]
371
394
372
-
'@rollup/rollup-linux-arm64-musl@4.42.0':
373
-
resolution: {integrity: sha512-/3NrcOWFSR7RQUQIuZQChLND36aTU9IYE4j+TB40VU78S+RA0IiqHR30oSh6P1S9f9/wVOenHQnacs/Byb824g==}
395
+
'@rollup/rollup-linux-arm64-musl@4.47.1':
396
+
resolution: {integrity: sha512-49J4FnMHfGodJWPw73Ve+/hsPjZgcXQGkmqBGZFvltzBKRS+cvMiWNLadOMXKGnYRhs1ToTGM0sItKISoSGUNA==}
374
397
cpu: [arm64]
375
398
os: [linux]
376
399
377
-
'@rollup/rollup-linux-loongarch64-gnu@4.42.0':
378
-
resolution: {integrity: sha512-O8AplvIeavK5ABmZlKBq9/STdZlnQo7Sle0LLhVA7QT+CiGpNVe197/t8Aph9bhJqbDVGCHpY2i7QyfEDDStDg==}
400
+
'@rollup/rollup-linux-loongarch64-gnu@4.47.1':
401
+
resolution: {integrity: sha512-4yYU8p7AneEpQkRX03pbpLmE21z5JNys16F1BZBZg5fP9rIlb0TkeQjn5du5w4agConCCEoYIG57sNxjryHEGg==}
379
402
cpu: [loong64]
380
403
os: [linux]
381
404
382
-
'@rollup/rollup-linux-powerpc64le-gnu@4.42.0':
383
-
resolution: {integrity: sha512-6Qb66tbKVN7VyQrekhEzbHRxXXFFD8QKiFAwX5v9Xt6FiJ3BnCVBuyBxa2fkFGqxOCSGGYNejxd8ht+q5SnmtA==}
405
+
'@rollup/rollup-linux-ppc64-gnu@4.47.1':
406
+
resolution: {integrity: sha512-fAiq+J28l2YMWgC39jz/zPi2jqc0y3GSRo1yyxlBHt6UN0yYgnegHSRPa3pnHS5amT/efXQrm0ug5+aNEu9UuQ==}
384
407
cpu: [ppc64]
385
408
os: [linux]
386
409
387
-
'@rollup/rollup-linux-riscv64-gnu@4.42.0':
388
-
resolution: {integrity: sha512-KQETDSEBamQFvg/d8jajtRwLNBlGc3aKpaGiP/LvEbnmVUKlFta1vqJqTrvPtsYsfbE/DLg5CC9zyXRX3fnBiA==}
410
+
'@rollup/rollup-linux-riscv64-gnu@4.47.1':
411
+
resolution: {integrity: sha512-daoT0PMENNdjVYYU9xec30Y2prb1AbEIbb64sqkcQcSaR0zYuKkoPuhIztfxuqN82KYCKKrj+tQe4Gi7OSm1ow==}
389
412
cpu: [riscv64]
390
413
os: [linux]
391
414
392
-
'@rollup/rollup-linux-riscv64-musl@4.42.0':
393
-
resolution: {integrity: sha512-qMvnyjcU37sCo/tuC+JqeDKSuukGAd+pVlRl/oyDbkvPJ3awk6G6ua7tyum02O3lI+fio+eM5wsVd66X0jQtxw==}
415
+
'@rollup/rollup-linux-riscv64-musl@4.47.1':
416
+
resolution: {integrity: sha512-JNyXaAhWtdzfXu5pUcHAuNwGQKevR+6z/poYQKVW+pLaYOj9G1meYc57/1Xv2u4uTxfu9qEWmNTjv/H/EpAisw==}
394
417
cpu: [riscv64]
395
418
os: [linux]
396
419
397
-
'@rollup/rollup-linux-s390x-gnu@4.42.0':
398
-
resolution: {integrity: sha512-I2Y1ZUgTgU2RLddUHXTIgyrdOwljjkmcZ/VilvaEumtS3Fkuhbw4p4hgHc39Ypwvo2o7sBFNl2MquNvGCa55Iw==}
420
+
'@rollup/rollup-linux-s390x-gnu@4.47.1':
421
+
resolution: {integrity: sha512-U/CHbqKSwEQyZXjCpY43/GLYcTVKEXeRHw0rMBJP7fP3x6WpYG4LTJWR3ic6TeYKX6ZK7mrhltP4ppolyVhLVQ==}
399
422
cpu: [s390x]
400
423
os: [linux]
401
424
402
-
'@rollup/rollup-linux-x64-gnu@4.42.0':
403
-
resolution: {integrity: sha512-Gfm6cV6mj3hCUY8TqWa63DB8Mx3NADoFwiJrMpoZ1uESbK8FQV3LXkhfry+8bOniq9pqY1OdsjFWNsSbfjPugw==}
425
+
'@rollup/rollup-linux-x64-gnu@4.47.1':
426
+
resolution: {integrity: sha512-uTLEakjxOTElfeZIGWkC34u2auLHB1AYS6wBjPGI00bWdxdLcCzK5awjs25YXpqB9lS8S0vbO0t9ZcBeNibA7g==}
404
427
cpu: [x64]
405
428
os: [linux]
406
429
407
-
'@rollup/rollup-linux-x64-musl@4.42.0':
408
-
resolution: {integrity: sha512-g86PF8YZ9GRqkdi0VoGlcDUb4rYtQKyTD1IVtxxN4Hpe7YqLBShA7oHMKU6oKTCi3uxwW4VkIGnOaH/El8de3w==}
430
+
'@rollup/rollup-linux-x64-musl@4.47.1':
431
+
resolution: {integrity: sha512-Ft+d/9DXs30BK7CHCTX11FtQGHUdpNDLJW0HHLign4lgMgBcPFN3NkdIXhC5r9iwsMwYreBBc4Rho5ieOmKNVQ==}
409
432
cpu: [x64]
410
433
os: [linux]
411
434
412
-
'@rollup/rollup-win32-arm64-msvc@4.42.0':
413
-
resolution: {integrity: sha512-+axkdyDGSp6hjyzQ5m1pgcvQScfHnMCcsXkx8pTgy/6qBmWVhtRVlgxjWwDp67wEXXUr0x+vD6tp5W4x6V7u1A==}
435
+
'@rollup/rollup-win32-arm64-msvc@4.47.1':
436
+
resolution: {integrity: sha512-N9X5WqGYzZnjGAFsKSfYFtAShYjwOmFJoWbLg3dYixZOZqU7hdMq+/xyS14zKLhFhZDhP9VfkzQnsdk0ZDS9IA==}
414
437
cpu: [arm64]
415
438
os: [win32]
416
439
417
-
'@rollup/rollup-win32-ia32-msvc@4.42.0':
418
-
resolution: {integrity: sha512-F+5J9pelstXKwRSDq92J0TEBXn2nfUrQGg+HK1+Tk7VOL09e0gBqUHugZv7SW4MGrYj41oNCUe3IKCDGVlis2g==}
440
+
'@rollup/rollup-win32-ia32-msvc@4.47.1':
441
+
resolution: {integrity: sha512-O+KcfeCORZADEY8oQJk4HK8wtEOCRE4MdOkb8qGZQNun3jzmj2nmhV/B/ZaaZOkPmJyvm/gW9n0gsB4eRa1eiQ==}
419
442
cpu: [ia32]
420
443
os: [win32]
421
444
422
-
'@rollup/rollup-win32-x64-msvc@4.42.0':
423
-
resolution: {integrity: sha512-LpHiJRwkaVz/LqjHjK8LCi8osq7elmpwujwbXKNW88bM8eeGxavJIKKjkjpMHAh/2xfnrt1ZSnhTv41WYUHYmA==}
445
+
'@rollup/rollup-win32-x64-msvc@4.47.1':
446
+
resolution: {integrity: sha512-CpKnYa8eHthJa3c+C38v/E+/KZyF1Jdh2Cz3DyKZqEWYgrM1IHFArXNWvBLPQCKUEsAqqKX27tTqVEFbDNUcOA==}
424
447
cpu: [x64]
425
448
os: [win32]
426
449
427
-
'@shikijs/core@3.6.0':
428
-
resolution: {integrity: sha512-9By7Xb3olEX0o6UeJyPLI1PE1scC4d3wcVepvtv2xbuN9/IThYN4Wcwh24rcFeASzPam11MCq8yQpwwzCgSBRw==}
450
+
'@solid-devtools/debugger@0.28.1':
451
+
resolution: {integrity: sha512-6qIUI6VYkXoRnL8oF5bvh2KgH71qlJ18hNw/mwSyY6v48eb80ZR48/5PDXufUa3q+MBSuYa1uqTMwLewpay9eg==}
452
+
peerDependencies:
453
+
solid-js: ^1.9.0
429
454
430
-
'@shikijs/engine-javascript@3.6.0':
431
-
resolution: {integrity: sha512-7YnLhZG/TU05IHMG14QaLvTW/9WiK8SEYafceccHUSXs2Qr5vJibUwsDfXDLmRi0zHdzsxrGKpSX6hnqe0k8nA==}
455
+
'@solid-devtools/shared@0.20.0':
456
+
resolution: {integrity: sha512-o5TACmUOQsxpzpOKCjbQqGk8wL8PMi+frXG9WNu4Lh3PQVUB6hs95Kl/S8xc++zwcMguUKZJn8h5URUiMOca6Q==}
457
+
peerDependencies:
458
+
solid-js: ^1.9.0
432
459
433
-
'@shikijs/engine-oniguruma@3.6.0':
434
-
resolution: {integrity: sha512-nmOhIZ9yT3Grd+2plmW/d8+vZ2pcQmo/UnVwXMUXAKTXdi+LK0S08Ancrz5tQQPkxvjBalpMW2aKvwXfelauvA==}
460
+
'@solid-primitives/bounds@0.1.3':
461
+
resolution: {integrity: sha512-UbiyKMdSPmtijcEDnYLQL3zzaejpwWDAJJ4Gt5P0hgVs6A72piov0GyNw7V2SroH7NZFwxlYS22YmOr8A5xc1Q==}
462
+
peerDependencies:
463
+
solid-js: ^1.6.12
435
464
436
-
'@shikijs/langs@3.6.0':
437
-
resolution: {integrity: sha512-IdZkQJaLBu1LCYCwkr30hNuSDfllOT8RWYVZK1tD2J03DkiagYKRxj/pDSl8Didml3xxuyzUjgtioInwEQM/TA==}
465
+
'@solid-primitives/event-listener@2.4.3':
466
+
resolution: {integrity: sha512-h4VqkYFv6Gf+L7SQj+Y6puigL/5DIi7x5q07VZET7AWcS+9/G3WfIE9WheniHWJs51OEkRB43w6lDys5YeFceg==}
467
+
peerDependencies:
468
+
solid-js: ^1.6.12
438
469
439
-
'@shikijs/themes@3.6.0':
440
-
resolution: {integrity: sha512-Fq2j4nWr1DF4drvmhqKq8x5vVQ27VncF8XZMBuHuQMZvUSS3NBgpqfwz/FoGe36+W6PvniZ1yDlg2d4kmYDU6w==}
470
+
'@solid-primitives/keyboard@1.3.3':
471
+
resolution: {integrity: sha512-9dQHTTgLBqyAI7aavtO+HnpTVJgWQA1ghBSrmLtMu1SMxLPDuLfuNr+Tk5udb4AL4Ojg7h9JrKOGEEDqsJXWJA==}
472
+
peerDependencies:
473
+
solid-js: ^1.6.12
441
474
442
-
'@shikijs/types@3.6.0':
443
-
resolution: {integrity: sha512-cLWFiToxYu0aAzJqhXTQsFiJRTFDAGl93IrMSBNaGSzs7ixkLfdG6pH11HipuWFGW5vyx4X47W8HDQ7eSrmBUg==}
475
+
'@solid-primitives/media@2.3.3':
476
+
resolution: {integrity: sha512-hQ4hLOGvfbugQi5Eu1BFWAIJGIAzztq9x0h02xgBGl2l0Jaa3h7tg6bz5tV1NSuNYVGio4rPoa7zVQQLkkx9dA==}
477
+
peerDependencies:
478
+
solid-js: ^1.6.12
444
479
445
-
'@shikijs/vscode-textmate@10.0.2':
446
-
resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
480
+
'@solid-primitives/refs@1.1.2':
481
+
resolution: {integrity: sha512-K7tf2thy7L+YJjdqXspXOg5xvNEOH8tgEWsp0+1mQk3obHBRD6hEjYZk7p7FlJphSZImS35je3UfmWuD7MhDfg==}
482
+
peerDependencies:
483
+
solid-js: ^1.6.12
447
484
448
-
'@swc/helpers@0.5.17':
449
-
resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==}
485
+
'@solid-primitives/resize-observer@2.1.3':
486
+
resolution: {integrity: sha512-zBLje5E06TgOg93S7rGPldmhDnouNGhvfZVKOp+oG2XU8snA+GoCSSCz1M+jpNAg5Ek2EakU5UVQqL152WmdXQ==}
487
+
peerDependencies:
488
+
solid-js: ^1.6.12
450
489
451
-
'@types/debug@4.1.12':
452
-
resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
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
453
494
454
-
'@types/estree@1.0.7':
455
-
resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==}
495
+
'@solid-primitives/scheduled@1.5.2':
496
+
resolution: {integrity: sha512-/j2igE0xyNaHhj6kMfcUQn5rAVSTLbAX+CDEBm25hSNBmNiHLu2lM7Usj2kJJ5j36D67bE8wR1hBNA8hjtvsQA==}
497
+
peerDependencies:
498
+
solid-js: ^1.6.12
456
499
457
-
'@types/estree@1.0.8':
458
-
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
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
459
504
460
-
'@types/fontkit@2.0.8':
461
-
resolution: {integrity: sha512-wN+8bYxIpJf+5oZdrdtaX04qUuWHcKxcDEgRS9Qm9ZClSHjzEn13SxUC+5eRM+4yXIeTYk8mTzLAWGF64847ew==}
505
+
'@solid-primitives/styles@0.1.2':
506
+
resolution: {integrity: sha512-7iX5K+J5b1PRrbgw3Ki92uvU2LgQ0Kd/QMsrAZxDg5dpUBwMyTijZkA3bbs1ikZsT1oQhS41bTyKbjrXeU0Awg==}
507
+
peerDependencies:
508
+
solid-js: ^1.6.12
462
509
463
-
'@types/hast@3.0.4':
464
-
resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==}
510
+
'@solid-primitives/utils@6.3.2':
511
+
resolution: {integrity: sha512-hZ/M/qr25QOCcwDPOHtGjxTD8w2mNyVAYvcfgwzBHq2RwNqHNdDNsMZYap20+ruRwW4A3Cdkczyoz0TSxLCAPQ==}
512
+
peerDependencies:
513
+
solid-js: ^1.6.12
465
514
466
-
'@types/mdast@4.0.4':
467
-
resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==}
515
+
'@solidjs/router@0.15.3':
516
+
resolution: {integrity: sha512-iEbW8UKok2Oio7o6Y4VTzLj+KFCmQPGEpm1fS3xixwFBdclFVBvaQVeibl1jys4cujfAK5Kn6+uG2uBm3lxOMw==}
517
+
peerDependencies:
518
+
solid-js: ^1.8.6
468
519
469
-
'@types/ms@2.1.0':
470
-
resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
520
+
'@types/babel__core@7.20.5':
521
+
resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
471
522
472
-
'@types/nlcst@2.0.3':
473
-
resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==}
523
+
'@types/babel__generator@7.27.0':
524
+
resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==}
474
525
475
-
'@types/node@22.15.30':
476
-
resolution: {integrity: sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==}
526
+
'@types/babel__template@7.4.4':
527
+
resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==}
477
528
478
-
'@types/unist@3.0.3':
479
-
resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
529
+
'@types/babel__traverse@7.28.0':
530
+
resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==}
480
531
481
-
'@ungap/structured-clone@1.3.0':
482
-
resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
532
+
'@types/estree@1.0.8':
533
+
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
483
534
484
-
acorn@8.15.0:
485
-
resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==}
486
-
engines: {node: '>=0.4.0'}
487
-
hasBin: true
535
+
'@types/node@24.3.0':
536
+
resolution: {integrity: sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==}
488
537
489
-
ansi-align@3.0.1:
490
-
resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==}
538
+
babel-plugin-jsx-dom-expressions@0.40.1:
539
+
resolution: {integrity: sha512-b4iHuirqK7RgaMzB2Lsl7MqrlDgQtVRSSazyrmx7wB3T759ggGjod5Rkok5MfHjQXhR7tRPmdwoeGPqBnW2KfA==}
540
+
peerDependencies:
541
+
'@babel/core': ^7.20.12
491
542
492
-
ansi-regex@5.0.1:
493
-
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
494
-
engines: {node: '>=8'}
495
-
496
-
ansi-regex@6.1.0:
497
-
resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==}
498
-
engines: {node: '>=12'}
499
-
500
-
ansi-styles@6.2.1:
501
-
resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
502
-
engines: {node: '>=12'}
503
-
504
-
anymatch@3.1.3:
505
-
resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
506
-
engines: {node: '>= 8'}
507
-
508
-
argparse@2.0.1:
509
-
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
510
-
511
-
aria-query@5.3.2:
512
-
resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==}
513
-
engines: {node: '>= 0.4'}
514
-
515
-
array-iterate@2.0.1:
516
-
resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==}
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
517
551
518
-
astro@5.9.1:
519
-
resolution: {integrity: sha512-wxoJcTbuDZNFSv6EaL0PAlrp0Wx6VnOAULCXvy0scsV70oWMeUkdxuBxfO54JxO5Qgyvwj9h99y6E0elqOpGtA==}
520
-
engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'}
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}
521
555
hasBin: true
522
556
523
-
axobject-query@4.1.0:
524
-
resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
525
-
engines: {node: '>= 0.4'}
526
-
527
-
bail@2.0.2:
528
-
resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
529
-
530
-
base-64@1.0.0:
531
-
resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==}
532
-
533
-
base64-js@1.5.1:
534
-
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
535
-
536
-
blob-to-buffer@1.2.9:
537
-
resolution: {integrity: sha512-BF033y5fN6OCofD3vgHmNtwZWRcq9NLyyxyILx9hfMy1sXYy4ojFl765hJ2lP0YaN2fuxPaLO2Vzzoxy0FLFFA==}
538
-
539
-
boxen@8.0.1:
540
-
resolution: {integrity: sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==}
541
-
engines: {node: '>=18'}
542
-
543
-
brotli@1.3.3:
544
-
resolution: {integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==}
545
-
546
-
camelcase@8.0.0:
547
-
resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==}
548
-
engines: {node: '>=16'}
549
-
550
-
ccount@2.0.1:
551
-
resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
552
-
553
-
chalk@5.4.1:
554
-
resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==}
555
-
engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
556
-
557
-
character-entities-html4@2.1.0:
558
-
resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==}
559
-
560
-
character-entities-legacy@3.0.0:
561
-
resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==}
562
-
563
-
character-entities@2.0.2:
564
-
resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==}
565
-
566
-
chokidar@4.0.3:
567
-
resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
568
-
engines: {node: '>= 14.16.0'}
569
-
570
-
ci-info@4.2.0:
571
-
resolution: {integrity: sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==}
572
-
engines: {node: '>=8'}
573
-
574
-
cli-boxes@3.0.0:
575
-
resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==}
576
-
engines: {node: '>=10'}
577
-
578
-
clone@2.1.2:
579
-
resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==}
580
-
engines: {node: '>=0.8'}
581
-
582
-
clsx@2.1.1:
583
-
resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
584
-
engines: {node: '>=6'}
585
-
586
-
color-convert@2.0.1:
587
-
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
588
-
engines: {node: '>=7.0.0'}
589
-
590
-
color-name@1.1.4:
591
-
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
592
-
593
-
color-string@1.9.1:
594
-
resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
595
-
596
-
color@4.2.3:
597
-
resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
598
-
engines: {node: '>=12.5.0'}
599
-
600
-
comma-separated-tokens@2.0.3:
601
-
resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
602
-
603
-
common-ancestor-path@1.0.1:
604
-
resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==}
557
+
caniuse-lite@1.0.30001737:
558
+
resolution: {integrity: sha512-BiloLiXtQNrY5UyF0+1nSJLXUENuhka2pzy2Fx5pGxqavdrxSCW4U6Pn/PoG3Efspi2frRbHpBV2XsrPE6EDlw==}
605
559
606
-
cookie-es@1.2.2:
607
-
resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==}
560
+
convert-source-map@2.0.0:
561
+
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
608
562
609
-
cookie@1.0.2:
610
-
resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==}
611
-
engines: {node: '>=18'}
612
-
613
-
cross-fetch@3.2.0:
614
-
resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==}
615
-
616
-
crossws@0.3.5:
617
-
resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==}
618
-
619
-
css-tree@3.1.0:
620
-
resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==}
621
-
engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
622
-
623
-
cssesc@3.0.0:
624
-
resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
625
-
engines: {node: '>=4'}
626
-
hasBin: true
563
+
csstype@3.1.3:
564
+
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
627
565
628
566
debug@4.4.1:
629
567
resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==}
···
634
572
supports-color:
635
573
optional: true
636
574
637
-
decode-named-character-reference@1.1.0:
638
-
resolution: {integrity: sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==}
639
-
640
-
defu@6.1.4:
641
-
resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==}
642
-
643
-
dequal@2.0.3:
644
-
resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
645
-
engines: {node: '>=6'}
646
-
647
-
destr@2.0.5:
648
-
resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==}
649
-
650
-
detect-libc@2.0.4:
651
-
resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==}
652
-
engines: {node: '>=8'}
653
-
654
-
deterministic-object-hash@2.0.2:
655
-
resolution: {integrity: sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==}
656
-
engines: {node: '>=18'}
657
-
658
-
devalue@5.1.1:
659
-
resolution: {integrity: sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==}
660
-
661
-
devlop@1.1.0:
662
-
resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
663
-
664
-
dfa@1.2.0:
665
-
resolution: {integrity: sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==}
666
-
667
-
diff@5.2.0:
668
-
resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==}
669
-
engines: {node: '>=0.3.1'}
670
-
671
-
dlv@1.1.3:
672
-
resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
673
-
674
-
dset@3.1.4:
675
-
resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==}
676
-
engines: {node: '>=4'}
677
-
678
-
emoji-regex@10.4.0:
679
-
resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==}
680
-
681
-
emoji-regex@8.0.0:
682
-
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
575
+
electron-to-chromium@1.5.208:
576
+
resolution: {integrity: sha512-ozZyibehoe7tOhNaf16lKmljVf+3npZcJIEbJRVftVsmAg5TeA1mGS9dVCZzOwr2xT7xK15V0p7+GZqSPgkuPg==}
683
577
684
578
entities@6.0.1:
685
579
resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==}
686
580
engines: {node: '>=0.12'}
687
581
688
-
es-module-lexer@1.7.0:
689
-
resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==}
690
-
691
-
esbuild@0.25.5:
692
-
resolution: {integrity: sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==}
582
+
esbuild@0.25.9:
583
+
resolution: {integrity: sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==}
693
584
engines: {node: '>=18'}
694
585
hasBin: true
695
586
696
-
escape-string-regexp@5.0.0:
697
-
resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
698
-
engines: {node: '>=12'}
587
+
escalade@3.2.0:
588
+
resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
589
+
engines: {node: '>=6'}
699
590
700
-
estree-walker@2.0.2:
701
-
resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
591
+
esm-env@1.2.2:
592
+
resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==}
702
593
703
-
estree-walker@3.0.3:
704
-
resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
705
-
706
-
eventemitter3@5.0.1:
707
-
resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
708
-
709
-
extend@3.0.2:
710
-
resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
711
-
712
-
fast-deep-equal@3.1.3:
713
-
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
714
-
715
-
fdir@6.4.5:
716
-
resolution: {integrity: sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==}
594
+
fdir@6.5.0:
595
+
resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
596
+
engines: {node: '>=12.0.0'}
717
597
peerDependencies:
718
598
picomatch: ^3 || ^4
719
599
peerDependenciesMeta:
720
600
picomatch:
721
601
optional: true
722
602
723
-
flattie@1.1.1:
724
-
resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==}
725
-
engines: {node: '>=8'}
726
-
727
-
fontace@0.3.0:
728
-
resolution: {integrity: sha512-czoqATrcnxgWb/nAkfyIrRp6Q8biYj7nGnL6zfhTcX+JKKpWHFBnb8uNMw/kZr7u++3Y3wYSYoZgHkCcsuBpBg==}
729
-
730
-
fontkit@2.0.4:
731
-
resolution: {integrity: sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g==}
732
-
733
603
fsevents@2.3.3:
734
604
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
735
605
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
736
606
os: [darwin]
737
607
738
-
get-east-asian-width@1.3.0:
739
-
resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==}
740
-
engines: {node: '>=18'}
741
-
742
-
github-slugger@2.0.0:
743
-
resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==}
744
-
745
-
h3@1.15.3:
746
-
resolution: {integrity: sha512-z6GknHqyX0h9aQaTx22VZDf6QyZn+0Nh+Ym8O/u0SGSkyF5cuTJYKlc8MkzW3Nzf9LE1ivcpmYC3FUGpywhuUQ==}
747
-
748
-
hast-util-from-html@2.0.3:
749
-
resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==}
750
-
751
-
hast-util-from-parse5@8.0.3:
752
-
resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==}
753
-
754
-
hast-util-is-element@3.0.0:
755
-
resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==}
756
-
757
-
hast-util-parse-selector@4.0.0:
758
-
resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==}
759
-
760
-
hast-util-raw@9.1.0:
761
-
resolution: {integrity: sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==}
762
-
763
-
hast-util-to-html@9.0.5:
764
-
resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==}
765
-
766
-
hast-util-to-parse5@8.0.0:
767
-
resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==}
768
-
769
-
hast-util-to-text@4.0.2:
770
-
resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==}
771
-
772
-
hast-util-whitespace@3.0.0:
773
-
resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
774
-
775
-
hastscript@9.0.1:
776
-
resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==}
777
-
778
-
html-escaper@3.0.3:
779
-
resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==}
780
-
781
-
html-void-elements@3.0.0:
782
-
resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==}
783
-
784
-
http-cache-semantics@4.2.0:
785
-
resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==}
786
-
787
-
import-meta-resolve@4.1.0:
788
-
resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==}
789
-
790
-
iron-webcrypto@1.2.1:
791
-
resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==}
792
-
793
-
is-arrayish@0.3.2:
794
-
resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
795
-
796
-
is-docker@3.0.0:
797
-
resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==}
798
-
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
799
-
hasBin: true
800
-
801
-
is-fullwidth-code-point@3.0.0:
802
-
resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
803
-
engines: {node: '>=8'}
608
+
gensync@1.0.0-beta.2:
609
+
resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
610
+
engines: {node: '>=6.9.0'}
804
611
805
-
is-inside-container@1.0.0:
806
-
resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==}
807
-
engines: {node: '>=14.16'}
808
-
hasBin: true
809
-
810
-
is-plain-obj@4.1.0:
811
-
resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
812
-
engines: {node: '>=12'}
612
+
html-entities@2.3.3:
613
+
resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==}
813
614
814
-
is-wsl@3.1.0:
815
-
resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==}
816
-
engines: {node: '>=16'}
615
+
is-what@4.1.16:
616
+
resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==}
617
+
engines: {node: '>=12.13'}
817
618
818
-
js-yaml@4.1.0:
819
-
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
820
-
hasBin: true
619
+
js-tokens@4.0.0:
620
+
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
821
621
822
-
kleur@3.0.3:
823
-
resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
622
+
jsesc@3.1.0:
623
+
resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
824
624
engines: {node: '>=6'}
625
+
hasBin: true
825
626
826
-
kleur@4.1.5:
827
-
resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
627
+
json5@2.2.3:
628
+
resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
828
629
engines: {node: '>=6'}
829
-
830
-
longest-streak@3.1.0:
831
-
resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
832
-
833
-
lru-cache@10.4.3:
834
-
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
835
-
836
-
magic-string@0.30.17:
837
-
resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
838
-
839
-
magicast@0.3.5:
840
-
resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==}
841
-
842
-
markdown-table@3.0.4:
843
-
resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==}
844
-
845
-
mdast-util-definitions@6.0.0:
846
-
resolution: {integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==}
847
-
848
-
mdast-util-find-and-replace@3.0.2:
849
-
resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==}
850
-
851
-
mdast-util-from-markdown@2.0.2:
852
-
resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==}
853
-
854
-
mdast-util-gfm-autolink-literal@2.0.1:
855
-
resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==}
856
-
857
-
mdast-util-gfm-footnote@2.1.0:
858
-
resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==}
859
-
860
-
mdast-util-gfm-strikethrough@2.0.0:
861
-
resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==}
862
-
863
-
mdast-util-gfm-table@2.0.0:
864
-
resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==}
865
-
866
-
mdast-util-gfm-task-list-item@2.0.0:
867
-
resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==}
868
-
869
-
mdast-util-gfm@3.1.0:
870
-
resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==}
871
-
872
-
mdast-util-phrasing@4.1.0:
873
-
resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==}
874
-
875
-
mdast-util-to-hast@13.2.0:
876
-
resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==}
877
-
878
-
mdast-util-to-markdown@2.1.2:
879
-
resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==}
880
-
881
-
mdast-util-to-string@4.0.0:
882
-
resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==}
883
-
884
-
mdn-data@2.12.2:
885
-
resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==}
886
-
887
-
micromark-core-commonmark@2.0.3:
888
-
resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==}
889
-
890
-
micromark-extension-gfm-autolink-literal@2.1.0:
891
-
resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==}
892
-
893
-
micromark-extension-gfm-footnote@2.1.0:
894
-
resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==}
895
-
896
-
micromark-extension-gfm-strikethrough@2.1.0:
897
-
resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==}
898
-
899
-
micromark-extension-gfm-table@2.1.1:
900
-
resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==}
901
-
902
-
micromark-extension-gfm-tagfilter@2.0.0:
903
-
resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==}
904
-
905
-
micromark-extension-gfm-task-list-item@2.1.0:
906
-
resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==}
907
-
908
-
micromark-extension-gfm@3.0.0:
909
-
resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==}
910
-
911
-
micromark-factory-destination@2.0.1:
912
-
resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==}
913
-
914
-
micromark-factory-label@2.0.1:
915
-
resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==}
916
-
917
-
micromark-factory-space@2.0.1:
918
-
resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==}
919
-
920
-
micromark-factory-title@2.0.1:
921
-
resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==}
630
+
hasBin: true
922
631
923
-
micromark-factory-whitespace@2.0.1:
924
-
resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==}
632
+
lru-cache@5.1.1:
633
+
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
925
634
926
-
micromark-util-character@2.1.1:
927
-
resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==}
928
-
929
-
micromark-util-chunked@2.0.1:
930
-
resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==}
931
-
932
-
micromark-util-classify-character@2.0.1:
933
-
resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==}
934
-
935
-
micromark-util-combine-extensions@2.0.1:
936
-
resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==}
937
-
938
-
micromark-util-decode-numeric-character-reference@2.0.2:
939
-
resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==}
940
-
941
-
micromark-util-decode-string@2.0.1:
942
-
resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==}
943
-
944
-
micromark-util-encode@2.0.1:
945
-
resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==}
946
-
947
-
micromark-util-html-tag-name@2.0.1:
948
-
resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==}
949
-
950
-
micromark-util-normalize-identifier@2.0.1:
951
-
resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==}
952
-
953
-
micromark-util-resolve-all@2.0.1:
954
-
resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==}
955
-
956
-
micromark-util-sanitize-uri@2.0.1:
957
-
resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==}
958
-
959
-
micromark-util-subtokenize@2.1.0:
960
-
resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==}
961
-
962
-
micromark-util-symbol@2.0.1:
963
-
resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==}
964
-
965
-
micromark-util-types@2.0.2:
966
-
resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==}
967
-
968
-
micromark@4.0.2:
969
-
resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==}
970
-
971
-
mrmime@2.0.1:
972
-
resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==}
973
-
engines: {node: '>=10'}
635
+
merge-anything@5.1.7:
636
+
resolution: {integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==}
637
+
engines: {node: '>=12.13'}
974
638
975
639
ms@2.1.3:
976
640
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
···
980
644
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
981
645
hasBin: true
982
646
983
-
neotraverse@0.6.18:
984
-
resolution: {integrity: sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==}
985
-
engines: {node: '>= 10'}
986
-
987
-
nlcst-to-string@4.0.0:
988
-
resolution: {integrity: sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==}
989
-
990
-
node-fetch-native@1.6.6:
991
-
resolution: {integrity: sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==}
992
-
993
-
node-fetch@2.7.0:
994
-
resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
995
-
engines: {node: 4.x || >=6.0.0}
996
-
peerDependencies:
997
-
encoding: ^0.1.0
998
-
peerDependenciesMeta:
999
-
encoding:
1000
-
optional: true
1001
-
1002
-
node-mock-http@1.0.0:
1003
-
resolution: {integrity: sha512-0uGYQ1WQL1M5kKvGRXWQ3uZCHtLTO8hln3oBjIusM75WoesZ909uQJs/Hb946i2SS+Gsrhkaa6iAO17jRIv6DQ==}
1004
-
1005
-
normalize-path@3.0.0:
1006
-
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
1007
-
engines: {node: '>=0.10.0'}
1008
-
1009
-
ofetch@1.4.1:
1010
-
resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==}
1011
-
1012
-
ohash@2.0.11:
1013
-
resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==}
1014
-
1015
-
oniguruma-parser@0.12.1:
1016
-
resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==}
1017
-
1018
-
oniguruma-to-es@4.3.3:
1019
-
resolution: {integrity: sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==}
1020
-
1021
-
p-limit@6.2.0:
1022
-
resolution: {integrity: sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==}
1023
-
engines: {node: '>=18'}
1024
-
1025
-
p-queue@8.1.0:
1026
-
resolution: {integrity: sha512-mxLDbbGIBEXTJL0zEx8JIylaj3xQ7Z/7eEVjcF9fJX4DBiH9oqe+oahYnlKKxm0Ci9TlWTyhSHgygxMxjIB2jw==}
1027
-
engines: {node: '>=18'}
1028
-
1029
-
p-timeout@6.1.4:
1030
-
resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==}
1031
-
engines: {node: '>=14.16'}
647
+
nanoid@5.1.5:
648
+
resolution: {integrity: sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw==}
649
+
engines: {node: ^18 || >=20}
650
+
hasBin: true
1032
651
1033
-
package-manager-detector@1.3.0:
1034
-
resolution: {integrity: sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==}
1035
-
1036
-
pako@0.2.9:
1037
-
resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==}
1038
-
1039
-
parse-latin@7.0.0:
1040
-
resolution: {integrity: sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==}
652
+
node-releases@2.0.19:
653
+
resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==}
1041
654
1042
655
parse5@7.3.0:
1043
656
resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==}
···
1045
658
picocolors@1.1.1:
1046
659
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
1047
660
1048
-
picomatch@2.3.1:
1049
-
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
1050
-
engines: {node: '>=8.6'}
1051
-
1052
-
picomatch@4.0.2:
1053
-
resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==}
661
+
picomatch@4.0.3:
662
+
resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
1054
663
engines: {node: '>=12'}
1055
664
1056
-
postcss@8.5.4:
1057
-
resolution: {integrity: sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==}
665
+
postcss@8.5.6:
666
+
resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
1058
667
engines: {node: ^10 || ^12 || >=14}
1059
668
1060
-
prismjs@1.30.0:
1061
-
resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==}
1062
-
engines: {node: '>=6'}
1063
-
1064
-
prompts@2.4.2:
1065
-
resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==}
1066
-
engines: {node: '>= 6'}
1067
-
1068
-
property-information@6.5.0:
1069
-
resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==}
1070
-
1071
-
property-information@7.1.0:
1072
-
resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==}
1073
-
1074
-
radix3@1.1.2:
1075
-
resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==}
1076
-
1077
-
readdirp@4.1.2:
1078
-
resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
1079
-
engines: {node: '>= 14.18.0'}
1080
-
1081
-
regex-recursion@6.0.2:
1082
-
resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==}
1083
-
1084
-
regex-utilities@2.3.0:
1085
-
resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==}
669
+
prettier@3.6.2:
670
+
resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==}
671
+
engines: {node: '>=14'}
672
+
hasBin: true
1086
673
1087
-
regex@6.0.1:
1088
-
resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==}
1089
-
1090
-
rehype-parse@9.0.1:
1091
-
resolution: {integrity: sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==}
1092
-
1093
-
rehype-raw@7.0.0:
1094
-
resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==}
1095
-
1096
-
rehype-stringify@10.0.1:
1097
-
resolution: {integrity: sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==}
1098
-
1099
-
rehype@13.0.2:
1100
-
resolution: {integrity: sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A==}
1101
-
1102
-
remark-gfm@4.0.1:
1103
-
resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==}
1104
-
1105
-
remark-parse@11.0.0:
1106
-
resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==}
1107
-
1108
-
remark-rehype@11.1.2:
1109
-
resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==}
1110
-
1111
-
remark-smartypants@3.0.2:
1112
-
resolution: {integrity: sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==}
1113
-
engines: {node: '>=16.0.0'}
1114
-
1115
-
remark-stringify@11.0.0:
1116
-
resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==}
1117
-
1118
-
restructure@3.0.2:
1119
-
resolution: {integrity: sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==}
1120
-
1121
-
retext-latin@4.0.0:
1122
-
resolution: {integrity: sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==}
1123
-
1124
-
retext-smartypants@6.2.0:
1125
-
resolution: {integrity: sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==}
1126
-
1127
-
retext-stringify@4.0.0:
1128
-
resolution: {integrity: sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==}
1129
-
1130
-
retext@9.0.0:
1131
-
resolution: {integrity: sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==}
1132
-
1133
-
rollup@4.42.0:
1134
-
resolution: {integrity: sha512-LW+Vse3BJPyGJGAJt1j8pWDKPd73QM8cRXYK1IxOBgL2AGLu7Xd2YOW0M2sLUBCkF5MshXXtMApyEAEzMVMsnw==}
674
+
rollup@4.47.1:
675
+
resolution: {integrity: sha512-iasGAQoZ5dWDzULEUX3jiW0oB1qyFOepSyDyoU6S/OhVlDIwj5knI5QBa5RRQ0sK7OE0v+8VIi2JuV+G+3tfNg==}
1135
676
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
1136
677
hasBin: true
1137
678
1138
-
semver@7.7.2:
1139
-
resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==}
1140
-
engines: {node: '>=10'}
679
+
semver@6.3.1:
680
+
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
1141
681
hasBin: true
1142
682
1143
-
sharp@0.33.5:
1144
-
resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==}
1145
-
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
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
1146
688
1147
-
shiki@3.6.0:
1148
-
resolution: {integrity: sha512-tKn/Y0MGBTffQoklaATXmTqDU02zx8NYBGQ+F6gy87/YjKbizcLd+Cybh/0ZtOBX9r1NEnAy/GTRDKtOsc1L9w==}
689
+
seroval@1.3.2:
690
+
resolution: {integrity: sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ==}
691
+
engines: {node: '>=10'}
1149
692
1150
-
simple-swizzle@0.2.2:
1151
-
resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
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
1152
701
1153
-
sisteransi@1.0.5:
1154
-
resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
702
+
solid-js@1.9.9:
703
+
resolution: {integrity: sha512-A0ZBPJQldAeGCTW0YRYJmt7RCeh5rbFfPZ2aOttgYnctHE7HgKeHCBB/PVc2P7eOfmNXqMFFFoYYdm3S4dcbkA==}
1155
704
1156
-
smol-toml@1.3.4:
1157
-
resolution: {integrity: sha512-UOPtVuYkzYGee0Bd2Szz8d2G3RfMfJ2t3qVdZUAozZyAk+a0Sxa+QKix0YCwjL/A1RR0ar44nCxaoN9FxdJGwA==}
1158
-
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
1159
709
1160
710
source-map-js@1.2.1:
1161
711
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
1162
712
engines: {node: '>=0.10.0'}
1163
713
1164
-
space-separated-tokens@2.0.2:
1165
-
resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
1166
-
1167
-
string-width@4.2.3:
1168
-
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
1169
-
engines: {node: '>=8'}
1170
-
1171
-
string-width@7.2.0:
1172
-
resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==}
1173
-
engines: {node: '>=18'}
1174
-
1175
-
stringify-entities@4.0.4:
1176
-
resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==}
1177
-
1178
-
strip-ansi@6.0.1:
1179
-
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
1180
-
engines: {node: '>=8'}
1181
-
1182
-
strip-ansi@7.1.0:
1183
-
resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
1184
-
engines: {node: '>=12'}
1185
-
1186
-
tiny-inflate@1.0.3:
1187
-
resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==}
1188
-
1189
-
tinyexec@0.3.2:
1190
-
resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==}
1191
-
1192
714
tinyglobby@0.2.14:
1193
715
resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==}
1194
716
engines: {node: '>=12.0.0'}
1195
717
1196
-
tr46@0.0.3:
1197
-
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
1198
-
1199
-
trim-lines@3.0.1:
1200
-
resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
1201
-
1202
-
trough@2.2.0:
1203
-
resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==}
1204
-
1205
-
tsconfck@3.1.6:
1206
-
resolution: {integrity: sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==}
1207
-
engines: {node: ^18 || >=20}
718
+
typescript@5.9.2:
719
+
resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==}
720
+
engines: {node: '>=14.17'}
1208
721
hasBin: true
1209
-
peerDependencies:
1210
-
typescript: ^5.0.0
1211
-
peerDependenciesMeta:
1212
-
typescript:
1213
-
optional: true
1214
722
1215
-
tslib@2.8.1:
1216
-
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
723
+
undici-types@7.10.0:
724
+
resolution: {integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==}
1217
725
1218
-
type-fest@4.41.0:
1219
-
resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==}
1220
-
engines: {node: '>=16'}
1221
-
1222
-
typescript@5.8.3:
1223
-
resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==}
1224
-
engines: {node: '>=14.17'}
726
+
update-browserslist-db@1.1.3:
727
+
resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==}
1225
728
hasBin: true
729
+
peerDependencies:
730
+
browserslist: '>= 4.21.0'
1226
731
1227
-
ufo@1.6.1:
1228
-
resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==}
732
+
validate-html-nesting@1.2.3:
733
+
resolution: {integrity: sha512-kdkWdCl6eCeLlRShJKbjVOU2kFKxMF8Ghu50n+crEoyx+VKm3FxAxF9z4DCy6+bbTOqNW0+jcIYRnjoIRzigRw==}
1229
734
1230
-
ultrahtml@1.6.0:
1231
-
resolution: {integrity: sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==}
1232
-
1233
-
uncrypto@0.1.3:
1234
-
resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==}
1235
-
1236
-
undici-types@6.21.0:
1237
-
resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
1238
-
1239
-
unicode-properties@1.4.1:
1240
-
resolution: {integrity: sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==}
1241
-
1242
-
unicode-trie@2.0.0:
1243
-
resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==}
1244
-
1245
-
unified@11.0.5:
1246
-
resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==}
1247
-
1248
-
unifont@0.5.0:
1249
-
resolution: {integrity: sha512-4DueXMP5Hy4n607sh+vJ+rajoLu778aU3GzqeTCqsD/EaUcvqZT9wPC8kgK6Vjh22ZskrxyRCR71FwNOaYn6jA==}
1250
-
1251
-
unist-util-find-after@5.0.0:
1252
-
resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==}
1253
-
1254
-
unist-util-is@6.0.0:
1255
-
resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==}
1256
-
1257
-
unist-util-modify-children@4.0.0:
1258
-
resolution: {integrity: sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==}
1259
-
1260
-
unist-util-position@5.0.0:
1261
-
resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==}
1262
-
1263
-
unist-util-remove-position@5.0.0:
1264
-
resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==}
1265
-
1266
-
unist-util-stringify-position@4.0.0:
1267
-
resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==}
1268
-
1269
-
unist-util-visit-children@3.0.0:
1270
-
resolution: {integrity: sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==}
1271
-
1272
-
unist-util-visit-parents@6.0.1:
1273
-
resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==}
1274
-
1275
-
unist-util-visit@5.0.0:
1276
-
resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==}
1277
-
1278
-
unstorage@1.16.0:
1279
-
resolution: {integrity: sha512-WQ37/H5A7LcRPWfYOrDa1Ys02xAbpPJq6q5GkO88FBXVSQzHd7+BjEwfRqyaSWCv9MbsJy058GWjjPjcJ16GGA==}
735
+
vite-plugin-solid@2.11.8:
736
+
resolution: {integrity: sha512-hFrCxBfv3B1BmFqnJF4JOCYpjrmi/zwyeKjcomQ0khh8HFyQ8SbuBWQ7zGojfrz6HUOBFrJBNySDi/JgAHytWg==}
1280
737
peerDependencies:
1281
-
'@azure/app-configuration': ^1.8.0
1282
-
'@azure/cosmos': ^4.2.0
1283
-
'@azure/data-tables': ^13.3.0
1284
-
'@azure/identity': ^4.6.0
1285
-
'@azure/keyvault-secrets': ^4.9.0
1286
-
'@azure/storage-blob': ^12.26.0
1287
-
'@capacitor/preferences': ^6.0.3 || ^7.0.0
1288
-
'@deno/kv': '>=0.9.0'
1289
-
'@netlify/blobs': ^6.5.0 || ^7.0.0 || ^8.1.0
1290
-
'@planetscale/database': ^1.19.0
1291
-
'@upstash/redis': ^1.34.3
1292
-
'@vercel/blob': '>=0.27.1'
1293
-
'@vercel/kv': ^1.0.1
1294
-
aws4fetch: ^1.0.20
1295
-
db0: '>=0.2.1'
1296
-
idb-keyval: ^6.2.1
1297
-
ioredis: ^5.4.2
1298
-
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
1299
741
peerDependenciesMeta:
1300
-
'@azure/app-configuration':
1301
-
optional: true
1302
-
'@azure/cosmos':
1303
-
optional: true
1304
-
'@azure/data-tables':
1305
-
optional: true
1306
-
'@azure/identity':
1307
-
optional: true
1308
-
'@azure/keyvault-secrets':
1309
-
optional: true
1310
-
'@azure/storage-blob':
1311
-
optional: true
1312
-
'@capacitor/preferences':
1313
-
optional: true
1314
-
'@deno/kv':
1315
-
optional: true
1316
-
'@netlify/blobs':
1317
-
optional: true
1318
-
'@planetscale/database':
1319
-
optional: true
1320
-
'@upstash/redis':
1321
-
optional: true
1322
-
'@vercel/blob':
1323
-
optional: true
1324
-
'@vercel/kv':
1325
-
optional: true
1326
-
aws4fetch:
1327
-
optional: true
1328
-
db0:
1329
-
optional: true
1330
-
idb-keyval:
1331
-
optional: true
1332
-
ioredis:
1333
-
optional: true
1334
-
uploadthing:
742
+
'@testing-library/jest-dom':
1335
743
optional: true
1336
744
1337
-
vfile-location@5.0.3:
1338
-
resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==}
1339
-
1340
-
vfile-message@4.0.2:
1341
-
resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==}
1342
-
1343
-
vfile@6.0.3:
1344
-
resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
1345
-
1346
745
vite@6.3.5:
1347
746
resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==}
1348
747
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
···
1383
782
yaml:
1384
783
optional: true
1385
784
1386
-
vitefu@1.0.6:
1387
-
resolution: {integrity: sha512-+Rex1GlappUyNN6UfwbVZne/9cYC4+R2XDk9xkNXBKMw6HQagdX9PgZ8V2v1WUSK1wfBLp7qbI1+XSNIlB1xmA==}
785
+
vitefu@1.1.1:
786
+
resolution: {integrity: sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==}
1388
787
peerDependencies:
1389
-
vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0
788
+
vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0
1390
789
peerDependenciesMeta:
1391
790
vite:
1392
791
optional: true
1393
792
1394
-
web-namespaces@2.0.1:
1395
-
resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==}
793
+
yallist@3.1.1:
794
+
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
1396
795
1397
-
webidl-conversions@3.0.1:
1398
-
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
796
+
snapshots:
1399
797
1400
-
whatwg-url@5.0.0:
1401
-
resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
798
+
'@ampproject/remapping@2.3.0':
799
+
dependencies:
800
+
'@jridgewell/gen-mapping': 0.3.13
801
+
'@jridgewell/trace-mapping': 0.3.30
1402
802
1403
-
which-pm-runs@1.1.0:
1404
-
resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==}
1405
-
engines: {node: '>=4'}
803
+
'@atcute/client@4.0.3':
804
+
dependencies:
805
+
'@atcute/identity': 1.0.3
806
+
'@atcute/lexicons': 1.1.1
1406
807
1407
-
widest-line@5.0.0:
1408
-
resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==}
1409
-
engines: {node: '>=18'}
808
+
'@atcute/identity-resolver@1.1.3(@atcute/identity@1.0.3)':
809
+
dependencies:
810
+
'@atcute/identity': 1.0.3
811
+
'@atcute/lexicons': 1.1.1
812
+
'@atcute/util-fetch': 1.0.1
813
+
'@badrap/valita': 0.4.6
1410
814
1411
-
wrap-ansi@9.0.0:
1412
-
resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==}
1413
-
engines: {node: '>=18'}
815
+
'@atcute/identity@1.0.3':
816
+
dependencies:
817
+
'@atcute/lexicons': 1.1.1
818
+
'@badrap/valita': 0.4.6
1414
819
1415
-
xxhash-wasm@1.1.0:
1416
-
resolution: {integrity: sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==}
820
+
'@atcute/lexicons@1.1.1':
821
+
dependencies:
822
+
esm-env: 1.2.2
1417
823
1418
-
yargs-parser@21.1.1:
1419
-
resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
1420
-
engines: {node: '>=12'}
824
+
'@atcute/multibase@1.1.4':
825
+
dependencies:
826
+
'@atcute/uint8array': 1.0.3
1421
827
1422
-
yocto-queue@1.2.1:
1423
-
resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==}
1424
-
engines: {node: '>=12.20'}
828
+
'@atcute/oauth-browser-client@1.0.26':
829
+
dependencies:
830
+
'@atcute/client': 4.0.3
831
+
'@atcute/identity': 1.0.3
832
+
'@atcute/lexicons': 1.1.1
833
+
'@atcute/multibase': 1.1.4
834
+
'@atcute/uint8array': 1.0.3
835
+
nanoid: 5.1.5
1425
836
1426
-
yocto-spinner@0.2.3:
1427
-
resolution: {integrity: sha512-sqBChb33loEnkoXte1bLg45bEBsOP9N1kzQh5JZNKj/0rik4zAPTNSAVPj3uQAdc6slYJ0Ksc403G2XgxsJQFQ==}
1428
-
engines: {node: '>=18.19'}
837
+
'@atcute/uint8array@1.0.3': {}
1429
838
1430
-
yoctocolors@2.1.1:
1431
-
resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==}
1432
-
engines: {node: '>=18'}
839
+
'@atcute/util-fetch@1.0.1':
840
+
dependencies:
841
+
'@badrap/valita': 0.4.6
1433
842
1434
-
zod-to-json-schema@3.24.5:
1435
-
resolution: {integrity: sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==}
1436
-
peerDependencies:
1437
-
zod: ^3.24.1
843
+
'@babel/code-frame@7.27.1':
844
+
dependencies:
845
+
'@babel/helper-validator-identifier': 7.27.1
846
+
js-tokens: 4.0.0
847
+
picocolors: 1.1.1
1438
848
1439
-
zod-to-ts@1.2.0:
1440
-
resolution: {integrity: sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==}
1441
-
peerDependencies:
1442
-
typescript: ^4.9.4 || ^5.0.2
1443
-
zod: ^3
849
+
'@babel/compat-data@7.28.0': {}
1444
850
1445
-
zod@3.25.56:
1446
-
resolution: {integrity: sha512-rd6eEF3BTNvQnR2e2wwolfTmUTnp70aUTqr0oaGbHifzC3BKJsoV+Gat8vxUMR1hwOKBs6El+qWehrHbCpW6SQ==}
851
+
'@babel/core@7.28.3':
852
+
dependencies:
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
868
+
transitivePeerDependencies:
869
+
- supports-color
1447
870
1448
-
zwitch@2.0.4:
1449
-
resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
871
+
'@babel/generator@7.28.3':
872
+
dependencies:
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
1450
878
1451
-
snapshots:
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
1452
886
1453
-
'@astrojs/compiler@2.12.1': {}
887
+
'@babel/helper-globals@7.28.0': {}
1454
888
1455
-
'@astrojs/internal-helpers@0.6.1': {}
889
+
'@babel/helper-module-imports@7.18.6':
890
+
dependencies:
891
+
'@babel/types': 7.28.2
1456
892
1457
-
'@astrojs/markdown-remark@6.3.2':
893
+
'@babel/helper-module-imports@7.27.1':
1458
894
dependencies:
1459
-
'@astrojs/internal-helpers': 0.6.1
1460
-
'@astrojs/prism': 3.3.0
1461
-
github-slugger: 2.0.0
1462
-
hast-util-from-html: 2.0.3
1463
-
hast-util-to-text: 4.0.2
1464
-
import-meta-resolve: 4.1.0
1465
-
js-yaml: 4.1.0
1466
-
mdast-util-definitions: 6.0.0
1467
-
rehype-raw: 7.0.0
1468
-
rehype-stringify: 10.0.1
1469
-
remark-gfm: 4.0.1
1470
-
remark-parse: 11.0.0
1471
-
remark-rehype: 11.1.2
1472
-
remark-smartypants: 3.0.2
1473
-
shiki: 3.6.0
1474
-
smol-toml: 1.3.4
1475
-
unified: 11.0.5
1476
-
unist-util-remove-position: 5.0.0
1477
-
unist-util-visit: 5.0.0
1478
-
unist-util-visit-parents: 6.0.1
1479
-
vfile: 6.0.3
895
+
'@babel/traverse': 7.28.3
896
+
'@babel/types': 7.28.2
1480
897
transitivePeerDependencies:
1481
898
- supports-color
1482
899
1483
-
'@astrojs/prism@3.3.0':
1484
-
dependencies:
1485
-
prismjs: 1.30.0
1486
-
1487
-
'@astrojs/telemetry@3.3.0':
900
+
'@babel/helper-module-transforms@7.28.3(@babel/core@7.28.3)':
1488
901
dependencies:
1489
-
ci-info: 4.2.0
1490
-
debug: 4.4.1
1491
-
dlv: 1.1.3
1492
-
dset: 3.1.4
1493
-
is-docker: 3.0.0
1494
-
is-wsl: 3.1.0
1495
-
which-pm-runs: 1.1.0
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
1496
906
transitivePeerDependencies:
1497
907
- supports-color
908
+
909
+
'@babel/helper-plugin-utils@7.27.1': {}
1498
910
1499
911
'@babel/helper-string-parser@7.27.1': {}
1500
912
1501
913
'@babel/helper-validator-identifier@7.27.1': {}
1502
914
1503
-
'@babel/parser@7.27.5':
1504
-
dependencies:
1505
-
'@babel/types': 7.27.6
915
+
'@babel/helper-validator-option@7.27.1': {}
1506
916
1507
-
'@babel/types@7.27.6':
917
+
'@babel/helpers@7.28.3':
1508
918
dependencies:
1509
-
'@babel/helper-string-parser': 7.27.1
1510
-
'@babel/helper-validator-identifier': 7.27.1
919
+
'@babel/template': 7.27.2
920
+
'@babel/types': 7.28.2
1511
921
1512
-
'@capsizecss/unpack@2.4.0':
922
+
'@babel/parser@7.28.3':
1513
923
dependencies:
1514
-
blob-to-buffer: 1.2.9
1515
-
cross-fetch: 3.2.0
1516
-
fontkit: 2.0.4
1517
-
transitivePeerDependencies:
1518
-
- encoding
924
+
'@babel/types': 7.28.2
1519
925
1520
-
'@emnapi/runtime@1.4.3':
926
+
'@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.3)':
1521
927
dependencies:
1522
-
tslib: 2.8.1
1523
-
optional: true
1524
-
1525
-
'@esbuild/aix-ppc64@0.25.5':
1526
-
optional: true
1527
-
1528
-
'@esbuild/android-arm64@0.25.5':
1529
-
optional: true
1530
-
1531
-
'@esbuild/android-arm@0.25.5':
1532
-
optional: true
1533
-
1534
-
'@esbuild/android-x64@0.25.5':
1535
-
optional: true
1536
-
1537
-
'@esbuild/darwin-arm64@0.25.5':
1538
-
optional: true
1539
-
1540
-
'@esbuild/darwin-x64@0.25.5':
1541
-
optional: true
1542
-
1543
-
'@esbuild/freebsd-arm64@0.25.5':
1544
-
optional: true
1545
-
1546
-
'@esbuild/freebsd-x64@0.25.5':
1547
-
optional: true
1548
-
1549
-
'@esbuild/linux-arm64@0.25.5':
1550
-
optional: true
928
+
'@babel/core': 7.28.3
929
+
'@babel/helper-plugin-utils': 7.27.1
1551
930
1552
-
'@esbuild/linux-arm@0.25.5':
1553
-
optional: true
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
1554
935
1555
-
'@esbuild/linux-ia32@0.25.5':
1556
-
optional: true
1557
-
1558
-
'@esbuild/linux-loong64@0.25.5':
1559
-
optional: true
936
+
'@babel/template@7.27.2':
937
+
dependencies:
938
+
'@babel/code-frame': 7.27.1
939
+
'@babel/parser': 7.28.3
940
+
'@babel/types': 7.28.2
1560
941
1561
-
'@esbuild/linux-mips64el@0.25.5':
1562
-
optional: true
942
+
'@babel/traverse@7.28.3':
943
+
dependencies:
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
950
+
debug: 4.4.1
951
+
transitivePeerDependencies:
952
+
- supports-color
1563
953
1564
-
'@esbuild/linux-ppc64@0.25.5':
1565
-
optional: true
954
+
'@babel/types@7.28.2':
955
+
dependencies:
956
+
'@babel/helper-string-parser': 7.27.1
957
+
'@babel/helper-validator-identifier': 7.27.1
1566
958
1567
-
'@esbuild/linux-riscv64@0.25.5':
1568
-
optional: true
959
+
'@badrap/valita@0.4.6': {}
1569
960
1570
-
'@esbuild/linux-s390x@0.25.5':
961
+
'@esbuild/aix-ppc64@0.25.9':
1571
962
optional: true
1572
963
1573
-
'@esbuild/linux-x64@0.25.5':
964
+
'@esbuild/android-arm64@0.25.9':
1574
965
optional: true
1575
966
1576
-
'@esbuild/netbsd-arm64@0.25.5':
967
+
'@esbuild/android-arm@0.25.9':
1577
968
optional: true
1578
969
1579
-
'@esbuild/netbsd-x64@0.25.5':
970
+
'@esbuild/android-x64@0.25.9':
1580
971
optional: true
1581
972
1582
-
'@esbuild/openbsd-arm64@0.25.5':
973
+
'@esbuild/darwin-arm64@0.25.9':
1583
974
optional: true
1584
975
1585
-
'@esbuild/openbsd-x64@0.25.5':
976
+
'@esbuild/darwin-x64@0.25.9':
1586
977
optional: true
1587
978
1588
-
'@esbuild/sunos-x64@0.25.5':
979
+
'@esbuild/freebsd-arm64@0.25.9':
1589
980
optional: true
1590
981
1591
-
'@esbuild/win32-arm64@0.25.5':
982
+
'@esbuild/freebsd-x64@0.25.9':
1592
983
optional: true
1593
984
1594
-
'@esbuild/win32-ia32@0.25.5':
985
+
'@esbuild/linux-arm64@0.25.9':
1595
986
optional: true
1596
987
1597
-
'@esbuild/win32-x64@0.25.5':
988
+
'@esbuild/linux-arm@0.25.9':
1598
989
optional: true
1599
990
1600
-
'@img/sharp-darwin-arm64@0.33.5':
1601
-
optionalDependencies:
1602
-
'@img/sharp-libvips-darwin-arm64': 1.0.4
991
+
'@esbuild/linux-ia32@0.25.9':
1603
992
optional: true
1604
993
1605
-
'@img/sharp-darwin-x64@0.33.5':
1606
-
optionalDependencies:
1607
-
'@img/sharp-libvips-darwin-x64': 1.0.4
994
+
'@esbuild/linux-loong64@0.25.9':
1608
995
optional: true
1609
996
1610
-
'@img/sharp-libvips-darwin-arm64@1.0.4':
997
+
'@esbuild/linux-mips64el@0.25.9':
1611
998
optional: true
1612
999
1613
-
'@img/sharp-libvips-darwin-x64@1.0.4':
1000
+
'@esbuild/linux-ppc64@0.25.9':
1614
1001
optional: true
1615
1002
1616
-
'@img/sharp-libvips-linux-arm64@1.0.4':
1003
+
'@esbuild/linux-riscv64@0.25.9':
1617
1004
optional: true
1618
1005
1619
-
'@img/sharp-libvips-linux-arm@1.0.5':
1006
+
'@esbuild/linux-s390x@0.25.9':
1620
1007
optional: true
1621
1008
1622
-
'@img/sharp-libvips-linux-s390x@1.0.4':
1009
+
'@esbuild/linux-x64@0.25.9':
1623
1010
optional: true
1624
1011
1625
-
'@img/sharp-libvips-linux-x64@1.0.4':
1012
+
'@esbuild/netbsd-arm64@0.25.9':
1626
1013
optional: true
1627
1014
1628
-
'@img/sharp-libvips-linuxmusl-arm64@1.0.4':
1015
+
'@esbuild/netbsd-x64@0.25.9':
1629
1016
optional: true
1630
1017
1631
-
'@img/sharp-libvips-linuxmusl-x64@1.0.4':
1018
+
'@esbuild/openbsd-arm64@0.25.9':
1632
1019
optional: true
1633
1020
1634
-
'@img/sharp-linux-arm64@0.33.5':
1635
-
optionalDependencies:
1636
-
'@img/sharp-libvips-linux-arm64': 1.0.4
1021
+
'@esbuild/openbsd-x64@0.25.9':
1637
1022
optional: true
1638
1023
1639
-
'@img/sharp-linux-arm@0.33.5':
1640
-
optionalDependencies:
1641
-
'@img/sharp-libvips-linux-arm': 1.0.5
1024
+
'@esbuild/openharmony-arm64@0.25.9':
1642
1025
optional: true
1643
1026
1644
-
'@img/sharp-linux-s390x@0.33.5':
1645
-
optionalDependencies:
1646
-
'@img/sharp-libvips-linux-s390x': 1.0.4
1027
+
'@esbuild/sunos-x64@0.25.9':
1647
1028
optional: true
1648
1029
1649
-
'@img/sharp-linux-x64@0.33.5':
1650
-
optionalDependencies:
1651
-
'@img/sharp-libvips-linux-x64': 1.0.4
1030
+
'@esbuild/win32-arm64@0.25.9':
1652
1031
optional: true
1653
1032
1654
-
'@img/sharp-linuxmusl-arm64@0.33.5':
1655
-
optionalDependencies:
1656
-
'@img/sharp-libvips-linuxmusl-arm64': 1.0.4
1033
+
'@esbuild/win32-ia32@0.25.9':
1657
1034
optional: true
1658
1035
1659
-
'@img/sharp-linuxmusl-x64@0.33.5':
1660
-
optionalDependencies:
1661
-
'@img/sharp-libvips-linuxmusl-x64': 1.0.4
1036
+
'@esbuild/win32-x64@0.25.9':
1662
1037
optional: true
1663
1038
1664
-
'@img/sharp-wasm32@0.33.5':
1039
+
'@jridgewell/gen-mapping@0.3.13':
1665
1040
dependencies:
1666
-
'@emnapi/runtime': 1.4.3
1667
-
optional: true
1041
+
'@jridgewell/sourcemap-codec': 1.5.5
1042
+
'@jridgewell/trace-mapping': 0.3.30
1668
1043
1669
-
'@img/sharp-win32-ia32@0.33.5':
1670
-
optional: true
1044
+
'@jridgewell/resolve-uri@3.1.2': {}
1671
1045
1672
-
'@img/sharp-win32-x64@0.33.5':
1673
-
optional: true
1046
+
'@jridgewell/sourcemap-codec@1.5.5': {}
1674
1047
1675
-
'@jridgewell/sourcemap-codec@1.5.0': {}
1048
+
'@jridgewell/trace-mapping@0.3.30':
1049
+
dependencies:
1050
+
'@jridgewell/resolve-uri': 3.1.2
1051
+
'@jridgewell/sourcemap-codec': 1.5.5
1676
1052
1677
-
'@oslojs/encoding@1.1.0': {}
1053
+
'@jsr/mary__exif-rm@0.2.2': {}
1678
1054
1679
-
'@rollup/pluginutils@5.1.4(rollup@4.42.0)':
1680
-
dependencies:
1681
-
'@types/estree': 1.0.8
1682
-
estree-walker: 2.0.2
1683
-
picomatch: 4.0.2
1684
-
optionalDependencies:
1685
-
rollup: 4.42.0
1055
+
'@nothing-but/utils@0.17.0': {}
1686
1056
1687
-
'@rollup/rollup-android-arm-eabi@4.42.0':
1057
+
'@rollup/rollup-android-arm-eabi@4.47.1':
1688
1058
optional: true
1689
1059
1690
-
'@rollup/rollup-android-arm64@4.42.0':
1060
+
'@rollup/rollup-android-arm64@4.47.1':
1691
1061
optional: true
1692
1062
1693
-
'@rollup/rollup-darwin-arm64@4.42.0':
1063
+
'@rollup/rollup-darwin-arm64@4.47.1':
1694
1064
optional: true
1695
1065
1696
-
'@rollup/rollup-darwin-x64@4.42.0':
1066
+
'@rollup/rollup-darwin-x64@4.47.1':
1697
1067
optional: true
1698
1068
1699
-
'@rollup/rollup-freebsd-arm64@4.42.0':
1069
+
'@rollup/rollup-freebsd-arm64@4.47.1':
1700
1070
optional: true
1701
1071
1702
-
'@rollup/rollup-freebsd-x64@4.42.0':
1072
+
'@rollup/rollup-freebsd-x64@4.47.1':
1703
1073
optional: true
1704
1074
1705
-
'@rollup/rollup-linux-arm-gnueabihf@4.42.0':
1075
+
'@rollup/rollup-linux-arm-gnueabihf@4.47.1':
1706
1076
optional: true
1707
1077
1708
-
'@rollup/rollup-linux-arm-musleabihf@4.42.0':
1078
+
'@rollup/rollup-linux-arm-musleabihf@4.47.1':
1709
1079
optional: true
1710
1080
1711
-
'@rollup/rollup-linux-arm64-gnu@4.42.0':
1081
+
'@rollup/rollup-linux-arm64-gnu@4.47.1':
1712
1082
optional: true
1713
1083
1714
-
'@rollup/rollup-linux-arm64-musl@4.42.0':
1084
+
'@rollup/rollup-linux-arm64-musl@4.47.1':
1715
1085
optional: true
1716
1086
1717
-
'@rollup/rollup-linux-loongarch64-gnu@4.42.0':
1087
+
'@rollup/rollup-linux-loongarch64-gnu@4.47.1':
1718
1088
optional: true
1719
1089
1720
-
'@rollup/rollup-linux-powerpc64le-gnu@4.42.0':
1090
+
'@rollup/rollup-linux-ppc64-gnu@4.47.1':
1721
1091
optional: true
1722
1092
1723
-
'@rollup/rollup-linux-riscv64-gnu@4.42.0':
1093
+
'@rollup/rollup-linux-riscv64-gnu@4.47.1':
1724
1094
optional: true
1725
1095
1726
-
'@rollup/rollup-linux-riscv64-musl@4.42.0':
1096
+
'@rollup/rollup-linux-riscv64-musl@4.47.1':
1727
1097
optional: true
1728
1098
1729
-
'@rollup/rollup-linux-s390x-gnu@4.42.0':
1099
+
'@rollup/rollup-linux-s390x-gnu@4.47.1':
1730
1100
optional: true
1731
1101
1732
-
'@rollup/rollup-linux-x64-gnu@4.42.0':
1102
+
'@rollup/rollup-linux-x64-gnu@4.47.1':
1733
1103
optional: true
1734
1104
1735
-
'@rollup/rollup-linux-x64-musl@4.42.0':
1105
+
'@rollup/rollup-linux-x64-musl@4.47.1':
1736
1106
optional: true
1737
1107
1738
-
'@rollup/rollup-win32-arm64-msvc@4.42.0':
1108
+
'@rollup/rollup-win32-arm64-msvc@4.47.1':
1739
1109
optional: true
1740
1110
1741
-
'@rollup/rollup-win32-ia32-msvc@4.42.0':
1111
+
'@rollup/rollup-win32-ia32-msvc@4.47.1':
1742
1112
optional: true
1743
1113
1744
-
'@rollup/rollup-win32-x64-msvc@4.42.0':
1114
+
'@rollup/rollup-win32-x64-msvc@4.47.1':
1745
1115
optional: true
1746
1116
1747
-
'@shikijs/core@3.6.0':
1117
+
'@solid-devtools/debugger@0.28.1(solid-js@1.9.9)':
1748
1118
dependencies:
1749
-
'@shikijs/types': 3.6.0
1750
-
'@shikijs/vscode-textmate': 10.0.2
1751
-
'@types/hast': 3.0.4
1752
-
hast-util-to-html: 9.0.5
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
1753
1129
1754
-
'@shikijs/engine-javascript@3.6.0':
1130
+
'@solid-devtools/shared@0.20.0(solid-js@1.9.9)':
1755
1131
dependencies:
1756
-
'@shikijs/types': 3.6.0
1757
-
'@shikijs/vscode-textmate': 10.0.2
1758
-
oniguruma-to-es: 4.3.3
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
1759
1142
1760
-
'@shikijs/engine-oniguruma@3.6.0':
1143
+
'@solid-primitives/bounds@0.1.3(solid-js@1.9.9)':
1761
1144
dependencies:
1762
-
'@shikijs/types': 3.6.0
1763
-
'@shikijs/vscode-textmate': 10.0.2
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
1764
1150
1765
-
'@shikijs/langs@3.6.0':
1151
+
'@solid-primitives/event-listener@2.4.3(solid-js@1.9.9)':
1766
1152
dependencies:
1767
-
'@shikijs/types': 3.6.0
1153
+
'@solid-primitives/utils': 6.3.2(solid-js@1.9.9)
1154
+
solid-js: 1.9.9
1768
1155
1769
-
'@shikijs/themes@3.6.0':
1156
+
'@solid-primitives/keyboard@1.3.3(solid-js@1.9.9)':
1770
1157
dependencies:
1771
-
'@shikijs/types': 3.6.0
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
1772
1162
1773
-
'@shikijs/types@3.6.0':
1163
+
'@solid-primitives/media@2.3.3(solid-js@1.9.9)':
1774
1164
dependencies:
1775
-
'@shikijs/vscode-textmate': 10.0.2
1776
-
'@types/hast': 3.0.4
1777
-
1778
-
'@shikijs/vscode-textmate@10.0.2': {}
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
1779
1170
1780
-
'@swc/helpers@0.5.17':
1171
+
'@solid-primitives/refs@1.1.2(solid-js@1.9.9)':
1781
1172
dependencies:
1782
-
tslib: 2.8.1
1173
+
'@solid-primitives/utils': 6.3.2(solid-js@1.9.9)
1174
+
solid-js: 1.9.9
1783
1175
1784
-
'@types/debug@4.1.12':
1176
+
'@solid-primitives/resize-observer@2.1.3(solid-js@1.9.9)':
1785
1177
dependencies:
1786
-
'@types/ms': 2.1.0
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
1787
1183
1788
-
'@types/estree@1.0.7': {}
1789
-
1790
-
'@types/estree@1.0.8': {}
1791
-
1792
-
'@types/fontkit@2.0.8':
1184
+
'@solid-primitives/rootless@1.5.2(solid-js@1.9.9)':
1793
1185
dependencies:
1794
-
'@types/node': 22.15.30
1186
+
'@solid-primitives/utils': 6.3.2(solid-js@1.9.9)
1187
+
solid-js: 1.9.9
1795
1188
1796
-
'@types/hast@3.0.4':
1189
+
'@solid-primitives/scheduled@1.5.2(solid-js@1.9.9)':
1797
1190
dependencies:
1798
-
'@types/unist': 3.0.3
1191
+
solid-js: 1.9.9
1799
1192
1800
-
'@types/mdast@4.0.4':
1193
+
'@solid-primitives/static-store@0.1.2(solid-js@1.9.9)':
1801
1194
dependencies:
1802
-
'@types/unist': 3.0.3
1803
-
1804
-
'@types/ms@2.1.0': {}
1195
+
'@solid-primitives/utils': 6.3.2(solid-js@1.9.9)
1196
+
solid-js: 1.9.9
1805
1197
1806
-
'@types/nlcst@2.0.3':
1198
+
'@solid-primitives/styles@0.1.2(solid-js@1.9.9)':
1807
1199
dependencies:
1808
-
'@types/unist': 3.0.3
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
1809
1203
1810
-
'@types/node@22.15.30':
1204
+
'@solid-primitives/utils@6.3.2(solid-js@1.9.9)':
1811
1205
dependencies:
1812
-
undici-types: 6.21.0
1813
-
1814
-
'@types/unist@3.0.3': {}
1206
+
solid-js: 1.9.9
1815
1207
1816
-
'@ungap/structured-clone@1.3.0': {}
1817
-
1818
-
acorn@8.15.0: {}
1819
-
1820
-
ansi-align@3.0.1:
1208
+
'@solidjs/router@0.15.3(solid-js@1.9.9)':
1821
1209
dependencies:
1822
-
string-width: 4.2.3
1210
+
solid-js: 1.9.9
1823
1211
1824
-
ansi-regex@5.0.1: {}
1825
-
1826
-
ansi-regex@6.1.0: {}
1827
-
1828
-
ansi-styles@6.2.1: {}
1829
-
1830
-
anymatch@3.1.3:
1212
+
'@types/babel__core@7.20.5':
1831
1213
dependencies:
1832
-
normalize-path: 3.0.0
1833
-
picomatch: 2.3.1
1834
-
1835
-
argparse@2.0.1: {}
1836
-
1837
-
aria-query@5.3.2: {}
1838
-
1839
-
array-iterate@2.0.1: {}
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
1840
1219
1841
-
astro@5.9.1(@types/node@22.15.30)(rollup@4.42.0)(typescript@5.8.3):
1220
+
'@types/babel__generator@7.27.0':
1842
1221
dependencies:
1843
-
'@astrojs/compiler': 2.12.1
1844
-
'@astrojs/internal-helpers': 0.6.1
1845
-
'@astrojs/markdown-remark': 6.3.2
1846
-
'@astrojs/telemetry': 3.3.0
1847
-
'@capsizecss/unpack': 2.4.0
1848
-
'@oslojs/encoding': 1.1.0
1849
-
'@rollup/pluginutils': 5.1.4(rollup@4.42.0)
1850
-
acorn: 8.15.0
1851
-
aria-query: 5.3.2
1852
-
axobject-query: 4.1.0
1853
-
boxen: 8.0.1
1854
-
ci-info: 4.2.0
1855
-
clsx: 2.1.1
1856
-
common-ancestor-path: 1.0.1
1857
-
cookie: 1.0.2
1858
-
cssesc: 3.0.0
1859
-
debug: 4.4.1
1860
-
deterministic-object-hash: 2.0.2
1861
-
devalue: 5.1.1
1862
-
diff: 5.2.0
1863
-
dlv: 1.1.3
1864
-
dset: 3.1.4
1865
-
es-module-lexer: 1.7.0
1866
-
esbuild: 0.25.5
1867
-
estree-walker: 3.0.3
1868
-
flattie: 1.1.1
1869
-
fontace: 0.3.0
1870
-
github-slugger: 2.0.0
1871
-
html-escaper: 3.0.3
1872
-
http-cache-semantics: 4.2.0
1873
-
import-meta-resolve: 4.1.0
1874
-
js-yaml: 4.1.0
1875
-
kleur: 4.1.5
1876
-
magic-string: 0.30.17
1877
-
magicast: 0.3.5
1878
-
mrmime: 2.0.1
1879
-
neotraverse: 0.6.18
1880
-
p-limit: 6.2.0
1881
-
p-queue: 8.1.0
1882
-
package-manager-detector: 1.3.0
1883
-
picomatch: 4.0.2
1884
-
prompts: 2.4.2
1885
-
rehype: 13.0.2
1886
-
semver: 7.7.2
1887
-
shiki: 3.6.0
1888
-
tinyexec: 0.3.2
1889
-
tinyglobby: 0.2.14
1890
-
tsconfck: 3.1.6(typescript@5.8.3)
1891
-
ultrahtml: 1.6.0
1892
-
unifont: 0.5.0
1893
-
unist-util-visit: 5.0.0
1894
-
unstorage: 1.16.0
1895
-
vfile: 6.0.3
1896
-
vite: 6.3.5(@types/node@22.15.30)
1897
-
vitefu: 1.0.6(vite@6.3.5(@types/node@22.15.30))
1898
-
xxhash-wasm: 1.1.0
1899
-
yargs-parser: 21.1.1
1900
-
yocto-spinner: 0.2.3
1901
-
zod: 3.25.56
1902
-
zod-to-json-schema: 3.24.5(zod@3.25.56)
1903
-
zod-to-ts: 1.2.0(typescript@5.8.3)(zod@3.25.56)
1904
-
optionalDependencies:
1905
-
sharp: 0.33.5
1906
-
transitivePeerDependencies:
1907
-
- '@azure/app-configuration'
1908
-
- '@azure/cosmos'
1909
-
- '@azure/data-tables'
1910
-
- '@azure/identity'
1911
-
- '@azure/keyvault-secrets'
1912
-
- '@azure/storage-blob'
1913
-
- '@capacitor/preferences'
1914
-
- '@deno/kv'
1915
-
- '@netlify/blobs'
1916
-
- '@planetscale/database'
1917
-
- '@types/node'
1918
-
- '@upstash/redis'
1919
-
- '@vercel/blob'
1920
-
- '@vercel/kv'
1921
-
- aws4fetch
1922
-
- db0
1923
-
- encoding
1924
-
- idb-keyval
1925
-
- ioredis
1926
-
- jiti
1927
-
- less
1928
-
- lightningcss
1929
-
- rollup
1930
-
- sass
1931
-
- sass-embedded
1932
-
- stylus
1933
-
- sugarss
1934
-
- supports-color
1935
-
- terser
1936
-
- tsx
1937
-
- typescript
1938
-
- uploadthing
1939
-
- yaml
1940
-
1941
-
axobject-query@4.1.0: {}
1222
+
'@babel/types': 7.28.2
1942
1223
1943
-
bail@2.0.2: {}
1944
-
1945
-
base-64@1.0.0: {}
1946
-
1947
-
base64-js@1.5.1: {}
1948
-
1949
-
blob-to-buffer@1.2.9: {}
1950
-
1951
-
boxen@8.0.1:
1224
+
'@types/babel__template@7.4.4':
1952
1225
dependencies:
1953
-
ansi-align: 3.0.1
1954
-
camelcase: 8.0.0
1955
-
chalk: 5.4.1
1956
-
cli-boxes: 3.0.0
1957
-
string-width: 7.2.0
1958
-
type-fest: 4.41.0
1959
-
widest-line: 5.0.0
1960
-
wrap-ansi: 9.0.0
1226
+
'@babel/parser': 7.28.3
1227
+
'@babel/types': 7.28.2
1961
1228
1962
-
brotli@1.3.3:
1229
+
'@types/babel__traverse@7.28.0':
1963
1230
dependencies:
1964
-
base64-js: 1.5.1
1965
-
1966
-
camelcase@8.0.0: {}
1967
-
1968
-
ccount@2.0.1: {}
1231
+
'@babel/types': 7.28.2
1969
1232
1970
-
chalk@5.4.1: {}
1233
+
'@types/estree@1.0.8': {}
1971
1234
1972
-
character-entities-html4@2.1.0: {}
1973
-
1974
-
character-entities-legacy@3.0.0: {}
1975
-
1976
-
character-entities@2.0.2: {}
1977
-
1978
-
chokidar@4.0.3:
1235
+
'@types/node@24.3.0':
1979
1236
dependencies:
1980
-
readdirp: 4.1.2
1981
-
1982
-
ci-info@4.2.0: {}
1237
+
undici-types: 7.10.0
1983
1238
1984
-
cli-boxes@3.0.0: {}
1985
-
1986
-
clone@2.1.2: {}
1987
-
1988
-
clsx@2.1.1: {}
1989
-
1990
-
color-convert@2.0.1:
1239
+
babel-plugin-jsx-dom-expressions@0.40.1(@babel/core@7.28.3):
1991
1240
dependencies:
1992
-
color-name: 1.1.4
1993
-
optional: true
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
1994
1248
1995
-
color-name@1.1.4:
1996
-
optional: true
1997
-
1998
-
color-string@1.9.1:
1249
+
babel-preset-solid@1.9.9(@babel/core@7.28.3)(solid-js@1.9.9):
1999
1250
dependencies:
2000
-
color-name: 1.1.4
2001
-
simple-swizzle: 0.2.2
2002
-
optional: true
1251
+
'@babel/core': 7.28.3
1252
+
babel-plugin-jsx-dom-expressions: 0.40.1(@babel/core@7.28.3)
1253
+
optionalDependencies:
1254
+
solid-js: 1.9.9
2003
1255
2004
-
color@4.2.3:
1256
+
browserslist@4.25.3:
2005
1257
dependencies:
2006
-
color-convert: 2.0.1
2007
-
color-string: 1.9.1
2008
-
optional: true
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)
2009
1262
2010
-
comma-separated-tokens@2.0.3: {}
2011
-
2012
-
common-ancestor-path@1.0.1: {}
2013
-
2014
-
cookie-es@1.2.2: {}
2015
-
2016
-
cookie@1.0.2: {}
2017
-
2018
-
cross-fetch@3.2.0:
2019
-
dependencies:
2020
-
node-fetch: 2.7.0
2021
-
transitivePeerDependencies:
2022
-
- encoding
1263
+
caniuse-lite@1.0.30001737: {}
2023
1264
2024
-
crossws@0.3.5:
2025
-
dependencies:
2026
-
uncrypto: 0.1.3
1265
+
convert-source-map@2.0.0: {}
2027
1266
2028
-
css-tree@3.1.0:
2029
-
dependencies:
2030
-
mdn-data: 2.12.2
2031
-
source-map-js: 1.2.1
2032
-
2033
-
cssesc@3.0.0: {}
1267
+
csstype@3.1.3: {}
2034
1268
2035
1269
debug@4.4.1:
2036
1270
dependencies:
2037
1271
ms: 2.1.3
2038
1272
2039
-
decode-named-character-reference@1.1.0:
2040
-
dependencies:
2041
-
character-entities: 2.0.2
2042
-
2043
-
defu@6.1.4: {}
2044
-
2045
-
dequal@2.0.3: {}
2046
-
2047
-
destr@2.0.5: {}
2048
-
2049
-
detect-libc@2.0.4:
2050
-
optional: true
2051
-
2052
-
deterministic-object-hash@2.0.2:
2053
-
dependencies:
2054
-
base-64: 1.0.0
2055
-
2056
-
devalue@5.1.1: {}
2057
-
2058
-
devlop@1.1.0:
2059
-
dependencies:
2060
-
dequal: 2.0.3
2061
-
2062
-
dfa@1.2.0: {}
2063
-
2064
-
diff@5.2.0: {}
2065
-
2066
-
dlv@1.1.3: {}
2067
-
2068
-
dset@3.1.4: {}
2069
-
2070
-
emoji-regex@10.4.0: {}
2071
-
2072
-
emoji-regex@8.0.0: {}
1273
+
electron-to-chromium@1.5.208: {}
2073
1274
2074
1275
entities@6.0.1: {}
2075
1276
2076
-
es-module-lexer@1.7.0: {}
2077
-
2078
-
esbuild@0.25.5:
1277
+
esbuild@0.25.9:
2079
1278
optionalDependencies:
2080
-
'@esbuild/aix-ppc64': 0.25.5
2081
-
'@esbuild/android-arm': 0.25.5
2082
-
'@esbuild/android-arm64': 0.25.5
2083
-
'@esbuild/android-x64': 0.25.5
2084
-
'@esbuild/darwin-arm64': 0.25.5
2085
-
'@esbuild/darwin-x64': 0.25.5
2086
-
'@esbuild/freebsd-arm64': 0.25.5
2087
-
'@esbuild/freebsd-x64': 0.25.5
2088
-
'@esbuild/linux-arm': 0.25.5
2089
-
'@esbuild/linux-arm64': 0.25.5
2090
-
'@esbuild/linux-ia32': 0.25.5
2091
-
'@esbuild/linux-loong64': 0.25.5
2092
-
'@esbuild/linux-mips64el': 0.25.5
2093
-
'@esbuild/linux-ppc64': 0.25.5
2094
-
'@esbuild/linux-riscv64': 0.25.5
2095
-
'@esbuild/linux-s390x': 0.25.5
2096
-
'@esbuild/linux-x64': 0.25.5
2097
-
'@esbuild/netbsd-arm64': 0.25.5
2098
-
'@esbuild/netbsd-x64': 0.25.5
2099
-
'@esbuild/openbsd-arm64': 0.25.5
2100
-
'@esbuild/openbsd-x64': 0.25.5
2101
-
'@esbuild/sunos-x64': 0.25.5
2102
-
'@esbuild/win32-arm64': 0.25.5
2103
-
'@esbuild/win32-ia32': 0.25.5
2104
-
'@esbuild/win32-x64': 0.25.5
2105
-
2106
-
escape-string-regexp@5.0.0: {}
2107
-
2108
-
estree-walker@2.0.2: {}
2109
-
2110
-
estree-walker@3.0.3:
2111
-
dependencies:
2112
-
'@types/estree': 1.0.8
2113
-
2114
-
eventemitter3@5.0.1: {}
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
2115
1305
2116
-
extend@3.0.2: {}
1306
+
escalade@3.2.0: {}
2117
1307
2118
-
fast-deep-equal@3.1.3: {}
1308
+
esm-env@1.2.2: {}
2119
1309
2120
-
fdir@6.4.5(picomatch@4.0.2):
1310
+
fdir@6.5.0(picomatch@4.0.3):
2121
1311
optionalDependencies:
2122
-
picomatch: 4.0.2
2123
-
2124
-
flattie@1.1.1: {}
2125
-
2126
-
fontace@0.3.0:
2127
-
dependencies:
2128
-
'@types/fontkit': 2.0.8
2129
-
fontkit: 2.0.4
2130
-
2131
-
fontkit@2.0.4:
2132
-
dependencies:
2133
-
'@swc/helpers': 0.5.17
2134
-
brotli: 1.3.3
2135
-
clone: 2.1.2
2136
-
dfa: 1.2.0
2137
-
fast-deep-equal: 3.1.3
2138
-
restructure: 3.0.2
2139
-
tiny-inflate: 1.0.3
2140
-
unicode-properties: 1.4.1
2141
-
unicode-trie: 2.0.0
1312
+
picomatch: 4.0.3
2142
1313
2143
1314
fsevents@2.3.3:
2144
1315
optional: true
2145
1316
2146
-
get-east-asian-width@1.3.0: {}
2147
-
2148
-
github-slugger@2.0.0: {}
2149
-
2150
-
h3@1.15.3:
2151
-
dependencies:
2152
-
cookie-es: 1.2.2
2153
-
crossws: 0.3.5
2154
-
defu: 6.1.4
2155
-
destr: 2.0.5
2156
-
iron-webcrypto: 1.2.1
2157
-
node-mock-http: 1.0.0
2158
-
radix3: 1.1.2
2159
-
ufo: 1.6.1
2160
-
uncrypto: 0.1.3
2161
-
2162
-
hast-util-from-html@2.0.3:
2163
-
dependencies:
2164
-
'@types/hast': 3.0.4
2165
-
devlop: 1.1.0
2166
-
hast-util-from-parse5: 8.0.3
2167
-
parse5: 7.3.0
2168
-
vfile: 6.0.3
2169
-
vfile-message: 4.0.2
2170
-
2171
-
hast-util-from-parse5@8.0.3:
2172
-
dependencies:
2173
-
'@types/hast': 3.0.4
2174
-
'@types/unist': 3.0.3
2175
-
devlop: 1.1.0
2176
-
hastscript: 9.0.1
2177
-
property-information: 7.1.0
2178
-
vfile: 6.0.3
2179
-
vfile-location: 5.0.3
2180
-
web-namespaces: 2.0.1
2181
-
2182
-
hast-util-is-element@3.0.0:
2183
-
dependencies:
2184
-
'@types/hast': 3.0.4
2185
-
2186
-
hast-util-parse-selector@4.0.0:
2187
-
dependencies:
2188
-
'@types/hast': 3.0.4
2189
-
2190
-
hast-util-raw@9.1.0:
2191
-
dependencies:
2192
-
'@types/hast': 3.0.4
2193
-
'@types/unist': 3.0.3
2194
-
'@ungap/structured-clone': 1.3.0
2195
-
hast-util-from-parse5: 8.0.3
2196
-
hast-util-to-parse5: 8.0.0
2197
-
html-void-elements: 3.0.0
2198
-
mdast-util-to-hast: 13.2.0
2199
-
parse5: 7.3.0
2200
-
unist-util-position: 5.0.0
2201
-
unist-util-visit: 5.0.0
2202
-
vfile: 6.0.3
2203
-
web-namespaces: 2.0.1
2204
-
zwitch: 2.0.4
2205
-
2206
-
hast-util-to-html@9.0.5:
2207
-
dependencies:
2208
-
'@types/hast': 3.0.4
2209
-
'@types/unist': 3.0.3
2210
-
ccount: 2.0.1
2211
-
comma-separated-tokens: 2.0.3
2212
-
hast-util-whitespace: 3.0.0
2213
-
html-void-elements: 3.0.0
2214
-
mdast-util-to-hast: 13.2.0
2215
-
property-information: 7.1.0
2216
-
space-separated-tokens: 2.0.2
2217
-
stringify-entities: 4.0.4
2218
-
zwitch: 2.0.4
2219
-
2220
-
hast-util-to-parse5@8.0.0:
2221
-
dependencies:
2222
-
'@types/hast': 3.0.4
2223
-
comma-separated-tokens: 2.0.3
2224
-
devlop: 1.1.0
2225
-
property-information: 6.5.0
2226
-
space-separated-tokens: 2.0.2
2227
-
web-namespaces: 2.0.1
2228
-
zwitch: 2.0.4
2229
-
2230
-
hast-util-to-text@4.0.2:
2231
-
dependencies:
2232
-
'@types/hast': 3.0.4
2233
-
'@types/unist': 3.0.3
2234
-
hast-util-is-element: 3.0.0
2235
-
unist-util-find-after: 5.0.0
2236
-
2237
-
hast-util-whitespace@3.0.0:
2238
-
dependencies:
2239
-
'@types/hast': 3.0.4
2240
-
2241
-
hastscript@9.0.1:
2242
-
dependencies:
2243
-
'@types/hast': 3.0.4
2244
-
comma-separated-tokens: 2.0.3
2245
-
hast-util-parse-selector: 4.0.0
2246
-
property-information: 7.1.0
2247
-
space-separated-tokens: 2.0.2
2248
-
2249
-
html-escaper@3.0.3: {}
2250
-
2251
-
html-void-elements@3.0.0: {}
2252
-
2253
-
http-cache-semantics@4.2.0: {}
2254
-
2255
-
import-meta-resolve@4.1.0: {}
2256
-
2257
-
iron-webcrypto@1.2.1: {}
2258
-
2259
-
is-arrayish@0.3.2:
2260
-
optional: true
2261
-
2262
-
is-docker@3.0.0: {}
2263
-
2264
-
is-fullwidth-code-point@3.0.0: {}
2265
-
2266
-
is-inside-container@1.0.0:
2267
-
dependencies:
2268
-
is-docker: 3.0.0
2269
-
2270
-
is-plain-obj@4.1.0: {}
2271
-
2272
-
is-wsl@3.1.0:
2273
-
dependencies:
2274
-
is-inside-container: 1.0.0
2275
-
2276
-
js-yaml@4.1.0:
2277
-
dependencies:
2278
-
argparse: 2.0.1
2279
-
2280
-
kleur@3.0.3: {}
2281
-
2282
-
kleur@4.1.5: {}
2283
-
2284
-
longest-streak@3.1.0: {}
2285
-
2286
-
lru-cache@10.4.3: {}
2287
-
2288
-
magic-string@0.30.17:
2289
-
dependencies:
2290
-
'@jridgewell/sourcemap-codec': 1.5.0
2291
-
2292
-
magicast@0.3.5:
2293
-
dependencies:
2294
-
'@babel/parser': 7.27.5
2295
-
'@babel/types': 7.27.6
2296
-
source-map-js: 1.2.1
2297
-
2298
-
markdown-table@3.0.4: {}
2299
-
2300
-
mdast-util-definitions@6.0.0:
2301
-
dependencies:
2302
-
'@types/mdast': 4.0.4
2303
-
'@types/unist': 3.0.3
2304
-
unist-util-visit: 5.0.0
2305
-
2306
-
mdast-util-find-and-replace@3.0.2:
2307
-
dependencies:
2308
-
'@types/mdast': 4.0.4
2309
-
escape-string-regexp: 5.0.0
2310
-
unist-util-is: 6.0.0
2311
-
unist-util-visit-parents: 6.0.1
2312
-
2313
-
mdast-util-from-markdown@2.0.2:
2314
-
dependencies:
2315
-
'@types/mdast': 4.0.4
2316
-
'@types/unist': 3.0.3
2317
-
decode-named-character-reference: 1.1.0
2318
-
devlop: 1.1.0
2319
-
mdast-util-to-string: 4.0.0
2320
-
micromark: 4.0.2
2321
-
micromark-util-decode-numeric-character-reference: 2.0.2
2322
-
micromark-util-decode-string: 2.0.1
2323
-
micromark-util-normalize-identifier: 2.0.1
2324
-
micromark-util-symbol: 2.0.1
2325
-
micromark-util-types: 2.0.2
2326
-
unist-util-stringify-position: 4.0.0
2327
-
transitivePeerDependencies:
2328
-
- supports-color
2329
-
2330
-
mdast-util-gfm-autolink-literal@2.0.1:
2331
-
dependencies:
2332
-
'@types/mdast': 4.0.4
2333
-
ccount: 2.0.1
2334
-
devlop: 1.1.0
2335
-
mdast-util-find-and-replace: 3.0.2
2336
-
micromark-util-character: 2.1.1
2337
-
2338
-
mdast-util-gfm-footnote@2.1.0:
2339
-
dependencies:
2340
-
'@types/mdast': 4.0.4
2341
-
devlop: 1.1.0
2342
-
mdast-util-from-markdown: 2.0.2
2343
-
mdast-util-to-markdown: 2.1.2
2344
-
micromark-util-normalize-identifier: 2.0.1
2345
-
transitivePeerDependencies:
2346
-
- supports-color
2347
-
2348
-
mdast-util-gfm-strikethrough@2.0.0:
2349
-
dependencies:
2350
-
'@types/mdast': 4.0.4
2351
-
mdast-util-from-markdown: 2.0.2
2352
-
mdast-util-to-markdown: 2.1.2
2353
-
transitivePeerDependencies:
2354
-
- supports-color
2355
-
2356
-
mdast-util-gfm-table@2.0.0:
2357
-
dependencies:
2358
-
'@types/mdast': 4.0.4
2359
-
devlop: 1.1.0
2360
-
markdown-table: 3.0.4
2361
-
mdast-util-from-markdown: 2.0.2
2362
-
mdast-util-to-markdown: 2.1.2
2363
-
transitivePeerDependencies:
2364
-
- supports-color
2365
-
2366
-
mdast-util-gfm-task-list-item@2.0.0:
2367
-
dependencies:
2368
-
'@types/mdast': 4.0.4
2369
-
devlop: 1.1.0
2370
-
mdast-util-from-markdown: 2.0.2
2371
-
mdast-util-to-markdown: 2.1.2
2372
-
transitivePeerDependencies:
2373
-
- supports-color
2374
-
2375
-
mdast-util-gfm@3.1.0:
2376
-
dependencies:
2377
-
mdast-util-from-markdown: 2.0.2
2378
-
mdast-util-gfm-autolink-literal: 2.0.1
2379
-
mdast-util-gfm-footnote: 2.1.0
2380
-
mdast-util-gfm-strikethrough: 2.0.0
2381
-
mdast-util-gfm-table: 2.0.0
2382
-
mdast-util-gfm-task-list-item: 2.0.0
2383
-
mdast-util-to-markdown: 2.1.2
2384
-
transitivePeerDependencies:
2385
-
- supports-color
2386
-
2387
-
mdast-util-phrasing@4.1.0:
2388
-
dependencies:
2389
-
'@types/mdast': 4.0.4
2390
-
unist-util-is: 6.0.0
2391
-
2392
-
mdast-util-to-hast@13.2.0:
2393
-
dependencies:
2394
-
'@types/hast': 3.0.4
2395
-
'@types/mdast': 4.0.4
2396
-
'@ungap/structured-clone': 1.3.0
2397
-
devlop: 1.1.0
2398
-
micromark-util-sanitize-uri: 2.0.1
2399
-
trim-lines: 3.0.1
2400
-
unist-util-position: 5.0.0
2401
-
unist-util-visit: 5.0.0
2402
-
vfile: 6.0.3
2403
-
2404
-
mdast-util-to-markdown@2.1.2:
2405
-
dependencies:
2406
-
'@types/mdast': 4.0.4
2407
-
'@types/unist': 3.0.3
2408
-
longest-streak: 3.1.0
2409
-
mdast-util-phrasing: 4.1.0
2410
-
mdast-util-to-string: 4.0.0
2411
-
micromark-util-classify-character: 2.0.1
2412
-
micromark-util-decode-string: 2.0.1
2413
-
unist-util-visit: 5.0.0
2414
-
zwitch: 2.0.4
2415
-
2416
-
mdast-util-to-string@4.0.0:
2417
-
dependencies:
2418
-
'@types/mdast': 4.0.4
2419
-
2420
-
mdn-data@2.12.2: {}
2421
-
2422
-
micromark-core-commonmark@2.0.3:
2423
-
dependencies:
2424
-
decode-named-character-reference: 1.1.0
2425
-
devlop: 1.1.0
2426
-
micromark-factory-destination: 2.0.1
2427
-
micromark-factory-label: 2.0.1
2428
-
micromark-factory-space: 2.0.1
2429
-
micromark-factory-title: 2.0.1
2430
-
micromark-factory-whitespace: 2.0.1
2431
-
micromark-util-character: 2.1.1
2432
-
micromark-util-chunked: 2.0.1
2433
-
micromark-util-classify-character: 2.0.1
2434
-
micromark-util-html-tag-name: 2.0.1
2435
-
micromark-util-normalize-identifier: 2.0.1
2436
-
micromark-util-resolve-all: 2.0.1
2437
-
micromark-util-subtokenize: 2.1.0
2438
-
micromark-util-symbol: 2.0.1
2439
-
micromark-util-types: 2.0.2
2440
-
2441
-
micromark-extension-gfm-autolink-literal@2.1.0:
2442
-
dependencies:
2443
-
micromark-util-character: 2.1.1
2444
-
micromark-util-sanitize-uri: 2.0.1
2445
-
micromark-util-symbol: 2.0.1
2446
-
micromark-util-types: 2.0.2
1317
+
gensync@1.0.0-beta.2: {}
2447
1318
2448
-
micromark-extension-gfm-footnote@2.1.0:
2449
-
dependencies:
2450
-
devlop: 1.1.0
2451
-
micromark-core-commonmark: 2.0.3
2452
-
micromark-factory-space: 2.0.1
2453
-
micromark-util-character: 2.1.1
2454
-
micromark-util-normalize-identifier: 2.0.1
2455
-
micromark-util-sanitize-uri: 2.0.1
2456
-
micromark-util-symbol: 2.0.1
2457
-
micromark-util-types: 2.0.2
1319
+
html-entities@2.3.3: {}
2458
1320
2459
-
micromark-extension-gfm-strikethrough@2.1.0:
2460
-
dependencies:
2461
-
devlop: 1.1.0
2462
-
micromark-util-chunked: 2.0.1
2463
-
micromark-util-classify-character: 2.0.1
2464
-
micromark-util-resolve-all: 2.0.1
2465
-
micromark-util-symbol: 2.0.1
2466
-
micromark-util-types: 2.0.2
1321
+
is-what@4.1.16: {}
2467
1322
2468
-
micromark-extension-gfm-table@2.1.1:
2469
-
dependencies:
2470
-
devlop: 1.1.0
2471
-
micromark-factory-space: 2.0.1
2472
-
micromark-util-character: 2.1.1
2473
-
micromark-util-symbol: 2.0.1
2474
-
micromark-util-types: 2.0.2
1323
+
js-tokens@4.0.0: {}
2475
1324
2476
-
micromark-extension-gfm-tagfilter@2.0.0:
2477
-
dependencies:
2478
-
micromark-util-types: 2.0.2
1325
+
jsesc@3.1.0: {}
2479
1326
2480
-
micromark-extension-gfm-task-list-item@2.1.0:
2481
-
dependencies:
2482
-
devlop: 1.1.0
2483
-
micromark-factory-space: 2.0.1
2484
-
micromark-util-character: 2.1.1
2485
-
micromark-util-symbol: 2.0.1
2486
-
micromark-util-types: 2.0.2
1327
+
json5@2.2.3: {}
2487
1328
2488
-
micromark-extension-gfm@3.0.0:
1329
+
lru-cache@5.1.1:
2489
1330
dependencies:
2490
-
micromark-extension-gfm-autolink-literal: 2.1.0
2491
-
micromark-extension-gfm-footnote: 2.1.0
2492
-
micromark-extension-gfm-strikethrough: 2.1.0
2493
-
micromark-extension-gfm-table: 2.1.1
2494
-
micromark-extension-gfm-tagfilter: 2.0.0
2495
-
micromark-extension-gfm-task-list-item: 2.1.0
2496
-
micromark-util-combine-extensions: 2.0.1
2497
-
micromark-util-types: 2.0.2
1331
+
yallist: 3.1.1
2498
1332
2499
-
micromark-factory-destination@2.0.1:
1333
+
merge-anything@5.1.7:
2500
1334
dependencies:
2501
-
micromark-util-character: 2.1.1
2502
-
micromark-util-symbol: 2.0.1
2503
-
micromark-util-types: 2.0.2
2504
-
2505
-
micromark-factory-label@2.0.1:
2506
-
dependencies:
2507
-
devlop: 1.1.0
2508
-
micromark-util-character: 2.1.1
2509
-
micromark-util-symbol: 2.0.1
2510
-
micromark-util-types: 2.0.2
2511
-
2512
-
micromark-factory-space@2.0.1:
2513
-
dependencies:
2514
-
micromark-util-character: 2.1.1
2515
-
micromark-util-types: 2.0.2
2516
-
2517
-
micromark-factory-title@2.0.1:
2518
-
dependencies:
2519
-
micromark-factory-space: 2.0.1
2520
-
micromark-util-character: 2.1.1
2521
-
micromark-util-symbol: 2.0.1
2522
-
micromark-util-types: 2.0.2
2523
-
2524
-
micromark-factory-whitespace@2.0.1:
2525
-
dependencies:
2526
-
micromark-factory-space: 2.0.1
2527
-
micromark-util-character: 2.1.1
2528
-
micromark-util-symbol: 2.0.1
2529
-
micromark-util-types: 2.0.2
2530
-
2531
-
micromark-util-character@2.1.1:
2532
-
dependencies:
2533
-
micromark-util-symbol: 2.0.1
2534
-
micromark-util-types: 2.0.2
2535
-
2536
-
micromark-util-chunked@2.0.1:
2537
-
dependencies:
2538
-
micromark-util-symbol: 2.0.1
2539
-
2540
-
micromark-util-classify-character@2.0.1:
2541
-
dependencies:
2542
-
micromark-util-character: 2.1.1
2543
-
micromark-util-symbol: 2.0.1
2544
-
micromark-util-types: 2.0.2
2545
-
2546
-
micromark-util-combine-extensions@2.0.1:
2547
-
dependencies:
2548
-
micromark-util-chunked: 2.0.1
2549
-
micromark-util-types: 2.0.2
2550
-
2551
-
micromark-util-decode-numeric-character-reference@2.0.2:
2552
-
dependencies:
2553
-
micromark-util-symbol: 2.0.1
2554
-
2555
-
micromark-util-decode-string@2.0.1:
2556
-
dependencies:
2557
-
decode-named-character-reference: 1.1.0
2558
-
micromark-util-character: 2.1.1
2559
-
micromark-util-decode-numeric-character-reference: 2.0.2
2560
-
micromark-util-symbol: 2.0.1
2561
-
2562
-
micromark-util-encode@2.0.1: {}
2563
-
2564
-
micromark-util-html-tag-name@2.0.1: {}
2565
-
2566
-
micromark-util-normalize-identifier@2.0.1:
2567
-
dependencies:
2568
-
micromark-util-symbol: 2.0.1
2569
-
2570
-
micromark-util-resolve-all@2.0.1:
2571
-
dependencies:
2572
-
micromark-util-types: 2.0.2
2573
-
2574
-
micromark-util-sanitize-uri@2.0.1:
2575
-
dependencies:
2576
-
micromark-util-character: 2.1.1
2577
-
micromark-util-encode: 2.0.1
2578
-
micromark-util-symbol: 2.0.1
2579
-
2580
-
micromark-util-subtokenize@2.1.0:
2581
-
dependencies:
2582
-
devlop: 1.1.0
2583
-
micromark-util-chunked: 2.0.1
2584
-
micromark-util-symbol: 2.0.1
2585
-
micromark-util-types: 2.0.2
2586
-
2587
-
micromark-util-symbol@2.0.1: {}
2588
-
2589
-
micromark-util-types@2.0.2: {}
2590
-
2591
-
micromark@4.0.2:
2592
-
dependencies:
2593
-
'@types/debug': 4.1.12
2594
-
debug: 4.4.1
2595
-
decode-named-character-reference: 1.1.0
2596
-
devlop: 1.1.0
2597
-
micromark-core-commonmark: 2.0.3
2598
-
micromark-factory-space: 2.0.1
2599
-
micromark-util-character: 2.1.1
2600
-
micromark-util-chunked: 2.0.1
2601
-
micromark-util-combine-extensions: 2.0.1
2602
-
micromark-util-decode-numeric-character-reference: 2.0.2
2603
-
micromark-util-encode: 2.0.1
2604
-
micromark-util-normalize-identifier: 2.0.1
2605
-
micromark-util-resolve-all: 2.0.1
2606
-
micromark-util-sanitize-uri: 2.0.1
2607
-
micromark-util-subtokenize: 2.1.0
2608
-
micromark-util-symbol: 2.0.1
2609
-
micromark-util-types: 2.0.2
2610
-
transitivePeerDependencies:
2611
-
- supports-color
2612
-
2613
-
mrmime@2.0.1: {}
1335
+
is-what: 4.1.16
2614
1336
2615
1337
ms@2.1.3: {}
2616
1338
2617
1339
nanoid@3.3.11: {}
2618
1340
2619
-
neotraverse@0.6.18: {}
2620
-
2621
-
nlcst-to-string@4.0.0:
2622
-
dependencies:
2623
-
'@types/nlcst': 2.0.3
2624
-
2625
-
node-fetch-native@1.6.6: {}
2626
-
2627
-
node-fetch@2.7.0:
2628
-
dependencies:
2629
-
whatwg-url: 5.0.0
2630
-
2631
-
node-mock-http@1.0.0: {}
2632
-
2633
-
normalize-path@3.0.0: {}
2634
-
2635
-
ofetch@1.4.1:
2636
-
dependencies:
2637
-
destr: 2.0.5
2638
-
node-fetch-native: 1.6.6
2639
-
ufo: 1.6.1
2640
-
2641
-
ohash@2.0.11: {}
2642
-
2643
-
oniguruma-parser@0.12.1: {}
2644
-
2645
-
oniguruma-to-es@4.3.3:
2646
-
dependencies:
2647
-
oniguruma-parser: 0.12.1
2648
-
regex: 6.0.1
2649
-
regex-recursion: 6.0.2
2650
-
2651
-
p-limit@6.2.0:
2652
-
dependencies:
2653
-
yocto-queue: 1.2.1
2654
-
2655
-
p-queue@8.1.0:
2656
-
dependencies:
2657
-
eventemitter3: 5.0.1
2658
-
p-timeout: 6.1.4
1341
+
nanoid@5.1.5: {}
2659
1342
2660
-
p-timeout@6.1.4: {}
2661
-
2662
-
package-manager-detector@1.3.0: {}
2663
-
2664
-
pako@0.2.9: {}
2665
-
2666
-
parse-latin@7.0.0:
2667
-
dependencies:
2668
-
'@types/nlcst': 2.0.3
2669
-
'@types/unist': 3.0.3
2670
-
nlcst-to-string: 4.0.0
2671
-
unist-util-modify-children: 4.0.0
2672
-
unist-util-visit-children: 3.0.0
2673
-
vfile: 6.0.3
1343
+
node-releases@2.0.19: {}
2674
1344
2675
1345
parse5@7.3.0:
2676
1346
dependencies:
···
2678
1348
2679
1349
picocolors@1.1.1: {}
2680
1350
2681
-
picomatch@2.3.1: {}
1351
+
picomatch@4.0.3: {}
2682
1352
2683
-
picomatch@4.0.2: {}
2684
-
2685
-
postcss@8.5.4:
1353
+
postcss@8.5.6:
2686
1354
dependencies:
2687
1355
nanoid: 3.3.11
2688
1356
picocolors: 1.1.1
2689
1357
source-map-js: 1.2.1
2690
1358
2691
-
prismjs@1.30.0: {}
1359
+
prettier@3.6.2: {}
2692
1360
2693
-
prompts@2.4.2:
1361
+
rollup@4.47.1:
2694
1362
dependencies:
2695
-
kleur: 3.0.3
2696
-
sisteransi: 1.0.5
1363
+
'@types/estree': 1.0.8
1364
+
optionalDependencies:
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
1385
+
fsevents: 2.3.3
2697
1386
2698
-
property-information@6.5.0: {}
2699
-
2700
-
property-information@7.1.0: {}
2701
-
2702
-
radix3@1.1.2: {}
2703
-
2704
-
readdirp@4.1.2: {}
1387
+
semver@6.3.1: {}
2705
1388
2706
-
regex-recursion@6.0.2:
1389
+
seroval-plugins@1.3.2(seroval@1.3.2):
2707
1390
dependencies:
2708
-
regex-utilities: 2.3.0
1391
+
seroval: 1.3.2
2709
1392
2710
-
regex-utilities@2.3.0: {}
2711
-
2712
-
regex@6.0.1:
2713
-
dependencies:
2714
-
regex-utilities: 2.3.0
2715
-
2716
-
rehype-parse@9.0.1:
2717
-
dependencies:
2718
-
'@types/hast': 3.0.4
2719
-
hast-util-from-html: 2.0.3
2720
-
unified: 11.0.5
2721
-
2722
-
rehype-raw@7.0.0:
2723
-
dependencies:
2724
-
'@types/hast': 3.0.4
2725
-
hast-util-raw: 9.1.0
2726
-
vfile: 6.0.3
2727
-
2728
-
rehype-stringify@10.0.1:
2729
-
dependencies:
2730
-
'@types/hast': 3.0.4
2731
-
hast-util-to-html: 9.0.5
2732
-
unified: 11.0.5
2733
-
2734
-
rehype@13.0.2:
2735
-
dependencies:
2736
-
'@types/hast': 3.0.4
2737
-
rehype-parse: 9.0.1
2738
-
rehype-stringify: 10.0.1
2739
-
unified: 11.0.5
2740
-
2741
-
remark-gfm@4.0.1:
2742
-
dependencies:
2743
-
'@types/mdast': 4.0.4
2744
-
mdast-util-gfm: 3.1.0
2745
-
micromark-extension-gfm: 3.0.0
2746
-
remark-parse: 11.0.0
2747
-
remark-stringify: 11.0.0
2748
-
unified: 11.0.5
2749
-
transitivePeerDependencies:
2750
-
- supports-color
1393
+
seroval@1.3.2: {}
2751
1394
2752
-
remark-parse@11.0.0:
1395
+
solid-devtools@0.34.3(solid-js@1.9.9)(vite@6.3.5(@types/node@24.3.0)):
2753
1396
dependencies:
2754
-
'@types/mdast': 4.0.4
2755
-
mdast-util-from-markdown: 2.0.2
2756
-
micromark-util-types: 2.0.2
2757
-
unified: 11.0.5
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
1403
+
optionalDependencies:
1404
+
vite: 6.3.5(@types/node@24.3.0)
2758
1405
transitivePeerDependencies:
2759
1406
- supports-color
2760
1407
2761
-
remark-rehype@11.1.2:
2762
-
dependencies:
2763
-
'@types/hast': 3.0.4
2764
-
'@types/mdast': 4.0.4
2765
-
mdast-util-to-hast: 13.2.0
2766
-
unified: 11.0.5
2767
-
vfile: 6.0.3
2768
-
2769
-
remark-smartypants@3.0.2:
2770
-
dependencies:
2771
-
retext: 9.0.0
2772
-
retext-smartypants: 6.2.0
2773
-
unified: 11.0.5
2774
-
unist-util-visit: 5.0.0
2775
-
2776
-
remark-stringify@11.0.0:
2777
-
dependencies:
2778
-
'@types/mdast': 4.0.4
2779
-
mdast-util-to-markdown: 2.1.2
2780
-
unified: 11.0.5
2781
-
2782
-
restructure@3.0.2: {}
2783
-
2784
-
retext-latin@4.0.0:
1408
+
solid-js@1.9.9:
2785
1409
dependencies:
2786
-
'@types/nlcst': 2.0.3
2787
-
parse-latin: 7.0.0
2788
-
unified: 11.0.5
1410
+
csstype: 3.1.3
1411
+
seroval: 1.3.2
1412
+
seroval-plugins: 1.3.2(seroval@1.3.2)
2789
1413
2790
-
retext-smartypants@6.2.0:
1414
+
solid-refresh@0.6.3(solid-js@1.9.9):
2791
1415
dependencies:
2792
-
'@types/nlcst': 2.0.3
2793
-
nlcst-to-string: 4.0.0
2794
-
unist-util-visit: 5.0.0
2795
-
2796
-
retext-stringify@4.0.0:
2797
-
dependencies:
2798
-
'@types/nlcst': 2.0.3
2799
-
nlcst-to-string: 4.0.0
2800
-
unified: 11.0.5
2801
-
2802
-
retext@9.0.0:
2803
-
dependencies:
2804
-
'@types/nlcst': 2.0.3
2805
-
retext-latin: 4.0.0
2806
-
retext-stringify: 4.0.0
2807
-
unified: 11.0.5
2808
-
2809
-
rollup@4.42.0:
2810
-
dependencies:
2811
-
'@types/estree': 1.0.7
2812
-
optionalDependencies:
2813
-
'@rollup/rollup-android-arm-eabi': 4.42.0
2814
-
'@rollup/rollup-android-arm64': 4.42.0
2815
-
'@rollup/rollup-darwin-arm64': 4.42.0
2816
-
'@rollup/rollup-darwin-x64': 4.42.0
2817
-
'@rollup/rollup-freebsd-arm64': 4.42.0
2818
-
'@rollup/rollup-freebsd-x64': 4.42.0
2819
-
'@rollup/rollup-linux-arm-gnueabihf': 4.42.0
2820
-
'@rollup/rollup-linux-arm-musleabihf': 4.42.0
2821
-
'@rollup/rollup-linux-arm64-gnu': 4.42.0
2822
-
'@rollup/rollup-linux-arm64-musl': 4.42.0
2823
-
'@rollup/rollup-linux-loongarch64-gnu': 4.42.0
2824
-
'@rollup/rollup-linux-powerpc64le-gnu': 4.42.0
2825
-
'@rollup/rollup-linux-riscv64-gnu': 4.42.0
2826
-
'@rollup/rollup-linux-riscv64-musl': 4.42.0
2827
-
'@rollup/rollup-linux-s390x-gnu': 4.42.0
2828
-
'@rollup/rollup-linux-x64-gnu': 4.42.0
2829
-
'@rollup/rollup-linux-x64-musl': 4.42.0
2830
-
'@rollup/rollup-win32-arm64-msvc': 4.42.0
2831
-
'@rollup/rollup-win32-ia32-msvc': 4.42.0
2832
-
'@rollup/rollup-win32-x64-msvc': 4.42.0
2833
-
fsevents: 2.3.3
2834
-
2835
-
semver@7.7.2: {}
2836
-
2837
-
sharp@0.33.5:
2838
-
dependencies:
2839
-
color: 4.2.3
2840
-
detect-libc: 2.0.4
2841
-
semver: 7.7.2
2842
-
optionalDependencies:
2843
-
'@img/sharp-darwin-arm64': 0.33.5
2844
-
'@img/sharp-darwin-x64': 0.33.5
2845
-
'@img/sharp-libvips-darwin-arm64': 1.0.4
2846
-
'@img/sharp-libvips-darwin-x64': 1.0.4
2847
-
'@img/sharp-libvips-linux-arm': 1.0.5
2848
-
'@img/sharp-libvips-linux-arm64': 1.0.4
2849
-
'@img/sharp-libvips-linux-s390x': 1.0.4
2850
-
'@img/sharp-libvips-linux-x64': 1.0.4
2851
-
'@img/sharp-libvips-linuxmusl-arm64': 1.0.4
2852
-
'@img/sharp-libvips-linuxmusl-x64': 1.0.4
2853
-
'@img/sharp-linux-arm': 0.33.5
2854
-
'@img/sharp-linux-arm64': 0.33.5
2855
-
'@img/sharp-linux-s390x': 0.33.5
2856
-
'@img/sharp-linux-x64': 0.33.5
2857
-
'@img/sharp-linuxmusl-arm64': 0.33.5
2858
-
'@img/sharp-linuxmusl-x64': 0.33.5
2859
-
'@img/sharp-wasm32': 0.33.5
2860
-
'@img/sharp-win32-ia32': 0.33.5
2861
-
'@img/sharp-win32-x64': 0.33.5
2862
-
optional: true
2863
-
2864
-
shiki@3.6.0:
2865
-
dependencies:
2866
-
'@shikijs/core': 3.6.0
2867
-
'@shikijs/engine-javascript': 3.6.0
2868
-
'@shikijs/engine-oniguruma': 3.6.0
2869
-
'@shikijs/langs': 3.6.0
2870
-
'@shikijs/themes': 3.6.0
2871
-
'@shikijs/types': 3.6.0
2872
-
'@shikijs/vscode-textmate': 10.0.2
2873
-
'@types/hast': 3.0.4
2874
-
2875
-
simple-swizzle@0.2.2:
2876
-
dependencies:
2877
-
is-arrayish: 0.3.2
2878
-
optional: true
2879
-
2880
-
sisteransi@1.0.5: {}
2881
-
2882
-
smol-toml@1.3.4: {}
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
2883
1422
2884
1423
source-map-js@1.2.1: {}
2885
1424
2886
-
space-separated-tokens@2.0.2: {}
2887
-
2888
-
string-width@4.2.3:
2889
-
dependencies:
2890
-
emoji-regex: 8.0.0
2891
-
is-fullwidth-code-point: 3.0.0
2892
-
strip-ansi: 6.0.1
2893
-
2894
-
string-width@7.2.0:
2895
-
dependencies:
2896
-
emoji-regex: 10.4.0
2897
-
get-east-asian-width: 1.3.0
2898
-
strip-ansi: 7.1.0
2899
-
2900
-
stringify-entities@4.0.4:
2901
-
dependencies:
2902
-
character-entities-html4: 2.1.0
2903
-
character-entities-legacy: 3.0.0
2904
-
2905
-
strip-ansi@6.0.1:
2906
-
dependencies:
2907
-
ansi-regex: 5.0.1
2908
-
2909
-
strip-ansi@7.1.0:
2910
-
dependencies:
2911
-
ansi-regex: 6.1.0
2912
-
2913
-
tiny-inflate@1.0.3: {}
2914
-
2915
-
tinyexec@0.3.2: {}
2916
-
2917
1425
tinyglobby@0.2.14:
2918
1426
dependencies:
2919
-
fdir: 6.4.5(picomatch@4.0.2)
2920
-
picomatch: 4.0.2
2921
-
2922
-
tr46@0.0.3: {}
2923
-
2924
-
trim-lines@3.0.1: {}
2925
-
2926
-
trough@2.2.0: {}
2927
-
2928
-
tsconfck@3.1.6(typescript@5.8.3):
2929
-
optionalDependencies:
2930
-
typescript: 5.8.3
2931
-
2932
-
tslib@2.8.1: {}
2933
-
2934
-
type-fest@4.41.0: {}
2935
-
2936
-
typescript@5.8.3: {}
2937
-
2938
-
ufo@1.6.1: {}
2939
-
2940
-
ultrahtml@1.6.0: {}
2941
-
2942
-
uncrypto@0.1.3: {}
2943
-
2944
-
undici-types@6.21.0: {}
2945
-
2946
-
unicode-properties@1.4.1:
2947
-
dependencies:
2948
-
base64-js: 1.5.1
2949
-
unicode-trie: 2.0.0
2950
-
2951
-
unicode-trie@2.0.0:
2952
-
dependencies:
2953
-
pako: 0.2.9
2954
-
tiny-inflate: 1.0.3
2955
-
2956
-
unified@11.0.5:
2957
-
dependencies:
2958
-
'@types/unist': 3.0.3
2959
-
bail: 2.0.2
2960
-
devlop: 1.1.0
2961
-
extend: 3.0.2
2962
-
is-plain-obj: 4.1.0
2963
-
trough: 2.2.0
2964
-
vfile: 6.0.3
1427
+
fdir: 6.5.0(picomatch@4.0.3)
1428
+
picomatch: 4.0.3
2965
1429
2966
-
unifont@0.5.0:
2967
-
dependencies:
2968
-
css-tree: 3.1.0
2969
-
ohash: 2.0.11
1430
+
typescript@5.9.2: {}
2970
1431
2971
-
unist-util-find-after@5.0.0:
2972
-
dependencies:
2973
-
'@types/unist': 3.0.3
2974
-
unist-util-is: 6.0.0
1432
+
undici-types@7.10.0: {}
2975
1433
2976
-
unist-util-is@6.0.0:
1434
+
update-browserslist-db@1.1.3(browserslist@4.25.3):
2977
1435
dependencies:
2978
-
'@types/unist': 3.0.3
1436
+
browserslist: 4.25.3
1437
+
escalade: 3.2.0
1438
+
picocolors: 1.1.1
2979
1439
2980
-
unist-util-modify-children@4.0.0:
2981
-
dependencies:
2982
-
'@types/unist': 3.0.3
2983
-
array-iterate: 2.0.1
1440
+
validate-html-nesting@1.2.3: {}
2984
1441
2985
-
unist-util-position@5.0.0:
1442
+
vite-plugin-solid@2.11.8(solid-js@1.9.9)(vite@6.3.5(@types/node@24.3.0)):
2986
1443
dependencies:
2987
-
'@types/unist': 3.0.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))
1452
+
transitivePeerDependencies:
1453
+
- supports-color
2988
1454
2989
-
unist-util-remove-position@5.0.0:
1455
+
vite@6.3.5(@types/node@24.3.0):
2990
1456
dependencies:
2991
-
'@types/unist': 3.0.3
2992
-
unist-util-visit: 5.0.0
2993
-
2994
-
unist-util-stringify-position@4.0.0:
2995
-
dependencies:
2996
-
'@types/unist': 3.0.3
2997
-
2998
-
unist-util-visit-children@3.0.0:
2999
-
dependencies:
3000
-
'@types/unist': 3.0.3
3001
-
3002
-
unist-util-visit-parents@6.0.1:
3003
-
dependencies:
3004
-
'@types/unist': 3.0.3
3005
-
unist-util-is: 6.0.0
3006
-
3007
-
unist-util-visit@5.0.0:
3008
-
dependencies:
3009
-
'@types/unist': 3.0.3
3010
-
unist-util-is: 6.0.0
3011
-
unist-util-visit-parents: 6.0.1
3012
-
3013
-
unstorage@1.16.0:
3014
-
dependencies:
3015
-
anymatch: 3.1.3
3016
-
chokidar: 4.0.3
3017
-
destr: 2.0.5
3018
-
h3: 1.15.3
3019
-
lru-cache: 10.4.3
3020
-
node-fetch-native: 1.6.6
3021
-
ofetch: 1.4.1
3022
-
ufo: 1.6.1
3023
-
3024
-
vfile-location@5.0.3:
3025
-
dependencies:
3026
-
'@types/unist': 3.0.3
3027
-
vfile: 6.0.3
3028
-
3029
-
vfile-message@4.0.2:
3030
-
dependencies:
3031
-
'@types/unist': 3.0.3
3032
-
unist-util-stringify-position: 4.0.0
3033
-
3034
-
vfile@6.0.3:
3035
-
dependencies:
3036
-
'@types/unist': 3.0.3
3037
-
vfile-message: 4.0.2
3038
-
3039
-
vite@6.3.5(@types/node@22.15.30):
3040
-
dependencies:
3041
-
esbuild: 0.25.5
3042
-
fdir: 6.4.5(picomatch@4.0.2)
3043
-
picomatch: 4.0.2
3044
-
postcss: 8.5.4
3045
-
rollup: 4.42.0
1457
+
esbuild: 0.25.9
1458
+
fdir: 6.5.0(picomatch@4.0.3)
1459
+
picomatch: 4.0.3
1460
+
postcss: 8.5.6
1461
+
rollup: 4.47.1
3046
1462
tinyglobby: 0.2.14
3047
1463
optionalDependencies:
3048
-
'@types/node': 22.15.30
1464
+
'@types/node': 24.3.0
3049
1465
fsevents: 2.3.3
3050
1466
3051
-
vitefu@1.0.6(vite@6.3.5(@types/node@22.15.30)):
1467
+
vitefu@1.1.1(vite@6.3.5(@types/node@24.3.0)):
3052
1468
optionalDependencies:
3053
-
vite: 6.3.5(@types/node@22.15.30)
3054
-
3055
-
web-namespaces@2.0.1: {}
3056
-
3057
-
webidl-conversions@3.0.1: {}
3058
-
3059
-
whatwg-url@5.0.0:
3060
-
dependencies:
3061
-
tr46: 0.0.3
3062
-
webidl-conversions: 3.0.1
3063
-
3064
-
which-pm-runs@1.1.0: {}
1469
+
vite: 6.3.5(@types/node@24.3.0)
3065
1470
3066
-
widest-line@5.0.0:
3067
-
dependencies:
3068
-
string-width: 7.2.0
3069
-
3070
-
wrap-ansi@9.0.0:
3071
-
dependencies:
3072
-
ansi-styles: 6.2.1
3073
-
string-width: 7.2.0
3074
-
strip-ansi: 7.1.0
3075
-
3076
-
xxhash-wasm@1.1.0: {}
3077
-
3078
-
yargs-parser@21.1.1: {}
3079
-
3080
-
yocto-queue@1.2.1: {}
3081
-
3082
-
yocto-spinner@0.2.3:
3083
-
dependencies:
3084
-
yoctocolors: 2.1.1
3085
-
3086
-
yoctocolors@2.1.1: {}
3087
-
3088
-
zod-to-json-schema@3.24.5(zod@3.25.56):
3089
-
dependencies:
3090
-
zod: 3.25.56
3091
-
3092
-
zod-to-ts@1.2.0(typescript@5.8.3)(zod@3.25.56):
3093
-
dependencies:
3094
-
typescript: 5.8.3
3095
-
zod: 3.25.56
3096
-
3097
-
zod@3.25.56: {}
3098
-
3099
-
zwitch@2.0.4: {}
1471
+
yallist@3.1.1: {}
-9
frontend/public/favicon.svg
-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
frontend/public/images/404.png
This is a binary file and will not be displayed.
+12
frontend/public/oauth-client-metadata.json
+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
frontend/src/assets/favicon.ico
This is a binary file and will not be displayed.
-18
frontend/src/components/Clip.astro
-18
frontend/src/components/Clip.astro
···
1
-
---
2
-
import TagList from "./TagList.astro";
3
-
const { title, tagList, link, description, originalClipper, firstClipDate } = Astro.props;
4
-
---
5
-
<div class="clip">
6
-
<div class="clip-head">
7
-
<h2 class="clip-title"><a href={link}>{title}</a></h2>
8
-
<TagList tags={tagList} />
9
-
</div>
10
-
<small class="clip-link"><a href={link}>{link}</a></small>
11
-
<p class="clip-description">{description}</p>
12
-
<div class="clip-actions">
13
-
<a href="#">clip</a>
14
-
<a href="#">respond</a>
15
-
<a href="#">hide</a>
16
-
<span class="original-clipper">[first clipped by <a href="#">@{originalClipper}</a> {firstClipDate} ago]</span>
17
-
</div>
18
-
</div>
-9
frontend/src/components/SidebarItem.astro
-9
frontend/src/components/SidebarItem.astro
-12
frontend/src/components/TagList.astro
-12
frontend/src/components/TagList.astro
+34
frontend/src/components/header.tsx
+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
+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
+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
+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
+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
+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
+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 };
-20
frontend/src/layouts/Base.astro
-20
frontend/src/layouts/Base.astro
···
1
-
---
2
-
const { title } = Astro.props;
3
-
import '../styles/main.css';
4
-
---
5
-
<!doctype html>
6
-
<!--
7
-
* clippr: a social bookmarking service for the AT Protocol
8
-
* Copyright (c) 2025 clippr contributors.
9
-
* SPDX-License-Identifier: AGPL-3.0-only
10
-
-->
11
-
<html lang="en">
12
-
<head>
13
-
<meta charset="UTF-8"/>
14
-
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
15
-
<title>{title} | clippr</title>
16
-
</head>
17
-
<body>
18
-
<slot />
19
-
</body>
20
-
</html>
-10
frontend/src/layouts/Header.astro
-10
frontend/src/layouts/Header.astro
-32
frontend/src/pages/404.astro
-32
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
-
<Base title="404">
7
-
<Header/>
8
-
<main class="404-page">
9
-
<h2>404 | page not found</h2>
10
-
<p>the party seems to be over...</p>
11
-
<a href="/">ยซ go home</a>
12
-
</main>
13
-
<Footer/>
14
-
</Base>
15
-
16
-
<style>
17
-
main {
18
-
display: flex !important;
19
-
flex-direction: column !important;
20
-
gap: 0.1rem;
21
-
align-items: center;
22
-
justify-content: center;
23
-
}
24
-
25
-
h2, p {
26
-
margin: 0.5rem 0;
27
-
}
28
-
29
-
a {
30
-
color: revert;
31
-
}
32
-
</style>
-12
frontend/src/pages/about.astro
-12
frontend/src/pages/about.astro
-36
frontend/src/pages/index.astro
-36
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
-
<Base title="home">
9
-
<Header/>
10
-
<main>
11
-
<div id="main-content">
12
-
<div id="clip-list">
13
-
<Clip title="google" link="https://google.com" tagList="technology,search,google"
14
-
description="tests woah"
15
-
originalClipper="popbob.com" firstClipDate="30m"/>
16
-
</div>
17
-
</div>
18
-
<div id="sidebar">
19
-
<SidebarItem title="what is clippr?">
20
-
<p>clippr is a bookmarking site that doubles as a news aggregator.</p>
21
-
<p>using your bookmarks (or "clips") and their associated tags, a constantly updated news feed is
22
-
created based on what users are clipping to their collection.</p>
23
-
<a href="/about">learn more ยป</a>
24
-
</SidebarItem>
25
-
<SidebarItem title="stats">
26
-
<h3>clips</h3>
27
-
<p class="item-counter">0</p>
28
-
<h3>sites</h3>
29
-
<p class="item-counter">0</p>
30
-
<h3>users</h3>
31
-
<p class="item-counter">0</p>
32
-
</SidebarItem>
33
-
</div>
34
-
</main>
35
-
<Footer/>
36
-
</Base>
-95
frontend/src/pages/login.astro
-95
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
-
<Base title="login">
7
-
<Header/>
8
-
<main>
9
-
<div id="oauth-login">
10
-
<h2>log in</h2>
11
-
<p>Enter your Bluesky handle.</p>
12
-
<form>
13
-
<label for="handle">handle</label>
14
-
<input type="text" id="handle" name="handle" placeholder="handle">
15
-
<input type="submit" value="Authenticate">
16
-
</form>
17
-
</div>
18
-
<!--<p id="or">or...</p>-->
19
-
<!--<div id="bluesky-login">-->
20
-
<!-- <h2>use your bluesky account</h2>-->
21
-
<!-- <button id="bluesky-login-button">login to bluesky</button>-->
22
-
<!--</div>-->
23
-
</main>
24
-
<Footer/>
25
-
</Base>
26
-
27
-
<style>
28
-
main {
29
-
display: flex !important;
30
-
flex-direction: column;
31
-
align-items: center;
32
-
justify-content: center;
33
-
gap: 1rem;
34
-
}
35
-
36
-
form {
37
-
display: flex;
38
-
flex-direction: column;
39
-
justify-content: center;
40
-
41
-
label {
42
-
text-align: center;
43
-
font-weight: bold;
44
-
margin-bottom: 0.5rem;
45
-
}
46
-
47
-
input[type="submit"] {
48
-
margin: 1rem 0 0 0;
49
-
padding: 0.5rem 0;
50
-
width: 50%;
51
-
align-self: center;
52
-
}
53
-
}
54
-
55
-
a {
56
-
color: revert;
57
-
}
58
-
59
-
#or {
60
-
border: 2px black solid;
61
-
padding: 0.5rem 2rem;
62
-
margin: 0;
63
-
font-weight: bold;
64
-
}
65
-
66
-
h2 {
67
-
text-align: center;
68
-
}
69
-
70
-
#bluesky-login {
71
-
display: flex;
72
-
flex-direction: column;
73
-
justify-content: center;
74
-
align-items: center;
75
-
76
-
h2 {
77
-
margin: 1rem 0;
78
-
margin-top: 0;
79
-
}
80
-
}
81
-
82
-
#bluesky-login-button {
83
-
background: linear-gradient(deepskyblue, lightskyblue);
84
-
border: none;
85
-
border-radius: 10px;
86
-
font-weight: bold;
87
-
padding: 1rem 2rem;
88
-
}
89
-
90
-
#bluesky-login-button:hover {
91
-
cursor: pointer;
92
-
filter: brightness(90%);
93
-
transition: filter 0.3s ease-in-out;
94
-
}
95
-
</style>
+264
frontend/src/styles/index.css
+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
-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
-
}
51
-
52
-
main {
53
-
background-color: white;
54
-
background-clip: border-box;
55
-
padding: 1rem 0.5rem;
56
-
57
-
display: grid;
58
-
grid-template-columns: 70% 30%;
59
-
}
60
-
61
-
#clip-list {
62
-
margin: 0 0.5rem;
63
-
64
-
.clip:first-of-type {
65
-
margin: 0;
66
-
}
67
-
68
-
.clip {
69
-
margin: 1.5rem 0;
70
-
}
71
-
}
72
-
73
-
.clip {
74
-
display: grid;
75
-
grid-template-columns: auto;
76
-
grid-template-rows: auto;
77
-
grid-gap: 0.5rem;
78
-
79
-
a {
80
-
color: revert;
81
-
}
82
-
83
-
.clip-head {
84
-
display: flex;
85
-
flex-direction: row;
86
-
align-items: center;
87
-
gap: 1rem;
88
-
89
-
h2 {
90
-
margin: 0;
91
-
}
92
-
93
-
grid-column: 1;
94
-
grid-row: 1;
95
-
}
96
-
97
-
.clip-link {
98
-
grid-column: 1;
99
-
grid-row: 2;
100
-
}
101
-
102
-
.clip-description {
103
-
grid-column: 1;
104
-
grid-row: 3;
105
-
106
-
font-size: 0.8rem;
107
-
margin: 0.25rem 0;
108
-
}
109
-
110
-
.clip-tags {
111
-
margin: 0;
112
-
}
113
-
114
-
.clip-tags * {
115
-
background: linear-gradient(#ffe076, #fff0cb) !important;
116
-
padding: 0.25rem;
117
-
margin: 0 0.25rem !important;
118
-
border-radius: 0.34rem;
119
-
border: 0.09rem solid black;
120
-
}
121
-
122
-
.clip-actions {
123
-
display: flex;
124
-
flex-direction: row;
125
-
gap: 0.5rem;
126
-
font-size: 0.8rem;
127
-
128
-
grid-column: 1;
129
-
grid-row: 4;
130
-
}
131
-
132
-
.original-clipper {
133
-
color: #777 !important;
134
-
}
135
-
}
136
-
137
-
#sidebar {
138
-
margin: 0 1rem;
139
-
}
140
-
141
-
.sidebar-content {
142
-
background-color: #bbbbbb;
143
-
display: flex;
144
-
flex-direction: column;
145
-
align-items: center;
146
-
justify-content: center;
147
-
148
-
h3, p {
149
-
margin: 0.5rem;
150
-
}
151
-
152
-
.item-counter {
153
-
font-size: 2rem;
154
-
}
155
-
}
156
-
157
-
.sidebar-item {
158
-
padding: 0.5rem 0;
159
-
160
-
h2 {
161
-
margin: 0.5rem 0;
162
-
}
163
-
164
-
a {
165
-
align-self: start;
166
-
color: revert;
167
-
padding: 0.5rem 0.5rem;
168
-
}
169
-
170
-
a:hover {
171
-
font-style: revert;
172
-
text-decoration: underline;
173
-
}
174
-
}
175
-
176
-
.sidebar-item:first-of-type {
177
-
padding-top: 0;
178
-
179
-
h2 {
180
-
margin-top: 0;
181
-
}
182
-
}
183
-
184
-
+19
frontend/src/types.ts
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+5
-3
frontend/tsconfig.json
+23
frontend/tsconfig.node.json
+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
+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
+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.
+46
lexicons/CHANGELOG.md
+46
lexicons/CHANGELOG.md
···
1
+
# changelog for @clipprjs/lexicons
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
+
9
+
## v1.0.2
10
+
11
+
* fix some description typos
12
+
* fix `social.clippr.feed.getTags` not existing due to an ID collision
13
+
14
+
## v1.0.1
15
+
16
+
* remove minimum character prompts due to schema validation errors that broke otherwise valid records
17
+
18
+
## v1.0.0
19
+
20
+
> this version should be considered as the starting point for a usable Lexicon API. previous versions should be ignored.
21
+
22
+
* added search queries for clips, tags and profiles
23
+
* added `social.clippr.actor.defs#preferences` with an accompanying query and procedure lexicon
24
+
* added more inline documentation to previously existing lexicons
25
+
* added query lexicons for having a clip and tag feed on a profile
26
+
* added general query lexicons for at:// URIs linking to clips and tags
27
+
28
+
## v0.1.4
29
+
30
+
* added length constraints to more strings in record lexicons
31
+
32
+
## v0.1.3
33
+
34
+
* made `displayName` required for profile records
35
+
36
+
## v0.1.2
37
+
38
+
* added npm tags.. i guess
39
+
40
+
## v0.1.1
41
+
42
+
* something(?)
43
+
44
+
## v0.1.0
45
+
46
+
* initial record and `social.clippr.actor.getProfile` query lexicons
+3
-5
lexicons/README.md
+3
-5
lexicons/README.md
···
2
2
3
3
Lexicon package auto-generated with `@atcute/lex-cli`
4
4
5
-
> [!WARNING]
6
-
> This package is *very* unstable. Lexicon attributes can be modified at any moment.
5
+
> This package is *somewhat* unstable. Lexicon attributes can be modified at any moment.
7
6
> Please do not use this package for anything until the [Clippr server](https://tangled.sh/@hexmani.ac/clippr) has been
8
-
> deployed.
7
+
> deployed for either public or developer usage.
9
8
10
9
## Usage
11
10
12
-
> [!NOTE]
13
11
> This section has been shamelessly lifted from
14
12
> the [atcute definitions](https://github.com/mary-ext/atcute/tree/trunk/packages/definitions/bluesky) packages. We
15
13
> recommend using this package with other atcute libraries for maximum compatibility.
···
60
58
import type {} from '@clipprjs/lexicons';
61
59
```
62
60
63
-
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.
+16
-16
lexicons/lex.config.js
+16
-16
lexicons/lex.config.js
···
8
8
import {defineLexiconConfig} from "@atcute/lex-cli";
9
9
10
10
export default defineLexiconConfig({
11
-
files: ["../lexdocs/**/*.json"],
12
-
outdir: "lib/lexicons",
13
-
mappings: [
14
-
{
15
-
nsid: ["com.atproto.*"],
16
-
imports: (nsid) => {
17
-
const specifier = nsid
18
-
.slice("com.atproto.".length)
19
-
.replaceAll(".", "/");
20
-
return {
21
-
type: "namespace",
22
-
from: `@atcute/atproto/types/${specifier}`,
23
-
};
24
-
},
25
-
},
26
-
],
11
+
files: ["../lexdocs/**/*.json"],
12
+
outdir: "lib/lexicons",
13
+
mappings: [
14
+
{
15
+
nsid: ["com.atproto.*"],
16
+
imports: (nsid) => {
17
+
const specifier = nsid
18
+
.slice("com.atproto.".length)
19
+
.replaceAll(".", "/");
20
+
return {
21
+
type: "namespace",
22
+
from: `@atcute/atproto/types/${specifier}`,
23
+
};
24
+
},
25
+
},
26
+
],
27
27
});
+12
-6
lexicons/lib/lexicons/index.ts
+12
-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";
2
+
export * as SocialClipprActorGetPreferences from "./types/social/clippr/actor/getPreferences.js";
8
3
export * as SocialClipprActorGetProfile from "./types/social/clippr/actor/getProfile.js";
9
4
export * as SocialClipprActorProfile from "./types/social/clippr/actor/profile.js";
5
+
export * as SocialClipprActorPutPreferences from "./types/social/clippr/actor/putPreferences.js";
6
+
export * as SocialClipprActorSearchClips from "./types/social/clippr/actor/searchClips.js";
7
+
export * as SocialClipprActorSearchProfiles from "./types/social/clippr/actor/searchProfiles.js";
8
+
export * as SocialClipprActorSearchTags from "./types/social/clippr/actor/searchTags.js";
10
9
export * as SocialClipprFeedClip from "./types/social/clippr/feed/clip.js";
10
+
export * as SocialClipprFeedDefs from "./types/social/clippr/feed/defs.js";
11
+
export * as SocialClipprFeedGetClips from "./types/social/clippr/feed/getClips.js";
12
+
export * as SocialClipprFeedGetProfileClips from "./types/social/clippr/feed/getProfileClips.js";
13
+
export * as SocialClipprFeedGetProfileTags from "./types/social/clippr/feed/getProfileTags.js";
14
+
export * as SocialClipprFeedGetTagClips from "./types/social/clippr/feed/getTagClips.js";
15
+
export * as SocialClipprFeedGetTagList from "./types/social/clippr/feed/getTagList.js";
16
+
export * as SocialClipprFeedGetTags from "./types/social/clippr/feed/getTags.js";
11
17
export * as SocialClipprFeedTag from "./types/social/clippr/feed/tag.js";
+4
-4
lexicons/package.json
+4
-4
lexicons/package.json
···
1
1
{
2
2
"type": "module",
3
3
"name": "@clipprjs/lexicons",
4
-
"version": "0.1.3",
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.0",
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
+24
-24
lexicons/pnpm-lock.yaml
···
9
9
.:
10
10
dependencies:
11
11
'@atcute/atproto':
12
-
specifier: ^3.1.0
13
-
version: 3.1.0
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.0':
28
-
resolution: {integrity: sha512-aJbDsY7FcIh8APWKAimBtshPwqoRE056tc0UV6vw4TW4e3nYaHedoJmKhlh/k8KQWxyw64MQThNGMaC89HNoTg==}
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.0':
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
+10
package.json
+24
pnpm-lock.yaml
+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: {}