UNPKG

@stacksjs/launchpad

Version:
41 lines (40 loc) 622 kB
// @bun import{W as V,X as KQ}from"./chunk-7h9a332h.js";import"./chunk-e2w1vagk.js";import{Buffer as qZ}from"buffer";import j from"fs";import{arch as sK,platform as oK}from"os";import b from"path";import zQ from"process";import a from"fs";import fQ from"path";import dQ from"process";import S from"fs";import g from"path";import p from"process";import{chromium as yQ}from"playwright";import P from"fs";import u from"path";import l from"process";var _Z=Object.defineProperty,VQ=(Q,Z)=>{for(var X in Z)_Z(Q,X,{get:Z[X],enumerable:!0,configurable:!0,set:($)=>Z[X]=()=>$})},WQ=(Q,Z)=>()=>(Q&&(Z=Q(Q=0)),Z),d,OQ=WQ(()=>{d={ack:"beyondgrep.com",alacritty:"alacritty.org",alembic:"alembic.sqlalchemy.org",amber:"amber/lang.com",amp:"amp.rs",ansible:"ansible.com",apktool:"apktool.org",appium:"appium.io",argbash:"argbash.dev",aria2c:"aria2.github.io",arkade:"arkade.dev",Arkade:"arkade.dev",asciidoctor:"asciidoctor.org",asciinema:"asciinema.org",assimp:"assimp.org","ast-grep.github.io":"ast/grep.github.io",atlantis:"runatlantis.io",atlas:"atlasgo.io","auto-gpt":"agpt.co","Auto-GPT":"agpt.co",aux4:"aux4.io",aws:"aws.amazon.com/cli","aws/cdk":"aws.amazon.com/cdk","aws/cli":"aws.amazon.com/cli",bashly:"bashly.dannyb.co",bcrypt:"bcrypt.sourceforge.net",biome:"biomejs.dev",bitcoin:"bitcoin.org",Bittensor:"bittensor.com",bore:"bore.pub",borg:"borgbackup.org","browser-use.com":"browser/use.com",buf:"buf.build",bun:"bun.sh",bytebase:"bytebase.com","c-ares.org":"c/ares.org",caddy:"caddyserver.com","cairo-trace":"cairographics.org",carapace:"carapace.sh",cask:"cask.readthedocs.io",ccache:"ccache.dev",cdk:"aws.amazon.com/cdk","ceres-solver.org":"ceres/solver.org",certbot:"certbot.eff.org",cgal:"cgal.org",changie:"changie.dev",checkov:"checkov.io",chezmoi:"chezmoi.io",chomp:"chompbuild.com",chromedriver:"chromedriver.chromium.org",circleci:"circleci.com",clisp:"clisp.org",clog:"clog/tool.github.io",cnquery:"cnquery.io",coder:"coder.com",cog:"cocogitto.io",cointop:"cointop.sh",composer:"getcomposer.org",conda:"conda.org",conftest:"conftest.dev",consul:"consul.io",convco:"convco.github.io",copa:"project/copacetic.github.io",coredns:"coredns.io",cpanm:"cpanmin.us",cruft:"cruft.github.io",crystal:"crystal/lang.org",cstool:"capstone/engine.org",ctags:"ctags.io",ctop:"ctop.sh",cue:"cuelang.org",cURL:"curl.se",cython:"cython.org",dagger:"dagger.io",dart:"dart.dev",databricks:"databricks.com",daytona:"daytona.io",dblab:"dblab.danvergara.com",deno:"deno.land",depot:"depot.dev",dgraph:"dgraph.io",dhall:"dhall/lang.org",digger:"digger.dev",direnv:"direnv.net",doctave:"doctave.com",dog:"dns.lookup.dog","dotenv-linter":"dotenv/linter.github.io",dotenvx:"dotenvx.com",dotnet:"dotnet.microsoft.com",doxygen:"doxygen.nl",dozzle:"dozzle.dev",dprint:"dprint.dev",duckdb:"duckdb.org",duk:"duktape.org",edgedb:"edgedb.com",eksctl:"eksctl.io","elixir-lang.org":"elixir/lang.org",eliza:"elizaOS.github.io",elizaos:"elizaOS.github.io",elizaOS:"elizaOS.github.io",elvish:"elv.sh",eol:"endoflife.date",epsilon:"epsilon/project.sourceforge.io",etcd:"etcd.io",exiftool:"exiftool.org",exr:"openexr.com",f2py:"numpy.org",fastlane:"fastlane.tools",fftw:"fftw.org",fish:"fishshell.com",flipt:"flipt.io",flit:"flit.pypa.io",fluentci:"fluentci.io",fly:"fly.io",flyway:"flywaydb.org","fna-xna.github.io":"fna/xna.github.io",fury:"fury.co","geos-config":"libgeos.org",gif:"giflib.sourceforge.io",git:"git/scm.org","git-cliff":"git/cliff.org","git-crypt":"agwa.name/git-crypt","git-lfs":"git/lfs.com","git-quick-stats":"git/quick-stats.sh","git-town":"git/town.com",git2:"libgit2.org",gitleaks:"gitleaks.io",gleam:"gleam.run","glm.g-truc.net":"glm.g/truc.net",gnuplot:"gnuplot.info",go:"go.dev","golangci-lint":"golangci/lint.run",gomplate:"gomplate.ca",goreleaser:"goreleaser.com",gource:"gource.io",gqlgen:"gqlgen.com",gr2fonttest:"graphite.sil.org",gradle:"gradle.org",granted:"granted.dev",groonga:"groonga.org","groovy-lang.org":"groovy/lang.org",grpc:"grpc.io",hasura:"hasura.io",hatch:"hatch.pypa.io",helm:"helm.sh",heroku:"heroku.com",hjson:"hjson.github.io",htop:"htop.dev","huggingface-cli":"huggingface.co","huggingface/cli":"huggingface.co",hugo:"gohugo.io",hunspell:"hunspell.github.io",hurl:"hurl.dev",idevicedate:"libimobiledevice.org",infracost:"infracost.io",interpreter:"openinterpreter.com",invoke:"pyinvoke.org",ipfs:"ipfs.tech",ipython:"ipython.org",iroh:"iroh.computer",istioctl:"istio.io",itstool:"itstool.org",jags:"mcmc/jags.sourceforge.io",jbang:"jbang.dev",jbig2dec:"jbig2dec.com","jenkins x":"jenkins/x.io","Jenkins X":"jenkins/x.io","jenkins-lts":"jenkins.io",jenv:"jenv.be",jetp:"jetporch.com",jless:"jless.io",jsonnet:"jsonnet.org",juju:"juju.is",julia:"julialang.org",jumppad:"jumppad.dev",just:"just.systems",k3d:"k3d.io",k9s:"k9scli.io",kaggle:"kaggle.com",keep:"keephq.dev",kind:"kind.sigs.k8s.io",kluctl:"kluctl.io",koyeb:"koyeb.com",kpt:"kpt.dev",ktlint:"ktlint.github.io",kube:"kubectx.dev","kube-linter":"kubelinter.io",kubebuilder:"kubebuilder.io",kubecm:"kubecm.cloud","kubectl-cnpg":"cloudnative/pg.io","kubectl-krew":"krew.sigs.k8s.io",kubeshark:"kubeshark.co",lame:"lame.sourceforge.io",laravel:"laravel.com",lavinmq:"lavinmq.com",ldap:"openldap.org",leo:"leo/lang.org",lftp:"lftp.yar.ru",libdrm:"dri.freedesktop.org","libjpeg-turbo.org":"libjpeg/turbo.org",libmatio:"matio.sourceforge.io",libomp:"openmp.llvm.org",liburcu:"liburcu.org","lima-vm.io":"lima/vm.io","linux-pam.org":"linux/pam.org",litecli:"litecli.com",llm:"llm.datasette.io","local-ai":"localai.io",LocalAI:"localai.io",logdy:"logdy.dev",lua:"lua.org",luajit:"luajit.org",luarocks:"luarocks.org",lychee:"lychee.cli.rs",lz4:"lz4.org",mailpit:"mailpit.axllent.org","mako-render":"makotemplates.org",matdump:"matio.sourceforge.io",maturin:"maturin.rs",mercure:"mercure.rocks","mercurial-scm.org":"mercurial/scm.org",mergiraf:"mergiraf.org",meson:"mesonbuild.com",metagpt:"deepwisdom.ai",MetaGPT:"deepwisdom.ai",micro:"micro/editor.github.io","microcks-cli":"microcks.io","midnight commander":"midnight/commander.org","Midnight Commander":"midnight/commander.org",mise:"mise.jdx.dev",mitmproxy:"mitmproxy.org",mkcert:"mkcert.dev",mkdocs:"mkdocs.org",mosh:"mosh.org",mpg123:"mpg123.de",mpv:"mpv.io",mujs:"mujs.com",mun:"mun/lang.org",mvn:"maven.apache.org","mypy-lang.org":"mypy/lang.org",nano:"nano/editor.org",nginx:"nginx.org","nim-lang.org":"nim/lang.org",ninja:"ninja/build.org",nixpacks:"nixpacks.com",node:"nodejs.org",nomad:"nomadproject.io",numbat:"numbat.dev",nvim:"neovim.io","oauth2-proxy":"oauth2/proxy.github.io",odigos:"odigos.io","oh-my-posh":"ohmyposh.dev",ollama:"ollama.ai",onefetch:"onefetch.dev",opa:"openpolicyagent.org","open-interpreter":"openinterpreter.com","open-mpi.org":"open/mpi.org","openapi-generator":"openapi/generator.tech","opencore-amr.sourceforge.io":"opencore/amr.sourceforge.io",opensearch:"opensearch.org",openslide:"openslide.org",OpenSSL:"openssl.org",openvpn:"openvpn.net",opj:"openjpeg.org","opus-codec.org":"opus/codec.org",oras:"oras.land",ord:"ordinals.com",ots:"ots.sniptt.com",pack:"buildpacks.io",packer:"packer.io",pandoc:"pandoc.org","pcap-config":"tcpdump.org",pcre:"pcre.org","pcsc-lite":"pcsclite.apdu.fr",pdm:"pdm.fming.dev",perl:"perl.org",php:"php.net",phpMyAdmin:"phpmyadmin.net",pinniped:"pinniped.dev",pip:"pip.pypa.io",pipenv:"pipenv.pypa.io",pixi:"prefix.dev",pixlet:"tidbyt.com",pkgx:"pkgx.sh","pkl-lang.org":"pkl/lang.org",plantuml:"plantuml.com",pluralith:"pluralith.com",pnp:"pnpm.io",pocket:"pokt.network",pocketbase:"pocketbase.io",pod:"cocoapods.org",podman:"podman.io",poetry:"python/poetry.org",PortAudio:"portaudio.com",postgrest:"postgrest.org","pre-commit":"pre/commit.com",prettier:"prettier.io",proj:"proj.org",projen:"projen.io",protoc:"protobuf.dev","protocol buffers":"protobuf.dev","Protocol Buffers":"protobuf.dev",prql:"prql/lang.org",pscale:"planetscale.com",pulumi:"pulumi.io",pwgen:"pwgen.sourceforge.io",pygmentize:"pygments.org",pytest:"pytest.org",python:"python.org","python-pillow.org":"python/pillow.org",qemu:"qemu.org",qpdf:"qpdf.sourceforge.io",quickwit:"quickwit.io",raccoin:"raccoin.org",railway:"railway.app",rclone:"rclone.org",re2c:"re2c.org",rebar3:"rebar3.org",redis:"redis.io",render:"render.com",replibyte:"replibyte.com",rio:"rioterm.com",robot:"robotframework.org",rome:"rome.tools",rsync:"rsync.samba.org",rtmpdump:"rtmpdump.mplayerhq.hu",rubocop:"rubocop.org",ruby:"ruby-lang.org","ruby-lang.org":"ruby/lang.org",rust:"rust-lang.org","rust-script":"rust/script.org",rye:"rye.astral.sh",s3cmd:"s3tools.org",sbt:"scala/sbt.org","scala-lang.org":"scala/lang.org",scons:"scons.org","scryer prolog":"scryer.pl","Scryer Prolog":"scryer.pl","scryer-prolog":"scryer.pl",scw:"scaleway.com","sdkman-init.sh":"sdkman.io",SeaweedFS:"seaweedfs.com","sentry-cli":"sentry.io","sfcgal-config":"sfcgal.org",sftpgo:"sftpgo.com",shellcheck:"shellcheck.net","sing-box":"sing/box.app",skaffold:"skaffold.dev",sniffnet:"sniffnet.net",snyk:"snyk.io",solana:"solana.com",soldeer:"soldeer.xyz",sops:"getsops.io",spacetime:"spacetimedb.com",speexdec:"speex.org",sphinx:"sphinx/doc.org",sqlc:"sqlc.dev",sqlfluff:"sqlfluff.com",sqlite3:"sqlite.org",squawk:"squawkhq.com",srt:"srtalliance.org",sshx:"sshx.io",starship:"starship.rs",steampipe:"steampipe.io",strace:"strace.io",streamlink:"streamlink.github.io",stripe:"stripe.com",surreal:"surrealdb.com",swift:"swift.org",symfony:"symfony.com",syncthing:"syncthing.net",synth:"getsynth.com","taglib-config":"taglib.org",tailcall:"tailcall.run",tailwindcss:"tailwindcss.com",talosctl:"talos.dev",taplo:"taplo.tamasfe.dev",tart:"tart.run",task:"taskfile.dev","tcl-lang.org":"tcl/lang.org",tectonic:"tectonic/typesetting.github.io",teller:"tlr.dev",templ:"templ.guide",temporal:"temporal.io",terraform:"terraform.io","terraform-docs":"terraform/docs.io",terragrunt:"terragrunt.gruntwork.io",terratag:"terratag.io",tesseract:"tesseract/ocr.github.io",tidy:"html/tidy.org",tilt:"tilt.dev",tinygo:"tinygo.org",tldr:"tldr.sh",tmate:"tmate.io",tofu:"opentofu.org",tox:"tox.wiki",traefik:"traefik.io","tree-sitter":"tree/sitter.github.io",trip:"trippy.cli.rs",tsc:"typescriptlang.org",turso:"turso.tech",typst:"typst.app",unbound:"unbound.net",unrar:"rarlab.com",uplift:"upliftci.dev",upx:"upx.github.io",uriparse:"uriparser.github.io",vale:"vale.sh",valkey:"valkey.io",vamp:"vamp/plugins.org",Vanna:"vanna.ai",vault:"vaultproject.io",vcluster:"vcluster.com",velero:"velero.io",vips:"libvips.org",virtualenv:"virtualenv.pypa.io",vite:"vitejs.dev",volta:"volta.sh",vspipe:"vapoursynth.com",wails:"wails.io",wait4x:"wait4x.dev",wasmer:"wasmer.io",watchexec:"watchexec.github.io",wayland:"wayland.freedesktop.org",weed:"seaweedfs.com",werf:"werf.io",wunderctl:"wundergraph.com",xkbcli:"xkbcommon.org",xmlwf:"libexpat.github.io",xplr:"xplr.dev",xpra:"xpra.org",xray:"xtls.github.io","xray-core":"xtls.github.io",yadm:"yadm.io",yarn:"yarnpkg.com",yasm:"yasm.tortall.net","youtube-dl":"youtube/dl.org","yt-dlp":"yt/dlp.org",zarf:"zarf.dev",zig:"ziglang.org",zip:"libzip.org",zola:"getzola.org",zrok:"zrok.io",zsh:"zsh.sourceforge.io"}}),cQ={};VQ(cQ,{PACKAGE_ALIASES:()=>tQ,DEFAULT_TIMEOUT_MS:()=>wQ,DEFAULT_CACHE_EXPIRATION_MINUTES:()=>jQ,DEFAULT_CACHE_DIR:()=>GQ,ALL_KNOWN_PACKAGES:()=>rQ});var tQ,GQ=".cache/packages",jQ=1440,wQ=12000,rQ,xQ=WQ(()=>{tQ={node:"nodejs.org",python:"python.org",go:"go.dev",rust:"rust-lang.org",ruby:"ruby-lang.org",php:"php.net",perl:"perl.org",deno:"deno.land",bun:"bun.sh"},rQ=["abseil.io","acorn.io","agpt.co","agwa.name-git-crypt","akuity.io","alacritty.org","alembic.sqlalchemy.org","alsa-project.org","amber-lang.com","amp.rs","amrdeveloper.github.io","anchore.com","android.com","angular.dev","ansible.com","aomedia.googlesource.com","apache.org","apktool.org","apollographql.com","appium.io","apple.com","apple.com-remote_cmds","apptainer.org","aquasecurity.github.io","arduino.github.io","argbash.dev","argoproj.github.io","aria2.github.io","arkade.dev","asciidoctor.org","asciinema.org","aspell.net","assimp.org","ast-grep.github.io","astral.sh","astral.sh-ruff","astral.sh-ty","astral.sh-uv","atlasgo.io","attrs.org","augeas.net","authzed.com","aux4.io","aws.amazon.com","aws.amazon.com-cli","aws.amazon.com-sam","bashly.dannyb.co","bcrypt.sourceforge.net","beyondgrep.com","biomejs.dev","bitcoin.org","bittensor.com","bitwarden.com","blake2.net","bloomreach.com","boost.org","bore.pub","breakfastquay.com","browser-use.com","brxken128.github.io","budimanjojo.github.io","buf.build","buildpacks.io","bun.sh","bytebase.com","bytereef.org","c-ares.org","caddyserver.com","cairographics.org","capstone-engine.org","carapace.sh","cask.readthedocs.io","catb.org","ccache.dev","cedarpolicy.com","cedarpolicy.com-cli","ceph.com","ceph.com-cephadm","ceres-solver.org","certbot.eff.org","certifi.io","cgal.org","changie.dev","charm.sh","checkov.io","chezmoi.io","chiark.greenend.org.uk","chromedriver.chromium.org","cilium.io","circleci.com","cisco.com","classic.yarnpkg.com","cli.github.com","clisp.org","clog-tool.github.io","cloudflare.com","cloudfoundry.org","cloudnative-pg.io","cmake.org","cmocka.org","cnquery.io","cocoapods.org","cocoapods.org-xcodeproj","cocogitto.io","code.videolan.org","coder.com","cointop.sh","conda.org","conftest.dev","connectrpc.org","consul.io","convco.github.io","coredns.io","cpanmin.us","cr.yp.to","crates.io","crates.io-aichat","crates.io-bake-rs","crates.io-cargo-tarpaulin","crates.io-ducker","crates.io-flamegraph","crates.io-ox","crates.io-pik","crates.io-qsv","crates.io-ripgrep-all","crates.io-rucola-notes","crates.io-samply","crazymax.dev","creativeprojects.github.io","cruft.github.io","cryptography.io","crystal-lang.org","cscope.sourceforge.io","csie.ntu.edu.tw","ctags.io","ctop.sh","cuelang.org","curl.se","curlie.io","cyrusimap.org","cython.org","d2lang.com","dagger.io","dart.dev","darwinsys.com","databricks.com","daytona.io","dblab.danvergara.com","debian.org","deepwisdom.ai","denilson.sa.nom.br","deno.land","depot.dev","dest-unreach.org","dev.yorhel.nl","developer.1password.com","developer.1password.com-1password-cli","developers.yubico.com","devpod.sh","dgraph.io","dhall-lang.org","dhruvkb.dev","digger.dev","digip.org","digitalocean.com","direnv.net","dkrz.de","dns.lookup.dog","docbook.org","docker.com","doctave.com","docutils.org","dotenv-linter.github.io","dotenvx.com","dotnet.microsoft.com","doxygen.nl","dozzle.dev","dprint.dev","dri.freedesktop.org","duckdb.org","duktape.org","dystroy.org","dystroy.org-bacon","earthly.dev","ebassi.github.io","edgedb.com","eigen.tuxfamily.org","eksctl.io","elementsproject.org","elfutils.org","elixir-lang.org","elizaOS.github.io","elv.sh","encore.dev","endoflife.date","epsilon-project.sourceforge.io","erlang.org","etcd.io","exiftool.org","expo.dev","eyrie.org","f1bonacc1.github.io","fabianlindfors.se","facebook.com","fairwinds.com","fastlane.tools","felixkratz.github.io","fermyon.com","ffmpeg.org","fftw.org","filippo.io","fishshell.com","flipt.io","flit.pypa.io","fltk.org","fluentci.io","flutter.dev","fluxcd.io","fly.io","flywaydb.org","fmt.dev","fna-xna.github.io","freedesktop.org","freeglut.sourceforge.io","freetds.org","freetype.org","frei0r.dyne.org","fuellabs.github.io","fukuchi.org","fullstory.com","fury.co","fx.wtf","gaia-gis.it","gdal.org","geoff.greer.fm","getclipboard.app","getcomposer.org","getfoundry.sh","getsops.io","getsynth.com","getzola.org","geuz.org","gflags.github.io","ghostgum.com.au","ghostscript.com","giflib.sourceforge.io","git-cliff.org","git-lfs.com","git-quick-stats.sh","git-scm.org","git-town.com","git.osgeo.org","git.tozt.net","github.com","github.com-0age-create2crunch","github.com-Cyfrin-safe-tx-hashes-util","github.com-Diniboy1123-usque","github.com-MilesCranmer-rip2","github.com-MinseokOh-toml-cli","github.com-Parchive-par2cmdline","github.com-blacktop-lporg","github.com-blynn-nex","github.com-fastfetch-cli-fastfetch","github.com-fiatjaf-nak","github.com-git-ecosystem-git-credential-manager","github.com-glauth-glauth","github.com-igorshubovych-markdownlint-cli","github.com-jarun-nnn","github.com-koekeishiya-skhd","github.com-lucianosrp-rye-uv","github.com-mas-cli-mas","github.com-mycreepy-pakku","github.com-peak-s5cmd","github.com-peripheryapp-periphery","github.com-shaka-project-shaka-packager","github.com-sorah-envchain","github.com-spencerkimball-stargazers","github.com-withered-magic-starpls","gitlab.com","gitleaks.io","glaros.dtc.umn.edu","gleam.run","glew.sourceforge.io","glfw.org","glm.g-truc.net","gnome.org","gnu.org","gnupg.org","gnuplot.info","gnutls.org","go.dev","go.uber.org","gohugo.io","golangci-lint.run","gomplate.ca","google.com","google.github.io","goreleaser.com","gource.io","gphoto.org","gqlgen.com","gradle.org","grafana.com","granted.dev","graphicsmagick.org","graphite.sil.org","graphqleditor.com","graphviz.org","groonga.org","groovy-lang.org","grpc.io","gstreamer.freedesktop.org","gtk.org","gts.sourceforge.net","hadrons.org","harding.motd.ca","harfbuzz.org","hashicorp.com","haskell.org","hasura.io","hatch.pypa.io","hboehm.info","hdfgroup.org","heasarc.gsfc.nasa.gov","helix-editor.com","helm.sh","heroku.com","hetzner.com","hjson.github.io","html-tidy.org","htop.dev","htslib.org","httpie.io","huggingface.co","hugo.wang","hunspell.github.io","hurl.dev","ibr.cs.tu-bs.de","idleberg.github.io","ijg.org","imageflow.io","imagemagick.org","indexsupply.com","info-zip.org","infracost.io","intel.com","invisible-island.net","invisible-island.net-lynx","ipfs.tech","ipython.org","iroh.computer","isc.org","isc.org-bind9","istio.io","itstool.org","ivarch.com","jbang.dev","jbig2dec.com","jedisct1.github.io","jedsoft.org","jemalloc.net","jenkins-x.io","jenkins.io","jenv.be","jetporch.com","jfrog.com","jless.io","jonas.github.io","jpeg.org","jsonnet.org","jugit.fz-juelich.de","juju.is","julialang.org","jumppad.dev","jupyter.org","just.systems","k3d.io","k6.io","k9scli.io","kafka.apache.org","kaggle.com","keephq.dev","kerberos.org","kernel.org","kernel.org-libcap","khanacademy.org","khronos.org","kind.sigs.k8s.io","kislyuk.github.io","kluctl.io","ko.build","kornel.ski","kotlinlang.org","koyeb.com","kpt.dev","krew.sigs.k8s.io","ktlint.github.io","kubebuilder.io","kubecm.cloud","kubectx.dev","kubelinter.io","kubernetes.io","kubeshark.co","ladspa.org","lame.sourceforge.io","langchain.com","laravel.com","lavinmq.com","lcdf.org","leethomason.github.io","leo-lang.org","leonerd.org.uk","leptonica.org","lftp.yar.ru","libarchive.org","libcxx.llvm.org","libevent.org","libexif.github.io","libexpat.github.io","libgd.github.io","libgeos.org","libgit2.org","libimobiledevice.org","libisl.sourceforge.io","libjpeg-turbo.org","liblqr.wikidot.com","libpipeline.gitlab.io","libpng.org","libproxy.github.io","libraw.org","libsdl.org","libsodium.org","libsoup.org","libspng.org","libssh.org","libssh2.org","libtom.net","liburcu.org","libusb.info","libuv.org","libvips.org","libwebsockets.org","libzip.org","lima-vm.io","linkerd.io","linux-pam.org","litecli.com","littlecms.com","llm.datasette.io","lloyd.github.io","llvm.org","localai.io","localstack.cloud","logdy.dev","logological.org","lua.org","luajit.org","luarocks.org","lucagrulla.com","lunarvim.org","lxml.de","lychee.cli.rs","lz4.org","maaslalani.com","macvim.org","mailpit.axllent.org","makotemplates.org","man-db.gitlab.io","mandoc.bsd.lv","mariadb.com","markupsafe.palletsprojects.com","materialize.com","matio.sourceforge.io","maturin.rs","maven.apache.org","mcmc-jags.sourceforge.io","mercure.rocks","mercurial-scm.org","mergestat.com","mesa3d.org","mesonbuild.com","micro-editor.github.io","microbrew.org","microcks.io","microsoft.com","microsoft.com-code-cli","microsoft.com-markitdown","midnight-commander.org","min.io","mise.jdx.dev","mitmproxy.org","mkcert.dev","mkdocs.org","modal.com","modernc.org","modernc.org-goyacc","mongodb.com","moonrepo.dev","mosh.org","mozilla.org","mozilla.org-cbindgen","mpg123.de","mpmath.org","mpv.io","msgpack.org","mujs.com","mun-lang.org","mupdf.com","musepack.net","musl.libc.org","mvdan.cc","mvdan.cc-gofumpt","mypy-lang.org","mysql.com","nano-editor.org","nasm.us","neovim.io","netflix.com","netlib.org","netpbm.sourceforge.net","networkx.org","nghttp2.org","nginx.org","nike.com","nim-lang.org","ninja-build.org","nixos.org","nixpacks.com","nlnetlabs.nl","nmap.org","node","nomadproject.io","nongnu.org","notroj.github.io","npmjs.com","ntp.org","numbat.dev","numpy.org","nushell.sh","nx.dev","oauth2-proxy.github.io","oberhumer.com","oberhumer.com-ucl","odigos.io","ohmyposh.dev","ollama.ai","onefetch.dev","onsi.github.io","open-mpi.org","openai.com","openapi-generator.tech","openbao.org","openblas.net","opencore-amr.sourceforge.io","opendap.org","opendev.org","openexr.com","openinterpreter.com","openjdk.org","openjpeg.org","openldap.org","openldap.org-liblmdb","openmp.llvm.org","openpmix.github.io","openpolicyagent.org","openprinting.github.io","openresty.org","opensearch.org","openshift.com","openslide.org","openssh.com","openssl.org","opentofu.org","openvpn.net","operatorframework.io","opus-codec.org","oracle.com","oras.land","ordinals.com","orhun.dev","ots.sniptt.com","packer.io","pagure.io","palletsprojects.com","pandoc.org","pantsbuild.org","paulfitz.github.io","pcre.org","pcsclite.apdu.fr","pdm.fming.dev","people.engr.tamu.edu","people.redhat.com","perl.org","permit.io","php.net","phpmyadmin.net","pimalaya.org","pinniped.dev","pip.pypa.io","pipenv.pypa.io","pixman.org","pkgx.sh","pkgx.sh-dev","pkgx.sh-pkgm","pkl-lang.org","planetscale.com","plantuml.com","plasmasturm.org","plocate.sesse.net","pluralith.com","pngquant.org","pnpm.io","po4a.org","pocketbase.io","podman.io","pokt.network","poppler.freedesktop.org","portaudio.com","postgresql.org","postgrest.org","practical-scheme.net","pre-commit.com","prefix.dev","pressly.github.io","prettier.io","printfn.github.io","priver.dev","proj.org","project-copacetic.github.io","projectdiscovery.io","projectdiscovery.io-nuclei","projen.io","protobuf.dev","prql-lang.org","psycopg.org","public.hronopik.de","pugixml.org","pulumi.io","pwgen.sourceforge.io","pwmt.org","pygments.org","pyinvoke.org","pypa.github.io","pypa.io","pytest.org","python-pillow.org","python-poetry.org","python.org","pyyaml.org","qemu.org","qhull.org","qpdf.sourceforge.io","qt.io","quary.dev","quickwit.io","r-wos.org","rabbitmq.com","raccoin.org","radicle.org","railway.app","rapidjson.org","rarlab.com","rbenv.org","rclone.org","re2c.org","reacher.email","rebar3.org","redis.io","render.com","replibyte.com","restic.net","rhash.sourceforge.net","rigaux.org","riverbankcomputing.com","robotframework.org","rockdaboot.github.io","rome.tools","rpm.org","rsync.samba.org","rtmpdump.mplayerhq.hu","rtomayko.github.io","rubocop.org","ruby-lang.org","rubygems.org","rucio.cern.ch","runatlantis.io","rust-lang.github.io","rust-lang.org","rust-lang.org-rust-bindgen","rust-script.org","rye.astral.sh","s3tools.org","saerasoft.com","sagiegurari.github.io","sass-lang.com","savannah.nongnu.org","scala-lang.org","scala-sbt.org","scaleway.com","schollz.com","scons.org","scryer.pl","sdkman.io","seaweedfs.com","sentry.io","sf.net","sfcgal.org","sftpgo.com","shellcheck.net","sigstore.dev","simplesystems.org","sing-box.app","skaffold.dev","smartmontools.org","snaplet.dev","sniffnet.net","snyk.io","solana.com","soldeer.xyz","soliditylang.org","sonarqube.org","sourceforge.net","sourceware.org","soxr.sourceforge.net","spacetimedb.com","spawn.link","speex.org","sphinx-doc.org","sqlc.dev","sqlfluff.com","sqlite.org","squawkhq.com","srtalliance.org","sshx.io","starship.rs","steampipe.io","stedolan.github.io","strace.io","streamlink.github.io","stripe.com","supabase.com","surrealdb.com","svenstaro.github.io","swagger.io","swift.org","swig.org","symfony.com","sympy.org","syncthing.net","systemd.io","taglib.org","tailcall.run","tailwindcss.com","taku910.github.io","talos.dev","taplo.tamasfe.dev","tart.run","taskfile.dev","tcl-lang.org","tcl.tk","tcpdump.org","tcsh.org","tea.xyz","tectonic-typesetting.github.io","templ.guide","temporal.io","terraform-docs.io","terraform.io","terragrunt.gruntwork.io","terratag.io","tesseract-ocr.github.io","thekelleys.org.uk","theora.org","thoughtworks.github.io","thrysoee.dk","tidbyt.com","tilt.dev","tinybird.co","tinygo.org","tldr.sh","tlr.dev","tmate.io","tox.wiki","traefik.io","tree-sitter.github.io","trippy.cli.rs","trufflesecurity.com","tsl0922.github.io","tuist.io","tukaani.org","turso.tech","typescriptlang.org","typst.app","unbound.net","undefined","unicode.org","unidata.ucar.edu","unixodbc.org","upliftci.dev","upx.github.io","uriparser.github.io","vale.sh","valkey.io","vamp-plugins.org","vanna.ai","vapoursynth.com","vaultproject.io","vcluster.com","vektra.github.io","velero.io","veracode.com","vercel.com","versity.com","viaduct.ai","viaduct.ai-ksops","videolan.org","vim.org","virtualenv.pypa.io","virtualsquare.org","vitejs.dev","vlang.io","volta.sh","wails.io","wait4x.dev","wasmer.io","watchexec.github.io","waterlan.home.xs4all.nl","wavpack.com","wayland.freedesktop.org","webmproject.org","werf.io","wezfurlong.org","wilfred.me.uk","wimlib.net","wireshark.org","wix.com","wkentaro.github.io","wpewebkit.org","wundergraph.com","wxwidgets.org","x.org","x.org-xscrnsaver","xcfile.dev","xerces.apache.org","xiph.org","xkbcommon.org","xplr.dev","xpra.org","xtls.github.io","xvid.com","yadm.io","yarnpkg.com","yasm.tortall.net","youtube-dl.org","yt-dlp.org","yui.github.io","zarf.dev","zeromq.org","ziglang.org","zlib.net","zrok.io","zsh.sourceforge.io"]}),sQ={};VQ(sQ,{shouldProceedWithGitHubRequest:()=>EQ,saveRateLimitInfo:()=>UQ,saveGitHubPackageCache:()=>MQ,resolvePackageDomain:()=>nQ,logPkgxProjects:()=>HZ,isKnownAlias:()=>MZ,guessOriginalDomain:()=>SQ,getPackageAliases:()=>EZ,getGitHubPackageCache:()=>oQ,getCanonicalDomain:()=>RZ,formatObjectWithoutQuotedKeys:()=>RQ,fetchPackageListFromGitHub:()=>WZ,convertDomainToVarName:()=>FQ,convertDomainToFileName:()=>UZ});function UQ(Q){try{let Z=Q.get("X-RateLimit-Remaining"),X=Q.get("X-RateLimit-Reset"),$=Q.get("X-RateLimit-Limit");if(Z&&X&&$){let J=new Date(Number(X)*1000),q={remaining:Number(Z),limit:Number($),resetTime:J.toISOString(),resetTimestamp:Number(X)*1000,lastUpdated:new Date().toISOString()};a.writeFileSync(JQ,JSON.stringify(q,null,2)),console.warn(`GitHub API rate limit info saved to ${JQ}`),console.warn(`Rate limit: ${Z}/${$} remaining, resets at ${J.toLocaleString()}`)}}catch(Z){console.error("Failed to save GitHub rate limit info:",Z)}}function EQ(){try{if(!a.existsSync(JQ))return!0;let Q=JSON.parse(a.readFileSync(JQ,"utf8")),Z=Date.now();if(Z>=Q.resetTimestamp)return!0;if(Q.remaining<=BZ){let X=new Date(Q.resetTimestamp);console.warn(`GitHub API rate limit almost exhausted (${Q.remaining}/${Q.limit} remaining). Preserving remaining calls until reset at ${X.toLocaleString()}`);let $=Q.resetTimestamp-Z;if($<300000)console.error(`Waiting ${Math.round($/1000)} seconds for rate limit to reset...`);return!1}return!0}catch(Q){return console.error("Error checking GitHub rate limit:",Q),!0}}function oQ(){try{if(!a.existsSync(YQ))return null;let Q=JSON.parse(a.readFileSync(YQ,"utf8")),Z=Date.now();if(Q.timestamp&&Z-Q.timestamp<XQ){let X=new Date(Q.timestamp+XQ);if(console.error(`Using GitHub API cache from ${new Date(Q.timestamp).toLocaleString()}, expires at ${X.toLocaleString()}`),Array.isArray(Q.packages))return console.error(`Using ${Q.packages.length} packages from GitHub API cache`),Q.packages;else if(Array.isArray(Q.data))return console.error(`Using ${Q.data.length} packages from GitHub API cache (old format)`),Q.data;else return console.error("GitHub API cache has invalid format, fetching fresh data"),null}return console.error(`GitHub API cache expired (older than ${XQ/1000/60} minutes), fetching fresh data`),null}catch(Q){return console.error("Error reading GitHub cache:",Q),null}}function MQ(Q){try{let Z={timestamp:Date.now(),packages:Q};a.writeFileSync(YQ,JSON.stringify(Z,null,2)),console.error(`GitHub API package list cached to ${YQ} (${Q.length} packages)`)}catch(Z){console.error("Error saving GitHub cache:",Z)}}async function WZ(Q=0,Z){if(Z){if(Z.startsWith("/")||Z.includes("/bin/"))return console.error(`Error: '${Z}' appears to be a path, not a valid package name.`),[];return console.log(`Single package mode: only fetching '${Z}'`),[Z]}console.log("Fetching package list from GitHub API...");let X=oQ();if(X)return console.log("Using cached package list, no GitHub API calls needed"),Q>0?X.slice(0,Q):X;try{if(!EQ()){console.warn("GitHub API rate limit preventing request - using cached data or hardcoded list");let _=["node","bun.sh","python.org","go.dev","rust-lang.org","deno.land","ruby-lang.org","php.net","dart.dev","postgresql.org","mozilla.org","mysql.com","nginx.org","redis.io","mongodb.com"];return MQ(_),Q>0?_.slice(0,Q):_}console.error("No valid cache found, making GitHub API requests");let $=await fetch("https://api.github.com/repos/pkgxdev/pantry/contents/projects",{headers:{Accept:"application/vnd.github.v3+json","User-Agent":"pkgx-tools"}});if(UQ($.headers),!$.ok)throw new Error(`GitHub API responded with ${$.status}: ${$.statusText}`);let q=(await $.json()).filter((_)=>_.type==="dir").map((_)=>_.name);console.error(`Found ${q.length} base projects on GitHub`);let Y=[...q],z=["agwa.name","acorn.io","apache.org","aquasecurity.github.io","aws.amazon.com"],G=["alsa-project.org/alsa-lib","apple.com/remote_cmds","android.com/cmdline-tools","anchore.com/syft","argoproj.github.io/cd","argoproj.github.io/workflows","amrdeveloper.github.io/GQL","authzed.com/spicedb","arduino.github.io/arduino-cli","aomedia.googlesource.com/aom","akuity.io/kargo","asciinema.org/agg","ansible.com/ansible-lint","astral.sh/ruff","astral.sh/uv","apollographql.com/rover","brxken128.github.io/dexios","cedarpolicy.com/cli","blake2.net/libb2"];for(let _ of z){if(!EQ()){console.error(`Skipping nested path check for ${_} due to rate limit concerns`);continue}try{console.error(`Checking for nested projects in ${_}...`);let W=await fetch(`https://api.github.com/repos/pkgxdev/pantry/contents/projects/${_}`,{headers:{Accept:"application/vnd.github.v3+json","User-Agent":"pkgx-tools"}});if(UQ(W.headers),!W.ok){console.error(`Failed to fetch nested projects for ${_}: ${W.status}`);continue}let O=(await W.json()).filter((U)=>U.type==="dir").map((U)=>`${_}/${U.name}`);console.error(`Found ${O.length} nested projects for ${_}: ${O.join(", ")}`),Y.push(...O)}catch(W){console.error(`Error fetching nested projects for ${_}:`,W)}}for(let _ of G)if(!Y.includes(_))console.error(`Adding known nested project: ${_}`),Y.push(_);MQ(Y),console.error(`Cached ${Y.length} packages for future use (valid for ${XQ/60000} minutes)`);let K=Q>0?Y.slice(0,Q):Y;return console.error(`Total of ${Y.length} projects found (including nested paths)`),K}catch($){return console.error("Error fetching package list from GitHub:",$),[]}}async function HZ(){try{let{fetchPkgxProjects:Q}=await Promise.resolve().then(()=>(ZZ(),iQ)),Z=await Q();if(console.error(`Found ${Z.length} projects`),Z.length>0){if(console.error("First 10 projects:"),Z.slice(0,10).forEach((X)=>{console.error(`- ${X.name}`)}),Z.length>10)console.error(`... and ${Z.length-10} more`)}return Z}catch(Q){return console.error("Failed to fetch projects:",Q),[]}}function RQ(Q,Z=2){if(Q===null)return"null";if(Q===void 0)return"undefined";if(Array.isArray(Q)){if(Q.length===0)return"[]";if(Q.every(($)=>typeof $==="string")){if(Q.length===1)return`[${JSON.stringify(Q[0])}]`;let $=Q.map((J)=>JSON.stringify(J)).join(`, ${" ".repeat(Z)}`);return`[ ${" ".repeat(Z)}${$} ${" ".repeat(Z-2)}]`}let X=Q.map(($)=>RQ($,Z+2)).join(`, ${" ".repeat(Z+2)}`);return`[ ${" ".repeat(Z+2)}${X} ${" ".repeat(Z)}]`}if(typeof Q==="object")return`{ ${Object.entries(Q).map(([$,J])=>{let q=typeof J==="string"?JSON.stringify(J):RQ(J,Z+2);return`${" ".repeat(Z)}${$}: ${q}`}).join(`, `)} }`;return String(Q)}function FQ(Q){if(Q.includes("/")){let[Z,X]=Q.split("/"),$=Z.replace(/[.-]/g,""),J=X.replace(/[.-]/g,"");return`${$}${J}`.toLowerCase()}return Q.replace(/[.-]/g,"").toLowerCase()}function UZ(Q){if(Q.includes("/")){let[Z,X]=Q.split("/"),$=Z.replace(/\./g,""),J=X.replace(/\//g,"-");return`${$}-${J}`.toLowerCase()}return Q.replace(/\./g,"").toLowerCase()}function SQ(Q){if(Q.includes("-")){let X=Q.indexOf("-"),$=Q.substring(0,X),J=Q.substring(X+1),q=$;if(q.endsWith("org")&&!q.endsWith(".org"))q=q.replace(/org$/,".org");if(q.endsWith("io")&&!q.endsWith(".io"))q=q.replace(/io$/,".io");if(q.endsWith("com")&&!q.endsWith(".com"))q=q.replace(/com$/,".com");if(q.endsWith("sh")&&!q.endsWith(".sh"))q=q.replace(/sh$/,".sh");if(q.endsWith("dev")&&!q.endsWith(".dev"))q=q.replace(/dev$/,".dev");if(q.endsWith("net")&&!q.endsWith(".net"))q=q.replace(/net$/,".net");if(q.endsWith("name")&&!q.endsWith(".name"))q=q.replace(/name$/,".name");return`${q}/${J}`}let Z=Q;if(Z.endsWith("org")&&!Z.endsWith(".org"))Z=Z.replace(/org$/,".org");if(Z.endsWith("io")&&!Z.endsWith(".io"))Z=Z.replace(/io$/,".io");if(Z.endsWith("com")&&!Z.endsWith(".com"))Z=Z.replace(/com$/,".com");if(Z.endsWith("sh")&&!Z.endsWith(".sh"))Z=Z.replace(/sh$/,".sh");if(Z.endsWith("dev")&&!Z.endsWith(".dev"))Z=Z.replace(/dev$/,".dev");if(Z.endsWith("net")&&!Z.endsWith(".net"))Z=Z.replace(/net$/,".net");if(Z.endsWith("land")&&!Z.endsWith(".land"))Z=Z.replace(/land$/,".land");return Z}function nQ(Q){let[Z]=Q.split("@");if(d[Z])return d[Z];if(Z.includes("."))return Z;return`${Z}.org`}function EZ(){return{...d}}function MZ(Q){let[Z]=Q.split("@");return Z in d}function RZ(Q){return nQ(Q)}var JQ,YQ,BZ=10,XQ,AQ=WQ(()=>{OQ(),JQ=fQ.join(dQ.cwd(),"github-rate-limit.json"),YQ=fQ.join(dQ.cwd(),"github-cache.json"),XQ=3600000}),iQ={};VQ(iQ,{startPeriodicCleanup:()=>FZ,setupCleanupHandlers:()=>QZ,saveToCacheAndOutput:()=>VZ,savePackageAsTypeScript:()=>n,getValidCachedPackage:()=>aQ,fetchPkgxProjects:()=>wZ,fetchPkgxPackage:()=>BQ,fetchAndSavePackage:()=>vQ,fetchAndSaveAllPackages:()=>SZ,cleanupBrowserResources:()=>bQ});function kQ(Q){if(Q.includes("/")){let[Z,...X]=Q.split("/"),$=X.join("/"),J=Z.replace(/\./g,"");if(Z.includes("github.com")){let Y=$.replace(/[/.-]/g,"");return`${J}${Y}`.toLowerCase()}let q=$.replace(/[.-]/g,"");return`${J}${q}`.toLowerCase()}return Q.replace(/\./g,"").toLowerCase()}function TZ(Q,Z){switch(Q){case"versions":if(Array.isArray(Z)&&Z.length>0)return` /** * Available versions from newest to oldest. * @see https://ts-pkgx.netlify.app/usage for installation instructions */`;break;case"programs":if(Array.isArray(Z)&&Z.length>0)return` /** * Executable programs provided by this package. * These can be run after installation. */`;break;case"dependencies":if(Array.isArray(Z)&&Z.length>0)return` /** * Required dependencies for this package. * These will be automatically installed. */`;break;case"companions":if(Array.isArray(Z)&&Z.length>0)return` /** * Related packages that work well with this package. * Consider installing these for enhanced functionality. */`;break;case"aliases":if(Array.isArray(Z)&&Z.length>0)return` /** * Alternative names for this package. * You can use any of these names to access the package. */`;break;case"installCommand":return` /** * Command to install this package using pkgx. * @example sh <(curl https://pkgx.sh) +package-name */`;case"description":return` /** * Brief description of what this package does. */`;case"domain":return` /** * The canonical domain name for this package. */`;case"name":return` /** * The display name of this package. */`;default:return null}return null}function eQ(Q){let Z=[];Z.push("{");for(let[X,$]of Object.entries(Q)){if(X==="fetchedAt")continue;let J=TZ(X,$);if(J)Z.push(J);if($===void 0){Z.push(` ${X}: undefined,`);continue}if(Array.isArray($))if($.length===0)Z.push(` ${X}: [] as const,`);else if(typeof $[0]==="string"){let q=$;if(X==="aliases"){let Y=Q.name;q=$.filter((z)=>{if(z.includes("--")||z.includes("$SHELL")||z.includes("+")||z.includes("(")||z.includes(")"))return!1;if(z===Y)return!1;return!0})}if(q.length===0)Z.push(` ${X}: [] as const,`);else{Z.push(` ${X}: [`);for(let Y of q)Z.push(` '${String(Y).replace(/'/g,"\\'")}',`);Z.push(" ] as const,")}}else{let q=JSON.stringify($).replace(/"/g,"'");Z.push(` ${X}: ${q} as const,`)}else if(typeof $==="string")Z.push(` ${X}: '${String($).replace(/'/g,"\\'")}' as const,`);else if(typeof $==="number"||typeof $==="boolean")Z.push(` ${X}: ${$} as const,`);else if($===null)Z.push(` ${X}: null,`);else if(typeof $==="object")Z.push(` ${X}: ${eQ($)},`);else{let q=JSON.stringify($).replace(/"/g,"'");Z.push(` ${X}: ${q},`)}}return Z.push("}"),Z.join(` `)}function LZ(Q,Z,X){let $=[];if($.push("/**"),Q.description)$.push(` * **${X}** - ${Q.description}`);else $.push(` * **${X}** - pkgx package`);if($.push(" *"),$.push(` * @domain \`${Q.domain||Z}\``),Q.programs&&Q.programs.length>0){let J=Q.programs.slice(0,5).join("`, `"),q=Q.programs.length>5?`, ... (+${Q.programs.length-5} more)`:"";$.push(` * @programs \`${J}\`${q}`)}if(Q.versions&&Q.versions.length>0)$.push(` * @version \`${Q.versions[0]}\` (${Q.versions.length} versions available)`),$.push(` * @versions From newest version to oldest. @see https://ts-pkgx.netlify.app/packages/${Z.replace(/\./g,"-")}.md`);if(Q.installCommand)$.push(" *"),$.push(` * @install \`${Q.installCommand}\``);if(Q.aliases&&Q.aliases.length>0){let J=Q.aliases.filter((q)=>{return!q.includes("--")&&!q.includes("$SHELL")&&!q.includes("+")&&!q.includes("(")&&!q.includes(")")});if(J.length>0){let q=Q.name,Y=J.filter((G)=>G!==q),z=J.find((G)=>G===q);if(z)$.push(` * @name \`${z}\``);if(Y.length>0)$.push(` * @aliases ${Y.map((G)=>`\`${G}\``).join(", ")}`)}}if(Q.homepageUrl)$.push(` * @homepage ${Q.homepageUrl}`);if(Q.dependencies&&Q.dependencies.length>0){let J=Q.dependencies.slice(0,3).join("`, `"),q=Q.dependencies.length>3?`, ... (+${Q.dependencies.length-3} more)`:"";$.push(` * @dependencies \`${J}\`${q}`)}if(Q.companions&&Q.companions.length>0){let J=Q.companions.slice(0,3).join("`, `"),q=Q.companions.length>3?`, ... (+${Q.companions.length-3} more)`:"";$.push(` * @companions \`${J}\`${q}`)}if($.push(" *"),$.push(" * @example"),$.push(" * ```typescript"),$.push(" * import { pantry } from 'ts-pkgx'"),$.push(" *"),Q.aliases&&Q.aliases.length>0){let J=Q.aliases.find((q)=>{return!q.includes("--")&&!q.includes("$SHELL")&&!q.includes("+")&&!q.includes("(")&&!q.includes(")")});if(J){let q=J.replace(/[^a-z0-9]/gi,""),Y=Z.replace(/[.-]/g,"").replace(/\//g,"").toLowerCase();if(J===Q.name)$.push(" * // Access the package"),$.push(` * const pkg = pantry.${q}`),$.push(" * // Or access via domain"),$.push(` * const samePkg = pantry.${Y}`),$.push(" * console.log(pkg === samePkg) // true");else $.push(" * // Access via alias (recommended)"),$.push(` * const pkg = pantry.${q}`),$.push(" * // Or access via domain"),$.push(` * const samePkg = pantry.${Y}`),$.push(" * console.log(pkg === samePkg) // true")}else{let q=Z.replace(/[.-]/g,"").replace(/\//g,"").toLowerCase();$.push(` * const pkg = pantry.${q}`)}}else{let J=Z.replace(/[.-]/g,"").replace(/\//g,"").toLowerCase();$.push(` * const pkg = pantry.${J}`)}if($.push(` * console.log(pkg.name) // "${Q.name||X}"`),Q.description){let J=Q.description.length>50?`${Q.description.substring(0,47)}...`:Q.description;$.push(` * console.log(pkg.description) // "${J}"`)}if(Q.programs&&Q.programs.length>0)$.push(` * console.log(pkg.programs) // [${Q.programs.slice(0,2).map((J)=>`"${J}"`).join(", ")}${Q.programs.length>2?", ...":""}]`);if(Q.versions&&Q.versions.length>0)$.push(` * console.log(pkg.versions[0]) // "${Q.versions[0]}" (latest)`);return $.push(" * ```"),$.push(" *"),$.push(` * @see https://ts-pkgx.netlify.app/packages/${Z.replace(/\./g,"-")}.md`),$.push(" * @see https://ts-pkgx.netlify.app/usage"),$.push(" */"),$.join(` `)}function CZ(Q,Z){function X(G){if(!G||G.length<2)return!1;if(G.includes("--")||G.includes("$SHELL")||G.includes("+")||G.includes("(")||G.includes(")"))return!1;if(["cli","app","tool","server","client","api","lib","core"].includes(G.toLowerCase()))return!1;if(/^\d+(?:\.\d+)*/.test(G))return!1;return!0}let $,J;if(Q.aliases&&Q.aliases.length>0){let G=Q.aliases.find((K)=>X(K));if(G){let K=G.replace(/[^a-z0-9]/gi,"");$=`${K.charAt(0).toLowerCase()}${K.slice(1)}Package`,J=G}else $=`${kQ(Z)}Package`,J=Q.name||Z}else $=`${kQ(Z)}Package`,J=Q.name||Z;let q=$.replace(/-/g,""),Y=LZ(Q,Z,J),z=eQ(Q);return`${Y} export const ${q} = ${z} export type ${q.charAt(0).toUpperCase()+q.slice(1)} = typeof ${q} `}function n(Q,Z,X){if(!S.existsSync(Q))S.mkdirSync(Q,{recursive:!0});let $=Z.replace(/\//g,"-"),J=g.join(Q,`${$}.ts`),q={...X};delete q.fetchedAt;let Y=CZ(q,Z);return S.writeFileSync(J,Y),J}function aQ(Q,Z={}){try{let X=Z.cacheDir||GQ;if(Z.cache===!1)return console.log(`Cache disabled for ${Q}, skipping cache check`),null;let J=(d[Q]||Q).replace(/\//g,"-"),q=g.join(X,`${J}.json`);if(console.log(`Checking for cache file: ${q}`),!S.existsSync(q))return null;let Y=JSON.parse(S.readFileSync(q,"utf-8"));if(!Y.fetchedAt)return console.log(`Cache for ${Q} missing fetchedAt timestamp, invalidating`),null;if(["Crafters of fine Open Source products","Go home.","Package information for","pkgx package","Loading...","Please wait..."].some((H)=>Y.description&&Y.description.includes(H)))return console.log(`Cache for ${Q} has generic description "${Y.description}", invalidating`),null;if(!Y.versions||Y.versions.length===0)return console.log(`Cache for ${Q} has no versions, invalidating`),null;let _=(Z.cacheExpirationMinutes||jQ)*60*1000,W=Date.now();if(W-Y.fetchedAt>_)return console.log(`Cache for ${Q} has expired (age: ${Math.round((W-Y.fetchedAt)/60000)} minutes)`),null;return console.log(`Using cached data for ${Q} (age: ${Math.round((W-Y.fetchedAt)/60000)} minutes)`),{packageInfo:Y,filePath:q}}catch(X){return console.error(`Error reading cache for ${Q}:`,X),null}}function VZ(Q,Z,X={}){let $={...Z,fetchedAt:Date.now()},J=X.cacheDir||GQ;if(!S.existsSync(J))S.mkdirSync(J,{recursive:!0});let q=Q.replace(/\//g,"-"),Y=g.join(J,`${q}.json`);S.writeFileSync(Y,JSON.stringify($,null,2));let z=X.outputDir||"packages";if(!S.existsSync(z))S.mkdirSync(z,{recursive:!0});let G=n(z,q,Z);return{cachePath:Y,outputPath:G}}function jZ(Q){if(!TQ)console.log(`Navigating to ${Q}...`),TQ=!0}function bQ(){return Promise.resolve()}async function wZ(Q={}){let Z=Q.apiUrl||"https://api.github.com/repos/pkgxdev/pantry/contents/projects";try{console.log(`Fetching projects from GitHub API: ${Z}`);let X=await fetch(Z,{headers:{Accept:"application/vnd.github.v3+json"}});if(!X.ok)throw new Error(`Failed to fetch from GitHub API: ${X.statusText}`);let J=(await X.json()).filter((q)=>q.type==="dir").map((q)=>({name:q.name,url:q.html_url}));return console.log(`Retrieved ${J.length} projects from GitHub API`),J.sort((q,Y)=>q.name.localeCompare(Y.name)),J}catch(X){throw console.error("Error fetching projects from GitHub API:",X),X}}async function BQ(Q,Z={}){let X=Q,$=Q,J=null,q=null,Y=!1;if(Q.includes("/")){let[z,G]=Q.split("/");console.log(`Identified nested package: domain=${z}, name=${G}`)}if(d[Q])console.log(`'${Q}' is an alias for '${d[Q]}', redirecting...`),$=d[Q],Q=d[Q];try{let z=Z.timeout||wQ,G=Z.debug||!1;if(Z.browser)J=Z.browser;else if(_Q)J=_Q;else{let W=0,H=3;Y=!0;while(W<H)try{J=await yQ.launch({headless:!0,timeout:8000}),_Q=J;break}catch(O){if(W++,console.error(`Browser launch attempt ${W} failed:`,O),W>=H)throw new Error(`Failed to launch browser after ${H} attempts`);await new Promise((U)=>setTimeout(U,1000))}}if(!J)return console.error("Unexpected error: browser is null after successful launch"),AZ(Q,X,$);q=await(await J.newContext()).newPage();let _=z;try{TQ=!1;let W=`https://pkgx.dev/pkgs/${Q}/`;if(jZ(W),await q.goto(W,{timeout:_,waitUntil:"networkidle"}),await q.waitForTimeout(2000),G){let M=g.join(p.cwd(),"debug");if(!S.existsSync(M))S.mkdirSync(M,{recursive:!0});let T=g.join(M,`${Q.replace(/\//g,"-")}_debug.png`);await q.screenshot({path:T}),console.error(`Saved debug screenshot to ${T}`)}console.log("Extracting package information...");let H=await q.evaluate(()=>{let M=(D)=>{let N=document.querySelector(D);return N?N.textContent?.trim()||"":""},T=document.querySelector("h2.MuiTypography-h2"),w=T?T.childNodes[0].textContent?.trim()||"":"",v=document.querySelector("h2.MuiTypography-h2 span"),E=v?v.textContent?.trim().replace(/[()]/g,"")||"":window.location.pathname.split("/pkgs/")[1]?.replace(/\/$/,"")||"",F=w.toLowerCase(),f=M("h5.MuiTypography-h5:not(:has(+ ul))"),L=document.querySelector('a[href*="package.yml"]')?.href||"",C=document.querySelector('a[href*="Homepage"]')?.href||document.querySelector('a[href*="homepage"]')?.href||"",A=document.querySelector('a[href*="GitHub"]')?.href||document.querySelector('a[href*="github"]')?.href||"",h=M('div[data-terminal="true"]');function y(D){let N=Array.from(document.querySelectorAll("h5.MuiTypography-h5"));for(let r of N)if(r.textContent?.includes(D)){let k=r.nextElementSibling;while(k&&k.tagName!=="UL")k=k.nextElementSibling;if(k&&k.tagName==="UL")return Array.from(k.querySelectorAll("li")).map((zZ)=>zZ.textContent?.trim()||"").filter(Boolean)}return[]}let s=y("Programs"),o=y("Companions"),m=y("Dependencies"),c=y("Versions"),I=[];function t(D){if(!D||D.length<2)return!1;if(D.includes("--")||D.includes("$SHELL")||D.includes("+")||D.includes("(")||D.includes(")"))return!1;if(["cli","app","tool","server","client","api","lib","core"].includes(D.toLowerCase()))return!1;if(/^\d+(?:\.\d+)*/.test(D))return!1;return!0}if(h){let D=h.match(/sh\s*<\(curl[^)]+\)\s+(\S+)/);if(D&&D[1]){let N=D[1].trim();if(t(N)&&N!==E)I.push(N)}}if(E==="aws.amazon.com/cli"||w==="aws/cli"){if(!I.includes("aws"))I.push("aws");if(!I.includes("aws/cli"))I.push("aws/cli")}if(E==="aws.amazon.com/cdk"||w==="aws/cdk"){if(!I.includes("cdk"))I.push("cdk");if(!I.includes("aws/cdk"))I.push("aws/cdk")}if(E&&E.includes("/")){let D=E.split("/"),N=D[D.length-1];if(N&&N!==w&&h&&t(N)){let r=h.match(/sh\s*<\(curl[^)]+\)\s+(\S+)/);if(r&&r[1]){if(r[1].trim()===N&&!I.includes(N))I.push(N)}}}if(w&&w!==E&&w.length<E.length&&t(w)&&!I.includes(w))I.push(w);return{possibleAlias:F,packageInfo:{name:w,domain:E,description:f,packageYmlUrl:L,homepageUrl:C,githubUrl:A,installCommand:h,programs:s,companions:o,dependencies:m,versions:c,aliases:I}}}),{packageInfo:O,possibleAlias:U}=H;if(X.includes("/")){let[M,T]=X.split("/");if(!O.name||O.name==="")O.name=T;if(!O.domain||O.domain==="")O.domain=M;$=O.domain.includes("/")?O.domain:`${O.domain}/${T}`}if(U&&O.domain&&U!==O.domain&&!O.domain.startsWith(U)){if(!Z.outputJson)console.log(`Detected reverse alias: '${U}' for '${O.domain}'`);if($=O.domain,U&&U!==X&&O.domain){if(!Z.outputJson)console.log(`Adding new alias: '${U}' -> '${O.domain}'`);d[U]=O.domain}if(X!==U&&X!==O.domain){if(!Z.outputJson)console.log(`Adding original name as alias: '${X}' -> '${O.domain}'`);d[X]=O.domain}}if(!O.name||O.name===""){if(console.warn("First extraction method failed, trying alternative approach..."),G){let E=g.join(p.cwd(),"debug");if(!S.existsSync(E))S.mkdirSync(E,{recursive:!0});let F=g.join(E,`${Q.replace(/\//g,"-")}_alternative_debug.png`);await q.screenshot({path:F}),console.error(`Saved alternative debug screenshot to ${F}`)}let M=await q.content();if(X.includes("/")){let E=X.split("/");O.name=E[E.length-1],O.domain=E[0]}else O.name=X,O.domain=$;if(O.description=await q.evaluate(()=>{let E=document.querySelector("h5.MuiTypography-root");return E?E.textContent?.trim()||"":""}),!O.versions||O.versions.length===0){let E=M.match(/<li>([\d.]+)<\/li>/g);if(E)O.versions=E.map((F)=>F.replace(/<\/?li>/g,"")).filter(Boolean);else O.versions=[]}let T=await q.evaluate(()=>{let E=Array.from(document.querySelectorAll('a[href*="package.yml"]'));return E.length>0?E[0].href:""});O.packageYmlUrl=T;let w=await q.evaluate(()=>{let E=Array.from(document.querySelectorAll('a[href*="Homepage"]'));return E.length>0?E[0].href:""});O.homepageUrl=w;let v=await q.evaluate(()=>{let E=Array.from(document.querySelectorAll('a[href*="GitHub"]'));return E.length>0?E[0].href:""});O.githubUrl=v}if(!O.versions||O.versions.length===0){console.warn("Attempting to fetch versions from GitHub API...");try{let M=O.domain||Q,T=await xZ(M);O.versions=T}catch(M){console.warn(`Failed to fetch versions for ${Q} from GitHub API:`,M),O.versions=[]}}if(O.versions&&O.versions.length>0)try{O.versions.sort((M,T)=>{try{return-1*Bun.semver.order(M,T)}catch{return T.localeCompare(M)}})}catch(M){console.warn(`Warning: Failed to sort versions for ${Q} using semver:`,M)}O.name=O.name||X,O.domain=O.domain||$,O.installCommand=O.installCommand||`pkgx ${X}`,O.programs=O.programs||[],O.companions=O.companions||[],O.dependencies=O.dependencies||[],O.versions=O.versions||[];let R=O.versions.length>0||O.programs.length>0||O.dependencies.length>0,B=O.programs.length>0||O.versions.length>0,x=O.description.includes("Package information for")||O.description.trim()===""||O.description===`${Q} package`;if(B&&O.dependencies.length===0&&!R)console.warn(`\u26A0\uFE0F Package ${Q} appears to have incomplete data (no dependencies, versions, or programs). This might be a fetch error.`);if(x&&!R)console.warn(`\u26A0\uFE0F Package ${Q} has generic description and no substantial data. This might be a fetch error.`);return{packageInfo:O,originalName:X,fullDomainName:$}}finally{if(q)try{await q.close()}catch(W){console.error(`Error closing page for ${Q}:`,W)}}}catch(z){if(console.error(`Error in fetchPkgxPackage for ${Q}:`,z),J)try{await J.close()}catch(G){console.error(`Error closing browser for ${Q}:`,G)}throw z}finally{if(q)try{await q.close()}catch{}if(Y&&J&&J!==_Q)try{await J.close()}catch{}}}async function xZ(Q){try{let{shouldProceedWithGitHubRequest:Z,saveRateLimitInfo:X}=await Promise.resolve().then(()=>(AQ(),sQ));if(!Z())return console.warn("Skipping GitHub API request for versions due to rate limiting"),[];let $=await fetch(`https://api.github.com/repos/pkgxdev/pantry/contents/projects/${Q}`,{headers:{Accept:"application/vnd.github.v3+json","User-Agent":