chore: add Justfile, apply clippy fixes, add frontend type checking

- Add Justfile with comprehensive development workflow commands (check,
lint, build, docker, etc.)
- Add @astrojs/check and typescript dependencies for frontend type
checking
This commit is contained in:
2025-12-11 12:15:15 -06:00
parent 8129975ecc
commit 006055cb7f
12 changed files with 719 additions and 41 deletions

109
Justfile Normal file
View File

@@ -0,0 +1,109 @@
# Variables
image_name := "dynamic-preauth"
container_name := "dynamic-preauth-dev"
port := "5800"
# Default recipe
default:
@just --list
# Run all checks (format, clippy, frontend)
check: format-check lint frontend-check
@echo "All checks passed!"
# Format all Rust code
format:
@echo "Formatting code..."
cargo fmt --all
cargo fmt --manifest-path demo/Cargo.toml --all
# Check formatting without modifying
format-check:
@echo "Checking formatting..."
cargo fmt --all -- --check
cargo fmt --manifest-path demo/Cargo.toml --all -- --check
# Lint with clippy
lint:
@echo "Running clippy..."
cargo clippy --all-targets --all-features -- -D warnings
cargo clippy --manifest-path demo/Cargo.toml --all-targets --all-features -- -D warnings
# Frontend type check
frontend-check:
@echo "Checking frontend..."
pnpm --dir frontend astro check
# Build frontend
frontend-build:
@echo "Building frontend..."
pnpm --dir frontend build
# Development server with hot reload
dev:
@echo "Starting development server..."
cargo watch -x run
# Simple development run (no hot reload)
run:
@echo "Starting server..."
cargo run
# Build release
build:
@echo "Building release..."
cargo build --release
# Build demo executables
build-demo:
@echo "Building demo executables..."
cargo build --manifest-path demo/Cargo.toml --release
# Security audit
audit:
@echo "Running security audit..."
cargo audit
cargo audit --file demo/Cargo.lock
# Build Docker image
docker-build:
@echo "Building Docker image..."
docker build -t {{image_name}}:latest .
# Run Docker container
docker-run: docker-build
@echo "Running Docker container..."
docker run --rm -d --name {{container_name}} -p {{port}}:{{port}} -e PORT={{port}} {{image_name}}:latest
@echo "Container started at http://localhost:{{port}}"
# Stop Docker container
docker-stop:
@echo "Stopping Docker container..."
docker stop {{container_name}} || true
# Docker logs
docker-logs:
docker logs {{container_name}}
# Follow Docker logs
docker-logs-follow:
docker logs -f {{container_name}}
# Clean Docker artifacts
docker-clean: docker-stop
@echo "Cleaning Docker artifacts..."
docker rmi {{image_name}}:latest || true
# Clean cargo artifacts
clean:
@echo "Cleaning cargo artifacts..."
cargo clean
cargo clean --manifest-path demo/Cargo.toml
# Full CI pipeline
ci: format-check lint frontend-check build docker-build
@echo "CI pipeline completed!"
# Quick development check
quick: format lint
@echo "Quick check completed!"

View File

@@ -35,7 +35,7 @@ fn main() -> Result<(), Box<dyn Error>> {
};
let json_data = serde_json::to_string(&key_data)?;
write!(f, "{}", json_data.to_string())?;
write!(f, "{}", json_data)?;
Ok(())
}

View File

