extremely wip tangled spa

first commit (not really)

a bit more

skibidi

skibidi

im stupid

dumbass

dumbass

removes some of the heaviest languages from highlight.js

dumbass

code splitting for highlight js

commit

slickness

skibii

not going to do that

scroll

awesomers

skibivi

aylac.top 648f1941

verified
+1
.envrc
···
+
use flake
+28
.gitignore
···
+
dist
+
.wrangler
+
.output
+
.vercel
+
.netlify
+
.vinxi
+
app.config.timestamp_*.js
+
+
# Environment
+
.env
+
.env*.local
+
+
# dependencies
+
/node_modules
+
+
# IDEs and editors
+
/.idea
+
.project
+
.classpath
+
*.launch
+
.settings/
+
+
# Temp
+
gitignore
+
+
# System Files
+
.DS_Store
+
Thumbs.db
+7
.zed/settings.json
···
+
{
+
"lsp": {
+
"biome": {
+
"binary": { "path": "bunx", "arguments": ["@biomejs/biome", "lsp-proxy"] }
+
}
+
}
+
}
+7
LICENSE
···
+
Copyright (c) 2025 aylac.top
+
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+43
README.md
···
+
## Usage
+
+
Those templates dependencies are maintained via [pnpm](https://pnpm.io) via `pnpm up -Lri`.
+
+
This is the reason you see a `pnpm-lock.yaml`. That being said, any package manager will work. This file can be safely be removed once you clone a template.
+
+
```bash
+
$ npm install # or pnpm install or yarn install
+
```
+
+
## Exploring the template
+
+
This template's goal is to showcase the routing features of Solid.
+
It also showcase how the router and Suspense work together to parallelize data fetching tied to a route via the `.data.ts` pattern.
+
+
You can learn more about it on the [`@solidjs/router` repository](https://github.com/solidjs/solid-router)
+
+
### Learn more on the [Solid Website](https://solidjs.com) and come chat with us on our [Discord](https://discord.com/invite/solidjs)
+
+
## Available Scripts
+
+
In the project directory, you can run:
+
+
### `npm run dev` or `npm start`
+
+
Runs the app in the development mode.<br>
+
Open [http://localhost:3000](http://localhost:3000) to view it in the browser.
+
+
The page will reload if you make edits.<br>
+
+
### `npm run build`
+
+
Builds the app for production to the `dist` folder.<br>
+
It correctly bundles Solid in production mode and optimizes the build for the best performance.
+
+
The build is minified and the filenames include the hashes.<br>
+
Your app is ready to be deployed!
+
+
## Deployment
+
+
You can deploy the `dist` folder to any static host provider (netlify, surge, now, etc.)
+
+
## This project was created with the [Solid CLI](https://github.com/solidjs-community/solid-cli)
+48
biome.json
···
+
{
+
"$schema": "https://biomejs.dev/schemas/2.3.4/schema.json",
+
"vcs": {
+
"enabled": true,
+
"clientKind": "git",
+
"useIgnoreFile": true
+
},
+
"files": {
+
"ignoreUnknown": false
+
},
+
"formatter": {
+
"enabled": true,
+
"indentStyle": "tab"
+
},
+
"linter": {
+
"enabled": true,
+
"rules": {
+
"recommended": true,
+
"nursery": { "useSortedClasses": "warn" }
+
},
+
"domains": {
+
"solid": "recommended"
+
}
+
},
+
"javascript": {
+
"formatter": {
+
"quoteStyle": "double"
+
}
+
},
+
"css": {
+
"parser": {
+
"tailwindDirectives": true
+
}
+
},
+
"html": {
+
"formatter": {
+
"enabled": true
+
}
+
},
+
"assist": {
+
"enabled": true,
+
"actions": {
+
"source": {
+
"organizeImports": "on"
+
}
+
}
+
}
+
}
+812
bun.lock
···
+
{
+
"lockfileVersion": 1,
+
"workspaces": {
+
"": {
+
"name": "vite-template-solid",
+
"dependencies": {
+
"@atcute/atproto": "^3.1.9",
+
"@atcute/client": "^4.0.5",
+
"@atcute/identity-resolver": "^1.1.4",
+
"@atcute/oauth-browser-client": "^2.0.1",
+
"@atcute/tangled": "^1.0.10",
+
"@gleam-lang/highlight.js-gleam": "^1.5.0",
+
"@solidjs/router": "^0.15.3",
+
"@tailwindcss/vite": "^4.1.17",
+
"@types/highlight.js": "^10.1.0",
+
"highlight.js": "^11.11.1",
+
"highlightjs-line-numbers.js": "^2.9.1",
+
"solid-js": "^1.9.10",
+
"solid-markdown": "^2.0.14",
+
},
+
"devDependencies": {
+
"@biomejs/biome": "^2.3.4",
+
"@iconify-json/gravity-ui": "^1.2.10",
+
"@iconify/tailwind4": "^1.1.0",
+
"postcss": "^8.5.6",
+
"solid-devtools": "^0.34.4",
+
"tailwindcss": "^4.1.17",
+
"vite": "^7.2.2",
+
"vite-plugin-solid": "^2.11.10",
+
},
+
},
+
},
+
"patchedDependencies": {
+
"@gleam-lang/highlight.js-gleam@1.5.0": "patches/@gleam-lang%2Fhighlight.js-gleam@1.5.0.patch",
+
"highlight.js@11.11.1": "patches/highlight.js@11.11.1.patch",
+
},
+
"packages": {
+
"@antfu/install-pkg": ["@antfu/install-pkg@1.1.0", "", { "dependencies": { "package-manager-detector": "^1.3.0", "tinyexec": "^1.0.1" } }, "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ=="],
+
+
"@antfu/utils": ["@antfu/utils@8.1.1", "", {}, "sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ=="],
+
+
"@atcute/atproto": ["@atcute/atproto@3.1.9", "", { "dependencies": { "@atcute/lexicons": "^1.2.2" } }, "sha512-DyWwHCTdR4hY2BPNbLXgVmm7lI+fceOwWbE4LXbGvbvVtSn+ejSVFaAv01Ra3kWDha0whsOmbJL8JP0QPpf1+w=="],
+
+
"@atcute/client": ["@atcute/client@4.0.5", "", { "dependencies": { "@atcute/identity": "^1.1.1", "@atcute/lexicons": "^1.2.2" } }, "sha512-R8Qen8goGmEkynYGg2m6XFlVmz0GTDvQ+9w+4QqOob+XMk8/WDpF4aImev7WKEde/rV2gjcqW7zM8E6W9NShDA=="],
+
+
"@atcute/identity": ["@atcute/identity@1.1.1", "", { "dependencies": { "@atcute/lexicons": "^1.2.2", "@badrap/valita": "^0.4.6" } }, "sha512-zax42n693VEhnC+5tndvO2KLDTMkHOz8UExwmklvJv7R9VujfEwiSWhcv6Jgwb3ellaG8wjiQ1lMOIjLLvwh0Q=="],
+
+
"@atcute/identity-resolver": ["@atcute/identity-resolver@1.1.4", "", { "dependencies": { "@atcute/lexicons": "^1.2.2", "@atcute/util-fetch": "^1.0.3", "@badrap/valita": "^0.4.6" }, "peerDependencies": { "@atcute/identity": "^1.0.0" } }, "sha512-/SVh8vf2cXFJenmBnGeYF2aY3WGQm3cJeew5NWTlkqoy3LvJ5wkvKq9PWu4Tv653VF40rPOp6LOdVr9Fa+q5rA=="],
+
+
"@atcute/lexicons": ["@atcute/lexicons@1.2.2", "", { "dependencies": { "@standard-schema/spec": "^1.0.0", "esm-env": "^1.2.2" } }, "sha512-bgEhJq5Z70/0TbK5sx+tAkrR8FsCODNiL2gUEvS5PuJfPxmFmRYNWaMGehxSPaXWpU2+Oa9ckceHiYbrItDTkA=="],
+
+
"@atcute/multibase": ["@atcute/multibase@1.1.6", "", { "dependencies": { "@atcute/uint8array": "^1.0.5" } }, "sha512-HBxuCgYLKPPxETV0Rot4VP9e24vKl8JdzGCZOVsDaOXJgbRZoRIF67Lp0H/OgnJeH/Xpva8Z5ReoTNJE5dn3kg=="],
+
+
"@atcute/oauth-browser-client": ["@atcute/oauth-browser-client@2.0.1", "", { "dependencies": { "@atcute/client": "^4.0.5", "@atcute/identity": "^1.1.1", "@atcute/identity-resolver": "^1.1.4", "@atcute/lexicons": "^1.2.2", "@atcute/multibase": "^1.1.6", "@atcute/uint8array": "^1.0.5", "nanoid": "^5.1.5" } }, "sha512-lG021GkeORG06zfFf4bH85egObjBEKHNgAWHvbtY/E2dX4wxo88hf370pJDx8acdnuUJLJ2VKPikJtZwo4Heeg=="],
+
+
"@atcute/tangled": ["@atcute/tangled@1.0.10", "", { "dependencies": { "@atcute/atproto": "^3.1.8", "@atcute/lexicons": "^1.2.2" } }, "sha512-DGconZIN5TpLBah+aHGbWI1tMsL7XzyVEbr/fW4CbcLWYKICU6SAUZ0YnZ+5GvltjlORWHUy7hfftvoh4zodIA=="],
+
+
"@atcute/uint8array": ["@atcute/uint8array@1.0.5", "", {}, "sha512-XLWWxoR2HNl2qU+FCr0rp1APwJXci7HnzbOQLxK55OaMNBXZ19+xNC5ii4QCsThsDxa4JS/JTzuiQLziITWf2Q=="],
+
+
"@atcute/util-fetch": ["@atcute/util-fetch@1.0.3", "", { "dependencies": { "@badrap/valita": "^0.4.6" } }, "sha512-f8zzTb/xlKIwv2OQ31DhShPUNCmIIleX6p7qIXwWwEUjX6x8skUtpdISSjnImq01LXpltGV5y8yhV4/Mlb7CRQ=="],
+
+
"@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "7.27.1", "js-tokens": "4.0.0", "picocolors": "1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="],
+
+
"@babel/compat-data": ["@babel/compat-data@7.28.4", "", {}, "sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw=="],
+
+
"@babel/core": ["@babel/core@7.28.4", "", { "dependencies": { "@babel/code-frame": "7.27.1", "@babel/generator": "7.28.3", "@babel/helper-compilation-targets": "7.27.2", "@babel/helper-module-transforms": "7.28.3", "@babel/helpers": "7.28.4", "@babel/parser": "7.28.4", "@babel/template": "7.27.2", "@babel/traverse": "7.28.4", "@babel/types": "7.28.4", "@jridgewell/remapping": "2.3.5", "convert-source-map": "2.0.0", "debug": "4.4.3", "gensync": "1.0.0-beta.2", "json5": "2.2.3", "semver": "6.3.1" } }, "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA=="],
+
+
"@babel/generator": ["@babel/generator@7.28.3", "", { "dependencies": { "@babel/parser": "7.28.4", "@babel/types": "7.28.4", "@jridgewell/gen-mapping": "0.3.13", "@jridgewell/trace-mapping": "0.3.31", "jsesc": "3.1.0" } }, "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw=="],
+
+
"@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.27.2", "", { "dependencies": { "@babel/compat-data": "7.28.4", "@babel/helper-validator-option": "7.27.1", "browserslist": "4.26.3", "lru-cache": "5.1.1", "semver": "6.3.1" } }, "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ=="],
+
+
"@babel/helper-globals": ["@babel/helper-globals@7.28.0", "", {}, "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw=="],
+
+
"@babel/helper-module-imports": ["@babel/helper-module-imports@7.27.1", "", { "dependencies": { "@babel/traverse": "7.28.4", "@babel/types": "7.28.4" } }, "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w=="],
+
+
"@babel/helper-module-transforms": ["@babel/helper-module-transforms@7.28.3", "", { "dependencies": { "@babel/helper-module-imports": "7.27.1", "@babel/helper-validator-identifier": "7.27.1", "@babel/traverse": "7.28.4" }, "peerDependencies": { "@babel/core": "7.28.4" } }, "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw=="],
+
+
"@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="],
+
+
"@babel/helper-string-parser": ["@babel/helper-string-parser@7.27.1", "", {}, "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA=="],
+
+
"@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.27.1", "", {}, "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow=="],
+
+
"@babel/helper-validator-option": ["@babel/helper-validator-option@7.27.1", "", {}, "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg=="],
+
+
"@babel/helpers": ["@babel/helpers@7.28.4", "", { "dependencies": { "@babel/template": "7.27.2", "@babel/types": "7.28.4" } }, "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w=="],
+
+
"@babel/parser": ["@babel/parser@7.28.4", "", { "dependencies": { "@babel/types": "7.28.4" }, "bin": "./bin/babel-parser.js" }, "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg=="],
+
+
"@babel/plugin-syntax-jsx": ["@babel/plugin-syntax-jsx@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "7.27.1" }, "peerDependencies": { "@babel/core": "7.28.4" } }, "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w=="],
+
+
"@babel/plugin-syntax-typescript": ["@babel/plugin-syntax-typescript@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "7.27.1" }, "peerDependencies": { "@babel/core": "7.28.4" } }, "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ=="],
+
+
"@babel/template": ["@babel/template@7.27.2", "", { "dependencies": { "@babel/code-frame": "7.27.1", "@babel/parser": "7.28.4", "@babel/types": "7.28.4" } }, "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw=="],
+
+
"@babel/traverse": ["@babel/traverse@7.28.4", "", { "dependencies": { "@babel/code-frame": "7.27.1", "@babel/generator": "7.28.3", "@babel/helper-globals": "7.28.0", "@babel/parser": "7.28.4", "@babel/template": "7.27.2", "@babel/types": "7.28.4", "debug": "4.4.3" } }, "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ=="],
+
+
"@babel/types": ["@babel/types@7.28.4", "", { "dependencies": { "@babel/helper-string-parser": "7.27.1", "@babel/helper-validator-identifier": "7.27.1" } }, "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q=="],
+
+
"@badrap/valita": ["@badrap/valita@0.4.6", "", {}, "sha512-4kdqcjyxo/8RQ8ayjms47HCWZIF5981oE5nIenbfThKDxWXtEHKipAOWlflpPJzZx9y/JWYQkp18Awr7VuepFg=="],
+
+
"@biomejs/biome": ["@biomejs/biome@2.3.4", "", { "optionalDependencies": { "@biomejs/cli-darwin-arm64": "2.3.4", "@biomejs/cli-darwin-x64": "2.3.4", "@biomejs/cli-linux-arm64": "2.3.4", "@biomejs/cli-linux-arm64-musl": "2.3.4", "@biomejs/cli-linux-x64": "2.3.4", "@biomejs/cli-linux-x64-musl": "2.3.4", "@biomejs/cli-win32-arm64": "2.3.4", "@biomejs/cli-win32-x64": "2.3.4" }, "bin": { "biome": "bin/biome" } }, "sha512-TU08LXjBHdy0mEY9APtEtZdNQQijXUDSXR7IK1i45wgoPD5R0muK7s61QcFir6FpOj/RP1+YkPx5QJlycXUU3w=="],
+
+
"@biomejs/cli-darwin-arm64": ["@biomejs/cli-darwin-arm64@2.3.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-w40GvlNzLaqmuWYiDU6Ys9FNhJiclngKqcGld3iJIiy2bpJ0Q+8n3haiaC81uTPY/NA0d8Q/I3Z9+ajc14102Q=="],
+
+
"@biomejs/cli-darwin-x64": ["@biomejs/cli-darwin-x64@2.3.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-3s7TLVtjJ7ni1xADXsS7x7GMUrLBZXg8SemXc3T0XLslzvqKj/dq1xGeBQ+pOWQzng9MaozfacIHdK2UlJ3jGA=="],
+
+
"@biomejs/cli-linux-arm64": ["@biomejs/cli-linux-arm64@2.3.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-y7efHyyM2gYmHy/AdWEip+VgTMe9973aP7XYKPzu/j8JxnPHuSUXftzmPhkVw0lfm4ECGbdBdGD6+rLmTgNZaA=="],
+
+
"@biomejs/cli-linux-arm64-musl": ["@biomejs/cli-linux-arm64-musl@2.3.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-IruVGQRwMURivWazchiq7gKAqZSFs5so6gi0hJyxk7x6HR+iwZbO2IxNOqyLURBvL06qkIHs7Wffl6Bw30vCbQ=="],
+
+
"@biomejs/cli-linux-x64": ["@biomejs/cli-linux-x64@2.3.4", "", { "os": "linux", "cpu": "x64" }, "sha512-gKfjWR/6/dfIxPJCw8REdEowiXCkIpl9jycpNVHux8aX2yhWPLjydOshkDL6Y/82PcQJHn95VCj7J+BRcE5o1Q=="],
+
+
"@biomejs/cli-linux-x64-musl": ["@biomejs/cli-linux-x64-musl@2.3.4", "", { "os": "linux", "cpu": "x64" }, "sha512-mzKFFv/w66e4/jCobFmD3kymCqG+FuWE7sVa4Yjqd9v7qt2UhXo67MSZKY9Ih18V2IwPzRKQPCw6KwdZs6AXSA=="],
+
+
"@biomejs/cli-win32-arm64": ["@biomejs/cli-win32-arm64@2.3.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-5TJ6JfVez+yyupJ/iGUici2wzKf0RrSAxJhghQXtAEsc67OIpdwSKAQboemILrwKfHDi5s6mu7mX+VTCTUydkw=="],
+
+
"@biomejs/cli-win32-x64": ["@biomejs/cli-win32-x64@2.3.4", "", { "os": "win32", "cpu": "x64" }, "sha512-FGCijXecmC4IedQ0esdYNlMpx0Jxgf4zceCaMu6fkjWyjgn50ZQtMiqZZQ0Q/77yqPxvtkgZAvt5uGw0gAAjig=="],
+
+
"@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.11", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg=="],
+
+
"@esbuild/android-arm": ["@esbuild/android-arm@0.25.11", "", { "os": "android", "cpu": "arm" }, "sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg=="],
+
+
"@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.11", "", { "os": "android", "cpu": "arm64" }, "sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ=="],
+
+
"@esbuild/android-x64": ["@esbuild/android-x64@0.25.11", "", { "os": "android", "cpu": "x64" }, "sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g=="],
+
+
"@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.11", "", { "os": "darwin", "cpu": "arm64" }, "sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w=="],
+
+
"@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.11", "", { "os": "darwin", "cpu": "x64" }, "sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ=="],
+
+
"@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.11", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA=="],
+
+
"@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.11", "", { "os": "freebsd", "cpu": "x64" }, "sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw=="],
+
+
"@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.11", "", { "os": "linux", "cpu": "arm" }, "sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw=="],
+
+
"@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.11", "", { "os": "linux", "cpu": "arm64" }, "sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA=="],
+
+
"@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.11", "", { "os": "linux", "cpu": "ia32" }, "sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw=="],
+
+
"@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.11", "", { "os": "linux", "cpu": "none" }, "sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw=="],
+
+
"@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.11", "", { "os": "linux", "cpu": "none" }, "sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ=="],
+
+
"@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.11", "", { "os": "linux", "cpu": "ppc64" }, "sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw=="],
+
+
"@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.11", "", { "os": "linux", "cpu": "none" }, "sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww=="],
+
+
"@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.11", "", { "os": "linux", "cpu": "s390x" }, "sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw=="],
+
+
"@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.11", "", { "os": "linux", "cpu": "x64" }, "sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ=="],
+
+
"@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.11", "", { "os": "none", "cpu": "arm64" }, "sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg=="],
+
+
"@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.11", "", { "os": "none", "cpu": "x64" }, "sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A=="],
+
+
"@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.11", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg=="],
+
+
"@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.11", "", { "os": "openbsd", "cpu": "x64" }, "sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw=="],
+
+
"@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.25.11", "", { "os": "none", "cpu": "arm64" }, "sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ=="],
+
+
"@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.11", "", { "os": "sunos", "cpu": "x64" }, "sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA=="],
+
+
"@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.11", "", { "os": "win32", "cpu": "arm64" }, "sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q=="],
+
+
"@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.11", "", { "os": "win32", "cpu": "ia32" }, "sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA=="],
+
+
"@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.11", "", { "os": "win32", "cpu": "x64" }, "sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA=="],
+
+
"@gleam-lang/highlight.js-gleam": ["@gleam-lang/highlight.js-gleam@1.5.0", "", {}, "sha512-rKKpXnfmHVTPuHEogMVvN4DflzKtX6kBXqu1GsVDb0uDf/bvO8Z2VnC0XWUMuKNlxa+poKIjY6geyxTaVZiMFA=="],
+
+
"@iconify-json/gravity-ui": ["@iconify-json/gravity-ui@1.2.10", "", { "dependencies": { "@iconify/types": "*" } }, "sha512-GpLMMrVCc1XkKuNVQ0HaA37dW2fnkWED/2zcsd288QIncv1pQ8RG/Hr/mCDgGHe4Nec/1eu9OBk6yVqqQiR5Gw=="],
+
+
"@iconify/tailwind4": ["@iconify/tailwind4@1.1.0", "", { "dependencies": { "@iconify/tools": "^4.1.4", "@iconify/types": "^2.0.0", "@iconify/utils": "^2.3.0" }, "peerDependencies": { "tailwindcss": ">= 4.0.0" } }, "sha512-HqgAYtYk4eFtLvdYfhQrBRT9ohToh+VJJVhHtJ7B4Qhw+J+mRPvGC9Wr6Cgtb36YbIWqBxWuBaAUw9TE/8m2/w=="],
+
+
"@iconify/tools": ["@iconify/tools@4.1.4", "", { "dependencies": { "@iconify/types": "^2.0.0", "@iconify/utils": "^2.3.0", "@types/tar": "^6.1.13", "axios": "^1.12.1", "cheerio": "1.0.0", "domhandler": "^5.0.3", "extract-zip": "^2.0.1", "local-pkg": "^0.5.1", "pathe": "^1.1.2", "svgo": "^3.3.2", "tar": "^6.2.1" } }, "sha512-s6BcNUcCxQ3S6cvhlsoWzOuBt8qKXdVyXB9rT57uSJ/ARHD7dVM43+5ERBWn3tmkMWXeJ/s9DPVc3dUasayzeA=="],
+
+
"@iconify/types": ["@iconify/types@2.0.0", "", {}, "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg=="],
+
+
"@iconify/utils": ["@iconify/utils@2.3.0", "", { "dependencies": { "@antfu/install-pkg": "^1.0.0", "@antfu/utils": "^8.1.0", "@iconify/types": "^2.0.0", "debug": "^4.4.0", "globals": "^15.14.0", "kolorist": "^1.8.0", "local-pkg": "^1.0.0", "mlly": "^1.7.4" } }, "sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA=="],
+
+
"@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "1.5.5", "@jridgewell/trace-mapping": "0.3.30" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="],
+
+
"@jridgewell/remapping": ["@jridgewell/remapping@2.3.5", "", { "dependencies": { "@jridgewell/gen-mapping": "0.3.13", "@jridgewell/trace-mapping": "0.3.30" } }, "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ=="],
+
+
"@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="],
+
+
"@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="],
+
+
"@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "3.1.2", "@jridgewell/sourcemap-codec": "1.5.5" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="],
+
+
"@nothing-but/utils": ["@nothing-but/utils@0.17.0", "", {}, "sha512-TuCHcHLOqDL0SnaAxACfuRHBNRgNJcNn9X0GiH5H3YSDBVquCr3qEIG3FOQAuMyZCbu9w8nk2CHhOsn7IvhIwQ=="],
+
+
"@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.52.5", "", { "os": "android", "cpu": "arm" }, "sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ=="],
+
+
"@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.52.5", "", { "os": "android", "cpu": "arm64" }, "sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA=="],
+
+
"@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.52.5", "", { "os": "darwin", "cpu": "arm64" }, "sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA=="],
+
+
"@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.52.5", "", { "os": "darwin", "cpu": "x64" }, "sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA=="],
+
+
"@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.52.5", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA=="],
+
+
"@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.52.5", "", { "os": "freebsd", "cpu": "x64" }, "sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ=="],
+
+
"@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.52.5", "", { "os": "linux", "cpu": "arm" }, "sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ=="],
+
+
"@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.52.5", "", { "os": "linux", "cpu": "arm" }, "sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ=="],
+
+
"@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.52.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg=="],
+
+
"@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.52.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q=="],
+
+
"@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.52.5", "", { "os": "linux", "cpu": "none" }, "sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA=="],
+
+
"@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.52.5", "", { "os": "linux", "cpu": "ppc64" }, "sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw=="],
+
+
"@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.52.5", "", { "os": "linux", "cpu": "none" }, "sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw=="],
+
+
"@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.52.5", "", { "os": "linux", "cpu": "none" }, "sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg=="],
+
+
"@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.52.5", "", { "os": "linux", "cpu": "s390x" }, "sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ=="],
+
+
"@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.52.5", "", { "os": "linux", "cpu": "x64" }, "sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q=="],
+
+
"@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.52.5", "", { "os": "linux", "cpu": "x64" }, "sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg=="],
+
+
"@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.52.5", "", { "os": "none", "cpu": "arm64" }, "sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw=="],
+
+
"@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.52.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w=="],
+
+
"@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.52.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg=="],
+
+
"@rollup/rollup-win32-x64-gnu": ["@rollup/rollup-win32-x64-gnu@4.52.5", "", { "os": "win32", "cpu": "x64" }, "sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ=="],
+
+
"@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.52.5", "", { "os": "win32", "cpu": "x64" }, "sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg=="],
+
+
"@solid-devtools/debugger": ["@solid-devtools/debugger@0.28.1", "", { "dependencies": { "@nothing-but/utils": "0.17.0", "@solid-devtools/shared": "0.20.0", "@solid-primitives/bounds": "0.1.3", "@solid-primitives/event-listener": "2.4.3", "@solid-primitives/keyboard": "1.3.3", "@solid-primitives/rootless": "1.5.2", "@solid-primitives/scheduled": "1.5.2", "@solid-primitives/static-store": "0.1.2", "@solid-primitives/utils": "6.3.2" }, "peerDependencies": { "solid-js": "1.9.9" } }, "sha512-6qIUI6VYkXoRnL8oF5bvh2KgH71qlJ18hNw/mwSyY6v48eb80ZR48/5PDXufUa3q+MBSuYa1uqTMwLewpay9eg=="],
+
+
"@solid-devtools/shared": ["@solid-devtools/shared@0.20.0", "", { "dependencies": { "@nothing-but/utils": "0.17.0", "@solid-primitives/event-listener": "2.4.3", "@solid-primitives/media": "2.3.3", "@solid-primitives/refs": "1.1.2", "@solid-primitives/rootless": "1.5.2", "@solid-primitives/scheduled": "1.5.2", "@solid-primitives/static-store": "0.1.2", "@solid-primitives/styles": "0.1.2", "@solid-primitives/utils": "6.3.2" }, "peerDependencies": { "solid-js": "1.9.9" } }, "sha512-o5TACmUOQsxpzpOKCjbQqGk8wL8PMi+frXG9WNu4Lh3PQVUB6hs95Kl/S8xc++zwcMguUKZJn8h5URUiMOca6Q=="],
+
+
"@solid-primitives/bounds": ["@solid-primitives/bounds@0.1.3", "", { "dependencies": { "@solid-primitives/event-listener": "2.4.3", "@solid-primitives/resize-observer": "2.1.3", "@solid-primitives/static-store": "0.1.2", "@solid-primitives/utils": "6.3.2" }, "peerDependencies": { "solid-js": "1.9.9" } }, "sha512-UbiyKMdSPmtijcEDnYLQL3zzaejpwWDAJJ4Gt5P0hgVs6A72piov0GyNw7V2SroH7NZFwxlYS22YmOr8A5xc1Q=="],
+
+
"@solid-primitives/event-listener": ["@solid-primitives/event-listener@2.4.3", "", { "dependencies": { "@solid-primitives/utils": "6.3.2" }, "peerDependencies": { "solid-js": "1.9.9" } }, "sha512-h4VqkYFv6Gf+L7SQj+Y6puigL/5DIi7x5q07VZET7AWcS+9/G3WfIE9WheniHWJs51OEkRB43w6lDys5YeFceg=="],
+
+
"@solid-primitives/keyboard": ["@solid-primitives/keyboard@1.3.3", "", { "dependencies": { "@solid-primitives/event-listener": "2.4.3", "@solid-primitives/rootless": "1.5.2", "@solid-primitives/utils": "6.3.2" }, "peerDependencies": { "solid-js": "1.9.9" } }, "sha512-9dQHTTgLBqyAI7aavtO+HnpTVJgWQA1ghBSrmLtMu1SMxLPDuLfuNr+Tk5udb4AL4Ojg7h9JrKOGEEDqsJXWJA=="],
+
+
"@solid-primitives/media": ["@solid-primitives/media@2.3.3", "", { "dependencies": { "@solid-primitives/event-listener": "2.4.3", "@solid-primitives/rootless": "1.5.2", "@solid-primitives/static-store": "0.1.2", "@solid-primitives/utils": "6.3.2" }, "peerDependencies": { "solid-js": "1.9.9" } }, "sha512-hQ4hLOGvfbugQi5Eu1BFWAIJGIAzztq9x0h02xgBGl2l0Jaa3h7tg6bz5tV1NSuNYVGio4rPoa7zVQQLkkx9dA=="],
+
+
"@solid-primitives/refs": ["@solid-primitives/refs@1.1.2", "", { "dependencies": { "@solid-primitives/utils": "6.3.2" }, "peerDependencies": { "solid-js": "1.9.9" } }, "sha512-K7tf2thy7L+YJjdqXspXOg5xvNEOH8tgEWsp0+1mQk3obHBRD6hEjYZk7p7FlJphSZImS35je3UfmWuD7MhDfg=="],
+
+
"@solid-primitives/resize-observer": ["@solid-primitives/resize-observer@2.1.3", "", { "dependencies": { "@solid-primitives/event-listener": "2.4.3", "@solid-primitives/rootless": "1.5.2", "@solid-primitives/static-store": "0.1.2", "@solid-primitives/utils": "6.3.2" }, "peerDependencies": { "solid-js": "1.9.9" } }, "sha512-zBLje5E06TgOg93S7rGPldmhDnouNGhvfZVKOp+oG2XU8snA+GoCSSCz1M+jpNAg5Ek2EakU5UVQqL152WmdXQ=="],
+
+
"@solid-primitives/rootless": ["@solid-primitives/rootless@1.5.2", "", { "dependencies": { "@solid-primitives/utils": "6.3.2" }, "peerDependencies": { "solid-js": "1.9.9" } }, "sha512-9HULb0QAzL2r47CCad0M+NKFtQ+LrGGNHZfteX/ThdGvKIg2o2GYhBooZubTCd/RTu2l2+Nw4s+dEfiDGvdrrQ=="],
+
+
"@solid-primitives/scheduled": ["@solid-primitives/scheduled@1.5.2", "", { "peerDependencies": { "solid-js": "1.9.9" } }, "sha512-/j2igE0xyNaHhj6kMfcUQn5rAVSTLbAX+CDEBm25hSNBmNiHLu2lM7Usj2kJJ5j36D67bE8wR1hBNA8hjtvsQA=="],
+
+
"@solid-primitives/static-store": ["@solid-primitives/static-store@0.1.2", "", { "dependencies": { "@solid-primitives/utils": "6.3.2" }, "peerDependencies": { "solid-js": "1.9.9" } }, "sha512-ReK+5O38lJ7fT+L6mUFvUr6igFwHBESZF+2Ug842s7fvlVeBdIVEdTCErygff6w7uR6+jrr7J8jQo+cYrEq4Iw=="],
+
+
"@solid-primitives/styles": ["@solid-primitives/styles@0.1.2", "", { "dependencies": { "@solid-primitives/rootless": "1.5.2", "@solid-primitives/utils": "6.3.2" }, "peerDependencies": { "solid-js": "1.9.9" } }, "sha512-7iX5K+J5b1PRrbgw3Ki92uvU2LgQ0Kd/QMsrAZxDg5dpUBwMyTijZkA3bbs1ikZsT1oQhS41bTyKbjrXeU0Awg=="],
+
+
"@solid-primitives/utils": ["@solid-primitives/utils@6.3.2", "", { "peerDependencies": { "solid-js": "1.9.9" } }, "sha512-hZ/M/qr25QOCcwDPOHtGjxTD8w2mNyVAYvcfgwzBHq2RwNqHNdDNsMZYap20+ruRwW4A3Cdkczyoz0TSxLCAPQ=="],
+
+
"@solidjs/router": ["@solidjs/router@0.15.3", "", { "peerDependencies": { "solid-js": "1.9.9" } }, "sha512-iEbW8UKok2Oio7o6Y4VTzLj+KFCmQPGEpm1fS3xixwFBdclFVBvaQVeibl1jys4cujfAK5Kn6+uG2uBm3lxOMw=="],
+
+
"@standard-schema/spec": ["@standard-schema/spec@1.0.0", "", {}, "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA=="],
+
+
"@tailwindcss/node": ["@tailwindcss/node@4.1.17", "", { "dependencies": { "@jridgewell/remapping": "^2.3.4", "enhanced-resolve": "^5.18.3", "jiti": "^2.6.1", "lightningcss": "1.30.2", "magic-string": "^0.30.21", "source-map-js": "^1.2.1", "tailwindcss": "4.1.17" } }, "sha512-csIkHIgLb3JisEFQ0vxr2Y57GUNYh447C8xzwj89U/8fdW8LhProdxvnVH6U8M2Y73QKiTIH+LWbK3V2BBZsAg=="],
+
+
"@tailwindcss/oxide": ["@tailwindcss/oxide@4.1.17", "", { "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.1.17", "@tailwindcss/oxide-darwin-arm64": "4.1.17", "@tailwindcss/oxide-darwin-x64": "4.1.17", "@tailwindcss/oxide-freebsd-x64": "4.1.17", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.17", "@tailwindcss/oxide-linux-arm64-gnu": "4.1.17", "@tailwindcss/oxide-linux-arm64-musl": "4.1.17", "@tailwindcss/oxide-linux-x64-gnu": "4.1.17", "@tailwindcss/oxide-linux-x64-musl": "4.1.17", "@tailwindcss/oxide-wasm32-wasi": "4.1.17", "@tailwindcss/oxide-win32-arm64-msvc": "4.1.17", "@tailwindcss/oxide-win32-x64-msvc": "4.1.17" } }, "sha512-F0F7d01fmkQhsTjXezGBLdrl1KresJTcI3DB8EkScCldyKp3Msz4hub4uyYaVnk88BAS1g5DQjjF6F5qczheLA=="],
+
+
"@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.1.17", "", { "os": "android", "cpu": "arm64" }, "sha512-BMqpkJHgOZ5z78qqiGE6ZIRExyaHyuxjgrJ6eBO5+hfrfGkuya0lYfw8fRHG77gdTjWkNWEEm+qeG2cDMxArLQ=="],
+
+
"@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.1.17", "", { "os": "darwin", "cpu": "arm64" }, "sha512-EquyumkQweUBNk1zGEU/wfZo2qkp/nQKRZM8bUYO0J+Lums5+wl2CcG1f9BgAjn/u9pJzdYddHWBiFXJTcxmOg=="],
+
+
"@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.1.17", "", { "os": "darwin", "cpu": "x64" }, "sha512-gdhEPLzke2Pog8s12oADwYu0IAw04Y2tlmgVzIN0+046ytcgx8uZmCzEg4VcQh+AHKiS7xaL8kGo/QTiNEGRog=="],
+
+
"@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.1.17", "", { "os": "freebsd", "cpu": "x64" }, "sha512-hxGS81KskMxML9DXsaXT1H0DyA+ZBIbyG/sSAjWNe2EDl7TkPOBI42GBV3u38itzGUOmFfCzk1iAjDXds8Oh0g=="],
+
+
"@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.1.17", "", { "os": "linux", "cpu": "arm" }, "sha512-k7jWk5E3ldAdw0cNglhjSgv501u7yrMf8oeZ0cElhxU6Y2o7f8yqelOp3fhf7evjIS6ujTI3U8pKUXV2I4iXHQ=="],
+
+
"@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.1.17", "", { "os": "linux", "cpu": "arm64" }, "sha512-HVDOm/mxK6+TbARwdW17WrgDYEGzmoYayrCgmLEw7FxTPLcp/glBisuyWkFz/jb7ZfiAXAXUACfyItn+nTgsdQ=="],
+
+
"@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.1.17", "", { "os": "linux", "cpu": "arm64" }, "sha512-HvZLfGr42i5anKtIeQzxdkw/wPqIbpeZqe7vd3V9vI3RQxe3xU1fLjss0TjyhxWcBaipk7NYwSrwTwK1hJARMg=="],
+
+
"@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.1.17", "", { "os": "linux", "cpu": "x64" }, "sha512-M3XZuORCGB7VPOEDH+nzpJ21XPvK5PyjlkSFkFziNHGLc5d6g3di2McAAblmaSUNl8IOmzYwLx9NsE7bplNkwQ=="],
+
+
"@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.1.17", "", { "os": "linux", "cpu": "x64" }, "sha512-k7f+pf9eXLEey4pBlw+8dgfJHY4PZ5qOUFDyNf7SI6lHjQ9Zt7+NcscjpwdCEbYi6FI5c2KDTDWyf2iHcCSyyQ=="],
+
+
"@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/oxide-wasm32-wasi@4.1.17", "", { "dependencies": { "@emnapi/core": "^1.6.0", "@emnapi/runtime": "^1.6.0", "@emnapi/wasi-threads": "^1.1.0", "@napi-rs/wasm-runtime": "^1.0.7", "@tybys/wasm-util": "^0.10.1", "tslib": "^2.4.0" }, "cpu": "none" }, "sha512-cEytGqSSoy7zK4JRWiTCx43FsKP/zGr0CsuMawhH67ONlH+T79VteQeJQRO/X7L0juEUA8ZyuYikcRBf0vsxhg=="],
+
+
"@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.1.17", "", { "os": "win32", "cpu": "arm64" }, "sha512-JU5AHr7gKbZlOGvMdb4722/0aYbU+tN6lv1kONx0JK2cGsh7g148zVWLM0IKR3NeKLv+L90chBVYcJ8uJWbC9A=="],
+
+
"@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.1.17", "", { "os": "win32", "cpu": "x64" }, "sha512-SKWM4waLuqx0IH+FMDUw6R66Hu4OuTALFgnleKbqhgGU30DY20NORZMZUKgLRjQXNN2TLzKvh48QXTig4h4bGw=="],
+
+
"@tailwindcss/vite": ["@tailwindcss/vite@4.1.17", "", { "dependencies": { "@tailwindcss/node": "4.1.17", "@tailwindcss/oxide": "4.1.17", "tailwindcss": "4.1.17" }, "peerDependencies": { "vite": "^5.2.0 || ^6 || ^7" } }, "sha512-4+9w8ZHOiGnpcGI6z1TVVfWaX/koK7fKeSYF3qlYg2xpBtbteP2ddBxiarL+HVgfSJGeK5RIxRQmKm4rTJJAwA=="],
+
+
"@trysound/sax": ["@trysound/sax@0.2.0", "", {}, "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA=="],
+
+
"@types/babel__core": ["@types/babel__core@7.20.5", "", { "dependencies": { "@babel/parser": "7.28.4", "@babel/types": "7.28.4", "@types/babel__generator": "7.27.0", "@types/babel__template": "7.4.4", "@types/babel__traverse": "7.28.0" } }, "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA=="],
+
+
"@types/babel__generator": ["@types/babel__generator@7.27.0", "", { "dependencies": { "@babel/types": "7.28.4" } }, "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg=="],
+
+
"@types/babel__template": ["@types/babel__template@7.4.4", "", { "dependencies": { "@babel/parser": "7.28.4", "@babel/types": "7.28.4" } }, "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A=="],
+
+
"@types/babel__traverse": ["@types/babel__traverse@7.28.0", "", { "dependencies": { "@babel/types": "7.28.4" } }, "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q=="],
+
+
"@types/debug": ["@types/debug@4.1.12", "", { "dependencies": { "@types/ms": "*" } }, "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ=="],
+
+
"@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="],
+
+
"@types/hast": ["@types/hast@3.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ=="],
+
+
"@types/highlight.js": ["@types/highlight.js@10.1.0", "", { "dependencies": { "highlight.js": "*" } }, "sha512-77hF2dGBsOgnvZll1vymYiNUtqJ8cJfXPD6GG/2M0aLRc29PkvB7Au6sIDjIEFcSICBhCh2+Pyq6WSRS7LUm6A=="],
+
+
"@types/mdast": ["@types/mdast@4.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA=="],
+
+
"@types/ms": ["@types/ms@2.1.0", "", {}, "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="],
+
+
"@types/node": ["@types/node@24.10.0", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-qzQZRBqkFsYyaSWXuEHc2WR9c0a0CXwiE5FWUvn7ZM+vdy1uZLfCunD38UzhuB7YN/J11ndbDBcTmOdxJo9Q7A=="],
+
+
"@types/tar": ["@types/tar@6.1.13", "", { "dependencies": { "@types/node": "*", "minipass": "^4.0.0" } }, "sha512-IznnlmU5f4WcGTh2ltRu/Ijpmk8wiWXfF0VA4s+HPjHZgvFggk1YaIkbo5krX/zUCzWF8N/l4+W/LNxnvAJ8nw=="],
+
+
"@types/unist": ["@types/unist@3.0.3", "", {}, "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="],
+
+
"@types/yauzl": ["@types/yauzl@2.10.3", "", { "dependencies": { "@types/node": "*" } }, "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q=="],
+
+
"@ungap/structured-clone": ["@ungap/structured-clone@1.3.0", "", {}, "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g=="],
+
+
"acorn": ["acorn@8.15.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="],
+
+
"asynckit": ["asynckit@0.4.0", "", {}, "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="],
+
+
"axios": ["axios@1.13.2", "", { "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.4", "proxy-from-env": "^1.1.0" } }, "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA=="],
+
+
"babel-plugin-jsx-dom-expressions": ["babel-plugin-jsx-dom-expressions@0.40.1", "", { "dependencies": { "@babel/helper-module-imports": "7.18.6", "@babel/plugin-syntax-jsx": "7.27.1", "@babel/types": "7.28.4", "html-entities": "2.3.3", "parse5": "7.3.0", "validate-html-nesting": "1.2.3" }, "peerDependencies": { "@babel/core": "7.28.4" } }, "sha512-b4iHuirqK7RgaMzB2Lsl7MqrlDgQtVRSSazyrmx7wB3T759ggGjod5Rkok5MfHjQXhR7tRPmdwoeGPqBnW2KfA=="],
+
+
"babel-preset-solid": ["babel-preset-solid@1.9.9", "", { "dependencies": { "babel-plugin-jsx-dom-expressions": "0.40.1" }, "optionalDependencies": { "solid-js": "1.9.9" }, "peerDependencies": { "@babel/core": "7.28.4" } }, "sha512-pCnxWrciluXCeli/dj5PIEHgbNzim3evtTn12snjqqg8QZWJNMjH1AWIp4iG/tbVjqQ72aBEymMSagvmgxubXw=="],
+
+
"bail": ["bail@2.0.2", "", {}, "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="],
+
+
"baseline-browser-mapping": ["baseline-browser-mapping@2.8.18", "", { "bin": { "baseline-browser-mapping": "dist/cli.js" } }, "sha512-UYmTpOBwgPScZpS4A+YbapwWuBwasxvO/2IOHArSsAhL/+ZdmATBXTex3t+l2hXwLVYK382ibr/nKoY9GKe86w=="],
+
+
"boolbase": ["boolbase@1.0.0", "", {}, "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="],
+
+
"browserslist": ["browserslist@4.26.3", "", { "dependencies": { "baseline-browser-mapping": "2.8.18", "caniuse-lite": "1.0.30001751", "electron-to-chromium": "1.5.237", "node-releases": "2.0.25", "update-browserslist-db": "1.1.3" }, "bin": { "browserslist": "cli.js" } }, "sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w=="],
+
+
"buffer-crc32": ["buffer-crc32@0.2.13", "", {}, "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ=="],
+
+
"call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="],
+
+
"caniuse-lite": ["caniuse-lite@1.0.30001751", "", {}, "sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw=="],
+
+
"character-entities": ["character-entities@2.0.2", "", {}, "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ=="],
+
+
"cheerio": ["cheerio@1.0.0", "", { "dependencies": { "cheerio-select": "^2.1.0", "dom-serializer": "^2.0.0", "domhandler": "^5.0.3", "domutils": "^3.1.0", "encoding-sniffer": "^0.2.0", "htmlparser2": "^9.1.0", "parse5": "^7.1.2", "parse5-htmlparser2-tree-adapter": "^7.0.0", "parse5-parser-stream": "^7.1.2", "undici": "^6.19.5", "whatwg-mimetype": "^4.0.0" } }, "sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww=="],
+
+
"cheerio-select": ["cheerio-select@2.1.0", "", { "dependencies": { "boolbase": "^1.0.0", "css-select": "^5.1.0", "css-what": "^6.1.0", "domelementtype": "^2.3.0", "domhandler": "^5.0.3", "domutils": "^3.0.1" } }, "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g=="],
+
+
"chownr": ["chownr@2.0.0", "", {}, "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="],
+
+
"combined-stream": ["combined-stream@1.0.8", "", { "dependencies": { "delayed-stream": "~1.0.0" } }, "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg=="],
+
+
"comma-separated-tokens": ["comma-separated-tokens@2.0.3", "", {}, "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="],
+
+
"commander": ["commander@7.2.0", "", {}, "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="],
+
+
"confbox": ["confbox@0.1.8", "", {}, "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w=="],
+
+
"convert-source-map": ["convert-source-map@2.0.0", "", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="],
+
+
"css-select": ["css-select@5.2.2", "", { "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.1.0", "domhandler": "^5.0.2", "domutils": "^3.0.1", "nth-check": "^2.0.1" } }, "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw=="],
+
+
"css-tree": ["css-tree@2.3.1", "", { "dependencies": { "mdn-data": "2.0.30", "source-map-js": "^1.0.1" } }, "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw=="],
+
+
"css-what": ["css-what@6.2.2", "", {}, "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA=="],
+
+
"csso": ["csso@5.0.5", "", { "dependencies": { "css-tree": "~2.2.0" } }, "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ=="],
+
+
"csstype": ["csstype@3.1.3", "", {}, "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="],
+
+
"debug": ["debug@4.4.3", "", { "dependencies": { "ms": "2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="],
+
+
"decode-named-character-reference": ["decode-named-character-reference@1.2.0", "", { "dependencies": { "character-entities": "^2.0.0" } }, "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q=="],
+
+
"delayed-stream": ["delayed-stream@1.0.0", "", {}, "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="],
+
+
"dequal": ["dequal@2.0.3", "", {}, "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="],
+
+
"detect-libc": ["detect-libc@2.0.4", "", {}, "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA=="],
+
+
"devlop": ["devlop@1.1.0", "", { "dependencies": { "dequal": "^2.0.0" } }, "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA=="],
+
+
"dom-serializer": ["dom-serializer@2.0.0", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", "entities": "^4.2.0" } }, "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg=="],
+
+
"domelementtype": ["domelementtype@2.3.0", "", {}, "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw=="],
+
+
"domhandler": ["domhandler@5.0.3", "", { "dependencies": { "domelementtype": "^2.3.0" } }, "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w=="],
+
+
"domutils": ["domutils@3.2.2", "", { "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", "domhandler": "^5.0.3" } }, "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw=="],
+
+
"dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="],
+
+
"electron-to-chromium": ["electron-to-chromium@1.5.237", "", {}, "sha512-icUt1NvfhGLar5lSWH3tHNzablaA5js3HVHacQimfP8ViEBOQv+L7DKEuHdbTZ0SKCO1ogTJTIL1Gwk9S6Qvcg=="],
+
+
"encoding-sniffer": ["encoding-sniffer@0.2.1", "", { "dependencies": { "iconv-lite": "^0.6.3", "whatwg-encoding": "^3.1.1" } }, "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw=="],
+
+
"end-of-stream": ["end-of-stream@1.4.5", "", { "dependencies": { "once": "^1.4.0" } }, "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg=="],
+
+
"enhanced-resolve": ["enhanced-resolve@5.18.3", "", { "dependencies": { "graceful-fs": "4.2.11", "tapable": "2.2.3" } }, "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww=="],
+
+
"entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="],
+
+
"es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="],
+
+
"es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="],
+
+
"es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="],
+
+
"es-set-tostringtag": ["es-set-tostringtag@2.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA=="],
+
+
"esbuild": ["esbuild@0.25.11", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.11", "@esbuild/android-arm": "0.25.11", "@esbuild/android-arm64": "0.25.11", "@esbuild/android-x64": "0.25.11", "@esbuild/darwin-arm64": "0.25.11", "@esbuild/darwin-x64": "0.25.11", "@esbuild/freebsd-arm64": "0.25.11", "@esbuild/freebsd-x64": "0.25.11", "@esbuild/linux-arm": "0.25.11", "@esbuild/linux-arm64": "0.25.11", "@esbuild/linux-ia32": "0.25.11", "@esbuild/linux-loong64": "0.25.11", "@esbuild/linux-mips64el": "0.25.11", "@esbuild/linux-ppc64": "0.25.11", "@esbuild/linux-riscv64": "0.25.11", "@esbuild/linux-s390x": "0.25.11", "@esbuild/linux-x64": "0.25.11", "@esbuild/netbsd-arm64": "0.25.11", "@esbuild/netbsd-x64": "0.25.11", "@esbuild/openbsd-arm64": "0.25.11", "@esbuild/openbsd-x64": "0.25.11", "@esbuild/openharmony-arm64": "0.25.11", "@esbuild/sunos-x64": "0.25.11", "@esbuild/win32-arm64": "0.25.11", "@esbuild/win32-ia32": "0.25.11", "@esbuild/win32-x64": "0.25.11" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q=="],
+
+
"escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="],
+
+
"esm-env": ["esm-env@1.2.2", "", {}, "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA=="],
+
+
"exsolve": ["exsolve@1.0.7", "", {}, "sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw=="],
+
+
"extend": ["extend@3.0.2", "", {}, "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="],
+
+
"extract-zip": ["extract-zip@2.0.1", "", { "dependencies": { "debug": "^4.1.1", "get-stream": "^5.1.0", "yauzl": "^2.10.0" }, "optionalDependencies": { "@types/yauzl": "^2.9.1" }, "bin": { "extract-zip": "cli.js" } }, "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg=="],
+
+
"fd-slicer": ["fd-slicer@1.1.0", "", { "dependencies": { "pend": "~1.2.0" } }, "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g=="],
+
+
"fdir": ["fdir@6.5.0", "", { "optionalDependencies": { "picomatch": "4.0.3" } }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="],
+
+
"follow-redirects": ["follow-redirects@1.15.11", "", {}, "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ=="],
+
+
"form-data": ["form-data@4.0.4", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "hasown": "^2.0.2", "mime-types": "^2.1.12" } }, "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow=="],
+
+
"fs-minipass": ["fs-minipass@2.1.0", "", { "dependencies": { "minipass": "^3.0.0" } }, "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg=="],
+
+
"fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="],
+
+
"function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="],
+
+
"gensync": ["gensync@1.0.0-beta.2", "", {}, "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="],
+
+
"get-intrinsic": ["get-intrinsic@1.3.0", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="],
+
+
"get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="],
+
+
"get-stream": ["get-stream@5.2.0", "", { "dependencies": { "pump": "^3.0.0" } }, "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA=="],
+
+
"globals": ["globals@15.15.0", "", {}, "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg=="],
+
+
"gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="],
+
+
"graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="],
+
+
"has-symbols": ["has-symbols@1.1.0", "", {}, "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="],
+
+
"has-tostringtag": ["has-tostringtag@1.0.2", "", { "dependencies": { "has-symbols": "^1.0.3" } }, "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw=="],
+
+
"hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="],
+
+
"highlight.js": ["highlight.js@11.11.1", "", {}, "sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w=="],
+
+
"highlightjs-line-numbers.js": ["highlightjs-line-numbers.js@2.9.1", "", {}, "sha512-OVLCl58g9hvY11jDCMDjyIM1HcWtElogmRpBBVb0KxMDXxtket58iHA4ex8HCWmQuR1rorYWkQ+4wn3S2T+xlg=="],
+
+
"html-entities": ["html-entities@2.3.3", "", {}, "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA=="],
+
+
"htmlparser2": ["htmlparser2@9.1.0", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", "domutils": "^3.1.0", "entities": "^4.5.0" } }, "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ=="],
+
+
"iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="],
+
+
"inline-style-parser": ["inline-style-parser@0.1.1", "", {}, "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q=="],
+
+
"is-plain-obj": ["is-plain-obj@4.1.0", "", {}, "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="],
+
+
"is-what": ["is-what@4.1.16", "", {}, "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A=="],
+
+
"jiti": ["jiti@2.6.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ=="],
+
+
"js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="],
+
+
"jsesc": ["jsesc@3.1.0", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA=="],
+
+
"json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="],
+
+
"kolorist": ["kolorist@1.8.0", "", {}, "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ=="],
+
+
"lightningcss": ["lightningcss@1.30.2", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.30.2", "lightningcss-darwin-arm64": "1.30.2", "lightningcss-darwin-x64": "1.30.2", "lightningcss-freebsd-x64": "1.30.2", "lightningcss-linux-arm-gnueabihf": "1.30.2", "lightningcss-linux-arm64-gnu": "1.30.2", "lightningcss-linux-arm64-musl": "1.30.2", "lightningcss-linux-x64-gnu": "1.30.2", "lightningcss-linux-x64-musl": "1.30.2", "lightningcss-win32-arm64-msvc": "1.30.2", "lightningcss-win32-x64-msvc": "1.30.2" } }, "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ=="],
+
+
"lightningcss-android-arm64": ["lightningcss-android-arm64@1.30.2", "", { "os": "android", "cpu": "arm64" }, "sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A=="],
+
+
"lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.30.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA=="],
+
+
"lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.30.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ=="],
+
+
"lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.30.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA=="],
+
+
"lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.30.2", "", { "os": "linux", "cpu": "arm" }, "sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA=="],
+
+
"lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.30.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A=="],
+
+
"lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.30.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA=="],
+
+
"lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.30.2", "", { "os": "linux", "cpu": "x64" }, "sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w=="],
+
+
"lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.30.2", "", { "os": "linux", "cpu": "x64" }, "sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA=="],
+
+
"lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.30.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ=="],
+
+
"lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.30.2", "", { "os": "win32", "cpu": "x64" }, "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw=="],
+
+
"local-pkg": ["local-pkg@0.5.1", "", { "dependencies": { "mlly": "^1.7.3", "pkg-types": "^1.2.1" } }, "sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ=="],
+
+
"lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "3.1.1" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="],
+
+
"magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="],
+
+
"math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="],
+
+
"mdast-util-from-markdown": ["mdast-util-from-markdown@2.0.2", "", { "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "mdast-util-to-string": "^4.0.0", "micromark": "^4.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-decode-string": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA=="],
+
+
"mdast-util-to-hast": ["mdast-util-to-hast@13.2.0", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "@ungap/structured-clone": "^1.0.0", "devlop": "^1.0.0", "micromark-util-sanitize-uri": "^2.0.0", "trim-lines": "^3.0.0", "unist-util-position": "^5.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" } }, "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA=="],
+
+
"mdast-util-to-string": ["mdast-util-to-string@4.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0" } }, "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg=="],
+
+
"mdn-data": ["mdn-data@2.0.30", "", {}, "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA=="],
+
+
"merge-anything": ["merge-anything@5.1.7", "", { "dependencies": { "is-what": "4.1.16" } }, "sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ=="],
+
+
"micromark": ["micromark@4.0.2", "", { "dependencies": { "@types/debug": "^4.0.0", "debug": "^4.0.0", "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA=="],
+
+
"micromark-core-commonmark": ["micromark-core-commonmark@2.0.3", "", { "dependencies": { "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-factory-destination": "^2.0.0", "micromark-factory-label": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-factory-title": "^2.0.0", "micromark-factory-whitespace": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-html-tag-name": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg=="],
+
+
"micromark-factory-destination": ["micromark-factory-destination@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA=="],
+
+
"micromark-factory-label": ["micromark-factory-label@2.0.1", "", { "dependencies": { "devlop": "^1.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg=="],
+
+
"micromark-factory-space": ["micromark-factory-space@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg=="],
+
+
"micromark-factory-title": ["micromark-factory-title@2.0.1", "", { "dependencies": { "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw=="],
+
+
"micromark-factory-whitespace": ["micromark-factory-whitespace@2.0.1", "", { "dependencies": { "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ=="],
+
+
"micromark-util-character": ["micromark-util-character@2.1.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="],
+
+
"micromark-util-chunked": ["micromark-util-chunked@2.0.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA=="],
+
+
"micromark-util-classify-character": ["micromark-util-classify-character@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q=="],
+
+
"micromark-util-combine-extensions": ["micromark-util-combine-extensions@2.0.1", "", { "dependencies": { "micromark-util-chunked": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg=="],
+
+
"micromark-util-decode-numeric-character-reference": ["micromark-util-decode-numeric-character-reference@2.0.2", "", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw=="],
+
+
"micromark-util-decode-string": ["micromark-util-decode-string@2.0.1", "", { "dependencies": { "decode-named-character-reference": "^1.0.0", "micromark-util-character": "^2.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-symbol": "^2.0.0" } }, "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ=="],
+
+
"micromark-util-encode": ["micromark-util-encode@2.0.1", "", {}, "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw=="],
+
+
"micromark-util-html-tag-name": ["micromark-util-html-tag-name@2.0.1", "", {}, "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA=="],
+
+
"micromark-util-normalize-identifier": ["micromark-util-normalize-identifier@2.0.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q=="],
+
+
"micromark-util-resolve-all": ["micromark-util-resolve-all@2.0.1", "", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg=="],
+
+
"micromark-util-sanitize-uri": ["micromark-util-sanitize-uri@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-symbol": "^2.0.0" } }, "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ=="],
+
+
"micromark-util-subtokenize": ["micromark-util-subtokenize@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA=="],
+
+
"micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="],
+
+
"micromark-util-types": ["micromark-util-types@2.0.2", "", {}, "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA=="],
+
+
"mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="],
+
+
"mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="],
+
+
"minipass": ["minipass@4.2.8", "", {}, "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ=="],
+
+
"minizlib": ["minizlib@2.1.2", "", { "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" } }, "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg=="],
+
+
"mkdirp": ["mkdirp@1.0.4", "", { "bin": { "mkdirp": "bin/cmd.js" } }, "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="],
+
+
"mlly": ["mlly@1.8.0", "", { "dependencies": { "acorn": "^8.15.0", "pathe": "^2.0.3", "pkg-types": "^1.3.1", "ufo": "^1.6.1" } }, "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g=="],
+
+
"ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="],
+
+
"nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="],
+
+
"node-releases": ["node-releases@2.0.25", "", {}, "sha512-4auku8B/vw5psvTiiN9j1dAOsXvMoGqJuKJcR+dTdqiXEK20mMTk1UEo3HS16LeGQsVG6+qKTPM9u/qQ2LqATA=="],
+
+
"nth-check": ["nth-check@2.1.1", "", { "dependencies": { "boolbase": "^1.0.0" } }, "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w=="],
+
+
"once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="],
+
+
"package-manager-detector": ["package-manager-detector@1.5.0", "", {}, "sha512-uBj69dVlYe/+wxj8JOpr97XfsxH/eumMt6HqjNTmJDf/6NO9s+0uxeOneIz3AsPt2m6y9PqzDzd3ATcU17MNfw=="],
+
+
"parse5": ["parse5@7.3.0", "", { "dependencies": { "entities": "6.0.1" } }, "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw=="],
+
+
"parse5-htmlparser2-tree-adapter": ["parse5-htmlparser2-tree-adapter@7.1.0", "", { "dependencies": { "domhandler": "^5.0.3", "parse5": "^7.0.0" } }, "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g=="],
+
+
"parse5-parser-stream": ["parse5-parser-stream@7.1.2", "", { "dependencies": { "parse5": "^7.0.0" } }, "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow=="],
+
+
"pathe": ["pathe@1.1.2", "", {}, "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ=="],
+
+
"pend": ["pend@1.2.0", "", {}, "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg=="],
+
+
"picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="],
+
+
"picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="],
+
+
"pkg-types": ["pkg-types@1.3.1", "", { "dependencies": { "confbox": "^0.1.8", "mlly": "^1.7.4", "pathe": "^2.0.1" } }, "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ=="],
+
+
"postcss": ["postcss@8.5.6", "", { "dependencies": { "nanoid": "3.3.11", "picocolors": "1.1.1", "source-map-js": "1.2.1" } }, "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg=="],
+
+
"property-information": ["property-information@6.5.0", "", {}, "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig=="],
+
+
"proxy-from-env": ["proxy-from-env@1.1.0", "", {}, "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="],
+
+
"pump": ["pump@3.0.3", "", { "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA=="],
+
+
"quansync": ["quansync@0.2.11", "", {}, "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA=="],
+
+
"remark-parse": ["remark-parse@11.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", "micromark-util-types": "^2.0.0", "unified": "^11.0.0" } }, "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA=="],
+
+
"remark-rehype": ["remark-rehype@11.1.2", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "mdast-util-to-hast": "^13.0.0", "unified": "^11.0.0", "vfile": "^6.0.0" } }, "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw=="],
+
+
"rollup": ["rollup@4.52.5", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.52.5", "@rollup/rollup-android-arm64": "4.52.5", "@rollup/rollup-darwin-arm64": "4.52.5", "@rollup/rollup-darwin-x64": "4.52.5", "@rollup/rollup-freebsd-arm64": "4.52.5", "@rollup/rollup-freebsd-x64": "4.52.5", "@rollup/rollup-linux-arm-gnueabihf": "4.52.5", "@rollup/rollup-linux-arm-musleabihf": "4.52.5", "@rollup/rollup-linux-arm64-gnu": "4.52.5", "@rollup/rollup-linux-arm64-musl": "4.52.5", "@rollup/rollup-linux-loong64-gnu": "4.52.5", "@rollup/rollup-linux-ppc64-gnu": "4.52.5", "@rollup/rollup-linux-riscv64-gnu": "4.52.5", "@rollup/rollup-linux-riscv64-musl": "4.52.5", "@rollup/rollup-linux-s390x-gnu": "4.52.5", "@rollup/rollup-linux-x64-gnu": "4.52.5", "@rollup/rollup-linux-x64-musl": "4.52.5", "@rollup/rollup-openharmony-arm64": "4.52.5", "@rollup/rollup-win32-arm64-msvc": "4.52.5", "@rollup/rollup-win32-ia32-msvc": "4.52.5", "@rollup/rollup-win32-x64-gnu": "4.52.5", "@rollup/rollup-win32-x64-msvc": "4.52.5", "fsevents": "2.3.3" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw=="],
+
+
"safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="],
+
+
"semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="],
+
+
"seroval": ["seroval@1.3.2", "", {}, "sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ=="],
+
+
"seroval-plugins": ["seroval-plugins@1.3.3", "", { "peerDependencies": { "seroval": "1.3.2" } }, "sha512-16OL3NnUBw8JG1jBLUoZJsLnQq0n5Ua6aHalhJK4fMQkz1lqR7Osz1sA30trBtd9VUDc2NgkuRCn8+/pBwqZ+w=="],
+
+
"solid-devtools": ["solid-devtools@0.34.4", "", { "dependencies": { "@babel/core": "^7.27.4", "@babel/plugin-syntax-typescript": "^7.27.1", "@babel/types": "^7.27.6", "@solid-devtools/debugger": "^0.28.1", "@solid-devtools/shared": "^0.20.0" }, "peerDependencies": { "solid-js": "^1.9.0", "vite": "^2.2.3 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" }, "optionalPeers": ["vite"] }, "sha512-/s/pPTLvTkuXGZhLfsuvp7ge/cdpEwrUPoRwoJPYgz74GTUSb5Ozi2V6Z6HkO0ILT7hXB04j16HbH1aaP5VFOA=="],
+
+
"solid-js": ["solid-js@1.9.10", "", { "dependencies": { "csstype": "^3.1.0", "seroval": "~1.3.0", "seroval-plugins": "~1.3.0" } }, "sha512-Coz956cos/EPDlhs6+jsdTxKuJDPT7B5SVIWgABwROyxjY7Xbr8wkzD68Et+NxnV7DLJ3nJdAC2r9InuV/4Jew=="],
+
+
"solid-markdown": ["solid-markdown@2.0.14", "", { "dependencies": { "comma-separated-tokens": "^2.0.3", "property-information": "^6.3.0", "remark-parse": "^11.0.0", "remark-rehype": "^11.1.1", "space-separated-tokens": "^2.0.2", "style-to-object": "^0.3.0", "unified": "^11.0.5", "unist-util-visit": "^4.1.2", "vfile": "^6.0.3" }, "peerDependencies": { "solid-js": "^1.6.0" } }, "sha512-Ln8R4TsNWySXvKkS80OHV+CSR/mwjk5XfGvC5UjZo/y/rAbbkBoxt6FXoWsfCkTW6GH9yxYvahSMXsUJU/ov4Q=="],
+
+
"solid-refresh": ["solid-refresh@0.6.3", "", { "dependencies": { "@babel/generator": "7.28.3", "@babel/helper-module-imports": "7.27.1", "@babel/types": "7.28.4" }, "peerDependencies": { "solid-js": "1.9.9" } }, "sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA=="],
+
+
"source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="],
+
+
"space-separated-tokens": ["space-separated-tokens@2.0.2", "", {}, "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q=="],
+
+
"style-to-object": ["style-to-object@0.3.0", "", { "dependencies": { "inline-style-parser": "0.1.1" } }, "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA=="],
+
+
"svgo": ["svgo@3.3.2", "", { "dependencies": { "@trysound/sax": "0.2.0", "commander": "^7.2.0", "css-select": "^5.1.0", "css-tree": "^2.3.1", "css-what": "^6.1.0", "csso": "^5.0.5", "picocolors": "^1.0.0" }, "bin": "./bin/svgo" }, "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw=="],
+
+
"tailwindcss": ["tailwindcss@4.1.17", "", {}, "sha512-j9Ee2YjuQqYT9bbRTfTZht9W/ytp5H+jJpZKiYdP/bpnXARAuELt9ofP0lPnmHjbga7SNQIxdTAXCmtKVYjN+Q=="],
+
+
"tapable": ["tapable@2.2.3", "", {}, "sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg=="],
+
+
"tar": ["tar@6.2.1", "", { "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", "minipass": "^5.0.0", "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" } }, "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A=="],
+
+
"tinyexec": ["tinyexec@1.0.2", "", {}, "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg=="],
+
+
"tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "6.5.0", "picomatch": "4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="],
+
+
"trim-lines": ["trim-lines@3.0.1", "", {}, "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg=="],
+
+
"trough": ["trough@2.2.0", "", {}, "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw=="],
+
+
"ufo": ["ufo@1.6.1", "", {}, "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA=="],
+
+
"undici": ["undici@6.22.0", "", {}, "sha512-hU/10obOIu62MGYjdskASR3CUAiYaFTtC9Pa6vHyf//mAipSvSQg6od2CnJswq7fvzNS3zJhxoRkgNVaHurWKw=="],
+
+
"undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="],
+
+
"unified": ["unified@11.0.5", "", { "dependencies": { "@types/unist": "^3.0.0", "bail": "^2.0.0", "devlop": "^1.0.0", "extend": "^3.0.0", "is-plain-obj": "^4.0.0", "trough": "^2.0.0", "vfile": "^6.0.0" } }, "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA=="],
+
+
"unist-util-is": ["unist-util-is@5.2.1", "", { "dependencies": { "@types/unist": "^2.0.0" } }, "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw=="],
+
+
"unist-util-position": ["unist-util-position@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA=="],
+
+
"unist-util-stringify-position": ["unist-util-stringify-position@4.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ=="],
+
+
"unist-util-visit": ["unist-util-visit@4.1.2", "", { "dependencies": { "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0", "unist-util-visit-parents": "^5.1.1" } }, "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg=="],
+
+
"unist-util-visit-parents": ["unist-util-visit-parents@5.1.3", "", { "dependencies": { "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0" } }, "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg=="],
+
+
"update-browserslist-db": ["update-browserslist-db@1.1.3", "", { "dependencies": { "escalade": "3.2.0", "picocolors": "1.1.1" }, "peerDependencies": { "browserslist": "4.26.3" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw=="],
+
+
"validate-html-nesting": ["validate-html-nesting@1.2.3", "", {}, "sha512-kdkWdCl6eCeLlRShJKbjVOU2kFKxMF8Ghu50n+crEoyx+VKm3FxAxF9z4DCy6+bbTOqNW0+jcIYRnjoIRzigRw=="],
+
+
"vfile": ["vfile@6.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "vfile-message": "^4.0.0" } }, "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q=="],
+
+
"vfile-message": ["vfile-message@4.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw=="],
+
+
"vite": ["vite@7.2.2", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ=="],
+
+
"vite-plugin-solid": ["vite-plugin-solid@2.11.10", "", { "dependencies": { "@babel/core": "^7.23.3", "@types/babel__core": "^7.20.4", "babel-preset-solid": "^1.8.4", "merge-anything": "^5.1.7", "solid-refresh": "^0.6.3", "vitefu": "^1.0.4" }, "peerDependencies": { "@testing-library/jest-dom": "^5.16.6 || ^5.17.0 || ^6.*", "solid-js": "^1.7.2", "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" }, "optionalPeers": ["@testing-library/jest-dom"] }, "sha512-Yr1dQybmtDtDAHkii6hXuc1oVH9CPcS/Zb2jN/P36qqcrkNnVPsMTzQ06jyzFPFjj3U1IYKMVt/9ZqcwGCEbjw=="],
+
+
"vitefu": ["vitefu@1.1.1", "", { "optionalDependencies": { "vite": "7.1.10" } }, "sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ=="],
+
+
"whatwg-encoding": ["whatwg-encoding@3.1.1", "", { "dependencies": { "iconv-lite": "0.6.3" } }, "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ=="],
+
+
"whatwg-mimetype": ["whatwg-mimetype@4.0.0", "", {}, "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg=="],
+
+
"wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="],
+
+
"yallist": ["yallist@4.0.0", "", {}, "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="],
+
+
"yaml": ["yaml@2.6.1", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg=="],
+
+
"yauzl": ["yauzl@2.10.0", "", { "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } }, "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g=="],
+
+
"@atcute/oauth-browser-client/nanoid": ["nanoid@5.1.6", "", { "bin": { "nanoid": "bin/nanoid.js" } }, "sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg=="],
+
+
"@iconify/utils/local-pkg": ["local-pkg@1.1.2", "", { "dependencies": { "mlly": "^1.7.4", "pkg-types": "^2.3.0", "quansync": "^0.2.11" } }, "sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A=="],
+
+
"@jridgewell/gen-mapping/@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.30", "", { "dependencies": { "@jridgewell/resolve-uri": "3.1.0", "@jridgewell/sourcemap-codec": "1.4.15" } }, "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q=="],
+
+
"@jridgewell/remapping/@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.30", "", { "dependencies": { "@jridgewell/resolve-uri": "3.1.0", "@jridgewell/sourcemap-codec": "1.4.15" } }, "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q=="],
+
+
"@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.7.0", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" }, "bundled": true }, "sha512-pJdKGq/1iquWYtv1RRSljZklxHCOCAJFJrImO5ZLKPJVJlVUcs8yFwNQlqS0Lo8xT1VAXXTCZocF9n26FWEKsw=="],
+
+
"@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.7.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-oAYoQnCYaQZKVS53Fq23ceWMRxq5EhQsE0x0RdQ55jT7wagMu5k+fS39v1fiSLrtrLQlXwVINenqhLMtTrV/1Q=="],
+
+
"@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.1.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ=="],
+
+
"@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.0.7", "", { "dependencies": { "@emnapi/core": "^1.5.0", "@emnapi/runtime": "^1.5.0", "@tybys/wasm-util": "^0.10.1" }, "bundled": true }, "sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw=="],
+
+
"@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="],
+
+
"@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
+
+
"babel-plugin-jsx-dom-expressions/@babel/helper-module-imports": ["@babel/helper-module-imports@7.18.6", "", { "dependencies": { "@babel/types": "7.28.4" } }, "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA=="],
+
+
"babel-preset-solid/solid-js": ["solid-js@1.9.9", "", { "dependencies": { "csstype": "3.1.3", "seroval": "1.3.2", "seroval-plugins": "1.3.3" } }, "sha512-A0ZBPJQldAeGCTW0YRYJmt7RCeh5rbFfPZ2aOttgYnctHE7HgKeHCBB/PVc2P7eOfmNXqMFFFoYYdm3S4dcbkA=="],
+
+
"csso/css-tree": ["css-tree@2.2.1", "", { "dependencies": { "mdn-data": "2.0.28", "source-map-js": "^1.0.1" } }, "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA=="],
+
+
"fs-minipass/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="],
+
+
"lru-cache/yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="],
+
+
"mdast-util-to-hast/unist-util-visit": ["unist-util-visit@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg=="],
+
+
"minizlib/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="],
+
+
"mlly/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="],
+
+
"parse5/entities": ["entities@6.0.1", "", {}, "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g=="],
+
+
"pkg-types/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="],
+
+
"tar/minipass": ["minipass@5.0.0", "", {}, "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ=="],
+
+
"unist-util-is/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="],
+
+
"unist-util-visit/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="],
+
+
"unist-util-visit-parents/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="],
+
+
"vitefu/vite": ["vite@7.1.10", "", { "dependencies": { "esbuild": "0.25.11", "fdir": "6.5.0", "picomatch": "4.0.3", "postcss": "8.5.6", "rollup": "4.52.5", "tinyglobby": "0.2.15" }, "optionalDependencies": { "fsevents": "2.3.3", "jiti": "2.5.1", "lightningcss": "1.30.1", "yaml": "2.6.1" }, "bin": { "vite": "bin/vite.js" } }, "sha512-CmuvUBzVJ/e3HGxhg6cYk88NGgTnBoOo7ogtfJJ0fefUWAxN/WDSUa50o+oVBxuIhO8FoEZW0j2eW7sfjs5EtA=="],
+
+
"@iconify/utils/local-pkg/pkg-types": ["pkg-types@2.3.0", "", { "dependencies": { "confbox": "^0.2.2", "exsolve": "^1.0.7", "pathe": "^2.0.3" } }, "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig=="],
+
+
"@jridgewell/gen-mapping/@jridgewell/trace-mapping/@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.0", "", {}, "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w=="],
+
+
"@jridgewell/gen-mapping/@jridgewell/trace-mapping/@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.4.15", "", {}, "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="],
+
+
"@jridgewell/remapping/@jridgewell/trace-mapping/@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.0", "", {}, "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w=="],
+
+
"@jridgewell/remapping/@jridgewell/trace-mapping/@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.4.15", "", {}, "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="],
+
+
"csso/css-tree/mdn-data": ["mdn-data@2.0.28", "", {}, "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g=="],
+
+
"mdast-util-to-hast/unist-util-visit/unist-util-is": ["unist-util-is@6.0.1", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g=="],
+
+
"mdast-util-to-hast/unist-util-visit/unist-util-visit-parents": ["unist-util-visit-parents@6.0.2", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ=="],
+
+
"vitefu/vite/jiti": ["jiti@2.5.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w=="],
+
+
"vitefu/vite/lightningcss": ["lightningcss@1.30.1", "", { "dependencies": { "detect-libc": "2.0.4" }, "optionalDependencies": { "lightningcss-darwin-arm64": "1.30.1", "lightningcss-darwin-x64": "1.30.1", "lightningcss-freebsd-x64": "1.30.1", "lightningcss-linux-arm-gnueabihf": "1.30.1", "lightningcss-linux-arm64-gnu": "1.30.1", "lightningcss-linux-arm64-musl": "1.30.1", "lightningcss-linux-x64-gnu": "1.30.1", "lightningcss-linux-x64-musl": "1.30.1", "lightningcss-win32-arm64-msvc": "1.30.1", "lightningcss-win32-x64-msvc": "1.30.1" } }, "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg=="],
+
+
"@iconify/utils/local-pkg/pkg-types/confbox": ["confbox@0.2.2", "", {}, "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ=="],
+
+
"@iconify/utils/local-pkg/pkg-types/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="],
+
+
"vitefu/vite/lightningcss/lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.30.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ=="],
+
+
"vitefu/vite/lightningcss/lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.30.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA=="],
+
+
"vitefu/vite/lightningcss/lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.30.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig=="],
+
+
"vitefu/vite/lightningcss/lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.30.1", "", { "os": "linux", "cpu": "arm" }, "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q=="],
+
+
"vitefu/vite/lightningcss/lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.30.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw=="],
+
+
"vitefu/vite/lightningcss/lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.30.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ=="],
+
+
"vitefu/vite/lightningcss/lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.30.1", "", { "os": "linux", "cpu": "x64" }, "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw=="],
+
+
"vitefu/vite/lightningcss/lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.30.1", "", { "os": "linux", "cpu": "x64" }, "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ=="],
+
+
"vitefu/vite/lightningcss/lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.30.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA=="],
+
+
"vitefu/vite/lightningcss/lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.30.1", "", { "os": "win32", "cpu": "x64" }, "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg=="],
+
}
+
}
+27
flake.lock
···
+
{
+
"nodes": {
+
"nixpkgs": {
+
"locked": {
+
"lastModified": 1762361079,
+
"narHash": "sha256-lz718rr1BDpZBYk7+G8cE6wee3PiBUpn8aomG/vLLiY=",
+
"owner": "nixos",
+
"repo": "nixpkgs",
+
"rev": "ffcdcf99d65c61956d882df249a9be53e5902ea5",
+
"type": "github"
+
},
+
"original": {
+
"owner": "nixos",
+
"ref": "nixpkgs-unstable",
+
"repo": "nixpkgs",
+
"type": "github"
+
}
+
},
+
"root": {
+
"inputs": {
+
"nixpkgs": "nixpkgs"
+
}
+
}
+
},
+
"root": "root",
+
"version": 7
+
}
+28
flake.nix
···
+
{
+
description = "tangled-spa";
+
+
inputs = {
+
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
+
};
+
+
outputs = {
+
self,
+
nixpkgs,
+
}: let
+
forAllSystems = function:
+
nixpkgs.lib.genAttrs nixpkgs.lib.systems.flakeExposed (
+
system: function nixpkgs.legacyPackages.${system}
+
);
+
in {
+
#packages = forAllSystems (pkgs: {
+
# example = pkgs.callPackage ./default.nix { };
+
# default = self.packages.${pkgs.stdenv.hostPlatform.system}.example;
+
#});
+
+
devShells = forAllSystems (pkgs: {
+
default = pkgs.callPackage ./shell.nix {inherit pkgs;};
+
});
+
+
#overlays.default = final: _: {example = final.callPackage ./default.nix {};};
+
};
+
}
+15
index.html
···
+
<!DOCTYPE html>
+
<html lang="en">
+
<head>
+
<meta charset="utf-8">
+
<meta name="viewport" content="width=device-width, initial-scale=1">
+
<meta name="theme-color" content="#000000">
+
<title>matted</title>
+
</head>
+
<body class="bg-slate-100 dark:bg-gray-900">
+
<noscript>You need to enable JavaScript to run this app.</noscript>
+
<div id="root"></div>
+
+
<script src="/src/index.tsx" type="module"></script>
+
</body>
+
</html>
+42
package.json
···
+
{
+
"name": "vite-template-solid",
+
"version": "0.0.0",
+
"description": "",
+
"type": "module",
+
"scripts": {
+
"start": "vite",
+
"dev": "vite",
+
"build": "vite build",
+
"serve": "vite preview"
+
},
+
"license": "MIT",
+
"devDependencies": {
+
"@biomejs/biome": "^2.3.4",
+
"@iconify-json/gravity-ui": "^1.2.10",
+
"@iconify/tailwind4": "^1.1.0",
+
"postcss": "^8.5.6",
+
"solid-devtools": "^0.34.4",
+
"tailwindcss": "^4.1.17",
+
"vite": "^7.2.2",
+
"vite-plugin-solid": "^2.11.10"
+
},
+
"dependencies": {
+
"@atcute/atproto": "^3.1.9",
+
"@atcute/client": "^4.0.5",
+
"@atcute/identity-resolver": "^1.1.4",
+
"@atcute/oauth-browser-client": "^2.0.1",
+
"@atcute/tangled": "^1.0.10",
+
"@gleam-lang/highlight.js-gleam": "^1.5.0",
+
"@solidjs/router": "^0.15.3",
+
"@tailwindcss/vite": "^4.1.17",
+
"@types/highlight.js": "^10.1.0",
+
"highlight.js": "^11.11.1",
+
"highlightjs-line-numbers.js": "^2.9.1",
+
"solid-js": "^1.9.10",
+
"solid-markdown": "^2.0.14"
+
},
+
"patchedDependencies": {
+
"@gleam-lang/highlight.js-gleam@1.5.0": "patches/@gleam-lang%2Fhighlight.js-gleam@1.5.0.patch",
+
"highlight.js@11.11.1": "patches/highlight.js@11.11.1.patch"
+
}
+
}
+10
patches/@gleam-lang%2Fhighlight.js-gleam@1.5.0.patch
···
+
diff --git a/node_modules/@gleam-lang/highlight.js-gleam/index.d.ts b/index.d.ts
+
new file mode 100644
+
index 0000000000000000000000000000000000000000..1ed55230d38550ff85e284f036d82c90b1f59c9e
+
--- /dev/null
+
+++ b/index.d.ts
+
@@ -0,0 +1,4 @@
+
+declare module '@gleam-lang/highlight.js-gleam' {
+
+ const gleam: any;
+
+ export default gleam;
+
+}
+203
patches/highlight.js@11.11.1.patch
···
+
diff --git a/lib/index.js b/lib/index.js
+
index 5da9ad4df62af64c81bb8d6ede6fb9cdb6183b0c..8e4342e21db18a9b720957af57a62fb38bff0d75 100644
+
--- a/lib/index.js
+
+++ b/lib/index.js
+
@@ -1,198 +1,5 @@
+
var hljs = require('./core');
+
+
-hljs.registerLanguage('1c', require('./languages/1c'));
+
-hljs.registerLanguage('abnf', require('./languages/abnf'));
+
-hljs.registerLanguage('accesslog', require('./languages/accesslog'));
+
-hljs.registerLanguage('actionscript', require('./languages/actionscript'));
+
-hljs.registerLanguage('ada', require('./languages/ada'));
+
-hljs.registerLanguage('angelscript', require('./languages/angelscript'));
+
-hljs.registerLanguage('apache', require('./languages/apache'));
+
-hljs.registerLanguage('applescript', require('./languages/applescript'));
+
-hljs.registerLanguage('arcade', require('./languages/arcade'));
+
-hljs.registerLanguage('arduino', require('./languages/arduino'));
+
-hljs.registerLanguage('armasm', require('./languages/armasm'));
+
-hljs.registerLanguage('xml', require('./languages/xml'));
+
-hljs.registerLanguage('asciidoc', require('./languages/asciidoc'));
+
-hljs.registerLanguage('aspectj', require('./languages/aspectj'));
+
-hljs.registerLanguage('autohotkey', require('./languages/autohotkey'));
+
-hljs.registerLanguage('autoit', require('./languages/autoit'));
+
-hljs.registerLanguage('avrasm', require('./languages/avrasm'));
+
-hljs.registerLanguage('awk', require('./languages/awk'));
+
-hljs.registerLanguage('axapta', require('./languages/axapta'));
+
-hljs.registerLanguage('bash', require('./languages/bash'));
+
-hljs.registerLanguage('basic', require('./languages/basic'));
+
-hljs.registerLanguage('bnf', require('./languages/bnf'));
+
-hljs.registerLanguage('brainfuck', require('./languages/brainfuck'));
+
-hljs.registerLanguage('c', require('./languages/c'));
+
-hljs.registerLanguage('cal', require('./languages/cal'));
+
-hljs.registerLanguage('capnproto', require('./languages/capnproto'));
+
-hljs.registerLanguage('ceylon', require('./languages/ceylon'));
+
-hljs.registerLanguage('clean', require('./languages/clean'));
+
-hljs.registerLanguage('clojure', require('./languages/clojure'));
+
-hljs.registerLanguage('clojure-repl', require('./languages/clojure-repl'));
+
-hljs.registerLanguage('cmake', require('./languages/cmake'));
+
-hljs.registerLanguage('coffeescript', require('./languages/coffeescript'));
+
-hljs.registerLanguage('coq', require('./languages/coq'));
+
-hljs.registerLanguage('cos', require('./languages/cos'));
+
-hljs.registerLanguage('cpp', require('./languages/cpp'));
+
-hljs.registerLanguage('crmsh', require('./languages/crmsh'));
+
-hljs.registerLanguage('crystal', require('./languages/crystal'));
+
-hljs.registerLanguage('csharp', require('./languages/csharp'));
+
-hljs.registerLanguage('csp', require('./languages/csp'));
+
-hljs.registerLanguage('css', require('./languages/css'));
+
-hljs.registerLanguage('d', require('./languages/d'));
+
-hljs.registerLanguage('markdown', require('./languages/markdown'));
+
-hljs.registerLanguage('dart', require('./languages/dart'));
+
-hljs.registerLanguage('delphi', require('./languages/delphi'));
+
-hljs.registerLanguage('diff', require('./languages/diff'));
+
-hljs.registerLanguage('django', require('./languages/django'));
+
-hljs.registerLanguage('dns', require('./languages/dns'));
+
-hljs.registerLanguage('dockerfile', require('./languages/dockerfile'));
+
-hljs.registerLanguage('dos', require('./languages/dos'));
+
-hljs.registerLanguage('dsconfig', require('./languages/dsconfig'));
+
-hljs.registerLanguage('dts', require('./languages/dts'));
+
-hljs.registerLanguage('dust', require('./languages/dust'));
+
-hljs.registerLanguage('ebnf', require('./languages/ebnf'));
+
-hljs.registerLanguage('elixir', require('./languages/elixir'));
+
-hljs.registerLanguage('elm', require('./languages/elm'));
+
-hljs.registerLanguage('ruby', require('./languages/ruby'));
+
-hljs.registerLanguage('erb', require('./languages/erb'));
+
-hljs.registerLanguage('erlang-repl', require('./languages/erlang-repl'));
+
-hljs.registerLanguage('erlang', require('./languages/erlang'));
+
-hljs.registerLanguage('excel', require('./languages/excel'));
+
-hljs.registerLanguage('fix', require('./languages/fix'));
+
-hljs.registerLanguage('flix', require('./languages/flix'));
+
-hljs.registerLanguage('fortran', require('./languages/fortran'));
+
-hljs.registerLanguage('fsharp', require('./languages/fsharp'));
+
-hljs.registerLanguage('gams', require('./languages/gams'));
+
-hljs.registerLanguage('gauss', require('./languages/gauss'));
+
-hljs.registerLanguage('gcode', require('./languages/gcode'));
+
-hljs.registerLanguage('gherkin', require('./languages/gherkin'));
+
-hljs.registerLanguage('glsl', require('./languages/glsl'));
+
-hljs.registerLanguage('gml', require('./languages/gml'));
+
-hljs.registerLanguage('go', require('./languages/go'));
+
-hljs.registerLanguage('golo', require('./languages/golo'));
+
-hljs.registerLanguage('gradle', require('./languages/gradle'));
+
-hljs.registerLanguage('graphql', require('./languages/graphql'));
+
-hljs.registerLanguage('groovy', require('./languages/groovy'));
+
-hljs.registerLanguage('haml', require('./languages/haml'));
+
-hljs.registerLanguage('handlebars', require('./languages/handlebars'));
+
-hljs.registerLanguage('haskell', require('./languages/haskell'));
+
-hljs.registerLanguage('haxe', require('./languages/haxe'));
+
-hljs.registerLanguage('hsp', require('./languages/hsp'));
+
-hljs.registerLanguage('http', require('./languages/http'));
+
-hljs.registerLanguage('hy', require('./languages/hy'));
+
-hljs.registerLanguage('inform7', require('./languages/inform7'));
+
-hljs.registerLanguage('ini', require('./languages/ini'));
+
-hljs.registerLanguage('irpf90', require('./languages/irpf90'));
+
-hljs.registerLanguage('isbl', require('./languages/isbl'));
+
-hljs.registerLanguage('java', require('./languages/java'));
+
-hljs.registerLanguage('javascript', require('./languages/javascript'));
+
-hljs.registerLanguage('jboss-cli', require('./languages/jboss-cli'));
+
-hljs.registerLanguage('json', require('./languages/json'));
+
-hljs.registerLanguage('julia', require('./languages/julia'));
+
-hljs.registerLanguage('julia-repl', require('./languages/julia-repl'));
+
-hljs.registerLanguage('kotlin', require('./languages/kotlin'));
+
-hljs.registerLanguage('lasso', require('./languages/lasso'));
+
-hljs.registerLanguage('latex', require('./languages/latex'));
+
-hljs.registerLanguage('ldif', require('./languages/ldif'));
+
-hljs.registerLanguage('leaf', require('./languages/leaf'));
+
-hljs.registerLanguage('less', require('./languages/less'));
+
-hljs.registerLanguage('lisp', require('./languages/lisp'));
+
-hljs.registerLanguage('livecodeserver', require('./languages/livecodeserver'));
+
-hljs.registerLanguage('livescript', require('./languages/livescript'));
+
-hljs.registerLanguage('llvm', require('./languages/llvm'));
+
-hljs.registerLanguage('lsl', require('./languages/lsl'));
+
-hljs.registerLanguage('lua', require('./languages/lua'));
+
-hljs.registerLanguage('makefile', require('./languages/makefile'));
+
-hljs.registerLanguage('mathematica', require('./languages/mathematica'));
+
-hljs.registerLanguage('matlab', require('./languages/matlab'));
+
-hljs.registerLanguage('maxima', require('./languages/maxima'));
+
-hljs.registerLanguage('mel', require('./languages/mel'));
+
-hljs.registerLanguage('mercury', require('./languages/mercury'));
+
-hljs.registerLanguage('mipsasm', require('./languages/mipsasm'));
+
-hljs.registerLanguage('mizar', require('./languages/mizar'));
+
-hljs.registerLanguage('perl', require('./languages/perl'));
+
-hljs.registerLanguage('mojolicious', require('./languages/mojolicious'));
+
-hljs.registerLanguage('monkey', require('./languages/monkey'));
+
-hljs.registerLanguage('moonscript', require('./languages/moonscript'));
+
-hljs.registerLanguage('n1ql', require('./languages/n1ql'));
+
-hljs.registerLanguage('nestedtext', require('./languages/nestedtext'));
+
-hljs.registerLanguage('nginx', require('./languages/nginx'));
+
-hljs.registerLanguage('nim', require('./languages/nim'));
+
-hljs.registerLanguage('nix', require('./languages/nix'));
+
-hljs.registerLanguage('node-repl', require('./languages/node-repl'));
+
-hljs.registerLanguage('nsis', require('./languages/nsis'));
+
-hljs.registerLanguage('objectivec', require('./languages/objectivec'));
+
-hljs.registerLanguage('ocaml', require('./languages/ocaml'));
+
-hljs.registerLanguage('openscad', require('./languages/openscad'));
+
-hljs.registerLanguage('oxygene', require('./languages/oxygene'));
+
-hljs.registerLanguage('parser3', require('./languages/parser3'));
+
-hljs.registerLanguage('pf', require('./languages/pf'));
+
-hljs.registerLanguage('pgsql', require('./languages/pgsql'));
+
-hljs.registerLanguage('php', require('./languages/php'));
+
-hljs.registerLanguage('php-template', require('./languages/php-template'));
+
-hljs.registerLanguage('plaintext', require('./languages/plaintext'));
+
-hljs.registerLanguage('pony', require('./languages/pony'));
+
-hljs.registerLanguage('powershell', require('./languages/powershell'));
+
-hljs.registerLanguage('processing', require('./languages/processing'));
+
-hljs.registerLanguage('profile', require('./languages/profile'));
+
-hljs.registerLanguage('prolog', require('./languages/prolog'));
+
-hljs.registerLanguage('properties', require('./languages/properties'));
+
-hljs.registerLanguage('protobuf', require('./languages/protobuf'));
+
-hljs.registerLanguage('puppet', require('./languages/puppet'));
+
-hljs.registerLanguage('purebasic', require('./languages/purebasic'));
+
-hljs.registerLanguage('python', require('./languages/python'));
+
-hljs.registerLanguage('python-repl', require('./languages/python-repl'));
+
-hljs.registerLanguage('q', require('./languages/q'));
+
-hljs.registerLanguage('qml', require('./languages/qml'));
+
-hljs.registerLanguage('r', require('./languages/r'));
+
-hljs.registerLanguage('reasonml', require('./languages/reasonml'));
+
-hljs.registerLanguage('rib', require('./languages/rib'));
+
-hljs.registerLanguage('roboconf', require('./languages/roboconf'));
+
-hljs.registerLanguage('routeros', require('./languages/routeros'));
+
-hljs.registerLanguage('rsl', require('./languages/rsl'));
+
-hljs.registerLanguage('ruleslanguage', require('./languages/ruleslanguage'));
+
-hljs.registerLanguage('rust', require('./languages/rust'));
+
-hljs.registerLanguage('sas', require('./languages/sas'));
+
-hljs.registerLanguage('scala', require('./languages/scala'));
+
-hljs.registerLanguage('scheme', require('./languages/scheme'));
+
-hljs.registerLanguage('scilab', require('./languages/scilab'));
+
-hljs.registerLanguage('scss', require('./languages/scss'));
+
-hljs.registerLanguage('shell', require('./languages/shell'));
+
-hljs.registerLanguage('smali', require('./languages/smali'));
+
-hljs.registerLanguage('smalltalk', require('./languages/smalltalk'));
+
-hljs.registerLanguage('sml', require('./languages/sml'));
+
-hljs.registerLanguage('sqf', require('./languages/sqf'));
+
-hljs.registerLanguage('sql', require('./languages/sql'));
+
-hljs.registerLanguage('stan', require('./languages/stan'));
+
-hljs.registerLanguage('stata', require('./languages/stata'));
+
-hljs.registerLanguage('step21', require('./languages/step21'));
+
-hljs.registerLanguage('stylus', require('./languages/stylus'));
+
-hljs.registerLanguage('subunit', require('./languages/subunit'));
+
-hljs.registerLanguage('swift', require('./languages/swift'));
+
-hljs.registerLanguage('taggerscript', require('./languages/taggerscript'));
+
-hljs.registerLanguage('yaml', require('./languages/yaml'));
+
-hljs.registerLanguage('tap', require('./languages/tap'));
+
-hljs.registerLanguage('tcl', require('./languages/tcl'));
+
-hljs.registerLanguage('thrift', require('./languages/thrift'));
+
-hljs.registerLanguage('tp', require('./languages/tp'));
+
-hljs.registerLanguage('twig', require('./languages/twig'));
+
-hljs.registerLanguage('typescript', require('./languages/typescript'));
+
-hljs.registerLanguage('vala', require('./languages/vala'));
+
-hljs.registerLanguage('vbnet', require('./languages/vbnet'));
+
-hljs.registerLanguage('vbscript', require('./languages/vbscript'));
+
-hljs.registerLanguage('vbscript-html', require('./languages/vbscript-html'));
+
-hljs.registerLanguage('verilog', require('./languages/verilog'));
+
-hljs.registerLanguage('vhdl', require('./languages/vhdl'));
+
-hljs.registerLanguage('vim', require('./languages/vim'));
+
-hljs.registerLanguage('wasm', require('./languages/wasm'));
+
-hljs.registerLanguage('wren', require('./languages/wren'));
+
-hljs.registerLanguage('x86asm', require('./languages/x86asm'));
+
-hljs.registerLanguage('xl', require('./languages/xl'));
+
-hljs.registerLanguage('xquery', require('./languages/xquery'));
+
-hljs.registerLanguage('zephir', require('./languages/zephir'));
+
-
+
hljs.HighlightJS = hljs
+
hljs.default = hljs
+
module.exports = hljs;
+15
shell.nix
···
+
{pkgs}:
+
#let
+
# defaultPackage = callPackage ./default.nix { };
+
#in
+
pkgs.mkShellNoCC {
+
#inputsFrom = [ defaultPackage ];
+
#
+
env = {
+
RUST_SRC_PATH = pkgs.rustPlatform.rustLibSrc;
+
};
+
+
packages = with pkgs; [
+
bun
+
];
+
}
+21
src/app.tsx
···
+
import { type Component, type JSXElement, Suspense } from "solid-js";
+
+
const App: Component<{ children: JSXElement }> = (props) => {
+
return (
+
<>
+
<nav class="mx-auto bg-white text-gray-950 dark:bg-gray-800 dark:text-gray-50">
+
<ul class="flex items-center">
+
<li class="px-4 py-2">
+
<span class="select-none font-bold font-mono italic">matted</span>
+
</li>
+
</ul>
+
</nav>
+
+
<main class="mt-6 text-gray-950 text-sm dark:text-gray-50">
+
<Suspense>{props.children}</Suspense>
+
</main>
+
</>
+
);
+
};
+
+
export default App;
+3814
src/data/languages.json
···
+
{
+
"1centerprise": {
+
"color": "#814ccc",
+
"extensions": [".bsl", ".os"]
+
},
+
"2-dimensionalarray": {
+
"color": "#38761d",
+
"extensions": [".2da"]
+
},
+
"4d": {
+
"color": "#004289",
+
"extensions": [".4dm"]
+
},
+
"abap": {
+
"color": "#e8274b",
+
"extensions": [".abap"]
+
},
+
"abapcds": {
+
"color": "#555e25",
+
"extensions": [".asddls"]
+
},
+
"abnf": {
+
"extensions": [".abnf"]
+
},
+
"agsscript": {
+
"color": "#b9d9ff",
+
"extensions": [".asc", ".ash"]
+
},
+
"aidl": {
+
"color": "#34eb6b",
+
"extensions": [".aidl"]
+
},
+
"al": {
+
"color": "#3aa2b5",
+
"extensions": [".al"]
+
},
+
"ampl": {
+
"color": "#e6efbb",
+
"extensions": [".ampl", ".mod"]
+
},
+
"antlr4": {
+
"color": "#9dc3ff",
+
"extensions": [".g4"]
+
},
+
"apiblueprint": {
+
"color": "#2acca8",
+
"extensions": [".apib"]
+
},
+
"apl": {
+
"color": "#5a8164",
+
"extensions": [".apl", ".dyalog"]
+
},
+
"asl": {
+
"extensions": [".asl", ".dsl"]
+
},
+
"asn.1": {
+
"extensions": [".asn", ".asn1"]
+
},
+
"aspnet": {
+
"color": "#9400ff",
+
"extensions": [".asax", ".ascx", ".ashx", ".asmx", ".aspx", ".axd"]
+
},
+
"ats": {
+
"color": "#1ac620",
+
"extensions": [".dats", ".hats", ".sats"]
+
},
+
"actionscript": {
+
"color": "#882b0f",
+
"extensions": [".as"]
+
},
+
"ada": {
+
"color": "#02f88c",
+
"extensions": [".adb", ".ada", ".ads"]
+
},
+
"adblockfilterlist": {
+
"color": "#800000",
+
"extensions": [".txt"]
+
},
+
"adobefontmetrics": {
+
"color": "#fa0f00",
+
"extensions": [".afm"]
+
},
+
"agda": {
+
"color": "#315665",
+
"extensions": [".agda"]
+
},
+
"aiken": {
+
"color": "#640ff8",
+
"extensions": [".ak"]
+
},
+
"alloy": {
+
"color": "#64c800",
+
"extensions": [".als"]
+
},
+
"alpineabuild": {
+
"color": "#0d597f",
+
"filenames": ["apkbuild"]
+
},
+
"altiumdesigner": {
+
"color": "#a89663",
+
"extensions": [".outjob", ".pcbdoc", ".prjpcb", ".schdoc"]
+
},
+
"angelscript": {
+
"color": "#c7d7dc",
+
"extensions": [".as", ".angelscript"]
+
},
+
"answersetprogramming": {
+
"color": "#a9cc29",
+
"extensions": [".lp"]
+
},
+
"antbuildsystem": {
+
"color": "#a9157e",
+
"filenames": ["ant.xml", "build.xml"]
+
},
+
"antlers": {
+
"color": "#ff269e",
+
"extensions": [".antlers.html", ".antlers.php", ".antlers.xml"]
+
},
+
"apacheconf": {
+
"color": "#d12127",
+
"extensions": [".apacheconf", ".vhost"],
+
"filenames": [".htaccess", "apache2.conf", "httpd.conf"]
+
},
+
"apex": {
+
"color": "#1797c0",
+
"extensions": [".cls", ".apex", ".trigger"]
+
},
+
"apolloguidancecomputer": {
+
"color": "#0b3d91",
+
"extensions": [".agc"]
+
},
+
"applescript": {
+
"extensions": [".applescript", ".scpt"],
+
"color": "#101f1f"
+
},
+
"arc": {
+
"color": "#aa2afe",
+
"extensions": [".arc"]
+
},
+
"arkts": {
+
"color": "#0080ff",
+
"extensions": [".ets"]
+
},
+
"asciidoc": {
+
"color": "#73a0c5",
+
"extensions": [".asciidoc", ".adoc", ".asc"]
+
},
+
"aspectj": {
+
"color": "#a957b0",
+
"extensions": [".aj"]
+
},
+
"assembly": {
+
"color": "#6e4c13",
+
"extensions": [".asm", ".a51", ".i", ".inc", ".nas", ".nasm", ".s"]
+
},
+
"astro": {
+
"color": "#ff5a03",
+
"extensions": [".astro"]
+
},
+
"asymptote": {
+
"color": "#ff0000",
+
"extensions": [".asy"]
+
},
+
"augeas": {
+
"color": "#9cc134",
+
"extensions": [".aug"]
+
},
+
"autohotkey": {
+
"color": "#6594b9",
+
"extensions": [".ahk", ".ahkl"]
+
},
+
"autoit": {
+
"color": "#1c3552",
+
"extensions": [".au3"]
+
},
+
"avroidl": {
+
"color": "#0040ff",
+
"extensions": [".avdl"]
+
},
+
"awk": {
+
"color": "#c30e9b",
+
"extensions": [".awk", ".auk", ".gawk", ".mawk", ".nawk"]
+
},
+
"b4x": {
+
"color": "#00e4ff",
+
"extensions": [".bas"]
+
},
+
"basic": {
+
"extensions": [".bas"],
+
"color": "#ff0000"
+
},
+
"bqn": {
+
"color": "#2b7067",
+
"extensions": [".bqn"]
+
},
+
"ballerina": {
+
"extensions": [".bal"],
+
"color": "#ff5000"
+
},
+
"batchfile": {
+
"extensions": [".bat", ".cmd"],
+
"filenames": ["gradlew.bat", "mvnw.cmd"],
+
"color": "#c1f12e"
+
},
+
"beef": {
+
"color": "#a52f4e",
+
"extensions": [".bf"]
+
},
+
"befunge": {
+
"extensions": [".befunge", ".bf"]
+
},
+
"berry": {
+
"extensions": [".be"],
+
"color": "#15a13c"
+
},
+
"bibtex": {
+
"color": "#778899",
+
"extensions": [".bib", ".bibtex"]
+
},
+
"bibtexstyle": {
+
"extensions": [".bst"]
+
},
+
"bicep": {
+
"color": "#519aba",
+
"extensions": [".bicep", ".bicepparam"]
+
},
+
"bikeshed": {
+
"color": "#5562ac",
+
"extensions": [".bs"]
+
},
+
"bison": {
+
"color": "#6a463f",
+
"extensions": [".bison"]
+
},
+
"bitbake": {
+
"color": "#00bce4",
+
"extensions": [".bb", ".bbappend", ".bbclass", ".inc"]
+
},
+
"blade": {
+
"color": "#f7523f",
+
"extensions": [".blade", ".blade.php"]
+
},
+
"blitzbasic": {
+
"color": "#00ffae",
+
"extensions": [".bb", ".decls"]
+
},
+
"blitzmax": {
+
"color": "#cd6400",
+
"extensions": [".bmx"]
+
},
+
"bluespec": {
+
"color": "#12223c",
+
"extensions": [".bsv"]
+
},
+
"bluespecbh": {
+
"color": "#12223c",
+
"extensions": [".bs"]
+
},
+
"boo": {
+
"color": "#d4bec1",
+
"extensions": [".boo"]
+
},
+
"boogie": {
+
"color": "#c80fa0",
+
"extensions": [".bpl"]
+
},
+
"brainfuck": {
+
"color": "#2f2530",
+
"extensions": [".b", ".bf"]
+
},
+
"brighterscript": {
+
"color": "#66aabb",
+
"extensions": [".bs"]
+
},
+
"brightscript": {
+
"color": "#662d91",
+
"extensions": [".brs"]
+
},
+
"browserslist": {
+
"color": "#ffd539",
+
"filenames": [".browserslistrc", "browserslist"]
+
},
+
"bru": {
+
"color": "#f4aa41",
+
"extensions": [".bru"]
+
},
+
"buildstream": {
+
"color": "#006bff",
+
"extensions": [".bst"]
+
},
+
"c": {
+
"color": "#555555",
+
"extensions": [".c", ".cats", ".h", ".h.in", ".idc"]
+
},
+
"c#": {
+
"color": "#178600",
+
"extensions": [".cs", ".cake", ".cs.pp", ".csx", ".linq"]
+
},
+
"c++": {
+
"color": "#f34b7d",
+
"extensions": [
+
".cpp",
+
".c++",
+
".cc",
+
".cp",
+
".cppm",
+
".cxx",
+
".h",
+
".h++",
+
".hh",
+
".hpp",
+
".hxx",
+
".inc",
+
".inl",
+
".ino",
+
".ipp",
+
".ixx",
+
".re",
+
".tcc",
+
".tpp",
+
".txx"
+
]
+
},
+
"c-objdump": {
+
"extensions": [".c-objdump"]
+
},
+
"c2hshaskell": {
+
"extensions": [".chs"]
+
},
+
"c3": {
+
"color": "#2563eb",
+
"extensions": [".c3"]
+
},
+
"capcds": {
+
"color": "#0092d1",
+
"extensions": [".cds"]
+
},
+
"cil": {
+
"extensions": [".cil"]
+
},
+
"clips": {
+
"color": "#00a300",
+
"extensions": [".clp"]
+
},
+
"cmake": {
+
"color": "#da3434",
+
"extensions": [".cmake", ".cmake.in"],
+
"filenames": ["cmakelists.txt"]
+
},
+
"cobol": {
+
"extensions": [".cob", ".cbl", ".ccp", ".cobol", ".cpy"]
+
},
+
"codeowners": {
+
"filenames": ["codeowners"]
+
},
+
"collada": {
+
"color": "#f1a42b",
+
"extensions": [".dae"]
+
},
+
"cson": {
+
"color": "#244776",
+
"extensions": [".cson"]
+
},
+
"css": {
+
"color": "#663399",
+
"extensions": [".css"]
+
},
+
"csv": {
+
"color": "#237346",
+
"extensions": [".csv"]
+
},
+
"cue": {
+
"extensions": [".cue"],
+
"color": "#5886e1"
+
},
+
"cweb": {
+
"color": "#00007a",
+
"extensions": [".w"]
+
},
+
"cabalconfig": {
+
"color": "#483465",
+
"extensions": [".cabal"],
+
"filenames": ["cabal.config", "cabal.project"]
+
},
+
"caddyfile": {
+
"color": "#22b638",
+
"extensions": [".caddyfile"],
+
"filenames": ["caddyfile"]
+
},
+
"cadence": {
+
"color": "#00ef8b",
+
"extensions": [".cdc"]
+
},
+
"cairo": {
+
"color": "#ff4a48",
+
"extensions": [".cairo"]
+
},
+
"cairozero": {
+
"color": "#ff4a48",
+
"extensions": [".cairo"]
+
},
+
"cameligo": {
+
"color": "#3be133",
+
"extensions": [".mligo"]
+
},
+
"cangjie": {
+
"extensions": [".cj"],
+
"color": "#00868b"
+
},
+
"cap'nproto": {
+
"color": "#c42727",
+
"extensions": [".capnp"]
+
},
+
"carbon": {
+
"color": "#222222",
+
"extensions": [".carbon"]
+
},
+
"cartocss": {
+
"extensions": [".mss"]
+
},
+
"ceylon": {
+
"color": "#dfa535",
+
"extensions": [".ceylon"]
+
},
+
"chapel": {
+
"color": "#8dc63f",
+
"extensions": [".chpl"]
+
},
+
"charity": {
+
"extensions": [".ch"]
+
},
+
"checksums": {
+
"filenames": [
+
"md5sums",
+
"sha1sums",
+
"sha256sums",
+
"sha256sums.txt",
+
"sha512sums",
+
"checksums.txt",
+
"cksums",
+
"md5sum.txt"
+
],
+
"extensions": [
+
".crc32",
+
".md2",
+
".md4",
+
".md5",
+
".sha1",
+
".sha2",
+
".sha224",
+
".sha256",
+
".sha256sum",
+
".sha3",
+
".sha384",
+
".sha512"
+
]
+
},
+
"chuck": {
+
"color": "#3f8000",
+
"extensions": [".ck"]
+
},
+
"circom": {
+
"extensions": [".circom"],
+
"color": "#707575"
+
},
+
"cirru": {
+
"color": "#ccccff",
+
"extensions": [".cirru"]
+
},
+
"clarion": {
+
"color": "#db901e",
+
"extensions": [".clw"]
+
},
+
"clarity": {
+
"color": "#5546ff",
+
"extensions": [".clar"]
+
},
+
"classicasp": {
+
"color": "#6a40fd",
+
"extensions": [".asp"]
+
},
+
"clean": {
+
"color": "#3f85af",
+
"extensions": [".icl", ".dcl"]
+
},
+
"click": {
+
"color": "#e4e6f3",
+
"extensions": [".click"]
+
},
+
"clojure": {
+
"color": "#db5855",
+
"extensions": [
+
".clj",
+
".bb",
+
".boot",
+
".cl2",
+
".cljc",
+
".cljs",
+
".cljs.hl",
+
".cljscm",
+
".cljx",
+
".hic"
+
],
+
"filenames": ["riemann.config"]
+
},
+
"closuretemplates": {
+
"color": "#0d948f",
+
"extensions": [".soy"]
+
},
+
"cloudfirestoresecurityrules": {
+
"color": "#ffa000",
+
"filenames": ["firestore.rules"]
+
},
+
"clue": {
+
"color": "#0009b5",
+
"extensions": [".clue"]
+
},
+
"conll-u": {
+
"extensions": [".conllu", ".conll"]
+
},
+
"codeql": {
+
"color": "#140f46",
+
"extensions": [".ql", ".qll"]
+
},
+
"coffeescript": {
+
"color": "#244776",
+
"extensions": [".coffee", "._coffee", ".cake", ".cjsx", ".iced"],
+
"filenames": ["cakefile"]
+
},
+
"coldfusion": {
+
"color": "#ed2cd6",
+
"extensions": [".cfm", ".cfml"]
+
},
+
"coldfusioncfc": {
+
"color": "#ed2cd6",
+
"extensions": [".cfc"]
+
},
+
"commonlisp": {
+
"color": "#3fb68b",
+
"extensions": [
+
".lisp",
+
".asd",
+
".cl",
+
".l",
+
".lsp",
+
".ny",
+
".podsl",
+
".sexp"
+
]
+
},
+
"commonworkflowlanguage": {
+
"extensions": [".cwl"],
+
"color": "#b5314c"
+
},
+
"componentpascal": {
+
"color": "#b0ce4e",
+
"extensions": [".cp", ".cps"]
+
},
+
"cooklang": {
+
"color": "#e15a29",
+
"extensions": [".cook"]
+
},
+
"cool": {
+
"extensions": [".cl"]
+
},
+
"cpp-objdump": {
+
"extensions": [
+
".cppobjdump",
+
".c++-objdump",
+
".c++objdump",
+
".cpp-objdump",
+
".cxx-objdump"
+
]
+
},
+
"creole": {
+
"extensions": [".creole"]
+
},
+
"crystal": {
+
"color": "#000100",
+
"extensions": [".cr"]
+
},
+
"csound": {
+
"color": "#1a1a1a",
+
"extensions": [".orc", ".udo"]
+
},
+
"csounddocument": {
+
"color": "#1a1a1a",
+
"extensions": [".csd"]
+
},
+
"csoundscore": {
+
"color": "#1a1a1a",
+
"extensions": [".sco"]
+
},
+
"cuda": {
+
"extensions": [".cu", ".cuh"],
+
"color": "#3a4e3a"
+
},
+
"cuesheet": {
+
"extensions": [".cue"]
+
},
+
"curry": {
+
"color": "#531242",
+
"extensions": [".curry"]
+
},
+
"cycript": {
+
"extensions": [".cy"]
+
},
+
"cylc": {
+
"color": "#00b3fd",
+
"extensions": [".cylc"],
+
"filenames": ["suite.rc"]
+
},
+
"cypher": {
+
"color": "#34c0eb",
+
"extensions": [".cyp", ".cypher"]
+
},
+
"cython": {
+
"color": "#fedf5b",
+
"extensions": [".pyx", ".pxd", ".pxi"]
+
},
+
"d": {
+
"color": "#ba595e",
+
"extensions": [".d", ".di"]
+
},
+
"d-objdump": {
+
"extensions": [".d-objdump"]
+
},
+
"d2": {
+
"color": "#526ee8",
+
"extensions": [".d2"]
+
},
+
"digitalcommandlanguage": {
+
"extensions": [".com"]
+
},
+
"dm": {
+
"color": "#447265",
+
"extensions": [".dm"]
+
},
+
"dnszone": {
+
"extensions": [".zone", ".arpa"]
+
},
+
"dtrace": {
+
"extensions": [".d"]
+
},
+
"dafny": {
+
"color": "#ffec25",
+
"extensions": [".dfy"]
+
},
+
"darcspatch": {
+
"color": "#8eff23",
+
"extensions": [".darcspatch", ".dpatch"]
+
},
+
"dart": {
+
"color": "#00b4ab",
+
"extensions": [".dart"]
+
},
+
"daslang": {
+
"color": "#d3d3d3",
+
"extensions": [".das"]
+
},
+
"dataweave": {
+
"color": "#003a52",
+
"extensions": [".dwl"]
+
},
+
"debianpackagecontrolfile": {
+
"color": "#d70751",
+
"extensions": [".dsc"]
+
},
+
"denizenscript": {
+
"color": "#fbee96",
+
"extensions": [".dsc"]
+
},
+
"dhall": {
+
"color": "#dfafff",
+
"extensions": [".dhall"]
+
},
+
"diff": {
+
"extensions": [".diff", ".patch"]
+
},
+
"directx 3dfile": {
+
"color": "#aace60",
+
"extensions": [".x"]
+
},
+
"dockerfile": {
+
"color": "#384d54",
+
"extensions": [".dockerfile", ".containerfile"],
+
"filenames": ["containerfile", "dockerfile"]
+
},
+
"dogescript": {
+
"color": "#cca760",
+
"extensions": [".djs"]
+
},
+
"dotenv": {
+
"color": "#e5d559",
+
"extensions": [".env"],
+
"filenames": [
+
".env",
+
".env.ci",
+
".env.dev",
+
".env.development",
+
".env.development.local",
+
".env.example",
+
".env.local",
+
".env.prod",
+
".env.production",
+
".env.sample",
+
".env.staging",
+
".env.template",
+
".env.test",
+
".env.testing"
+
]
+
},
+
"dune": {
+
"filenames": ["dune-project"],
+
"color": "#89421e"
+
},
+
"dylan": {
+
"color": "#6c616e",
+
"extensions": [".dylan", ".dyl", ".intr", ".lid"]
+
},
+
"e": {
+
"color": "#ccce35",
+
"extensions": [".e"]
+
},
+
"e-mail": {
+
"extensions": [".eml", ".mbox"]
+
},
+
"ebnf": {
+
"extensions": [".ebnf"]
+
},
+
"ecl": {
+
"color": "#8a1267",
+
"extensions": [".ecl", ".eclxml"]
+
},
+
"eclipse": {
+
"color": "#001d9d",
+
"extensions": [".ecl"]
+
},
+
"ejs": {
+
"color": "#a91e50",
+
"extensions": [".ejs", ".ect", ".ejs.t", ".jst"]
+
},
+
"eq": {
+
"color": "#a78649",
+
"extensions": [".eq"]
+
},
+
"eagle": {
+
"extensions": [".sch", ".brd"]
+
},
+
"earthly": {
+
"color": "#2af0ff",
+
"filenames": ["earthfile"]
+
},
+
"easybuild": {
+
"color": "#069406",
+
"extensions": [".eb"]
+
},
+
"ecereprojects": {
+
"color": "#913960",
+
"extensions": [".epj"]
+
},
+
"ecmarkup": {
+
"color": "#eb8131",
+
"extensions": [".html"]
+
},
+
"edge": {
+
"color": "#0dffe0",
+
"extensions": [".edge"]
+
},
+
"edgeql": {
+
"color": "#31a7ff",
+
"extensions": [".edgeql", ".esdl"]
+
},
+
"editorconfig": {
+
"color": "#fff1f2",
+
"extensions": [".editorconfig"],
+
"filenames": [".editorconfig"]
+
},
+
"edjedatacollection": {
+
"extensions": [".edc"]
+
},
+
"eiffel": {
+
"color": "#4d6977",
+
"extensions": [".e"]
+
},
+
"elixir": {
+
"color": "#6e4a7e",
+
"extensions": [".ex", ".exs"],
+
"filenames": ["mix.lock"]
+
},
+
"elm": {
+
"color": "#60b5cc",
+
"extensions": [".elm"]
+
},
+
"elvish": {
+
"extensions": [".elv"],
+
"color": "#55bb55"
+
},
+
"elvishtranscript": {
+
"color": "#55bb55"
+
},
+
"emacslisp": {
+
"color": "#c065db",
+
"filenames": [
+
".abbrev_defs",
+
".emacs",
+
".emacs.desktop",
+
".gnus",
+
".spacemacs",
+
".viper",
+
"cask",
+
"project.ede",
+
"_emacs",
+
"abbrev_defs"
+
],
+
"extensions": [".el", ".emacs", ".emacs.desktop"]
+
},
+
"emberscript": {
+
"color": "#fff4f3",
+
"extensions": [".em", ".emberscript"]
+
},
+
"erlang": {
+
"color": "#b83998",
+
"extensions": [
+
".erl",
+
".app",
+
".app.src",
+
".es",
+
".escript",
+
".hrl",
+
".xrl",
+
".yrl"
+
],
+
"filenames": [
+
"emakefile",
+
"rebar.config",
+
"rebar.config.lock",
+
"rebar.lock"
+
]
+
},
+
"euphoria": {
+
"color": "#ff790b",
+
"extensions": [".e", ".ex"]
+
},
+
"f#": {
+
"color": "#b845fc",
+
"extensions": [".fs", ".fsi", ".fsx"]
+
},
+
"f*": {
+
"fs_name": "fstar",
+
"color": "#572e30",
+
"extensions": [".fst", ".fsti"]
+
},
+
"figletfont": {
+
"color": "#ffddbb",
+
"extensions": [".flf"]
+
},
+
"firrtl": {
+
"color": "#2f632f",
+
"extensions": [".fir"]
+
},
+
"flux": {
+
"color": "#88ccff",
+
"extensions": [".fx", ".flux"]
+
},
+
"factor": {
+
"color": "#636746",
+
"extensions": [".factor"],
+
"filenames": [".factor-boot-rc", ".factor-rc"]
+
},
+
"fancy": {
+
"color": "#7b9db4",
+
"extensions": [".fy", ".fancypack"],
+
"filenames": ["fakefile"]
+
},
+
"fantom": {
+
"color": "#14253c",
+
"extensions": [".fan"]
+
},
+
"faust": {
+
"color": "#c37240",
+
"extensions": [".dsp"]
+
},
+
"fennel": {
+
"color": "#fff3d7",
+
"extensions": [".fnl"]
+
},
+
"filebenchwml": {
+
"color": "#f6b900",
+
"extensions": [".f"]
+
},
+
"filterscript": {
+
"extensions": [".fs"]
+
},
+
"flix": {
+
"color": "#d44a45",
+
"extensions": [".flix"]
+
},
+
"fluent": {
+
"color": "#ffcc33",
+
"extensions": [".ftl"]
+
},
+
"formatted": {
+
"extensions": [".for", ".eam.fs"]
+
},
+
"forth": {
+
"color": "#341708",
+
"extensions": [".fth", ".4th", ".f", ".for", ".forth", ".fr", ".frt", ".fs"]
+
},
+
"fortran": {
+
"color": "#4d41b1",
+
"extensions": [".f", ".f77", ".for", ".fpp"]
+
},
+
"fortranfreeform": {
+
"color": "#4d41b1",
+
"extensions": [".f90", ".f03", ".f08", ".f95"]
+
},
+
"freebasic": {
+
"color": "#141ac9",
+
"extensions": [".bi", ".bas"]
+
},
+
"freemarker": {
+
"color": "#0050b2",
+
"extensions": [".ftl", ".ftlh"]
+
},
+
"frege": {
+
"color": "#00cafe",
+
"extensions": [".fr"]
+
},
+
"futhark": {
+
"color": "#5f021f",
+
"extensions": [".fut"]
+
},
+
"g-code": {
+
"color": "#d08cf2",
+
"extensions": [".g", ".cnc", ".gco", ".gcode"]
+
},
+
"gaml": {
+
"color": "#ffc766",
+
"extensions": [".gaml"]
+
},
+
"gams": {
+
"color": "#f49a22",
+
"extensions": [".gms"]
+
},
+
"gap": {
+
"color": "#0000cc",
+
"extensions": [".g", ".gap", ".gd", ".gi", ".tst"]
+
},
+
"gccmachinedescription": {
+
"color": "#ffcfab",
+
"extensions": [".md"]
+
},
+
"gdb": {
+
"extensions": [".gdb", ".gdbinit"]
+
},
+
"gdscript": {
+
"color": "#355570",
+
"extensions": [".gd"]
+
},
+
"gdshader": {
+
"color": "#478cbf",
+
"extensions": [".gdshader", ".gdshaderinc"]
+
},
+
"gedcom": {
+
"color": "#003058",
+
"extensions": [".ged"]
+
},
+
"glsl": {
+
"color": "#5686a5",
+
"extensions": [
+
".glsl",
+
".fp",
+
".frag",
+
".frg",
+
".fs",
+
".fsh",
+
".fshader",
+
".geo",
+
".geom",
+
".glslf",
+
".glslv",
+
".gs",
+
".gshader",
+
".rchit",
+
".rmiss",
+
".shader",
+
".tesc",
+
".tese",
+
".vert",
+
".vrx",
+
".vs",
+
".vsh",
+
".vshader"
+
]
+
},
+
"gn": {
+
"extensions": [".gn", ".gni"],
+
"filenames": [".gn"]
+
},
+
"gsc": {
+
"color": "#ff6800",
+
"extensions": [".gsc", ".csc", ".gsh"]
+
},
+
"gamemakerlanguage": {
+
"color": "#71b417",
+
"extensions": [".gml"]
+
},
+
"gemfile.lock": {
+
"color": "#701516",
+
"filenames": ["gemfile.lock"]
+
},
+
"gemini": {
+
"color": "#ff6900",
+
"extensions": [".gmi"]
+
},
+
"genero 4gl": {
+
"color": "#63408e",
+
"extensions": [".4gl"]
+
},
+
"generoper": {
+
"color": "#d8df39",
+
"extensions": [".per"]
+
},
+
"genie": {
+
"extensions": [".gs"],
+
"color": "#fb855d"
+
},
+
"genshi": {
+
"color": "#951531",
+
"extensions": [".kid"]
+
},
+
"gentooebuild": {
+
"color": "#9400ff",
+
"extensions": [".ebuild"]
+
},
+
"gentooeclass": {
+
"color": "#9400ff",
+
"extensions": [".eclass"]
+
},
+
"gerberimage": {
+
"color": "#d20b00",
+
"extensions": [
+
".gbr",
+
".cmp",
+
".gbl",
+
".gbo",
+
".gbp",
+
".gbs",
+
".gko",
+
".gml",
+
".gpb",
+
".gpt",
+
".gtl",
+
".gto",
+
".gtp",
+
".gts",
+
".ncl",
+
".sol"
+
]
+
},
+
"gettextcatalog": {
+
"extensions": [".po", ".pot"]
+
},
+
"gherkin": {
+
"extensions": [".feature", ".story"],
+
"color": "#5b2063"
+
},
+
"gitattributes": {
+
"color": "#f44d27",
+
"filenames": [".gitattributes"]
+
},
+
"gitcommit": {
+
"color": "#f44d27",
+
"filenames": ["commit_editmsg"]
+
},
+
"gitconfig": {
+
"color": "#f44d27",
+
"extensions": [".gitconfig"],
+
"filenames": [".gitconfig", ".gitmodules"]
+
},
+
"gitrevisionlist": {
+
"color": "#f44d27",
+
"filenames": [".git-blame-ignore-revs"]
+
},
+
"gleam": {
+
"color": "#ffaff3",
+
"extensions": [".gleam"]
+
},
+
"glimmerjs": {
+
"extensions": [".gjs"],
+
"color": "#f5835f"
+
},
+
"glimmerts": {
+
"extensions": [".gts"],
+
"color": "#3178c6"
+
},
+
"glyph": {
+
"color": "#c1ac7f",
+
"extensions": [".glf"]
+
},
+
"glyphbitmapdistributionformat": {
+
"extensions": [".bdf"]
+
},
+
"gnuplot": {
+
"color": "#f0a9f0",
+
"extensions": [".gp", ".gnu", ".gnuplot", ".p", ".plot", ".plt"]
+
},
+
"go": {
+
"color": "#00add8",
+
"extensions": [".go"]
+
},
+
"gochecksums": {
+
"color": "#00add8",
+
"filenames": ["go.sum", "go.work.sum"]
+
},
+
"gomodule": {
+
"color": "#00add8",
+
"filenames": ["go.mod"]
+
},
+
"goworkspace": {
+
"color": "#00add8",
+
"filenames": ["go.work"]
+
},
+
"godotresource": {
+
"color": "#355570",
+
"extensions": [".gdnlib", ".gdns", ".tres", ".tscn"],
+
"filenames": ["project.godot"]
+
},
+
"golo": {
+
"color": "#88562a",
+
"extensions": [".golo"]
+
},
+
"gosu": {
+
"color": "#82937f",
+
"extensions": [".gs", ".gst", ".gsx", ".vark"]
+
},
+
"grace": {
+
"color": "#615f8b",
+
"extensions": [".grace"]
+
},
+
"gradle": {
+
"color": "#02303a",
+
"extensions": [".gradle"]
+
},
+
"gradlekotlindsl": {
+
"color": "#02303a",
+
"extensions": [".gradle.kts"]
+
},
+
"grammaticalframework": {
+
"extensions": [".gf"],
+
"color": "#ff0000"
+
},
+
"graphmodelinglanguage": {
+
"extensions": [".gml"]
+
},
+
"graphql": {
+
"color": "#e10098",
+
"extensions": [".graphql", ".gql", ".graphqls"]
+
},
+
"graphviz (dot)": {
+
"color": "#2596be",
+
"extensions": [".dot", ".gv"]
+
},
+
"groovy": {
+
"color": "#4298b8",
+
"extensions": [".groovy", ".grt", ".gtpl", ".gvy"],
+
"filenames": ["jenkinsfile"]
+
},
+
"groovyserverpages": {
+
"color": "#4298b8",
+
"extensions": [".gsp"]
+
},
+
"haproxy": {
+
"color": "#106da9",
+
"extensions": [".cfg"],
+
"filenames": ["haproxy.cfg"]
+
},
+
"hcl": {
+
"color": "#844fba",
+
"extensions": [".hcl", ".nomad", ".tf", ".tfvars", ".workflow"]
+
},
+
"hip": {
+
"color": "#4f3a4f",
+
"extensions": [".hip"]
+
},
+
"hlsl": {
+
"color": "#aace60",
+
"extensions": [".hlsl", ".cginc", ".fx", ".fxh", ".hlsli"]
+
},
+
"hocon": {
+
"color": "#9ff8ee",
+
"extensions": [".hocon"],
+
"filenames": [".scalafix.conf", ".scalafmt.conf"]
+
},
+
"html": {
+
"color": "#e34c26",
+
"extensions": [
+
".html",
+
".hta",
+
".htm",
+
".html.hl",
+
".inc",
+
".xht",
+
".xhtml"
+
]
+
},
+
"html+ecr": {
+
"color": "#2e1052",
+
"extensions": [".ecr"]
+
},
+
"html+eex": {
+
"color": "#6e4a7e",
+
"extensions": [".html.eex", ".heex", ".leex"]
+
},
+
"html+erb": {
+
"color": "#701516",
+
"extensions": [".erb", ".erb.deface", ".rhtml"]
+
},
+
"html+php": {
+
"color": "#4f5d95",
+
"extensions": [".phtml"]
+
},
+
"html+razor": {
+
"color": "#512be4",
+
"extensions": [".cshtml", ".razor"]
+
},
+
"http": {
+
"color": "#005c9c",
+
"extensions": [".http"]
+
},
+
"hxml": {
+
"color": "#f68712",
+
"extensions": [".hxml"]
+
},
+
"hack": {
+
"extensions": [".hack", ".hh", ".hhi", ".php"],
+
"color": "#878787"
+
},
+
"haml": {
+
"color": "#ece2a9",
+
"extensions": [".haml", ".haml.deface"]
+
},
+
"handlebars": {
+
"color": "#f7931e",
+
"extensions": [".handlebars", ".hbs"]
+
},
+
"harbour": {
+
"color": "#0e60e3",
+
"extensions": [".hb"]
+
},
+
"hare": {
+
"color": "#9d7424",
+
"extensions": [".ha"]
+
},
+
"haskell": {
+
"color": "#5e5086",
+
"extensions": [".hs", ".hs-boot", ".hsc"]
+
},
+
"haxe": {
+
"color": "#df7900",
+
"extensions": [".hx", ".hxsl"]
+
},
+
"hiveql": {
+
"extensions": [".q", ".hql"],
+
"color": "#dce200"
+
},
+
"holyc": {
+
"color": "#ffefaf",
+
"extensions": [".hc"]
+
},
+
"hostsfile": {
+
"color": "#308888",
+
"filenames": ["hosts", "hosts", "hosts.txt"]
+
},
+
"hurl": {
+
"color": "#ff0288",
+
"extensions": [".hurl"]
+
},
+
"hy": {
+
"color": "#7790b2",
+
"extensions": [".hy"]
+
},
+
"hyphy": {
+
"extensions": [".bf"]
+
},
+
"idl": {
+
"color": "#a3522f",
+
"extensions": [".pro", ".dlm"]
+
},
+
"igorpro": {
+
"color": "#0000cc",
+
"extensions": [".ipf"]
+
},
+
"ini": {
+
"color": "#d1dbe0",
+
"extensions": [
+
".ini",
+
".cfg",
+
".cnf",
+
".dof",
+
".frm",
+
".lektorproject",
+
".prefs",
+
".pro",
+
".properties",
+
".url"
+
],
+
"filenames": [
+
".buckconfig",
+
".coveragerc",
+
".flake8",
+
".pylintrc",
+
"hosts",
+
"buildozer.spec",
+
"hosts",
+
"pylintrc",
+
"vlcrc"
+
]
+
},
+
"irclog": {
+
"extensions": [".irclog", ".weechatlog"]
+
},
+
"ispc": {
+
"color": "#2d68b1",
+
"extensions": [".ispc"]
+
},
+
"idris": {
+
"color": "#b30000",
+
"extensions": [".idr", ".lidr"]
+
},
+
"ignorelist": {
+
"color": "#000000",
+
"extensions": [".gitignore"],
+
"filenames": [
+
".atomignore",
+
".babelignore",
+
".bzrignore",
+
".coffeelintignore",
+
".cvsignore",
+
".dockerignore",
+
".easignore",
+
".eleventyignore",
+
".eslintignore",
+
".gitignore",
+
".ignore",
+
".markdownlintignore",
+
".nodemonignore",
+
".npmignore",
+
".prettierignore",
+
".stylelintignore",
+
".vercelignore",
+
".vscodeignore",
+
"gitignore-global",
+
"gitignore_global"
+
]
+
},
+
"imagejmacro": {
+
"color": "#99aaff",
+
"extensions": [".ijm"]
+
},
+
"imba": {
+
"color": "#16cec6",
+
"extensions": [".imba"]
+
},
+
"inform 7": {
+
"extensions": [".ni", ".i7x"]
+
},
+
"ink": {
+
"extensions": [".ink"]
+
},
+
"innosetup": {
+
"color": "#264b99",
+
"extensions": [".iss", ".isl"]
+
},
+
"io": {
+
"color": "#a9188d",
+
"extensions": [".io"]
+
},
+
"ioke": {
+
"color": "#078193",
+
"extensions": [".ik"]
+
},
+
"isabelle": {
+
"color": "#fefe00",
+
"extensions": [".thy"]
+
},
+
"isabelleroot": {
+
"color": "#fefe00",
+
"filenames": ["root"]
+
},
+
"j": {
+
"color": "#9eedff",
+
"extensions": [".ijs"]
+
},
+
"jarmanifest": {
+
"color": "#b07219",
+
"filenames": ["manifest.mf"]
+
},
+
"jcl": {
+
"color": "#d90e09",
+
"extensions": [".jcl"]
+
},
+
"jflex": {
+
"color": "#dbca00",
+
"extensions": [".flex", ".jflex"]
+
},
+
"json": {
+
"color": "#292929",
+
"extensions": [
+
".json",
+
".4dform",
+
".4dproject",
+
".avsc",
+
".geojson",
+
".gltf",
+
".har",
+
".ice",
+
".json-tmlanguage",
+
".json.example",
+
".jsonl",
+
".mcmeta",
+
".sarif",
+
".tact",
+
".tfstate",
+
".tfstate.backup",
+
".topojson",
+
".webapp",
+
".webmanifest",
+
".yy",
+
".yyp"
+
],
+
"filenames": [
+
".all-contributorsrc",
+
".arcconfig",
+
".auto-changelog",
+
".c8rc",
+
".htmlhintrc",
+
".imgbotconfig",
+
".nycrc",
+
".tern-config",
+
".tern-project",
+
".watchmanconfig",
+
"module.bazel.lock",
+
"package.resolved",
+
"pipfile.lock",
+
"bun.lock",
+
"composer.lock",
+
"deno.lock",
+
"flake.lock",
+
"mcmod.info"
+
]
+
},
+
"jsonwithcomments": {
+
"color": "#292929",
+
"extensions": [
+
".jsonc",
+
".code-snippets",
+
".code-workspace",
+
".sublime-build",
+
".sublime-color-scheme",
+
".sublime-commands",
+
".sublime-completions",
+
".sublime-keymap",
+
".sublime-macro",
+
".sublime-menu",
+
".sublime-mousemap",
+
".sublime-project",
+
".sublime-settings",
+
".sublime-theme",
+
".sublime-workspace",
+
".sublime_metrics",
+
".sublime_session"
+
],
+
"filenames": [
+
".babelrc",
+
".devcontainer.json",
+
".eslintrc.json",
+
".jscsrc",
+
".jshintrc",
+
".jslintrc",
+
".swcrc",
+
"api-extractor.json",
+
"devcontainer.json",
+
"jsconfig.json",
+
"language-configuration.json",
+
"tsconfig.json",
+
"tslint.json"
+
]
+
},
+
"json5": {
+
"color": "#267cb9",
+
"extensions": [".json5"]
+
},
+
"jsonld": {
+
"color": "#0c479c",
+
"extensions": [".jsonld"]
+
},
+
"jsoniq": {
+
"color": "#40d47e",
+
"extensions": [".jq"]
+
},
+
"jai": {
+
"color": "#ab8b4b",
+
"extensions": [".jai"]
+
},
+
"janet": {
+
"color": "#0886a5",
+
"extensions": [".janet"]
+
},
+
"jasmin": {
+
"color": "#d03600",
+
"extensions": [".j"]
+
},
+
"java": {
+
"color": "#b07219",
+
"extensions": [".java", ".jav", ".jsh"]
+
},
+
"javaproperties": {
+
"color": "#2a6277",
+
"extensions": [".properties"]
+
},
+
"javaserverpages": {
+
"color": "#2a6277",
+
"extensions": [".jsp", ".tag"]
+
},
+
"javatemplateengine": {
+
"color": "#2a6277",
+
"extensions": [".jte"]
+
},
+
"javascript": {
+
"color": "#f1e05a",
+
"extensions": [
+
".js",
+
"._js",
+
".bones",
+
".cjs",
+
".es",
+
".es6",
+
".frag",
+
".gs",
+
".jake",
+
".javascript",
+
".jsb",
+
".jscad",
+
".jsfl",
+
".jslib",
+
".jsm",
+
".jspre",
+
".jss",
+
".jsx",
+
".mjs",
+
".njs",
+
".pac",
+
".sjs",
+
".ssjs",
+
".xsjs",
+
".xsjslib"
+
],
+
"filenames": ["jakefile"]
+
},
+
"javascript+erb": {
+
"color": "#f1e05a",
+
"extensions": [".js.erb"]
+
},
+
"jestsnapshot": {
+
"color": "#15c213",
+
"extensions": [".snap"]
+
},
+
"jetbrainsmps": {
+
"color": "#21d789",
+
"extensions": [".mps", ".mpl", ".msd"]
+
},
+
"jinja": {
+
"color": "#a52a22",
+
"extensions": [".jinja", ".j2", ".jinja2"]
+
},
+
"jison": {
+
"color": "#56b3cb",
+
"extensions": [".jison"]
+
},
+
"jisonlex": {
+
"color": "#56b3cb",
+
"extensions": [".jisonlex"]
+
},
+
"jolie": {
+
"extensions": [".ol", ".iol"],
+
"color": "#843179"
+
},
+
"jsonnet": {
+
"color": "#0064bd",
+
"extensions": [".jsonnet", ".libsonnet"]
+
},
+
"julia": {
+
"extensions": [".jl"],
+
"color": "#a270ba"
+
},
+
"juliarepl": {
+
"color": "#a270ba"
+
},
+
"jupyternotebook": {
+
"color": "#da5b0b",
+
"extensions": [".ipynb"],
+
"filenames": ["notebook"]
+
},
+
"just": {
+
"color": "#384d54",
+
"filenames": [
+
".justfile",
+
".justfile",
+
".justfile",
+
"justfile",
+
"justfile",
+
"justfile"
+
],
+
"extensions": [".just"]
+
},
+
"kdl": {
+
"color": "#ffb3b3",
+
"extensions": [".kdl"]
+
},
+
"krl": {
+
"color": "#28430a",
+
"extensions": [".krl"]
+
},
+
"kaitaistruct": {
+
"color": "#773b37",
+
"extensions": [".ksy"]
+
},
+
"kakounescript": {
+
"color": "#6f8042",
+
"extensions": [".kak"],
+
"filenames": ["kakrc"]
+
},
+
"kerboscript": {
+
"extensions": [".ks"],
+
"color": "#41adf0"
+
},
+
"kicadlayout": {
+
"color": "#2f4aab",
+
"extensions": [".kicad_pcb", ".kicad_mod", ".kicad_wks"],
+
"filenames": ["fp-lib-table"]
+
},
+
"kicadlegacylayout": {
+
"color": "#2f4aab",
+
"extensions": [".brd"]
+
},
+
"kicadschematic": {
+
"color": "#2f4aab",
+
"extensions": [".kicad_sch", ".kicad_sym", ".sch"]
+
},
+
"kickstart": {
+
"extensions": [".ks"]
+
},
+
"kit": {
+
"extensions": [".kit"]
+
},
+
"kolmafiaash": {
+
"color": "#b9d9b9",
+
"extensions": [".ash"]
+
},
+
"koka": {
+
"extensions": [".kk"],
+
"color": "#215166"
+
},
+
"kotlin": {
+
"color": "#a97bff",
+
"extensions": [".kt", ".ktm", ".kts"]
+
},
+
"kusto": {
+
"extensions": [".csl", ".kql"]
+
},
+
"lfe": {
+
"color": "#4c3023",
+
"extensions": [".lfe"]
+
},
+
"llvm": {
+
"extensions": [".ll"],
+
"color": "#185619"
+
},
+
"lolcode": {
+
"extensions": [".lol"],
+
"color": "#cc9900"
+
},
+
"lsl": {
+
"extensions": [".lsl", ".lslp"],
+
"color": "#3d9970"
+
},
+
"ltspicesymbol": {
+
"extensions": [".asy"]
+
},
+
"labview": {
+
"color": "#fede06",
+
"extensions": [".lvproj", ".lvclass", ".lvlib"]
+
},
+
"lark": {
+
"color": "#2980b9",
+
"extensions": [".lark"]
+
},
+
"lasso": {
+
"color": "#999999",
+
"extensions": [".lasso", ".las", ".lasso8", ".lasso9"]
+
},
+
"latte": {
+
"color": "#f2a542",
+
"extensions": [".latte"]
+
},
+
"lean": {
+
"extensions": [".lean", ".hlean"]
+
},
+
"lean 4": {
+
"extensions": [".lean"]
+
},
+
"leo": {
+
"color": "#c4ffc2",
+
"extensions": [".leo"]
+
},
+
"less": {
+
"color": "#1d365d",
+
"extensions": [".less"]
+
},
+
"lex": {
+
"color": "#dbca00",
+
"extensions": [".l", ".lex"],
+
"filenames": ["lexer.x", "lexer.x"]
+
},
+
"ligolang": {
+
"color": "#0e74ff",
+
"extensions": [".ligo"]
+
},
+
"lilypond": {
+
"color": "#9ccc7c",
+
"extensions": [".ly", ".ily"]
+
},
+
"limbo": {
+
"extensions": [".b", ".m"]
+
},
+
"linearprogramming": {
+
"extensions": [".lp"]
+
},
+
"linkerscript": {
+
"extensions": [".ld", ".lds", ".x"],
+
"filenames": ["ld.script"]
+
},
+
"linuxkernelmodule": {
+
"extensions": [".mod"]
+
},
+
"liquid": {
+
"color": "#67b8de",
+
"extensions": [".liquid"]
+
},
+
"literateagda": {
+
"color": "#315665",
+
"extensions": [".lagda"]
+
},
+
"literatecoffeescript": {
+
"color": "#244776",
+
"extensions": [".litcoffee", ".coffee.md"]
+
},
+
"literatehaskell": {
+
"color": "#5e5086",
+
"extensions": [".lhs"]
+
},
+
"livecodescript": {
+
"color": "#0c5ba5",
+
"extensions": [".livecodescript"]
+
},
+
"livescript": {
+
"color": "#499886",
+
"extensions": [".ls", "._ls"],
+
"filenames": ["slakefile"]
+
},
+
"logos": {
+
"extensions": [".xm", ".x", ".xi"]
+
},
+
"logtalk": {
+
"color": "#295b9a",
+
"extensions": [".lgt", ".logtalk"]
+
},
+
"lookml": {
+
"color": "#652b81",
+
"extensions": [".lkml", ".lookml"]
+
},
+
"loomscript": {
+
"extensions": [".ls"]
+
},
+
"lua": {
+
"color": "#000080",
+
"extensions": [
+
".lua",
+
".fcgi",
+
".nse",
+
".p8",
+
".pd_lua",
+
".rbxs",
+
".rockspec",
+
".wlua"
+
],
+
"filenames": [".luacheckrc"]
+
},
+
"luau": {
+
"color": "#00a2ff",
+
"extensions": [".luau"]
+
},
+
"m": {
+
"extensions": [".mumps", ".m"]
+
},
+
"m3u": {
+
"extensions": [".m3u", ".m3u8"],
+
"color": "#179c7d"
+
},
+
"m4": {
+
"extensions": [".m4", ".mc"]
+
},
+
"m4sugar": {
+
"extensions": [".m4"],
+
"filenames": ["configure.ac"]
+
},
+
"matlab": {
+
"color": "#e16737",
+
"extensions": [".matlab", ".m"]
+
},
+
"maxscript": {
+
"color": "#00a6a6",
+
"extensions": [".ms", ".mcr"]
+
},
+
"mdx": {
+
"color": "#fcb32c",
+
"extensions": [".mdx"]
+
},
+
"mlir": {
+
"color": "#5ec8db",
+
"extensions": [".mlir"]
+
},
+
"mql4": {
+
"color": "#62a8d6",
+
"extensions": [".mq4", ".mqh"]
+
},
+
"mql5": {
+
"color": "#4a76b8",
+
"extensions": [".mq5", ".mqh"]
+
},
+
"mtml": {
+
"color": "#b7e1f4",
+
"extensions": [".mtml"]
+
},
+
"muf": {
+
"extensions": [".muf", ".m"]
+
},
+
"macaulay2": {
+
"extensions": [".m2"],
+
"color": "#d8ffff"
+
},
+
"makefile": {
+
"color": "#427819",
+
"extensions": [".mak", ".d", ".make", ".makefile", ".mk", ".mkfile"],
+
"filenames": [
+
"bsdmakefile",
+
"gnumakefile",
+
"kbuild",
+
"makefile",
+
"makefile.am",
+
"makefile.boot",
+
"makefile.frag",
+
"makefile.in",
+
"makefile.inc",
+
"makefile.wat",
+
"makefile",
+
"makefile.sco",
+
"mkfile"
+
]
+
},
+
"mako": {
+
"color": "#7e858d",
+
"extensions": [".mako", ".mao"]
+
},
+
"markdown": {
+
"color": "#083fa1",
+
"extensions": [
+
".md",
+
".livemd",
+
".markdown",
+
".mdown",
+
".mdwn",
+
".mkd",
+
".mkdn",
+
".mkdown",
+
".ronn",
+
".scd",
+
".workbook"
+
],
+
"filenames": ["contents.lr"]
+
},
+
"marko": {
+
"color": "#42bff2",
+
"extensions": [".marko"]
+
},
+
"mask": {
+
"color": "#f97732",
+
"extensions": [".mask"]
+
},
+
"mavenpom": {
+
"filenames": ["pom.xml"]
+
},
+
"max": {
+
"color": "#c4a79c",
+
"extensions": [".maxpat", ".maxhelp", ".maxproj", ".mxt", ".pat"]
+
},
+
"mercury": {
+
"color": "#ff2b2b",
+
"extensions": [".m", ".moo"]
+
},
+
"mermaid": {
+
"color": "#ff3670",
+
"extensions": [".mmd", ".mermaid"]
+
},
+
"meson": {
+
"color": "#007800",
+
"filenames": ["meson.build", "meson_options.txt"]
+
},
+
"metal": {
+
"color": "#8f14e9",
+
"extensions": [".metal"]
+
},
+
"microsoftdeveloperstudioproject": {
+
"extensions": [".dsp"]
+
},
+
"microsoftvisualstudiosolution": {
+
"extensions": [".sln"]
+
},
+
"minid": {
+
"extensions": [".minid"]
+
},
+
"miniyaml": {
+
"color": "#ff1111",
+
"extensions": [".yaml", ".yml"]
+
},
+
"minizinc": {
+
"color": "#06a9e6",
+
"extensions": [".mzn"]
+
},
+
"minizincdata": {
+
"extensions": [".dzn"]
+
},
+
"mint": {
+
"extensions": [".mint"],
+
"color": "#02b046"
+
},
+
"mirah": {
+
"color": "#c7a938",
+
"extensions": [".druby", ".duby", ".mirah"]
+
},
+
"modelica": {
+
"color": "#de1d31",
+
"extensions": [".mo"]
+
},
+
"modula-2": {
+
"color": "#10253f",
+
"extensions": [".mod"]
+
},
+
"modula-3": {
+
"extensions": [".i3", ".ig", ".m3", ".mg"],
+
"color": "#223388"
+
},
+
"modulemanagementsystem": {
+
"extensions": [".mms", ".mmk"],
+
"filenames": ["descrip.mmk", "descrip.mms"]
+
},
+
"mojo": {
+
"color": "#ff4c1f",
+
"extensions": [".mojo"]
+
},
+
"monkey": {
+
"extensions": [".monkey", ".monkey2"]
+
},
+
"monkeyc": {
+
"color": "#8d6747",
+
"extensions": [".mc"]
+
},
+
"moocode": {
+
"extensions": [".moo"]
+
},
+
"moonbit": {
+
"color": "#b92381",
+
"extensions": [".mbt"]
+
},
+
"moonscript": {
+
"color": "#ff4585",
+
"extensions": [".moon"]
+
},
+
"motoko": {
+
"color": "#fbb03b",
+
"extensions": [".mo"]
+
},
+
"motorola 68kassembly": {
+
"color": "#005daa",
+
"extensions": [".asm", ".i", ".inc", ".s", ".x68"]
+
},
+
"move": {
+
"color": "#4a137a",
+
"extensions": [".move"]
+
},
+
"muse": {
+
"extensions": [".muse"]
+
},
+
"mustache": {
+
"color": "#724b3b",
+
"extensions": [".mustache"]
+
},
+
"myghty": {
+
"extensions": [".myt"]
+
},
+
"nasl": {
+
"extensions": [".nasl", ".inc"]
+
},
+
"ncl": {
+
"color": "#28431f",
+
"extensions": [".ncl"]
+
},
+
"neon": {
+
"extensions": [".neon"]
+
},
+
"nl": {
+
"extensions": [".nl"]
+
},
+
"nmodl": {
+
"color": "#00356b",
+
"extensions": [".mod"]
+
},
+
"npmconfig": {
+
"color": "#cb3837",
+
"filenames": [".npmrc"]
+
},
+
"nsis": {
+
"extensions": [".nsi", ".nsh"]
+
},
+
"nwscript": {
+
"color": "#111522",
+
"extensions": [".nss"]
+
},
+
"nasal": {
+
"color": "#1d2c4e",
+
"extensions": [".nas"]
+
},
+
"nearley": {
+
"color": "#990000",
+
"extensions": [".ne", ".nearley"]
+
},
+
"nemerle": {
+
"color": "#3d3c6e",
+
"extensions": [".n"]
+
},
+
"netlinx": {
+
"color": "#0aa0ff",
+
"extensions": [".axs", ".axi"]
+
},
+
"netlinx+erb": {
+
"color": "#747faa",
+
"extensions": [".axs.erb", ".axi.erb"]
+
},
+
"netlogo": {
+
"color": "#ff6375",
+
"extensions": [".nlogo"]
+
},
+
"newlisp": {
+
"color": "#87aed7",
+
"extensions": [".nl", ".lisp", ".lsp"]
+
},
+
"nextflow": {
+
"color": "#3ac486",
+
"extensions": [".nf"],
+
"filenames": ["nextflow.config"]
+
},
+
"nginx": {
+
"color": "#009639",
+
"extensions": [".nginx", ".nginxconf", ".vhost"],
+
"filenames": ["nginx.conf"]
+
},
+
"nickel": {
+
"color": "#e0c3fc",
+
"extensions": [".ncl"]
+
},
+
"nim": {
+
"color": "#ffc200",
+
"extensions": [".nim", ".nim.cfg", ".nimble", ".nimrod", ".nims"],
+
"filenames": ["nim.cfg"]
+
},
+
"ninja": {
+
"extensions": [".ninja"]
+
},
+
"nit": {
+
"color": "#009917",
+
"extensions": [".nit"]
+
},
+
"nix": {
+
"color": "#7e7eff",
+
"extensions": [".nix"]
+
},
+
"noir": {
+
"extensions": [".nr"],
+
"color": "#2f1f49"
+
},
+
"nu": {
+
"color": "#c9df40",
+
"extensions": [".nu"],
+
"filenames": ["nukefile"]
+
},
+
"numpy": {
+
"color": "#9c8af9",
+
"extensions": [".numpy", ".numpyw", ".numsc"]
+
},
+
"nunjucks": {
+
"color": "#3d8137",
+
"extensions": [".njk"]
+
},
+
"nushell": {
+
"color": "#4e9906",
+
"extensions": [".nu"]
+
},
+
"ocaml": {
+
"color": "#ef7a08",
+
"extensions": [".ml", ".eliom", ".eliomi", ".ml4", ".mli", ".mll", ".mly"]
+
},
+
"omnet++msg": {
+
"extensions": [".msg"],
+
"color": "#a0e0a0"
+
},
+
"omnet++ned": {
+
"extensions": [".ned"],
+
"color": "#08607c"
+
},
+
"oberon": {
+
"extensions": [".ob2"]
+
},
+
"objdump": {
+
"extensions": [".objdump"]
+
},
+
"objectdatainstancenotation": {
+
"extensions": [".odin"]
+
},
+
"objectscript": {
+
"extensions": [".cls"],
+
"color": "#424893"
+
},
+
"objective-c": {
+
"color": "#438eff",
+
"extensions": [".m", ".h"]
+
},
+
"objective-c++": {
+
"color": "#6866fb",
+
"extensions": [".mm"]
+
},
+
"objective-j": {
+
"color": "#ff0c5a",
+
"extensions": [".j", ".sj"]
+
},
+
"odin": {
+
"color": "#60affe",
+
"extensions": [".odin"]
+
},
+
"omgrofl": {
+
"extensions": [".omgrofl"],
+
"color": "#cabbff"
+
},
+
"opa": {
+
"extensions": [".opa"]
+
},
+
"opal": {
+
"color": "#f7ede0",
+
"extensions": [".opal"]
+
},
+
"openpolicyagent": {
+
"color": "#7d9199",
+
"extensions": [".rego"]
+
},
+
"openapispecificationv2": {
+
"color": "#85ea2d"
+
},
+
"openapispecificationv3": {
+
"color": "#85ea2d"
+
},
+
"opencl": {
+
"color": "#ed2e2d",
+
"extensions": [".cl", ".opencl"]
+
},
+
"openedgeabl": {
+
"color": "#5ce600",
+
"extensions": [".p", ".cls", ".w"]
+
},
+
"openqasm": {
+
"extensions": [".qasm"],
+
"color": "#aa70ff"
+
},
+
"openrcrunscript": {},
+
"openscad": {
+
"color": "#e5cd45",
+
"extensions": [".scad"]
+
},
+
"opensteppropertylist": {
+
"extensions": [".plist", ".glyphs"]
+
},
+
"opentypefeaturefile": {
+
"extensions": [".fea"]
+
},
+
"optionlist": {
+
"color": "#476732",
+
"filenames": [".ackrc", ".rspec", ".yardopts", "ackrc", "mocha.opts"]
+
},
+
"org": {
+
"color": "#77aa99",
+
"extensions": [".org"]
+
},
+
"overpassql": {
+
"color": "#cce2aa",
+
"extensions": [".overpassql"]
+
},
+
"ox": {
+
"extensions": [".ox", ".oxh", ".oxo"]
+
},
+
"oxygene": {
+
"color": "#cdd0e3",
+
"extensions": [".oxygene"]
+
},
+
"oz": {
+
"color": "#fab738",
+
"extensions": [".oz"]
+
},
+
"p4": {
+
"color": "#7055b5",
+
"extensions": [".p4"]
+
},
+
"pddl": {
+
"color": "#0d00ff",
+
"extensions": [".pddl"]
+
},
+
"peg.js": {
+
"color": "#234d6b",
+
"extensions": [".pegjs", ".peggy"]
+
},
+
"php": {
+
"color": "#4f5d95",
+
"extensions": [
+
".php",
+
".aw",
+
".ctp",
+
".fcgi",
+
".inc",
+
".php3",
+
".php4",
+
".php5",
+
".phps",
+
".phpt"
+
],
+
"filenames": [".php", ".php_cs", ".php_cs.dist", "phakefile"]
+
},
+
"plsql": {
+
"color": "#dad8d8",
+
"extensions": [
+
".pls",
+
".bdy",
+
".ddl",
+
".fnc",
+
".pck",
+
".pkb",
+
".pks",
+
".plb",
+
".plsql",
+
".prc",
+
".spc",
+
".sql",
+
".tpb",
+
".tps",
+
".trg",
+
".vw"
+
]
+
},
+
"plpgsql": {
+
"color": "#336790",
+
"extensions": [".pgsql", ".sql"]
+
},
+
"pov-raysdl": {
+
"color": "#6bac65",
+
"extensions": [".pov", ".inc"]
+
},
+
"pact": {
+
"color": "#f7a8b8",
+
"extensions": [".pact"]
+
},
+
"pan": {
+
"color": "#cc0000",
+
"extensions": [".pan"]
+
},
+
"papyrus": {
+
"color": "#6600cc",
+
"extensions": [".psc"]
+
},
+
"parrot": {
+
"color": "#f3ca0a",
+
"extensions": [".parrot"]
+
},
+
"parrotassembly": {
+
"extensions": [".pasm"]
+
},
+
"parrotinternalrepresentation": {
+
"extensions": [".pir"]
+
},
+
"pascal": {
+
"color": "#e3f171",
+
"extensions": [".pas", ".dfm", ".dpr", ".inc", ".lpr", ".pascal", ".pp"]
+
},
+
"pawn": {
+
"color": "#dbb284",
+
"extensions": [".pwn", ".inc", ".sma"]
+
},
+
"pep8": {
+
"color": "#c76f5b",
+
"extensions": [".pep"]
+
},
+
"perl": {
+
"color": "#0298c3",
+
"extensions": [
+
".pl",
+
".al",
+
".cgi",
+
".fcgi",
+
".perl",
+
".ph",
+
".plx",
+
".pm",
+
".psgi",
+
".t"
+
],
+
"filenames": [
+
".latexmkrc",
+
"makefile.pl",
+
"rexfile",
+
"ack",
+
"cpanfile",
+
"latexmkrc"
+
]
+
},
+
"pic": {
+
"extensions": [".pic", ".chem"]
+
},
+
"pickle": {
+
"extensions": [".pkl"]
+
},
+
"picolisp": {
+
"color": "#6067af",
+
"extensions": [".l"]
+
},
+
"piglatin": {
+
"color": "#fcd7de",
+
"extensions": [".pig"]
+
},
+
"pike": {
+
"color": "#005390",
+
"extensions": [".pike", ".pmod"]
+
},
+
"piprequirements": {
+
"color": "#ffd343",
+
"filenames": [
+
"requirements-dev.txt",
+
"requirements.lock.txt",
+
"requirements.txt"
+
]
+
},
+
"pkl": {
+
"color": "#6b9543",
+
"extensions": [".pkl"]
+
},
+
"plantuml": {
+
"color": "#fbbd16",
+
"extensions": [".puml", ".iuml", ".plantuml"]
+
},
+
"pod": {
+
"extensions": [".pod"]
+
},
+
"pod 6": {
+
"extensions": [".pod", ".pod6"]
+
},
+
"pogoscript": {
+
"color": "#d80074",
+
"extensions": [".pogo"]
+
},
+
"polar": {
+
"color": "#ae81ff",
+
"extensions": [".polar"]
+
},
+
"pony": {
+
"extensions": [".pony"]
+
},
+
"portugol": {
+
"color": "#f8bd00",
+
"extensions": [".por"]
+
},
+
"postcss": {
+
"color": "#dc3a0c",
+
"extensions": [".pcss", ".postcss"]
+
},
+
"postscript": {
+
"color": "#da291c",
+
"extensions": [".ps", ".eps", ".epsi", ".pfa"]
+
},
+
"powerbuilder": {
+
"color": "#8f0f8d",
+
"extensions": [".pbt", ".sra", ".sru", ".srw"]
+
},
+
"powershell": {
+
"color": "#012456",
+
"extensions": [".ps1", ".psd1", ".psm1"]
+
},
+
"praat": {
+
"color": "#c8506d",
+
"extensions": [".praat"]
+
},
+
"prisma": {
+
"color": "#0c344b",
+
"extensions": [".prisma"]
+
},
+
"processing": {
+
"color": "#0096d8",
+
"extensions": [".pde"]
+
},
+
"procfile": {
+
"color": "#3b2f63",
+
"filenames": ["procfile"]
+
},
+
"proguard": {
+
"extensions": [".pro"]
+
},
+
"prolog": {
+
"color": "#74283c",
+
"extensions": [".pl", ".plt", ".pro", ".prolog", ".yap"]
+
},
+
"promela": {
+
"color": "#de0000",
+
"extensions": [".pml"]
+
},
+
"propellerspin": {
+
"color": "#7fa2a7",
+
"extensions": [".spin"]
+
},
+
"protocolbuffer": {
+
"extensions": [".proto"]
+
},
+
"protocolbuffertextformat": {
+
"extensions": [".textproto", ".pbt", ".pbtxt"]
+
},
+
"publickey": {
+
"extensions": [".asc", ".pub"]
+
},
+
"pug": {
+
"color": "#a86454",
+
"extensions": [".jade", ".pug"]
+
},
+
"puppet": {
+
"color": "#302b6d",
+
"extensions": [".pp"],
+
"filenames": ["modulefile"]
+
},
+
"puredata": {
+
"extensions": [".pd"]
+
},
+
"purebasic": {
+
"color": "#5a6986",
+
"extensions": [".pb", ".pbi"]
+
},
+
"purescript": {
+
"color": "#1d222d",
+
"extensions": [".purs"]
+
},
+
"pyret": {
+
"color": "#ee1e10",
+
"extensions": [".arr"]
+
},
+
"python": {
+
"color": "#3572a5",
+
"extensions": [
+
".py",
+
".cgi",
+
".fcgi",
+
".gyp",
+
".gypi",
+
".lmi",
+
".py3",
+
".pyde",
+
".pyi",
+
".pyp",
+
".pyt",
+
".pyw",
+
".rpy",
+
".spec",
+
".tac",
+
".wsgi",
+
".xpy"
+
],
+
"filenames": [".gclient", "deps", "sconscript", "sconstruct", "wscript"]
+
},
+
"pythonconsole": {
+
"color": "#3572a5"
+
},
+
"pythontraceback": {
+
"color": "#3572a5",
+
"extensions": [".pytb"]
+
},
+
"q#": {
+
"extensions": [".qs"],
+
"color": "#fed659"
+
},
+
"qml": {
+
"color": "#44a51c",
+
"extensions": [".qml", ".qbs"]
+
},
+
"qmake": {
+
"extensions": [".pro", ".pri"]
+
},
+
"qtscript": {
+
"extensions": [".qs"],
+
"filenames": ["installscript.qs", "toolchain_installscript.qs"],
+
"color": "#00b841"
+
},
+
"quake": {
+
"filenames": ["m3makefile", "m3overrides"],
+
"color": "#882233"
+
},
+
"quakec": {
+
"extensions": [".qc"],
+
"color": "#975777"
+
},
+
"quickbasic": {
+
"color": "#008080",
+
"extensions": [".bas"]
+
},
+
"r": {
+
"color": "#198ce7",
+
"extensions": [".r", ".rd", ".rsx"],
+
"filenames": [".rprofile", "expr-dist"]
+
},
+
"raml": {
+
"color": "#77d9fb",
+
"extensions": [".raml"]
+
},
+
"rbs": {
+
"extensions": [".rbs"],
+
"color": "#701516"
+
},
+
"rdoc": {
+
"color": "#701516",
+
"extensions": [".rdoc"]
+
},
+
"realbasic": {
+
"extensions": [
+
".rbbas",
+
".rbfrm",
+
".rbmnu",
+
".rbres",
+
".rbtbar",
+
".rbuistate"
+
]
+
},
+
"rexx": {
+
"color": "#d90e09",
+
"extensions": [".rexx", ".pprx", ".rex"]
+
},
+
"rmarkdown": {
+
"color": "#198ce7",
+
"extensions": [".qmd", ".rmd"]
+
},
+
"ron": {
+
"color": "#a62c00",
+
"extensions": [".ron"]
+
},
+
"rosinterface": {
+
"color": "#22314e",
+
"extensions": [".msg", ".action", ".srv"]
+
},
+
"rpc": {
+
"extensions": [".x"]
+
},
+
"rpgle": {
+
"color": "#2bde21",
+
"extensions": [".rpgle", ".sqlrpgle"]
+
},
+
"rpmspec": {
+
"extensions": [".spec"]
+
},
+
"runoff": {
+
"color": "#665a4e",
+
"extensions": [".rnh", ".rno"]
+
},
+
"racket": {
+
"color": "#3c5caa",
+
"extensions": [".rkt", ".rktd", ".rktl", ".scrbl"]
+
},
+
"ragel": {
+
"color": "#9d5200",
+
"extensions": [".rl"]
+
},
+
"raku": {
+
"color": "#0000fb",
+
"extensions": [
+
".6pl",
+
".6pm",
+
".nqp",
+
".p6",
+
".p6l",
+
".p6m",
+
".pl",
+
".pl6",
+
".pm",
+
".pm6",
+
".raku",
+
".rakumod",
+
".t"
+
]
+
},
+
"rascal": {
+
"color": "#fffaa0",
+
"extensions": [".rsc"]
+
},
+
"rawtokendata": {
+
"extensions": [".raw"]
+
},
+
"rescript": {
+
"color": "#ed5051",
+
"extensions": [".res", ".resi"]
+
},
+
"readlineconfig": {
+
"filenames": [".inputrc", "inputrc"]
+
},
+
"reason": {
+
"color": "#ff5847",
+
"extensions": [".re", ".rei"]
+
},
+
"reasonligo": {
+
"color": "#ff5847",
+
"extensions": [".religo"]
+
},
+
"rebol": {
+
"color": "#358a5b",
+
"extensions": [".reb", ".r", ".r2", ".r3", ".rebol"]
+
},
+
"recordjar": {
+
"filenames": ["language-subtag-registry.txt"],
+
"color": "#0673ba"
+
},
+
"red": {
+
"color": "#f50000",
+
"extensions": [".red", ".reds"]
+
},
+
"redcode": {
+
"extensions": [".cw"]
+
},
+
"redirectrules": {
+
"filenames": ["_redirects"]
+
},
+
"regularexpression": {
+
"color": "#009a00",
+
"extensions": [".regexp", ".regex"]
+
},
+
"ren'py": {
+
"color": "#ff7f7f",
+
"extensions": [".rpy"]
+
},
+
"renderscript": {
+
"extensions": [".rs", ".rsh"]
+
},
+
"rez": {
+
"extensions": [".r"],
+
"color": "#ffdab3"
+
},
+
"richtextformat": {
+
"extensions": [".rtf"]
+
},
+
"ring": {
+
"color": "#2d54cb",
+
"extensions": [".ring"]
+
},
+
"riot": {
+
"color": "#a71e49",
+
"extensions": [".riot"]
+
},
+
"robotframework": {
+
"color": "#00c0b5",
+
"extensions": [".robot", ".resource"]
+
},
+
"roc": {
+
"color": "#7c38f5",
+
"extensions": [".roc"]
+
},
+
"rocqprover": {
+
"color": "#d0b68c",
+
"extensions": [".v", ".coq"]
+
},
+
"roff": {
+
"color": "#ecdebe",
+
"extensions": [
+
".roff",
+
".1",
+
".1in",
+
".1m",
+
".1x",
+
".2",
+
".3",
+
".3in",
+
".3m",
+
".3p",
+
".3pm",
+
".3qt",
+
".3x",
+
".4",
+
".5",
+
".6",
+
".7",
+
".8",
+
".9",
+
".l",
+
".man",
+
".mdoc",
+
".me",
+
".ms",
+
".n",
+
".nr",
+
".rno",
+
".tmac"
+
],
+
"filenames": ["eqnrc", "mmn", "mmt", "troffrc", "troffrc-end"]
+
},
+
"roffmanpage": {
+
"color": "#ecdebe",
+
"extensions": [
+
".1",
+
".1in",
+
".1m",
+
".1x",
+
".2",
+
".3",
+
".3in",
+
".3m",
+
".3p",
+
".3pm",
+
".3qt",
+
".3x",
+
".4",
+
".5",
+
".6",
+
".7",
+
".8",
+
".9",
+
".man",
+
".mdoc"
+
]
+
},
+
"rouge": {
+
"color": "#cc0088",
+
"extensions": [".rg"]
+
},
+
"routerosscript": {
+
"extensions": [".rsc"],
+
"color": "#de3941"
+
},
+
"ruby": {
+
"color": "#701516",
+
"extensions": [
+
".rb",
+
".builder",
+
".eye",
+
".fcgi",
+
".gemspec",
+
".god",
+
".jbuilder",
+
".mspec",
+
".pluginspec",
+
".podspec",
+
".prawn",
+
".rabl",
+
".rake",
+
".rbi",
+
".rbuild",
+
".rbw",
+
".rbx",
+
".ru",
+
".ruby",
+
".spec",
+
".thor",
+
".watchr"
+
],
+
"filenames": [
+
".irbrc",
+
".pryrc",
+
".simplecov",
+
"appraisals",
+
"berksfile",
+
"brewfile",
+
"buildfile",
+
"capfile",
+
"dangerfile",
+
"deliverfile",
+
"fastfile",
+
"gemfile",
+
"guardfile",
+
"jarfile",
+
"mavenfile",
+
"podfile",
+
"puppetfile",
+
"rakefile",
+
"snapfile",
+
"steepfile",
+
"thorfile",
+
"vagrantfile",
+
"buildfile"
+
]
+
},
+
"rust": {
+
"color": "#dea584",
+
"extensions": [".rs", ".rs.in"]
+
},
+
"sas": {
+
"color": "#b34936",
+
"extensions": [".sas"]
+
},
+
"scss": {
+
"color": "#c6538c",
+
"extensions": [".scss"]
+
},
+
"selinuxpolicy": {
+
"extensions": [".te"],
+
"filenames": [
+
"file_contexts",
+
"genfs_contexts",
+
"initial_sids",
+
"port_contexts",
+
"security_classes"
+
]
+
},
+
"smt": {
+
"extensions": [".smt2", ".smt", ".z3"]
+
},
+
"sparql": {
+
"color": "#0c4597",
+
"extensions": [".sparql", ".rq"]
+
},
+
"sqf": {
+
"color": "#3f3f3f",
+
"extensions": [".sqf", ".hqf"]
+
},
+
"sql": {
+
"color": "#e38c00",
+
"extensions": [
+
".sql",
+
".cql",
+
".ddl",
+
".inc",
+
".mysql",
+
".prc",
+
".tab",
+
".udf",
+
".viw"
+
]
+
},
+
"sqlpl": {
+
"color": "#e38c00",
+
"extensions": [".sql", ".db2"]
+
},
+
"srecodetemplate": {
+
"color": "#348a34",
+
"extensions": [".srt"]
+
},
+
"sshconfig": {
+
"filenames": [
+
"ssh-config",
+
"ssh_config",
+
"sshconfig",
+
"sshconfig.snip",
+
"sshd-config",
+
"sshd_config"
+
]
+
},
+
"star": {
+
"extensions": [".star"]
+
},
+
"stl": {
+
"color": "#373b5e",
+
"extensions": [".stl"]
+
},
+
"ston": {
+
"extensions": [".ston"]
+
},
+
"svg": {
+
"color": "#ff9900",
+
"extensions": [".svg"]
+
},
+
"swig": {
+
"extensions": [".i", ".swg", ".swig"]
+
},
+
"sage": {
+
"extensions": [".sage", ".sagews"]
+
},
+
"sail": {
+
"color": "#259dd5",
+
"extensions": [".sail"]
+
},
+
"saltstack": {
+
"color": "#646464",
+
"extensions": [".sls"]
+
},
+
"sass": {
+
"color": "#a53b70",
+
"extensions": [".sass"]
+
},
+
"scala": {
+
"color": "#c22d40",
+
"extensions": [".scala", ".kojo", ".sbt", ".sc"]
+
},
+
"scaml": {
+
"color": "#bd181a",
+
"extensions": [".scaml"]
+
},
+
"scenic": {
+
"color": "#fdc700",
+
"extensions": [".scenic"]
+
},
+
"scheme": {
+
"color": "#1e4aec",
+
"extensions": [".scm", ".sch", ".sld", ".sls", ".sps", ".ss"]
+
},
+
"scilab": {
+
"color": "#ca0f21",
+
"extensions": [".sci", ".sce", ".tst"]
+
},
+
"self": {
+
"color": "#0579aa",
+
"extensions": [".self"]
+
},
+
"shaderlab": {
+
"color": "#222c37",
+
"extensions": [".shader"]
+
},
+
"shell": {
+
"color": "#89e051",
+
"extensions": [
+
".sh",
+
".bash",
+
".bats",
+
".cgi",
+
".command",
+
".fcgi",
+
".ksh",
+
".sh.in",
+
".tmux",
+
".tool",
+
".trigger",
+
".zsh",
+
".zsh-theme"
+
],
+
"filenames": [
+
".bash_aliases",
+
".bash_functions",
+
".bash_history",
+
".bash_logout",
+
".bash_profile",
+
".bashrc",
+
".cshrc",
+
".envrc",
+
".flaskenv",
+
".kshrc",
+
".login",
+
".profile",
+
".tmux.conf",
+
".xinitrc",
+
".xsession",
+
".zlogin",
+
".zlogout",
+
".zprofile",
+
".zshenv",
+
".zshrc",
+
"9fs",
+
"pkgbuild",
+
"bash_aliases",
+
"bash_logout",
+
"bash_profile",
+
"bashrc",
+
"cshrc",
+
"gradlew",
+
"kshrc",
+
"login",
+
"man",
+
"mvnw",
+
"profile",
+
"tmux.conf",
+
"xinitrc",
+
"xsession",
+
"zlogin",
+
"zlogout",
+
"zprofile",
+
"zshenv",
+
"zshrc"
+
]
+
},
+
"shellcheckconfig": {
+
"color": "#cecfcb",
+
"filenames": [".shellcheckrc"]
+
},
+
"shellsession": {
+
"extensions": [".sh-session"]
+
},
+
"shen": {
+
"color": "#120f14",
+
"extensions": [".shen"]
+
},
+
"sieve": {
+
"extensions": [".sieve"]
+
},
+
"simplefileverification": {
+
"color": "#c9bfed",
+
"extensions": [".sfv"]
+
},
+
"singularity": {
+
"color": "#64e6ad",
+
"filenames": ["singularity"]
+
},
+
"slang": {
+
"color": "#1fbec9",
+
"extensions": [".slang"]
+
},
+
"slash": {
+
"color": "#007eff",
+
"extensions": [".sl"]
+
},
+
"slice": {
+
"color": "#003fa2",
+
"extensions": [".ice"]
+
},
+
"slim": {
+
"color": "#2b2b2b",
+
"extensions": [".slim"]
+
},
+
"slint": {
+
"color": "#2379f4",
+
"extensions": [".slint"]
+
},
+
"smpl": {
+
"extensions": [".cocci"],
+
"color": "#c94949"
+
},
+
"smali": {
+
"extensions": [".smali"]
+
},
+
"smalltalk": {
+
"color": "#596706",
+
"extensions": [".st", ".cs"]
+
},
+
"smarty": {
+
"color": "#f0c040",
+
"extensions": [".tpl"]
+
},
+
"smithy": {
+
"color": "#c44536",
+
"extensions": [".smithy"]
+
},
+
"snakemake": {
+
"color": "#419179",
+
"extensions": [".smk", ".snakefile"],
+
"filenames": ["snakefile"]
+
},
+
"solidity": {
+
"color": "#aa6746",
+
"extensions": [".sol"]
+
},
+
"soong": {
+
"filenames": ["android.bp"]
+
},
+
"sourcepawn": {
+
"color": "#f69e1d",
+
"extensions": [".sp", ".inc"]
+
},
+
"splinefontdatabase": {
+
"extensions": [".sfd"]
+
},
+
"squirrel": {
+
"color": "#800000",
+
"extensions": [".nut"]
+
},
+
"stan": {
+
"color": "#b2011d",
+
"extensions": [".stan"]
+
},
+
"standardml": {
+
"color": "#dc566d",
+
"extensions": [".ml", ".fun", ".sig", ".sml"]
+
},
+
"starlark": {
+
"color": "#76d275",
+
"extensions": [".bzl", ".star"],
+
"filenames": [
+
"buck",
+
"build",
+
"build.bazel",
+
"module.bazel",
+
"tiltfile",
+
"workspace",
+
"workspace.bazel",
+
"workspace.bzlmod"
+
]
+
},
+
"stata": {
+
"color": "#1a5f91",
+
"extensions": [".do", ".ado", ".doh", ".ihlp", ".mata", ".matah", ".sthlp"]
+
},
+
"stringtemplate": {
+
"color": "#3fb34f",
+
"extensions": [".st"]
+
},
+
"stylus": {
+
"color": "#ff6347",
+
"extensions": [".styl"]
+
},
+
"subriptext": {
+
"color": "#9e0101",
+
"extensions": [".srt"]
+
},
+
"sugarss": {
+
"color": "#2fcc9f",
+
"extensions": [".sss"]
+
},
+
"supercollider": {
+
"color": "#46390b",
+
"extensions": [".sc", ".scd"]
+
},
+
"survexdata": {
+
"color": "#ffcc99",
+
"extensions": [".svx"]
+
},
+
"svelte": {
+
"color": "#ff3e00",
+
"extensions": [".svelte"]
+
},
+
"sway": {
+
"color": "#00f58c",
+
"extensions": [".sw"]
+
},
+
"sweave": {
+
"color": "#198ce7",
+
"extensions": [".rnw"]
+
},
+
"swift": {
+
"color": "#f05138",
+
"extensions": [".swift"]
+
},
+
"systemverilog": {
+
"color": "#dae1c2",
+
"extensions": [".sv", ".svh", ".vh"]
+
},
+
"tiprogram": {
+
"color": "#a0aa87",
+
"extensions": [".8xp", ".8xp.txt"]
+
},
+
"tl-verilog": {
+
"extensions": [".tlv"],
+
"color": "#c40023"
+
},
+
"tla": {
+
"color": "#4b0079",
+
"extensions": [".tla"]
+
},
+
"toml": {
+
"color": "#9c4221",
+
"extensions": [".toml", ".toml.example"],
+
"filenames": [
+
"cargo.lock",
+
"cargo.toml.orig",
+
"gopkg.lock",
+
"pipfile",
+
"pdm.lock",
+
"poetry.lock",
+
"uv.lock"
+
]
+
},
+
"tsplibdata": {
+
"extensions": [".tsp"]
+
},
+
"tsql": {
+
"color": "#e38c00",
+
"extensions": [".sql"]
+
},
+
"tsv": {
+
"color": "#237346",
+
"extensions": [".tsv", ".vcf"]
+
},
+
"tsx": {
+
"color": "#3178c6",
+
"extensions": [".tsx"]
+
},
+
"txl": {
+
"color": "#0178b8",
+
"extensions": [".txl"]
+
},
+
"tact": {
+
"color": "#48b5ff",
+
"extensions": [".tact"]
+
},
+
"talon": {
+
"color": "#333333",
+
"extensions": [".talon"]
+
},
+
"tcl": {
+
"color": "#e4cc98",
+
"extensions": [".tcl", ".adp", ".sdc", ".tcl.in", ".tm", ".xdc"],
+
"filenames": ["owh", "starfield"]
+
},
+
"tcsh": {
+
"extensions": [".tcsh", ".csh"]
+
},
+
"tex": {
+
"color": "#3d6117",
+
"extensions": [
+
".tex",
+
".aux",
+
".bbx",
+
".cbx",
+
".cls",
+
".dtx",
+
".ins",
+
".lbx",
+
".ltx",
+
".mkii",
+
".mkiv",
+
".mkvi",
+
".sty",
+
".toc"
+
]
+
},
+
"tea": {
+
"extensions": [".tea"]
+
},
+
"teal": {
+
"extensions": [".tl"],
+
"color": "#00b1bc"
+
},
+
"terra": {
+
"extensions": [".t"],
+
"color": "#00004c"
+
},
+
"terraformtemplate": {
+
"extensions": [".tftpl"],
+
"color": "#7b42bb"
+
},
+
"texinfo": {
+
"extensions": [".texinfo", ".texi", ".txi"]
+
},
+
"text": {
+
"extensions": [".txt", ".fr", ".nb", ".ncl", ".no"],
+
"filenames": [
+
"citation",
+
"citations",
+
"copying",
+
"copying.regex",
+
"copyright.regex",
+
"fontlog",
+
"install",
+
"install.mysql",
+
"license",
+
"license.mysql",
+
"news",
+
"readme.me",
+
"readme.mysql",
+
"readme.nss",
+
"click.me",
+
"delete.me",
+
"keep.me",
+
"package.mask",
+
"package.use.mask",
+
"package.use.stable.mask",
+
"read.me",
+
"readme.1st",
+
"test.me",
+
"use.mask",
+
"use.stable.mask"
+
]
+
},
+
"textgrid": {
+
"color": "#c8506d",
+
"extensions": [".textgrid"]
+
},
+
"textmateproperties": {
+
"color": "#df66e4",
+
"filenames": [".tm_properties"]
+
},
+
"textile": {
+
"color": "#ffe7ac",
+
"extensions": [".textile"]
+
},
+
"thrift": {
+
"color": "#d12127",
+
"extensions": [".thrift"]
+
},
+
"toit": {
+
"color": "#c2c9fb",
+
"extensions": [".toit"]
+
},
+
"torconfig": {
+
"color": "#59316b",
+
"filenames": ["torrc"]
+
},
+
"tree-sitterquery": {
+
"color": "#8ea64c",
+
"extensions": [".scm"]
+
},
+
"turing": {
+
"color": "#cf142b",
+
"extensions": [".t", ".tu"]
+
},
+
"turtle": {
+
"extensions": [".ttl"]
+
},
+
"twig": {
+
"color": "#c1d026",
+
"extensions": [".twig"]
+
},
+
"typelanguage": {
+
"extensions": [".tl"]
+
},
+
"typescript": {
+
"color": "#3178c6",
+
"extensions": [".ts", ".cts", ".mts"]
+
},
+
"typespec": {
+
"color": "#4a3665",
+
"extensions": [".tsp"]
+
},
+
"typst": {
+
"color": "#239dad",
+
"extensions": [".typ"]
+
},
+
"unifiedparallelc": {
+
"color": "#4e3617",
+
"extensions": [".upc"]
+
},
+
"unity3dasset": {
+
"color": "#222c37",
+
"extensions": [
+
".anim",
+
".asset",
+
".mask",
+
".mat",
+
".meta",
+
".prefab",
+
".unity"
+
]
+
},
+
"unixassembly": {
+
"extensions": [".s", ".ms"]
+
},
+
"uno": {
+
"color": "#9933cc",
+
"extensions": [".uno"]
+
},
+
"unrealscript": {
+
"color": "#a54c4d",
+
"extensions": [".uc"]
+
},
+
"untypedplutuscore": {
+
"color": "#36adbd",
+
"extensions": [".uplc"]
+
},
+
"urweb": {
+
"color": "#ccccee",
+
"extensions": [".ur", ".urs"]
+
},
+
"v": {
+
"color": "#4f87c4",
+
"extensions": [".v"]
+
},
+
"vba": {
+
"color": "#867db1",
+
"extensions": [".bas", ".cls", ".frm", ".vba"]
+
},
+
"vbscript": {
+
"color": "#15dcdc",
+
"extensions": [".vbs"]
+
},
+
"vcl": {
+
"color": "#148aa8",
+
"extensions": [".vcl"]
+
},
+
"vhdl": {
+
"color": "#adb2cb",
+
"extensions": [
+
".vhdl",
+
".vhd",
+
".vhf",
+
".vhi",
+
".vho",
+
".vhs",
+
".vht",
+
".vhw"
+
]
+
},
+
"vala": {
+
"color": "#a56de2",
+
"extensions": [".vala", ".vapi"]
+
},
+
"valvedataformat": {
+
"color": "#f26025",
+
"extensions": [".vdf"]
+
},
+
"velocitytemplatelanguage": {
+
"color": "#507cff",
+
"extensions": [".vtl"]
+
},
+
"vento": {
+
"color": "#ff0080",
+
"extensions": [".vto"]
+
},
+
"verilog": {
+
"color": "#b2b7f8",
+
"extensions": [".v", ".veo"]
+
},
+
"vimhelpfile": {
+
"color": "#199f4b",
+
"extensions": [".txt"]
+
},
+
"vimscript": {
+
"color": "#199f4b",
+
"extensions": [".vim", ".vba", ".vimrc", ".vmb"],
+
"filenames": [
+
".exrc",
+
".gvimrc",
+
".nvimrc",
+
".vimrc",
+
"_vimrc",
+
"gvimrc",
+
"nvimrc",
+
"vimrc"
+
]
+
},
+
"vimsnippet": {
+
"color": "#199f4b",
+
"extensions": [".snip", ".snippet", ".snippets"]
+
},
+
"visualbasic .net": {
+
"color": "#945db7",
+
"extensions": [".vb", ".vbhtml"]
+
},
+
"visualbasic 6.0": {
+
"color": "#2c6353",
+
"extensions": [".bas", ".cls", ".ctl", ".dsr", ".frm"]
+
},
+
"volt": {
+
"color": "#1f1f1f",
+
"extensions": [".volt"]
+
},
+
"vue": {
+
"color": "#41b883",
+
"extensions": [".vue"]
+
},
+
"vyper": {
+
"extensions": [".vy"],
+
"color": "#9f4cf2"
+
},
+
"wdl": {
+
"color": "#42f1f4",
+
"extensions": [".wdl"]
+
},
+
"wgsl": {
+
"color": "#1a5e9a",
+
"extensions": [".wgsl"]
+
},
+
"wavefrontmaterial": {
+
"extensions": [".mtl"]
+
},
+
"wavefrontobject": {
+
"extensions": [".obj"]
+
},
+
"webontologylanguage": {
+
"color": "#5b70bd",
+
"extensions": [".owl"]
+
},
+
"webassembly": {
+
"color": "#04133b",
+
"extensions": [".wast", ".wat"]
+
},
+
"webassemblyinterfacetype": {
+
"color": "#6250e7",
+
"extensions": [".wit"]
+
},
+
"webidl": {
+
"extensions": [".webidl"]
+
},
+
"webvtt": {
+
"extensions": [".vtt"]
+
},
+
"wgetconfig": {
+
"filenames": [".wgetrc"]
+
},
+
"whiley": {
+
"color": "#d5c397",
+
"extensions": [".whiley"]
+
},
+
"wikitext": {
+
"color": "#fc5757",
+
"extensions": [".mediawiki", ".wiki", ".wikitext"]
+
},
+
"win32messagefile": {
+
"extensions": [".mc"]
+
},
+
"windowsregistryentries": {
+
"color": "#52d5ff",
+
"extensions": [".reg"]
+
},
+
"witcherscript": {
+
"color": "#ff0000",
+
"extensions": [".ws"]
+
},
+
"wolframlanguage": {
+
"color": "#dd1100",
+
"extensions": [
+
".mathematica",
+
".cdf",
+
".m",
+
".ma",
+
".mt",
+
".nb",
+
".nbp",
+
".wl",
+
".wls",
+
".wlt"
+
]
+
},
+
"wollok": {
+
"color": "#a23738",
+
"extensions": [".wlk"]
+
},
+
"worldofwarcraftaddondata": {
+
"color": "#f7e43f",
+
"extensions": [".toc"]
+
},
+
"wren": {
+
"color": "#383838",
+
"extensions": [".wren"]
+
},
+
"xbitmap": {
+
"extensions": [".xbm"]
+
},
+
"xfontdirectoryindex": {
+
"filenames": ["encodings.dir", "fonts.alias", "fonts.dir", "fonts.scale"]
+
},
+
"xpixmap": {
+
"extensions": [".xpm", ".pm"]
+
},
+
"x10": {
+
"extensions": [".x10"],
+
"color": "#4b6bef"
+
},
+
"xc": {
+
"color": "#99da07",
+
"extensions": [".xc"]
+
},
+
"xcompose": {
+
"filenames": [".xcompose", "xcompose", "xcompose"]
+
},
+
"xml": {
+
"color": "#0060ac",
+
"extensions": [".xml", ".adml", ".admx", ".ant", ".axaml", ".axml"],
+
"filenames": [
+
".classpath",
+
".cproject",
+
".project",
+
"app.config",
+
"nuget.config",
+
"settings.stylecop",
+
"web.debug.config",
+
"web.release.config",
+
"web.config",
+
"packages.config"
+
]
+
},
+
"xmlpropertylist": {
+
"color": "#0060ac",
+
"extensions": [
+
".plist",
+
".sttheme",
+
".tmcommand",
+
".tmlanguage",
+
".tmpreferences",
+
".tmsnippet",
+
".tmtheme"
+
]
+
},
+
"xpages": {
+
"extensions": [".xsp-config", ".xsp.metadata"]
+
},
+
"xproc": {
+
"extensions": [".xpl", ".xproc"]
+
},
+
"xquery": {
+
"color": "#5232e7",
+
"extensions": [".xquery", ".xq", ".xql", ".xqm", ".xqy"]
+
},
+
"xs": {
+
"extensions": [".xs"]
+
},
+
"xslt": {
+
"extensions": [".xslt", ".xsl"],
+
"color": "#eb8ceb"
+
},
+
"xmake": {
+
"color": "#22a079",
+
"filenames": ["xmake.lua"]
+
},
+
"xojo": {
+
"color": "#81bd41",
+
"extensions": [
+
".xojo_code",
+
".xojo_menu",
+
".xojo_report",
+
".xojo_script",
+
".xojo_toolbar",
+
".xojo_window"
+
]
+
},
+
"xonsh": {
+
"color": "#285eef",
+
"extensions": [".xsh"]
+
},
+
"xtend": {
+
"color": "#24255d",
+
"extensions": [".xtend"]
+
},
+
"yaml": {
+
"color": "#cb171e",
+
"extensions": [
+
".yml",
+
".mir",
+
".reek",
+
".rviz",
+
".sublime-syntax",
+
".syntax",
+
".yaml",
+
".yaml-tmlanguage",
+
".yaml.sed",
+
".yml.mysql"
+
],
+
"filenames": [
+
".clang-format",
+
".clang-tidy",
+
".clangd",
+
".gemrc",
+
"citation.cff",
+
"glide.lock",
+
"pixi.lock",
+
"yarn.lock"
+
]
+
},
+
"yang": {
+
"extensions": [".yang"]
+
},
+
"yara": {
+
"color": "#220000",
+
"extensions": [".yar", ".yara"]
+
},
+
"yasnippet": {
+
"color": "#32ab90",
+
"extensions": [".yasnippet"]
+
},
+
"yacc": {
+
"extensions": [".y", ".yacc", ".yy"],
+
"color": "#4b6c4b"
+
},
+
"yul": {
+
"color": "#794932",
+
"extensions": [".yul"]
+
},
+
"zap": {
+
"color": "#0d665e",
+
"extensions": [".zap", ".xzap"]
+
},
+
"zil": {
+
"color": "#dc75e5",
+
"extensions": [".zil", ".mud"]
+
},
+
"zeek": {
+
"extensions": [".zeek", ".bro"]
+
},
+
"zenscript": {
+
"color": "#00bcd1",
+
"extensions": [".zs"]
+
},
+
"zephir": {
+
"color": "#118f9e",
+
"extensions": [".zep"]
+
},
+
"zig": {
+
"color": "#ec915c",
+
"extensions": [".zig", ".zig.zon"]
+
},
+
"zimpl": {
+
"color": "#d67711",
+
"extensions": [".zimpl", ".zmpl", ".zpl"]
+
},
+
"zmodel": {
+
"color": "#ff7100",
+
"extensions": [".zmodel"]
+
},
+
"curlconfig": {
+
"filenames": [".curlrc", "_curlrc"]
+
},
+
"crontab": {
+
"color": "#ead7ac",
+
"filenames": ["crontab"]
+
},
+
"desktop": {
+
"extensions": [".desktop", ".desktop.in", ".service"]
+
},
+
"dircolors": {
+
"extensions": [".dircolors"],
+
"filenames": [
+
".dir_colors",
+
".dircolors",
+
"dir_colors",
+
"_dir_colors",
+
"_dircolors",
+
"dir_colors"
+
]
+
},
+
"ec": {
+
"color": "#913960",
+
"extensions": [".ec", ".eh"]
+
},
+
"edn": {
+
"extensions": [".edn"]
+
},
+
"fish": {
+
"color": "#4aae47",
+
"extensions": [".fish"]
+
},
+
"hoon": {
+
"color": "#00b171",
+
"extensions": [".hoon"]
+
},
+
"icalendar": {
+
"color": "#ec564c",
+
"extensions": [".ics", ".ical"]
+
},
+
"jq": {
+
"color": "#c7254e",
+
"extensions": [".jq"]
+
},
+
"kvlang": {
+
"extensions": [".kv"],
+
"color": "#1da6e0"
+
},
+
"mircscript": {
+
"color": "#3d57c3",
+
"extensions": [".mrc"]
+
},
+
"mcfunction": {
+
"color": "#e22837",
+
"extensions": [".mcfunction"]
+
},
+
"mdsvex": {
+
"color": "#5f9ea0",
+
"extensions": [".svx"]
+
},
+
"mupad": {
+
"color": "#244963",
+
"extensions": [".mu"]
+
},
+
"nanorc": {
+
"color": "#2d004d",
+
"extensions": [".nanorc"],
+
"filenames": [".nanorc", "nanorc"]
+
},
+
"nesc": {
+
"color": "#94b0c7",
+
"extensions": [".nc"]
+
},
+
"ooc": {
+
"color": "#b0b77e",
+
"extensions": [".ooc"]
+
},
+
"q": {
+
"extensions": [".q"],
+
"color": "#0040cd"
+
},
+
"restructuredtext": {
+
"color": "#141414",
+
"extensions": [".rst", ".rest", ".rest.txt", ".rst.txt"]
+
},
+
"robots.txt": {
+
"filenames": ["robots.txt"]
+
},
+
"sed": {
+
"color": "#64b970",
+
"extensions": [".sed"]
+
},
+
"templ": {
+
"color": "#66d0dd",
+
"extensions": [".templ"]
+
},
+
"vcard": {
+
"color": "#ee2647",
+
"extensions": [".vcf"]
+
},
+
"wisp": {
+
"color": "#7582d1",
+
"extensions": [".wisp"]
+
},
+
"xbase": {
+
"color": "#403a40",
+
"extensions": [".prg", ".ch", ".prw"]
+
}
+
}
+31
src/elements/code_block.tsx
···
+
import hljs from "highlight.js";
+
import { createResource, For } from "solid-js";
+
import "../styles/fileviewer.css";
+
import "../util/highlight.js/index";
+
+
export function CodeBlock(props: { code: string; language: string }) {
+
const [codeBlock] = createResource(
+
() => props,
+
(props) => {
+
const highlit = hljs.getLanguage(props.language)
+
? hljs.highlight(props.code, { language: props.language }).value
+
: props.code;
+
return (
+
<For each={highlit.split("\n")}>
+
{(line, i) => (
+
<span class="line-wrapper">
+
<span class="line-number">{i() + 1}</span>
+
<span class="line-content" innerHTML={line}></span>
+
</span>
+
)}
+
</For>
+
);
+
},
+
);
+
+
return (
+
<pre>
+
<code class="flex flex-col text-wrap p-4">{codeBlock()}</code>
+
</pre>
+
);
+
}
+31
src/elements/icon_with_text.tsx
···
+
import { type ComponentProps, splitProps } from "solid-js";
+
import { Dynamic } from "solid-js/web";
+
+
type AllowedTags = "div" | "a" | "span" | "button";
+
+
export function IconWithText<T extends AllowedTags>(
+
props: {
+
type?: T;
+
icon: string;
+
text: string;
+
style?: string;
+
href?: string;
+
} & ComponentProps<T>,
+
) {
+
const [local, dynamic] = splitProps(
+
props,
+
["type", "icon", "text", "style"],
+
["href"],
+
);
+
+
return (
+
<Dynamic
+
component={local.type || "span"}
+
class={`flex flex-row items-center gap-1 ${local.style || ""}`}
+
{...dynamic}
+
>
+
<div class={`iconify ${local.icon}`} />
+
<span>{local.text}</span>
+
</Dynamic>
+
);
+
}
+8
src/errors/404.tsx
···
+
export default function NotFound() {
+
return (
+
<section class="text-gray-700 p-8">
+
<h1 class="text-2xl font-bold">404: Not Found</h1>
+
<p class="mt-4">It's gone 😞</p>
+
</section>
+
);
+
}
+43
src/index.tsx
···
+
/* @refresh reload */
+
import "solid-devtools";
+
import "./styles/index.css";
+
+
import { Route, Router } from "@solidjs/router";
+
import { render } from "solid-js/web";
+
import App from "./app";
+
import NotFound from "./errors/404";
+
import RepoBlob, { preloadRepoBlob } from "./routes/repo/blob";
+
import RepoCommit from "./routes/repo/commit/commit";
+
import { RepoProvider } from "./routes/repo/context";
+
import RepoTree, { preloadRepoTree } from "./routes/repo/tree";
+
import User from "./routes/user";
+
+
const root = document.getElementById("root");
+
+
if (!(root instanceof HTMLElement)) {
+
throw new Error("Root element not found.");
+
}
+
+
render(
+
() => (
+
<Router root={(props) => <App>{props.children}</App>}>
+
<Route path="/:user/:repo" component={RepoProvider}>
+
<Route
+
path="/tree/:ref/*path"
+
component={RepoTree}
+
preload={preloadRepoTree}
+
/>
+
<Route
+
path="/blob/:ref/*path"
+
component={RepoBlob}
+
preload={preloadRepoBlob}
+
/>
+
<Route path="/commit/:ref" component={RepoCommit} />
+
<Route component={RepoTree} />
+
</Route>
+
<Route path="/:user" component={User} />
+
<Route path="*" component={NotFound} />
+
</Router>
+
),
+
root,
+
);
+60
src/routes/repo/blob.tsx
···
+
import {
+
createAsync,
+
type Params,
+
useNavigate,
+
useParams,
+
} from "@solidjs/router";
+
import { Show, Suspense } from "solid-js";
+
import { CodeBlock } from "../../elements/code_block";
+
import { getLanguage } from "../../util/get_language";
+
import { useDid } from "./context";
+
import { Header } from "./main";
+
import { getRepoBlob } from "./main.data";
+
import { figureOutDid } from "../../util/handle";
+
+
export async function preloadRepoBlob({ params }: { params: Params }) {
+
const did = await figureOutDid(params.user)
+
if (!did) return;
+
getRepoBlob(did, params.repo, params.ref, params.path);
+
}
+
+
export default function RepoBlob() {
+
const params = useParams();
+
const did = useDid();
+
const navigate = useNavigate();
+
+
const blob = createAsync(() =>
+
(async () => {
+
const d = did();
+
if (!d) return;
+
const res = await getRepoBlob(d, params.repo, params.ref, params.path);
+
if (res.status === 404) {
+
const split = window.location.pathname.split("/");
+
split[3] = "tree";
+
navigate(split.join("/"), { replace: true });
+
}
+
if (!res.ok) return;
+
return res.data;
+
})(),
+
);
+
+
return (
+
<div class="mx-auto max-w-5xl">
+
<Show when={did()}>
+
{(did) => <Header did={did()} user={params.user} repo={params.repo} />}
+
</Show>
+
<Suspense>
+
<Show when={blob()} keyed>
+
{(data) => (
+
<div class="flex flex-col rounded bg-white dark:bg-gray-800">
+
<CodeBlock
+
code={data.content}
+
language={getLanguage(data.path.split("/").pop()) || "text"}
+
/>
+
</div>
+
)}
+
</Show>
+
</Suspense>
+
</div>
+
);
+
}
+61
src/routes/repo/commit/commit.data.ts
···
+
export interface TreeNode {
+
name: string;
+
fullPath: string;
+
type: "file" | "directory";
+
children?: TreeNode[];
+
}
+
+
type BuildNode = {
+
children: { [key: string]: BuildNode };
+
};
+
+
export function buildTree(paths: string[]): TreeNode {
+
// sorry i used claude for this
+
const root: { [key: string]: BuildNode } = {};
+
+
for (const path of paths) {
+
const parts = path.split("/");
+
let current = root;
+
+
for (let i = 0; i < parts.length; i++) {
+
const part = parts[i];
+
current[part] ??= { children: {} };
+
if (i < parts.length - 1) {
+
current = current[part].children;
+
}
+
}
+
}
+
+
const entries = (obj: BuildNode["children"], path: string) =>
+
Object.entries(obj)
+
.map(([k, v]) => convert(path, v, k))
+
.sort((a, b) => {
+
if (a.type !== b.type) return a.type === "directory" ? -1 : 1;
+
+
const aDot = a.name.startsWith(".");
+
const bDot = b.name.startsWith(".");
+
if (aDot !== bDot) return aDot ? -1 : 1;
+
+
return a.name.localeCompare(b.name, undefined, { numeric: true });
+
});
+
+
const convert = (path: string, node: BuildNode, name: string): TreeNode => {
+
const hasChildren = Object.keys(node.children).length > 0;
+
const fullPath = `${path}${name}`;
+
return {
+
name,
+
type: hasChildren ? "directory" : "file",
+
fullPath,
+
children: hasChildren
+
? entries(node.children, `${fullPath}/`)
+
: undefined,
+
};
+
};
+
+
return {
+
name: "",
+
fullPath: "",
+
type: "directory",
+
children: entries(root, ""),
+
};
+
}
+380
src/routes/repo/commit/commit.tsx
···
+
import { useParams } from "@solidjs/router";
+
import {
+
createMemo,
+
createResource,
+
createSignal,
+
For,
+
Match,
+
onMount,
+
Show,
+
Suspense,
+
Switch,
+
} from "solid-js";
+
import type { Commit, DID, DiffTextFragment } from "../../../util/types";
+
import { useDid } from "../context";
+
import { Header } from "../main";
+
import { getRepoCommit } from "../main.data";
+
import { buildTree, type TreeNode } from "./commit.data";
+
+
function RenderTree(props: { tree: TreeNode; skip?: boolean }) {
+
if (props.skip)
+
return (
+
<For each={props.tree.children}>
+
{(node) => <RenderTree tree={node} />}
+
</For>
+
);
+
const [displayChildren, setDisplayChildren] = createSignal(true);
+
return (
+
<Switch>
+
<Match when={props.tree.type === "file"}>
+
<a
+
class="flex cursor-default select-none flex-row items-center gap-1 rounded p-1 text-xs hover:bg-gray-100 hover:dark:bg-gray-700"
+
href={`#file-${props.tree.fullPath}`}
+
>
+
<div class="iconify gravity-ui--file" />
+
<span class="select-text">{props.tree.name}</span>
+
</a>
+
</Match>
+
<Match when={props.tree.type === "directory"}>
+
<div
+
class="flex select-none flex-row items-center gap-1 rounded p-1 text-xs hover:bg-gray-100 hover:dark:bg-gray-700"
+
onclick={() => setDisplayChildren(!displayChildren())}
+
>
+
<div class="iconify gravity-ui--folder-fill" />
+
<span class="select-text">{props.tree.name}</span>
+
</div>
+
<div
+
class={`ml-1 flex flex-col border-gray-200 border-l pl-1 dark:border-gray-700 ${displayChildren() ? "" : "hidden"}`}
+
>
+
<For each={props.tree.children}>
+
{(node) => <RenderTree tree={node} />}
+
</For>
+
</div>
+
</Match>
+
</Switch>
+
);
+
}
+
+
function Fragment(props: {
+
file: string;
+
data: DiffTextFragment;
+
index: number;
+
numberSize: number;
+
}) {
+
let lineNumber = props.data.NewPosition;
+
let iOld = props.data.OldPosition;
+
let iNew = props.data.NewPosition;
+
+
return (
+
<Show when={!props.data.is_binary} fallback={<div>binary data</div>}>
+
<Show when={props.index !== 0}>
+
<div class="h-5 w-full select-none bg-gray-100 text-center font-mono text-gray-700 dark:bg-gray-700 dark:text-gray-300">
+
···
+
</div>
+
</Show>
+
<div class="w-full whitespace-pre font-mono">
+
<For each={props.data.Lines}>
+
{(line) => {
+
const lineNumberOld = line.Op === 2 ? "" : (iOld++).toString();
+
const lineNumberNew = line.Op === 1 ? "" : (iNew++).toString();
+
const fillerOld = " ".repeat(
+
props.numberSize - lineNumberOld.length,
+
);
+
const fillerNew = " ".repeat(
+
props.numberSize - lineNumberNew.length,
+
);
+
return (
+
<Line
+
file={props.file}
+
index={props.index}
+
line={line}
+
lineNumber={lineNumber++}
+
lineNumberNew={lineNumberNew}
+
lineNumberOld={lineNumberOld}
+
fillerOld={fillerOld}
+
fillerNew={fillerNew}
+
/>
+
);
+
}}
+
</For>
+
</div>
+
</Show>
+
);
+
}
+
+
function Line(props: {
+
file: string;
+
index: number;
+
line: { Op: number; Line: string };
+
lineNumber: number;
+
lineNumberOld: string;
+
lineNumberNew: string;
+
fillerOld: string;
+
fillerNew: string;
+
}) {
+
const id = `line-${props.file}-${props.index}-${props.lineNumber.toString()}`;
+
return (
+
<div
+
class="flex scroll-mt-10 flex-row text-gray-400 *:flex *:flex-row dark:text-gray-500"
+
id={id}
+
>
+
<div class="sticky left-0 select-none border-gray-200 border-r bg-white px-1 *:flex dark:border-gray-700 dark:bg-gray-800">
+
<span class="float-right mr-1 w-1/2 justify-end">
+
<span>{props.fillerOld}</span>
+
<Show when={props.lineNumberOld}>
+
<a
+
class="hover:text-gray-700 hover:underline hover:dark:text-gray-200"
+
href={`#${id}`}
+
>
+
{props.lineNumberOld}
+
</a>
+
</Show>
+
</span>
+
<span class="float-right mr-1 w-1/2 justify-end">
+
{props.fillerNew}
+
<Show when={props.lineNumberNew}>
+
<a
+
class="hover:text-gray-700 hover:underline hover:dark:text-gray-200"
+
href={`#${id}`}
+
>
+
{props.lineNumberNew}
+
</a>
+
</Show>
+
</span>
+
</div>
+
<Switch>
+
<Match when={props.line.Op === 0}>
+
<div class="w-full text-gray-500 dark:text-gray-500">
+
<div class="select-none">{"   "}</div>
+
{props.line.Line}
+
</div>
+
</Match>
+
<Match when={props.line.Op === 2}>
+
<div class="w-full bg-green-100 text-green-700 dark:bg-green-800/30 dark:text-green-400">
+
<div class="select-none">{" + "}</div>
+
{props.line.Line}
+
</div>
+
</Match>
+
<Match when={props.line.Op === 1}>
+
<div class="w-full bg-red-100 text-red-700 dark:bg-red-800/30 dark:text-red-400">
+
<div class="select-none">{" - "}</div>
+
{props.line.Line}
+
</div>
+
</Match>
+
</Switch>
+
</div>
+
);
+
}
+
+
function DiffView(props: { commit: Commit }) {
+
return (
+
<For each={props.commit.diff.diff}>
+
{(diff) => {
+
const [show, setShow] = createSignal(true);
+
const [addedLines, removedLines] = diff.text_fragments.reduce(
+
(acc, v) => [acc[0] + v.NewLines, acc[1] + v.LinesDeleted],
+
[0, 0],
+
);
+
+
const lastFrag = diff.text_fragments[diff.text_fragments.length - 1];
+
const numberSize = Math.max(
+
2,
+
(
+
Math.max(lastFrag.NewPosition, lastFrag.OldPosition) +
+
lastFrag.Lines.length
+
).toString().length,
+
);
+
+
return (
+
<div
+
id={`file-${diff.name.new}`}
+
class="not-last:mb-1 flex w-full flex-col rounded border border-gray-200 bg-white dark:border-gray-700 dark:bg-gray-800"
+
>
+
<div
+
class={`sticky top-0 z-10 flex cursor-default select-none flex-row items-center gap-2 bg-white p-2 hover:bg-gray-100 dark:bg-gray-800 hover:dark:bg-gray-700 ${show() ? "rounded-t border-gray-200 border-b dark:border-gray-700" : "rounded"}`}
+
onclick={() => setShow(!show())}
+
>
+
<div
+
class={`iconify ${show() ? "gravity-ui--chevron-down" : "gravity-ui--chevron-right"}`}
+
/>
+
<div class="flex h-6 select-text flex-row items-center overflow-hidden rounded font-mono text-xs *:h-full *:content-center *:px-1">
+
<Show when={addedLines > 0}>
+
<div class="bg-green-100 text-green-700 dark:bg-green-800/30 dark:text-green-400">{`+${addedLines}`}</div>
+
</Show>
+
<Show when={removedLines > 0}>
+
<div class="bg-red-100 text-red-700 dark:bg-red-700/30 dark:text-red-400">{`-${removedLines}`}</div>
+
</Show>
+
</div>
+
<Show
+
when={diff.name.old !== "" && diff.name.new !== diff.name.old}
+
>
+
<div class="select-text">{diff.name.old}</div>
+
<div class="iconify gravity-ui--arrow-right" />
+
</Show>
+
<div class="select-text">{diff.name.new}</div>
+
</div>
+
<div
+
class={`select-text overflow-x-auto rounded-b bg-white dark:bg-gray-800 ${show() ? "" : "hidden"}`}
+
>
+
<div class="min-w-max">
+
<For each={diff.text_fragments}>
+
{(frag, i) => (
+
<Fragment
+
file={diff.name.new}
+
data={frag}
+
index={i()}
+
numberSize={numberSize}
+
/>
+
)}
+
</For>
+
</div>
+
</div>
+
</div>
+
);
+
}}
+
</For>
+
);
+
}
+
+
function CommitHeader(props: {
+
did: DID;
+
user: string;
+
repo: string;
+
message: { title: string; content: string };
+
commit: Commit;
+
}) {
+
return (
+
<div>
+
<Header did={props.did} user={props.user} repo={props.repo} />
+
<div class="mx-1 flex flex-col gap-2 rounded bg-white p-4 dark:bg-gray-800">
+
<div>{props.message.title}</div>
+
<Show when={props.message.content}>
+
<div class="text-xs">{props.message.content}</div>
+
</Show>
+
<div class="text-gray-500 text-xs dark:text-gray-300">
+
<span>{`${new Date(props.commit.diff.commit.author.When).toLocaleDateString(undefined, { dateStyle: "long" })} at ${new Date(props.commit.diff.commit.author.When).toLocaleTimeString()}`}</span>
+
<span class="select-none px-1 before:content-['\00B7']" />
+
<span>{`${props.commit.diff.commit.author.Name} <${props.commit.diff.commit.author.Email}>`}</span>
+
<span class="select-none px-1 before:content-['\00B7']" />
+
<a
+
class="hover:text-gray-600 hover:underline hover:dark:text-gray-200"
+
href={`/${props.user}/${props.repo}/commit/${props.commit.ref}`}
+
>
+
{props.commit.ref.slice(0, 8)}
+
</a>
+
<Show when={props.commit.diff.commit.parent}>
+
<div class="iconify gravity-ui--arrow-left mx-1 text-[0.6rem]" />
+
<a
+
class="hover:text-gray-600 hover:underline hover:dark:text-gray-200"
+
href={`/${props.user}/${props.repo}/commit/${props.commit.diff.commit.parent}`}
+
>
+
{props.commit.diff.commit.parent.slice(0, 8)}
+
</a>
+
</Show>
+
</div>
+
</div>
+
</div>
+
);
+
}
+
+
export default function RepoCommit() {
+
const params = useParams();
+
const did = useDid();
+
+
const [commit] = createResource(
+
() => {
+
const d = did();
+
if (!d) return;
+
return [d, params.repo, params.ref];
+
},
+
async ([did, repo, ref]) => {
+
const res = await getRepoCommit(did as DID, repo, ref);
+
if (!res.ok) return;
+
return res.data as Commit;
+
},
+
);
+
+
const [sidebar] = createResource(commit, async (commit) => {
+
if (!commit.diff.diff)
+
return { name: "", fullPath: "", type: "directory" } as TreeNode;
+
return buildTree(commit.diff.diff.map((v) => v.name.new));
+
});
+
+
const allData = createMemo(() => {
+
const s = sidebar();
+
const c = commit();
+
if (!(s && c)) return;
+
+
return [s, c] as const;
+
});
+
+
const headerData = createMemo(() => {
+
const c = commit();
+
const d = did();
+
+
if (!(c && d)) return;
+
+
const titleEnd = c.diff.commit.message.indexOf("\n");
+
const message = {
+
title: c.diff.commit.message.slice(0, titleEnd),
+
content: c.diff.commit.message.slice(titleEnd + 1),
+
};
+
+
return [c, d, message] as const;
+
});
+
+
onMount(() => {
+
if (window.location.hash) {
+
const element = document.getElementById(window.location.hash.slice(1));
+
if (element)
+
element.scrollIntoView({ behavior: "instant", block: "start" });
+
}
+
});
+
+
return (
+
<div class="mx-auto max-w-10xl">
+
<Suspense>
+
<Show when={headerData()} keyed>
+
{([commit, did, message]) => (
+
<CommitHeader
+
did={did}
+
user={params.user}
+
repo={params.repo}
+
message={message}
+
commit={commit}
+
/>
+
)}
+
</Show>
+
<Show when={allData()} keyed>
+
{([sidebar, commit]) => (
+
<>
+
<div class="flex flex-row gap-1">
+
<div class="sticky top-0 flex max-h-screen min-w-50 overflow-auto p-1 pr-0">
+
<Show when={sidebar.children}>
+
<div class="flex min-h-max w-full grow cursor-default flex-col rounded border border-gray-200 bg-white p-1 dark:border-gray-700 dark:bg-gray-800">
+
<div class="flex flex-row items-center justify-between gap-1 p-1">
+
<div class="font-bold">CHANGED FILES</div>
+
<div class="flex h-6 select-text flex-row items-center overflow-hidden rounded font-mono text-xs *:h-full *:content-center *:px-1">
+
<Show when={commit.diff.stat.insertions > 0}>
+
<div class="bg-green-100 text-green-700 dark:bg-green-800/30 dark:text-green-400">{`+${commit.diff.stat.insertions}`}</div>
+
</Show>
+
<Show when={commit.diff.stat.deletions > 0}>
+
<div class="bg-red-100 text-red-700 dark:bg-red-700/30 dark:text-red-400">{`-${commit.diff.stat.deletions}`}</div>
+
</Show>
+
</div>
+
</div>
+
<RenderTree tree={sidebar} skip={true} />
+
</div>
+
</Show>
+
</div>
+
<div class="min-w-0 flex-1 flex-col gap-1 p-1 pl-0">
+
<DiffView commit={commit} />
+
</div>
+
</div>
+
</>
+
)}
+
</Show>
+
</Suspense>
+
</div>
+
);
+
}
src/routes/repo/commits.tsx

