Pulumi code for my server setup
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

wahoo

+3802 -2644
+45 -4
.env.example
··· 1 - PGID= 2 - TZ= 3 - PUID= 1 + # shellcheck disable= 2 + PGID=1000 3 + TZ="Europe/Amsterdam" 4 + PUID=1000 4 5 AUTO_LANGUAGES_DISCORD_WEBHOOK= 5 6 CADDY_PASSWORD= 6 7 CADDY_USERNAME= 7 - CF_API_KEY= 8 8 CLOUDFLARE_API_KEY= 9 + CLOUDFLARE_EMAIL= 10 + CLOUDFLARE_ZONE_ID= 9 11 CONNECTION_HOST= 10 12 CONNECTION_PASSWORD= 13 + CONNECTION_PORT= 11 14 CONNECTION_USER= 12 15 CURSEFORGE_API_KEY= 13 16 DISCORD_AUTO_LANGUAGES_WEBHOOK= ··· 29 32 VALKEY_PASSWORD= 30 33 VNC_PASSWORD= 31 34 KANEELNAS_HOST= 35 + ANILIST_TOKEN_1= 36 + PLEX_USER_1= 37 + ANILIST_TOKEN_2= 38 + PLEX_USER_2= 39 + ANILIST_TOKEN_3= 40 + PLEX_USER_3= 41 + ANILIST_TOKEN_4= 42 + PLEX_USER_4= 43 + USENET_HOSTNAME= 44 + USENET_USERNAME= 45 + USENET_PASSWORD= 46 + USENET_PORT= 47 + PEGASUS_ADMIN_PASSWORD= 48 + PEGASUS_ROTATION_KEY_MULTIBASE= 49 + PEGASUS_JWK_MULTIBASE= 50 + PEGASUS_DPOP_NONCE_SECRET= 51 + PDS_SMTP_AUTH_URI= 52 + PDS_ADMIN_PASSWORD= 53 + PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX= 54 + PDS_JWT_SECRET= 55 + SEAFILE_MARIADB_ROOT_PASSWORD= 56 + SEAFILE_MARIADB_USER_PASSWORD= 57 + SEAFILE_ADMIN_EMAIL= 58 + SEAFILE_ADMIN_PASSWORD= 59 + SEAFILE_REDIS_PASSWORD= 60 + SEAFILE_JWT_PRIVATE_KEY= 61 + FILEBROWSER_ADMIN_PASSWORD= 62 + EXPLORER_SECRET= 63 + AUTOKUMA_USERNAME= 64 + AUTOKUMA_PASSWORD= 65 + ATPROTO_DID= 66 + TRANQUIL_JWT_SECRET= 67 + TRANQUIL_DPOP_SECRET= 68 + TRANQUIL_MASTER_KEY= 69 + TRANQUIL_PLC_ROTATION_KEY= 70 + TRANQUIL_DISCORD_BOT_TOKEN= 71 + RELAY_ADMIN_PASSWORD= 72 + TERRARIA_PASSWORD=
+2
.gitignore
··· 3 3 !.old/jsonnet/ 4 4 .env 5 5 *.trace 6 + msmtprc 7 + traefik-secrets.ts
-27
.old/jsonnet/README.md
··· 1 - # Media Server Stack (Old) 2 - 3 - ### This is an old version of my media server config. The new version using Pulumi can be found [here](../..). The Docker Swarm setup is only kept for reference. 4 - 5 - My media server is hosted with Docker Swarm. This repo consists of a Docker Compose file written in Jsonnet and compiled to JSON (works with any YAML parser because JSON is a subset of YAML). 6 - 7 - My main server is called Haring (following my device hostname naming scheme of Dutch food). 8 - 9 - Compile and copy to clipboard in WSL: 10 - ```bash 11 - jsonnet haring.jsonnet -o haring.json && win32yank.exe -i < haring.json 12 - ``` 13 - or under Wayland 14 - ```bash 15 - jsonnet haring.jsonnet -o haring.json && wl-copy < haring.json 16 - ``` 17 - or under Xorg 18 - ```bash 19 - jsonnet haring.jsonnet -o haring.json && xclip < haring.json 20 - ``` 21 - 22 - ## Setup 23 - ```bash 24 - docker swarm init 25 - docker stack deploy -c portainer-agent-stack.yml portainer 26 - ``` 27 - then deploy the media server stack by copying the contents of `haring.json` to Portainer.
-729
.old/jsonnet/haring.json
··· 1 - { 2 - "services": { 3 - "anki": { 4 - "deploy": { 5 - "labels": { 6 - "traefik.docker.network": "traefik", 7 - "traefik.enable": "true", 8 - "traefik.http.routers.anki.entrypoints": "https", 9 - "traefik.http.routers.anki.rule": "Host(`anki.bas.sh`)", 10 - "traefik.http.routers.anki.tls.certresolver": "cloudflare", 11 - "traefik.http.services.anki.loadbalancer.server.port": 27701 12 - } 13 - }, 14 - "environment": { 15 - "ANKISYNCD_AUTH_DB_PATH": "/app/data/auth.db", 16 - "ANKISYNCD_DATA_ROOT": "/app/data/collections", 17 - "ANKISYNCD_SESSION_DB_PATH": "/app/data/session.db", 18 - "GUID": "${GID}", 19 - "PUID": "${UID}", 20 - "TZ": "${TZ}" 21 - }, 22 - "hostname": "Haring", 23 - "image": "ankicommunity/anki-sync-server:latest-develop", 24 - "volumes": [ 25 - "${ROOT}/docker/anki:/app/data" 26 - ] 27 - }, 28 - "autobrr": { 29 - "deploy": { 30 - "labels": { 31 - "traefik.docker.network": "traefik", 32 - "traefik.enable": "true", 33 - "traefik.http.routers.autobrr.entrypoints": "https", 34 - "traefik.http.routers.autobrr.rule": "Host(`autobrr.bas.sh`)", 35 - "traefik.http.routers.autobrr.tls.certresolver": "cloudflare", 36 - "traefik.http.services.autobrr.loadbalancer.server.port": 7474 37 - } 38 - }, 39 - "environment": { 40 - "GUID": "${GID}", 41 - "PUID": "${UID}", 42 - "TZ": "${TZ}" 43 - }, 44 - "hostname": "Haring", 45 - "image": "ghcr.io/autobrr/autobrr", 46 - "volumes": [ 47 - "${ROOT}/docker/autobrr:/config" 48 - ] 49 - }, 50 - "autolanguages": { 51 - "environment": { 52 - "GUID": "${GID}", 53 - "NOTIFICATIONS_APPRISE_CONFIGS": "[{ urls: [\"${DISCORD_AUTO_LANGUAGES_WEBHOOK_URL}\"], events: [\"play_or_activity\", \"scheduler\"] }]", 54 - "NOTIFICATIONS_ENABLE": "true", 55 - "PLEX_TOKEN": "${PLEX_TOKEN}", 56 - "PLEX_URL": "${PLEX_URL}", 57 - "PUID": "${UID}", 58 - "TRIGGER_ON_ACTIVITY": "true", 59 - "TZ": "${TZ}", 60 - "UPDATE_LEVEL": "season" 61 - }, 62 - "hostname": "Haring", 63 - "image": "remirigal/plex-auto-languages", 64 - "volumes": [ 65 - "${ROOT}/docker/autolanguages:/config" 66 - ] 67 - }, 68 - "bas": { 69 - "deploy": { 70 - "labels": { 71 - "traefik.docker.network": "traefik", 72 - "traefik.enable": "true", 73 - "traefik.http.routers.bas.entrypoints": "https", 74 - "traefik.http.routers.bas.rule": "Host(`bas.sh`)", 75 - "traefik.http.routers.bas.tls.certresolver": "cloudflare", 76 - "traefik.http.services.bas.loadbalancer.server.port": 80 77 - } 78 - }, 79 - "environment": { 80 - "GUID": "${GID}", 81 - "PUID": "${UID}", 82 - "TZ": "${TZ}" 83 - }, 84 - "hostname": "Haring", 85 - "image": "ghcr.io/linuxserver/nginx", 86 - "volumes": [ 87 - "${ROOT}/docker/bas:/config", 88 - "${ROOT}/data/web/bas:/config/www" 89 - ] 90 - }, 91 - "bazarr": { 92 - "deploy": { 93 - "labels": { 94 - "traefik.docker.network": "traefik", 95 - "traefik.enable": "true", 96 - "traefik.http.routers.bazarr.entrypoints": "https", 97 - "traefik.http.routers.bazarr.rule": "Host(`bazarr.bas.sh`)", 98 - "traefik.http.routers.bazarr.tls.certresolver": "cloudflare", 99 - "traefik.http.services.bazarr.loadbalancer.server.port": 6767 100 - } 101 - }, 102 - "environment": { 103 - "GUID": "${GID}", 104 - "PUID": "${UID}", 105 - "TZ": "${TZ}" 106 - }, 107 - "hostname": "Haring", 108 - "image": "ghcr.io/linuxserver/bazarr", 109 - "volumes": [ 110 - "${ROOT}/docker/bazarr:/config", 111 - "${ROOT}/data:/home/bas/data:rslave" 112 - ] 113 - }, 114 - "files": { 115 - "deploy": { 116 - "labels": { 117 - "traefik.docker.network": "traefik", 118 - "traefik.enable": "true", 119 - "traefik.http.routers.files.entrypoints": "https", 120 - "traefik.http.routers.files.rule": "Host(`files.bas.sh`)", 121 - "traefik.http.routers.files.tls.certresolver": "cloudflare", 122 - "traefik.http.routers.get.entrypoints": "https", 123 - "traefik.http.routers.get.rule": "Host(`get.bas.sh`)", 124 - "traefik.http.routers.get.tls.certresolver": "cloudflare", 125 - "traefik.http.services.files.loadbalancer.server.port": 8000 126 - } 127 - }, 128 - "environment": { 129 - "GUID": "${GID}", 130 - "PUID": "${UID}", 131 - "TZ": "${TZ}" 132 - }, 133 - "hostname": "Haring", 134 - "image": "codeskyblue/gohttpserver", 135 - "volumes": [ 136 - "${ROOT}/data/web/files:/app/public" 137 - ] 138 - }, 139 - "gitea": { 140 - "deploy": { 141 - "labels": { 142 - "traefik.docker.network": "traefik", 143 - "traefik.enable": "true", 144 - "traefik.http.routers.gitea.entrypoints": "https", 145 - "traefik.http.routers.gitea.rule": "Host(`gitea.bas.sh`)", 146 - "traefik.http.routers.gitea.tls.certresolver": "cloudflare", 147 - "traefik.http.services.gitea.loadbalancer.server.port": 3000 148 - }, 149 - "replicas": 0 150 - }, 151 - "environment": { 152 - "GUID": "${GID}", 153 - "PUID": "${UID}", 154 - "TZ": "${TZ}" 155 - }, 156 - "hostname": "Haring", 157 - "image": "gitea/gitea", 158 - "ports": [ 159 - "2222:22", 160 - "3000:3000" 161 - ], 162 - "volumes": [ 163 - "${ROOT}/docker/gitea:/data", 164 - "/etc/timezone:/etc/timezone:ro", 165 - "/etc/localtime:/etc/localtime:ro" 166 - ] 167 - }, 168 - "jackett": { 169 - "deploy": { 170 - "labels": { 171 - "traefik.docker.network": "traefik", 172 - "traefik.enable": "true", 173 - "traefik.http.routers.jackett.entrypoints": "https", 174 - "traefik.http.routers.jackett.rule": "Host(`jackett.bas.sh`)", 175 - "traefik.http.routers.jackett.tls.certresolver": "cloudflare", 176 - "traefik.http.services.jackett.loadbalancer.server.port": 9117 177 - } 178 - }, 179 - "environment": { 180 - "GUID": "${GID}", 181 - "PUID": "${UID}", 182 - "TZ": "${TZ}" 183 - }, 184 - "hostname": "Haring", 185 - "image": "ghcr.io/linuxserver/jackett", 186 - "volumes": [ 187 - "${ROOT}/docker/jackett:/config" 188 - ] 189 - }, 190 - "kitana": { 191 - "command": [ 192 - "-P" 193 - ], 194 - "deploy": { 195 - "labels": { 196 - "traefik.docker.network": "traefik", 197 - "traefik.enable": "true", 198 - "traefik.http.routers.kitana.entrypoints": "https", 199 - "traefik.http.routers.kitana.rule": "Host(`kitana.bas.sh`)", 200 - "traefik.http.routers.kitana.tls.certresolver": "cloudflare", 201 - "traefik.http.services.kitana.loadbalancer.server.port": 31337 202 - } 203 - }, 204 - "environment": { 205 - "GUID": "${GID}", 206 - "PUID": "${UID}", 207 - "TZ": "${TZ}" 208 - }, 209 - "hostname": "Haring", 210 - "image": "pannal/kitana", 211 - "volumes": [ 212 - "${ROOT}/docker/kitana:/app/data" 213 - ] 214 - }, 215 - "librespeed": { 216 - "deploy": { 217 - "labels": { 218 - "traefik.docker.network": "traefik", 219 - "traefik.enable": "true", 220 - "traefik.http.routers.speedtest.entrypoints": "https", 221 - "traefik.http.routers.speedtest.rule": "Host(`speedtest.bas.sh`)", 222 - "traefik.http.routers.speedtest.tls.certresolver": "cloudflare", 223 - "traefik.http.services.speedtest.loadbalancer.server.port": 80 224 - } 225 - }, 226 - "environment": { 227 - "EMAIL": "hi@bas.sh", 228 - "ENABLE_ID_OBFUSCATION": "true", 229 - "GUID": "${GID}", 230 - "IPINFO_APIKEY": "${IPINFO_APIKEY}", 231 - "PASSWORD": "${PASSWORD}", 232 - "PUID": "${UID}", 233 - "REDACT_IP_ADDRESSES": "true", 234 - "TELEMETRY": "true", 235 - "TITLE": "Speedtest | Bas", 236 - "TZ": "${TZ}" 237 - }, 238 - "hostname": "Haring", 239 - "image": "ghcr.io/linuxserver/librespeed", 240 - "volumes": [ 241 - "${ROOT}/docker/librespeed:/config" 242 - ] 243 - }, 244 - "maintainerr": { 245 - "deploy": { 246 - "labels": { 247 - "traefik.docker.network": "traefik", 248 - "traefik.enable": "true", 249 - "traefik.http.routers.maintainerr.entrypoints": "https", 250 - "traefik.http.routers.maintainerr.rule": "Host(`maintainerr.bas.sh`)", 251 - "traefik.http.routers.maintainerr.tls.certresolver": "cloudflare", 252 - "traefik.http.services.maintainerr.loadbalancer.server.port": 80 253 - }, 254 - "replicas": 0 255 - }, 256 - "environment": { 257 - "GUID": "${GID}", 258 - "PUID": "${UID}", 259 - "TZ": "${TZ}" 260 - }, 261 - "hostname": "Haring", 262 - "image": "jorenn92/maintainerr", 263 - "volumes": [ 264 - "${ROOT}/docker/maintainerr:/opt/data" 265 - ] 266 - }, 267 - "mkvtoolnix": { 268 - "deploy": { 269 - "labels": { 270 - "traefik.docker.network": "traefik", 271 - "traefik.enable": "true", 272 - "traefik.http.routers.mkvtoolnix.entrypoints": "https", 273 - "traefik.http.routers.mkvtoolnix.rule": "Host(`mkvtoolnix.bas.sh`)", 274 - "traefik.http.routers.mkvtoolnix.tls.certresolver": "cloudflare", 275 - "traefik.http.services.mkvtoolnix.loadbalancer.server.port": 5800 276 - } 277 - }, 278 - "environment": { 279 - "APP_NICENESS": "10", 280 - "DARK_MODE": "1", 281 - "ENABLE_CJK_FONT": "1", 282 - "GUID": "${GID}", 283 - "KEEP_APP_RUNNING": "1", 284 - "PUID": "${UID}", 285 - "TZ": "${TZ}", 286 - "VNC_PASSWORD": "${MKVTOOLNIX_PASSWORD}" 287 - }, 288 - "hostname": "Haring", 289 - "image": "jlesage/mkvtoolnix", 290 - "volumes": [ 291 - "${ROOT}/docker/mkvtoolnix:/config", 292 - "${ROOT}/data:/home/bas/data:rslave" 293 - ] 294 - }, 295 - "monero": { 296 - "command": [ 297 - "--data-dir /monero" 298 - ], 299 - "deploy": { 300 - "labels": { 301 - "traefik.docker.network": "traefik", 302 - "traefik.enable": "true", 303 - "traefik.http.routers.monero.entrypoints": "https", 304 - "traefik.http.routers.monero.rule": "Host(`monero.bas.sh`)", 305 - "traefik.http.routers.monero.tls.certresolver": "cloudflare", 306 - "traefik.http.services.monero.loadbalancer.server.port": 28081 307 - }, 308 - "replicas": 0 309 - }, 310 - "environment": { 311 - "GUID": "${GID}", 312 - "PUID": "${UID}", 313 - "RPC_PASSWD": "${PASSWORD}", 314 - "RPC_USER": "bas", 315 - "TZ": "${TZ}" 316 - }, 317 - "hostname": "Haring", 318 - "image": "rinocommunity/monero", 319 - "ports": [ 320 - "28080:28080", 321 - "28081:28081" 322 - ], 323 - "volumes": [ 324 - "${ROOT}/docker/monero:/monero" 325 - ] 326 - }, 327 - "omegabrr": { 328 - "deploy": { 329 - "labels": { 330 - "traefik.docker.network": "traefik", 331 - "traefik.enable": "true", 332 - "traefik.http.routers.omegabrr.entrypoints": "https", 333 - "traefik.http.routers.omegabrr.rule": "Host(`omegabrr.bas.sh`)", 334 - "traefik.http.routers.omegabrr.tls.certresolver": "cloudflare", 335 - "traefik.http.services.omegabrr.loadbalancer.server.port": 7441 336 - }, 337 - "replicas": 0 338 - }, 339 - "environment": { 340 - "GUID": "${GID}", 341 - "PUID": "${UID}", 342 - "TZ": "${TZ}" 343 - }, 344 - "hostname": "Haring", 345 - "image": "ghcr.io/autobrr/omegabrr", 346 - "user": "1000:1000", 347 - "volumes": [ 348 - "${ROOT}/docker/omegabrr:/config" 349 - ] 350 - }, 351 - "overseerr": { 352 - "deploy": { 353 - "labels": { 354 - "traefik.docker.network": "traefik", 355 - "traefik.enable": "true", 356 - "traefik.http.routers.request.entrypoints": "https", 357 - "traefik.http.routers.request.rule": "Host(`request.bas.sh`)", 358 - "traefik.http.routers.request.tls.certresolver": "cloudflare", 359 - "traefik.http.services.request.loadbalancer.server.port": 5055 360 - } 361 - }, 362 - "environment": { 363 - "GUID": "${GID}", 364 - "PUID": "${UID}", 365 - "TZ": "${TZ}" 366 - }, 367 - "hostname": "Haring", 368 - "image": "ghcr.io/linuxserver/overseerr", 369 - "volumes": [ 370 - "${ROOT}/docker/overseerr:/config" 371 - ] 372 - }, 373 - "plex": { 374 - "deploy": { 375 - "labels": { 376 - "traefik.docker.network": "traefik", 377 - "traefik.enable": "true", 378 - "traefik.http.routers.plex.entrypoints": "https", 379 - "traefik.http.routers.plex.rule": "Host(`plex.bas.sh`)", 380 - "traefik.http.routers.plex.tls.certresolver": "cloudflare", 381 - "traefik.http.services.plex.loadbalancer.server.port": 32400 382 - } 383 - }, 384 - "environment": { 385 - "GUID": "${GID}", 386 - "PUID": "${UID}", 387 - "TZ": "${TZ}", 388 - "VERSION": "latest" 389 - }, 390 - "hostname": "Haring", 391 - "image": "ghcr.io/linuxserver/plex", 392 - "ports": [ 393 - "32400:32400/tcp", 394 - "3005:3005/tcp", 395 - "8324:8324/tcp", 396 - "32469:32469/tcp", 397 - "1900:1900/udp", 398 - "32410:32410/udp", 399 - "32412:32412/udp", 400 - "32413:32413/udp", 401 - "32414:32414/udp", 402 - "33400:33400/tcp" 403 - ], 404 - "volumes": [ 405 - "${ROOT}/docker/plex:/config", 406 - "${ROOT}/data:/home/bas/data:rslave", 407 - "/home/bas/git:/home/bas/git" 408 - ] 409 - }, 410 - "radarr": { 411 - "deploy": { 412 - "labels": { 413 - "traefik.docker.network": "traefik", 414 - "traefik.enable": "true", 415 - "traefik.http.routers.radarr.entrypoints": "https", 416 - "traefik.http.routers.radarr.rule": "Host(`radarr.bas.sh`)", 417 - "traefik.http.routers.radarr.tls.certresolver": "cloudflare", 418 - "traefik.http.services.radarr.loadbalancer.server.port": 7878 419 - } 420 - }, 421 - "environment": { 422 - "GUID": "${GID}", 423 - "PUID": "${UID}", 424 - "TZ": "${TZ}" 425 - }, 426 - "hostname": "Haring", 427 - "image": "ghcr.io/linuxserver/radarr", 428 - "volumes": [ 429 - "${ROOT}/docker/radarr:/config", 430 - "${ROOT}/data:/home/bas/data:rslave" 431 - ] 432 - }, 433 - "resilio": { 434 - "deploy": { 435 - "labels": { 436 - "traefik.docker.network": "traefik", 437 - "traefik.enable": "true", 438 - "traefik.http.routers.sync.entrypoints": "https", 439 - "traefik.http.routers.sync.rule": "Host(`sync.bas.sh`)", 440 - "traefik.http.routers.sync.tls.certresolver": "cloudflare", 441 - "traefik.http.services.sync.loadbalancer.server.port": 8888 442 - }, 443 - "replicas": 0 444 - }, 445 - "environment": { 446 - "GUID": "${GID}", 447 - "PUID": "${UID}", 448 - "TZ": "${TZ}" 449 - }, 450 - "hostname": "Haring", 451 - "image": "ghcr.io/linuxserver/resilio-sync", 452 - "ports": [ 453 - "55555:55555" 454 - ], 455 - "volumes": [ 456 - "${ROOT}/docker/resilio:/config", 457 - "${ROOT}/data:/home/bas/data:rslave", 458 - "${ROOT}/data/resilio/downloads:/downloads" 459 - ] 460 - }, 461 - "sabnzbd": { 462 - "deploy": { 463 - "labels": { 464 - "traefik.docker.network": "traefik", 465 - "traefik.enable": "true", 466 - "traefik.http.routers.sabnzbd.entrypoints": "https", 467 - "traefik.http.routers.sabnzbd.rule": "Host(`sabnzbd.bas.sh`)", 468 - "traefik.http.routers.sabnzbd.tls.certresolver": "cloudflare", 469 - "traefik.http.services.sabnzbd.loadbalancer.server.port": 8080 470 - } 471 - }, 472 - "environment": { 473 - "GUID": "${GID}", 474 - "PUID": "${UID}", 475 - "TZ": "${TZ}" 476 - }, 477 - "hostname": "Haring", 478 - "image": "ghcr.io/linuxserver/sabnzbd", 479 - "volumes": [ 480 - "${ROOT}/docker/sabnzbd:/config", 481 - "${ROOT}/data:/home/bas/data:rslave" 482 - ] 483 - }, 484 - "sonarr": { 485 - "deploy": { 486 - "labels": { 487 - "traefik.docker.network": "traefik", 488 - "traefik.enable": "true", 489 - "traefik.http.routers.sonarr.entrypoints": "https", 490 - "traefik.http.routers.sonarr.rule": "Host(`sonarr.bas.sh`)", 491 - "traefik.http.routers.sonarr.tls.certresolver": "cloudflare", 492 - "traefik.http.services.sonarr.loadbalancer.server.port": 8989 493 - } 494 - }, 495 - "environment": { 496 - "GUID": "${GID}", 497 - "PUID": "${UID}", 498 - "TZ": "${TZ}" 499 - }, 500 - "hostname": "Haring", 501 - "image": "ghcr.io/linuxserver/sonarr", 502 - "volumes": [ 503 - "${ROOT}/docker/sonarr:/config", 504 - "${ROOT}/data:/home/bas/data:rslave" 505 - ] 506 - }, 507 - "static": { 508 - "deploy": { 509 - "labels": { 510 - "traefik.docker.network": "traefik", 511 - "traefik.enable": "true", 512 - "traefik.http.routers.files.entrypoints": "https", 513 - "traefik.http.routers.files.rule": "Host(`files.bas.sh`)", 514 - "traefik.http.routers.files.tls.certresolver": "cloudflare", 515 - "traefik.http.routers.get.entrypoints": "https", 516 - "traefik.http.routers.get.rule": "Host(`get.bas.sh`)", 517 - "traefik.http.routers.get.tls.certresolver": "cloudflare", 518 - "traefik.http.routers.static.entrypoints": "https", 519 - "traefik.http.routers.static.rule": "Host(`static.bas.sh`)", 520 - "traefik.http.routers.static.tls.certresolver": "cloudflare", 521 - "traefik.http.services.static.loadbalancer.server.port": 8080 522 - } 523 - }, 524 - "environment": { 525 - "CORS": "true", 526 - "GUID": "${GID}", 527 - "PUID": "${UID}", 528 - "TZ": "${TZ}" 529 - }, 530 - "hostname": "Haring", 531 - "image": "halverneus/static-file-server", 532 - "volumes": [ 533 - "${ROOT}/data/web/files:/web" 534 - ] 535 - }, 536 - "tautulli": { 537 - "deploy": { 538 - "labels": { 539 - "traefik.docker.network": "traefik", 540 - "traefik.enable": "true", 541 - "traefik.http.routers.tautulli.entrypoints": "https", 542 - "traefik.http.routers.tautulli.rule": "Host(`tautulli.bas.sh`)", 543 - "traefik.http.routers.tautulli.tls.certresolver": "cloudflare", 544 - "traefik.http.services.tautulli.loadbalancer.server.port": 8181 545 - } 546 - }, 547 - "environment": { 548 - "DOCKER_MODS": "linuxserver/mods:universal-package-install", 549 - "GUID": "${GID}", 550 - "INSTALL_PACKAGES": "openssh-client-default", 551 - "PUID": "${UID}", 552 - "TZ": "${TZ}" 553 - }, 554 - "hostname": "Haring", 555 - "image": "ghcr.io/linuxserver/tautulli", 556 - "volumes": [ 557 - "${ROOT}/docker/tautulli:/config", 558 - "${ROOT}/data:/home/bas/data:rslave", 559 - "/home/bas/git:/home/bas/git" 560 - ] 561 - }, 562 - "thelounge": { 563 - "deploy": { 564 - "labels": { 565 - "traefik.docker.network": "traefik", 566 - "traefik.enable": "true", 567 - "traefik.http.routers.irc.entrypoints": "https", 568 - "traefik.http.routers.irc.rule": "Host(`irc.bas.sh`)", 569 - "traefik.http.routers.irc.tls.certresolver": "cloudflare", 570 - "traefik.http.services.irc.loadbalancer.server.port": 9000 571 - } 572 - }, 573 - "environment": { 574 - "GUID": "${GID}", 575 - "PUID": "${UID}", 576 - "TZ": "${TZ}" 577 - }, 578 - "hostname": "Haring", 579 - "image": "ghcr.io/linuxserver/thelounge", 580 - "volumes": [ 581 - "${ROOT}/docker/thelounge:/config" 582 - ] 583 - }, 584 - "tofumang": { 585 - "deploy": { 586 - "labels": { 587 - "traefik.docker.network": "traefik", 588 - "traefik.enable": "true", 589 - "traefik.http.routers.tofumang.entrypoints": "https", 590 - "traefik.http.routers.tofumang.rule": "Host(`tofumang.com`)", 591 - "traefik.http.routers.tofumang.tls.certresolver": "cloudflare", 592 - "traefik.http.services.tofumang.loadbalancer.server.port": 80 593 - } 594 - }, 595 - "environment": { 596 - "GUID": "${GID}", 597 - "PUID": "${UID}", 598 - "TZ": "${TZ}" 599 - }, 600 - "hostname": "Haring", 601 - "image": "ghcr.io/linuxserver/nginx", 602 - "volumes": [ 603 - "${ROOT}/docker/tofumang:/config", 604 - "${ROOT}/data/web/tofumang:/config/www" 605 - ] 606 - }, 607 - "traefik": { 608 - "command": [ 609 - "--api.insecure=true", 610 - "--providers.docker.endpoint=unix:///var/run/docker.sock", 611 - "--providers.docker.swarmmode=true", 612 - "--providers.docker.exposedbydefault=false", 613 - "--entrypoints.http.address=:80", 614 - "--entrypoints.https.address=:443", 615 - "--certificatesresolvers.cloudflare.acme.dnschallenge=true", 616 - "--certificatesresolvers.cloudflare.acme.dnschallenge.provider=cloudflare", 617 - "--certificatesresolvers.cloudflare.acme.dnschallenge.resolvers=1.1.1.1:53,8.8.8.8:53", 618 - "--certificatesresolvers.cloudflare.acme.storage=/etc/traefik/acme.json", 619 - "--certificatesresolvers.cloudflare.acme.email=hi@bas.sh" 620 - ], 621 - "deploy": { 622 - "labels": { 623 - "traefik.docker.network": "traefik", 624 - "traefik.enable": "true", 625 - "traefik.http.middlewares.httpsredirect.redirectscheme.scheme": "https", 626 - "traefik.http.routers.httpbas.entrypoints": "http", 627 - "traefik.http.routers.httpbas.middlewares": "httpsredirect", 628 - "traefik.http.routers.httpbas.rule": "Host(`bas.sh`)", 629 - "traefik.http.routers.httphttp.entrypoints": "http", 630 - "traefik.http.routers.httphttp.middlewares": "httpsredirect", 631 - "traefik.http.routers.httphttp.rule": "HostRegexp(`{subdomain:[a-z0-9\\-]+}.bas.sh`)", 632 - "traefik.http.routers.httprubyta.entrypoints": "http", 633 - "traefik.http.routers.httprubyta.middlewares": "httpsredirect", 634 - "traefik.http.routers.httprubyta.rule": "Host(`rubyta.co`)", 635 - "traefik.http.routers.httptofumang.entrypoints": "http", 636 - "traefik.http.routers.httptofumang.middlewares": "httpsredirect", 637 - "traefik.http.routers.httptofumang.rule": "Host(`tofumang.com`)", 638 - "traefik.http.routers.httptofuzoom.entrypoints": "http", 639 - "traefik.http.routers.httptofuzoom.middlewares": "httpsredirect", 640 - "traefik.http.routers.httptofuzoom.rule": "Host(`tofuzoom.com`)", 641 - "traefik.http.routers.traefik.entrypoints": "https", 642 - "traefik.http.routers.traefik.rule": "Host(`traefik.bas.sh`)", 643 - "traefik.http.routers.traefik.service": "api@internal", 644 - "traefik.http.routers.traefik.tls.certresolver": "cloudflare", 645 - "traefik.http.routers.traefik.tls.domains[0].main": "bas.sh", 646 - "traefik.http.routers.traefik.tls.domains[0].sans": "*.bas.sh", 647 - "traefik.http.services.traefik.loadbalancer.server.port": 8080 648 - } 649 - }, 650 - "environment": { 651 - "CF_API_EMAIL": "hi@bas.sh", 652 - "CF_API_KEY": "${CF_API_KEY}", 653 - "GUID": "${GID}", 654 - "PUID": "${UID}", 655 - "TZ": "${TZ}" 656 - }, 657 - "hostname": "Haring", 658 - "image": "traefik", 659 - "ports": [ 660 - { 661 - "mode": "host", 662 - "protocol": "tcp", 663 - "published": 80, 664 - "target": 80 665 - }, 666 - { 667 - "mode": "host", 668 - "protocol": "tcp", 669 - "published": 443, 670 - "target": 443 671 - }, 672 - { 673 - "mode": "host", 674 - "protocol": "tcp", 675 - "published": 69, 676 - "target": 69 677 - } 678 - ], 679 - "volumes": [ 680 - "/var/run/docker.sock:/var/run/docker.sock:ro", 681 - "${ROOT}/docker/traefik:/etc/traefik" 682 - ] 683 - }, 684 - "whoami": { 685 - "deploy": { 686 - "labels": { 687 - "traefik.docker.network": "traefik", 688 - "traefik.enable": "true", 689 - "traefik.http.routers.whoami.entrypoints": "https", 690 - "traefik.http.routers.whoami.rule": "Host(`whoami.bas.sh`)", 691 - "traefik.http.routers.whoami.tls.certresolver": "cloudflare", 692 - "traefik.http.services.whoami.loadbalancer.server.port": 80 693 - } 694 - }, 695 - "environment": { 696 - "GUID": "${GID}", 697 - "PUID": "${UID}", 698 - "TZ": "${TZ}" 699 - }, 700 - "hostname": "Haring", 701 - "image": "traefik/whoami" 702 - }, 703 - "wizarr": { 704 - "deploy": { 705 - "labels": { 706 - "traefik.docker.network": "traefik", 707 - "traefik.enable": "true", 708 - "traefik.http.routers.join.entrypoints": "https", 709 - "traefik.http.routers.join.rule": "Host(`join.bas.sh`)", 710 - "traefik.http.routers.join.tls.certresolver": "cloudflare", 711 - "traefik.http.services.join.loadbalancer.server.port": 5690 712 - } 713 - }, 714 - "environment": { 715 - "ALLOW_BUG_REPORTING": "true", 716 - "APP_URL": "https://join.bas.sh", 717 - "GUID": "${GID}", 718 - "PUID": "${UID}", 719 - "TZ": "${TZ}" 720 - }, 721 - "hostname": "Haring", 722 - "image": "ghcr.io/wizarrrr/wizarr", 723 - "volumes": [ 724 - "${ROOT}/docker/wizarr:/data/database" 725 - ] 726 - } 727 - }, 728 - "version": "3.8" 729 - }
-282
.old/jsonnet/haring.jsonnet
··· 1 - local libservice = import 'service.libsonnet'; 2 - local Service = libservice.Service; 3 - local WebService = libservice.WebService; 4 - local Router = libservice.router; 5 - 6 - local data = '${ROOT}/data:/home/bas/data:rslave'; 7 - local git = '/home/bas/git:/home/bas/git'; 8 - 9 - { 10 - version: '3.8', 11 - services: std.prune({ 12 - whoami: Service('whoami', 80) { 13 - image: 'traefik/whoami', 14 - volumes: [], 15 - }, 16 - 17 - plex: Service('plex', 32400) { 18 - volumes+: [data, git], 19 - environment+: { 20 - VERSION: 'latest', 21 - }, 22 - ports: [ 23 - '32400:32400/tcp', 24 - '3005:3005/tcp', 25 - '8324:8324/tcp', 26 - '32469:32469/tcp', 27 - '1900:1900/udp', 28 - '32410:32410/udp', 29 - '32412:32412/udp', 30 - '32413:32413/udp', 31 - '32414:32414/udp', 32 - '33400:33400/tcp', 33 - ], 34 - }, 35 - 36 - jackett: Service('jackett', 9117), 37 - 38 - sonarr: Service('sonarr', 8989) { 39 - volumes+: [data], 40 - }, 41 - 42 - radarr: Service('radarr', 7878) { 43 - volumes+: [data], 44 - }, 45 - 46 - bazarr: Service('bazarr', 6767) { 47 - volumes+: [data], 48 - }, 49 - 50 - autobrr: Service('autobrr', 7474) { 51 - image: 'ghcr.io/autobrr/autobrr', 52 - }, 53 - 54 - omegabrr: Service('omegabrr', 7441, replicas=0) { 55 - image: 'ghcr.io/autobrr/omegabrr', 56 - user: '1000:1000', 57 - }, 58 - 59 - tautulli: Service('tautulli', 8181) { 60 - volumes+: [data, git], 61 - environment+: { 62 - DOCKER_MODS: 'linuxserver/mods:universal-package-install', 63 - INSTALL_PACKAGES: 'openssh-client-default', 64 - }, 65 - }, 66 - 67 - sabnzbd: Service('sabnzbd', 8080) { 68 - volumes+: [data], 69 - }, 70 - 71 - anki: Service('anki', 27701) { 72 - image: 'ankicommunity/anki-sync-server:latest-develop', 73 - volumes: [ 74 - '${ROOT}/docker/anki:/app/data', 75 - ], 76 - environment+: { 77 - ANKISYNCD_DATA_ROOT: '/app/data/collections', 78 - ANKISYNCD_AUTH_DB_PATH: '/app/data/auth.db', 79 - ANKISYNCD_SESSION_DB_PATH: '/app/data/session.db', 80 - }, 81 - }, 82 - 83 - gitea: Service('gitea', 3000, replicas=0) { 84 - image: 'gitea/gitea', 85 - volumes: [ 86 - '${ROOT}/docker/gitea:/data', 87 - '/etc/timezone:/etc/timezone:ro', 88 - '/etc/localtime:/etc/localtime:ro', 89 - ], 90 - ports: [ 91 - '2222:22', 92 - '3000:3000', 93 - ], 94 - }, 95 - 96 - kitana: Service('kitana', 31337) { 97 - image: 'pannal/kitana', 98 - volumes: [ 99 - '${ROOT}/docker/kitana:/app/data', 100 - ], 101 - command: [ 102 - '-P', 103 - ], 104 - }, 105 - 106 - autolanguages: Service('autolanguages') { 107 - image: 'remirigal/plex-auto-languages', 108 - environment+: { 109 - PLEX_URL: '${PLEX_URL}', 110 - PLEX_TOKEN: '${PLEX_TOKEN}', 111 - UPDATE_LEVEL: 'season', 112 - TRIGGER_ON_ACTIVITY: 'true', 113 - //REFRESH_LIBRARY_ON_SCAN: 'false', 114 - NOTIFICATIONS_ENABLE: 'true', 115 - NOTIFICATIONS_APPRISE_CONFIGS: 116 - '[{ urls: ["${DISCORD_AUTO_LANGUAGES_WEBHOOK_URL}"], events: ["play_or_activity", "scheduler"] }]', 117 - }, 118 - }, 119 - 120 - thelounge: Service('thelounge', 9000, domain='irc'), 121 - 122 - resilio: Service('resilio', 8888, domain='sync', replicas=0) { 123 - image: 'ghcr.io/linuxserver/resilio-sync', 124 - volumes+: [ 125 - data, 126 - '${ROOT}/data/resilio/downloads:/downloads', 127 - ], 128 - ports: [ 129 - '55555:55555', 130 - ], 131 - }, 132 - 133 - overseerr: Service('overseerr', 5055, domain='request'), 134 - 135 - maintainerr: Service('maintainerr', 80, replicas=0) { 136 - image: 'jorenn92/maintainerr', 137 - volumes: [ 138 - '${ROOT}/docker/maintainerr:/opt/data', 139 - ], 140 - }, 141 - 142 - monero: Service('monero', 28081, replicas=0) { 143 - image: 'rinocommunity/monero', 144 - volumes: [ 145 - '${ROOT}/docker/monero:/monero', 146 - ], 147 - environment+: { 148 - RPC_USER: 'bas', 149 - RPC_PASSWD: '${PASSWORD}', 150 - }, 151 - ports: [ 152 - '28080:28080', 153 - '28081:28081', 154 - ], 155 - command: [ 156 - '--data-dir /monero', 157 - ], 158 - }, 159 - 160 - mkvtoolnix: Service('mkvtoolnix', 5800) { 161 - image: 'jlesage/mkvtoolnix', 162 - volumes+: [data], 163 - environment+: { 164 - VNC_PASSWORD: '${MKVTOOLNIX_PASSWORD}', 165 - DARK_MODE: '1', 166 - APP_NICENESS: '10', 167 - KEEP_APP_RUNNING: '1', 168 - ENABLE_CJK_FONT: '1', 169 - }, 170 - }, 171 - 172 - wizarr: Service('wizarr', 5690, domain='join') { 173 - image: 'ghcr.io/wizarrrr/wizarr', 174 - volumes: [ 175 - '${ROOT}/docker/wizarr:/data/database', 176 - ], 177 - environment+: { 178 - APP_URL: 'https://join.bas.sh', 179 - ALLOW_BUG_REPORTING: 'true', 180 - }, 181 - }, 182 - 183 - librespeed: Service('librespeed', 80, domain='speedtest') { 184 - environment+: { 185 - TITLE: 'Speedtest | Bas', 186 - TELEMETRY: 'true', 187 - ENABLE_ID_OBFUSCATION: 'true', 188 - REDACT_IP_ADDRESSES: 'true', 189 - PASSWORD: '${PASSWORD}', 190 - EMAIL: 'hi@bas.sh', 191 - IPINFO_APIKEY: '${IPINFO_APIKEY}', 192 - }, 193 - }, 194 - 195 - files: Service('files', 8000) { 196 - image: 'codeskyblue/gohttpserver', 197 - volumes: [ 198 - '${ROOT}/data/web/files:/app/public', 199 - ], 200 - deploy+: { 201 - labels+: Router('get'), 202 - }, 203 - }, 204 - 205 - static: Service('static', 8080) { 206 - image: 'halverneus/static-file-server', 207 - volumes: [ 208 - '${ROOT}/data/web/files:/web', 209 - ], 210 - environment+: { 211 - CORS: 'true', 212 - }, 213 - deploy+: { 214 - labels+: 215 - Router('get') + 216 - Router('files'), 217 - }, 218 - }, 219 - 220 - bas: WebService('bas', domain='bas.sh'), 221 - 222 - tofumang: WebService('tofumang', domain='tofumang.com'), 223 - 224 - traefik: Service('traefik', 8080) { 225 - image: 'traefik', 226 - volumes: [ 227 - '/var/run/docker.sock:/var/run/docker.sock:ro', 228 - '${ROOT}/docker/traefik:/etc/traefik', 229 - ], 230 - ports: [ 231 - { 232 - target: 80, 233 - published: 80, 234 - protocol: 'tcp', 235 - mode: 'host', 236 - }, 237 - { 238 - target: 443, 239 - published: 443, 240 - protocol: 'tcp', 241 - mode: 'host', 242 - }, 243 - { 244 - target: 69, 245 - published: 69, 246 - protocol: 'tcp', 247 - mode: 'host', 248 - }, 249 - ], 250 - environment+: { 251 - CF_API_EMAIL: 'hi@bas.sh', 252 - CF_API_KEY: '${CF_API_KEY}', 253 - }, 254 - command: [ 255 - '--api.insecure=true', 256 - '--providers.docker.endpoint=unix:///var/run/docker.sock', 257 - '--providers.docker.swarmmode=true', 258 - '--providers.docker.exposedbydefault=false', 259 - '--entrypoints.http.address=:80', 260 - '--entrypoints.https.address=:443', 261 - '--certificatesresolvers.cloudflare.acme.dnschallenge=true', 262 - '--certificatesresolvers.cloudflare.acme.dnschallenge.provider=cloudflare', 263 - '--certificatesresolvers.cloudflare.acme.dnschallenge.resolvers=1.1.1.1:53,8.8.8.8:53', 264 - '--certificatesresolvers.cloudflare.acme.storage=/etc/traefik/acme.json', 265 - '--certificatesresolvers.cloudflare.acme.email=hi@bas.sh', 266 - ], 267 - deploy+: { 268 - labels+: { 269 - 'traefik.http.routers.traefik.service': 'api@internal', 270 - 'traefik.http.routers.traefik.tls.domains[0].main': 'bas.sh', 271 - 'traefik.http.routers.traefik.tls.domains[0].sans': '*.bas.sh', 272 - 'traefik.http.middlewares.httpsredirect.redirectscheme.scheme': 'https', 273 - } + 274 - Router('http', 'http', 'HostRegexp(`{subdomain:[a-z0-9\\-]+}.bas.sh`)') + 275 - Router('rubyta.co', 'http') + 276 - Router('bas.sh', 'http') + 277 - Router('tofuzoom.com', 'http') + 278 - Router('tofumang.com', 'http'), 279 - }, 280 - }, 281 - }), 282 - }
-39
.old/jsonnet/portainer-agent-stack.yml
··· 1 - version: '3.2' 2 - 3 - services: 4 - agent: 5 - image: portainer/agent:latest 6 - volumes: 7 - - /var/run/docker.sock:/var/run/docker.sock 8 - - /var/lib/docker/volumes:/var/lib/docker/volumes 9 - networks: 10 - - agent_network 11 - deploy: 12 - mode: global 13 - placement: 14 - constraints: [node.platform.os == linux] 15 - 16 - portainer: 17 - image: portainer/portainer-ce:latest 18 - command: -H tcp://tasks.agent:9001 --tlsskipverify 19 - ports: 20 - - "9443:9443" 21 - - "9000:9000" 22 - - "8000:8000" 23 - volumes: 24 - - portainer_data:/data 25 - networks: 26 - - agent_network 27 - deploy: 28 - mode: replicated 29 - replicas: 1 30 - placement: 31 - constraints: [node.role == manager] 32 - 33 - networks: 34 - agent_network: 35 - driver: overlay 36 - attachable: true 37 - 38 - volumes: 39 - portainer_data:
-56
.old/jsonnet/service.libsonnet
··· 1 - local hasTld(domain) = 2 - std.length(std.findSubstr(".", domain)) != 0; 3 - 4 - local base(domain) = 5 - if hasTld(domain) then 6 - local split = std.split(domain, "."); 7 - std.join("-", std.slice(split, 0, std.length(split) - 1, 1)) 8 - else 9 - domain; 10 - 11 - { 12 - router(domain, entrypoint="https", rule=null):: { 13 - ["traefik.http.routers.%s%s.entrypoints" % [if entrypoint != "https" then entrypoint else "", base(domain)]]: entrypoint, 14 - ["traefik.http.routers.%s%s.rule" % [if entrypoint != "https" then entrypoint else "", base(domain)]]: 15 - if rule != null then 16 - rule 17 - else if hasTld(domain) then 18 - "Host(`%s`)" % domain 19 - else 20 - "Host(`%s.bas.sh`)" % domain, 21 - [if entrypoint == "https" then "traefik.http.routers.%s%s.tls.certresolver" % [ 22 - if entrypoint != "https" then entrypoint else "", 23 - base(domain), 24 - ]]: "cloudflare", 25 - [if entrypoint == "http" then "traefik.http.routers.%s%s.middlewares" % [ 26 - if entrypoint != "https" then entrypoint else "", 27 - base(domain), 28 - ]]: "httpsredirect", 29 - }, 30 - http(domain, port, entrypoint="https"):: { 31 - "traefik.enable": "true", 32 - "traefik.docker.network": "traefik", 33 - ["traefik.http.services.%s.loadbalancer.server.port" % base(domain)]: port, 34 - } + $.router(domain, entrypoint), 35 - Service(name, port=null, replicas=null, domain=name):: { 36 - image: "ghcr.io/linuxserver/" + name, 37 - hostname: "Haring", 38 - volumes: [ 39 - "${ROOT}/docker/%s:/config" % name, 40 - ], 41 - environment: { 42 - PUID: "${UID}", 43 - GUID: "${GID}", 44 - TZ: "${TZ}", 45 - }, 46 - ports: [], 47 - deploy+: { 48 - [if replicas != null then "replicas"]: replicas, 49 - [if port != null then "labels"]+: $.http(domain, port), 50 - }, 51 - }, 52 - WebService(name, port=80, replicas=null, domain):: $.Service(name, port, replicas, domain) { 53 - image: "ghcr.io/linuxserver/nginx", 54 - volumes+: ["${ROOT}/data/web/%s:/config/www" % name], 55 - }, 56 - }
+8
.oxlintrc.json
··· 1 + { 2 + "$schema": "./node_modules/oxlint/configuration_schema.json", 3 + "plugins": ["import", "node", "eslint", "typescript", "oxc", "promise"], 4 + //"jsPlugins": ["@pulumi/eslint-plugin"], 5 + "rules": { 6 + "no-unused-vars": "off" 7 + } 8 + }
+3
.prettierrc.json
··· 1 + { 2 + "plugins": ["@prettier/plugin-oxc"] 3 + }
+1 -10
README.md
··· 1 - # Media Server Stack 2 - 3 - The Pulumi code I use for my single node container-based media server (among other things). Used to be Docker Swarm, generating my Docker Compose file with Jsonnet (my old setup can be found in the [jsonnet](./.old/jsonnet) folder), but I have since switched to orchestrating Docker containers with Pulumi. 4 - 5 - # Setup 6 - 7 - ```bash 8 - bun install 9 - pulumi up 10 - ``` 1 + Experimenting with Pulumi for my single-node server setup.
+878 -325
bun.lock
··· 1 1 { 2 2 "lockfileVersion": 1, 3 + "configVersion": 1, 3 4 "workspaces": { 4 5 "": { 5 6 "name": "media-server-stack", 6 7 "dependencies": { 7 - "@pulumi/command": "^1.1.0", 8 - "@pulumi/docker": "^4.8.2", 9 - "@pulumi/pulumi": "^3.196.0", 10 - "arktype": "^2.1.22", 8 + "@pulumi/cloudflare": "^6.13.0", 9 + "@pulumi/command": "^1.2.1", 10 + "@pulumi/docker": "^4.11.0", 11 + "@pulumi/docker-build": "^0.0.15", 12 + "@pulumi/pulumi": "^3.225.1", 13 + "@pulumi/std": "^2.3.2", 14 + "arktype": "^2.2.0", 11 15 "dotenv": "^16.6.1", 12 - "ipaddr.js": "^2.2.0", 16 + "ipaddr.js": "^2.3.0", 13 17 "ts-node": "^10.9.2", 14 - "tsx": "^4.20.5", 15 - "typescript": "^5.9.2", 16 - "undici": "^7.16.0", 17 - "up-fetch": "^2.4.0", 18 - "zod": "^4.1.8", 18 + "tsx": "^4.21.0", 19 + "typescript": "^5.9.3", 20 + "undici": "^7.22.0", 21 + "up-fetch": "^2.5.1", 22 + "zod": "^4.3.6", 19 23 }, 20 24 "devDependencies": { 21 - "@eslint/js": "^9.35.0", 25 + "@prettier/plugin-oxc": "^0.1.3", 22 26 "@pulumi/eslint-plugin": "^0.3.1", 23 - "@types/node": "^24.5.0", 24 - "eslint": "^9.35.0", 25 - "jiti": "^2.5.1", 26 - "typescript-eslint": "^8.44.0", 27 + "@types/node": "^25.3.5", 28 + "jiti": "^2.6.1", 29 + "oxfmt": "^0.36.0", 30 + "oxlint": "^1.51.0", 31 + "oxlint-tsgolint": "^0.16.0", 32 + "prettier": "^3.8.1", 27 33 }, 28 34 }, 29 35 }, 36 + "trustedDependencies": [ 37 + "@pulumi/docker-build", 38 + "@pulumi/std", 39 + "protobufjs", 40 + ], 30 41 "packages": { 31 - "@ark/schema": ["@ark/schema@0.49.0", "", { "dependencies": { "@ark/util": "0.49.0" } }, "sha512-GphZBLpW72iS0v4YkeUtV3YIno35Gimd7+ezbPO9GwEi9kzdUrPVjvf6aXSBAfHikaFc/9pqZOpv3pOXnC71tw=="], 42 + "@ark/schema": ["@ark/schema@0.56.0", "", { "dependencies": { "@ark/util": "0.56.0" } }, "sha512-ECg3hox/6Z/nLajxXqNhgPtNdHWC9zNsDyskwO28WinoFEnWow4IsERNz9AnXRhTZJnYIlAJ4uGn3nlLk65vZA=="], 32 43 33 - "@ark/util": ["@ark/util@0.49.0", "", {}, "sha512-/BtnX7oCjNkxi2vi6y1399b+9xd1jnCrDYhZ61f0a+3X8x8DxlK52VgEEzyuC2UQMPACIfYrmHkhD3lGt2GaMA=="], 44 + "@ark/util": ["@ark/util@0.56.0", "", {}, "sha512-BghfRC8b9pNs3vBoDJhcta0/c1J1rsoS1+HgVUreMFPdhz/CRAKReAu57YEllNaSy98rWAdY1gE+gFup7OXpgA=="], 34 45 35 46 "@cspotcode/source-map-support": ["@cspotcode/source-map-support@0.8.1", "", { "dependencies": { "@jridgewell/trace-mapping": "0.3.9" } }, "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw=="], 36 47 37 - "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.2", "", { "os": "aix", "cpu": "ppc64" }, "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag=="], 48 + "@emnapi/core": ["@emnapi/core@1.5.0", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" } }, "sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg=="], 38 49 39 - "@esbuild/android-arm": ["@esbuild/android-arm@0.25.2", "", { "os": "android", "cpu": "arm" }, "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA=="], 50 + "@emnapi/runtime": ["@emnapi/runtime@1.5.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ=="], 40 51 41 - "@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.2", "", { "os": "android", "cpu": "arm64" }, "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w=="], 52 + "@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.1.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ=="], 42 53 43 - "@esbuild/android-x64": ["@esbuild/android-x64@0.25.2", "", { "os": "android", "cpu": "x64" }, "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg=="], 54 + "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.27.0", "", { "os": "aix", "cpu": "ppc64" }, "sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A=="], 44 55 45 - "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA=="], 56 + "@esbuild/android-arm": ["@esbuild/android-arm@0.27.0", "", { "os": "android", "cpu": "arm" }, "sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ=="], 46 57 47 - "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA=="], 58 + "@esbuild/android-arm64": ["@esbuild/android-arm64@0.27.0", "", { "os": "android", "cpu": "arm64" }, "sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ=="], 48 59 49 - "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.2", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w=="], 60 + "@esbuild/android-x64": ["@esbuild/android-x64@0.27.0", "", { "os": "android", "cpu": "x64" }, "sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q=="], 50 61 51 - "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ=="], 62 + "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.27.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg=="], 52 63 53 - "@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.2", "", { "os": "linux", "cpu": "arm" }, "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g=="], 64 + "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.27.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g=="], 65 + 66 + "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.27.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw=="], 67 + 68 + "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.27.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g=="], 54 69 55 - "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g=="], 70 + "@esbuild/linux-arm": ["@esbuild/linux-arm@0.27.0", "", { "os": "linux", "cpu": "arm" }, "sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ=="], 56 71 57 - "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.2", "", { "os": "linux", "cpu": "ia32" }, "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ=="], 72 + "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.27.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ=="], 58 73 59 - "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.2", "", { "os": "linux", "cpu": "none" }, "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w=="], 74 + "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.27.0", "", { "os": "linux", "cpu": "ia32" }, "sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw=="], 60 75 61 - "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.2", "", { "os": "linux", "cpu": "none" }, "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q=="], 76 + "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.27.0", "", { "os": "linux", "cpu": "none" }, "sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg=="], 62 77 63 - "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.2", "", { "os": "linux", "cpu": "ppc64" }, "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g=="], 78 + "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.27.0", "", { "os": "linux", "cpu": "none" }, "sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg=="], 64 79 65 - "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.2", "", { "os": "linux", "cpu": "none" }, "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw=="], 80 + "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.27.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA=="], 66 81 67 - "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.2", "", { "os": "linux", "cpu": "s390x" }, "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q=="], 82 + "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.27.0", "", { "os": "linux", "cpu": "none" }, "sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ=="], 68 83 69 - "@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.2", "", { "os": "linux", "cpu": "x64" }, "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg=="], 84 + "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.27.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w=="], 70 85 71 - "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.2", "", { "os": "none", "cpu": "arm64" }, "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw=="], 86 + "@esbuild/linux-x64": ["@esbuild/linux-x64@0.27.0", "", { "os": "linux", "cpu": "x64" }, "sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw=="], 72 87 73 - "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.2", "", { "os": "none", "cpu": "x64" }, "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg=="], 88 + "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.27.0", "", { "os": "none", "cpu": "arm64" }, "sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w=="], 74 89 75 - "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.2", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg=="], 90 + "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.27.0", "", { "os": "none", "cpu": "x64" }, "sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA=="], 76 91 77 - "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.2", "", { "os": "openbsd", "cpu": "x64" }, "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw=="], 92 + "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.27.0", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ=="], 78 93 79 - "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.2", "", { "os": "sunos", "cpu": "x64" }, "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA=="], 94 + "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.27.0", "", { "os": "openbsd", "cpu": "x64" }, "sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A=="], 80 95 81 - "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q=="], 96 + "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.27.0", "", { "os": "none", "cpu": "arm64" }, "sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA=="], 82 97 83 - "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.2", "", { "os": "win32", "cpu": "ia32" }, "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg=="], 98 + "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.27.0", "", { "os": "sunos", "cpu": "x64" }, "sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA=="], 84 99 85 - "@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.2", "", { "os": "win32", "cpu": "x64" }, "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA=="], 100 + "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.27.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg=="], 86 101 87 - "@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.8.0", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-MJQFqrZgcW0UNYLGOuQpey/oTN59vyWwplvCGZztn1cKz9agZPPYpJB7h2OMmuu7VLqkvEjN8feFZJmxNF9D+Q=="], 102 + "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.27.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ=="], 88 103 89 - "@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.1", "", {}, "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ=="], 104 + "@esbuild/win32-x64": ["@esbuild/win32-x64@0.27.0", "", { "os": "win32", "cpu": "x64" }, "sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg=="], 90 105 91 - "@eslint/config-array": ["@eslint/config-array@0.21.0", "", { "dependencies": { "@eslint/object-schema": "^2.1.6", "debug": "^4.3.1", "minimatch": "^3.1.2" } }, "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ=="], 106 + "@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.7.0", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw=="], 92 107 93 - "@eslint/config-helpers": ["@eslint/config-helpers@0.3.1", "", {}, "sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA=="], 108 + "@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.2", "", {}, "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew=="], 94 109 95 - "@eslint/core": ["@eslint/core@0.15.2", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg=="], 110 + "@eslint/config-array": ["@eslint/config-array@0.23.1", "", { "dependencies": { "@eslint/object-schema": "^3.0.1", "debug": "^4.3.1", "minimatch": "^10.1.1" } }, "sha512-uVSdg/V4dfQmTjJzR0szNczjOH/J+FyUMMjYtr07xFRXR7EDf9i1qdxrD0VusZH9knj1/ecxzCQQxyic5NzAiA=="], 96 111 97 - "@eslint/eslintrc": ["@eslint/eslintrc@3.3.1", "", { "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^10.0.1", "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" } }, "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ=="], 112 + "@eslint/config-helpers": ["@eslint/config-helpers@0.5.2", "", { "dependencies": { "@eslint/core": "^1.1.0" } }, "sha512-a5MxrdDXEvqnIq+LisyCX6tQMPF/dSJpCfBgBauY+pNZ28yCtSsTvyTYrMhaI+LK26bVyCJfJkT0u8KIj2i1dQ=="], 98 113 99 - "@eslint/js": ["@eslint/js@9.35.0", "", {}, "sha512-30iXE9whjlILfWobBkNerJo+TXYsgVM5ERQwMcMKCHckHflCmf7wXDAHlARoWnh0s1U72WqlbeyE7iAcCzuCPw=="], 114 + "@eslint/core": ["@eslint/core@1.1.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-/nr9K9wkr3P1EzFTdFdMoLuo1PmIxjmwvPozwoSodjNBdefGujXQUF93u1DDZpEaTuDvMsIQddsd35BwtrW9Xw=="], 100 115 101 - "@eslint/object-schema": ["@eslint/object-schema@2.1.6", "", {}, "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA=="], 116 + "@eslint/object-schema": ["@eslint/object-schema@3.0.1", "", {}, "sha512-P9cq2dpr+LU8j3qbLygLcSZrl2/ds/pUpfnHNNuk5HW7mnngHs+6WSq5C9mO3rqRX8A1poxqLTC9cu0KOyJlBg=="], 102 117 103 - "@eslint/plugin-kit": ["@eslint/plugin-kit@0.3.5", "", { "dependencies": { "@eslint/core": "^0.15.2", "levn": "^0.4.1" } }, "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w=="], 118 + "@eslint/plugin-kit": ["@eslint/plugin-kit@0.6.0", "", { "dependencies": { "@eslint/core": "^1.1.0", "levn": "^0.4.1" } }, "sha512-bIZEUzOI1jkhviX2cp5vNyXQc6olzb2ohewQubuYlMXZ2Q/XjBO0x0XhGPvc9fjSIiUN0vw+0hq53BJ4eQSJKQ=="], 104 119 105 120 "@grpc/grpc-js": ["@grpc/grpc-js@1.10.6", "", { "dependencies": { "@grpc/proto-loader": "^0.7.10", "@js-sdsl/ordered-map": "^4.4.2" } }, "sha512-xP58G7wDQ4TCmN/cMUHh00DS7SRDv/+lC+xFLrTkMIN8h55X5NhZMLYbvy7dSELP15qlI6hPhNCRWVMtZMwqLA=="], 106 121 ··· 114 129 115 130 "@humanwhocodes/retry": ["@humanwhocodes/retry@0.4.3", "", {}, "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ=="], 116 131 132 + "@isaacs/balanced-match": ["@isaacs/balanced-match@4.0.1", "", {}, "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ=="], 133 + 134 + "@isaacs/brace-expansion": ["@isaacs/brace-expansion@5.0.0", "", { "dependencies": { "@isaacs/balanced-match": "^4.0.1" } }, "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA=="], 135 + 117 136 "@isaacs/cliui": ["@isaacs/cliui@8.0.2", "", { "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", "strip-ansi": "^7.0.1", "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", "wrap-ansi": "^8.1.0", "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" } }, "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA=="], 137 + 138 + "@isaacs/fs-minipass": ["@isaacs/fs-minipass@4.0.1", "", { "dependencies": { "minipass": "^7.0.4" } }, "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w=="], 118 139 119 140 "@isaacs/string-locale-compare": ["@isaacs/string-locale-compare@1.1.0", "", {}, "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ=="], 120 141 ··· 128 149 129 150 "@logdna/tail-file": ["@logdna/tail-file@2.2.0", "", {}, "sha512-XGSsWDweP80Fks16lwkAUIr54ICyBs6PsI4mpfTLQaWgEJRtY9xEV+PeyDpJ+sJEGZxqINlpmAwe/6tS1pP8Ng=="], 130 151 152 + "@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" } }, "sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw=="], 153 + 131 154 "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], 132 155 133 156 "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="], 134 157 135 158 "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="], 136 159 137 - "@npmcli/agent": ["@npmcli/agent@2.2.1", "", { "dependencies": { "agent-base": "^7.1.0", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.1", "lru-cache": "^10.0.1", "socks-proxy-agent": "^8.0.1" } }, "sha512-H4FrOVtNyWC8MUwL3UfjOsAihHvT1Pe8POj3JvjXhSTJipsZMtgUALCT4mGyYZNxymkUfOw3PUj6dE4QPp6osQ=="], 160 + "@npmcli/agent": ["@npmcli/agent@4.0.0", "", { "dependencies": { "agent-base": "^7.1.0", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.1", "lru-cache": "^11.2.1", "socks-proxy-agent": "^8.0.3" } }, "sha512-kAQTcEN9E8ERLVg5AsGwLNoFb+oEG6engbqAU2P43gD4JEIkNGMHdVQ096FsOAAYpZPB0RSt0zgInKIAS1l5QA=="], 138 161 139 - "@npmcli/arborist": ["@npmcli/arborist@7.4.2", "", { "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", "@npmcli/fs": "^3.1.0", "@npmcli/installed-package-contents": "^2.0.2", "@npmcli/map-workspaces": "^3.0.2", "@npmcli/metavuln-calculator": "^7.0.0", "@npmcli/name-from-folder": "^2.0.0", "@npmcli/node-gyp": "^3.0.0", "@npmcli/package-json": "^5.0.0", "@npmcli/query": "^3.1.0", "@npmcli/redact": "^1.1.0", "@npmcli/run-script": "^7.0.2", "bin-links": "^4.0.1", "cacache": "^18.0.0", "common-ancestor-path": "^1.0.1", "hosted-git-info": "^7.0.1", "json-parse-even-better-errors": "^3.0.0", "json-stringify-nice": "^1.1.4", "minimatch": "^9.0.4", "nopt": "^7.0.0", "npm-install-checks": "^6.2.0", "npm-package-arg": "^11.0.1", "npm-pick-manifest": "^9.0.0", "npm-registry-fetch": "^16.2.0", "npmlog": "^7.0.1", "pacote": "^17.0.4", "parse-conflict-json": "^3.0.0", "proc-log": "^3.0.0", "promise-all-reject-late": "^1.0.0", "promise-call-limit": "^3.0.1", "read-package-json-fast": "^3.0.2", "semver": "^7.3.7", "ssri": "^10.0.5", "treeverse": "^3.0.0", "walk-up-path": "^3.0.1" }, "bin": { "arborist": "bin/index.js" } }, "sha512-13flK0DTIhG7VEmPtoKFoi+88hIjuZxuZAvnHUTthIFql1Kc51VlsMRpbJPIcDEZHaHkILwFjHRXtCUYdFWvAQ=="], 162 + "@npmcli/arborist": ["@npmcli/arborist@9.1.10", "", { "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", "@npmcli/fs": "^5.0.0", "@npmcli/installed-package-contents": "^4.0.0", "@npmcli/map-workspaces": "^5.0.0", "@npmcli/metavuln-calculator": "^9.0.2", "@npmcli/name-from-folder": "^4.0.0", "@npmcli/node-gyp": "^5.0.0", "@npmcli/package-json": "^7.0.0", "@npmcli/query": "^5.0.0", "@npmcli/redact": "^4.0.0", "@npmcli/run-script": "^10.0.0", "bin-links": "^6.0.0", "cacache": "^20.0.1", "common-ancestor-path": "^2.0.0", "hosted-git-info": "^9.0.0", "json-stringify-nice": "^1.1.4", "lru-cache": "^11.2.1", "minimatch": "^10.0.3", "nopt": "^9.0.0", "npm-install-checks": "^8.0.0", "npm-package-arg": "^13.0.0", "npm-pick-manifest": "^11.0.1", "npm-registry-fetch": "^19.0.0", "pacote": "^21.0.2", "parse-conflict-json": "^5.0.1", "proc-log": "^6.0.0", "proggy": "^4.0.0", "promise-all-reject-late": "^1.0.0", "promise-call-limit": "^3.0.1", "semver": "^7.3.7", "ssri": "^13.0.0", "treeverse": "^3.0.0", "walk-up-path": "^4.0.0" }, "bin": { "arborist": "bin/index.js" } }, "sha512-kMLxL8R0xHx835x18lNHwiT0blaz0wGWmPYKTcrSQxrGBtUokGJimgiFF1FdkgLskuwgSq7bVwdEqDwbojkZlA=="], 140 163 141 - "@npmcli/fs": ["@npmcli/fs@3.1.0", "", { "dependencies": { "semver": "^7.3.5" } }, "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w=="], 164 + "@npmcli/fs": ["@npmcli/fs@5.0.0", "", { "dependencies": { "semver": "^7.3.5" } }, "sha512-7OsC1gNORBEawOa5+j2pXN9vsicaIOH5cPXxoR6fJOmH6/EXpJB2CajXOu1fPRFun2m1lktEFX11+P89hqO/og=="], 142 165 143 - "@npmcli/git": ["@npmcli/git@5.0.6", "", { "dependencies": { "@npmcli/promise-spawn": "^7.0.0", "lru-cache": "^10.0.1", "npm-pick-manifest": "^9.0.0", "proc-log": "^4.0.0", "promise-inflight": "^1.0.1", "promise-retry": "^2.0.1", "semver": "^7.3.5", "which": "^4.0.0" } }, "sha512-4x/182sKXmQkf0EtXxT26GEsaOATpD7WVtza5hrYivWZeo6QefC6xq9KAXrnjtFKBZ4rZwR7aX/zClYYXgtwLw=="], 166 + "@npmcli/git": ["@npmcli/git@7.0.1", "", { "dependencies": { "@npmcli/promise-spawn": "^9.0.0", "ini": "^6.0.0", "lru-cache": "^11.2.1", "npm-pick-manifest": "^11.0.1", "proc-log": "^6.0.0", "promise-retry": "^2.0.1", "semver": "^7.3.5", "which": "^6.0.0" } }, "sha512-+XTFxK2jJF/EJJ5SoAzXk3qwIDfvFc5/g+bD274LZ7uY7LE8sTfG6Z8rOanPl2ZEvZWqNvmEdtXC25cE54VcoA=="], 144 167 145 - "@npmcli/installed-package-contents": ["@npmcli/installed-package-contents@2.0.2", "", { "dependencies": { "npm-bundled": "^3.0.0", "npm-normalize-package-bin": "^3.0.0" }, "bin": { "installed-package-contents": "lib/index.js" } }, "sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ=="], 168 + "@npmcli/installed-package-contents": ["@npmcli/installed-package-contents@4.0.0", "", { "dependencies": { "npm-bundled": "^5.0.0", "npm-normalize-package-bin": "^5.0.0" }, "bin": { "installed-package-contents": "bin/index.js" } }, "sha512-yNyAdkBxB72gtZ4GrwXCM0ZUedo9nIbOMKfGjt6Cu6DXf0p8y1PViZAKDC8q8kv/fufx0WTjRBdSlyrvnP7hmA=="], 146 169 147 - "@npmcli/map-workspaces": ["@npmcli/map-workspaces@3.0.6", "", { "dependencies": { "@npmcli/name-from-folder": "^2.0.0", "glob": "^10.2.2", "minimatch": "^9.0.0", "read-package-json-fast": "^3.0.0" } }, "sha512-tkYs0OYnzQm6iIRdfy+LcLBjcKuQCeE5YLb8KnrIlutJfheNaPvPpgoFEyEFgbjzl5PLZ3IA/BWAwRU0eHuQDA=="], 170 + "@npmcli/map-workspaces": ["@npmcli/map-workspaces@5.0.3", "", { "dependencies": { "@npmcli/name-from-folder": "^4.0.0", "@npmcli/package-json": "^7.0.0", "glob": "^13.0.0", "minimatch": "^10.0.3" } }, "sha512-o2grssXo1e774E5OtEwwrgoszYRh0lqkJH+Pb9r78UcqdGJRDRfhpM8DvZPjzNLLNYeD/rNbjOKM3Ss5UABROw=="], 148 171 149 - "@npmcli/metavuln-calculator": ["@npmcli/metavuln-calculator@7.1.0", "", { "dependencies": { "cacache": "^18.0.0", "json-parse-even-better-errors": "^3.0.0", "pacote": "^18.0.0", "proc-log": "^4.1.0", "semver": "^7.3.5" } }, "sha512-D4VZzVLZ4Mw+oUCWyQ6qzlm5SGlrLnhKtZscDwQXFFc1FUPvw69Ibo2E5ZpJAmjFSYkA5UlCievWmREW0JLC3w=="], 172 + "@npmcli/metavuln-calculator": ["@npmcli/metavuln-calculator@9.0.3", "", { "dependencies": { "cacache": "^20.0.0", "json-parse-even-better-errors": "^5.0.0", "pacote": "^21.0.0", "proc-log": "^6.0.0", "semver": "^7.3.5" } }, "sha512-94GLSYhLXF2t2LAC7pDwLaM4uCARzxShyAQKsirmlNcpidH89VA4/+K1LbJmRMgz5gy65E/QBBWQdUvGLe2Frg=="], 150 173 151 - "@npmcli/name-from-folder": ["@npmcli/name-from-folder@2.0.0", "", {}, "sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg=="], 174 + "@npmcli/name-from-folder": ["@npmcli/name-from-folder@4.0.0", "", {}, "sha512-qfrhVlOSqmKM8i6rkNdZzABj8MKEITGFAY+4teqBziksCQAOLutiAxM1wY2BKEd8KjUSpWmWCYxvXr0y4VTlPg=="], 152 175 153 - "@npmcli/node-gyp": ["@npmcli/node-gyp@3.0.0", "", {}, "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA=="], 176 + "@npmcli/node-gyp": ["@npmcli/node-gyp@5.0.0", "", {}, "sha512-uuG5HZFXLfyFKqg8QypsmgLQW7smiRjVc45bqD/ofZZcR/uxEjgQU8qDPv0s9TEeMUiAAU/GC5bR6++UdTirIQ=="], 154 177 155 - "@npmcli/package-json": ["@npmcli/package-json@5.0.3", "", { "dependencies": { "@npmcli/git": "^5.0.0", "glob": "^10.2.2", "hosted-git-info": "^7.0.0", "json-parse-even-better-errors": "^3.0.0", "normalize-package-data": "^6.0.0", "proc-log": "^4.0.0", "semver": "^7.5.3" } }, "sha512-cgsjCvld2wMqkUqvY+SZI+1ZJ7umGBYc9IAKfqJRKJCcs7hCQYxScUgdsyrRINk3VmdCYf9TXiLBHQ6ECTxhtg=="], 178 + "@npmcli/package-json": ["@npmcli/package-json@7.0.4", "", { "dependencies": { "@npmcli/git": "^7.0.0", "glob": "^13.0.0", "hosted-git-info": "^9.0.0", "json-parse-even-better-errors": "^5.0.0", "proc-log": "^6.0.0", "semver": "^7.5.3", "validate-npm-package-license": "^3.0.4" } }, "sha512-0wInJG3j/K40OJt/33ax47WfWMzZTm6OQxB9cDhTt5huCP2a9g2GnlsxmfN+PulItNPIpPrZ+kfwwUil7eHcZQ=="], 156 179 157 - "@npmcli/promise-spawn": ["@npmcli/promise-spawn@7.0.1", "", { "dependencies": { "which": "^4.0.0" } }, "sha512-P4KkF9jX3y+7yFUxgcUdDtLy+t4OlDGuEBLNs57AZsfSfg+uV6MLndqGpnl4831ggaEdXwR50XFoZP4VFtHolg=="], 180 + "@npmcli/promise-spawn": ["@npmcli/promise-spawn@9.0.1", "", { "dependencies": { "which": "^6.0.0" } }, "sha512-OLUaoqBuyxeTqUvjA3FZFiXUfYC1alp3Sa99gW3EUDz3tZ3CbXDdcZ7qWKBzicrJleIgucoWamWH1saAmH/l2Q=="], 158 181 159 - "@npmcli/query": ["@npmcli/query@3.1.0", "", { "dependencies": { "postcss-selector-parser": "^6.0.10" } }, "sha512-C/iR0tk7KSKGldibYIB9x8GtO/0Bd0I2mhOaDb8ucQL/bQVTmGoeREaFj64Z5+iCBRf3dQfed0CjJL7I8iTkiQ=="], 182 + "@npmcli/query": ["@npmcli/query@5.0.0", "", { "dependencies": { "postcss-selector-parser": "^7.0.0" } }, "sha512-8TZWfTQOsODpLqo9SVhVjHovmKXNpevHU0gO9e+y4V4fRIOneiXy0u0sMP9LmS71XivrEWfZWg50ReH4WRT4aQ=="], 160 183 161 - "@npmcli/redact": ["@npmcli/redact@1.1.0", "", {}, "sha512-PfnWuOkQgu7gCbnSsAisaX7hKOdZ4wSAhAzH3/ph5dSGau52kCRrMMGbiSQLwyTZpgldkZ49b0brkOr1AzGBHQ=="], 184 + "@npmcli/redact": ["@npmcli/redact@4.0.0", "", {}, "sha512-gOBg5YHMfZy+TfHArfVogwgfBeQnKbbGo3pSUyK/gSI0AVu+pEiDVcKlQb0D8Mg1LNRZILZ6XG8I5dJ4KuAd9Q=="], 162 185 163 - "@npmcli/run-script": ["@npmcli/run-script@7.0.4", "", { "dependencies": { "@npmcli/node-gyp": "^3.0.0", "@npmcli/package-json": "^5.0.0", "@npmcli/promise-spawn": "^7.0.0", "node-gyp": "^10.0.0", "which": "^4.0.0" } }, "sha512-9ApYM/3+rBt9V80aYg6tZfzj3UWdiYyCt7gJUD1VJKvWF5nwKDSICXbYIQbspFTq6TOpbsEtIC0LArB8d9PFmg=="], 186 + "@npmcli/run-script": ["@npmcli/run-script@10.0.3", "", { "dependencies": { "@npmcli/node-gyp": "^5.0.0", "@npmcli/package-json": "^7.0.0", "@npmcli/promise-spawn": "^9.0.0", "node-gyp": "^12.1.0", "proc-log": "^6.0.0", "which": "^6.0.0" } }, "sha512-ER2N6itRkzWbbtVmZ9WKaWxVlKlOeBFF1/7xx+KA5J1xKa4JjUwBdb6tDpk0v1qA+d+VDwHI9qmLcXSWcmi+Rw=="], 164 187 165 188 "@opentelemetry/api": ["@opentelemetry/api@1.9.0", "", {}, "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg=="], 166 189 ··· 168 191 169 192 "@opentelemetry/context-async-hooks": ["@opentelemetry/context-async-hooks@1.30.1", "", { "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-s5vvxXPVdjqS3kTLKMeBMvop9hbWkwzBpu+mUO2M7sZtlkyDJGwFe33wRKnbaYDo8ExRVBIIdwIGrqpxHuKttA=="], 170 193 171 - "@opentelemetry/core": ["@opentelemetry/core@1.30.1", "", { "dependencies": { "@opentelemetry/semantic-conventions": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ=="], 194 + "@opentelemetry/core": ["@opentelemetry/core@1.28.0", "", { "dependencies": { "@opentelemetry/semantic-conventions": "1.27.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw=="], 195 + 196 + "@opentelemetry/exporter-trace-otlp-grpc": ["@opentelemetry/exporter-trace-otlp-grpc@0.55.0", "", { "dependencies": { "@grpc/grpc-js": "^1.7.1", "@opentelemetry/core": "1.28.0", "@opentelemetry/otlp-grpc-exporter-base": "0.55.0", "@opentelemetry/otlp-transformer": "0.55.0", "@opentelemetry/resources": "1.28.0", "@opentelemetry/sdk-trace-base": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-ohIkCLn2Wc3vhhFuf1bH8kOXHMEdcWiD847x7f3Qfygc+CGiatGLzQYscTcEYsWGMV22gVwB/kVcNcx5a3o8gA=="], 172 197 173 198 "@opentelemetry/exporter-zipkin": ["@opentelemetry/exporter-zipkin@1.30.1", "", { "dependencies": { "@opentelemetry/core": "1.30.1", "@opentelemetry/resources": "1.30.1", "@opentelemetry/sdk-trace-base": "1.30.1", "@opentelemetry/semantic-conventions": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" } }, "sha512-6S2QIMJahIquvFaaxmcwpvQQRD/YFaMTNoIxrfPIPOeITN+a8lfEcPDxNxn8JDAaxkg+4EnXhz8upVDYenoQjA=="], 174 199 ··· 176 201 177 202 "@opentelemetry/instrumentation-grpc": ["@opentelemetry/instrumentation-grpc@0.55.0", "", { "dependencies": { "@opentelemetry/instrumentation": "0.55.0", "@opentelemetry/semantic-conventions": "1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-n2ZH4pRwOy0Vhag/3eKqiyDBwcpUnGgJI9iiIRX7vivE0FMncaLazWphNFezRRaM/LuKwq1TD8pVUvieP68mow=="], 178 203 204 + "@opentelemetry/otlp-exporter-base": ["@opentelemetry/otlp-exporter-base@0.55.0", "", { "dependencies": { "@opentelemetry/core": "1.28.0", "@opentelemetry/otlp-transformer": "0.55.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-iHQI0Zzq3h1T6xUJTVFwmFl5Dt5y1es+fl4kM+k5T/3YvmVyeYkSiF+wHCg6oKrlUAJfk+t55kaAu3sYmt7ZYA=="], 205 + 206 + "@opentelemetry/otlp-grpc-exporter-base": ["@opentelemetry/otlp-grpc-exporter-base@0.55.0", "", { "dependencies": { "@grpc/grpc-js": "^1.7.1", "@opentelemetry/core": "1.28.0", "@opentelemetry/otlp-exporter-base": "0.55.0", "@opentelemetry/otlp-transformer": "0.55.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-gebbjl9FiSp52igWXuGjcWQKfB6IBwFGt5z1VFwTcVZVeEZevB6bJIqoFrhH4A02m7OUlpJ7l4EfRi3UtkNANQ=="], 207 + 208 + "@opentelemetry/otlp-transformer": ["@opentelemetry/otlp-transformer@0.55.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.55.0", "@opentelemetry/core": "1.28.0", "@opentelemetry/resources": "1.28.0", "@opentelemetry/sdk-logs": "0.55.0", "@opentelemetry/sdk-metrics": "1.28.0", "@opentelemetry/sdk-trace-base": "1.28.0", "protobufjs": "^7.3.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-kVqEfxtp6mSN2Dhpy0REo1ghP4PYhC1kMHQJ2qVlO99Pc+aigELjZDfg7/YKmL71gR6wVGIeJfiql/eXL7sQPA=="], 209 + 179 210 "@opentelemetry/propagator-b3": ["@opentelemetry/propagator-b3@1.30.1", "", { "dependencies": { "@opentelemetry/core": "1.30.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-oATwWWDIJzybAZ4pO76ATN5N6FFbOA1otibAVlS8v90B4S1wClnhRUk7K+2CHAwN1JKYuj4jh/lpCEG5BAqFuQ=="], 180 211 181 212 "@opentelemetry/propagator-jaeger": ["@opentelemetry/propagator-jaeger@1.30.1", "", { "dependencies": { "@opentelemetry/core": "1.30.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-Pj/BfnYEKIOImirH76M4hDaBSx6HyZ2CXUqk+Kj02m6BB80c/yo4BdWkn/1gDFfU+YPY+bPR2U0DKBfdxCKwmg=="], 182 213 183 214 "@opentelemetry/resources": ["@opentelemetry/resources@1.30.1", "", { "dependencies": { "@opentelemetry/core": "1.30.1", "@opentelemetry/semantic-conventions": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA=="], 184 215 216 + "@opentelemetry/sdk-logs": ["@opentelemetry/sdk-logs@0.55.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.55.0", "@opentelemetry/core": "1.28.0", "@opentelemetry/resources": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.4.0 <1.10.0" } }, "sha512-TSx+Yg/d48uWW6HtjS1AD5x6WPfLhDWLl/WxC7I2fMevaiBuKCuraxTB8MDXieCNnBI24bw9ytyXrDCswFfWgA=="], 217 + 218 + "@opentelemetry/sdk-metrics": ["@opentelemetry/sdk-metrics@1.28.0", "", { "dependencies": { "@opentelemetry/core": "1.28.0", "@opentelemetry/resources": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "sha512-43tqMK/0BcKTyOvm15/WQ3HLr0Vu/ucAl/D84NO7iSlv6O4eOprxSHa3sUtmYkaZWHqdDJV0AHVz/R6u4JALVQ=="], 219 + 185 220 "@opentelemetry/sdk-trace-base": ["@opentelemetry/sdk-trace-base@1.30.1", "", { "dependencies": { "@opentelemetry/core": "1.30.1", "@opentelemetry/resources": "1.30.1", "@opentelemetry/semantic-conventions": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg=="], 186 221 187 222 "@opentelemetry/sdk-trace-node": ["@opentelemetry/sdk-trace-node@1.30.1", "", { "dependencies": { "@opentelemetry/context-async-hooks": "1.30.1", "@opentelemetry/core": "1.30.1", "@opentelemetry/propagator-b3": "1.30.1", "@opentelemetry/propagator-jaeger": "1.30.1", "@opentelemetry/sdk-trace-base": "1.30.1", "semver": "^7.5.2" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-cBjYOINt1JxXdpw1e5MlHmFRc5fgj4GW/86vsKFxJCJ8AL4PdVtYH41gWwl4qd4uQjqEL1oJVrXkSy5cnduAnQ=="], 188 223 189 224 "@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.28.0", "", {}, "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA=="], 190 225 226 + "@oxc-parser/binding-android-arm64": ["@oxc-parser/binding-android-arm64@0.99.0", "", { "os": "android", "cpu": "arm64" }, "sha512-V4jhmKXgQQdRnm73F+r3ZY4pUEsijQeSraFeaCGng7abSNJGs76X6l82wHnmjLGFAeY00LWtjcELs7ZmbJ9+lA=="], 227 + 228 + "@oxc-parser/binding-darwin-arm64": ["@oxc-parser/binding-darwin-arm64@0.99.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Rp41nf9zD5FyLZciS9l1GfK8PhYqrD5kEGxyTOA2esTLeAy37rZxetG2E3xteEolAkeb2WDkVrlxPtibeAncMg=="], 229 + 230 + "@oxc-parser/binding-darwin-x64": ["@oxc-parser/binding-darwin-x64@0.99.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-WVonp40fPPxo5Gs0POTI57iEFv485TvNKOHMwZRhigwZRhZY2accEAkYIhei9eswF4HN5B44Wybkz7Gd1Qr/5Q=="], 231 + 232 + "@oxc-parser/binding-freebsd-x64": ["@oxc-parser/binding-freebsd-x64@0.99.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-H30bjOOttPmG54gAqu6+HzbLEzuNOYO2jZYrIq4At+NtLJwvNhXz28Hf5iEAFZIH/4hMpLkM4VN7uc+5UlNW3Q=="], 233 + 234 + "@oxc-parser/binding-linux-arm-gnueabihf": ["@oxc-parser/binding-linux-arm-gnueabihf@0.99.0", "", { "os": "linux", "cpu": "arm" }, "sha512-0Z/Th0SYqzSRDPs6tk5lQdW0i73UCupnim3dgq2oW0//UdLonV/5wIZCArfKGC7w9y4h8TxgXpgtIyD1kKzzlQ=="], 235 + 236 + "@oxc-parser/binding-linux-arm-musleabihf": ["@oxc-parser/binding-linux-arm-musleabihf@0.99.0", "", { "os": "linux", "cpu": "arm" }, "sha512-xo0wqNd5bpbzQVNpAIFbHk1xa+SaS/FGBABCd942SRTnrpxl6GeDj/s1BFaGcTl8MlwlKVMwOcyKrw/2Kdfquw=="], 237 + 238 + "@oxc-parser/binding-linux-arm64-gnu": ["@oxc-parser/binding-linux-arm64-gnu@0.99.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-u26I6LKoLTPTd4Fcpr0aoAtjnGf5/ulMllo+QUiBhupgbVCAlaj4RyXH/mvcjcsl2bVBv9E/gYJZz2JjxQWXBA=="], 239 + 240 + "@oxc-parser/binding-linux-arm64-musl": ["@oxc-parser/binding-linux-arm64-musl@0.99.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-qhftDo2D37SqCEl3ZTa367NqWSZNb1Ddp34CTmShLKFrnKdNiUn55RdokLnHtf1AL5ssaQlYDwBECX7XiBWOhw=="], 241 + 242 + "@oxc-parser/binding-linux-riscv64-gnu": ["@oxc-parser/binding-linux-riscv64-gnu@0.99.0", "", { "os": "linux", "cpu": "none" }, "sha512-zxn/xkf519f12FKkpL5XwJipsylfSSnm36h6c1zBDTz4fbIDMGyIhHfWfwM7uUmHo9Aqw1pLxFpY39Etv398+Q=="], 243 + 244 + "@oxc-parser/binding-linux-s390x-gnu": ["@oxc-parser/binding-linux-s390x-gnu@0.99.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-Y1eSDKDS5E4IVC7Oxw+NbYAKRmJPMJTIjW+9xOWwteDHkFqpocKe0USxog+Q1uhzalD9M0p9eXWEWdGQCMDBMQ=="], 245 + 246 + "@oxc-parser/binding-linux-x64-gnu": ["@oxc-parser/binding-linux-x64-gnu@0.99.0", "", { "os": "linux", "cpu": "x64" }, "sha512-YVJMfk5cFWB8i2/nIrbk6n15bFkMHqWnMIWkVx7r2KwpTxHyFMfu2IpeVKo1ITDSmt5nBrGdLHD36QRlu2nDLg=="], 247 + 248 + "@oxc-parser/binding-linux-x64-musl": ["@oxc-parser/binding-linux-x64-musl@0.99.0", "", { "os": "linux", "cpu": "x64" }, "sha512-2+SDPrie5f90A1b9EirtVggOgsqtsYU5raZwkDYKyS1uvJzjqHCDhG/f4TwQxHmIc5YkczdQfwvN91lwmjsKYQ=="], 249 + 250 + "@oxc-parser/binding-wasm32-wasi": ["@oxc-parser/binding-wasm32-wasi@0.99.0", "", { "dependencies": { "@napi-rs/wasm-runtime": "^1.0.7" }, "cpu": "none" }, "sha512-DKA4j0QerUWSMADziLM5sAyM7V53Fj95CV9SjP77bPfEfT7MnvFKnneaRMqPK1cpzjAGiQF52OBUIKyk0dwOQA=="], 251 + 252 + "@oxc-parser/binding-win32-arm64-msvc": ["@oxc-parser/binding-win32-arm64-msvc@0.99.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-EaB3AvsxqdNUhh9FOoAxRZ2L4PCRwDlDb//QXItwyOJrX7XS+uGK9B1KEUV4FZ/7rDhHsWieLt5e07wl2Ti5AQ=="], 253 + 254 + "@oxc-parser/binding-win32-x64-msvc": ["@oxc-parser/binding-win32-x64-msvc@0.99.0", "", { "os": "win32", "cpu": "x64" }, "sha512-sJN1Q8h7ggFOyDn0zsHaXbP/MklAVUvhrbq0LA46Qum686P3SZQHjbATqJn9yaVEvaSKXCshgl0vQ1gWkGgpcQ=="], 255 + 256 + "@oxc-project/types": ["@oxc-project/types@0.99.0", "", {}, "sha512-LLDEhXB7g1m5J+woRSgfKsFPS3LhR9xRhTeIoEBm5WrkwMxn6eZ0Ld0c0K5eHB57ChZX6I3uSmmLjZ8pcjlRcw=="], 257 + 258 + "@oxfmt/binding-android-arm-eabi": ["@oxfmt/binding-android-arm-eabi@0.36.0", "", { "os": "android", "cpu": "arm" }, "sha512-Z4yVHJWx/swHHjtr0dXrBZb6LxS+qNz1qdza222mWwPTUK4L790+5i3LTgjx3KYGBzcYpjaiZBw4vOx94dH7MQ=="], 259 + 260 + "@oxfmt/binding-android-arm64": ["@oxfmt/binding-android-arm64@0.36.0", "", { "os": "android", "cpu": "arm64" }, "sha512-3ElCJRFNPQl7jexf2CAa9XmAm8eC5JPrIDSjc9jSchkVSFTEqyL0NtZinBB2h1a4i4JgP1oGl/5G5n8YR4FN8Q=="], 261 + 262 + "@oxfmt/binding-darwin-arm64": ["@oxfmt/binding-darwin-arm64@0.36.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-nak4znWCqIExKhYSY/mz/lWsqWIpdsS7o0+SRzXR1Q0m7GrMcG1UrF1pS7TLGZhhkf7nTfEF7q6oZzJiodRDuw=="], 263 + 264 + "@oxfmt/binding-darwin-x64": ["@oxfmt/binding-darwin-x64@0.36.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-V4GP96thDnpKx6ADnMDnhIXNdtV+Ql9D4HUU+a37VTeVbs5qQSF/s6hhUP1b3xUqU7iRcwh72jUU2Y12rtGHAw=="], 265 + 266 + "@oxfmt/binding-freebsd-x64": ["@oxfmt/binding-freebsd-x64@0.36.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-/xapWCADfI5wrhxpEUjhI9fnw7MV5BUZizVa8e24n3VSK6A3Y1TB/ClOP1tfxNspykFKXp4NBWl6NtDJP3osqQ=="], 267 + 268 + "@oxfmt/binding-linux-arm-gnueabihf": ["@oxfmt/binding-linux-arm-gnueabihf@0.36.0", "", { "os": "linux", "cpu": "arm" }, "sha512-1lOmv61XMFIH5uNm27620kRRzWt/RK6tdn250BRDoG9W7OXGOQ5UyI1HVT+SFkoOoKztBiinWgi68+NA1MjBVQ=="], 269 + 270 + "@oxfmt/binding-linux-arm-musleabihf": ["@oxfmt/binding-linux-arm-musleabihf@0.36.0", "", { "os": "linux", "cpu": "arm" }, "sha512-vMH23AskdR1ujUS9sPck2Df9rBVoZUnCVY86jisILzIQ/QQ/yKUTi7tgnIvydPx7TyB/48wsQ5QMr5Knq5p/aw=="], 271 + 272 + "@oxfmt/binding-linux-arm64-gnu": ["@oxfmt/binding-linux-arm64-gnu@0.36.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-Hy1V+zOBHpBiENRx77qrUTt5aPDHeCASRc8K5KwwAHkX2AKP0nV89eL17hsZrE9GmnXFjsNmd80lyf7aRTXsbw=="], 273 + 274 + "@oxfmt/binding-linux-arm64-musl": ["@oxfmt/binding-linux-arm64-musl@0.36.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-SPGLJkOIHSIC6ABUQ5V8NqJpvYhMJueJv26NYqfCnwi/Mn6A61amkpJJ9Suy0Nmvs+OWESJpcebrBUbXPGZyQQ=="], 275 + 276 + "@oxfmt/binding-linux-ppc64-gnu": ["@oxfmt/binding-linux-ppc64-gnu@0.36.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-3EuoyB8x9x8ysYJjbEO/M9fkSk72zQKnXCvpZMDHXlnY36/1qMp55Nm0PrCwjGO/1pen5hdOVkz9WmP3nAp2IQ=="], 277 + 278 + "@oxfmt/binding-linux-riscv64-gnu": ["@oxfmt/binding-linux-riscv64-gnu@0.36.0", "", { "os": "linux", "cpu": "none" }, "sha512-MpY3itLwpGh8dnywtrZtaZ604T1m715SydCKy0+qTxetv+IHzuA+aO/AGzrlzUNYZZmtWtmDBrChZGibvZxbRQ=="], 279 + 280 + "@oxfmt/binding-linux-riscv64-musl": ["@oxfmt/binding-linux-riscv64-musl@0.36.0", "", { "os": "linux", "cpu": "none" }, "sha512-mmDhe4Vtx+XwQPRPn/V25+APnkApYgZ23q+6GVsNYY98pf3aU0aI3Me96pbRs/AfJ1jIiGC+/6q71FEu8dHcHw=="], 281 + 282 + "@oxfmt/binding-linux-s390x-gnu": ["@oxfmt/binding-linux-s390x-gnu@0.36.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-AYXhU+DmNWLSnvVwkHM92fuYhogtVHab7UQrPNaDf1sxadugg9gWVmcgJDlIwxJdpk5CVW/TFvwUKwI432zhhA=="], 283 + 284 + "@oxfmt/binding-linux-x64-gnu": ["@oxfmt/binding-linux-x64-gnu@0.36.0", "", { "os": "linux", "cpu": "x64" }, "sha512-H16QhhQ3usoakMleiAAQ2mg0NsBDAdyE9agUgfC8IHHh3jZEbr0rIKwjEqwbOHK5M0EmfhJmr+aGO/MgZPsneA=="], 285 + 286 + "@oxfmt/binding-linux-x64-musl": ["@oxfmt/binding-linux-x64-musl@0.36.0", "", { "os": "linux", "cpu": "x64" }, "sha512-EFFGkixA39BcmHiCe2ECdrq02D6FCve5ka6ObbvrheXl4V+R0U/E+/uLyVx1X65LW8TA8QQHdnbdDallRekohw=="], 287 + 288 + "@oxfmt/binding-openharmony-arm64": ["@oxfmt/binding-openharmony-arm64@0.36.0", "", { "os": "none", "cpu": "arm64" }, "sha512-zr/t369wZWFOj1qf06Z5gGNjFymfUNDrxKMmr7FKiDRVI1sNsdKRCuRL4XVjtcptKQ+ao3FfxLN1vrynivmCYg=="], 289 + 290 + "@oxfmt/binding-win32-arm64-msvc": ["@oxfmt/binding-win32-arm64-msvc@0.36.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-FxO7UksTv8h4olzACgrqAXNF6BP329+H322323iDrMB5V/+a1kcAw07fsOsUmqNrb9iJBsCQgH/zqcqp5903ag=="], 291 + 292 + "@oxfmt/binding-win32-ia32-msvc": ["@oxfmt/binding-win32-ia32-msvc@0.36.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-OjoMQ89H01M0oLMfr/CPNH1zi48ZIwxAKObUl57oh7ssUBNDp/2Vjf7E1TQ8M4oj4VFQ/byxl2SmcPNaI2YNDg=="], 293 + 294 + "@oxfmt/binding-win32-x64-msvc": ["@oxfmt/binding-win32-x64-msvc@0.36.0", "", { "os": "win32", "cpu": "x64" }, "sha512-MoyeQ9S36ZTz/4bDhOKJgOBIDROd4dQ5AkT9iezhEaUBxAPdNX9Oq0jD8OSnCj3G4wam/XNxVWKMA52kmzmPtQ=="], 295 + 296 + "@oxlint-tsgolint/darwin-arm64": ["@oxlint-tsgolint/darwin-arm64@0.16.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-WQt5lGwRPJBw7q2KNR0mSPDAaMmZmVvDlEEti96xLO7ONhyomQc6fBZxxwZ4qTFedjJnrHX94sFelZ4OKzS7UQ=="], 297 + 298 + "@oxlint-tsgolint/darwin-x64": ["@oxlint-tsgolint/darwin-x64@0.16.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-VJo29XOzdkalvCTiE2v6FU3qZlgHaM8x8hUEVJGPU2i5W+FlocPpmn00+Ld2n7Q0pqIjyD5EyvZ5UmoIEJMfqg=="], 299 + 300 + "@oxlint-tsgolint/linux-arm64": ["@oxlint-tsgolint/linux-arm64@0.16.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-MPfqRt1+XRHv9oHomcBMQ3KpTE+CSkZz14wUxDQoqTNdUlV0HWdzwIE9q65I3D9YyxEnqpM7j4qtDQ3apqVvbQ=="], 301 + 302 + "@oxlint-tsgolint/linux-x64": ["@oxlint-tsgolint/linux-x64@0.16.0", "", { "os": "linux", "cpu": "x64" }, "sha512-XQSwVUsnwLokMhe1TD6IjgvW5WMTPzOGGkdFDtXWQmlN2YeTw94s/NN0KgDrn2agM1WIgAenEkvnm0u7NgwEyw=="], 303 + 304 + "@oxlint-tsgolint/win32-arm64": ["@oxlint-tsgolint/win32-arm64@0.16.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-EWdlspQiiFGsP2AiCYdhg5dTYyAlj6y1nRyNI2dQWq4Q/LITFHiSRVPe+7m7K7lcsZCEz2icN/bCeSkZaORqIg=="], 305 + 306 + "@oxlint-tsgolint/win32-x64": ["@oxlint-tsgolint/win32-x64@0.16.0", "", { "os": "win32", "cpu": "x64" }, "sha512-1ufk8cgktXJuJZHKF63zCHAkaLMwZrEXnZ89H2y6NO85PtOXqu4zbdNl0VBpPP3fCUuUBu9RvNqMFiv0VsbXWA=="], 307 + 308 + "@oxlint/binding-android-arm-eabi": ["@oxlint/binding-android-arm-eabi@1.51.0", "", { "os": "android", "cpu": "arm" }, "sha512-jJYIqbx4sX+suIxWstc4P7SzhEwb4ArWA2KVrmEuu9vH2i0qM6QIHz/ehmbGE4/2fZbpuMuBzTl7UkfNoqiSgw=="], 309 + 310 + "@oxlint/binding-android-arm64": ["@oxlint/binding-android-arm64@1.51.0", "", { "os": "android", "cpu": "arm64" }, "sha512-GtXyBCcH4ti98YdiMNCrpBNGitx87EjEWxevnyhcBK12k/Vu4EzSB45rzSC4fGFUD6sQgeaxItRCEEWeVwPafw=="], 311 + 312 + "@oxlint/binding-darwin-arm64": ["@oxlint/binding-darwin-arm64@1.51.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-3QJbeYaMHn6Bh2XeBXuITSsbnIctyTjvHf5nRjKYrT9pPeErNIpp5VDEeAXC0CZSwSVTsc8WOSDwgrAI24JolQ=="], 313 + 314 + "@oxlint/binding-darwin-x64": ["@oxlint/binding-darwin-x64@1.51.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-NzErhMaTEN1cY0E8C5APy74lw5VwsNfJfVPBMWPVQLqAbO0k4FFLjvHURvkUL+Y18Wu+8Vs1kbqPh2hjXYA4pg=="], 315 + 316 + "@oxlint/binding-freebsd-x64": ["@oxlint/binding-freebsd-x64@1.51.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-msAIh3vPAoKoHlOE/oe6Q5C/n9umypv/k81lED82ibrJotn+3YG2Qp1kiR8o/Dg5iOEU97c6tl0utxcyFenpFw=="], 317 + 318 + "@oxlint/binding-linux-arm-gnueabihf": ["@oxlint/binding-linux-arm-gnueabihf@1.51.0", "", { "os": "linux", "cpu": "arm" }, "sha512-CqQPcvqYyMe9ZBot2stjGogEzk1z8gGAngIX7srSzrzexmXixwVxBdFZyxTVM0CjGfDeV+Ru0w25/WNjlMM2Hw=="], 319 + 320 + "@oxlint/binding-linux-arm-musleabihf": ["@oxlint/binding-linux-arm-musleabihf@1.51.0", "", { "os": "linux", "cpu": "arm" }, "sha512-dstrlYQgZMnyOssxSbolGCge/sDbko12N/35RBNuqLpoPbft2aeBidBAb0dvQlyBd9RJ6u8D4o4Eh8Un6iTgyQ=="], 321 + 322 + "@oxlint/binding-linux-arm64-gnu": ["@oxlint/binding-linux-arm64-gnu@1.51.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-QEjUpXO7d35rP1/raLGGbAsBLLGZIzV3ZbeSjqWlD3oRnxpRIZ6iL4o51XQHkconn3uKssc+1VKdtHJ81BBhDA=="], 323 + 324 + "@oxlint/binding-linux-arm64-musl": ["@oxlint/binding-linux-arm64-musl@1.51.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-YSJua5irtG4DoMAjUapDTPhkQLHhBIY0G9JqlZS6/SZPzqDkPku/1GdWs0D6h/wyx0Iz31lNCfIaWKBQhzP0wQ=="], 325 + 326 + "@oxlint/binding-linux-ppc64-gnu": ["@oxlint/binding-linux-ppc64-gnu@1.51.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-7L4Wj2IEUNDETKssB9IDYt16T6WlF+X2jgC/hBq3diGHda9vJLpAgb09+D3quFq7TdkFtI7hwz/jmuQmQFPc1Q=="], 327 + 328 + "@oxlint/binding-linux-riscv64-gnu": ["@oxlint/binding-linux-riscv64-gnu@1.51.0", "", { "os": "linux", "cpu": "none" }, "sha512-cBUHqtOXy76G41lOB401qpFoKx1xq17qYkhWrLSM7eEjiHM9sOtYqpr6ZdqCnN9s6ZpzudX4EkeHOFH2E9q0vA=="], 329 + 330 + "@oxlint/binding-linux-riscv64-musl": ["@oxlint/binding-linux-riscv64-musl@1.51.0", "", { "os": "linux", "cpu": "none" }, "sha512-WKbg8CysgZcHfZX0ixQFBRSBvFZUHa3SBnEjHY2FVYt2nbNJEjzTxA3ZR5wMU0NOCNKIAFUFvAh5/XJKPRJuJg=="], 331 + 332 + "@oxlint/binding-linux-s390x-gnu": ["@oxlint/binding-linux-s390x-gnu@1.51.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-N1QRUvJTxqXNSu35YOufdjsAVmKVx5bkrggOWAhTWBc3J4qjcBwr1IfyLh/6YCg8sYRSR1GraldS9jUgJL/U4A=="], 333 + 334 + "@oxlint/binding-linux-x64-gnu": ["@oxlint/binding-linux-x64-gnu@1.51.0", "", { "os": "linux", "cpu": "x64" }, "sha512-e0Mz0DizsCoqNIjeOg6OUKe8JKJWZ5zZlwsd05Bmr51Jo3AOL4UJnPvwKumr4BBtBrDZkCmOLhCvDGm95nJM2g=="], 335 + 336 + "@oxlint/binding-linux-x64-musl": ["@oxlint/binding-linux-x64-musl@1.51.0", "", { "os": "linux", "cpu": "x64" }, "sha512-wD8HGTWhYBKXvRDvoBVB1y+fEYV01samhWQSy1Zkxq2vpezvMnjaFKRuiP6tBNITLGuffbNDEXOwcAhJ3gI5Ug=="], 337 + 338 + "@oxlint/binding-openharmony-arm64": ["@oxlint/binding-openharmony-arm64@1.51.0", "", { "os": "none", "cpu": "arm64" }, "sha512-5NSwQ2hDEJ0GPXqikjWtwzgAQCsS7P9aLMNenjjKa+gknN3lTCwwwERsT6lKXSirfU3jLjexA2XQvQALh5h27w=="], 339 + 340 + "@oxlint/binding-win32-arm64-msvc": ["@oxlint/binding-win32-arm64-msvc@1.51.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-JEZyah1M0RHMw8d+jjSSJmSmO8sABA1J1RtrHYujGPeCkYg1NeH0TGuClpe2h5QtioRTaF57y/TZfn/2IFV6fA=="], 341 + 342 + "@oxlint/binding-win32-ia32-msvc": ["@oxlint/binding-win32-ia32-msvc@1.51.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-q3cEoKH6kwjz/WRyHwSf0nlD2F5Qw536kCXvmlSu+kaShzgrA0ojmh45CA81qL+7udfCaZL2SdKCZlLiGBVFlg=="], 343 + 344 + "@oxlint/binding-win32-x64-msvc": ["@oxlint/binding-win32-x64-msvc@1.51.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Q14+fOGb9T28nWF/0EUsYqERiRA7cl1oy4TJrGmLaqhm+aO2cV+JttboHI3CbdeMCAyDI1+NoSlrM7Melhp/cw=="], 345 + 191 346 "@pkgjs/parseargs": ["@pkgjs/parseargs@0.11.0", "", {}, "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg=="], 347 + 348 + "@prettier/plugin-oxc": ["@prettier/plugin-oxc@0.1.3", "", { "dependencies": { "oxc-parser": "0.99.0" } }, "sha512-aABz3zIRilpWMekbt1FL1JVBQrQLR8L4Td2SRctECrWSsXGTNn/G1BqNSKCdbvQS1LWstAXfqcXzDki7GAAJyg=="], 192 349 193 350 "@protobufjs/aspromise": ["@protobufjs/aspromise@1.1.2", "", {}, "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ=="], 194 351 ··· 210 367 211 368 "@protobufjs/utf8": ["@protobufjs/utf8@1.1.0", "", {}, "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw=="], 212 369 213 - "@pulumi/command": ["@pulumi/command@1.1.0", "", { "dependencies": { "@pulumi/pulumi": "^3.142.0" } }, "sha512-ovVec+gXeqpcm76xwYYZvfJym8bG9NRvlBGQWbn0+c0fKQziZIjiv5V+AxTKfb+dLWKe7Otyt206L1IWq41hyw=="], 370 + "@pulumi/cloudflare": ["@pulumi/cloudflare@6.13.0", "", { "dependencies": { "@pulumi/pulumi": "^3.142.0" } }, "sha512-M3tMo5/1S2NgOiCBhrN6gUYZg50/59HlAYQ1NsLkfb7prgH4aSdh7R01wgXlBQPu2BtiZswCtAigMdyAXVA+Ig=="], 214 371 215 - "@pulumi/docker": ["@pulumi/docker@4.8.2", "", { "dependencies": { "@pulumi/pulumi": "^3.142.0", "semver": "^5.4.0" } }, "sha512-98PF3IlCR3t2+PKA/ExgO4x0vUiEhkScpNaClFJ8Qr1v5NEx167kJooVcduLvAG8ZaWPI/jwIyyH+TdMp6GOig=="], 372 + "@pulumi/command": ["@pulumi/command@1.2.1", "", { "dependencies": { "@pulumi/pulumi": "^3.142.0" } }, "sha512-mutNDIUYP67yCBYOVIidQyxuTwZDY9v/sx9EGbgIv4PXfyfolOKGgGLeoHEbI1lxRwaw2wbTZ3VNIynDnA5VKA=="], 373 + 374 + "@pulumi/docker": ["@pulumi/docker@4.11.0", "", { "dependencies": { "@pulumi/pulumi": "^3.142.0", "semver": "^5.4.0" } }, "sha512-NUXMCWL3VBtlclC4u7G9LcToCQGiR/wOuRdKHzAqbn0nzaVuPV3NlDZIz7CpcHL/mGGIQ00/HnLGCA8lC1kSFA=="], 375 + 376 + "@pulumi/docker-build": ["@pulumi/docker-build@0.0.15", "", { "dependencies": { "@pulumi/pulumi": "^3.142.0" } }, "sha512-abtz4zCbePBkpj73M7mJWqXktM9muEAUOxRu8PKErbsqv5M3NfALCMULsDxA1a9vEImHa6ZC9rAe1liXbsinFg=="], 216 377 217 378 "@pulumi/eslint-plugin": ["@pulumi/eslint-plugin@0.3.1", "", { "dependencies": { "@typescript-eslint/utils": "^8.0.0", "typescript": "^5.0.0" } }, "sha512-Ztibd/rtYUcLCJ7eCc/A2ptxOVpElqNIQsZkDXiZ2tEW+9W0XzEHgGvdLPvgN8qpFnEDezu//c0vsp7OZisCzA=="], 218 379 219 - "@pulumi/pulumi": ["@pulumi/pulumi@3.196.0", "", { "dependencies": { "@grpc/grpc-js": "^1.10.1", "@logdna/tail-file": "^2.0.6", "@npmcli/arborist": "^7.3.1", "@opentelemetry/api": "^1.9", "@opentelemetry/exporter-zipkin": "^1.28", "@opentelemetry/instrumentation": "^0.55", "@opentelemetry/instrumentation-grpc": "^0.55", "@opentelemetry/resources": "^1.28", "@opentelemetry/sdk-trace-base": "^1.28", "@opentelemetry/sdk-trace-node": "^1.28", "@types/google-protobuf": "^3.15.5", "@types/semver": "^7.5.6", "@types/tmp": "^0.2.6", "execa": "^5.1.0", "fdir": "^6.1.1", "google-protobuf": "^3.21.4", "got": "^11.8.6", "ini": "^2.0.0", "js-yaml": "^3.14.0", "minimist": "^1.2.6", "normalize-package-data": "^6.0.0", "picomatch": "^3.0.1", "pkg-dir": "^7.0.0", "require-from-string": "^2.0.1", "semver": "^7.5.2", "source-map-support": "^0.5.6", "tmp": "^0.2.4", "upath": "^1.1.0" }, "peerDependencies": { "ts-node": ">= 7.0.1 < 12", "typescript": ">= 3.8.3 < 6" }, "optionalPeers": ["ts-node", "typescript"] }, "sha512-rsNQEuRCNkJy1yMXzSTAt/8mLM+yoxOcRk3HbyOF7z6HyXPdHRlmzFcVdBXW01MGL5lZaw8QEDjlpqdTFydhvg=="], 380 + "@pulumi/pulumi": ["@pulumi/pulumi@3.225.1", "", { "dependencies": { "@grpc/grpc-js": "^1.10.1", "@logdna/tail-file": "^2.0.6", "@npmcli/arborist": "^9.0.0", "@opentelemetry/api": "^1.9", "@opentelemetry/exporter-trace-otlp-grpc": "^0.55", "@opentelemetry/exporter-zipkin": "^1.28", "@opentelemetry/instrumentation": "^0.55", "@opentelemetry/instrumentation-grpc": "^0.55", "@opentelemetry/resources": "^1.28", "@opentelemetry/sdk-trace-base": "^1.28", "@opentelemetry/sdk-trace-node": "^1.28", "@types/google-protobuf": "^3.15.5", "@types/semver": "^7.5.6", "@types/tmp": "^0.2.6", "execa": "^5.1.0", "fdir": "^6.5.0", "google-protobuf": "^3.21.4", "got": "^11.8.6", "ini": "^2.0.0", "js-yaml": "^3.14.2", "minimist": "^1.2.6", "normalize-package-data": "^6.0.0", "package-directory": "^8.1.0", "picomatch": "^3.0.1", "require-from-string": "^2.0.1", "semver": "^7.5.2", "source-map-support": "^0.5.6", "tmp": "^0.2.4", "upath": "^1.1.0" }, "peerDependencies": { "ts-node": ">= 7.0.1 < 12", "typescript": ">= 3.8.3 < 6" }, "optionalPeers": ["ts-node", "typescript"] }, "sha512-0wvk04tzXWyU+GmnCilay/WER4HvZGgCwpbbtndj2a8ZlFuJItujqa76m9luIMk3B3+dTJGMobylYN5rZfKOVQ=="], 220 381 221 - "@sigstore/bundle": ["@sigstore/bundle@2.3.1", "", { "dependencies": { "@sigstore/protobuf-specs": "^0.3.1" } }, "sha512-eqV17lO3EIFqCWK3969Rz+J8MYrRZKw9IBHpSo6DEcEX2c+uzDFOgHE9f2MnyDpfs48LFO4hXmk9KhQ74JzU1g=="], 382 + "@pulumi/std": ["@pulumi/std@2.3.2", "", { "dependencies": { "@pulumi/pulumi": "^3.142.0" } }, "sha512-Xx84bDZGyVQajzuTHWMOJ8T7dF4xKGPzJaRP5eOfVR8H6KNmIA2i/0p/QSCpvwAlV8qXskfsjHkgjdHpyv4roA=="], 222 383 223 - "@sigstore/core": ["@sigstore/core@1.1.0", "", {}, "sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg=="], 384 + "@sigstore/bundle": ["@sigstore/bundle@4.0.0", "", { "dependencies": { "@sigstore/protobuf-specs": "^0.5.0" } }, "sha512-NwCl5Y0V6Di0NexvkTqdoVfmjTaQwoLM236r89KEojGmq/jMls8S+zb7yOwAPdXvbwfKDlP+lmXgAL4vKSQT+A=="], 224 385 225 - "@sigstore/protobuf-specs": ["@sigstore/protobuf-specs@0.3.1", "", {}, "sha512-aIL8Z9NsMr3C64jyQzE0XlkEyBLpgEJJFDHLVVStkFV5Q3Il/r/YtY6NJWKQ4cy4AE7spP1IX5Jq7VCAxHHMfQ=="], 386 + "@sigstore/core": ["@sigstore/core@3.1.0", "", {}, "sha512-o5cw1QYhNQ9IroioJxpzexmPjfCe7gzafd2RY3qnMpxr4ZEja+Jad/U8sgFpaue6bOaF+z7RVkyKVV44FN+N8A=="], 226 387 227 - "@sigstore/sign": ["@sigstore/sign@2.3.0", "", { "dependencies": { "@sigstore/bundle": "^2.3.0", "@sigstore/core": "^1.0.0", "@sigstore/protobuf-specs": "^0.3.1", "make-fetch-happen": "^13.0.0" } }, "sha512-tsAyV6FC3R3pHmKS880IXcDJuiFJiKITO1jxR1qbplcsBkZLBmjrEw5GbC7ikD6f5RU1hr7WnmxB/2kKc1qUWQ=="], 388 + "@sigstore/protobuf-specs": ["@sigstore/protobuf-specs@0.5.0", "", {}, "sha512-MM8XIwUjN2bwvCg1QvrMtbBmpcSHrkhFSCu1D11NyPvDQ25HEc4oG5/OcQfd/Tlf/OxmKWERDj0zGE23jQaMwA=="], 389 + 390 + "@sigstore/sign": ["@sigstore/sign@4.1.0", "", { "dependencies": { "@sigstore/bundle": "^4.0.0", "@sigstore/core": "^3.1.0", "@sigstore/protobuf-specs": "^0.5.0", "make-fetch-happen": "^15.0.3", "proc-log": "^6.1.0", "promise-retry": "^2.0.1" } }, "sha512-Vx1RmLxLGnSUqx/o5/VsCjkuN5L7y+vxEEwawvc7u+6WtX2W4GNa7b9HEjmcRWohw/d6BpATXmvOwc78m+Swdg=="], 228 391 229 - "@sigstore/tuf": ["@sigstore/tuf@2.3.2", "", { "dependencies": { "@sigstore/protobuf-specs": "^0.3.0", "tuf-js": "^2.2.0" } }, "sha512-mwbY1VrEGU4CO55t+Kl6I7WZzIl+ysSzEYdA1Nv/FTrl2bkeaPXo5PnWZAVfcY2zSdhOpsUTJW67/M2zHXGn5w=="], 392 + "@sigstore/tuf": ["@sigstore/tuf@4.0.1", "", { "dependencies": { "@sigstore/protobuf-specs": "^0.5.0", "tuf-js": "^4.1.0" } }, "sha512-OPZBg8y5Vc9yZjmWCHrlWPMBqW5yd8+wFNl+thMdtcWz3vjVSoJQutF8YkrzI0SLGnkuFof4HSsWUhXrf219Lw=="], 230 393 231 - "@sigstore/verify": ["@sigstore/verify@1.2.0", "", { "dependencies": { "@sigstore/bundle": "^2.3.1", "@sigstore/core": "^1.1.0", "@sigstore/protobuf-specs": "^0.3.1" } }, "sha512-hQF60nc9yab+Csi4AyoAmilGNfpXT+EXdBgFkP9OgPwIBPwyqVf7JAWPtmqrrrneTmAT6ojv7OlH1f6Ix5BG4Q=="], 394 + "@sigstore/verify": ["@sigstore/verify@3.1.0", "", { "dependencies": { "@sigstore/bundle": "^4.0.0", "@sigstore/core": "^3.1.0", "@sigstore/protobuf-specs": "^0.5.0" } }, "sha512-mNe0Iigql08YupSOGv197YdHpPPr+EzDZmfCgMc7RPNaZTw5aLN01nBl6CHJOh3BGtnMIj83EeN4butBchc8Ag=="], 232 395 233 396 "@sindresorhus/is": ["@sindresorhus/is@4.6.0", "", {}, "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw=="], 234 397 ··· 244 407 245 408 "@tufjs/canonical-json": ["@tufjs/canonical-json@2.0.0", "", {}, "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA=="], 246 409 247 - "@tufjs/models": ["@tufjs/models@2.0.0", "", { "dependencies": { "@tufjs/canonical-json": "2.0.0", "minimatch": "^9.0.3" } }, "sha512-c8nj8BaOExmZKO2DXhDfegyhSGcG9E/mPN3U13L+/PsoWm1uaGiHHjxqSHQiasDBQwDA3aHuw9+9spYAP1qvvg=="], 410 + "@tufjs/models": ["@tufjs/models@4.1.0", "", { "dependencies": { "@tufjs/canonical-json": "2.0.0", "minimatch": "^10.1.1" } }, "sha512-Y8cK9aggNRsqJVaKUlEYs4s7CvQ1b1ta2DVPyAimb0I2qhzjNk+A+mxvll/klL0RlfuIUei8BF7YWiua4kQqww=="], 411 + 412 + "@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], 248 413 249 414 "@types/cacheable-request": ["@types/cacheable-request@6.0.3", "", { "dependencies": { "@types/http-cache-semantics": "*", "@types/keyv": "^3.1.4", "@types/node": "*", "@types/responselike": "^1.0.0" } }, "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw=="], 415 + 416 + "@types/esrecurse": ["@types/esrecurse@4.3.1", "", {}, "sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw=="], 250 417 251 418 "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], 252 419 ··· 258 425 259 426 "@types/keyv": ["@types/keyv@3.1.4", "", { "dependencies": { "@types/node": "*" } }, "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg=="], 260 427 261 - "@types/node": ["@types/node@24.5.0", "", { "dependencies": { "undici-types": "~7.12.0" } }, "sha512-y1dMvuvJspJiPSDZUQ+WMBvF7dpnEqN4x9DDC9ie5Fs/HUZJA3wFp7EhHoVaKX/iI0cRoECV8X2jL8zi0xrHCg=="], 428 + "@types/node": ["@types/node@25.3.5", "", { "dependencies": { "undici-types": "~7.18.0" } }, "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA=="], 262 429 263 430 "@types/responselike": ["@types/responselike@1.0.3", "", { "dependencies": { "@types/node": "*" } }, "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw=="], 264 431 ··· 268 435 269 436 "@types/tmp": ["@types/tmp@0.2.6", "", {}, "sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA=="], 270 437 271 - "@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.44.0", "", { "dependencies": { "@eslint-community/regexpp": "^4.10.0", "@typescript-eslint/scope-manager": "8.44.0", "@typescript-eslint/type-utils": "8.44.0", "@typescript-eslint/utils": "8.44.0", "@typescript-eslint/visitor-keys": "8.44.0", "graphemer": "^1.4.0", "ignore": "^7.0.0", "natural-compare": "^1.4.0", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "@typescript-eslint/parser": "^8.44.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-EGDAOGX+uwwekcS0iyxVDmRV9HX6FLSM5kzrAToLTsr9OWCIKG/y3lQheCq18yZ5Xh78rRKJiEpP0ZaCs4ryOQ=="], 272 - 273 - "@typescript-eslint/parser": ["@typescript-eslint/parser@8.44.0", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.44.0", "@typescript-eslint/types": "8.44.0", "@typescript-eslint/typescript-estree": "8.44.0", "@typescript-eslint/visitor-keys": "8.44.0", "debug": "^4.3.4" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-VGMpFQGUQWYT9LfnPcX8ouFojyrZ/2w3K5BucvxL/spdNehccKhB4jUyB1yBCXpr2XFm0jkECxgrpXBW2ipoAw=="], 274 - 275 - "@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.44.0", "", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.44.0", "@typescript-eslint/types": "^8.44.0", "debug": "^4.3.4" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-ZeaGNraRsq10GuEohKTo4295Z/SuGcSq2LzfGlqiuEvfArzo/VRrT0ZaJsVPuKZ55lVbNk8U6FcL+ZMH8CoyVA=="], 438 + "@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.37.0", "", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.37.0", "@typescript-eslint/types": "^8.37.0", "debug": "^4.3.4" }, "peerDependencies": { "typescript": ">=4.8.4 <5.9.0" } }, "sha512-BIUXYsbkl5A1aJDdYJCBAo8rCEbAvdquQ8AnLb6z5Lp1u3x5PNgSSx9A/zqYc++Xnr/0DVpls8iQ2cJs/izTXA=="], 276 439 277 440 "@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.37.0", "", { "dependencies": { "@typescript-eslint/types": "8.37.0", "@typescript-eslint/visitor-keys": "8.37.0" } }, "sha512-0vGq0yiU1gbjKob2q691ybTg9JX6ShiVXAAfm2jGf3q0hdP6/BruaFjL/ManAR/lj05AvYCH+5bbVo0VtzmjOA=="], 278 441 279 - "@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.44.0", "", { "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-x5Y0+AuEPqAInc6yd0n5DAcvtoQ/vyaGwuX5HE9n6qAefk1GaedqrLQF8kQGylLUb9pnZyLf+iEiL9fr8APDtQ=="], 280 - 281 - "@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.44.0", "", { "dependencies": { "@typescript-eslint/types": "8.44.0", "@typescript-eslint/typescript-estree": "8.44.0", "@typescript-eslint/utils": "8.44.0", "debug": "^4.3.4", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-9cwsoSxJ8Sak67Be/hD2RNt/fsqmWnNE1iHohG8lxqLSNY8xNfyY7wloo5zpW3Nu9hxVgURevqfcH6vvKCt6yg=="], 442 + "@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.37.0", "", { "peerDependencies": { "typescript": ">=4.8.4 <5.9.0" } }, "sha512-1/YHvAVTimMM9mmlPvTec9NP4bobA1RkDbMydxG8omqwJJLEW/Iy2C4adsAESIXU3WGLXFHSZUU+C9EoFWl4Zg=="], 282 443 283 444 "@typescript-eslint/types": ["@typescript-eslint/types@8.37.0", "", {}, "sha512-ax0nv7PUF9NOVPs+lmQ7yIE7IQmAf8LGcXbMvHX5Gm+YJUYNAl340XkGnrimxZ0elXyoQJuN5sbg6C4evKA4SQ=="], 284 445 285 - "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.44.0", "", { "dependencies": { "@typescript-eslint/project-service": "8.44.0", "@typescript-eslint/tsconfig-utils": "8.44.0", "@typescript-eslint/types": "8.44.0", "@typescript-eslint/visitor-keys": "8.44.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-lqNj6SgnGcQZwL4/SBJ3xdPEfcBuhCG8zdcwCPgYcmiPLgokiNDKlbPzCwEwu7m279J/lBYWtDYL+87OEfn8Jw=="], 446 + "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.37.0", "", { "dependencies": { "@typescript-eslint/project-service": "8.37.0", "@typescript-eslint/tsconfig-utils": "8.37.0", "@typescript-eslint/types": "8.37.0", "@typescript-eslint/visitor-keys": "8.37.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "typescript": ">=4.8.4 <5.9.0" } }, "sha512-zuWDMDuzMRbQOM+bHyU4/slw27bAUEcKSKKs3hcv2aNnc/tvE/h7w60dwVw8vnal2Pub6RT1T7BI8tFZ1fE+yg=="], 286 447 287 448 "@typescript-eslint/utils": ["@typescript-eslint/utils@8.37.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", "@typescript-eslint/scope-manager": "8.37.0", "@typescript-eslint/types": "8.37.0", "@typescript-eslint/typescript-estree": "8.37.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.9.0" } }, "sha512-TSFvkIW6gGjN2p6zbXo20FzCABbyUAuq6tBvNRGsKdsSQ6a7rnV6ADfZ7f4iI3lIiXc4F4WWvtUfDw9CJ9pO5A=="], 288 449 289 - "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.44.0", "", { "dependencies": { "@typescript-eslint/types": "8.44.0", "eslint-visitor-keys": "^4.2.1" } }, "sha512-zaz9u8EJ4GBmnehlrpoKvj/E3dNbuQ7q0ucyZImm3cLqJ8INTc970B1qEqDX/Rzq65r3TvVTN7kHWPBoyW7DWw=="], 450 + "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.37.0", "", { "dependencies": { "@typescript-eslint/types": "8.37.0", "eslint-visitor-keys": "^4.2.1" } }, "sha512-YzfhzcTnZVPiLfP/oeKtDp2evwvHLMe0LOy7oe+hb9KKIumLNohYS9Hgp1ifwpu42YWxhZE8yieggz6JpqO/1w=="], 290 451 291 - "abbrev": ["abbrev@2.0.0", "", {}, "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ=="], 452 + "abbrev": ["abbrev@4.0.0", "", {}, "sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA=="], 292 453 293 454 "acorn": ["acorn@8.11.3", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg=="], 294 455 ··· 316 477 317 478 "argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="], 318 479 319 - "arktype": ["arktype@2.1.22", "", { "dependencies": { "@ark/schema": "0.49.0", "@ark/util": "0.49.0" } }, "sha512-xdzl6WcAhrdahvRRnXaNwsipCgHuNoLobRqhiP8RjnfL9Gp947abGlo68GAIyLtxbD+MLzNyH2YR4kEqioMmYQ=="], 480 + "arkregex": ["arkregex@0.0.5", "", { "dependencies": { "@ark/util": "0.56.0" } }, "sha512-ncYjBdLlh5/QnVsAA8De16Tc9EqmYM7y/WU9j+236KcyYNUXogpz3sC4ATIZYzzLxwI+0sEOaQLEmLmRleaEXw=="], 481 + 482 + "arktype": ["arktype@2.2.0", "", { "dependencies": { "@ark/schema": "0.56.0", "@ark/util": "0.56.0", "arkregex": "0.0.5" } }, "sha512-t54MZ7ti5BhOEvzEkgKnWvqj+UbDfWig+DHr5I34xatymPusKLS0lQpNJd8M6DzmIto2QGszHfNKoFIT8tMCZQ=="], 320 483 321 484 "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], 322 485 323 - "bin-links": ["bin-links@4.0.3", "", { "dependencies": { "cmd-shim": "^6.0.0", "npm-normalize-package-bin": "^3.0.0", "read-cmd-shim": "^4.0.0", "write-file-atomic": "^5.0.0" } }, "sha512-obsRaULtJurnfox/MDwgq6Yo9kzbv1CPTk/1/s7Z/61Lezc8IKkFCOXNeVLXz0456WRzBQmSsDWlai2tIhBsfA=="], 486 + "bin-links": ["bin-links@6.0.0", "", { "dependencies": { "cmd-shim": "^8.0.0", "npm-normalize-package-bin": "^5.0.0", "proc-log": "^6.0.0", "read-cmd-shim": "^6.0.0", "write-file-atomic": "^7.0.0" } }, "sha512-X4CiKlcV2GjnCMwnKAfbVWpHa++65th9TuzAEYtZoATiOE2DQKhSp4CJlyLoTqdhBKlXjpXjCTYPNNFS33Fi6w=="], 324 487 325 - "brace-expansion": ["brace-expansion@1.1.11", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA=="], 488 + "brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], 326 489 327 490 "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], 328 491 ··· 330 493 331 494 "builtins": ["builtins@5.0.1", "", { "dependencies": { "semver": "^7.0.0" } }, "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ=="], 332 495 333 - "cacache": ["cacache@18.0.2", "", { "dependencies": { "@npmcli/fs": "^3.1.0", "fs-minipass": "^3.0.0", "glob": "^10.2.2", "lru-cache": "^10.0.1", "minipass": "^7.0.3", "minipass-collect": "^2.0.1", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "p-map": "^4.0.0", "ssri": "^10.0.0", "tar": "^6.1.11", "unique-filename": "^3.0.0" } }, "sha512-r3NU8h/P+4lVUHfeRw1dtgQYar3DZMm4/cm2bZgOvrFC/su7budSOeqh52VJIC4U4iG1WWwV6vRW0znqBvxNuw=="], 496 + "cacache": ["cacache@20.0.3", "", { "dependencies": { "@npmcli/fs": "^5.0.0", "fs-minipass": "^3.0.0", "glob": "^13.0.0", "lru-cache": "^11.1.0", "minipass": "^7.0.3", "minipass-collect": "^2.0.1", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "p-map": "^7.0.2", "ssri": "^13.0.0", "unique-filename": "^5.0.0" } }, "sha512-3pUp4e8hv07k1QlijZu6Kn7c9+ZpWWk4j3F8N3xPuCExULobqJydKYOTj1FTq58srkJsXvO7LbGAH4C0ZU3WGw=="], 334 497 335 498 "cacheable-lookup": ["cacheable-lookup@5.0.4", "", {}, "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA=="], 336 499 337 500 "cacheable-request": ["cacheable-request@7.0.4", "", { "dependencies": { "clone-response": "^1.0.2", "get-stream": "^5.1.0", "http-cache-semantics": "^4.0.0", "keyv": "^4.0.0", "lowercase-keys": "^2.0.0", "normalize-url": "^6.0.1", "responselike": "^2.0.0" } }, "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg=="], 338 501 339 - "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="], 340 - 341 - "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], 342 - 343 - "chownr": ["chownr@2.0.0", "", {}, "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="], 502 + "chownr": ["chownr@3.0.0", "", {}, "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g=="], 344 503 345 504 "cjs-module-lexer": ["cjs-module-lexer@1.4.1", "", {}, "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA=="], 346 505 ··· 350 509 351 510 "clone-response": ["clone-response@1.0.3", "", { "dependencies": { "mimic-response": "^1.0.0" } }, "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA=="], 352 511 353 - "cmd-shim": ["cmd-shim@6.0.2", "", {}, "sha512-+FFYbB0YLaAkhkcrjkyNLYDiOsFSfRjwjY19LXk/psmMx1z00xlCv7hhQoTGXXIKi+YXHL/iiFo8NqMVQX9nOw=="], 512 + "cmd-shim": ["cmd-shim@8.0.0", "", {}, "sha512-Jk/BK6NCapZ58BKUxlSI+ouKRbjH1NLZCgJkYoab+vEHUY3f6OzpNBN9u7HFSv9J6TRDGs4PLOHezoKGaFRSCA=="], 354 513 355 514 "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], 356 515 ··· 358 517 359 518 "color-support": ["color-support@1.1.3", "", { "bin": { "color-support": "bin.js" } }, "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg=="], 360 519 361 - "common-ancestor-path": ["common-ancestor-path@1.0.1", "", {}, "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w=="], 362 - 363 - "concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="], 520 + "common-ancestor-path": ["common-ancestor-path@2.0.0", "", {}, "sha512-dnN3ibLeoRf2HNC+OlCiNc5d2zxbLJXOtiZUudNFSXZrNSydxcCsSpRzXwfu7BBWCIfHPw+xTayeBvJCP/D8Ng=="], 364 521 365 522 "console-control-strings": ["console-control-strings@1.1.0", "", {}, "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ=="], 366 523 367 524 "create-require": ["create-require@1.1.1", "", {}, "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ=="], 368 525 369 - "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], 526 + "cross-spawn": ["cross-spawn@7.0.3", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w=="], 370 527 371 528 "cssesc": ["cssesc@3.0.0", "", { "bin": { "cssesc": "bin/cssesc" } }, "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="], 372 529 ··· 394 551 395 552 "err-code": ["err-code@2.0.3", "", {}, "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA=="], 396 553 397 - "esbuild": ["esbuild@0.25.2", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.2", "@esbuild/android-arm": "0.25.2", "@esbuild/android-arm64": "0.25.2", "@esbuild/android-x64": "0.25.2", "@esbuild/darwin-arm64": "0.25.2", "@esbuild/darwin-x64": "0.25.2", "@esbuild/freebsd-arm64": "0.25.2", "@esbuild/freebsd-x64": "0.25.2", "@esbuild/linux-arm": "0.25.2", "@esbuild/linux-arm64": "0.25.2", "@esbuild/linux-ia32": "0.25.2", "@esbuild/linux-loong64": "0.25.2", "@esbuild/linux-mips64el": "0.25.2", "@esbuild/linux-ppc64": "0.25.2", "@esbuild/linux-riscv64": "0.25.2", "@esbuild/linux-s390x": "0.25.2", "@esbuild/linux-x64": "0.25.2", "@esbuild/netbsd-arm64": "0.25.2", "@esbuild/netbsd-x64": "0.25.2", "@esbuild/openbsd-arm64": "0.25.2", "@esbuild/openbsd-x64": "0.25.2", "@esbuild/sunos-x64": "0.25.2", "@esbuild/win32-arm64": "0.25.2", "@esbuild/win32-ia32": "0.25.2", "@esbuild/win32-x64": "0.25.2" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ=="], 554 + "esbuild": ["esbuild@0.27.0", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.0", "@esbuild/android-arm": "0.27.0", "@esbuild/android-arm64": "0.27.0", "@esbuild/android-x64": "0.27.0", "@esbuild/darwin-arm64": "0.27.0", "@esbuild/darwin-x64": "0.27.0", "@esbuild/freebsd-arm64": "0.27.0", "@esbuild/freebsd-x64": "0.27.0", "@esbuild/linux-arm": "0.27.0", "@esbuild/linux-arm64": "0.27.0", "@esbuild/linux-ia32": "0.27.0", "@esbuild/linux-loong64": "0.27.0", "@esbuild/linux-mips64el": "0.27.0", "@esbuild/linux-ppc64": "0.27.0", "@esbuild/linux-riscv64": "0.27.0", "@esbuild/linux-s390x": "0.27.0", "@esbuild/linux-x64": "0.27.0", "@esbuild/netbsd-arm64": "0.27.0", "@esbuild/netbsd-x64": "0.27.0", "@esbuild/openbsd-arm64": "0.27.0", "@esbuild/openbsd-x64": "0.27.0", "@esbuild/openharmony-arm64": "0.27.0", "@esbuild/sunos-x64": "0.27.0", "@esbuild/win32-arm64": "0.27.0", "@esbuild/win32-ia32": "0.27.0", "@esbuild/win32-x64": "0.27.0" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-jd0f4NHbD6cALCyGElNpGAOtWxSq46l9X/sWB0Nzd5er4Kz2YTm+Vl0qKFT9KUJvD8+fiO8AvoHhFvEatfVixA=="], 398 555 399 556 "escalade": ["escalade@3.1.2", "", {}, "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA=="], 400 557 401 558 "escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], 402 559 403 - "eslint": ["eslint@9.35.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.0", "@eslint/config-helpers": "^0.3.1", "@eslint/core": "^0.15.2", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "9.35.0", "@eslint/plugin-kit": "^0.3.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.4.0", "eslint-visitor-keys": "^4.2.1", "espree": "^10.4.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-QePbBFMJFjgmlE+cXAlbHZbHpdFVS2E/6vzCy7aKlebddvl1vadiC4JFV5u/wqTkNUwEV8WrQi257jf5f06hrg=="], 560 + "eslint": ["eslint@10.0.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.2", "@eslint/config-array": "^0.23.0", "@eslint/config-helpers": "^0.5.2", "@eslint/core": "^1.1.0", "@eslint/plugin-kit": "^0.6.0", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "ajv": "^6.12.4", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^9.1.0", "eslint-visitor-keys": "^5.0.0", "espree": "^11.1.0", "esquery": "^1.7.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "minimatch": "^10.1.1", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-O0piBKY36YSJhlFSG8p9VUdPV/SxxS4FYDWVpr/9GJuMaepzwlf4J8I4ov1b+ySQfDTPhc3DtLaxcT1fN0yqCg=="], 404 561 405 - "eslint-scope": ["eslint-scope@8.4.0", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg=="], 562 + "eslint-scope": ["eslint-scope@9.1.0", "", { "dependencies": { "@types/esrecurse": "^4.3.1", "@types/estree": "^1.0.8", "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-CkWE42hOJsNj9FJRaoMX9waUFYhqY4jmyLFdAdzZr6VaCg3ynLYx4WnOdkaIifGfH4gsUcBTn4OZbHXkpLD0FQ=="], 406 563 407 - "eslint-visitor-keys": ["eslint-visitor-keys@4.2.1", "", {}, "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ=="], 564 + "eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], 408 565 409 - "espree": ["espree@10.4.0", "", { "dependencies": { "acorn": "^8.15.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^4.2.1" } }, "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ=="], 566 + "espree": ["espree@11.1.0", "", { "dependencies": { "acorn": "^8.15.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^5.0.0" } }, "sha512-WFWYhO1fV4iYkqOOvq8FbqIhr2pYfoDY0kCotMkDeNtGpiGGkZ1iov2u8ydjtgM8yF8rzK7oaTbw2NAzbAbehw=="], 410 567 411 568 "esprima": ["esprima@4.0.1", "", { "bin": { "esparse": "./bin/esparse.js", "esvalidate": "./bin/esvalidate.js" } }, "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="], 412 569 413 - "esquery": ["esquery@1.6.0", "", { "dependencies": { "estraverse": "^5.1.0" } }, "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg=="], 570 + "esquery": ["esquery@1.7.0", "", { "dependencies": { "estraverse": "^5.1.0" } }, "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g=="], 414 571 415 572 "esrecurse": ["esrecurse@4.3.0", "", { "dependencies": { "estraverse": "^5.2.0" } }, "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag=="], 416 573 ··· 432 589 433 590 "fastq": ["fastq@1.19.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ=="], 434 591 435 - "fdir": ["fdir@6.1.1", "", { "peerDependencies": { "picomatch": "3.x" }, "optionalPeers": ["picomatch"] }, "sha512-QfKBVg453Dyn3mr0Q0O+Tkr1r79lOTAKSi9f/Ot4+qVEwxWhav2Z+SudrG9vQjM2aYRMQQZ2/Q1zdA8ACM1pDg=="], 592 + "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], 436 593 437 594 "file-entry-cache": ["file-entry-cache@8.0.0", "", { "dependencies": { "flat-cache": "^4.0.0" } }, "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ=="], 438 595 439 596 "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="], 440 597 441 598 "find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="], 599 + 600 + "find-up-simple": ["find-up-simple@1.0.1", "", {}, "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ=="], 442 601 443 602 "flat-cache": ["flat-cache@4.0.1", "", { "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.4" } }, "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw=="], 444 603 ··· 460 619 461 620 "get-tsconfig": ["get-tsconfig@4.8.1", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg=="], 462 621 463 - "glob": ["glob@10.3.12", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.3.6", "minimatch": "^9.0.1", "minipass": "^7.0.4", "path-scurry": "^1.10.2" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg=="], 622 + "glob": ["glob@13.0.0", "", { "dependencies": { "minimatch": "^10.1.1", "minipass": "^7.1.2", "path-scurry": "^2.0.0" } }, "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA=="], 464 623 465 624 "glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="], 466 - 467 - "globals": ["globals@14.0.0", "", {}, "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ=="], 468 625 469 626 "google-protobuf": ["google-protobuf@3.21.4", "", {}, "sha512-MnG7N936zcKTco4Jd2PX2U96Kf9PxygAPKBug+74LHzmHXmceN16MmRcdgZv+DGef/S9YvQAfRsNCn4cjf9yyQ=="], 470 627 ··· 472 629 473 630 "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], 474 631 475 - "graphemer": ["graphemer@1.4.0", "", {}, "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag=="], 476 - 477 - "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="], 478 - 479 632 "has-unicode": ["has-unicode@2.0.1", "", {}, "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ=="], 480 633 481 634 "hasown": ["hasown@2.0.1", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA=="], 482 635 483 - "hosted-git-info": ["hosted-git-info@7.0.1", "", { "dependencies": { "lru-cache": "^10.0.1" } }, "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA=="], 636 + "hosted-git-info": ["hosted-git-info@9.0.2", "", { "dependencies": { "lru-cache": "^11.1.0" } }, "sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg=="], 484 637 485 638 "http-cache-semantics": ["http-cache-semantics@4.1.1", "", {}, "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ=="], 486 639 ··· 496 649 497 650 "ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], 498 651 499 - "ignore-walk": ["ignore-walk@6.0.4", "", { "dependencies": { "minimatch": "^9.0.0" } }, "sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw=="], 500 - 501 - "import-fresh": ["import-fresh@3.3.1", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="], 652 + "ignore-walk": ["ignore-walk@8.0.0", "", { "dependencies": { "minimatch": "^10.0.3" } }, "sha512-FCeMZT4NiRQGh+YkeKMtWrOmBgWjHjMJ26WQWrRQyoyzqevdaGSakUaJW5xQYmjLlUVk2qUnCjYVBax9EKKg8A=="], 502 653 503 654 "import-in-the-middle": ["import-in-the-middle@1.11.0", "", { "dependencies": { "acorn": "^8.8.2", "acorn-import-attributes": "^1.9.5", "cjs-module-lexer": "^1.2.2", "module-details-from-path": "^1.0.3" } }, "sha512-5DimNQGoe0pLUHbR9qK84iWaWjjbsxiqXnw6Qz64+azRgleqv9k2kTt5fw7QsOpmaGYtuxxursnPPsnTKEx10Q=="], 504 655 ··· 508 659 509 660 "ini": ["ini@2.0.0", "", {}, "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA=="], 510 661 511 - "ip-address": ["ip-address@9.0.5", "", { "dependencies": { "jsbn": "1.1.0", "sprintf-js": "^1.1.3" } }, "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g=="], 662 + "ip-address": ["ip-address@10.1.0", "", {}, "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q=="], 512 663 513 - "ipaddr.js": ["ipaddr.js@2.2.0", "", {}, "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA=="], 664 + "ipaddr.js": ["ipaddr.js@2.3.0", "", {}, "sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg=="], 514 665 515 666 "is-core-module": ["is-core-module@2.13.1", "", { "dependencies": { "hasown": "^2.0.0" } }, "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw=="], 516 667 ··· 526 677 527 678 "is-stream": ["is-stream@2.0.1", "", {}, "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="], 528 679 529 - "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], 680 + "isexe": ["isexe@3.1.1", "", {}, "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ=="], 530 681 531 682 "jackspeak": ["jackspeak@2.3.6", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" }, "optionalDependencies": { "@pkgjs/parseargs": "^0.11.0" } }, "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ=="], 532 683 533 - "jiti": ["jiti@2.5.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w=="], 684 + "jiti": ["jiti@2.6.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ=="], 534 685 535 - "js-yaml": ["js-yaml@3.14.1", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g=="], 686 + "js-yaml": ["js-yaml@3.14.2", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg=="], 536 687 537 688 "jsbn": ["jsbn@1.1.0", "", {}, "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A=="], 538 689 ··· 560 711 561 712 "lodash.camelcase": ["lodash.camelcase@4.3.0", "", {}, "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA=="], 562 713 563 - "lodash.merge": ["lodash.merge@4.6.2", "", {}, "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="], 564 - 565 714 "long": ["long@5.2.3", "", {}, "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q=="], 566 715 567 716 "lowercase-keys": ["lowercase-keys@2.0.0", "", {}, "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA=="], 568 717 569 - "lru-cache": ["lru-cache@6.0.0", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA=="], 718 + "lru-cache": ["lru-cache@11.2.4", "", {}, "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg=="], 570 719 571 720 "make-error": ["make-error@1.3.6", "", {}, "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw=="], 572 721 573 - "make-fetch-happen": ["make-fetch-happen@13.0.0", "", { "dependencies": { "@npmcli/agent": "^2.0.0", "cacache": "^18.0.0", "http-cache-semantics": "^4.1.1", "is-lambda": "^1.0.1", "minipass": "^7.0.2", "minipass-fetch": "^3.0.0", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "negotiator": "^0.6.3", "promise-retry": "^2.0.1", "ssri": "^10.0.0" } }, "sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A=="], 722 + "make-fetch-happen": ["make-fetch-happen@15.0.3", "", { "dependencies": { "@npmcli/agent": "^4.0.0", "cacache": "^20.0.1", "http-cache-semantics": "^4.1.1", "minipass": "^7.0.2", "minipass-fetch": "^5.0.0", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "negotiator": "^1.0.0", "proc-log": "^6.0.0", "promise-retry": "^2.0.1", "ssri": "^13.0.0" } }, "sha512-iyyEpDty1mwW3dGlYXAJqC/azFn5PPvgKVwXayOGBSmKLxhKZ9fg4qIan2ePpp1vJIwfFiO34LAPZgq9SZW9Aw=="], 574 723 575 724 "merge-stream": ["merge-stream@2.0.0", "", {}, "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="], 576 725 ··· 582 731 583 732 "mimic-response": ["mimic-response@3.1.0", "", {}, "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ=="], 584 733 585 - "minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], 734 + "minimatch": ["minimatch@10.1.1", "", { "dependencies": { "@isaacs/brace-expansion": "^5.0.0" } }, "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ=="], 586 735 587 736 "minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="], 588 737 ··· 590 739 591 740 "minipass-collect": ["minipass-collect@2.0.1", "", { "dependencies": { "minipass": "^7.0.3" } }, "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw=="], 592 741 593 - "minipass-fetch": ["minipass-fetch@3.0.4", "", { "dependencies": { "minipass": "^7.0.3", "minipass-sized": "^1.0.3", "minizlib": "^2.1.2" }, "optionalDependencies": { "encoding": "^0.1.13" } }, "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg=="], 742 + "minipass-fetch": ["minipass-fetch@5.0.0", "", { "dependencies": { "minipass": "^7.0.3", "minipass-sized": "^1.0.3", "minizlib": "^3.0.1" }, "optionalDependencies": { "encoding": "^0.1.13" } }, "sha512-fiCdUALipqgPWrOVTz9fw0XhcazULXOSU6ie40DDbX1F49p1dBrSRBuswndTx1x3vEb/g0FT7vC4c4C2u/mh3A=="], 594 743 595 744 "minipass-flush": ["minipass-flush@1.0.5", "", { "dependencies": { "minipass": "^3.0.0" } }, "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw=="], 596 745 ··· 600 749 601 750 "minipass-sized": ["minipass-sized@1.0.3", "", { "dependencies": { "minipass": "^3.0.0" } }, "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g=="], 602 751 603 - "minizlib": ["minizlib@2.1.2", "", { "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" } }, "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg=="], 752 + "minizlib": ["minizlib@3.1.0", "", { "dependencies": { "minipass": "^7.1.2" } }, "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw=="], 604 753 605 754 "mkdirp": ["mkdirp@1.0.4", "", { "bin": { "mkdirp": "bin/cmd.js" } }, "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="], 606 755 ··· 610 759 611 760 "natural-compare": ["natural-compare@1.4.0", "", {}, "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="], 612 761 613 - "negotiator": ["negotiator@0.6.3", "", {}, "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="], 762 + "negotiator": ["negotiator@1.0.0", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="], 614 763 615 - "node-gyp": ["node-gyp@10.0.1", "", { "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", "glob": "^10.3.10", "graceful-fs": "^4.2.6", "make-fetch-happen": "^13.0.0", "nopt": "^7.0.0", "proc-log": "^3.0.0", "semver": "^7.3.5", "tar": "^6.1.2", "which": "^4.0.0" }, "bin": { "node-gyp": "bin/node-gyp.js" } }, "sha512-gg3/bHehQfZivQVfqIyy8wTdSymF9yTyP4CJifK73imyNMU8AIGQE2pUa7dNWfmMeG9cDVF2eehiRMv0LC1iAg=="], 764 + "node-gyp": ["node-gyp@12.1.0", "", { "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", "graceful-fs": "^4.2.6", "make-fetch-happen": "^15.0.0", "nopt": "^9.0.0", "proc-log": "^6.0.0", "semver": "^7.3.5", "tar": "^7.5.2", "tinyglobby": "^0.2.12", "which": "^6.0.0" }, "bin": { "node-gyp": "bin/node-gyp.js" } }, "sha512-W+RYA8jBnhSr2vrTtlPYPc1K+CSjGpVDRZxcqJcERZ8ND3A1ThWPHRwctTx3qC3oW99jt726jhdz3Y6ky87J4g=="], 616 765 617 - "nopt": ["nopt@7.2.0", "", { "dependencies": { "abbrev": "^2.0.0" }, "bin": { "nopt": "bin/nopt.js" } }, "sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA=="], 766 + "nopt": ["nopt@9.0.0", "", { "dependencies": { "abbrev": "^4.0.0" }, "bin": { "nopt": "bin/nopt.js" } }, "sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw=="], 618 767 619 768 "normalize-package-data": ["normalize-package-data@6.0.0", "", { "dependencies": { "hosted-git-info": "^7.0.0", "is-core-module": "^2.8.1", "semver": "^7.3.5", "validate-npm-package-license": "^3.0.4" } }, "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg=="], 620 769 621 770 "normalize-url": ["normalize-url@6.1.0", "", {}, "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A=="], 622 771 623 - "npm-bundled": ["npm-bundled@3.0.0", "", { "dependencies": { "npm-normalize-package-bin": "^3.0.0" } }, "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ=="], 772 + "npm-bundled": ["npm-bundled@5.0.0", "", { "dependencies": { "npm-normalize-package-bin": "^5.0.0" } }, "sha512-JLSpbzh6UUXIEoqPsYBvVNVmyrjVZ1fzEFbqxKkTJQkWBO3xFzFT+KDnSKQWwOQNbuWRwt5LSD6HOTLGIWzfrw=="], 624 773 625 - "npm-install-checks": ["npm-install-checks@6.3.0", "", { "dependencies": { "semver": "^7.1.1" } }, "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw=="], 774 + "npm-install-checks": ["npm-install-checks@8.0.0", "", { "dependencies": { "semver": "^7.1.1" } }, "sha512-ScAUdMpyzkbpxoNekQ3tNRdFI8SJ86wgKZSQZdUxT+bj0wVFpsEMWnkXP0twVe1gJyNF5apBWDJhhIbgrIViRA=="], 626 775 627 - "npm-normalize-package-bin": ["npm-normalize-package-bin@3.0.1", "", {}, "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ=="], 776 + "npm-normalize-package-bin": ["npm-normalize-package-bin@5.0.0", "", {}, "sha512-CJi3OS4JLsNMmr2u07OJlhcrPxCeOeP/4xq67aWNai6TNWWbTrlNDgl8NcFKVlcBKp18GPj+EzbNIgrBfZhsag=="], 628 777 629 - "npm-package-arg": ["npm-package-arg@11.0.2", "", { "dependencies": { "hosted-git-info": "^7.0.0", "proc-log": "^4.0.0", "semver": "^7.3.5", "validate-npm-package-name": "^5.0.0" } }, "sha512-IGN0IAwmhDJwy13Wc8k+4PEbTPhpJnMtfR53ZbOyjkvmEcLS4nCwp6mvMWjS5sUjeiW3mpx6cHmuhKEu9XmcQw=="], 778 + "npm-package-arg": ["npm-package-arg@13.0.2", "", { "dependencies": { "hosted-git-info": "^9.0.0", "proc-log": "^6.0.0", "semver": "^7.3.5", "validate-npm-package-name": "^7.0.0" } }, "sha512-IciCE3SY3uE84Ld8WZU23gAPPV9rIYod4F+rc+vJ7h7cwAJt9Vk6TVsK60ry7Uj3SRS3bqRRIGuTp9YVlk6WNA=="], 630 779 631 - "npm-packlist": ["npm-packlist@8.0.2", "", { "dependencies": { "ignore-walk": "^6.0.4" } }, "sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA=="], 780 + "npm-packlist": ["npm-packlist@10.0.3", "", { "dependencies": { "ignore-walk": "^8.0.0", "proc-log": "^6.0.0" } }, "sha512-zPukTwJMOu5X5uvm0fztwS5Zxyvmk38H/LfidkOMt3gbZVCyro2cD/ETzwzVPcWZA3JOyPznfUN/nkyFiyUbxg=="], 632 781 633 - "npm-pick-manifest": ["npm-pick-manifest@9.0.0", "", { "dependencies": { "npm-install-checks": "^6.0.0", "npm-normalize-package-bin": "^3.0.0", "npm-package-arg": "^11.0.0", "semver": "^7.3.5" } }, "sha512-VfvRSs/b6n9ol4Qb+bDwNGUXutpy76x6MARw/XssevE0TnctIKcmklJZM5Z7nqs5z5aW+0S63pgCNbpkUNNXBg=="], 782 + "npm-pick-manifest": ["npm-pick-manifest@11.0.3", "", { "dependencies": { "npm-install-checks": "^8.0.0", "npm-normalize-package-bin": "^5.0.0", "npm-package-arg": "^13.0.0", "semver": "^7.3.5" } }, "sha512-buzyCfeoGY/PxKqmBqn1IUJrZnUi1VVJTdSSRPGI60tJdUhUoSQFhs0zycJokDdOznQentgrpf8LayEHyyYlqQ=="], 634 783 635 - "npm-registry-fetch": ["npm-registry-fetch@16.2.1", "", { "dependencies": { "@npmcli/redact": "^1.1.0", "make-fetch-happen": "^13.0.0", "minipass": "^7.0.2", "minipass-fetch": "^3.0.0", "minipass-json-stream": "^1.0.1", "minizlib": "^2.1.2", "npm-package-arg": "^11.0.0", "proc-log": "^4.0.0" } }, "sha512-8l+7jxhim55S85fjiDGJ1rZXBWGtRLi1OSb4Z3BPLObPuIaeKRlPRiYMSHU4/81ck3t71Z+UwDDl47gcpmfQQA=="], 784 + "npm-registry-fetch": ["npm-registry-fetch@19.1.1", "", { "dependencies": { "@npmcli/redact": "^4.0.0", "jsonparse": "^1.3.1", "make-fetch-happen": "^15.0.0", "minipass": "^7.0.2", "minipass-fetch": "^5.0.0", "minizlib": "^3.0.1", "npm-package-arg": "^13.0.0", "proc-log": "^6.0.0" } }, "sha512-TakBap6OM1w0H73VZVDf44iFXsOS3h+L4wVMXmbWOQroZgFhMch0juN6XSzBNlD965yIKvWg2dfu7NSiaYLxtw=="], 636 785 637 786 "npm-run-path": ["npm-run-path@4.0.1", "", { "dependencies": { "path-key": "^3.0.0" } }, "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw=="], 638 787 ··· 644 793 645 794 "optionator": ["optionator@0.9.4", "", { "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", "word-wrap": "^1.2.5" } }, "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g=="], 646 795 796 + "oxc-parser": ["oxc-parser@0.99.0", "", { "dependencies": { "@oxc-project/types": "^0.99.0" }, "optionalDependencies": { "@oxc-parser/binding-android-arm64": "0.99.0", "@oxc-parser/binding-darwin-arm64": "0.99.0", "@oxc-parser/binding-darwin-x64": "0.99.0", "@oxc-parser/binding-freebsd-x64": "0.99.0", "@oxc-parser/binding-linux-arm-gnueabihf": "0.99.0", "@oxc-parser/binding-linux-arm-musleabihf": "0.99.0", "@oxc-parser/binding-linux-arm64-gnu": "0.99.0", "@oxc-parser/binding-linux-arm64-musl": "0.99.0", "@oxc-parser/binding-linux-riscv64-gnu": "0.99.0", "@oxc-parser/binding-linux-s390x-gnu": "0.99.0", "@oxc-parser/binding-linux-x64-gnu": "0.99.0", "@oxc-parser/binding-linux-x64-musl": "0.99.0", "@oxc-parser/binding-wasm32-wasi": "0.99.0", "@oxc-parser/binding-win32-arm64-msvc": "0.99.0", "@oxc-parser/binding-win32-x64-msvc": "0.99.0" } }, "sha512-MpS1lbd2vR0NZn1v0drpgu7RUFu3x9Rd0kxExObZc2+F+DIrV0BOMval/RO3BYGwssIOerII6iS8EbbpCCZQpQ=="], 797 + 798 + "oxfmt": ["oxfmt@0.36.0", "", { "dependencies": { "tinypool": "2.1.0" }, "optionalDependencies": { "@oxfmt/binding-android-arm-eabi": "0.36.0", "@oxfmt/binding-android-arm64": "0.36.0", "@oxfmt/binding-darwin-arm64": "0.36.0", "@oxfmt/binding-darwin-x64": "0.36.0", "@oxfmt/binding-freebsd-x64": "0.36.0", "@oxfmt/binding-linux-arm-gnueabihf": "0.36.0", "@oxfmt/binding-linux-arm-musleabihf": "0.36.0", "@oxfmt/binding-linux-arm64-gnu": "0.36.0", "@oxfmt/binding-linux-arm64-musl": "0.36.0", "@oxfmt/binding-linux-ppc64-gnu": "0.36.0", "@oxfmt/binding-linux-riscv64-gnu": "0.36.0", "@oxfmt/binding-linux-riscv64-musl": "0.36.0", "@oxfmt/binding-linux-s390x-gnu": "0.36.0", "@oxfmt/binding-linux-x64-gnu": "0.36.0", "@oxfmt/binding-linux-x64-musl": "0.36.0", "@oxfmt/binding-openharmony-arm64": "0.36.0", "@oxfmt/binding-win32-arm64-msvc": "0.36.0", "@oxfmt/binding-win32-ia32-msvc": "0.36.0", "@oxfmt/binding-win32-x64-msvc": "0.36.0" }, "bin": { "oxfmt": "bin/oxfmt" } }, "sha512-/ejJ+KoSW6J9bcNT9a9UtJSJNWhJ3yOLSBLbkoFHJs/8CZjmaZVZAJe4YgO1KMJlKpNQasrn/G9JQUEZI3p0EQ=="], 799 + 800 + "oxlint": ["oxlint@1.51.0", "", { "optionalDependencies": { "@oxlint/binding-android-arm-eabi": "1.51.0", "@oxlint/binding-android-arm64": "1.51.0", "@oxlint/binding-darwin-arm64": "1.51.0", "@oxlint/binding-darwin-x64": "1.51.0", "@oxlint/binding-freebsd-x64": "1.51.0", "@oxlint/binding-linux-arm-gnueabihf": "1.51.0", "@oxlint/binding-linux-arm-musleabihf": "1.51.0", "@oxlint/binding-linux-arm64-gnu": "1.51.0", "@oxlint/binding-linux-arm64-musl": "1.51.0", "@oxlint/binding-linux-ppc64-gnu": "1.51.0", "@oxlint/binding-linux-riscv64-gnu": "1.51.0", "@oxlint/binding-linux-riscv64-musl": "1.51.0", "@oxlint/binding-linux-s390x-gnu": "1.51.0", "@oxlint/binding-linux-x64-gnu": "1.51.0", "@oxlint/binding-linux-x64-musl": "1.51.0", "@oxlint/binding-openharmony-arm64": "1.51.0", "@oxlint/binding-win32-arm64-msvc": "1.51.0", "@oxlint/binding-win32-ia32-msvc": "1.51.0", "@oxlint/binding-win32-x64-msvc": "1.51.0" }, "peerDependencies": { "oxlint-tsgolint": ">=0.15.0" }, "optionalPeers": ["oxlint-tsgolint"], "bin": { "oxlint": "bin/oxlint" } }, "sha512-g6DNPaV9/WI9MoX2XllafxQuxwY1TV++j7hP8fTJByVBuCoVtm3dy9f/2vtH/HU40JztcgWF4G7ua+gkainklQ=="], 801 + 802 + "oxlint-tsgolint": ["oxlint-tsgolint@0.16.0", "", { "optionalDependencies": { "@oxlint-tsgolint/darwin-arm64": "0.16.0", "@oxlint-tsgolint/darwin-x64": "0.16.0", "@oxlint-tsgolint/linux-arm64": "0.16.0", "@oxlint-tsgolint/linux-x64": "0.16.0", "@oxlint-tsgolint/win32-arm64": "0.16.0", "@oxlint-tsgolint/win32-x64": "0.16.0" }, "bin": { "tsgolint": "bin/tsgolint.js" } }, "sha512-4RuJK2jP08XwqtUu+5yhCbxEauCm6tv2MFHKEMsjbosK2+vy5us82oI3VLuHwbNyZG7ekZA26U2LLHnGR4frIA=="], 803 + 647 804 "p-cancelable": ["p-cancelable@2.1.1", "", {}, "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg=="], 648 805 649 806 "p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="], 650 807 651 808 "p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "^3.0.2" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="], 652 809 653 - "p-map": ["p-map@4.0.0", "", { "dependencies": { "aggregate-error": "^3.0.0" } }, "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ=="], 810 + "p-map": ["p-map@7.0.4", "", {}, "sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ=="], 654 811 655 - "pacote": ["pacote@17.0.7", "", { "dependencies": { "@npmcli/git": "^5.0.0", "@npmcli/installed-package-contents": "^2.0.1", "@npmcli/promise-spawn": "^7.0.0", "@npmcli/run-script": "^7.0.0", "cacache": "^18.0.0", "fs-minipass": "^3.0.0", "minipass": "^7.0.2", "npm-package-arg": "^11.0.0", "npm-packlist": "^8.0.0", "npm-pick-manifest": "^9.0.0", "npm-registry-fetch": "^16.0.0", "proc-log": "^4.0.0", "promise-retry": "^2.0.1", "read-package-json": "^7.0.0", "read-package-json-fast": "^3.0.0", "sigstore": "^2.2.0", "ssri": "^10.0.0", "tar": "^6.1.11" }, "bin": { "pacote": "lib/bin.js" } }, "sha512-sgvnoUMlkv9xHwDUKjKQFXVyUi8dtJGKp3vg6sYy+TxbDic5RjZCHF3ygv0EJgNRZ2GfRONjlKPUfokJ9lDpwQ=="], 812 + "package-directory": ["package-directory@8.1.0", "", { "dependencies": { "find-up-simple": "^1.0.0" } }, "sha512-qHKRW0pw3lYdZMQVkjDBqh8HlamH/LCww2PH7OWEp4Qrt3SFeYMNpnJrQzlSnGrDD5zGR51XqBh7FnNCdVNEHA=="], 656 813 657 - "parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="], 814 + "pacote": ["pacote@21.0.4", "", { "dependencies": { "@npmcli/git": "^7.0.0", "@npmcli/installed-package-contents": "^4.0.0", "@npmcli/package-json": "^7.0.0", "@npmcli/promise-spawn": "^9.0.0", "@npmcli/run-script": "^10.0.0", "cacache": "^20.0.0", "fs-minipass": "^3.0.0", "minipass": "^7.0.2", "npm-package-arg": "^13.0.0", "npm-packlist": "^10.0.1", "npm-pick-manifest": "^11.0.1", "npm-registry-fetch": "^19.0.0", "proc-log": "^6.0.0", "promise-retry": "^2.0.1", "sigstore": "^4.0.0", "ssri": "^13.0.0", "tar": "^7.4.3" }, "bin": { "pacote": "bin/index.js" } }, "sha512-RplP/pDW0NNNDh3pnaoIWYPvNenS7UqMbXyvMqJczosiFWTeGGwJC2NQBLqKf4rGLFfwCOnntw1aEp9Jiqm1MA=="], 658 815 659 - "parse-conflict-json": ["parse-conflict-json@3.0.1", "", { "dependencies": { "json-parse-even-better-errors": "^3.0.0", "just-diff": "^6.0.0", "just-diff-apply": "^5.2.0" } }, "sha512-01TvEktc68vwbJOtWZluyWeVGWjP+bZwXtPDMQVbBKzbJ/vZBif0L69KH1+cHv1SZ6e0FKLvjyHe8mqsIqYOmw=="], 816 + "parse-conflict-json": ["parse-conflict-json@5.0.1", "", { "dependencies": { "json-parse-even-better-errors": "^5.0.0", "just-diff": "^6.0.0", "just-diff-apply": "^5.2.0" } }, "sha512-ZHEmNKMq1wyJXNwLxyHnluPfRAFSIliBvbK/UiOceROt4Xh9Pz0fq49NytIaeaCUf5VR86hwQ/34FCcNU5/LKQ=="], 660 817 661 818 "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="], 662 819 ··· 664 821 665 822 "path-parse": ["path-parse@1.0.7", "", {}, "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="], 666 823 667 - "path-scurry": ["path-scurry@1.10.2", "", { "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA=="], 824 + "path-scurry": ["path-scurry@2.0.1", "", { "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" } }, "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA=="], 668 825 669 826 "picomatch": ["picomatch@3.0.1", "", {}, "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag=="], 670 827 671 - "pkg-dir": ["pkg-dir@7.0.0", "", { "dependencies": { "find-up": "^6.3.0" } }, "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA=="], 828 + "postcss-selector-parser": ["postcss-selector-parser@7.1.1", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg=="], 829 + 830 + "prelude-ls": ["prelude-ls@1.2.1", "", {}, "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="], 672 831 673 - "postcss-selector-parser": ["postcss-selector-parser@6.0.15", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw=="], 832 + "prettier": ["prettier@3.8.1", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg=="], 674 833 675 - "prelude-ls": ["prelude-ls@1.2.1", "", {}, "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="], 834 + "proc-log": ["proc-log@6.1.0", "", {}, "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ=="], 676 835 677 - "proc-log": ["proc-log@3.0.0", "", {}, "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A=="], 836 + "proggy": ["proggy@4.0.0", "", {}, "sha512-MbA4R+WQT76ZBm/5JUpV9yqcJt92175+Y0Bodg3HgiXzrmKu7Ggq+bpn6y6wHH+gN9NcyKn3yg1+d47VaKwNAQ=="], 678 837 679 838 "promise-all-reject-late": ["promise-all-reject-late@1.0.1", "", {}, "sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw=="], 680 839 ··· 694 853 695 854 "quick-lru": ["quick-lru@5.1.1", "", {}, "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA=="], 696 855 697 - "read-cmd-shim": ["read-cmd-shim@4.0.0", "", {}, "sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q=="], 856 + "read-cmd-shim": ["read-cmd-shim@6.0.0", "", {}, "sha512-1zM5HuOfagXCBWMN83fuFI/x+T/UhZ7k+KIzhrHXcQoeX5+7gmaDYjELQHmmzIodumBHeByBJT4QYS7ufAgs7A=="], 698 857 699 858 "read-package-json": ["read-package-json@7.0.0", "", { "dependencies": { "glob": "^10.2.2", "json-parse-even-better-errors": "^3.0.0", "normalize-package-data": "^6.0.0", "npm-normalize-package-bin": "^3.0.0" } }, "sha512-uL4Z10OKV4p6vbdvIXB+OzhInYtIozl/VxUBPgNkBuUi2DeRonnuspmaVAMcrkmfjKGNmRndyQAbE7/AmzGwFg=="], 700 859 ··· 709 868 "resolve": ["resolve@1.22.8", "", { "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw=="], 710 869 711 870 "resolve-alpn": ["resolve-alpn@1.2.1", "", {}, "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g=="], 712 - 713 - "resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="], 714 871 715 872 "resolve-pkg-maps": ["resolve-pkg-maps@1.0.0", "", {}, "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw=="], 716 873 ··· 736 893 737 894 "signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="], 738 895 739 - "sigstore": ["sigstore@2.3.0", "", { "dependencies": { "@sigstore/bundle": "^2.3.1", "@sigstore/core": "^1.0.0", "@sigstore/protobuf-specs": "^0.3.1", "@sigstore/sign": "^2.3.0", "@sigstore/tuf": "^2.3.1", "@sigstore/verify": "^1.2.0" } }, "sha512-q+o8L2ebiWD1AxD17eglf1pFrl9jtW7FHa0ygqY6EKvibK8JHyq9Z26v9MZXeDiw+RbfOJ9j2v70M10Hd6E06A=="], 896 + "sigstore": ["sigstore@4.1.0", "", { "dependencies": { "@sigstore/bundle": "^4.0.0", "@sigstore/core": "^3.1.0", "@sigstore/protobuf-specs": "^0.5.0", "@sigstore/sign": "^4.1.0", "@sigstore/tuf": "^4.0.1", "@sigstore/verify": "^3.1.0" } }, "sha512-/fUgUhYghuLzVT/gaJoeVehLCgZiUxPCPMcyVNY0lIf/cTCz58K/WTI7PefDarXxp9nUKpEwg1yyz3eSBMTtgA=="], 740 897 741 898 "smart-buffer": ["smart-buffer@4.2.0", "", {}, "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="], 742 899 743 - "socks": ["socks@2.8.1", "", { "dependencies": { "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" } }, "sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ=="], 900 + "socks": ["socks@2.8.7", "", { "dependencies": { "ip-address": "^10.0.1", "smart-buffer": "^4.2.0" } }, "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A=="], 744 901 745 - "socks-proxy-agent": ["socks-proxy-agent@8.0.2", "", { "dependencies": { "agent-base": "^7.0.2", "debug": "^4.3.4", "socks": "^2.7.1" } }, "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g=="], 902 + "socks-proxy-agent": ["socks-proxy-agent@8.0.5", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", "socks": "^2.8.3" } }, "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw=="], 746 903 747 904 "source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], 748 905 ··· 758 915 759 916 "sprintf-js": ["sprintf-js@1.0.3", "", {}, "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="], 760 917 761 - "ssri": ["ssri@10.0.5", "", { "dependencies": { "minipass": "^7.0.3" } }, "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A=="], 918 + "ssri": ["ssri@13.0.0", "", { "dependencies": { "minipass": "^7.0.3" } }, "sha512-yizwGBpbCn4YomB2lzhZqrHLJoqFGXihNbib3ozhqF/cIp5ue+xSmOQrjNasEE62hFxsCcg/V/z23t4n8jMEng=="], 762 919 763 920 "string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], 764 921 ··· 770 927 771 928 "strip-final-newline": ["strip-final-newline@2.0.0", "", {}, "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA=="], 772 929 773 - "strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="], 930 + "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="], 774 931 775 - "supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], 932 + "tar": ["tar@7.5.6", "", { "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", "minipass": "^7.1.2", "minizlib": "^3.1.0", "yallist": "^5.0.0" } }, "sha512-xqUeu2JAIJpXyvskvU3uvQW8PAmHrtXp2KDuMJwQqW8Sqq0CaZBAQ+dKS3RBXVhU4wC5NjAdKrmh84241gO9cA=="], 776 933 777 - "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="], 934 + "tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="], 778 935 779 - "tar": ["tar@6.2.0", "", { "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-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ=="], 936 + "tinypool": ["tinypool@2.1.0", "", {}, "sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw=="], 780 937 781 938 "tmp": ["tmp@0.2.5", "", {}, "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow=="], 782 939 ··· 788 945 789 946 "ts-node": ["ts-node@10.9.2", "", { "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", "@tsconfig/node12": "^1.0.7", "@tsconfig/node14": "^1.0.0", "@tsconfig/node16": "^1.0.2", "acorn": "^8.4.1", "acorn-walk": "^8.1.1", "arg": "^4.1.0", "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", "v8-compile-cache-lib": "^3.0.1", "yn": "3.1.1" }, "peerDependencies": { "@swc/core": ">=1.2.50", "@swc/wasm": ">=1.2.50", "@types/node": "*", "typescript": ">=2.7" }, "optionalPeers": ["@swc/core", "@swc/wasm"], "bin": { "ts-node": "dist/bin.js", "ts-node-cwd": "dist/bin-cwd.js", "ts-node-esm": "dist/bin-esm.js", "ts-node-script": "dist/bin-script.js", "ts-node-transpile-only": "dist/bin-transpile.js", "ts-script": "dist/bin-script-deprecated.js" } }, "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ=="], 790 947 791 - "tsx": ["tsx@4.20.5", "", { "dependencies": { "esbuild": "~0.25.0", "get-tsconfig": "^4.7.5" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "bin": { "tsx": "dist/cli.mjs" } }, "sha512-+wKjMNU9w/EaQayHXb7WA7ZaHY6hN8WgfvHNQ3t1PnU91/7O8TcTnIhCDYTZwnt8JsO9IBqZ30Ln1r7pPF52Aw=="], 948 + "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], 949 + 950 + "tsx": ["tsx@4.21.0", "", { "dependencies": { "esbuild": "~0.27.0", "get-tsconfig": "^4.7.5" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "bin": { "tsx": "dist/cli.mjs" } }, "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw=="], 792 951 793 - "tuf-js": ["tuf-js@2.2.0", "", { "dependencies": { "@tufjs/models": "2.0.0", "debug": "^4.3.4", "make-fetch-happen": "^13.0.0" } }, "sha512-ZSDngmP1z6zw+FIkIBjvOp/II/mIub/O7Pp12j1WNsiCpg5R5wAc//i555bBQsE44O94btLt0xM/Zr2LQjwdCg=="], 952 + "tuf-js": ["tuf-js@4.1.0", "", { "dependencies": { "@tufjs/models": "4.1.0", "debug": "^4.4.3", "make-fetch-happen": "^15.0.1" } }, "sha512-50QV99kCKH5P/Vs4E2Gzp7BopNV+KzTXqWeaxrfu5IQJBOULRsTIS9seSsOVT8ZnGXzCyx55nYWAi4qJzpZKEQ=="], 794 953 795 954 "type-check": ["type-check@0.4.0", "", { "dependencies": { "prelude-ls": "^1.2.1" } }, "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="], 796 955 797 - "typescript": ["typescript@5.9.2", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A=="], 956 + "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], 798 957 799 - "typescript-eslint": ["typescript-eslint@8.44.0", "", { "dependencies": { "@typescript-eslint/eslint-plugin": "8.44.0", "@typescript-eslint/parser": "8.44.0", "@typescript-eslint/typescript-estree": "8.44.0", "@typescript-eslint/utils": "8.44.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-ib7mCkYuIzYonCq9XWF5XNw+fkj2zg629PSa9KNIQ47RXFF763S5BIX4wqz1+FLPogTZoiw8KmCiRPRa8bL3qw=="], 958 + "undici": ["undici@7.22.0", "", {}, "sha512-RqslV2Us5BrllB+JeiZnK4peryVTndy9Dnqq62S3yYRRTj0tFQCwEniUy2167skdGOy3vqRzEvl1Dm4sV2ReDg=="], 800 959 801 - "undici": ["undici@7.16.0", "", {}, "sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g=="], 960 + "undici-types": ["undici-types@7.18.2", "", {}, "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w=="], 802 961 803 - "undici-types": ["undici-types@7.12.0", "", {}, "sha512-goOacqME2GYyOZZfb5Lgtu+1IDmAlAEu5xnD3+xTzS10hT0vzpf0SPjkXwAw9Jm+4n/mQGDP3LO8CPbYROeBfQ=="], 962 + "unique-filename": ["unique-filename@5.0.0", "", { "dependencies": { "unique-slug": "^6.0.0" } }, "sha512-2RaJTAvAb4owyjllTfXzFClJ7WsGxlykkPvCr9pA//LD9goVq+m4PPAeBgNodGZ7nSrntT/auWpJ6Y5IFXcfjg=="], 804 963 805 - "unique-filename": ["unique-filename@3.0.0", "", { "dependencies": { "unique-slug": "^4.0.0" } }, "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g=="], 964 + "unique-slug": ["unique-slug@6.0.0", "", { "dependencies": { "imurmurhash": "^0.1.4" } }, "sha512-4Lup7Ezn8W3d52/xBhZBVdx323ckxa7DEvd9kPQHppTkLoJXw6ltrBCyj5pnrxj0qKDxYMJ56CoxNuFCscdTiw=="], 806 965 807 - "unique-slug": ["unique-slug@4.0.0", "", { "dependencies": { "imurmurhash": "^0.1.4" } }, "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ=="], 808 - 809 - "up-fetch": ["up-fetch@2.4.0", "", {}, "sha512-Gw+8wyOpZD0Nl/frqdmj+SCH95xGNR9q6htH5qhPdKt8Xbz4yiWEVRg+NHufKDQuOdS7w+I2iNeoW/RJdnPCWA=="], 966 + "up-fetch": ["up-fetch@2.5.1", "", {}, "sha512-/qKHjEMJ9tjWdEmV7OWBQLM8XqEltTQxy9k4Q83ySw+aMm97MtO+hK+5dhWxn8v9Z4qfkJ7DyYrKWkfglJioEA=="], 810 967 811 968 "upath": ["upath@1.2.0", "", {}, "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg=="], 812 969 ··· 818 975 819 976 "validate-npm-package-license": ["validate-npm-package-license@3.0.4", "", { "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" } }, "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew=="], 820 977 821 - "validate-npm-package-name": ["validate-npm-package-name@5.0.0", "", { "dependencies": { "builtins": "^5.0.0" } }, "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ=="], 978 + "validate-npm-package-name": ["validate-npm-package-name@7.0.2", "", {}, "sha512-hVDIBwsRruT73PbK7uP5ebUt+ezEtCmzZz3F59BSr2F6OVFnJ/6h8liuvdLrQ88Xmnk6/+xGGuq+pG9WwTuy3A=="], 822 979 823 - "walk-up-path": ["walk-up-path@3.0.1", "", {}, "sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA=="], 980 + "walk-up-path": ["walk-up-path@4.0.0", "", {}, "sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A=="], 824 981 825 - "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], 982 + "which": ["which@6.0.0", "", { "dependencies": { "isexe": "^3.1.1" }, "bin": { "node-which": "bin/which.js" } }, "sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg=="], 826 983 827 984 "wide-align": ["wide-align@1.1.5", "", { "dependencies": { "string-width": "^1.0.2 || 2 || 3 || 4" } }, "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg=="], 828 985 ··· 834 991 835 992 "wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="], 836 993 837 - "write-file-atomic": ["write-file-atomic@5.0.1", "", { "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^4.0.1" } }, "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw=="], 994 + "write-file-atomic": ["write-file-atomic@7.0.0", "", { "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^4.0.1" } }, "sha512-YnlPC6JqnZl6aO4uRc+dx5PHguiR9S6WeoLtpxNT9wIG+BDya7ZNE1q7KOjVgaA73hKhKLpVPgJ5QA9THQ5BRg=="], 838 995 839 996 "y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="], 840 997 ··· 848 1005 849 1006 "yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], 850 1007 851 - "zod": ["zod@4.1.8", "", {}, "sha512-5R1P+WwQqmmMIEACyzSvo4JXHY5WiAFHRMg+zBZKgKS+Q1viRa0C1hmUKtHltoIFKtIdki3pRxkmpP74jnNYHQ=="], 852 - 853 - "@eslint-community/eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], 1008 + "zod": ["zod@4.3.6", "", {}, "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg=="], 854 1009 855 - "@eslint/eslintrc/js-yaml": ["js-yaml@4.1.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA=="], 1010 + "@eslint/config-array/debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], 856 1011 857 1012 "@humanfs/node/@humanwhocodes/retry": ["@humanwhocodes/retry@0.3.1", "", {}, "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA=="], 858 1013 ··· 862 1017 863 1018 "@isaacs/cliui/wrap-ansi": ["wrap-ansi@8.1.0", "", { "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="], 864 1019 865 - "@npmcli/agent/lru-cache": ["lru-cache@10.2.0", "", {}, "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q=="], 1020 + "@isaacs/fs-minipass/minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="], 866 1021 867 - "@npmcli/arborist/minimatch": ["minimatch@9.0.4", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw=="], 1022 + "@npmcli/arborist/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], 868 1023 869 - "@npmcli/arborist/semver": ["semver@7.6.0", "", { "dependencies": { "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" } }, "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg=="], 1024 + "@npmcli/fs/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], 870 1025 871 - "@npmcli/fs/semver": ["semver@7.6.0", "", { "dependencies": { "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" } }, "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg=="], 1026 + "@npmcli/git/ini": ["ini@6.0.0", "", {}, "sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ=="], 872 1027 873 - "@npmcli/git/lru-cache": ["lru-cache@10.2.0", "", {}, "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q=="], 1028 + "@npmcli/git/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], 874 1029 875 - "@npmcli/git/proc-log": ["proc-log@4.1.0", "", {}, "sha512-dmQ2iPw2nJMi9/4dpaG1wd0m1GE+K5kW7RGbjy5hoEEGnhPIzsm+klBO5RGGdcoYbWsNtU2KSNAdEldts+icLg=="], 1030 + "@npmcli/metavuln-calculator/json-parse-even-better-errors": ["json-parse-even-better-errors@5.0.0", "", {}, "sha512-ZF1nxZ28VhQouRWhUcVlUIN3qwSgPuswK05s/HIaoetAoE/9tngVmCHjSxmSQPav1nd+lPtTL0YZ/2AFdR/iYQ=="], 876 1031 877 - "@npmcli/git/semver": ["semver@7.6.0", "", { "dependencies": { "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" } }, "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg=="], 1032 + "@npmcli/metavuln-calculator/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], 878 1033 879 - "@npmcli/git/which": ["which@4.0.0", "", { "dependencies": { "isexe": "^3.1.1" }, "bin": { "node-which": "bin/which.js" } }, "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg=="], 1034 + "@npmcli/package-json/json-parse-even-better-errors": ["json-parse-even-better-errors@5.0.0", "", {}, "sha512-ZF1nxZ28VhQouRWhUcVlUIN3qwSgPuswK05s/HIaoetAoE/9tngVmCHjSxmSQPav1nd+lPtTL0YZ/2AFdR/iYQ=="], 880 1035 881 - "@npmcli/map-workspaces/minimatch": ["minimatch@9.0.4", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw=="], 1036 + "@npmcli/package-json/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], 882 1037 883 - "@npmcli/metavuln-calculator/pacote": ["pacote@18.0.0", "", { "dependencies": { "@npmcli/git": "^5.0.0", "@npmcli/installed-package-contents": "^2.0.1", "@npmcli/promise-spawn": "^7.0.0", "@npmcli/run-script": "^8.0.0", "cacache": "^18.0.0", "fs-minipass": "^3.0.0", "minipass": "^7.0.2", "npm-package-arg": "^11.0.0", "npm-packlist": "^8.0.0", "npm-pick-manifest": "^9.0.0", "npm-registry-fetch": "^16.0.0", "proc-log": "^4.0.0", "promise-retry": "^2.0.1", "read-package-json": "^7.0.0", "read-package-json-fast": "^3.0.0", "sigstore": "^2.2.0", "ssri": "^10.0.0", "tar": "^6.1.11" }, "bin": { "pacote": "lib/bin.js" } }, "sha512-ma7uVt/q3Sb3XbLwUjOeClz+7feHjMOFegHn5whw++x+GzikZkAq/2auklSbRuy6EI2iJh1/ZqCpVaUcxRaeqQ=="], 1038 + "@opentelemetry/core/@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.27.0", "", {}, "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg=="], 884 1039 885 - "@npmcli/metavuln-calculator/proc-log": ["proc-log@4.1.0", "", {}, "sha512-dmQ2iPw2nJMi9/4dpaG1wd0m1GE+K5kW7RGbjy5hoEEGnhPIzsm+klBO5RGGdcoYbWsNtU2KSNAdEldts+icLg=="], 1040 + "@opentelemetry/exporter-trace-otlp-grpc/@opentelemetry/resources": ["@opentelemetry/resources@1.28.0", "", { "dependencies": { "@opentelemetry/core": "1.28.0", "@opentelemetry/semantic-conventions": "1.27.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw=="], 886 1041 887 - "@npmcli/metavuln-calculator/semver": ["semver@7.6.0", "", { "dependencies": { "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" } }, "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg=="], 1042 + "@opentelemetry/exporter-trace-otlp-grpc/@opentelemetry/sdk-trace-base": ["@opentelemetry/sdk-trace-base@1.28.0", "", { "dependencies": { "@opentelemetry/core": "1.28.0", "@opentelemetry/resources": "1.28.0", "@opentelemetry/semantic-conventions": "1.27.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-ceUVWuCpIao7Y5xE02Xs3nQi0tOGmMea17ecBdwtCvdo9ekmO+ijc9RFDgfifMl7XCBf41zne/1POM3LqSTZDA=="], 888 1043 889 - "@npmcli/package-json/proc-log": ["proc-log@4.1.0", "", {}, "sha512-dmQ2iPw2nJMi9/4dpaG1wd0m1GE+K5kW7RGbjy5hoEEGnhPIzsm+klBO5RGGdcoYbWsNtU2KSNAdEldts+icLg=="], 1044 + "@opentelemetry/exporter-zipkin/@opentelemetry/core": ["@opentelemetry/core@1.30.1", "", { "dependencies": { "@opentelemetry/semantic-conventions": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ=="], 890 1045 891 - "@npmcli/package-json/semver": ["semver@7.6.0", "", { "dependencies": { "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" } }, "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg=="], 1046 + "@opentelemetry/instrumentation/semver": ["semver@7.6.0", "", { "dependencies": { "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" } }, "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg=="], 892 1047 893 - "@npmcli/promise-spawn/which": ["which@4.0.0", "", { "dependencies": { "isexe": "^3.1.1" }, "bin": { "node-which": "bin/which.js" } }, "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg=="], 1048 + "@opentelemetry/instrumentation-grpc/@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.27.0", "", {}, "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg=="], 894 1049 895 - "@npmcli/run-script/@npmcli/package-json": ["@npmcli/package-json@5.0.0", "", { "dependencies": { "@npmcli/git": "^5.0.0", "glob": "^10.2.2", "hosted-git-info": "^7.0.0", "json-parse-even-better-errors": "^3.0.0", "normalize-package-data": "^6.0.0", "proc-log": "^3.0.0", "semver": "^7.5.3" } }, "sha512-OI2zdYBLhQ7kpNPaJxiflofYIpkNLi+lnGdzqUOfRmCF3r2l1nadcjtCYMJKv/Utm/ZtlffaUuTiAktPHbc17g=="], 1050 + "@opentelemetry/otlp-transformer/@opentelemetry/resources": ["@opentelemetry/resources@1.28.0", "", { "dependencies": { "@opentelemetry/core": "1.28.0", "@opentelemetry/semantic-conventions": "1.27.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw=="], 896 1051 897 - "@npmcli/run-script/which": ["which@4.0.0", "", { "dependencies": { "isexe": "^3.1.1" }, "bin": { "node-which": "bin/which.js" } }, "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg=="], 1052 + "@opentelemetry/otlp-transformer/@opentelemetry/sdk-trace-base": ["@opentelemetry/sdk-trace-base@1.28.0", "", { "dependencies": { "@opentelemetry/core": "1.28.0", "@opentelemetry/resources": "1.28.0", "@opentelemetry/semantic-conventions": "1.27.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-ceUVWuCpIao7Y5xE02Xs3nQi0tOGmMea17ecBdwtCvdo9ekmO+ijc9RFDgfifMl7XCBf41zne/1POM3LqSTZDA=="], 898 1053 899 - "@opentelemetry/instrumentation/semver": ["semver@7.6.0", "", { "dependencies": { "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" } }, "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg=="], 1054 + "@opentelemetry/otlp-transformer/protobufjs": ["protobufjs@7.5.4", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", "@protobufjs/codegen": "^2.0.4", "@protobufjs/eventemitter": "^1.1.0", "@protobufjs/fetch": "^1.1.0", "@protobufjs/float": "^1.0.2", "@protobufjs/inquire": "^1.1.0", "@protobufjs/path": "^1.1.2", "@protobufjs/pool": "^1.1.0", "@protobufjs/utf8": "^1.1.0", "@types/node": ">=13.7.0", "long": "^5.0.0" } }, "sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg=="], 900 1055 901 - "@opentelemetry/instrumentation-grpc/@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.27.0", "", {}, "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg=="], 1056 + "@opentelemetry/propagator-b3/@opentelemetry/core": ["@opentelemetry/core@1.30.1", "", { "dependencies": { "@opentelemetry/semantic-conventions": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ=="], 902 1057 903 - "@opentelemetry/sdk-trace-node/semver": ["semver@7.6.0", "", { "dependencies": { "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" } }, "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg=="], 1058 + "@opentelemetry/propagator-jaeger/@opentelemetry/core": ["@opentelemetry/core@1.30.1", "", { "dependencies": { "@opentelemetry/semantic-conventions": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ=="], 904 1059 905 - "@pulumi/eslint-plugin/typescript": ["typescript@5.8.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ=="], 1060 + "@opentelemetry/resources/@opentelemetry/core": ["@opentelemetry/core@1.30.1", "", { "dependencies": { "@opentelemetry/semantic-conventions": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ=="], 906 1061 907 - "@pulumi/pulumi/semver": ["semver@7.6.0", "", { "dependencies": { "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" } }, "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg=="], 1062 + "@opentelemetry/sdk-logs/@opentelemetry/resources": ["@opentelemetry/resources@1.28.0", "", { "dependencies": { "@opentelemetry/core": "1.28.0", "@opentelemetry/semantic-conventions": "1.27.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw=="], 908 1063 909 - "@tufjs/models/minimatch": ["minimatch@9.0.3", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg=="], 1064 + "@opentelemetry/sdk-metrics/@opentelemetry/resources": ["@opentelemetry/resources@1.28.0", "", { "dependencies": { "@opentelemetry/core": "1.28.0", "@opentelemetry/semantic-conventions": "1.27.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw=="], 910 1065 911 - "@types/cacheable-request/@types/node": ["@types/node@20.11.24", "", { "dependencies": { "undici-types": "~5.26.4" } }, "sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long=="], 1066 + "@opentelemetry/sdk-trace-base/@opentelemetry/core": ["@opentelemetry/core@1.30.1", "", { "dependencies": { "@opentelemetry/semantic-conventions": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ=="], 912 1067 913 - "@types/keyv/@types/node": ["@types/node@20.11.24", "", { "dependencies": { "undici-types": "~5.26.4" } }, "sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long=="], 1068 + "@opentelemetry/sdk-trace-node/@opentelemetry/core": ["@opentelemetry/core@1.30.1", "", { "dependencies": { "@opentelemetry/semantic-conventions": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ=="], 914 1069 915 - "@types/responselike/@types/node": ["@types/node@20.11.24", "", { "dependencies": { "undici-types": "~5.26.4" } }, "sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long=="], 1070 + "@opentelemetry/sdk-trace-node/semver": ["semver@7.6.0", "", { "dependencies": { "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" } }, "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg=="], 916 1071 917 - "@typescript-eslint/eslint-plugin/@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.44.0", "", { "dependencies": { "@typescript-eslint/types": "8.44.0", "@typescript-eslint/visitor-keys": "8.44.0" } }, "sha512-87Jv3E+al8wpD+rIdVJm/ItDBe/Im09zXIjFoipOjr5gHUhJmTzfFLuTJ/nPTMc2Srsroy4IBXwcTCHyRR7KzA=="], 1072 + "@pulumi/cloudflare/@pulumi/pulumi": ["@pulumi/pulumi@3.223.0", "", { "dependencies": { "@grpc/grpc-js": "^1.10.1", "@logdna/tail-file": "^2.0.6", "@npmcli/arborist": "^9.0.0", "@opentelemetry/api": "^1.9", "@opentelemetry/exporter-zipkin": "^1.28", "@opentelemetry/instrumentation": "^0.55", "@opentelemetry/instrumentation-grpc": "^0.55", "@opentelemetry/resources": "^1.28", "@opentelemetry/sdk-trace-base": "^1.28", "@opentelemetry/sdk-trace-node": "^1.28", "@types/google-protobuf": "^3.15.5", "@types/semver": "^7.5.6", "@types/tmp": "^0.2.6", "execa": "^5.1.0", "fdir": "^6.5.0", "google-protobuf": "^3.21.4", "got": "^11.8.6", "ini": "^2.0.0", "js-yaml": "^3.14.2", "minimist": "^1.2.6", "normalize-package-data": "^6.0.0", "package-directory": "^8.1.0", "picomatch": "^3.0.1", "require-from-string": "^2.0.1", "semver": "^7.5.2", "source-map-support": "^0.5.6", "tmp": "^0.2.4", "upath": "^1.1.0" }, "peerDependencies": { "ts-node": ">= 7.0.1 < 12", "typescript": ">= 3.8.3 < 6" }, "optionalPeers": ["ts-node", "typescript"] }, "sha512-mPDnQ60a1cWz2ABorH4Qi4fymlpgLGp/pbObVwmsBK+58zQ6OLC2bjYxGzOlo2PFXiTQ91ji8u3QFLKsJEXIrg=="], 918 1073 919 - "@typescript-eslint/eslint-plugin/@typescript-eslint/utils": ["@typescript-eslint/utils@8.44.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", "@typescript-eslint/scope-manager": "8.44.0", "@typescript-eslint/types": "8.44.0", "@typescript-eslint/typescript-estree": "8.44.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-nktOlVcg3ALo0mYlV+L7sWUD58KG4CMj1rb2HUVOO4aL3K/6wcD+NERqd0rrA5Vg06b42YhF6cFxeixsp9Riqg=="], 1074 + "@pulumi/command/@pulumi/pulumi": ["@pulumi/pulumi@3.225.0", "", { "dependencies": { "@grpc/grpc-js": "^1.10.1", "@logdna/tail-file": "^2.0.6", "@npmcli/arborist": "^9.0.0", "@opentelemetry/api": "^1.9", "@opentelemetry/exporter-trace-otlp-grpc": "^0.55", "@opentelemetry/exporter-zipkin": "^1.28", "@opentelemetry/instrumentation": "^0.55", "@opentelemetry/instrumentation-grpc": "^0.55", "@opentelemetry/resources": "^1.28", "@opentelemetry/sdk-trace-base": "^1.28", "@opentelemetry/sdk-trace-node": "^1.28", "@types/google-protobuf": "^3.15.5", "@types/semver": "^7.5.6", "@types/tmp": "^0.2.6", "execa": "^5.1.0", "fdir": "^6.5.0", "google-protobuf": "^3.21.4", "got": "^11.8.6", "ini": "^2.0.0", "js-yaml": "^3.14.2", "minimist": "^1.2.6", "normalize-package-data": "^6.0.0", "package-directory": "^8.1.0", "picomatch": "^3.0.1", "require-from-string": "^2.0.1", "semver": "^7.5.2", "source-map-support": "^0.5.6", "tmp": "^0.2.4", "upath": "^1.1.0" }, "peerDependencies": { "ts-node": ">= 7.0.1 < 12", "typescript": ">= 3.8.3 < 6" }, "optionalPeers": ["ts-node", "typescript"] }, "sha512-dqlc+d7kd6srAEyLxhO/lHRj0AWSvaMYNbP2BWafXZuzqp/2zg0Ro+OPE2/dQbyJQwW3bD250DLzEU94qInlcw=="], 920 1075 921 - "@typescript-eslint/eslint-plugin/ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], 1076 + "@pulumi/docker/@pulumi/pulumi": ["@pulumi/pulumi@3.214.0", "", { "dependencies": { "@grpc/grpc-js": "^1.10.1", "@logdna/tail-file": "^2.0.6", "@npmcli/arborist": "^7.3.1", "@opentelemetry/api": "^1.9", "@opentelemetry/exporter-zipkin": "^1.28", "@opentelemetry/instrumentation": "^0.55", "@opentelemetry/instrumentation-grpc": "^0.55", "@opentelemetry/resources": "^1.28", "@opentelemetry/sdk-trace-base": "^1.28", "@opentelemetry/sdk-trace-node": "^1.28", "@types/google-protobuf": "^3.15.5", "@types/semver": "^7.5.6", "@types/tmp": "^0.2.6", "execa": "^5.1.0", "fdir": "^6.1.1", "google-protobuf": "^3.21.4", "got": "^11.8.6", "ini": "^2.0.0", "js-yaml": "^3.14.2", "minimist": "^1.2.6", "normalize-package-data": "^6.0.0", "package-directory": "^8.1.0", "picomatch": "^3.0.1", "require-from-string": "^2.0.1", "semver": "^7.5.2", "source-map-support": "^0.5.6", "tmp": "^0.2.4", "upath": "^1.1.0" }, "peerDependencies": { "ts-node": ">= 7.0.1 < 12", "typescript": ">= 3.8.3 < 6" }, "optionalPeers": ["ts-node", "typescript"] }, "sha512-5QJnpv8O8dgryzSV6XoWHCYnxADs8EMllwJoRF4AV/TS0YJdaantNSdz+8yie7YdkePfKLfPULoM2BdYllk6Fw=="], 922 1077 923 - "@typescript-eslint/parser/@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.44.0", "", { "dependencies": { "@typescript-eslint/types": "8.44.0", "@typescript-eslint/visitor-keys": "8.44.0" } }, "sha512-87Jv3E+al8wpD+rIdVJm/ItDBe/Im09zXIjFoipOjr5gHUhJmTzfFLuTJ/nPTMc2Srsroy4IBXwcTCHyRR7KzA=="], 1078 + "@pulumi/docker-build/@pulumi/pulumi": ["@pulumi/pulumi@3.220.0", "", { "dependencies": { "@grpc/grpc-js": "^1.10.1", "@logdna/tail-file": "^2.0.6", "@npmcli/arborist": "^9.0.0", "@opentelemetry/api": "^1.9", "@opentelemetry/exporter-zipkin": "^1.28", "@opentelemetry/instrumentation": "^0.55", "@opentelemetry/instrumentation-grpc": "^0.55", "@opentelemetry/resources": "^1.28", "@opentelemetry/sdk-trace-base": "^1.28", "@opentelemetry/sdk-trace-node": "^1.28", "@types/google-protobuf": "^3.15.5", "@types/semver": "^7.5.6", "@types/tmp": "^0.2.6", "execa": "^5.1.0", "fdir": "^6.5.0", "google-protobuf": "^3.21.4", "got": "^11.8.6", "ini": "^2.0.0", "js-yaml": "^3.14.2", "minimist": "^1.2.6", "normalize-package-data": "^6.0.0", "package-directory": "^8.1.0", "picomatch": "^3.0.1", "require-from-string": "^2.0.1", "semver": "^7.5.2", "source-map-support": "^0.5.6", "tmp": "^0.2.4", "upath": "^1.1.0" }, "peerDependencies": { "ts-node": ">= 7.0.1 < 12", "typescript": ">= 3.8.3 < 6" }, "optionalPeers": ["ts-node", "typescript"] }, "sha512-WfFu4Qv5r/9uv4bh6jxZPKLc945RtdjIq29mDa6c9sIXzQtRtv/Voo58E6u6lhA1RKaK+ocymqgykZ6QV7OnGQ=="], 924 1079 925 - "@typescript-eslint/parser/@typescript-eslint/types": ["@typescript-eslint/types@8.44.0", "", {}, "sha512-ZSl2efn44VsYM0MfDQe68RKzBz75NPgLQXuGypmym6QVOWL5kegTZuZ02xRAT9T+onqvM6T8CdQk0OwYMB6ZvA=="], 1080 + "@pulumi/eslint-plugin/typescript": ["typescript@5.8.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ=="], 926 1081 927 - "@typescript-eslint/project-service/@typescript-eslint/types": ["@typescript-eslint/types@8.44.0", "", {}, "sha512-ZSl2efn44VsYM0MfDQe68RKzBz75NPgLQXuGypmym6QVOWL5kegTZuZ02xRAT9T+onqvM6T8CdQk0OwYMB6ZvA=="], 1082 + "@pulumi/pulumi/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], 928 1083 929 - "@typescript-eslint/scope-manager/@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.37.0", "", { "dependencies": { "@typescript-eslint/types": "8.37.0", "eslint-visitor-keys": "^4.2.1" } }, "sha512-YzfhzcTnZVPiLfP/oeKtDp2evwvHLMe0LOy7oe+hb9KKIumLNohYS9Hgp1ifwpu42YWxhZE8yieggz6JpqO/1w=="], 1084 + "@pulumi/std/@pulumi/pulumi": ["@pulumi/pulumi@3.220.0", "", { "dependencies": { "@grpc/grpc-js": "^1.10.1", "@logdna/tail-file": "^2.0.6", "@npmcli/arborist": "^9.0.0", "@opentelemetry/api": "^1.9", "@opentelemetry/exporter-zipkin": "^1.28", "@opentelemetry/instrumentation": "^0.55", "@opentelemetry/instrumentation-grpc": "^0.55", "@opentelemetry/resources": "^1.28", "@opentelemetry/sdk-trace-base": "^1.28", "@opentelemetry/sdk-trace-node": "^1.28", "@types/google-protobuf": "^3.15.5", "@types/semver": "^7.5.6", "@types/tmp": "^0.2.6", "execa": "^5.1.0", "fdir": "^6.5.0", "google-protobuf": "^3.21.4", "got": "^11.8.6", "ini": "^2.0.0", "js-yaml": "^3.14.2", "minimist": "^1.2.6", "normalize-package-data": "^6.0.0", "package-directory": "^8.1.0", "picomatch": "^3.0.1", "require-from-string": "^2.0.1", "semver": "^7.5.2", "source-map-support": "^0.5.6", "tmp": "^0.2.4", "upath": "^1.1.0" }, "peerDependencies": { "ts-node": ">= 7.0.1 < 12", "typescript": ">= 3.8.3 < 6" }, "optionalPeers": ["ts-node", "typescript"] }, "sha512-WfFu4Qv5r/9uv4bh6jxZPKLc945RtdjIq29mDa6c9sIXzQtRtv/Voo58E6u6lhA1RKaK+ocymqgykZ6QV7OnGQ=="], 930 1085 931 - "@typescript-eslint/type-utils/@typescript-eslint/types": ["@typescript-eslint/types@8.44.0", "", {}, "sha512-ZSl2efn44VsYM0MfDQe68RKzBz75NPgLQXuGypmym6QVOWL5kegTZuZ02xRAT9T+onqvM6T8CdQk0OwYMB6ZvA=="], 1086 + "@types/cacheable-request/@types/node": ["@types/node@20.11.24", "", { "dependencies": { "undici-types": "~5.26.4" } }, "sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long=="], 932 1087 933 - "@typescript-eslint/type-utils/@typescript-eslint/utils": ["@typescript-eslint/utils@8.44.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", "@typescript-eslint/scope-manager": "8.44.0", "@typescript-eslint/types": "8.44.0", "@typescript-eslint/typescript-estree": "8.44.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-nktOlVcg3ALo0mYlV+L7sWUD58KG4CMj1rb2HUVOO4aL3K/6wcD+NERqd0rrA5Vg06b42YhF6cFxeixsp9Riqg=="], 1088 + "@types/keyv/@types/node": ["@types/node@20.11.24", "", { "dependencies": { "undici-types": "~5.26.4" } }, "sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long=="], 934 1089 935 - "@typescript-eslint/typescript-estree/@typescript-eslint/types": ["@typescript-eslint/types@8.44.0", "", {}, "sha512-ZSl2efn44VsYM0MfDQe68RKzBz75NPgLQXuGypmym6QVOWL5kegTZuZ02xRAT9T+onqvM6T8CdQk0OwYMB6ZvA=="], 1090 + "@types/responselike/@types/node": ["@types/node@20.11.24", "", { "dependencies": { "undici-types": "~5.26.4" } }, "sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long=="], 936 1091 937 1092 "@typescript-eslint/typescript-estree/minimatch": ["minimatch@9.0.4", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw=="], 938 1093 939 1094 "@typescript-eslint/typescript-estree/semver": ["semver@7.6.0", "", { "dependencies": { "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" } }, "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg=="], 940 1095 941 - "@typescript-eslint/utils/@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.7.0", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw=="], 942 - 943 - "@typescript-eslint/utils/@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.37.0", "", { "dependencies": { "@typescript-eslint/project-service": "8.37.0", "@typescript-eslint/tsconfig-utils": "8.37.0", "@typescript-eslint/types": "8.37.0", "@typescript-eslint/visitor-keys": "8.37.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "typescript": ">=4.8.4 <5.9.0" } }, "sha512-zuWDMDuzMRbQOM+bHyU4/slw27bAUEcKSKKs3hcv2aNnc/tvE/h7w60dwVw8vnal2Pub6RT1T7BI8tFZ1fE+yg=="], 944 - 945 - "@typescript-eslint/visitor-keys/@typescript-eslint/types": ["@typescript-eslint/types@8.44.0", "", {}, "sha512-ZSl2efn44VsYM0MfDQe68RKzBz75NPgLQXuGypmym6QVOWL5kegTZuZ02xRAT9T+onqvM6T8CdQk0OwYMB6ZvA=="], 1096 + "@typescript-eslint/visitor-keys/eslint-visitor-keys": ["eslint-visitor-keys@4.2.1", "", {}, "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ=="], 946 1097 947 1098 "agent-base/debug": ["debug@4.3.4", "", { "dependencies": { "ms": "2.1.2" } }, "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ=="], 948 1099 949 1100 "builtins/semver": ["semver@7.6.0", "", { "dependencies": { "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" } }, "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg=="], 950 1101 951 - "cacache/glob": ["glob@10.3.10", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.3.5", "minimatch": "^9.0.1", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", "path-scurry": "^1.10.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g=="], 1102 + "cacheable-request/get-stream": ["get-stream@5.2.0", "", { "dependencies": { "pump": "^3.0.0" } }, "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA=="], 1103 + 1104 + "clone-response/mimic-response": ["mimic-response@1.0.1", "", {}, "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ=="], 1105 + 1106 + "cross-spawn/which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], 952 1107 953 - "cacache/lru-cache": ["lru-cache@10.2.0", "", {}, "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q=="], 1108 + "eslint/@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.9.1", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ=="], 1109 + 1110 + "eslint/cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], 954 1111 955 - "cacheable-request/get-stream": ["get-stream@5.2.0", "", { "dependencies": { "pump": "^3.0.0" } }, "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA=="], 1112 + "eslint/debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], 956 1113 957 - "clone-response/mimic-response": ["mimic-response@1.0.1", "", {}, "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ=="], 1114 + "eslint/eslint-visitor-keys": ["eslint-visitor-keys@5.0.0", "", {}, "sha512-A0XeIi7CXU7nPlfHS9loMYEKxUaONu/hTEzHTGba9Huu94Cq1hPivf+DE5erJozZOky0LfvXAyrV/tcswpLI0Q=="], 958 1115 959 1116 "espree/acorn": ["acorn@8.15.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="], 960 1117 961 - "execa/cross-spawn": ["cross-spawn@7.0.3", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w=="], 1118 + "espree/eslint-visitor-keys": ["eslint-visitor-keys@5.0.0", "", {}, "sha512-A0XeIi7CXU7nPlfHS9loMYEKxUaONu/hTEzHTGba9Huu94Cq1hPivf+DE5erJozZOky0LfvXAyrV/tcswpLI0Q=="], 962 1119 963 1120 "fast-glob/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], 964 - 965 - "foreground-child/cross-spawn": ["cross-spawn@7.0.3", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w=="], 966 1121 967 1122 "foreground-child/signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], 968 1123 969 1124 "gauge/signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], 970 1125 971 - "glob/minimatch": ["minimatch@9.0.4", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw=="], 972 - 973 - "hosted-git-info/lru-cache": ["lru-cache@10.2.0", "", {}, "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q=="], 1126 + "glob/minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="], 974 1127 975 1128 "http-proxy-agent/debug": ["debug@4.3.4", "", { "dependencies": { "ms": "2.1.2" } }, "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ=="], 976 1129 977 1130 "https-proxy-agent/debug": ["debug@4.3.4", "", { "dependencies": { "ms": "2.1.2" } }, "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ=="], 978 1131 979 - "ignore-walk/minimatch": ["minimatch@9.0.3", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg=="], 980 - 981 - "ip-address/sprintf-js": ["sprintf-js@1.1.3", "", {}, "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA=="], 1132 + "make-fetch-happen/minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="], 982 1133 983 1134 "micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], 1135 + 1136 + "minipass-fetch/minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="], 984 1137 985 1138 "minipass-flush/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], 986 1139 ··· 990 1143 991 1144 "minipass-sized/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], 992 1145 993 - "minizlib/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], 1146 + "minizlib/minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="], 994 1147 995 - "node-gyp/glob": ["glob@10.3.10", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.3.5", "minimatch": "^9.0.1", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", "path-scurry": "^1.10.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g=="], 996 - 997 - "node-gyp/semver": ["semver@7.6.0", "", { "dependencies": { "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" } }, "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg=="], 1148 + "node-gyp/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], 998 1149 999 - "node-gyp/which": ["which@4.0.0", "", { "dependencies": { "isexe": "^3.1.1" }, "bin": { "node-which": "bin/which.js" } }, "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg=="], 1150 + "normalize-package-data/hosted-git-info": ["hosted-git-info@7.0.1", "", { "dependencies": { "lru-cache": "^10.0.1" } }, "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA=="], 1000 1151 1001 1152 "normalize-package-data/semver": ["semver@7.6.0", "", { "dependencies": { "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" } }, "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg=="], 1002 1153 1003 - "npm-install-checks/semver": ["semver@7.6.0", "", { "dependencies": { "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" } }, "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg=="], 1154 + "npm-install-checks/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], 1004 1155 1005 - "npm-package-arg/proc-log": ["proc-log@4.1.0", "", {}, "sha512-dmQ2iPw2nJMi9/4dpaG1wd0m1GE+K5kW7RGbjy5hoEEGnhPIzsm+klBO5RGGdcoYbWsNtU2KSNAdEldts+icLg=="], 1156 + "npm-package-arg/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], 1006 1157 1007 - "npm-package-arg/semver": ["semver@7.6.0", "", { "dependencies": { "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" } }, "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg=="], 1158 + "npm-pick-manifest/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], 1008 1159 1009 - "npm-pick-manifest/npm-package-arg": ["npm-package-arg@11.0.1", "", { "dependencies": { "hosted-git-info": "^7.0.0", "proc-log": "^3.0.0", "semver": "^7.3.5", "validate-npm-package-name": "^5.0.0" } }, "sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ=="], 1160 + "parse-conflict-json/json-parse-even-better-errors": ["json-parse-even-better-errors@5.0.0", "", {}, "sha512-ZF1nxZ28VhQouRWhUcVlUIN3qwSgPuswK05s/HIaoetAoE/9tngVmCHjSxmSQPav1nd+lPtTL0YZ/2AFdR/iYQ=="], 1010 1161 1011 - "npm-pick-manifest/semver": ["semver@7.6.0", "", { "dependencies": { "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" } }, "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg=="], 1012 - 1013 - "npm-registry-fetch/proc-log": ["proc-log@4.1.0", "", {}, "sha512-dmQ2iPw2nJMi9/4dpaG1wd0m1GE+K5kW7RGbjy5hoEEGnhPIzsm+klBO5RGGdcoYbWsNtU2KSNAdEldts+icLg=="], 1162 + "path-scurry/minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="], 1014 1163 1015 - "pacote/proc-log": ["proc-log@4.1.0", "", {}, "sha512-dmQ2iPw2nJMi9/4dpaG1wd0m1GE+K5kW7RGbjy5hoEEGnhPIzsm+klBO5RGGdcoYbWsNtU2KSNAdEldts+icLg=="], 1164 + "protobufjs/@types/node": ["@types/node@20.11.24", "", { "dependencies": { "undici-types": "~5.26.4" } }, "sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long=="], 1016 1165 1017 - "pacote/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=="], 1166 + "read-package-json/glob": ["glob@10.3.10", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.3.5", "minimatch": "^9.0.1", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", "path-scurry": "^1.10.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g=="], 1018 1167 1019 - "path-scurry/lru-cache": ["lru-cache@10.2.0", "", {}, "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q=="], 1168 + "read-package-json/npm-normalize-package-bin": ["npm-normalize-package-bin@3.0.1", "", {}, "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ=="], 1020 1169 1021 - "pkg-dir/find-up": ["find-up@6.3.0", "", { "dependencies": { "locate-path": "^7.1.0", "path-exists": "^5.0.0" } }, "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw=="], 1170 + "read-package-json-fast/npm-normalize-package-bin": ["npm-normalize-package-bin@3.0.1", "", {}, "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ=="], 1022 1171 1023 - "protobufjs/@types/node": ["@types/node@20.11.24", "", { "dependencies": { "undici-types": "~5.26.4" } }, "sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long=="], 1172 + "socks-proxy-agent/agent-base": ["agent-base@7.1.4", "", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="], 1024 1173 1025 - "read-package-json/glob": ["glob@10.3.10", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.3.5", "minimatch": "^9.0.1", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", "path-scurry": "^1.10.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g=="], 1174 + "socks-proxy-agent/debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], 1026 1175 1027 - "socks-proxy-agent/debug": ["debug@4.3.4", "", { "dependencies": { "ms": "2.1.2" } }, "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ=="], 1176 + "ssri/minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="], 1028 1177 1029 - "tar/fs-minipass": ["fs-minipass@2.1.0", "", { "dependencies": { "minipass": "^3.0.0" } }, "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg=="], 1178 + "tar/minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="], 1030 1179 1031 - "tar/minipass": ["minipass@5.0.0", "", {}, "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ=="], 1180 + "tar/yallist": ["yallist@5.0.0", "", {}, "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw=="], 1032 1181 1033 - "tuf-js/debug": ["debug@4.3.4", "", { "dependencies": { "ms": "2.1.2" } }, "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ=="], 1182 + "tinyglobby/picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], 1034 1183 1035 - "typescript-eslint/@typescript-eslint/utils": ["@typescript-eslint/utils@8.44.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", "@typescript-eslint/scope-manager": "8.44.0", "@typescript-eslint/types": "8.44.0", "@typescript-eslint/typescript-estree": "8.44.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-nktOlVcg3ALo0mYlV+L7sWUD58KG4CMj1rb2HUVOO4aL3K/6wcD+NERqd0rrA5Vg06b42YhF6cFxeixsp9Riqg=="], 1184 + "tuf-js/debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], 1036 1185 1037 1186 "write-file-atomic/signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], 1038 1187 1039 - "@eslint/eslintrc/js-yaml/argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], 1040 - 1041 1188 "@isaacs/cliui/string-width/emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], 1042 1189 1043 1190 "@isaacs/cliui/strip-ansi/ansi-regex": ["ansi-regex@6.0.1", "", {}, "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA=="], 1044 1191 1045 1192 "@isaacs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@6.2.1", "", {}, "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="], 1046 1193 1047 - "@npmcli/arborist/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], 1194 + "@opentelemetry/exporter-trace-otlp-grpc/@opentelemetry/resources/@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.27.0", "", {}, "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg=="], 1195 + 1196 + "@opentelemetry/exporter-trace-otlp-grpc/@opentelemetry/sdk-trace-base/@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.27.0", "", {}, "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg=="], 1197 + 1198 + "@opentelemetry/instrumentation/semver/lru-cache": ["lru-cache@6.0.0", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA=="], 1199 + 1200 + "@opentelemetry/otlp-transformer/@opentelemetry/resources/@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.27.0", "", {}, "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg=="], 1048 1201 1049 - "@npmcli/git/semver/lru-cache": ["lru-cache@6.0.0", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA=="], 1202 + "@opentelemetry/otlp-transformer/@opentelemetry/sdk-trace-base/@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.27.0", "", {}, "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg=="], 1050 1203 1051 - "@npmcli/git/which/isexe": ["isexe@3.1.1", "", {}, "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ=="], 1204 + "@opentelemetry/otlp-transformer/protobufjs/@types/node": ["@types/node@25.3.3", "", { "dependencies": { "undici-types": "~7.18.0" } }, "sha512-DpzbrH7wIcBaJibpKo9nnSQL0MTRdnWttGyE5haGwK86xgMOkFLp7vEyfQPGLOJh5wNYiJ3V9PmUMDhV9u8kkQ=="], 1052 1205 1053 - "@npmcli/map-workspaces/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], 1206 + "@opentelemetry/sdk-logs/@opentelemetry/resources/@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.27.0", "", {}, "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg=="], 1054 1207 1055 - "@npmcli/metavuln-calculator/pacote/@npmcli/run-script": ["@npmcli/run-script@8.0.0", "", { "dependencies": { "@npmcli/node-gyp": "^3.0.0", "@npmcli/package-json": "^5.0.0", "@npmcli/promise-spawn": "^7.0.0", "node-gyp": "^10.0.0", "proc-log": "^4.0.0", "which": "^4.0.0" } }, "sha512-5noc+eCQmX1W9nlFUe65n5MIteikd3vOA2sEPdXtlUv68KWyHNFZnT/LDRXu/E4nZ5yxjciP30pADr/GQ97W1w=="], 1208 + "@opentelemetry/sdk-metrics/@opentelemetry/resources/@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.27.0", "", {}, "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg=="], 1056 1209 1057 - "@npmcli/metavuln-calculator/pacote/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=="], 1210 + "@opentelemetry/sdk-trace-node/semver/lru-cache": ["lru-cache@6.0.0", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA=="], 1058 1211 1059 - "@npmcli/promise-spawn/which/isexe": ["isexe@3.1.1", "", {}, "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ=="], 1212 + "@pulumi/cloudflare/@pulumi/pulumi/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], 1060 1213 1061 - "@npmcli/run-script/@npmcli/package-json/@npmcli/git": ["@npmcli/git@5.0.4", "", { "dependencies": { "@npmcli/promise-spawn": "^7.0.0", "lru-cache": "^10.0.1", "npm-pick-manifest": "^9.0.0", "proc-log": "^3.0.0", "promise-inflight": "^1.0.1", "promise-retry": "^2.0.1", "semver": "^7.3.5", "which": "^4.0.0" } }, "sha512-nr6/WezNzuYUppzXRaYu/W4aT5rLxdXqEFupbh6e/ovlYFQ8hpu1UUPV3Ir/YTl+74iXl2ZOMlGzudh9ZPUchQ=="], 1214 + "@pulumi/command/@pulumi/pulumi/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], 1062 1215 1063 - "@npmcli/run-script/@npmcli/package-json/glob": ["glob@10.3.10", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.3.5", "minimatch": "^9.0.1", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", "path-scurry": "^1.10.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g=="], 1216 + "@pulumi/docker-build/@pulumi/pulumi/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], 1064 1217 1065 - "@npmcli/run-script/@npmcli/package-json/semver": ["semver@7.6.0", "", { "dependencies": { "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" } }, "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg=="], 1218 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist": ["@npmcli/arborist@7.4.2", "", { "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", "@npmcli/fs": "^3.1.0", "@npmcli/installed-package-contents": "^2.0.2", "@npmcli/map-workspaces": "^3.0.2", "@npmcli/metavuln-calculator": "^7.0.0", "@npmcli/name-from-folder": "^2.0.0", "@npmcli/node-gyp": "^3.0.0", "@npmcli/package-json": "^5.0.0", "@npmcli/query": "^3.1.0", "@npmcli/redact": "^1.1.0", "@npmcli/run-script": "^7.0.2", "bin-links": "^4.0.1", "cacache": "^18.0.0", "common-ancestor-path": "^1.0.1", "hosted-git-info": "^7.0.1", "json-parse-even-better-errors": "^3.0.0", "json-stringify-nice": "^1.1.4", "minimatch": "^9.0.4", "nopt": "^7.0.0", "npm-install-checks": "^6.2.0", "npm-package-arg": "^11.0.1", "npm-pick-manifest": "^9.0.0", "npm-registry-fetch": "^16.2.0", "npmlog": "^7.0.1", "pacote": "^17.0.4", "parse-conflict-json": "^3.0.0", "proc-log": "^3.0.0", "promise-all-reject-late": "^1.0.0", "promise-call-limit": "^3.0.1", "read-package-json-fast": "^3.0.2", "semver": "^7.3.7", "ssri": "^10.0.5", "treeverse": "^3.0.0", "walk-up-path": "^3.0.1" }, "bin": { "arborist": "bin/index.js" } }, "sha512-13flK0DTIhG7VEmPtoKFoi+88hIjuZxuZAvnHUTthIFql1Kc51VlsMRpbJPIcDEZHaHkILwFjHRXtCUYdFWvAQ=="], 1066 1219 1067 - "@npmcli/run-script/which/isexe": ["isexe@3.1.1", "", {}, "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ=="], 1220 + "@pulumi/docker/@pulumi/pulumi/semver": ["semver@7.6.0", "", { "dependencies": { "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" } }, "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg=="], 1068 1221 1069 - "@tufjs/models/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], 1222 + "@pulumi/std/@pulumi/pulumi/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], 1070 1223 1071 1224 "@types/cacheable-request/@types/node/undici-types": ["undici-types@5.26.5", "", {}, "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="], 1072 1225 ··· 1074 1227 1075 1228 "@types/responselike/@types/node/undici-types": ["undici-types@5.26.5", "", {}, "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="], 1076 1229 1077 - "@typescript-eslint/eslint-plugin/@typescript-eslint/scope-manager/@typescript-eslint/types": ["@typescript-eslint/types@8.44.0", "", {}, "sha512-ZSl2efn44VsYM0MfDQe68RKzBz75NPgLQXuGypmym6QVOWL5kegTZuZ02xRAT9T+onqvM6T8CdQk0OwYMB6ZvA=="], 1230 + "@typescript-eslint/typescript-estree/semver/lru-cache": ["lru-cache@6.0.0", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA=="], 1231 + 1232 + "agent-base/debug/ms": ["ms@2.1.2", "", {}, "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="], 1233 + 1234 + "builtins/semver/lru-cache": ["lru-cache@6.0.0", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA=="], 1235 + 1236 + "cross-spawn/which/isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], 1237 + 1238 + "eslint/@eslint-community/eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], 1239 + 1240 + "eslint/cross-spawn/which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], 1241 + 1242 + "http-proxy-agent/debug/ms": ["ms@2.1.2", "", {}, "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="], 1243 + 1244 + "https-proxy-agent/debug/ms": ["ms@2.1.2", "", {}, "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="], 1245 + 1246 + "normalize-package-data/hosted-git-info/lru-cache": ["lru-cache@10.2.0", "", {}, "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q=="], 1247 + 1248 + "normalize-package-data/semver/lru-cache": ["lru-cache@6.0.0", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA=="], 1249 + 1250 + "protobufjs/@types/node/undici-types": ["undici-types@5.26.5", "", {}, "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="], 1251 + 1252 + "read-package-json/glob/minimatch": ["minimatch@9.0.3", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg=="], 1253 + 1254 + "read-package-json/glob/path-scurry": ["path-scurry@1.10.1", "", { "dependencies": { "lru-cache": "^9.1.1 || ^10.0.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ=="], 1255 + 1256 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/fs": ["@npmcli/fs@3.1.0", "", { "dependencies": { "semver": "^7.3.5" } }, "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w=="], 1257 + 1258 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/installed-package-contents": ["@npmcli/installed-package-contents@2.0.2", "", { "dependencies": { "npm-bundled": "^3.0.0", "npm-normalize-package-bin": "^3.0.0" }, "bin": { "installed-package-contents": "lib/index.js" } }, "sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ=="], 1259 + 1260 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/map-workspaces": ["@npmcli/map-workspaces@3.0.6", "", { "dependencies": { "@npmcli/name-from-folder": "^2.0.0", "glob": "^10.2.2", "minimatch": "^9.0.0", "read-package-json-fast": "^3.0.0" } }, "sha512-tkYs0OYnzQm6iIRdfy+LcLBjcKuQCeE5YLb8KnrIlutJfheNaPvPpgoFEyEFgbjzl5PLZ3IA/BWAwRU0eHuQDA=="], 1261 + 1262 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator": ["@npmcli/metavuln-calculator@7.1.0", "", { "dependencies": { "cacache": "^18.0.0", "json-parse-even-better-errors": "^3.0.0", "pacote": "^18.0.0", "proc-log": "^4.1.0", "semver": "^7.3.5" } }, "sha512-D4VZzVLZ4Mw+oUCWyQ6qzlm5SGlrLnhKtZscDwQXFFc1FUPvw69Ibo2E5ZpJAmjFSYkA5UlCievWmREW0JLC3w=="], 1263 + 1264 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/name-from-folder": ["@npmcli/name-from-folder@2.0.0", "", {}, "sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg=="], 1265 + 1266 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/node-gyp": ["@npmcli/node-gyp@3.0.0", "", {}, "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA=="], 1267 + 1268 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/package-json": ["@npmcli/package-json@5.0.3", "", { "dependencies": { "@npmcli/git": "^5.0.0", "glob": "^10.2.2", "hosted-git-info": "^7.0.0", "json-parse-even-better-errors": "^3.0.0", "normalize-package-data": "^6.0.0", "proc-log": "^4.0.0", "semver": "^7.5.3" } }, "sha512-cgsjCvld2wMqkUqvY+SZI+1ZJ7umGBYc9IAKfqJRKJCcs7hCQYxScUgdsyrRINk3VmdCYf9TXiLBHQ6ECTxhtg=="], 1269 + 1270 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/query": ["@npmcli/query@3.1.0", "", { "dependencies": { "postcss-selector-parser": "^6.0.10" } }, "sha512-C/iR0tk7KSKGldibYIB9x8GtO/0Bd0I2mhOaDb8ucQL/bQVTmGoeREaFj64Z5+iCBRf3dQfed0CjJL7I8iTkiQ=="], 1271 + 1272 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/redact": ["@npmcli/redact@1.1.0", "", {}, "sha512-PfnWuOkQgu7gCbnSsAisaX7hKOdZ4wSAhAzH3/ph5dSGau52kCRrMMGbiSQLwyTZpgldkZ49b0brkOr1AzGBHQ=="], 1273 + 1274 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/run-script": ["@npmcli/run-script@7.0.4", "", { "dependencies": { "@npmcli/node-gyp": "^3.0.0", "@npmcli/package-json": "^5.0.0", "@npmcli/promise-spawn": "^7.0.0", "node-gyp": "^10.0.0", "which": "^4.0.0" } }, "sha512-9ApYM/3+rBt9V80aYg6tZfzj3UWdiYyCt7gJUD1VJKvWF5nwKDSICXbYIQbspFTq6TOpbsEtIC0LArB8d9PFmg=="], 1275 + 1276 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/bin-links": ["bin-links@4.0.3", "", { "dependencies": { "cmd-shim": "^6.0.0", "npm-normalize-package-bin": "^3.0.0", "read-cmd-shim": "^4.0.0", "write-file-atomic": "^5.0.0" } }, "sha512-obsRaULtJurnfox/MDwgq6Yo9kzbv1CPTk/1/s7Z/61Lezc8IKkFCOXNeVLXz0456WRzBQmSsDWlai2tIhBsfA=="], 1277 + 1278 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/cacache": ["cacache@18.0.2", "", { "dependencies": { "@npmcli/fs": "^3.1.0", "fs-minipass": "^3.0.0", "glob": "^10.2.2", "lru-cache": "^10.0.1", "minipass": "^7.0.3", "minipass-collect": "^2.0.1", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "p-map": "^4.0.0", "ssri": "^10.0.0", "tar": "^6.1.11", "unique-filename": "^3.0.0" } }, "sha512-r3NU8h/P+4lVUHfeRw1dtgQYar3DZMm4/cm2bZgOvrFC/su7budSOeqh52VJIC4U4iG1WWwV6vRW0znqBvxNuw=="], 1279 + 1280 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/common-ancestor-path": ["common-ancestor-path@1.0.1", "", {}, "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w=="], 1281 + 1282 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/hosted-git-info": ["hosted-git-info@7.0.1", "", { "dependencies": { "lru-cache": "^10.0.1" } }, "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA=="], 1283 + 1284 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/minimatch": ["minimatch@9.0.4", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw=="], 1285 + 1286 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/nopt": ["nopt@7.2.0", "", { "dependencies": { "abbrev": "^2.0.0" }, "bin": { "nopt": "bin/nopt.js" } }, "sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA=="], 1287 + 1288 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/npm-install-checks": ["npm-install-checks@6.3.0", "", { "dependencies": { "semver": "^7.1.1" } }, "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw=="], 1289 + 1290 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/npm-package-arg": ["npm-package-arg@11.0.2", "", { "dependencies": { "hosted-git-info": "^7.0.0", "proc-log": "^4.0.0", "semver": "^7.3.5", "validate-npm-package-name": "^5.0.0" } }, "sha512-IGN0IAwmhDJwy13Wc8k+4PEbTPhpJnMtfR53ZbOyjkvmEcLS4nCwp6mvMWjS5sUjeiW3mpx6cHmuhKEu9XmcQw=="], 1291 + 1292 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/npm-pick-manifest": ["npm-pick-manifest@9.0.0", "", { "dependencies": { "npm-install-checks": "^6.0.0", "npm-normalize-package-bin": "^3.0.0", "npm-package-arg": "^11.0.0", "semver": "^7.3.5" } }, "sha512-VfvRSs/b6n9ol4Qb+bDwNGUXutpy76x6MARw/XssevE0TnctIKcmklJZM5Z7nqs5z5aW+0S63pgCNbpkUNNXBg=="], 1293 + 1294 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/npm-registry-fetch": ["npm-registry-fetch@16.2.1", "", { "dependencies": { "@npmcli/redact": "^1.1.0", "make-fetch-happen": "^13.0.0", "minipass": "^7.0.2", "minipass-fetch": "^3.0.0", "minipass-json-stream": "^1.0.1", "minizlib": "^2.1.2", "npm-package-arg": "^11.0.0", "proc-log": "^4.0.0" } }, "sha512-8l+7jxhim55S85fjiDGJ1rZXBWGtRLi1OSb4Z3BPLObPuIaeKRlPRiYMSHU4/81ck3t71Z+UwDDl47gcpmfQQA=="], 1295 + 1296 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote": ["pacote@17.0.7", "", { "dependencies": { "@npmcli/git": "^5.0.0", "@npmcli/installed-package-contents": "^2.0.1", "@npmcli/promise-spawn": "^7.0.0", "@npmcli/run-script": "^7.0.0", "cacache": "^18.0.0", "fs-minipass": "^3.0.0", "minipass": "^7.0.2", "npm-package-arg": "^11.0.0", "npm-packlist": "^8.0.0", "npm-pick-manifest": "^9.0.0", "npm-registry-fetch": "^16.0.0", "proc-log": "^4.0.0", "promise-retry": "^2.0.1", "read-package-json": "^7.0.0", "read-package-json-fast": "^3.0.0", "sigstore": "^2.2.0", "ssri": "^10.0.0", "tar": "^6.1.11" }, "bin": { "pacote": "lib/bin.js" } }, "sha512-sgvnoUMlkv9xHwDUKjKQFXVyUi8dtJGKp3vg6sYy+TxbDic5RjZCHF3ygv0EJgNRZ2GfRONjlKPUfokJ9lDpwQ=="], 1297 + 1298 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/parse-conflict-json": ["parse-conflict-json@3.0.1", "", { "dependencies": { "json-parse-even-better-errors": "^3.0.0", "just-diff": "^6.0.0", "just-diff-apply": "^5.2.0" } }, "sha512-01TvEktc68vwbJOtWZluyWeVGWjP+bZwXtPDMQVbBKzbJ/vZBif0L69KH1+cHv1SZ6e0FKLvjyHe8mqsIqYOmw=="], 1299 + 1300 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/proc-log": ["proc-log@3.0.0", "", {}, "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A=="], 1301 + 1302 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/ssri": ["ssri@10.0.5", "", { "dependencies": { "minipass": "^7.0.3" } }, "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A=="], 1303 + 1304 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/walk-up-path": ["walk-up-path@3.0.1", "", {}, "sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA=="], 1305 + 1306 + "@pulumi/docker/@pulumi/pulumi/semver/lru-cache": ["lru-cache@6.0.0", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA=="], 1307 + 1308 + "eslint/cross-spawn/which/isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], 1309 + 1310 + "read-package-json/glob/path-scurry/lru-cache": ["lru-cache@10.2.0", "", {}, "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q=="], 1311 + 1312 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/installed-package-contents/npm-bundled": ["npm-bundled@3.0.0", "", { "dependencies": { "npm-normalize-package-bin": "^3.0.0" } }, "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ=="], 1313 + 1314 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/installed-package-contents/npm-normalize-package-bin": ["npm-normalize-package-bin@3.0.1", "", {}, "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ=="], 1315 + 1316 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/map-workspaces/glob": ["glob@10.3.12", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.3.6", "minimatch": "^9.0.1", "minipass": "^7.0.4", "path-scurry": "^1.10.2" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg=="], 1317 + 1318 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote": ["pacote@18.0.0", "", { "dependencies": { "@npmcli/git": "^5.0.0", "@npmcli/installed-package-contents": "^2.0.1", "@npmcli/promise-spawn": "^7.0.0", "@npmcli/run-script": "^8.0.0", "cacache": "^18.0.0", "fs-minipass": "^3.0.0", "minipass": "^7.0.2", "npm-package-arg": "^11.0.0", "npm-packlist": "^8.0.0", "npm-pick-manifest": "^9.0.0", "npm-registry-fetch": "^16.0.0", "proc-log": "^4.0.0", "promise-retry": "^2.0.1", "read-package-json": "^7.0.0", "read-package-json-fast": "^3.0.0", "sigstore": "^2.2.0", "ssri": "^10.0.0", "tar": "^6.1.11" }, "bin": { "pacote": "lib/bin.js" } }, "sha512-ma7uVt/q3Sb3XbLwUjOeClz+7feHjMOFegHn5whw++x+GzikZkAq/2auklSbRuy6EI2iJh1/ZqCpVaUcxRaeqQ=="], 1319 + 1320 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/proc-log": ["proc-log@4.1.0", "", {}, "sha512-dmQ2iPw2nJMi9/4dpaG1wd0m1GE+K5kW7RGbjy5hoEEGnhPIzsm+klBO5RGGdcoYbWsNtU2KSNAdEldts+icLg=="], 1321 + 1322 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/package-json/@npmcli/git": ["@npmcli/git@5.0.6", "", { "dependencies": { "@npmcli/promise-spawn": "^7.0.0", "lru-cache": "^10.0.1", "npm-pick-manifest": "^9.0.0", "proc-log": "^4.0.0", "promise-inflight": "^1.0.1", "promise-retry": "^2.0.1", "semver": "^7.3.5", "which": "^4.0.0" } }, "sha512-4x/182sKXmQkf0EtXxT26GEsaOATpD7WVtza5hrYivWZeo6QefC6xq9KAXrnjtFKBZ4rZwR7aX/zClYYXgtwLw=="], 1323 + 1324 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/package-json/glob": ["glob@10.3.12", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.3.6", "minimatch": "^9.0.1", "minipass": "^7.0.4", "path-scurry": "^1.10.2" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg=="], 1325 + 1326 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/package-json/proc-log": ["proc-log@4.1.0", "", {}, "sha512-dmQ2iPw2nJMi9/4dpaG1wd0m1GE+K5kW7RGbjy5hoEEGnhPIzsm+klBO5RGGdcoYbWsNtU2KSNAdEldts+icLg=="], 1327 + 1328 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/query/postcss-selector-parser": ["postcss-selector-parser@6.0.15", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw=="], 1329 + 1330 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/run-script/@npmcli/package-json": ["@npmcli/package-json@5.0.0", "", { "dependencies": { "@npmcli/git": "^5.0.0", "glob": "^10.2.2", "hosted-git-info": "^7.0.0", "json-parse-even-better-errors": "^3.0.0", "normalize-package-data": "^6.0.0", "proc-log": "^3.0.0", "semver": "^7.5.3" } }, "sha512-OI2zdYBLhQ7kpNPaJxiflofYIpkNLi+lnGdzqUOfRmCF3r2l1nadcjtCYMJKv/Utm/ZtlffaUuTiAktPHbc17g=="], 1331 + 1332 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/run-script/@npmcli/promise-spawn": ["@npmcli/promise-spawn@7.0.1", "", { "dependencies": { "which": "^4.0.0" } }, "sha512-P4KkF9jX3y+7yFUxgcUdDtLy+t4OlDGuEBLNs57AZsfSfg+uV6MLndqGpnl4831ggaEdXwR50XFoZP4VFtHolg=="], 1333 + 1334 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/run-script/node-gyp": ["node-gyp@10.0.1", "", { "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", "glob": "^10.3.10", "graceful-fs": "^4.2.6", "make-fetch-happen": "^13.0.0", "nopt": "^7.0.0", "proc-log": "^3.0.0", "semver": "^7.3.5", "tar": "^6.1.2", "which": "^4.0.0" }, "bin": { "node-gyp": "bin/node-gyp.js" } }, "sha512-gg3/bHehQfZivQVfqIyy8wTdSymF9yTyP4CJifK73imyNMU8AIGQE2pUa7dNWfmMeG9cDVF2eehiRMv0LC1iAg=="], 1335 + 1336 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/run-script/which": ["which@4.0.0", "", { "dependencies": { "isexe": "^3.1.1" }, "bin": { "node-which": "bin/which.js" } }, "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg=="], 1337 + 1338 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/bin-links/cmd-shim": ["cmd-shim@6.0.2", "", {}, "sha512-+FFYbB0YLaAkhkcrjkyNLYDiOsFSfRjwjY19LXk/psmMx1z00xlCv7hhQoTGXXIKi+YXHL/iiFo8NqMVQX9nOw=="], 1339 + 1340 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/bin-links/npm-normalize-package-bin": ["npm-normalize-package-bin@3.0.1", "", {}, "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ=="], 1341 + 1342 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/bin-links/read-cmd-shim": ["read-cmd-shim@4.0.0", "", {}, "sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q=="], 1343 + 1344 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/bin-links/write-file-atomic": ["write-file-atomic@5.0.1", "", { "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^4.0.1" } }, "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw=="], 1345 + 1346 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/cacache/glob": ["glob@10.3.10", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.3.5", "minimatch": "^9.0.1", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", "path-scurry": "^1.10.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g=="], 1347 + 1348 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/cacache/lru-cache": ["lru-cache@10.2.0", "", {}, "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q=="], 1349 + 1350 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/cacache/p-map": ["p-map@4.0.0", "", { "dependencies": { "aggregate-error": "^3.0.0" } }, "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ=="], 1351 + 1352 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/cacache/tar": ["tar@6.2.0", "", { "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-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ=="], 1353 + 1354 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/cacache/unique-filename": ["unique-filename@3.0.0", "", { "dependencies": { "unique-slug": "^4.0.0" } }, "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g=="], 1355 + 1356 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/hosted-git-info/lru-cache": ["lru-cache@10.2.0", "", {}, "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q=="], 1357 + 1358 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/nopt/abbrev": ["abbrev@2.0.0", "", {}, "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ=="], 1359 + 1360 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/npm-package-arg/proc-log": ["proc-log@4.1.0", "", {}, "sha512-dmQ2iPw2nJMi9/4dpaG1wd0m1GE+K5kW7RGbjy5hoEEGnhPIzsm+klBO5RGGdcoYbWsNtU2KSNAdEldts+icLg=="], 1361 + 1362 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/npm-package-arg/validate-npm-package-name": ["validate-npm-package-name@5.0.0", "", { "dependencies": { "builtins": "^5.0.0" } }, "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ=="], 1363 + 1364 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/npm-pick-manifest/npm-normalize-package-bin": ["npm-normalize-package-bin@3.0.1", "", {}, "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ=="], 1365 + 1366 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/npm-pick-manifest/npm-package-arg": ["npm-package-arg@11.0.1", "", { "dependencies": { "hosted-git-info": "^7.0.0", "proc-log": "^3.0.0", "semver": "^7.3.5", "validate-npm-package-name": "^5.0.0" } }, "sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ=="], 1367 + 1368 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/npm-registry-fetch/make-fetch-happen": ["make-fetch-happen@13.0.0", "", { "dependencies": { "@npmcli/agent": "^2.0.0", "cacache": "^18.0.0", "http-cache-semantics": "^4.1.1", "is-lambda": "^1.0.1", "minipass": "^7.0.2", "minipass-fetch": "^3.0.0", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "negotiator": "^0.6.3", "promise-retry": "^2.0.1", "ssri": "^10.0.0" } }, "sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A=="], 1369 + 1370 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/npm-registry-fetch/minipass-fetch": ["minipass-fetch@3.0.4", "", { "dependencies": { "minipass": "^7.0.3", "minipass-sized": "^1.0.3", "minizlib": "^2.1.2" }, "optionalDependencies": { "encoding": "^0.1.13" } }, "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg=="], 1371 + 1372 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/npm-registry-fetch/minizlib": ["minizlib@2.1.2", "", { "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" } }, "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg=="], 1373 + 1374 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/npm-registry-fetch/proc-log": ["proc-log@4.1.0", "", {}, "sha512-dmQ2iPw2nJMi9/4dpaG1wd0m1GE+K5kW7RGbjy5hoEEGnhPIzsm+klBO5RGGdcoYbWsNtU2KSNAdEldts+icLg=="], 1375 + 1376 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/@npmcli/git": ["@npmcli/git@5.0.6", "", { "dependencies": { "@npmcli/promise-spawn": "^7.0.0", "lru-cache": "^10.0.1", "npm-pick-manifest": "^9.0.0", "proc-log": "^4.0.0", "promise-inflight": "^1.0.1", "promise-retry": "^2.0.1", "semver": "^7.3.5", "which": "^4.0.0" } }, "sha512-4x/182sKXmQkf0EtXxT26GEsaOATpD7WVtza5hrYivWZeo6QefC6xq9KAXrnjtFKBZ4rZwR7aX/zClYYXgtwLw=="], 1377 + 1378 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/@npmcli/promise-spawn": ["@npmcli/promise-spawn@7.0.1", "", { "dependencies": { "which": "^4.0.0" } }, "sha512-P4KkF9jX3y+7yFUxgcUdDtLy+t4OlDGuEBLNs57AZsfSfg+uV6MLndqGpnl4831ggaEdXwR50XFoZP4VFtHolg=="], 1379 + 1380 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/npm-packlist": ["npm-packlist@8.0.2", "", { "dependencies": { "ignore-walk": "^6.0.4" } }, "sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA=="], 1381 + 1382 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/proc-log": ["proc-log@4.1.0", "", {}, "sha512-dmQ2iPw2nJMi9/4dpaG1wd0m1GE+K5kW7RGbjy5hoEEGnhPIzsm+klBO5RGGdcoYbWsNtU2KSNAdEldts+icLg=="], 1383 + 1384 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/sigstore": ["sigstore@2.3.0", "", { "dependencies": { "@sigstore/bundle": "^2.3.1", "@sigstore/core": "^1.0.0", "@sigstore/protobuf-specs": "^0.3.1", "@sigstore/sign": "^2.3.0", "@sigstore/tuf": "^2.3.1", "@sigstore/verify": "^1.2.0" } }, "sha512-q+o8L2ebiWD1AxD17eglf1pFrl9jtW7FHa0ygqY6EKvibK8JHyq9Z26v9MZXeDiw+RbfOJ9j2v70M10Hd6E06A=="], 1385 + 1386 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/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=="], 1387 + 1388 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/map-workspaces/glob/path-scurry": ["path-scurry@1.10.2", "", { "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA=="], 1389 + 1390 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/@npmcli/git": ["@npmcli/git@5.0.6", "", { "dependencies": { "@npmcli/promise-spawn": "^7.0.0", "lru-cache": "^10.0.1", "npm-pick-manifest": "^9.0.0", "proc-log": "^4.0.0", "promise-inflight": "^1.0.1", "promise-retry": "^2.0.1", "semver": "^7.3.5", "which": "^4.0.0" } }, "sha512-4x/182sKXmQkf0EtXxT26GEsaOATpD7WVtza5hrYivWZeo6QefC6xq9KAXrnjtFKBZ4rZwR7aX/zClYYXgtwLw=="], 1391 + 1392 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/@npmcli/promise-spawn": ["@npmcli/promise-spawn@7.0.1", "", { "dependencies": { "which": "^4.0.0" } }, "sha512-P4KkF9jX3y+7yFUxgcUdDtLy+t4OlDGuEBLNs57AZsfSfg+uV6MLndqGpnl4831ggaEdXwR50XFoZP4VFtHolg=="], 1393 + 1394 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/@npmcli/run-script": ["@npmcli/run-script@8.0.0", "", { "dependencies": { "@npmcli/node-gyp": "^3.0.0", "@npmcli/package-json": "^5.0.0", "@npmcli/promise-spawn": "^7.0.0", "node-gyp": "^10.0.0", "proc-log": "^4.0.0", "which": "^4.0.0" } }, "sha512-5noc+eCQmX1W9nlFUe65n5MIteikd3vOA2sEPdXtlUv68KWyHNFZnT/LDRXu/E4nZ5yxjciP30pADr/GQ97W1w=="], 1395 + 1396 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/npm-packlist": ["npm-packlist@8.0.2", "", { "dependencies": { "ignore-walk": "^6.0.4" } }, "sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA=="], 1397 + 1398 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/sigstore": ["sigstore@2.3.0", "", { "dependencies": { "@sigstore/bundle": "^2.3.1", "@sigstore/core": "^1.0.0", "@sigstore/protobuf-specs": "^0.3.1", "@sigstore/sign": "^2.3.0", "@sigstore/tuf": "^2.3.1", "@sigstore/verify": "^1.2.0" } }, "sha512-q+o8L2ebiWD1AxD17eglf1pFrl9jtW7FHa0ygqY6EKvibK8JHyq9Z26v9MZXeDiw+RbfOJ9j2v70M10Hd6E06A=="], 1399 + 1400 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/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=="], 1401 + 1402 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/package-json/@npmcli/git/@npmcli/promise-spawn": ["@npmcli/promise-spawn@7.0.1", "", { "dependencies": { "which": "^4.0.0" } }, "sha512-P4KkF9jX3y+7yFUxgcUdDtLy+t4OlDGuEBLNs57AZsfSfg+uV6MLndqGpnl4831ggaEdXwR50XFoZP4VFtHolg=="], 1403 + 1404 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/package-json/@npmcli/git/lru-cache": ["lru-cache@10.2.0", "", {}, "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q=="], 1405 + 1406 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/package-json/@npmcli/git/which": ["which@4.0.0", "", { "dependencies": { "isexe": "^3.1.1" }, "bin": { "node-which": "bin/which.js" } }, "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg=="], 1407 + 1408 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/package-json/glob/path-scurry": ["path-scurry@1.10.2", "", { "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA=="], 1409 + 1410 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/run-script/@npmcli/package-json/@npmcli/git": ["@npmcli/git@5.0.4", "", { "dependencies": { "@npmcli/promise-spawn": "^7.0.0", "lru-cache": "^10.0.1", "npm-pick-manifest": "^9.0.0", "proc-log": "^3.0.0", "promise-inflight": "^1.0.1", "promise-retry": "^2.0.1", "semver": "^7.3.5", "which": "^4.0.0" } }, "sha512-nr6/WezNzuYUppzXRaYu/W4aT5rLxdXqEFupbh6e/ovlYFQ8hpu1UUPV3Ir/YTl+74iXl2ZOMlGzudh9ZPUchQ=="], 1411 + 1412 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/run-script/@npmcli/package-json/glob": ["glob@10.3.10", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.3.5", "minimatch": "^9.0.1", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", "path-scurry": "^1.10.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g=="], 1413 + 1414 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/run-script/node-gyp/glob": ["glob@10.3.10", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.3.5", "minimatch": "^9.0.1", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", "path-scurry": "^1.10.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g=="], 1415 + 1416 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/run-script/node-gyp/make-fetch-happen": ["make-fetch-happen@13.0.0", "", { "dependencies": { "@npmcli/agent": "^2.0.0", "cacache": "^18.0.0", "http-cache-semantics": "^4.1.1", "is-lambda": "^1.0.1", "minipass": "^7.0.2", "minipass-fetch": "^3.0.0", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "negotiator": "^0.6.3", "promise-retry": "^2.0.1", "ssri": "^10.0.0" } }, "sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A=="], 1417 + 1418 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/run-script/node-gyp/tar": ["tar@6.2.0", "", { "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-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ=="], 1419 + 1420 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/bin-links/write-file-atomic/signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], 1421 + 1422 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/cacache/glob/minimatch": ["minimatch@9.0.3", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg=="], 1423 + 1424 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/cacache/glob/path-scurry": ["path-scurry@1.10.1", "", { "dependencies": { "lru-cache": "^9.1.1 || ^10.0.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ=="], 1425 + 1426 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/cacache/tar/chownr": ["chownr@2.0.0", "", {}, "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="], 1427 + 1428 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/cacache/tar/fs-minipass": ["fs-minipass@2.1.0", "", { "dependencies": { "minipass": "^3.0.0" } }, "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg=="], 1429 + 1430 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/cacache/tar/minipass": ["minipass@5.0.0", "", {}, "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ=="], 1431 + 1432 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/cacache/tar/minizlib": ["minizlib@2.1.2", "", { "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" } }, "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg=="], 1433 + 1434 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/cacache/unique-filename/unique-slug": ["unique-slug@4.0.0", "", { "dependencies": { "imurmurhash": "^0.1.4" } }, "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ=="], 1435 + 1436 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/npm-pick-manifest/npm-package-arg/validate-npm-package-name": ["validate-npm-package-name@5.0.0", "", { "dependencies": { "builtins": "^5.0.0" } }, "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ=="], 1437 + 1438 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/npm-registry-fetch/make-fetch-happen/@npmcli/agent": ["@npmcli/agent@2.2.1", "", { "dependencies": { "agent-base": "^7.1.0", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.1", "lru-cache": "^10.0.1", "socks-proxy-agent": "^8.0.1" } }, "sha512-H4FrOVtNyWC8MUwL3UfjOsAihHvT1Pe8POj3JvjXhSTJipsZMtgUALCT4mGyYZNxymkUfOw3PUj6dE4QPp6osQ=="], 1078 1439 1079 - "@typescript-eslint/eslint-plugin/@typescript-eslint/utils/@typescript-eslint/types": ["@typescript-eslint/types@8.44.0", "", {}, "sha512-ZSl2efn44VsYM0MfDQe68RKzBz75NPgLQXuGypmym6QVOWL5kegTZuZ02xRAT9T+onqvM6T8CdQk0OwYMB6ZvA=="], 1440 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/npm-registry-fetch/make-fetch-happen/negotiator": ["negotiator@0.6.3", "", {}, "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="], 1080 1441 1081 - "@typescript-eslint/type-utils/@typescript-eslint/utils/@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.44.0", "", { "dependencies": { "@typescript-eslint/types": "8.44.0", "@typescript-eslint/visitor-keys": "8.44.0" } }, "sha512-87Jv3E+al8wpD+rIdVJm/ItDBe/Im09zXIjFoipOjr5gHUhJmTzfFLuTJ/nPTMc2Srsroy4IBXwcTCHyRR7KzA=="], 1442 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/npm-registry-fetch/minizlib/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], 1082 1443 1083 - "@typescript-eslint/typescript-estree/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], 1444 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/@npmcli/git/lru-cache": ["lru-cache@10.2.0", "", {}, "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q=="], 1084 1445 1085 - "@typescript-eslint/utils/@eslint-community/eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], 1446 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/@npmcli/git/which": ["which@4.0.0", "", { "dependencies": { "isexe": "^3.1.1" }, "bin": { "node-which": "bin/which.js" } }, "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg=="], 1086 1447 1087 - "@typescript-eslint/utils/@typescript-eslint/typescript-estree/@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.37.0", "", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.37.0", "@typescript-eslint/types": "^8.37.0", "debug": "^4.3.4" }, "peerDependencies": { "typescript": ">=4.8.4 <5.9.0" } }, "sha512-BIUXYsbkl5A1aJDdYJCBAo8rCEbAvdquQ8AnLb6z5Lp1u3x5PNgSSx9A/zqYc++Xnr/0DVpls8iQ2cJs/izTXA=="], 1448 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/@npmcli/promise-spawn/which": ["which@4.0.0", "", { "dependencies": { "isexe": "^3.1.1" }, "bin": { "node-which": "bin/which.js" } }, "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg=="], 1088 1449 1089 - "@typescript-eslint/utils/@typescript-eslint/typescript-estree/@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.37.0", "", { "peerDependencies": { "typescript": ">=4.8.4 <5.9.0" } }, "sha512-1/YHvAVTimMM9mmlPvTec9NP4bobA1RkDbMydxG8omqwJJLEW/Iy2C4adsAESIXU3WGLXFHSZUU+C9EoFWl4Zg=="], 1450 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/npm-packlist/ignore-walk": ["ignore-walk@6.0.4", "", { "dependencies": { "minimatch": "^9.0.0" } }, "sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw=="], 1090 1451 1091 - "@typescript-eslint/utils/@typescript-eslint/typescript-estree/@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.37.0", "", { "dependencies": { "@typescript-eslint/types": "8.37.0", "eslint-visitor-keys": "^4.2.1" } }, "sha512-YzfhzcTnZVPiLfP/oeKtDp2evwvHLMe0LOy7oe+hb9KKIumLNohYS9Hgp1ifwpu42YWxhZE8yieggz6JpqO/1w=="], 1452 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/sigstore/@sigstore/bundle": ["@sigstore/bundle@2.3.1", "", { "dependencies": { "@sigstore/protobuf-specs": "^0.3.1" } }, "sha512-eqV17lO3EIFqCWK3969Rz+J8MYrRZKw9IBHpSo6DEcEX2c+uzDFOgHE9f2MnyDpfs48LFO4hXmk9KhQ74JzU1g=="], 1092 1453 1093 - "@typescript-eslint/utils/@typescript-eslint/typescript-estree/minimatch": ["minimatch@9.0.4", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw=="], 1454 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/sigstore/@sigstore/core": ["@sigstore/core@1.1.0", "", {}, "sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg=="], 1094 1455 1095 - "@typescript-eslint/utils/@typescript-eslint/typescript-estree/semver": ["semver@7.6.0", "", { "dependencies": { "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" } }, "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg=="], 1456 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/sigstore/@sigstore/protobuf-specs": ["@sigstore/protobuf-specs@0.3.1", "", {}, "sha512-aIL8Z9NsMr3C64jyQzE0XlkEyBLpgEJJFDHLVVStkFV5Q3Il/r/YtY6NJWKQ4cy4AE7spP1IX5Jq7VCAxHHMfQ=="], 1096 1457 1097 - "agent-base/debug/ms": ["ms@2.1.2", "", {}, "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="], 1458 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/sigstore/@sigstore/sign": ["@sigstore/sign@2.3.0", "", { "dependencies": { "@sigstore/bundle": "^2.3.0", "@sigstore/core": "^1.0.0", "@sigstore/protobuf-specs": "^0.3.1", "make-fetch-happen": "^13.0.0" } }, "sha512-tsAyV6FC3R3pHmKS880IXcDJuiFJiKITO1jxR1qbplcsBkZLBmjrEw5GbC7ikD6f5RU1hr7WnmxB/2kKc1qUWQ=="], 1098 1459 1099 - "cacache/glob/minimatch": ["minimatch@9.0.3", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg=="], 1460 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/sigstore/@sigstore/tuf": ["@sigstore/tuf@2.3.2", "", { "dependencies": { "@sigstore/protobuf-specs": "^0.3.0", "tuf-js": "^2.2.0" } }, "sha512-mwbY1VrEGU4CO55t+Kl6I7WZzIl+ysSzEYdA1Nv/FTrl2bkeaPXo5PnWZAVfcY2zSdhOpsUTJW67/M2zHXGn5w=="], 1100 1461 1101 - "cacache/glob/path-scurry": ["path-scurry@1.10.1", "", { "dependencies": { "lru-cache": "^9.1.1 || ^10.0.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ=="], 1462 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/sigstore/@sigstore/verify": ["@sigstore/verify@1.2.0", "", { "dependencies": { "@sigstore/bundle": "^2.3.1", "@sigstore/core": "^1.1.0", "@sigstore/protobuf-specs": "^0.3.1" } }, "sha512-hQF60nc9yab+Csi4AyoAmilGNfpXT+EXdBgFkP9OgPwIBPwyqVf7JAWPtmqrrrneTmAT6ojv7OlH1f6Ix5BG4Q=="], 1102 1463 1103 - "glob/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], 1464 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/tar/chownr": ["chownr@2.0.0", "", {}, "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="], 1104 1465 1105 - "http-proxy-agent/debug/ms": ["ms@2.1.2", "", {}, "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="], 1466 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/tar/fs-minipass": ["fs-minipass@2.1.0", "", { "dependencies": { "minipass": "^3.0.0" } }, "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg=="], 1106 1467 1107 - "https-proxy-agent/debug/ms": ["ms@2.1.2", "", {}, "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="], 1468 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/tar/minipass": ["minipass@5.0.0", "", {}, "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ=="], 1108 1469 1109 - "ignore-walk/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], 1470 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/tar/minizlib": ["minizlib@2.1.2", "", { "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" } }, "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg=="], 1110 1471 1111 - "node-gyp/glob/minimatch": ["minimatch@9.0.3", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg=="], 1472 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/map-workspaces/glob/path-scurry/lru-cache": ["lru-cache@10.2.0", "", {}, "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q=="], 1112 1473 1113 - "node-gyp/glob/path-scurry": ["path-scurry@1.10.1", "", { "dependencies": { "lru-cache": "^9.1.1 || ^10.0.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ=="], 1474 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/@npmcli/git/lru-cache": ["lru-cache@10.2.0", "", {}, "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q=="], 1114 1475 1115 - "node-gyp/which/isexe": ["isexe@3.1.1", "", {}, "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ=="], 1476 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/@npmcli/git/which": ["which@4.0.0", "", { "dependencies": { "isexe": "^3.1.1" }, "bin": { "node-which": "bin/which.js" } }, "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg=="], 1116 1477 1117 - "pacote/tar/fs-minipass": ["fs-minipass@2.1.0", "", { "dependencies": { "minipass": "^3.0.0" } }, "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg=="], 1478 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/@npmcli/promise-spawn/which": ["which@4.0.0", "", { "dependencies": { "isexe": "^3.1.1" }, "bin": { "node-which": "bin/which.js" } }, "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg=="], 1118 1479 1119 - "pacote/tar/minipass": ["minipass@5.0.0", "", {}, "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ=="], 1480 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/@npmcli/run-script/node-gyp": ["node-gyp@10.1.0", "", { "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", "glob": "^10.3.10", "graceful-fs": "^4.2.6", "make-fetch-happen": "^13.0.0", "nopt": "^7.0.0", "proc-log": "^3.0.0", "semver": "^7.3.5", "tar": "^6.1.2", "which": "^4.0.0" }, "bin": { "node-gyp": "bin/node-gyp.js" } }, "sha512-B4J5M1cABxPc5PwfjhbV5hoy2DP9p8lFXASnEN6hugXOa61416tnTZ29x9sSwAd0o99XNIcpvDDy1swAExsVKA=="], 1120 1481 1121 - "pkg-dir/find-up/locate-path": ["locate-path@7.2.0", "", { "dependencies": { "p-locate": "^6.0.0" } }, "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA=="], 1482 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/@npmcli/run-script/which": ["which@4.0.0", "", { "dependencies": { "isexe": "^3.1.1" }, "bin": { "node-which": "bin/which.js" } }, "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg=="], 1122 1483 1123 - "pkg-dir/find-up/path-exists": ["path-exists@5.0.0", "", {}, "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ=="], 1484 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/npm-packlist/ignore-walk": ["ignore-walk@6.0.4", "", { "dependencies": { "minimatch": "^9.0.0" } }, "sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw=="], 1124 1485 1125 - "protobufjs/@types/node/undici-types": ["undici-types@5.26.5", "", {}, "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="], 1486 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/sigstore/@sigstore/bundle": ["@sigstore/bundle@2.3.1", "", { "dependencies": { "@sigstore/protobuf-specs": "^0.3.1" } }, "sha512-eqV17lO3EIFqCWK3969Rz+J8MYrRZKw9IBHpSo6DEcEX2c+uzDFOgHE9f2MnyDpfs48LFO4hXmk9KhQ74JzU1g=="], 1126 1487 1127 - "read-package-json/glob/minimatch": ["minimatch@9.0.3", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg=="], 1488 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/sigstore/@sigstore/core": ["@sigstore/core@1.1.0", "", {}, "sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg=="], 1128 1489 1129 - "read-package-json/glob/path-scurry": ["path-scurry@1.10.1", "", { "dependencies": { "lru-cache": "^9.1.1 || ^10.0.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ=="], 1490 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/sigstore/@sigstore/protobuf-specs": ["@sigstore/protobuf-specs@0.3.1", "", {}, "sha512-aIL8Z9NsMr3C64jyQzE0XlkEyBLpgEJJFDHLVVStkFV5Q3Il/r/YtY6NJWKQ4cy4AE7spP1IX5Jq7VCAxHHMfQ=="], 1130 1491 1131 - "socks-proxy-agent/debug/ms": ["ms@2.1.2", "", {}, "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="], 1492 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/sigstore/@sigstore/sign": ["@sigstore/sign@2.3.0", "", { "dependencies": { "@sigstore/bundle": "^2.3.0", "@sigstore/core": "^1.0.0", "@sigstore/protobuf-specs": "^0.3.1", "make-fetch-happen": "^13.0.0" } }, "sha512-tsAyV6FC3R3pHmKS880IXcDJuiFJiKITO1jxR1qbplcsBkZLBmjrEw5GbC7ikD6f5RU1hr7WnmxB/2kKc1qUWQ=="], 1132 1493 1133 - "tar/fs-minipass/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], 1494 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/sigstore/@sigstore/tuf": ["@sigstore/tuf@2.3.2", "", { "dependencies": { "@sigstore/protobuf-specs": "^0.3.0", "tuf-js": "^2.2.0" } }, "sha512-mwbY1VrEGU4CO55t+Kl6I7WZzIl+ysSzEYdA1Nv/FTrl2bkeaPXo5PnWZAVfcY2zSdhOpsUTJW67/M2zHXGn5w=="], 1134 1495 1135 - "tuf-js/debug/ms": ["ms@2.1.2", "", {}, "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="], 1496 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/sigstore/@sigstore/verify": ["@sigstore/verify@1.2.0", "", { "dependencies": { "@sigstore/bundle": "^2.3.1", "@sigstore/core": "^1.1.0", "@sigstore/protobuf-specs": "^0.3.1" } }, "sha512-hQF60nc9yab+Csi4AyoAmilGNfpXT+EXdBgFkP9OgPwIBPwyqVf7JAWPtmqrrrneTmAT6ojv7OlH1f6Ix5BG4Q=="], 1136 1497 1137 - "typescript-eslint/@typescript-eslint/utils/@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.44.0", "", { "dependencies": { "@typescript-eslint/types": "8.44.0", "@typescript-eslint/visitor-keys": "8.44.0" } }, "sha512-87Jv3E+al8wpD+rIdVJm/ItDBe/Im09zXIjFoipOjr5gHUhJmTzfFLuTJ/nPTMc2Srsroy4IBXwcTCHyRR7KzA=="], 1498 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/tar/chownr": ["chownr@2.0.0", "", {}, "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="], 1138 1499 1139 - "typescript-eslint/@typescript-eslint/utils/@typescript-eslint/types": ["@typescript-eslint/types@8.44.0", "", {}, "sha512-ZSl2efn44VsYM0MfDQe68RKzBz75NPgLQXuGypmym6QVOWL5kegTZuZ02xRAT9T+onqvM6T8CdQk0OwYMB6ZvA=="], 1500 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/tar/fs-minipass": ["fs-minipass@2.1.0", "", { "dependencies": { "minipass": "^3.0.0" } }, "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg=="], 1140 1501 1141 - "@npmcli/metavuln-calculator/pacote/@npmcli/run-script/node-gyp": ["node-gyp@10.1.0", "", { "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", "glob": "^10.3.10", "graceful-fs": "^4.2.6", "make-fetch-happen": "^13.0.0", "nopt": "^7.0.0", "proc-log": "^3.0.0", "semver": "^7.3.5", "tar": "^6.1.2", "which": "^4.0.0" }, "bin": { "node-gyp": "bin/node-gyp.js" } }, "sha512-B4J5M1cABxPc5PwfjhbV5hoy2DP9p8lFXASnEN6hugXOa61416tnTZ29x9sSwAd0o99XNIcpvDDy1swAExsVKA=="], 1502 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/tar/minipass": ["minipass@5.0.0", "", {}, "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ=="], 1142 1503 1143 - "@npmcli/metavuln-calculator/pacote/@npmcli/run-script/which": ["which@4.0.0", "", { "dependencies": { "isexe": "^3.1.1" }, "bin": { "node-which": "bin/which.js" } }, "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg=="], 1504 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/tar/minizlib": ["minizlib@2.1.2", "", { "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" } }, "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg=="], 1144 1505 1145 - "@npmcli/metavuln-calculator/pacote/tar/fs-minipass": ["fs-minipass@2.1.0", "", { "dependencies": { "minipass": "^3.0.0" } }, "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg=="], 1506 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/package-json/glob/path-scurry/lru-cache": ["lru-cache@10.2.0", "", {}, "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q=="], 1146 1507 1147 - "@npmcli/metavuln-calculator/pacote/tar/minipass": ["minipass@5.0.0", "", {}, "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ=="], 1508 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/run-script/@npmcli/package-json/@npmcli/git/lru-cache": ["lru-cache@10.2.0", "", {}, "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q=="], 1148 1509 1149 - "@npmcli/run-script/@npmcli/package-json/@npmcli/git/lru-cache": ["lru-cache@10.2.0", "", {}, "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q=="], 1510 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/run-script/@npmcli/package-json/glob/minimatch": ["minimatch@9.0.3", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg=="], 1150 1511 1151 - "@npmcli/run-script/@npmcli/package-json/glob/minimatch": ["minimatch@9.0.3", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg=="], 1512 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/run-script/@npmcli/package-json/glob/path-scurry": ["path-scurry@1.10.1", "", { "dependencies": { "lru-cache": "^9.1.1 || ^10.0.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ=="], 1152 1513 1153 - "@npmcli/run-script/@npmcli/package-json/glob/path-scurry": ["path-scurry@1.10.1", "", { "dependencies": { "lru-cache": "^9.1.1 || ^10.0.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ=="], 1514 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/run-script/node-gyp/glob/minimatch": ["minimatch@9.0.3", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg=="], 1515 + 1516 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/run-script/node-gyp/glob/path-scurry": ["path-scurry@1.10.1", "", { "dependencies": { "lru-cache": "^9.1.1 || ^10.0.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ=="], 1517 + 1518 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/run-script/node-gyp/make-fetch-happen/@npmcli/agent": ["@npmcli/agent@2.2.1", "", { "dependencies": { "agent-base": "^7.1.0", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.1", "lru-cache": "^10.0.1", "socks-proxy-agent": "^8.0.1" } }, "sha512-H4FrOVtNyWC8MUwL3UfjOsAihHvT1Pe8POj3JvjXhSTJipsZMtgUALCT4mGyYZNxymkUfOw3PUj6dE4QPp6osQ=="], 1519 + 1520 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/run-script/node-gyp/make-fetch-happen/minipass-fetch": ["minipass-fetch@3.0.4", "", { "dependencies": { "minipass": "^7.0.3", "minipass-sized": "^1.0.3", "minizlib": "^2.1.2" }, "optionalDependencies": { "encoding": "^0.1.13" } }, "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg=="], 1521 + 1522 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/run-script/node-gyp/make-fetch-happen/negotiator": ["negotiator@0.6.3", "", {}, "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="], 1523 + 1524 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/run-script/node-gyp/tar/chownr": ["chownr@2.0.0", "", {}, "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="], 1525 + 1526 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/run-script/node-gyp/tar/fs-minipass": ["fs-minipass@2.1.0", "", { "dependencies": { "minipass": "^3.0.0" } }, "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg=="], 1527 + 1528 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/run-script/node-gyp/tar/minipass": ["minipass@5.0.0", "", {}, "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ=="], 1529 + 1530 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/run-script/node-gyp/tar/minizlib": ["minizlib@2.1.2", "", { "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" } }, "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg=="], 1531 + 1532 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/cacache/tar/fs-minipass/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], 1533 + 1534 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/cacache/tar/minizlib/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], 1535 + 1536 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/npm-registry-fetch/make-fetch-happen/@npmcli/agent/lru-cache": ["lru-cache@10.2.0", "", {}, "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q=="], 1537 + 1538 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/npm-registry-fetch/make-fetch-happen/@npmcli/agent/socks-proxy-agent": ["socks-proxy-agent@8.0.2", "", { "dependencies": { "agent-base": "^7.0.2", "debug": "^4.3.4", "socks": "^2.7.1" } }, "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g=="], 1539 + 1540 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/npm-packlist/ignore-walk/minimatch": ["minimatch@9.0.3", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg=="], 1541 + 1542 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/sigstore/@sigstore/sign/make-fetch-happen": ["make-fetch-happen@13.0.0", "", { "dependencies": { "@npmcli/agent": "^2.0.0", "cacache": "^18.0.0", "http-cache-semantics": "^4.1.1", "is-lambda": "^1.0.1", "minipass": "^7.0.2", "minipass-fetch": "^3.0.0", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "negotiator": "^0.6.3", "promise-retry": "^2.0.1", "ssri": "^10.0.0" } }, "sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A=="], 1543 + 1544 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/sigstore/@sigstore/tuf/tuf-js": ["tuf-js@2.2.0", "", { "dependencies": { "@tufjs/models": "2.0.0", "debug": "^4.3.4", "make-fetch-happen": "^13.0.0" } }, "sha512-ZSDngmP1z6zw+FIkIBjvOp/II/mIub/O7Pp12j1WNsiCpg5R5wAc//i555bBQsE44O94btLt0xM/Zr2LQjwdCg=="], 1545 + 1546 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/tar/fs-minipass/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], 1547 + 1548 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/tar/minizlib/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], 1549 + 1550 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/@npmcli/run-script/node-gyp/glob": ["glob@10.3.12", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.3.6", "minimatch": "^9.0.1", "minipass": "^7.0.4", "path-scurry": "^1.10.2" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg=="], 1551 + 1552 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/@npmcli/run-script/node-gyp/make-fetch-happen": ["make-fetch-happen@13.0.0", "", { "dependencies": { "@npmcli/agent": "^2.0.0", "cacache": "^18.0.0", "http-cache-semantics": "^4.1.1", "is-lambda": "^1.0.1", "minipass": "^7.0.2", "minipass-fetch": "^3.0.0", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "negotiator": "^0.6.3", "promise-retry": "^2.0.1", "ssri": "^10.0.0" } }, "sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A=="], 1154 1553 1155 - "@typescript-eslint/utils/@typescript-eslint/typescript-estree/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], 1554 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/@npmcli/run-script/node-gyp/proc-log": ["proc-log@3.0.0", "", {}, "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A=="], 1156 1555 1157 - "cacache/glob/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], 1556 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/npm-packlist/ignore-walk/minimatch": ["minimatch@9.0.3", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg=="], 1557 + 1558 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/sigstore/@sigstore/sign/make-fetch-happen": ["make-fetch-happen@13.0.0", "", { "dependencies": { "@npmcli/agent": "^2.0.0", "cacache": "^18.0.0", "http-cache-semantics": "^4.1.1", "is-lambda": "^1.0.1", "minipass": "^7.0.2", "minipass-fetch": "^3.0.0", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "negotiator": "^0.6.3", "promise-retry": "^2.0.1", "ssri": "^10.0.0" } }, "sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A=="], 1559 + 1560 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/sigstore/@sigstore/tuf/tuf-js": ["tuf-js@2.2.0", "", { "dependencies": { "@tufjs/models": "2.0.0", "debug": "^4.3.4", "make-fetch-happen": "^13.0.0" } }, "sha512-ZSDngmP1z6zw+FIkIBjvOp/II/mIub/O7Pp12j1WNsiCpg5R5wAc//i555bBQsE44O94btLt0xM/Zr2LQjwdCg=="], 1158 1561 1159 - "node-gyp/glob/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], 1562 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/tar/fs-minipass/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], 1160 1563 1161 - "node-gyp/glob/path-scurry/lru-cache": ["lru-cache@10.2.0", "", {}, "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q=="], 1564 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/tar/minizlib/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], 1162 1565 1163 - "pacote/tar/fs-minipass/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], 1566 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/run-script/@npmcli/package-json/glob/path-scurry/lru-cache": ["lru-cache@10.2.0", "", {}, "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q=="], 1164 1567 1165 - "pkg-dir/find-up/locate-path/p-locate": ["p-locate@6.0.0", "", { "dependencies": { "p-limit": "^4.0.0" } }, "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw=="], 1568 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/run-script/node-gyp/glob/path-scurry/lru-cache": ["lru-cache@10.2.0", "", {}, "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q=="], 1166 1569 1167 - "read-package-json/glob/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], 1570 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/run-script/node-gyp/make-fetch-happen/@npmcli/agent/lru-cache": ["lru-cache@10.2.0", "", {}, "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q=="], 1168 1571 1169 - "read-package-json/glob/path-scurry/lru-cache": ["lru-cache@10.2.0", "", {}, "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q=="], 1572 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/run-script/node-gyp/make-fetch-happen/@npmcli/agent/socks-proxy-agent": ["socks-proxy-agent@8.0.2", "", { "dependencies": { "agent-base": "^7.0.2", "debug": "^4.3.4", "socks": "^2.7.1" } }, "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g=="], 1170 1573 1171 - "@npmcli/metavuln-calculator/pacote/@npmcli/run-script/node-gyp/proc-log": ["proc-log@3.0.0", "", {}, "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A=="], 1574 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/run-script/node-gyp/make-fetch-happen/minipass-fetch/minizlib": ["minizlib@2.1.2", "", { "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" } }, "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg=="], 1172 1575 1173 - "@npmcli/metavuln-calculator/pacote/@npmcli/run-script/which/isexe": ["isexe@3.1.1", "", {}, "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ=="], 1576 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/run-script/node-gyp/tar/fs-minipass/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], 1174 1577 1175 - "@npmcli/metavuln-calculator/pacote/tar/fs-minipass/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], 1578 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/run-script/node-gyp/tar/minizlib/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], 1176 1579 1177 - "@npmcli/run-script/@npmcli/package-json/glob/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], 1580 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/npm-registry-fetch/make-fetch-happen/@npmcli/agent/socks-proxy-agent/debug": ["debug@4.3.4", "", { "dependencies": { "ms": "2.1.2" } }, "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ=="], 1178 1581 1179 - "@npmcli/run-script/@npmcli/package-json/glob/path-scurry/lru-cache": ["lru-cache@10.2.0", "", {}, "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q=="], 1582 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/npm-registry-fetch/make-fetch-happen/@npmcli/agent/socks-proxy-agent/socks": ["socks@2.8.1", "", { "dependencies": { "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" } }, "sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ=="], 1180 1583 1181 - "pkg-dir/find-up/locate-path/p-locate/p-limit": ["p-limit@4.0.0", "", { "dependencies": { "yocto-queue": "^1.0.0" } }, "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ=="], 1584 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/sigstore/@sigstore/sign/make-fetch-happen/@npmcli/agent": ["@npmcli/agent@2.2.1", "", { "dependencies": { "agent-base": "^7.1.0", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.1", "lru-cache": "^10.0.1", "socks-proxy-agent": "^8.0.1" } }, "sha512-H4FrOVtNyWC8MUwL3UfjOsAihHvT1Pe8POj3JvjXhSTJipsZMtgUALCT4mGyYZNxymkUfOw3PUj6dE4QPp6osQ=="], 1182 1585 1183 - "pkg-dir/find-up/locate-path/p-locate/p-limit/yocto-queue": ["yocto-queue@1.0.0", "", {}, "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g=="], 1586 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/sigstore/@sigstore/sign/make-fetch-happen/minipass-fetch": ["minipass-fetch@3.0.4", "", { "dependencies": { "minipass": "^7.0.3", "minipass-sized": "^1.0.3", "minizlib": "^2.1.2" }, "optionalDependencies": { "encoding": "^0.1.13" } }, "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg=="], 1587 + 1588 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/sigstore/@sigstore/sign/make-fetch-happen/negotiator": ["negotiator@0.6.3", "", {}, "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="], 1589 + 1590 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/sigstore/@sigstore/tuf/tuf-js/@tufjs/models": ["@tufjs/models@2.0.0", "", { "dependencies": { "@tufjs/canonical-json": "2.0.0", "minimatch": "^9.0.3" } }, "sha512-c8nj8BaOExmZKO2DXhDfegyhSGcG9E/mPN3U13L+/PsoWm1uaGiHHjxqSHQiasDBQwDA3aHuw9+9spYAP1qvvg=="], 1591 + 1592 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/sigstore/@sigstore/tuf/tuf-js/debug": ["debug@4.3.4", "", { "dependencies": { "ms": "2.1.2" } }, "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ=="], 1593 + 1594 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/sigstore/@sigstore/tuf/tuf-js/make-fetch-happen": ["make-fetch-happen@13.0.0", "", { "dependencies": { "@npmcli/agent": "^2.0.0", "cacache": "^18.0.0", "http-cache-semantics": "^4.1.1", "is-lambda": "^1.0.1", "minipass": "^7.0.2", "minipass-fetch": "^3.0.0", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "negotiator": "^0.6.3", "promise-retry": "^2.0.1", "ssri": "^10.0.0" } }, "sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A=="], 1595 + 1596 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/@npmcli/run-script/node-gyp/glob/path-scurry": ["path-scurry@1.10.2", "", { "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA=="], 1597 + 1598 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/@npmcli/run-script/node-gyp/make-fetch-happen/@npmcli/agent": ["@npmcli/agent@2.2.1", "", { "dependencies": { "agent-base": "^7.1.0", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.1", "lru-cache": "^10.0.1", "socks-proxy-agent": "^8.0.1" } }, "sha512-H4FrOVtNyWC8MUwL3UfjOsAihHvT1Pe8POj3JvjXhSTJipsZMtgUALCT4mGyYZNxymkUfOw3PUj6dE4QPp6osQ=="], 1599 + 1600 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/@npmcli/run-script/node-gyp/make-fetch-happen/minipass-fetch": ["minipass-fetch@3.0.4", "", { "dependencies": { "minipass": "^7.0.3", "minipass-sized": "^1.0.3", "minizlib": "^2.1.2" }, "optionalDependencies": { "encoding": "^0.1.13" } }, "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg=="], 1601 + 1602 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/@npmcli/run-script/node-gyp/make-fetch-happen/negotiator": ["negotiator@0.6.3", "", {}, "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="], 1603 + 1604 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/sigstore/@sigstore/sign/make-fetch-happen/@npmcli/agent": ["@npmcli/agent@2.2.1", "", { "dependencies": { "agent-base": "^7.1.0", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.1", "lru-cache": "^10.0.1", "socks-proxy-agent": "^8.0.1" } }, "sha512-H4FrOVtNyWC8MUwL3UfjOsAihHvT1Pe8POj3JvjXhSTJipsZMtgUALCT4mGyYZNxymkUfOw3PUj6dE4QPp6osQ=="], 1605 + 1606 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/sigstore/@sigstore/sign/make-fetch-happen/minipass-fetch": ["minipass-fetch@3.0.4", "", { "dependencies": { "minipass": "^7.0.3", "minipass-sized": "^1.0.3", "minizlib": "^2.1.2" }, "optionalDependencies": { "encoding": "^0.1.13" } }, "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg=="], 1607 + 1608 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/sigstore/@sigstore/sign/make-fetch-happen/negotiator": ["negotiator@0.6.3", "", {}, "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="], 1609 + 1610 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/sigstore/@sigstore/tuf/tuf-js/@tufjs/models": ["@tufjs/models@2.0.0", "", { "dependencies": { "@tufjs/canonical-json": "2.0.0", "minimatch": "^9.0.3" } }, "sha512-c8nj8BaOExmZKO2DXhDfegyhSGcG9E/mPN3U13L+/PsoWm1uaGiHHjxqSHQiasDBQwDA3aHuw9+9spYAP1qvvg=="], 1611 + 1612 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/sigstore/@sigstore/tuf/tuf-js/debug": ["debug@4.3.4", "", { "dependencies": { "ms": "2.1.2" } }, "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ=="], 1613 + 1614 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/sigstore/@sigstore/tuf/tuf-js/make-fetch-happen": ["make-fetch-happen@13.0.0", "", { "dependencies": { "@npmcli/agent": "^2.0.0", "cacache": "^18.0.0", "http-cache-semantics": "^4.1.1", "is-lambda": "^1.0.1", "minipass": "^7.0.2", "minipass-fetch": "^3.0.0", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "negotiator": "^0.6.3", "promise-retry": "^2.0.1", "ssri": "^10.0.0" } }, "sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A=="], 1615 + 1616 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/run-script/node-gyp/make-fetch-happen/@npmcli/agent/socks-proxy-agent/debug": ["debug@4.3.4", "", { "dependencies": { "ms": "2.1.2" } }, "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ=="], 1617 + 1618 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/run-script/node-gyp/make-fetch-happen/@npmcli/agent/socks-proxy-agent/socks": ["socks@2.8.1", "", { "dependencies": { "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" } }, "sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ=="], 1619 + 1620 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/run-script/node-gyp/make-fetch-happen/minipass-fetch/minizlib/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], 1621 + 1622 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/npm-registry-fetch/make-fetch-happen/@npmcli/agent/socks-proxy-agent/debug/ms": ["ms@2.1.2", "", {}, "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="], 1623 + 1624 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/npm-registry-fetch/make-fetch-happen/@npmcli/agent/socks-proxy-agent/socks/ip-address": ["ip-address@9.0.5", "", { "dependencies": { "jsbn": "1.1.0", "sprintf-js": "^1.1.3" } }, "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g=="], 1625 + 1626 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/sigstore/@sigstore/sign/make-fetch-happen/@npmcli/agent/lru-cache": ["lru-cache@10.2.0", "", {}, "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q=="], 1627 + 1628 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/sigstore/@sigstore/sign/make-fetch-happen/@npmcli/agent/socks-proxy-agent": ["socks-proxy-agent@8.0.2", "", { "dependencies": { "agent-base": "^7.0.2", "debug": "^4.3.4", "socks": "^2.7.1" } }, "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g=="], 1629 + 1630 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/sigstore/@sigstore/sign/make-fetch-happen/minipass-fetch/minizlib": ["minizlib@2.1.2", "", { "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" } }, "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg=="], 1631 + 1632 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/sigstore/@sigstore/tuf/tuf-js/@tufjs/models/minimatch": ["minimatch@9.0.3", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg=="], 1633 + 1634 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/sigstore/@sigstore/tuf/tuf-js/debug/ms": ["ms@2.1.2", "", {}, "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="], 1635 + 1636 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/sigstore/@sigstore/tuf/tuf-js/make-fetch-happen/@npmcli/agent": ["@npmcli/agent@2.2.1", "", { "dependencies": { "agent-base": "^7.1.0", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.1", "lru-cache": "^10.0.1", "socks-proxy-agent": "^8.0.1" } }, "sha512-H4FrOVtNyWC8MUwL3UfjOsAihHvT1Pe8POj3JvjXhSTJipsZMtgUALCT4mGyYZNxymkUfOw3PUj6dE4QPp6osQ=="], 1637 + 1638 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/sigstore/@sigstore/tuf/tuf-js/make-fetch-happen/minipass-fetch": ["minipass-fetch@3.0.4", "", { "dependencies": { "minipass": "^7.0.3", "minipass-sized": "^1.0.3", "minizlib": "^2.1.2" }, "optionalDependencies": { "encoding": "^0.1.13" } }, "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg=="], 1639 + 1640 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/sigstore/@sigstore/tuf/tuf-js/make-fetch-happen/negotiator": ["negotiator@0.6.3", "", {}, "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="], 1641 + 1642 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/@npmcli/run-script/node-gyp/glob/path-scurry/lru-cache": ["lru-cache@10.2.0", "", {}, "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q=="], 1643 + 1644 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/@npmcli/run-script/node-gyp/make-fetch-happen/@npmcli/agent/lru-cache": ["lru-cache@10.2.0", "", {}, "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q=="], 1645 + 1646 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/@npmcli/run-script/node-gyp/make-fetch-happen/@npmcli/agent/socks-proxy-agent": ["socks-proxy-agent@8.0.2", "", { "dependencies": { "agent-base": "^7.0.2", "debug": "^4.3.4", "socks": "^2.7.1" } }, "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g=="], 1647 + 1648 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/@npmcli/run-script/node-gyp/make-fetch-happen/minipass-fetch/minizlib": ["minizlib@2.1.2", "", { "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" } }, "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg=="], 1649 + 1650 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/sigstore/@sigstore/sign/make-fetch-happen/@npmcli/agent/lru-cache": ["lru-cache@10.2.0", "", {}, "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q=="], 1651 + 1652 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/sigstore/@sigstore/sign/make-fetch-happen/@npmcli/agent/socks-proxy-agent": ["socks-proxy-agent@8.0.2", "", { "dependencies": { "agent-base": "^7.0.2", "debug": "^4.3.4", "socks": "^2.7.1" } }, "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g=="], 1653 + 1654 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/sigstore/@sigstore/sign/make-fetch-happen/minipass-fetch/minizlib": ["minizlib@2.1.2", "", { "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" } }, "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg=="], 1655 + 1656 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/sigstore/@sigstore/tuf/tuf-js/@tufjs/models/minimatch": ["minimatch@9.0.3", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg=="], 1657 + 1658 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/sigstore/@sigstore/tuf/tuf-js/debug/ms": ["ms@2.1.2", "", {}, "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="], 1659 + 1660 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/sigstore/@sigstore/tuf/tuf-js/make-fetch-happen/@npmcli/agent": ["@npmcli/agent@2.2.1", "", { "dependencies": { "agent-base": "^7.1.0", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.1", "lru-cache": "^10.0.1", "socks-proxy-agent": "^8.0.1" } }, "sha512-H4FrOVtNyWC8MUwL3UfjOsAihHvT1Pe8POj3JvjXhSTJipsZMtgUALCT4mGyYZNxymkUfOw3PUj6dE4QPp6osQ=="], 1661 + 1662 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/sigstore/@sigstore/tuf/tuf-js/make-fetch-happen/minipass-fetch": ["minipass-fetch@3.0.4", "", { "dependencies": { "minipass": "^7.0.3", "minipass-sized": "^1.0.3", "minizlib": "^2.1.2" }, "optionalDependencies": { "encoding": "^0.1.13" } }, "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg=="], 1663 + 1664 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/sigstore/@sigstore/tuf/tuf-js/make-fetch-happen/negotiator": ["negotiator@0.6.3", "", {}, "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="], 1665 + 1666 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/run-script/node-gyp/make-fetch-happen/@npmcli/agent/socks-proxy-agent/debug/ms": ["ms@2.1.2", "", {}, "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="], 1667 + 1668 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/run-script/node-gyp/make-fetch-happen/@npmcli/agent/socks-proxy-agent/socks/ip-address": ["ip-address@9.0.5", "", { "dependencies": { "jsbn": "1.1.0", "sprintf-js": "^1.1.3" } }, "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g=="], 1669 + 1670 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/npm-registry-fetch/make-fetch-happen/@npmcli/agent/socks-proxy-agent/socks/ip-address/sprintf-js": ["sprintf-js@1.1.3", "", {}, "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA=="], 1671 + 1672 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/sigstore/@sigstore/sign/make-fetch-happen/@npmcli/agent/socks-proxy-agent/debug": ["debug@4.3.4", "", { "dependencies": { "ms": "2.1.2" } }, "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ=="], 1673 + 1674 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/sigstore/@sigstore/sign/make-fetch-happen/@npmcli/agent/socks-proxy-agent/socks": ["socks@2.8.1", "", { "dependencies": { "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" } }, "sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ=="], 1675 + 1676 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/sigstore/@sigstore/sign/make-fetch-happen/minipass-fetch/minizlib/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], 1677 + 1678 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/sigstore/@sigstore/tuf/tuf-js/make-fetch-happen/@npmcli/agent/lru-cache": ["lru-cache@10.2.0", "", {}, "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q=="], 1679 + 1680 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/sigstore/@sigstore/tuf/tuf-js/make-fetch-happen/@npmcli/agent/socks-proxy-agent": ["socks-proxy-agent@8.0.2", "", { "dependencies": { "agent-base": "^7.0.2", "debug": "^4.3.4", "socks": "^2.7.1" } }, "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g=="], 1681 + 1682 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/sigstore/@sigstore/tuf/tuf-js/make-fetch-happen/minipass-fetch/minizlib": ["minizlib@2.1.2", "", { "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" } }, "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg=="], 1683 + 1684 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/@npmcli/run-script/node-gyp/make-fetch-happen/@npmcli/agent/socks-proxy-agent/debug": ["debug@4.3.4", "", { "dependencies": { "ms": "2.1.2" } }, "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ=="], 1685 + 1686 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/@npmcli/run-script/node-gyp/make-fetch-happen/@npmcli/agent/socks-proxy-agent/socks": ["socks@2.8.1", "", { "dependencies": { "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" } }, "sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ=="], 1687 + 1688 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/@npmcli/run-script/node-gyp/make-fetch-happen/minipass-fetch/minizlib/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], 1689 + 1690 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/sigstore/@sigstore/sign/make-fetch-happen/@npmcli/agent/socks-proxy-agent/debug": ["debug@4.3.4", "", { "dependencies": { "ms": "2.1.2" } }, "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ=="], 1691 + 1692 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/sigstore/@sigstore/sign/make-fetch-happen/@npmcli/agent/socks-proxy-agent/socks": ["socks@2.8.1", "", { "dependencies": { "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" } }, "sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ=="], 1693 + 1694 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/sigstore/@sigstore/sign/make-fetch-happen/minipass-fetch/minizlib/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], 1695 + 1696 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/sigstore/@sigstore/tuf/tuf-js/make-fetch-happen/@npmcli/agent/lru-cache": ["lru-cache@10.2.0", "", {}, "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q=="], 1697 + 1698 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/sigstore/@sigstore/tuf/tuf-js/make-fetch-happen/@npmcli/agent/socks-proxy-agent": ["socks-proxy-agent@8.0.2", "", { "dependencies": { "agent-base": "^7.0.2", "debug": "^4.3.4", "socks": "^2.7.1" } }, "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g=="], 1699 + 1700 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/sigstore/@sigstore/tuf/tuf-js/make-fetch-happen/minipass-fetch/minizlib": ["minizlib@2.1.2", "", { "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" } }, "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg=="], 1701 + 1702 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/run-script/node-gyp/make-fetch-happen/@npmcli/agent/socks-proxy-agent/socks/ip-address/sprintf-js": ["sprintf-js@1.1.3", "", {}, "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA=="], 1703 + 1704 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/sigstore/@sigstore/sign/make-fetch-happen/@npmcli/agent/socks-proxy-agent/debug/ms": ["ms@2.1.2", "", {}, "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="], 1705 + 1706 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/sigstore/@sigstore/sign/make-fetch-happen/@npmcli/agent/socks-proxy-agent/socks/ip-address": ["ip-address@9.0.5", "", { "dependencies": { "jsbn": "1.1.0", "sprintf-js": "^1.1.3" } }, "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g=="], 1707 + 1708 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/sigstore/@sigstore/tuf/tuf-js/make-fetch-happen/@npmcli/agent/socks-proxy-agent/socks": ["socks@2.8.1", "", { "dependencies": { "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" } }, "sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ=="], 1709 + 1710 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/sigstore/@sigstore/tuf/tuf-js/make-fetch-happen/minipass-fetch/minizlib/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], 1711 + 1712 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/@npmcli/run-script/node-gyp/make-fetch-happen/@npmcli/agent/socks-proxy-agent/debug/ms": ["ms@2.1.2", "", {}, "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="], 1713 + 1714 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/@npmcli/run-script/node-gyp/make-fetch-happen/@npmcli/agent/socks-proxy-agent/socks/ip-address": ["ip-address@9.0.5", "", { "dependencies": { "jsbn": "1.1.0", "sprintf-js": "^1.1.3" } }, "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g=="], 1715 + 1716 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/sigstore/@sigstore/sign/make-fetch-happen/@npmcli/agent/socks-proxy-agent/debug/ms": ["ms@2.1.2", "", {}, "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="], 1717 + 1718 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/sigstore/@sigstore/sign/make-fetch-happen/@npmcli/agent/socks-proxy-agent/socks/ip-address": ["ip-address@9.0.5", "", { "dependencies": { "jsbn": "1.1.0", "sprintf-js": "^1.1.3" } }, "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g=="], 1719 + 1720 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/sigstore/@sigstore/tuf/tuf-js/make-fetch-happen/@npmcli/agent/socks-proxy-agent/socks": ["socks@2.8.1", "", { "dependencies": { "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" } }, "sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ=="], 1721 + 1722 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/sigstore/@sigstore/tuf/tuf-js/make-fetch-happen/minipass-fetch/minizlib/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], 1723 + 1724 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/sigstore/@sigstore/sign/make-fetch-happen/@npmcli/agent/socks-proxy-agent/socks/ip-address/sprintf-js": ["sprintf-js@1.1.3", "", {}, "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA=="], 1725 + 1726 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/sigstore/@sigstore/tuf/tuf-js/make-fetch-happen/@npmcli/agent/socks-proxy-agent/socks/ip-address": ["ip-address@9.0.5", "", { "dependencies": { "jsbn": "1.1.0", "sprintf-js": "^1.1.3" } }, "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g=="], 1727 + 1728 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/@npmcli/run-script/node-gyp/make-fetch-happen/@npmcli/agent/socks-proxy-agent/socks/ip-address/sprintf-js": ["sprintf-js@1.1.3", "", {}, "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA=="], 1729 + 1730 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/sigstore/@sigstore/sign/make-fetch-happen/@npmcli/agent/socks-proxy-agent/socks/ip-address/sprintf-js": ["sprintf-js@1.1.3", "", {}, "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA=="], 1731 + 1732 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/sigstore/@sigstore/tuf/tuf-js/make-fetch-happen/@npmcli/agent/socks-proxy-agent/socks/ip-address": ["ip-address@9.0.5", "", { "dependencies": { "jsbn": "1.1.0", "sprintf-js": "^1.1.3" } }, "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g=="], 1733 + 1734 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/pacote/sigstore/@sigstore/tuf/tuf-js/make-fetch-happen/@npmcli/agent/socks-proxy-agent/socks/ip-address/sprintf-js": ["sprintf-js@1.1.3", "", {}, "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA=="], 1735 + 1736 + "@pulumi/docker/@pulumi/pulumi/@npmcli/arborist/@npmcli/metavuln-calculator/pacote/sigstore/@sigstore/tuf/tuf-js/make-fetch-happen/@npmcli/agent/socks-proxy-agent/socks/ip-address/sprintf-js": ["sprintf-js@1.1.3", "", {}, "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA=="], 1184 1737 } 1185 1738 }
-28
eslint.config.ts
··· 1 - import eslint from "@eslint/js"; 2 - import tseslint from "typescript-eslint"; 3 - // @ts-expect-error bleh 4 - import pulumi from "@pulumi/eslint-plugin"; 5 - 6 - export default tseslint.config( 7 - eslint.configs.recommended, 8 - tseslint.configs.recommended, 9 - { 10 - languageOptions: { 11 - parserOptions: { 12 - projectService: true, 13 - tsconfigRootDir: import.meta.dirname, 14 - }, 15 - }, 16 - }, 17 - { 18 - rules: { 19 - "@typescript-eslint/no-unused-vars": "off", 20 - }, 21 - }, 22 - { 23 - plugins: { pulumi }, 24 - rules: { 25 - "pulumi/no-output-in-template-literal": "error", 26 - }, 27 - }, 28 - );
+2
index.ts
··· 1 + import "./services/haring"; 2 + import "./services/kaneelnas";
+28 -12
lib/service/mounts.ts
··· 14 14 target, 15 15 type = "bind", 16 16 bindOptions, 17 - readOnly = false, 17 + readOnly, 18 18 kind = "directory", 19 19 }: Optional<MountOpts, "target" | "type">): MountOpts { 20 20 if (!source) { ··· 38 38 } 39 39 40 40 type OldMountOpts = Unwrap< 41 - MountOpts["bindOptions"] & 42 - CustomMountOpts & { readOnly: MountOpts["readOnly"] } 41 + MountOpts["bindOptions"] & CustomMountOpts & Pick<MountOpts, "readOnly"> 43 42 >; 44 43 45 44 export const mount = ( ··· 59 58 }); 60 59 }; 61 60 62 - export const gitMount = _mount({ source: "/home/bas/git" }); 61 + export const gitMount = (hostSubdir: string = "", containerDir?: string) => 62 + _mount({ source: `/home/bas/git/${hostSubdir}`, target: containerDir }); 63 63 64 - export const ssdcacheMount = (source: string = "", target?: string) => 65 - _mount({ source: `/home/bas/data/ssdcache/${source}`, target }); 64 + export const dataMount = (hostSubdir: string = "", containerDir?: string) => 65 + _mount({ source: `/home/bas/data/${hostSubdir}`, target: containerDir }); 66 66 67 - export const dataMount = (source: string = "", target?: string) => 68 - _mount({ source: `/home/bas/data/${source}`, target }); 67 + export const ssdcacheMount = (hostSubdir: string = "", containerDir?: string) => 68 + dataMount(`ssdcache/${hostSubdir}`, containerDir); 69 69 70 - export const confMount = (source: string = "", target?: string) => 71 - _mount({ source: `/home/bas/docker/${source}`, target: target ?? "/config" }); 70 + export const kaneelnasMount = (hostSubdir: string = "", containerDir?: string) => 71 + dataMount(`kaneelnas/${hostSubdir}`, containerDir); 72 72 73 - export const nvmeMount = (source: string = "", target?: string) => 74 - _mount({ source: `/mnt/nvme1/${source}`, target }); 73 + export const confMount = ( 74 + hostSubdir: string, 75 + containerDir: string = "/config", 76 + opts?: CustomMountOpts, 77 + ) => 78 + _mount({ 79 + source: `/home/bas/docker/${hostSubdir}`, 80 + target: containerDir, 81 + ...opts, 82 + }); 83 + 84 + export const nvmeMount = (hostSubdir: string = "", target?: string) => 85 + _mount({ source: `/mnt/nvme1/${hostSubdir}`, target }); 75 86 76 87 export const dockerSocket = _mount({ 77 88 source: "/var/run/docker.sock", 78 89 kind: "file", 79 90 readOnly: true, 91 + }); 92 + 93 + export const dockerSocketRw = _mount({ 94 + source: "/var/run/docker.sock", 95 + kind: "file", 80 96 }); 81 97 82 98 export const resolvConf = _mount({
+1 -1
lib/service/networks.ts
··· 1 1 import docker from "@pulumi/docker"; 2 2 import { haringDockerProvider } from "./providers"; 3 3 4 - export const network = new docker.Network( 4 + export const defaultNetwork = new docker.Network( 5 5 "haring", 6 6 { 7 7 name: "haring",
+78 -66
lib/service/ports.ts
··· 1 - import { output } from "@pulumi/pulumi"; 1 + import { output, UnwrappedObject } from "@pulumi/pulumi"; 2 2 import { ContainerServiceArgs } from "./service"; 3 + import { ContainerPort } from "@pulumi/docker/types/input"; 3 4 4 - function parsePort(input: string | number, localOnly: boolean = false) { 5 - input = String(input); 5 + function parsePort( 6 + input: string | number | UnwrappedObject<ContainerPort>, 7 + localOnly: boolean = false, 8 + ) { 9 + let ip = localOnly ? "127.0.0.1" : "0.0.0.0"; 10 + let internal: string | number, external: string | number | undefined; 11 + let protocol: "tcp" | "udp" | string = "tcp"; 6 12 7 - const slashIdx = input.lastIndexOf("/"); 8 - let protocol: "tcp" | "udp" = "tcp"; 9 - if (slashIdx !== -1) { 10 - const proto = input.slice(slashIdx + 1); 11 - protocol = proto === "udp" ? "udp" : "tcp"; 12 - input = input.slice(0, slashIdx); 13 - } 13 + if (typeof input === "object") { 14 + ip = input.ip ?? ip; 15 + internal = input.internal; 16 + external = input.external ?? internal; 17 + protocol = input.protocol ?? protocol; 18 + } else { 19 + if (typeof input === "number") { 20 + input = String(input); 21 + } 14 22 15 - let ip = localOnly ? "127.0.0.1" : "0.0.0.0"; 16 - if (input.startsWith("[")) { 17 - const closingBracketIdx = input.indexOf("]"); 18 - if (closingBracketIdx === -1) { 19 - throw new Error(`missing ']' in port string ${input}`); 23 + const slashIdx = input.lastIndexOf("/"); 24 + if (slashIdx !== -1) { 25 + protocol = input.slice(slashIdx + 1); 26 + input = input.slice(0, slashIdx); 20 27 } 21 - ip = input.slice(1, closingBracketIdx); 22 - input = input.slice(closingBracketIdx + 1); 23 - } 24 28 25 - const parts = input.split(":").filter(Boolean); 29 + if (input.startsWith("[")) { 30 + const closingBracketIdx = input.indexOf("]"); 31 + if (closingBracketIdx === -1) { 32 + throw new Error(`missing ']' in port string ${input}`); 33 + } 34 + ip = input.slice(1, closingBracketIdx); 35 + input = input.slice(closingBracketIdx + 1); 36 + } 26 37 27 - let external: string, internal: string | undefined; 28 - if (parts.length === 3) { 29 - [ip, external, internal] = parts; 30 - } else if (parts.length === 2) { 31 - if (parts[0].includes(".")) { 32 - [ip, external] = parts; 38 + const parts = input.split(":").filter(Boolean); 39 + 40 + if (parts.length === 3) { 41 + [ip, external, internal] = parts; 42 + } else if (parts.length === 2) { 43 + if (parts[0].includes(".")) { 44 + [ip, internal] = parts; 45 + } else { 46 + [external, internal] = parts; 47 + } 48 + } else if (parts.length === 1) { 49 + internal = parts[0]; 33 50 } else { 34 - [external, internal] = parts; 51 + throw new Error(`too many segments for port string ${input}`); 35 52 } 36 - } else if (parts.length === 1) { 37 - external = parts[0]; 38 - } else { 39 - throw new Error(`too many segments for port string ${input}`); 53 + 54 + internal = parseInt(internal, 10); 55 + external = typeof external === "string" ? parseInt(external, 10) : internal; 40 56 } 41 57 42 - const portSpecs = [ 43 - { 44 - ip, 45 - internal: parseInt(internal ?? external, 10), 46 - external: parseInt(external, 10), 47 - protocol, 48 - }, 49 - ]; 58 + const portSpec = { ip, internal, external, protocol }; 50 59 51 60 if (ip === "0.0.0.0") { 52 - portSpecs.push({ 53 - ip: "::", 54 - internal: parseInt(internal ?? external, 10), 55 - external: parseInt(external, 10), 56 - protocol, 57 - }); 61 + return [ 62 + { 63 + ...portSpec, 64 + ip: "::", 65 + }, 66 + portSpec, 67 + ]; 68 + } else { 69 + return portSpec; 58 70 } 59 - 60 - return portSpecs; 61 71 } 62 72 63 - export function convertPorts( 64 - ports: NonNullable<ContainerServiceArgs["ports"]>, 65 - ) { 73 + export function convertPorts(ports: NonNullable<ContainerServiceArgs["ports"]>) { 66 74 return output(ports).apply((ports) => 67 - ports.flatMap((port) => { 68 - if (typeof port === "object") { 69 - return port; 70 - } 75 + ports 76 + .flatMap((port) => parsePort(port)) 77 + // recreating pulumi-docker's internal state port order (?) 78 + .sort((a, b) => { 79 + if (a.external !== b.external) { 80 + return a.external - b.external; 81 + } 71 82 72 - return parsePort(port); 73 - }), 83 + if (a.internal !== b.internal) { 84 + return a.internal - b.internal; 85 + } 86 + 87 + if (a.protocol !== b.protocol) { 88 + return a.protocol.localeCompare(b.protocol); 89 + } 90 + 91 + if (a.ip !== b.ip) { 92 + return b.ip.localeCompare(a.ip); 93 + } 94 + 95 + return 0; 96 + }), 74 97 ); 75 - // .sort((a, b) => { 76 - // if (a.protocol !== b.protocol) { 77 - // return a.protocol.localeCompare(b.protocol); 78 - // } 79 - // 80 - // if (a.ip !== b.ip) { 81 - // return a.ip.localeCompare(b.ip); 82 - // } 83 - // 84 - // return a.internal - b.internal; 85 - // }) 86 98 }
+78 -85
lib/service/service.ts
··· 2 2 import type { input } from "@pulumi/command/types"; 3 3 import docker from "@pulumi/docker"; 4 4 import type { Input, Output } from "@pulumi/pulumi"; 5 - import pulumi, { interpolate } from "@pulumi/pulumi"; 5 + import pulumi, { all, output } from "@pulumi/pulumi"; 6 6 import path from "path"; 7 - import { network } from "./networks"; 7 + import { defaultNetwork } from "./networks"; 8 8 import { convertLabels, convertEnvs } from "./util"; 9 9 import { convertPorts } from "./ports"; 10 10 import { getEnv } from "~lib/env"; 11 11 import { haringDockerProvider } from "./providers"; 12 12 import { MountOpts } from "./mounts"; 13 13 14 - const defaultConnection = { 14 + export const defaultConnection = { 15 15 host: getEnv("CONNECTION_HOST"), 16 16 user: getEnv("CONNECTION_USER"), 17 + port: Number(getEnv("CONNECTION_PORT")), 17 18 // password: getEnv("CONNECTION.PASSWORD"), 18 19 } satisfies input.remote.ConnectionArgs; 19 20 20 21 type Env = string | number | boolean; 21 22 22 23 export type ContainerServiceArgs = Partial< 23 - Omit< 24 - docker.ContainerArgs, 25 - "ports" | "labels" | "mounts" | "envs" | "capabilities" 26 - > & { 24 + Omit<docker.ContainerArgs, "ports" | "labels" | "mounts" | "envs" | "capabilities"> & { 27 25 enabled: boolean; 26 + localImage: Input<string>; 28 27 disabled: boolean; 29 28 servicePort: number; 30 29 subdomain: string; 31 30 hostRule: string; 31 + hostRulePriority: number; 32 32 ports: Input<Input<number | string | docker.types.input.ContainerPort>[]>; 33 33 middlewares: string[]; 34 34 otherServicePorts: Record<string, number>; 35 - labels: Record<string, string>; 35 + labels: Input<Record<string, Input<string | number | undefined>> | undefined>; 36 36 mounts: MountOpts[]; 37 37 envs: Input<Record<string, Input<Env | Env[]>>>; 38 38 capabilities: string[] | { adds?: string[]; drops?: string[] }; 39 39 internalHttps: boolean; 40 40 dontUpdateIf: () => boolean; 41 41 commandConnection: input.remote.ConnectionArgs; 42 + monitor: boolean; 42 43 } 43 44 >; 45 + 46 + export class ServiceDef {} 44 47 45 48 // TODO: turn ContainerService into a factory function like https://sst.dev/docs/examples/#api-gateway-auth 46 49 class ContainerService extends pulumi.ComponentResource { 47 50 public readonly container: docker.Container | undefined; 48 - public readonly localUrl: string | undefined; 51 + public readonly localUrl: Output<string> | undefined; 49 52 public readonly remoteUrl: string | undefined; 50 - public readonly ip: Output<string | undefined>; 53 + public readonly ip: Output<string | undefined> | undefined; 51 54 public readonly enabled: boolean; 52 55 private readonly commandConnection: input.remote.ConnectionArgs; 56 + private readonly dependsOn: Input<pulumi.Resource>[] = []; 53 57 54 - constructor( 55 - name: string, 56 - _args: ContainerServiceArgs, 57 - opts?: pulumi.ComponentResourceOptions, 58 - ) { 58 + constructor(name: string, _args: ContainerServiceArgs, opts?: pulumi.CustomResourceOptions) { 59 59 super("bas:docker:ContainerService", name, _args, opts); 60 60 61 61 const args = { ··· 77 77 78 78 if (!args.enabled || args.disabled) { 79 79 this.enabled = false; 80 - this.ip = pulumi.output(undefined); 81 80 return; 82 81 } 83 82 84 - const mounts = pulumi.output(args.mounts).apply((mounts) => { 83 + if (opts?.dependsOn) { 84 + this.dependsOn.push(...(Array.isArray(opts.dependsOn) ? opts.dependsOn : [])); 85 + } 86 + 87 + const mounts = output(args.mounts).apply((mounts) => { 85 88 let i = 0; 86 89 for (const mount of mounts) { 87 90 if (mount.type === "bind" && mount.source) { 88 - const dir = 89 - mount.kind === "file" ? path.dirname(mount.source) : mount.source; 90 - this.createRemoteDir(dir, name, i); 91 + const dir = mount.kind === "file" ? path.dirname(mount.source) : mount.source; 92 + this.dependsOn.push(this.createRemoteDir(dir, name, i)); 91 93 i++; 92 94 } 93 95 94 96 delete mount.kind; 95 97 } 96 98 97 - // mounts.push({ 98 - // type: "bind", 99 - // source: "/run/systemd/resolve/stub-resolv.conf", 100 - // target: "/etc/resolv.conf", 101 - // readOnly: true, 102 - // }); 103 - 104 99 return mounts; 105 100 }); 106 101 107 - const imageManifest = docker.getRegistryImageOutput( 108 - { name: args.image ?? `lscr.io/linuxserver/${name}` }, 109 - { parent: this }, 110 - ); 102 + const image = 103 + args.localImage ?? 104 + output(args.image).apply(async (image) => 105 + docker 106 + .getRegistryImage({ name: image ?? `lscr.io/linuxserver/${name}` }, { parent: this }) 107 + .then((registryImage) => `${registryImage.name}@${registryImage.sha256Digest}`), 108 + ); 111 109 112 - const image = new docker.RemoteImage( 113 - `${name}`, 114 - { 115 - name: interpolate`${imageManifest.name}@${imageManifest.sha256Digest}`, 116 - keepLocally: true, 117 - }, 118 - { parent: this }, 119 - ); 110 + // image = new docker.RemoteImage( 111 + // `${name}`, 112 + // { 113 + // name: imageRef, 114 + // keepLocally: true, 115 + // }, 116 + // { parent: this }, 117 + // ).repoDigest; 120 118 121 - function createLabels(host: string, port: string) { 122 - const subdomain = host.replace(".bas.sh", ""); 123 - const id = 124 - name + 125 - (subdomain !== args.subdomain && subdomain !== name 126 - ? "-" + subdomain.replaceAll(/\.|\//g, "-") 127 - : ""); 119 + function createLabels(host: string, port: string, priority?: number) { 120 + const id = host.replaceAll(/[^\w]+/g, "-"); 128 121 129 122 return { 130 123 "traefik.enable": "true", 131 124 [`traefik.http.services.${id}.loadbalancer.server.port`]: port, 132 125 [`traefik.http.routers.${id}.service`]: id, 133 - [`traefik.http.routers.${id}.rule`]: `Host(\`${host}\`)`, 126 + [`traefik.http.routers.${id}.rule`]: 127 + host.includes("/") || host.includes("(") ? host : `Host(\`${host}\`)`, 134 128 [`traefik.http.routers.${id}.entrypoints`]: "https", 135 - [`traefik.http.routers.${id}.middlewares`]: [ 136 - "cloudflare", 137 - ...args.middlewares, 138 - ].join(","), 129 + [`traefik.http.routers.${id}.middlewares`]: ["cloudflare", ...args.middlewares].join(","), 130 + ...(priority && { 131 + [`traefik.http.routers.${id}.priority`]: priority, 132 + }), 139 133 ...(port === "443" && { 140 134 [`traefik.http.services.${id}.loadbalancer.server.scheme`]: "https", 141 135 }), 136 + ...(args.monitor && { 137 + [`kuma.${id}.http.name`]: name, 138 + [`kuma.${id}.http.url`]: `http://${name}:${port}`, 139 + }), 142 140 }; 143 141 } 144 142 145 - let labels = {}; 143 + let labels: Record<string, string | number> = {}; 146 144 if (args.servicePort) { 147 - this.localUrl = `http://${args.networkMode === "host" ? "host.docker.internal" : name}:${args.servicePort}`; 145 + this.localUrl = all([args.networkMode, args.servicePort]).apply( 146 + ([networkMode, servicePort]) => 147 + networkMode === "host" || networkMode?.startsWith("container:") 148 + ? `http://host.docker.internal:${servicePort}` 149 + : `http://${name}:${servicePort}`, 150 + ); 148 151 const host = args.hostRule ?? `${args.subdomain ?? name}.bas.sh`; 149 152 this.remoteUrl = `https://${host}`; 150 153 151 154 labels = { 152 155 ...labels, 153 - ...createLabels(host, args.servicePort.toString()), 156 + ...createLabels(host, args.servicePort.toString(), args.hostRulePriority), 154 157 }; 155 158 } 156 159 ··· 170 173 }; 171 174 } 172 175 173 - labels = { 176 + const allLabels = output(args.labels).apply((inputLabels) => ({ 174 177 ...labels, 175 - ...args.labels, 176 - }; 178 + ...inputLabels, 179 + })); 177 180 178 - const envs = { 181 + args.envs = output(args.envs).apply((envs) => ({ 179 182 PUID: `${getEnv("PUID")}`, 180 183 PGID: `${getEnv("PGID")}`, 181 184 TZ: `${getEnv("TZ")}`, 182 - ...args.envs, 183 - }; 184 - 185 - const ports = convertPorts(args.ports); 186 - 187 - // pulumi.output(ports).apply((ports) => { 188 - // if (name === "minecraft-akio") console.dir(ports, { depth: null }); 189 - // }); 185 + ...envs, 186 + })); 190 187 191 188 const capabilities = Array.isArray(args.capabilities) 192 189 ? { adds: args.capabilities } 193 190 : args.capabilities; 194 191 195 - const ensureCapPrefix = (cap: string) => 196 - cap.startsWith("CAP_") ? cap : `CAP_${cap}`; 192 + const ensureCapPrefix = (cap: string) => (cap.startsWith("CAP_") ? cap : `CAP_${cap}`); 197 193 198 194 if (capabilities) { 199 195 capabilities.adds &&= capabilities.adds.map(ensureCapPrefix); ··· 204 200 name, 205 201 { 206 202 ...args, 207 - image: image.imageId, 208 - name: args.name ?? name, 203 + image, 204 + ...(opts?.deleteBeforeReplace !== false && { name: args.name ?? name }), 209 205 command: args.command, 210 - restart: "always", 211 - labels: convertLabels(labels), 212 - envs: convertEnvs(envs), 213 - ports, 206 + restart: args.restart ?? "unless-stopped", 207 + labels: allLabels.apply(convertLabels), 208 + envs: convertEnvs(args.envs), 209 + ports: convertPorts(args.ports), 214 210 mounts, 215 211 volumes: args.volumes, 212 + logDriver: "local", 216 213 networkMode: args.networkMode ?? "bridge", 217 214 // TODO: healthchecks 218 215 // healthcheck: {tests} ··· 220 217 ? [] 221 218 : pulumi 222 219 .output(args.networksAdvanced) 223 - .apply((networksAdvanced) => [ 224 - ...networksAdvanced, 225 - { name: network.name }, 226 - ]), 220 + .apply((networksAdvanced) => [...networksAdvanced, { name: defaultNetwork.name }]), 227 221 hosts: args.networkMode 228 222 ? [] 229 223 : pulumi 230 224 .output(args.hosts) 231 - .apply((hosts) => [ 232 - { host: "host.docker.internal", ip: "host-gateway" }, 233 - ...hosts, 234 - ]), 225 + .apply((hosts) => [{ host: "host.docker.internal", ip: "host-gateway" }, ...hosts]), 235 226 capabilities, 236 227 }, 237 228 { ··· 239 230 deleteBeforeReplace: true, 240 231 replaceOnChanges: ["mounts", "volumes"], 241 232 ignoreChanges: opts?.ignoreChanges, 233 + dependsOn: this.dependsOn, 242 234 ...opts, 243 235 }, 244 236 ); 245 237 246 238 this.ip = pulumi 247 - .all([this.container.networkDatas, network.name]) 239 + .all([this.container.networkDatas, defaultNetwork.name]) 248 240 .apply(([networks, networkName]) => { 249 241 const net = networks?.find((n) => n.networkName === networkName); 250 242 return net?.ipAddress; ··· 256 248 } 257 249 258 250 private createRemoteDir(path: string, name: string, index: number) { 259 - new command.remote.Command( 251 + return new command.remote.Command( 260 252 `mkdir-${name}-${index}`, 261 253 { 262 254 connection: this.commandConnection, ··· 275 267 { 276 268 parent: this, 277 269 deleteBeforeReplace: true, 278 - ignoreChanges: ["connection"], 270 + // ignoreChanges: ["connection"], 279 271 }, 280 272 ); 281 273 } ··· 288 280 ...args, 289 281 interpreter: [ 290 282 "/usr/bin/ssh", 283 + `-p ${defaultConnection.port.toString()}`, 291 284 `${defaultConnection.user}@${defaultConnection.host}`, 292 285 ], 293 286 } satisfies command.local.RunArgs;
+30 -9
lib/service/util.ts
··· 1 + import assert from "assert"; 1 2 import { ContainerServiceArgs } from "./service"; 2 3 import { output } from "@pulumi/pulumi"; 3 4 4 - export function convertLabels( 5 - labels: NonNullable<ContainerServiceArgs["labels"]>, 6 - ) { 7 - return Object.entries(labels).map(([label, value]) => ({ label, value })); 5 + export function convertLabels(labels: Record<string, string | number | undefined>) { 6 + return Object.entries(labels).map(([label, value]) => { 7 + if (value === undefined) { 8 + throw Error(`value for label "${label}" was undefined`); 9 + } 10 + return { label, value: value.toString() }; 11 + }); 8 12 } 9 13 10 14 export function convertEnvs(envs: ContainerServiceArgs["envs"]) { 11 - return output(envs).apply((envs) => { 12 - return Object.entries(envs ?? {}).map( 13 - ([env, value]) => 14 - `${env}=${Array.isArray(value) ? value.join("\n") : value}`, 15 + return output(envs).apply((envs) => 16 + Object.entries(envs ?? {}).map( 17 + ([env, value]) => `${env}=${Array.isArray(value) ? value.join(",") : value}`, 18 + ), 19 + ); 20 + } 21 + 22 + export async function getLatestCommit(url: string) { 23 + const res = await fetch(url); 24 + if (!res.ok) { 25 + throw Error( 26 + `failed to get latest commit for ${url}: ${res.status} ${res.statusText} - ${await res.text()}`, 15 27 ); 16 - }); 28 + } 29 + 30 + const html = await res.text(); 31 + const commit = html.match(/\/commit\/(\w+)/)?.[1]; 32 + return commit; 33 + } 34 + 35 + export function ensure<T>(arg: T): NonNullable<T> { 36 + assert(arg); 37 + return arg; 17 38 }
+29 -19
package.json
··· 1 1 { 2 2 "name": "media-server-stack", 3 - "description": "Pulumi definitions for my media server", 4 - "main": "src/index.ts", 5 - "type": "module", 6 3 "private": true, 4 + "description": "Pulumi definitions for my media server", 7 5 "author": "Bas van den Wollenberg <hi@bas.sh> (https://bas.sh)", 6 + "type": "module", 7 + "main": "index.ts", 8 8 "dependencies": { 9 - "@pulumi/command": "^1.1.0", 10 - "@pulumi/docker": "^4.8.2", 11 - "@pulumi/pulumi": "^3.196.0", 12 - "arktype": "^2.1.22", 9 + "@pulumi/cloudflare": "^6.13.0", 10 + "@pulumi/command": "^1.2.1", 11 + "@pulumi/docker": "^4.11.0", 12 + "@pulumi/docker-build": "^0.0.15", 13 + "@pulumi/pulumi": "^3.225.1", 14 + "@pulumi/std": "^2.3.2", 15 + "arktype": "^2.2.0", 13 16 "dotenv": "^16.6.1", 14 - "ipaddr.js": "^2.2.0", 17 + "ipaddr.js": "^2.3.0", 15 18 "ts-node": "^10.9.2", 16 - "tsx": "^4.20.5", 17 - "typescript": "^5.9.2", 18 - "undici": "^7.16.0", 19 - "up-fetch": "^2.4.0", 20 - "zod": "^4.1.8" 19 + "tsx": "^4.21.0", 20 + "typescript": "^5.9.3", 21 + "undici": "^7.22.0", 22 + "up-fetch": "^2.5.1", 23 + "zod": "^4.3.6" 21 24 }, 22 25 "devDependencies": { 23 - "@eslint/js": "^9.35.0", 26 + "@prettier/plugin-oxc": "^0.1.3", 24 27 "@pulumi/eslint-plugin": "^0.3.1", 25 - "@types/node": "^24.5.0", 26 - "eslint": "^9.35.0", 27 - "jiti": "^2.5.1", 28 - "typescript-eslint": "^8.44.0" 29 - } 28 + "@types/node": "^25.3.5", 29 + "jiti": "^2.6.1", 30 + "oxfmt": "^0.36.0", 31 + "oxlint": "^1.51.0", 32 + "oxlint-tsgolint": "^0.16.0", 33 + "prettier": "^3.8.1" 34 + }, 35 + "trustedDependencies": [ 36 + "@pulumi/docker-build", 37 + "@pulumi/std", 38 + "protobufjs" 39 + ] 30 40 }
+116
patches/@pulumi%2Fpulumi@3.196.0.patch
··· 1 + diff --git a/node_modules/@pulumi/pulumi/.bun-tag-46d0f34eb565d783 b/.bun-tag-46d0f34eb565d783 2 + new file mode 100644 3 + index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 4 + diff --git a/node_modules/@pulumi/pulumi/.bun-tag-48654133d060ad05 b/.bun-tag-48654133d060ad05 5 + new file mode 100644 6 + index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 7 + diff --git a/cmd/run/index.js b/cmd/run/index.js 8 + index 0757cf0d31363909f424a0aee2bcd95f264d1b9f..a5d53602878b12b4a44cf46b590babfdf4ae1da6 100644 9 + --- a/cmd/run/index.js 10 + +++ b/cmd/run/index.js 11 + @@ -152,7 +152,6 @@ async function beforeExitHandler(code) { 12 + // fact. For example, we want to keep track of ScriptId->FileNames so that we can appropriately 13 + // report errors for Functions we cannot serialize. This can only be done (up to Node11 at least) 14 + // by register to hear about scripts being parsed. 15 + -const v8Hooks = __importStar(require("../../runtime/closure/v8Hooks")); 16 + // This is the entrypoint for running a Node.js program with minimal scaffolding. 17 + const minimist_1 = __importDefault(require("minimist")); 18 + function usage() { 19 + @@ -230,7 +229,8 @@ function main(args) { 20 + addToEnvIfDefined("PULUMI_NODEJS_ENGINE", argv["engine"]); 21 + addToEnvIfDefined("PULUMI_NODEJS_SYNC", argv["sync"]); 22 + // Ensure that our v8 hooks have been initialized. Then actually load and run the user program. 23 + - v8Hooks.isInitializedAsync().then(() => { 24 + + const ready = process.versions.bun ? Promise.resolve() : import("../../runtime/closure/v8Hooks.js").then((v8Hooks) => v8Hooks.isInitializedAsync()); 25 + + ready.then(() => { 26 + const promise = require("./run").run(argv, 27 + /*programStarted: */ () => { 28 + programRunning = true; 29 + @@ -250,7 +250,7 @@ function main(args) { 30 + } 31 + function addToEnvIfDefined(key, value) { 32 + if (value) { 33 + - process.env[key] = value; 34 + + process.env[key] = `${value}`; 35 + } 36 + } 37 + main(process.argv.slice(2)); 38 + diff --git a/cmd/run/run.js b/cmd/run/run.js 39 + index 2e2e1fd9dc9379197bc7a6c9f3e8b47e80c10a22..90a69c07f62c238c0ff36860700b45e8a5099457 100644 40 + --- a/cmd/run/run.js 41 + +++ b/cmd/run/run.js 42 + @@ -235,7 +235,7 @@ async function run(argv, programStarted, reportLoggedError, isErrorReported) { 43 + process.chdir(pwd); 44 + } 45 + // If this is a typescript project, we'll want to load node-ts. 46 + - const typeScript = process.env["PULUMI_NODEJS_TYPESCRIPT"] === "true"; 47 + + const typeScript = !process.versions.bun && process.env["PULUMI_NODEJS_TYPESCRIPT"] === "true"; 48 + // We provide reasonable defaults for many ts options, meaning you don't need to have a tsconfig.json present 49 + // if you want to use TypeScript with Pulumi. However, ts-node's default behavior is to walk up from the cwd to 50 + // find a tsconfig.json. For us, it's reasonable to say that the "root" of the project is the cwd, 51 + diff --git a/cmd/run-plugin/index.js b/cmd/run-plugin/index.js 52 + index 5907d393cf8ac711624e3a77484adddba1c3158e..0c4dc3fe4f7895215619cfce77ddcf4068ed69e8 100644 53 + --- a/cmd/run-plugin/index.js 54 + +++ b/cmd/run-plugin/index.js 55 + @@ -82,7 +82,6 @@ process.on("exit", (code) => { 56 + // fact. For example, we want to keep track of ScriptId->FileNames so that we can appropriately 57 + // report errors for Functions we cannot serialize. This can only be done (up to Node11 at least) 58 + // by register to hear about scripts being parsed. 59 + -const v8Hooks = __importStar(require("../../runtime/closure/v8Hooks")); 60 + // This is the entrypoint for running a Node.js program with minimal scaffolding. 61 + const minimist_1 = __importDefault(require("minimist")); 62 + function usage() { 63 + @@ -100,7 +99,8 @@ function main(args) { 64 + return printUsageAndExit(); 65 + } 66 + // Ensure that our v8 hooks have been initialized. Then actually load and run the user program. 67 + - v8Hooks.isInitializedAsync().then(() => { 68 + + const ready = process.versions.bun ? Promise.resolve() : import("../../runtime/closure/v8Hooks.js").then((v8Hooks) => v8Hooks.isInitializedAsync()); 69 + + ready.then(() => { 70 + const promise = require("./run").run({ 71 + argv, 72 + programStarted: () => { 73 + diff --git a/cmd/run-policy-pack/index.js b/cmd/run-policy-pack/index.js 74 + index 1c701d52af34e0a52f2dabca7c52e4137549ae8a..53b3a9d97b1c5cd0b9212484354c55a073bdcd5f 100644 75 + --- a/cmd/run-policy-pack/index.js 76 + +++ b/cmd/run-policy-pack/index.js 77 + @@ -82,7 +82,6 @@ process.on("exit", (code) => { 78 + // fact. For example, we want to keep track of ScriptId->FileNames so that we can appropriately 79 + // report errors for Functions we cannot serialize. This can only be done (up to Node11 at least) 80 + // by register to hear about scripts being parsed. 81 + -const v8Hooks = __importStar(require("../../runtime/closure/v8Hooks")); 82 + // This is the entrypoint for running a Node.js program with minimal scaffolding. 83 + const minimist_1 = __importDefault(require("minimist")); 84 + function usage() { 85 + @@ -102,7 +101,8 @@ function main(args) { 86 + // Remove <engine-address> so we simply execute the program. 87 + argv._.shift(); 88 + // Ensure that our v8 hooks have been initialized. Then actually load and run the user program. 89 + - v8Hooks.isInitializedAsync().then(() => { 90 + + const ready = process.versions.bun ? Promise.resolve() : import("../../runtime/closure/v8Hooks.js").then((v8Hooks) => v8Hooks.isInitializedAsync()); 91 + + ready.then(() => { 92 + const promise = require("./run").run({ 93 + argv, 94 + programStarted: () => { 95 + diff --git a/runtime/index.js b/runtime/index.js 96 + index 3c616eed05fd57db76aa37e76c11507ec255ab75..6dd47a8a2b3e62e7a6f018c9f1f0d529ee3901a9 100644 97 + --- a/runtime/index.js 98 + +++ b/runtime/index.js 99 + @@ -16,9 +16,14 @@ function __export(m) { 100 + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; 101 + } 102 + Object.defineProperty(exports, "__esModule", { value: true }); 103 + -var serializeClosure_1 = require("./closure/serializeClosure"); 104 + -exports.serializeFunctionAsync = serializeClosure_1.serializeFunctionAsync; 105 + -exports.serializeFunction = serializeClosure_1.serializeFunction; 106 + +exports.serializeFunctionAsync = async (...args) => { 107 + + var serializeClosure_1 = await import("./closure/serializeClosure"); 108 + + return serializeClosure_1.serializeFunctionAsync(...args); 109 + +}; 110 + +exports.serializeFunction = async (...args) => { 111 + + var serializeClosure_1 = await import("./closure/serializeClosure"); 112 + + return serializeClosure_1.serializeFunction(...args); 113 + +}; 114 + var codePaths_1 = require("./closure/codePaths"); 115 + exports.computeCodePaths = codePaths_1.computeCodePaths; 116 + var mocks_1 = require("./mocks");
+64
services/haring/atproto/pds.ts
··· 1 + import { DnsRecord } from "@pulumi/cloudflare"; 2 + import { getEnv } from "~lib/env"; 3 + import { confMount } from "~lib/service/mounts"; 4 + import { ContainerService } from "~lib/service/service"; 5 + 6 + export const PDS_CRAWLERS = [ 7 + "https://bsky.network", 8 + "https://relay1.us-east.bsky.network", 9 + "https://relay1.us-west.bsky.network", 10 + "https://relay.upcloud.world", 11 + "https://relay3.fr.hose.cam", 12 + "https://relay.fire.hose.cam", 13 + "https://relay.feeds.blue", 14 + "https://atproto.africa", 15 + "https://relay.hayescmd.net", 16 + "https://relay.xero.systems", 17 + "https://europe.firehose.network", 18 + "https://northamerica.firehose.network", 19 + "https://asia.firehose.network", 20 + "https://relay.bas.sh", 21 + "https://relay.t4tlabs.net", 22 + ]; 23 + 24 + export const pdsService = new ContainerService("pds", { 25 + image: "ghcr.io/bluesky-social/pds", 26 + servicePort: 3000, 27 + mounts: [confMount("pds", "/pds")], 28 + envs: { 29 + PDS_HOSTNAME: "pds.bas.sh", 30 + PDS_JWT_SECRET: getEnv("PDS_JWT_SECRET"), 31 + PDS_ADMIN_PASSWORD: getEnv("PDS_ADMIN_PASSWORD"), 32 + PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX: getEnv("PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX"), 33 + PDS_DATA_DIRECTORY: "/pds", 34 + PDS_BLOBSTORE_DISK_LOCATION: "/pds/blocks", 35 + PDS_BLOB_UPLOAD_LIMIT: "2147483648", 36 + PDS_DID_PLC_URL: "https://plc.directory", 37 + PDS_BSKY_APP_VIEW_URL: "https://api.bsky.app", 38 + PDS_BSKY_APP_VIEW_DID: "did:web:api.bsky.app", 39 + PDS_REPORT_SERVICE_URL: "https://mod.bsky.app", 40 + PDS_REPORT_SERVICE_DID: "did:plc:ar7c4by46qjdydhdevvrndac", 41 + PDS_CRAWLERS, 42 + LOG_ENABLED: "true", 43 + PDS_EMAIL_SMTP_URL: getEnv("PDS_SMTP_AUTH_URI"), 44 + PDS_EMAIL_FROM_ADDRESS: "PDS <pds@bas.sh>", 45 + }, 46 + }); 47 + 48 + export const pdsDnsRecord = new DnsRecord("pds", { 49 + zoneId: getEnv("CLOUDFLARE_ZONE_ID"), 50 + name: "pds.bas.sh", 51 + ttl: 1, 52 + type: "CNAME", 53 + content: "haring.bas.sh", 54 + proxied: false, 55 + }); 56 + 57 + export const pdsWildcardDnsRecord = new DnsRecord("pds-wildcard", { 58 + zoneId: getEnv("CLOUDFLARE_ZONE_ID"), 59 + name: "*.pds.bas.sh", 60 + ttl: 1, 61 + type: "CNAME", 62 + content: "pds.bas.sh", 63 + proxied: false, 64 + });
+114
services/haring/atproto/pegasus.ts
··· 1 + import { DnsRecord } from "@pulumi/cloudflare"; 2 + import { getEnv } from "~lib/env"; 3 + import { confMount, ssdcacheMount } from "~lib/service/mounts"; 4 + import { ContainerService } from "~lib/service/service"; 5 + import { PDS_CRAWLERS } from "./pds"; 6 + 7 + export const pegasusService = new ContainerService("pegasus", { 8 + image: "ghcr.io/futurgh/pegasus", 9 + servicePort: 8008, 10 + hostRule: "HostRegexp(`^(.+?\\.)?pegasus\\.bas\\.sh`)", 11 + mounts: [confMount("pegasus", "/data")], 12 + envs: { 13 + PSD_LOG_LEVEL: "info", 14 + PDS_HOSTNAME: "pegasus.bas.sh", 15 + PDS_ADMIN_PASSWORD: getEnv("PEGASUS_ADMIN_PASSWORD"), 16 + PDS_SMTP_AUTH_URI: getEnv("PDS_SMTP_AUTH_URI"), 17 + PDS_SMTP_SENDER: "Pegasus PDS <pegasus@bas.sh>", 18 + PDS_ROTATION_KEY_MULTIBASE: getEnv("PEGASUS_ROTATION_KEY_MULTIBASE"), 19 + PDS_JWK_MULTIBASE: getEnv("PEGASUS_JWK_MULTIBASE"), 20 + PDS_DPOP_NONCE_SECRET: getEnv("PEGASUS_DPOP_NONCE_SECRET"), 21 + PDS_CRAWLERS, 22 + }, 23 + labels: { 24 + "traefik.http.middlewares.pegasus-user-redirect.redirectregex.regex": 25 + "^https://(.+\\.pegasus\\.bas\\.sh)/(.*)$", 26 + "traefik.http.middlewares.pegasus-user-redirect.redirectregex.replacement": 27 + "https://bsky.app/profile/${1}", 28 + "traefik.http.routers.pegasus-user-redirect.entrypoints": "https", 29 + "traefik.http.routers.pegasus-user-redirect.rule": 30 + "HostRegexp(`^.+\\.pegasus\\.bas\\.sh$`) && !PathPrefix(`/.well-known`)", 31 + "traefik.http.routers.pegasus-user-redirect.middlewares": "cloudflare,pegasus-user-redirect", 32 + "traefik.http.routers.pegasus-user-redirect.priority": 100, 33 + 34 + "traefik.http.middlewares.pegasus-favicon-witchsky.redirectregex.regex": 35 + "^https://pegasus\\.bas\\.sh/favicon\\.ico$", 36 + "traefik.http.middlewares.pegasus-favicon-witchsky.redirectregex.replacement": 37 + "https://wsrv.nl/?url=https://em-content.zobj.net/source/serenityos/392/horse-face_1f434.png&w=74&h=74&fit=contain&bg=ece5d3&we", 38 + "traefik.http.routers.pegasus-favicon-witchsky.entrypoints": "https", 39 + "traefik.http.routers.pegasus-favicon-witchsky.rule": 40 + "Host(`pegasus.bas.sh`) && Path(`/favicon.ico`)", 41 + // "Host(`pegasus.bas.sh`) && Path(`/favicon.ico`) && HeaderRegexp(`Referer`, `\\bwitchsky\\b`)", 42 + "traefik.http.routers.pegasus-favicon-witchsky.middlewares": 43 + "cloudflare,pegasus-favicon-witchsky", 44 + }, 45 + }); 46 + 47 + export const pegasusDnsRecord = new DnsRecord("pegasus", { 48 + zoneId: getEnv("CLOUDFLARE_ZONE_ID"), 49 + name: "pegasus.bas.sh", 50 + ttl: 1, 51 + type: "CNAME", 52 + content: "haring.bas.sh", 53 + proxied: false, 54 + }); 55 + 56 + export const pegasusWildcardDnsRecord = new DnsRecord("pegasus-wildcard", { 57 + zoneId: getEnv("CLOUDFLARE_ZONE_ID"), 58 + name: "*.pegasus.bas.sh", 59 + ttl: 1, 60 + type: "CNAME", 61 + content: "pegasus.bas.sh", 62 + proxied: false, 63 + }); 64 + 65 + const CADDYFILE = ` 66 + http://horse.pegasus.bas.sh:80 { 67 + respond <<HORSE 68 + 69 + ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠨⣧⡀⠀⠀⠀⢀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 70 + ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣿⢦⣀⡀⠀⠙⢶⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 71 + ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣄⠀⠀⠀⠀⠀⠈⠳⣮⡙⠲⠀⠀⢱⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 72 + ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣷⡄⠀⠀⠀⢀⡀⠀⠙⠳⣤⠀⠀⣧⠀⠀⣀⣼⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 73 + ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⣇⣻⣯⠷⠟⠋⠉⠉⠻⣆⠀⠈⣧⢀⡇⣀⣾⡿⢿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 74 + ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠓⣦⣤⣀⡀⠀⢀⣀⣠⣤⡾⠟⠛⠁⠀⠀⠀⠀⠀⠀⠀⠘⣇⠀⡿⢨⣼⠟⠁⠀⢸⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 75 + ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⡄⠀⠀⠀⠀⠀⠙⠻⠭⣉⣉⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⢘⡶⠋⠀⠀⠀⠀⣾⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 76 + ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣦⡀⠀⠀⠀⠀⠀⠀⣀⣩⣤⠤⠴⠒⠒⠂⠀⠀⠀⠀⢀⣀⠀⠀⠀⢸⡟⠀⠀⠀⠀⠀⣼⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 77 + ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢟⠳⠦⠴⠖⠛⠋⠉⠀⠀⠀⠀⣀⣠⠴⠖⠛⠋⠉⠉⠀⠀⢀⣠⢯⠇⠀⠀⠀⢠⠔⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 78 + ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠲⠤⠀⠀⠀⠀⣀⣤⠶⠛⠉⠀⠀⠀⠀⠀⢀⣠⡤⠖⠋⠁⠘⠀⠀⠀⠀⠸⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 79 + ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⣄⣀⣀⣀⣀⣀⣤⣤⡶⠟⠋⠁⠀⠀⠀⠀⢀⣤⠶⠛⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 80 + ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠿⢏⣉⣉⣉⣁⠀⠀⠀⠀⠀⡀⢀⣴⣯⣁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 81 + ⠀⠀⠀⠀⢤⣤⣤⣤⣤⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⣼⠃⢿⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣿⣿⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 82 + ⠀⠀⠀⠀⠀⠀⠀⠉⠛⢯⡙⠷⣦⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢳⣏⠀⣈⠛⠙⠀⠀⢠⠀⠀⠀⠀⠀⠀⡆⠀⠸⠛⠛⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 83 + ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⠈⠙⠷⣤⡀⠀⠀⠀⠀⠀⠀⡀⠬⢿⡀⡟⡀⠀⠀⠀⢸⡄⠀⠀⠀⠀⢠⡇⠀⠀⠈⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 84 + ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠓⠶⠶⠶⠒⠉⠀⠀⣠⠟⠁⡇⠀⠀⠀⠘⡇⠀⠀⠀⠀⢸⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 85 + ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⣄⣠⣀⣀⣀⣠⣤⣤⣤⡾⠋⠁⠀⠀⡇⠀⠀⠀⠠⢳⠀⠀⠀⢠⡟⠀⠀⠀⢠⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 86 + ⠀⠀⠀⠀⠀⠀⠀⣠⣴⠿⠟⠛⠛⠛⠛⠛⠛⠛⠛⠛⠋⢉⡄⠀⠀⠀⠀⡶⠹⡄⠀⠀⠀⠸⠀⠀⠀⠀⠿⠀⠀⢀⡿⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 87 + ⠀⠀⠀⠀⠀⢀⣼⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⠴⠊⠀⠀⠀⠀⠀⡇⠀⢹⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡞⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 88 + ⠀⠀⠀⠀⠀⣸⠃⠀⠀⠀⠀⢀⣀⣠⡤⠤⠖⠛⠉⠁⠀⠀⠀⠀⣴⠀⠀⡇⠀⠀⢣⠀⠀⠀⠀⠀⠀⠀⠀⠀⡞⠀⠀⣸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 89 + ⠀⠀⠀⠀⢠⡇⠀⠀⢀⣴⠾⠋⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠃⠀⢸⠇⠀⠀⢸⢰⡆⠀⠀⠀⠀⠀⢰⡄⠁⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 90 + ⠀⠀⠀⠀⠚⠀⠀⢠⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡾⠁⠀⠀⣸⠀⠀⠀⢸⣿⣷⡀⠀⠀⠀⣠⣿⣷⠀⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 91 + ⠀⠀⠀⠀⠀⠀⠀⣾⠃⢀⣠⠴⠶⠖⠒⠒⠊⠁⠀⣠⣾⠏⠁⠀⠀⢠⡏⠀⠀⠀⢘⣿⣿⡿⠀⠀⠀⢿⣿⠿⡆⠀⠀⣿⣀⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 92 + ⠀⠀⠀⠀⠀⠀⢰⣿⣴⠏⠁⠀⠀⠀⠀⠀⢀⣴⣿⠟⠁⠀⠀⢀⡎⢸⠇⠀⠀⠀⠸⣄⠈⠀⠀⠀⠀⠀⠀⣰⠇⠀⠀⣿⡀⠀⠀⠈⠙⠛⠶⣤⣄⠀⠀⠀⠀⠀⠀⠀ 93 + ⠀⠀⠀⠀⠀⠀⢰⣿⡟⠀⠀⠀⠀⠀⢀⣴⡿⠋⠁⠀⠀⠀⢠⠟⠀⡞⠀⠀⠀⠀⠀⠙⢦⣄⡤⠀⢠⣴⡶⠋⠀⠀⠀⣿⢷⡀⠀⠀⠀⠀⠀⠀⠉⠻⣦⡀⠀⠀⠀⠀ 94 + ⠀⠀⠀⠀⠀⠀⠀⢹⠂⠀⠀⠀⠀⢰⣿⠟⠀⠀⠀⠀⢀⡴⠋⠀⢰⡇⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠉⠉⠀⠀⠀⠀⠀⣿⠈⢷⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣦⠀⠀⠀ 95 + ⠀⠀⠀⠀⠀⠀⠀⢸⡀⠀⠀⠀⢠⣿⠇⠀⠀⠀⠀⡼⠋⠀⠀⠀⢸⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠘⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣆⠀⠀ 96 + ⠀⠀⠀⠀⠀⠀⠀⠈⠁⠀⠀⠀⣸⣿⠀⠀⡴⠁⢸⠁⠀⠀⠀⠀⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⢻⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⡄⠀ 97 + ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⢿⣇⢀⡃⠀⠘⠀⠀⠀⠀⠀⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡟⠀⠀⠈⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀ 98 + ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣦⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡄ 99 + ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣞⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇ 100 + ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣻⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢃ 101 + ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸ 102 + HORSE 200 103 + } 104 + `; 105 + 106 + export const horseService = new ContainerService(`caddy-horse`, { 107 + image: "caddy", 108 + servicePort: 80, 109 + hostRule: "Host(`horse.pegasus.bas.sh`) && Path(`/`)", 110 + hostRulePriority: 1000, 111 + command: ["/bin/sh", "-c", `echo '${CADDYFILE}' | caddy run --config - --adapter caddyfile`], 112 + mounts: [ssdcacheMount("web/horse", "/var/www")], 113 + workingDir: "/var/www", 114 + });
+70
services/haring/atproto/relay.ts
··· 1 + import { ContainerService } from "~lib/service/service"; 2 + import dockerBuild from "@pulumi/docker-build"; 3 + import { getEnv } from "~lib/env"; 4 + import { interpolate } from "@pulumi/pulumi"; 5 + import { confMount, dataMount } from "~lib/service/mounts"; 6 + import { getLatestCommit } from "~lib/service/util"; 7 + 8 + const postgresRelayService = new ContainerService("postgres-relay", { 9 + image: "postgres", 10 + mounts: [confMount("postgres-relay", "/var/lib/postgresql")], 11 + envs: { 12 + POSTGRES_PASSWORD: getEnv("POSTGRES_PASSWORD"), 13 + POSTGRES_DB: "relay", 14 + }, 15 + }); 16 + 17 + const relayImage = new dockerBuild.Image( 18 + "relay", 19 + { 20 + tags: ["relay:latest"], 21 + context: { 22 + location: "https://github.com/bluesky-social/indigo.git", 23 + }, 24 + dockerfile: { 25 + location: "https://github.com/bluesky-social/indigo/raw/refs/heads/main/cmd/relay/Dockerfile", 26 + }, 27 + buildArgs: { 28 + BUILDKIT_CONTEXT_KEEP_GIT_DIR: "true", 29 + }, 30 + exports: [ 31 + { 32 + docker: {}, 33 + }, 34 + ], 35 + push: false, 36 + }, 37 + { 38 + // replacementTrigger: await getLatestCommit( 39 + // "https://github.com/bluesky-social/indigo/commits/main/cmd/relay", 40 + // ), 41 + }, 42 + ); 43 + 44 + export const relayService = new ContainerService("relay", { 45 + localImage: interpolate`${relayImage.ref}@${relayImage.digest}`, 46 + servicePort: 2470, 47 + logDriver: "local", 48 + networkMode: "host", 49 + mounts: [dataMount("media/relay", "/data/relay/persist")], 50 + middlewares: ["relay"], 51 + envs: { 52 + RELAY_ADMIN_PASSWORD: getEnv("RELAY_ADMIN_PASSWORD"), 53 + DATABASE_URL: interpolate`postgres://postgres:${getEnv("POSTGRES_PASSWORD")}@${postgresRelayService.ip}/relay`, 54 + RELAY_PERSIST_DIR: "/data/relay/persist", 55 + RELAY_REPLAY_WINDOW: "24h", 56 + RELAY_TRUSTED_DOMAINS: [ 57 + "*.host.bsky.network", 58 + "atproto.brid.gy", 59 + "blacksky.app", 60 + "northsky.social", 61 + "tngl.sh", 62 + "pds.sprk.so", 63 + "roomy.chat", 64 + "selfhosted.social", 65 + "eurosky.social", 66 + "pds.witchcraft.systems", 67 + "npmx.social", 68 + ], 69 + }, 70 + });
+11
services/haring/atproto/social-app.ts
··· 1 + import { ContainerService } from "~lib/service/service"; 2 + 3 + export const blueskyService = new ContainerService("bluesky", { 4 + image: "ghcr.io/brw/social-app", 5 + servicePort: 8100, 6 + envs: { 7 + ATP_PDS_HOST: "https://public.api.bsky.app", 8 + }, 9 + command: ["bskyweb", "serve"], 10 + middlewares: ["auth"], 11 + });
+100
services/haring/atproto/tangled.ts
··· 1 + import { DnsRecord } from "@pulumi/cloudflare"; 2 + import { Image } from "@pulumi/docker-build"; 3 + import { getEnv } from "~lib/env"; 4 + import { confMount, dockerSocketRw, nvmeMount } from "~lib/service/mounts"; 5 + import { ContainerService } from "~lib/service/service"; 6 + import { getLatestCommit } from "~lib/service/util"; 7 + 8 + const knotImage = new Image( 9 + "knot", 10 + { 11 + tags: ["knot:latest"], 12 + context: { 13 + // location: "https://tangled.org/tangled.org/knot-docker.git", 14 + location: "https://tangled.org/bas.sh/knot-docker.git#spindle", 15 + }, 16 + target: "knot", 17 + buildArgs: { 18 + BUILDKIT_CONTEXT_KEEP_GIT_DIR: "true", 19 + }, 20 + exports: [ 21 + { 22 + docker: {}, 23 + }, 24 + ], 25 + push: false, 26 + }, 27 + { 28 + replacementTrigger: await getLatestCommit( 29 + "https://tangled.org/bas.sh/knot-docker/commits/spindle", 30 + ), 31 + }, 32 + ); 33 + 34 + export const knotService = new ContainerService("knot", { 35 + localImage: knotImage.digest, 36 + servicePort: 5555, 37 + ports: [22], 38 + mounts: [confMount("knot", "/app"), nvmeMount("knot", "/home/git/repositories")], 39 + volumes: [{ volumeName: "knot-keys", containerPath: "/etc/ssh/keys" }], 40 + envs: { 41 + KNOT_SERVER_HOSTNAME: "knot.bas.sh", 42 + KNOT_SERVER_OWNER: getEnv("ATPROTO_DID"), 43 + KNOT_SERVER_DB_PATH: "/app/knotserver.db", 44 + KNOT_SERVER_INTERNAL_LISTEN_ADDR: "localhost:5444", 45 + }, 46 + }); 47 + 48 + export const knotDnsRecord = new DnsRecord("knot", { 49 + zoneId: getEnv("CLOUDFLARE_ZONE_ID"), 50 + name: "knot", 51 + ttl: 1, 52 + type: "CNAME", 53 + content: "haring.bas.sh", 54 + proxied: false, 55 + }); 56 + 57 + const spindleImage = new Image( 58 + "spindle", 59 + { 60 + tags: ["spindle:latest"], 61 + context: { 62 + // location: "https://tangled.org/tangled.org/knot-docker.git", 63 + location: "https://tangled.org/bas.sh/knot-docker.git#spindle", 64 + }, 65 + target: "spindle", 66 + buildArgs: { 67 + BUILDKIT_CONTEXT_KEEP_GIT_DIR: "true", 68 + }, 69 + exports: [ 70 + { 71 + docker: {}, 72 + }, 73 + ], 74 + push: false, 75 + }, 76 + { 77 + replacementTrigger: await getLatestCommit( 78 + "https://tangled.org/bas.sh/knot-docker/commits/spindle", 79 + ), 80 + }, 81 + ); 82 + 83 + export const spindleService = new ContainerService("spindle", { 84 + localImage: spindleImage.digest, 85 + servicePort: 6555, 86 + mounts: [nvmeMount("spindle", "/app"), dockerSocketRw], 87 + envs: { 88 + SPINDLE_SERVER_HOSTNAME: "spindle.bas.sh", 89 + SPINDLE_SERVER_OWNER: getEnv("ATPROTO_DID"), 90 + }, 91 + }); 92 + 93 + const _spindleDnsRecord = new DnsRecord("spindle", { 94 + zoneId: getEnv("CLOUDFLARE_ZONE_ID"), 95 + name: "spindle", 96 + ttl: 1, 97 + type: "CNAME", 98 + content: "haring.bas.sh", 99 + proxied: false, 100 + });
+126
services/haring/atproto/tranquil.ts
··· 1 + import { asset, interpolate } from "@pulumi/pulumi"; 2 + import { getEnv } from "~lib/env"; 3 + import { _mount, confMount, mount } from "~lib/service/mounts"; 4 + import { ContainerService, defaultConnection } from "~lib/service/service"; 5 + import dockerBuild from "@pulumi/docker-build"; 6 + import { remote } from "@pulumi/command"; 7 + import { getLatestCommit } from "~lib/service/util"; 8 + import { PDS_CRAWLERS } from "./pds"; 9 + 10 + const tranquilImage = new dockerBuild.Image( 11 + "tranquil-pds", 12 + { 13 + tags: ["tranquil-pds:latest"], 14 + context: { 15 + location: "https://tangled.org/tranquil.farm/tranquil-pds.git", 16 + }, 17 + buildArgs: { 18 + BUILDKIT_CONTEXT_KEEP_GIT_DIR: "true", 19 + }, 20 + exports: [ 21 + { 22 + docker: {}, 23 + }, 24 + ], 25 + push: false, 26 + }, 27 + { 28 + replacementTrigger: await getLatestCommit( 29 + "https://tangled.org/tranquil.farm/tranquil-pds/commits/main", 30 + ), 31 + }, 32 + ); 33 + 34 + const postgresTranquilService = new ContainerService("postgres-tranquil", { 35 + image: "postgres", 36 + volumes: [ 37 + { 38 + volumeName: "postgres-tranquil", 39 + containerPath: "/var/lib/postgresql", 40 + }, 41 + ], 42 + envs: { 43 + POSTGRES_PASSWORD: getEnv("POSTGRES_PASSWORD"), 44 + POSTGRES_DB: "pds", 45 + }, 46 + }); 47 + 48 + let tranquilService: ContainerService | undefined; 49 + 50 + if (postgresTranquilService.container) { 51 + const msmtprcFile = new asset.FileAsset(`${import.meta.dirname}/tranquil-files/msmtprc`); 52 + const copyMsmtprc = new remote.CopyToRemote("tranquil-msmtprc", { 53 + connection: defaultConnection, 54 + source: msmtprcFile, 55 + remotePath: "/home/bas/docker/tranquil/msmtprc", 56 + }); 57 + 58 + tranquilService = new ContainerService("tranquil", { 59 + localImage: tranquilImage.digest, 60 + servicePort: 3000, 61 + mounts: [ 62 + confMount("tranquil/backups", "/var/lib/tranquil/backups"), 63 + confMount("tranquil/blobs", "/var/lib/tranquil/blobs"), 64 + mount(copyMsmtprc.remotePath, "/etc/msmtprc", { kind: "file" }), 65 + ], 66 + envs: { 67 + DATABASE_URL: interpolate`postgres://postgres:${getEnv("POSTGRES_PASSWORD")}@${postgresTranquilService.container.name}/pds`, 68 + PDS_HOSTNAME: "tranquil.bas.sh", 69 + BLOB_STORAGE_PATH: "/var/lib/tranquil/blobs", 70 + BACKUP_STORAGE_PATH: "/var/lib/tranquil/backups", 71 + JWT_SECRET: getEnv("TRANQUIL_JWT_SECRET"), 72 + DPOP_SECRET: getEnv("TRANQUIL_DPOP_SECRET"), 73 + MASTER_KEY: getEnv("TRANQUIL_MASTER_KEY"), 74 + MAIL_FROM_ADDRESS: "tranquil@bas.sh", 75 + MAIL_FROM_NAME: "Tranquil PDS", 76 + DISCORD_BOT_TOKEN: getEnv("TRANQUIL_DISCORD_BOT_TOKEN"), 77 + INVITE_CODE_REQUIRED: true, 78 + ACCEPTING_REPO_IMPORTS: true, 79 + PDS_USER_HANDLE_DOMAINS: ["tranquil.bas.sh", "t.bas.sh", "on.bas.sh"], 80 + CONTACT_EMAIL: getEnv("EMAIL"), 81 + PDS_AGE_ASSURANCE_OVERRIDE: true, 82 + CRAWLERS: PDS_CRAWLERS, 83 + }, 84 + labels: { 85 + "traefik.http.middlewares.tranquil-redirect.redirectregex.regex": 86 + "^https://(t|on)\\.bas\\.sh/(.*)$", 87 + "traefik.http.middlewares.tranquil-redirect.redirectregex.replacement": 88 + "https://tranquil.bas.sh/${2}", 89 + "traefik.http.routers.tranquil-redirect.entrypoints": "https", 90 + "traefik.http.routers.tranquil-redirect.rule": "HostRegexp(`^(t|on)\\.bas\\.sh$`)", 91 + "traefik.http.routers.tranquil-redirect.middlewares": "cloudflare,tranquil-redirect", 92 + 93 + "traefik.http.middlewares.tranquil-user-redirect.redirectregex.regex": 94 + "^https://(.+\\.(t(ranquil)?|on)\\.bas\\.sh)/(.*)$", 95 + "traefik.http.middlewares.tranquil-user-redirect.redirectregex.replacement": 96 + "https://bsky.app/profile/${1}", 97 + "traefik.http.routers.tranquil-user-redirect.entrypoints": "https", 98 + "traefik.http.routers.tranquil-user-redirect.rule": 99 + "HostRegexp(`^.+\\.(t(ranquil)?|on)\\.bas\\.sh$`)", 100 + "traefik.http.routers.tranquil-user-redirect.middlewares": 101 + "cloudflare,tranquil-user-redirect", 102 + 103 + "traefik.http.middlewares.tranquil-favicon.redirectregex.regex": 104 + "^https://tranquil\\.bas\\.sh/favicon\\.ico$", 105 + "traefik.http.middlewares.tranquil-favicon.redirectregex.replacement": 106 + "https://tranquil.bas.sh/logo", 107 + "traefik.http.routers.tranquil-favicon.entrypoints": "https", 108 + "traefik.http.routers.tranquil-favicon.rule": 109 + "Host(`tranquil.bas.sh`) && Path(`/favicon.ico`)", 110 + "traefik.http.routers.tranquil-favicon.middlewares": "cloudflare,tranquil-favicon", 111 + 112 + // "traefik.http.middlewares.tranquil-favicon-witchsky.redirectregex.regex": 113 + // "^https://tranquil\\.bas\\.sh/favicon\\.ico$", 114 + // "traefik.http.middlewares.tranquil-favicon-witchsky.redirectregex.replacement": 115 + // "https://wsrv.nl/?url=https://tranquil.bas.sh/logo&w=564&h=564&fit=contain&bg=white&we", 116 + // "traefik.http.routers.tranquil-favicon-witchsky.entrypoints": "https", 117 + // "traefik.http.routers.tranquil-favicon-witchsky.rule": 118 + // "Host(`tranquil.bas.sh`) && Path(`/favicon.ico`)", 119 + // "Host(`tranquil.bas.sh`) && Path(`/favicon.ico`) && HeaderRegexp(`Referer`, `\\bwitchsky\\b`)", 120 + // "traefik.http.routers.tranquil-favicon-witchsky.middlewares": 121 + // "cloudflare,tranquil-favicon-witchsky", 122 + }, 123 + }); 124 + } 125 + 126 + export { tranquilService };
+9
services/haring/communication/ergo.ts
··· 1 + import { confMount } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + export const ergoService = new ContainerService("ergo", { 5 + image: "ghcr.io/ergochat/ergo", 6 + servicePort: 6697, 7 + mounts: [confMount("ergo", "/ircd")], 8 + init: true, 9 + });
+8
services/haring/communication/thelounge.ts
··· 1 + import { confMount } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + export const theloungeService = new ContainerService("thelounge", { 5 + servicePort: 9000, 6 + subdomain: "irc", 7 + mounts: [confMount("thelounge")], 8 + });
+20
services/haring/downloaders/jdownloader.ts
··· 1 + import { getEnv } from "~lib/env"; 2 + import { confMount, ssdcacheMount } from "~lib/service/mounts"; 3 + import { ContainerService } from "~lib/service/service"; 4 + 5 + export const jdownloaderService = new ContainerService("jdownloader", { 6 + image: "jlesage/jdownloader-2", 7 + servicePort: 5800, 8 + ports: [3129, 5800], 9 + mounts: [confMount("jdownloader"), ssdcacheMount("downloads", "/output")], 10 + envs: { 11 + KEEP_APP_RUNNING: 1, 12 + DARK_MODE: 1, 13 + WEB_AUDIO: 1, 14 + ENABLE_CJK_FONT: 1, 15 + MYJDOWNLOADER_EMAIL: getEnv("EMAIL"), 16 + MYJDOWNLOADER_PASSWORD: getEnv("JDOWNLOADER_PASSWORD"), 17 + MYJDOWNLOADER_DEVICE_NAME: "Haring", 18 + }, 19 + middlewares: ["auth"], 20 + });
+26
services/haring/downloaders/qbittools.ts
··· 1 + import { getEnv } from "~lib/env"; 2 + import { confMount } from "~lib/service/mounts"; 3 + import { ContainerService } from "~lib/service/service"; 4 + import { qbittorrentService } from "./qbittorrent"; 5 + 6 + let qbittoolsService: ContainerService | undefined; 7 + 8 + if (qbittorrentService.localUrl) { 9 + qbittoolsService = new ContainerService("qbittools", { 10 + image: "registry.gitlab.com/alexkm/qbittools", 11 + mounts: [confMount("qbittorrent", "/qbittorrent")], 12 + command: [ 13 + "reannounce", 14 + "-C", 15 + "/qbittorrent/qBittorrent.conf", 16 + "-s", 17 + qbittorrentService.localUrl, 18 + "-U", 19 + getEnv("USERNAME"), 20 + "-P", 21 + getEnv("QBITTORRENT_PASSWORD"), 22 + ], 23 + }); 24 + } 25 + 26 + export { qbittoolsService };
+19
services/haring/downloaders/qbittorrent-exporter.ts
··· 1 + import { getEnv } from "~lib/env"; 2 + import { ContainerService } from "~lib/service/service"; 3 + import { qbittorrentService } from "./qbittorrent"; 4 + 5 + let qbittorrentExporterService: ContainerService | undefined; 6 + 7 + if (qbittorrentService?.localUrl) { 8 + qbittorrentExporterService = new ContainerService("qbittorrent-exporter", { 9 + image: "caseyscarborough/qbittorrent-exporter", 10 + servicePort: 17871, 11 + envs: { 12 + QBITTORRENT_BASE_URL: qbittorrentService.localUrl, 13 + QBITTORRENT_USERNAME: getEnv("USERNAME"), 14 + QBITTORRENT_PASSWORD: getEnv("QBITTORRENT_PASSWORD"), 15 + }, 16 + }); 17 + } 18 + 19 + export { qbittorrentExporterService };
+24
services/haring/downloaders/qbittorrent.ts
··· 1 + import { confMount, dataMount, nvmeMount } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + export const qbittorrentService = new ContainerService("qbittorrent", { 5 + image: "lscr.io/linuxserver/qbittorrent:5.1.4", 6 + servicePort: 8080, 7 + // ports: [1337, "1337/udp"], 8 + envs: { 9 + // TORRENTING_PORT: 1337, 10 + DOCKER_MODS: "ghcr.io/vuetorrent/vuetorrent-lsio-mod:latest", 11 + }, 12 + mounts: [confMount("qbittorrent"), dataMount(), nvmeMount()], 13 + networkMode: "host", 14 + }); 15 + 16 + export const quiService = new ContainerService("qui", { 17 + image: "ghcr.io/autobrr/qui", 18 + servicePort: 7476, 19 + user: "1000:1000", 20 + mounts: [confMount("qui"), dataMount(), nvmeMount()], 21 + envs: { 22 + QUI__METRICS_ENABLED: true, 23 + }, 24 + });
+7
services/haring/downloaders/sabnzbd.ts
··· 1 + import { confMount, ssdcacheMount } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + export const sabnzbdService = new ContainerService("sabnzbd", { 5 + servicePort: 8080, 6 + mounts: [confMount("sabnzbd"), ssdcacheMount()], 7 + });
+18
services/haring/files/filebrowser.ts
··· 1 + import { getEnv } from "~lib/env"; 2 + import { confMount, ssdcacheMount } from "~lib/service/mounts"; 3 + import { ContainerService } from "~lib/service/service"; 4 + 5 + export const filebrowserService = new ContainerService("filebrowser", { 6 + image: "ghcr.io/gtsteffaniak/filebrowser:beta", 7 + servicePort: 80, 8 + user: "1000:1000", 9 + mounts: [ 10 + confMount("filebrowser", "/home/filebrowser/data"), 11 + ssdcacheMount("content", "/home/filebrowser/content"), 12 + ], 13 + envs: { 14 + FILEBROWSER_CONFIG: "data/config.yaml", 15 + FILEBROWSER_ADMIN_PASSWORD: getEnv("FILEBROWSER_ADMIN_PASSWORD"), 16 + }, 17 + cpuShares: 512, 18 + });
+12
services/haring/files/filestash.ts
··· 1 + import { confMount, ssdcacheMount } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + export const fileStashService = new ContainerService("filestash", { 5 + image: "machines/filestash", 6 + servicePort: 8334, 7 + mounts: [confMount("filestash", "/app/data/state"), ssdcacheMount()], 8 + envs: { 9 + APPLICATION_URL: "filestash.bas.sh", 10 + CANARY: true, 11 + }, 12 + });
+9
services/haring/files/h5ai.ts
··· 1 + import { confMount, ssdcacheMount } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + export const h5aiService = new ContainerService("h5ai", { 5 + image: "awesometic/h5ai", 6 + servicePort: 80, 7 + mounts: [confMount("h5ai", "/config"), ssdcacheMount("content", "/h5ai")], 8 + middlewares: ["auth"], 9 + });
+41
services/haring/files/nextcloud.ts
··· 1 + import { interpolate } from "@pulumi/pulumi"; 2 + import { getEnv } from "~lib/env"; 3 + import { confMount, ssdcacheMount } from "~lib/service/mounts"; 4 + import { ContainerService } from "~lib/service/service"; 5 + 6 + export const nextCloudService = new ContainerService("nextcloud", { 7 + servicePort: 443, 8 + mounts: [ 9 + confMount("nextcloud"), 10 + confMount("nextcloud-data", "/data"), 11 + ssdcacheMount("", "/mnt/data"), 12 + ], 13 + envs: { 14 + DOCKER_MODS: "linuxserver/mods:nextcloud-notify-push|linuxserver/mods:nextcloud-mediadc", 15 + DATABASE_URL: interpolate`postgres://postgres:${getEnv("POSTGRES_PASSWORD")}@postgres/nextcloud`, 16 + DATABASE_PREFIX: "oc_", 17 + REDIS_URL: interpolate`redis://default:${getEnv("VALKEY_PASSWORD")}@valkey`, 18 + NEXTCLOUD_URL: "https://nextcloud.bas.sh", 19 + }, 20 + }); 21 + 22 + if (nextCloudService.container) { 23 + const valkeyService = new ContainerService("valkey", { 24 + image: "valkey/valkey", 25 + command: [interpolate`--requirepass ${getEnv("VALKEY_PASSWORD")}`], 26 + }); 27 + 28 + const postgresService = new ContainerService("postgres", { 29 + image: "postgres", 30 + volumes: [ 31 + { 32 + volumeName: "postgres", 33 + containerPath: "/var/lib/postgresql", 34 + }, 35 + ], 36 + envs: { 37 + POSTGRES_PASSWORD: getEnv("POSTGRES_PASSWORD"), 38 + POSTGRES_DB: "nextcloud", 39 + }, 40 + }); 41 + }
+18
services/haring/files/nextexplorer.ts
··· 1 + import { getEnv } from "~lib/env"; 2 + import { confMount, ssdcacheMount } from "~lib/service/mounts"; 3 + import { ContainerService } from "~lib/service/service"; 4 + 5 + export const nextexplorerService = new ContainerService("nextexplorer", { 6 + image: "nxzai/explorer", 7 + servicePort: 3000, 8 + subdomain: "explorer", 9 + mounts: [ 10 + confMount("nextexplorer/config", "/config"), 11 + confMount("nextexplorer/cache", "/cache"), 12 + ssdcacheMount("content", "/mnt/Content"), 13 + ], 14 + envs: { 15 + PUBLIC_URL: "https://explorer.bas.sh", 16 + SESSION_SECRET: getEnv("EXPLORER_SECRET"), 17 + }, 18 + });
+11
services/haring/files/resilio.ts
··· 1 + import { confMount, ssdcacheMount } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + export const resilioSyncService = new ContainerService("resilio-sync", { 5 + enabled: true, 6 + subdomain: "sync", 7 + servicePort: 8888, 8 + // ports: [55555, "55555/udp"], 9 + networkMode: "host", 10 + mounts: [confMount("resilio-sync"), ssdcacheMount(), ssdcacheMount("sync", "/sync")], 11 + });
+17
services/haring/files/sftpgo.ts
··· 1 + import { confMount, ssdcacheMount } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + export const sftpgoService = new ContainerService("sftpgo", { 5 + image: "drakkan/sftpgo:plugins", 6 + servicePort: 8080, 7 + ports: [2022], 8 + mounts: [ 9 + confMount("sftpgo", "/var/lib/sftpgo"), 10 + ssdcacheMount("sftpgo", "/srv/sftpgo"), 11 + ssdcacheMount("", "/srv/data"), 12 + ], 13 + envs: { 14 + SFTPGO_GRACE_TIME: 60, 15 + }, 16 + stopTimeout: 60, 17 + });
+22
services/haring/files/sist2.ts
··· 1 + import { confMount, ssdcacheMount } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + export const sist2Service = new ContainerService("sist2", { 5 + image: "sist2app/sist2:x64-linux", 6 + servicePort: 8080, 7 + otherServicePorts: { "sist2-web": 4090 }, 8 + mounts: [confMount("sist2", "/sist2-admin"), ssdcacheMount("content/audios", "/host")], 9 + workingDir: "/root/sist2-admin", 10 + entrypoints: ["python3"], 11 + command: ["/root/sist2-admin/sist2_admin/app.py"], 12 + middlewares: ["auth"], 13 + }); 14 + 15 + if (sist2Service.container) { 16 + const elasticsearchService = new ContainerService("elasticsearch", { 17 + image: "elasticsearch:7.17.28", 18 + ports: ["127.0.0.1:9200:9200", "127.0.0.1:9300:9300"], 19 + mounts: [confMount("elasticsearch", "/usr/share/elasticsearch/data")], 20 + envs: { "discovery.type": "single-node" }, 21 + }); 22 + }
+13
services/haring/files/spacedrive.ts
··· 1 + import { interpolate } from "@pulumi/pulumi"; 2 + import { getEnv } from "~lib/env"; 3 + import { confMount, ssdcacheMount } from "~lib/service/mounts"; 4 + import { ContainerService } from "~lib/service/service"; 5 + 6 + export const spacedriveService = new ContainerService("spacedrive", { 7 + image: "ghcr.io/spacedriveapp/spacedrive/server", 8 + servicePort: 8080, 9 + mounts: [confMount("spacedrive", "/var/spacedrive"), ssdcacheMount()], 10 + envs: { 11 + SD_AUTH: interpolate`${getEnv("USERNAME")}:${getEnv("SPACEDRIVE_PASSWORD")}`, 12 + }, 13 + });
+15
services/haring/files/stash.ts
··· 1 + import { confMount, ssdcacheMount, gitMount, mount } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + export const stashService = new ContainerService("stash", { 5 + image: "stashapp/stash", 6 + servicePort: 9999, 7 + mounts: [ 8 + confMount("stash", "/root/.stash"), 9 + ssdcacheMount("", "/data"), 10 + gitMount(), 11 + mount("/etc/localtime", "/etc/localtime", { readOnly: true }), 12 + ], 13 + middlewares: ["auth"], 14 + cpuShares: 128, 15 + });
+8
services/haring/files/synclounge.ts
··· 1 + import { ContainerService } from "~lib/service/service"; 2 + 3 + export const syncloungeService = new ContainerService("synclounge", { 4 + servicePort: 8088, 5 + envs: { 6 + AUTH_LIST: "e3b846edd661008e79919a414fdc3b957dad97ac", 7 + }, 8 + });
+21
services/haring/games/blockheads.ts
··· 1 + import { confMount } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + export const blockheadsService = new ContainerService("blockheads", { 5 + image: "theblockheads/server:development", 6 + servicePort: 15151, 7 + ports: [15151, "15151/udp"], 8 + mounts: [ 9 + confMount("blockheads/config", "/blockheads"), 10 + confMount("blockheads/worlds", "/root/GNUstep/Library/ApplicationSupport/TheBlockheads/saves"), 11 + ], 12 + envs: { 13 + WORLD_NAME: "bmc", 14 + WORLD_ID: "bmc", 15 + // WORLD_OWNER: "", 16 + MAX_PLAYERS: 32, 17 + SAVE_DELAY: 1, 18 + WORLD_OWNER: "bas", 19 + SERVER_PORT: 15151, 20 + }, 21 + });
+13
services/haring/games/hytale.ts
··· 1 + import { mount } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + export const hytaleService = new ContainerService("hytale", { 5 + image: "hybrowse/hytale-server", 6 + ports: ["5520/udp"], 7 + mounts: [mount("/mnt/nvme1/hytale", "/data")], 8 + envs: { 9 + HYTALE_AUTO_DOWNLOAD: true, 10 + }, 11 + tty: true, 12 + stdinOpen: true, 13 + });
+588
services/haring/games/minecraft/servers/rengoku.ts
··· 1 + import { nvmeMount, mount } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + import { getEnv } from "~lib/env"; 4 + import { mcHasOnlinePlayers } from "../util"; 5 + 6 + const velocityRengokuService = new ContainerService("velocity-rengoku", { 7 + enabled: false, 8 + image: "itzg/mc-proxy:java25", 9 + servicePort: 8804, // Plan 10 + ports: [ 11 + { 12 + internal: 25565, 13 + external: 25562, 14 + }, 15 + ], 16 + mounts: [nvmeMount("velocity-rengoku", "/config")], 17 + envs: { 18 + TYPE: "VELOCITY", 19 + EULA: true, 20 + VELOCITY_VERSION: "3.4", 21 + MINECRAFT_VERSION: "1.21.11", 22 + MEMORY: "2G", 23 + ICON: "https://i.bas.sh/rengoku.jpg", 24 + OVERRIDE_ICON: true, 25 + JVM_XX_OPTS: 26 + "-XX:+UseZGC -XX:+UseCompactObjectHeaders -XX:+UseTransparentHugePages -XX:+EnableDynamicAgentLoading", 27 + ENABLE_RCON: true, 28 + RCON_PASSWORD: getEnv("RCON_PASSWORD"), 29 + 30 + // plugins 31 + MODRINTH_DOWNLOAD_DEPENDENCIES: "required", 32 + MODRINTH_PROJECTS: ["onetimepack", "plan", "antipopup"], 33 + }, 34 + }); 35 + 36 + const limboRengokuService = new ContainerService("limbo-rengoku", { 37 + enabled: false, 38 + image: "itzg/minecraft-server:java25-graalvm", 39 + envs: { 40 + TYPE: "LIMBO", 41 + EULA: true, 42 + LIMBO_BUILD: "66", 43 + }, 44 + }); 45 + 46 + export const minecraftRengokuService = new ContainerService( 47 + "minecraft-rengoku", 48 + { 49 + image: "itzg/minecraft-server", 50 + servicePort: 8804, // Plan 51 + subdomain: "rengoku", 52 + ports: [ 53 + { 54 + internal: 25565, 55 + external: 25562, 56 + }, 57 + "25502:25500", 58 + "24452/udp", 59 + // "127.0.0.1:2222:2222", 60 + ], 61 + otherServicePorts: { 62 + "polymer-rengoku": 25500, 63 + "map-rengoku": 8100, 64 + "amp-rengoku": 25542, 65 + // "audio-rengoku": 8080, 66 + }, 67 + restart: "on-failure", 68 + maxRetryCount: 3, 69 + mounts: [nvmeMount("minecraft-rengoku", "/data"), mount("/dev/hugepages")], 70 + envs: { 71 + // general 72 + MEMORY: "32G", 73 + LOG_LEVEL: "debug", 74 + JVM_XX_OPTS: 75 + "-XX:+UseZGC -XX:+UseCompactObjectHeaders -XX:+UseTransparentHugePages -XX:+EnableDynamicAgentLoading", 76 + DISABLE_HEALTHCHECK: true, 77 + LOG_TIMESTAMP: true, 78 + 79 + // server 80 + TYPE: "FABRIC", 81 + EULA: true, 82 + VERSION: "1.21.11", 83 + MOTD: "yeet", 84 + DIFFICULTY: "normal", 85 + ICON: "https://i.bas.sh/rengoku.jpg", 86 + OVERRIDE_ICON: true, 87 + MAX_PLAYERS: 42, 88 + MAX_BUILD_HEIGHT: 1024, 89 + VIEW_DISTANCE: 12, 90 + SYNC_CHUNK_WRITES: false, 91 + SIMULATION_DISTANCE: 8, 92 + STOP_DURATION: 20, 93 + ENABLE_WHITELIST: false, 94 + ENFORCE_WHITELIST: false, 95 + WHITELIST: ["basw"], 96 + ENABLE_SSH: true, 97 + RCON_PASSWORD: getEnv("RCON_PASSWORD"), 98 + BROADCAST_RCON_TO_OPS: false, 99 + BROADCAST_CONSOLE_TO_OPS: false, 100 + OPS: ["basw"], 101 + ENFORCE_SECURE_PROFILE: false, 102 + // MAX_TICK_TIME: 30000, 103 + ENABLE_COMMAND_BLOCK: true, 104 + SERVER_NAME: "Rengoku", 105 + PLAYER_IDLE_TIMEOUT: 0, 106 + SPAWN_PROTECTION: 0, 107 + SEED: "-4410415603743001845", 108 + 109 + // mods 110 + // FABRIC_LOADER_VERSION: "0.17.2", 111 + CF_API_KEY: getEnv("CURSEFORGE_API_KEY"), 112 + CF_PARALLEL_DOWNLOADS: 16, 113 + MODRINTH_DOWNLOAD_DEPENDENCIES: "required", 114 + MODRINTH_ALLOWED_VERSION_TYPE: "alpha", 115 + MODRINTH_DEFAULT_EXCLUDE_INCLUDES: "", 116 + PLAN_DATA_GATHERING_ACCEPT_GEOLITE2_EULA: true, // y dis no work (https://github.com/plan-player-analytics/Plan/commit/24a8c75b67986e90acfc5abeed29328d8cc9407a) 117 + FABRIC_PROXY_HACK_EARLY_SEND: true, 118 + APPLY_EXTRA_FILES: [ 119 + // "resources/<https://cdn.modrinth.com/data/Updz14id/versions/wCaoRZ85/URK_RP_3.0.0-beta.zip", 120 + // "resources/<https://cdn.modrinth.com/data/N5Z6XD09/versions/x3HQPuDq/%5BPOLYMER%5D%20Cabbage%20Glasses.zip", 121 + // "resources/<https://cdn.modrinth.com/data/VDOYKsGH/versions/KKqVUgbk/Shulker%20Preview%20Resource%20Pack%20%281.21.6%29.zip", 122 + ], 123 + DATAPACKS: [ 124 + // "https://cdn.modrinth.com/data/izSO2Rn2/versions/vwYeKHZy/cabbage-substances-1.3.0.2-0.11.1.zip", 125 + ], 126 + MODS: [ 127 + "https://github.com/DrexHD/remove-dialog-warning/releases/download/1.2.0/remove-dialog-warning-1.2.0.jar", 128 + // "https://cdn.modrinth.com/data/5OyO3XKw/versions/lOxOcQ5K/ultimate-roleplay-kit-urk-hats-v3.0.0-beta.jar", 129 + // "https://cdn.modrinth.com/data/tpBja9mt/versions/ifAYWMMc/ultimate-roleplay-kit-mail-urk-mail-v3.0.0beta.jar", 130 + "https://cdn.modrinth.com/data/EltpO5cN/versions/NKsNpTwe/lootr-fabric-1.21.11-1.19.33.100.jar", 131 + "https://cdn.modrinth.com/data/mhlzUYFC/versions/FqHMeEkR/LootrPolymer-1.1.jar", 132 + ], 133 + MODRINTH_PROJECTS: [ 134 + // libraries 135 + "fabric-api", 136 + // "architectury-api", 137 + // "yacl", 138 + // "forge-config-api-port", 139 + "cloth-config", 140 + "modmenu", 141 + // "cristel-lib", 142 + // "silk", 143 + // "loot-table-modifier", 144 + "lithostitched", 145 + 146 + // world rendering 147 + "c2me-fabric", 148 + "distanthorizons", 149 + 150 + // worldgen/structures 151 + "tectonic", 152 + "clifftree", 153 + "ct-overhaul-village", 154 + // "sparsestructures", 155 + // "worldgen-patches", 156 + // "mc-258859", 157 + // "cliff-face", 158 + 159 + // performance 160 + "lithium", 161 + "scalablelux", 162 + "ferrite-core", 163 + "noisiumforked", 164 + "servercore", 165 + "spark", 166 + // "clumps", // does ServerCore already cover this? 167 + "xp-stream", 168 + "alternate-current", 169 + "lmd", 170 + "sepals", 171 + // "betterview", 172 + // "moonrise-opt", 173 + "structure-layout-optimizer", 174 + "quick-pack", 175 + // "achievements-optimizer", 176 + 177 + // admin stuff 178 + // "plan", 179 + "vanilla-refresh", 180 + // "axiom", 181 + "vanish", 182 + "invview", 183 + "better-fabric-console", 184 + // "configured", // TODO: configure? 185 + // "nbt-copy", 186 + "im-fast", 187 + // "stackdeobf", 188 + // "codecium", 189 + "chunky", 190 + "entity-information", 191 + // "worldgen-devtools", 192 + // "notenoughcrashes", 193 + // "worldedit", 194 + // "axis", 195 + "pandaantidupe", 196 + "pandaantipermanentblockbreak", 197 + // "anti-xray", 198 + // "holodisplays", 199 + // "structure-remover", 200 + // "karns-useful-command", // incompatible with player-ladder due to ride command? 201 + // "melius-worldmanager", 202 + "simple-registry-aliases", 203 + "ledger", 204 + "command-maker", 205 + "melius-commands", 206 + "offlinecommands", 207 + // "modify-player-data", 208 + "inv-restore", 209 + "stdrdc", 210 + "fabricexporter", 211 + "otel-instrumentation-extension", 212 + 213 + // networking 214 + "no-chat-reports", 215 + // "viafabric", 216 + // "viabackwards", 217 + // "fabricproxy-lite", 218 + 219 + // polymer/custom stuff 220 + // "vestigate", 221 + "polymer", 222 + "polydex", 223 + "polydecorations", 224 + "polysit", 225 + "danse", 226 + // "glide-away", 227 + "filament", 228 + // "tsa-decorations", 229 + // "tsa-stone", 230 + // "tsa-planks", 231 + // "tsa-concrete", 232 + // "serverbacksnow", 233 + // "trinkets-polymer", 234 + // "polydoodads" 235 + // "illager-expansion-polymer", // woodland mansion advancement? 236 + // "extended-drawers", 237 + // "extended-drawers-polymer", 238 + // "spiders-2.0-polymer", 239 + // "toms-mobs", 240 + "nice-mobs", // TODO: add resource pack 241 + // "borukva-food", 242 + // "borukva-food-exotic", 243 + // "polychess", 244 + // "copperwrench", 245 + // "mining-helmet", 246 + // "copper-horn", 247 + "morefurnaces", 248 + // "datapack:clucking-ducks", // TODO: add resource pack? // also incompatible with clifftree? 249 + // "datapack:phantomcatcher", 250 + // "datapack:gardeners-dream", 251 + // "datapack:banner-bedsheets", 252 + // "datapack:banner-flags", 253 + // "faling", 254 + "visual-jukebox", 255 + // "baby-fat-polymer", 256 + // "polyfactory", 257 + // "puddles", 258 + // "datapack:shulker-preview-datapack:KKqVUgbk", // manually update resource pack for Polymer 259 + // "morecatvariants", 260 + "friends-and-foes-polymer", 261 + // "mini-vfx", 262 + // "lootr-polymer-patch", 263 + // "lootr:NKsNpTwe", 264 + "more-tools", 265 + "polynutrition", 266 + // "notenoughminecraft", 267 + "polymer-squasher", 268 + // "navigation-compasses", // java.lang.NullPointerException: Cannot invoke "lol.sylvie.navigation.config.ConfigState.biome()" because "lol.sylvie.navigation.config.ConfigHandler.STATE" is null at knot//lol.sylvie.navigation.item.impl.BiomeLocatorItem.isEnabled(BiomeLocatorItem.java:41) ???? 269 + "polybook:8edHSDUW", 270 + // "farmers-delight-polymer", 271 + "blockboy-arcade", 272 + "copperfire", 273 + // "vaulted-end", 274 + "endfire", 275 + "gone-fishing", 276 + "universal-graves", 277 + "colorful-lanterns:nDW5i0HP", 278 + "colorful-lamp:HTt7AwnG", 279 + "lovely-snails-polymer", 280 + // "brewery:d5YLon6f", 281 + // "datapack:cabbage-substances", 282 + "better-nether-map", 283 + 284 + // enchantments 285 + // "enchantments-encore", 286 + "enchantment-lore", 287 + // "ly-soulbound-enchantment", 288 + "datapack:skizzs-enchanted-boats-(unofficial):nahxndRx", 289 + // "kings-vein-miner", 290 + "enchantable-mace", 291 + "eposs-unlimited-enchantments", 292 + "datapack:ev-enchantable-hats", 293 + 294 + // fixes 295 + "debugify", 296 + // "view-distance-fix", 297 + "rail-placement-fix", 298 + "disconnect-packet-fix", 299 + "whiteout", 300 + // "no-kebab", 301 + "dragon-movement-fix", 302 + "shieldstun", 303 + "deadplayerchunkupdates", 304 + "underwater-swim-fix-(mc-220390)", 305 + "structures-spawn-biomes-fix", 306 + // "crashexploitfixer", 307 + "smoothmaps", 308 + "better-paths", 309 + "datapack:keepheadnames", 310 + "maxhealthfix", 311 + "ghast-direction", 312 + "attribute-swapping-fix", 313 + "elytraportalfix", 314 + "thiocyanate", 315 + "always-shield", 316 + // "packet-fixer", 317 + "fence-gate-fix", 318 + 319 + // fun 320 + "camera-obscura", 321 + "player-ladder", 322 + "image2map", 323 + "book2map", 324 + // "ly-dynamite", 325 + // "micro-fighters", 326 + "leashable-players", 327 + // "head-items", 328 + // "minechess", // TODO: figure out how to remove chessboard lmao 329 + // "just-player-heads", // TODO: find alternative that allows only dropping player heads for PVP 330 + // "player-drops-head", 331 + // "emotes", 332 + // "more-stands", // kinda covered by Vanilla Refresh? 333 + // "players-burn-in-sunlight", // heheh 334 + "eat-bottle", 335 + // "foxglow", 336 + // "pandaarchaeology", 337 + "eg-invisible-frames", 338 + // "stop-drop-n-roll", 339 + // "kiss-fabric", 340 + // "showcase", 341 + "thgw:RKZbtUks", 342 + // "snowball-and-egg-knockback", 343 + "thrown-knockback", 344 + "launch-command", 345 + "hide-invis-msgs", 346 + "jukeboxboat", 347 + "headindex", 348 + "peekmod", 349 + "armorstandeditor", 350 + // "ultimate-roleplay-kit:lOxOcQ5K", 351 + // "ultimate-roleplay-kit-mail:ifAYWMMc", 352 + // "wandering-pets-updated", 353 + "parrot-sit-on-armorstand", 354 + 355 + // gameplay 356 + "forgiving-void", 357 + // "ly-recall-potion", 358 + "camp-fires-cook-mobs", 359 + // "healing-campfire", 360 + "soothing-campfires", 361 + "comfortable-campfires", 362 + // "linkart-refabricated", 363 + "rail-destinations", 364 + // "audaki-cart-engine", 365 + "express-carts", 366 + "move-minecarts", 367 + "move-boats", 368 + "warping-wonders", 369 + "datapack:bell-finds-all-raiders", 370 + "village-hero-plus", 371 + "sleep-warp-updated", 372 + "regenerative-sleep", 373 + // "rmes-campfire-leather", 374 + "skippy-pearls", 375 + // "soul-sight", 376 + "natural-charcoal", 377 + // "deaths-door", // Check incompatibilities 378 + // "useful-mobs", 379 + // "multi-mine", // seems to leave mining visuals behind for polydecorations/polymer stuff 380 + "greater-wolves", 381 + "improved-weather", 382 + // "improved-maps", 383 + // "primitive-flaming", 384 + "extract-poison", 385 + "fish-on-the-line", 386 + // "economical-villager-trading", 387 + "faster-copper-golem", 388 + // "better-wanderingtraders", 389 + "noweatherskip", 390 + "leash-villager", 391 + "armor-quick-swap", 392 + "simple-fast-happy-ghasts", 393 + "chest-on-a-ghast", 394 + "faewufs-diversity", 395 + 396 + // useful 397 + "inventory-sorting", 398 + "kleeslabs", // break only half of the slab you're looking at 399 + // "villager-death-messages", 400 + 401 + // generic server stuff 402 + "styled-chat", 403 + "styledplayerlist", 404 + "styled-nicknames", 405 + // "customnametags", // probably largely already covered by styled-nicknames? 406 + "sdlink", 407 + // "essential-commands", 408 + "melius-essentials", 409 + // "fuji", 410 + "luckperms", 411 + "mods-command", 412 + // "uuid-command", 413 + "compact-help-command", 414 + // "server-chat-log-history", 415 + "afkplus", 416 + 417 + // voice chat 418 + "simple-voice-chat", 419 + "voice-chat-interaction", 420 + // "enhanced-groups", 421 + // "simple-voice-chat-group-msg", 422 + "audioplayer", 423 + 424 + // QoL 425 + "a-minor-convenience", 426 + "double-doors", 427 + // "stretchy-leash", 428 + "pandaleadbreak", 429 + "more-buttons-data-pack", 430 + // "witches-drop-blaze-powder", 431 + // "datapack:hintful-advancements", 432 + // "datapack:hintful-audio-cues", 433 + "monsters-in-the-closet:fiqQ08ri", 434 + "no-offline-time-passage(servers-only)", 435 + // "tree-in-a-forest", 436 + "thorny-bush-protection", 437 + // "burnable-cobwebs", 438 + "rain-delay", 439 + // "unlock-all-recipes", // covered by just enough book? 440 + "logical-efficient-tools", 441 + "through-the-lily-pads-gently", 442 + "pretty-beaches", 443 + "pandablockname", 444 + "pandanerfphantoms", 445 + "beaconsaturation", 446 + // "copper-grates-bubble", 447 + // "vanilla-pings", 448 + // "calcmod", 449 + "purpurpacks-one-step-dyed-shulker-boxes", 450 + "purpurpacks-more-dyed-wool-and-carpet", 451 + // "petprotect", 452 + // "sturdy-vehicles", 453 + "give-me-that-back", 454 + "crops-love-rain", 455 + // "jsst", 456 + // "leaves-be-gone", 457 + "leaves-us-in-peace", 458 + // "improved-signs", 459 + // "netherportalfix", 460 + "portal-cornerlink-(orientation-fix)", 461 + "village-bell-recipe", 462 + "persistent-parrots", 463 + "wits", 464 + "more-fossils:2enM2LIf", 465 + // "saplanting", 466 + "ppetp", 467 + "rail-recipe-rebalance", 468 + "command-feedback", 469 + 470 + // decorative/aesthetic 471 + // "boids", 472 + // "nocturnal-bats", // https://github.com/Estecka/mc-Nocturnal-Bats/issues/3 473 + "betterwalls:K4OpIv3C", 474 + // "nemos-blooming-blossom", 475 + // "fairy-rings", 476 + // "paleworldfx", 477 + 478 + // Bluemap 479 + "bluemap", 480 + // "bluemap-polymer-patch", 481 + // "bmarker", 482 + // "bluemap-offline-player-markers-(fabric)", 483 + // "bluemap-sign-markers", 484 + 485 + // needs optional client mod 486 + "trashslot", 487 + "appleskin", 488 + // "better-stats", 489 + "skinshuffle", 490 + "skinrestorer", 491 + "xaeros-map-server-utils", 492 + "do-a-barrel-roll", 493 + "wthit", 494 + "jade", 495 + "servux", 496 + "inventory-management", 497 + "inventory-essentials", 498 + "crafting-tweaks", 499 + // "justenoughbook", 500 + "rei", 501 + "polydex2rei", 502 + // "jei", 503 + "spyglass-astronomy-sync", 504 + // "automodpack", 505 + 506 + // -- FUTURE BUT CURRENTLY BROKEN MODS -- 507 + // compatibility issues with other mods 508 + // "beautified-chat-server", // using Styled Chat instead 509 + // "sswaystones", // covered by Warping Wonders 510 + // "echo-compass", // covered by Warping Wonders 511 + // "default-arms", // covered by Vanilla Refresh 512 + // "veinminer", // covered by King's Vein Miner 513 + // "veinminer-enchantment", // covered by King's Vein Miner 514 + // "mc-258859", // handled by worldgen-patches (which also does snow under trees) 515 + 516 + // not marked as server-only? 517 + // "goat-expansion", 518 + // "firefly-in-a-bottle", 519 + // "better-frost-walker", 520 + 521 + // not updated to 1.21.5 522 + // "headfix", 523 + // "improved-village-placement", 524 + // "datapack:navigable-rivers", 525 + // "datapack:cliffs-and-coves", // probably not compatible with clifftree 526 + // "underground-rivers", 527 + // "pingspam", 528 + // "datapack:doorbells", 529 + // "datapack:gurkis-texture-variations", 530 + // "datapack:mob-wrangler", 531 + // "faster-random", 532 + // "astral-plane-dimension", 533 + // "trimmable-tools", 534 + // "dyeable-shulkers" 535 + 536 + // errors 537 + // "server-chat-sync", 538 + // "longer-chat-history", 539 + // "streamotes", // covered by Chat Emotes? 540 + // "hammer-mining-enchantment", 541 + // "mod-loading-screen", 542 + 543 + // performance? 544 + // "datapack:chest-bubbles", 545 + // "datapack:golf_ball", 546 + // "chunk-debug", 547 + // "ksyxis", // doesn't support Java 24 it seems https://github.com/VidTu/Ksyxis/issues/70 548 + // "minecartsloadchunks", 549 + // "call-of-the-king", 550 + // "neruina", 551 + // "velocity-command", 552 + // "tt20", 553 + 554 + // idk/look into 555 + // "server-chat-heads", 556 + // "spawn-animations", 557 + // "spawn-animations-compats", 558 + // "midnightlib", // only for spawn-animations 559 + // "mrshulker", 560 + // "right-click-chest-boat", 561 + // "crossbow-enchants", 562 + // "datapack:colored-axolotl-buckets", 563 + // "datapack:better_frost_walker", 564 + // "datapack:better-multishot", 565 + // "suggestion-tweaker", 566 + // "better-suggestions", 567 + // "stylish-stiles", // TODO: check if only server-side? 568 + // "all-death-messages", 569 + 570 + // meh 571 + // "name-tag-tweaks", 572 + // "datapack:talons-freecam", 573 + // "datapack:talons-jetpack", 574 + // "realistic-health", // find alternative without potion effects 575 + // "datapack:minecraft-ost-music-discs", // resource pack for this is 900MB so can't really do that through Polymer 576 + // "recipe-commands", 577 + ], 578 + }, 579 + capabilities: ["SYS_ADMIN"], 580 + stdinOpen: true, 581 + tty: true, 582 + destroyGraceSeconds: 30, 583 + // stopSignal: "SIGINT", 584 + }, 585 + { 586 + ignoreChanges: (await mcHasOnlinePlayers("minecraft-rengoku")) ? ["*"] : [], 587 + }, 588 + );
+18
services/haring/games/terraria.ts
··· 1 + import { getEnv } from "~lib/env"; 2 + import { nvmeMount } from "~lib/service/mounts"; 3 + import { ContainerService } from "~lib/service/service"; 4 + 5 + export const terrariaService = new ContainerService("terraria", { 6 + image: "passivelemon/terraria-docker:terraria-1.4.5", 7 + ports: [7777], 8 + mounts: [nvmeMount("terraria", "/opt/terraria/config")], 9 + envs: { 10 + DIFFICULTY: 1, 11 + MAXPLAYERS: 42, 12 + PASSWORD: getEnv("TERRARIA_PASSWORD"), 13 + NPCSTREAM: 1, 14 + MOTD: "- with <3 from Bas", 15 + }, 16 + tty: true, 17 + stdinOpen: true, 18 + });
+169
services/haring/index.ts
··· 1 + export * from "./web/traefik"; 2 + export * from "./web/caddy"; 3 + export * from "./web/whoami"; 4 + 5 + export * from "./media/plex"; 6 + export * from "./media/tautulli"; 7 + export * from "./media/sonarr"; 8 + export * from "./media/radarr"; 9 + export * from "./media/jackett"; 10 + export * from "./media/prowlarr"; 11 + export * from "./media/seerr"; 12 + // export * from "./media/bazarr"; 13 + export * from "./media/autolanguages"; 14 + export * from "./media/plexanibridge"; 15 + export * from "./media/medialytics"; 16 + export * from "./media/autobrr"; 17 + // export * from "./media/dashbrr"; 18 + export * from "./media/kitana"; 19 + export * from "./media/agregarr"; 20 + // export * from "./media/maintainerr"; 21 + export * from "./media/recyclarr"; 22 + export * from "./media/spotarr"; 23 + export * from "./media/spotweb"; 24 + export * from "./media/tracearr"; 25 + 26 + // export * from "./monitoring/beszel"; 27 + // export * from "./monitoring/glances"; 28 + export * from "./monitoring/grafana"; 29 + // export * from "./monitoring/netdata"; 30 + export * from "./monitoring/prometheus"; 31 + export * from "./monitoring/scrutiny"; 32 + export * from "./monitoring/uptimekuma"; 33 + 34 + // export * from "./networking/dnsmasq"; 35 + export * from "./networking/tailscale"; 36 + export * from "./networking/tinyproxy"; 37 + export * from "./networking/wireguard"; 38 + 39 + // export * from "./downloaders/jdownloader"; 40 + export * from "./downloaders/qbittorrent"; 41 + export * from "./downloaders/qbittorrent-exporter"; 42 + // export * from "./downloaders/qbittools"; 43 + export * from "./downloaders/sabnzbd"; 44 + 45 + export * from "./files/filebrowser"; 46 + export * from "./files/filestash"; 47 + export * from "./files/h5ai"; 48 + // export * from "./files/nextcloud"; 49 + // export * from "./files/nextexplorer"; 50 + export * from "./files/resilio"; 51 + export * from "./files/sftpgo"; 52 + // export * from "./files/sist2"; 53 + // export * from "./files/spacedrive"; 54 + export * from "./files/stash"; 55 + export * from "./files/synclounge"; 56 + 57 + export * from "./atproto/tranquil"; 58 + export * from "./atproto/pegasus"; 59 + export * from "./atproto/pds"; 60 + export * from "./atproto/relay"; 61 + // export * from "./atproto/social-app"; 62 + export * from "./atproto/tangled"; 63 + 64 + export * from "./communication/ergo"; 65 + export * from "./communication/thelounge"; 66 + 67 + // export * from "./games/blockheads"; 68 + // export * from "./games/hytale"; 69 + // export * from "./games/terraria"; 70 + export * from "./games/minecraft/servers/akio"; 71 + export * from "./games/minecraft/servers/rengoku"; 72 + export * from "./games/minecraft/rcon"; 73 + 74 + export * from "./remote/czkawka"; 75 + export * from "./remote/mkvtoolnix"; 76 + export * from "./remote/mkv-muxing-batch"; 77 + // export * from "./remote/redroid"; 78 + export * from "./remote/sealskin"; 79 + 80 + export * from "./other/anki"; 81 + // export * from "./other/kopia"; 82 + export * from "./other/librespeed"; 83 + export * from "./other/pixiv"; 84 + export * from "./other/prunemate"; 85 + 86 + // const syncthingService = new ContainerService("syncthing", { 87 + // servicePort: 8384, 88 + // subdomain: "syncthing", 89 + // ports: [22000, 21027], 90 + // mounts: [ 91 + // confMount("syncthing"), 92 + // { 93 + // source: "/home/bas/data/sync", 94 + // target: "/sync", 95 + // type: "bind", 96 + // bindOptions: { 97 + // propagation: "rshared", 98 + // }, 99 + // }, 100 + // ], 101 + // }); 102 + 103 + // const losslesscutService = new ContainerService("losslesscut", { 104 + // image: "outlyernet/losslesscut", 105 + // servicePort: 8080, 106 + // mounts: [confMount("losslesscut"), dataMount()], 107 + // }); 108 + 109 + // const signozService = new ContainerService("signoz", { 110 + // image: "signoz/otel-collector", 111 + // servicePort: 4317, 112 + // mounts: [ 113 + // confMount("signoz", "/etc/signoz"), 114 + // mount("/var/lib/signoz", "/var/lib/signoz", { propagation: "rslave" }), 115 + // ], 116 + // }); 117 + 118 + // const selkiesService = new ContainerService("selkies", { 119 + // servicePort: 3000, 120 + // envs: { 121 + // CUSTOM_USER: getEnv("USERNAME"), 122 + // PASSWORD: getEnv("VNC_PASSWORD"), 123 + // }, 124 + // }); 125 + 126 + // const seafileMariaDbService = new ContainerService("seafile-mariadb", { 127 + // image: "mariadb:10.11", 128 + // mounts: [confMount("seafile-mariadb", "/var/lib/mysql")], 129 + // envs: { 130 + // MARIADB_ROOT_PASSWORD: getEnv("SEAFILE_MARIADB_ROOT_PASSWORD"), 131 + // MARIADB_AUTO_UPGRADE: true, 132 + // }, 133 + // }); 134 + // 135 + // const seafileRedisService = new ContainerService("seafile-redis", { 136 + // image: "redis", 137 + // command: ["redis-server", "--requirepass", getEnv("SEAFILE_REDIS_PASSWORD")], 138 + // }); 139 + // 140 + // const seafileService = new ContainerService( 141 + // "seafile", 142 + // { 143 + // image: "seafileltd/seafile-mc:13.0-latest", 144 + // servicePort: 80, 145 + // mounts: [confMount("seafile", "/shared")], 146 + // envs: { 147 + // SEAFILE_MYSQL_DB_HOST: "seafile-mariadb", 148 + // SEAFILE_MYSQL_DB_USER: "seafile", 149 + // SEAFILE_MYSQL_DB_PASSWORD: getEnv("SEAFILE_MARIADB_USER_PASSWORD"), 150 + // INIT_SEAFILE_MYSQL_ROOT_PASSWORD: getEnv("SEAFILE_MARIADB_ROOT_PASSWORD"), 151 + // SEAFILE_MYSQL_DB_CCNET_DB_NAME: "ccnet_db", 152 + // SEAFILE_MYSQL_DB_SEAFILE_DB_NAME: "seafile_db", 153 + // SEAFILE_MYSQL_DB_SEAHUB_DB_NAME: "seahub_db", 154 + // TIME_ZONE: "Europe/Amsterdam", 155 + // INIT_SEAFILE_ADMIN_EMAIL: getEnv("SEAFILE_ADMIN_EMAIL"), 156 + // INIT_SEAFILE_ADMIN_PASSWORD: getEnv("SEAFILE_ADMIN_PASSWORD"), 157 + // SEAFILE_SERVER_HOSTNAME: "seafile.bas.sh", 158 + // SEAFILE_SERVER_PROTOCOL: "https", 159 + // REDIS_HOST: "seafile-redis", 160 + // JWT_PRIVATE_KEY: getEnv("SEAFILE_JWT_PRIVATE_KEY"), 161 + // REDIS_PASSWORD: getEnv("SEAFILE_REDIS_PASSWORD"), 162 + // }, 163 + // }, 164 + // { 165 + // dependsOn: [seafileMariaDbService, seafileRedisService], 166 + // }, 167 + // ); 168 + 169 + // TODO: try https://github.com/m1k1o/neko
+8
services/haring/media/agregarr.ts
··· 1 + import { confMount } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + export const agregarrService = new ContainerService("agregarr", { 5 + image: "agregarr/agregarr", 6 + servicePort: 7171, 7 + mounts: [confMount("agregarr", "/app/config")], 8 + });
+8
services/haring/media/autobrr.ts
··· 1 + import { confMount } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + export const autobrrService = new ContainerService("autobrr", { 5 + image: "ghcr.io/autobrr/autobrr", 6 + servicePort: 7474, 7 + mounts: [confMount("autobrr")], 8 + });
+23
services/haring/media/autolanguages.ts
··· 1 + import { getEnv } from "~lib/env"; 2 + import { ContainerService } from "~lib/service/service"; 3 + import { plexService } from "./plex"; 4 + 5 + let autolanguagesService: ContainerService | undefined; 6 + 7 + if (plexService?.localUrl) { 8 + autolanguagesService = new ContainerService("autolanguages", { 9 + // image: "remirigal/plex-auto-languages", 10 + image: "journeyover/plex-auto-languages", 11 + envs: { 12 + PLEX_TOKEN: getEnv("PLEX_TOKEN"), 13 + PLEX_URL: plexService.localUrl, 14 + UPDATE_LEVEL: "season", 15 + TRIGGER_ON_ACTIVITY: true, 16 + REFRESH_ON_SCAN: true, 17 + NOTIFICATIONS_ENABLE: true, 18 + NOTIFICATIONS_APPRISE_CONFIGS: `[{ urls: ["${getEnv("AUTO_LANGUAGES_DISCORD_WEBHOOK")}"], events: ["play_or_activity", "scheduler"] }]`, 19 + }, 20 + }); 21 + } 22 + 23 + export { autolanguagesService };
+7
services/haring/media/bazarr.ts
··· 1 + import { confMount, ssdcacheMount } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + export const bazarrService = new ContainerService("bazarr", { 5 + servicePort: 6767, 6 + mounts: [confMount("bazarr"), ssdcacheMount()], 7 + });
+12
services/haring/media/dashbrr.ts
··· 1 + import { confMount } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + export const dashbrrService = new ContainerService("dashbrr", { 5 + image: "ghcr.io/autobrr/dashbrr", 6 + servicePort: 8080, 7 + mounts: [confMount("dashbrr", "/data")], 8 + envs: { 9 + DASHBRR__DB_TYPE: "sqlite", 10 + DASHBRR__DB_PATH: "/data/dashbrr.db", 11 + }, 12 + });
+7
services/haring/media/jackett.ts
··· 1 + import { confMount, ssdcacheMount } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + export const jackettService = new ContainerService("jackett", { 5 + servicePort: 9117, 6 + mounts: [confMount("jackett"), ssdcacheMount()], 7 + });
+13
services/haring/media/kitana.ts
··· 1 + import { ContainerService } from "~lib/service/service"; 2 + 3 + export const kitanaService = new ContainerService("kitana", { 4 + image: "pannal/kitana", 5 + servicePort: 31337, 6 + command: ["-P"], 7 + volumes: [ 8 + { 9 + volumeName: "kitana", 10 + containerPath: "/app/data", 11 + }, 12 + ], 13 + });
+9
services/haring/media/maintainerr.ts
··· 1 + import { confMount } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + export const maintainerrService = new ContainerService("maintainerr", { 5 + image: "ghcr.io/jorenn92/maintainerr", 6 + servicePort: 6246, 7 + mounts: [confMount("maintainerr", "/opt/data")], 8 + middlewares: ["auth"], 9 + });
+19
services/haring/media/medialytics.ts
··· 1 + import { getEnv } from "~lib/env"; 2 + import { ContainerService } from "~lib/service/service"; 3 + import { plexService } from "./plex"; 4 + 5 + let medialyticsService: ContainerService | undefined; 6 + 7 + if (plexService?.localUrl) { 8 + medialyticsService = new ContainerService("medialytics", { 9 + image: "ghcr.io/drewpeifer/medialytics", 10 + servicePort: 80, 11 + envs: { 12 + SERVER_IP: "https://plex.bas.sh:443", 13 + SERVER_TOKEN: getEnv("PLEX_TOKEN"), 14 + }, 15 + middlewares: ["auth"], 16 + }); 17 + } 18 + 19 + export { medialyticsService };
+18
services/haring/media/plex.ts
··· 1 + import { interpolate } from "@pulumi/pulumi"; 2 + import { confMount, dataMount, gitMount } from "~lib/service/mounts"; 3 + import { ContainerService } from "~lib/service/service"; 4 + import { wireguardProtonService } from "../networking/wireguard"; 5 + 6 + let plexService: ContainerService | undefined; 7 + 8 + if (wireguardProtonService.container) { 9 + plexService = new ContainerService("plex", { 10 + servicePort: 32400, 11 + mounts: [confMount("plex"), dataMount(), gitMount()], 12 + networkMode: interpolate`container:${wireguardProtonService.container?.id}`, 13 + cpuShares: 2048, 14 + monitor: true, 15 + }); 16 + } 17 + 18 + export { plexService };
+34
services/haring/media/plexanibridge.ts
··· 1 + import { getEnv } from "~lib/env"; 2 + import { confMount } from "~lib/service/mounts"; 3 + import { ContainerService } from "~lib/service/service"; 4 + import { plexService } from "./plex"; 5 + 6 + let plexAniBridgeService: ContainerService | undefined; 7 + 8 + if (plexService?.localUrl) { 9 + plexAniBridgeService = new ContainerService("plexanibridge", { 10 + image: "ghcr.io/eliasbenb/plexanibridge", 11 + servicePort: 4848, 12 + mounts: [confMount("plexanibridge")], 13 + envs: { 14 + PAB_LOG_LEVEL: "DEBUG", 15 + PAB_PLEX_TOKEN: getEnv("PLEX_TOKEN"), 16 + PAB_PLEX_URL: plexService.localUrl, 17 + PAB_PLEX_SECTIONS: JSON.stringify(["TV Anime", "Movies Anime"]), 18 + // PAB_PROFILES__1__ANILIST_TOKEN: getEnv("ANILIST_TOKEN_1"), 19 + // PAB_PROFILES__1__PLEX_USER: getEnv("PLEX_USER_1"), 20 + PAB_PROFILES__2__ANILIST_TOKEN: getEnv("ANILIST_TOKEN_2"), 21 + PAB_PROFILES__2__PLEX_USER: getEnv("PLEX_USER_2"), 22 + PAB_PROFILES__2__EXCLUDED_SYNC_FIELDS: JSON.stringify([]), 23 + PAB_PROFILES__3__ANILIST_TOKEN: getEnv("ANILIST_TOKEN_3"), 24 + PAB_PROFILES__3__PLEX_USER: getEnv("PLEX_USER_3"), 25 + PAB_PROFILES__3__EXCLUDED_SYNC_FIELDS: JSON.stringify([]), 26 + PAB_PROFILES__4__ANILIST_TOKEN: getEnv("ANILIST_TOKEN_4"), 27 + PAB_PROFILES__4__PLEX_USER: getEnv("PLEX_USER_4"), 28 + PAB_PROFILES__4__EXCLUDED_SYNC_FIELDS: JSON.stringify([]), 29 + }, 30 + middlewares: ["auth"], 31 + }); 32 + } 33 + 34 + export { plexAniBridgeService };
+7
services/haring/media/prowlarr.ts
··· 1 + import { confMount, ssdcacheMount } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + export const prowlarrService = new ContainerService("prowlarr", { 5 + servicePort: 9696, 6 + mounts: [confMount("prowlarr"), ssdcacheMount()], 7 + });
+7
services/haring/media/radarr.ts
··· 1 + import { confMount, dataMount } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + export const radarrService = new ContainerService("radarr", { 5 + servicePort: 7878, 6 + mounts: [confMount("radarr"), dataMount()], 7 + });
+7
services/haring/media/recyclarr.ts
··· 1 + import { confMount } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + export const recyclarrService = new ContainerService("recyclarr", { 5 + image: "recyclarr/recyclarr", 6 + mounts: [confMount("recyclarr")], 7 + });
+11
services/haring/media/seerr.ts
··· 1 + import { confMount } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + export const seerrService = new ContainerService("seerr", { 5 + image: "ghcr.io/seerr-team/seerr", 6 + servicePort: 5055, 7 + subdomain: "request", 8 + mounts: [confMount("seerr", "/app/config")], 9 + init: true, 10 + monitor: true, 11 + });
+8
services/haring/media/sonarr.ts
··· 1 + import { confMount, dataMount } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + export const sonarrService = new ContainerService("sonarr", { 5 + servicePort: 8989, 6 + image: "lscr.io/linuxserver/sonarr:develop", 7 + mounts: [confMount("sonarr"), dataMount()], 8 + });
+21
services/haring/media/spotarr.ts
··· 1 + import { getEnv } from "~lib/env"; 2 + import { confMount } from "~lib/service/mounts"; 3 + import { ContainerService } from "~lib/service/service"; 4 + 5 + export const spottarrService = new ContainerService("spottarr", { 6 + image: "ghcr.io/spottarr/spottarr", 7 + mounts: [confMount("spottarr", "/data")], 8 + user: "1000:1000", 9 + envs: { 10 + USENET__HOSTNAME: getEnv("USENET_HOSTNAME"), 11 + USENET__USERNAME: getEnv("USENET_USERNAME"), 12 + USENET__PASSWORD: getEnv("USENET_PASSWORD"), 13 + USENET__PORT: getEnv("USENET_PORT"), 14 + USENET__USETLS: "true", 15 + USENET__MAXCONNECTIONS: "50", 16 + SPOTNET__RETRIEVEAFTER: "2009-11-01T00:00:00Z", 17 + SPOTNET__IMPORTBATCHSIZE: "100000", 18 + SPOTNET__RETENTIONDAYS: "0", 19 + SPOTNET__IMPORTADULTCONTENT: "true", 20 + }, 21 + });
+13
services/haring/media/spotweb.ts
··· 1 + import { confMount } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + export const spotwebService = new ContainerService("spotweb", { 5 + image: "erikdevries/spotweb", 6 + servicePort: 80, 7 + mounts: [confMount("spotweb", "/data")], 8 + envs: { 9 + DB_ENGINE: "pdo_sqlite", 10 + DB_NAME: "/data/spotweb.db", 11 + }, 12 + middlewares: ["auth"], 13 + });
+15
services/haring/media/tautulli.ts
··· 1 + import { confMount, gitMount } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + export const tautulliService = new ContainerService("tautulli", { 5 + servicePort: 8181, 6 + mounts: [ 7 + confMount("tautulli"), 8 + gitMount(), 9 + confMount("plex/Library/Application Support/Plex Media Server/Logs", "/plex-logs"), 10 + ], 11 + envs: { 12 + // DOCKER_MODS: "linuxserver/mods:universal-package-install", 13 + // INSTALL_PIP_PACKAGES: "-r /home/bas/git/PlexAniSync/requirements.txt", 14 + }, 15 + });
+12
services/haring/media/tracearr.ts
··· 1 + import { confMount } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + const tracearrService = new ContainerService("tracearr", { 5 + image: "ghcr.io/connorgallopo/tracearr:supervised", 6 + servicePort: 3000, 7 + mounts: [confMount("tracearr", "/data/tracearr")], 8 + volumes: [ 9 + { volumeName: "tracearr-postgres", containerPath: "/data/postgres" }, 10 + { volumeName: "tracearr-redis", containerPath: "/data/redis" }, 11 + ], 12 + });
+30
services/haring/monitoring/beszel.ts
··· 1 + import { mount, confMount, dockerSocket } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + const beszelSocket = mount("/var/run/beszel_socket", "/beszel_socket"); 5 + 6 + export const beszelService = new ContainerService("beszel", { 7 + image: "henrygd/beszel", 8 + servicePort: 8090, 9 + mounts: [confMount("beszel", "/beszel_data"), beszelSocket], 10 + healthcheck: { 11 + tests: ["CMD", "/beszel", "health", "--url", "http://localhost:8090"], 12 + startPeriod: "5s", 13 + interval: "1m0s", 14 + }, 15 + }); 16 + 17 + export const beszelAgentService = new ContainerService("beszel-agent", { 18 + image: "henrygd/beszel-agent", 19 + networkMode: "host", 20 + mounts: [beszelSocket, dockerSocket], 21 + envs: { 22 + LISTEN: "/beszel_socket/beszel.sock", 23 + KEY: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILQa/BKc2uJ0vlog1Cwr2H13Gh3y20eWVL41iwZl+Cyt", 24 + }, 25 + healthcheck: { 26 + tests: ["CMD", "/agent", "health"], 27 + startPeriod: "5s", 28 + interval: "1m0s", 29 + }, 30 + });
+14
services/haring/monitoring/glances.ts
··· 1 + import { dockerSocket } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + export const glancesService = new ContainerService("glances", { 5 + image: "nicolargo/glances", 6 + servicePort: 61208, 7 + ports: [61209], 8 + mounts: [dockerSocket], 9 + pidMode: "host", 10 + envs: { 11 + GLANCES_OPT: "-w", 12 + }, 13 + middlewares: ["auth"], 14 + });
+12
services/haring/monitoring/grafana.ts
··· 1 + import { confMount } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + export const grafanaService = new ContainerService("grafana", { 5 + image: "grafana/grafana-oss", 6 + servicePort: 3000, 7 + mounts: [confMount("grafana", "/var/lib/grafana")], 8 + envs: { 9 + GF_INSTALL_PLUGINS: "grafana-piechart-panel", 10 + }, 11 + user: "1000:1000", 12 + });
+25
services/haring/monitoring/netdata.ts
··· 1 + import { confMount, mount, dockerSocket } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + export const netdataService = new ContainerService("netdata", { 5 + image: "netdata/netdata", 6 + servicePort: 19999, 7 + mounts: [ 8 + confMount("netdata/config", "/etc/netdata"), 9 + confMount("netdata/lib", "/var/lib/netdata"), 10 + confMount("netdata/cache", "/var/cache/netdata"), 11 + mount("/", "/host/root", { propagation: "rslave", readOnly: true }), 12 + mount("/etc/passwd", "/host/etc/passwd", { readOnly: true }), 13 + mount("/etc/group", "/host/etc/group", { readOnly: true }), 14 + mount("/etc/localtime", "/host/etc/localtime", { readOnly: true }), 15 + mount("/proc", "/host/proc", { readOnly: true }), 16 + mount("/sys", "/host/sys", { readOnly: true }), 17 + mount("/etc/os-release", "/host/etc/os-release", { readOnly: true }), 18 + mount("/var/log", "/host/var/log", { readOnly: true }), 19 + mount("/run/dbus", "/host/run/dbus", { readOnly: true }), 20 + dockerSocket, 21 + ], 22 + capabilities: ["SYS_PTRACE", "SYS_ADMIN"], 23 + securityOpts: ["apparmor:unconfined"], 24 + networkMode: "host", 25 + });
+21
services/haring/monitoring/prometheus.ts
··· 1 + import { confMount } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + export const prometheusService = new ContainerService("prometheus", { 5 + image: "prom/prometheus", 6 + servicePort: 9090, 7 + mounts: [confMount("prometheus", "/etc/prometheus")], 8 + volumes: [ 9 + { 10 + volumeName: "prometheus", 11 + containerPath: "/prometheus", 12 + }, 13 + ], 14 + command: [ 15 + "--config.file=/etc/prometheus/prometheus.yml", 16 + "--storage.tsdb.path=/prometheus", 17 + "--web.console.libraries=/etc/prometheus/console_libraries", 18 + "--web.console.templates=/etc/prometheus/consoles", 19 + ], 20 + middlewares: ["auth"], 21 + });
+35
services/haring/monitoring/scrutiny.ts
··· 1 + import { confMount, mount } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + export const scrutinyService = new ContainerService("scrutiny", { 5 + image: "ghcr.io/analogj/scrutiny:master-omnibus", 6 + servicePort: 8080, 7 + mounts: [ 8 + confMount("scrutiny/config", "/opt/scrutiny/config"), 9 + confMount("scrutiny/influxdb", "/opt/scrutiny/influxdb"), 10 + mount("/run/udev", "/run/udev", { readOnly: true }), 11 + ], 12 + envs: { 13 + COLLECTOR_CRON_SCHEDULE: "0 * * * *", 14 + }, 15 + capabilities: ["SYS_RAWIO", "SYS_ADMIN"], 16 + devices: [ 17 + "sda", 18 + "sdb", 19 + "sdc", 20 + "sdd", 21 + "sde", 22 + "sdf", 23 + "sdg", 24 + "sdh", 25 + "sdi", 26 + "sdj", 27 + "nvme0", 28 + "nvme1", 29 + ].map((i) => ({ 30 + containerPath: `/dev/${i}`, 31 + hostPath: `/dev/${i}`, 32 + permissions: "r", 33 + })), 34 + middlewares: ["auth"], 35 + });
+22
services/haring/monitoring/uptimekuma.ts
··· 1 + import { getEnv } from "~lib/env"; 2 + import { confMount, dockerSocket } from "~lib/service/mounts"; 3 + import { ContainerService } from "~lib/service/service"; 4 + 5 + export const uptimekumaService = new ContainerService("uptimekuma", { 6 + image: "louislam/uptime-kuma:2", 7 + servicePort: 3001, 8 + subdomain: "status", 9 + mounts: [confMount("uptimekuma", "/app/data")], 10 + middlewares: ["auth"], 11 + }); 12 + 13 + export const autokumaService = new ContainerService("autokuma", { 14 + enabled: false, 15 + image: "ghcr.io/bigboot/autokuma", 16 + mounts: [confMount("autokuma", "/data"), dockerSocket], 17 + envs: { 18 + AUTOKUMA__KUMA__URL: "http://uptimekuma:3001", 19 + AUTOKUMA__KUMA__USERNAME: getEnv("AUTOKUMA_USERNAME"), 20 + AUTOKUMA__KUMA__PASSWORD: getEnv("AUTOKUMA_PASSWORD"), 21 + }, 22 + });
+9
services/haring/networking/dnsmasq.ts
··· 1 + import { confMount } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + export const dnsmasqService = new ContainerService("dnsmasq", { 5 + image: "jpillora/dnsmasq", 6 + ports: ["127.0.0.1:53:5353/udp"], 7 + mounts: [confMount("dnsmasq", "/etc/")], 8 + capabilities: ["NET_ADMIN"], 9 + });
+39
services/haring/networking/tailscale.ts
··· 1 + import { getEnv } from "~lib/env"; 2 + import { mount } from "~lib/service/mounts"; 3 + import { ContainerService } from "~lib/service/service"; 4 + import { Volume } from "@pulumi/docker"; 5 + import { haringDockerProvider } from "~lib/service/providers"; 6 + 7 + const tailscaleVolume = new Volume( 8 + "tailscale", 9 + { name: "tailscale" }, 10 + { 11 + retainOnDelete: true, 12 + provider: haringDockerProvider, 13 + }, 14 + ); 15 + 16 + export const tailscaleService = new ContainerService("tailscale", { 17 + image: "tailscale/tailscale", 18 + servicePort: 8080, 19 + volumes: [ 20 + { 21 + volumeName: tailscaleVolume.name, 22 + containerPath: "/var/lib/tailscale", 23 + }, 24 + ], 25 + mounts: [mount("/lib/modules")], 26 + envs: { 27 + TS_ACCEPT_DNS: false, 28 + TS_AUTHKEY: getEnv("TAILSCALE_AUTH_KEY"), 29 + TS_HOSTNAME: "haring-docker", 30 + TS_ENABLE_HEALTH_CHECK: true, 31 + TS_USERSPACE: true, 32 + TS_EXTRA_ARGS: "--advertise-exit-node --advertise-tags=tag:container", 33 + TS_STATE_DIR: "/var/lib/tailscale", 34 + }, 35 + // networkMode: "host", 36 + // devices: [{ hostPath: "/dev/net/tun", containerPath: "/dev/net/tun" }], 37 + capabilities: ["NET_ADMIN", "SYS_MODULE"], 38 + privileged: true, 39 + });
+19
services/haring/networking/tinyproxy.ts
··· 1 + import { interpolate } from "@pulumi/pulumi"; 2 + import { ContainerService } from "~lib/service/service"; 3 + import { wireguardMullvadService, wireguardProtonService } from "./wireguard"; 4 + 5 + let tinyproxyService: ContainerService | undefined; 6 + 7 + if (wireguardMullvadService.container || wireguardProtonService.container) { 8 + tinyproxyService = new ContainerService("tinyproxy", { 9 + image: "kalaksi/tinyproxy", 10 + envs: { 11 + LOG_LEVEL: "Info", 12 + TINYPROXY_UID: 1000, 13 + TINYPROXY_GID: 1000, 14 + }, 15 + networkMode: interpolate`container:${(wireguardMullvadService.container ?? wireguardProtonService.container)?.id}`, 16 + }); 17 + } 18 + 19 + export { tinyproxyService };
+38
services/haring/networking/wireguard.ts
··· 1 + import { confMount, mount } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + export const wireguardProtonService = new ContainerService("wireguard-proton", { 5 + image: "lscr.io/linuxserver/wireguard", 6 + // ports: [32400, "51820/udp"], 7 + ports: [32400, 32401, "51820/udp", "127.0.0.1:8889:8888"], 8 + mounts: [confMount("wireguard-proton"), mount("/lib/modules")], 9 + // envs: ["PEERS=2"], 10 + // privileged: true, 11 + capabilities: ["NET_ADMIN", "SYS_MODULE"], 12 + sysctls: { "net.ipv4.conf.all.src_valid_mark": "1" }, 13 + healthcheck: { 14 + tests: ["CMD", "/usr/bin/curl", "-sS", "icanhazip.com"], 15 + interval: "20s", 16 + retries: 3, 17 + timeout: "10s", 18 + }, 19 + cpuShares: 2048, 20 + }); 21 + 22 + export const wireguardMullvadService = new ContainerService("wireguard-mullvad", { 23 + enabled: false, 24 + image: "lscr.io/linuxserver/wireguard", 25 + // ports: [8888], 26 + mounts: [confMount("wireguard-mullvad"), mount("/lib/modules")], 27 + // envs: ["PEERS=2"], 28 + // privileged: true, 29 + capabilities: ["NET_ADMIN", "SYS_MODULE"], 30 + sysctls: { "net.ipv4.conf.all.src_valid_mark": "1" }, 31 + healthcheck: { 32 + tests: ["CMD", "/usr/bin/curl", "-sS", "icanhazip.com"], 33 + interval: "20s", 34 + retries: 3, 35 + timeout: "10s", 36 + }, 37 + cpuShares: 2048, 38 + });
+13
services/haring/other/anki.ts
··· 1 + import { confMount } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + export const ankiService = new ContainerService("anki", { 5 + image: "ankicommunity/anki-sync-server:latest-develop", 6 + servicePort: 27701, 7 + envs: { 8 + ANKISYNCD_AUTH_DB_PATH: "/app/data/auth.db", 9 + ANKISYNCD_DATA_ROOT: "/app/data/collections", 10 + ANKISYNCD_SESSION_DB_PATH: "/app/data/session.db", 11 + }, 12 + mounts: [confMount("anki", "/app/data")], 13 + });
+29
services/haring/other/kopia.ts
··· 1 + import { interpolate } from "@pulumi/pulumi"; 2 + import { getEnv } from "~lib/env"; 3 + import { confMount, dataMount, mount } from "~lib/service/mounts"; 4 + import { ContainerService } from "~lib/service/service"; 5 + 6 + export const kopiaService = new ContainerService("kopia", { 7 + image: "kopia/kopia", 8 + servicePort: 51515, 9 + hostname: "Bas", 10 + envs: { 11 + USER: getEnv("USERNAME"), 12 + KOPIA_PASSWORD: getEnv("KOPIA_PASSWORD"), 13 + }, 14 + mounts: [ 15 + confMount("kopia", "/app"), 16 + dataMount("kopia", "/repository"), 17 + mount("/tmp/kopia", "/tmp"), 18 + mount("/home/bas/.config/rclone", "/app/rclone"), 19 + ], 20 + command: [ 21 + "server", 22 + "start", 23 + "--disable-csrf-token-checks", 24 + "--insecure", 25 + "--address=0.0.0.0:51515", 26 + `--server-username=${getEnv("USERNAME")}`, 27 + interpolate`--server-password=${getEnv("KOPIA_PASSWORD")}`, 28 + ], 29 + });
+21
services/haring/other/librespeed.ts
··· 1 + import { getEnv } from "~lib/env"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + export const librespeedService = new ContainerService("librespeed", { 5 + enabled: true, 6 + image: "ghcr.io/librespeed/speedtest", 7 + servicePort: 8080, 8 + subdomain: "speedtest", 9 + otherServicePorts: { 10 + speed: 8080, 11 + }, 12 + envs: { 13 + TITLE: "Speedtest | Bas", 14 + TELEMETRY: true, 15 + ENABLE_ID_OBFUSCATION: true, 16 + REDACT_IP_ADDRESSES: true, 17 + EMAIL: getEnv("EMAIL"), 18 + PASSWORD: getEnv("LIBRESPEED_PASSWORD"), 19 + IPINFO_APIKEY: getEnv("IPINFO_APIKEY"), 20 + }, 21 + });
+19
services/haring/other/netronome.ts
··· 1 + import { DnsRecord } from "@pulumi/cloudflare"; 2 + import { getEnv } from "~lib/env"; 3 + import { confMount } from "~lib/service/mounts"; 4 + import { ContainerService } from "~lib/service/service"; 5 + 6 + export const netronomeService = new ContainerService("netronome", { 7 + image: "ghcr.io/autobrr/netronome", 8 + servicePort: 7575, 9 + mounts: [confMount("netronome", "/data")], 10 + }); 11 + 12 + export const netronomeDnsRecord = new DnsRecord("netronome", { 13 + zoneId: getEnv("CLOUDFLARE_ZONE_ID"), 14 + name: "netronome", 15 + type: "CNAME", 16 + ttl: 1, 17 + content: "haring.bas.sh", 18 + proxied: false, 19 + });
+7
services/haring/other/pixiv.ts
··· 1 + import { confMount } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + export const pixivPublicToPrivateService = new ContainerService("pixiv-public-to-private", { 5 + image: "ghcr.io/tomacheese/pixiv-public-to-private", 6 + mounts: [confMount("pixiv-public-to-private", "/data")], 7 + });
+17
services/haring/other/prunemate.ts
··· 1 + import { confMount, dockerSocketRw } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + export const prunemateService = new ContainerService("prunemate", { 5 + image: "anoniemerd/prunemate", 6 + servicePort: 8080, 7 + mounts: [ 8 + confMount("prunemate/logs", "/var/log"), 9 + confMount("prunemate/config", "/config"), 10 + dockerSocketRw, 11 + ], 12 + envs: { 13 + PRUNEMATE_TZ: "Europe/Amsterdam", 14 + PRUNEMATE_TIME_24H: true, 15 + }, 16 + middlewares: ["auth"], 17 + });
+19
services/haring/remote/czkawka.ts
··· 1 + import { getEnv } from "~lib/env"; 2 + import { confMount, ssdcacheMount } from "~lib/service/mounts"; 3 + import { ContainerService } from "~lib/service/service"; 4 + 5 + export const czkawkaService = new ContainerService("czkawka", { 6 + image: "jlesage/czkawka", 7 + servicePort: 5800, 8 + mounts: [confMount("czkawka"), ssdcacheMount("", "/storage")], 9 + envs: { 10 + USER_ID: getEnv("PGID"), 11 + GROUP_ID: getEnv("PUID"), 12 + DARK_MODE: 1, 13 + WEB_AUDIO: 1, 14 + WEB_FILE_MANAGER: 1, 15 + ENABLE_CJK_FONT: 1, 16 + APP_NICENESS: 15, 17 + }, 18 + middlewares: ["auth"], 19 + });
+17
services/haring/remote/mkv-muxing-batch.ts
··· 1 + import { getEnv } from "~lib/env"; 2 + import { confMount, ssdcacheMount } from "~lib/service/mounts"; 3 + import { ContainerService } from "~lib/service/service"; 4 + 5 + export const mkvMuxingBatchService = new ContainerService("mkv-batch", { 6 + image: "jlesage/mkv-muxing-batch-gui", 7 + servicePort: 5800, 8 + subdomain: "mkv-batch", 9 + mounts: [confMount("mkv-batch"), ssdcacheMount()], 10 + envs: { 11 + VNC_PASSWORD: getEnv("VNC_PASSWORD"), 12 + DARK_MODE: true, 13 + APP_NICENESS: 10, 14 + KEEP_APP_RUNNING: 1, 15 + ENABLE_CJK_FONT: 1, 16 + }, 17 + });
+16
services/haring/remote/mkvtoolnix.ts
··· 1 + import { getEnv } from "~lib/env"; 2 + import { confMount, ssdcacheMount } from "~lib/service/mounts"; 3 + import { ContainerService } from "~lib/service/service"; 4 + 5 + export const mkvtoolnixService = new ContainerService("mkvtoolnix", { 6 + image: "jlesage/mkvtoolnix", 7 + servicePort: 5800, 8 + mounts: [confMount("mkvtoolnix"), ssdcacheMount()], 9 + envs: { 10 + VNC_PASSWORD: getEnv("VNC_PASSWORD"), 11 + DARK_MODE: true, 12 + APP_NICENESS: 10, 13 + KEEP_APP_RUNNING: 1, 14 + ENABLE_CJK_FONT: 1, 15 + }, 16 + });
+18
services/haring/remote/redroid.ts
··· 1 + import { confMount, ssdcacheMount } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + export const redroidService = new ContainerService("redroid", { 5 + enabled: false, // seems to break my entire server's networking setup somehow? 6 + image: "redroid/redroid:12.0.0_64only-latest", 7 + privileged: true, 8 + ports: ["100.93.167.100:5555:5555"], 9 + mounts: [confMount("redroid", "/data"), ssdcacheMount("redroid", "/storage/emulated/0/NAS")], 10 + command: [ 11 + "androidboot.redroid_width=1080", 12 + "androidboot.redroid_height=1920", 13 + "androidboot.redroid_dpi=480", 14 + "androidboot.use_memfd=true", 15 + "ro.secure=0", 16 + ], 17 + networkMode: "bridge", 18 + });
+8
services/haring/remote/sealskin.ts
··· 1 + import { confMount, ssdcacheMount, dockerSocketRw } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + export const sealskinService = new ContainerService("sealskin", { 5 + ports: [8000, 8443], 6 + mounts: [confMount("sealskin"), ssdcacheMount("sealskin", "/storage"), dockerSocketRw], 7 + networkMode: "bridge", 8 + });
+25
services/haring/web/caddy.ts
··· 1 + import { getEnv } from "~lib/env"; 2 + import { ssdcacheMount } from "~lib/service/mounts"; 3 + import { ContainerService } from "~lib/service/service"; 4 + 5 + const SUBDOMAINS = ["get", "static", "files", "f", "i"]; 6 + 7 + const CADDYFILE = ` 8 + ${SUBDOMAINS.map((sub) => `http://${sub}.bas.sh:80`).join(" ")} { 9 + file_server browse { 10 + } 11 + header X-Robots-Tag "noindex" 12 + basic_auth /plex/* { 13 + ${getEnv("CADDY_USERNAME")} ${Buffer.from(getEnv("CADDY_PASSWORD")).toString("base64")} 14 + } 15 + } 16 + `; 17 + 18 + export const caddyFileserverService = new ContainerService(`caddy-fileserver`, { 19 + image: "caddy", 20 + servicePort: 80, 21 + hostRule: SUBDOMAINS.map((sub) => `Host(\`${sub}.bas.sh\`)`).join(" || "), 22 + command: ["/bin/sh", "-c", `echo '${CADDYFILE}' | caddy run --config - --adapter caddyfile`], 23 + mounts: [ssdcacheMount("web/files", "/var/www"), ssdcacheMount()], 24 + workingDir: "/var/www", 25 + });
+15
services/haring/web/dani/dani.ts
··· 1 + import { ssdcacheMount } from "~lib/service/mounts"; 2 + import { ContainerService } from "~lib/service/service"; 3 + 4 + const CADDYFILE = ` 5 + danimutiara.nl:80 {} 6 + `; 7 + 8 + export const caddyFileserverService = new ContainerService(`caddy-dani`, { 9 + image: "caddy", 10 + servicePort: 80, 11 + subdomain: "dani", 12 + command: ["/bin/sh", "-c", `echo '${CADDYFILE}' | caddy run --config - --adapter caddyfile`], 13 + mounts: [ssdcacheMount("web/dani", "/var/www"), ssdcacheMount()], 14 + workingDir: "/var/www", 15 + });
+125
services/haring/web/traefik.ts
··· 1 + import { Volume } from "@pulumi/docker"; 2 + import { ContainerService } from "~lib/service/service"; 3 + import { dockerSocket } from "~lib/service/mounts"; 4 + import { getEnv } from "~lib/env"; 5 + import { haringDockerProvider } from "~lib/service/providers"; 6 + import { secretLabels } from "./traefik-secrets"; 7 + 8 + const traefikVolume = new Volume( 9 + "traefik", 10 + { name: "traefik" }, 11 + { 12 + retainOnDelete: true, 13 + provider: haringDockerProvider, 14 + }, 15 + ); 16 + 17 + export const traefikService = new ContainerService( 18 + "traefik", 19 + { 20 + image: "traefik", 21 + servicePort: 8080, 22 + volumes: [ 23 + { 24 + volumeName: traefikVolume.name, 25 + containerPath: "/etc/traefik", 26 + }, 27 + ], 28 + mounts: [dockerSocket], 29 + ports: [80, 443, "443/udp"], 30 + envs: { 31 + CF_API_EMAIL: getEnv("EMAIL"), 32 + CF_API_KEY: getEnv("CLOUDFLARE_API_KEY"), 33 + }, 34 + cpuShares: 2048, 35 + command: [ 36 + "--api", 37 + // "--accesslog=true", 38 + // "--accesslog.format=json", 39 + // "--accesslog.fields.headers.defaultmode=keep", 40 + 41 + "--providers.docker.exposedbydefault=false", 42 + "--providers.docker.network=haring", 43 + 44 + "--serverstransport.insecureskipverify", 45 + 46 + "--entrypoints.http.address=[::]:80", 47 + "--entrypoints.http.reusePort=true", 48 + "--entrypoints.https.address=[::]:443", 49 + "--entrypoints.https.reusePort=true", 50 + // "--entrypoints.http.address=0.0.0.0:80", 51 + // "--entrypoints.https.address=0.0.0.0:443", 52 + "--entrypoints.https.http3", 53 + "--entrypoints.https.http.tls=true", 54 + "--entrypoints.https.http.tls.certresolver=cloudflare", 55 + "--entrypoints.https.http.tls.domains[0].main=bas.sh", 56 + "--entrypoints.https.http.tls.domains[0].sans=*.bas.sh,*.tranquil.bas.sh,*.pegasus.bas.sh,*.on.bas.sh,*.t.bas.sh", 57 + "--entrypoints.https.http.tls.domains[1].main=danimutiara.nl", 58 + "--entrypoints.https.http.tls.domains[1].sans=*.danimutiara.nl", 59 + 60 + "--certificatesresolvers.cloudflare.acme.dnschallenge=true", 61 + "--certificatesresolvers.cloudflare.acme.dnschallenge.provider=cloudflare", 62 + // "--certificatesresolvers.cloudflare.acme.dnschallenge.resolvers=1.1.1.1:53,8.8.8.8:53", 63 + "--certificatesresolvers.cloudflare.acme.dnschallenge.resolvers=8.8.8.8:53", 64 + "--certificatesresolvers.cloudflare.acme.storage=/etc/traefik/acme.json", 65 + `--certificatesresolvers.cloudflare.acme.email=${getEnv("EMAIL")}`, 66 + 67 + // "--experimental.plugins.cloudflare.modulename=github.com/agence-gaya/traefik-plugin-cloudflare", 68 + // "--experimental.plugins.cloudflare.version=v1.2.0", 69 + "--experimental.plugins.cloudflare.modulename=github.com/PseudoResonance/cloudflarewarp", 70 + "--experimental.plugins.cloudflare.version=v1.4.2", 71 + 72 + "--experimental.plugins.staticresponse.modulename=github.com/jdel/staticresponse", 73 + "--experimental.plugins.staticresponse.version=v0.0.1", 74 + 75 + "--metrics.prometheus=true", 76 + "--metrics.prometheus.addEntryPointsLabels=true", 77 + "--metrics.prometheus.addServicesLabels=true", 78 + "--metrics.prometheus.addRoutersLabels=true", 79 + "--metrics.prometheus.buckets=0.1,0.3,1.2,5.0", 80 + "--metrics.prometheus.manualRouting=true", 81 + 82 + // "--metrics.otlp=true", 83 + // `--metrics.otlp.address=`, 84 + ], 85 + labels: { 86 + "traefik.http.middlewares.httpsredirect.redirectscheme.scheme": "https", 87 + "traefik.http.middlewares.httpsredirect.redirectscheme.permanent": "true", 88 + "traefik.http.routers.httpsredirect.rule": "HostRegexp(`.+`)", 89 + "traefik.http.routers.httpsredirect.entrypoints": "http", 90 + "traefik.http.routers.httpsredirect.middlewares": "cloudflare,httpsredirect", 91 + 92 + "traefik.http.middlewares.auth.basicauth.users": 93 + "bas:$2y$05$XUkzwNnxl2sdNIMqrqspsulGw6fbj1smtwk7bMClLiDIsrR3EatOG", 94 + 95 + // "traefik.http.middlewares.cloudflare.plugin.cloudflare.allowedCIDRs": "0.0.0.0/0,::/0", 96 + // "traefik.http.middlewares.cloudflare.plugin.cloudflare.refreshInterval": "24h", 97 + // "traefik.http.middlewares.cloudflare.plugin.cloudflare.debug": "true", 98 + "traefik.http.middlewares.cloudflare.plugin.cloudflare.disableDefault": "false", 99 + 100 + "traefik.http.middlewares.atproto-did.plugin.staticresponse.statuscode": "200", 101 + "traefik.http.middlewares.atproto-did.plugin.staticresponse.body": getEnv("ATPROTO_DID"), 102 + "traefik.http.middlewares.atproto-did-cors.headers.accesscontrolallowmethods": "GET", 103 + "traefik.http.middlewares.atproto-did-cors.headers.accesscontrolallowheaders": "*", 104 + "traefik.http.middlewares.atproto-did-cors.headers.accesscontrolalloworiginlist": "*", 105 + "traefik.http.routers.atproto-did.rule": "Host(`bas.sh`) && Path(`/.well-known/atproto-did`)", 106 + "traefik.http.routers.atproto-did.entrypoints": "https", 107 + "traefik.http.routers.atproto-did.middlewares": "cloudflare,atproto-did-cors,atproto-did", 108 + 109 + "traefik.http.middlewares.relay.headers.customrequestheaders.Origin": "", 110 + 111 + "traefik.http.routers.traefik-bas-sh.service": "api@internal", 112 + "traefik.http.routers.traefik-bas-sh.middlewares": "cloudflare,auth", 113 + 114 + "traefik.http.routers.metrics.service": "prometheus@internal", 115 + "traefik.http.routers.metrics.rule": "Host(`metrics.bas.sh`)", 116 + "traefik.http.routers.metrics.entrypoints": "https", 117 + "traefik.http.routers.metrics.middlewares": "cloudflare,auth", 118 + 119 + ...secretLabels, 120 + }, 121 + }, 122 + { 123 + // deleteBeforeReplace: false, 124 + }, 125 + );
+6
services/haring/web/whoami.ts
··· 1 + import { ContainerService } from "~lib/service/service"; 2 + 3 + export const whoamiService = new ContainerService("whoami", { 4 + image: "ghcr.io/traefik/whoami", 5 + servicePort: 80, 6 + });
-889
src/haring.ts
··· 1 - import * as docker from "@pulumi/docker"; 2 - import { ContainerService } from "~lib/service/service"; 3 - import { 4 - dockerSocket, 5 - confMount, 6 - mount, 7 - ssdcacheMount, 8 - gitMount, 9 - nvmeMount, 10 - dataMount, 11 - } from "~lib/service/mounts"; 12 - import { interpolate } from "@pulumi/pulumi"; 13 - import { getEnv } from "~lib/env"; 14 - import { haringDockerProvider } from "~lib/service/providers"; 15 - 16 - const traefikVolume = new docker.Volume( 17 - "traefik", 18 - { name: "traefik" }, 19 - { 20 - retainOnDelete: true, 21 - provider: haringDockerProvider, 22 - }, 23 - ); 24 - 25 - const traefikService = new ContainerService("traefik", { 26 - image: "traefik", 27 - servicePort: 8080, 28 - volumes: [ 29 - { 30 - volumeName: traefikVolume.name, 31 - containerPath: "/etc/traefik", 32 - }, 33 - ], 34 - mounts: [dockerSocket], 35 - ports: [80, 443, "443/udp"], 36 - envs: { 37 - CF_API_EMAIL: getEnv("EMAIL"), 38 - CF_API_KEY: getEnv("CLOUDFLARE_API_KEY"), 39 - }, 40 - command: [ 41 - "--api", 42 - 43 - "--providers.docker.exposedbydefault=false", 44 - "--providers.docker.network=haring", 45 - 46 - "--serverstransport.insecureskipverify", 47 - 48 - "--entrypoints.http.address=[::]:80", 49 - "--entrypoints.https.address=[::]:443", 50 - // "--entrypoints.http.address=0.0.0.0:80", 51 - // "--entrypoints.https.address=0.0.0.0:443", 52 - "--entrypoints.https.http3", 53 - "--entrypoints.https.http.tls=true", 54 - "--entrypoints.https.http.tls.certresolver=cloudflare", 55 - "--entrypoints.https.http.tls.domains[0].main=bas.sh", 56 - "--entrypoints.https.http.tls.domains[0].sans=*.bas.sh", 57 - 58 - "--certificatesresolvers.cloudflare.acme.dnschallenge=true", 59 - "--certificatesresolvers.cloudflare.acme.dnschallenge.provider=cloudflare", 60 - // "--certificatesresolvers.cloudflare.acme.dnschallenge.resolvers=1.1.1.1:53,8.8.8.8:53", 61 - "--certificatesresolvers.cloudflare.acme.dnschallenge.resolvers=8.8.8.8:53", 62 - "--certificatesresolvers.cloudflare.acme.storage=/etc/traefik/acme.json", 63 - `--certificatesresolvers.cloudflare.acme.email=${getEnv("EMAIL")}`, 64 - 65 - "--experimental.plugins.cloudflare.modulename=github.com/agence-gaya/traefik-plugin-cloudflare", 66 - "--experimental.plugins.cloudflare.version=v1.2.0", 67 - "--experimental.plugins.staticresponse.modulename=github.com/jdel/staticresponse", 68 - "--experimental.plugins.staticresponse.version=v0.0.1", 69 - 70 - "--metrics.prometheus=true", 71 - "--metrics.prometheus.addEntryPointsLabels=true", 72 - "--metrics.prometheus.addServicesLabels=true", 73 - "--metrics.prometheus.addRoutersLabels=true", 74 - "--metrics.prometheus.buckets=0.1,0.3,1.2,5.0", 75 - "--metrics.prometheus.manualRouting=true", 76 - 77 - // "--metrics.otlp=true", 78 - // `--metrics.otlp.address=`, 79 - ], 80 - labels: { 81 - "traefik.http.middlewares.httpsredirect.redirectscheme.scheme": "https", 82 - "traefik.http.middlewares.httpsredirect.redirectscheme.permanent": "true", 83 - 84 - "traefik.http.middlewares.auth.basicauth.users": 85 - "bas:$2y$05$XUkzwNnxl2sdNIMqrqspsulGw6fbj1smtwk7bMClLiDIsrR3EatOG", 86 - 87 - "traefik.http.middlewares.cloudflare.plugin.cloudflare.allowedCIDRs": 88 - "0.0.0.0/0,::/0", 89 - "traefik.http.middlewares.cloudflare.plugin.cloudflare.refreshInterval": 90 - "24h", 91 - "traefik.http.middlewares.cloudflare.plugin.cloudflare.debug": "true", 92 - 93 - "traefik.http.middlewares.teena.plugin.staticresponse.statuscode": "200", 94 - "traefik.http.middlewares.teena.plugin.staticresponse.body": 95 - "teena is cute :3", 96 - 97 - "traefik.http.middlewares.mau.plugin.staticresponse.statuscode": "200", 98 - "traefik.http.middlewares.mau.plugin.staticresponse.body": ":3", 99 - 100 - "traefik.http.middlewares.owo.plugin.staticresponse.statuscode": "200", 101 - "traefik.http.middlewares.owo.plugin.staticresponse.body": "what's this?", 102 - 103 - "traefik.http.routers.httpsredirect.rule": "HostRegexp(`.+`)", 104 - "traefik.http.routers.httpsredirect.entrypoints": "http", 105 - "traefik.http.routers.httpsredirect.middlewares": "httpsredirect", 106 - 107 - "traefik.http.routers.traefik.service": "api@internal", 108 - "traefik.http.routers.traefik.middlewares": "auth", 109 - 110 - "traefik.http.routers.metrics.service": "prometheus@internal", 111 - "traefik.http.routers.metrics.rule": "Host(`metrics.bas.sh`)", 112 - "traefik.http.routers.metrics.entrypoints": "https", 113 - "traefik.http.routers.metrics.middlewares": "auth", 114 - 115 - "traefik.http.routers.teena.rule": 116 - "HostRegexp(`^((giga|sigmas?)|gigasigmas?|teena|martyna|a(wa){2,4}|(mi){2,6}|(meow){1,3}).bas.sh$`)", 117 - "traefik.http.routers.teena.entrypoints": "https", 118 - "traefik.http.routers.teena.middlewares": "teena", 119 - 120 - "traefik.http.routers.mau.rule": 121 - "HostRegexp(`^mau(sleeps|craft)?.bas.sh$`)", 122 - "traefik.http.routers.mau.entrypoints": "https", 123 - "traefik.http.routers.mau.middlewares": "mau", 124 - 125 - "traefik.http.routers.owo.rule": "HostRegexp(`^owo.bas.sh$`)", 126 - "traefik.http.routers.owo.entrypoints": "https", 127 - "traefik.http.routers.owo.middlewares": "owo", 128 - }, 129 - }); 130 - 131 - const whoamiService = new ContainerService("whoami", { 132 - image: "traefik/whoami", 133 - servicePort: 80, 134 - }); 135 - 136 - const wireguardProtonService = new ContainerService( 137 - "wireguard-proton", 138 - { 139 - image: "lscr.io/linuxserver/wireguard", 140 - // ports: [32400, "51820/udp"], 141 - ports: [32400, 32401, "51820/udp", "127.0.0.1:8889:8888"], 142 - mounts: [confMount("wireguard-proton"), mount("/lib/modules")], 143 - // envs: ["PEERS=2"], 144 - privileged: true, 145 - capabilities: ["NET_ADMIN", "SYS_MODULE"], 146 - sysctls: { "net.ipv4.conf.all.src_valid_mark": "1" }, 147 - healthcheck: { 148 - tests: ["CMD", "/usr/bin/curl", "-sS", "icanhazip.com"], 149 - interval: "20s", 150 - retries: 3, 151 - timeout: "10s", 152 - }, 153 - }, 154 - { 155 - ignoreChanges: ["ports"], 156 - }, 157 - ); 158 - 159 - const wireguardMullvadService = new ContainerService( 160 - "wireguard-mullvad", 161 - { 162 - enabled: false, 163 - image: "lscr.io/linuxserver/wireguard", 164 - // ports: [8888], 165 - mounts: [confMount("wireguard-mullvad"), mount("/lib/modules")], 166 - // envs: ["PEERS=2"], 167 - privileged: true, 168 - capabilities: ["NET_ADMIN", "SYS_MODULE"], 169 - sysctls: { "net.ipv4.conf.all.src_valid_mark": "1" }, 170 - healthcheck: { 171 - tests: ["CMD", "/usr/bin/curl", "-sS", "icanhazip.com"], 172 - interval: "20s", 173 - retries: 3, 174 - timeout: "10s", 175 - }, 176 - }, 177 - { 178 - ignoreChanges: ["ports"], 179 - }, 180 - ); 181 - 182 - if (wireguardMullvadService.container || wireguardProtonService.container) { 183 - const tinyproxyService = new ContainerService( 184 - "tinyproxy", 185 - { 186 - image: "kalaksi/tinyproxy", 187 - envs: { 188 - LOG_LEVEL: "Info", 189 - TINYPROXY_UID: 1000, 190 - TINYPROXY_GID: 1000, 191 - }, 192 - networkMode: interpolate`container:${(wireguardMullvadService.container ?? wireguardProtonService.container)?.id}`, 193 - }, 194 - { 195 - ignoreChanges: ["ports"], 196 - }, 197 - ); 198 - } 199 - 200 - if (wireguardProtonService.container) { 201 - const plexService = new ContainerService( 202 - "plex", 203 - { 204 - servicePort: 32400, 205 - mounts: [confMount("plex"), ssdcacheMount(), gitMount], 206 - networkMode: interpolate`container:${wireguardProtonService.container?.id}`, 207 - }, 208 - { 209 - ignoreChanges: ["ports"], 210 - }, 211 - ); 212 - } 213 - 214 - const syncloungeService = new ContainerService("synclounge", { 215 - servicePort: 8088, 216 - envs: { 217 - AUTH_LIST: "e3b846edd661008e79919a414fdc3b957dad97ac", 218 - }, 219 - }); 220 - 221 - const overseerrService = new ContainerService("overseerr", { 222 - image: "lscr.io/linuxserver/overseerr:develop", 223 - servicePort: 5055, 224 - subdomain: "request", 225 - mounts: [confMount("overseerr"), ssdcacheMount()], 226 - }); 227 - 228 - const sonarrService = new ContainerService("sonarr", { 229 - servicePort: 8989, 230 - image: "lscr.io/linuxserver/sonarr:develop", 231 - mounts: [confMount("sonarr"), ssdcacheMount()], 232 - }); 233 - 234 - const radarrService = new ContainerService("radarr", { 235 - servicePort: 7878, 236 - mounts: [confMount("radarr"), ssdcacheMount()], 237 - }); 238 - 239 - const jackettService = new ContainerService("jackett", { 240 - servicePort: 9117, 241 - mounts: [confMount("jackett"), ssdcacheMount()], 242 - }); 243 - 244 - const prowlarrService = new ContainerService("prowlarr", { 245 - servicePort: 9696, 246 - mounts: [confMount("prowlarr"), ssdcacheMount()], 247 - }); 248 - 249 - const kitanaService = new ContainerService("kitana", { 250 - image: "pannal/kitana", 251 - servicePort: 31337, 252 - command: ["-P"], 253 - volumes: [ 254 - { 255 - volumeName: "kitana", 256 - containerPath: "/app/data", 257 - }, 258 - ], 259 - }); 260 - 261 - const tautulliService = new ContainerService("tautulli", { 262 - servicePort: 8181, 263 - mounts: [ 264 - confMount("tautulli"), 265 - gitMount, 266 - confMount( 267 - "plex/Library/Application Support/Plex Media Server/Logs", 268 - "/plex-logs", 269 - ), 270 - ], 271 - envs: { 272 - DOCKER_MODS: "linuxserver/mods:universal-package-install", 273 - INSTALL_PIP_PACKAGES: "-r /home/bas/git/PlexAniSync/requirements.txt", 274 - }, 275 - }); 276 - 277 - const qbittorrentService = new ContainerService("qbittorrent", { 278 - image: "lscr.io/linuxserver/qbittorrent:5.1.2", 279 - servicePort: 8080, 280 - // ports: [1337, "1337/udp"], 281 - envs: { 282 - // TORRENTING_PORT: 1337, 283 - DOCKER_MODS: "ghcr.io/vuetorrent/vuetorrent-lsio-mod:latest", 284 - }, 285 - mounts: [confMount("qbittorrent"), dataMount(), nvmeMount()], 286 - networkMode: "host", 287 - }); 288 - 289 - const qbittorrentExporterService = new ContainerService( 290 - "qbittorrent-exporter", 291 - { 292 - image: "caseyscarborough/qbittorrent-exporter", 293 - servicePort: 17871, 294 - envs: { 295 - QBITTORRENT_BASE_URL: qbittorrentService.localUrl ?? "", 296 - QBITTORRENT_USERNAME: getEnv("USERNAME"), 297 - QBITTORRENT_PASSWORD: getEnv("QBITTORRENT_PASSWORD"), 298 - }, 299 - }, 300 - ); 301 - 302 - const qbittoolsService = new ContainerService("qbittools", { 303 - enabled: true, 304 - image: "registry.gitlab.com/alexkm/qbittools", 305 - mounts: [confMount("qbittorrent", "/qbittorrent"), ssdcacheMount()], 306 - command: [ 307 - "reannounce", 308 - "-C", 309 - "/qbittorrent/qBittorrent.conf", 310 - "-s", 311 - "https://qbittorrent.bas.sh:443", 312 - "-U", 313 - getEnv("USERNAME"), 314 - "-P", 315 - getEnv("QBITTORRENT_PASSWORD"), 316 - ], 317 - }); 318 - 319 - const librespeedService = new ContainerService("librespeed", { 320 - enabled: true, 321 - image: "ghcr.io/librespeed/speedtest", 322 - servicePort: 8080, 323 - subdomain: "speedtest", 324 - otherServicePorts: { 325 - speed: 8080, 326 - }, 327 - envs: { 328 - TITLE: "Speedtest | Bas", 329 - TELEMETRY: true, 330 - ENABLE_ID_OBFUSCATION: true, 331 - REDACT_IP_ADDRESSES: true, 332 - EMAIL: getEnv("EMAIL"), 333 - PASSWORD: getEnv("LIBRESPEED_PASSWORD"), 334 - IPINFO_APIKEY: getEnv("IPINFO_APIKEY"), 335 - }, 336 - }); 337 - 338 - function caddyfile(subdomain: string) { 339 - return interpolate` 340 - http://${subdomain}.bas.sh:80 { 341 - file_server browse { 342 - } 343 - header X-Robots-Tag "noindex" 344 - basic_auth /plex/* { 345 - ${getEnv("CADDY_USERNAME")} ${Buffer.from(getEnv("CADDY_PASSWORD")).toString("base64")} 346 - } 347 - } 348 - `; 349 - } 350 - 351 - ["get", "static", "files", "f", "i"].map(async (subdomain) => { 352 - const caddyFileserverService = new ContainerService( 353 - `caddy-fileserver-${subdomain}`, 354 - { 355 - image: "caddy", 356 - servicePort: 80, 357 - subdomain, 358 - command: [ 359 - "/bin/sh", 360 - "-c", 361 - interpolate`echo '${caddyfile(subdomain)}' | caddy run --config - --adapter caddyfile`, 362 - ], 363 - mounts: [ssdcacheMount("web/files", "/var/www"), ssdcacheMount()], 364 - workingDir: "/var/www", 365 - }, 366 - ); 367 - }); 368 - 369 - const autolanguagesService = new ContainerService("autolanguages", { 370 - // image: "remirigal/plex-auto-languages", 371 - image: "journeyover/plex-auto-languages", 372 - envs: { 373 - PLEX_TOKEN: getEnv("PLEX_TOKEN"), 374 - PLEX_URL: "https://plex.bas.sh:443", 375 - UPDATE_LEVEL: "season", 376 - TRIGGER_ON_ACTIVITY: true, 377 - REFRESH_ON_SCAN: true, 378 - NOTIFICATIONS_ENABLE: true, 379 - NOTIFICATIONS_APPRISE_CONFIGS: `[{ urls: ["${getEnv("AUTO_LANGUAGES_DISCORD_WEBHOOK")}"], events: ["play_or_activity", "scheduler"] }]`, 380 - }, 381 - }); 382 - 383 - const theloungeService = new ContainerService("thelounge", { 384 - servicePort: 9000, 385 - subdomain: "irc", 386 - mounts: [confMount("thelounge")], 387 - }); 388 - 389 - const autobrrService = new ContainerService("autobrr", { 390 - image: "ghcr.io/autobrr/autobrr", 391 - servicePort: 7474, 392 - mounts: [confMount("autobrr")], 393 - }); 394 - 395 - const ankiService = new ContainerService("anki", { 396 - image: "ankicommunity/anki-sync-server:latest-develop", 397 - servicePort: 27701, 398 - envs: { 399 - ANKISYNCD_AUTH_DB_PATH: "/app/data/auth.db", 400 - ANKISYNCD_DATA_ROOT: "/app/data/collections", 401 - ANKISYNCD_SESSION_DB_PATH: "/app/data/session.db", 402 - }, 403 - mounts: [confMount("anki", "/app/data")], 404 - }); 405 - 406 - const sabnzbdService = new ContainerService("sabnzbd", { 407 - servicePort: 8080, 408 - mounts: [confMount("sabnzbd"), ssdcacheMount()], 409 - }); 410 - 411 - const recyclarrService = new ContainerService("recyclarr", { 412 - image: "recyclarr/recyclarr", 413 - mounts: [confMount("recyclarr")], 414 - }); 415 - 416 - const resilioSyncService = new ContainerService("resilio-sync", { 417 - enabled: true, 418 - subdomain: "sync", 419 - servicePort: 8888, 420 - // ports: [55555, "55555/udp"], 421 - networkMode: "host", 422 - mounts: [ 423 - confMount("resilio-sync"), 424 - ssdcacheMount(), 425 - ssdcacheMount("sync", "/sync"), 426 - ], 427 - }); 428 - 429 - // const syncthingService = new ContainerService("syncthing", { 430 - // servicePort: 8384, 431 - // subdomain: "syncthing", 432 - // ports: [22000, 21027], 433 - // mounts: [ 434 - // confMount("syncthing"), 435 - // { 436 - // source: "/home/bas/data/sync", 437 - // target: "/sync", 438 - // type: "bind", 439 - // bindOptions: { 440 - // propagation: "rshared", 441 - // }, 442 - // }, 443 - // ], 444 - // }); 445 - 446 - const mkvtoolnixService = new ContainerService("mkvtoolnix", { 447 - image: "jlesage/mkvtoolnix", 448 - servicePort: 5800, 449 - mounts: [confMount("mkvtoolnix"), ssdcacheMount()], 450 - envs: { 451 - VNC_PASSWORD: getEnv("VNC_PASSWORD"), 452 - DARK_MODE: true, 453 - APP_NICENESS: 10, 454 - KEEP_APP_RUNNING: 1, 455 - ENABLE_CJK_FONT: 1, 456 - }, 457 - }); 458 - 459 - const mkvMuxingBatchService = new ContainerService("mkv-batch", { 460 - image: "jlesage/mkv-muxing-batch-gui", 461 - servicePort: 5800, 462 - subdomain: "mkv-batch", 463 - mounts: [confMount("mkv-batch"), ssdcacheMount()], 464 - envs: { 465 - VNC_PASSWORD: getEnv("VNC_PASSWORD"), 466 - DARK_MODE: true, 467 - APP_NICENESS: 10, 468 - KEEP_APP_RUNNING: 1, 469 - ENABLE_CJK_FONT: 1, 470 - }, 471 - }); 472 - 473 - // const losslesscutService = new ContainerService("losslesscut", { 474 - // image: "outlyernet/losslesscut", 475 - // servicePort: 8080, 476 - // mounts: [confMount("losslesscut"), dataMount()], 477 - // }); 478 - 479 - const prometheusService = new ContainerService("prometheus", { 480 - image: "prom/prometheus", 481 - servicePort: 9090, 482 - mounts: [confMount("prometheus", "/etc/prometheus")], 483 - volumes: [ 484 - { 485 - volumeName: "prometheus", 486 - containerPath: "/prometheus", 487 - }, 488 - ], 489 - command: [ 490 - "--config.file=/etc/prometheus/prometheus.yml", 491 - "--storage.tsdb.path=/prometheus", 492 - "--web.console.libraries=/etc/prometheus/console_libraries", 493 - "--web.console.templates=/etc/prometheus/consoles", 494 - ], 495 - middlewares: ["auth"], 496 - }); 497 - 498 - const grafanaService = new ContainerService("grafana", { 499 - image: "grafana/grafana-oss", 500 - servicePort: 3000, 501 - mounts: [confMount("grafana", "/var/lib/grafana")], 502 - envs: { 503 - GF_INSTALL_PLUGINS: "grafana-piechart-panel", 504 - }, 505 - user: "1000:1000", 506 - }); 507 - 508 - // const signozService = new ContainerService("signoz", { 509 - // image: "signoz/otel-collector", 510 - // servicePort: 4317, 511 - // mounts: [ 512 - // confMount("signoz", "/etc/signoz"), 513 - // mount("/var/lib/signoz", "/var/lib/signoz", { propagation: "rslave" }), 514 - // ], 515 - // }); 516 - 517 - const scrutinyService = new ContainerService("scrutiny", { 518 - image: "ghcr.io/analogj/scrutiny:master-omnibus", 519 - servicePort: 8080, 520 - mounts: [ 521 - confMount("scrutiny/config", "/opt/scrutiny/config"), 522 - confMount("scrutiny/influxdb", "/opt/scrutiny/influxdb"), 523 - mount("/run/udev", "/run/udev", { readOnly: true }), 524 - ], 525 - envs: { 526 - COLLECTOR_CRON_SCHEDULE: "0 * * * *", 527 - }, 528 - capabilities: ["SYS_RAWIO", "SYS_ADMIN"], 529 - devices: [ 530 - "sda", 531 - "sdb", 532 - "sdc", 533 - "sdd", 534 - "sde", 535 - "sdf", 536 - "sdg", 537 - "sdh", 538 - "sdi", 539 - "sdj", 540 - "nvme0", 541 - "nvme1", 542 - ].map((i) => ({ 543 - containerPath: `/dev/${i}`, 544 - hostPath: `/dev/${i}`, 545 - permissions: "r", 546 - })), 547 - middlewares: ["auth"], 548 - }); 549 - 550 - const pixivPublicToPrivateService = new ContainerService( 551 - "pixiv-public-to-private", 552 - { 553 - image: "ghcr.io/tomacheese/pixiv-public-to-private", 554 - mounts: [confMount("pixiv-public-to-private", "/data")], 555 - }, 556 - ); 557 - 558 - const jdownloaderService = new ContainerService("jdownloader", { 559 - enabled: false, 560 - image: "jlesage/jdownloader-2", 561 - servicePort: 5800, 562 - ports: [3129, 5800], 563 - mounts: [confMount("jdownloader"), ssdcacheMount("downloads", "/output")], 564 - envs: { 565 - KEEP_APP_RUNNING: 1, 566 - DARK_MODE: 1, 567 - WEB_AUDIO: 1, 568 - ENABLE_CJK_FONT: 1, 569 - MYJDOWNLOADER_EMAIL: getEnv("EMAIL"), 570 - MYJDOWNLOADER_PASSWORD: getEnv("JDOWNLOADER_PASSWORD"), 571 - MYJDOWNLOADER_DEVICE_NAME: "Haring", 572 - }, 573 - middlewares: ["auth"], 574 - }); 575 - 576 - const tailscaleVolume = new docker.Volume( 577 - "tailscale", 578 - { name: "tailscale" }, 579 - { 580 - retainOnDelete: true, 581 - provider: haringDockerProvider, 582 - }, 583 - ); 584 - 585 - const tailscaleService = new ContainerService("tailscale", { 586 - image: "tailscale/tailscale", 587 - servicePort: 8080, 588 - volumes: [ 589 - { 590 - volumeName: tailscaleVolume.name, 591 - containerPath: "/var/lib/tailscale", 592 - }, 593 - ], 594 - mounts: [mount("/lib/modules")], 595 - envs: { 596 - TS_ACCEPT_DNS: false, 597 - TS_AUTHKEY: getEnv("TAILSCALE_AUTH_KEY"), 598 - TS_HOSTNAME: "haring-docker", 599 - TS_ENABLE_HEALTH_CHECK: true, 600 - TS_USERSPACE: true, 601 - TS_EXTRA_ARGS: "--advertise-exit-node --advertise-tags=tag:container", 602 - TS_STATE_DIR: "/var/lib/tailscale", 603 - }, 604 - // networkMode: "host", 605 - // devices: [{ hostPath: "/dev/net/tun", containerPath: "/dev/net/tun" }], 606 - capabilities: ["NET_ADMIN", "SYS_MODULE"], 607 - privileged: true, 608 - }); 609 - 610 - const bazarrService = new ContainerService("bazarr", { 611 - enabled: false, 612 - servicePort: 6767, 613 - mounts: [confMount("bazarr"), ssdcacheMount()], 614 - }); 615 - 616 - const netdataService = new ContainerService("netdata", { 617 - image: "netdata/netdata", 618 - servicePort: 19999, 619 - mounts: [ 620 - confMount("netdata/config", "/etc/netdata"), 621 - confMount("netdata/lib", "/var/lib/netdata"), 622 - confMount("netdata/cache", "/var/cache/netdata"), 623 - mount("/", "/host/root", { propagation: "rslave", readOnly: true }), 624 - mount("/etc/passwd", "/host/etc/passwd", { readOnly: true }), 625 - mount("/etc/group", "/host/etc/group", { readOnly: true }), 626 - mount("/etc/localtime", "/host/etc/localtime", { readOnly: true }), 627 - mount("/proc", "/host/proc", { readOnly: true }), 628 - mount("/sys", "/host/sys", { readOnly: true }), 629 - mount("/etc/os-release", "/host/etc/os-release", { readOnly: true }), 630 - mount("/var/log", "/host/var/log", { readOnly: true }), 631 - mount("/run/dbus", "/host/run/dbus", { readOnly: true }), 632 - dockerSocket, 633 - ], 634 - capabilities: ["SYS_PTRACE", "SYS_ADMIN"], 635 - securityOpts: ["apparmor:unconfined"], 636 - networkMode: "host", 637 - }); 638 - 639 - const chromiumService = new ContainerService("chromium", { 640 - enabled: false, 641 - servicePort: 3000, 642 - envs: { 643 - CUSTOM_USER: getEnv("USERNAME"), 644 - PASSWORD: getEnv("VNC_PASSWORD"), 645 - }, 646 - }); 647 - 648 - const blueskyService = new ContainerService("bluesky", { 649 - enabled: false, 650 - image: "ghcr.io/brw/social-app", 651 - servicePort: 8100, 652 - envs: { 653 - ATP_PDS_HOST: "https://public.api.bsky.app", 654 - }, 655 - command: ["bskyweb", "serve"], 656 - middlewares: ["auth"], 657 - }); 658 - 659 - const beszelSocket = mount("/var/run/beszel_socket", "/beszel_socket"); 660 - 661 - const beszelService = new ContainerService("beszel", { 662 - enabled: false, 663 - image: "henrygd/beszel", 664 - servicePort: 8090, 665 - mounts: [confMount("beszel", "/beszel_data"), beszelSocket], 666 - healthcheck: { 667 - tests: ["CMD", "/beszel", "health", "--url", "http://localhost:8090"], 668 - startPeriod: "5s", 669 - interval: "1m0s", 670 - }, 671 - }); 672 - 673 - const beszelAgentService = new ContainerService("beszel-agent", { 674 - enabled: false, 675 - image: "henrygd/beszel-agent", 676 - networkMode: "host", 677 - mounts: [beszelSocket, dockerSocket], 678 - envs: { 679 - LISTEN: "/beszel_socket/beszel.sock", 680 - KEY: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILQa/BKc2uJ0vlog1Cwr2H13Gh3y20eWVL41iwZl+Cyt", 681 - }, 682 - healthcheck: { 683 - tests: ["CMD", "/agent", "health"], 684 - startPeriod: "5s", 685 - interval: "1m0s", 686 - }, 687 - }); 688 - 689 - const sist2Service = new ContainerService("sist2", { 690 - enabled: false, 691 - image: "sist2app/sist2:x64-linux", 692 - servicePort: 8080, 693 - otherServicePorts: { "sist2-web": 4090 }, 694 - mounts: [ 695 - confMount("sist2", "/sist2-admin"), 696 - ssdcacheMount("content/audios", "/host"), 697 - ], 698 - workingDir: "/root/sist2-admin", 699 - entrypoints: ["python3"], 700 - command: ["/root/sist2-admin/sist2_admin/app.py"], 701 - middlewares: ["auth"], 702 - }); 703 - 704 - if (sist2Service.container) { 705 - const elasticsearchService = new ContainerService("elasticsearch", { 706 - image: "elasticsearch:7.17.28", 707 - ports: ["127.0.0.1:9200:9200", "127.0.0.1:9300:9300"], 708 - mounts: [confMount("elasticsearch", "/usr/share/elasticsearch/data")], 709 - envs: { "discovery.type": "single-node" }, 710 - }); 711 - } 712 - 713 - const maintainerrService = new ContainerService("maintainerr", { 714 - enabled: false, 715 - image: "ghcr.io/jorenn92/maintainerr", 716 - servicePort: 6246, 717 - mounts: [confMount("maintainerr", "/opt/data")], 718 - middlewares: ["auth"], 719 - }); 720 - 721 - const dnsmasqService = new ContainerService("dnsmasq", { 722 - enabled: false, 723 - image: "jpillora/dnsmasq", 724 - ports: ["127.0.0.1:53:5353/udp"], 725 - mounts: [confMount("dnsmasq", "/etc/")], 726 - capabilities: ["NET_ADMIN"], 727 - }); 728 - 729 - const nextCloudService = new ContainerService("nextcloud", { 730 - servicePort: 443, 731 - mounts: [ 732 - confMount("nextcloud"), 733 - confMount("nextcloud-data", "/data"), 734 - ssdcacheMount("", "/mnt/data"), 735 - ], 736 - envs: { 737 - DOCKER_MODS: 738 - "linuxserver/mods:nextcloud-notify-push|linuxserver/mods:nextcloud-mediadc", 739 - DATABASE_URL: interpolate`postgres://postgres:${getEnv("POSTGRES_PASSWORD")}@postgres/nextcloud`, 740 - DATABASE_PREFIX: "oc_", 741 - REDIS_URL: interpolate`redis://default:${getEnv("VALKEY_PASSWORD")}@valkey`, 742 - NEXTCLOUD_URL: "https://nextcloud.bas.sh", 743 - }, 744 - }); 745 - 746 - const valkeyService = new ContainerService("valkey", { 747 - image: "valkey/valkey", 748 - command: [interpolate`--requirepass ${getEnv("VALKEY_PASSWORD")}`], 749 - }); 750 - 751 - const postgresService = new ContainerService("postgres", { 752 - image: "postgres", 753 - mounts: [confMount("postgres", "/var/lib/postgresql/data")], 754 - envs: { 755 - POSTGRES_PASSWORD: getEnv("POSTGRES_PASSWORD"), 756 - POSTGRES_DB: "nextcloud", 757 - }, 758 - }); 759 - 760 - const stashService = new ContainerService("stash", { 761 - image: "stashapp/stash", 762 - servicePort: 9999, 763 - mounts: [ 764 - confMount("stash", "/root/.stash"), 765 - ssdcacheMount("", "/data"), 766 - gitMount, 767 - mount("/etc/localtime", "/etc/localtime", { readOnly: true }), 768 - ], 769 - middlewares: ["auth"], 770 - cpuShares: 128, 771 - }); 772 - 773 - const fileStashService = new ContainerService("filestash", { 774 - image: "machines/filestash", 775 - servicePort: 8334, 776 - mounts: [confMount("filestash", "/app/data/state"), ssdcacheMount()], 777 - envs: { 778 - APPLICATION_URL: "filestash.bas.sh", 779 - CANARY: true, 780 - }, 781 - }); 782 - 783 - const spacedriveService = new ContainerService("spacedrive", { 784 - enabled: false, 785 - image: "ghcr.io/spacedriveapp/spacedrive/server", 786 - servicePort: 8080, 787 - mounts: [confMount("spacedrive", "/var/spacedrive"), ssdcacheMount()], 788 - envs: { 789 - SD_AUTH: interpolate`${getEnv("USERNAME")}:${getEnv("SPACEDRIVE_PASSWORD")}`, 790 - }, 791 - }); 792 - 793 - const blockheadsService = new ContainerService("blockheads", { 794 - enabled: false, 795 - image: "theblockheads/server:development", 796 - servicePort: 15151, 797 - ports: [15151, "15151/udp"], 798 - mounts: [ 799 - confMount("blockheads/config", "/blockheads"), 800 - confMount( 801 - "blockheads/worlds", 802 - "/root/GNUstep/Library/ApplicationSupport/TheBlockheads/saves", 803 - ), 804 - ], 805 - envs: { 806 - WORLD_NAME: "bmc", 807 - WORLD_ID: "bmc", 808 - // WORLD_OWNER: "", 809 - MAX_PLAYERS: 32, 810 - SAVE_DELAY: 1, 811 - WORLD_OWNER: "bas", 812 - SERVER_PORT: 15151, 813 - }, 814 - }); 815 - 816 - const glancesService = new ContainerService("glances", { 817 - enabled: false, 818 - image: "nicolargo/glances", 819 - servicePort: 61208, 820 - ports: [61209], 821 - mounts: [dockerSocket], 822 - pidMode: "host", 823 - envs: { 824 - GLANCES_OPT: "-w", 825 - }, 826 - middlewares: ["auth"], 827 - }); 828 - 829 - const kopiaService = new ContainerService("kopia", { 830 - enabled: false, 831 - image: "kopia/kopia", 832 - servicePort: 51515, 833 - hostname: "Bas", 834 - envs: { 835 - USER: getEnv("USERNAME"), 836 - KOPIA_PASSWORD: getEnv("KOPIA_PASSWORD"), 837 - }, 838 - mounts: [ 839 - confMount("kopia", "/app"), 840 - dataMount("kopia", "/repository"), 841 - mount("/tmp/kopia", "/tmp"), 842 - mount("/home/bas/.config/rclone", "/app/rclone"), 843 - ], 844 - command: [ 845 - "server", 846 - "start", 847 - "--disable-csrf-token-checks", 848 - "--insecure", 849 - "--address=0.0.0.0:51515", 850 - `--server-username=${getEnv("USERNAME")}`, 851 - interpolate`--server-password=${getEnv("KOPIA_PASSWORD")}`, 852 - ], 853 - }); 854 - 855 - const sftpgoService = new ContainerService("sftpgo", { 856 - image: "drakkan/sftpgo:plugins", 857 - servicePort: 8080, 858 - ports: [2022], 859 - mounts: [ 860 - confMount("sftpgo", "/var/lib/sftpgo"), 861 - ssdcacheMount("sftpgo", "/srv/sftpgo"), 862 - ssdcacheMount("", "/srv/data"), 863 - ], 864 - envs: { 865 - SFTPGO_GRACE_TIME: 60, 866 - }, 867 - stopTimeout: 60, 868 - }); 869 - 870 - const redroidService = new ContainerService("redroid", { 871 - enabled: false, // seems to break my entire server's networking setup somehow? 872 - image: "redroid/redroid:12.0.0_64only-latest", 873 - privileged: true, 874 - ports: ["100.93.167.100:5555:5555"], 875 - mounts: [ 876 - confMount("redroid", "/data"), 877 - ssdcacheMount("redroid", "/storage/emulated/0/NAS"), 878 - ], 879 - command: [ 880 - "androidboot.redroid_width=1080", 881 - "androidboot.redroid_height=1920", 882 - "androidboot.redroid_dpi=480", 883 - "androidboot.use_memfd=true", 884 - "ro.secure=0", 885 - ], 886 - networkMode: "bridge", 887 - }); 888 - 889 - // TODO: try https://github.com/m1k1o/neko
-3
src/index.ts
··· 1 - import "./haring"; 2 - import "./kaneelnas"; 3 - import "./minecraft";
+3 -4
src/kaneelnas.ts services/kaneelnas.ts
··· 3 3 import { kaneelnasDockerProvider } from "~lib/service/providers"; 4 4 import { ContainerService } from "~lib/service/service"; 5 5 6 - const KANEELNAS_DOCKER = "/volume1/docker/bas"; 6 + const KANEELNAS_DOCKER = "/volume2/docker/bas"; 7 7 const KANEELNAS_DATA = "/volume1/data/bas"; 8 8 const KANEELNAS_HOST = getEnv("KANEELNAS_HOST"); 9 9 ··· 15 15 const kaneelnasQbittorrentService = new ContainerService( 16 16 "qbittorrent-kaneelnas", 17 17 { 18 - image: "lscr.io/linuxserver/qbittorrent:5.1.2", 18 + image: "lscr.io/linuxserver/qbittorrent:5.1.4", 19 19 name: "qbittorrent-bas", 20 20 // servicePort: 8080, 21 21 // ports: [8450, 8451, "8451/udp"], ··· 43 43 }, 44 44 { 45 45 provider: kaneelnasDockerProvider, 46 - ignoreChanges: ["ports"], 47 46 }, 48 47 ); 49 48 50 49 const kaneelnasWhoamiService = new ContainerService( 51 50 "whoami-kaneelnas", 52 51 { 52 + enabled: false, 53 53 name: "whoami-bas", 54 54 image: "ghcr.io/traefik/whoami", 55 55 // servicePort: 80, ··· 59 59 }, 60 60 { 61 61 provider: kaneelnasDockerProvider, 62 - ignoreChanges: ["ports"], 63 62 }, 64 63 );
+1 -1
src/minecraft/index.ts services/haring/games/minecraft/index.ts
··· 1 1 import "./servers"; 2 2 import "./velocity"; 3 3 import "./rcon"; 4 - import "./web"; 4 + // import "./web";
+1 -1
src/minecraft/rcon.ts services/haring/games/minecraft/rcon.ts
··· 1 1 import { getEnv } from "~lib/env"; 2 2 import { ContainerService } from "~lib/service/service"; 3 3 4 - const rconService = new ContainerService("rcon", { 4 + export const rconService = new ContainerService("rcon", { 5 5 image: "itzg/rcon", 6 6 servicePort: 4326, 7 7 otherServicePorts: {
+12 -19
src/minecraft/servers/akio.ts services/haring/games/minecraft/servers/akio.ts
··· 2 2 import { ContainerService } from "~lib/service/service"; 3 3 import { getEnv } from "~lib/env"; 4 4 5 - const minecraftAkioService = new ContainerService( 5 + export const minecraftAkioService = new ContainerService( 6 6 "minecraft-akio", 7 7 { 8 - image: "itzg/minecraft-server:java24-graalvm", 8 + image: "itzg/minecraft-server", 9 9 servicePort: 8804, // Plan, TODO: put behind auth (without also putting otherServicePorts behind auth) 10 10 subdomain: "akio", 11 11 ports: [25564, 25500, 7091, "24454/udp"], ··· 15 15 // "map.akio": 8123, 16 16 map: 8100, 17 17 }, 18 + restart: "on-failure", 19 + maxRetryCount: 3, 18 20 mounts: [nvmeMount("minecraft-akio", "/data"), mount("/dev/hugepages")], 19 21 envs: { 20 22 EULA: true, ··· 34 36 "modmenu", 35 37 "cristel-lib", 36 38 "silk", 37 - "loot-table-modifier", 39 + "loot-table-modifier:2.0.0-beta.2+1.21.2", 38 40 "lithostitched", 39 41 40 42 // world rendering 41 43 "c2me-fabric", 42 - "distanthorizons", 44 + // "distanthorizons", 43 45 44 46 // worldgen/structures 45 47 // "terralith" // add on world reset (and/or "tectonic" maybe, which has better compat with clifftree) ··· 126 128 "melius-worldmanager", 127 129 "simple-registry-aliases", 128 130 "ledger", 131 + "mods-type-checker", 129 132 130 133 // carpet stuff 131 134 // "carpet", // not available for 1.21.5 on modrinth for some reason ··· 238 241 "forgiving-void", 239 242 "better-nether-map", 240 243 "linkart-refabricated", 241 - "rail-destinations", 244 + // "rail-destinations", // TODO: no 1.21.5 anymore? 242 245 "ly-recall-potion", 243 246 "camp-fires-cook-mobs", 244 247 "healing-campfire", ··· 350 353 "betterwalls", 351 354 "nemos-blooming-blossom", 352 355 // "fairy-rings", 353 - "paleworldfx", 356 + // "paleworldfx", 354 357 355 358 // Bluemap 356 359 // "bluemap", ··· 448 451 MODRINTH_DOWNLOAD_DEPENDENCIES: "required", 449 452 MODRINTH_ALLOWED_VERSION_TYPE: "alpha", 450 453 PLAN_DATA_GATHERING_ACCEPT_GEOLITE2_EULA: true, // y dis no work (https://github.com/plan-player-analytics/Plan/commit/24a8c75b67986e90acfc5abeed29328d8cc9407a) 451 - MEMORY: "32G", 452 - USE_MEOWICE_FLAGS: true, 453 - USE_MEOWICE_GRAALVM_FLAGS: true, 454 - // JVM_XX_OPTS: 455 - // // "-XX:+UseZGC -XX:AllocatePrefetchStyle=1 -XX:+UseLargePages -XX:LargePageSizeInBytes=2m -Xlog:gc+init", 456 - // "-XX:+UseZGC -XX:+AlwaysPreTouch -XX:+UseStringDeduplication -XX:+UseTransparentHugePages -XX:+EnableDynamicAgentLoading", 457 - // JVM_OPTS: "--enable-preview --enable-native-access=ALL-UNNAMED", 458 - ENABLE_ROLLING_LOGS: true, 454 + MEMORY: "16G", 455 + JVM_XX_OPTS: 456 + "-XX:+UseZGC -XX:+UseCompactObjectHeaders -XX:+UseTransparentHugePages -XX:+EnableDynamicAgentLoading", 459 457 ENABLE_JMX: true, 460 458 JMX_HOST: "akio.bas.sh", 461 459 LOG_TIMESTAMP: true, 462 - // "STOP_SERVER_ANNOUNCE_DELAY=10", 463 - SERVER_HOST: "haring.bas.sh", 464 - DUMP_SERVER_PROPERTIES: true, 465 460 MOTD: "\u00A77- \u00A7fakio's backyard❀\u00A7r\n \u00A7euwu", 466 461 DIFFICULTY: "normal", 467 462 OPS: "basw", ··· 478 473 SIMULATION_DISTANCE: 8, 479 474 SPAWN_PROTECTION: 1, 480 475 SYNC_CHUNK_WRITES: false, 481 - EXEC_DIRECTLY: true, 482 476 ENFORCE_SECURE_PROFILE: false, 483 477 BROADCAST_CONSOLE_TO_OPS: false, 484 478 BROADCAST_RCON_TO_OPS: false, ··· 493 487 }, 494 488 { 495 489 // ignoreChanges: (await mcHasOnlinePlayers("minecraft-akio")) ? ["*"] : [], 496 - ignoreChanges: ["ports"], 497 490 }, 498 491 );
+1 -3
src/minecraft/servers/frog.ts services/haring/games/minecraft/servers/frog.ts
··· 25 25 PLAN_DATA_GATHERING_ACCEPT_GEOLITE2_EULA: true, // y dis no work (https://github.com/plan-player-analytics/Plan/commit/24a8c75b67986e90acfc5abeed29328d8cc9407a) 26 26 MEMORY: "16G", 27 27 JVM_XX_OPTS: 28 - "-XX:+UseZGC -XX:+ZGenerational -XX:AllocatePrefetchStyle=1 -XX:+UseLargePages -XX:LargePageSizeInBytes=2m -Xlog:gc+init", 28 + "-XX:+UseZGC -XX:AllocatePrefetchStyle=1 -XX:+UseLargePages -XX:LargePageSizeInBytes=2m -Xlog:gc+init", 29 29 ENABLE_ROLLING_LOGS: true, 30 30 ENABLE_JMX: true, 31 31 JMX_HOST: "mc.bas.sh", 32 32 LOG_TIMESTAMP: true, 33 33 // "STOP_SERVER_ANNOUNCE_DELAY=10", 34 - SERVER_HOST: "haring.bas.sh", 35 34 DUMP_SERVER_PROPERTIES: true, 36 35 MOTD: " \u00A7f\u00A7l/人◕ ‿‿ ◕人\\u00A7r\n \u00A7a%MODPACK_NAME%\u00A7r \u00A7cversion \u00A7a%MODPACK_VERSION%", 37 36 DIFFICULTY: "normal", ··· 49 48 SIMULATION_DISTANCE: 12, 50 49 SPAWN_PROTECTION: 0, 51 50 SYNC_CHUNK_WRITES: false, 52 - EXEC_DIRECTLY: true, 53 51 RCON_PASSWORD: getEnv("RCON_PASSWORD"), 54 52 }, 55 53 capabilities: ["SYS_ADMIN"],
-5
src/minecraft/servers/index.ts
··· 1 - import "./akio"; 2 - import "./frog"; 3 - import "./meow"; 4 - import "./teena"; 5 - import "./mau";
+8 -10
src/minecraft/servers/mau.ts services/haring/games/minecraft/servers/mau.ts
··· 5 5 const minecraftMauService = new ContainerService( 6 6 "minecraft-mau", 7 7 { 8 - image: "itzg/minecraft-server:java24-graalvm", 8 + enabled: false, 9 + image: "itzg/minecraft-server", 9 10 servicePort: 8804, // Plan 10 11 subdomain: "mau", 11 12 ports: [25563, "24453/udp"], ··· 29 30 MODRINTH_PROJECTS: [ 30 31 // libraries 31 32 "fabric-api", 32 - // "yacl", 33 + "yacl:3.8.1+1.21.6-fabric", 33 34 // "forge-config-api-port", 34 35 // "cloth-config", 35 36 // "modmenu", ··· 53 54 "cliff-face:bG1RvM4K", 54 55 55 56 // performance 56 - "lithium", 57 + "lithium:pDfTqezk", // update when whiteout is compatible again 57 58 "scalablelux", 58 59 "ferrite-core", 59 60 // "noisium:V9mMIy0f", ··· 109 110 "polydex", 110 111 // "polydecorations", 111 112 // "polysit:RxruJi0u", // TODO: check for 1.21.8 112 - "danse:pWwZ8qAr", // 2.2.7 broken 113 + "danse", 113 114 "glide-away", 114 115 "filament", 115 116 // "tsa-decorations", ··· 287 288 "purpurpacks-one-step-dyed-shulker-boxes", 288 289 // "petprotect", 289 290 "sturdy-vehicles", 290 - "crops-love-rain", 291 + // "crops-love-rain", 291 292 // "jsst", 292 293 // "leaves-be-gone", 293 294 "improved-signs", ··· 300 301 "betterwalls", 301 302 // "nemos-blooming-blossom", 302 303 // "fairy-rings", 303 - "paleworldfx:VGhNpydN", // 1.1.9 is broken? 304 + // "paleworldfx:VGhNpydN", // 1.1.9 is broken? 304 305 305 306 // Bluemap 306 307 // "bluemap", ··· 399 400 MODRINTH_DOWNLOAD_DEPENDENCIES: "required", 400 401 MODRINTH_ALLOWED_VERSION_TYPE: "alpha", 401 402 PLAN_DATA_GATHERING_ACCEPT_GEOLITE2_EULA: true, // y dis no work (https://github.com/plan-player-analytics/Plan/commit/24a8c75b67986e90acfc5abeed29328d8cc9407a) 402 - MEMORY: "32G", 403 + MEMORY: "16G", 403 404 USE_MEOWICE_FLAGS: true, 404 405 USE_MEOWICE_GRAALVM_FLAGS: true, 405 406 // JVM_XX_OPTS: ··· 408 409 // JVM_OPTS: "--enable-preview --enable-native-access=ALL-UNNAMED", 409 410 ENABLE_ROLLING_LOGS: true, 410 411 LOG_TIMESTAMP: true, 411 - SERVER_HOST: "haring.bas.sh", 412 412 DUMP_SERVER_PROPERTIES: true, 413 413 MOTD: "\u00a7l \u00a7f \u2728 mau's dream realm \u00a73\ud83d\udca4\u00a7r\n\u00a7l \u00a77 \ua700(^. .^\ua700 )\ua706\u0a6d", 414 414 DIFFICULTY: "normal", ··· 425 425 SIMULATION_DISTANCE: 8, 426 426 SPAWN_PROTECTION: 0, 427 427 SYNC_CHUNK_WRITES: false, 428 - EXEC_DIRECTLY: true, 429 428 ENFORCE_SECURE_PROFILE: false, 430 429 BROADCAST_CONSOLE_TO_OPS: false, 431 430 BROADCAST_RCON_TO_OPS: false, ··· 441 440 }, 442 441 { 443 442 // ignoreChanges: (await mcHasOnlinePlayers("minecraft-mau")) ? ["*"] : [], 444 - ignoreChanges: ["ports"], 445 443 }, 446 444 );
+1 -3
src/minecraft/servers/meow.ts services/haring/games/minecraft/servers/meow.ts
··· 309 309 "nocturnal-bats", 310 310 // "betterwalls", 311 311 // "nemos-blooming-blossom", 312 - "paleworldfx", 312 + // "paleworldfx", 313 313 314 314 // needs optional client mod 315 315 "trashslot", ··· 408 408 // JMX_HOST: "meow.bas.sh", 409 409 LOG_TIMESTAMP: true, 410 410 // "STOP_SERVER_ANNOUNCE_DELAY=10", 411 - SERVER_HOST: "haring.bas.sh", 412 411 DUMP_SERVER_PROPERTIES: true, 413 412 MOTD: "\u00a7r \u00a7bmeow meow meow\u00a7r\n\u00a7l \u00a7c \u2764 \u00a7l:3", 414 413 DIFFICULTY: "normal", ··· 426 425 SIMULATION_DISTANCE: 8, 427 426 SPAWN_PROTECTION: 0, 428 427 SYNC_CHUNK_WRITES: false, 429 - EXEC_DIRECTLY: true, 430 428 ENFORCE_SECURE_PROFILE: false, 431 429 BROADCAST_CONSOLE_TO_OPS: false, 432 430 BROADCAST_RCON_TO_OPS: false,
-2
src/minecraft/servers/teena.ts services/haring/games/minecraft/servers/teena.ts
··· 127 127 JMX_HOST: "gigasigmas.bas.sh", 128 128 LOG_TIMESTAMP: true, 129 129 STOP_SERVER_ANNOUNCE_DELAY: 10, 130 - SERVER_HOST: "haring.bas.sh", 131 130 DUMP_SERVER_PROPERTIES: true, 132 131 MOTD: "\u00a7r \u00a74\u00a7l\u00a7nGIGA\u00a7r\n\u00a74\u00a7l \u00a76Sigmas", 133 132 DIFFICULTY: "normal", ··· 145 144 SIMULATION_DISTANCE: 8, 146 145 SPAWN_PROTECTION: 0, 147 146 SYNC_CHUNK_WRITES: false, 148 - EXEC_DIRECTLY: true, 149 147 ENFORCE_SECURE_PROFILE: false, 150 148 BROADCAST_CONSOLE_TO_OPS: false, 151 149 BROADCAST_RCON_TO_OPS: false,
src/minecraft/util.ts services/haring/games/minecraft/util.ts
src/minecraft/velocity.ts services/haring/games/minecraft/velocity.ts
+1 -8
src/minecraft/web.ts services/haring/games/minecraft/web.ts
··· 2 2 import { ContainerService } from "~lib/service/service"; 3 3 4 4 const mcWebService = new ContainerService("mc-web", { 5 - enabled: false, 6 5 image: "caddy", 7 6 servicePort: 80, 8 7 subdomain: "mc", 9 8 mounts: [ssdcacheMount("web/mc", "/var/www")], 10 - command: [ 11 - "caddy", 12 - "file-server", 13 - "--root=/var/www", 14 - "--domain=mc.bas.sh", 15 - "--listen=:80", 16 - ], 9 + command: ["caddy", "file-server", "--root=/var/www", "--domain=mc.bas.sh", "--listen=:80"], 17 10 });
+6 -4
tsconfig.json
··· 4 4 "target": "ESNext", 5 5 "module": "ESNext", 6 6 "moduleResolution": "Node", 7 + "jsx": "react-jsx", 8 + "jsxImportSource": "~src/service", 7 9 "experimentalDecorators": true, 8 10 "pretty": true, 9 11 "noFallthroughCasesInSwitch": true, 10 12 "noImplicitReturns": true, 11 13 "forceConsistentCasingInFileNames": true, 12 14 "noUnusedLocals": false, 15 + "noUnusedParameters": false, 13 16 "skipLibCheck": true, 14 17 "esModuleInterop": true, 15 18 // "exactOptionalPropertyTypes": true, 16 - "baseUrl": ".", 17 19 "paths": { 18 - "~lib/*": ["lib/*"], 19 - "~src/*": ["src/*"] 20 + "~lib/*": ["./lib/*"], 21 + "~src/*": ["./src/*"] 20 22 } 21 23 }, 22 - "include": ["src/**/*", "lib/**/*", "eslint.config.ts"] 24 + "include": ["index.ts", "services/**/*", "lib/**/*", "eslint.config.ts"] 23 25 }