diff --git a/.env.development b/.env.development index 9c5f3a0..e15501e 100644 --- a/.env.development +++ b/.env.development @@ -1,3 +1,3 @@ PUBLIC_RELAY_SCHEME="http" PUBLIC_RELAY_HOST="localhost:4443" -PUBLIC_RELAY_REGIONS="" +PUBLIC_DEMO_TOKEN="" diff --git a/.env.production b/.env.production index 95c5877..6e98582 100644 --- a/.env.production +++ b/.env.production @@ -1,3 +1,3 @@ PUBLIC_RELAY_SCHEME="https" PUBLIC_RELAY_HOST="relay.quic.video" -PUBLIC_RELAY_REGIONS="us-central,europe-west,asia-southeast" +PUBLIC_DEMO_TOKEN="" diff --git a/.gitignore b/.gitignore index 1ef990e..559ecda 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,6 @@ bun.lockb # Mac shit .DS_Store + +# Don't leak me secrets +.env.production \ No newline at end of file diff --git a/env.d.ts b/env.d.ts index 0820338..bbea681 100644 --- a/env.d.ts +++ b/env.d.ts @@ -3,7 +3,7 @@ interface ImportMetaEnv { readonly PUBLIC_RELAY_SCHEME: "http" | "https"; readonly PUBLIC_RELAY_HOST: string; - readonly PUBLIC_RELAY_REGIONS: string; + readonly PUBLIC_DEMO_TOKEN: string; } interface ImportMeta { diff --git a/infra/.gitignore b/infra/.gitignore index ab7d960..f49e471 100644 --- a/infra/.gitignore +++ b/infra/.gitignore @@ -13,8 +13,8 @@ crash.*.log # password, private keys, and other secrets. These should not be part of version # control as they are data points which are potentially sensitive and subject # to change depending on the environment. -#*.tfvars -#*.tfvars.json +*.tfvars +*.tfvars.json # Ignore override files as they are usually used to override resources locally and so # are not checked in diff --git a/infra/input.tf b/infra/input.tf index 6e65b34..6ef878e 100644 --- a/infra/input.tf +++ b/infra/input.tf @@ -18,9 +18,37 @@ variable "domain" { description = "domain name" } -variable "docker" { - description = "Docker repository prefix" - default = "docker.io/kixelated" +variable "docker_relay" { + description = "Docker image for moq-relay" + default = "docker.io/kixelated/moq-relay:0.7.1" +} + +variable "docker_hang" { + description = "Docker image for hang" + default = "docker.io/kixelated/hang:0.3.0" +} + +# A key generated using moq-token generate +variable "demo_key" { + description = "demo key" + sensitive = true +} + +# A token used to publish demo/bbb.hang +# This is very manual/crude, but I don't want someone to hijack the broadcast. +variable "demo_token" { + description = "demo token" + sensitive = true +} + +variable "root_key" { + description = "root key" + sensitive = true +} + +variable "root_token" { + description = "root token" + sensitive = true } # Too complicated to specify via flags, so do it here. diff --git a/infra/pub.tf b/infra/pub.tf index c201a7c..2bc1ea3 100644 --- a/infra/pub.tf +++ b/infra/pub.tf @@ -27,9 +27,12 @@ resource "google_compute_instance" "pub" { metadata = { # cloud-init template user-data = templatefile("${path.module}/pub.yml.tpl", { - addr = "relay.${var.domain}" - docker = var.docker - region = local.pub.region + addr = "relay.${var.domain}" + docker_image = var.docker_hang + region = local.pub.region + + # A token used to publish demo/bbb.hang + demo_token = var.demo_token }) } diff --git a/infra/pub.yml.tpl b/infra/pub.yml.tpl index 10c1e8b..474dac6 100644 --- a/infra/pub.yml.tpl +++ b/infra/pub.yml.tpl @@ -19,8 +19,8 @@ write_files: -e RUST_LOG=debug -e RUST_BACKTRACE=1 \ -e REGION=${region} \ --entrypoint hang-bbb \ - ${docker}/hang \ - publish "https://relay.quic.video/demo/bbb.hang" + ${docker_image} \ + publish "https://relay.quic.video/demo/${demo_token}" ExecStop=docker stop hang-bbb @@ -28,31 +28,6 @@ write_files: Restart=always RestartSec=10s - - path: /etc/systemd/system/moq-clock.service - permissions: 0644 - owner: root - content: | - [Unit] - Description=Run moq-clock via docker - Requires=docker.service - After=docker.service - - [Service] - ExecStart=docker run --rm \ - --name moq-clock \ - --network="host" \ - --pull=always \ - --cap-add=SYS_PTRACE \ - -e RUST_LOG=info -e RUST_BACKTRACE=1 \ - ${docker}/moq-clock --publish "https://relay.quic.video/clock" - ExecStop=docker stop moq-clock - - # Take longer and longer to restart the process. - Restart=always - RestartSec=10s - RestartSteps=6 - RestartMaxDelaySec=1m - - path: /etc/docker/daemon.json content: | { "mtu": 1460 } @@ -73,29 +48,7 @@ write_files: #!/bin/sh docker system prune -af - # Add Watchtower systemd service to restart containers on update - - path: /etc/systemd/system/watchtower.service - permissions: "0644" - owner: root - content: | - [Unit] - Description=Watchtower to auto-update containers - After=docker.service - Wants=docker.service - - [Service] - Restart=on-failure - RestartSec=10s - ExecStart=docker run --rm \ - --name watchtower \ - --volume /var/run/docker.sock:/var/run/docker.sock \ - containrrr/watchtower \ - --cleanup \ - --interval 300 - ExecStop=docker stop watchtower - runcmd: - systemctl daemon-reload - systemctl restart docker - systemctl start hang-bbb moq-clock - - systemctl start watchtower diff --git a/infra/relay.tf b/infra/relay.tf index ebb30d1..2b84b18 100644 --- a/infra/relay.tf +++ b/infra/relay.tf @@ -29,7 +29,7 @@ resource "google_compute_instance" "relay" { metadata = { # cloud-init template user-data = templatefile("${path.module}/relay.yml.tpl", { - docker = var.docker + docker_image = var.docker_relay # The external address and certs public_host = var.domain @@ -46,6 +46,13 @@ resource "google_compute_instance" "relay" { # See: https://cloud.google.com/compute/docs/internal-dns cluster_node = "relay-${each.key}.${each.value.zone}.c.${var.project}.internal" cluster_root = "${local.root}.c.${var.project}.internal" + + # The demo key, used to authenticate the demo broadcast + demo_key = var.demo_key + + # The root key and token, used to authenticate nodes + root_key = var.root_key + root_token = var.root_token }) } @@ -58,7 +65,7 @@ resource "google_compute_instance" "relay" { lifecycle { # There seems to be a terraform bug causing this to be recreated on every apply - # ignore_changes = [boot_disk] + ignore_changes = [boot_disk] } allow_stopping_for_update = true diff --git a/infra/relay.yml.tpl b/infra/relay.yml.tpl index be8f501..3b825b6 100644 --- a/infra/relay.yml.tpl +++ b/infra/relay.yml.tpl @@ -37,6 +37,58 @@ write_files: permissions: "0644" owner: root + # Write the demo key to disk + - path: /etc/moq/demo.jwk + content: | + ${indent(6, demo_key)} + permissions: "0644" + owner: root + + # Write the root key to disk + - path: /etc/moq/root.jwk + content: | + ${indent(6, root_key)} + permissions: "0644" + owner: root + + # Write the root token to disk + - path: /etc/moq/root.jwt + content: | + ${indent(6, root_token)} + permissions: "0644" + owner: root + + - path: /etc/moq/relay.toml + content: | + [server] + listen = "0.0.0.0:443" + + [[server.tls.cert]] + chain = "/etc/cert/${cluster_node}.crt" + key = "/etc/cert/${cluster_node}.key" + + [[server.tls.cert]] + chain = "/etc/cert/${public_host}.crt" + key = "/etc/cert/${public_host}.key" + + [client] + tls.root = [ "/etc/cert/internal.ca" ] + + [cluster] + connect = "${cluster_root}" + advertise = "${cluster_node}" + token = "/etc/moq/root.jwk" + + [auth] + root = "/etc/moq/root.jwk" + + [auth.paths] + demo = "/etc/moq/demo.jwk" + anon = "" + + permissions: "0644" + owner: root + # Create a systemd service to run the docker image - path: /etc/systemd/system/moq-relay.service permissions: "0644" @@ -56,13 +108,9 @@ write_files: --pull=always \ --cap-add=SYS_PTRACE \ -v "/etc/cert:/etc/cert:ro" \ + -v "/etc/moq:/etc/moq:ro" \ -e RUST_LOG=debug -e RUST_BACKTRACE=1 \ - ${docker}/moq-relay --bind 0.0.0.0:443 \ - --tls-cert "/etc/cert/${cluster_node}.crt" --tls-key "/etc/cert/${cluster_node}.key" \ - --tls-cert "/etc/cert/${public_host}.crt" --tls-key "/etc/cert/${public_host}.key" \ - --tls-root "/etc/cert/internal.ca" \ - --cluster-root "${cluster_root}" \ - --cluster-node "${cluster_node}" + ${docker_image} /etc/moq/relay.toml ExecStop=docker stop moq-relay # GCP configures a firewall by default that blocks all UDP traffic @@ -100,29 +148,7 @@ write_files: #!/bin/sh docker system prune -af - # Add Watchtower systemd service to restart the container on update - - path: /etc/systemd/system/watchtower.service - permissions: "0644" - owner: root - content: | - [Unit] - Description=Watchtower to auto-update containers - After=docker.service - Wants=docker.service - - [Service] - Restart=on-failure - RestartSec=10s - ExecStart=docker run --rm \ - --name watchtower \ - --volume /var/run/docker.sock:/var/run/docker.sock \ - containrrr/watchtower \ - --cleanup \ - --interval 300 - ExecStop=docker stop watchtower - runcmd: - systemctl daemon-reload - systemctl restart docker - systemctl start moq-relay - - systemctl start watchtower diff --git a/infra/terraform.tfvars b/infra/terraform.tfvars deleted file mode 100644 index 5fe7d2d..0000000 --- a/infra/terraform.tfvars +++ /dev/null @@ -1,6 +0,0 @@ -project = "quic-video" -region = "us-central1" -zone = "us-central1-f" -domain = "quic.video" -email = "kixelated@gmail.com" -docker = "docker.io/kixelated" diff --git a/package.json b/package.json index 086bc20..68baa5f 100644 --- a/package.json +++ b/package.json @@ -15,19 +15,19 @@ "@astrojs/node": "8.3.4", "@astrojs/solid-js": "4.4.4", "@astrojs/tailwind": "5.1.2", - "@kixelated/hang": "^0.1.1", - "@tailwindcss/forms": "^0.5.9", - "@tailwindcss/typography": "^0.5.15", + "@kixelated/hang": "^0.2.1", + "@tailwindcss/forms": "^0.5.10", + "@tailwindcss/typography": "^0.5.16", "astro": "^4.16.18", - "solid-js": "^1.9.3", - "tailwindcss": "^3.4.15", + "solid-js": "^1.9.7", + "tailwindcss": "^3.4.17", "unique-names-generator": "^4.7.1", - "vite-plugin-mkcert": "^1.17.6", - "vite-plugin-static-copy": "^2.2.0", - "vite-plugin-wasm": "^3.3.0" + "vite-plugin-mkcert": "^1.17.8", + "vite-plugin-static-copy": "^2.3.1", + "vite-plugin-wasm": "^3.4.1" }, "devDependencies": { - "@types/node": "^22.10.1" + "@types/node": "^22.15.29" }, "packageManager": "pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a927b58..b6f32f8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,50 +10,50 @@ importers: dependencies: '@astrojs/mdx': specifier: 3.1.9 - version: 3.1.9(astro@4.16.18(@types/node@22.15.18)(rollup@4.40.2)(typescript@5.8.3)) + version: 3.1.9(astro@4.16.18(@types/node@22.15.29)(rollup@4.41.1)(typescript@5.8.3)) '@astrojs/node': specifier: 8.3.4 - version: 8.3.4(astro@4.16.18(@types/node@22.15.18)(rollup@4.40.2)(typescript@5.8.3)) + version: 8.3.4(astro@4.16.18(@types/node@22.15.29)(rollup@4.41.1)(typescript@5.8.3)) '@astrojs/solid-js': specifier: 4.4.4 - version: 4.4.4(@types/node@22.15.18)(solid-js@1.9.7) + version: 4.4.4(@types/node@22.15.29)(solid-js@1.9.7) '@astrojs/tailwind': specifier: 5.1.2 - version: 5.1.2(astro@4.16.18(@types/node@22.15.18)(rollup@4.40.2)(typescript@5.8.3))(tailwindcss@3.4.17) + version: 5.1.2(astro@4.16.18(@types/node@22.15.29)(rollup@4.41.1)(typescript@5.8.3))(tailwindcss@3.4.17) '@kixelated/hang': - specifier: ^0.1.1 - version: 0.1.1 + specifier: ^0.2.1 + version: 0.2.1 '@tailwindcss/forms': - specifier: ^0.5.9 + specifier: ^0.5.10 version: 0.5.10(tailwindcss@3.4.17) '@tailwindcss/typography': - specifier: ^0.5.15 + specifier: ^0.5.16 version: 0.5.16(tailwindcss@3.4.17) astro: specifier: ^4.16.18 - version: 4.16.18(@types/node@22.15.18)(rollup@4.40.2)(typescript@5.8.3) + version: 4.16.18(@types/node@22.15.29)(rollup@4.41.1)(typescript@5.8.3) solid-js: - specifier: ^1.9.3 + specifier: ^1.9.7 version: 1.9.7 tailwindcss: - specifier: ^3.4.15 + specifier: ^3.4.17 version: 3.4.17 unique-names-generator: specifier: ^4.7.1 version: 4.7.1 vite-plugin-mkcert: - specifier: ^1.17.6 - version: 1.17.8(vite@5.4.19(@types/node@22.15.18)) + specifier: ^1.17.8 + version: 1.17.8(vite@5.4.19(@types/node@22.15.29)) vite-plugin-static-copy: - specifier: ^2.2.0 - version: 2.3.1(vite@5.4.19(@types/node@22.15.18)) + specifier: ^2.3.1 + version: 2.3.1(vite@5.4.19(@types/node@22.15.29)) vite-plugin-wasm: - specifier: ^3.3.0 - version: 3.4.1(vite@5.4.19(@types/node@22.15.18)) + specifier: ^3.4.1 + version: 3.4.1(vite@5.4.19(@types/node@22.15.29)) devDependencies: '@types/node': - specifier: ^22.10.1 - version: 22.15.18 + specifier: ^22.15.29 + version: 22.15.29 packages: @@ -113,20 +113,20 @@ packages: resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.27.2': - resolution: {integrity: sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ==} + '@babel/compat-data@7.27.5': + resolution: {integrity: sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==} engines: {node: '>=6.9.0'} - '@babel/core@7.27.1': - resolution: {integrity: sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==} + '@babel/core@7.27.4': + resolution: {integrity: sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==} engines: {node: '>=6.9.0'} - '@babel/generator@7.27.1': - resolution: {integrity: sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==} + '@babel/generator@7.27.5': + resolution: {integrity: sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==} engines: {node: '>=6.9.0'} - '@babel/helper-annotate-as-pure@7.27.1': - resolution: {integrity: sha512-WnuuDILl9oOBbKnb4L+DyODx7iC47XfzmNCpTttFsSp6hTG7XZxu60+4IO+2/hPfcGOoKbFiwoI/+zwARbNQow==} + '@babel/helper-annotate-as-pure@7.27.3': + resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} engines: {node: '>=6.9.0'} '@babel/helper-compilation-targets@7.27.2': @@ -141,8 +141,8 @@ packages: resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.27.1': - resolution: {integrity: sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==} + '@babel/helper-module-transforms@7.27.3': + resolution: {integrity: sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -163,12 +163,12 @@ packages: resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.27.1': - resolution: {integrity: sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==} + '@babel/helpers@7.27.4': + resolution: {integrity: sha512-Y+bO6U+I7ZKaM5G5rDUZiYfUvQPUibYmAFe7EnKdnKBbVXDZxvp+MWOH5gYciY0EPk4EScsuFMQBbEfpdRKSCQ==} engines: {node: '>=6.9.0'} - '@babel/parser@7.27.2': - resolution: {integrity: sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==} + '@babel/parser@7.27.5': + resolution: {integrity: sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==} engines: {node: '>=6.0.0'} hasBin: true @@ -188,12 +188,12 @@ packages: resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.27.1': - resolution: {integrity: sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==} + '@babel/traverse@7.27.4': + resolution: {integrity: sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==} engines: {node: '>=6.9.0'} - '@babel/types@7.27.1': - resolution: {integrity: sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==} + '@babel/types@7.27.3': + resolution: {integrity: sha512-Y1GkI4ktrtvmawoSq+4FCVHNryea6uR+qUQy0AGxLSsjCX0nVmkYQMBLHDkXZuo5hGx7eYdnIaslsdBFm7zbUw==} engines: {node: '>=6.9.0'} '@emnapi/runtime@1.4.3': @@ -464,11 +464,14 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - '@kixelated/hang@0.1.1': - resolution: {integrity: sha512-wU/T7nM8KKL/IoopNcmgvw1u9/COWmIiDV8QCNTQhJ88uRc5fctAQxjNwKZNyyX23EGY8WwItzsKO59OWCsEOg==} + '@kixelated/hang@0.2.1': + resolution: {integrity: sha512-jTTuuHh/J1bWeYkefLekwrWexkmH3yi0xR6leamPUxbzsy+bNBFsubpOkjndnIzuW/nS4/Vq6HrbczZlBStr7w==} - '@kixelated/moq@0.5.0': - resolution: {integrity: sha512-LUun0t7n3K2l+7F24bB2TgUeoW73X21f9Bf6N9l82BLKmKMU1QbuZTP9LBGPxHDnaUyz3a/Cc8kLrJzsZIqzRA==} + '@kixelated/moq@0.6.0': + resolution: {integrity: sha512-etaHsvQX/LH8p34xCF865B3ad3i1hvhBxQloXYI/wjyUYawz1CgTyoqOEwIVp2XgiuJrimZR/500I5xFaFQO6w==} + + '@kixelated/signals@0.2.0': + resolution: {integrity: sha512-9mEmWGuvfcv8L2GhrW3t3zg2GDWv3QbYd0gX5IK7DW3BK5xGy8f+ftyGHLGyTl8pRHPyaZh9eOQi64kDGBawKw==} '@mdx-js/mdx@3.1.0': resolution: {integrity: sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==} @@ -501,103 +504,103 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.40.2': - resolution: {integrity: sha512-JkdNEq+DFxZfUwxvB58tHMHBHVgX23ew41g1OQinthJ+ryhdRk67O31S7sYw8u2lTjHUPFxwar07BBt1KHp/hg==} + '@rollup/rollup-android-arm-eabi@4.41.1': + resolution: {integrity: sha512-NELNvyEWZ6R9QMkiytB4/L4zSEaBC03KIXEghptLGLZWJ6VPrL63ooZQCOnlx36aQPGhzuOMwDerC1Eb2VmrLw==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.40.2': - resolution: {integrity: sha512-13unNoZ8NzUmnndhPTkWPWbX3vtHodYmy+I9kuLxN+F+l+x3LdVF7UCu8TWVMt1POHLh6oDHhnOA04n8oJZhBw==} + '@rollup/rollup-android-arm64@4.41.1': + resolution: {integrity: sha512-DXdQe1BJ6TK47ukAoZLehRHhfKnKg9BjnQYUu9gzhI8Mwa1d2fzxA1aw2JixHVl403bwp1+/o/NhhHtxWJBgEA==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.40.2': - resolution: {integrity: sha512-Gzf1Hn2Aoe8VZzevHostPX23U7N5+4D36WJNHK88NZHCJr7aVMG4fadqkIf72eqVPGjGc0HJHNuUaUcxiR+N/w==} + '@rollup/rollup-darwin-arm64@4.41.1': + resolution: {integrity: sha512-5afxvwszzdulsU2w8JKWwY8/sJOLPzf0e1bFuvcW5h9zsEg+RQAojdW0ux2zyYAz7R8HvvzKCjLNJhVq965U7w==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.40.2': - resolution: {integrity: sha512-47N4hxa01a4x6XnJoskMKTS8XZ0CZMd8YTbINbi+w03A2w4j1RTlnGHOz/P0+Bg1LaVL6ufZyNprSg+fW5nYQQ==} + '@rollup/rollup-darwin-x64@4.41.1': + resolution: {integrity: sha512-egpJACny8QOdHNNMZKf8xY0Is6gIMz+tuqXlusxquWu3F833DcMwmGM7WlvCO9sB3OsPjdC4U0wHw5FabzCGZg==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.40.2': - resolution: {integrity: sha512-8t6aL4MD+rXSHHZUR1z19+9OFJ2rl1wGKvckN47XFRVO+QL/dUSpKA2SLRo4vMg7ELA8pzGpC+W9OEd1Z/ZqoQ==} + '@rollup/rollup-freebsd-arm64@4.41.1': + resolution: {integrity: sha512-DBVMZH5vbjgRk3r0OzgjS38z+atlupJ7xfKIDJdZZL6sM6wjfDNo64aowcLPKIx7LMQi8vybB56uh1Ftck/Atg==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.40.2': - resolution: {integrity: sha512-C+AyHBzfpsOEYRFjztcYUFsH4S7UsE9cDtHCtma5BK8+ydOZYgMmWg1d/4KBytQspJCld8ZIujFMAdKG1xyr4Q==} + '@rollup/rollup-freebsd-x64@4.41.1': + resolution: {integrity: sha512-3FkydeohozEskBxNWEIbPfOE0aqQgB6ttTkJ159uWOFn42VLyfAiyD9UK5mhu+ItWzft60DycIN1Xdgiy8o/SA==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.40.2': - resolution: {integrity: sha512-de6TFZYIvJwRNjmW3+gaXiZ2DaWL5D5yGmSYzkdzjBDS3W+B9JQ48oZEsmMvemqjtAFzE16DIBLqd6IQQRuG9Q==} + '@rollup/rollup-linux-arm-gnueabihf@4.41.1': + resolution: {integrity: sha512-wC53ZNDgt0pqx5xCAgNunkTzFE8GTgdZ9EwYGVcg+jEjJdZGtq9xPjDnFgfFozQI/Xm1mh+D9YlYtl+ueswNEg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.40.2': - resolution: {integrity: sha512-urjaEZubdIkacKc930hUDOfQPysezKla/O9qV+O89enqsqUmQm8Xj8O/vh0gHg4LYfv7Y7UsE3QjzLQzDYN1qg==} + '@rollup/rollup-linux-arm-musleabihf@4.41.1': + resolution: {integrity: sha512-jwKCca1gbZkZLhLRtsrka5N8sFAaxrGz/7wRJ8Wwvq3jug7toO21vWlViihG85ei7uJTpzbXZRcORotE+xyrLA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.40.2': - resolution: {integrity: sha512-KlE8IC0HFOC33taNt1zR8qNlBYHj31qGT1UqWqtvR/+NuCVhfufAq9fxO8BMFC22Wu0rxOwGVWxtCMvZVLmhQg==} + '@rollup/rollup-linux-arm64-gnu@4.41.1': + resolution: {integrity: sha512-g0UBcNknsmmNQ8V2d/zD2P7WWfJKU0F1nu0k5pW4rvdb+BIqMm8ToluW/eeRmxCared5dD76lS04uL4UaNgpNA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.40.2': - resolution: {integrity: sha512-j8CgxvfM0kbnhu4XgjnCWJQyyBOeBI1Zq91Z850aUddUmPeQvuAy6OiMdPS46gNFgy8gN1xkYyLgwLYZG3rBOg==} + '@rollup/rollup-linux-arm64-musl@4.41.1': + resolution: {integrity: sha512-XZpeGB5TKEZWzIrj7sXr+BEaSgo/ma/kCgrZgL0oo5qdB1JlTzIYQKel/RmhT6vMAvOdM2teYlAaOGJpJ9lahg==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.40.2': - resolution: {integrity: sha512-Ybc/1qUampKuRF4tQXc7G7QY9YRyeVSykfK36Y5Qc5dmrIxwFhrOzqaVTNoZygqZ1ZieSWTibfFhQ5qK8jpWxw==} + '@rollup/rollup-linux-loongarch64-gnu@4.41.1': + resolution: {integrity: sha512-bkCfDJ4qzWfFRCNt5RVV4DOw6KEgFTUZi2r2RuYhGWC8WhCA8lCAJhDeAmrM/fdiAH54m0mA0Vk2FGRPyzI+tw==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.40.2': - resolution: {integrity: sha512-3FCIrnrt03CCsZqSYAOW/k9n625pjpuMzVfeI+ZBUSDT3MVIFDSPfSUgIl9FqUftxcUXInvFah79hE1c9abD+Q==} + '@rollup/rollup-linux-powerpc64le-gnu@4.41.1': + resolution: {integrity: sha512-3mr3Xm+gvMX+/8EKogIZSIEF0WUu0HL9di+YWlJpO8CQBnoLAEL/roTCxuLncEdgcfJcvA4UMOf+2dnjl4Ut1A==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.40.2': - resolution: {integrity: sha512-QNU7BFHEvHMp2ESSY3SozIkBPaPBDTsfVNGx3Xhv+TdvWXFGOSH2NJvhD1zKAT6AyuuErJgbdvaJhYVhVqrWTg==} + '@rollup/rollup-linux-riscv64-gnu@4.41.1': + resolution: {integrity: sha512-3rwCIh6MQ1LGrvKJitQjZFuQnT2wxfU+ivhNBzmxXTXPllewOF7JR1s2vMX/tWtUYFgphygxjqMl76q4aMotGw==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.40.2': - resolution: {integrity: sha512-5W6vNYkhgfh7URiXTO1E9a0cy4fSgfE4+Hl5agb/U1sa0kjOLMLC1wObxwKxecE17j0URxuTrYZZME4/VH57Hg==} + '@rollup/rollup-linux-riscv64-musl@4.41.1': + resolution: {integrity: sha512-LdIUOb3gvfmpkgFZuccNa2uYiqtgZAz3PTzjuM5bH3nvuy9ty6RGc/Q0+HDFrHrizJGVpjnTZ1yS5TNNjFlklw==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.40.2': - resolution: {integrity: sha512-B7LKIz+0+p348JoAL4X/YxGx9zOx3sR+o6Hj15Y3aaApNfAshK8+mWZEf759DXfRLeL2vg5LYJBB7DdcleYCoQ==} + '@rollup/rollup-linux-s390x-gnu@4.41.1': + resolution: {integrity: sha512-oIE6M8WC9ma6xYqjvPhzZYk6NbobIURvP/lEbh7FWplcMO6gn7MM2yHKA1eC/GvYwzNKK/1LYgqzdkZ8YFxR8g==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.40.2': - resolution: {integrity: sha512-lG7Xa+BmBNwpjmVUbmyKxdQJ3Q6whHjMjzQplOs5Z+Gj7mxPtWakGHqzMqNER68G67kmCX9qX57aRsW5V0VOng==} + '@rollup/rollup-linux-x64-gnu@4.41.1': + resolution: {integrity: sha512-cWBOvayNvA+SyeQMp79BHPK8ws6sHSsYnK5zDcsC3Hsxr1dgTABKjMnMslPq1DvZIp6uO7kIWhiGwaTdR4Og9A==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.40.2': - resolution: {integrity: sha512-tD46wKHd+KJvsmije4bUskNuvWKFcTOIM9tZ/RrmIvcXnbi0YK/cKS9FzFtAm7Oxi2EhV5N2OpfFB348vSQRXA==} + '@rollup/rollup-linux-x64-musl@4.41.1': + resolution: {integrity: sha512-y5CbN44M+pUCdGDlZFzGGBSKCA4A/J2ZH4edTYSSxFg7ce1Xt3GtydbVKWLlzL+INfFIZAEg1ZV6hh9+QQf9YQ==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.40.2': - resolution: {integrity: sha512-Bjv/HG8RRWLNkXwQQemdsWw4Mg+IJ29LK+bJPW2SCzPKOUaMmPEppQlu/Fqk1d7+DX3V7JbFdbkh/NMmurT6Pg==} + '@rollup/rollup-win32-arm64-msvc@4.41.1': + resolution: {integrity: sha512-lZkCxIrjlJlMt1dLO/FbpZbzt6J/A8p4DnqzSa4PWqPEUUUnzXLeki/iyPLfV0BmHItlYgHUqJe+3KiyydmiNQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.40.2': - resolution: {integrity: sha512-dt1llVSGEsGKvzeIO76HToiYPNPYPkmjhMHhP00T9S4rDern8P2ZWvWAQUEJ+R1UdMWJ/42i/QqJ2WV765GZcA==} + '@rollup/rollup-win32-ia32-msvc@4.41.1': + resolution: {integrity: sha512-+psFT9+pIh2iuGsxFYYa/LhS5MFKmuivRsx9iPJWNSGbh2XVEjk90fmpUEjCnILPEPJnikAU6SFDiEUyOv90Pg==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.40.2': - resolution: {integrity: sha512-bwspbWB04XJpeElvsp+DCylKfF4trJDa2Y9Go8O6A7YLX2LIKGcNK/CYImJN6ZP4DcuOHB4Utl3iCbnR62DudA==} + '@rollup/rollup-win32-x64-msvc@4.41.1': + resolution: {integrity: sha512-Wq2zpapRYLfi4aKxf2Xff0tN+7slj2d4R87WEzqw7ZLsVvO5zwYCIuEGSZYiK41+GlwUo1HiR+GdkLEJnCKTCw==} cpu: [x64] os: [win32] @@ -632,9 +635,6 @@ packages: peerDependencies: tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1' - '@types/audioworklet@0.0.75': - resolution: {integrity: sha512-Xb35K9bXy+fUl/moqCgoTuvuLWxd2Tro1ua+2j3JzOBzYb5n5bvBry7OKNrw1imObjKufxV5+ZfZ02xFkqJiXw==} - '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} @@ -674,8 +674,8 @@ packages: '@types/nlcst@2.0.3': resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==} - '@types/node@22.15.18': - resolution: {integrity: sha512-v1DKRfUdyW+jJhZNEI1PYy29S2YRxMV5AOO/x/SjKmW0acCIOqmbj6Haf9eHAhsPmrhlHSxEhv/1WszcLWV4cg==} + '@types/node@22.15.29': + resolution: {integrity: sha512-LNdjOkUDlU1RZb8e1kOIUpN1qQUlzGkEtbVNo53vbrwDg5om6oduhm4SiUaPW5ASTXhAiP0jInWG8Qx9fVlOeQ==} '@types/unist@2.0.11': resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} @@ -801,8 +801,8 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.24.5: - resolution: {integrity: sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==} + browserslist@4.25.0: + resolution: {integrity: sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -821,8 +821,8 @@ packages: resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} engines: {node: '>=16'} - caniuse-lite@1.0.30001718: - resolution: {integrity: sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw==} + caniuse-lite@1.0.30001720: + resolution: {integrity: sha512-Ec/2yV2nNPwb4DnTANEV99ZWwm3ZWfdlfkQbWSDDt+PsXEVYwlhPH8tdMaPunYTKKmz7AnHi2oNEi1GcmKCD8g==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -991,8 +991,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.155: - resolution: {integrity: sha512-ps5KcGGmwL8VaeJlvlDlu4fORQpv3+GIcF5I3f9tUKUlJ/wsysh6HU8P5L1XWRYeXfA0oJd4PyM8ds8zTFf6Ng==} + electron-to-chromium@1.5.162: + resolution: {integrity: sha512-hQA+Zb5QQwoSaXJWEAGEw1zhk//O7qDzib05Z4qTqZfNju/FAkrm5ZInp0JbTp4Z18A6bilopdZWEYrFSsfllA==} emoji-regex-xs@1.0.0: resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} @@ -1841,8 +1841,8 @@ packages: postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.5.3: - resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} + postcss@8.5.4: + resolution: {integrity: sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==} engines: {node: ^10 || ^12 || >=14} preferred-pm@4.1.1: @@ -1960,8 +1960,8 @@ packages: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rollup@4.40.2: - resolution: {integrity: sha512-tfUOg6DTP4rhQ3VjOO6B4wyrJnGOX85requAXvqYTHsOgb2TFJdZ3aWpT8W2kPoypSGP7dZUyzxJ9ee4buM5Fg==} + rollup@4.41.1: + resolution: {integrity: sha512-cPmwD3FnFv8rKMBc1MxWCwVQFxwf1JEmSX3iQXrRVVG15zerAIXRjMFVWnd5Q5QvgKF7Aj+5ykXFhUl+QGnyOw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -1985,14 +1985,14 @@ packages: resolution: {integrity: sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg==} engines: {node: '>= 0.8.0'} - seroval-plugins@1.3.1: - resolution: {integrity: sha512-dOlUoiI3fgZbQIcj6By+l865pzeWdP3XCSLdI3xlKnjCk5983yLWPsXytFOUI0BUZKG9qwqbj78n9yVcVwUqaQ==} + seroval-plugins@1.3.2: + resolution: {integrity: sha512-0QvCV2lM3aj/U3YozDiVwx9zpH0q8A60CTWIv4Jszj/givcudPb48B+rkU5D51NJ0pTpweGMttHjboPa9/zoIQ==} engines: {node: '>=10'} peerDependencies: seroval: ^1.0 - seroval@1.3.1: - resolution: {integrity: sha512-F+T9EQPdLzgdewgxnBh4mSc+vde+EOkU6dC9BDuu/bfGb+UyUlqM6t8znFCTPQSuai/ZcfFg0gu79h+bVW2O0w==} + seroval@1.3.2: + resolution: {integrity: sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ==} engines: {node: '>=10'} server-destroy@1.0.1: @@ -2134,8 +2134,8 @@ packages: ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - tsconfck@3.1.5: - resolution: {integrity: sha512-CLDfGgUp7XPswWnezWwsCRxNmgQjhYq3VXHM0/XIRxhVrKw0M1if9agzryh1QS3nxjCROvV+xWxoJO1YctzzWg==} + tsconfck@3.1.6: + resolution: {integrity: sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==} engines: {node: ^18 || >=20} hasBin: true peerDependencies: @@ -2349,11 +2349,8 @@ packages: typescript: ^4.9.4 || ^5.0.2 zod: ^3 - zod@3.24.4: - resolution: {integrity: sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg==} - - zod@3.25.17: - resolution: {integrity: sha512-8hQzQ/kMOIFbwOgPrm9Sf9rtFHpFUMy4HvN0yEB0spw14aYi0uT5xG5CE2DB9cd51GWNsz+DNO7se1kztHMKnw==} + zod@3.25.50: + resolution: {integrity: sha512-VstOnRxf4tlSq0raIwbn0n+LA34SxVoZ8r3pkwSUM0jqNiA/HCMQEVjTuS5FZmHsge+9MDGTiAuHyml5T0um6A==} zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} @@ -2394,12 +2391,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/mdx@3.1.9(astro@4.16.18(@types/node@22.15.18)(rollup@4.40.2)(typescript@5.8.3))': + '@astrojs/mdx@3.1.9(astro@4.16.18(@types/node@22.15.29)(rollup@4.41.1)(typescript@5.8.3))': dependencies: '@astrojs/markdown-remark': 5.3.0 '@mdx-js/mdx': 3.1.0(acorn@8.14.1) acorn: 8.14.1 - astro: 4.16.18(@types/node@22.15.18)(rollup@4.40.2)(typescript@5.8.3) + astro: 4.16.18(@types/node@22.15.29)(rollup@4.41.1)(typescript@5.8.3) es-module-lexer: 1.7.0 estree-util-visit: 2.0.0 gray-matter: 4.0.3 @@ -2414,9 +2411,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/node@8.3.4(astro@4.16.18(@types/node@22.15.18)(rollup@4.40.2)(typescript@5.8.3))': + '@astrojs/node@8.3.4(astro@4.16.18(@types/node@22.15.29)(rollup@4.41.1)(typescript@5.8.3))': dependencies: - astro: 4.16.18(@types/node@22.15.18)(rollup@4.40.2)(typescript@5.8.3) + astro: 4.16.18(@types/node@22.15.29)(rollup@4.41.1)(typescript@5.8.3) send: 0.19.1 server-destroy: 1.0.1 transitivePeerDependencies: @@ -2426,11 +2423,11 @@ snapshots: dependencies: prismjs: 1.30.0 - '@astrojs/solid-js@4.4.4(@types/node@22.15.18)(solid-js@1.9.7)': + '@astrojs/solid-js@4.4.4(@types/node@22.15.29)(solid-js@1.9.7)': dependencies: solid-js: 1.9.7 - vite: 5.4.19(@types/node@22.15.18) - vite-plugin-solid: 2.11.6(solid-js@1.9.7)(vite@5.4.19(@types/node@22.15.18)) + vite: 5.4.19(@types/node@22.15.29) + vite-plugin-solid: 2.11.6(solid-js@1.9.7)(vite@5.4.19(@types/node@22.15.29)) transitivePeerDependencies: - '@testing-library/jest-dom' - '@types/node' @@ -2443,12 +2440,12 @@ snapshots: - supports-color - terser - '@astrojs/tailwind@5.1.2(astro@4.16.18(@types/node@22.15.18)(rollup@4.40.2)(typescript@5.8.3))(tailwindcss@3.4.17)': + '@astrojs/tailwind@5.1.2(astro@4.16.18(@types/node@22.15.29)(rollup@4.41.1)(typescript@5.8.3))(tailwindcss@3.4.17)': dependencies: - astro: 4.16.18(@types/node@22.15.18)(rollup@4.40.2)(typescript@5.8.3) - autoprefixer: 10.4.21(postcss@8.5.3) - postcss: 8.5.3 - postcss-load-config: 4.0.2(postcss@8.5.3) + astro: 4.16.18(@types/node@22.15.29)(rollup@4.41.1)(typescript@5.8.3) + autoprefixer: 10.4.21(postcss@8.5.4) + postcss: 8.5.4 + postcss-load-config: 4.0.2(postcss@8.5.4) tailwindcss: 3.4.17 transitivePeerDependencies: - ts-node @@ -2471,20 +2468,20 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.27.2': {} + '@babel/compat-data@7.27.5': {} - '@babel/core@7.27.1': + '@babel/core@7.27.4': dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.27.1 - '@babel/generator': 7.27.1 + '@babel/generator': 7.27.5 '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.27.1(@babel/core@7.27.1) - '@babel/helpers': 7.27.1 - '@babel/parser': 7.27.2 + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.4) + '@babel/helpers': 7.27.4 + '@babel/parser': 7.27.5 '@babel/template': 7.27.2 - '@babel/traverse': 7.27.1 - '@babel/types': 7.27.1 + '@babel/traverse': 7.27.4 + '@babel/types': 7.27.3 convert-source-map: 2.0.0 debug: 4.4.1 gensync: 1.0.0-beta.2 @@ -2493,43 +2490,43 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.27.1': + '@babel/generator@7.27.5': dependencies: - '@babel/parser': 7.27.2 - '@babel/types': 7.27.1 + '@babel/parser': 7.27.5 + '@babel/types': 7.27.3 '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.1.0 - '@babel/helper-annotate-as-pure@7.27.1': + '@babel/helper-annotate-as-pure@7.27.3': dependencies: - '@babel/types': 7.27.1 + '@babel/types': 7.27.3 '@babel/helper-compilation-targets@7.27.2': dependencies: - '@babel/compat-data': 7.27.2 + '@babel/compat-data': 7.27.5 '@babel/helper-validator-option': 7.27.1 - browserslist: 4.24.5 + browserslist: 4.25.0 lru-cache: 5.1.1 semver: 6.3.1 '@babel/helper-module-imports@7.18.6': dependencies: - '@babel/types': 7.27.1 + '@babel/types': 7.27.3 '@babel/helper-module-imports@7.27.1': dependencies: - '@babel/traverse': 7.27.1 - '@babel/types': 7.27.1 + '@babel/traverse': 7.27.4 + '@babel/types': 7.27.3 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.27.1(@babel/core@7.27.1)': + '@babel/helper-module-transforms@7.27.3(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 '@babel/helper-module-imports': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.27.1 + '@babel/traverse': 7.27.4 transitivePeerDependencies: - supports-color @@ -2541,50 +2538,50 @@ snapshots: '@babel/helper-validator-option@7.27.1': {} - '@babel/helpers@7.27.1': + '@babel/helpers@7.27.4': dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.27.1 + '@babel/types': 7.27.3 - '@babel/parser@7.27.2': + '@babel/parser@7.27.5': dependencies: - '@babel/types': 7.27.1 + '@babel/types': 7.27.3 - '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-annotate-as-pure': 7.27.1 + '@babel/core': 7.27.4 + '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-module-imports': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.1) - '@babel/types': 7.27.1 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.4) + '@babel/types': 7.27.3 transitivePeerDependencies: - supports-color '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 - '@babel/parser': 7.27.2 - '@babel/types': 7.27.1 + '@babel/parser': 7.27.5 + '@babel/types': 7.27.3 - '@babel/traverse@7.27.1': + '@babel/traverse@7.27.4': dependencies: '@babel/code-frame': 7.27.1 - '@babel/generator': 7.27.1 - '@babel/parser': 7.27.2 + '@babel/generator': 7.27.5 + '@babel/parser': 7.27.5 '@babel/template': 7.27.2 - '@babel/types': 7.27.1 + '@babel/types': 7.27.3 debug: 4.4.1 globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/types@7.27.1': + '@babel/types@7.27.3': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 @@ -2764,19 +2761,23 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 - '@kixelated/hang@0.1.1': + '@kixelated/hang@0.2.1': dependencies: - '@kixelated/moq': 0.5.0 - '@types/audioworklet': 0.0.75 + '@kixelated/moq': 0.6.0 + '@kixelated/signals': 0.2.0 buffer: 6.0.3 lodash: 4.17.21 solid-js: 1.9.7 - zod: 3.25.17 + zod: 3.25.50 - '@kixelated/moq@0.5.0': + '@kixelated/moq@0.6.0': dependencies: buffer: 6.0.3 + '@kixelated/signals@0.2.0': + dependencies: + solid-js: 1.9.7 + '@mdx-js/mdx@3.1.0(acorn@8.14.1)': dependencies: '@types/estree': 1.0.7 @@ -2824,72 +2825,72 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@rollup/pluginutils@5.1.4(rollup@4.40.2)': + '@rollup/pluginutils@5.1.4(rollup@4.41.1)': dependencies: '@types/estree': 1.0.7 estree-walker: 2.0.2 picomatch: 4.0.2 optionalDependencies: - rollup: 4.40.2 + rollup: 4.41.1 - '@rollup/rollup-android-arm-eabi@4.40.2': + '@rollup/rollup-android-arm-eabi@4.41.1': optional: true - '@rollup/rollup-android-arm64@4.40.2': + '@rollup/rollup-android-arm64@4.41.1': optional: true - '@rollup/rollup-darwin-arm64@4.40.2': + '@rollup/rollup-darwin-arm64@4.41.1': optional: true - '@rollup/rollup-darwin-x64@4.40.2': + '@rollup/rollup-darwin-x64@4.41.1': optional: true - '@rollup/rollup-freebsd-arm64@4.40.2': + '@rollup/rollup-freebsd-arm64@4.41.1': optional: true - '@rollup/rollup-freebsd-x64@4.40.2': + '@rollup/rollup-freebsd-x64@4.41.1': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.40.2': + '@rollup/rollup-linux-arm-gnueabihf@4.41.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.40.2': + '@rollup/rollup-linux-arm-musleabihf@4.41.1': optional: true - '@rollup/rollup-linux-arm64-gnu@4.40.2': + '@rollup/rollup-linux-arm64-gnu@4.41.1': optional: true - '@rollup/rollup-linux-arm64-musl@4.40.2': + '@rollup/rollup-linux-arm64-musl@4.41.1': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.40.2': + '@rollup/rollup-linux-loongarch64-gnu@4.41.1': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.40.2': + '@rollup/rollup-linux-powerpc64le-gnu@4.41.1': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.40.2': + '@rollup/rollup-linux-riscv64-gnu@4.41.1': optional: true - '@rollup/rollup-linux-riscv64-musl@4.40.2': + '@rollup/rollup-linux-riscv64-musl@4.41.1': optional: true - '@rollup/rollup-linux-s390x-gnu@4.40.2': + '@rollup/rollup-linux-s390x-gnu@4.41.1': optional: true - '@rollup/rollup-linux-x64-gnu@4.40.2': + '@rollup/rollup-linux-x64-gnu@4.41.1': optional: true - '@rollup/rollup-linux-x64-musl@4.40.2': + '@rollup/rollup-linux-x64-musl@4.41.1': optional: true - '@rollup/rollup-win32-arm64-msvc@4.40.2': + '@rollup/rollup-win32-arm64-msvc@4.41.1': optional: true - '@rollup/rollup-win32-ia32-msvc@4.40.2': + '@rollup/rollup-win32-ia32-msvc@4.41.1': optional: true - '@rollup/rollup-win32-x64-msvc@4.40.2': + '@rollup/rollup-win32-x64-msvc@4.41.1': optional: true '@shikijs/core@1.29.2': @@ -2940,28 +2941,26 @@ snapshots: postcss-selector-parser: 6.0.10 tailwindcss: 3.4.17 - '@types/audioworklet@0.0.75': {} - '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.27.2 - '@babel/types': 7.27.1 + '@babel/parser': 7.27.5 + '@babel/types': 7.27.3 '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.7 '@types/babel__generator@7.27.0': dependencies: - '@babel/types': 7.27.1 + '@babel/types': 7.27.3 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.27.2 - '@babel/types': 7.27.1 + '@babel/parser': 7.27.5 + '@babel/types': 7.27.3 '@types/babel__traverse@7.20.7': dependencies: - '@babel/types': 7.27.1 + '@babel/types': 7.27.3 '@types/cookie@0.6.0': {} @@ -2991,7 +2990,7 @@ snapshots: dependencies: '@types/unist': 3.0.3 - '@types/node@22.15.18': + '@types/node@22.15.29': dependencies: undici-types: 6.21.0 @@ -3042,17 +3041,17 @@ snapshots: astring@1.9.0: {} - astro@4.16.18(@types/node@22.15.18)(rollup@4.40.2)(typescript@5.8.3): + astro@4.16.18(@types/node@22.15.29)(rollup@4.41.1)(typescript@5.8.3): dependencies: '@astrojs/compiler': 2.12.0 '@astrojs/internal-helpers': 0.4.1 '@astrojs/markdown-remark': 5.3.0 '@astrojs/telemetry': 3.1.0 - '@babel/core': 7.27.1 - '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.27.1) - '@babel/types': 7.27.1 + '@babel/core': 7.27.4 + '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.27.4) + '@babel/types': 7.27.3 '@oslojs/encoding': 1.1.0 - '@rollup/pluginutils': 5.1.4(rollup@4.40.2) + '@rollup/pluginutils': 5.1.4(rollup@4.41.1) '@types/babel__core': 7.20.5 '@types/cookie': 0.6.0 acorn: 8.14.1 @@ -3095,17 +3094,17 @@ snapshots: semver: 7.7.2 shiki: 1.29.2 tinyexec: 0.3.2 - tsconfck: 3.1.5(typescript@5.8.3) + tsconfck: 3.1.6(typescript@5.8.3) unist-util-visit: 5.0.0 vfile: 6.0.3 - vite: 5.4.19(@types/node@22.15.18) - vitefu: 1.0.6(vite@5.4.19(@types/node@22.15.18)) + vite: 5.4.19(@types/node@22.15.29) + vitefu: 1.0.6(vite@5.4.19(@types/node@22.15.29)) which-pm: 3.0.1 xxhash-wasm: 1.1.0 yargs-parser: 21.1.1 - zod: 3.24.4 - zod-to-json-schema: 3.24.5(zod@3.24.4) - zod-to-ts: 1.2.0(typescript@5.8.3)(zod@3.24.4) + zod: 3.25.50 + zod-to-json-schema: 3.24.5(zod@3.25.50) + zod-to-ts: 1.2.0(typescript@5.8.3)(zod@3.25.50) optionalDependencies: sharp: 0.33.5 transitivePeerDependencies: @@ -3123,14 +3122,14 @@ snapshots: asynckit@0.4.0: {} - autoprefixer@10.4.21(postcss@8.5.3): + autoprefixer@10.4.21(postcss@8.5.4): dependencies: - browserslist: 4.24.5 - caniuse-lite: 1.0.30001718 + browserslist: 4.25.0 + caniuse-lite: 1.0.30001720 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 - postcss: 8.5.3 + postcss: 8.5.4 postcss-value-parser: 4.2.0 axios@1.9.0(debug@4.4.1): @@ -3143,20 +3142,20 @@ snapshots: axobject-query@4.1.0: {} - babel-plugin-jsx-dom-expressions@0.39.8(@babel/core@7.27.1): + babel-plugin-jsx-dom-expressions@0.39.8(@babel/core@7.27.4): dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 '@babel/helper-module-imports': 7.18.6 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.1) - '@babel/types': 7.27.1 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.4) + '@babel/types': 7.27.3 html-entities: 2.3.3 parse5: 7.3.0 validate-html-nesting: 1.2.2 - babel-preset-solid@1.9.6(@babel/core@7.27.1): + babel-preset-solid@1.9.6(@babel/core@7.27.4): dependencies: - '@babel/core': 7.27.1 - babel-plugin-jsx-dom-expressions: 0.39.8(@babel/core@7.27.1) + '@babel/core': 7.27.4 + babel-plugin-jsx-dom-expressions: 0.39.8(@babel/core@7.27.4) bail@2.0.2: {} @@ -3187,12 +3186,12 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.24.5: + browserslist@4.25.0: dependencies: - caniuse-lite: 1.0.30001718 - electron-to-chromium: 1.5.155 + caniuse-lite: 1.0.30001720 + electron-to-chromium: 1.5.162 node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.24.5) + update-browserslist-db: 1.1.3(browserslist@4.25.0) buffer@6.0.3: dependencies: @@ -3208,7 +3207,7 @@ snapshots: camelcase@8.0.0: {} - caniuse-lite@1.0.30001718: {} + caniuse-lite@1.0.30001720: {} ccount@2.0.1: {} @@ -3341,7 +3340,7 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.5.155: {} + electron-to-chromium@1.5.162: {} emoji-regex-xs@1.0.0: {} @@ -3875,8 +3874,8 @@ snapshots: magicast@0.3.5: dependencies: - '@babel/parser': 7.27.2 - '@babel/types': 7.27.1 + '@babel/parser': 7.27.5 + '@babel/types': 7.27.3 source-map-js: 1.2.1 markdown-extensions@2.0.0: {} @@ -4478,28 +4477,28 @@ snapshots: dependencies: find-up: 4.1.0 - postcss-import@15.1.0(postcss@8.5.3): + postcss-import@15.1.0(postcss@8.5.4): dependencies: - postcss: 8.5.3 + postcss: 8.5.4 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.10 - postcss-js@4.0.1(postcss@8.5.3): + postcss-js@4.0.1(postcss@8.5.4): dependencies: camelcase-css: 2.0.1 - postcss: 8.5.3 + postcss: 8.5.4 - postcss-load-config@4.0.2(postcss@8.5.3): + postcss-load-config@4.0.2(postcss@8.5.4): dependencies: lilconfig: 3.1.3 yaml: 2.8.0 optionalDependencies: - postcss: 8.5.3 + postcss: 8.5.4 - postcss-nested@6.2.0(postcss@8.5.3): + postcss-nested@6.2.0(postcss@8.5.4): dependencies: - postcss: 8.5.3 + postcss: 8.5.4 postcss-selector-parser: 6.1.2 postcss-selector-parser@6.0.10: @@ -4514,7 +4513,7 @@ snapshots: postcss-value-parser@4.2.0: {} - postcss@8.5.3: + postcss@8.5.4: dependencies: nanoid: 3.3.11 picocolors: 1.1.1 @@ -4711,30 +4710,30 @@ snapshots: reusify@1.1.0: {} - rollup@4.40.2: + rollup@4.41.1: dependencies: '@types/estree': 1.0.7 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.40.2 - '@rollup/rollup-android-arm64': 4.40.2 - '@rollup/rollup-darwin-arm64': 4.40.2 - '@rollup/rollup-darwin-x64': 4.40.2 - '@rollup/rollup-freebsd-arm64': 4.40.2 - '@rollup/rollup-freebsd-x64': 4.40.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.40.2 - '@rollup/rollup-linux-arm-musleabihf': 4.40.2 - '@rollup/rollup-linux-arm64-gnu': 4.40.2 - '@rollup/rollup-linux-arm64-musl': 4.40.2 - '@rollup/rollup-linux-loongarch64-gnu': 4.40.2 - '@rollup/rollup-linux-powerpc64le-gnu': 4.40.2 - '@rollup/rollup-linux-riscv64-gnu': 4.40.2 - '@rollup/rollup-linux-riscv64-musl': 4.40.2 - '@rollup/rollup-linux-s390x-gnu': 4.40.2 - '@rollup/rollup-linux-x64-gnu': 4.40.2 - '@rollup/rollup-linux-x64-musl': 4.40.2 - '@rollup/rollup-win32-arm64-msvc': 4.40.2 - '@rollup/rollup-win32-ia32-msvc': 4.40.2 - '@rollup/rollup-win32-x64-msvc': 4.40.2 + '@rollup/rollup-android-arm-eabi': 4.41.1 + '@rollup/rollup-android-arm64': 4.41.1 + '@rollup/rollup-darwin-arm64': 4.41.1 + '@rollup/rollup-darwin-x64': 4.41.1 + '@rollup/rollup-freebsd-arm64': 4.41.1 + '@rollup/rollup-freebsd-x64': 4.41.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.41.1 + '@rollup/rollup-linux-arm-musleabihf': 4.41.1 + '@rollup/rollup-linux-arm64-gnu': 4.41.1 + '@rollup/rollup-linux-arm64-musl': 4.41.1 + '@rollup/rollup-linux-loongarch64-gnu': 4.41.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.41.1 + '@rollup/rollup-linux-riscv64-gnu': 4.41.1 + '@rollup/rollup-linux-riscv64-musl': 4.41.1 + '@rollup/rollup-linux-s390x-gnu': 4.41.1 + '@rollup/rollup-linux-x64-gnu': 4.41.1 + '@rollup/rollup-linux-x64-musl': 4.41.1 + '@rollup/rollup-win32-arm64-msvc': 4.41.1 + '@rollup/rollup-win32-ia32-msvc': 4.41.1 + '@rollup/rollup-win32-x64-msvc': 4.41.1 fsevents: 2.3.3 run-parallel@1.2.0: @@ -4768,11 +4767,11 @@ snapshots: transitivePeerDependencies: - supports-color - seroval-plugins@1.3.1(seroval@1.3.1): + seroval-plugins@1.3.2(seroval@1.3.2): dependencies: - seroval: 1.3.1 + seroval: 1.3.2 - seroval@1.3.1: {} + seroval@1.3.2: {} server-destroy@1.0.1: {} @@ -4834,14 +4833,14 @@ snapshots: solid-js@1.9.7: dependencies: csstype: 3.1.3 - seroval: 1.3.1 - seroval-plugins: 1.3.1(seroval@1.3.1) + seroval: 1.3.2 + seroval-plugins: 1.3.2(seroval@1.3.2) solid-refresh@0.6.3(solid-js@1.9.7): dependencies: - '@babel/generator': 7.27.1 + '@babel/generator': 7.27.5 '@babel/helper-module-imports': 7.27.1 - '@babel/types': 7.27.1 + '@babel/types': 7.27.3 solid-js: 1.9.7 transitivePeerDependencies: - supports-color @@ -4929,11 +4928,11 @@ snapshots: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.1.1 - postcss: 8.5.3 - postcss-import: 15.1.0(postcss@8.5.3) - postcss-js: 4.0.1(postcss@8.5.3) - postcss-load-config: 4.0.2(postcss@8.5.3) - postcss-nested: 6.2.0(postcss@8.5.3) + postcss: 8.5.4 + postcss-import: 15.1.0(postcss@8.5.4) + postcss-js: 4.0.1(postcss@8.5.4) + postcss-load-config: 4.0.2(postcss@8.5.4) + postcss-nested: 6.2.0(postcss@8.5.4) postcss-selector-parser: 6.1.2 resolve: 1.22.10 sucrase: 3.35.0 @@ -4962,7 +4961,7 @@ snapshots: ts-interface-checker@0.1.13: {} - tsconfck@3.1.5(typescript@5.8.3): + tsconfck@3.1.6(typescript@5.8.3): optionalDependencies: typescript: 5.8.3 @@ -5035,9 +5034,9 @@ snapshots: universalify@2.0.1: {} - update-browserslist-db@1.1.3(browserslist@4.24.5): + update-browserslist-db@1.1.3(browserslist@4.25.0): dependencies: - browserslist: 4.24.5 + browserslist: 4.25.0 escalade: 3.2.0 picocolors: 1.1.1 @@ -5060,53 +5059,53 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-plugin-mkcert@1.17.8(vite@5.4.19(@types/node@22.15.18)): + vite-plugin-mkcert@1.17.8(vite@5.4.19(@types/node@22.15.29)): dependencies: axios: 1.9.0(debug@4.4.1) debug: 4.4.1 picocolors: 1.1.1 - vite: 5.4.19(@types/node@22.15.18) + vite: 5.4.19(@types/node@22.15.29) transitivePeerDependencies: - supports-color - vite-plugin-solid@2.11.6(solid-js@1.9.7)(vite@5.4.19(@types/node@22.15.18)): + vite-plugin-solid@2.11.6(solid-js@1.9.7)(vite@5.4.19(@types/node@22.15.29)): dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.27.4 '@types/babel__core': 7.20.5 - babel-preset-solid: 1.9.6(@babel/core@7.27.1) + babel-preset-solid: 1.9.6(@babel/core@7.27.4) merge-anything: 5.1.7 solid-js: 1.9.7 solid-refresh: 0.6.3(solid-js@1.9.7) - vite: 5.4.19(@types/node@22.15.18) - vitefu: 1.0.6(vite@5.4.19(@types/node@22.15.18)) + vite: 5.4.19(@types/node@22.15.29) + vitefu: 1.0.6(vite@5.4.19(@types/node@22.15.29)) transitivePeerDependencies: - supports-color - vite-plugin-static-copy@2.3.1(vite@5.4.19(@types/node@22.15.18)): + vite-plugin-static-copy@2.3.1(vite@5.4.19(@types/node@22.15.29)): dependencies: chokidar: 3.6.0 fast-glob: 3.3.3 fs-extra: 11.3.0 p-map: 7.0.3 picocolors: 1.1.1 - vite: 5.4.19(@types/node@22.15.18) + vite: 5.4.19(@types/node@22.15.29) - vite-plugin-wasm@3.4.1(vite@5.4.19(@types/node@22.15.18)): + vite-plugin-wasm@3.4.1(vite@5.4.19(@types/node@22.15.29)): dependencies: - vite: 5.4.19(@types/node@22.15.18) + vite: 5.4.19(@types/node@22.15.29) - vite@5.4.19(@types/node@22.15.18): + vite@5.4.19(@types/node@22.15.29): dependencies: esbuild: 0.21.5 - postcss: 8.5.3 - rollup: 4.40.2 + postcss: 8.5.4 + rollup: 4.41.1 optionalDependencies: - '@types/node': 22.15.18 + '@types/node': 22.15.29 fsevents: 2.3.3 - vitefu@1.0.6(vite@5.4.19(@types/node@22.15.18)): + vitefu@1.0.6(vite@5.4.19(@types/node@22.15.29)): optionalDependencies: - vite: 5.4.19(@types/node@22.15.18) + vite: 5.4.19(@types/node@22.15.29) web-namespaces@2.0.1: {} @@ -5152,17 +5151,15 @@ snapshots: yocto-queue@1.2.1: {} - zod-to-json-schema@3.24.5(zod@3.24.4): + zod-to-json-schema@3.24.5(zod@3.25.50): dependencies: - zod: 3.24.4 + zod: 3.25.50 - zod-to-ts@1.2.0(typescript@5.8.3)(zod@3.24.4): + zod-to-ts@1.2.0(typescript@5.8.3)(zod@3.25.50): dependencies: typescript: 5.8.3 - zod: 3.24.4 - - zod@3.24.4: {} + zod: 3.25.50 - zod@3.25.17: {} + zod@3.25.50: {} zwitch@2.0.4: {} diff --git a/src/components/publish.tsx b/src/components/publish.tsx index 482fd77..af5e82b 100644 --- a/src/components/publish.tsx +++ b/src/components/publish.tsx @@ -1,43 +1,51 @@ -import { Publish, PublishControls, Support } from "@kixelated/hang"; +import { Connection, Publish, Support } from "@kixelated/hang"; import { adjectives, animals, uniqueNamesGenerator } from "unique-names-generator"; -import { Show, onCleanup } from "solid-js"; +import { Show, createEffect, onCleanup } from "solid-js"; export default function () { const name = uniqueNamesGenerator({ dictionaries: [adjectives, animals], separator: "-" }); const url = new URL( - `${import.meta.env.PUBLIC_RELAY_SCHEME}://${import.meta.env.PUBLIC_RELAY_HOST}/demo/${name}.hang`, + `${import.meta.env.PUBLIC_RELAY_SCHEME}://${import.meta.env.PUBLIC_RELAY_HOST}/anon/${name}.hang`, ); - const video = ( + const preview = (