This is a binary file and will not be displayed.

+60
src/routes/repo/context.tsx
···
+
import type { ShTangledRepo } from "@atcute/tangled";
+
import { useParams } from "@solidjs/router";
+
import {
+
createContext,
+
createResource,
+
type ParentComponent,
+
type Resource,
+
useContext,
+
} from "solid-js";
+
import { getUserRepo } from "../../util/get_repo";
+
import { figureOutDid } from "../../util/handle";
+
import type { DID } from "../../util/types";
+
import { getRepoForks, getRepoStars } from "./main.data";
+
+
const RepoContext = createContext<{
+
did: () => DID | undefined;
+
repoInfo: Resource<{
+
repo: ShTangledRepo.Main & { rkey: string };
+
stars: number;
+
forks: number;
+
}>;
+
}>();
+
+
export const RepoProvider: ParentComponent = (props) => {
+
const params = useParams();
+
const [did] = createResource(() => params.user, figureOutDid);
+
+
const [repoInfo] = createResource(
+
() => {
+
const d = did();
+
const r = params.repo;
+
return d && r ? ([d, r] as const) : undefined;
+
},
+
async ([did, repo]) => {
+
return {
+
repo: await getUserRepo(did, repo),
+
stars: await getRepoStars(did, repo),
+
forks: await getRepoForks(did, repo),
+
};
+
},
+
);
+
+
return (
+
<RepoContext.Provider value={{ did, repoInfo }}>
+
{props.children}
+
</RepoContext.Provider>
+
);
+
};
+
+
export function useDid() {
+
const ctx = useContext(RepoContext);
+
if (!ctx) throw new Error("useDid must be used within RepoProvider");
+
return ctx.did;
+
}
+
+
export function useRepoInfo() {
+
const ctx = useContext(RepoContext);
+
if (!ctx) throw new Error("useDid must be used within RepoProvider");
+
return ctx.repoInfo;
+
}
+154
src/routes/repo/main.data.ts
···
+
import { Client, simpleFetchHandler } from "@atcute/client";
+
import { query } from "@solidjs/router";
+
import { getRepoKnot, getUserRepo } from "../../util/get_repo";
+
import { constellationUrl } from "../../util/microcosm";
+
import type { DID } from "../../util/types";
+
+
async function getKnotRpc(user: DID, repo: string) {
+
const service = await getRepoKnot(user, repo);
+
const handler = simpleFetchHandler({ service });
+
const rpc = new Client({ handler });
+
+
return rpc;
+
}
+
+
export const getRepoDefaultBranch = query(async (user: DID, repo: string) => {
+
const rpc = await getKnotRpc(user, repo);
+
+
return await rpc.get("sh.tangled.repo.getDefaultBranch", {
+
params: {
+
repo: `${user}/${repo}`,
+
},
+
});
+
}, "RepoDefaultBranch");
+
+
export const getRepoTree = query(
+
async (user: DID, repo: string, ref: string, path: string) => {
+
const rpc = await getKnotRpc(user, repo);
+
+
return await rpc.get("sh.tangled.repo.tree", {
+
params: {
+
repo: `${user}/${repo}`,
+
ref,
+
path,
+
},
+
});
+
},
+
"RepoTreeData",
+
);
+
+
export const getRepoBlob = query(
+
async (user: DID, repo: string, ref: string, path: string) => {
+
const rpc = await getKnotRpc(user, repo);
+
+
return await rpc.get("sh.tangled.repo.blob", {
+
params: {
+
repo: `${user}/${repo}`,
+
ref,
+
path,
+
},
+
});
+
},
+
"RepoBlob",
+
);
+
+
export const getRepoLog = query(
+
async (user: DID, repo: string, ref: string, path: string) => {
+
const rpc = await getKnotRpc(user, repo);
+
+
return await rpc.get("sh.tangled.repo.log", {
+
as: "json",
+
params: {
+
repo: `${user}/${repo}`,
+
ref,
+
path,
+
},
+
});
+
},
+
"RepoBlob",
+
);
+
+
export const getRepoLanguages = query(
+
async (user: DID, repo: string, ref: string) => {
+
const rpc = await getKnotRpc(user, repo);
+
+
return await rpc.get("sh.tangled.repo.languages", {
+
params: {
+
repo: `${user}/${repo}`,
+
ref,
+
},
+
});
+
},
+
"RepoLanguages",
+
);
+
+
export const getRepoStars = query(async (user: DID, repo: string) => {
+
const request = new URL(`${constellationUrl}/links/count/distinct-dids`);
+
request.searchParams.set(
+
"target",
+
`at://${user}/sh.tangled.repo/${(await getUserRepo(user, repo))?.rkey}`,
+
);
+
request.searchParams.set("collection", "sh.tangled.feed.star");
+
request.searchParams.set("path", ".subject");
+
+
const res = await fetch(request).then((res) => res.json());
+
return (res?.total as number) || 0;
+
}, "RepoStars");
+
+
export const getRepoForks = query(async (user: DID, repo: string) => {
+
const request = new URL(`${constellationUrl}/links/count/distinct-dids`);
+
request.searchParams.set(
+
"target",
+
`at://${user}/sh.tangled.repo/${(await getUserRepo(user, repo))?.rkey}`,
+
);
+
request.searchParams.set("collection", "sh.tangled.repo");
+
request.searchParams.set("path", ".source");
+
+
const res = await fetch(request).then((res) => res.json());
+
return (res?.total as number) || 0;
+
}, "RepoForks");
+
+
export const getRepoCommit = query(
+
async (user: DID, repo: string, ref: string) => {
+
const rpc = await getKnotRpc(user, repo);
+
+
return await rpc.get("sh.tangled.repo.diff", {
+
as: "json",
+
params: {
+
repo: `${user}/${repo}`,
+
ref,
+
},
+
});
+
},
+
"RepoCommit",
+
);
+
+
export const getRepoBranches = query(
+
async (user: DID, repo: string, ref: string) => {
+
const rpc = await getKnotRpc(user, repo);
+
+
return await rpc.get("sh.tangled.repo.branches", {
+
as: "json",
+
params: {
+
repo: `${user}/${repo}`,
+
ref,
+
},
+
});
+
},
+
"RepoBranches",
+
);
+
+
export const getRepoTags = query(
+
async (user: DID, repo: string, ref: string) => {
+
const rpc = await getKnotRpc(user, repo);
+
+
return await rpc.get("sh.tangled.repo.tags", {
+
as: "json",
+
params: {
+
repo: `${user}/${repo}`,
+
ref,
+
},
+
});
+
},
+
"RepoTags",
+
);
+86
src/routes/repo/main.tsx
···
+
import { type Accessor, createMemo, Show } from "solid-js";
+
import type { DID } from "../../util/types";
+
import { useRepoInfo } from "./context";
+
+
function HeaderItem(props: {
+
path: string;
+
title: string;
+
icon: string;
+
windowPath: Accessor<string>;
+
}) {
+
return (
+
<a
+
class={`flex h-full w-min flex-row content-center items-center gap-2 rounded-t px-4 py-1 ${props.windowPath() === props.title ? "bg-white dark:bg-gray-800" : "hover:dark:bg-gray-700/25"}`}
+
href={props.path}
+
>
+
<div class={`iconify ${props.icon}`} />
+
{props.title}
+
</a>
+
);
+
}
+
+
export function Header(props: { did: DID; user: string; repo: string }) {
+
const repoInfo = useRepoInfo();
+
const path = createMemo(() => {
+
const path = window.location.pathname.split("/")[3];
+
return ["issues", "pulls", "pipelines"].includes(path) ? path : "overview";
+
});
+
+
return (
+
<Show when={repoInfo()} keyed>
+
{(repoInfo) => (
+
<>
+
<div class="m-5 mt-0 flex flex-row items-center justify-between gap-0.5">
+
<div class="flex flex-col gap-1">
+
<div class="flex flex-row items-center gap-1 text-base">
+
<a class="hover:underline" href={`/${props.user}`}>
+
@{props.user}
+
</a>
+
<span class="select-none text-xl">/</span>
+
<a
+
class="font-bold hover:underline"
+
href={`/${props.user}/${props.repo}`}
+
>
+
{props.repo}
+
</a>
+
</div>
+
<Show when={repoInfo.repo} keyed>
+
{(repo) => <div class="text-xs">{repo.description}</div>}
+
</Show>
+
</div>
+
<div class="flex flex-row gap-2">
+
<button
+
type="button"
+
class="btn flex flex-row items-center gap-1"
+
>
+
<div class="iconify gravity-ui--star" />
+
{repoInfo.stars.toString() || "0"}
+
</button>
+
<button
+
type="button"
+
class="btn flex flex-row items-center gap-1"
+
>
+
<div class="iconify gravity-ui--code-fork" />
+
{repoInfo.forks.toString() || "0"}
+
</button>
+
</div>
+
</div>
+
<div class="mx-4 flex flex-row gap-1">
+
<HeaderItem
+
title="overview"
+
path={`/${props.user}/${props.repo}`}
+
icon="gravity-ui--square-list-ul"
+
windowPath={path}
+
/>
+
{/*<HeaderItem
+
title="issues"
+
path={`/${props.user}/${props.repo}/issues`}
+
icon="gravity-ui--circle-minus"
+
windowPath={path}
+
/>*/}
+
</div>
+
</>
+
)}
+
</Show>
+
);
+
}
+343
src/routes/repo/tree.tsx
···
+
import type {
+
ShTangledRepoLanguages,
+
ShTangledRepoTree,
+
} from "@atcute/tangled";
+
import { type Params, useParams } from "@solidjs/router";
+
import {
+
createMemo,
+
createResource,
+
createSignal,
+
For,
+
Match,
+
Show,
+
Switch,
+
} from "solid-js";
+
import { SolidMarkdown } from "solid-markdown";
+
import { IconWithText } from "../../elements/icon_with_text";
+
import { languageColors } from "../../util/get_language";
+
import type { RepoLog } from "../../util/types";
+
import { useDid } from "./context";
+
import { Header } from "./main";
+
import {
+
getRepoBranches,
+
getRepoDefaultBranch,
+
getRepoLanguages,
+
getRepoLog,
+
getRepoTree,
+
} from "./main.data";
+
import "../../styles/markdown.css";
+
import { figureOutDid } from "../../util/handle";
+
+
export async function preloadRepoTree({ params }: { params: Params }) {
+
const did = await figureOutDid(params.user);
+
if (!did) return;
+
getRepoTree(did, params.repo, params.ref, params.path);
+
}
+
+
export default function RepoTree() {
+
const params = useParams();
+
const did = useDid();
+
+
const [defaultBranch] = createResource(did, async (did) => {
+
const res = await getRepoDefaultBranch(did, params.repo);
+
if (!res.ok) return;
+
return res.data.name;
+
});
+
+
const [tree] = createResource(
+
() => {
+
const d = did();
+
return d && ([d, params.repo, params.ref, params.path] as const);
+
},
+
async ([d, repo, ref, path]) => {
+
const res = await getRepoTree(d, repo, ref, path);
+
if (!res.ok) return;
+
return res.data;
+
},
+
);
+
+
const [languages] = createResource(did, async (did) => {
+
const res = await getRepoLanguages(did, params.repo, params.ref);
+
if (!res.ok) return;
+
return res.data.languages.sort((a, b) => b.percentage - a.percentage);
+
});
+
+
const [logs] = createResource(
+
() => {
+
const d = did();
+
return d && ([d, params.repo, params.ref, params.path] as const);
+
},
+
async ([d, repo, ref, path]) => {
+
const res = await getRepoLog(d, repo, ref, path);
+
if (!res.ok) return;
+
return res.data as RepoLog;
+
},
+
);
+
+
const [branchesAndTags] = createResource(
+
() => {
+
const d = did();
+
return d && ([d, params.repo, params.ref] as const);
+
},
+
async ([d, repo, ref]) => {
+
const resBranches = await getRepoBranches(d, repo, ref);
+
if (!resBranches.ok) return;
+
return resBranches.data as RepoLog;
+
},
+
);
+
+
const [readme] = createResource(tree, async (tree) => {
+
if (!tree.readme) return;
+
return {
+
contents: tree.readme.contents,
+
type: tree.readme.filename.toLowerCase().endsWith(".md")
+
? "markdown"
+
: "plaintext",
+
} as const;
+
});
+
+
const [filesInOrder] = createResource(tree, (tree) => {
+
if (!tree.files) return;
+
return tree.files.sort((a, b) => {
+
// Directories before files
+
if (!a.is_file === b.is_file) return !a.is_file ? -1 : 1;
+
+
// Dotfiles first
+
const aDot = a.name.startsWith(".");
+
const bDot = b.name.startsWith(".");
+
if (aDot !== bDot) return aDot ? -1 : 1;
+
+
// Name sorting (natural order)
+
return a.name.localeCompare(b.name, undefined, { numeric: true });
+
});
+
});
+
+
const repoData = createMemo(() => {
+
const db = defaultBranch();
+
const l = languages();
+
const d = did();
+
if (!(db && l && d)) return;
+
return [db, l, d] as const;
+
});
+
+
const pathData = createMemo(() => {
+
const t = tree();
+
const f = filesInOrder();
+
const r = readme();
+
const l = logs();
+
if (!(t && f && r && l)) return;
+
return [t, f, r, l] as const;
+
});
+
+
return (
+
<div class="mx-auto max-w-5xl">
+
<Show when={repoData()} keyed>
+
{([defaultBranch, languages, did]) => (
+
<Show when={pathData()} keyed>
+
{([tree, files, readme, logs]) => (
+
<div>
+
<Header did={did} user={params.user} repo={params.repo} />
+
<div class="mb-4 flex flex-col rounded bg-white dark:bg-gray-800">
+
<LanguageLine languages={languages} />
+
<div class="flex flex-row">
+
<div class="mr-1 flex w-1/2 flex-col border-gray-300 border-r p-2 pt-1 dark:border-gray-700">
+
<FileDirectory
+
user={params.user}
+
repo={params.repo}
+
files={files}
+
tree={tree}
+
defaultBranch={defaultBranch}
+
/>
+
</div>
+
<div class="ml-1 flex w-1/2 flex-col p-2 pt-1">
+
<LogData
+
user={params.user}
+
repo={params.repo}
+
defaultBranch={defaultBranch}
+
files={files}
+
logs={logs}
+
/>
+
</div>
+
</div>
+
</div>
+
<Show when={readme.contents}>
+
<ReadmeCard
+
path={`/${params.user}/${params.repo}/blob/${tree.ref || defaultBranch}`}
+
readme={readme}
+
/>
+
</Show>
+
</div>
+
)}
+
</Show>
+
)}
+
</Show>
+
</div>
+
);
+
}
+
+
function ReadmeCard(props: {
+
path: string;
+
readme: {
+
type: "markdown" | "plaintext";
+
contents: string;
+
};
+
}) {
+
return (
+
<div class="mb-4 rounded bg-white p-4 dark:bg-gray-800">
+
<Switch>
+
<Match when={props.readme.type === "markdown"}>
+
<SolidMarkdown
+
class="markdown"
+
transformImageUri={(href) => `${props.path}${href}`}
+
transformLinkUri={(href) => `${props.path}${href}`}
+
renderingStrategy="memo"
+
children={props.readme.contents}
+
/>
+
</Match>
+
<Match when={props.readme.type === "plaintext"}>
+
<div class="font-mono"> {props.readme.contents}</div>
+
</Match>
+
</Switch>
+
</div>
+
);
+
}
+
+
function LanguageLine(props: { languages: ShTangledRepoLanguages.Language[] }) {
+
const [languageLineState, setLanguageLineState] = createSignal(false);
+
const toggleLanguageLineState = () =>
+
setLanguageLineState(!languageLineState());
+
+
return (
+
<div class={languageLineState() ? "h-full" : "h-4"}>
+
<div
+
class={`flex w-full flex-row overflow-hidden rounded-t duration-75 hover:h-4 ${languageLineState() ? "h-4" : "h-2"}`}
+
onclick={toggleLanguageLineState}
+
>
+
<For each={props.languages}>
+
{(language) => (
+
<div
+
class="h-full border-gray-50 border-r duration-75 hover:brightness-90 dark:border-gray-950 dark:hover:brightness-110"
+
style={`width: ${language.percentage}%; background-color: ${languageColors.get(language.name.toLowerCase().replaceAll(" ", ""))}`}
+
title={`${language.name} ${language.percentage}%`}
+
></div>
+
)}
+
</For>
+
</div>
+
<div
+
class={`flex h-4 flex-row gap-3 border-gray-300 border-r border-b px-6 py-3.5 text-xs dark:border-gray-700 ${languageLineState() ? "" : "hidden"}`}
+
>
+
<For each={props.languages}>
+
{(language) => (
+
<div class="flex flex-row items-center gap-2">
+
<div
+
class="h-2 w-2 rounded-full"
+
style={`background-color: ${languageColors.get(language.name.toLowerCase().replaceAll(" ", ""))}`}
+
/>
+
<span>
+
<span>{language.name}</span>{" "}
+
<span class="text-gray-600 dark:text-gray-400">
+
{language.percentage}%
+
</span>
+
</span>
+
</div>
+
)}
+
</For>
+
</div>
+
</div>
+
);
+
}
+
+
function FileDirectory(props: {
+
user: string;
+
repo: string;
+
files: ShTangledRepoTree.TreeEntry[];
+
tree: ShTangledRepoTree.$output;
+
defaultBranch: string;
+
}) {
+
return (
+
<div class="flex w-full flex-col">
+
<Show when={props.tree.parent}>
+
<a
+
href={`/${props.user}/${props.repo}/tree/${props.tree.ref}/${props.tree.dotdot ? `/${props.tree.dotdot}` : ""}`}
+
class="flex flex-row items-center gap-1 p-1 hover:underline"
+
>
+
<div class="iconify gravity-ui--folder-open-fill" />
+
<span>..</span>
+
</a>
+
</Show>
+
+
<For each={props.files}>
+
{(file) => (
+
<a
+
href={`/${props.user}/${props.repo}/${file.is_file ? "blob" : "tree"}/${props.tree.ref || props.defaultBranch}/${props.tree.parent ? `${props.tree.parent}/` : ""}${file.name}`}
+
class="flex flex-row items-center gap-1 p-1 hover:underline"
+
>
+
<div
+
class={`iconify ${file.is_file ? "gravity-ui--file" : "gravity-ui--folder-fill"}`}
+
/>
+
<span>{file.name}</span>
+
</a>
+
)}
+
</For>
+
</div>
+
);
+
}
+
+
function LogData(props: {
+
user: string;
+
repo: string;
+
defaultBranch: string;
+
files: ShTangledRepoTree.TreeEntry[];
+
logs: RepoLog;
+
}) {
+
return (
+
<>
+
<a
+
class="mb-2 flex flex-row items-center gap-2 text-black hover:text-gray-600 dark:text-white hover:dark:text-gray-300"
+
href={`/${props.user}/${props.repo}/commits/${props.logs.ref || props.defaultBranch}`}
+
>
+
<IconWithText
+
icon="gravity-ui--code-commit"
+
text="commits"
+
style="font-bold"
+
/>
+
<div class="rounded bg-gray-300 px-1 text-xs dark:bg-gray-700">
+
{props.logs.total}
+
</div>
+
</a>
+
<div class="mb-3 flex flex-col gap-4">
+
<For
+
each={props.logs.commits.slice(
+
0,
+
Math.max(3, Math.floor(props.files.length / 2)),
+
)}
+
>
+
{(commit) => {
+
const hash = commit.Hash.map((num) =>
+
num.toString(16).padStart(2, "0"),
+
).join("");
+
return (
+
<div class="flex flex-col gap-1">
+
<a
+
class="text-black hover:text-gray-600 hover:underline dark:text-white hover:dark:text-gray-300"
+
href={`/${props.user}/${props.repo}/commit/${hash}`}
+
>
+
{commit.Message.slice(0, commit.Message.indexOf("\n"))}
+
</a>
+
<span class="text-gray-500 text-xs dark:text-gray-300">
+
<span class="rounded bg-gray-100 p-1 font-mono dark:bg-gray-900">
+
{hash.slice(0, 8)}
+
</span>
+
<span class="select-none px-1 before:content-['\00B7']" />
+
<span>{commit.Author.Name}</span>
+
<span class="select-none px-1 before:content-['\00B7']" />
+
<span>{`${new Date(commit.Author.When).toLocaleDateString(undefined, { dateStyle: "short" })} at ${new Date(commit.Author.When).toLocaleTimeString()}`}</span>
+
</span>
+
</div>
+
);
+
}}
+
</For>
+
</div>
+
</>
+
);
+
}
+33
src/routes/user.tsx
···
+
import { createAsync, useParams } from "@solidjs/router";
+
import { createMemo, For } from "solid-js";
+
import { getUserRepos } from "../util/get_repo";
+
import { figureOutDid } from "../util/handle";
+
+
export default function User() {
+
const params = useParams();
+
const did = createAsync(() => figureOutDid(params.user));
+
+
const repos = createAsync(() => {
+
const d = did();
+
if (!d) return Promise.resolve(undefined);
+
return getUserRepos(d);
+
});
+
+
const data = createMemo(() => {
+
const reposRes = repos();
+
+
if (!reposRes) return <div>No repositories found</div>;
+
+
return (
+
<For each={Object.values(reposRes)}>
+
{(repo) => <a href={`/${params.user}/${repo.name}`}>{repo.name}</a>}
+
</For>
+
);
+
});
+
+
return (
+
<div class="mx-auto max-w-5xl">
+
<div class="mb-4 rounded bg-white p-4 dark:bg-gray-800">{data()}</div>
+
</div>
+
);
+
}
+86
src/styles/fileviewer.css
···
+
@import "tailwindcss";
+
+
pre code .line-wrapper {
+
@apply flex flex-row;
+
}
+
+
pre code .line-number {
+
@apply opacity-50 shrink-0 w-12 text-right pr-4 select-none;
+
}
+
+
pre code .line-content {
+
@apply flex-1 pl-4 whitespace-pre-wrap text-sm;
+
}
+
+
.hljs {
+
@apply text-gray-900 dark:text-gray-300;
+
}
+
.hljs-doctag,
+
.hljs-keyword,
+
.hljs-meta .hljs-keyword,
+
.hljs-template-tag,
+
.hljs-template-variable,
+
.hljs-type,
+
.hljs-variable.language_ {
+
@apply text-red-700 dark:text-red-400;
+
}
+
.hljs-title,
+
.hljs-title.class_,
+
.hljs-title.class_.inherited__,
+
.hljs-title.function_ {
+
@apply text-purple-700 dark:text-purple-400;
+
}
+
.hljs-attr,
+
.hljs-attribute,
+
.hljs-literal,
+
.hljs-meta,
+
.hljs-number,
+
.hljs-operator,
+
.hljs-variable,
+
.hljs-selector-attr,
+
.hljs-selector-class,
+
.hljs-selector-id {
+
@apply text-blue-700 dark:text-blue-400;
+
}
+
.hljs-regexp,
+
.hljs-string,
+
.hljs-meta .hljs-string {
+
@apply text-cyan-800 dark:text-cyan-300;
+
}
+
.hljs-built_in,
+
.hljs-symbol {
+
@apply text-amber-700 dark:text-amber-400;
+
}
+
.hljs-comment,
+
.hljs-code,
+
.hljs-formula,
+
pre code .line::before {
+
@apply text-neutral-500 dark:text-neutral-500;
+
}
+
.hljs-name,
+
.hljs-quote,
+
.hljs-selector-tag,
+
.hljs-selector-pseudo {
+
@apply text-green-700 dark:text-green-400;
+
}
+
.hljs-subst {
+
@apply text-neutral-800 dark:text-neutral-300;
+
}
+
.hljs-section {
+
@apply font-bold text-blue-700 dark:text-blue-400;
+
}
+
.hljs-bullet {
+
@apply text-yellow-900 dark:text-yellow-300;
+
}
+
.hljs-emphasis {
+
@apply italic text-gray-900 dark:text-gray-400;
+
}
+
.hljs-strong {
+
@apply font-bold text-gray-900 dark:text-gray-400;
+
}
+
.hljs-addition {
+
@apply bg-green-100 text-green-700 dark:bg-green-800/30 dark:text-green-400;
+
}
+
.hljs-deletion {
+
@apply bg-red-100 text-red-700 dark:bg-red-800/30 dark:text-red-400;
+
}
+86
src/styles/index.css
···
+
@import "tailwindcss";
+
@import "../../static/fonts/inter/inter";
+
@import "../../static/fonts/ibm-plex-mono/ibm-plex-mono";
+
+
@plugin "@iconify/tailwind4" {
+
/* biome-ignore lint/correctness/noUnknownProperty: this works dude idk how to set it properly */
+
prefixes: gravity-ui;
+
}
+
+
:root {
+
--font-sans: "InterVariable", ui-sans-serif, sans-serif;
+
--mono-font: "IBM Plex Mono", ui-monospace, monospace;
+
}
+
+
@supports (font-variation-settings: normal) {
+
html {
+
font-feature-settings:
+
"kern" 1,
+
"liga" 1,
+
"cv05" 1,
+
"tnum" 1;
+
}
+
}
+
+
.btn {
+
@apply relative z-10 inline-flex min-h-[30px] items-center justify-center bg-transparent pl-2 pr-2 text-sm text-gray-900 outline-none;
+
}
+
+
.btn::before {
+
@apply absolute inset-0 -z-10 rounded border border-gray-200 bg-white duration-150 transition-all ease-in;
+
--tw-shadow:
+
inset 0 -2px 0 0 rgba(0, 0, 0, 0.1), 0 1px 0 0 rgba(0, 0, 0, 0.04);
+
--tw-shadow-colored:
+
inset 0 -2px 0 0 var(--tw-shadow-color), 0 1px 0 0 var(--tw-shadow-color);
+
box-shadow:
+
var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000),
+
var(--tw-shadow);
+
content: "";
+
}
+
+
.btn:hover::before {
+
@apply bg-gray-50;
+
--tw-shadow:
+
inset 0 -2px 0 0 rgba(0, 0, 0, 0.15), 0 2px 1px 0 rgba(0, 0, 0, 0.06);
+
--tw-shadow-colored:
+
inset 0 -2px 0 0 var(--tw-shadow-color), 0 2px 1px 0 var(--tw-shadow-color);
+
box-shadow:
+
var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000),
+
var(--tw-shadow);
+
content: "";
+
}
+
+
.btn:focus {
+
@apply outline-2 outline-offset-2;
+
}
+
+
.btn:focus-visible::before {
+
@apply outline-solid outline-2 outline-gray-400;
+
}
+
+
.btn:active::before {
+
--tw-shadow: inset 0 2px 2px 0 rgba(0, 0, 0, 0.1);
+
--tw-shadow-colored: inset 0 2px 2px 0 var(--tw-shadow-color);
+
box-shadow:
+
var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000),
+
var(--tw-shadow);
+
content: "";
+
}
+
+
.btn:disabled {
+
@apply cursor-not-allowed opacity-50;
+
}
+
+
@media (prefers-color-scheme: dark) {
+
.btn {
+
@apply text-gray-100;
+
}
+
+
.btn::before {
+
@apply border-gray-700 bg-gray-800;
+
}
+
+
.btn:hover::before {
+
@apply bg-gray-700;
+
}
+
}
+49
src/styles/markdown.css
···
+
@import "tailwindcss";
+
+
.markdown {
+
h1,
+
h2,
+
h3,
+
h4,
+
h5,
+
h6 {
+
@apply py-2 my-2 font-bold border-gray-300 dark:border-gray-700 border-b;
+
}
+
h1 {
+
@apply text-3xl;
+
}
+
h2 {
+
@apply text-2xl;
+
}
+
h3 {
+
@apply text-xl;
+
}
+
h4 {
+
@apply text-lg;
+
}
+
h5 {
+
@apply text-base;
+
}
+
h6 {
+
@apply text-sm;
+
}
+
strong {
+
@apply font-bold;
+
}
+
a {
+
@apply underline;
+
}
+
p {
+
@apply text-sm my-4;
+
}
+
ul {
+
@apply my-1 pl-6;
+
}
+
ul > li {
+
@apply text-sm;
+
}
+
ul > li:before {
+
@apply text-gray-300 dark:text-gray-700 font-bold relative right-4;
+
content: "•";
+
}
+
}
+40
src/util/get_language.ts
···
+
import languages from "../data/languages.json";
+
+
const extensions = Object.entries(languages).reduce((map, [code, value]) => {
+
if ("extensions" in value) {
+
return value.extensions.reduce((map, ext) => map.set(ext, code), map);
+
} else {
+
return map;
+
}
+
}, new Map<string, string>());
+
+
const filenames = Object.entries(languages).reduce((map, [code, value]) => {
+
if ("filenames" in value) {
+
return value.filenames.reduce(
+
(map, filename) => map.set(filename, code),
+
map,
+
);
+
} else {
+
return map;
+
}
+
}, new Map<string, string>());
+
+
export const languageColors = Object.entries(languages).reduce(
+
(map, [code, value]) => {
+
if ("color" in value) {
+
return map.set(code, value.color);
+
} else {
+
return map;
+
}
+
},
+
new Map<string, string>(),
+
);
+
+
export function getLanguage(filename: string | undefined): string | undefined {
+
if (!filename) return undefined;
+
const filenameExtension = filenames.get(filename);
+
if (filenameExtension) return filenameExtension;
+
const extension = filename.split(".").pop();
+
if (extension) return extensions.get(`.${extension}`);
+
return filenames.get(filename);
+
}
+29
src/util/get_pds.ts
···
+
import {
+
CompositeDidDocumentResolver,
+
PlcDidDocumentResolver,
+
WebDidDocumentResolver,
+
} from "@atcute/identity-resolver";
+
import { createAsync, query } from "@solidjs/router";
+
+
const docResolver = new CompositeDidDocumentResolver({
+
methods: {
+
plc: new PlcDidDocumentResolver(),
+
web: new WebDidDocumentResolver(),
+
},
+
});
+
+
export const getUserPDS = query(
+
async (did: `did:plc:${string}` | `did:web:${string}`) => {
+
const doc = await docResolver.resolve(did);
+
const endpoint = doc.service?.find(
+
(i) => i.id === "#atproto_pds",
+
)?.serviceEndpoint;
+
if (typeof endpoint === "string") return endpoint;
+
return undefined;
+
},
+
"user_pds",
+
);
+
+
export const UserPDS = (did: `did:plc:${string}` | `did:web:${string}`) => {
+
return createAsync(() => getUserPDS(did));
+
};
+62
src/util/get_repo.ts
···
+
import { Client, simpleFetchHandler } from "@atcute/client";
+
import type { ShTangledRepo } from "@atcute/tangled";
+
import { query } from "@solidjs/router";
+
import { getUserPDS } from "./get_pds";
+
import type { DID } from "./types";
+
+
export const getUserRepos = query(
+
async (
+
did: DID,
+
): Promise<Record<string, ShTangledRepo.Main & { rkey: string }>> => {
+
const pds = await getUserPDS(did);
+
if (!pds) return {};
+
const handler = simpleFetchHandler({ service: pds });
+
const rpc = new Client({ handler });
+
+
const repos: Record<string, ShTangledRepo.Main & { rkey: string }> = {};
+
let cursor: string | undefined;
+
+
while (true) {
+
const { ok, data } = await rpc.get("com.atproto.repo.listRecords", {
+
params: {
+
repo: did,
+
collection: "sh.tangled.repo",
+
limit: 100,
+
cursor,
+
},
+
});
+
if (!ok) break;
+
const length = data.records.length;
+
const moreRepos = data.records.reduce(
+
(acc, r) => {
+
const record = Object.assign(
+
{ rkey: r.uri.slice(r.uri.lastIndexOf("/") + 1) },
+
r.value as ShTangledRepo.Main,
+
);
+
acc[record.name] = record;
+
return acc;
+
},
+
new Object() as typeof repos,
+
);
+
Object.assign(repos, moreRepos);
+
cursor = data.cursor;
+
if (length < 100) break;
+
}
+
+
return repos;
+
},
+
"user_repos",
+
);
+
+
export const getUserRepo = async (
+
did: DID,
+
repo: string,
+
): Promise<ShTangledRepo.Main & { rkey: string }> => {
+
const repos = await getUserRepos(did);
+
return repos[repo];
+
};
+
+
export const getRepoKnot = async (did: DID, repo: string) => {
+
const repos = await getUserRepos(did);
+
return `https://${repos[repo].knot}`;
+
};
+41
src/util/handle.ts
···
+
import {
+
CompositeHandleResolver,
+
DohJsonHandleResolver,
+
WellKnownHandleResolver,
+
} from "@atcute/identity-resolver";
+
import { query } from "@solidjs/router";
+
import { slingshotUrl } from "./microcosm";
+
import type { DID } from "./types";
+
+
const useSlingshot: boolean = true;
+
+
const didMap = new Map<string, DID>();
+
+
const handleResolver = new CompositeHandleResolver({
+
strategy: "race",
+
methods: {
+
dns: new DohJsonHandleResolver({
+
dohUrl: "https://mozilla.cloudflare-dns.com/dns-query",
+
}),
+
http: new WellKnownHandleResolver(),
+
},
+
});
+
+
export const figureOutDid = query(async (user: string): Promise<DID> => {
+
const isDid = user.startsWith("did:");
+
if (!isDid && user.includes(".")) {
+
let res = didMap.get(user);
+
if (!res && useSlingshot)
+
res = (
+
await (
+
await fetch(
+
`${slingshotUrl}/xrpc/com.atproto.identity.resolveHandle?handle=${user}`,
+
)
+
).json()
+
).did;
+
if (!res) res = await handleResolver.resolve(user as `${string}.${string}`);
+
didMap.set(user, res);
+
return res;
+
}
+
return user as DID;
+
}, "handles");
+5
src/util/highlight.js/1c.ts
···
+
import hljs from "highlight.js";
+
+
import lang from "highlight.js/lib/languages/1c";
+
+
hljs.registerLanguage("1c", lang);
+252
src/util/highlight.js/common.ts
···
+
import gleam from "@gleam-lang/highlight.js-gleam";
+
import hljs from "highlight.js";
+
+
hljs.registerLanguage("gleam", gleam);
+
+
import xml from "highlight.js/lib/languages/xml";
+
+
hljs.registerLanguage("xml", xml);
+
+
import bash from "highlight.js/lib/languages/bash";
+
+
hljs.registerLanguage("bash", bash);
+
+
import c from "highlight.js/lib/languages/c";
+
+
hljs.registerLanguage("c", c);
+
+
import cpp from "highlight.js/lib/languages/cpp";
+
+
hljs.registerLanguage("cpp", cpp);
+
+
import csharp from "highlight.js/lib/languages/csharp";
+
+
hljs.registerLanguage("csharp", csharp);
+
+
import css from "highlight.js/lib/languages/css";
+
+
hljs.registerLanguage("css", css);
+
+
import markdown from "highlight.js/lib/languages/markdown";
+
+
hljs.registerLanguage("markdown", markdown);
+
+
import dart from "highlight.js/lib/languages/dart";
+
+
hljs.registerLanguage("dart", dart);
+
+
import diff from "highlight.js/lib/languages/diff";
+
+
hljs.registerLanguage("diff", diff);
+
+
import dockerfile from "highlight.js/lib/languages/dockerfile";
+
+
hljs.registerLanguage("dockerfile", dockerfile);
+
+
import elixir from "highlight.js/lib/languages/elixir";
+
+
hljs.registerLanguage("elixir", elixir);
+
+
import elm from "highlight.js/lib/languages/elm";
+
+
hljs.registerLanguage("elm", elm);
+
+
import ruby from "highlight.js/lib/languages/ruby";
+
+
hljs.registerLanguage("ruby", ruby);
+
+
import erlangrepl from "highlight.js/lib/languages/erlang-repl";
+
+
hljs.registerLanguage("erlang-repl", erlangrepl);
+
+
import erlang from "highlight.js/lib/languages/erlang";
+
+
hljs.registerLanguage("erlang", erlang);
+
+
import excel from "highlight.js/lib/languages/excel";
+
+
hljs.registerLanguage("excel", excel);
+
+
import glsl from "highlight.js/lib/languages/glsl";
+
+
hljs.registerLanguage("glsl", glsl);
+
+
import go from "highlight.js/lib/languages/go";
+
+
hljs.registerLanguage("go", go);
+
+
import gradle from "highlight.js/lib/languages/gradle";
+
+
hljs.registerLanguage("gradle", gradle);
+
+
import graphql from "highlight.js/lib/languages/graphql";
+
+
hljs.registerLanguage("graphql", graphql);
+
+
import haskell from "highlight.js/lib/languages/haskell";
+
+
hljs.registerLanguage("haskell", haskell);
+
+
import http from "highlight.js/lib/languages/http";
+
+
hljs.registerLanguage("http", http);
+
+
import java from "highlight.js/lib/languages/java";
+
+
hljs.registerLanguage("java", java);
+
+
import julia from "highlight.js/lib/languages/julia";
+
+
hljs.registerLanguage("julia", julia);
+
+
import juliarepl from "highlight.js/lib/languages/julia-repl";
+
+
hljs.registerLanguage("julia-repl", juliarepl);
+
+
import kotlin from "highlight.js/lib/languages/kotlin";
+
+
hljs.registerLanguage("kotlin", kotlin);
+
+
import latex from "highlight.js/lib/languages/latex";
+
+
hljs.registerLanguage("latex", latex);
+
+
import ini from "highlight.js/lib/languages/ini";
+
+
hljs.registerLanguage("ini", ini);
+
+
import less from "highlight.js/lib/languages/less";
+
+
hljs.registerLanguage("less", less);
+
+
import lisp from "highlight.js/lib/languages/lisp";
+
+
hljs.registerLanguage("lisp", lisp);
+
+
import lua from "highlight.js/lib/languages/lua";
+
+
hljs.registerLanguage("lua", lua);
+
+
import makefile from "highlight.js/lib/languages/makefile";
+
+
hljs.registerLanguage("makefile", makefile);
+
+
import matlab from "highlight.js/lib/languages/matlab";
+
+
hljs.registerLanguage("matlab", matlab);
+
+
import perl from "highlight.js/lib/languages/perl";
+
+
hljs.registerLanguage("perl", perl);
+
+
import nginx from "highlight.js/lib/languages/nginx";
+
+
hljs.registerLanguage("nginx", nginx);
+
+
import nim from "highlight.js/lib/languages/nim";
+
+
hljs.registerLanguage("nim", nim);
+
+
import nix from "highlight.js/lib/languages/nix";
+
+
hljs.registerLanguage("nix", nix);
+
+
import noderepl from "highlight.js/lib/languages/node-repl";
+
+
hljs.registerLanguage("node-repl", noderepl);
+
+
import ocaml from "highlight.js/lib/languages/ocaml";
+
+
hljs.registerLanguage("ocaml", ocaml);
+
+
import php from "highlight.js/lib/languages/php";
+
+
hljs.registerLanguage("php", php);
+
+
import phptemplate from "highlight.js/lib/languages/php-template";
+
+
hljs.registerLanguage("php-template", phptemplate);
+
+
import plaintext from "highlight.js/lib/languages/plaintext";
+
+
hljs.registerLanguage("plaintext", plaintext);
+
+
import properties from "highlight.js/lib/languages/properties";
+
+
hljs.registerLanguage("properties", properties);
+
+
import python from "highlight.js/lib/languages/python";
+
+
hljs.registerLanguage("python", python);
+
+
import pythonrepl from "highlight.js/lib/languages/python-repl";
+
+
hljs.registerLanguage("python-repl", pythonrepl);
+
+
import r from "highlight.js/lib/languages/r";
+
+
hljs.registerLanguage("r", r);
+
+
import rust from "highlight.js/lib/languages/rust";
+
+
hljs.registerLanguage("rust", rust);
+
+
import scala from "highlight.js/lib/languages/scala";
+
+
hljs.registerLanguage("scala", scala);
+
+
import scheme from "highlight.js/lib/languages/scheme";
+
+
hljs.registerLanguage("scheme", scheme);
+
+
import scss from "highlight.js/lib/languages/scss";
+
+
hljs.registerLanguage("scss", scss);
+
+
import shell from "highlight.js/lib/languages/shell";
+
+
hljs.registerLanguage("shell", shell);
+
+
import stylus from "highlight.js/lib/languages/stylus";
+
+
hljs.registerLanguage("stylus", stylus);
+
+
import swift from "highlight.js/lib/languages/swift";
+
+
hljs.registerLanguage("swift", swift);
+
+
import yaml from "highlight.js/lib/languages/yaml";
+
+
hljs.registerLanguage("yaml", yaml);
+
+
import vala from "highlight.js/lib/languages/vala";
+
+
hljs.registerLanguage("vala", vala);
+
+
import vim from "highlight.js/lib/languages/vim";
+
+
hljs.registerLanguage("vim", vim);
+
+
import json from "highlight.js/lib/languages/json";
+
+
hljs.registerLanguage("json", json);
+
+
import typescript from "highlight.js/lib/languages/typescript";
+
+
hljs.registerLanguage("typescript", typescript);
+
+
import javascript from "highlight.js/lib/languages/javascript";
+
+
hljs.registerLanguage("javascript", javascript);
+
+
import pgsql from "highlight.js/lib/languages/pgsql";
+
+
hljs.registerLanguage("pgsql", pgsql);
+
+
import sql from "highlight.js/lib/languages/sql";
+
+
hljs.registerLanguage("sql", sql);
+
+
import awk from "highlight.js/lib/languages/awk";
+
+
hljs.registerLanguage("awk", awk);
+5
src/util/highlight.js/gml.ts
···
+
import hljs from "highlight.js";
+
+
import gml from "highlight.js/lib/languages/gml";
+
+
hljs.registerLanguage("gml", gml);
+6
src/util/highlight.js/index.ts
···
+
import "./1c";
+
import "./common";
+
import "./gml";
+
import "./isbl";
+
import "./mathematica";
+
import "./rare";
+5
src/util/highlight.js/isbl.ts
···
+
import hljs from "highlight.js";
+
+
import isbl from "highlight.js/lib/languages/isbl";
+
+
hljs.registerLanguage("isbl", isbl);
+5
src/util/highlight.js/mathematica.ts
···
+
import hljs from "highlight.js";
+
+
import mathematica from "highlight.js/lib/languages/mathematica";
+
+
hljs.registerLanguage("mathematica", mathematica);
+505
src/util/highlight.js/rare.ts
···
+
import hljs from "highlight.js";
+
+
import abnf from "highlight.js/lib/languages/abnf";
+
+
hljs.registerLanguage("abnf", abnf);
+
+
import accesslog from "highlight.js/lib/languages/accesslog";
+
+
hljs.registerLanguage("accesslog", accesslog);
+
+
import ada from "highlight.js/lib/languages/ada";
+
+
hljs.registerLanguage("ada", ada);
+
+
import angelscript from "highlight.js/lib/languages/angelscript";
+
+
hljs.registerLanguage("angelscript", angelscript);
+
+
import apache from "highlight.js/lib/languages/apache";
+
+
hljs.registerLanguage("apache", apache);
+
+
import applescript from "highlight.js/lib/languages/applescript";
+
+
hljs.registerLanguage("applescript", applescript);
+
+
import arcade from "highlight.js/lib/languages/arcade";
+
+
hljs.registerLanguage("arcade", arcade);
+
+
import aspectj from "highlight.js/lib/languages/aspectj";
+
+
hljs.registerLanguage("aspectj", aspectj);
+
+
import autoit from "highlight.js/lib/languages/autoit";
+
+
hljs.registerLanguage("autoit", autoit);
+
+
import axapta from "highlight.js/lib/languages/axapta";
+
+
hljs.registerLanguage("axapta", axapta);
+
+
import bnf from "highlight.js/lib/languages/bnf";
+
+
hljs.registerLanguage("bnf", bnf);
+
+
import brainfuck from "highlight.js/lib/languages/brainfuck";
+
+
hljs.registerLanguage("brainfuck", brainfuck);
+
+
import cal from "highlight.js/lib/languages/cal";
+
+
hljs.registerLanguage("cal", cal);
+
+
import capnproto from "highlight.js/lib/languages/capnproto";
+
+
hljs.registerLanguage("capnproto", capnproto);
+
+
import ceylon from "highlight.js/lib/languages/ceylon";
+
+
hljs.registerLanguage("ceylon", ceylon);
+
+
import clean from "highlight.js/lib/languages/clean";
+
+
hljs.registerLanguage("clean", clean);
+
+
import clojure from "highlight.js/lib/languages/clojure";
+
+
hljs.registerLanguage("clojure", clojure);
+
+
import clojurerepl from "highlight.js/lib/languages/clojure-repl";
+
+
hljs.registerLanguage("clojure-repl", clojurerepl);
+
+
import cmake from "highlight.js/lib/languages/cmake";
+
+
hljs.registerLanguage("cmake", cmake);
+
+
import coq from "highlight.js/lib/languages/coq";
+
+
hljs.registerLanguage("coq", coq);
+
+
import cos from "highlight.js/lib/languages/cos";
+
+
hljs.registerLanguage("cos", cos);
+
+
import crmsh from "highlight.js/lib/languages/crmsh";
+
+
hljs.registerLanguage("crmsh", crmsh);
+
+
import crystal from "highlight.js/lib/languages/crystal";
+
+
hljs.registerLanguage("crystal", crystal);
+
+
import csp from "highlight.js/lib/languages/csp";
+
+
hljs.registerLanguage("csp", csp);
+
+
import d from "highlight.js/lib/languages/d";
+
+
hljs.registerLanguage("d", d);
+
+
import delphi from "highlight.js/lib/languages/delphi";
+
+
hljs.registerLanguage("delphi", delphi);
+
+
import django from "highlight.js/lib/languages/django";
+
+
hljs.registerLanguage("django", django);
+
+
import dns from "highlight.js/lib/languages/dns";
+
+
hljs.registerLanguage("dns", dns);
+
+
import dos from "highlight.js/lib/languages/dos";
+
+
hljs.registerLanguage("dos", dos);
+
+
import dsconfig from "highlight.js/lib/languages/dsconfig";
+
+
hljs.registerLanguage("dsconfig", dsconfig);
+
+
import dts from "highlight.js/lib/languages/dts";
+
+
hljs.registerLanguage("dts", dts);
+
+
import dust from "highlight.js/lib/languages/dust";
+
+
hljs.registerLanguage("dust", dust);
+
+
import ebnf from "highlight.js/lib/languages/ebnf";
+
+
hljs.registerLanguage("ebnf", ebnf);
+
+
import erb from "highlight.js/lib/languages/erb";
+
+
hljs.registerLanguage("erb", erb);
+
+
import fix from "highlight.js/lib/languages/fix";
+
+
hljs.registerLanguage("fix", fix);
+
+
import flix from "highlight.js/lib/languages/flix";
+
+
hljs.registerLanguage("flix", flix);
+
+
import fsharp from "highlight.js/lib/languages/fsharp";
+
+
hljs.registerLanguage("fsharp", fsharp);
+
+
import gams from "highlight.js/lib/languages/gams";
+
+
hljs.registerLanguage("gams", gams);
+
+
import gauss from "highlight.js/lib/languages/gauss";
+
+
hljs.registerLanguage("gauss", gauss);
+
+
import gcode from "highlight.js/lib/languages/gcode";
+
+
hljs.registerLanguage("gcode", gcode);
+
+
import gherkin from "highlight.js/lib/languages/gherkin";
+
+
hljs.registerLanguage("gherkin", gherkin);
+
+
import golo from "highlight.js/lib/languages/golo";
+
+
hljs.registerLanguage("golo", golo);
+
+
import groovy from "highlight.js/lib/languages/groovy";
+
+
hljs.registerLanguage("groovy", groovy);
+
+
import haml from "highlight.js/lib/languages/haml";
+
+
hljs.registerLanguage("haml", haml);
+
+
import handlebars from "highlight.js/lib/languages/handlebars";
+
+
hljs.registerLanguage("handlebars", handlebars);
+
+
import haxe from "highlight.js/lib/languages/haxe";
+
+
hljs.registerLanguage("haxe", haxe);
+
+
import hsp from "highlight.js/lib/languages/hsp";
+
+
hljs.registerLanguage("hsp", hsp);
+
+
import hy from "highlight.js/lib/languages/hy";
+
+
hljs.registerLanguage("hy", hy);
+
+
import inform7 from "highlight.js/lib/languages/inform7";
+
+
hljs.registerLanguage("inform7", inform7);
+
+
import irpf90 from "highlight.js/lib/languages/irpf90";
+
+
hljs.registerLanguage("irpf90", irpf90);
+
+
import jbosscli from "highlight.js/lib/languages/jboss-cli";
+
+
hljs.registerLanguage("jboss-cli", jbosscli);
+
+
import lasso from "highlight.js/lib/languages/lasso";
+
+
hljs.registerLanguage("lasso", lasso);
+
+
import ldif from "highlight.js/lib/languages/ldif";
+
+
hljs.registerLanguage("ldif", ldif);
+
+
import leaf from "highlight.js/lib/languages/leaf";
+
+
hljs.registerLanguage("leaf", leaf);
+
+
import livecodeserver from "highlight.js/lib/languages/livecodeserver";
+
+
hljs.registerLanguage("livecodeserver", livecodeserver);
+
+
import livescript from "highlight.js/lib/languages/livescript";
+
+
hljs.registerLanguage("livescript", livescript);
+
+
import lsl from "highlight.js/lib/languages/lsl";
+
+
hljs.registerLanguage("lsl", lsl);
+
+
import mel from "highlight.js/lib/languages/mel";
+
+
hljs.registerLanguage("mel", mel);
+
+
import mercury from "highlight.js/lib/languages/mercury";
+
+
hljs.registerLanguage("mercury", mercury);
+
+
import mizar from "highlight.js/lib/languages/mizar";
+
+
hljs.registerLanguage("mizar", mizar);
+
+
import mojolicious from "highlight.js/lib/languages/mojolicious";
+
+
hljs.registerLanguage("mojolicious", mojolicious);
+
+
import monkey from "highlight.js/lib/languages/monkey";
+
+
hljs.registerLanguage("monkey", monkey);
+
+
import moonscript from "highlight.js/lib/languages/moonscript";
+
+
hljs.registerLanguage("moonscript", moonscript);
+
+
import n1ql from "highlight.js/lib/languages/n1ql";
+
+
hljs.registerLanguage("n1ql", n1ql);
+
+
import nestedtext from "highlight.js/lib/languages/nestedtext";
+
+
hljs.registerLanguage("nestedtext", nestedtext);
+
+
import nsis from "highlight.js/lib/languages/nsis";
+
+
hljs.registerLanguage("nsis", nsis);
+
+
import objectivec from "highlight.js/lib/languages/objectivec";
+
+
hljs.registerLanguage("objectivec", objectivec);
+
+
import oxygene from "highlight.js/lib/languages/oxygene";
+
+
hljs.registerLanguage("oxygene", oxygene);
+
+
import parser3 from "highlight.js/lib/languages/parser3";
+
+
hljs.registerLanguage("parser3", parser3);
+
+
import pf from "highlight.js/lib/languages/pf";
+
+
hljs.registerLanguage("pf", pf);
+
+
import pony from "highlight.js/lib/languages/pony";
+
+
hljs.registerLanguage("pony", pony);
+
+
import powershell from "highlight.js/lib/languages/powershell";
+
+
hljs.registerLanguage("powershell", powershell);
+
+
import processing from "highlight.js/lib/languages/processing";
+
+
hljs.registerLanguage("processing", processing);
+
+
import profile from "highlight.js/lib/languages/profile";
+
+
hljs.registerLanguage("profile", profile);
+
+
import prolog from "highlight.js/lib/languages/prolog";
+
+
hljs.registerLanguage("prolog", prolog);
+
+
import protobuf from "highlight.js/lib/languages/protobuf";
+
+
hljs.registerLanguage("protobuf", protobuf);
+
+
import puppet from "highlight.js/lib/languages/puppet";
+
+
hljs.registerLanguage("puppet", puppet);
+
+
import purebasic from "highlight.js/lib/languages/purebasic";
+
+
hljs.registerLanguage("purebasic", purebasic);
+
+
import q from "highlight.js/lib/languages/q";
+
+
hljs.registerLanguage("q", q);
+
+
import qml from "highlight.js/lib/languages/qml";
+
+
hljs.registerLanguage("qml", qml);
+
+
import reasonml from "highlight.js/lib/languages/reasonml";
+
+
hljs.registerLanguage("reasonml", reasonml);
+
+
import rib from "highlight.js/lib/languages/rib";
+
+
hljs.registerLanguage("rib", rib);
+
+
import roboconf from "highlight.js/lib/languages/roboconf";
+
+
hljs.registerLanguage("roboconf", roboconf);
+
+
import routeros from "highlight.js/lib/languages/routeros";
+
+
hljs.registerLanguage("routeros", routeros);
+
+
import rsl from "highlight.js/lib/languages/rsl";
+
+
hljs.registerLanguage("rsl", rsl);
+
+
import ruleslanguage from "highlight.js/lib/languages/ruleslanguage";
+
+
hljs.registerLanguage("ruleslanguage", ruleslanguage);
+
+
import sas from "highlight.js/lib/languages/sas";
+
+
hljs.registerLanguage("sas", sas);
+
+
import scilab from "highlight.js/lib/languages/scilab";
+
+
hljs.registerLanguage("scilab", scilab);
+
+
import smali from "highlight.js/lib/languages/smali";
+
+
hljs.registerLanguage("smali", smali);
+
+
import smalltalk from "highlight.js/lib/languages/smalltalk";
+
+
hljs.registerLanguage("smalltalk", smalltalk);
+
+
import sml from "highlight.js/lib/languages/sml";
+
+
hljs.registerLanguage("sml", sml);
+
+
import stan from "highlight.js/lib/languages/stan";
+
+
hljs.registerLanguage("stan", stan);
+
+
import stata from "highlight.js/lib/languages/stata";
+
+
hljs.registerLanguage("stata", stata);
+
+
import step21 from "highlight.js/lib/languages/step21";
+
+
hljs.registerLanguage("step21", step21);
+
+
import subunit from "highlight.js/lib/languages/subunit";
+
+
hljs.registerLanguage("subunit", subunit);
+
+
import taggerscript from "highlight.js/lib/languages/taggerscript";
+
+
hljs.registerLanguage("taggerscript", taggerscript);
+
+
import tap from "highlight.js/lib/languages/tap";
+
+
hljs.registerLanguage("tap", tap);
+
+
import tcl from "highlight.js/lib/languages/tcl";
+
+
hljs.registerLanguage("tcl", tcl);
+
+
import thrift from "highlight.js/lib/languages/thrift";
+
+
hljs.registerLanguage("thrift", thrift);
+
+
import tp from "highlight.js/lib/languages/tp";
+
+
hljs.registerLanguage("tp", tp);
+
+
import twig from "highlight.js/lib/languages/twig";
+
+
hljs.registerLanguage("twig", twig);
+
+
import vbnet from "highlight.js/lib/languages/vbnet";
+
+
hljs.registerLanguage("vbnet", vbnet);
+
+
import vhdl from "highlight.js/lib/languages/vhdl";
+
+
hljs.registerLanguage("vhdl", vhdl);
+
+
import xl from "highlight.js/lib/languages/xl";
+
+
hljs.registerLanguage("xl", xl);
+
+
import xquery from "highlight.js/lib/languages/xquery";
+
+
hljs.registerLanguage("xquery", xquery);
+
+
import zephir from "highlight.js/lib/languages/zephir";
+
+
hljs.registerLanguage("zephir", zephir);
+
+
import sqf from "highlight.js/lib/languages/sqf";
+
+
hljs.registerLanguage("sqf", sqf);
+
+
import maxima from "highlight.js/lib/languages/maxima";
+
+
hljs.registerLanguage("maxima", maxima);
+
+
import wasm from "highlight.js/lib/languages/wasm";
+
+
hljs.registerLanguage("wasm", wasm);
+
+
import wren from "highlight.js/lib/languages/wren";
+
+
hljs.registerLanguage("wren", wren);
+
+
import x86asm from "highlight.js/lib/languages/x86asm";
+
+
hljs.registerLanguage("x86asm", x86asm);
+
+
import armasm from "highlight.js/lib/languages/armasm";
+
+
hljs.registerLanguage("armasm", armasm);
+
+
import asciidoc from "highlight.js/lib/languages/asciidoc";
+
+
hljs.registerLanguage("asciidoc", asciidoc);
+
+
import avrasm from "highlight.js/lib/languages/avrasm";
+
+
hljs.registerLanguage("avrasm", avrasm);
+
+
import mipsasm from "highlight.js/lib/languages/mipsasm";
+
+
hljs.registerLanguage("mipsasm", mipsasm);
+
+
import vbscript from "highlight.js/lib/languages/vbscript";
+
+
hljs.registerLanguage("vbscript", vbscript);
+
+
import vbscripthtml from "highlight.js/lib/languages/vbscript-html";
+
+
hljs.registerLanguage("vbscript-html", vbscripthtml);
+
+
import verilog from "highlight.js/lib/languages/verilog";
+
+
hljs.registerLanguage("verilog", verilog);
+
+
import fortran from "highlight.js/lib/languages/fortran";
+
+
hljs.registerLanguage("fortran", fortran);
+
+
import autohotkey from "highlight.js/lib/languages/autohotkey";
+
+
hljs.registerLanguage("autohotkey", autohotkey);
+
+
import actionscript from "highlight.js/lib/languages/actionscript";
+
+
hljs.registerLanguage("actionscript", actionscript);
+
+
import basic from "highlight.js/lib/languages/basic";
+
+
hljs.registerLanguage("basic", basic);
+
+
import arduino from "highlight.js/lib/languages/arduino";
+
+
hljs.registerLanguage("arduino", arduino);
+
+
import llvm from "highlight.js/lib/languages/llvm";
+
+
hljs.registerLanguage("llvm", llvm);
+
+
import openscad from "highlight.js/lib/languages/openscad";
+
+
hljs.registerLanguage("openscad", openscad);
+
+
import coffeescript from "highlight.js/lib/languages/coffeescript";
+
+
hljs.registerLanguage("coffeescript", coffeescript);
+2
src/util/microcosm.ts
···
+
export const constellationUrl = "https://constellation.microcosm.blue";
+
export const slingshotUrl = "https://slingshot.microcosm.blue";
+59
src/util/types.ts
···
+
export type DID = `did:plc:${string}` | `did:web:${string}`;
+
+
export type RepoLog = {
+
commits: {
+
Author: { Name: string; Email: string; When: string };
+
Committer: { Name: string; Email: string; When: string };
+
Encoding: string;
+
Hash: number[];
+
MergeTag: string;
+
Message: string;
+
PGPSignature: string;
+
ParentHashes: number[][];
+
TreeHash: number[];
+
}[];
+
ref: string;
+
description: string;
+
log: boolean;
+
total: number;
+
page: number;
+
per_page: number;
+
};
+
+
export type DiffTextFragment = {
+
Comment: string;
+
OldPosition: number;
+
NewPosition: number;
+
NewLines: number;
+
LinesAdded: number;
+
LinesDeleted: number;
+
LeadingContext: number;
+
TrailingContext: number;
+
Lines: { Op: number; Line: string }[];
+
is_binary: boolean;
+
is_new: boolean;
+
is_delete: boolean;
+
is_copy: boolean;
+
is_rename: boolean;
+
};
+
+
export type Commit = {
+
ref: string;
+
diff: {
+
commit: {
+
message: string;
+
author: { Name: string; Email: string; When: string };
+
this: string;
+
parent: string;
+
pgp_signature: string;
+
committer: { Name: string; Email: string; When: string };
+
tree: string;
+
change_id: string;
+
};
+
stat: { files_changed: number; insertions: number; deletions: number };
+
diff: {
+
name: { old: string; new: string };
+
text_fragments: DiffTextFragment[];
+
}[];
+
};
+
};
static/fonts/ibm-plex-mono/IBMPlexMono-Bold.woff2