@@ -9,8 +9,8 @@ struct KeyData<'a> {
compile_time: String,
}
static KEY: &'static str = include_str!(concat!(env!("OUT_DIR"), "/key.json"));
const HOST_INFO: (&'static str, &'static str) = match option_env!("RAILWAY_PUBLIC_DOMAIN") {
static KEY: &str = include_str!(concat!(env!("OUT_DIR"), "/key.json"));
const HOST_INFO: (&str, &str) = match option_env!("RAILWAY_PUBLIC_DOMAIN") {
Some(domain) => ("https", domain),
None => ("http", "localhost:5800"),
};
@@ -67,7 +67,7 @@ fn main() {
fn request(token: u32) {
let client = reqwest::blocking::Client::new();
let response = client
.post(&format!(
.post(format!(
"{}://{}/notify?key=0x{:08X}",
HOST_INFO.0, HOST_INFO.1, token
))

View File

@@ -1,5 +1,5 @@
// @ts-check
import { defineConfig, envField } from "astro/config";
import { defineConfig } from "astro/config";
import tailwind from "@astrojs/tailwind";
import sitemap from "@astrojs/sitemap";

View File

@@ -9,6 +9,7 @@
"astro": "astro"
},
"dependencies": {
"@astrojs/check": "^0.9.6",
"@astrojs/react": "^4.1.2",
"@astrojs/sitemap": "^3.2.1",
"@astrojs/tailwind": "^5.1.4",
@@ -24,7 +25,8 @@
"react-tooltip": "^5.28.0",
"react-use-websocket": "^4.11.1",
"tailwind-merge": "^2.5.5",
"tailwindcss": "^3.4.17"
"tailwindcss": "^3.4.17",
"typescript": "^5.9.3"
},
"packageManager": "pnpm@9.15.1+sha512.1acb565e6193efbebda772702950469150cf12bcc764262e7587e71d19dc98a423dff9536e57ea44c49bdf790ff694e83c27be5faa23d67e0c033b583be4bfcf",
"devDependencies": {

615
frontend/pnpm-lock.yaml generated
View File

@@ -8,15 +8,18 @@ importers:
.:
dependencies:
'@astrojs/check':
specifier: ^0.9.6
version: 0.9.6(prettier@3.7.4)(typescript@5.9.3)
'@astrojs/react':
specifier: ^4.1.2
version: 4.1.2(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(jiti@2.4.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass-embedded@1.83.0)(yaml@2.6.1)
version: 4.1.2(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(jiti@2.4.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass-embedded@1.83.0)(yaml@2.7.1)
'@astrojs/sitemap':
specifier: ^3.2.1
version: 3.2.1
'@astrojs/tailwind':
specifier: ^5.1.4
version: 5.1.4(astro@5.1.1(jiti@2.4.2)(rollup@4.29.1)(sass-embedded@1.83.0)(typescript@5.7.2)(yaml@2.6.1))(tailwindcss@3.4.17)
version: 5.1.4(astro@5.1.1(jiti@2.4.2)(rollup@4.29.1)(sass-embedded@1.83.0)(typescript@5.9.3)(yaml@2.7.1))(tailwindcss@3.4.17)
'@headlessui/react':
specifier: ^2.2.0
version: 2.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
@@ -34,7 +37,7 @@ importers:
version: 19.0.2(@types/react@19.0.2)
astro:
specifier: ^5.1.1
version: 5.1.1(jiti@2.4.2)(rollup@4.29.1)(sass-embedded@1.83.0)(typescript@5.7.2)(yaml@2.6.1)
version: 5.1.1(jiti@2.4.2)(rollup@4.29.1)(sass-embedded@1.83.0)(typescript@5.9.3)(yaml@2.7.1)
clsx:
specifier: ^2.1.1
version: 2.1.1
@@ -56,6 +59,9 @@ importers:
tailwindcss:
specifier: ^3.4.17
version: 3.4.17
typescript:
specifier: ^5.9.3
version: 5.9.3
devDependencies:
sass-embedded:
specifier: ^1.83.0
@@ -71,12 +77,30 @@ packages:
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
engines: {node: '>=6.0.0'}
'@astrojs/check@0.9.6':
resolution: {integrity: sha512-jlaEu5SxvSgmfGIFfNgcn5/f+29H61NJzEMfAZ82Xopr4XBchXB1GVlcJsE+elUlsYSbXlptZLX+JMG3b/wZEA==}
hasBin: true
peerDependencies:
typescript: ^5.0.0
'@astrojs/compiler@2.10.3':
resolution: {integrity: sha512-bL/O7YBxsFt55YHU021oL+xz+B/9HvGNId3F9xURN16aeqDK9juHGktdkCSXz+U4nqFACq6ZFvWomOzhV+zfPw==}
'@astrojs/internal-helpers@0.4.2':
resolution: {integrity: sha512-EdDWkC3JJVcpGpqJAU/5hSk2LKXyG3mNGkzGoAuyK+xoPHbaVdSuIWoN1QTnmK3N/gGfaaAfM8gO2KDCAW7S3w==}
'@astrojs/language-server@2.16.2':
resolution: {integrity: sha512-J3hVx/mFi3FwEzKf8ExYXQNERogD6RXswtbU+TyrxoXRBiQoBO5ooo7/lRWJ+rlUKUd7+rziMPI9jYB7TRlh0w==}
hasBin: true
peerDependencies:
prettier: ^3.0.0
prettier-plugin-astro: '>=0.11.0'
peerDependenciesMeta:
prettier:
optional: true
prettier-plugin-astro:
optional: true
'@astrojs/markdown-remark@6.0.1':
resolution: {integrity: sha512-CTSYijj25NfxgZi15TU3CwPwgyD1/7yA3FcdcNmB9p94nydupiUbrIiq3IqeTp2m5kCVzxbPZeC7fTwEOaNyGw==}
@@ -106,6 +130,9 @@ packages:
resolution: {integrity: sha512-wxhSKRfKugLwLlr4OFfcqovk+LIFtKwLyGPqMsv+9/ibqqnW3Gv7tBhtKEb0gAyUAC4G9BTVQeQahqnQAhd6IQ==}
engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0}
'@astrojs/yaml2ts@0.2.2':
resolution: {integrity: sha512-GOfvSr5Nqy2z5XiwqTouBBpy5FyI6DEe+/g/Mk5am9SjILN1S5fOEvYK0GuWHg98yS/dobP4m8qyqw/URW35fQ==}
'@babel/code-frame@7.26.2':
resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==}
engines: {node: '>=6.9.0'}
@@ -188,6 +215,27 @@ packages:
'@bufbuild/protobuf@2.2.3':
resolution: {integrity: sha512-tFQoXHJdkEOSwj5tRIZSPNUuXK3RaR7T1nUrPgbYX1pUbvqqaaZAsfo+NXBPsz5rZMSKVFrgK1WL8Q/MSLvprg==}
'@emmetio/abbreviation@2.3.3':
resolution: {integrity: sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==}
'@emmetio/css-abbreviation@2.1.8':
resolution: {integrity: sha512-s9yjhJ6saOO/uk1V74eifykk2CBYi01STTK3WlXWGOepyKa23ymJ053+DNQjpFcy1ingpaO7AxCcwLvHFY9tuw==}
'@emmetio/css-parser@0.4.1':
resolution: {integrity: sha512-2bC6m0MV/voF4CTZiAbG5MWKbq5EBmDPKu9Sb7s7nVcEzNQlrZP6mFFFlIaISM8X6514H9shWMme1fCm8cWAfQ==}
'@emmetio/html-matcher@1.3.0':
resolution: {integrity: sha512-NTbsvppE5eVyBMuyGfVu2CRrLvo7J4YHb6t9sBFLyY03WYhXET37qA4zOYUjBWFCRHO7pS1B9khERtY0f5JXPQ==}
'@emmetio/scanner@1.0.4':
resolution: {integrity: sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==}
'@emmetio/stream-reader-utils@0.1.0':
resolution: {integrity: sha512-ZsZ2I9Vzso3Ho/pjZFsmmZ++FWeEd/txqybHTm4OgaZzdS8V9V/YYWQwg5TC38Z7uLWUV1vavpLLbjJtKubR1A==}
'@emmetio/stream-reader@2.2.0':
resolution: {integrity: sha512-fXVXEyFA5Yv3M3n8sUGT7+fvecGrZP4k6FnWWMSZVQf69kAq0LLpaBQLGcPR30m3zMmKYhECP4k/ZkzvhEW5kw==}
'@emnapi/runtime@1.3.1':
resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==}
@@ -966,11 +1014,48 @@ packages:
peerDependencies:
vite: ^4.2.0 || ^5.0.0 || ^6.0.0
'@volar/kit@2.4.27':
resolution: {integrity: sha512-ilZoQDMLzqmSsImJRWx4YiZ4FcvvPrPnFVmL6hSsIWB6Bn3qc7k88J9yP32dagrs5Y8EXIlvvD/mAFaiuEOACQ==}
peerDependencies:
typescript: '*'
'@volar/language-core@2.4.27':
resolution: {integrity: sha512-DjmjBWZ4tJKxfNC1F6HyYERNHPYS7L7OPFyCrestykNdUZMFYzI9WTyvwPcaNaHlrEUwESHYsfEw3isInncZxQ==}
'@volar/language-server@2.4.27':
resolution: {integrity: sha512-SymGNkErcHg8GjiG65iQN8sLkhqu1pwKhFySmxeBuYq5xFYagKBW36eiNITXQTdvT0tutI1GXcXdq/FdE/IyjA==}
'@volar/language-service@2.4.27':
resolution: {integrity: sha512-SxKZ8yLhpWa7Y5e/RDxtNfm7j7xsXp/uf2urijXEffRNpPSmVdfzQrFFy5d7l8PNpZy+bHg+yakmqBPjQN+MOw==}
'@volar/source-map@2.4.27':
resolution: {integrity: sha512-ynlcBReMgOZj2i6po+qVswtDUeeBRCTgDurjMGShbm8WYZgJ0PA4RmtebBJ0BCYol1qPv3GQF6jK7C9qoVc7lg==}
'@volar/typescript@2.4.27':
resolution: {integrity: sha512-eWaYCcl/uAPInSK2Lze6IqVWaBu/itVqR5InXcHXFyles4zO++Mglt3oxdgj75BDcv1Knr9Y93nowS8U3wqhxg==}
'@vscode/emmet-helper@2.11.0':
resolution: {integrity: sha512-QLxjQR3imPZPQltfbWRnHU6JecWTF1QSWhx3GAKQpslx7y3Dp6sIIXhKjiUJ/BR9FX8PVthjr9PD6pNwOJfAzw==}
'@vscode/l10n@0.0.18':
resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==}
acorn@8.14.0:
resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==}
engines: {node: '>=0.4.0'}
hasBin: true
ajv-draft-04@1.0.0:
resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==}
peerDependencies:
ajv: ^8.5.0
peerDependenciesMeta:
ajv:
optional: true
ajv@8.17.1:
resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==}
ansi-align@3.0.1:
resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==}
@@ -1092,6 +1177,10 @@ packages:
resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
engines: {node: '>= 8.10.0'}
chokidar@4.0.3:
resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
engines: {node: '>= 14.16.0'}
ci-info@4.1.0:
resolution: {integrity: sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==}
engines: {node: '>=8'}
@@ -1110,6 +1199,10 @@ packages:
resolution: {integrity: sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==}
engines: {node: '>=18'}
cliui@8.0.1:
resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
engines: {node: '>=12'}
clsx@2.1.1:
resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
engines: {node: '>=6'}
@@ -1234,6 +1327,9 @@ packages:
electron-to-chromium@1.5.75:
resolution: {integrity: sha512-Lf3++DumRE/QmweGjU+ZcKqQ+3bKkU/qjaKYhIJKEOhgIO9Xs6IiAQFkfFoj+RhgDk4LUeNsLo6plExHqSyu6Q==}
emmet@2.4.11:
resolution: {integrity: sha512-23QPJB3moh/U9sT4rQzGgeyyGIrcM+GH5uVYg2C6wZIxAIJq7Ng3QLT79tl8FUwDXhyq9SusfknOrofAKqvgyQ==}
emoji-regex-xs@1.0.0:
resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==}
@@ -1292,10 +1388,16 @@ packages:
extend@3.0.2:
resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
fast-deep-equal@3.1.3:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
fast-glob@3.3.2:
resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
engines: {node: '>=8.6.0'}
fast-uri@3.1.0:
resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==}
fastq@1.17.1:
resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
@@ -1337,6 +1439,10 @@ packages:
resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
engines: {node: '>=6.9.0'}
get-caller-file@2.0.5:
resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
engines: {node: 6.* || 8.* || >= 10.*}
get-east-asian-width@1.3.0:
resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==}
engines: {node: '>=18'}
@@ -1520,11 +1626,20 @@ packages:
engines: {node: '>=6'}
hasBin: true
json-schema-traverse@1.0.0:
resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
json5@2.2.3:
resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
engines: {node: '>=6'}
hasBin: true
jsonc-parser@2.3.1:
resolution: {integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==}
jsonc-parser@3.3.1:
resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==}
kleur@3.0.3:
resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
engines: {node: '>=6'}
@@ -1561,6 +1676,9 @@ packages:
lodash.merge@4.6.2:
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
lodash@4.17.21:
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
longest-streak@3.1.0:
resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
@@ -1740,6 +1858,9 @@ packages:
ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
muggle-string@0.4.1:
resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==}
mz@2.7.0:
resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
@@ -1834,6 +1955,9 @@ packages:
parse5@7.2.1:
resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==}
path-browserify@1.0.1:
resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
path-exists@4.0.0:
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
engines: {node: '>=8'}
@@ -1935,6 +2059,11 @@ packages:
resolution: {integrity: sha512-gYBeFTZLu055D8Vv3cSPox/0iTPtkzxpLroSYYA7WXgRi31WCJ51Uyl8ZiPeUUjyvs2MBzK+S8v9JVUgHU/Sqw==}
engines: {node: '>=18.12'}
prettier@3.7.4:
resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==}
engines: {node: '>=14'}
hasBin: true
prismjs@1.29.0:
resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==}
engines: {node: '>=6'}
@@ -1981,6 +2110,10 @@ packages:
resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
engines: {node: '>=8.10.0'}
readdirp@4.1.2:
resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
engines: {node: '>= 14.18.0'}
regex-recursion@5.0.0:
resolution: {integrity: sha512-UwyOqeobrCCqTXPcsSqH4gDhOjD5cI/b8kjngWgSZbxYh5yVjAwTjO5+hAuPRNiuR70+5RlWSs+U9PVcVcW9Lw==}
@@ -2018,6 +2151,20 @@ packages:
remark-stringify@11.0.0:
resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==}
request-light@0.5.8:
resolution: {integrity: sha512-3Zjgh+8b5fhRJBQZoy+zbVKpAQGLyka0MPgW3zruTF4dFFJ8Fqcfu9YsAvi/rvdcaTeWG3MkbZv4WKxAn/84Lg==}
request-light@0.7.0:
resolution: {integrity: sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==}
require-directory@2.1.1:
resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
engines: {node: '>=0.10.0'}
require-from-string@2.0.2:
resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
engines: {node: '>=0.10.0'}
resolve@1.22.10:
resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==}
engines: {node: '>= 0.4'}
@@ -2343,8 +2490,14 @@ packages:
resolution: {integrity: sha512-UJShLPYi1aWqCdq9HycOL/gwsuqda1OISdBO3t8RlXQC4QvtuIz4b5FCfe2dQIWEpmlRExKmcTBfP1r9bhY7ig==}
engines: {node: '>=16'}
typescript@5.7.2:
resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==}
typesafe-path@0.2.2:
resolution: {integrity: sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==}
typescript-auto-import-cache@0.3.6:
resolution: {integrity: sha512-RpuHXrknHdVdK7wv/8ug3Fr0WNsNi5l5aB8MYYuXhq2UH5lnEB1htJ1smhtD5VeCsGr2p8mUDtd83LCQDFVgjQ==}
typescript@5.9.3:
resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
engines: {node: '>=14.17'}
hasBin: true
@@ -2525,6 +2678,98 @@ packages:
vite:
optional: true
volar-service-css@0.0.67:
resolution: {integrity: sha512-zV7C6enn9T9tuvQ6iSUyYEs34iPXR69Pf9YYWpbFYPWzVs22w96BtE8p04XYXbmjU6unt5oFt+iLL77bMB5fhA==}
peerDependencies:
'@volar/language-service': ~2.4.0
peerDependenciesMeta:
'@volar/language-service':
optional: true
volar-service-emmet@0.0.67:
resolution: {integrity: sha512-UDBL5x7KptmuJZNCCXMlCndMhFult/tj+9jXq3FH1ZGS1E4M/1U5hC06pg1c6e4kn+vnR6bqmvX0vIhL4f98+A==}
peerDependencies:
'@volar/language-service': ~2.4.0
peerDependenciesMeta:
'@volar/language-service':
optional: true
volar-service-html@0.0.67:
resolution: {integrity: sha512-ljREMF79JbcjNvObiv69HK2HCl5UT7WTD10zi6CRFUHMbPfiF2UZ42HGLsEGSzaHGZz6H4IFjSS/qfENRLUviQ==}
peerDependencies:
'@volar/language-service': ~2.4.0
peerDependenciesMeta:
'@volar/language-service':
optional: true
volar-service-prettier@0.0.67:
resolution: {integrity: sha512-B4KnPJPNWFTkEDa6Fn08i5PpO6T1CecmLLTFZoXz2eI4Fxwba/3nDaaVSsEP7e/vEe+U5YqV9fBzayJT71G5xg==}
peerDependencies:
'@volar/language-service': ~2.4.0
prettier: ^2.2 || ^3.0
peerDependenciesMeta:
'@volar/language-service':
optional: true
prettier:
optional: true
volar-service-typescript-twoslash-queries@0.0.67:
resolution: {integrity: sha512-LD2R7WivDYp1SPgZrxx/0222xVTitDjm36oKo5+bfYG5kEgnw+BOPVHdwmvpJKg/RfssfxDI1ouwD4XkEDEfbA==}
peerDependencies:
'@volar/language-service': ~2.4.0
peerDependenciesMeta:
'@volar/language-service':
optional: true
volar-service-typescript@0.0.67:
resolution: {integrity: sha512-rfQBy36Rm1PU9vLWHk8BYJ4r2j/CI024vocJcH4Nb6K2RTc2Irmw6UOVY5DdGiPRV5r+e10wLMK5njj/EcL8sA==}
peerDependencies:
'@volar/language-service': ~2.4.0
peerDependenciesMeta:
'@volar/language-service':
optional: true
volar-service-yaml@0.0.67:
resolution: {integrity: sha512-jkdP/RF6wPIXEE3Ktnd81oJPn7aAvnVSiaqQHThC2Hrvo6xd9pEcqtbBUI+YfqVgvcMtXAkbtNO61K2GPhAiuA==}
peerDependencies:
'@volar/language-service': ~2.4.0
peerDependenciesMeta:
'@volar/language-service':
optional: true
vscode-css-languageservice@6.3.9:
resolution: {integrity: sha512-1tLWfp+TDM5ZuVWht3jmaY5y7O6aZmpeXLoHl5bv1QtRsRKt4xYGRMmdJa5Pqx/FTkgRbsna9R+Gn2xE+evVuA==}
vscode-html-languageservice@5.6.1:
resolution: {integrity: sha512-5Mrqy5CLfFZUgkyhNZLA1Ye5g12Cb/v6VM7SxUzZUaRKWMDz4md+y26PrfRTSU0/eQAl3XpO9m2og+GGtDMuaA==}
vscode-json-languageservice@4.1.8:
resolution: {integrity: sha512-0vSpg6Xd9hfV+eZAaYN63xVVMOTmJ4GgHxXnkLCh+9RsQBkWKIghzLhW2B9ebfG+LQQg8uLtsQ2aUKjTgE+QOg==}
engines: {npm: '>=7.0.0'}
vscode-jsonrpc@8.2.0:
resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==}
engines: {node: '>=14.0.0'}
vscode-languageserver-protocol@3.17.5:
resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==}
vscode-languageserver-textdocument@1.0.12:
resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==}
vscode-languageserver-types@3.17.5:
resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==}
vscode-languageserver@9.0.1:
resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==}
hasBin: true
vscode-nls@5.2.0:
resolution: {integrity: sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==}
vscode-uri@3.1.0:
resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==}
web-namespaces@2.0.1:
resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==}
@@ -2560,18 +2805,35 @@ packages:
xxhash-wasm@1.1.0:
resolution: {integrity: sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==}
y18n@5.0.8:
resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
engines: {node: '>=10'}
yallist@3.1.1:
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
yaml-language-server@1.19.2:
resolution: {integrity: sha512-9F3myNmJzUN/679jycdMxqtydPSDRAarSj3wPiF7pchEPnO9Dg07Oc+gIYLqXR4L+g+FSEVXXv2+mr54StLFOg==}
hasBin: true
yaml@2.6.1:
resolution: {integrity: sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==}
engines: {node: '>= 14'}
hasBin: true
yaml@2.7.1:
resolution: {integrity: sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==}
engines: {node: '>= 14'}
hasBin: true
yargs-parser@21.1.1:
resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
engines: {node: '>=12'}
yargs@17.7.2:
resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
engines: {node: '>=12'}
yocto-queue@1.1.1:
resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==}
engines: {node: '>=12.20'}
@@ -2610,10 +2872,46 @@ snapshots:
'@jridgewell/gen-mapping': 0.3.8
'@jridgewell/trace-mapping': 0.3.25
'@astrojs/check@0.9.6(prettier@3.7.4)(typescript@5.9.3)':
dependencies:
'@astrojs/language-server': 2.16.2(prettier@3.7.4)(typescript@5.9.3)
chokidar: 4.0.3
kleur: 4.1.5
typescript: 5.9.3
yargs: 17.7.2
transitivePeerDependencies:
- prettier
- prettier-plugin-astro
'@astrojs/compiler@2.10.3': {}
'@astrojs/internal-helpers@0.4.2': {}
'@astrojs/language-server@2.16.2(prettier@3.7.4)(typescript@5.9.3)':
dependencies:
'@astrojs/compiler': 2.10.3
'@astrojs/yaml2ts': 0.2.2
'@jridgewell/sourcemap-codec': 1.5.0
'@volar/kit': 2.4.27(typescript@5.9.3)
'@volar/language-core': 2.4.27
'@volar/language-server': 2.4.27
'@volar/language-service': 2.4.27
fast-glob: 3.3.2
muggle-string: 0.4.1
volar-service-css: 0.0.67(@volar/language-service@2.4.27)
volar-service-emmet: 0.0.67(@volar/language-service@2.4.27)
volar-service-html: 0.0.67(@volar/language-service@2.4.27)
volar-service-prettier: 0.0.67(@volar/language-service@2.4.27)(prettier@3.7.4)
volar-service-typescript: 0.0.67(@volar/language-service@2.4.27)
volar-service-typescript-twoslash-queries: 0.0.67(@volar/language-service@2.4.27)
volar-service-yaml: 0.0.67(@volar/language-service@2.4.27)
vscode-html-languageservice: 5.6.1
vscode-uri: 3.1.0
optionalDependencies:
prettier: 3.7.4
transitivePeerDependencies:
- typescript
'@astrojs/markdown-remark@6.0.1':
dependencies:
'@astrojs/prism': 3.2.0
@@ -2642,15 +2940,15 @@ snapshots:
dependencies:
prismjs: 1.29.0
'@astrojs/react@4.1.2(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(jiti@2.4.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass-embedded@1.83.0)(yaml@2.6.1)':
'@astrojs/react@4.1.2(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(jiti@2.4.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass-embedded@1.83.0)(yaml@2.7.1)':
dependencies:
'@types/react': 19.0.2
'@types/react-dom': 19.0.2(@types/react@19.0.2)
'@vitejs/plugin-react': 4.3.4(vite@6.0.5(jiti@2.4.2)(sass-embedded@1.83.0)(yaml@2.6.1))
'@vitejs/plugin-react': 4.3.4(vite@6.0.5(jiti@2.4.2)(sass-embedded@1.83.0)(yaml@2.7.1))
react: 19.0.0
react-dom: 19.0.0(react@19.0.0)
ultrahtml: 1.5.3
vite: 6.0.5(jiti@2.4.2)(sass-embedded@1.83.0)(yaml@2.6.1)
vite: 6.0.5(jiti@2.4.2)(sass-embedded@1.83.0)(yaml@2.7.1)
transitivePeerDependencies:
- '@types/node'
- jiti
@@ -2671,9 +2969,9 @@ snapshots:
stream-replace-string: 2.0.0
zod: 3.24.1
'@astrojs/tailwind@5.1.4(astro@5.1.1(jiti@2.4.2)(rollup@4.29.1)(sass-embedded@1.83.0)(typescript@5.7.2)(yaml@2.6.1))(tailwindcss@3.4.17)':
'@astrojs/tailwind@5.1.4(astro@5.1.1(jiti@2.4.2)(rollup@4.29.1)(sass-embedded@1.83.0)(typescript@5.9.3)(yaml@2.7.1))(tailwindcss@3.4.17)':
dependencies:
astro: 5.1.1(jiti@2.4.2)(rollup@4.29.1)(sass-embedded@1.83.0)(typescript@5.7.2)(yaml@2.6.1)
astro: 5.1.1(jiti@2.4.2)(rollup@4.29.1)(sass-embedded@1.83.0)(typescript@5.9.3)(yaml@2.7.1)
autoprefixer: 10.4.20(postcss@8.4.49)
postcss: 8.4.49
postcss-load-config: 4.0.2(postcss@8.4.49)
@@ -2693,6 +2991,10 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@astrojs/yaml2ts@0.2.2':
dependencies:
yaml: 2.6.1
'@babel/code-frame@7.26.2':
dependencies:
'@babel/helper-validator-identifier': 7.25.9
@@ -2805,6 +3107,29 @@ snapshots:
'@bufbuild/protobuf@2.2.3': {}
'@emmetio/abbreviation@2.3.3':
dependencies:
'@emmetio/scanner': 1.0.4
'@emmetio/css-abbreviation@2.1.8':
dependencies:
'@emmetio/scanner': 1.0.4
'@emmetio/css-parser@0.4.1':
dependencies:
'@emmetio/stream-reader': 2.2.0
'@emmetio/stream-reader-utils': 0.1.0
'@emmetio/html-matcher@1.3.0':
dependencies:
'@emmetio/scanner': 1.0.4
'@emmetio/scanner@1.0.4': {}
'@emmetio/stream-reader-utils@0.1.0': {}
'@emmetio/stream-reader@2.2.0': {}
'@emnapi/runtime@1.3.1':
dependencies:
tslib: 2.8.1
@@ -3385,19 +3710,80 @@ snapshots:
'@ungap/structured-clone@1.2.1': {}
'@vitejs/plugin-react@4.3.4(vite@6.0.5(jiti@2.4.2)(sass-embedded@1.83.0)(yaml@2.6.1))':
'@vitejs/plugin-react@4.3.4(vite@6.0.5(jiti@2.4.2)(sass-embedded@1.83.0)(yaml@2.7.1))':
dependencies:
'@babel/core': 7.26.0
'@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.0)
'@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.0)
'@types/babel__core': 7.20.5
react-refresh: 0.14.2
vite: 6.0.5(jiti@2.4.2)(sass-embedded@1.83.0)(yaml@2.6.1)
vite: 6.0.5(jiti@2.4.2)(sass-embedded@1.83.0)(yaml@2.7.1)
transitivePeerDependencies:
- supports-color
'@volar/kit@2.4.27(typescript@5.9.3)':
dependencies:
'@volar/language-service': 2.4.27
'@volar/typescript': 2.4.27
typesafe-path: 0.2.2
typescript: 5.9.3
vscode-languageserver-textdocument: 1.0.12
vscode-uri: 3.1.0
'@volar/language-core@2.4.27':
dependencies:
'@volar/source-map': 2.4.27
'@volar/language-server@2.4.27':
dependencies:
'@volar/language-core': 2.4.27
'@volar/language-service': 2.4.27
'@volar/typescript': 2.4.27
path-browserify: 1.0.1
request-light: 0.7.0
vscode-languageserver: 9.0.1
vscode-languageserver-protocol: 3.17.5
vscode-languageserver-textdocument: 1.0.12
vscode-uri: 3.1.0
'@volar/language-service@2.4.27':
dependencies:
'@volar/language-core': 2.4.27
vscode-languageserver-protocol: 3.17.5
vscode-languageserver-textdocument: 1.0.12
vscode-uri: 3.1.0
'@volar/source-map@2.4.27': {}
'@volar/typescript@2.4.27':
dependencies:
'@volar/language-core': 2.4.27
path-browserify: 1.0.1
vscode-uri: 3.1.0
'@vscode/emmet-helper@2.11.0':
dependencies:
emmet: 2.4.11
jsonc-parser: 2.3.1
vscode-languageserver-textdocument: 1.0.12
vscode-languageserver-types: 3.17.5
vscode-uri: 3.1.0
'@vscode/l10n@0.0.18': {}
acorn@8.14.0: {}
ajv-draft-04@1.0.0(ajv@8.17.1):
optionalDependencies:
ajv: 8.17.1
ajv@8.17.1:
dependencies:
fast-deep-equal: 3.1.3
fast-uri: 3.1.0
json-schema-traverse: 1.0.0
require-from-string: 2.0.2
ansi-align@3.0.1:
dependencies:
string-width: 4.2.3
@@ -3431,7 +3817,7 @@ snapshots:
array-iterate@2.0.1: {}
astro@5.1.1(jiti@2.4.2)(rollup@4.29.1)(sass-embedded@1.83.0)(typescript@5.7.2)(yaml@2.6.1):
astro@5.1.1(jiti@2.4.2)(rollup@4.29.1)(sass-embedded@1.83.0)(typescript@5.9.3)(yaml@2.7.1):
dependencies:
'@astrojs/compiler': 2.10.3
'@astrojs/internal-helpers': 0.4.2
@@ -3478,20 +3864,20 @@ snapshots:
semver: 7.6.3
shiki: 1.24.4
tinyexec: 0.3.1
tsconfck: 3.1.4(typescript@5.7.2)
tsconfck: 3.1.4(typescript@5.9.3)
ultrahtml: 1.5.3
unist-util-visit: 5.0.0
unstorage: 1.14.1
vfile: 6.0.3
vite: 6.0.5(jiti@2.4.2)(sass-embedded@1.83.0)(yaml@2.6.1)
vitefu: 1.0.4(vite@6.0.5(jiti@2.4.2)(sass-embedded@1.83.0)(yaml@2.6.1))
vite: 6.0.5(jiti@2.4.2)(sass-embedded@1.83.0)(yaml@2.7.1)
vitefu: 1.0.4(vite@6.0.5(jiti@2.4.2)(sass-embedded@1.83.0)(yaml@2.7.1))
which-pm: 3.0.0
xxhash-wasm: 1.1.0
yargs-parser: 21.1.1
yocto-spinner: 0.1.2
zod: 3.24.1
zod-to-json-schema: 3.24.1(zod@3.24.1)
zod-to-ts: 1.2.0(typescript@5.7.2)(zod@3.24.1)
zod-to-ts: 1.2.0(typescript@5.9.3)(zod@3.24.1)
optionalDependencies:
sharp: 0.33.5
transitivePeerDependencies:
@@ -3604,6 +3990,10 @@ snapshots:
optionalDependencies:
fsevents: 2.3.3
chokidar@4.0.3:
dependencies:
readdirp: 4.1.2
ci-info@4.1.0: {}
citty@0.1.6:
@@ -3620,6 +4010,12 @@ snapshots:
is-wsl: 3.1.0
is64bit: 2.0.0
cliui@8.0.1:
dependencies:
string-width: 4.2.3
strip-ansi: 6.0.1
wrap-ansi: 7.0.0
clsx@2.1.1: {}
color-convert@2.0.1:
@@ -3713,6 +4109,11 @@ snapshots:
electron-to-chromium@1.5.75: {}
emmet@2.4.11:
dependencies:
'@emmetio/abbreviation': 2.3.3
'@emmetio/css-abbreviation': 2.1.8
emoji-regex-xs@1.0.0: {}
emoji-regex@10.4.0: {}
@@ -3806,6 +4207,8 @@ snapshots:
extend@3.0.2: {}
fast-deep-equal@3.1.3: {}
fast-glob@3.3.2:
dependencies:
'@nodelib/fs.stat': 2.0.5
@@ -3814,6 +4217,8 @@ snapshots:
merge2: 1.4.1
micromatch: 4.0.8
fast-uri@3.1.0: {}
fastq@1.17.1:
dependencies:
reusify: 1.0.4
@@ -3850,6 +4255,8 @@ snapshots:
gensync@1.0.0-beta.2: {}
get-caller-file@2.0.5: {}
get-east-asian-width@1.3.0: {}
get-port-please@3.1.2: {}
@@ -4065,8 +4472,14 @@ snapshots:
jsesc@3.1.0: {}
json-schema-traverse@1.0.0: {}
json5@2.2.3: {}
jsonc-parser@2.3.1: {}
jsonc-parser@3.3.1: {}
kleur@3.0.3: {}
kleur@4.1.5: {}
@@ -4113,6 +4526,8 @@ snapshots:
lodash.merge@4.6.2: {}
lodash@4.17.21: {}
longest-streak@3.1.0: {}
lru-cache@10.4.3: {}
@@ -4474,6 +4889,8 @@ snapshots:
ms@2.1.3: {}
muggle-string@0.4.1: {}
mz@2.7.0:
dependencies:
any-promise: 1.3.0
@@ -4562,6 +4979,8 @@ snapshots:
dependencies:
entities: 4.5.0
path-browserify@1.0.1: {}
path-exists@4.0.0: {}
path-key@3.1.1: {}
@@ -4647,6 +5066,8 @@ snapshots:
find-yarn-workspace-root2: 1.2.16
which-pm: 3.0.0
prettier@3.7.4: {}
prismjs@1.29.0: {}
prompts@2.4.2:
@@ -4686,6 +5107,8 @@ snapshots:
dependencies:
picomatch: 2.3.1
readdirp@4.1.2: {}
regex-recursion@5.0.0:
dependencies:
regex-utilities: 2.3.0
@@ -4762,6 +5185,14 @@ snapshots:
mdast-util-to-markdown: 2.1.2
unified: 11.0.5
request-light@0.5.8: {}
request-light@0.7.0: {}
require-directory@2.1.1: {}
require-from-string@2.0.2: {}
resolve@1.22.10:
dependencies:
is-core-module: 2.16.1
@@ -5106,15 +5537,21 @@ snapshots:
ts-interface-checker@0.1.13: {}
tsconfck@3.1.4(typescript@5.7.2):
tsconfck@3.1.4(typescript@5.9.3):
optionalDependencies:
typescript: 5.7.2
typescript: 5.9.3
tslib@2.8.1: {}
type-fest@4.30.2: {}
typescript@5.7.2: {}
typesafe-path@0.2.2: {}
typescript-auto-import-cache@0.3.6:
dependencies:
semver: 7.6.3
typescript@5.9.3: {}
ufo@1.5.4: {}
@@ -5228,7 +5665,7 @@ snapshots:
'@types/unist': 3.0.3
vfile-message: 4.0.2
vite@6.0.5(jiti@2.4.2)(sass-embedded@1.83.0)(yaml@2.6.1):
vite@6.0.5(jiti@2.4.2)(sass-embedded@1.83.0)(yaml@2.7.1):
dependencies:
esbuild: 0.24.0
postcss: 8.4.49
@@ -5237,11 +5674,108 @@ snapshots:
fsevents: 2.3.3
jiti: 2.4.2
sass-embedded: 1.83.0
yaml: 2.6.1
yaml: 2.7.1
vitefu@1.0.4(vite@6.0.5(jiti@2.4.2)(sass-embedded@1.83.0)(yaml@2.6.1)):
vitefu@1.0.4(vite@6.0.5(jiti@2.4.2)(sass-embedded@1.83.0)(yaml@2.7.1)):
optionalDependencies:
vite: 6.0.5(jiti@2.4.2)(sass-embedded@1.83.0)(yaml@2.6.1)
vite: 6.0.5(jiti@2.4.2)(sass-embedded@1.83.0)(yaml@2.7.1)
volar-service-css@0.0.67(@volar/language-service@2.4.27):
dependencies:
vscode-css-languageservice: 6.3.9
vscode-languageserver-textdocument: 1.0.12
vscode-uri: 3.1.0
optionalDependencies:
'@volar/language-service': 2.4.27
volar-service-emmet@0.0.67(@volar/language-service@2.4.27):
dependencies:
'@emmetio/css-parser': 0.4.1
'@emmetio/html-matcher': 1.3.0
'@vscode/emmet-helper': 2.11.0
vscode-uri: 3.1.0
optionalDependencies:
'@volar/language-service': 2.4.27
volar-service-html@0.0.67(@volar/language-service@2.4.27):
dependencies:
vscode-html-languageservice: 5.6.1
vscode-languageserver-textdocument: 1.0.12
vscode-uri: 3.1.0
optionalDependencies:
'@volar/language-service': 2.4.27
volar-service-prettier@0.0.67(@volar/language-service@2.4.27)(prettier@3.7.4):
dependencies:
vscode-uri: 3.1.0
optionalDependencies:
'@volar/language-service': 2.4.27
prettier: 3.7.4
volar-service-typescript-twoslash-queries@0.0.67(@volar/language-service@2.4.27):
dependencies:
vscode-uri: 3.1.0
optionalDependencies:
'@volar/language-service': 2.4.27
volar-service-typescript@0.0.67(@volar/language-service@2.4.27):
dependencies:
path-browserify: 1.0.1
semver: 7.6.3
typescript-auto-import-cache: 0.3.6
vscode-languageserver-textdocument: 1.0.12
vscode-nls: 5.2.0
vscode-uri: 3.1.0
optionalDependencies:
'@volar/language-service': 2.4.27
volar-service-yaml@0.0.67(@volar/language-service@2.4.27):
dependencies:
vscode-uri: 3.1.0
yaml-language-server: 1.19.2
optionalDependencies:
'@volar/language-service': 2.4.27
vscode-css-languageservice@6.3.9:
dependencies:
'@vscode/l10n': 0.0.18
vscode-languageserver-textdocument: 1.0.12
vscode-languageserver-types: 3.17.5
vscode-uri: 3.1.0
vscode-html-languageservice@5.6.1:
dependencies:
'@vscode/l10n': 0.0.18
vscode-languageserver-textdocument: 1.0.12
vscode-languageserver-types: 3.17.5
vscode-uri: 3.1.0
vscode-json-languageservice@4.1.8:
dependencies:
jsonc-parser: 3.3.1
vscode-languageserver-textdocument: 1.0.12
vscode-languageserver-types: 3.17.5
vscode-nls: 5.2.0
vscode-uri: 3.1.0
vscode-jsonrpc@8.2.0: {}
vscode-languageserver-protocol@3.17.5:
dependencies:
vscode-jsonrpc: 8.2.0
vscode-languageserver-types: 3.17.5
vscode-languageserver-textdocument@1.0.12: {}
vscode-languageserver-types@3.17.5: {}
vscode-languageserver@9.0.1:
dependencies:
vscode-languageserver-protocol: 3.17.5
vscode-nls@5.2.0: {}
vscode-uri@3.1.0: {}
web-namespaces@2.0.1: {}
@@ -5279,12 +5813,41 @@ snapshots:
xxhash-wasm@1.1.0: {}
y18n@5.0.8: {}
yallist@3.1.1: {}
yaml-language-server@1.19.2:
dependencies:
'@vscode/l10n': 0.0.18
ajv: 8.17.1
ajv-draft-04: 1.0.0(ajv@8.17.1)
lodash: 4.17.21
prettier: 3.7.4
request-light: 0.5.8
vscode-json-languageservice: 4.1.8
vscode-languageserver: 9.0.1
vscode-languageserver-textdocument: 1.0.12
vscode-languageserver-types: 3.17.5
vscode-uri: 3.1.0
yaml: 2.7.1
yaml@2.6.1: {}
yaml@2.7.1: {}
yargs-parser@21.1.1: {}
yargs@17.7.2:
dependencies:
cliui: 8.0.1
escalade: 3.2.0
get-caller-file: 2.0.5
require-directory: 2.1.1
string-width: 4.2.3
y18n: 5.0.8
yargs-parser: 21.1.1
yocto-queue@1.1.1: {}
yocto-spinner@0.1.2:
@@ -5297,9 +5860,9 @@ snapshots:
dependencies:
zod: 3.24.1
zod-to-ts@1.2.0(typescript@5.7.2)(zod@3.24.1):
zod-to-ts@1.2.0(typescript@5.9.3)(zod@3.24.1):
dependencies:
typescript: 5.7.2
typescript: 5.9.3
zod: 3.24.1
zod@3.24.1: {}