This is a binary file and will not be displayed.

static/fonts/ibm-plex-mono/IBMPlexMono-BoldItalic.woff2

This is a binary file and will not be displayed.

static/fonts/ibm-plex-mono/IBMPlexMono-ExtraLight.woff2

This is a binary file and will not be displayed.

static/fonts/ibm-plex-mono/IBMPlexMono-ExtraLightItalic.woff2

This is a binary file and will not be displayed.

static/fonts/ibm-plex-mono/IBMPlexMono-Italic.woff2

This is a binary file and will not be displayed.

static/fonts/ibm-plex-mono/IBMPlexMono-Light.woff2

This is a binary file and will not be displayed.

static/fonts/ibm-plex-mono/IBMPlexMono-LightItalic.woff2

This is a binary file and will not be displayed.

static/fonts/ibm-plex-mono/IBMPlexMono-Medium.woff2

This is a binary file and will not be displayed.

static/fonts/ibm-plex-mono/IBMPlexMono-MediumItalic.woff2

This is a binary file and will not be displayed.

static/fonts/ibm-plex-mono/IBMPlexMono-Regular.woff2

This is a binary file and will not be displayed.

static/fonts/ibm-plex-mono/IBMPlexMono-SemiBold.woff2

This is a binary file and will not be displayed.

static/fonts/ibm-plex-mono/IBMPlexMono-SemiBoldItalic.woff2

This is a binary file and will not be displayed.

static/fonts/ibm-plex-mono/IBMPlexMono-Text.woff2

This is a binary file and will not be displayed.

static/fonts/ibm-plex-mono/IBMPlexMono-TextItalic.woff2

This is a binary file and will not be displayed.

static/fonts/ibm-plex-mono/IBMPlexMono-Thin.woff2

This is a binary file and will not be displayed.

static/fonts/ibm-plex-mono/IBMPlexMono-ThinItalic.woff2

This is a binary file and will not be displayed.

+163
static/fonts/ibm-plex-mono/ibm-plex-mono.css
···
+
@font-face {
+
font-family: "IBM Plex Mono";
+
font-style: normal;
+
font-weight: 700;
+
src:
+
local("IBM Plex Mono Bold"),
+
local("IBMPlexMono-Bold"),
+
url("../fonts/complete/woff2/IBMPlexMono-Bold.woff2") format("woff2"),
+
url("../fonts/complete/woff/IBMPlexMono-Bold.woff") format("woff");
+
}
+
@font-face {
+
font-family: "IBM Plex Mono";
+
font-style: italic;
+
font-weight: 700;
+
src:
+
local("IBM Plex Mono Bold Italic"),
+
local("IBMPlexMono-BoldItalic"),
+
url("../fonts/complete/woff2/IBMPlexMono-BoldItalic.woff2") format("woff2"),
+
url("../fonts/complete/woff/IBMPlexMono-BoldItalic.woff") format("woff");
+
}
+
@font-face {
+
font-family: "IBM Plex Mono";
+
font-style: normal;
+
font-weight: 200;
+
src:
+
local("IBM Plex Mono ExtraLight"),
+
local("IBMPlexMono-ExtraLight"),
+
url("../fonts/complete/woff2/IBMPlexMono-ExtraLight.woff2") format("woff2"),
+
url("../fonts/complete/woff/IBMPlexMono-ExtraLight.woff") format("woff");
+
}
+
@font-face {
+
font-family: "IBM Plex Mono";
+
font-style: italic;
+
font-weight: 200;
+
src:
+
local("IBM Plex Mono ExtraLight Italic"),
+
local("IBMPlexMono-ExtraLightItalic"),
+
url("../fonts/complete/woff2/IBMPlexMono-ExtraLightItalic.woff2")
+
format("woff2"),
+
url("../fonts/complete/woff/IBMPlexMono-ExtraLightItalic.woff")
+
format("woff");
+
}
+
@font-face {
+
font-family: "IBM Plex Mono";
+
font-style: italic;
+
font-weight: 400;
+
src:
+
local("IBM Plex Mono Italic"),
+
local("IBMPlexMono-Italic"),
+
url("../fonts/complete/woff2/IBMPlexMono-Italic.woff2") format("woff2"),
+
url("../fonts/complete/woff/IBMPlexMono-Italic.woff") format("woff");
+
}
+
@font-face {
+
font-family: "IBM Plex Mono";
+
font-style: normal;
+
font-weight: 300;
+
src:
+
local("IBM Plex Mono Light"),
+
local("IBMPlexMono-Light"),
+
url("../fonts/complete/woff2/IBMPlexMono-Light.woff2") format("woff2"),
+
url("../fonts/complete/woff/IBMPlexMono-Light.woff") format("woff");
+
}
+
@font-face {
+
font-family: "IBM Plex Mono";
+
font-style: italic;
+
font-weight: 300;
+
src:
+
local("IBM Plex Mono Light Italic"),
+
local("IBMPlexMono-LightItalic"),
+
url("../fonts/complete/woff2/IBMPlexMono-LightItalic.woff2") format("woff2"),;
+
}
+
@font-face {
+
font-family: "IBM Plex Mono";
+
font-style: normal;
+
font-weight: 500;
+
src:
+
local("IBM Plex Mono Medium"),
+
local("IBMPlexMono-Medium"),
+
url("../fonts/complete/woff2/IBMPlexMono-Medium.woff2") format("woff2"),
+
url("../fonts/complete/woff/IBMPlexMono-Medium.woff") format("woff");
+
}
+
@font-face {
+
font-family: "IBM Plex Mono";
+
font-style: italic;
+
font-weight: 500;
+
src:
+
local("IBM Plex Mono Medium Italic"),
+
local("IBMPlexMono-MediumItalic"),
+
url("../fonts/complete/woff2/IBMPlexMono-MediumItalic.woff2")
+
format("woff2"),
+
url("../fonts/complete/woff/IBMPlexMono-MediumItalic.woff") format("woff");
+
}
+
@font-face {
+
font-family: "IBM Plex Mono";
+
font-style: normal;
+
font-weight: 400;
+
src:
+
local("IBM Plex Mono"),
+
local("IBMPlexMono"),
+
url("../fonts/complete/woff2/IBMPlexMono-Regular.woff2") format("woff2"),
+
url("../fonts/complete/woff/IBMPlexMono-Regular.woff") format("woff");
+
}
+
@font-face {
+
font-family: "IBM Plex Mono";
+
font-style: normal;
+
font-weight: 600;
+
src:
+
local("IBM Plex Mono SemiBold"),
+
local("IBMPlexMono-SemiBold"),
+
url("../fonts/complete/woff2/IBMPlexMono-SemiBold.woff2") format("woff2"),
+
url("../fonts/complete/woff/IBMPlexMono-SemiBold.woff") format("woff");
+
}
+
@font-face {
+
font-family: "IBM Plex Mono";
+
font-style: italic;
+
font-weight: 600;
+
src:
+
local("IBM Plex Mono SemiBold Italic"),
+
local("IBMPlexMono-SemiBoldItalic"),
+
url("../fonts/complete/woff2/IBMPlexMono-SemiBoldItalic.woff2")
+
format("woff2"),
+
url("../fonts/complete/woff/IBMPlexMono-SemiBoldItalic.woff") format("woff");
+
}
+
@font-face {
+
font-family: "IBM Plex Mono";
+
font-style: normal;
+
font-weight: 450;
+
src:
+
local("IBM Plex Mono Text"),
+
local("IBMPlexMono-Text"),
+
url("../fonts/complete/woff2/IBMPlexMono-Text.woff2") format("woff2"),
+
url("../fonts/complete/woff/IBMPlexMono-Text.woff") format("woff");
+
}
+
@font-face {
+
font-family: "IBM Plex Mono";
+
font-style: italic;
+
font-weight: 450;
+
src:
+
local("IBM Plex Mono Text Italic"),
+
local("IBMPlexMono-TextItalic"),
+
url("../fonts/complete/woff2/IBMPlexMono-TextItalic.woff2") format("woff2"),
+
url("../fonts/complete/woff/IBMPlexMono-TextItalic.woff") format("woff");
+
}
+
@font-face {
+
font-family: "IBM Plex Mono";
+
font-style: normal;
+
font-weight: 100;
+
src:
+
local("IBM Plex Mono Thin"),
+
local("IBMPlexMono-Thin"),
+
url("../fonts/complete/woff2/IBMPlexMono-Thin.woff2") format("woff2"),
+
url("../fonts/complete/woff/IBMPlexMono-Thin.woff") format("woff");
+
}
+
@font-face {
+
font-family: "IBM Plex Mono";
+
font-style: italic;
+
font-weight: 100;
+
src:
+
local("IBM Plex Mono Thin Italic"),
+
local("IBMPlexMono-ThinItalic"),
+
url("../fonts/complete/woff2/IBMPlexMono-ThinItalic.woff2") format("woff2"),
+
url("../fonts/complete/woff/IBMPlexMono-ThinItalic.woff") format("woff");
+
}
+92
static/fonts/ibm-plex-mono/license.txt
···
+
Copyright © 2017 IBM Corp. with Reserved Font Name "Plex"
+
+
This Font Software is licensed under the SIL Open Font License, Version 1.1.
+
This license is copied below, and is also available with a FAQ at:
+
http://scripts.sil.org/OFL
+
+
-----------------------------------------------------------
+
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+
-----------------------------------------------------------
+
+
PREAMBLE
+
The goals of the Open Font License (OFL) are to stimulate worldwide
+
development of collaborative font projects, to support the font creation
+
efforts of academic and linguistic communities, and to provide a free and
+
open framework in which fonts may be shared and improved in partnership
+
with others.
+
+
The OFL allows the licensed fonts to be used, studied, modified and
+
redistributed freely as long as they are not sold by themselves. The
+
fonts, including any derivative works, can be bundled, embedded,
+
redistributed and/or sold with any software provided that any reserved
+
names are not used by derivative works. The fonts and derivatives,
+
however, cannot be released under any other type of license. The
+
requirement for fonts to remain under this license does not apply
+
to any document created using the fonts or their derivatives.
+
+
DEFINITIONS
+
"Font Software" refers to the set of files released by the Copyright
+
Holder(s) under this license and clearly marked as such. This may
+
include source files, build scripts and documentation.
+
+
"Reserved Font Name" refers to any names specified as such after the
+
copyright statement(s).
+
+
"Original Version" refers to the collection of Font Software components as
+
distributed by the Copyright Holder(s).
+
+
"Modified Version" refers to any derivative made by adding to, deleting,
+
or substituting -- in part or in whole -- any of the components of the
+
Original Version, by changing formats or by porting the Font Software to a
+
new environment.
+
+
"Author" refers to any designer, engineer, programmer, technical
+
writer or other person who contributed to the Font Software.
+
+
PERMISSION & CONDITIONS
+
Permission is hereby granted, free of charge, to any person obtaining
+
a copy of the Font Software, to use, study, copy, merge, embed, modify,
+
redistribute, and sell modified and unmodified copies of the Font
+
Software, subject to the following conditions:
+
+
1) Neither the Font Software nor any of its individual components,
+
in Original or Modified Versions, may be sold by itself.
+
+
2) Original or Modified Versions of the Font Software may be bundled,
+
redistributed and/or sold with any software, provided that each copy
+
contains the above copyright notice and this license. These can be
+
included either as stand-alone text files, human-readable headers or
+
in the appropriate machine-readable metadata fields within text or
+
binary files as long as those fields can be easily viewed by the user.
+
+
3) No Modified Version of the Font Software may use the Reserved Font
+
Name(s) unless explicit written permission is granted by the corresponding
+
Copyright Holder. This restriction only applies to the primary font name as
+
presented to the users.
+
+
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+
Software shall not be used to promote, endorse or advertise any
+
Modified Version, except to acknowledge the contribution(s) of the
+
Copyright Holder(s) and the Author(s) or with their explicit written
+
permission.
+
+
5) The Font Software, modified or unmodified, in part or in whole,
+
must be distributed entirely under this license, and must not be
+
distributed under any other license. The requirement for fonts to
+
remain under this license does not apply to any document created
+
using the Font Software.
+
+
TERMINATION
+
This license becomes null and void if any of the above conditions are
+
not met.
+
+
DISCLAIMER
+
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+
OTHER DEALINGS IN THE FONT SOFTWARE.
static/fonts/inter/InterVariable-Italic.woff2