View File

@@ -69,7 +69,7 @@ const Demo = ({ class: className }: DemoProps) => {
buildLog={buildLog}
executables={executables}
/>
{downloads?.map((download, i) => (
{downloads?.map((download) => (
<Badge
key={download.token}
className={cn(

View File

@@ -1,5 +1,5 @@
import { withBackend } from "@/util";
import { useEffect, useRef, useState } from "react";
import { useEffect, useState } from "react";
import useWebSocket, { ReadyState } from "react-use-websocket";
export interface Download {

View File

@@ -1,4 +1,3 @@
import { WindowIcon } from "@heroicons/react/16/solid";
import { clsx, type ClassValue } from "clsx";
import { twMerge } from "tailwind-merge";

View File

@@ -31,10 +31,7 @@ impl RailwayConfig {
let project_id = self.railway_project_id.as_ref()?;
let service_id = self.railway_service_id.as_ref()?;
let environment_id = self.railway_environment_id.as_ref()?;
let deployment_id = self
.railway_deployment_id
.as_deref()
.unwrap_or("latest");
let deployment_id = self.railway_deployment_id.as_deref().unwrap_or("latest");
Some(format!(
"https://railway.com/project/{}/service/{}?environmentId={}&id={}#build",

View File

@@ -393,7 +393,11 @@ async fn main() {
tracing_subscriber::fmt()
.with_env_filter(EnvFilter::new(format!(
"info,dynamic_preauth={}",
if cfg!(debug_assertions) { "debug" } else { "info" }
if cfg!(debug_assertions) {
"debug"
} else {
"info"
}
)))
.init();

View File

@@ -222,7 +222,11 @@ impl Executable {
// If the new key is shorter than the old key, we just write over the remaining data
if new_key.len() < self.key_end - self.key_start {
for item in data.iter_mut().take(self.key_end).skip(self.key_start + new_key.len()) {
for item in data
.iter_mut()
.take(self.key_end)
.skip(self.key_start + new_key.len())
{
*item = b' ';
}
}