This is a binary file and will not be displayed.

static/fonts/inter/InterVariable.woff2

This is a binary file and will not be displayed.

+92
static/fonts/inter/LICENSE.txt
···
+
Copyright (c) 2016 The Inter Project Authors (https://github.com/rsms/inter)
+
+
This Font Software is licensed under the SIL Open Font License, Version 1.1.
+
This license is copied below, and is also available with a FAQ at:
+
http://scripts.sil.org/OFL
+
+
-----------------------------------------------------------
+
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+
-----------------------------------------------------------
+
+
PREAMBLE
+
The goals of the Open Font License (OFL) are to stimulate worldwide
+
development of collaborative font projects, to support the font creation
+
efforts of academic and linguistic communities, and to provide a free and
+
open framework in which fonts may be shared and improved in partnership
+
with others.
+
+
The OFL allows the licensed fonts to be used, studied, modified and
+
redistributed freely as long as they are not sold by themselves. The
+
fonts, including any derivative works, can be bundled, embedded,
+
redistributed and/or sold with any software provided that any reserved
+
names are not used by derivative works. The fonts and derivatives,
+
however, cannot be released under any other type of license. The
+
requirement for fonts to remain under this license does not apply
+
to any document created using the fonts or their derivatives.
+
+
DEFINITIONS
+
"Font Software" refers to the set of files released by the Copyright
+
Holder(s) under this license and clearly marked as such. This may
+
include source files, build scripts and documentation.
+
+
"Reserved Font Name" refers to any names specified as such after the
+
copyright statement(s).
+
+
"Original Version" refers to the collection of Font Software components as
+
distributed by the Copyright Holder(s).
+
+
"Modified Version" refers to any derivative made by adding to, deleting,
+
or substituting -- in part or in whole -- any of the components of the
+
Original Version, by changing formats or by porting the Font Software to a
+
new environment.
+
+
"Author" refers to any designer, engineer, programmer, technical
+
writer or other person who contributed to the Font Software.
+
+
PERMISSION AND CONDITIONS
+
Permission is hereby granted, free of charge, to any person obtaining
+
a copy of the Font Software, to use, study, copy, merge, embed, modify,
+
redistribute, and sell modified and unmodified copies of the Font
+
Software, subject to the following conditions:
+
+
1) Neither the Font Software nor any of its individual components,
+
in Original or Modified Versions, may be sold by itself.
+
+
2) Original or Modified Versions of the Font Software may be bundled,
+
redistributed and/or sold with any software, provided that each copy
+
contains the above copyright notice and this license. These can be
+
included either as stand-alone text files, human-readable headers or
+
in the appropriate machine-readable metadata fields within text or
+
binary files as long as those fields can be easily viewed by the user.
+
+
3) No Modified Version of the Font Software may use the Reserved Font
+
Name(s) unless explicit written permission is granted by the corresponding
+
Copyright Holder. This restriction only applies to the primary font name as
+
presented to the users.
+
+
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+
Software shall not be used to promote, endorse or advertise any
+
Modified Version, except to acknowledge the contribution(s) of the
+
Copyright Holder(s) and the Author(s) or with their explicit written
+
permission.
+
+
5) The Font Software, modified or unmodified, in part or in whole,
+
must be distributed entirely under this license, and must not be
+
distributed under any other license. The requirement for fonts to
+
remain under this license does not apply to any document created
+
using the Font Software.
+
+
TERMINATION
+
This license becomes null and void if any of the above conditions are
+
not met.
+
+
DISCLAIMER
+
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+
OTHER DEALINGS IN THE FONT SOFTWARE.
+70
static/fonts/inter/inter.css
···
+
/* biome-ignore-all lint/correctness/noUnknownProperty: don't know why you dont get it */
+
+
/* Variable fonts usage:
+
:root { font-family: "Inter", sans-serif; }
+
@supports (font-variation-settings: normal) {
+
:root { font-family: "InterVariable", sans-serif; font-optical-sizing: auto; }
+
} */
+
@font-face {
+
font-family: InterVariable;
+
font-style: normal;
+
font-weight: 100 900;
+
font-display: swap;
+
src: url("InterVariable.woff2") format("woff2");
+
}
+
@font-face {
+
font-family: InterVariable;
+
font-style: italic;
+
font-weight: 100 900;
+
font-display: swap;
+
src: url("InterVariable-Italic.woff2") format("woff2");
+
}
+
+
@font-feature-values InterVariable {
+
@character-variant {
+
cv01: 1;
+
cv02: 2;
+
cv03: 3;
+
cv04: 4;
+
cv05: 5;
+
cv06: 6;
+
cv07: 7;
+
cv08: 8;
+
cv09: 9;
+
cv10: 10;
+
cv11: 11;
+
cv12: 12;
+
cv13: 13;
+
alt-1: 1; /* Alternate one */
+
alt-3: 9; /* Flat-top three */
+
open-4: 2; /* Open four */
+
open-6: 3; /* Open six */
+
open-9: 4; /* Open nine */
+
lc-l-with-tail: 5; /* Lower-case L with tail */
+
simplified-u: 6; /* Simplified u */
+
alt-double-s: 7; /* Alternate German double s */
+
uc-i-with-serif: 8; /* Upper-case i with serif */
+
uc-g-with-spur: 10; /* Capital G with spur */
+
single-story-a: 11; /* Single-story a */
+
compact-lc-f: 12; /* Compact f */
+
compact-lc-t: 13; /* Compact t */
+
}
+
@styleset {
+
ss01: 1;
+
ss02: 2;
+
ss03: 3;
+
ss04: 4;
+
ss05: 5;
+
ss06: 6;
+
ss07: 7;
+
ss08: 8;
+
open-digits: 1; /* Open digits */
+
disambiguation: 2; /* Disambiguation (with zero) */
+
disambiguation-except-zero: 4; /* Disambiguation (no zero) */
+
round-quotes-and-commas: 3; /* Round quotes &amp; commas */
+
square-punctuation: 7; /* Square punctuation */
+
square-quotes: 8; /* Square quotes */
+
circled-characters: 5; /* Circled characters */
+
squared-characters: 6; /* Squared characters */
+
}
+
}
+20
tsconfig.json
···
+
{
+
"compilerOptions": {
+
// General
+
"jsx": "preserve",
+
"jsxImportSource": "solid-js",
+
"target": "ESNext",
+
+
// Modules
+
"allowSyntheticDefaultImports": true,
+
"esModuleInterop": true,
+
"isolatedModules": true,
+
"module": "ESNext",
+
"moduleResolution": "bundler",
+
"noEmit": true,
+
+
// Type Checking & Safety
+
"strict": true,
+
"types": ["vite/client", "solid-js", "@atcute/tangled", "@atcute/atproto"]
+
}
+
}
+33
vite.config.ts
···
+
import tailwindcss from "@tailwindcss/vite";
+
import devtools from "solid-devtools/vite";
+
import { defineConfig } from "vite";
+
import solidPlugin from "vite-plugin-solid";
+
+
export default defineConfig({
+
plugins: [devtools(), solidPlugin(), tailwindcss()],
+
server: {
+
port: 3000,
+
},
+
build: {
+
target: "esnext",
+
rollupOptions: {
+
output: {
+
manualChunks: {
+
hljs: [
+
"src/util/highlight.js/common",
+
"highlight.js",
+
"@gleam-lang/highlight.js-gleam",
+
],
+
hljs1c: ["src/util/highlight.js/1c"],
+
hljsGml: ["src/util/highlight.js/gml"],
+
hljsIsbl: ["src/util/highlight.js/isbl"],
+
hljsMathematica: ["src/util/highlight.js/mathematica"],
+
hljsRare: ["src/util/highlight.js/rare"],
+
},
+
},
+
},
+
},
+
optimizeDeps: {
+
include: ["micromark", "unified"],
+
},
+
});