diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..ec17e39
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,45 @@
+name: CI
+
+on:
+ push:
+ branches: [main]
+ pull_request:
+ branches: [main]
+ workflow_dispatch:
+
+permissions:
+ contents: read
+
+concurrency:
+ group: ci-${{ github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ check:
+ strategy:
+ fail-fast: false
+ matrix:
+ os: [ubuntu-latest, macos-latest]
+ runs-on: ${{ matrix.os }}
+ timeout-minutes: 10
+ steps:
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
+ with:
+ persist-credentials: false
+ - uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7.0.0
+ with:
+ go-version-file: go.mod
+ cache: false
+ - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
+ with:
+ node-version: '24'
+ - name: Check Go formatting
+ run: test -z "$(gofmt -l cmd/ship)"
+ - name: Test local behavior without cloud credentials
+ run: go test -race ./cmd/ship
+ - name: Go vet
+ run: go vet ./cmd/ship
+ - name: Build without cgo
+ run: CGO_ENABLED=0 go build -trimpath -buildvcs=false -o bin/ship ./cmd/ship
+ - name: Check browser script
+ run: node --check cmd/ship/web/app.js
diff --git a/.gitignore b/.gitignore
index dfbf5d5..0e9c90e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,3 +8,8 @@ __pycache__/
.venv/
validation/artifacts/
bin/
+.vercel/
+*.private.*
+
+# Local Ship records and plaintext business secrets
+.ship/
diff --git a/PRODUCT.md b/PRODUCT.md
index 75ef94d..8925cd2 100644
--- a/PRODUCT.md
+++ b/PRODUCT.md
@@ -1,6 +1,6 @@
# Ship · 产品范围
-项目名称已由用户确认为 **Ship**(2026-09-17,原名 UpOK)。源码、命令与新安装目录使用 `ship`;已有 UpOK 本地状态继续兼容读取。本仓库公开源码与设计,官网和预编译安装包尚未提供。
+项目名称已由用户确认为 **Ship**(2026-09-17,原名 UpOK)。源码、命令与新安装目录使用 `ship`;新用户状态默认位于 `~/.ship`,已有 UpOK 本地状态继续兼容读取。本仓库公开源码与设计,官网和预编译安装包尚未提供。
当前推进到安装验收:独立安装目录和空白本地状态下,复用现有官方登录,已完成资源登记、实际发布、跨进程核对及数据库数据保留;支持 macOS arm64 的源码安装脚本和无云请求的安装检查已提供。真正的新用户 OAuth、独立外部试用仍未完成。正式 Free 验证因当前测试账号仍是 Trial 暂停,外部试用仍待独立验证。[验收记录](validation/results/upok-install-report.json)
@@ -144,3 +144,11 @@ Terraform / OpenTofu 可用于适合声明式管理的资源;不预先要求
免费是已确认的默认费用约束,兼容性与迁移性也是重要选择依据;不能为了得到免费目标而静默改写语言、数据库引擎或业务语义。若当前项目没有满足约束的组合,应明确说明并让用户选择调整范围或主动选择付费路径。
内部版已选择 Go 标准库程序、CLI 接入 Agent、内嵌网页及本地操作记录;公开安装包和更多接入范围继续按实际验收推进。本地样例、云端实际验收与内部版验收分别记录,当前个人云测试资源保留用于后续验证。
+
+## 本地密钥存储决策(2026-09-17 更新)
+
+用户选择优先采用简单的本地文件方案。业务密钥单独放在私有状态目录的 `secrets/项目名.json` 中,普通配置、CLI 输出和默认网页响应不包含密钥值。macOS/Linux 通过目录 0700、文件 0600 限制其他普通用户访问,密钥仍是明文,不能防止当前用户下有读取权限的程序。原钥匙串实现退出首版依赖;Windows ACL 和文件锁需另外适配并验收。存储迁移保留所有操作标记及未决写入状态。
+
+## Vercel 发布验收(2026-09-17)
+
+已有 Vercel Hobby 项目与 Neon Free 已通过 Ship CLI 的两轮源码发布、更新、HTTP/PostgreSQL 读写、数据保留和日志检查。普通部署保留平台现有 Secret,不要求读取或重写密码;数据库配置不可读时明确显示未核验。历史 Secret 写入在用户确认后按“经诊断未生效”归档,原字段和证据保留,没有重发。真实业务 Secret 元数据保持不变。[验收记录](validation/results/ship-vercel-acceptance.json)
diff --git a/README.md b/README.md
index 1a49077..d0dc45f 100644
--- a/README.md
+++ b/README.md
@@ -4,20 +4,22 @@ Local deployment management for your apps, your cloud accounts, and your coding
Ship 在本地运行,让已有编码 Agent 通过 CLI 部署、检查和维护应用。网页提供应用列表、日志和发布入口,应用与数据库运行在用户自己的云账号中。
-**当前为 Alpha。** 已验证的发布组合是 Railway Trial + Neon Free。正式 Railway Free 和付费账号的发布路径尚未验收,程序会停止这些账号的发布操作。软件采用 MIT 开源;云资源的费用取决于供应商套餐。
+**当前为 Alpha。** 已验证 Railway Trial + Neon Free,以及个人非商业用途的 Vercel Hobby + Neon Free HTTP 容器路径。正式 Railway Free 和付费账号的发布路径尚未验收,程序会停止这些账号的发布操作。软件采用 MIT 开源;云资源的费用与用途限制取决于供应商套餐。
## 已实现
-- 关联已有 Railway 服务与 Neon PostgreSQL,核对资源归属、数据库目标和费用条件。
+- 关联已有 Railway 或 Vercel 项目与 Neon PostgreSQL,核对资源归属和费用条件;数据库连接目标的可核验范围单独显示。
- 从 Dockerfile 项目发布源码,查看状态、日志和应用访问检查。
- 保存本地操作记录,中断后核对原部署;结果未知时阻止重复提交。
- CLI、极简网页和配套 Skill 共用执行逻辑与状态。
-核心操作直接调用用户授权的供应商接口,不依赖作者运营的在线后台。首次创建云资源、数据库迁移、无人值守维护和更多供应商尚未实现。
+核心操作直接调用用户授权的供应商接口,不依赖作者运营的在线后台。首次创建云资源、数据库迁移、无人值守维护和其他供应商尚未实现。
+
+本地记录默认保存在 `~/.ship`,用户主动保存的业务密钥单独以受限权限的明文文件存放。Vercel 普通发布沿用平台已有 Secret,无需先导入或重写;不可读的数据库地址明确标为未核验。[Ship 云端验收](validation/results/ship-vercel-acceptance.json)
## 安装与启动
-目前安装入口仅验收 **macOS arm64**,需要 Go 1.24+、Node.js 20.19+ 和 npm。
+目前安装入口仅验收 **macOS arm64**,需要 Go 1.24+、Node.js 和 npm;Vercel 路径使用 Node.js 24 验收。
```sh
git clone https://github.com/unix2dos/ship.git
@@ -50,12 +52,14 @@ cd "$HOME/.local/share/ship"
截至 2026-09-17:
-- 9 组 Go 检查、race 检测、`go vet`、前端语法与安装检查通过。
+- Go 检查、race 检测、`go vet`、前端语法与安装检查通过,包括改名后的旧状态与发布记录兼容检查。
+- 本地文件密钥存储、私有权限、跨进程读取、旧数据迁移与安装后的页面检查通过。[存储验收](validation/results/local-secret-files-report.json)
- 安装后的工具从空白本地状态关联资源、完成真实发布,再由新进程核对;原 PostgreSQL 数据保留。[安装验收记录](validation/results/upok-install-report.json)
- Go、Python、Node、Rust 的 Linux/amd64 容器样例通过 29 组本地检查。[本地结果](validation/RESULTS.md)
- Go 样例完成真实云端部署、更新、自然休眠唤醒与一次配置故障恢复。[云端结果](validation/CLOUD-RESULTS.md)
+- Ship CLI 完成 Vercel Hobby + Neon 的两次真实 Go 容器发布、源码更新、PostgreSQL 读写、数据保留和日志检查,沿用原有 Secret。此前独立实验验证过闲置后访问,用户也确认过手动 Chrome 访问;自动化浏览器拦截未定位。[Vercel 结果](validation/VERCEL-RESULTS.md)
-外部开发者独立复现、新用户 OAuth、正式 Free、其他本机系统和真实云间迁移仍未验收。早期 PORT 配置快照与运行值的差异保留为未决项。公开报告中的云项目、服务和数据库标识替换为占位符,测试时间、结果与源码指纹保留;本机凭证、个人讨论和原始私有记录不随仓库发布。
+外部开发者独立复现、新用户 OAuth、正式 Railway Free、其他本机系统和真实云间迁移仍未验收。早期 PORT 配置快照与运行值的差异保留为未决项。公开报告中的云项目、服务和数据库标识替换为占位符,测试时间、结果与源码指纹保留;本机凭证、个人讨论和原始私有记录不随仓库发布。
在源码目录运行开发检查:
@@ -70,6 +74,8 @@ python3 validation/install-smoke.py "$HOME/.local/share/ship"
## 设计与反馈
+首次外部试用可按 [独立试用清单](docs/FIRST-TRY.md) 进行。
+
- [产品范围](PRODUCT.md) · [领域术语](CONTEXT.md) · [架构决策](docs/adr/)
- [平台与兼容性研究](docs/research/)
diff --git a/cmd/ship/engine.go b/cmd/ship/engine.go
index 529912f..6e68f58 100644
--- a/cmd/ship/engine.go
+++ b/cmd/ship/engine.go
@@ -24,7 +24,19 @@ func validateReferences(p *Project) error {
if !slugPattern.MatchString(p.Name) {
return errors.New("name must use lowercase letters, digits and hyphens")
}
- for _, id := range []string{p.Workspace, p.RailwayProject, p.Service, p.Environment, p.NeonOrg, p.NeonProject, p.NeonEndpoint} {
+ ids := []string{p.NeonOrg, p.NeonProject, p.NeonEndpoint}
+ switch p.Provider {
+ case "", "railway":
+ ids = append(ids, p.Workspace, p.RailwayProject, p.Service, p.Environment)
+ case "vercel":
+ if !strings.HasPrefix(p.VercelTeam, "team_") || !strings.HasPrefix(p.VercelProject, "prj_") {
+ return errors.New("Vercel requires explicit team and project IDs")
+ }
+ ids = append(ids, p.VercelTeam, p.VercelProject)
+ default:
+ return errors.New("unsupported compute provider")
+ }
+ for _, id := range ids {
if !idPattern.MatchString(id) {
return errors.New("all provider resource IDs must be explicit and valid")
}
@@ -49,9 +61,13 @@ func validateProject(p *Project) error {
if err != nil {
return errors.New("source directory does not exist")
}
- info, err := os.Stat(filepath.Join(p.Source, "Dockerfile"))
+ dockerfile := "Dockerfile"
+ if p.Provider == "vercel" {
+ dockerfile = "Dockerfile.vercel"
+ }
+ info, err := os.Stat(filepath.Join(p.Source, dockerfile))
if err != nil || !info.Mode().IsRegular() {
- return errors.New("internal alpha requires a source directory with a Dockerfile")
+ return fmt.Errorf("internal alpha requires a source directory with %s", dockerfile)
}
return nil
}
@@ -74,8 +90,23 @@ func (e *Engine) check(ctx context.Context, p Project) (ApplicationChecks, error
c := ApplicationChecks{At: time.Now().UTC(), Results: checkApplication(ctx, p.URL)}
return c, e.Store.saveChecks(p.Name, c)
}
+
+func (e *Engine) logs(ctx context.Context, p Project) ([]string, error) {
+ known, err := e.Store.knownSecrets(p.Name)
+ if err != nil {
+ return nil, errors.New("local secret-file redaction context is unavailable; logs withheld")
+ }
+ lines, err := e.Providers.logs(ctx, p)
+ if err != nil {
+ return nil, err
+ }
+ for i := range lines {
+ lines[i] = redact(lines[i], known)
+ }
+ return lines, nil
+}
func excluded(name string) bool {
- for _, v := range []string{".git", "node_modules", ".venv", "__pycache__", "target", ".ship", ".upok", ".pdeploy", ".ssh", ".aws", ".netrc", ".npmrc"} {
+ for _, v := range []string{".git", ".vercel", "node_modules", ".venv", "__pycache__", "target", ".ship", ".upok", ".pdeploy", ".ssh", ".aws", ".netrc", ".npmrc"} {
if name == v {
return true
}
@@ -204,6 +235,12 @@ func (e *Engine) executePublish(ctx context.Context, p Project, op *Operation, w
e.record(op, "blocked", err.Error())
return err
}
+ known, err := e.Store.knownSecrets(p.Name)
+ if err != nil {
+ e.record(op, "blocked", "本地密钥文件不可用,无法完成源码密钥检查")
+ return err
+ }
+ pre.Secrets = append(pre.Secrets, known...)
stage, digest, count, err := bundleSource(p.Source, e.Store.Root, pre.Secrets)
if err != nil {
e.record(op, "blocked", err.Error())
@@ -216,13 +253,17 @@ func (e *Engine) executePublish(ctx context.Context, p Project, op *Operation, w
}
op.SourceHash = digest
op.SourceFiles = count
+ if p.Provider == "vercel" {
+ if err = prepareVercelSource(stage, p); err != nil {
+ e.record(op, "blocked", err.Error())
+ return err
+ }
+ }
// Durable intent precedes the only cloud mutation. Unknown outcomes are reconciled by this unique marker.
if err = e.record(op, "submitting", "正在提交源码;结果未确认前不会重复发布"); err != nil {
return err
}
- args := append([]string{"up", stage, "--path-as-root"}, selectors(p)...)
- args = append(args, "--detach", "--json", "--message", op.Marker)
- _, submitErr := e.Providers.call(ctx, "railway", args...)
+ submitErr := e.Providers.submit(ctx, p, stage, op.Marker)
if err = e.record(op, "unknown", "提交结果待核对"); err != nil {
return err
}
@@ -262,7 +303,10 @@ func (e *Engine) reconcileOnce(ctx context.Context, p Project, op *Operation) er
op.DeploymentID = d.ID
op.ProviderState = d.Status
switch d.Status {
- case "SUCCESS":
+ case "SUCCESS", "READY":
+ if p.Provider == "vercel" && !d.AliasAssigned {
+ return e.record(op, "deploying", "构建已完成,等待生产域名关联;不会重复提交")
+ }
c, err := e.check(ctx, p)
if err != nil {
return err
@@ -272,7 +316,7 @@ func (e *Engine) reconcileOnce(ctx context.Context, p Project, op *Operation) er
return e.record(op, "deployed", "平台已完成发布;应用访问检查单独显示")
case "SLEEPING":
return e.record(op, "deployed", "部署已完成;上次核对时服务处于休眠")
- case "FAILED", "CRASHED", "REMOVED", "CANCELED", "CANCELLED", "SKIPPED":
+ case "FAILED", "ERROR", "CRASHED", "REMOVED", "CANCELED", "CANCELLED", "SKIPPED":
return e.record(op, "failed", "平台报告本次部署未运行;请查看日志后决定下一步")
default:
return e.record(op, "deploying", "已找到原部署,等待平台完成;不会创建替代资源")
diff --git a/cmd/ship/main.go b/cmd/ship/main.go
index be8a3f4..cf31d30 100644
--- a/cmd/ship/main.go
+++ b/cmd/ship/main.go
@@ -13,19 +13,23 @@ import (
"syscall"
)
-const help = `ship — internal alpha, existing Railway + Neon project bindings
+const help = `ship — internal alpha, existing Railway or Vercel + Neon project bindings
Global flags (before command):
- --state-dir PATH Private local records (default: config/ship; existing config/upok reused)
+ --state-dir PATH Private local records (default: ~/.ship; existing legacy state reused)
--railway-bin PATH Official Railway CLI binary; no global installation is performed
--neon-bin PATH Official Neon CLI
--neon-config PATH Existing private Neon authentication directory
+ --vercel-bin PATH Official Vercel CLI
+ --vercel-config PATH Existing private Vercel authentication directory
Commands:
- register --name NAME --source DIR --url HTTPS_ORIGIN
+ register --name NAME --source DIR --url HTTPS_ORIGIN [--provider railway|vercel]
--workspace ID --railway-project ID --service ID --environment ID
--neon-org ID --neon-project ID --neon-endpoint ID
[--allow-publish] [--allow-trial]
+ Vercel: use --vercel-team ID --vercel-project ID instead of Railway IDs;
+ --allow-hobby accepts personal noncommercial use of the Hobby plan
list
status NAME Live read-only ownership, account plan and resource checks
check NAME GET /healthz and /readyz; no writes to business data
@@ -33,13 +37,19 @@ Commands:
publish NAME [--detach] Upload a captured source directory to the bound service
reconcile NAME [--wait] Find the existing operation by its deployment marker
history NAME
+ secret save NAME KEY --stdin Save plaintext in an owner-only local file; no cloud changes
+ secret list NAME List saved secret metadata, never values
+ secret check NAME Check local secret-file access; does not verify cloud values
+ secret apply NAME KEY Apply a locally saved Secret to bound Vercel production
+ secret reconcile NAME KEY Reconcile an uncertain Secret write; never resend
authorize NAME [--allow-publish=true|false] [--allow-trial=true|false]
serve [--port 0] [--open] Loopback-only local webpage with session authentication
Official CLI login remains a user-owned prerequisite. This alpha does not create,
delete or adopt whole cloud projects, change billing, or migrate databases.
-All non-server command outputs are JSON. State files contain resource references,
-not cloud credentials. Use one explicit project authorization for regular updates.
+All non-server command outputs are JSON. Business secret values are stored separately
+in private local files and never printed. Official CLI login credentials stay with
+the official tools. Use one explicit project authorization for regular updates.
`
func resolveTool(explicit, envName, legacyEnvName, name, relative string) string {
@@ -56,7 +66,7 @@ func resolveTool(explicit, envName, legacyEnvName, name, relative string) string
binary = real
}
for _, base := range []string{filepath.Dir(binary), filepath.Dir(filepath.Dir(binary))} {
- for _, directory := range []string{"tools", filepath.Join("validation", "cloud-tools")} {
+ for _, directory := range []string{"tools", filepath.Join("validation", "cloud-tools"), filepath.Join("validation", "vercel-tools")} {
p := filepath.Join(base, directory, "node_modules", relative)
if info, e := os.Stat(p); e == nil && !info.IsDir() {
return p
@@ -69,20 +79,21 @@ func resolveTool(explicit, envName, legacyEnvName, name, relative string) string
return ""
}
-func defaultStateDir(base string) string {
- for _, name := range []string{"ship", "upok"} {
- path := filepath.Join(base, name)
+func defaultStateDir(home, base string) string {
+ for _, path := range []string{filepath.Join(home, ".ship"), filepath.Join(base, "ship"), filepath.Join(base, "upok")} {
if _, err := os.Lstat(path); !os.IsNotExist(err) {
return path
}
}
- return filepath.Join(base, "ship")
+ return filepath.Join(home, ".ship")
}
type Settings struct {
- Railway string `json:"railway_bin"`
- Neon string `json:"neon_bin"`
- NeonConfig string `json:"neon_config"`
+ Railway string `json:"railway_bin"`
+ Neon string `json:"neon_bin"`
+ NeonConfig string `json:"neon_config"`
+ Vercel string `json:"vercel_bin,omitempty"`
+ VercelConfig string `json:"vercel_config,omitempty"`
}
func output(v any) { enc := json.NewEncoder(os.Stdout); enc.SetIndent("", " "); enc.Encode(v) }
@@ -107,10 +118,12 @@ func run(ctx context.Context, args []string) error {
return err
}
flags := flag.NewFlagSet("ship", flag.ContinueOnError)
- stateDir := flags.String("state-dir", defaultStateDir(base), "private local state")
+ stateDir := flags.String("state-dir", defaultStateDir(home, base), "private local state")
rwy := flags.String("railway-bin", "", "official Railway CLI")
neon := flags.String("neon-bin", "", "official Neon CLI")
neonConfig := flags.String("neon-config", "", "Neon authentication directory")
+ vercel := flags.String("vercel-bin", "", "official Vercel CLI")
+ vercelConfig := flags.String("vercel-config", "", "Vercel authentication directory")
flags.Usage = func() { fmt.Print(help) }
if err = flags.Parse(args); err != nil {
if errors.Is(err, flag.ErrHelp) {
@@ -140,15 +153,38 @@ func run(ctx context.Context, args []string) error {
if *neonConfig != "" {
settings.NeonConfig = *neonConfig
}
+ if *vercel != "" {
+ settings.Vercel = *vercel
+ }
+ if *vercelConfig != "" {
+ settings.VercelConfig = *vercelConfig
+ }
if settings.NeonConfig == "" {
settings.NeonConfig = filepath.Join(home, ".config", "neon")
}
- providers := &Providers{Railway: resolveTool(settings.Railway, "SHIP_RAILWAY_BIN", "UPOK_RAILWAY_BIN", "railway", "@railway/cli/bin/railway"), Neon: resolveTool(settings.Neon, "SHIP_NEON_BIN", "UPOK_NEON_BIN", "neon", ".bin/neon"), NeonConfig: settings.NeonConfig}
+ providers := &Providers{Railway: resolveTool(settings.Railway, "SHIP_RAILWAY_BIN", "UPOK_RAILWAY_BIN", "railway", "@railway/cli/bin/railway"), Neon: resolveTool(settings.Neon, "SHIP_NEON_BIN", "UPOK_NEON_BIN", "neon", ".bin/neon"), NeonConfig: settings.NeonConfig, Vercel: resolveTool(settings.Vercel, "SHIP_VERCEL_BIN", "UPOK_VERCEL_BIN", "vercel", ".bin/vercel"), VercelConfig: settings.VercelConfig, Store: store}
engine := &Engine{Store: store, Providers: providers}
switch args[0] {
+ case "secret":
+ if len(args) == 4 && (args[1] == "apply" || args[1] == "reconcile") {
+ p, err := store.project(args[2])
+ if err != nil {
+ return errors.New("registered project not found")
+ }
+ info, err := engine.syncVercelSecret(ctx, p, args[3], args[1] == "apply")
+ if err == nil {
+ output(info)
+ }
+ return err
+ }
+ return secretCommand(store, args[1:], os.Stdin)
case "register":
f := flag.NewFlagSet("register", flag.ContinueOnError)
var p Project
+ f.StringVar(&p.Provider, "provider", "railway", "compute provider")
+ f.StringVar(&p.VercelTeam, "vercel-team", "", "Vercel team ID")
+ f.StringVar(&p.VercelProject, "vercel-project", "", "Vercel project ID")
+ f.BoolVar(&p.AllowHobby, "allow-hobby", false, "accept personal noncommercial Hobby conditions")
f.StringVar(&p.Name, "name", "", "local project name")
f.StringVar(&p.Source, "source", "", "source directory")
f.StringVar(&p.URL, "url", "", "application HTTPS origin")
@@ -179,7 +215,7 @@ func run(ctx context.Context, args []string) error {
if err = store.register(p); err != nil {
return err
}
- if err = atomicJSON(filepath.Join(store.Root, "settings.json"), Settings{providers.Railway, providers.Neon, providers.NeonConfig}); err != nil {
+ if err = atomicJSON(filepath.Join(store.Root, "settings.json"), Settings{Railway: providers.Railway, Neon: providers.Neon, NeonConfig: providers.NeonConfig, Vercel: providers.Vercel, VercelConfig: providers.VercelConfig}); err != nil {
return err
}
output(p)
@@ -215,6 +251,7 @@ func run(ctx context.Context, args []string) error {
f := flag.NewFlagSet("authorize", flag.ContinueOnError)
f.BoolVar(&p.AllowPublish, "allow-publish", p.AllowPublish, "authorization for future source updates to this exact service")
f.BoolVar(&p.AllowTrial, "allow-trial", p.AllowTrial, "accept Trial conditions for this binding")
+ f.BoolVar(&p.AllowHobby, "allow-hobby", p.AllowHobby, "accept personal noncommercial Hobby conditions")
if err = f.Parse(args[2:]); err != nil {
return err
}
@@ -257,7 +294,7 @@ func run(ctx context.Context, args []string) error {
if len(args) != 2 {
return errors.New("unexpected logs arguments")
}
- logs, err := providers.logs(ctx, p)
+ logs, err := engine.logs(ctx, p)
if err != nil {
return err
}
diff --git a/cmd/ship/main_test.go b/cmd/ship/main_test.go
index 932af22..0338180 100644
--- a/cmd/ship/main_test.go
+++ b/cmd/ship/main_test.go
@@ -360,8 +360,9 @@ func TestLegacyMarkerSurvivesRename(t *testing.T) {
func TestRenameReusesExistingState(t *testing.T) {
base := t.TempDir()
- shipDir := filepath.Join(base, "ship")
- if defaultStateDir(base) != shipDir {
+ home := filepath.Join(base, "home")
+ shipDir := filepath.Join(home, ".ship")
+ if defaultStateDir(home, base) != shipDir {
t.Fatal("fresh installation did not select Ship state")
}
legacy, err := newStore(filepath.Join(base, "upok"))
@@ -372,7 +373,7 @@ func TestRenameReusesExistingState(t *testing.T) {
if err = legacy.register(p); err != nil {
t.Fatal(err)
}
- reopened, err := newStore(defaultStateDir(base))
+ reopened, err := newStore(defaultStateDir(home, base))
if err != nil {
t.Fatal(err)
}
@@ -386,7 +387,7 @@ func TestRenameReusesExistingState(t *testing.T) {
if _, err = newStore(shipDir); err != nil {
t.Fatal(err)
}
- if defaultStateDir(base) != shipDir {
+ if defaultStateDir(home, base) != shipDir {
t.Fatal("existing Ship state was replaced with legacy state")
}
}
diff --git a/cmd/ship/provider.go b/cmd/ship/provider.go
index 14dd790..f83a159 100644
--- a/cmd/ship/provider.go
+++ b/cmd/ship/provider.go
@@ -17,17 +17,49 @@ import (
)
type Providers struct {
- Railway string
- Neon string
- NeonConfig string
+ Railway string
+ Neon string
+ NeonConfig string
+ Vercel string
+ VercelConfig string
+ Store *Store
// The command seam lets tests verify cloud arguments and unknown outcomes without real mutations.
- Run func(context.Context, string, []string) ([]byte, error)
+ Run func(context.Context, string, []string) ([]byte, error)
+ RunInput func(context.Context, string, []string, []byte) ([]byte, error)
}
type limitedBuffer struct {
bytes.Buffer
exceeded bool
}
+type providerCommandError struct {
+ Tool, Code string
+ Rejected bool
+}
+
+func (e *providerCommandError) Error() string {
+ if e.Rejected {
+ return fmt.Sprintf("%s request was rejected (%s); no automatic retry", e.Tool, e.Code)
+ }
+ return fmt.Sprintf("%s request failed (%s); cloud outcome is not confirmed, no automatic retry", e.Tool, e.Code)
+}
+
+func safeProviderError(tool string, data, stderr []byte) error {
+ if tool == "vercel" && strings.Contains(string(stderr), "Error: You cannot change the key of a Sensitive Environment Variable. (400)") {
+ return &providerCommandError{Tool: tool, Code: "sensitive_key_immutable", Rejected: true}
+ }
+ var response struct {
+ Error struct {
+ Code string `json:"code"`
+ } `json:"error"`
+ }
+ code := "cli_error_or_timeout"
+ if json.Unmarshal(data, &response) == nil && regexp.MustCompile(`^[a-zA-Z0-9_-]{1,64}$`).MatchString(response.Error.Code) {
+ code = response.Error.Code
+ }
+ return &providerCommandError{Tool: tool, Code: code}
+}
+
func (b *limitedBuffer) Write(p []byte) (int, error) {
n := len(p)
room := (2 << 20) - b.Len()
@@ -43,41 +75,53 @@ func cleanEnv() []string {
for _, v := range os.Environ() {
k, _, _ := strings.Cut(v, "=")
switch k {
- case "RAILWAY_TOKEN", "RAILWAY_API_TOKEN", "NEON_API_KEY", "NEON_PROFILE":
+ case "RAILWAY_TOKEN", "RAILWAY_API_TOKEN", "NEON_API_KEY", "NEON_PROFILE", "VERCEL_TOKEN", "VERCEL_ORG_ID", "VERCEL_PROJECT_ID", "VERCEL_TELEMETRY_DISABLED", "NO_UPDATE_NOTIFIER":
continue
}
result = append(result, v)
}
- return result
+ return append(result, "VERCEL_TELEMETRY_DISABLED=1", "NO_UPDATE_NOTIFIER=1")
}
func (v *Providers) call(ctx context.Context, tool string, args ...string) ([]byte, error) {
+ return v.callInput(ctx, tool, nil, args...)
+}
+func (v *Providers) callInput(ctx context.Context, tool string, input []byte, args ...string) ([]byte, error) {
if tool == "neon" {
args = append(args, "--config-dir", v.NeonConfig, "--no-analytics", "--output", "json")
}
- if v.Run != nil {
+ if v.RunInput != nil {
+ return v.RunInput(ctx, tool, args, input)
+ }
+ if v.Run != nil && input == nil {
return v.Run(ctx, tool, args)
}
bin := v.Railway
if tool == "neon" {
bin = v.Neon
}
+ if tool == "vercel" {
+ bin = v.Vercel
+ }
if bin == "" {
return nil, fmt.Errorf("%s CLI is not configured", tool)
}
timeout := 40 * time.Second
- if tool == "railway" && len(args) > 0 && args[0] == "up" {
+ if len(args) > 0 && ((tool == "railway" && args[0] == "up") || (tool == "vercel" && args[0] == "deploy")) {
timeout = 120 * time.Second
}
ctx, cancel := context.WithTimeout(ctx, timeout)
defer cancel()
cmd := exec.CommandContext(ctx, bin, args...)
cmd.Env = cleanEnv()
+ if input != nil {
+ cmd.Stdin = bytes.NewReader(input)
+ }
cmd.WaitDelay = 2 * time.Second
var stdout, stderr limitedBuffer
cmd.Stdout = &stdout
cmd.Stderr = &stderr
if err := cmd.Run(); err != nil {
- return nil, fmt.Errorf("%s request failed or timed out; no automatic retry", tool)
+ return nil, safeProviderError(tool, stdout.Bytes(), stderr.Bytes())
}
if stdout.exceeded {
return nil, errors.New("provider output exceeded the size limit")
@@ -119,14 +163,18 @@ func (v *Providers) graph(ctx context.Context, q string, vars any, out any) erro
}
type Deployment struct {
- ID string `json:"id"`
- Status string `json:"status"`
- Meta struct {
+ ID string `json:"id"`
+ Status string `json:"status"`
+ AliasAssigned bool `json:"alias_assigned,omitempty"`
+ Meta struct {
Message string `json:"cliMessage"`
} `json:"meta"`
}
func (v *Providers) deployments(ctx context.Context, p Project) ([]Deployment, error) {
+ if p.Provider == "vercel" {
+ return v.vercelDeployments(ctx, p)
+ }
var d []Deployment
args := append([]string{"deployment", "list"}, selectors(p)...)
args = append(args, "--limit", "100", "--json")
@@ -134,6 +182,9 @@ func (v *Providers) deployments(ctx context.Context, p Project) ([]Deployment, e
return d, err
}
func (v *Providers) variables(ctx context.Context, p Project) (map[string]string, error) {
+ if p.Provider == "vercel" {
+ return v.vercelVariables(ctx, p)
+ }
var raw map[string]*string
args := append([]string{"variable", "list"}, selectors(p)...)
args = append(args, "--json")
@@ -155,7 +206,10 @@ type preflight struct {
}
func (v *Providers) inspect(ctx context.Context, p Project) (preflight, error) {
- result := preflight{Observation: Observation{At: time.Now().UTC(), RailwayPlan: "Unknown", NeonPlan: "Unknown"}}
+ if p.Provider == "vercel" {
+ return v.inspectVercel(ctx, p)
+ }
+ result := preflight{Observation: Observation{At: time.Now().UTC(), Provider: "railway", RailwayPlan: "Unknown", NeonPlan: "Unknown"}}
var account struct {
Project struct {
ID string `json:"id"`
@@ -210,6 +264,7 @@ func (v *Providers) inspect(ctx context.Context, p Project) (preflight, error) {
} else {
result.Observation.RailwayPlan = "Paid or unverified"
}
+ result.Observation.ComputePlan = result.Observation.RailwayPlan
var live struct {
ID string `json:"id"`
Status string `json:"status"`
@@ -225,44 +280,12 @@ func (v *Providers) inspect(ctx context.Context, p Project) (preflight, error) {
}
result.Observation.ServiceState = live.Status
result.Observation.DeploymentID = live.DeploymentID
- var project struct {
- Project struct {
- ID string `json:"id"`
- OrgID string `json:"org_id"`
- } `json:"project"`
- }
- if err := v.decode(ctx, "neon", &project, "api", "/projects/"+p.NeonProject, "--method", "GET"); err != nil {
- return result, err
- }
- if project.Project.ID != p.NeonProject || project.Project.OrgID != p.NeonOrg {
- return result, errors.New("Neon project ownership mismatch")
- }
- var orgs []struct {
- ID string `json:"id"`
- Plan string `json:"plan"`
- }
- if err := v.decode(ctx, "neon", &orgs, "orgs", "list"); err != nil {
- return result, err
- }
- for _, o := range orgs {
- if o.ID == p.NeonOrg {
- result.Observation.NeonPlan = o.Plan
- }
- }
- var endpoint struct {
- Endpoint struct {
- ID string `json:"id"`
- Host string `json:"host"`
- State string `json:"current_state"`
- } `json:"endpoint"`
- }
- if err := v.decode(ctx, "neon", &endpoint, "api", "/projects/"+p.NeonProject+"/endpoints/"+p.NeonEndpoint, "--method", "GET"); err != nil {
+ neon, host, err := v.inspectNeon(ctx, p)
+ result.Observation.NeonPlan = neon.NeonPlan
+ result.Observation.DatabaseState = neon.DatabaseState
+ if err != nil {
return result, err
}
- if endpoint.Endpoint.ID != p.NeonEndpoint || endpoint.Endpoint.Host == "" {
- return result, errors.New("Neon endpoint identity mismatch")
- }
- result.Observation.DatabaseState = endpoint.Endpoint.State
vars, err := v.variables(ctx, p)
if err != nil {
return result, err
@@ -271,7 +294,6 @@ func (v *Providers) inspect(ctx context.Context, p Project) (preflight, error) {
if err != nil || (dsn.Scheme != "postgres" && dsn.Scheme != "postgresql") {
return result, errors.New("DATABASE_URL is missing or invalid; alpha supports the validated PostgreSQL contract")
}
- host := endpoint.Endpoint.Host
parts := strings.SplitN(host, ".", 2)
pooler := ""
if len(parts) == 2 {
@@ -280,6 +302,7 @@ func (v *Providers) inspect(ctx context.Context, p Project) (preflight, error) {
if dsn.Hostname() != host && dsn.Hostname() != pooler {
return result, errors.New("application DATABASE_URL does not match the registered Neon endpoint")
}
+ result.Observation.DatabaseBinding = "provider_value_matches_endpoint"
result.Secrets = secretValues(vars)
switch {
case *c.Subscribed || string(c.Payment) != "null":
@@ -329,6 +352,9 @@ func redact(s string, secrets []string) string {
return inlineSecret.ReplaceAllString(s, "[REDACTED]")
}
func (v *Providers) logs(ctx context.Context, p Project) ([]string, error) {
+ if p.Provider == "vercel" {
+ return v.vercelLogs(ctx, p)
+ }
vars, err := v.variables(ctx, p)
if err != nil {
return nil, errors.New("cannot obtain redaction context; logs withheld")
@@ -382,3 +408,46 @@ func checkApplication(ctx context.Context, base string) []Check {
}
return results
}
+
+func (v *Providers) inspectNeon(ctx context.Context, p Project) (Observation, string, error) {
+ observation := Observation{NeonPlan: "Unknown"}
+ var project struct {
+ Project struct {
+ ID string `json:"id"`
+ OrgID string `json:"org_id"`
+ } `json:"project"`
+ }
+ if err := v.decode(ctx, "neon", &project, "api", "/projects/"+p.NeonProject, "--method", "GET"); err != nil {
+ return observation, "", err
+ }
+ if project.Project.ID != p.NeonProject || project.Project.OrgID != p.NeonOrg {
+ return observation, "", errors.New("Neon project ownership mismatch")
+ }
+ var orgs []struct {
+ ID string `json:"id"`
+ Plan string `json:"plan"`
+ }
+ if err := v.decode(ctx, "neon", &orgs, "orgs", "list"); err != nil {
+ return observation, "", err
+ }
+ for _, o := range orgs {
+ if o.ID == p.NeonOrg {
+ observation.NeonPlan = o.Plan
+ }
+ }
+ var endpoint struct {
+ Endpoint struct {
+ ID string `json:"id"`
+ Host string `json:"host"`
+ State string `json:"current_state"`
+ } `json:"endpoint"`
+ }
+ if err := v.decode(ctx, "neon", &endpoint, "api", "/projects/"+p.NeonProject+"/endpoints/"+p.NeonEndpoint, "--method", "GET"); err != nil {
+ return observation, "", err
+ }
+ if endpoint.Endpoint.ID != p.NeonEndpoint || endpoint.Endpoint.Host == "" {
+ return observation, "", errors.New("Neon endpoint identity mismatch")
+ }
+ observation.DatabaseState = endpoint.Endpoint.State
+ return observation, endpoint.Endpoint.Host, nil
+}
diff --git a/cmd/ship/secrets.go b/cmd/ship/secrets.go
new file mode 100644
index 0000000..9316a66
--- /dev/null
+++ b/cmd/ship/secrets.go
@@ -0,0 +1,214 @@
+package main
+
+import (
+ "crypto/rand"
+ "encoding/hex"
+ "errors"
+ "io"
+ "os"
+ "path/filepath"
+ "regexp"
+ "sort"
+ "time"
+ "unicode/utf8"
+)
+
+const maxSecretSize = 16 << 10
+
+var secretKeyPattern = regexp.MustCompile(`^[A-Z_][A-Z0-9_]{0,127}$`)
+var secretRefPattern = regexp.MustCompile(`^key-[a-f0-9]{32}$`)
+
+type SecretVersion struct {
+ Ref string `json:"ref"`
+ Value string `json:"value,omitempty"`
+ SavedAt time.Time `json:"saved_at"`
+ SyncState string `json:"sync_state,omitempty"`
+ RemoteID string `json:"remote_id,omitempty"`
+ RemoteUpdatedAt int64 `json:"remote_updated_at,omitempty"`
+ Marker string `json:"marker,omitempty"`
+ WriteErrorCode string `json:"write_error_code,omitempty"`
+ ResolvedAt *time.Time `json:"resolved_at,omitempty"`
+ Resolution string `json:"resolution,omitempty"`
+ ResolutionEvidence string `json:"resolution_evidence,omitempty"`
+}
+
+type SecretInfo struct {
+ Key string `json:"key"`
+ Versions int `json:"saved_versions"`
+ SavedAt time.Time `json:"saved_at"`
+ Status string `json:"status"`
+}
+
+func (s *Store) secretRecords(name string) (map[string][]SecretVersion, error) {
+ if !slugPattern.MatchString(name) {
+ return nil, errors.New("invalid project name")
+ }
+ refs := map[string][]SecretVersion{}
+ path := filepath.Join(s.Root, "secrets", name+".json")
+ info, err := os.Lstat(path)
+ if os.IsNotExist(err) {
+ return refs, nil
+ }
+ if err != nil || !info.Mode().IsRegular() || info.Mode().Perm()&0077 != 0 {
+ return nil, errors.New("secret file must be a regular private file accessible only to its owner")
+ }
+ err = readJSON(path, &refs)
+ if err != nil || refs == nil {
+ return nil, errors.New("local secret records could not be read")
+ }
+ for key, versions := range refs {
+ if !secretKeyPattern.MatchString(key) || len(versions) == 0 {
+ return nil, errors.New("invalid local secret reference")
+ }
+ for _, version := range versions {
+ if !secretRefPattern.MatchString(version.Ref) || version.SavedAt.IsZero() || len(version.Value) > maxSecretSize {
+ return nil, errors.New("invalid local secret reference")
+ }
+ }
+ }
+ return refs, nil
+}
+
+func (s *Store) saveSecret(name, key string, value []byte) (SecretInfo, error) {
+ var info SecretInfo
+ if !secretKeyPattern.MatchString(key) || len(value) == 0 || len(value) > maxSecretSize || !utf8.Valid(value) {
+ return info, errors.New("secret requires an uppercase variable name and 1–16384 bytes of UTF-8 text")
+ }
+ if _, err := s.project(name); err != nil {
+ return info, errors.New("registered project not found")
+ }
+ unlock, err := s.lock(name)
+ if err != nil {
+ return info, err
+ }
+ defer unlock()
+ refs, err := s.secretRecords(name)
+ if err != nil {
+ return info, err
+ }
+ var id [16]byte
+ if _, err = rand.Read(id[:]); err != nil {
+ return info, err
+ }
+ version := SecretVersion{Ref: "key-" + hex.EncodeToString(id[:]), Value: string(value), SavedAt: time.Now().UTC()}
+ // Retain old versions to redact historical logs after a rotation.
+ refs[key] = append(refs[key], version)
+ if err = atomicJSON(filepath.Join(s.Root, "secrets", name+".json"), refs); err != nil {
+ return info, errors.New("saving the local private secret file failed; no cloud changes were made")
+ }
+ return SecretInfo{key, len(refs[key]), version.SavedAt, "local_only_cloud_unverified"}, nil
+}
+
+func (s *Store) secretInfo(name string) ([]SecretInfo, error) {
+ refs, err := s.secretRecords(name)
+ if err != nil {
+ return nil, err
+ }
+ result := []SecretInfo{}
+ for key, versions := range refs {
+ result = append(result, secretInfoFor(key, versions))
+ }
+ sort.Slice(result, func(i, j int) bool { return result[i].Key < result[j].Key })
+ return result, nil
+}
+
+func secretInfoFor(key string, versions []SecretVersion) SecretInfo {
+ last := versions[len(versions)-1]
+ status := "local_only_cloud_unverified"
+ if last.SyncState == "synced" {
+ status = "last_write_confirmed"
+ }
+ if last.SyncState == "applying" || last.SyncState == "unknown" {
+ status = "write_outcome_unknown"
+ }
+ if last.SyncState == "diagnosed_not_applied" {
+ status = "write_diagnosed_not_applied"
+ }
+ if last.SyncState == "rejected" {
+ status = "write_rejected"
+ }
+ return SecretInfo{key, len(versions), last.SavedAt, status}
+}
+
+func (s *Store) secretValue(name, ref string) ([]byte, error) {
+ if !secretRefPattern.MatchString(ref) {
+ return nil, errors.New("invalid local secret reference")
+ }
+ records, err := s.secretRecords(name)
+ if err != nil {
+ return nil, err
+ }
+ for _, versions := range records {
+ for _, version := range versions {
+ if version.Ref == ref {
+ if version.Value == "" {
+ return nil, errors.New("legacy Secret has no local value; migrate the saved value without rewriting cloud configuration")
+ }
+ return []byte(version.Value), nil
+ }
+ }
+ }
+ return nil, errors.New("local secret value was not found")
+}
+
+// Read every saved version for redaction; a saved value alone is never proof of the current cloud configuration.
+func (s *Store) knownSecrets(name string) ([]string, error) {
+ refs, err := s.secretRecords(name)
+ if err != nil {
+ return nil, err
+ }
+ var values []string
+ for _, versions := range refs {
+ for _, version := range versions {
+ if version.Value == "" {
+ return nil, errors.New("legacy Secret has no local value; migrate it before reading logs or publishing")
+ }
+ // Include explicitly saved values even when their variable name has no secret-like suffix.
+ values = append(values, secretValues(map[string]string{"SECRET": version.Value})...)
+ }
+ }
+ return values, nil
+}
+
+func secretCommand(store *Store, args []string, input io.Reader) error {
+ if len(args) < 2 {
+ return errors.New("use secret save NAME KEY --stdin, secret list NAME, or secret check NAME")
+ }
+ action, name := args[0], args[1]
+ if _, err := store.project(name); err != nil {
+ return errors.New("registered project not found")
+ }
+ switch {
+ case action == "save" && len(args) == 4 && args[3] == "--stdin":
+ if file, ok := input.(*os.File); ok {
+ stat, err := file.Stat()
+ if err != nil || stat.Mode()&os.ModeCharDevice != 0 {
+ return errors.New("pipe the secret or redirect a private file to stdin; terminal input would echo the value")
+ }
+ }
+ value, err := io.ReadAll(io.LimitReader(input, maxSecretSize+1))
+ defer clear(value)
+ if err != nil {
+ return errors.New("secret input could not be read")
+ }
+ info, err := store.saveSecret(name, args[2], value)
+ if err == nil {
+ output(info)
+ }
+ return err
+ case action == "list" && len(args) == 2:
+ info, err := store.secretInfo(name)
+ if err == nil {
+ output(info)
+ }
+ return err
+ case action == "check" && len(args) == 2:
+ values, err := store.knownSecrets(name)
+ if err == nil {
+ output(map[string]any{"local_values_accessible": true, "redaction_value_count": len(values), "cloud_configuration_verified": false})
+ }
+ return err
+ default:
+ return errors.New("invalid secret command; values are accepted only on stdin and never printed")
+ }
+}
diff --git a/cmd/ship/secrets_test.go b/cmd/ship/secrets_test.go
new file mode 100644
index 0000000..7d506fc
--- /dev/null
+++ b/cmd/ship/secrets_test.go
@@ -0,0 +1,198 @@
+package main
+
+import (
+ "bytes"
+ "context"
+ "os"
+ "os/exec"
+ "path/filepath"
+ "strings"
+ "testing"
+)
+
+func TestSavedSecretsProtectLogsAndSourceUploads(t *testing.T) {
+ e, p := fixture(t)
+ if err := e.Store.register(p); err != nil {
+ t.Fatal(err)
+ }
+ if _, err := e.Store.saveSecret(p.Name, "CREDENTIAL", []byte("saved-secret-from-an-old-version")); err != nil {
+ t.Fatal(err)
+ }
+ uploads := 0
+ e.Providers.Run = func(_ context.Context, tool string, args []string) ([]byte, error) {
+ if tool == "railway" && args[0] == "up" {
+ uploads++
+ }
+ if tool == "railway" && args[0] == "logs" {
+ return []byte("saved-secret-from-an-old-version"), nil
+ }
+ return healthyProvider(tool, args)
+ }
+ logs, err := e.logs(context.Background(), p)
+ if err != nil || len(logs) != 1 || logs[0] != "[REDACTED]" {
+ t.Fatal("locally saved secret was exposed in logs")
+ }
+ if err = os.WriteFile(filepath.Join(p.Source, "app.txt"), []byte("saved-secret-from-an-old-version"), 0600); err != nil {
+ t.Fatal(err)
+ }
+ op, unlock, err := e.begin(p)
+ if err != nil {
+ t.Fatal(err)
+ }
+ defer unlock()
+ if e.executePublish(context.Background(), p, op, false) == nil || uploads != 0 || op.State != "blocked" {
+ t.Fatal("source containing a locally saved secret was submitted")
+ }
+}
+
+func TestSecretStorageAndRotationKeepValuesOutOfOrdinaryRecords(t *testing.T) {
+ e, p := fixture(t)
+ if err := e.Store.register(p); err != nil {
+ t.Fatal(err)
+ }
+ for _, value := range []string{"synthetic-old-secret", "synthetic-new-secret"} {
+ info, err := e.Store.saveSecret(p.Name, "APP_CREDENTIAL", []byte(value))
+ if err != nil || info.Status != "local_only_cloud_unverified" {
+ t.Fatalf("local save failed: %v", err)
+ }
+ }
+ reopened, err := newStore(e.Store.Root)
+ if err != nil {
+ t.Fatal(err)
+ }
+ values, err := reopened.knownSecrets(p.Name)
+ if err != nil || redact("synthetic-old-secret synthetic-new-secret", values) != "[REDACTED] [REDACTED]" {
+ t.Fatal("saved versions did not protect historical logs")
+ }
+ info, err := reopened.secretInfo(p.Name)
+ if err != nil || len(info) != 1 || info[0].Versions != 2 || info[0].Status != "local_only_cloud_unverified" {
+ t.Fatal("local save was incorrectly treated as cloud verification")
+ }
+ secretPath := filepath.Join(e.Store.Root, "secrets", p.Name+".json")
+ err = filepath.Walk(e.Store.Root, func(path string, item os.FileInfo, err error) error {
+ if err != nil || item.IsDir() {
+ return err
+ }
+ data, err := os.ReadFile(path)
+ contains := bytes.Contains(data, []byte("synthetic-old-secret")) || bytes.Contains(data, []byte("synthetic-new-secret"))
+ if path == secretPath {
+ if !contains || item.Mode().Perm() != 0600 {
+ t.Fatal("private secret file is missing or has unsafe permissions")
+ }
+ } else if contains {
+ t.Fatal("plaintext secret entered an ordinary project record")
+ }
+ return err
+ })
+ if err != nil {
+ t.Fatal(err)
+ }
+ before, err := os.ReadFile(secretPath)
+ if err != nil {
+ t.Fatal(err)
+ }
+ if err = os.Chmod(secretPath, 0644); err != nil {
+ t.Fatal(err)
+ }
+ if _, err = e.Store.saveSecret(p.Name, "APP_CREDENTIAL", []byte("third-secret")); err == nil {
+ t.Fatal("insecure secret file was accepted")
+ }
+ if _, err = reopened.knownSecrets(p.Name); err == nil {
+ t.Fatal("insecure secret file was read")
+ }
+ after, err := os.ReadFile(secretPath)
+ if err != nil || !bytes.Equal(before, after) {
+ t.Fatal("failed write changed existing secrets")
+ }
+ if err = os.Chmod(secretPath, 0600); err != nil {
+ t.Fatal(err)
+ }
+
+ cmd := exec.Command(os.Args[0], "-test.run=^TestSecretFileChild$")
+ cmd.Env = append(os.Environ(), "SHIP_TEST_SECRET_DIR="+e.Store.Root)
+ output, err := cmd.CombinedOutput()
+ if err != nil {
+ t.Fatalf("separate-process read failed: %v", err)
+ }
+ if bytes.Contains(output, []byte("synthetic-old-secret")) || bytes.Contains(output, []byte("synthetic-new-secret")) {
+ t.Fatal("CLI printed secret values")
+ }
+}
+
+func TestSecretFileChild(t *testing.T) {
+ root := os.Getenv("SHIP_TEST_SECRET_DIR")
+ if root == "" {
+ t.Skip("child of private-file persistence check")
+ }
+ store, err := newStore(root)
+ if err != nil {
+ t.Fatal(err)
+ }
+ values, err := store.knownSecrets("demo")
+ if err != nil || redact("synthetic-new-secret", values) != "[REDACTED]" {
+ t.Fatal("persisted secret could not be read")
+ }
+ for _, action := range []string{"list", "check"} {
+ if err = secretCommand(store, []string{action, "demo"}, nil); err != nil {
+ t.Fatal(err)
+ }
+ }
+}
+
+func TestLegacyMissingValueAndSecretSymlinkAreRejected(t *testing.T) {
+ e, p := fixture(t)
+ if err := e.Store.register(p); err != nil {
+ t.Fatal(err)
+ }
+ if _, err := e.Store.saveSecret(p.Name, "TOKEN", []byte("synthetic-value")); err != nil {
+ t.Fatal(err)
+ }
+ records, err := e.Store.secretRecords(p.Name)
+ if err != nil {
+ t.Fatal(err)
+ }
+ records["TOKEN"][0].Value = ""
+ records["TOKEN"][0].SyncState = "unknown"
+ path := filepath.Join(e.Store.Root, "secrets", p.Name+".json")
+ if err = atomicJSON(path, records); err != nil {
+ t.Fatal(err)
+ }
+ if _, err = e.Store.secretValue(p.Name, records["TOKEN"][0].Ref); err == nil {
+ t.Fatal("missing legacy value was treated as available")
+ }
+ info, err := e.Store.secretInfo(p.Name)
+ if err != nil || info[0].Status != "write_outcome_unknown" {
+ t.Fatal("storage transition erased an unresolved cloud write")
+ }
+ outside := filepath.Join(t.TempDir(), "external.json")
+ if err = os.Rename(path, outside); err != nil {
+ t.Fatal(err)
+ }
+ if err = os.Symlink(outside, path); err != nil {
+ t.Fatal(err)
+ }
+ if _, err = e.Store.secretRecords(p.Name); err == nil {
+ t.Fatal("symlinked secret file was followed")
+ }
+}
+
+func TestSecretInputBoundary(t *testing.T) {
+ e, p := fixture(t)
+ if err := e.Store.register(p); err != nil {
+ t.Fatal(err)
+ }
+ for _, args := range [][]string{
+ {"save", p.Name, "APP_CREDENTIAL", "value-on-command-line"},
+ {"save", p.Name, "../bad", "--stdin"},
+ {"save", "missing", "APP_CREDENTIAL", "--stdin"},
+ } {
+ if secretCommand(e.Store, args, strings.NewReader("dummy-value")) == nil {
+ t.Fatal("invalid secret command accepted")
+ }
+ }
+ for _, value := range []string{"", string([]byte{0xff}), strings.Repeat("x", maxSecretSize+1)} {
+ if secretCommand(e.Store, []string{"save", p.Name, "APP_CREDENTIAL", "--stdin"}, strings.NewReader(value)) == nil {
+ t.Fatal("invalid secret size accepted")
+ }
+ }
+}
diff --git a/cmd/ship/server.go b/cmd/ship/server.go
index 5819fa1..9ec5248 100644
--- a/cmd/ship/server.go
+++ b/cmd/ship/server.go
@@ -154,7 +154,7 @@ func (a *localAPI) ServeHTTP(w http.ResponseWriter, r *http.Request) {
http.Error(w, "method rejected", 405)
return
}
- lines, err := a.engine.Providers.logs(ctx, p)
+ lines, err := a.engine.logs(ctx, p)
if err != nil {
jsonResponse(w, 502, map[string]string{"error": err.Error()})
return
diff --git a/cmd/ship/store.go b/cmd/ship/store.go
index bdc91c6..c57a8d6 100644
--- a/cmd/ship/store.go
+++ b/cmd/ship/store.go
@@ -19,6 +19,10 @@ var idPattern = regexp.MustCompile(`^[a-zA-Z0-9][a-zA-Z0-9_-]{7,99}$`)
type Project struct {
Name string `json:"name"`
+ Provider string `json:"provider,omitempty"`
+ VercelTeam string `json:"vercel_team,omitempty"`
+ VercelProject string `json:"vercel_project,omitempty"`
+ AllowHobby bool `json:"allow_personal_noncommercial_hobby,omitempty"`
Source string `json:"source"`
URL string `json:"url"`
Workspace string `json:"railway_workspace"`
@@ -44,14 +48,17 @@ type ApplicationChecks struct {
Results []Check `json:"results"`
}
type Observation struct {
- At time.Time `json:"at"`
- RailwayPlan string `json:"railway_plan"`
- NeonPlan string `json:"neon_plan"`
- ServiceState string `json:"service_state"`
- DeploymentID string `json:"deployment_id"`
- DatabaseState string `json:"database_state"`
- Eligible bool `json:"eligible"`
- Reason string `json:"reason,omitempty"`
+ At time.Time `json:"at"`
+ Provider string `json:"provider,omitempty"`
+ ComputePlan string `json:"compute_plan,omitempty"`
+ DatabaseBinding string `json:"database_binding,omitempty"`
+ RailwayPlan string `json:"railway_plan"`
+ NeonPlan string `json:"neon_plan"`
+ ServiceState string `json:"service_state"`
+ DeploymentID string `json:"deployment_id"`
+ DatabaseState string `json:"database_state"`
+ Eligible bool `json:"eligible"`
+ Reason string `json:"reason,omitempty"`
}
type Operation struct {
ID string `json:"id"`
@@ -80,7 +87,7 @@ func newStore(root string) (*Store, error) {
if err != nil {
return nil, err
}
- for _, sub := range []string{"", "projects", "operations", "observations", "checks", "locks"} {
+ for _, sub := range []string{"", "projects", "operations", "observations", "checks", "locks", "secrets"} {
p := filepath.Join(root, sub)
if err = os.MkdirAll(p, 0700); err != nil {
return nil, err
diff --git a/cmd/ship/vercel.go b/cmd/ship/vercel.go
new file mode 100644
index 0000000..480939e
--- /dev/null
+++ b/cmd/ship/vercel.go
@@ -0,0 +1,323 @@
+package main
+
+import (
+ "bytes"
+ "context"
+ "encoding/json"
+ "errors"
+ "net/url"
+ "os"
+ "path/filepath"
+ "strings"
+ "time"
+)
+
+type vercelDeployment struct {
+ ID string `json:"id"`
+ UID string `json:"uid"`
+ State string `json:"readyState"`
+ Target string `json:"target"`
+ Alias []string `json:"alias"`
+ AliasAssigned json.RawMessage `json:"aliasAssigned"`
+ Meta map[string]string `json:"meta"`
+}
+
+type vercelProject struct {
+ ID string `json:"id"`
+ AccountID string `json:"accountId"`
+ Targets map[string]vercelDeployment `json:"targets"`
+}
+
+type vercelEnv struct {
+ ID string `json:"id"`
+ Key string `json:"key"`
+ Value string `json:"value"`
+ Type string `json:"type"`
+ Visibility string `json:"visibility"`
+ Target []string `json:"target"`
+ UpdatedAt int64 `json:"updatedAt"`
+ Comment string `json:"comment"`
+ GitBranch string `json:"gitBranch"`
+ ConfigurationID string `json:"configurationId"`
+ CustomEnvironmentIDs []string `json:"customEnvironmentIds"`
+}
+
+func (item vercelEnv) production() bool {
+ for _, target := range item.Target {
+ if target == "production" {
+ return true
+ }
+ }
+ return false
+}
+
+func (v *Providers) vercelCall(ctx context.Context, p Project, input []byte, args ...string) ([]byte, error) {
+ if v.VercelConfig == "" {
+ return nil, errors.New("supply --vercel-config for the official CLI authentication directory")
+ }
+ args = append(args, "--scope", p.VercelTeam, "--global-config", v.VercelConfig, "--non-interactive")
+ return v.callInput(ctx, "vercel", input, args...)
+}
+
+func (v *Providers) vercelAPI(ctx context.Context, p Project, path, method string, input []byte, out any) error {
+ args := []string{"api", path, "--method", method, "--raw"}
+ if input != nil {
+ args = append(args, "--input", "-")
+ }
+ data, err := v.vercelCall(ctx, p, input, args...)
+ if err != nil {
+ return err
+ }
+ if out != nil && json.Unmarshal(data, out) != nil {
+ return errors.New("Vercel returned invalid JSON")
+ }
+ return nil
+}
+
+func (v *Providers) vercelAccount(ctx context.Context, p Project) (vercelProject, string, error) {
+ var project vercelProject
+ var team struct {
+ ID string `json:"id"`
+ Billing struct {
+ Plan string `json:"plan"`
+ } `json:"billing"`
+ Membership struct {
+ Role string `json:"role"`
+ } `json:"membership"`
+ }
+ if err := v.vercelAPI(ctx, p, "/v2/teams/"+p.VercelTeam, "GET", nil, &team); err != nil {
+ return project, "", err
+ }
+ if team.ID != p.VercelTeam || team.Membership.Role != "OWNER" {
+ return project, "", errors.New("Vercel team ownership could not be verified")
+ }
+ if err := v.vercelAPI(ctx, p, "/v9/projects/"+p.VercelProject, "GET", nil, &project); err != nil {
+ return project, team.Billing.Plan, err
+ }
+ if project.ID != p.VercelProject || project.AccountID != p.VercelTeam {
+ return project, team.Billing.Plan, errors.New("Vercel project ownership mismatch")
+ }
+ return project, team.Billing.Plan, nil
+}
+
+func (v *Providers) vercelEnvs(ctx context.Context, p Project) ([]vercelEnv, error) {
+ var response struct {
+ Envs []vercelEnv `json:"envs"`
+ }
+ if err := v.vercelAPI(ctx, p, "/v10/projects/"+p.VercelProject+"/env", "GET", nil, &response); err != nil {
+ return nil, err
+ }
+ if response.Envs == nil {
+ return nil, errors.New("Vercel environment metadata is unavailable")
+ }
+ return response.Envs, nil
+}
+
+func (v *Providers) vercelVariables(ctx context.Context, p Project) (map[string]string, error) {
+ if v.Store == nil {
+ return nil, errors.New("local secret store is unavailable")
+ }
+ envs, err := v.vercelEnvs(ctx, p)
+ if err != nil {
+ return nil, err
+ }
+ refs, err := v.Store.secretRecords(p.Name)
+ if err != nil {
+ return nil, err
+ }
+ for _, versions := range refs {
+ for _, version := range versions {
+ if version.SyncState == "unknown" || version.SyncState == "applying" {
+ return nil, errors.New("a Secret write is unresolved; reconcile it before publishing or reading logs")
+ }
+ }
+ }
+ values := map[string]string{}
+ for _, item := range envs {
+ if !item.production() {
+ continue
+ }
+ if _, exists := values[item.Key]; exists {
+ return nil, errors.New("ambiguous production environment variables")
+ }
+ if item.Type == "sensitive" || item.Visibility == "secret" {
+ // Presence is observable even when the provider keeps the value write-only.
+ // Source deployment retains that configuration; a local cache is optional.
+ values[item.Key] = ""
+ versions := refs[item.Key]
+ if len(versions) == 0 {
+ continue
+ }
+ last := versions[len(versions)-1]
+ if last.SyncState != "synced" || last.RemoteID != item.ID || last.RemoteUpdatedAt != item.UpdatedAt || last.Marker != item.Comment || item.UpdatedAt <= 0 {
+ continue
+ }
+ value, err := v.Store.secretValue(p.Name, last.Ref)
+ if err != nil {
+ return nil, err
+ }
+ values[item.Key] = string(value)
+ clear(value)
+ } else {
+ if item.Key == "DATABASE_URL" {
+ return nil, errors.New("Vercel DATABASE_URL must remain a Secret")
+ }
+ values[item.Key] = item.Value
+ }
+ }
+ return values, nil
+}
+
+func databaseEndpointMatches(raw, host string) bool {
+ dsn, err := url.Parse(raw)
+ if err != nil || (dsn.Scheme != "postgres" && dsn.Scheme != "postgresql") || host == "" {
+ return false
+ }
+ parts := strings.SplitN(host, ".", 2)
+ pooler := ""
+ if len(parts) == 2 {
+ pooler = parts[0] + "-pooler." + parts[1]
+ }
+ return dsn.Hostname() == host || dsn.Hostname() == pooler
+}
+
+func (v *Providers) inspectVercel(ctx context.Context, p Project) (preflight, error) {
+ result := preflight{Observation: Observation{At: time.Now().UTC(), Provider: "vercel", ComputePlan: "Unknown", NeonPlan: "Unknown", DatabaseBinding: "unverified"}}
+ project, plan, err := v.vercelAccount(ctx, p)
+ if err != nil {
+ return result, err
+ }
+ result.Observation.ComputePlan = plan
+ production := project.Targets["production"]
+ result.Observation.ServiceState = production.State
+ result.Observation.DeploymentID = production.ID
+ address, _ := url.Parse(p.URL)
+ belongs := false
+ for _, alias := range production.Alias {
+ belongs = belongs || alias == address.Host
+ }
+ if !belongs {
+ return result, errors.New("application URL is not an alias of the bound Vercel production project")
+ }
+ neon, host, err := v.inspectNeon(ctx, p)
+ if err != nil {
+ return result, err
+ }
+ result.Observation.NeonPlan = neon.NeonPlan
+ result.Observation.DatabaseState = neon.DatabaseState
+ if plan != "hobby" {
+ result.Observation.Reason = "此 Vercel 路径只支持已核对的 Hobby,停止付费或未知计划的发布"
+ return result, nil
+ }
+ if !p.AllowHobby {
+ result.Observation.Reason = "需要明确接受 Hobby 个人非商业用途条件"
+ return result, nil
+ }
+ if neon.NeonPlan != "free" {
+ result.Observation.Reason = "数据库组织不是已验证的 Free 计划"
+ return result, nil
+ }
+ vars, err := v.vercelVariables(ctx, p)
+ if err != nil {
+ result.Observation.Reason = err.Error()
+ return result, nil
+ }
+ databaseURL, configured := vars["DATABASE_URL"]
+ if !configured {
+ result.Observation.Reason = "Vercel production 未配置 DATABASE_URL"
+ return result, nil
+ }
+ if databaseURL != "" && !databaseEndpointMatches(databaseURL, host) {
+ result.Observation.Reason = "本地保存的 DATABASE_URL 与登记的 Neon 连接端点不匹配"
+ return result, nil
+ }
+ result.Observation.DatabaseBinding = "provider_secret_retained_not_readable"
+ if databaseURL != "" {
+ result.Observation.DatabaseBinding = "last_write_and_metadata_match_not_runtime_identity"
+ }
+ result.Secrets = secretValues(vars)
+ result.Observation.Eligible = true
+ return result, nil
+}
+
+func aliasAssigned(value json.RawMessage) bool {
+ if bytes.Equal(value, []byte("true")) {
+ return true
+ }
+ var timestamp int64
+ return json.Unmarshal(value, ×tamp) == nil && timestamp > 0
+}
+
+func (v *Providers) vercelDeployments(ctx context.Context, p Project) ([]Deployment, error) {
+ var response struct {
+ Deployments []vercelDeployment `json:"deployments"`
+ }
+ if err := v.vercelAPI(ctx, p, "/v7/deployments?projectId="+url.QueryEscape(p.VercelProject)+"&limit=100&target=production", "GET", nil, &response); err != nil {
+ return nil, err
+ }
+ result := []Deployment{}
+ for _, item := range response.Deployments {
+ if item.Target != "production" {
+ continue
+ }
+ d := Deployment{ID: item.UID, Status: item.State, AliasAssigned: aliasAssigned(item.AliasAssigned)}
+ d.Meta.Message = item.Meta["ship_operation"]
+ result = append(result, d)
+ }
+ return result, nil
+}
+
+func (v *Providers) submit(ctx context.Context, p Project, stage, marker string) error {
+ if p.Provider == "vercel" {
+ _, err := v.vercelCall(ctx, p, nil, "deploy", stage, "--project", p.VercelProject, "--prod", "--yes", "--json", "--no-wait", "--meta", "ship_operation="+marker)
+ return err
+ }
+ args := append([]string{"up", stage, "--path-as-root"}, selectors(p)...)
+ args = append(args, "--detach", "--json", "--message", marker)
+ _, err := v.call(ctx, "railway", args...)
+ return err
+}
+
+func prepareVercelSource(stage string, p Project) error {
+ var config map[string]json.RawMessage
+ if err := readJSON(filepath.Join(stage, "vercel.json"), &config); err != nil {
+ return errors.New("Vercel container source requires vercel.json with framework set to container")
+ }
+ var framework string
+ if json.Unmarshal(config["framework"], &framework) != nil || framework != "container" {
+ return errors.New("Vercel framework must be container")
+ }
+ // Keep the alpha's deployment behavior reviewable; advanced project configuration needs separate validation.
+ if len(config) != 1 {
+ return errors.New("this alpha accepts only the container framework field in vercel.json")
+ }
+ if _, err := os.Stat(filepath.Join(stage, "Dockerfile.vercel")); err != nil {
+ return errors.New("Dockerfile.vercel is missing")
+ }
+ if err := os.Mkdir(filepath.Join(stage, ".vercel"), 0700); err != nil {
+ return err
+ }
+ // Provider link metadata is generated locally and excluded by Vercel from the upload.
+ return atomicJSON(filepath.Join(stage, ".vercel", "project.json"), map[string]string{"projectId": p.VercelProject, "orgId": p.VercelTeam})
+}
+
+func (v *Providers) vercelLogs(ctx context.Context, p Project) ([]string, error) {
+ if _, _, err := v.vercelAccount(ctx, p); err != nil {
+ return nil, err
+ }
+ vars, err := v.vercelVariables(ctx, p)
+ if err != nil {
+ return nil, errors.New("Vercel Secret metadata could not be checked or a write is unresolved; logs withheld")
+ }
+ data, err := v.vercelCall(ctx, p, nil, "logs", "--project", p.VercelProject, "--environment", "production", "--limit", "40", "--json", "--no-follow")
+ if err != nil {
+ return nil, err
+ }
+ lines := []string{}
+ for _, line := range strings.Split(string(data), "\n") {
+ if strings.TrimSpace(line) != "" {
+ lines = append(lines, redact(line, secretValues(vars)))
+ }
+ }
+ return lines, nil
+}
diff --git a/cmd/ship/vercel_secrets.go b/cmd/ship/vercel_secrets.go
new file mode 100644
index 0000000..7ba571a
--- /dev/null
+++ b/cmd/ship/vercel_secrets.go
@@ -0,0 +1,181 @@
+package main
+
+import (
+ "bytes"
+ "context"
+ "encoding/json"
+ "errors"
+ "net/url"
+ "path/filepath"
+ "unicode/utf8"
+)
+
+func productionSecret(envs []vercelEnv, key string) (*vercelEnv, error) {
+ var found *vercelEnv
+ for i := range envs {
+ item := &envs[i]
+ if item.Key != key || !item.production() {
+ continue
+ }
+ if found != nil || len(item.Target) != 1 || item.GitBranch != "" || len(item.CustomEnvironmentIDs) > 0 || item.ConfigurationID != "" {
+ return nil, errors.New("Secret is ambiguous, shared across environments, or integration-managed; review it in Vercel before proceeding")
+ }
+ if !idPattern.MatchString(item.ID) || item.UpdatedAt <= 0 {
+ return nil, errors.New("Vercel Secret identity or version is unavailable")
+ }
+ found = item
+ }
+ return found, nil
+}
+
+func (e *Engine) syncVercelSecret(ctx context.Context, p Project, key string, apply bool) (SecretInfo, error) {
+ var empty SecretInfo
+ if p.Provider != "vercel" || !secretKeyPattern.MatchString(key) {
+ return empty, errors.New("Secret sync requires a Vercel binding and an uppercase variable name")
+ }
+ unlock, err := e.Store.lock(p.Name)
+ if err != nil {
+ return empty, err
+ }
+ defer unlock()
+ refs, err := e.Store.secretRecords(p.Name)
+ if err != nil {
+ return empty, err
+ }
+ versions := refs[key]
+ if len(versions) == 0 {
+ return empty, errors.New("save the Secret in the local private file first")
+ }
+ last := &versions[len(versions)-1]
+ if !apply {
+ pending := false
+ for i := range versions {
+ if versions[i].SyncState == "unknown" || versions[i].SyncState == "applying" {
+ last = &versions[i]
+ pending = true
+ break
+ }
+ }
+ if !pending && (last.SyncState == "diagnosed_not_applied" || last.SyncState == "rejected") {
+ return secretInfoFor(key, versions), nil
+ }
+ }
+ if _, plan, err := e.Providers.vercelAccount(ctx, p); err != nil {
+ return empty, err
+ } else if apply && (plan != "hobby" || !p.AllowHobby || !p.AllowPublish) {
+ return empty, errors.New("Secret writes require authorized personal noncommercial Hobby conditions")
+ }
+ envs, err := e.Providers.vercelEnvs(ctx, p)
+ if err != nil {
+ return empty, err
+ }
+ remote, err := productionSecret(envs, key)
+ if err != nil {
+ return empty, err
+ }
+ if apply {
+ for _, version := range versions {
+ if version.SyncState == "unknown" || version.SyncState == "applying" {
+ return empty, errors.New("a previous Secret write is unresolved; use secret reconcile before another write")
+ }
+ }
+ if last.SyncState == "synced" || last.SyncState == "rejected" || last.SyncState == "diagnosed_not_applied" {
+ return empty, errors.New("this local version already has a completed write attempt; save a new version for an intentional update")
+ }
+ ops, err := e.Store.operations(p.Name)
+ if err != nil {
+ return empty, err
+ }
+ for _, op := range ops {
+ if !op.terminal() {
+ return empty, errors.New("reconcile the pending deployment before changing its Secrets")
+ }
+ }
+ neon, host, err := e.Providers.inspectNeon(ctx, p)
+ if err != nil {
+ return empty, err
+ }
+ if neon.NeonPlan != "free" {
+ return empty, errors.New("Secret writes require the validated Neon Free binding")
+ }
+ value, err := e.Store.secretValue(p.Name, last.Ref)
+ if err != nil {
+ return empty, err
+ }
+ defer clear(value)
+ if !utf8.Valid(value) || bytes.IndexByte(value, 0) >= 0 || len(value) == 0 || len(value) > maxSecretSize {
+ return empty, errors.New("Vercel Secret must be bounded UTF-8 text without NUL bytes")
+ }
+ if key == "DATABASE_URL" && !databaseEndpointMatches(string(value), host) {
+ return empty, errors.New("DATABASE_URL does not match the registered Neon endpoint")
+ }
+ last.Marker = "ship-secret:" + last.Ref
+ last.SyncState = "applying"
+ last.RemoteID = ""
+ last.RemoteUpdatedAt = 0
+ path, method := "/v10/projects/"+p.VercelProject+"/env", "POST"
+ if remote != nil {
+ last.RemoteID = remote.ID
+ last.RemoteUpdatedAt = remote.UpdatedAt
+ path = "/v10/projects/" + p.VercelProject + "/env/" + url.PathEscape(remote.ID)
+ method = "PATCH"
+ }
+ body := map[string]any{"value": string(value), "type": "sensitive", "visibility": "secret", "target": []string{"production"}, "comment": last.Marker}
+ if remote == nil {
+ body["key"] = key
+ }
+ payload, err := json.Marshal(body)
+ if err != nil {
+ return empty, err
+ }
+ defer clear(payload)
+ refs[key] = versions
+ if err = atomicJSON(filepath.Join(e.Store.Root, "secrets", p.Name+".json"), refs); err != nil {
+ return empty, err
+ }
+ // An unknown response is resolved by reading the marker and version, never by replaying this mutation.
+ writeErr := e.Providers.vercelAPI(ctx, p, path, method, payload, nil)
+ var commandErr *providerCommandError
+ if errors.As(writeErr, &commandErr) {
+ last.WriteErrorCode = commandErr.Code
+ if commandErr.Rejected {
+ last.SyncState = "rejected"
+ refs[key] = versions
+ if err = atomicJSON(filepath.Join(e.Store.Root, "secrets", p.Name+".json"), refs); err != nil {
+ return empty, err
+ }
+ return empty, writeErr
+ }
+ }
+ last.SyncState = "unknown"
+ refs[key] = versions
+ if err = atomicJSON(filepath.Join(e.Store.Root, "secrets", p.Name+".json"), refs); err != nil {
+ return empty, err
+ }
+ envs, err = e.Providers.vercelEnvs(ctx, p)
+ if err != nil {
+ return empty, errors.New("Secret write outcome is unknown; use secret reconcile, not another apply")
+ }
+ remote, err = productionSecret(envs, key)
+ if err != nil {
+ return empty, err
+ }
+ }
+ if last.Marker == "" || remote == nil || remote.Type != "sensitive" || remote.Comment != last.Marker || (last.RemoteID != "" && remote.ID != last.RemoteID) {
+ return empty, errors.New("cannot confirm the original Secret write; keep it unresolved and review the cloud state")
+ }
+ if last.SyncState == "synced" && remote.UpdatedAt != last.RemoteUpdatedAt {
+ return empty, errors.New("cloud Secret changed after the confirmed write")
+ }
+ if last.SyncState != "synced" && remote.UpdatedAt <= last.RemoteUpdatedAt {
+ return empty, errors.New("Secret version has not advanced; original write remains unconfirmed")
+ }
+ last.RemoteID = remote.ID
+ last.RemoteUpdatedAt = remote.UpdatedAt
+ last.SyncState = "synced"
+ refs[key] = versions
+ if err = atomicJSON(filepath.Join(e.Store.Root, "secrets", p.Name+".json"), refs); err != nil {
+ return empty, err
+ }
+ return secretInfoFor(key, versions), nil
+}
diff --git a/cmd/ship/vercel_test.go b/cmd/ship/vercel_test.go
new file mode 100644
index 0000000..80b22dc
--- /dev/null
+++ b/cmd/ship/vercel_test.go
@@ -0,0 +1,310 @@
+package main
+
+import (
+ "context"
+ "encoding/json"
+ "errors"
+ "os"
+ "path/filepath"
+ "strings"
+ "testing"
+)
+
+func TestProviderErrorDoesNotEchoResponseDetails(t *testing.T) {
+ err := safeProviderError("vercel", []byte(`{"error":{"code":"bad_request","message":"rejected plaintext-private-value"}}`), nil)
+ if !strings.Contains(err.Error(), "bad_request") || strings.Contains(err.Error(), "plaintext-private-value") {
+ t.Fatal("provider response details escaped redaction boundary")
+ }
+ err = safeProviderError("vercel", []byte(`{"error":{"code":"unsafe value with spaces","message":"plaintext-private-value"}}`), nil)
+ if !strings.Contains(err.Error(), "cli_error_or_timeout") || strings.Contains(err.Error(), "unsafe value") {
+ t.Fatal("unstructured provider detail was exposed")
+ }
+}
+
+func TestVercelKnownValidationRejectionIsNotUnknown(t *testing.T) {
+ // Exact response observed from the pinned CLI in the isolated cloud probe.
+ err := safeProviderError("vercel", nil, []byte("Error: You cannot change the key of a Sensitive Environment Variable. (400)\n"))
+ var classified *providerCommandError
+ if !errors.As(err, &classified) || !classified.Rejected || classified.Code != "sensitive_key_immutable" {
+ t.Fatal("known provider validation rejection was discarded")
+ }
+ f := newVercelFixture(t)
+ run := f.e.Providers.RunInput
+ f.e.Providers.RunInput = func(ctx context.Context, tool string, args []string, input []byte) ([]byte, error) {
+ if input != nil {
+ f.writes++
+ return nil, err
+ }
+ return run(ctx, tool, args, input)
+ }
+ if _, err = f.e.syncVercelSecret(context.Background(), f.p, "DATABASE_URL", true); err == nil {
+ t.Fatal("rejected write reported success")
+ }
+ records, readErr := f.e.Store.secretRecords(f.p.Name)
+ if readErr != nil || records["DATABASE_URL"][0].SyncState != "rejected" {
+ t.Fatal("definite rejection was not preserved")
+ }
+ if _, err = f.e.syncVercelSecret(context.Background(), f.p, "DATABASE_URL", true); err == nil || f.writes != 1 {
+ t.Fatal("rejected attempt was automatically reused")
+ }
+}
+
+type vercelFixture struct {
+ e *Engine
+ p Project
+ env vercelEnv
+ hidden *vercelEnv
+ plan, owner string
+ writes, uploads int
+ loseReply bool
+ deployments []vercelDeployment
+}
+
+func newVercelFixture(t *testing.T) *vercelFixture {
+ t.Helper()
+ e, p := fixture(t)
+ p.Provider = "vercel"
+ p.VercelTeam = "team_demo123"
+ p.VercelProject = "prj_demo123"
+ p.AllowHobby = true
+ f := &vercelFixture{e: e, p: p, plan: "hobby", owner: p.VercelTeam, env: vercelEnv{ID: "env_demo123", Key: "DATABASE_URL", Type: "sensitive", Visibility: "secret", Target: []string{"production"}, UpdatedAt: 100}}
+ if err := e.Store.register(p); err != nil {
+ t.Fatal(err)
+ }
+ if err := os.Rename(filepath.Join(p.Source, "Dockerfile"), filepath.Join(p.Source, "Dockerfile.vercel")); err != nil {
+ t.Fatal(err)
+ }
+ if err := os.WriteFile(filepath.Join(p.Source, "vercel.json"), []byte(`{"framework":"container"}`), 0600); err != nil {
+ t.Fatal(err)
+ }
+ if _, err := e.Store.saveSecret(p.Name, "DATABASE_URL", []byte("postgresql://user:cached-password@ep-demo1.region.neon.tech/db")); err != nil {
+ t.Fatal(err)
+ }
+ e.Providers.Store = e.Store
+ e.Providers.VercelConfig = "/private/vercel-auth"
+ e.Providers.RunInput = func(_ context.Context, tool string, args []string, input []byte) ([]byte, error) {
+ if tool == "neon" {
+ return healthyProvider(tool, args)
+ }
+ if tool != "vercel" {
+ t.Fatalf("unexpected provider %s", tool)
+ }
+ joined := strings.Join(args, " ")
+ if !strings.Contains(joined, "--scope "+p.VercelTeam) || !strings.Contains(joined, "--global-config /private/vercel-auth") {
+ t.Fatal("Vercel call lost its explicit account scope")
+ }
+ if strings.Contains(joined, "cached-password") {
+ t.Fatal("secret entered command arguments")
+ }
+ switch args[0] {
+ case "deploy":
+ f.uploads++
+ if !strings.Contains(joined, "--prod") || !strings.Contains(joined, "--project "+p.VercelProject) {
+ t.Fatal("deployment target was implicit")
+ }
+ for i, a := range args {
+ if a == "--meta" {
+ f.deployments = []vercelDeployment{{UID: "dpl_original", State: "BUILDING", Target: "production", Meta: map[string]string{"ship_operation": strings.TrimPrefix(args[i+1], "ship_operation=")}}}
+ }
+ }
+ return nil, errors.New("lost deployment response")
+ case "logs":
+ return []byte("cached-password"), nil
+ case "api":
+ path := args[1]
+ switch {
+ case strings.HasPrefix(path, "/v2/teams/"):
+ return jsonBytes(map[string]any{"id": f.owner, "billing": map[string]string{"plan": f.plan}, "membership": map[string]string{"role": "OWNER"}}), nil
+ case path == "/v9/projects/"+p.VercelProject:
+ return jsonBytes(vercelProject{ID: p.VercelProject, AccountID: p.VercelTeam, Targets: map[string]vercelDeployment{"production": {ID: "dpl_old", State: "READY", Alias: []string{"demo.example.test"}}}}), nil
+ case strings.HasPrefix(path, "/v7/deployments?"):
+ return jsonBytes(map[string]any{"deployments": f.deployments}), nil
+ case strings.Contains(path, "/env"):
+ if input == nil {
+ return jsonBytes(map[string]any{"envs": []vercelEnv{f.env}}), nil
+ }
+ f.writes++
+ if path != "/v10/projects/"+p.VercelProject+"/env/"+f.env.ID {
+ t.Fatal("Secret update diverged from the pinned official CLI endpoint")
+ }
+ var body map[string]any
+ if json.Unmarshal(input, &body) != nil || body["type"] != "sensitive" || body["visibility"] != "secret" {
+ t.Fatal("Secret protection was downgraded")
+ }
+ if _, exists := body["key"]; exists {
+ t.Fatal("Secret update attempted to rename an existing key")
+ }
+ next := f.env
+ next.UpdatedAt++
+ next.Comment = body["comment"].(string)
+ if f.loseReply {
+ f.hidden = &next
+ return nil, errors.New("lost Secret response")
+ }
+ f.env = next
+ return []byte(`{}`), nil
+ }
+ }
+ return nil, errors.New("unexpected Vercel invocation")
+ }
+ return f
+}
+
+func TestVercelSecretUnknownWriteAndDrift(t *testing.T) {
+ f := newVercelFixture(t)
+ ctx := context.Background()
+ pre, err := f.e.Providers.inspect(ctx, f.p)
+ if err != nil || !pre.Observation.Eligible || pre.Observation.DatabaseBinding != "provider_secret_retained_not_readable" {
+ t.Fatal("local cache was treated as cloud truth")
+ }
+ f.loseReply = true
+ if _, err = f.e.syncVercelSecret(ctx, f.p, "DATABASE_URL", true); err == nil || f.writes != 1 {
+ t.Fatal("uncertain Secret write was not retained")
+ }
+ if _, err = f.e.syncVercelSecret(ctx, f.p, "DATABASE_URL", true); err == nil || f.writes != 1 {
+ t.Fatal("uncertain Secret write was replayed")
+ }
+ pre, err = f.e.Providers.inspect(ctx, f.p)
+ if err != nil || pre.Observation.Eligible {
+ t.Fatal("unresolved Secret write did not block deployment")
+ }
+ f.env = *f.hidden
+ if _, err = f.e.syncVercelSecret(ctx, f.p, "DATABASE_URL", false); err != nil || f.writes != 1 {
+ t.Fatalf("original Secret was not reconciled: %v", err)
+ }
+ pre, err = f.e.Providers.inspect(ctx, f.p)
+ if err != nil || !pre.Observation.Eligible || pre.Observation.DatabaseBinding != "last_write_and_metadata_match_not_runtime_identity" {
+ t.Fatalf("confirmed binding was not eligible: %v", err)
+ }
+ lines, err := f.e.logs(ctx, f.p)
+ if err != nil || len(lines) != 1 || lines[0] != "[REDACTED]" {
+ t.Fatal("cached database password leaked through logs")
+ }
+ f.env.UpdatedAt++
+ pre, err = f.e.Providers.inspect(ctx, f.p)
+ if err != nil || !pre.Observation.Eligible || pre.Observation.DatabaseBinding != "provider_secret_retained_not_readable" {
+ t.Fatal("externally changed Secret was trusted")
+ }
+ lines, err = f.e.logs(ctx, f.p)
+ if err != nil || len(lines) != 1 || lines[0] != "[REDACTED]" {
+ t.Fatal("known historical secrets were not redacted")
+ }
+}
+
+func TestVercelDeployRetainsOpaqueProviderSecrets(t *testing.T) {
+ f := newVercelFixture(t)
+ if err := os.Remove(filepath.Join(f.e.Store.Root, "secrets", f.p.Name+".json")); err != nil {
+ t.Fatal(err)
+ }
+ op, unlock, err := f.e.begin(f.p)
+ if err != nil {
+ t.Fatal(err)
+ }
+ defer unlock()
+ if err = f.e.executePublish(context.Background(), f.p, op, false); err != nil {
+ t.Fatalf("existing configuration could not be retained: %v", err)
+ }
+ if f.uploads != 1 || f.writes != 0 || op.State != "deploying" {
+ t.Fatal("source deployment depended on replacing provider Secrets")
+ }
+ observation := f.e.Store.observation(f.p.Name)
+ if observation == nil || observation.DatabaseBinding != "provider_secret_retained_not_readable" {
+ t.Fatal("opaque database identity was reported as verified")
+ }
+}
+
+func TestDiagnosedSecretHistoryDoesNotReopen(t *testing.T) {
+ f := newVercelFixture(t)
+ records, err := f.e.Store.secretRecords(f.p.Name)
+ if err != nil {
+ t.Fatal(err)
+ }
+ records["DATABASE_URL"][0].SyncState = "diagnosed_not_applied"
+ records["DATABASE_URL"][0].Resolution = "user-approved diagnosis"
+ path := filepath.Join(f.e.Store.Root, "secrets", f.p.Name+".json")
+ if err = atomicJSON(path, records); err != nil {
+ t.Fatal(err)
+ }
+ before, _ := os.ReadFile(path)
+ f.e.Providers.RunInput = func(context.Context, string, []string, []byte) ([]byte, error) {
+ t.Fatal("archived diagnosis contacted the provider")
+ return nil, nil
+ }
+ info, err := f.e.syncVercelSecret(context.Background(), f.p, "DATABASE_URL", false)
+ if err != nil || info.Status != "write_diagnosed_not_applied" {
+ t.Fatal("archived disposition was reopened")
+ }
+ after, _ := os.ReadFile(path)
+ if string(before) != string(after) {
+ t.Fatal("historical disposition changed")
+ }
+}
+
+func TestVercelBoundariesAndDeploymentReconciliation(t *testing.T) {
+ f := newVercelFixture(t)
+ ctx := context.Background()
+ f.plan = "pro"
+ if _, err := f.e.syncVercelSecret(ctx, f.p, "DATABASE_URL", true); err == nil || f.writes != 0 {
+ t.Fatal("paid plan permitted a mutation")
+ }
+ f.plan = "hobby"
+ f.owner = "team_other123"
+ if _, err := f.e.syncVercelSecret(ctx, f.p, "DATABASE_URL", true); err == nil || f.writes != 0 {
+ t.Fatal("wrong owner permitted a mutation")
+ }
+ f.owner = f.p.VercelTeam
+ if _, err := f.e.syncVercelSecret(ctx, f.p, "DATABASE_URL", true); err != nil {
+ t.Fatal(err)
+ }
+ op, unlock, err := f.e.begin(f.p)
+ if err != nil {
+ t.Fatal(err)
+ }
+ err = f.e.executePublish(ctx, f.p, op, false)
+ unlock()
+ if err != nil || f.uploads != 1 || op.State != "deploying" || op.DeploymentID != "dpl_original" {
+ t.Fatalf("lost response was not reconciled: %v", err)
+ }
+ if _, release, err := f.e.begin(f.p); err == nil {
+ release()
+ t.Fatal("duplicate deployment permitted")
+ }
+ f.deployments[0].State = "READY"
+ recovered, err := f.e.reconcile(ctx, f.p, false)
+ if err != nil || recovered.State != "deploying" {
+ t.Fatal("READY without production alias was marked deployed")
+ }
+ f.deployments[0].State = "ERROR"
+ recovered, err = f.e.reconcile(ctx, f.p, false)
+ if err != nil || recovered.State != "failed" || recovered.DeploymentID != "dpl_original" || f.uploads != 1 {
+ t.Fatal("reconciliation changed the original deployment")
+ }
+ if _, err = f.e.Store.saveSecret(f.p.Name, "DATABASE_URL", []byte("postgresql://user:other-password@other-db.example/db")); err != nil {
+ t.Fatal(err)
+ }
+ if _, err = f.e.syncVercelSecret(ctx, f.p, "DATABASE_URL", true); err == nil || f.writes != 1 {
+ t.Fatal("wrong database endpoint was applied")
+ }
+}
+
+func TestVercelSourceRejectsImplicitConfiguration(t *testing.T) {
+ f := newVercelFixture(t)
+ stage, _, _, err := bundleSource(f.p.Source, f.e.Store.Root, nil)
+ if err != nil {
+ t.Fatal(err)
+ }
+ defer os.RemoveAll(stage)
+ if err = prepareVercelSource(stage, f.p); err != nil {
+ t.Fatal(err)
+ }
+ var linked map[string]string
+ if readJSON(filepath.Join(stage, ".vercel/project.json"), &linked) != nil || linked["orgId"] != f.p.VercelTeam || linked["projectId"] != f.p.VercelProject {
+ t.Fatal("staged source lost its explicit resource binding")
+ }
+ if err = os.WriteFile(filepath.Join(stage, "vercel.json"), []byte(`{"framework":null}`), 0600); err != nil {
+ t.Fatal(err)
+ }
+ if prepareVercelSource(stage, f.p) == nil {
+ t.Fatal("Other framework was accepted for a container deployment")
+ }
+}
diff --git a/cmd/ship/web/app.js b/cmd/ship/web/app.js
index 1e50505..b269940 100644
--- a/cmd/ship/web/app.js
+++ b/cmd/ship/web/app.js
@@ -16,18 +16,19 @@ function time(value){return value?new Date(value).toLocaleString():'尚未检查
function showDialog(title,text,opener=document.activeElement){dialogOpener=opener;$('dialog-title').textContent=title;const pre=document.createElement('pre');pre.textContent=text;$('dialog-body').replaceChildren(pre);$('dialog').showModal();}
$('close').addEventListener('click',()=>$('dialog').close());
$('dialog').addEventListener('close',()=>{if(dialogOpener?.isConnected)dialogOpener.focus();load().catch(e=>message(e.message,true));});
-$('add').addEventListener('click',()=>showDialog('关联已有应用','内部版先关联已有 Railway + Neon 资源。\n\n在已有 Agent 中选择项目,让它使用随源码提供的 ship Skill,核对资源归属后运行 register。\n\n首次创建云资源、通用资源接管和数据库迁移尚未接入这一版。'));
+$('add').addEventListener('click',()=>showDialog('关联已有应用','内部版先关联已有 Railway 或 Vercel 项目与 Neon 资源。\n\n在已有 Agent 中选择项目,让它使用随源码提供的 ship Skill,核对资源归属后运行 register。\n\n首次创建云资源、通用资源接管和数据库迁移尚未接入这一版。'));
async function load(){
const views=await api('projects');const fragment=document.createDocumentFragment();
for(const view of views){
const p=view.project,o=view.observation,op=view.operations[0];const pending=op&&!terminal.has(op.state);
const card=$('card').content.cloneNode(true),article=card.querySelector('article');article.dataset.name=p.name;
card.querySelector('.name').textContent=p.name;
- card.querySelector('.plan').textContent=o?'Railway '+o.railway_plan+' · Neon '+o.neon_plan:'尚未读取资源状态';
+ const provider=p.provider==='vercel'?'Vercel':'Railway';
+ card.querySelector('.plan').textContent=o?provider+' '+(o.compute_plan||o.railway_plan||'待确认')+' · Neon '+o.neon_plan:'尚未读取资源状态';
const status=card.querySelector('.status');
const newerOperation=op?.provider_state&&(!o||new Date(op.updated_at)>new Date(o.at));
const cloudState=newerOperation?op.provider_state:o?.service_state;
- status.textContent=pending?(op.state==='unknown'?(view.running?'正在确认发布':'结果待核实'):'正在发布'):op?.state==='blocked'?'发布未执行':op?.state==='failed'?'最近发布失败':cloudState==='SLEEPING'?'最近状态:休眠':cloudState==='SUCCESS'?'最近部署成功':'状态待刷新';
+ status.textContent=pending?(op.state==='unknown'?(view.running?'正在确认发布':'结果待核实'):'正在发布'):op?.state==='blocked'?'发布未执行':op?.state==='failed'?'最近发布失败':cloudState==='SLEEPING'?'最近状态:休眠':['SUCCESS','READY'].includes(cloudState)?'最近部署成功':'状态待刷新';
if(pending||!o||op?.state==='blocked')status.classList.add('warn');if(op?.state==='failed')status.classList.add('bad');
card.querySelector('.address').textContent=p.url;card.querySelector('.visit').href=p.url;
card.querySelector('[data-action="publish"]').disabled=!!pending||!p.allow_publish;
@@ -35,9 +36,10 @@ async function load(){
card.querySelector('.recovery').hidden=!pending||view.running;
card.querySelector('.observed').textContent=time(newerOperation?op.updated_at:o?.at);
card.querySelector('.database').textContent=o?.database_state||'尚未读取';
+ card.querySelector('.binding').textContent=o?.database_binding==='last_write_and_metadata_match_not_runtime_identity'?'上次写入与平台记录一致;运行连接仍需检查':o?.database_binding==='provider_value_matches_endpoint'?'配置地址与登记数据库一致':o?.database_binding==='provider_secret_retained_not_readable'?'沿用平台已有 Secret;连接目标未核验':'待核对';
const checks=view.checks;
card.querySelector('.checked').textContent=checks?(checks.results.every(c=>c.ok)?'通过':'未通过或待确认')+' · '+time(checks.at):'尚未检查(刷新资源状态不会唤醒应用)';
- card.querySelector('.authorization').textContent=p.allow_publish?'允许向此服务发布当前源码'+(p.allow_trial?',已接受 Trial 试用条件':''):'仅查看';
+ card.querySelector('.authorization').textContent=p.allow_publish?'允许向此服务发布当前源码'+(p.provider==='vercel'?(p.allow_personal_noncommercial_hobby?',已确认 Hobby 个人非商业用途':''):(p.allow_trial?',已接受 Trial 试用条件':'')):'仅查看';
if(checks&&!checks.results.every(c=>c.ok)&&!pending){status.textContent='访问待确认';status.classList.add('warn');}
fragment.append(card);
}
diff --git a/cmd/ship/web/index.html b/cmd/ship/web/index.html
index 501d635..e30fcfe 100644
--- a/cmd/ship/web/index.html
+++ b/cmd/ship/web/index.html
@@ -2,5 +2,5 @@
Ship · 我的应用
Ship本地
内部试验版 · Trial 不等于正式 Free
-应用详情
- 状态更新
- 数据库
- 最近访问检查
- 项目授权
+应用详情
- 状态更新
- 数据库
- 连接配置
- 最近访问检查
- 项目授权
diff --git a/docs/ALPHA.md b/docs/ALPHA.md
index 0c3d3fa..ce610e1 100644
--- a/docs/ALPHA.md
+++ b/docs/ALPHA.md
@@ -1,8 +1,8 @@
# Ship:内部试验版
-本版把已验证的 Railway + Neon 链路接入 CLI 和极简网页。它关联已有资源,读取真实状态与日志,将当前 Dockerfile 项目发布到指定服务,并记录操作以供中断后核对。原型的模拟页面仍保留在 `docs/prototypes`,这里运行的是实际工具。
+本版把已验证的 Railway Trial / Vercel Hobby + Neon 链路接入 CLI 和极简网页。它关联已有资源,读取真实状态与日志,将当前 Dockerfile 项目发布到指定服务,并记录操作以供中断后核对。原型的模拟页面仍保留在 `docs/prototypes`,这里运行的是实际工具。
-当前先在 macOS / arm64 验收。Go 程序仅使用标准库,浏览器资源打包在可执行文件中;沿用项目内固定版本的 Railway 5.57.2 和 Neon 4.18.0 官方 CLI。Neon CLI 仍需要 Node.js 20.19+。公开安装包、其他系统的完整验收及自动创建资源尚未完成。
+当前先在 macOS / arm64 验收。Go 程序仅使用标准库,浏览器资源打包在可执行文件中;沿用项目内固定版本的 Railway 5.57.2、Neon 4.18.0 和 Vercel 59.20.0 官方 CLI。Neon / Vercel CLI 仍需要 Node.js;当前 Vercel 实验使用 Node.js 24。公开安装包、其他系统的完整验收及自动创建资源尚未完成。
## 从源码安装(macOS arm64)
@@ -18,7 +18,7 @@ cd "$HOME/.local/share/ship"
默认安装目录为 `~/.local/share/ship`;可把一个尚不存在的绝对路径作为脚本参数。已有目录不会被覆盖,升级时先安装到另一个目录。云登录与 Ship 的项目状态保存在安装目录以外,切换可执行文件不需要重新登记。
-从 UpOK 升级时,先关闭旧的本地服务,再启动 Ship。若用户配置目录中还没有 `ship`,工具会沿用已有的 `upok` 目录,保留项目、授权和发布历史;`--state-dir` 可显式指定目录。旧的 `UPOK_RAILWAY_BIN` / `UPOK_NEON_BIN` 环境变量仍可用,新的 `SHIP_*` 变量优先;显式参数和已保存的工具路径维持原有优先级。旧安装可留存供已有工具路径使用。历史 `upok:` / `pdeploy:` 发布标记保持原值,新操作使用 `ship:`。
+从 UpOK 升级时,先关闭旧的本地服务,再启动 Ship。新安装默认使用 `~/.ship`;若该目录不存在,工具会依次查找用户配置目录下已有的 `ship` / `upok`,保留项目、授权和发布历史;`--state-dir` 可显式指定目录。旧的 `UPOK_RAILWAY_BIN` / `UPOK_NEON_BIN` 环境变量仍可用,新的 `SHIP_*` 变量优先;显式参数和已保存的工具路径维持原有优先级。旧安装可留存供已有工具路径使用。历史 `upok:` / `pdeploy:` 发布标记保持原值,新操作使用 `ship:`。
以下 `./bin/ship` 和 `./tools/…` 命令均从安装目录运行。已有部署管理记录但没有供应商登录时,仍可打开网页查看本地记录;刷新和发布需要先完成登录。
@@ -50,9 +50,9 @@ env -u NEON_API_KEY -u NEON_PROFILE ./tools/node_modules/.bin/neon login \
浏览器中选择自己的账号,密钥留在官方 CLI 中。Railway 使用 `~/.railway/config.json`,Neon 使用上述显式目录。已有 Neon 登录位于其他目录时,登记项目使用 `--neon-config` 指向它。源码直接构建时,官方 CLI 路径为 `validation/cloud-tools/node_modules/.bin/`。
-当前需先有 Railway 服务、Neon PostgreSQL 和可用应用地址。可让现有 Agent 从用户选定的账号查询资源 ID,再调用下方登记命令;界面尚未提供自动创建资源或账号选择器。内部版不会启用付费。
+当前需先有 Railway 服务或 Vercel 项目、Neon PostgreSQL 和可用应用地址。可让现有 Agent 从用户选定的账号查询资源 ID,再调用下方登记命令;界面尚未提供自动创建资源或账号选择器。内部版不会启用付费。
-新安装默认将资源标识、源码路径和工具路径保存到用户配置目录下的 `ship`(macOS 为 `~/Library/Application Support/ship`);已有 UpOK 用户沿用上文所述旧目录。文件权限为 0600,目录为 0700;云令牌与数据库连接串不写入这些记录。
+新安装默认将资源标识、源码路径和工具路径保存到 `~/.ship`;已有用户按上文规则沿用旧目录或显式迁移。macOS/Linux 文件权限为 0600,目录为 0700;普通项目记录不包含密钥值,业务密钥单独保存在 `secrets/项目名.json`。官方 CLI 的云账号令牌继续由官方工具管理。
```sh
./bin/ship register \
@@ -87,6 +87,25 @@ CLI 二进制位置可用 `--railway-bin`、`--neon-bin` 指定;首次登记
网页默认显示已有项目、访问地址、真实状态和三个常用入口,资源详情与日志按需展开。页面只轮询本地操作记录,云端查询由显式刷新或有界的发布观察触发。
+## 本地业务密钥
+
+业务密钥以**明文 JSON**保存在 `~/.ship/secrets/项目名.json`;使用 `--state-dir` 时位于所选目录的 `secrets/` 下。每个项目独立加锁并原子写入。macOS/Linux 上目录为 0700、文件为 0600;读取时拒绝符号链接、特殊文件和其他用户可访问的密钥文件。此方案不抵御同一用户下有文件读取权限的程序;不要将密钥目录提交、打包或同步给他人。
+
+```sh
+# 输入文件按原始 UTF-8 文本读取,包含结尾换行;请由用户妥善保管。
+./bin/ship secret save demo DATABASE_URL --stdin < /path/to/private-database-url
+./bin/ship secret list demo
+./bin/ship secret check demo
+```
+
+`save` 只保存本地副本,不写云端。重复保存保留版本,用于遮蔽历史日志。`list` 仅返回名称、版本数与状态;`check` 只检查本地读取,不输出密钥,也不证明云端当前值。秘密通过标准输入接收,不放进命令参数或普通项目记录。整个状态目录被排除在源码上传之外;当前没有默认打包该目录的导出功能。
+
+原实验版只保存钥匙串引用的记录,需要先迁移密钥值。迁移应保留引用 ID、时间、云端元数据与 `unknown` 状态,不以迁移触发云端写入。旧记录缺少本地值时明确报错,不能按空值继续。用户本机的本轮迁移与验证单独记录。
+
+Vercel `secret apply NAME KEY` / `secret reconcile NAME KEY` 是独立的配置操作。创建和更新请求契约已用临时合成变量验证;业务 Secret 没有重写,端到端普通发布不依赖这两个命令。`apply` 是明确的云端配置写入;`reconcile` 只核对上次标记。未知写入继续保留,不自动重发。存储方式变更不取消这条边界。参见 [当前接入问题](../validation/VERCEL-RESULTS.md)。
+
+已保存的值参与源码检查和日志遮蔽;本地文件不可读取时停止依赖它的操作。通用规则和已知值匹配不能发现所有形式的硬编码秘密或日志泄露。运行 Ship 不再需要 macOS 钥匙串或 cgo。当前安装器仍只验收 macOS arm64;Windows 的访问控制和文件锁尚未适配,不能把移除钥匙串依赖视为 Windows 已可用。
+
## 发布与中断
发布前重新读取账号计划、资源归属和数据库连接目标,截取源码副本,保存操作意图,再调用一次供应商上传。每次操作使用唯一的部署消息标记。若提交结果未知,新发布会被阻止;`reconcile` 在最近 100 次部署中寻找同一标记,不重新提交。
@@ -97,11 +116,21 @@ CLI 二进制位置可用 `--railway-bin`、`--neon-bin` 指定;首次登记
源码副本限制为 20 MiB / 2000 个常规文件,排除常见凭证文件、依赖缓存和本地数据库文件,拒绝符号链接及已知云凭证的明文内容。记录的摘要对应捕获的源码副本;供应商还会应用上传忽略规则,它不是云端镜像摘要。此检查不能发现所有种类的硬编码秘密,发布前仍须检查项目源码。
+## Vercel 接入的当前边界
+
+本版已用 Ship CLI 验收已有 Vercel Hobby 项目与 Neon Free 的发布、更新、读写与数据保留。使用已登录的官方 CLI,通过 `--vercel-config` 指定认证目录,登记时指定 `--provider vercel --vercel-team TEAM_ID --vercel-project PROJECT_ID --allow-hobby`,并提供已有应用 URL 与 Neon 标识。`--allow-hobby` 表示用户接受个人非商业用途限制,不代表所有应用都适用。源码目前要求 `Dockerfile.vercel` 和仅含 `{"framework":"container"}` 的 `vercel.json`。
+
+普通源码发布沿用平台上已有的 Secret,不强制读回、缓存或重写密钥。数据库地址不可读或本地副本已过期时,明确显示“连接目标未核验”;账号归属、套餐条件与变量存在性仍会检查。只有用户明确请求配置变更时才调用 `secret apply`。真正未知的写入仍会阻止后续发布,不能通过删除缓存绕过。
+
+日志按可用的本地已知值和通用格式遮蔽;平台隐藏的、没有本地副本的值可能无法精确匹配,分享前需检查。`/readyz` 成功只说明应用报告数据库就绪,不独立证明连接的是登记的实例。
+
+隔离实验已证实:Secret 更新请求包含 `key` 字段时,Vercel 即使收到相同名字也返回400;移除该字段后更新成功。创建请求仍必须包含 `key`。工具已保留回归检查,并将这类明确拒绝与网络失败等未知结果区分。历史数据库写入没有原始错误回执,用户已明确同意按“经诊断未生效”归档,原引用、标记、时间和诊断证据保留,未重发数据库连接串。[诊断结果](../validation/results/vercel-secret-update-diagnosis.json)
+
## 费用与范围
-当前唯一已实测的写入路径是明确接受 Trial 的 Railway 账号加 Neon Free;发布还要求无付费订阅或默认支付方式、Trial 额度大于零。其他计费状态保留只读能力,停止发布。正式 Free 不能用 Trial 结果代替:[费用边界](research/2026-09-16-free-plan-boundaries.md)。
+Railway 路径要求明确接受 Trial、无付费订阅或默认支付方式、Trial 额度大于零。Vercel 路径要求当前账号为 Hobby,且用户明确接受个人非商业用途条件。两者都要求登记的 Neon 组织为 Free。其他计费状态停止发布;不把 Railway Trial 结果当成正式 Free:[费用边界](research/2026-09-16-free-plan-boundaries.md)。
-本版不承担首次创建项目/数据库、修改云配置、自动付费、资源删除、数据库迁移或通用资源接管。它也没有实现无人值守运维。`PORT` 的早期差异仍未解决,常规发布结果按实际部署和检查验收。
+本版不承担首次创建项目/数据库、自动付费、资源删除、数据库迁移或通用资源接管;云配置写入仅限明确授权的 Vercel Secret 操作。它也没有实现无人值守运维。`PORT` 的早期差异仍未解决,常规发布结果按实际部署和检查验收。
## 开发检查
diff --git a/docs/FIRST-TRY.md b/docs/FIRST-TRY.md
new file mode 100644
index 0000000..22a67ad
--- /dev/null
+++ b/docs/FIRST-TRY.md
@@ -0,0 +1,79 @@
+# 独立试用:从空白本地安装到一次更新
+
+目标:由没有参与 Ship 开发的人,用自己的电脑和云账号完成关联、检查、发布、更新与日志读取。作者代操作和作者已有账号的验收不计入独立试用。
+
+## 试用范围
+
+- 当前安装入口只验收 macOS Apple Silicon;Windows 尚未适配。
+- 准备自己已有的 Vercel Hobby HTTP 容器应用与 Neon Free 数据库。应用需符合 Hobby 的个人非商业用途条件,并能访问 `/healthz` 和 `/readyz`。
+- 应用源码包含 `Dockerfile.vercel` 与 `vercel.json`,后者在当前 Alpha 中只包含 `{"framework":"container"}`。
+- 首次创建云项目、配置数据库连接与域名仍由供应商工具完成。Ship 本次试用验证的是对已有资源的日常管理。
+
+## 1. 安装
+
+准备 Go 1.24+、Node.js 24 和 npm:
+
+```sh
+git clone https://github.com/unix2dos/ship.git
+cd ship
+sh scripts/install.sh
+"$HOME/.local/share/ship/bin/ship" serve --open
+```
+
+已有安装目录时,向安装脚本传入另一个不存在的绝对路径。默认本地记录在 `~/.ship`;业务密钥若由用户主动保存,会以权限受限的明文文件存放,详情见 [本地业务密钥](ALPHA.md#本地业务密钥)。首次关联已有应用不需要导入或重写平台上的 Secret。
+
+## 2. 登录并关联自己的应用
+
+从安装目录调用官方工具登录:
+
+```sh
+cd "$HOME/.local/share/ship"
+mkdir -p "$HOME/.config/ship-vercel"
+chmod 700 "$HOME/.config/ship-vercel"
+env -u VERCEL_TOKEN -u VERCEL_ORG_ID -u VERCEL_PROJECT_ID \
+ ./tools/node_modules/.bin/vercel login --global-config "$HOME/.config/ship-vercel"
+env -u NEON_API_KEY -u NEON_PROFILE \
+ ./tools/node_modules/.bin/neon login --config-dir "$HOME/.config/neon" --no-analytics
+```
+
+然后让能够执行本机命令的编码 Agent 阅读安装目录中的 `skills/ship/SKILL.md`,提供应用源码目录、现有访问地址和想使用的工作区。可直接说:
+
+> 关联这个已有应用,核对我的 Vercel Hobby 和 Neon Free 资源,命名为 demo,并授权日常源码发布。沿用现有 Secret。Vercel 登录目录是 ~/.config/ship-vercel。先检查状态,再说明结果。
+
+也可按 [Alpha 使用说明](ALPHA.md#vercel-接入的当前边界) 调用 `register`。凭证通过官方登录留在本机,不粘贴到聊天或反馈中。
+
+## 3. 完成一次部署和更新
+
+从安装目录运行:
+
+```sh
+./bin/ship status demo
+./bin/ship check demo
+./bin/ship publish demo --detach
+./bin/ship reconcile demo --wait
+./bin/ship check demo
+./bin/ship logs demo
+```
+
+在浏览器打开应用地址,确认页面或版本信息符合本次源码。随后改一处能识别的新版本标记,再重复发布和核对。若应用有测试数据,确认更新后仍然存在;只使用自己准备的试验数据。
+
+`deployed` 表示平台完成部署;访问检查和业务结果应分别确认。若出现 `unknown`,记录操作 ID 并使用 `reconcile`,不要用另一次 `publish` 替代原操作,也不要删除历史记录。
+
+## 4. 返回最小反馈
+
+记录以下内容即可:
+
+| 项目 | 反馈 |
+| --- | --- |
+| 系统、芯片、Go / Node 版本 | |
+| 测试的 Ship 提交版本 | |
+| 安装与官方登录是否完成 | |
+| 关联资源是否需要作者帮助 | |
+| 首次发布、更新、浏览器访问是否通过 | |
+| 更新后测试数据是否保留 | |
+| 哪一步最费时间或最难理解 | |
+| 失败命令、脱敏错误及操作 ID | |
+
+不附上 `~/.ship/secrets/`、官方 CLI 登录文件、数据库连接串、本地页面的会话密钥或未经检查的完整日志。
+
+独立试用尚待实际参与者完成;这份清单本身不代表外部验收通过。
diff --git a/docs/research/2026-09-17-local-secret-storage.md b/docs/research/2026-09-17-local-secret-storage.md
new file mode 100644
index 0000000..4256571
--- /dev/null
+++ b/docs/research/2026-09-17-local-secret-storage.md
@@ -0,0 +1,63 @@
+# 本地 Secret 存储:跨平台库与实际边界
+
+核实日期:2026-09-17。只读调查官方文档与固定版本源码;未读取用户凭证、运行凭证 API、修改产品实现或操作云资源。
+
+后续用户决策:优先采用受限权限的明文本地文件,移除首版对钥匙串的依赖。以下保留调查时的建议与对比,不代表当前选定实现;当前方案见 [Alpha 使用说明](../ALPHA.md)。
+
+## 结论与最小建议
+
+**建议保留系统凭证库方向,把 macOS Keychain 当作一个平台实现。Windows 支持需要补实现和验收,不能由“换一个跨平台库”直接承诺。** 当前 Ship 已有三个存储操作,可沿用这个小边界;暂不引入多后端自动选择、密码保险箱或同步框架。
+
+关键取舍是 Secret 大小:Ship 当前实现的 `maxSecretSize` 为 **16 KiB**,Windows Credential Manager 的单项 `CredentialBlob` 上限为 **2,560 字节**。两个被调查的库都将整个值放进一个 blob;它们不能直接保留现有大小行为。16 KiB 是当前实现选择,并非已确认的用户需求。macOS 保留现有 Security.framework 实现即可;若确定支持 Windows,先决定只支持较小 Secret 是否足够,再评估较大值所需的系统保护方式,例如另行研究用户作用域 DPAPI。不要为迁就库静默缩小已有上限,也不要自动回退到文件。[Ship 当前限制](../../cmd/ship/secrets.go)、[Microsoft CREDENTIALW](https://learn.microsoft.com/en-us/windows/win32/api/wincred/ns-wincred-credentialw)
+
+这些是**基于当前产品的建议**,不是外部标准要求必须采用某个 Go 包。跨平台运行、每台机器安全保存、跨机器迁移是三个独立问题;以下库主要处理前两者,不提供 Ship 的迁移协议。
+
+## 固定版本比较
+
+以下是调查时 GitHub 最新 release/tag,不用浮动分支作为实现证据:
+
+| 项目 | 已核对版本 | 实际后端与构建要求 | 判断 |
+| --- | --- | --- | --- |
+| `zalando/go-keyring` | [v0.2.8](https://github.com/zalando/go-keyring/releases/tag/v0.2.8),2026-03-23;commit `a8cdfe320cc8bc0534c895a648dc9214715a9da5` | macOS 调 `/usr/bin/security`;Windows 调 `wincred`;Linux/BSD 用 Secret Service / D-Bus。macOS、Windows、Linux 不要求 cgo;FreeBSD/DragonFly 构建标签另有 cgo 条件。 | API 较小、无文件回退,但 macOS 命令长度和 Windows blob 上限均不兼容现有 16 KiB 行为。 |
+| `99designs/keyring` | [v1.2.2](https://github.com/99designs/keyring/releases/tag/v1.2.2),2022-12-19;commit `929f178361c0be06c50f0a82598cbfa1a965f40f` | macOS 使用 `99designs/go-keychain`,**Keychain 后端要求 cgo**;Windows 用 `wincred`;Linux 有 Secret Service、KWallet、内核 keyring;另有非 Windows 的 `pass` 和通用加密文件后端。Windows/Linux 可无 cgo 编译。 | 提供较多策略选择,也把选择、回退、口令管理责任交给调用方;当前 Ship 不需要这层框架。 |
+
+后端证据:[zalando macOS](https://github.com/zalando/go-keyring/blob/a8cdfe320cc8bc0534c895a648dc9214715a9da5/keyring_darwin.go)、[Windows](https://github.com/zalando/go-keyring/blob/a8cdfe320cc8bc0534c895a648dc9214715a9da5/keyring_windows.go)、[Unix 构建条件](https://github.com/zalando/go-keyring/blob/a8cdfe320cc8bc0534c895a648dc9214715a9da5/keyring_unix.go)、[99designs 后端列表/选择](https://github.com/99designs/keyring/blob/929f178361c0be06c50f0a82598cbfa1a965f40f/keyring.go)、[macOS 构建条件](https://github.com/99designs/keyring/blob/929f178361c0be06c50f0a82598cbfa1a965f40f/keychain.go)。
+
+## 不能从包名推断的行为
+
+### 1. zalando 的 macOS secret 经 stdin,不在进程 argv
+
+v0.2.8 启动的是 `security -i`,再将含密码的交互命令写入标准输入。密码先做 Base64 编码;**编码不是加密**。整个命令超过 4,096 字节便返回错误,实际可保存原值小于约 3 KiB,随 service/account 长度变化。读取值经子进程输出回到 Go 内存。不要把 README 中演示的 `security ... -w password` 当成库实际采用的传参方式。[固定源码 L69–100](https://github.com/zalando/go-keyring/blob/a8cdfe320cc8bc0534c895a648dc9214715a9da5/keyring_darwin.go#L69-L100)
+
+99designs 的 macOS/Windows/Secret Service 后端使用系统 API 或 D-Bus,不启动用于传递 Secret 的 shell;其 `pass insert` 后端也把数据放入 stdin,命令参数包含条目路径。[macOS](https://github.com/99designs/keyring/blob/929f178361c0be06c50f0a82598cbfa1a965f40f/keychain.go)、[Windows](https://github.com/99designs/keyring/blob/929f178361c0be06c50f0a82598cbfa1a965f40f/wincred.go)、[Secret Service](https://github.com/99designs/keyring/blob/929f178361c0be06c50f0a82598cbfa1a965f40f/secretservice.go)、[pass](https://github.com/99designs/keyring/blob/929f178361c0be06c50f0a82598cbfa1a965f40f/pass.go)
+
+### 2. Windows 的限制来自系统,持久化范围也要读准
+
+zalando 主动拒绝超过 2,560 字节的值;99designs 直接调用写入 API,未做同样的预检查,也没有分片。两者分别依赖 `wincred` v1.2.3 / v1.1.2,`NewGenericCredential` 默认 `PersistLocalMachine`:**同一用户、同一机器跨登录持久**,并非所有本机用户共享;这也不等于跨设备同步。[zalando 检查](https://github.com/zalando/go-keyring/blob/a8cdfe320cc8bc0534c895a648dc9214715a9da5/keyring_windows.go#L25-L47)、[99designs 写入](https://github.com/99designs/keyring/blob/929f178361c0be06c50f0a82598cbfa1a965f40f/wincred.go)、[wincred v1.2.3](https://github.com/danieljoos/wincred/blob/v1.2.3/wincred.go)、[v1.1.2](https://github.com/danieljoos/wincred/blob/v1.1.2/wincred.go)、[Microsoft 持久化语义](https://learn.microsoft.com/en-us/windows/win32/api/wincred/ns-wincred-credentialw)
+
+### 3. 文件回退不是共同默认,也不是完整的备份方案
+
+- **zalando 无文件存储后端。** 不支持的平台返回 `ErrUnsupportedPlatform`;Linux 的桌面 Secret Service、用户 D-Bus 会话及 collection 仍须可用,不能把 Linux 支持理解成任意无桌面服务器都能用。[fallback](https://github.com/zalando/go-keyring/blob/a8cdfe320cc8bc0534c895a648dc9214715a9da5/keyring_fallback.go)、[Unix 实现](https://github.com/zalando/go-keyring/blob/a8cdfe320cc8bc0534c895a648dc9214715a9da5/keyring_unix.go)
+- **99designs 默认会在 Open 时依次尝试后端**,`AllowedBackends == nil` 表示允许全部可用后端;文件后端始终注册且 opener 不检查目录/口令配置。它不会在每次 Get/Set 失败后再自动切换。要坚持系统凭证库存储,应显式限定后端,不把后端选择交给运行环境碰运气。[Open](https://github.com/99designs/keyring/blob/929f178361c0be06c50f0a82598cbfa1a965f40f/keyring.go)、[Config](https://github.com/99designs/keyring/blob/929f178361c0be06c50f0a82598cbfa1a965f40f/config.go)
+- 文件后端采用口令派生的 JWE(`PBES2-HS256+A128KW` / `A256GCM`),创建目录/文件时传入 `0700` / `0600`;需要调用方给出目录和口令函数。它会缓存口令于进程内存,直接 `os.WriteFile`,不提供应用级迁移、口令恢复或原子替换协议;这些权限位也不能直接代表 Windows ACL 已经过产品验收。[file.go](https://github.com/99designs/keyring/blob/929f178361c0be06c50f0a82598cbfa1a965f40f/file.go)
+
+## 对 Ship 的实施边界(建议,未实施)
+
+1. 保留现有 macOS 实现及“不可用就报错、不明文回退”的行为;将持久化引用和对用户文案逐步表达为本地安全存储,避免产品概念固定为 Keychain。无需先抽象出多后端注册框架。
+2. 本地缓存是否存在与普通源码部署应分别建模;缓存缺失不应天然等于必须重写云端 Secret。任何改变仍应保留已提交但结果未知的写入记录与对账约束。这是产品建议,不由上述库保证。
+3. Windows 先确认大小要求和登录会话场景;Linux 先确认桌面 Secret Service 是否属于支持范围。各平台要实际验证锁定/拒绝访问、重启后读取、超长值、删除及错误传播。单纯交叉编译不算存储验收;Ship 当前还使用 `syscall.Flock`,安装脚本仅接收 macOS,因此库支持 Windows 不等于 Ship 已支持 Windows。[进程锁](../../cmd/ship/store.go)、[安装脚本](../../scripts/install.sh)
+4. 系统凭证库存储主要降低静态文件意外泄露风险。由于读取 API 最终把明文交给当前进程,不能承诺抵御已经完全控制 Ship 进程或当前用户运行环境的攻击者;这属于由 API 行为得出的威胁模型边界。版本历史保留、跨机器恢复和迁移还须由产品明确规定。
+
+## 产品层补充建议(未实施)
+
+- 普通配置、云账号登录和业务 Secret 分开:项目 ID/状态留在本地 JSON;已有官方 CLI 的登录令牌由官方工具管理;只为 Ship 确实需要复用、且用户授权保存的业务 Secret 保留本地副本。
+- 默认用当前系统的凭证库,是已有 CLI 的常见做法,并非必须指定某个库。GitHub CLI 默认使用系统凭证库,同时支持其他输入方式且可能回退明文文件。对 Ship 的建议是把存储方式明确告诉用户,不在系统凭证库失败时静默改变保护方式;无桌面环境的加密文件或临时输入,按真实用户需求再加。[GitHub CLI 登录说明](https://cli.github.com/manual/gh_auth_login)
+- 接入已有应用时,缺少本地缓存不应迫使用户重新设置全部云端 Secret。普通源码部署可设计为沿用现有配置,数据库目标核验另报证据范围;需要修改 Secret 才进入明确的配置写入流程。当前已有的 `unknown` 写入仍需核对或经过明确处置,不能借这项设计调整清空记录绕过。
+- 加密文件仍需解决解密钥匙放哪里、如何解锁与恢复。OWASP 建议不要把未经保护的加密钥匙与其保护的秘密存放在一起。对 Ship 的当前阶段,暂不自建完整密码保险箱。[OWASP 密钥存放](https://cheatsheetseries.owasp.org/cheatsheets/Secrets_Management_Cheat_Sheet.html#73-where-to-store-the-encryption-keys)
+- 日志首先应避免记录密码、令牌和数据库连接串;用本地已知值匹配只是补充措施。历史密钥应有清理入口和保留范围,不能为日志匹配无限累积可用旧值。删除本地副本与撤销云端凭证是不同操作。[OWASP 日志](https://cheatsheetseries.owasp.org/cheatsheets/Logging_Cheat_Sheet.html#data-to-exclude)、[Secret 生命周期](https://cheatsheetseries.owasp.org/cheatsheets/Secrets_Management_Cheat_Sheet.html#27-secret-lifecycle)
+
+## 许可证与验证范围
+
+两库根目录均为 MIT 许可证;zalando 的 `keyring_darwin.go` 另外保留 Google 的 Apache-2.0 文件头,分发时应保留相应第三方声明,不宜只依据仓库徽章概括全部源文件。[zalando LICENSE](https://github.com/zalando/go-keyring/blob/a8cdfe320cc8bc0534c895a648dc9214715a9da5/LICENSE)、[Darwin 文件头](https://github.com/zalando/go-keyring/blob/a8cdfe320cc8bc0534c895a648dc9214715a9da5/keyring_darwin.go#L1-L13)、[99designs LICENSE](https://github.com/99designs/keyring/blob/929f178361c0be06c50f0a82598cbfa1a965f40f/LICENSE)
+
+使用 research / agent-reach 的 GitHub CLI 路径克隆上述 tag 到临时目录,并以 Microsoft 官方文档核对系统上限。对库包执行 `CGO_ENABLED=0 GOOS=<目标> go build .`:zalando 的 darwin/windows/linux、99designs 的 windows/linux 均编译通过;只编译库,没有运行其初始化或凭证操作。未调查替代库、未做安全审计,也未调用真实凭证库;这些结果不是 Ship 或存储的跨平台运行验收。
diff --git a/docs/research/2026-09-17-vercel-hobby-evaluation.md b/docs/research/2026-09-17-vercel-hobby-evaluation.md
new file mode 100644
index 0000000..d56873e
--- /dev/null
+++ b/docs/research/2026-09-17-vercel-hobby-evaluation.md
@@ -0,0 +1,122 @@
+# Vercel Hobby 与 Ship 的适配评估
+
+核查日期:2026-09-17。范围:Vercel 官方文档、定价页和开放源码计划。通过 agent-reach 的 Exa、Jina Reader 读取,定价表与构建限制再以官方原页交叉核对。本次没有登录账号、部署应用、修改云资源或进行费用设置。
+
+后续实测更新(同日):经用户授权,Go HTTP 容器已在个人 Hobby 账号完成构建、Neon 读写、源码更新和闲置后访问检查。需要显式 Container 预设。工具控制的 Chrome 曾出现客户端拦截;用户随后确认手动 Chrome 能看到健康 JSON,同轮 curl 复查通过。普通访问已确认,自动化路径的原因仍未定位。实际证据与限制见 [Vercel 验证结果](../../validation/VERCEL-RESULTS.md),不将文档支持范围直接等同于所有语言或账号已验收。
+
+## 结论
+
+**Vercel Hobby 值得成为个人非商用应用的候选路径;它现在支持 HTTP 容器,不能再按“不支持 Docker、Rust 或 WebSocket”的旧印象排除。它仍然不是免费通用 VPS,也不适合作为所有 Ship 用户的统一免费默认。**
+
+前一句依据是当前运行时与 Container Images 文档;后一句是由 Hobby 的用途、请求生命周期和额度限制得出的产品判断,尚未在 Ship 中实测。[官方运行时](https://vercel.com/docs/functions/runtimes)、[容器部署](https://vercel.com/docs/functions/container-images)、[Hobby 套餐](https://vercel.com/docs/plans/hobby)
+
+## 1. 最大边界:Hobby 仅限个人非商用
+
+官方限制不只是“网站有没有收费按钮”。以参与项目生产的任何人的经济收益为目的,包含付费雇员或顾问编写项目,均可能构成 commercial usage;示例包括收款、宣传产品或服务销售、收费制作/更新/托管网站、主要用于联盟推广、刊登广告。单纯请求捐赠不算商业使用。商业用途要求 Pro 或 Enterprise;有歧义时官方要求联系支持确认。[Fair Use Guidelines](https://vercel.com/docs/limits/fair-use-guidelines#commercial-usage)
+
+**对 Ship 的推论:Ship 自身开源、免费,不会让它部署的用户应用自动取得 Hobby 非商用资格。** 商用 SaaS、接单网站、公司业务应用不能因为通过 Ship 部署就默认选择 Hobby。
+
+## 2. 当前主要免费额度
+
+以下为 Hobby 当前公开额度,按月提供;额度按所属 Hobby 账号/团队汇总理解,不应按每个项目重复计算。实际账号 Usage 页和资源限制仍需验收。[Hobby 套餐](https://vercel.com/docs/plans/hobby)、[定价总表](https://vercel.com/pricing)
+
+| 资源 | Hobby 额度 | 如何理解 |
+| --- | --- | --- |
+| Fast Data Transfer | 100 GB/月 | 平台向用户交付内容的流量 |
+| Fast Origin Transfer | 10 GB/月 | 源站计算与交付网络间的流量;不是额外 10 GB 用户流量赠送 |
+| Edge Requests | 100 万次/月 | 静态和动态请求都可能消耗,不能等同于访客人数 |
+| Function Invocations | 100 万次/月 | 到达函数的调用,包含失败调用 |
+| Fluid Active CPU | 4 CPU 小时/月 | 代码实际占用 CPU 的时间;等待数据库/API 不计入 CPU |
+| Fluid Provisioned Memory | 360 GB·小时/月 | 分配内存 × 实例处理请求的时间,I/O 等待仍计入 |
+| VCR 镜像存储,Beta | 10 GB/月 included | 来自主定价表的 Hobby 列;不是数据库容量 |
+| 构建 | Basic 构建机 included | 2 vCPU、8 GB 内存、32 GB 磁盘;同时 1 次构建 |
+| 发布频率与单次构建 | 100 次部署/天;单次构建最多 45 分钟 | 频率/时间约束,不等于服务器可运行时长 |
+
+CPU、内存计费口径与请求间无在途工作时不计 CPU/内存费用见 [Fluid pricing](https://vercel.com/docs/functions/usage-and-pricing)。构建配置见 [Managing Builds](https://vercel.com/docs/builds/managing-builds),单次构建和发布上限见 [Limits](https://vercel.com/docs/limits)。当前核查的主要官方页面没有确认常见旧资料所称的“6,000 构建分钟/月”,因此本报告不采用该数字。
+
+### 不要混用 Legacy 和 Fluid
+
+Fluid 自 2025-04-23 起对新项目默认开启。旧式非 Fluid 文档仍列 Hobby 100 GB·小时和 10 万次函数调用;它们不是当前 Fluid 的免费额度。是否使用 Fluid 要看项目和运行时,不能只看账号套餐。[Fluid](https://vercel.com/docs/fluid-compute)、[Legacy pricing](https://vercel.com/docs/functions/usage-and-pricing/legacy-pricing)
+
+### 用完额度会怎样
+
+Hobby 不能购买额外用量;当前 Hobby 说明是多数功能超额后需等到 30 天过去才可再次使用,部分功能暂停周期不同。不能承诺一定在下个自然月 1 日恢复,也不能把所有限制归纳为只停止新构建。Pro 才有按需付费路径,升级必须是用户明确选择。[定价 FAQ](https://vercel.com/pricing)、[Hobby billing cycle](https://vercel.com/docs/plans/hobby#hobby-billing-cycle)
+
+## 3. 已不只是静态网页或 JavaScript 函数
+
+| 路径 | 当前官方状态 | 对兼容性的影响 |
+| --- | --- | --- |
+| Node.js、Python | 官方运行时;Python 支持 ASGI/WSGI | 可部署 API/动态网站,仍需满足运行生命周期和依赖限制 |
+| Rust | 官方 Rust runtime,所有套餐 Beta,使用 `vercel_runtime` | 不应再描述成只有社区支持;原生函数入口涉及平台适配 |
+| Go | 官方 Go runtime,所有套餐 Beta;支持 `net/http`、chi、gin HTTP 服务,也保留 `/api` handler 路径 | `framework=go`,根 `go.mod`,识别 `main.go`、`cmd/api/main.go`、`cmd/server/main.go`,监听 `PORT` |
+| Docker/OCI HTTP 容器 | Container Images 所有套餐 Beta | 可云端构建容器,语言自由度更接近 Ship 既有契约 |
+
+来源:[Runtimes](https://vercel.com/docs/functions/runtimes)、[Rust](https://vercel.com/docs/functions/runtimes/rust)、[Go](https://vercel.com/docs/functions/runtimes/go)、[Container Images](https://vercel.com/docs/functions/container-images)。
+
+运行时汇总页对 Go 仍使用较旧的单 handler 描述,而 Go 专页已列标准 HTTP 服务;本报告采用更具体的 Go 专页。Fluid 支持列表目前没有列 Go,虽然 Go 专页已能接标准服务器,因此**原生 Go 路径的 Fluid 资格与额度不能只凭其它运行时推定**。容器页则明确采用 Functions 的 Active CPU 模型。[Go 专页](https://vercel.com/docs/functions/runtimes/go)、[Fluid runtime support](https://vercel.com/docs/fluid-compute#available-runtime-support)
+
+### 容器的具体契约
+
+- 根目录 `Dockerfile.vercel` 或 `Containerfile.vercel` 会被检测,部署时云端构建、上传 VCR 并路由请求;本地 `vercel dev` 才要求本机 Docker。
+- 容器必须提供 HTTP 服务,默认端口 80,可用 `PORT` 环境变量覆盖。
+- 生产环境 5 分钟无流量、预览环境 30 秒无流量后缩容;退出前有 SIGTERM 和 30 秒清理窗口。
+- 使用 Functions 的限制和 Active CPU 计费,当前不支持 Secure Compute、Static IPs。
+
+来源:[Container Images,更新于 2026-07-07](https://vercel.com/docs/functions/container-images)。
+
+VCR 的存储接受镜像总压缩大小最多 15 GB、单个压缩 layer 最多 500 MB;Hobby 每项目 10 个仓库、每仓库 50 个镜像。**这是镜像仓库存储限制,不代表全部这样的镜像都能成功启动为 Function。** [VCR limits](https://vercel.com/docs/container-registry/limits-and-pricing)
+
+VCR 专项页只列 $0.10/GB 通用价格,主定价表则明确区分 Hobby 10 GB/月 included 与 Pro $0.10/GB-month。报告保留这一表述差异;真实验收应核对 Hobby 账号资格、Usage 和镜像储存累积,不能因“所有套餐可用”就省略费用检查。[VCR 专项页](https://vercel.com/docs/container-registry/limits-and-pricing)、[有套餐列的主定价表](https://vercel.com/pricing)
+
+### 生命周期仍影响应用
+
+Fluid Hobby 当前最大单次执行 300 秒,2 GB 内存、1 vCPU;网络等待计入请求时长。标准函数只读文件系统加临时空间,不应把实例文件或内存作为持久业务数据。持续不退出的队列 worker、依赖本地持久盘的数据库,不适合直接当成普通免费服务器运行。[Functions limits](https://vercel.com/docs/functions/limitations)、[文件系统与归档](https://vercel.com/docs/functions/runtimes#file-system-support)
+
+WebSocket **现在支持**所有套餐 Beta,需 Fluid。连接到最大函数时长会断开,客户端需要重连、恢复订阅,重连也不保证落到同一实例;持久房间/状态需要外部存储。不能描述为“永久常驻 WebSocket 服务器”。[WebSockets,更新于 2026-08-10](https://vercel.com/docs/functions/websockets)
+
+`waitUntil` 只延长请求生命周期内的后台工作,不等于无限运行的 daemon。Vercel 有独立 Workflows 方案支持持久化暂停与恢复;使用它意味着新增平台 API 与计费维度,本次不纳入 Ship 通用容器能力。[Fluid background processing](https://vercel.com/docs/fluid-compute)、[Functions limits](https://vercel.com/docs/functions/limitations)
+
+## 4. PostgreSQL 与开源赠额是不同的边界
+
+Vercel Storage 当前主要为 Blob、Global Config 和 Marketplace 数据库;PostgreSQL 来自 Neon、Supabase 等提供方,套餐和额度由提供方决定。它可以把数据库凭证注入项目环境变量,但这不代表 Hobby 自动赠送一套无限 PostgreSQL,也不代表数据库归 Ship 管理。[Storage overview](https://vercel.com/docs/storage)
+
+**建议推论:** 首次 Vercel 验证继续使用独立的 Neon Free 账号/项目和标准 PostgreSQL 连接,先只改变计算平台,有利于比较迁移成本。是否走 Marketplace 自动开户另行评估,不在本轮同时更换数据库或创建资源。
+
+Vercel 的 OSS Program 要申请并经选择,当前公开权益为 3 年共 $3,600 平台 credits;需持续维护、有影响或潜力、Code of Conduct,credits 仅用于该开源项目。Marketplace 服务商额度不包含在内。它是给获选项目的支持,不能变成所有 Ship 用户免费额度的基础。[Open Source Program](https://vercel.com/open-source-program)
+
+## 5. 下一次最小验证与待确认项
+
+以下是研究建议,不是已完成的兼容性声明:
+
+1. 用**用户自己账号中的个人非商用测试项目**,先只验证现有 Go HTTP + Neon 样例的 Vercel 路径;保留源端,不切换现有演示域名。
+2. 优先试 `Dockerfile.vercel` 路径以延续语言无关契约,同时核对 Hobby 资格、Fluid 配置和 VCR 10 GB 额度是否在账号中实际可见。
+3. 验收云端构建、读写 PG、版本更新、闲置后恢复、日志、核对原部署和数据保留;查看真实 CPU/内存/流量消耗再估算容量。
+4. 若容器 Beta 兼容性或费用条件不满足,再比较标准 Go runtime;先实查其 Fluid 状态,不套用 Node/Python 额度。
+5. 已有官方网页说明不足以证明我们的样例可部署、无需绑卡、可长期零费用或未来套餐不变;这些须在实际账号确认。
+
+不以新增通用调度框架、自动跨云迁移、申请 OSS 补贴作为第一次验证的前置条件。
+
+## 6. Ship 的平台选择与实施顺序(建议)
+
+保持“用户自己的账号、本地管理、普通多语言 HTTP 应用、费用需用户主动选择”的产品边界。按应用的运行要求和用途筛选可用方案,再比较免费额度。一个固定供应商无法同时覆盖个人展示、商业应用、常驻 worker 和所有容器依赖。
+
+| 路径 | 最适合验证的场景 | 决定性边界 | 在 Ship 中的建议角色 |
+| --- | --- | --- | --- |
+| Vercel Hobby + Neon | 个人非商用的 HTTP 应用,包含现有 Go/Rust 容器候选 | 用途限制、Container Images Beta、请求生命周期和多项月度额度 | 下一条优先做小型实测的计算路径 |
+| Cloudflare 静态资源 / Workers + Neon | 静态前端,以及适配 Workers 的轻量 API | 动态请求每天 10 万、每次 10ms CPU、128MB;普通容器需 Paid | 适用应用的免费路线,保持运行时适配边界 |
+| Railway + Neon | 已验证的普通容器部署、更新与故障核对 | 正式 Free 每月 $1;当前 Ship 发布仅验收 Trial | 保留现有证据与适配,费用模式应明确展示 |
+| Render Free + Neon | 接受明显冷启动、无持久本地文件的个人 HTTP 容器实验 | 每 workspace 750实例小时/月;15分钟空闲休眠,恢复约1分钟;费用状态和主动公网流量限制 | 容器备用候选,暂不同时实现 |
+
+Vercel依据见上文;Cloudflare来源:[Workers limits](https://developers.cloudflare.com/workers/platform/limits/)、[静态资源计费](https://developers.cloudflare.com/workers/static-assets/billing-and-limitations/)、[Containers pricing](https://developers.cloudflare.com/containers/platform/pricing/)。Railway来源:[Plans](https://docs.railway.com/pricing/plans)、[Trial](https://docs.railway.com/pricing/free-trial)。Render来源:[Free](https://render.com/docs/free)、[Docker](https://render.com/docs/docker)。
+
+Render 仅作候选:Hobby workspace 当前出站赠额5GB/月,绑有支付方式时可能产生额外流量费用;未绑支付方式则到限暂停。对外部数据库等主动公网访问的异常高流量,官方保留暂停免费服务的机制。因此不能只看“750小时”就替代费用与网络验收,也不把其30天到期的免费 PostgreSQL 当成长期数据库方案。[出站费用](https://render.com/docs/outbound-bandwidth)、[免费限制](https://render.com/docs/free)
+
+### 先验证一条路径,再修改产品
+
+1. **最高 ROI:Vercel Hobby 的资格与一次 Go 容器对照。** 复用已有样例和 PostgreSQL 数据模型,只改变计算部署方式;先确认账号能使用上述免费能力,再部署隔离测试项目。验证的是兼容性和可观测成本,不承诺整月零账单或普遍适用。
+2. **验证通过后:新增一条可选 Vercel 路径。** 复用操作记录、授权、日志脱敏、访问检查和结果未知时的核对规则。当前 `Project`、资源检查和发布调用仍绑定 Railway/Neon;接入 Vercel 需要具体实现,不能仅靠换 CLI 或改配置宣称完成。
+3. **再做独立用户复现。** 给出适用条件、安装入口及同一套可复现样例,观察注册、授权、部署、更新和诊断中的实际卡点。Cloudflare 按真实应用需要进入下一次验证。
+
+第一步投入相对小,可同时回答“现有容器是否少改可用”“免费额度是否比Railway更适合”“Beta与供应商API是否足够接入”三个问题。一次性实现四个平台的投入大,且不能替代账号与应用实测,不建议作为下一步。
+
+本次仅新增研究笔记。未调整既有ADR、代码或默认供应商,未登录Vercel、执行部署、改域名、申请付费或推送仓库。
diff --git a/scripts/install.sh b/scripts/install.sh
index 954f29c..3a47276 100755
--- a/scripts/install.sh
+++ b/scripts/install.sh
@@ -28,6 +28,7 @@ cp "$repo/validation/cloud-tools/package.json" "$repo/validation/cloud-tools/pac
npm ci --prefix "$stage/tools" --no-audit --no-fund
"$stage/tools/node_modules/.bin/railway" --version
"$stage/tools/node_modules/.bin/neon" --version
+VERCEL_TELEMETRY_DISABLED=1 NO_UPDATE_NOTIFIER=1 "$stage/tools/node_modules/.bin/vercel" --version
cp "$repo/docs/ALPHA.md" "$stage/docs/"
mkdir -p "$stage/docs/research"
cp "$repo/docs/research/2026-09-16-free-plan-boundaries.md" "$stage/docs/research/"
diff --git a/skills/ship/SKILL.md b/skills/ship/SKILL.md
index 420e759..5cff53f 100644
--- a/skills/ship/SKILL.md
+++ b/skills/ship/SKILL.md
@@ -1,14 +1,14 @@
---
name: ship
-description: "Manage projects registered with the local ship tool: inspect real Railway and Neon status, publish source, inspect logs, and reconcile interrupted operations. Use for this tool's registered projects; resource creation and database migration are not implemented in its internal alpha."
+description: "Manage projects registered with the local ship tool: inspect real Railway/Vercel and Neon status, publish source, inspect logs, and reconcile interrupted operations. Use for this tool's registered projects; resource creation and database migration are not implemented in its internal alpha."
---
# Ship
Use the local CLI from this repository (`bin/ship` after building). Read [the alpha guide](../../docs/ALPHA.md) when installation, authentication, project registration, or supported scope is unclear. The webpage and CLI share the same local records; opening the webpage is optional.
-1. Run `ship list` and select the project matching the user's request. For a new binding, establish its source directory and exact resource ownership before `register`. Keep cloud credentials in the official CLI stores; resource IDs belong in the binding, credentials do not.
-2. Run `ship status NAME`. Report the observed account plan as Trial, Free or unverified. Trial is a time-limited test path, not proof of a formally validated Free combination. The executable performs fresh ownership and billing checks before each publish.
+1. Run `ship list` and select the project matching the user's request. For a new binding, establish its source directory and exact resource ownership before `register`. Keep cloud login credentials in the official CLI stores; resource IDs belong in the binding. Ship-owned business secrets are stored separately in private local files, never in source or chat.
+2. Run `ship status NAME`. Report the observed account plan and use restrictions; Vercel Hobby requires personal noncommercial use. Trial is a time-limited test path, not proof of a formally validated Free combination. The executable performs fresh ownership and billing checks before each publish.
3. For a requested source update, use `ship publish NAME --detach`, then `ship reconcile NAME --wait`. An existing `allow_publish` authorization covers regular updates to that binding; do not ask for it again. Grant or revoke project permissions with `authorize` only within the user's stated scope. Accept Trial conditions only if the user has already accepted them or confirms that choice now.
4. Read the resulting operation and application checks separately. `deployed` means the provider finished deployment; claim application accessibility only when the checks passed. Sleep, a failed request, and a failed deployment are different observations.
@@ -17,3 +17,9 @@ Use the local CLI from this repository (`bin/ship` after building). Read [the al
`unknown`, a timeout, or a lost command response requires `reconcile`, not another `publish`. The stored marker identifies the original cloud deployment. If reconciliation cannot uniquely identify it, preserve that uncertainty and discuss it with the user. Never remove operation records merely to bypass the duplicate-submit guard.
Use `logs` for diagnosis; it suppresses known credentials and common secret patterns, but review output before sharing it. Inspect source changes for migrations or other high-impact behavior before treating an update as routine. Changes to billing, destructive resource actions, and unsupported lifecycle operations require a separate user decision; this skill does not authorize them.
+
+## Local secret files
+
+The default state is `~/.ship`; `--state-dir` can select an isolated state. `secret save NAME KEY --stdin` stores plaintext in an owner-only per-project file and does not change cloud configuration. Pass values through stdin from an authorized source; inspect them through `secret list` / `secret check` rather than printing or attaching the files. Preserve reference IDs and unresolved writes during migration. Secret configuration changes require their own user authorization; `unknown` requires read-only reconciliation or a user decision, not another apply.
+
+Ordinary Vercel source deployment retains existing provider Secrets and does not require importing or rewriting them. Report unreadable database configuration as unverified. Apply secret changes only when configuration changes are authorized; an unknown write still requires reconciliation or an explicit, evidence-backed disposition. Log filtering covers known values and common patterns, not every provider-hidden value.
diff --git a/validation/VERCEL-RESULTS.md b/validation/VERCEL-RESULTS.md
new file mode 100644
index 0000000..00737ad
--- /dev/null
+++ b/validation/VERCEL-RESULTS.md
@@ -0,0 +1,79 @@
+# Vercel Hobby:Go 容器与 Neon 验证
+
+2026-09-17。先通过固定版本官方 CLI 完成独立实验,随后已通过 Ship CLI 完成两轮真实 Go HTTP 容器发布、PostgreSQL 读写、源码更新和数据保留检查。下文保留早期实验与问题诊断;最新结果见 [Ship 验收记录](results/ship-vercel-acceptance.json)。
+
+[公开健康接口](https://upok-vercel-20260917-go.vercel.app/healthz) · [脱敏结果](results/vercel-container-report.json) · [工具与复现准备](vercel-tools/README.md)
+
+## 结果
+
+| 检查 | 实测结果 |
+| --- | --- |
+| 套餐与归属 | API 与网页确认个人 Hobby;原 Neon 组织仍为 Free;未升级套餐 |
+| 镜像存储额度 | 账号 Usage 网页显示 10GB;实际 registry 有两份约31MB的镜像 |
+| Docker 构建 | 日志确认多阶段 Go 编译、CA 证书安装和 VCR 推送 |
+| v1 HTTP/PostgreSQL | 完整鉴权、输入检查和读写验证通过,0次传输重试 |
+| 源码更新 | 源码加入版本标识后重新构建,镜像摘要改变,接口返回 `vercel-v1-source2` |
+| 数据保留 | 新测试记录和原 Railway 验收记录在更新后都保持一致 |
+| 闲置后访问 | 360秒无测试请求后,首次 `/readyz` 返回200,约1.780秒,TLS校验通过,0重试 |
+| 日志 | 通过CLI读取17条请求日志,取样未发现已知数据库凭证或验证令牌 |
+| 清理 | 删除本轮创建的临时数据行;保留测试项目、部署和镜像供复核 |
+
+闲置检查没有取得平台已缩容到零的独立证据,因此不将1.780秒作为确定的容器冷启动指标或可用性承诺。
+
+## 两个实际问题
+
+### Other 框架设置导致 Ready,但应用未运行
+
+第一次创建测试项目时指定了 `framework: null`,对应 Other。虽然上传了 `Dockerfile.vercel`,预检仍显示 Other;云端约30毫秒完成构建,没有容器构建记录,平台报 Ready,但 `/healthz` 返回404。
+
+在样例 `vercel.json` 中显式设置 `{"framework":"container"}` 后,预检识别为 Container,后续日志确认真实Docker构建,业务检查通过。发布流程必须同时验证预设、构建产物和应用响应。
+
+### 自动化 Chrome 曾被客户端拦截,手动访问已确认
+
+匿名 curl 的实际HTTP与数据库检查通过,但工具控制的 Chrome 导航到同一健康接口时返回 `net::ERR_BLOCKED_BY_CLIENT`。没有修改浏览器扩展、代理或网络规则;具体拦截来源尚未确定。
+
+后续只读诊断再次复现两次,Chrome 网络事件报告 `blockedReason: inspector`,未观察到主文档的服务端响应;同址 curl 返回200和正确版本。这把范围缩小到浏览器调试或控制路径,但还不能确定具体扩展或组件。浏览器工具的URL安全策略拒绝读取 `chrome://extensions/`,未尝试绕过。
+
+用户随后手动在 Chrome 打开同一地址,报告能看到 `status: ok` 和版本字段的 JSON;用户没有逐字提供版本号。同轮 curl 复查返回200、TLS校验通过、版本为 `vercel-v1-source2`。普通浏览器访问已由用户确认,可继续评估适配器;工具控制路径没有重新验收,也未宣称已修复。[诊断记录](results/browser-access-diagnosis.json)
+
+## 费用证据的边界
+
+官方CLI的 `vercel usage` 在此Hobby账号上未返回计费数据,未将它当作用量为零。网页确认了实际套餐和各项额度,但新镜像已经出现在registry时,用量页面仍显示镜像存储为0,说明存在统计延迟。
+
+这次证明了当前账号可以在Hobby条件下部署并运行样例,没有主动启用付费、创建新数据库或更换已有域名。它没有证明完整月份的零账单、全部账号资格、额度耗尽行为或商业用途可使用Hobby。
+
+## 对 Ship 的含义
+
+Vercel HTTP容器与外部PostgreSQL的组合已有实际证据,可继续评估为个人非商用应用的可选路径。原有20个本地样例/检查文件保持原始指纹;本轮只在隔离副本中添加Vercel配置和源码版本标识。
+
+正式适配仍需实现Vercel的资源关联、费用预检、部署元数据核对与状态展示。其他语言、独立用户流程和提交响应丢失后的恢复需要分别验收。
+
+## Secret 边界与本地密钥管理
+
+同日只读调用已有测试项目的环境变量接口,`DATABASE_URL` 和 `VALIDATION_TOKEN` 均为 `type: sensitive`、`visibility: secret`、作用于 `production`,响应不包含值。`PORT`、`APP_VERSION` 和 `DATABASE_SSLMODE` 为可读 Config。未修改变量,也未将凭证改为可读配置。
+
+Vercel 官方说明 Secret 保存后只写不可读。因此当前 Railway 实现中依靠读回完整变量进行的数据库目标核对、已知密钥源码扫描和日志精确脱敏,不能原样移植。`/readyz` 成功只能证明应用自报数据库就绪,不能证明它连接的是登记的 Neon 数据库;供应商的构建日志遮蔽也不能代替 Ship 对所有运行日志的脱敏承诺。[Secret 官方说明](https://vercel.com/docs/environment-variables/sensitive-environment-variables)
+
+用户确认采用本地密钥保存方案。已实现 macOS Keychain 存储、引用记录、保留旧值供日志遮蔽,以及源码上传前的已知密钥检查。合成值的真实钥匙串跨进程存取、不同构建读回和测试项清理通过。普通项目 JSON 不保存密钥值。本地保存与云端应用是分开的操作,缓存不能代替云端当前配置的证明。
+
+Vercel 接入代码已加入本地分支,单元测试覆盖费用/归属限制、Secret 变更检测、未知写入与未知部署不重复提交。真实账号成功关联已有项目,但第一次 `DATABASE_URL` 同值 Secret 写入未能确认;其本地状态保持 `unknown`,尚未写入 `VALIDATION_TOKEN` 或发布新版本。
+
+只读复查显示远端 Secret ID 和版本未变、写入标记没有出现,Secret 仍不可读;现有应用 `/healthz` 与 `/readyz` 返回200。原始 CLI 错误细节未留存,原因未确定。代码已对齐固定版本官方 CLI 使用的 v10 更新端点,并省略不需要修改的 key 字段;这只是待验证修正,未据此重试。按用户要求暂停云端变更,待讨论是否用独立的合成测试变量验证写入行为。[接入进展](results/vercel-adapter-report.json)
+
+## 本地存储后续调整
+
+用户随后选择受限权限的本地明文文件方案。当前代码已移除钥匙串/cgo 依赖,默认状态目录改为 `~/.ship`,业务密钥按项目单独保存。此前的钥匙串验证保留为历史证据。读取旧钥匙串的系统命令超时后,本机通过原始、已授权的私有测试输入恢复了缓存值;原钥匙串和旧状态保留回滚。存储迁移没有修改 Secret 写入标记、版本或 `unknown` 状态,也没有云端请求。[本地存储验收](results/local-secret-files-report.json)
+
+## Secret 更新请求的隔离诊断
+
+在同一测试项目内创建只含随机合成文本的临时 Secret,依次比较三个请求:v9 + key、v10 + key 均返回400,错误为不允许修改 Sensitive Environment Variable 的 key;v10 不带 key 时成功,元数据出现对应标记。说明字段本身才是决定性差异,而非接口版本。测试变量已删除,DATABASE_URL 与 VALIDATION_TOKEN 的标识、版本及元数据保持不变。
+
+普通源码发布已改为沿用平台已有 Secret;不可读值不被假装核验成功,未知写入仍保留阻止规则。本地回归测试通过,真实 Ship 部署验收尚待原历史记录处置。旧请求的错误文本当时未保存,故历史根因关联来自同请求结构复现与元数据对照,不当作原始回执。源码干跑识别 Container 预设和6个预期文件,没有上传或创建部署。[脱敏实验记录](results/vercel-secret-update-diagnosis.json)
+
+## Ship CLI 完整验收
+
+用户明确同意将旧的未知 Secret 写入按“经诊断未生效”归档。新代码沿用现有平台 Secret,先发布 `vercel-v1-ship-alpha1`,再改动源码发布 `vercel-v1-ship-alpha2`;两次部署 ID 和源码摘要不同,公网接口返回对应版本。原 Railway 验收记录及本轮保留数据在更新后均一致,完整鉴权/输入验证/PostgreSQL 读写通过,临时数据已清理。
+
+读取40条运行日志,取样未发现已知数据库连接串、数据库密码或验证令牌。DATABASE_URL 和 VALIDATION_TOKEN 的平台元数据保持不变,没有新建数据库、升级套餐、修改已有自有域名或调整 Railway 资源。数据库目标身份在通用工具中仍按不可读配置报告未核验;本次受控样例的数据行为另有实际证据。
+
+部署后分别用新的 CLI 进程核对原操作;未新增替代部署来处理未知状态。真实环境中的丢失提交响应故障注入尚未做,此项由本地回归测试覆盖。外部开发者独立复现仍待完成。
diff --git a/validation/cloud-tools/package-lock.json b/validation/cloud-tools/package-lock.json
index ca1f958..4156505 100644
--- a/validation/cloud-tools/package-lock.json
+++ b/validation/cloud-tools/package-lock.json
@@ -9,9 +9,16 @@
"version": "0.1.0",
"dependencies": {
"@railway/cli": "5.57.2",
- "neon": "4.18.0"
+ "neon": "4.18.0",
+ "vercel": "59.20.0"
}
},
+ "node_modules/@bytecodealliance/preview2-shim": {
+ "version": "0.17.6",
+ "resolved": "https://registry.npmmirror.com/@bytecodealliance/preview2-shim/-/preview2-shim-0.17.6.tgz",
+ "integrity": "sha512-n3cM88gTen5980UOBAD6xDcNNL3ocTK8keab21bpx1ONdA+ARj7uD1qoFxOWCyKlkpSi195FH+GeAut7Oc6zZw==",
+ "license": "(Apache-2.0 WITH LLVM-exception)"
+ },
"node_modules/@clack/core": {
"version": "0.4.2",
"resolved": "https://registry.npmmirror.com/@clack/core/-/core-0.4.2.tgz",
@@ -33,6 +40,88 @@
"sisteransi": "^1.0.5"
}
},
+ "node_modules/@edge-runtime/format": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/@edge-runtime/format/-/format-2.2.1.tgz",
+ "integrity": "sha512-JQTRVuiusQLNNLe2W9tnzBlV/GvSVcozLl4XZHk5swnRZ/v6jp8TqR8P7sqmJsQqblDZ3EztcWmLDbhRje/+8g==",
+ "license": "MPL-2.0",
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/@edge-runtime/node-utils": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/@edge-runtime/node-utils/-/node-utils-2.3.0.tgz",
+ "integrity": "sha512-uUtx8BFoO1hNxtHjp3eqVPC/mWImGb2exOfGjMLUoipuWgjej+f4o/VP4bUI8U40gu7Teogd5VTeZUkGvJSPOQ==",
+ "license": "MPL-2.0",
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/@edge-runtime/ponyfill": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmmirror.com/@edge-runtime/ponyfill/-/ponyfill-2.4.2.tgz",
+ "integrity": "sha512-oN17GjFr69chu6sDLvXxdhg0Qe8EZviGSuqzR9qOiKh4MhFYGdBBcqRNzdmYeAdeRzOW2mM9yil4RftUQ7sUOA==",
+ "license": "MPL-2.0",
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/@edge-runtime/primitives": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/@edge-runtime/primitives/-/primitives-4.1.0.tgz",
+ "integrity": "sha512-Vw0lbJ2lvRUqc7/soqygUX216Xb8T3WBZ987oywz6aJqRxcwSVWwr9e+Nqo2m9bxobA9mdbWNNoRY6S9eko1EQ==",
+ "license": "MPL-2.0",
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/@edge-runtime/vm": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/@edge-runtime/vm/-/vm-3.2.0.tgz",
+ "integrity": "sha512-0dEVyRLM/lG4gp1R/Ik5bfPl/1wX00xFwd5KcNH602tzBa09oF7pbTKETEhR1GjZ75K6OJnYFu8II2dyMhONMw==",
+ "license": "MPL-2.0",
+ "dependencies": {
+ "@edge-runtime/primitives": "4.1.0"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/@emnapi/core": {
+ "version": "1.11.3",
+ "resolved": "https://registry.npmmirror.com/@emnapi/core/-/core-1.11.3.tgz",
+ "integrity": "sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg==",
+ "license": "MIT",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "@emnapi/wasi-threads": "1.2.3",
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@emnapi/runtime": {
+ "version": "1.11.3",
+ "resolved": "https://registry.npmmirror.com/@emnapi/runtime/-/runtime-1.11.3.tgz",
+ "integrity": "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==",
+ "license": "MIT",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@emnapi/wasi-threads": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmmirror.com/@emnapi/wasi-threads/-/wasi-threads-1.2.3.tgz",
+ "integrity": "sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g==",
+ "license": "MIT",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
"node_modules/@esbuild/aix-ppc64": {
"version": "0.28.1",
"resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz",
@@ -449,6 +538,15 @@
"node": ">=18"
}
},
+ "node_modules/@fastify/busboy": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/@fastify/busboy/-/busboy-2.1.1.tgz",
+ "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14"
+ }
+ },
"node_modules/@hono/node-server": {
"version": "2.0.4",
"resolved": "https://registry.npmmirror.com/@hono/node-server/-/node-server-2.0.4.tgz",
@@ -467,6 +565,27 @@
"integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==",
"license": "ISC"
},
+ "node_modules/@isaacs/balanced-match": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz",
+ "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==",
+ "license": "MIT",
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
+ "node_modules/@isaacs/brace-expansion": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz",
+ "integrity": "sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@isaacs/balanced-match": "^4.0.1"
+ },
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
"node_modules/@isaacs/fs-minipass": {
"version": "4.0.1",
"resolved": "https://registry.npmmirror.com/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz",
@@ -822,6 +941,27 @@
"node": ">= 10"
}
},
+ "node_modules/@napi-rs/wasm-runtime": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmmirror.com/@napi-rs/wasm-runtime/-/wasm-runtime-1.2.4.tgz",
+ "integrity": "sha512-AJxoUD2/15ESHbvpcyjU274nsAPLuOtPHCk0vKJM5pj//Fg/B1FXNWjPnXTT9PymCYYiHo4zPj0ZomXBKhoy7g==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@tybys/wasm-util": "^0.10.3"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.13.0 || >=23.5.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Brooooooklyn"
+ },
+ "peerDependencies": {
+ "@emnapi/core": "^1.7.1 || ^2.0.0-alpha.4",
+ "@emnapi/runtime": "^1.7.1 || ^2.0.0-alpha.4"
+ }
+ },
"node_modules/@neon/config": {
"version": "1.5.0",
"resolved": "https://registry.npmmirror.com/@neon/config/-/config-1.5.0.tgz",
@@ -860,294 +1000,5802 @@
"node": ">=20.19.0"
}
},
- "node_modules/@railway/cli": {
- "version": "5.57.2",
- "resolved": "https://registry.npmmirror.com/@railway/cli/-/cli-5.57.2.tgz",
- "integrity": "sha512-rV1CTc/o7VmbDCsjEJeDIONNuWSStxJSEA4uQyhz1/Cz/K+Xp0VAqJpXW2hdQmSSJyEBnZakoG4ablQd8xgWQg==",
- "hasInstallScript": true,
- "license": "ISC",
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "license": "MIT",
"dependencies": {
- "node-fetch": "^3.1.0",
- "tar": "^6.1.11"
- },
- "bin": {
- "railway": "bin/railway.js"
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">= 8"
}
},
- "node_modules/@rollup/pluginutils": {
- "version": "5.4.0",
- "resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.4.0.tgz",
- "integrity": "sha512-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg==",
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
"license": "MIT",
- "dependencies": {
- "@types/estree": "^1.0.0",
- "estree-walker": "^2.0.2",
- "picomatch": "^4.0.2"
- },
"engines": {
- "node": ">=14.0.0"
- },
- "peerDependencies": {
- "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
- },
- "peerDependenciesMeta": {
- "rollup": {
- "optional": true
- }
+ "node": ">= 8"
}
},
- "node_modules/@sec-ant/readable-stream": {
- "version": "0.4.1",
- "resolved": "https://registry.npmmirror.com/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz",
- "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==",
- "license": "MIT"
- },
- "node_modules/@segment/analytics-core": {
- "version": "1.4.1",
- "resolved": "https://registry.npmmirror.com/@segment/analytics-core/-/analytics-core-1.4.1.tgz",
- "integrity": "sha512-kV0Pf33HnthuBOVdYNani21kYyj118Fn+9757bxqoksiXoZlYvBsFq6giNdCsKcTIE1eAMqNDq3xE1VQ0cfsHA==",
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
"license": "MIT",
"dependencies": {
- "@lukeed/uuid": "^2.0.0",
- "@segment/analytics-generic-utils": "1.1.1",
- "dset": "^3.1.2",
- "tslib": "^2.4.1"
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
}
},
- "node_modules/@segment/analytics-generic-utils": {
- "version": "1.1.1",
- "resolved": "https://registry.npmmirror.com/@segment/analytics-generic-utils/-/analytics-generic-utils-1.1.1.tgz",
- "integrity": "sha512-THTIzBPHnvu1HYJU3fARdJ3qIkukO3zDXsmDm+kAeUks5R9CBXOQ6rPChiASVzSmwAIIo5uFIXXnCraojlq/Gw==",
+ "node_modules/@oxc-parser/binding-android-arm-eabi": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-android-arm-eabi/-/binding-android-arm-eabi-0.121.0.tgz",
+ "integrity": "sha512-n07FQcySwOlzap424/PLMtOkbS7xOu8nsJduKL8P3COGHKgKoDYXwoAHCbChfgFpHnviehrLWIPX0lKGtbEk/A==",
+ "cpu": [
+ "arm"
+ ],
"license": "MIT",
- "dependencies": {
- "tslib": "^2.4.1"
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
}
},
- "node_modules/@segment/analytics-node": {
- "version": "1.3.0",
- "resolved": "https://registry.npmmirror.com/@segment/analytics-node/-/analytics-node-1.3.0.tgz",
- "integrity": "sha512-lRLz1WZaDokMoUe299yP5JkInc3OgJuqNNlxb6j0q22umCiq6b5iDo2gRmFn93reirIvJxWIicQsGrHd93q8GQ==",
+ "node_modules/@oxc-parser/binding-android-arm64": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-android-arm64/-/binding-android-arm64-0.121.0.tgz",
+ "integrity": "sha512-/Dd1xIXboYAicw+twT2utxPD7bL8qh7d3ej0qvaYIMj3/EgIrGR+tSnjCUkiCT6g6uTC0neSS4JY8LxhdSU/sA==",
+ "cpu": [
+ "arm64"
+ ],
"license": "MIT",
- "dependencies": {
- "@lukeed/uuid": "^2.0.0",
- "@segment/analytics-core": "1.4.1",
- "@segment/analytics-generic-utils": "1.1.1",
- "buffer": "^6.0.3",
- "node-fetch": "^2.6.7",
- "tslib": "^2.4.1"
- },
+ "optional": true,
+ "os": [
+ "android"
+ ],
"engines": {
- "node": ">=14"
+ "node": "^20.19.0 || >=22.12.0"
}
},
- "node_modules/@segment/analytics-node/node_modules/node-fetch": {
- "version": "2.7.0",
- "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.7.0.tgz",
- "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "node_modules/@oxc-parser/binding-darwin-arm64": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-darwin-arm64/-/binding-darwin-arm64-0.121.0.tgz",
+ "integrity": "sha512-A0jNEvv7QMtCO1yk205t3DWU9sWUjQ2KNF0hSVO5W9R9r/R1BIvzG01UQAfmtC0dQm7sCrs5puixurKSfr2bRQ==",
+ "cpu": [
+ "arm64"
+ ],
"license": "MIT",
- "dependencies": {
- "whatwg-url": "^5.0.0"
- },
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"engines": {
- "node": "4.x || >=6.0.0"
- },
- "peerDependencies": {
- "encoding": "^0.1.0"
- },
- "peerDependenciesMeta": {
- "encoding": {
- "optional": true
- }
+ "node": "^20.19.0 || >=22.12.0"
}
},
- "node_modules/@sindresorhus/merge-streams": {
- "version": "4.0.0",
- "resolved": "https://registry.npmmirror.com/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz",
- "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==",
+ "node_modules/@oxc-parser/binding-darwin-x64": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-darwin-x64/-/binding-darwin-x64-0.121.0.tgz",
+ "integrity": "sha512-SsHzipdxTKUs3I9EOAPmnIimEeJOemqRlRDOp9LIj+96wtxZejF51gNibmoGq8KoqbT1ssAI5po/E3J+vEtXGA==",
+ "cpu": [
+ "x64"
+ ],
"license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": "^20.19.0 || >=22.12.0"
}
},
- "node_modules/@types/estree": {
- "version": "1.0.9",
- "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.9.tgz",
- "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==",
- "license": "MIT"
- },
- "node_modules/@vercel/nft": {
- "version": "1.11.0",
- "resolved": "https://registry.npmmirror.com/@vercel/nft/-/nft-1.11.0.tgz",
- "integrity": "sha512-m1QFg+U+3yPOnP1xSYJ73UIRxLOXdts1JOhiOiyPYqEsALgrXFFINvgUaD6R6iNvaBFAjHllBCbkfx4FuOdpaA==",
+ "node_modules/@oxc-parser/binding-freebsd-x64": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-freebsd-x64/-/binding-freebsd-x64-0.121.0.tgz",
+ "integrity": "sha512-v1APOTkCp+RWOIDAHRoaeW/UoaHF15a60E8eUL6kUQXh+i4K7PBwq2Wi7jm8p0ymID5/m/oC1w3W31Z/+r7HQw==",
+ "cpu": [
+ "x64"
+ ],
"license": "MIT",
- "dependencies": {
- "@mapbox/node-pre-gyp": "^2.0.0",
- "@rollup/pluginutils": "^5.1.3",
- "acorn": "^8.6.0",
- "acorn-import-attributes": "^1.9.5",
- "async-sema": "^3.1.1",
- "bindings": "^1.4.0",
- "estree-walker": "2.0.2",
- "glob": "^13.0.0",
- "graceful-fs": "^4.2.9",
- "node-gyp-build": "^4.2.2",
- "picomatch": "^4.0.4",
- "resolve-from": "^5.0.0"
- },
- "bin": {
- "nft": "out/cli.js"
- },
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
"engines": {
- "node": ">=20"
+ "node": "^20.19.0 || >=22.12.0"
}
},
- "node_modules/abbrev": {
- "version": "3.0.1",
- "resolved": "https://registry.npmmirror.com/abbrev/-/abbrev-3.0.1.tgz",
- "integrity": "sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==",
- "license": "ISC",
+ "node_modules/@oxc-parser/binding-linux-arm-gnueabihf": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.121.0.tgz",
+ "integrity": "sha512-PmqPQuqHZyFVWA4ycr0eu4VnTMmq9laOHZd+8R359w6kzuNZPvmmunmNJ8ybkm769A0nCoVp3TJ6dUz7B3FYIQ==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": "^18.17.0 || >=20.5.0"
+ "node": "^20.19.0 || >=22.12.0"
}
},
- "node_modules/acorn": {
- "version": "8.18.0",
- "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.18.0.tgz",
- "integrity": "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==",
+ "node_modules/@oxc-parser/binding-linux-arm-musleabihf": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.121.0.tgz",
+ "integrity": "sha512-vF24htj+MOH+Q7y9A8NuC6pUZu8t/C2Fr/kDOi2OcNf28oogr2xadBPXAbml802E8wRAVfbta6YLDQTearz+jw==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-parser/binding-linux-arm64-gnu": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.121.0.tgz",
+ "integrity": "sha512-wjH8cIG2Lu/3d64iZpbYr73hREMgKAfu7fqpXjgM2S16y2zhTfDIp8EQjxO8vlDtKP5Rc7waZW72lh8nZtWrpA==",
+ "cpu": [
+ "arm64"
+ ],
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-parser/binding-linux-arm64-musl": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.121.0.tgz",
+ "integrity": "sha512-qT663J/W8yQFw3dtscbEi9LKJevr20V7uWs2MPGTnvNZ3rm8anhhE16gXGpxDOHeg9raySaSHKhd4IGa3YZvuw==",
+ "cpu": [
+ "arm64"
+ ],
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-parser/binding-linux-ppc64-gnu": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.121.0.tgz",
+ "integrity": "sha512-mYNe4NhVvDBbPkAP8JaVS8lC1dsoJZWH5WCjpw5E+sjhk1R08wt3NnXYUzum7tIiWPfgQxbCMcoxgeemFASbRw==",
+ "cpu": [
+ "ppc64"
+ ],
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-parser/binding-linux-riscv64-gnu": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.121.0.tgz",
+ "integrity": "sha512-+QiFoGxhAbaI/amqX567784cDyyuZIpinBrJNxUzb+/L2aBRX67mN6Jv40pqduHf15yYByI+K5gUEygCuv0z9w==",
+ "cpu": [
+ "riscv64"
+ ],
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-parser/binding-linux-riscv64-musl": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.121.0.tgz",
+ "integrity": "sha512-9ykEgyTa5JD/Uhv2sttbKnCfl2PieUfOjyxJC/oDL2UO0qtXOtjPLl7H8Kaj5G7p3hIvFgu3YWvAxvE0sqY+hQ==",
+ "cpu": [
+ "riscv64"
+ ],
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-parser/binding-linux-s390x-gnu": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.121.0.tgz",
+ "integrity": "sha512-DB1EW5VHZdc1lIRjOI3bW/wV6R6y0xlfvdVrqj6kKi7Ayu2U3UqUBdq9KviVkcUGd5Oq+dROqvUEEFRXGAM7EQ==",
+ "cpu": [
+ "s390x"
+ ],
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-parser/binding-linux-x64-gnu": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.121.0.tgz",
+ "integrity": "sha512-s4lfobX9p4kPTclvMiH3gcQUd88VlnkMTF6n2MTMDAyX5FPNRhhRSFZK05Ykhf8Zy5NibV4PbGR6DnK7FGNN6A==",
+ "cpu": [
+ "x64"
+ ],
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-parser/binding-linux-x64-musl": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-linux-x64-musl/-/binding-linux-x64-musl-0.121.0.tgz",
+ "integrity": "sha512-P9KlyTpuBuMi3NRGpJO8MicuGZfOoqZVRP1WjOecwx8yk4L/+mrCRNc5egSi0byhuReblBF2oVoDSMgV9Bj4Hw==",
+ "cpu": [
+ "x64"
+ ],
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-parser/binding-openharmony-arm64": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-openharmony-arm64/-/binding-openharmony-arm64-0.121.0.tgz",
+ "integrity": "sha512-R+4jrWOfF2OAPPhj3Eb3U5CaKNAH9/btMveMULIrcNW/hjfysFQlF8wE0GaVBr81dWz8JLgQlsxwctoL78JwXw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-parser/binding-wasm32-wasi": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-wasm32-wasi/-/binding-wasm32-wasi-0.121.0.tgz",
+ "integrity": "sha512-5TFISkPTymKvsmIlKasPVTPuWxzCcrT8pM+p77+mtQbIZDd1UC8zww4CJcRI46kolmgrEX6QpKO8AvWMVZ+ifw==",
+ "cpu": [
+ "wasm32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@napi-rs/wasm-runtime": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@oxc-parser/binding-win32-arm64-msvc": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.121.0.tgz",
+ "integrity": "sha512-V0pxh4mql4XTt3aiEtRNUeBAUFOw5jzZNxPABLaOKAWrVzSr9+XUaB095lY7jqMf5t8vkfh8NManGB28zanYKw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-parser/binding-win32-ia32-msvc": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.121.0.tgz",
+ "integrity": "sha512-4Ob1qvYMPnlF2N9rdmKdkQFdrq16QVcQwBsO8yiPZXof0fHKFF+LmQV501XFbi7lHyrKm8rlJRfQ/M8bZZPVLw==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-parser/binding-win32-x64-msvc": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.121.0.tgz",
+ "integrity": "sha512-BOp1KCzdboB1tPqoCPXgntgFs0jjeSyOXHzgxVFR7B/qfr3F8r4YDacHkTOUNXtDgM8YwKnkf3rE5gwALYX7NA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-project/types": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-project/types/-/types-0.121.0.tgz",
+ "integrity": "sha512-CGtOARQb9tyv7ECgdAlFxi0Fv7lmzvmlm2rpD/RdijOO9rfk/JvB1CjT8EnoD+tjna/IYgKKw3IV7objRb+aYw==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/Boshen"
+ }
+ },
+ "node_modules/@oxc-transform/binding-android-arm-eabi": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-android-arm-eabi/-/binding-android-arm-eabi-0.111.0.tgz",
+ "integrity": "sha512-NdFLicvorfHYu0g2ftjVJaH7+Dz27AQUNJOq8t/ofRUoWmczOodgUCHx8C1M1htCN4ZmhS/FzfSy6yd/UngJGg==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-transform/binding-android-arm64": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-android-arm64/-/binding-android-arm64-0.111.0.tgz",
+ "integrity": "sha512-J2v9ajarD2FYlhHtjbgZUFsS2Kvi27pPxDWLGCy7i8tO60xBoozX9/ktSgbiE/QsxKaUhfv4zVKppKWUo71PmQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-transform/binding-darwin-arm64": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-darwin-arm64/-/binding-darwin-arm64-0.111.0.tgz",
+ "integrity": "sha512-2UYmExxpXzmiHTldhNlosWqG9Nc4US51K0GB9RLcGlTE23WO33vVo1NVAKwxPE+KYuhffwDnRYTovTMUjzwvZA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-transform/binding-darwin-x64": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-darwin-x64/-/binding-darwin-x64-0.111.0.tgz",
+ "integrity": "sha512-c4YRwfLV8Pj/ToiTCbndZaHxM2BD4W3bltr/fjXZcGypEK+U2RZFDL7tIZYT/tyneAC9hCORZKDaKhLLNuzPtA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-transform/binding-freebsd-x64": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-freebsd-x64/-/binding-freebsd-x64-0.111.0.tgz",
+ "integrity": "sha512-prvf32IcEuLnLZbNVomFosBu0CaZpyj3YsZ6epbOgJy8iJjfLsXBb+PrkO/NBKzjuJoJa2+u7jFKRE0KT7gSOw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-transform/binding-linux-arm-gnueabihf": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.111.0.tgz",
+ "integrity": "sha512-+se3579Wp7VOk8TnTZCpT+obTAyzOw2b/UuoM0+51LtbzCSfjKxd4A+o7zRl7GyPrPZvx57KdbMOC9rWB1xNrw==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-transform/binding-linux-arm-musleabihf": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.111.0.tgz",
+ "integrity": "sha512-8faC99pStqaSDPK/vBgaagAHUeL0LcIzfeSjSiDTtvPGc3AwZIeqC1tx3CP15a6tWXjdgS/IUw4IjfD5HweBlg==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-transform/binding-linux-arm64-gnu": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.111.0.tgz",
+ "integrity": "sha512-HtfQv8j796gzI5WR/RaP6IMwFpiL0vYeDrUA1hYhlPzTHKYan/B+NlhJkKOI1v24yAl/yEnFmb0pxIxLNqBqBA==",
+ "cpu": [
+ "arm64"
+ ],
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-transform/binding-linux-arm64-musl": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.111.0.tgz",
+ "integrity": "sha512-ARyfcMCIxVLDgLf6FQ8Oo1/TFySpnquV+vuSb4SFQZfYDqgMklzwv0NYXxWD0aB6enElyMDs6pQJBzusEKCkOg==",
+ "cpu": [
+ "arm64"
+ ],
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-transform/binding-linux-ppc64-gnu": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.111.0.tgz",
+ "integrity": "sha512-PKpVRrSvBNK3tv9vwxn7Fay+QWZmprPGlEqJcseBJllQc5mFMD4Q/w44chu5iR9ZLsDeSHzmNWrgMLo4J0sP2A==",
+ "cpu": [
+ "ppc64"
+ ],
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-transform/binding-linux-riscv64-gnu": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.111.0.tgz",
+ "integrity": "sha512-9bUml6rMgk+8GF5rvNMweFspkzSiCjqpV6HduwiUyexqfGKrmjq9IZOxxvnzkE2RGdQzP507NNDoVNYIoGQYuA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-transform/binding-linux-riscv64-musl": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.111.0.tgz",
+ "integrity": "sha512-tzGCohGxaeH6KRJjfYZd4mHCoGjCai6N+zZi1Oj+tSDMAAdyvs1dRzYb8PNUGnybCg3Te4M0jLPzWZaSmnKraQ==",
+ "cpu": [
+ "riscv64"
+ ],
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-transform/binding-linux-s390x-gnu": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.111.0.tgz",
+ "integrity": "sha512-sRG1KIfZ0ML9ToEygm5aM/5GJeBA05uHlgW3M0Rx/DNWMJhuahLmqWuB02aWSmijndLfEKXLLXIWhvWupRG8lg==",
+ "cpu": [
+ "s390x"
+ ],
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-transform/binding-linux-x64-gnu": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.111.0.tgz",
+ "integrity": "sha512-T0Kmvk+OdlUdABdXlDIf3MQReMzFfC75NEI9x8jxy5pKooACEFg0k0V8gyR3gq4DzbDCfucqFQDWNvSgIopAbQ==",
+ "cpu": [
+ "x64"
+ ],
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-transform/binding-linux-x64-musl": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-linux-x64-musl/-/binding-linux-x64-musl-0.111.0.tgz",
+ "integrity": "sha512-EgoutsP3YfqzN8a9vpc9+XLr0bmBl0dA3uOMiP77+exATCPxJBkJErGmQkqk6RtTp5XqX6q6mB45qWQyKk6+pA==",
+ "cpu": [
+ "x64"
+ ],
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-transform/binding-openharmony-arm64": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-openharmony-arm64/-/binding-openharmony-arm64-0.111.0.tgz",
+ "integrity": "sha512-d8J+ejc0j5WODbVwR/QxFaI65YMwvG0W53vcVCHwa6ja1QI5lpe7sislrefG2EFYgnY47voMRzlXab5d4gEcDw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-transform/binding-wasm32-wasi": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-wasm32-wasi/-/binding-wasm32-wasi-0.111.0.tgz",
+ "integrity": "sha512-HtyIZO8IwuZgXkyb56rysLz1OLbfLhEu8A3BeuyJXzUseAj96yuxgGt3cu3QYX9AXb9pfRfA3c/fvlhsDugyTQ==",
+ "cpu": [
+ "wasm32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@napi-rs/wasm-runtime": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@oxc-transform/binding-win32-arm64-msvc": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.111.0.tgz",
+ "integrity": "sha512-YeP80Riptc0MkVVBnzbmoFuHVLUq278+MbwNo9sTLALmzTIJxJqN029xRZbG+Bun7aLsoZhmRnm3J5JZ1NcP5w==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-transform/binding-win32-ia32-msvc": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.111.0.tgz",
+ "integrity": "sha512-A6ztCXpoSHt6PbvGAFqB0MLOcGG7ZJrrPXY1iB0zfOB1atLgI8oNePGxPl03XSbwpiTsFJ1oo8rj9DXcBzgT9g==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-transform/binding-win32-x64-msvc": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.111.0.tgz",
+ "integrity": "sha512-QddKW4kBH0Wof6Y65eYCNHM4iOGmCTWLLcNYY1FGswhzmTYOUVXajNROR+iCXAOFnOF0ldtsR79SyqgyHH1Bgg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@railway/cli": {
+ "version": "5.57.2",
+ "resolved": "https://registry.npmmirror.com/@railway/cli/-/cli-5.57.2.tgz",
+ "integrity": "sha512-rV1CTc/o7VmbDCsjEJeDIONNuWSStxJSEA4uQyhz1/Cz/K+Xp0VAqJpXW2hdQmSSJyEBnZakoG4ablQd8xgWQg==",
+ "hasInstallScript": true,
+ "license": "ISC",
+ "dependencies": {
+ "node-fetch": "^3.1.0",
+ "tar": "^6.1.11"
+ },
+ "bin": {
+ "railway": "bin/railway.js"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@renovatebot/pep440": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmmirror.com/@renovatebot/pep440/-/pep440-4.2.1.tgz",
+ "integrity": "sha512-2FK1hF93Fuf1laSdfiEmJvSJPVIDHEUTz68D3Fi9s0IZrrpaEcj6pTFBTbYvsgC5du4ogrtf5re7yMMvrKNgkw==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^20.9.0 || ^22.11.0 || ^24",
+ "pnpm": "^10.0.0"
+ }
+ },
+ "node_modules/@rolldown/binding-android-arm64": {
+ "version": "1.0.0-rc.1",
+ "resolved": "https://registry.npmmirror.com/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.1.tgz",
+ "integrity": "sha512-He6ZoCfv5D7dlRbrhNBkuMVIHd0GDnjJwbICE1OWpG7G3S2gmJ+eXkcNLJjzjNDpeI2aRy56ou39AJM9AD8YFA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-darwin-arm64": {
+ "version": "1.0.0-rc.1",
+ "resolved": "https://registry.npmmirror.com/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.1.tgz",
+ "integrity": "sha512-YzJdn08kSOXnj85ghHauH2iHpOJ6eSmstdRTLyaziDcUxe9SyQJgGyx/5jDIhDvtOcNvMm2Ju7m19+S/Rm1jFg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-darwin-x64": {
+ "version": "1.0.0-rc.1",
+ "resolved": "https://registry.npmmirror.com/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.1.tgz",
+ "integrity": "sha512-cIvAbqM+ZVV6lBSKSBtlNqH5iCiW933t1q8j0H66B3sjbe8AxIRetVqfGgcHcJtMzBIkIALlL9fcDrElWLJQcQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-freebsd-x64": {
+ "version": "1.0.0-rc.1",
+ "resolved": "https://registry.npmmirror.com/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.1.tgz",
+ "integrity": "sha512-rVt+B1B/qmKwCl1XD02wKfgh3vQPXRXdB/TicV2w6g7RVAM1+cZcpigwhLarqiVCxDObFZ7UgXCxPC7tpDoRog==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-linux-arm-gnueabihf": {
+ "version": "1.0.0-rc.1",
+ "resolved": "https://registry.npmmirror.com/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.1.tgz",
+ "integrity": "sha512-69YKwJJBOFprQa1GktPgbuBOfnn+EGxu8sBJ1TjPER+zhSpYeaU4N07uqmyBiksOLGXsMegymuecLobfz03h8Q==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-linux-arm64-gnu": {
+ "version": "1.0.0-rc.1",
+ "resolved": "https://registry.npmmirror.com/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.1.tgz",
+ "integrity": "sha512-9JDhHUf3WcLfnViFWm+TyorqUtnSAHaCzlSNmMOq824prVuuzDOK91K0Hl8DUcEb9M5x2O+d2/jmBMsetRIn3g==",
+ "cpu": [
+ "arm64"
+ ],
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-linux-arm64-musl": {
+ "version": "1.0.0-rc.1",
+ "resolved": "https://registry.npmmirror.com/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.1.tgz",
+ "integrity": "sha512-UvApLEGholmxw/HIwmUnLq3CwdydbhaHHllvWiCTNbyGom7wTwOtz5OAQbAKZYyiEOeIXZNPkM7nA4Dtng7CLw==",
+ "cpu": [
+ "arm64"
+ ],
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-linux-x64-gnu": {
+ "version": "1.0.0-rc.1",
+ "resolved": "https://registry.npmmirror.com/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.1.tgz",
+ "integrity": "sha512-uVctNgZHiGnJx5Fij7wHLhgw4uyZBVi6mykeWKOqE7bVy9Hcxn0fM/IuqdMwk6hXlaf9fFShDTFz2+YejP+x0A==",
+ "cpu": [
+ "x64"
+ ],
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-linux-x64-musl": {
+ "version": "1.0.0-rc.1",
+ "resolved": "https://registry.npmmirror.com/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.1.tgz",
+ "integrity": "sha512-T6Eg0xWwcxd/MzBcuv4Z37YVbUbJxy5cMNnbIt/Yr99wFwli30O4BPlY8hKeGyn6lWNtU0QioBS46lVzDN38bg==",
+ "cpu": [
+ "x64"
+ ],
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-openharmony-arm64": {
+ "version": "1.0.0-rc.1",
+ "resolved": "https://registry.npmmirror.com/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.1.tgz",
+ "integrity": "sha512-PuGZVS2xNJyLADeh2F04b+Cz4NwvpglbtWACgrDOa5YDTEHKwmiTDjoD5eZ9/ptXtcpeFrMqD2H4Zn33KAh1Eg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-wasm32-wasi": {
+ "version": "1.0.0-rc.1",
+ "resolved": "https://registry.npmmirror.com/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.1.tgz",
+ "integrity": "sha512-2mOxY562ihHlz9lEXuaGEIDCZ1vI+zyFdtsoa3M62xsEunDXQE+DVPO4S4x5MPK9tKulG/aFcA/IH5eVN257Cw==",
+ "cpu": [
+ "wasm32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@napi-rs/wasm-runtime": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@rolldown/binding-win32-arm64-msvc": {
+ "version": "1.0.0-rc.1",
+ "resolved": "https://registry.npmmirror.com/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.1.tgz",
+ "integrity": "sha512-oQVOP5cfAWZwRD0Q3nGn/cA9FW3KhMMuQ0NIndALAe6obqjLhqYVYDiGGRGrxvnjJsVbpLwR14gIUYnpIcHR1g==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-win32-x64-msvc": {
+ "version": "1.0.0-rc.1",
+ "resolved": "https://registry.npmmirror.com/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.1.tgz",
+ "integrity": "sha512-Ydsxxx++FNOuov3wCBPaYjZrEvKOOGq3k+BF4BPridhg2pENfitSRD2TEuQ8i33bp5VptuNdC9IzxRKU031z5A==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/pluginutils": {
+ "version": "1.0.0-rc.1",
+ "resolved": "https://registry.npmmirror.com/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.1.tgz",
+ "integrity": "sha512-UTBjtTxVOhodhzFVp/ayITaTETRHPUPYZPXQe0WU0wOgxghMojXxYjOiPOauKIYNWJAWS2fd7gJgGQK8GU8vDA==",
+ "license": "MIT"
+ },
+ "node_modules/@rollup/pluginutils": {
+ "version": "5.4.0",
+ "resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.4.0.tgz",
+ "integrity": "sha512-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "estree-walker": "^2.0.2",
+ "picomatch": "^4.0.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@sec-ant/readable-stream": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmmirror.com/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz",
+ "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==",
+ "license": "MIT"
+ },
+ "node_modules/@segment/analytics-core": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmmirror.com/@segment/analytics-core/-/analytics-core-1.4.1.tgz",
+ "integrity": "sha512-kV0Pf33HnthuBOVdYNani21kYyj118Fn+9757bxqoksiXoZlYvBsFq6giNdCsKcTIE1eAMqNDq3xE1VQ0cfsHA==",
+ "license": "MIT",
+ "dependencies": {
+ "@lukeed/uuid": "^2.0.0",
+ "@segment/analytics-generic-utils": "1.1.1",
+ "dset": "^3.1.2",
+ "tslib": "^2.4.1"
+ }
+ },
+ "node_modules/@segment/analytics-generic-utils": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/@segment/analytics-generic-utils/-/analytics-generic-utils-1.1.1.tgz",
+ "integrity": "sha512-THTIzBPHnvu1HYJU3fARdJ3qIkukO3zDXsmDm+kAeUks5R9CBXOQ6rPChiASVzSmwAIIo5uFIXXnCraojlq/Gw==",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.4.1"
+ }
+ },
+ "node_modules/@segment/analytics-node": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/@segment/analytics-node/-/analytics-node-1.3.0.tgz",
+ "integrity": "sha512-lRLz1WZaDokMoUe299yP5JkInc3OgJuqNNlxb6j0q22umCiq6b5iDo2gRmFn93reirIvJxWIicQsGrHd93q8GQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@lukeed/uuid": "^2.0.0",
+ "@segment/analytics-core": "1.4.1",
+ "@segment/analytics-generic-utils": "1.1.1",
+ "buffer": "^6.0.3",
+ "node-fetch": "^2.6.7",
+ "tslib": "^2.4.1"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@segment/analytics-node/node_modules/node-fetch": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.7.0.tgz",
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "license": "MIT",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@sinclair/typebox": {
+ "version": "0.25.24",
+ "resolved": "https://registry.npmmirror.com/@sinclair/typebox/-/typebox-0.25.24.tgz",
+ "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==",
+ "license": "MIT"
+ },
+ "node_modules/@sindresorhus/merge-streams": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz",
+ "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@tootallnate/once": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/@tootallnate/once/-/once-2.0.0.tgz",
+ "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@ts-morph/common": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmmirror.com/@ts-morph/common/-/common-0.11.1.tgz",
+ "integrity": "sha512-7hWZS0NRpEsNV8vWJzg7FEz6V8MaLNeJOmwmghqUXTpzk16V1LLZhdo+4QvE/+zv4cVci0OviuJFnqhEfoV3+g==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-glob": "^3.2.7",
+ "minimatch": "^3.0.4",
+ "mkdirp": "^1.0.4",
+ "path-browserify": "^1.0.1"
+ }
+ },
+ "node_modules/@ts-morph/common/node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "license": "MIT"
+ },
+ "node_modules/@ts-morph/common/node_modules/brace-expansion": {
+ "version": "1.1.21",
+ "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.21.tgz",
+ "integrity": "sha512-9zeA+KLZNNzglF2TPKRQEDyx6Yby7daAkuy8MiPzpXPsYDWi/DRM8jmwUDxokQjYqBpv5DgPiwD4h4ZZSy1Ujw==",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/@ts-morph/common/node_modules/minimatch": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/@tybys/wasm-util": {
+ "version": "0.10.4",
+ "resolved": "https://registry.npmmirror.com/@tybys/wasm-util/-/wasm-util-0.10.4.tgz",
+ "integrity": "sha512-W3c4gRigFS0T/Ma4qIYF3GDAc5AQdHb1yL5znJT1Zv1YaD9Kitx656wBjvr19qbiosmZT8lWDM5BEMynUqX65A==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.9.tgz",
+ "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==",
+ "license": "MIT"
+ },
+ "node_modules/@types/json-schema": {
+ "version": "7.0.15",
+ "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+ "license": "MIT"
+ },
+ "node_modules/@types/node": {
+ "version": "20.11.0",
+ "resolved": "https://registry.npmmirror.com/@types/node/-/node-20.11.0.tgz",
+ "integrity": "sha512-o9bjXmDNcF7GbM4CNQpmi+TutCgap/K3w1JyKgxAjqx41zp9qlIAVFi0IhCNsJcXolEqLWhbFbEeL0PvYm4pcQ==",
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "node_modules/@vercel/backends": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmmirror.com/@vercel/backends/-/backends-8.0.1.tgz",
+ "integrity": "sha512-kh0zJCCrNzejgvrBbg6wf68aZll756aeJqaREggTdQSlgIzfaSCu9oppXvKE9NLT/lBlGd+/wZQRjFFIrQmn7Q==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/nft": "1.10.0",
+ "@vercel/static-config": "3.4.3",
+ "execa": "3.2.0",
+ "fs-extra": "11.1.0",
+ "get-port": "5.1.1",
+ "oxc-transform": "0.111.0",
+ "path-to-regexp": "8.3.0",
+ "resolve.exports": "2.0.3",
+ "rolldown": "1.0.0-rc.1",
+ "srvx": "0.11.16",
+ "ts-morph": "12.0.0",
+ "tsx": "4.21.0",
+ "zod": "3.22.4"
+ },
+ "peerDependencies": {
+ "@vercel/build-utils": "14.10.1"
+ }
+ },
+ "node_modules/@vercel/backends/node_modules/@vercel/nft": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmmirror.com/@vercel/nft/-/nft-1.10.0.tgz",
+ "integrity": "sha512-iLOW4fcsgkipfOh2Bw3wB38YDfxTlxr7+j4uFeui2OswkNT28jIitS/aMce7tS0mef1YPQ8zLIDYr3a0aahNrA==",
+ "license": "MIT",
+ "dependencies": {
+ "@mapbox/node-pre-gyp": "^2.0.0",
+ "@rollup/pluginutils": "^5.1.3",
+ "acorn": "^8.6.0",
+ "acorn-import-attributes": "^1.9.5",
+ "async-sema": "^3.1.1",
+ "bindings": "^1.4.0",
+ "estree-walker": "2.0.2",
+ "glob": "^13.0.0",
+ "graceful-fs": "^4.2.9",
+ "node-gyp-build": "^4.2.2",
+ "picomatch": "^4.0.2",
+ "resolve-from": "^5.0.0"
+ },
+ "bin": {
+ "nft": "out/cli.js"
+ },
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/@vercel/backends/node_modules/execa": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/execa/-/execa-3.2.0.tgz",
+ "integrity": "sha512-kJJfVbI/lZE1PZYDI5VPxp8zXPO9rtxOkhpZ0jMKha56AI9y2gGVC6bkukStQf0ka5Rh15BA5m7cCCH4jmHqkw==",
+ "license": "MIT",
+ "dependencies": {
+ "cross-spawn": "^7.0.0",
+ "get-stream": "^5.0.0",
+ "human-signals": "^1.1.1",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.0",
+ "onetime": "^5.1.0",
+ "p-finally": "^2.0.0",
+ "signal-exit": "^3.0.2",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": "^8.12.0 || >=9.7.0"
+ }
+ },
+ "node_modules/@vercel/backends/node_modules/get-stream": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-5.2.0.tgz",
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "license": "MIT",
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@vercel/backends/node_modules/human-signals": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-1.1.1.tgz",
+ "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=8.12.0"
+ }
+ },
+ "node_modules/@vercel/backends/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@vercel/backends/node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@vercel/backends/node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "license": "ISC"
+ },
+ "node_modules/@vercel/backends/node_modules/strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@vercel/backends/node_modules/zod": {
+ "version": "3.22.4",
+ "resolved": "https://registry.npmmirror.com/zod/-/zod-3.22.4.tgz",
+ "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/colinhacks"
+ }
+ },
+ "node_modules/@vercel/blob": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmmirror.com/@vercel/blob/-/blob-2.8.0.tgz",
+ "integrity": "sha512-Nu+HWKpkgovCh/ezlG7wCVwF7RErTzLzZMbGKFBdGBCbTKyK+s5VXPLl+0+TpNEQPH8AVaGzOpIsXUOtkqylCQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/oidc": "^3.6.1",
+ "async-retry": "^1.3.3",
+ "is-buffer": "^2.0.5",
+ "is-node-process": "^1.2.0",
+ "throttleit": "^2.1.0",
+ "undici": "^6.23.0"
+ },
+ "engines": {
+ "node": ">=20.0.0"
+ }
+ },
+ "node_modules/@vercel/blob/node_modules/undici": {
+ "version": "6.28.1",
+ "resolved": "https://registry.npmmirror.com/undici/-/undici-6.28.1.tgz",
+ "integrity": "sha512-zWpdTVD54H48CIybL0rWQ3ukpb9d23wM7eH5RtfdmeP70cWHNjtfo7P4vZX+5CoDcO53J4Pu5uXp7lNfjc6DRA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.17"
+ }
+ },
+ "node_modules/@vercel/build-utils": {
+ "version": "14.10.1",
+ "resolved": "https://registry.npmmirror.com/@vercel/build-utils/-/build-utils-14.10.1.tgz",
+ "integrity": "sha512-TjFFbw5K2uKL6/6pHPmp4ZaSJIS84AEKtU3dvNvtzbK4ATUx+PK4wRLZIyf3FqJ33NLzyER6DkHfZzHHj5k/yQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "cjs-module-lexer": "1.2.3",
+ "es-module-lexer": "1.5.0"
+ }
+ },
+ "node_modules/@vercel/cervel": {
+ "version": "0.1.65",
+ "resolved": "https://registry.npmmirror.com/@vercel/cervel/-/cervel-0.1.65.tgz",
+ "integrity": "sha512-EKdEzrEkil9B8xa+uoLSrDv4mscBrCBNV4tC5Z9nScrIce2+1/e/gnt1otQlJjeV1sG0K6m7Afp8SUWBWxwf3Q==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/backends": "8.0.1"
+ },
+ "bin": {
+ "cervel": "bin/cervel.mjs"
+ }
+ },
+ "node_modules/@vercel/cli-auth": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmmirror.com/@vercel/cli-auth/-/cli-auth-0.3.8.tgz",
+ "integrity": "sha512-jO62gH6BK99fUzWMpbD0IXg0r+MrwGn2nkv+wr7J7KBdw59S6gAUpqfXE/xGzk+Lyh58/aF4XERG9eR6RjiHTg==",
+ "dependencies": {
+ "@napi-rs/keyring": "1.2.0",
+ "@vercel/cli-config": "0.2.7",
+ "async-listen": "3.0.0",
+ "open": "8.4.0",
+ "zod": "4.1.11"
+ }
+ },
+ "node_modules/@vercel/cli-auth/node_modules/@napi-rs/keyring": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/@napi-rs/keyring/-/keyring-1.2.0.tgz",
+ "integrity": "sha512-d0d4Oyxm+v980PEq1ZH2PmS6cvpMIRc17eYpiU47KgW+lzxklMu6+HOEOPmxrpnF/XQZ0+Q78I2mgMhbIIo/dg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Brooooooklyn"
+ },
+ "optionalDependencies": {
+ "@napi-rs/keyring-darwin-arm64": "1.2.0",
+ "@napi-rs/keyring-darwin-x64": "1.2.0",
+ "@napi-rs/keyring-freebsd-x64": "1.2.0",
+ "@napi-rs/keyring-linux-arm-gnueabihf": "1.2.0",
+ "@napi-rs/keyring-linux-arm64-gnu": "1.2.0",
+ "@napi-rs/keyring-linux-arm64-musl": "1.2.0",
+ "@napi-rs/keyring-linux-riscv64-gnu": "1.2.0",
+ "@napi-rs/keyring-linux-x64-gnu": "1.2.0",
+ "@napi-rs/keyring-linux-x64-musl": "1.2.0",
+ "@napi-rs/keyring-win32-arm64-msvc": "1.2.0",
+ "@napi-rs/keyring-win32-ia32-msvc": "1.2.0",
+ "@napi-rs/keyring-win32-x64-msvc": "1.2.0"
+ }
+ },
+ "node_modules/@vercel/cli-auth/node_modules/@napi-rs/keyring-darwin-arm64": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/@napi-rs/keyring-darwin-arm64/-/keyring-darwin-arm64-1.2.0.tgz",
+ "integrity": "sha512-CA83rDeyONDADO25JLZsh3eHY8yTEtm/RS6ecPsY+1v+dSawzT9GywBMu2r6uOp1IEhQs/xAfxgybGAFr17lSA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@vercel/cli-auth/node_modules/@napi-rs/keyring-darwin-x64": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/@napi-rs/keyring-darwin-x64/-/keyring-darwin-x64-1.2.0.tgz",
+ "integrity": "sha512-dBHjtKRCj4ByfnfqIKIJLo3wueQNJhLRyuxtX/rR4K/XtcS7VLlRD01XXizjpre54vpmObj63w+ZpHG+mGM8uA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@vercel/cli-auth/node_modules/@napi-rs/keyring-freebsd-x64": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/@napi-rs/keyring-freebsd-x64/-/keyring-freebsd-x64-1.2.0.tgz",
+ "integrity": "sha512-DPZFr11pNJSnaoh0dzSUNF+T6ORhy3CkzUT3uGixbA71cAOPJ24iG8e8QrLOkuC/StWrAku3gBnth2XMWOcR3Q==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@vercel/cli-auth/node_modules/@napi-rs/keyring-linux-arm-gnueabihf": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/@napi-rs/keyring-linux-arm-gnueabihf/-/keyring-linux-arm-gnueabihf-1.2.0.tgz",
+ "integrity": "sha512-8xv6DyEMlvRdqJzp4F39RLUmmTQsLcGYYv/3eIfZNZN1O5257tHxTrFYqAsny659rJJK2EKeSa7PhrSibQqRWQ==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@vercel/cli-auth/node_modules/@napi-rs/keyring-linux-arm64-gnu": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/@napi-rs/keyring-linux-arm64-gnu/-/keyring-linux-arm64-gnu-1.2.0.tgz",
+ "integrity": "sha512-Pu2V6Py+PBt7inryEecirl+t+ti8bhZphjP+W68iVaXHUxLdWmkgL9KI1VkbRHbx5k8K5Tew9OP218YfmVguIA==",
+ "cpu": [
+ "arm64"
+ ],
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@vercel/cli-auth/node_modules/@napi-rs/keyring-linux-arm64-musl": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/@napi-rs/keyring-linux-arm64-musl/-/keyring-linux-arm64-musl-1.2.0.tgz",
+ "integrity": "sha512-8TDymrpC4P1a9iDEaegT7RnrkmrJN5eNZh3Im3UEV5PPYGtrb82CRxsuFohthCWQW81O483u1bu+25+XA4nKUw==",
+ "cpu": [
+ "arm64"
+ ],
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@vercel/cli-auth/node_modules/@napi-rs/keyring-linux-riscv64-gnu": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/@napi-rs/keyring-linux-riscv64-gnu/-/keyring-linux-riscv64-gnu-1.2.0.tgz",
+ "integrity": "sha512-awsB5XI1MYL7fwfjMDGmKOWvNgJEO7mM7iVEMS0fO39f0kVJnOSjlu7RHcXAF0LOx+0VfF3oxbWqJmZbvRCRHw==",
+ "cpu": [
+ "riscv64"
+ ],
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@vercel/cli-auth/node_modules/@napi-rs/keyring-linux-x64-gnu": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/@napi-rs/keyring-linux-x64-gnu/-/keyring-linux-x64-gnu-1.2.0.tgz",
+ "integrity": "sha512-8E+7z4tbxSJXxIBqA+vfB1CGajpCDRyTyqXkBig5NtASrv4YXcntSo96Iah2QDR5zD3dSTsmbqJudcj9rKKuHQ==",
+ "cpu": [
+ "x64"
+ ],
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@vercel/cli-auth/node_modules/@napi-rs/keyring-linux-x64-musl": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/@napi-rs/keyring-linux-x64-musl/-/keyring-linux-x64-musl-1.2.0.tgz",
+ "integrity": "sha512-8RZ8yVEnmWr/3BxKgBSzmgntI7lNEsY7xouNfOsQkuVAiCNmxzJwETspzK3PQ2FHtDxgz5vHQDEBVGMyM4hUHA==",
+ "cpu": [
+ "x64"
+ ],
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@vercel/cli-auth/node_modules/@napi-rs/keyring-win32-arm64-msvc": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/@napi-rs/keyring-win32-arm64-msvc/-/keyring-win32-arm64-msvc-1.2.0.tgz",
+ "integrity": "sha512-AoqaDZpQ6KPE19VBLpxyORcp+yWmHI9Xs9Oo0PJ4mfHma4nFSLVdhAubJCxdlNptHe5va7ghGCHj3L9Akiv4cQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@vercel/cli-auth/node_modules/@napi-rs/keyring-win32-ia32-msvc": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/@napi-rs/keyring-win32-ia32-msvc/-/keyring-win32-ia32-msvc-1.2.0.tgz",
+ "integrity": "sha512-EYL+EEI6bCsYi3LfwcQdnX3P/R76ENKNn+3PmpGheBsUFLuh0gQuP7aMVHM4rTw6UVe+L3vCLZSptq/oeacz0A==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@vercel/cli-auth/node_modules/@napi-rs/keyring-win32-x64-msvc": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/@napi-rs/keyring-win32-x64-msvc/-/keyring-win32-x64-msvc-1.2.0.tgz",
+ "integrity": "sha512-xFlx/TsmqmCwNU9v+AVnEJgoEAlBYgzFF5Ihz1rMpPAt4qQWWkMd4sCyM1gMJ1A/GnRqRegDiQpwaxGUHFtFbA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@vercel/cli-auth/node_modules/define-lazy-prop": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
+ "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@vercel/cli-auth/node_modules/is-docker": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/is-docker/-/is-docker-2.2.1.tgz",
+ "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+ "license": "MIT",
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@vercel/cli-auth/node_modules/is-wsl": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/is-wsl/-/is-wsl-2.2.0.tgz",
+ "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+ "license": "MIT",
+ "dependencies": {
+ "is-docker": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@vercel/cli-auth/node_modules/open": {
+ "version": "8.4.0",
+ "resolved": "https://registry.npmmirror.com/open/-/open-8.4.0.tgz",
+ "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==",
+ "license": "MIT",
+ "dependencies": {
+ "define-lazy-prop": "^2.0.0",
+ "is-docker": "^2.1.1",
+ "is-wsl": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@vercel/cli-auth/node_modules/zod": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmmirror.com/zod/-/zod-4.1.11.tgz",
+ "integrity": "sha512-WPsqwxITS2tzx1bzhIKsEs19ABD5vmCVa4xBo2tq/SrV4RNZtfws1EnCWQXM6yh8bD08a1idvkB5MZSBiZsjwg==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/colinhacks"
+ }
+ },
+ "node_modules/@vercel/cli-config": {
+ "version": "0.2.7",
+ "resolved": "https://registry.npmmirror.com/@vercel/cli-config/-/cli-config-0.2.7.tgz",
+ "integrity": "sha512-KeSN2HBp8puZrj7kVjSEneDi9yBqW4nAD9AnhGhdYjGNpHl7IkXZVb3HnNe0WWc5+20RlUtmAGWNPQ8qP5QBhQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "xdg-app-paths": "5",
+ "zod": "4.1.11"
+ }
+ },
+ "node_modules/@vercel/cli-config/node_modules/zod": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmmirror.com/zod/-/zod-4.1.11.tgz",
+ "integrity": "sha512-WPsqwxITS2tzx1bzhIKsEs19ABD5vmCVa4xBo2tq/SrV4RNZtfws1EnCWQXM6yh8bD08a1idvkB5MZSBiZsjwg==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/colinhacks"
+ }
+ },
+ "node_modules/@vercel/cli-exec": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/@vercel/cli-exec/-/cli-exec-1.0.1.tgz",
+ "integrity": "sha512-g9XerViJ/paZujufXYcu5XYI2vU2rtB4sgdpjUHde5RnOkdmpu0ngH46LCFGHoPXO/C+qDPSczIHIRN+8Q2YKQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "execa": "5.1.1"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@vercel/cli-exec/node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "license": "MIT",
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/@vercel/cli-exec/node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@vercel/cli-exec/node_modules/human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=10.17.0"
+ }
+ },
+ "node_modules/@vercel/cli-exec/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@vercel/cli-exec/node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@vercel/cli-exec/node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "license": "ISC"
+ },
+ "node_modules/@vercel/cli-exec/node_modules/strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@vercel/container": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmmirror.com/@vercel/container/-/container-8.2.0.tgz",
+ "integrity": "sha512-bn6vOtvZLy7zp8xNI7fyUYbvGxBOeZzzyLfLujAS5OULSeowUZceM8oVif6wAYgVTNCfMs/LO6XYYF2Trb+tNg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "smol-toml": "1.5.2",
+ "tar": "7.5.11"
+ },
+ "peerDependencies": {
+ "@vercel/build-utils": "14.10.1"
+ }
+ },
+ "node_modules/@vercel/container/node_modules/chownr": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/chownr/-/chownr-3.0.0.tgz",
+ "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==",
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/container/node_modules/minizlib": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-3.1.0.tgz",
+ "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==",
+ "license": "MIT",
+ "dependencies": {
+ "minipass": "^7.1.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@vercel/container/node_modules/tar": {
+ "version": "7.5.11",
+ "resolved": "https://registry.npmmirror.com/tar/-/tar-7.5.11.tgz",
+ "integrity": "sha512-ChjMH33/KetonMTAtpYdgUFr0tbz69Fp2v7zWxQfYZX4g5ZN2nOBXm1R2xyA+lMIKrLKIoKAwFj93jE/avX9cQ==",
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "@isaacs/fs-minipass": "^4.0.0",
+ "chownr": "^3.0.0",
+ "minipass": "^7.1.2",
+ "minizlib": "^3.1.0",
+ "yallist": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/container/node_modules/yallist": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/yallist/-/yallist-5.0.0.tgz",
+ "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==",
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/detect-agent": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmmirror.com/@vercel/detect-agent/-/detect-agent-1.2.5.tgz",
+ "integrity": "sha512-0krENrjuitlW8s6TJu0MlqCevyCU7K7JK63jZAf7xZ6n17tx+vUEwzHT3sTxawtwZxaW21hu+oFUpoOrm49FsQ==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@vercel/elysia": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmmirror.com/@vercel/elysia/-/elysia-8.0.1.tgz",
+ "integrity": "sha512-bZzHH8OmQfLTVaLFA9XDfn9ojAvxNUnE5LF1eojAFLNJzSKk+qrmtSxwXppvv6xiAZFO1jIt+kbiPM3gyZT9Nw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/node": "13.0.1",
+ "@vercel/static-config": "3.4.3"
+ },
+ "peerDependencies": {
+ "@vercel/build-utils": "14.10.1"
+ }
+ },
+ "node_modules/@vercel/error-utils": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/@vercel/error-utils/-/error-utils-2.2.1.tgz",
+ "integrity": "sha512-9DhP8jP7raLML4hGsBemxX5fXuQnu5xxMV+HjGygGbzEmVK/+KyJ3QP2Cw7PdF0uXdb9N0Qa4c3tRGH34ZX6vw==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/@vercel/express": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmmirror.com/@vercel/express/-/express-8.0.1.tgz",
+ "integrity": "sha512-pM+DvXc3nvhshcQtcKrKYWVXdRhzwV+RDl083nf5cgmGfX9DV3WqAICXLSeyUR015AZW1uFpILCD1OzjH1QYcw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/cervel": "0.1.65",
+ "@vercel/nft": "1.10.0",
+ "@vercel/node": "13.0.1",
+ "@vercel/static-config": "3.4.3",
+ "fs-extra": "11.1.0",
+ "path-to-regexp": "8.3.0",
+ "ts-morph": "12.0.0",
+ "zod": "3.22.4"
+ },
+ "peerDependencies": {
+ "@vercel/build-utils": "14.10.1"
+ }
+ },
+ "node_modules/@vercel/express/node_modules/@vercel/nft": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmmirror.com/@vercel/nft/-/nft-1.10.0.tgz",
+ "integrity": "sha512-iLOW4fcsgkipfOh2Bw3wB38YDfxTlxr7+j4uFeui2OswkNT28jIitS/aMce7tS0mef1YPQ8zLIDYr3a0aahNrA==",
+ "license": "MIT",
+ "dependencies": {
+ "@mapbox/node-pre-gyp": "^2.0.0",
+ "@rollup/pluginutils": "^5.1.3",
+ "acorn": "^8.6.0",
+ "acorn-import-attributes": "^1.9.5",
+ "async-sema": "^3.1.1",
+ "bindings": "^1.4.0",
+ "estree-walker": "2.0.2",
+ "glob": "^13.0.0",
+ "graceful-fs": "^4.2.9",
+ "node-gyp-build": "^4.2.2",
+ "picomatch": "^4.0.2",
+ "resolve-from": "^5.0.0"
+ },
+ "bin": {
+ "nft": "out/cli.js"
+ },
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/@vercel/express/node_modules/zod": {
+ "version": "3.22.4",
+ "resolved": "https://registry.npmmirror.com/zod/-/zod-3.22.4.tgz",
+ "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/colinhacks"
+ }
+ },
+ "node_modules/@vercel/fastify": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmmirror.com/@vercel/fastify/-/fastify-8.0.1.tgz",
+ "integrity": "sha512-Tf81Wp2ZfSg/SF6niEaBdBjKdtyELeWNyXCB5mjNWNUvQFjmXLQqYtD6HKq8DSaAWci4Agets5UwxhO99iYBgQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/node": "13.0.1",
+ "@vercel/static-config": "3.4.3"
+ },
+ "peerDependencies": {
+ "@vercel/build-utils": "14.10.1"
+ }
+ },
+ "node_modules/@vercel/fun": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/@vercel/fun/-/fun-1.3.0.tgz",
+ "integrity": "sha512-8erw9uPe0dFg45THkNxmjtvMX143SkZebmjgSVbcM3XCkXu3RIiBaJMcMNG8aaS+rnTuw8+d4De9HVT0M/r3wg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@tootallnate/once": "2.0.0",
+ "async-listen": "1.2.0",
+ "debug": "4.3.4",
+ "generic-pool": "3.4.2",
+ "micro": "9.3.5-canary.3",
+ "ms": "2.1.1",
+ "node-fetch": "2.6.7",
+ "path-to-regexp": "8.2.0",
+ "promisepipe": "3.0.0",
+ "semver": "7.5.4",
+ "stat-mode": "0.3.0",
+ "stream-to-promise": "2.2.0",
+ "tar": "7.5.7",
+ "tinyexec": "0.3.2",
+ "tree-kill": "1.2.2",
+ "uid-promise": "1.0.0",
+ "xdg-app-paths": "5.1.0",
+ "yauzl-promise": "2.1.3"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@vercel/fun/node_modules/async-listen": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/async-listen/-/async-listen-1.2.0.tgz",
+ "integrity": "sha512-CcEtRh/oc9Jc4uWeUwdpG/+Mb2YUHKmdaTf0gUr7Wa+bfp4xx70HOb3RuSTJMvqKNB1TkdTfjLdrcz2X4rkkZA==",
+ "license": "MIT"
+ },
+ "node_modules/@vercel/fun/node_modules/chownr": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/chownr/-/chownr-3.0.0.tgz",
+ "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==",
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/fun/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vercel/fun/node_modules/debug/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "license": "MIT"
+ },
+ "node_modules/@vercel/fun/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@vercel/fun/node_modules/minizlib": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-3.1.0.tgz",
+ "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==",
+ "license": "MIT",
+ "dependencies": {
+ "minipass": "^7.1.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@vercel/fun/node_modules/ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "license": "MIT"
+ },
+ "node_modules/@vercel/fun/node_modules/node-fetch": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.6.7.tgz",
+ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+ "license": "MIT",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vercel/fun/node_modules/path-to-regexp": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-8.2.0.tgz",
+ "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/@vercel/fun/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@vercel/fun/node_modules/tar": {
+ "version": "7.5.7",
+ "resolved": "https://registry.npmmirror.com/tar/-/tar-7.5.7.tgz",
+ "integrity": "sha512-fov56fJiRuThVFXD6o6/Q354S7pnWMJIVlDBYijsTNx6jKSE4pvrDTs6lUnmGvNyfJwFQQwWy3owKz1ucIhveQ==",
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "@isaacs/fs-minipass": "^4.0.0",
+ "chownr": "^3.0.0",
+ "minipass": "^7.1.2",
+ "minizlib": "^3.1.0",
+ "yallist": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/fun/node_modules/tar/node_modules/yallist": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/yallist/-/yallist-5.0.0.tgz",
+ "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==",
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/fun/node_modules/xdg-app-paths": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/xdg-app-paths/-/xdg-app-paths-5.1.0.tgz",
+ "integrity": "sha512-RAQ3WkPf4KTU1A8RtFx3gWywzVKe00tfOPFfl2NDGqbIFENQO4kqAJp7mhQjNj/33W5x5hiWWUdyfPq/5SU3QA==",
+ "license": "MIT",
+ "dependencies": {
+ "xdg-portable": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@vercel/gatsby-plugin-vercel-analytics": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmmirror.com/@vercel/gatsby-plugin-vercel-analytics/-/gatsby-plugin-vercel-analytics-1.0.12.tgz",
+ "integrity": "sha512-Ejlhwxr7EBYJxtwYnlh6Vm6A2dPsUSPxMdYrfv0koZkgAzVwo7cG4aDQiy7iASMaGzwuI/PAnwlY2sJBF5b4OA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "web-vitals": "0.2.4"
+ }
+ },
+ "node_modules/@vercel/gatsby-plugin-vercel-builder": {
+ "version": "2.2.57",
+ "resolved": "https://registry.npmmirror.com/@vercel/gatsby-plugin-vercel-builder/-/gatsby-plugin-vercel-builder-2.2.57.tgz",
+ "integrity": "sha512-cjiGBXzosNp3FvZmW62Fedr6dHj2GU2NueJ0OnVV+k0JdYX+1j2+fRbQLbX3HegqIPQjwqwgyZcaw18KbiBlZA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@sinclair/typebox": "0.25.24",
+ "@vercel/build-utils": "14.10.1",
+ "esbuild": "0.27.0",
+ "etag": "1.8.1",
+ "fs-extra": "11.1.0"
+ }
+ },
+ "node_modules/@vercel/gatsby-plugin-vercel-builder/node_modules/@esbuild/aix-ppc64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.27.0.tgz",
+ "integrity": "sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/gatsby-plugin-vercel-builder/node_modules/@esbuild/android-arm": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.27.0.tgz",
+ "integrity": "sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/gatsby-plugin-vercel-builder/node_modules/@esbuild/android-arm64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.27.0.tgz",
+ "integrity": "sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/gatsby-plugin-vercel-builder/node_modules/@esbuild/android-x64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.27.0.tgz",
+ "integrity": "sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/gatsby-plugin-vercel-builder/node_modules/@esbuild/darwin-arm64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.27.0.tgz",
+ "integrity": "sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/gatsby-plugin-vercel-builder/node_modules/@esbuild/darwin-x64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.27.0.tgz",
+ "integrity": "sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/gatsby-plugin-vercel-builder/node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.0.tgz",
+ "integrity": "sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/gatsby-plugin-vercel-builder/node_modules/@esbuild/freebsd-x64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.27.0.tgz",
+ "integrity": "sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/gatsby-plugin-vercel-builder/node_modules/@esbuild/linux-arm": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.27.0.tgz",
+ "integrity": "sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/gatsby-plugin-vercel-builder/node_modules/@esbuild/linux-arm64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.27.0.tgz",
+ "integrity": "sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/gatsby-plugin-vercel-builder/node_modules/@esbuild/linux-ia32": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.27.0.tgz",
+ "integrity": "sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/gatsby-plugin-vercel-builder/node_modules/@esbuild/linux-loong64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.27.0.tgz",
+ "integrity": "sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg==",
+ "cpu": [
+ "loong64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/gatsby-plugin-vercel-builder/node_modules/@esbuild/linux-mips64el": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.27.0.tgz",
+ "integrity": "sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg==",
+ "cpu": [
+ "mips64el"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/gatsby-plugin-vercel-builder/node_modules/@esbuild/linux-ppc64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.27.0.tgz",
+ "integrity": "sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/gatsby-plugin-vercel-builder/node_modules/@esbuild/linux-riscv64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.27.0.tgz",
+ "integrity": "sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/gatsby-plugin-vercel-builder/node_modules/@esbuild/linux-s390x": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.27.0.tgz",
+ "integrity": "sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/gatsby-plugin-vercel-builder/node_modules/@esbuild/linux-x64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.27.0.tgz",
+ "integrity": "sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/gatsby-plugin-vercel-builder/node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.0.tgz",
+ "integrity": "sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/gatsby-plugin-vercel-builder/node_modules/@esbuild/netbsd-x64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.27.0.tgz",
+ "integrity": "sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/gatsby-plugin-vercel-builder/node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.0.tgz",
+ "integrity": "sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/gatsby-plugin-vercel-builder/node_modules/@esbuild/openbsd-x64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.27.0.tgz",
+ "integrity": "sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/gatsby-plugin-vercel-builder/node_modules/@esbuild/openharmony-arm64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.0.tgz",
+ "integrity": "sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/gatsby-plugin-vercel-builder/node_modules/@esbuild/sunos-x64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.27.0.tgz",
+ "integrity": "sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/gatsby-plugin-vercel-builder/node_modules/@esbuild/win32-arm64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.27.0.tgz",
+ "integrity": "sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/gatsby-plugin-vercel-builder/node_modules/@esbuild/win32-ia32": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.27.0.tgz",
+ "integrity": "sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/gatsby-plugin-vercel-builder/node_modules/@esbuild/win32-x64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.27.0.tgz",
+ "integrity": "sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/gatsby-plugin-vercel-builder/node_modules/esbuild": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.27.0.tgz",
+ "integrity": "sha512-jd0f4NHbD6cALCyGElNpGAOtWxSq46l9X/sWB0Nzd5er4Kz2YTm+Vl0qKFT9KUJvD8+fiO8AvoHhFvEatfVixA==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "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"
+ }
+ },
+ "node_modules/@vercel/go": {
+ "version": "11.0.1",
+ "resolved": "https://registry.npmmirror.com/@vercel/go/-/go-11.0.1.tgz",
+ "integrity": "sha512-F3RonmHzgnjLC/0gr2UsmcRczcFjv64b4/VNRYTBnc20ovZCC+d0PsHBXA0soT//AJ2Wa4OLi+aUUzGFv3E1Gg==",
+ "license": "Apache-2.0",
+ "peerDependencies": {
+ "@vercel/build-utils": "14.10.1"
+ }
+ },
+ "node_modules/@vercel/h3": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmmirror.com/@vercel/h3/-/h3-8.0.1.tgz",
+ "integrity": "sha512-29tCLPyjBerYVwQ+az3vXuJOzuFoRHc09dF1i/klg25rU6AgfadJIFXLjAQWnW3nSHc5+MVXAzCw8uaaiIvESg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/node": "13.0.1",
+ "@vercel/static-config": "3.4.3"
+ },
+ "peerDependencies": {
+ "@vercel/build-utils": "14.10.1"
+ }
+ },
+ "node_modules/@vercel/hono": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmmirror.com/@vercel/hono/-/hono-8.0.1.tgz",
+ "integrity": "sha512-Yl/sbRoKsIemZEkz0hpsDVnxGf8/bZGOGBjFUF3n3VUz7mXb2HxL4ImoVcnZrtK7dcaf+8knT/QI0984FwLm+g==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/nft": "1.10.0",
+ "@vercel/node": "13.0.1",
+ "@vercel/static-config": "3.4.3",
+ "fs-extra": "11.1.0",
+ "path-to-regexp": "8.3.0",
+ "ts-morph": "12.0.0",
+ "zod": "3.22.4"
+ },
+ "peerDependencies": {
+ "@vercel/build-utils": "14.10.1"
+ }
+ },
+ "node_modules/@vercel/hono/node_modules/@vercel/nft": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmmirror.com/@vercel/nft/-/nft-1.10.0.tgz",
+ "integrity": "sha512-iLOW4fcsgkipfOh2Bw3wB38YDfxTlxr7+j4uFeui2OswkNT28jIitS/aMce7tS0mef1YPQ8zLIDYr3a0aahNrA==",
+ "license": "MIT",
+ "dependencies": {
+ "@mapbox/node-pre-gyp": "^2.0.0",
+ "@rollup/pluginutils": "^5.1.3",
+ "acorn": "^8.6.0",
+ "acorn-import-attributes": "^1.9.5",
+ "async-sema": "^3.1.1",
+ "bindings": "^1.4.0",
+ "estree-walker": "2.0.2",
+ "glob": "^13.0.0",
+ "graceful-fs": "^4.2.9",
+ "node-gyp-build": "^4.2.2",
+ "picomatch": "^4.0.2",
+ "resolve-from": "^5.0.0"
+ },
+ "bin": {
+ "nft": "out/cli.js"
+ },
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/@vercel/hono/node_modules/zod": {
+ "version": "3.22.4",
+ "resolved": "https://registry.npmmirror.com/zod/-/zod-3.22.4.tgz",
+ "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/colinhacks"
+ }
+ },
+ "node_modules/@vercel/hydrogen": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmmirror.com/@vercel/hydrogen/-/hydrogen-9.0.1.tgz",
+ "integrity": "sha512-TY6Herz0R70MerS/Rx/dC284QL9m+tWYMObya6REUmHK+XMxDofaTIoOY+aXz0SLT1pAIW2LSbkxR3C/nmVO+g==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/static-config": "3.4.3",
+ "ts-morph": "12.0.0"
+ },
+ "peerDependencies": {
+ "@vercel/build-utils": "14.10.1"
+ }
+ },
+ "node_modules/@vercel/koa": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmmirror.com/@vercel/koa/-/koa-8.0.1.tgz",
+ "integrity": "sha512-vv+3fLbvCrtiQyqoOJ61+PDII8MWbbpIi2EwmAEiQ8eccGaPQB2SamQowk2GaV9te2Uu+kU9uIY8C9YPctYLnQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/node": "13.0.1",
+ "@vercel/static-config": "3.4.3"
+ },
+ "peerDependencies": {
+ "@vercel/build-utils": "14.10.1"
+ }
+ },
+ "node_modules/@vercel/nestjs": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmmirror.com/@vercel/nestjs/-/nestjs-8.0.1.tgz",
+ "integrity": "sha512-KfTbIMi0ANaSxJ2oN+7xw6GqV8z8BwFwTtm4n6UciKaM4E0xyl3hl3HqJIWpxrzSbM8Wgwh8tx/w8aUp7KiCrg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/node": "13.0.1",
+ "@vercel/static-config": "3.4.3"
+ },
+ "peerDependencies": {
+ "@vercel/build-utils": "14.10.1"
+ }
+ },
+ "node_modules/@vercel/next": {
+ "version": "12.0.2",
+ "resolved": "https://registry.npmmirror.com/@vercel/next/-/next-12.0.2.tgz",
+ "integrity": "sha512-o1i6P/EHxLZLe4QSlvK9/A69uW569Z+O00Yw76gd72T9wJwnL5N5EVYkpgRhb79grUImU24QdU8UWvdfNl799A==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/nft": "1.10.0"
+ },
+ "peerDependencies": {
+ "@vercel/build-utils": "14.10.1"
+ }
+ },
+ "node_modules/@vercel/next/node_modules/@vercel/nft": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmmirror.com/@vercel/nft/-/nft-1.10.0.tgz",
+ "integrity": "sha512-iLOW4fcsgkipfOh2Bw3wB38YDfxTlxr7+j4uFeui2OswkNT28jIitS/aMce7tS0mef1YPQ8zLIDYr3a0aahNrA==",
+ "license": "MIT",
+ "dependencies": {
+ "@mapbox/node-pre-gyp": "^2.0.0",
+ "@rollup/pluginutils": "^5.1.3",
+ "acorn": "^8.6.0",
+ "acorn-import-attributes": "^1.9.5",
+ "async-sema": "^3.1.1",
+ "bindings": "^1.4.0",
+ "estree-walker": "2.0.2",
+ "glob": "^13.0.0",
+ "graceful-fs": "^4.2.9",
+ "node-gyp-build": "^4.2.2",
+ "picomatch": "^4.0.2",
+ "resolve-from": "^5.0.0"
+ },
+ "bin": {
+ "nft": "out/cli.js"
+ },
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/@vercel/nft": {
+ "version": "1.11.0",
+ "resolved": "https://registry.npmmirror.com/@vercel/nft/-/nft-1.11.0.tgz",
+ "integrity": "sha512-m1QFg+U+3yPOnP1xSYJ73UIRxLOXdts1JOhiOiyPYqEsALgrXFFINvgUaD6R6iNvaBFAjHllBCbkfx4FuOdpaA==",
+ "license": "MIT",
+ "dependencies": {
+ "@mapbox/node-pre-gyp": "^2.0.0",
+ "@rollup/pluginutils": "^5.1.3",
+ "acorn": "^8.6.0",
+ "acorn-import-attributes": "^1.9.5",
+ "async-sema": "^3.1.1",
+ "bindings": "^1.4.0",
+ "estree-walker": "2.0.2",
+ "glob": "^13.0.0",
+ "graceful-fs": "^4.2.9",
+ "node-gyp-build": "^4.2.2",
+ "picomatch": "^4.0.4",
+ "resolve-from": "^5.0.0"
+ },
+ "bin": {
+ "nft": "out/cli.js"
+ },
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/@vercel/node": {
+ "version": "13.0.1",
+ "resolved": "https://registry.npmmirror.com/@vercel/node/-/node-13.0.1.tgz",
+ "integrity": "sha512-WpHviLdoReq5oGTQhbljiKZTxshARiSjqN+8dh8GB5icaXTjhneDoWJlQYUw0yd4PSfBeWNJzFMHt+bsSU6d/w==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@edge-runtime/node-utils": "2.3.0",
+ "@edge-runtime/primitives": "4.1.0",
+ "@edge-runtime/vm": "3.2.0",
+ "@types/node": "20.11.0",
+ "@vercel/error-utils": "2.2.1",
+ "@vercel/nft": "1.10.0",
+ "@vercel/static-config": "3.4.3",
+ "async-listen": "3.0.0",
+ "cjs-module-lexer": "1.2.3",
+ "edge-runtime": "2.5.9",
+ "es-module-lexer": "1.4.1",
+ "esbuild": "0.27.0",
+ "etag": "1.8.1",
+ "mime-types": "2.1.35",
+ "node-fetch": "2.6.9",
+ "path-to-regexp": "6.1.0",
+ "path-to-regexp-updated": "npm:path-to-regexp@6.3.0",
+ "ts-morph": "12.0.0",
+ "tsx": "4.21.0",
+ "typescript": "npm:typescript@5.9.3",
+ "undici": "5.28.4"
+ },
+ "peerDependencies": {
+ "@vercel/build-utils": "14.10.1"
+ }
+ },
+ "node_modules/@vercel/node/node_modules/@esbuild/aix-ppc64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.27.0.tgz",
+ "integrity": "sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/node/node_modules/@esbuild/android-arm": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.27.0.tgz",
+ "integrity": "sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/node/node_modules/@esbuild/android-arm64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.27.0.tgz",
+ "integrity": "sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/node/node_modules/@esbuild/android-x64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.27.0.tgz",
+ "integrity": "sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/node/node_modules/@esbuild/darwin-arm64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.27.0.tgz",
+ "integrity": "sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/node/node_modules/@esbuild/darwin-x64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.27.0.tgz",
+ "integrity": "sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/node/node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.0.tgz",
+ "integrity": "sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/node/node_modules/@esbuild/freebsd-x64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.27.0.tgz",
+ "integrity": "sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/node/node_modules/@esbuild/linux-arm": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.27.0.tgz",
+ "integrity": "sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/node/node_modules/@esbuild/linux-arm64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.27.0.tgz",
+ "integrity": "sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/node/node_modules/@esbuild/linux-ia32": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.27.0.tgz",
+ "integrity": "sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/node/node_modules/@esbuild/linux-loong64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.27.0.tgz",
+ "integrity": "sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg==",
+ "cpu": [
+ "loong64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/node/node_modules/@esbuild/linux-mips64el": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.27.0.tgz",
+ "integrity": "sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg==",
+ "cpu": [
+ "mips64el"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/node/node_modules/@esbuild/linux-ppc64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.27.0.tgz",
+ "integrity": "sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/node/node_modules/@esbuild/linux-riscv64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.27.0.tgz",
+ "integrity": "sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/node/node_modules/@esbuild/linux-s390x": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.27.0.tgz",
+ "integrity": "sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/node/node_modules/@esbuild/linux-x64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.27.0.tgz",
+ "integrity": "sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/node/node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.0.tgz",
+ "integrity": "sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/node/node_modules/@esbuild/netbsd-x64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.27.0.tgz",
+ "integrity": "sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/node/node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.0.tgz",
+ "integrity": "sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/node/node_modules/@esbuild/openbsd-x64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.27.0.tgz",
+ "integrity": "sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/node/node_modules/@esbuild/openharmony-arm64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.0.tgz",
+ "integrity": "sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/node/node_modules/@esbuild/sunos-x64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.27.0.tgz",
+ "integrity": "sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/node/node_modules/@esbuild/win32-arm64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.27.0.tgz",
+ "integrity": "sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/node/node_modules/@esbuild/win32-ia32": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.27.0.tgz",
+ "integrity": "sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/node/node_modules/@esbuild/win32-x64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.27.0.tgz",
+ "integrity": "sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/node/node_modules/@vercel/nft": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmmirror.com/@vercel/nft/-/nft-1.10.0.tgz",
+ "integrity": "sha512-iLOW4fcsgkipfOh2Bw3wB38YDfxTlxr7+j4uFeui2OswkNT28jIitS/aMce7tS0mef1YPQ8zLIDYr3a0aahNrA==",
+ "license": "MIT",
+ "dependencies": {
+ "@mapbox/node-pre-gyp": "^2.0.0",
+ "@rollup/pluginutils": "^5.1.3",
+ "acorn": "^8.6.0",
+ "acorn-import-attributes": "^1.9.5",
+ "async-sema": "^3.1.1",
+ "bindings": "^1.4.0",
+ "estree-walker": "2.0.2",
+ "glob": "^13.0.0",
+ "graceful-fs": "^4.2.9",
+ "node-gyp-build": "^4.2.2",
+ "picomatch": "^4.0.2",
+ "resolve-from": "^5.0.0"
+ },
+ "bin": {
+ "nft": "out/cli.js"
+ },
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/@vercel/node/node_modules/es-module-lexer": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.4.1.tgz",
+ "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==",
+ "license": "MIT"
+ },
+ "node_modules/@vercel/node/node_modules/esbuild": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.27.0.tgz",
+ "integrity": "sha512-jd0f4NHbD6cALCyGElNpGAOtWxSq46l9X/sWB0Nzd5er4Kz2YTm+Vl0qKFT9KUJvD8+fiO8AvoHhFvEatfVixA==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "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"
+ }
+ },
+ "node_modules/@vercel/node/node_modules/node-fetch": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.6.9.tgz",
+ "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==",
+ "license": "MIT",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vercel/node/node_modules/path-to-regexp": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-6.1.0.tgz",
+ "integrity": "sha512-h9DqehX3zZZDCEm+xbfU0ZmwCGFCAAraPJWMXJ4+v32NjZJilVg3k1TcKsRgIb8IQ/izZSaydDc1OhJCZvs2Dw==",
+ "license": "MIT"
+ },
+ "node_modules/@vercel/node/node_modules/undici": {
+ "version": "5.28.4",
+ "resolved": "https://registry.npmmirror.com/undici/-/undici-5.28.4.tgz",
+ "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==",
+ "license": "MIT",
+ "dependencies": {
+ "@fastify/busboy": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.0"
+ }
+ },
+ "node_modules/@vercel/oidc": {
+ "version": "3.8.8",
+ "resolved": "https://registry.npmmirror.com/@vercel/oidc/-/oidc-3.8.8.tgz",
+ "integrity": "sha512-aeq4/sgVh80zO6j2H+7FRfsG6NOXBrvzV1EEO8IdXPEJgwHIPakP+BFq3QmprsEQ18bIimds07kvaYhm2lehtg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/cli-config": "0.2.7",
+ "@vercel/cli-exec": "1.0.1",
+ "jose": "^5.9.6"
+ },
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/@vercel/oidc/node_modules/jose": {
+ "version": "5.10.0",
+ "resolved": "https://registry.npmmirror.com/jose/-/jose-5.10.0.tgz",
+ "integrity": "sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/panva"
+ }
+ },
+ "node_modules/@vercel/prepare-flags-definitions": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmmirror.com/@vercel/prepare-flags-definitions/-/prepare-flags-definitions-0.3.0.tgz",
+ "integrity": "sha512-/0nuDFwYje0nqZnVKSd2VfJy2wOPQwbkas1qO1JQgtb0sLl+EeSCW4O9hrvq55pN50PNlAZ/APSeWHIAT9ZGHg==",
+ "license": "MIT"
+ },
+ "node_modules/@vercel/python": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmmirror.com/@vercel/python/-/python-14.1.0.tgz",
+ "integrity": "sha512-JzAJcam4ImefuP921A3UmBf8TLsjssHy8H7qi+8dlkklDkXaOWHNceUXx8spvdDeaFwuY2yiG66S2YG74PV0kQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/python-analysis": "0.14.0"
+ },
+ "peerDependencies": {
+ "@vercel/build-utils": "14.10.1"
+ }
+ },
+ "node_modules/@vercel/python-analysis": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmmirror.com/@vercel/python-analysis/-/python-analysis-0.14.0.tgz",
+ "integrity": "sha512-qyVxbaU14gAi/AsaR8syZLukUsOp69Jkm1xn80rZPy4k9+zRUTIfqs0AOk7L8wwBxDDB6LLjcBUAmafhbJQnUQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@bytecodealliance/preview2-shim": "0.17.6",
+ "@renovatebot/pep440": "4.2.1",
+ "fs-extra": "11.1.1",
+ "js-yaml": "4.1.1",
+ "minimatch": "10.1.1",
+ "smol-toml": "1.5.2",
+ "zod": "3.22.4"
+ }
+ },
+ "node_modules/@vercel/python-analysis/node_modules/fs-extra": {
+ "version": "11.1.1",
+ "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-11.1.1.tgz",
+ "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==",
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.14"
+ }
+ },
+ "node_modules/@vercel/python-analysis/node_modules/js-yaml": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.1.tgz",
+ "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/@vercel/python-analysis/node_modules/minimatch": {
+ "version": "10.1.1",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-10.1.1.tgz",
+ "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==",
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "@isaacs/brace-expansion": "^5.0.0"
+ },
+ "engines": {
+ "node": "20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@vercel/python-analysis/node_modules/zod": {
+ "version": "3.22.4",
+ "resolved": "https://registry.npmmirror.com/zod/-/zod-3.22.4.tgz",
+ "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/colinhacks"
+ }
+ },
+ "node_modules/@vercel/redwood": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmmirror.com/@vercel/redwood/-/redwood-10.0.1.tgz",
+ "integrity": "sha512-QWoU1/clpD9o3ewwx0GJreQRokcOAXcAF71+CQLeKmc0fmCaeJKBtptCuuSuM6NW7Idcc8/CGcCaG59IV1Wpdw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/nft": "1.10.0",
+ "@vercel/static-config": "3.4.3",
+ "semver": "6.3.1",
+ "ts-morph": "12.0.0"
+ },
+ "peerDependencies": {
+ "@vercel/build-utils": "14.10.1"
+ }
+ },
+ "node_modules/@vercel/redwood/node_modules/@vercel/nft": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmmirror.com/@vercel/nft/-/nft-1.10.0.tgz",
+ "integrity": "sha512-iLOW4fcsgkipfOh2Bw3wB38YDfxTlxr7+j4uFeui2OswkNT28jIitS/aMce7tS0mef1YPQ8zLIDYr3a0aahNrA==",
+ "license": "MIT",
+ "dependencies": {
+ "@mapbox/node-pre-gyp": "^2.0.0",
+ "@rollup/pluginutils": "^5.1.3",
+ "acorn": "^8.6.0",
+ "acorn-import-attributes": "^1.9.5",
+ "async-sema": "^3.1.1",
+ "bindings": "^1.4.0",
+ "estree-walker": "2.0.2",
+ "glob": "^13.0.0",
+ "graceful-fs": "^4.2.9",
+ "node-gyp-build": "^4.2.2",
+ "picomatch": "^4.0.2",
+ "resolve-from": "^5.0.0"
+ },
+ "bin": {
+ "nft": "out/cli.js"
+ },
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/@vercel/redwood/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@vercel/remix-builder": {
+ "version": "13.0.1",
+ "resolved": "https://registry.npmmirror.com/@vercel/remix-builder/-/remix-builder-13.0.1.tgz",
+ "integrity": "sha512-+kHAO9xF2xSMZ0Zx/+qFeY4r/ynaL14KpvJekYLbSzH6LZ4ItczGjA7KSW5LNgaEXkn7BVo926MY3xJnS8Fpzw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/error-utils": "2.2.1",
+ "@vercel/nft": "1.10.0",
+ "@vercel/static-config": "3.4.3",
+ "path-to-regexp": "6.1.0",
+ "path-to-regexp-updated": "npm:path-to-regexp@6.3.0",
+ "ts-morph": "12.0.0"
+ },
+ "peerDependencies": {
+ "@vercel/build-utils": "14.10.1"
+ }
+ },
+ "node_modules/@vercel/remix-builder/node_modules/@vercel/nft": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmmirror.com/@vercel/nft/-/nft-1.10.0.tgz",
+ "integrity": "sha512-iLOW4fcsgkipfOh2Bw3wB38YDfxTlxr7+j4uFeui2OswkNT28jIitS/aMce7tS0mef1YPQ8zLIDYr3a0aahNrA==",
+ "license": "MIT",
+ "dependencies": {
+ "@mapbox/node-pre-gyp": "^2.0.0",
+ "@rollup/pluginutils": "^5.1.3",
+ "acorn": "^8.6.0",
+ "acorn-import-attributes": "^1.9.5",
+ "async-sema": "^3.1.1",
+ "bindings": "^1.4.0",
+ "estree-walker": "2.0.2",
+ "glob": "^13.0.0",
+ "graceful-fs": "^4.2.9",
+ "node-gyp-build": "^4.2.2",
+ "picomatch": "^4.0.2",
+ "resolve-from": "^5.0.0"
+ },
+ "bin": {
+ "nft": "out/cli.js"
+ },
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/@vercel/remix-builder/node_modules/path-to-regexp": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-6.1.0.tgz",
+ "integrity": "sha512-h9DqehX3zZZDCEm+xbfU0ZmwCGFCAAraPJWMXJ4+v32NjZJilVg3k1TcKsRgIb8IQ/izZSaydDc1OhJCZvs2Dw==",
+ "license": "MIT"
+ },
+ "node_modules/@vercel/ruby": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmmirror.com/@vercel/ruby/-/ruby-10.0.1.tgz",
+ "integrity": "sha512-kObC4bDyXCIpZ6PUnzJ0isMwF6yfvzZwXYH1ZqRp2V5l4YPFCusjdOMMJvsd7jQzAeVojLp9/TKfvn2YsOLp9g==",
+ "license": "Apache-2.0",
+ "peerDependencies": {
+ "@vercel/build-utils": "14.10.1"
+ }
+ },
+ "node_modules/@vercel/rust": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmmirror.com/@vercel/rust/-/rust-9.0.1.tgz",
+ "integrity": "sha512-Jwylr1K66LQJuQ2JakMB6D40ldod0iMy1pQ7lR26crbpC5eOESIj1Md0SJ4Qvu4O3Y7L0t5F7InBveX7vQ9EKw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "execa": "5",
+ "get-port": "5.1.1",
+ "smol-toml": "1.5.2"
+ },
+ "peerDependencies": {
+ "@vercel/build-utils": "14.10.1"
+ }
+ },
+ "node_modules/@vercel/rust/node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "license": "MIT",
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/@vercel/rust/node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@vercel/rust/node_modules/human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=10.17.0"
+ }
+ },
+ "node_modules/@vercel/rust/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@vercel/rust/node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@vercel/rust/node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "license": "ISC"
+ },
+ "node_modules/@vercel/rust/node_modules/strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@vercel/sandbox": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/@vercel/sandbox/-/sandbox-3.1.0.tgz",
+ "integrity": "sha512-z124E4rsmNpwGtTnLImiYzEXk972bWniQyhlvkEt35UtwKTdfBAFXcNG2OvqYqwzAsdQaP3B7teQ2pqA9B5Viw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/oidc": "3.2.0",
+ "@workflow/serde": "4.1.0-beta.2",
+ "async-retry": "1.3.3",
+ "jose": "6.2.3",
+ "jsonlines": "0.1.1",
+ "lru-cache": "^10.4.3",
+ "ms": "2.1.3",
+ "picocolors": "^1.1.1",
+ "tar-stream": "3.1.7",
+ "undici": "^7.27.1",
+ "xdg-app-paths": "5.1.0",
+ "zod": "^4.1.1"
+ }
+ },
+ "node_modules/@vercel/sandbox/node_modules/@vercel/oidc": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/@vercel/oidc/-/oidc-3.2.0.tgz",
+ "integrity": "sha512-UycprH3T6n3jH0k44NHMa7pnFHGu/N05MjojYr+Mc6I7obkoLIJujSWwin1pCvdy/eOxrI/l3uDLQsmcrOb4ug==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/@vercel/sandbox/node_modules/jose": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmmirror.com/jose/-/jose-6.2.3.tgz",
+ "integrity": "sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/panva"
+ }
+ },
+ "node_modules/@vercel/sandbox/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "license": "ISC"
+ },
+ "node_modules/@vercel/sandbox/node_modules/xdg-app-paths": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/xdg-app-paths/-/xdg-app-paths-5.1.0.tgz",
+ "integrity": "sha512-RAQ3WkPf4KTU1A8RtFx3gWywzVKe00tfOPFfl2NDGqbIFENQO4kqAJp7mhQjNj/33W5x5hiWWUdyfPq/5SU3QA==",
+ "license": "MIT",
+ "dependencies": {
+ "xdg-portable": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@vercel/static-build": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmmirror.com/@vercel/static-build/-/static-build-10.0.1.tgz",
+ "integrity": "sha512-uoECEpg+cuF57/i59pQSFMHVQGwUttKnuTJMW2v1TE42aDZY8eI2lHN2WwgMKlfoWzXR0Sy/M6s0dTN4181kTQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/gatsby-plugin-vercel-analytics": "1.0.12",
+ "@vercel/gatsby-plugin-vercel-builder": "2.2.57",
+ "@vercel/static-config": "3.4.3",
+ "ts-morph": "12.0.0"
+ },
+ "peerDependencies": {
+ "@vercel/build-utils": "14.10.1"
+ }
+ },
+ "node_modules/@vercel/static-config": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmmirror.com/@vercel/static-config/-/static-config-3.4.3.tgz",
+ "integrity": "sha512-BY1sL8rNJvIm3TK/8TQ+Q6jIx7NpO5xckQzv7s6c1ypHvRnTl+vf6rmgY5WFXmoYDeGm3tMy4jiy/5M/5jGr/g==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "ajv": "8.6.3",
+ "json-schema-to-ts": "1.6.4",
+ "oxc-parser": "0.121.0",
+ "ts-morph": "12.0.0"
+ }
+ },
+ "node_modules/@vercel/vc-native-darwin-arm64": {
+ "version": "59.20.0",
+ "resolved": "https://registry.npmmirror.com/@vercel/vc-native-darwin-arm64/-/vc-native-darwin-arm64-59.20.0.tgz",
+ "integrity": "sha512-MEaEAfCe0w3KK3VLGB7WHkBdm0yW0H3nswtqOnl3pIB36ZwR+MuvYksskeqyi9ugj1kQGD8d9OU+InL4v29wEA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@vercel/vc-native-darwin-x64": {
+ "version": "59.20.0",
+ "resolved": "https://registry.npmmirror.com/@vercel/vc-native-darwin-x64/-/vc-native-darwin-x64-59.20.0.tgz",
+ "integrity": "sha512-jbkt0jmm2uvbXwVpSC6THs+6arRbFCr5xMQDlUL5A/Fiz1qFwhW3qAL3NQMLJ6MajTL6mE308AQpg0ATSu0EpQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@vercel/vc-native-linux-arm64": {
+ "version": "59.20.0",
+ "resolved": "https://registry.npmmirror.com/@vercel/vc-native-linux-arm64/-/vc-native-linux-arm64-59.20.0.tgz",
+ "integrity": "sha512-cI6fF20Zzm69quoic8IfSSfFA5w0zptBWIZeYgerU4Z36UQtW4xKTZgRpxhkp1UOYZg7O6+rCYjgXi5a5D7QAQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@vercel/vc-native-linux-x64": {
+ "version": "59.20.0",
+ "resolved": "https://registry.npmmirror.com/@vercel/vc-native-linux-x64/-/vc-native-linux-x64-59.20.0.tgz",
+ "integrity": "sha512-BJTyFF/Rk6AHgzfbys0Ujgw6lPwUVtgjEHIoJlXGQ0eQrHDOUGhjAVK8Il2qw8mDO7iPErsPGTgyMvvUIprzXQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@vercel/vc-native-win32-arm64": {
+ "version": "59.20.0",
+ "resolved": "https://registry.npmmirror.com/@vercel/vc-native-win32-arm64/-/vc-native-win32-arm64-59.20.0.tgz",
+ "integrity": "sha512-C5kbeunxXXxGaJF1ZWST+g/x7ZKzFKbeish4/+/NvBUkC+202Vv/coJeO8wmPbqxcGeAIrv1rG97r6RPfC+5lw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@vercel/vc-native-win32-x64": {
+ "version": "59.20.0",
+ "resolved": "https://registry.npmmirror.com/@vercel/vc-native-win32-x64/-/vc-native-win32-x64-59.20.0.tgz",
+ "integrity": "sha512-OY+vN+zgRAFJTNgxG86D+gUs3Q4/bKEewMff6T3SS3l5eix25lcWzI3IvP6a7bAhUpt3tNayTBIb0jpTGOn8aQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@workflow/serde": {
+ "version": "4.1.0-beta.2",
+ "resolved": "https://registry.npmmirror.com/@workflow/serde/-/serde-4.1.0-beta.2.tgz",
+ "integrity": "sha512-8kkeoQKLDaKXefjV5dbhBj2aErfKp1Mc4pb6tj8144cF+Em5SPbyMbyLCHp+BVrFfFVCBluCtMx+jjvaFVZGww==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/abbrev": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/abbrev/-/abbrev-3.0.1.tgz",
+ "integrity": "sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==",
+ "license": "ISC",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/acorn": {
+ "version": "8.18.0",
+ "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.18.0.tgz",
+ "integrity": "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==",
+ "license": "MIT",
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-import-attributes": {
+ "version": "1.9.5",
+ "resolved": "https://registry.npmmirror.com/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz",
+ "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "acorn": "^8"
+ }
+ },
+ "node_modules/add-mcp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/add-mcp/-/add-mcp-2.0.0.tgz",
+ "integrity": "sha512-UvMKmPPzE+9WgzghCkOTP2e1rKBZBWZ2XzUwR0Q/6Y8EOUPiVLL+44v8zNKaUoxEyFNIU+CETSrGBz7DWFjxig==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@clack/prompts": "^0.9.1",
+ "@iarna/toml": "^2.2.5",
+ "chalk": "^5.4.1",
+ "commander": "^13.1.0",
+ "js-yaml": "^4.1.0",
+ "jsonc-parser": "^3.3.1"
+ },
+ "bin": {
+ "add-mcp": "dist/index.js"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/add-mcp/node_modules/@clack/core": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmmirror.com/@clack/core/-/core-0.4.1.tgz",
+ "integrity": "sha512-Pxhij4UXg8KSr7rPek6Zowm+5M22rbd2g1nfojHJkxp5YkFqiZ2+YLEM/XGVIzvGOcM0nqjIFxrpDwWRZYWYjA==",
+ "license": "MIT",
+ "dependencies": {
+ "picocolors": "^1.0.0",
+ "sisteransi": "^1.0.5"
+ }
+ },
+ "node_modules/add-mcp/node_modules/@clack/prompts": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmmirror.com/@clack/prompts/-/prompts-0.9.1.tgz",
+ "integrity": "sha512-JIpyaboYZeWYlyP0H+OoPPxd6nqueG/CmN6ixBiNFsIDHREevjIf0n0Ohh5gr5C8pEDknzgvz+pIJ8dMhzWIeg==",
+ "license": "MIT",
+ "dependencies": {
+ "@clack/core": "0.4.1",
+ "picocolors": "^1.0.0",
+ "sisteransi": "^1.0.5"
+ }
+ },
+ "node_modules/add-mcp/node_modules/chalk": {
+ "version": "5.6.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-5.6.2.tgz",
+ "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+ "license": "MIT",
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/agent-base": {
+ "version": "7.1.4",
+ "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-7.1.4.tgz",
+ "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "8.6.3",
+ "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.6.3.tgz",
+ "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/any-promise": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/any-promise/-/any-promise-1.3.0.tgz",
+ "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
+ "license": "MIT"
+ },
+ "node_modules/arg": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/arg/-/arg-4.1.0.tgz",
+ "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==",
+ "license": "MIT"
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "license": "Python-2.0"
+ },
+ "node_modules/async-listen": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/async-listen/-/async-listen-3.0.0.tgz",
+ "integrity": "sha512-V+SsTpDqkrWTimiotsyl33ePSjA5/KrithwupuvJ6ztsqPvGv6ge4OredFhPffVXiLN/QUWvE0XcqJaYgt6fOg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/async-retry": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmmirror.com/async-retry/-/async-retry-1.3.3.tgz",
+ "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==",
+ "license": "MIT",
+ "dependencies": {
+ "retry": "0.13.1"
+ }
+ },
+ "node_modules/async-sema": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/async-sema/-/async-sema-3.1.1.tgz",
+ "integrity": "sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==",
+ "license": "MIT"
+ },
+ "node_modules/b4a": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/b4a/-/b4a-1.9.0.tgz",
+ "integrity": "sha512-dpfcF9fDNR6++cthXR67iyhgqWy9CBouAvIWhIntzBG6cvK/cnIPiZQjBwi/ZqjjBEDGfoNDtmB0kTjroOJ3pQ==",
+ "license": "Apache-2.0",
+ "peerDependencies": {
+ "react-native-b4a": "*"
+ },
+ "peerDependenciesMeta": {
+ "react-native-b4a": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-4.0.4.tgz",
+ "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
+ "license": "MIT",
+ "engines": {
+ "node": "18 || 20 || >=22"
+ }
+ },
+ "node_modules/bare-events": {
+ "version": "2.9.2",
+ "resolved": "https://registry.npmmirror.com/bare-events/-/bare-events-2.9.2.tgz",
+ "integrity": "sha512-AIPKioV7/Y/8KfZ3AAhjPJxLLbY49S64Ym5DakZlUg75qQiTgUq9hEJoEwa4eUezPUlXRy/i5NpsKvo9jgKmoA==",
+ "license": "Apache-2.0",
+ "peerDependencies": {
+ "bare-abort-controller": "*"
+ },
+ "peerDependenciesMeta": {
+ "bare-abort-controller": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/bindings": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmmirror.com/bindings/-/bindings-1.5.0.tgz",
+ "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
+ "license": "MIT",
+ "dependencies": {
+ "file-uri-to-path": "1.0.0"
+ }
+ },
+ "node_modules/brace-expansion": {
+ "version": "5.0.12",
+ "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-5.0.12.tgz",
+ "integrity": "sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^4.0.2"
+ },
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "license": "MIT",
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/buffer": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmmirror.com/buffer/-/buffer-6.0.3.tgz",
+ "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.2.1"
+ }
+ },
+ "node_modules/buffer-crc32": {
+ "version": "0.2.13",
+ "resolved": "https://registry.npmmirror.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
+ "license": "MIT",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/bundle-name": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/bundle-name/-/bundle-name-4.1.0.tgz",
+ "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==",
+ "license": "MIT",
+ "dependencies": {
+ "run-applescript": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/bytes": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.0.tgz",
+ "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-5.3.0.tgz",
+ "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==",
+ "license": "MIT",
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/chokidar": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-5.0.0.tgz",
+ "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==",
+ "license": "MIT",
+ "dependencies": {
+ "readdirp": "^5.0.0"
+ },
+ "engines": {
+ "node": ">= 20.19.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/chownr": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz",
+ "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/cjs-module-lexer": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmmirror.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz",
+ "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==",
+ "license": "MIT"
+ },
+ "node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmmirror.com/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/code-block-writer": {
+ "version": "10.1.1",
+ "resolved": "https://registry.npmmirror.com/code-block-writer/-/code-block-writer-10.1.1.tgz",
+ "integrity": "sha512-67ueh2IRGst/51p0n6FvPrnRjAGHY5F8xdjkgrYE7DDzpJe6qA07RYQ9VcoUeo5ATOjSOiWpSL3SWBRRbempMw==",
+ "license": "MIT"
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "license": "MIT"
+ },
+ "node_modules/commander": {
+ "version": "13.1.0",
+ "resolved": "https://registry.npmmirror.com/commander/-/commander-13.1.0.tgz",
+ "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "license": "MIT"
+ },
+ "node_modules/consola": {
+ "version": "3.4.2",
+ "resolved": "https://registry.npmmirror.com/consola/-/consola-3.4.2.tgz",
+ "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==",
+ "license": "MIT",
+ "engines": {
+ "node": "^14.18.0 || >=16.10.0"
+ }
+ },
+ "node_modules/content-type": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/content-type/-/content-type-1.0.4.tgz",
+ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/convert-hrtime": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/convert-hrtime/-/convert-hrtime-3.0.0.tgz",
+ "integrity": "sha512-7V+KqSvMiHp8yWDuwfww06XleMWVVB9b9tURBx+G7UTADuo5hYPuowKloz4OzOqbPezxgo+fdQ1522WzPG4OeA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/cross-spawn/node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/data-uri-to-buffer": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz",
+ "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/default-browser": {
+ "version": "5.5.1",
+ "resolved": "https://registry.npmmirror.com/default-browser/-/default-browser-5.5.1.tgz",
+ "integrity": "sha512-m1pAzaJgZ/gssEqlOhJkPJp8Xly7QyW6xcrkUa2KKcDeDSEMP7X8xipU3snUcfisTQx0w1AGae+9UtJSfVnXGw==",
+ "license": "MIT",
+ "dependencies": {
+ "bundle-name": "^4.1.0",
+ "default-browser-id": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/default-browser-id": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/default-browser-id/-/default-browser-id-5.0.1.tgz",
+ "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/define-lazy-prop": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
+ "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/detect-libc": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-2.1.2.tgz",
+ "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/diff": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/diff/-/diff-5.2.0.tgz",
+ "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.3.1"
+ }
+ },
+ "node_modules/dset": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmmirror.com/dset/-/dset-3.1.4.tgz",
+ "integrity": "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/edge-runtime": {
+ "version": "2.5.9",
+ "resolved": "https://registry.npmmirror.com/edge-runtime/-/edge-runtime-2.5.9.tgz",
+ "integrity": "sha512-pk+k0oK0PVXdlT4oRp4lwh+unuKB7Ng4iZ2HB+EZ7QCEQizX360Rp/F4aRpgpRgdP2ufB35N+1KppHmYjqIGSg==",
+ "license": "MPL-2.0",
+ "dependencies": {
+ "@edge-runtime/format": "2.2.1",
+ "@edge-runtime/ponyfill": "2.4.2",
+ "@edge-runtime/vm": "3.2.0",
+ "async-listen": "3.0.1",
+ "mri": "1.2.0",
+ "picocolors": "1.0.0",
+ "pretty-ms": "7.0.1",
+ "signal-exit": "4.0.2",
+ "time-span": "4.0.0"
+ },
+ "bin": {
+ "edge-runtime": "dist/cli/index.js"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/edge-runtime/node_modules/async-listen": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/async-listen/-/async-listen-3.0.1.tgz",
+ "integrity": "sha512-cWMaNwUJnf37C/S5TfCkk/15MwbPRwVYALA2jtjkbHjCmAPiDXyNJy2q3p1KAZzDLHAWyarUWSujUoHR4pEgrA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/edge-runtime/node_modules/parse-ms": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/parse-ms/-/parse-ms-2.1.0.tgz",
+ "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/edge-runtime/node_modules/picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+ "license": "ISC"
+ },
+ "node_modules/edge-runtime/node_modules/pretty-ms": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmmirror.com/pretty-ms/-/pretty-ms-7.0.1.tgz",
+ "integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==",
+ "license": "MIT",
+ "dependencies": {
+ "parse-ms": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/edge-runtime/node_modules/signal-exit": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-4.0.2.tgz",
+ "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "license": "MIT"
+ },
+ "node_modules/end-of-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.1.0.tgz",
+ "integrity": "sha512-EoulkdKF/1xa92q25PbjuDcgJ9RDHYU2Rs3SCIvs2/dSQ3BpmxneNHmA/M7fe60M3PrV7nNGTTNbkK62l6vXiQ==",
+ "license": "MIT",
+ "dependencies": {
+ "once": "~1.3.0"
+ }
+ },
+ "node_modules/es-module-lexer": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.5.0.tgz",
+ "integrity": "sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==",
+ "license": "MIT"
+ },
+ "node_modules/esbuild": {
+ "version": "0.28.1",
+ "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.28.1.tgz",
+ "integrity": "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.28.1",
+ "@esbuild/android-arm": "0.28.1",
+ "@esbuild/android-arm64": "0.28.1",
+ "@esbuild/android-x64": "0.28.1",
+ "@esbuild/darwin-arm64": "0.28.1",
+ "@esbuild/darwin-x64": "0.28.1",
+ "@esbuild/freebsd-arm64": "0.28.1",
+ "@esbuild/freebsd-x64": "0.28.1",
+ "@esbuild/linux-arm": "0.28.1",
+ "@esbuild/linux-arm64": "0.28.1",
+ "@esbuild/linux-ia32": "0.28.1",
+ "@esbuild/linux-loong64": "0.28.1",
+ "@esbuild/linux-mips64el": "0.28.1",
+ "@esbuild/linux-ppc64": "0.28.1",
+ "@esbuild/linux-riscv64": "0.28.1",
+ "@esbuild/linux-s390x": "0.28.1",
+ "@esbuild/linux-x64": "0.28.1",
+ "@esbuild/netbsd-arm64": "0.28.1",
+ "@esbuild/netbsd-x64": "0.28.1",
+ "@esbuild/openbsd-arm64": "0.28.1",
+ "@esbuild/openbsd-x64": "0.28.1",
+ "@esbuild/openharmony-arm64": "0.28.1",
+ "@esbuild/sunos-x64": "0.28.1",
+ "@esbuild/win32-arm64": "0.28.1",
+ "@esbuild/win32-ia32": "0.28.1",
+ "@esbuild/win32-x64": "0.28.1"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+ "license": "MIT"
+ },
+ "node_modules/etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/events-intercept": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/events-intercept/-/events-intercept-2.0.0.tgz",
+ "integrity": "sha512-blk1va0zol9QOrdZt0rFXo5KMkNPVSp92Eju/Qz8THwKWKRKeE0T8Br/1aW6+Edkyq9xHYgYxn2QtOnUKPUp+Q==",
+ "license": "MIT"
+ },
+ "node_modules/events-universal": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/events-universal/-/events-universal-1.0.1.tgz",
+ "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "bare-events": "^2.7.0"
+ }
+ },
+ "node_modules/execa": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmmirror.com/execa/-/execa-9.6.1.tgz",
+ "integrity": "sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==",
+ "license": "MIT",
+ "dependencies": {
+ "@sindresorhus/merge-streams": "^4.0.0",
+ "cross-spawn": "^7.0.6",
+ "figures": "^6.1.0",
+ "get-stream": "^9.0.0",
+ "human-signals": "^8.0.1",
+ "is-plain-obj": "^4.1.0",
+ "is-stream": "^4.0.1",
+ "npm-run-path": "^6.0.0",
+ "pretty-ms": "^9.2.0",
+ "signal-exit": "^4.1.0",
+ "strip-final-newline": "^4.0.0",
+ "yoctocolors": "^2.1.1"
+ },
+ "engines": {
+ "node": "^18.19.0 || >=20.5.0"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "license": "MIT"
+ },
+ "node_modules/fast-fifo": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmmirror.com/fast-fifo/-/fast-fifo-1.3.2.tgz",
+ "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==",
+ "license": "MIT"
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.3.tgz",
+ "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.8"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fastq": {
+ "version": "1.20.3",
+ "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.20.3.tgz",
+ "integrity": "sha512-XKv5nnLs6nLF71NgiKJLIZFLkPyIEuOselLG7ujZnGrRfQK8HpvY+WqKhAJUAdLomwVHErVS4LfxFlPq0/FTAw==",
+ "license": "ISC",
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/fd-slicer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/fd-slicer/-/fd-slicer-1.1.0.tgz",
+ "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
+ "license": "MIT",
+ "dependencies": {
+ "pend": "~1.2.0"
+ }
+ },
+ "node_modules/fetch-blob": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/fetch-blob/-/fetch-blob-3.2.0.tgz",
+ "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/jimmywarting"
+ },
+ {
+ "type": "paypal",
+ "url": "https://paypal.me/jimmywarting"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "node-domexception": "^1.0.0",
+ "web-streams-polyfill": "^3.0.3"
+ },
+ "engines": {
+ "node": "^12.20 || >= 14.13"
+ }
+ },
+ "node_modules/fflate": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmmirror.com/fflate/-/fflate-0.8.3.tgz",
+ "integrity": "sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==",
+ "license": "MIT"
+ },
+ "node_modules/figures": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmmirror.com/figures/-/figures-6.1.0.tgz",
+ "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==",
+ "license": "MIT",
+ "dependencies": {
+ "is-unicode-supported": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/file-uri-to-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
+ "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
+ "license": "MIT"
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "license": "MIT",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/formdata-polyfill": {
+ "version": "4.0.10",
+ "resolved": "https://registry.npmmirror.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
+ "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
+ "license": "MIT",
+ "dependencies": {
+ "fetch-blob": "^3.1.2"
+ },
+ "engines": {
+ "node": ">=12.20.0"
+ }
+ },
+ "node_modules/fs-extra": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-11.1.0.tgz",
+ "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==",
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.14"
+ }
+ },
+ "node_modules/fs-minipass": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-2.1.0.tgz",
+ "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/fs-minipass/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/generic-pool": {
+ "version": "3.4.2",
+ "resolved": "https://registry.npmmirror.com/generic-pool/-/generic-pool-3.4.2.tgz",
+ "integrity": "sha512-H7cUpwCQSiJmAHM4c/aFu6fUfrhWXW1ncyh8ftxEPMu6AiYkHw9K8br720TGPZJbk5eOH2bynjZD1yPvdDAmag==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "license": "ISC",
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/get-port": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/get-port/-/get-port-5.1.1.tgz",
+ "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-9.0.1.tgz",
+ "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==",
+ "license": "MIT",
+ "dependencies": {
+ "@sec-ant/readable-stream": "^0.4.1",
+ "is-stream": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/get-tsconfig": {
+ "version": "4.14.3",
+ "resolved": "https://registry.npmmirror.com/get-tsconfig/-/get-tsconfig-4.14.3.tgz",
+ "integrity": "sha512-++QEw4DIY7WGoukz+/+A/8dGYPT9l9yIadnmSgZ8Rjr3YVSVDipQSO9CdnJo9ePqFqUUqh+wk9uIaoiAwsiPkA==",
+ "license": "MIT",
+ "dependencies": {
+ "resolve-pkg-maps": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
+ }
+ },
+ "node_modules/glob": {
+ "version": "13.0.6",
+ "resolved": "https://registry.npmmirror.com/glob/-/glob-13.0.6.tgz",
+ "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==",
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "minimatch": "^10.2.2",
+ "minipass": "^7.1.3",
+ "path-scurry": "^2.0.2"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "license": "ISC"
+ },
+ "node_modules/hono": {
+ "version": "4.13.8",
+ "resolved": "https://registry.npmmirror.com/hono/-/hono-4.13.8.tgz",
+ "integrity": "sha512-/Gng7NfoykZl2pjukW5Z6+8Yxm3BPRf86GTbQnt0SbySkvax4fyL4H3HhY1cCpBGmiW9XDRFzRV+CXK2W8QudQ==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=16.9.0"
+ }
+ },
+ "node_modules/http-errors": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-1.7.3.tgz",
+ "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==",
+ "license": "MIT",
+ "dependencies": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.1.1",
+ "statuses": ">= 1.5.0 < 2",
+ "toidentifier": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
+ "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.2",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/human-signals": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-8.0.1.tgz",
+ "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "license": "ISC"
+ },
+ "node_modules/is-buffer": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-2.0.5.tgz",
+ "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/is-docker": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/is-docker/-/is-docker-3.0.0.tgz",
+ "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
+ "license": "MIT",
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "license": "MIT",
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-inside-container": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/is-inside-container/-/is-inside-container-1.0.0.tgz",
+ "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
+ "license": "MIT",
+ "dependencies": {
+ "is-docker": "^3.0.0"
+ },
+ "bin": {
+ "is-inside-container": "cli.js"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-node-process": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/is-node-process/-/is-node-process-1.2.0.tgz",
+ "integrity": "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==",
+ "license": "MIT"
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-plain-obj": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
+ "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-stream": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-4.0.1.tgz",
+ "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-unicode-supported": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz",
+ "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-wsl": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/is-wsl/-/is-wsl-3.1.1.tgz",
+ "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==",
+ "license": "MIT",
+ "dependencies": {
+ "is-inside-container": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "license": "ISC"
+ },
+ "node_modules/jiti": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmmirror.com/jiti/-/jiti-2.7.0.tgz",
+ "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==",
+ "license": "MIT",
+ "bin": {
+ "jiti": "lib/jiti-cli.mjs"
+ }
+ },
+ "node_modules/jose": {
+ "version": "6.2.12",
+ "resolved": "https://registry.npmmirror.com/jose/-/jose-6.2.12.tgz",
+ "integrity": "sha512-9NiFmJEex0sy2Dk58j2UGBSHgUs2ypF9eZSu4L6vjOX3Dp96Sw1F3uL+H+D1sx02jZZdzUT0HgvCy59CuvXcWw==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/panva"
+ }
+ },
+ "node_modules/js-yaml": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.3.2.tgz",
+ "integrity": "sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/puzrin"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/nodeca"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/json-schema-to-ts": {
+ "version": "1.6.4",
+ "resolved": "https://registry.npmmirror.com/json-schema-to-ts/-/json-schema-to-ts-1.6.4.tgz",
+ "integrity": "sha512-pR4yQ9DHz6itqswtHCm26mw45FSNfQ9rEQjosaZErhn5J3J2sIViQiz8rDaezjKAhFGpmsoczYVBgGHzFw/stA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/json-schema": "^7.0.6",
+ "ts-toolbelt": "^6.15.5"
+ }
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "license": "MIT"
+ },
+ "node_modules/jsonc-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/jsonc-parser/-/jsonc-parser-3.3.1.tgz",
+ "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==",
+ "license": "MIT"
+ },
+ "node_modules/jsonfile": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.2.1.tgz",
+ "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==",
+ "license": "MIT",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/jsonlines": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmmirror.com/jsonlines/-/jsonlines-0.1.1.tgz",
+ "integrity": "sha512-ekDrAGso79Cvf+dtm+mL8OBI2bmAOt3gssYs833De/C9NmIpWDWyUO4zPgB5x2/OhY366dkhgfPMYfwZF7yOZA==",
+ "license": "MIT"
+ },
+ "node_modules/kleur": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmmirror.com/kleur/-/kleur-3.0.3.tgz",
+ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "11.5.2",
+ "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-11.5.2.tgz",
+ "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==",
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
+ "node_modules/luxon": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmmirror.com/luxon/-/luxon-3.7.2.tgz",
+ "integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "license": "MIT"
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/micro": {
+ "version": "9.3.5-canary.3",
+ "resolved": "https://registry.npmmirror.com/micro/-/micro-9.3.5-canary.3.tgz",
+ "integrity": "sha512-viYIo9PefV+w9dvoIBh1gI44Mvx1BOk67B4BpC2QK77qdY0xZF0Q+vWLt/BII6cLkIc8rLmSIcJaB/OrXXKe1g==",
+ "license": "MIT",
+ "dependencies": {
+ "arg": "4.1.0",
+ "content-type": "1.0.4",
+ "raw-body": "2.4.1"
+ },
+ "bin": {
+ "micro": "bin/micro.js"
+ },
+ "engines": {
+ "node": ">= 8.0.0"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "license": "MIT",
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/micromatch/node_modules/picomatch": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.2.tgz",
+ "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "10.2.6",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-10.2.6.tgz",
+ "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==",
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "brace-expansion": "^5.0.8"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/minipass": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmmirror.com/minipass/-/minipass-7.1.3.tgz",
+ "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==",
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/minizlib": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz",
+ "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
+ "license": "MIT",
+ "dependencies": {
+ "minipass": "^3.0.0",
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/minizlib/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
"license": "MIT",
"bin": {
- "acorn": "bin/acorn"
+ "mkdirp": "bin/cmd.js"
},
"engines": {
- "node": ">=0.4.0"
+ "node": ">=10"
}
},
- "node_modules/acorn-import-attributes": {
- "version": "1.9.5",
- "resolved": "https://registry.npmmirror.com/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz",
- "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==",
+ "node_modules/mri": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/mri/-/mri-1.2.0.tgz",
+ "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",
"license": "MIT",
- "peerDependencies": {
- "acorn": "^8"
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/add-mcp": {
- "version": "2.0.0",
- "resolved": "https://registry.npmmirror.com/add-mcp/-/add-mcp-2.0.0.tgz",
- "integrity": "sha512-UvMKmPPzE+9WgzghCkOTP2e1rKBZBWZ2XzUwR0Q/6Y8EOUPiVLL+44v8zNKaUoxEyFNIU+CETSrGBz7DWFjxig==",
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/neon": {
+ "version": "4.18.0",
+ "resolved": "https://registry.npmmirror.com/neon/-/neon-4.18.0.tgz",
+ "integrity": "sha512-E5NzvR0LsQp9zz/Y9yxiqAwwVD7TLMqNohvlTbtEL7eEmi1g/fYnY6c8qkefow5D7CzwAxd3OkCF0/oiDZMwfg==",
"license": "Apache-2.0",
"dependencies": {
- "@clack/prompts": "^0.9.1",
- "@iarna/toml": "^2.2.5",
- "chalk": "^5.4.1",
- "commander": "^13.1.0",
- "js-yaml": "^4.1.0",
- "jsonc-parser": "^3.3.1"
+ "@clack/core": "0.4.2",
+ "@clack/prompts": "0.10.1",
+ "@hono/node-server": "2.0.4",
+ "@neon/config": "1.5.0",
+ "@neon/config-runtime": "1.4.0",
+ "@neon/sdk": "5.0.0",
+ "@segment/analytics-node": "1.3.0",
+ "add-mcp": "2.0.0",
+ "chalk": "5.3.0",
+ "chokidar": "5.0.0",
+ "cliui": "8.0.1",
+ "diff": "5.2.0",
+ "execa": "^9.5.2",
+ "fflate": "^0.8.3",
+ "open": "^10.2.0",
+ "openid-client": "6.8.1",
+ "pg-protocol": "^1.14.0",
+ "picocolors": "^1.1.1",
+ "prompts": "2.4.2",
+ "undici": "^7.28.0",
+ "which": "3.0.1",
+ "yaml": "^2.9.0",
+ "yargs": "17.7.2",
+ "yoctocolors": "^2.1.2"
},
"bin": {
- "add-mcp": "dist/index.js"
+ "neon": "dist/cli.js"
+ },
+ "engines": {
+ "node": ">=20.19.0"
+ },
+ "optionalDependencies": {
+ "@napi-rs/keyring": "1.3.0",
+ "esbuild": "0.28.1"
+ }
+ },
+ "node_modules/node-domexception": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/node-domexception/-/node-domexception-1.0.0.tgz",
+ "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
+ "deprecated": "Use your platform's native DOMException instead",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/jimmywarting"
+ },
+ {
+ "type": "github",
+ "url": "https://paypal.me/jimmywarting"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.5.0"
+ }
+ },
+ "node_modules/node-fetch": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-3.3.2.tgz",
+ "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==",
+ "license": "MIT",
+ "dependencies": {
+ "data-uri-to-buffer": "^4.0.0",
+ "fetch-blob": "^3.1.4",
+ "formdata-polyfill": "^4.0.10"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/node-fetch"
+ }
+ },
+ "node_modules/node-gyp-build": {
+ "version": "4.8.4",
+ "resolved": "https://registry.npmmirror.com/node-gyp-build/-/node-gyp-build-4.8.4.tgz",
+ "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==",
+ "license": "MIT",
+ "bin": {
+ "node-gyp-build": "bin.js",
+ "node-gyp-build-optional": "optional.js",
+ "node-gyp-build-test": "build-test.js"
+ }
+ },
+ "node_modules/nopt": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmmirror.com/nopt/-/nopt-8.1.0.tgz",
+ "integrity": "sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==",
+ "license": "ISC",
+ "dependencies": {
+ "abbrev": "^3.0.0"
+ },
+ "bin": {
+ "nopt": "bin/nopt.js"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm-run-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-6.0.0.tgz",
+ "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^4.0.0",
+ "unicorn-magic": "^0.3.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npm-run-path/node_modules/path-key": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/path-key/-/path-key-4.0.0.tgz",
+ "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/oauth4webapi": {
+ "version": "3.8.8",
+ "resolved": "https://registry.npmmirror.com/oauth4webapi/-/oauth4webapi-3.8.8.tgz",
+ "integrity": "sha512-8N28E+a/oxfXWBgOMt+ZP/JUf/XR+IFbvkAEPP3gznXOMv9BpAAwiIj0TFNz3tGTPc0ZQ8zmWBNgN1nAys0gng==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/panva"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmmirror.com/once/-/once-1.3.3.tgz",
+ "integrity": "sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w==",
+ "license": "ISC",
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "license": "MIT",
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/open": {
+ "version": "10.2.0",
+ "resolved": "https://registry.npmmirror.com/open/-/open-10.2.0.tgz",
+ "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==",
+ "license": "MIT",
+ "dependencies": {
+ "default-browser": "^5.2.1",
+ "define-lazy-prop": "^3.0.0",
+ "is-inside-container": "^1.0.0",
+ "wsl-utils": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/openid-client": {
+ "version": "6.8.1",
+ "resolved": "https://registry.npmmirror.com/openid-client/-/openid-client-6.8.1.tgz",
+ "integrity": "sha512-VoYT6enBo6Vj2j3Q5Ec0AezS+9YGzQo1f5Xc42lreMGlfP4ljiXPKVDvCADh+XHCV/bqPu/wWSiCVXbJKvrODw==",
+ "license": "MIT",
+ "dependencies": {
+ "jose": "^6.1.0",
+ "oauth4webapi": "^3.8.2"
},
- "engines": {
- "node": ">=18"
+ "funding": {
+ "url": "https://github.com/sponsors/panva"
}
},
- "node_modules/add-mcp/node_modules/@clack/core": {
- "version": "0.4.1",
- "resolved": "https://registry.npmmirror.com/@clack/core/-/core-0.4.1.tgz",
- "integrity": "sha512-Pxhij4UXg8KSr7rPek6Zowm+5M22rbd2g1nfojHJkxp5YkFqiZ2+YLEM/XGVIzvGOcM0nqjIFxrpDwWRZYWYjA==",
+ "node_modules/os-paths": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmmirror.com/os-paths/-/os-paths-4.4.0.tgz",
+ "integrity": "sha512-wrAwOeXp1RRMFfQY8Sy7VaGVmPocaLwSFOYCGKSyo8qmJ+/yaafCl5BCA1IQZWqFSRBrKDYFeR9d/VyQzfH/jg==",
"license": "MIT",
- "dependencies": {
- "picocolors": "^1.0.0",
- "sisteransi": "^1.0.5"
+ "engines": {
+ "node": ">= 6.0"
}
},
- "node_modules/add-mcp/node_modules/@clack/prompts": {
- "version": "0.9.1",
- "resolved": "https://registry.npmmirror.com/@clack/prompts/-/prompts-0.9.1.tgz",
- "integrity": "sha512-JIpyaboYZeWYlyP0H+OoPPxd6nqueG/CmN6ixBiNFsIDHREevjIf0n0Ohh5gr5C8pEDknzgvz+pIJ8dMhzWIeg==",
+ "node_modules/oxc-parser": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/oxc-parser/-/oxc-parser-0.121.0.tgz",
+ "integrity": "sha512-ek9o58+SCv6AV7nchiAcUJy1DNE2CC5WRdBcO0mF+W4oRjNQfPO7b3pLjTHSFECpHkKGOZSQxx3hk8viIL5YCg==",
"license": "MIT",
"dependencies": {
- "@clack/core": "0.4.1",
- "picocolors": "^1.0.0",
- "sisteransi": "^1.0.5"
+ "@oxc-project/types": "^0.121.0"
+ },
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/Boshen"
+ },
+ "optionalDependencies": {
+ "@oxc-parser/binding-android-arm-eabi": "0.121.0",
+ "@oxc-parser/binding-android-arm64": "0.121.0",
+ "@oxc-parser/binding-darwin-arm64": "0.121.0",
+ "@oxc-parser/binding-darwin-x64": "0.121.0",
+ "@oxc-parser/binding-freebsd-x64": "0.121.0",
+ "@oxc-parser/binding-linux-arm-gnueabihf": "0.121.0",
+ "@oxc-parser/binding-linux-arm-musleabihf": "0.121.0",
+ "@oxc-parser/binding-linux-arm64-gnu": "0.121.0",
+ "@oxc-parser/binding-linux-arm64-musl": "0.121.0",
+ "@oxc-parser/binding-linux-ppc64-gnu": "0.121.0",
+ "@oxc-parser/binding-linux-riscv64-gnu": "0.121.0",
+ "@oxc-parser/binding-linux-riscv64-musl": "0.121.0",
+ "@oxc-parser/binding-linux-s390x-gnu": "0.121.0",
+ "@oxc-parser/binding-linux-x64-gnu": "0.121.0",
+ "@oxc-parser/binding-linux-x64-musl": "0.121.0",
+ "@oxc-parser/binding-openharmony-arm64": "0.121.0",
+ "@oxc-parser/binding-wasm32-wasi": "0.121.0",
+ "@oxc-parser/binding-win32-arm64-msvc": "0.121.0",
+ "@oxc-parser/binding-win32-ia32-msvc": "0.121.0",
+ "@oxc-parser/binding-win32-x64-msvc": "0.121.0"
+ }
+ },
+ "node_modules/oxc-transform": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/oxc-transform/-/oxc-transform-0.111.0.tgz",
+ "integrity": "sha512-oa5KKSDNLHZGaiqIGAbCWXeN9IJUAz9MElWcQX90epDxdKc9Hrt/BsLj3K4gDqfAYa5dwdH+ZCFJG9hR74fiGg==",
+ "license": "MIT",
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/Boshen"
+ },
+ "optionalDependencies": {
+ "@oxc-transform/binding-android-arm-eabi": "0.111.0",
+ "@oxc-transform/binding-android-arm64": "0.111.0",
+ "@oxc-transform/binding-darwin-arm64": "0.111.0",
+ "@oxc-transform/binding-darwin-x64": "0.111.0",
+ "@oxc-transform/binding-freebsd-x64": "0.111.0",
+ "@oxc-transform/binding-linux-arm-gnueabihf": "0.111.0",
+ "@oxc-transform/binding-linux-arm-musleabihf": "0.111.0",
+ "@oxc-transform/binding-linux-arm64-gnu": "0.111.0",
+ "@oxc-transform/binding-linux-arm64-musl": "0.111.0",
+ "@oxc-transform/binding-linux-ppc64-gnu": "0.111.0",
+ "@oxc-transform/binding-linux-riscv64-gnu": "0.111.0",
+ "@oxc-transform/binding-linux-riscv64-musl": "0.111.0",
+ "@oxc-transform/binding-linux-s390x-gnu": "0.111.0",
+ "@oxc-transform/binding-linux-x64-gnu": "0.111.0",
+ "@oxc-transform/binding-linux-x64-musl": "0.111.0",
+ "@oxc-transform/binding-openharmony-arm64": "0.111.0",
+ "@oxc-transform/binding-wasm32-wasi": "0.111.0",
+ "@oxc-transform/binding-win32-arm64-msvc": "0.111.0",
+ "@oxc-transform/binding-win32-ia32-msvc": "0.111.0",
+ "@oxc-transform/binding-win32-x64-msvc": "0.111.0"
+ }
+ },
+ "node_modules/p-finally": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/p-finally/-/p-finally-2.0.1.tgz",
+ "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/add-mcp/node_modules/chalk": {
- "version": "5.6.2",
- "resolved": "https://registry.npmmirror.com/chalk/-/chalk-5.6.2.tgz",
- "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+ "node_modules/parse-ms": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/parse-ms/-/parse-ms-4.0.0.tgz",
+ "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==",
"license": "MIT",
"engines": {
- "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ "node": ">=18"
},
"funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/agent-base": {
- "version": "7.1.4",
- "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-7.1.4.tgz",
- "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
+ "node_modules/path-browserify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/path-browserify/-/path-browserify-1.0.1.tgz",
+ "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==",
+ "license": "MIT"
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
"license": "MIT",
"engines": {
- "node": ">= 14"
+ "node": ">=8"
}
},
- "node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "node_modules/path-scurry": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/path-scurry/-/path-scurry-2.0.2.tgz",
+ "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==",
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "lru-cache": "^11.0.0",
+ "minipass": "^7.1.2"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/path-to-regexp": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-8.3.0.tgz",
+ "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==",
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/path-to-regexp-updated": {
+ "name": "path-to-regexp",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-6.3.0.tgz",
+ "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==",
+ "license": "MIT"
+ },
+ "node_modules/pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
+ "license": "MIT"
+ },
+ "node_modules/pg-protocol": {
+ "version": "1.16.0",
+ "resolved": "https://registry.npmmirror.com/pg-protocol/-/pg-protocol-1.16.0.tgz",
+ "integrity": "sha512-sILXutLVjCLjcDuOmvhX5e2Z4cS5qG/6Bu3VkpFwdf/633ElGLpEh9bgmuI5I4sqKqkifQiGyiCcx1HdtrK7tg==",
+ "license": "MIT"
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "license": "ISC"
+ },
+ "node_modules/picomatch": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.7.tgz",
+ "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==",
"license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
}
},
- "node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "node_modules/pretty-ms": {
+ "version": "9.3.1",
+ "resolved": "https://registry.npmmirror.com/pretty-ms/-/pretty-ms-9.3.1.tgz",
+ "integrity": "sha512-HzMy3Geq23nVALD/M2LliU+F+M+gVNsvkQWWqeBZ8HDiCgzo6YPJ/Omrmtq24EFrIsk0a3EkQGEd7bDOo+IhGA==",
"license": "MIT",
"dependencies": {
- "color-convert": "^2.0.1"
+ "parse-ms": "^4.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=18"
},
"funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "license": "Python-2.0"
- },
- "node_modules/async-sema": {
- "version": "3.1.1",
- "resolved": "https://registry.npmmirror.com/async-sema/-/async-sema-3.1.1.tgz",
- "integrity": "sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==",
+ "node_modules/promisepipe": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/promisepipe/-/promisepipe-3.0.0.tgz",
+ "integrity": "sha512-V6TbZDJ/ZswevgkDNpGt/YqNCiZP9ASfgU+p83uJE6NrGtvSGoOcHLiDCqkMs2+yg7F5qHdLV8d0aS8O26G/KA==",
"license": "MIT"
},
- "node_modules/balanced-match": {
- "version": "4.0.4",
- "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-4.0.4.tgz",
- "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
+ "node_modules/prompts": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmmirror.com/prompts/-/prompts-2.4.2.tgz",
+ "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
"license": "MIT",
+ "dependencies": {
+ "kleur": "^3.0.3",
+ "sisteransi": "^1.0.5"
+ },
"engines": {
- "node": "18 || 20 || >=22"
+ "node": ">= 6"
}
},
- "node_modules/base64-js": {
- "version": "1.5.1",
- "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "node_modules/pump": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmmirror.com/pump/-/pump-3.0.4.tgz",
+ "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==",
+ "license": "MIT",
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
"funding": [
{
"type": "github",
@@ -1164,31 +6812,154 @@
],
"license": "MIT"
},
- "node_modules/bindings": {
- "version": "1.5.0",
- "resolved": "https://registry.npmmirror.com/bindings/-/bindings-1.5.0.tgz",
- "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
+ "node_modules/raw-body": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmmirror.com/raw-body/-/raw-body-2.4.1.tgz",
+ "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==",
"license": "MIT",
"dependencies": {
- "file-uri-to-path": "1.0.0"
+ "bytes": "3.1.0",
+ "http-errors": "1.7.3",
+ "iconv-lite": "0.4.24",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
}
},
- "node_modules/brace-expansion": {
- "version": "5.0.12",
- "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-5.0.12.tgz",
- "integrity": "sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==",
+ "node_modules/readdirp": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-5.1.1.tgz",
+ "integrity": "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 20.19.0"
+ },
+ "funding": {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/require-from-string": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/resolve-pkg-maps": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz",
+ "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
+ }
+ },
+ "node_modules/resolve.exports": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmmirror.com/resolve.exports/-/resolve.exports-2.0.3.tgz",
+ "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/retry": {
+ "version": "0.13.1",
+ "resolved": "https://registry.npmmirror.com/retry/-/retry-0.13.1.tgz",
+ "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.1.0.tgz",
+ "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
+ "license": "MIT",
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rolldown": {
+ "version": "1.0.0-rc.1",
+ "resolved": "https://registry.npmmirror.com/rolldown/-/rolldown-1.0.0-rc.1.tgz",
+ "integrity": "sha512-M3AeZjYE6UclblEf531Hch0WfVC/NOL43Cc+WdF3J50kk5/fvouHhDumSGTh0oRjbZ8C4faaVr5r6Nx1xMqDGg==",
"license": "MIT",
"dependencies": {
- "balanced-match": "^4.0.2"
+ "@oxc-project/types": "=0.110.0",
+ "@rolldown/pluginutils": "1.0.0-rc.1"
+ },
+ "bin": {
+ "rolldown": "bin/cli.mjs"
},
"engines": {
- "node": "20 || >=22"
+ "node": "^20.19.0 || >=22.12.0"
+ },
+ "optionalDependencies": {
+ "@rolldown/binding-android-arm64": "1.0.0-rc.1",
+ "@rolldown/binding-darwin-arm64": "1.0.0-rc.1",
+ "@rolldown/binding-darwin-x64": "1.0.0-rc.1",
+ "@rolldown/binding-freebsd-x64": "1.0.0-rc.1",
+ "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.1",
+ "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.1",
+ "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.1",
+ "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.1",
+ "@rolldown/binding-linux-x64-musl": "1.0.0-rc.1",
+ "@rolldown/binding-openharmony-arm64": "1.0.0-rc.1",
+ "@rolldown/binding-wasm32-wasi": "1.0.0-rc.1",
+ "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.1",
+ "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.1"
+ }
+ },
+ "node_modules/rolldown/node_modules/@oxc-project/types": {
+ "version": "0.110.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-project/types/-/types-0.110.0.tgz",
+ "integrity": "sha512-6Ct21OIlrEnFEJk5LT4e63pk3btsI6/TusD/GStLi7wYlGJNOl1GI9qvXAnRAxQU9zqA2Oz+UwhfTOU2rPZVow==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/Boshen"
}
},
- "node_modules/buffer": {
- "version": "6.0.3",
- "resolved": "https://registry.npmmirror.com/buffer/-/buffer-6.0.3.tgz",
- "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
+ "node_modules/run-applescript": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmmirror.com/run-applescript/-/run-applescript-7.1.0.tgz",
+ "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
"funding": [
{
"type": "github",
@@ -1205,1189 +6976,1469 @@
],
"license": "MIT",
"dependencies": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.2.1"
+ "queue-microtask": "^1.2.2"
}
},
- "node_modules/bundle-name": {
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "license": "MIT"
+ },
+ "node_modules/sandbox": {
"version": "4.1.0",
- "resolved": "https://registry.npmmirror.com/bundle-name/-/bundle-name-4.1.0.tgz",
- "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==",
+ "resolved": "https://registry.npmmirror.com/sandbox/-/sandbox-4.1.0.tgz",
+ "integrity": "sha512-kzDiAyvrGHGdrQ/7mT6Md18K9OUVgZW/KUKO/wBJ/gHouDh6oJPWcGWfOV5i7CSep2map3Pl7vV9gszm3Cvu7Q==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/sandbox": "3.1.0",
+ "async-retry": "1.3.3",
+ "debug": "^4.4.1",
+ "ws": "^8.21.0",
+ "zod": "^4.1.1"
+ },
+ "bin": {
+ "sandbox": "bin/sandbox.mjs",
+ "sbx": "bin/sandbox.mjs"
+ }
+ },
+ "node_modules/semver": {
+ "version": "7.8.5",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-7.8.5.tgz",
+ "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/setprototypeof": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.1.1.tgz",
+ "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==",
+ "license": "ISC"
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
"license": "MIT",
"dependencies": {
- "run-applescript": "^7.0.0"
+ "shebang-regex": "^3.0.0"
},
"engines": {
- "node": ">=18"
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/chalk": {
- "version": "5.3.0",
- "resolved": "https://registry.npmmirror.com/chalk/-/chalk-5.3.0.tgz",
- "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==",
- "license": "MIT",
+ "node_modules/sisteransi": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/sisteransi/-/sisteransi-1.0.5.tgz",
+ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
+ "license": "MIT"
+ },
+ "node_modules/smol-toml": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmmirror.com/smol-toml/-/smol-toml-1.5.2.tgz",
+ "integrity": "sha512-QlaZEqcAH3/RtNyet1IPIYPsEWAaYyXXv1Krsi+1L/QHppjX4Ifm8MQsBISz9vE8cHicIq3clogsheili5vhaQ==",
+ "license": "BSD-3-Clause",
"engines": {
- "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ "node": ">= 18"
},
"funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "url": "https://github.com/sponsors/cyyynthia"
}
},
- "node_modules/chokidar": {
- "version": "5.0.0",
- "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-5.0.0.tgz",
- "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==",
+ "node_modules/srvx": {
+ "version": "0.11.16",
+ "resolved": "https://registry.npmmirror.com/srvx/-/srvx-0.11.16.tgz",
+ "integrity": "sha512-bp07zRuycfTY43IjAvvTFnmnJi8ikW0VFiHwOhhYcVW/L4xQ1XY4PAd4Nuum1rsA17C39zL7x+CDhrn5AL32Rw==",
"license": "MIT",
- "dependencies": {
- "readdirp": "^5.0.0"
+ "bin": {
+ "srvx": "bin/srvx.mjs"
},
"engines": {
- "node": ">= 20.19.0"
- },
- "funding": {
- "url": "https://paulmillr.com/funding/"
+ "node": ">=20.16.0"
}
},
- "node_modules/chownr": {
- "version": "2.0.0",
- "resolved": "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz",
- "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
- "license": "ISC",
+ "node_modules/stat-mode": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmmirror.com/stat-mode/-/stat-mode-0.3.0.tgz",
+ "integrity": "sha512-QjMLR0A3WwFY2aZdV0okfFEJB5TRjkggXZjxP3A1RsWsNHNu3YPv8btmtc6iCFZ0Rul3FE93OYogvhOUClU+ng==",
+ "license": "MIT"
+ },
+ "node_modules/statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
+ "license": "MIT",
"engines": {
- "node": ">=10"
+ "node": ">= 0.6"
}
},
- "node_modules/cliui": {
- "version": "8.0.1",
- "resolved": "https://registry.npmmirror.com/cliui/-/cliui-8.0.1.tgz",
- "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
- "license": "ISC",
+ "node_modules/stream-to-array": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/stream-to-array/-/stream-to-array-2.3.0.tgz",
+ "integrity": "sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==",
+ "license": "MIT",
"dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.1",
- "wrap-ansi": "^7.0.0"
+ "any-promise": "^1.1.0"
+ }
+ },
+ "node_modules/stream-to-promise": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/stream-to-promise/-/stream-to-promise-2.2.0.tgz",
+ "integrity": "sha512-HAGUASw8NT0k8JvIVutB2Y/9iBk7gpgEyAudXwNJmZERdMITGdajOa4VJfD/kNiA3TppQpTP4J+CtcHwdzKBAw==",
+ "license": "MIT",
+ "dependencies": {
+ "any-promise": "~1.3.0",
+ "end-of-stream": "~1.1.0",
+ "stream-to-array": "~2.3.0"
+ }
+ },
+ "node_modules/streamx": {
+ "version": "2.28.1",
+ "resolved": "https://registry.npmmirror.com/streamx/-/streamx-2.28.1.tgz",
+ "integrity": "sha512-zEzXb0s5Cds7tqMH6rhZ05lcJydCWiQPEwiNngVqzsxCc962vLY4Uw+mW7od8kDH258k2Uz/JrOkdIAAhSh9VA==",
+ "license": "MIT",
+ "dependencies": {
+ "events-universal": "^1.0.0",
+ "fast-fifo": "^1.3.2",
+ "text-decoder": "^1.1.0"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
},
"engines": {
- "node": ">=12"
+ "node": ">=8"
}
},
- "node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"license": "MIT",
"dependencies": {
- "color-name": "~1.1.4"
+ "ansi-regex": "^5.0.1"
},
"engines": {
- "node": ">=7.0.0"
+ "node": ">=8"
}
},
- "node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "license": "MIT"
- },
- "node_modules/commander": {
- "version": "13.1.0",
- "resolved": "https://registry.npmmirror.com/commander/-/commander-13.1.0.tgz",
- "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==",
+ "node_modules/strip-final-newline": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-4.0.0.tgz",
+ "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==",
"license": "MIT",
"engines": {
"node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/consola": {
- "version": "3.4.2",
- "resolved": "https://registry.npmmirror.com/consola/-/consola-3.4.2.tgz",
- "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==",
+ "node_modules/tar": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmmirror.com/tar/-/tar-6.2.1.tgz",
+ "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==",
+ "license": "ISC",
+ "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"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/tar-stream": {
+ "version": "3.1.7",
+ "resolved": "https://registry.npmmirror.com/tar-stream/-/tar-stream-3.1.7.tgz",
+ "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==",
"license": "MIT",
+ "dependencies": {
+ "b4a": "^1.6.4",
+ "fast-fifo": "^1.2.0",
+ "streamx": "^2.15.0"
+ }
+ },
+ "node_modules/tar/node_modules/minipass": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/minipass/-/minipass-5.0.0.tgz",
+ "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
+ "license": "ISC",
"engines": {
- "node": "^14.18.0 || >=16.10.0"
+ "node": ">=8"
}
},
- "node_modules/cross-spawn": {
- "version": "7.0.6",
- "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.6.tgz",
- "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "node_modules/text-decoder": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmmirror.com/text-decoder/-/text-decoder-1.2.7.tgz",
+ "integrity": "sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "b4a": "^1.6.4"
+ }
+ },
+ "node_modules/throttleit": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/throttleit/-/throttleit-2.1.0.tgz",
+ "integrity": "sha512-nt6AMGKW1p/70DF/hGBdJB57B8Tspmbp5gfJ8ilhLnt7kkr2ye7hzD6NVG8GGErk2HWF34igrL2CXmNIkzKqKw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/time-span": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/time-span/-/time-span-4.0.0.tgz",
+ "integrity": "sha512-MyqZCTGLDZ77u4k+jqg4UlrzPTPZ49NDlaekU6uuFaJLzPIN1woaRXCbGeqOfxwc3Y37ZROGAJ614Rdv7Olt+g==",
"license": "MIT",
"dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
+ "convert-hrtime": "^3.0.0"
},
"engines": {
- "node": ">= 8"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/cross-spawn/node_modules/which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "license": "ISC",
+ "node_modules/tinyexec": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmmirror.com/tinyexec/-/tinyexec-0.3.2.tgz",
+ "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==",
+ "license": "MIT"
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "license": "MIT",
"dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "node-which": "bin/node-which"
+ "is-number": "^7.0.0"
},
"engines": {
- "node": ">= 8"
+ "node": ">=8.0"
}
},
- "node_modules/data-uri-to-buffer": {
- "version": "4.0.1",
- "resolved": "https://registry.npmmirror.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz",
- "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==",
+ "node_modules/toidentifier": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.0.tgz",
+ "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
"license": "MIT",
"engines": {
- "node": ">= 12"
+ "node": ">=0.6"
}
},
- "node_modules/debug": {
- "version": "4.4.3",
- "resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.3.tgz",
- "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
+ "license": "MIT"
+ },
+ "node_modules/tree-kill": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmmirror.com/tree-kill/-/tree-kill-1.2.2.tgz",
+ "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
+ "license": "MIT",
+ "bin": {
+ "tree-kill": "cli.js"
+ }
+ },
+ "node_modules/ts-morph": {
+ "version": "12.0.0",
+ "resolved": "https://registry.npmmirror.com/ts-morph/-/ts-morph-12.0.0.tgz",
+ "integrity": "sha512-VHC8XgU2fFW7yO1f/b3mxKDje1vmyzFXHWzOYmKEkCEwcLjDtbdLgBQviqj4ZwP4MJkQtRo6Ha2I29lq/B+VxA==",
"license": "MIT",
"dependencies": {
- "ms": "^2.1.3"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
+ "@ts-morph/common": "~0.11.0",
+ "code-block-writer": "^10.1.1"
}
},
- "node_modules/default-browser": {
- "version": "5.5.1",
- "resolved": "https://registry.npmmirror.com/default-browser/-/default-browser-5.5.1.tgz",
- "integrity": "sha512-m1pAzaJgZ/gssEqlOhJkPJp8Xly7QyW6xcrkUa2KKcDeDSEMP7X8xipU3snUcfisTQx0w1AGae+9UtJSfVnXGw==",
+ "node_modules/ts-toolbelt": {
+ "version": "6.15.5",
+ "resolved": "https://registry.npmmirror.com/ts-toolbelt/-/ts-toolbelt-6.15.5.tgz",
+ "integrity": "sha512-FZIXf1ksVyLcfr7M317jbB67XFJhOO1YqdTcuGaq9q5jLUoTikukZ+98TPjKiP2jC5CgmYdWWYs0s2nLSU0/1A==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "license": "0BSD"
+ },
+ "node_modules/tsx": {
+ "version": "4.21.0",
+ "resolved": "https://registry.npmmirror.com/tsx/-/tsx-4.21.0.tgz",
+ "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==",
"license": "MIT",
"dependencies": {
- "bundle-name": "^4.1.0",
- "default-browser-id": "^5.0.0"
+ "esbuild": "~0.27.0",
+ "get-tsconfig": "^4.7.5"
+ },
+ "bin": {
+ "tsx": "dist/cli.mjs"
},
"engines": {
- "node": ">=18"
+ "node": ">=18.0.0"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "optionalDependencies": {
+ "fsevents": "~2.3.3"
}
},
- "node_modules/default-browser-id": {
- "version": "5.0.1",
- "resolved": "https://registry.npmmirror.com/default-browser-id/-/default-browser-id-5.0.1.tgz",
- "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==",
+ "node_modules/tsx/node_modules/@esbuild/aix-ppc64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.27.7.tgz",
+ "integrity": "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==",
+ "cpu": [
+ "ppc64"
+ ],
"license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
"engines": {
"node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/define-lazy-prop": {
- "version": "3.0.0",
- "resolved": "https://registry.npmmirror.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
- "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
+ "node_modules/tsx/node_modules/@esbuild/android-arm": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.27.7.tgz",
+ "integrity": "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==",
+ "cpu": [
+ "arm"
+ ],
"license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
"engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=18"
}
},
- "node_modules/detect-libc": {
- "version": "2.1.2",
- "resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-2.1.2.tgz",
- "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
- "license": "Apache-2.0",
+ "node_modules/tsx/node_modules/@esbuild/android-arm64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.27.7.tgz",
+ "integrity": "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
"engines": {
- "node": ">=8"
+ "node": ">=18"
}
},
- "node_modules/diff": {
- "version": "5.2.0",
- "resolved": "https://registry.npmmirror.com/diff/-/diff-5.2.0.tgz",
- "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
- "license": "BSD-3-Clause",
+ "node_modules/tsx/node_modules/@esbuild/android-x64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.27.7.tgz",
+ "integrity": "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
"engines": {
- "node": ">=0.3.1"
+ "node": ">=18"
}
},
- "node_modules/dset": {
- "version": "3.1.4",
- "resolved": "https://registry.npmmirror.com/dset/-/dset-3.1.4.tgz",
- "integrity": "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==",
+ "node_modules/tsx/node_modules/@esbuild/darwin-arm64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.27.7.tgz",
+ "integrity": "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==",
+ "cpu": [
+ "arm64"
+ ],
"license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"engines": {
- "node": ">=4"
+ "node": ">=18"
}
},
- "node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "license": "MIT"
- },
- "node_modules/esbuild": {
- "version": "0.28.1",
- "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.28.1.tgz",
- "integrity": "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==",
- "hasInstallScript": true,
+ "node_modules/tsx/node_modules/@esbuild/darwin-x64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.27.7.tgz",
+ "integrity": "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==",
+ "cpu": [
+ "x64"
+ ],
"license": "MIT",
- "bin": {
- "esbuild": "bin/esbuild"
- },
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"engines": {
"node": ">=18"
- },
- "optionalDependencies": {
- "@esbuild/aix-ppc64": "0.28.1",
- "@esbuild/android-arm": "0.28.1",
- "@esbuild/android-arm64": "0.28.1",
- "@esbuild/android-x64": "0.28.1",
- "@esbuild/darwin-arm64": "0.28.1",
- "@esbuild/darwin-x64": "0.28.1",
- "@esbuild/freebsd-arm64": "0.28.1",
- "@esbuild/freebsd-x64": "0.28.1",
- "@esbuild/linux-arm": "0.28.1",
- "@esbuild/linux-arm64": "0.28.1",
- "@esbuild/linux-ia32": "0.28.1",
- "@esbuild/linux-loong64": "0.28.1",
- "@esbuild/linux-mips64el": "0.28.1",
- "@esbuild/linux-ppc64": "0.28.1",
- "@esbuild/linux-riscv64": "0.28.1",
- "@esbuild/linux-s390x": "0.28.1",
- "@esbuild/linux-x64": "0.28.1",
- "@esbuild/netbsd-arm64": "0.28.1",
- "@esbuild/netbsd-x64": "0.28.1",
- "@esbuild/openbsd-arm64": "0.28.1",
- "@esbuild/openbsd-x64": "0.28.1",
- "@esbuild/openharmony-arm64": "0.28.1",
- "@esbuild/sunos-x64": "0.28.1",
- "@esbuild/win32-arm64": "0.28.1",
- "@esbuild/win32-ia32": "0.28.1",
- "@esbuild/win32-x64": "0.28.1"
}
},
- "node_modules/escalade": {
- "version": "3.2.0",
- "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.2.0.tgz",
- "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+ "node_modules/tsx/node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.7.tgz",
+ "integrity": "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==",
+ "cpu": [
+ "arm64"
+ ],
"license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
"engines": {
- "node": ">=6"
+ "node": ">=18"
}
},
- "node_modules/estree-walker": {
- "version": "2.0.2",
- "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
- "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
- "license": "MIT"
- },
- "node_modules/execa": {
- "version": "9.6.1",
- "resolved": "https://registry.npmmirror.com/execa/-/execa-9.6.1.tgz",
- "integrity": "sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==",
+ "node_modules/tsx/node_modules/@esbuild/freebsd-x64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.27.7.tgz",
+ "integrity": "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==",
+ "cpu": [
+ "x64"
+ ],
"license": "MIT",
- "dependencies": {
- "@sindresorhus/merge-streams": "^4.0.0",
- "cross-spawn": "^7.0.6",
- "figures": "^6.1.0",
- "get-stream": "^9.0.0",
- "human-signals": "^8.0.1",
- "is-plain-obj": "^4.1.0",
- "is-stream": "^4.0.1",
- "npm-run-path": "^6.0.0",
- "pretty-ms": "^9.2.0",
- "signal-exit": "^4.1.0",
- "strip-final-newline": "^4.0.0",
- "yoctocolors": "^2.1.1"
- },
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
"engines": {
- "node": "^18.19.0 || >=20.5.0"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ "node": ">=18"
}
},
- "node_modules/fetch-blob": {
- "version": "3.2.0",
- "resolved": "https://registry.npmmirror.com/fetch-blob/-/fetch-blob-3.2.0.tgz",
- "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/jimmywarting"
- },
- {
- "type": "paypal",
- "url": "https://paypal.me/jimmywarting"
- }
+ "node_modules/tsx/node_modules/@esbuild/linux-arm": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.27.7.tgz",
+ "integrity": "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==",
+ "cpu": [
+ "arm"
],
"license": "MIT",
- "dependencies": {
- "node-domexception": "^1.0.0",
- "web-streams-polyfill": "^3.0.3"
- },
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": "^12.20 || >= 14.13"
+ "node": ">=18"
}
},
- "node_modules/fflate": {
- "version": "0.8.3",
- "resolved": "https://registry.npmmirror.com/fflate/-/fflate-0.8.3.tgz",
- "integrity": "sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==",
- "license": "MIT"
- },
- "node_modules/figures": {
- "version": "6.1.0",
- "resolved": "https://registry.npmmirror.com/figures/-/figures-6.1.0.tgz",
- "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==",
+ "node_modules/tsx/node_modules/@esbuild/linux-arm64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.27.7.tgz",
+ "integrity": "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==",
+ "cpu": [
+ "arm64"
+ ],
"license": "MIT",
- "dependencies": {
- "is-unicode-supported": "^2.0.0"
- },
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
"node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/file-uri-to-path": {
- "version": "1.0.0",
- "resolved": "https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
- "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
- "license": "MIT"
- },
- "node_modules/formdata-polyfill": {
- "version": "4.0.10",
- "resolved": "https://registry.npmmirror.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
- "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
+ "node_modules/tsx/node_modules/@esbuild/linux-ia32": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.27.7.tgz",
+ "integrity": "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==",
+ "cpu": [
+ "ia32"
+ ],
"license": "MIT",
- "dependencies": {
- "fetch-blob": "^3.1.2"
- },
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=12.20.0"
+ "node": ">=18"
}
},
- "node_modules/fs-minipass": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-2.1.0.tgz",
- "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
- "license": "ISC",
- "dependencies": {
- "minipass": "^3.0.0"
- },
+ "node_modules/tsx/node_modules/@esbuild/linux-loong64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.27.7.tgz",
+ "integrity": "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==",
+ "cpu": [
+ "loong64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">= 8"
+ "node": ">=18"
}
},
- "node_modules/fs-minipass/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
+ "node_modules/tsx/node_modules/@esbuild/linux-mips64el": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.27.7.tgz",
+ "integrity": "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==",
+ "cpu": [
+ "mips64el"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=8"
+ "node": ">=18"
}
},
- "node_modules/get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
- "license": "ISC",
+ "node_modules/tsx/node_modules/@esbuild/linux-ppc64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.27.7.tgz",
+ "integrity": "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": "6.* || 8.* || >= 10.*"
+ "node": ">=18"
}
},
- "node_modules/get-stream": {
- "version": "9.0.1",
- "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-9.0.1.tgz",
- "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==",
+ "node_modules/tsx/node_modules/@esbuild/linux-riscv64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.27.7.tgz",
+ "integrity": "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==",
+ "cpu": [
+ "riscv64"
+ ],
"license": "MIT",
- "dependencies": {
- "@sec-ant/readable-stream": "^0.4.1",
- "is-stream": "^4.0.1"
- },
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
"node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/glob": {
- "version": "13.0.6",
- "resolved": "https://registry.npmmirror.com/glob/-/glob-13.0.6.tgz",
- "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==",
- "license": "BlueOak-1.0.0",
- "dependencies": {
- "minimatch": "^10.2.2",
- "minipass": "^7.1.3",
- "path-scurry": "^2.0.2"
- },
+ "node_modules/tsx/node_modules/@esbuild/linux-s390x": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.27.7.tgz",
+ "integrity": "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": "18 || 20 || >=22"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "node": ">=18"
}
},
- "node_modules/graceful-fs": {
- "version": "4.2.11",
- "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz",
- "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
- "license": "ISC"
- },
- "node_modules/hono": {
- "version": "4.13.8",
- "resolved": "https://registry.npmmirror.com/hono/-/hono-4.13.8.tgz",
- "integrity": "sha512-/Gng7NfoykZl2pjukW5Z6+8Yxm3BPRf86GTbQnt0SbySkvax4fyL4H3HhY1cCpBGmiW9XDRFzRV+CXK2W8QudQ==",
+ "node_modules/tsx/node_modules/@esbuild/linux-x64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.27.7.tgz",
+ "integrity": "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==",
+ "cpu": [
+ "x64"
+ ],
"license": "MIT",
- "peer": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=16.9.0"
+ "node": ">=18"
}
},
- "node_modules/https-proxy-agent": {
- "version": "7.0.6",
- "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
- "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
+ "node_modules/tsx/node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.7.tgz",
+ "integrity": "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==",
+ "cpu": [
+ "arm64"
+ ],
"license": "MIT",
- "dependencies": {
- "agent-base": "^7.1.2",
- "debug": "4"
- },
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
"engines": {
- "node": ">= 14"
+ "node": ">=18"
}
},
- "node_modules/human-signals": {
- "version": "8.0.1",
- "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-8.0.1.tgz",
- "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==",
- "license": "Apache-2.0",
+ "node_modules/tsx/node_modules/@esbuild/netbsd-x64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.27.7.tgz",
+ "integrity": "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
"engines": {
- "node": ">=18.18.0"
+ "node": ">=18"
}
},
- "node_modules/ieee754": {
- "version": "1.2.1",
- "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz",
- "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
+ "node_modules/tsx/node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.7.tgz",
+ "integrity": "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==",
+ "cpu": [
+ "arm64"
],
- "license": "BSD-3-Clause"
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
},
- "node_modules/is-docker": {
- "version": "3.0.0",
- "resolved": "https://registry.npmmirror.com/is-docker/-/is-docker-3.0.0.tgz",
- "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
+ "node_modules/tsx/node_modules/@esbuild/openbsd-x64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.27.7.tgz",
+ "integrity": "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==",
+ "cpu": [
+ "x64"
+ ],
"license": "MIT",
- "bin": {
- "is-docker": "cli.js"
- },
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
"engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=18"
}
},
- "node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "node_modules/tsx/node_modules/@esbuild/openharmony-arm64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmmirror.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.7.tgz",
+ "integrity": "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==",
+ "cpu": [
+ "arm64"
+ ],
"license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
"engines": {
- "node": ">=8"
+ "node": ">=18"
}
},
- "node_modules/is-inside-container": {
- "version": "1.0.0",
- "resolved": "https://registry.npmmirror.com/is-inside-container/-/is-inside-container-1.0.0.tgz",
- "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
+ "node_modules/tsx/node_modules/@esbuild/sunos-x64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.27.7.tgz",
+ "integrity": "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==",
+ "cpu": [
+ "x64"
+ ],
"license": "MIT",
- "dependencies": {
- "is-docker": "^3.0.0"
- },
- "bin": {
- "is-inside-container": "cli.js"
- },
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
"engines": {
- "node": ">=14.16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=18"
}
},
- "node_modules/is-plain-obj": {
- "version": "4.1.0",
- "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
- "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
+ "node_modules/tsx/node_modules/@esbuild/win32-arm64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.27.7.tgz",
+ "integrity": "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==",
+ "cpu": [
+ "arm64"
+ ],
"license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
"engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=18"
}
},
- "node_modules/is-stream": {
- "version": "4.0.1",
- "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-4.0.1.tgz",
- "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==",
+ "node_modules/tsx/node_modules/@esbuild/win32-ia32": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.27.7.tgz",
+ "integrity": "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==",
+ "cpu": [
+ "ia32"
+ ],
"license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
"engines": {
"node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/is-unicode-supported": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz",
- "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==",
+ "node_modules/tsx/node_modules/@esbuild/win32-x64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.27.7.tgz",
+ "integrity": "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==",
+ "cpu": [
+ "x64"
+ ],
"license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
"engines": {
"node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/is-wsl": {
- "version": "3.1.1",
- "resolved": "https://registry.npmmirror.com/is-wsl/-/is-wsl-3.1.1.tgz",
- "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==",
+ "node_modules/tsx/node_modules/esbuild": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.27.7.tgz",
+ "integrity": "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==",
+ "hasInstallScript": true,
"license": "MIT",
- "dependencies": {
- "is-inside-container": "^1.0.0"
+ "bin": {
+ "esbuild": "bin/esbuild"
},
"engines": {
- "node": ">=16"
+ "node": ">=18"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "license": "ISC"
- },
- "node_modules/jiti": {
- "version": "2.7.0",
- "resolved": "https://registry.npmmirror.com/jiti/-/jiti-2.7.0.tgz",
- "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==",
- "license": "MIT",
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.27.7",
+ "@esbuild/android-arm": "0.27.7",
+ "@esbuild/android-arm64": "0.27.7",
+ "@esbuild/android-x64": "0.27.7",
+ "@esbuild/darwin-arm64": "0.27.7",
+ "@esbuild/darwin-x64": "0.27.7",
+ "@esbuild/freebsd-arm64": "0.27.7",
+ "@esbuild/freebsd-x64": "0.27.7",
+ "@esbuild/linux-arm": "0.27.7",
+ "@esbuild/linux-arm64": "0.27.7",
+ "@esbuild/linux-ia32": "0.27.7",
+ "@esbuild/linux-loong64": "0.27.7",
+ "@esbuild/linux-mips64el": "0.27.7",
+ "@esbuild/linux-ppc64": "0.27.7",
+ "@esbuild/linux-riscv64": "0.27.7",
+ "@esbuild/linux-s390x": "0.27.7",
+ "@esbuild/linux-x64": "0.27.7",
+ "@esbuild/netbsd-arm64": "0.27.7",
+ "@esbuild/netbsd-x64": "0.27.7",
+ "@esbuild/openbsd-arm64": "0.27.7",
+ "@esbuild/openbsd-x64": "0.27.7",
+ "@esbuild/openharmony-arm64": "0.27.7",
+ "@esbuild/sunos-x64": "0.27.7",
+ "@esbuild/win32-arm64": "0.27.7",
+ "@esbuild/win32-ia32": "0.27.7",
+ "@esbuild/win32-x64": "0.27.7"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "5.9.3",
+ "resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.9.3.tgz",
+ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
+ "license": "Apache-2.0",
"bin": {
- "jiti": "lib/jiti-cli.mjs"
- }
- },
- "node_modules/jose": {
- "version": "6.2.12",
- "resolved": "https://registry.npmmirror.com/jose/-/jose-6.2.12.tgz",
- "integrity": "sha512-9NiFmJEex0sy2Dk58j2UGBSHgUs2ypF9eZSu4L6vjOX3Dp96Sw1F3uL+H+D1sx02jZZdzUT0HgvCy59CuvXcWw==",
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/panva"
- }
- },
- "node_modules/js-yaml": {
- "version": "4.3.2",
- "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.3.2.tgz",
- "integrity": "sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/puzrin"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/nodeca"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "argparse": "^2.0.1"
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
},
- "bin": {
- "js-yaml": "bin/js-yaml.js"
+ "engines": {
+ "node": ">=14.17"
}
},
- "node_modules/jsonc-parser": {
- "version": "3.3.1",
- "resolved": "https://registry.npmmirror.com/jsonc-parser/-/jsonc-parser-3.3.1.tgz",
- "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==",
+ "node_modules/uid-promise": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/uid-promise/-/uid-promise-1.0.0.tgz",
+ "integrity": "sha512-R8375j0qwXyIu/7R0tjdF06/sElHqbmdmWC9M2qQHpEVbvE4I5+38KJI7LUUmQMp7NVq4tKHiBMkT0NFM453Ig==",
"license": "MIT"
},
- "node_modules/kleur": {
- "version": "3.0.3",
- "resolved": "https://registry.npmmirror.com/kleur/-/kleur-3.0.3.tgz",
- "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
+ "node_modules/undici": {
+ "version": "7.29.1",
+ "resolved": "https://registry.npmmirror.com/undici/-/undici-7.29.1.tgz",
+ "integrity": "sha512-RYONW2MeafgYlkVOKYKkA/Ag7BmXqgIWCa8t1m0JcxrQg9pI9lEqRhAOruOBCbAohOa/gkCF+iPi9hrgvTzu6Q==",
"license": "MIT",
"engines": {
- "node": ">=6"
+ "node": ">=20.18.1"
}
},
- "node_modules/lru-cache": {
- "version": "11.5.2",
- "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-11.5.2.tgz",
- "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==",
- "license": "BlueOak-1.0.0",
- "engines": {
- "node": "20 || >=22"
- }
+ "node_modules/undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "license": "MIT"
},
- "node_modules/minimatch": {
- "version": "10.2.6",
- "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-10.2.6.tgz",
- "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==",
- "license": "BlueOak-1.0.0",
- "dependencies": {
- "brace-expansion": "^5.0.8"
- },
+ "node_modules/unicorn-magic": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmmirror.com/unicorn-magic/-/unicorn-magic-0.3.0.tgz",
+ "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==",
+ "license": "MIT",
"engines": {
- "node": "18 || 20 || >=22"
+ "node": ">=18"
},
"funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/minipass": {
- "version": "7.1.3",
- "resolved": "https://registry.npmmirror.com/minipass/-/minipass-7.1.3.tgz",
- "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==",
- "license": "BlueOak-1.0.0",
+ "node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "license": "MIT",
"engines": {
- "node": ">=16 || 14 >=14.17"
+ "node": ">= 10.0.0"
}
},
- "node_modules/minizlib": {
- "version": "2.1.2",
- "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz",
- "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
+ "node_modules/unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
"license": "MIT",
- "dependencies": {
- "minipass": "^3.0.0",
- "yallist": "^4.0.0"
- },
"engines": {
- "node": ">= 8"
+ "node": ">= 0.8"
}
},
- "node_modules/minizlib/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "license": "ISC",
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "license": "BSD-2-Clause",
"dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
+ "punycode": "^2.1.0"
}
},
- "node_modules/mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "node_modules/uuid": {
+ "version": "14.0.1",
+ "resolved": "https://registry.npmmirror.com/uuid/-/uuid-14.0.1.tgz",
+ "integrity": "sha512-6ZxzVpzDXDa3bJWaHilVayA+BH/1zmxCJoVgvmqJnid/gPoKHxUrS/aC/T6LGQtNHT+XHG9fXPJB4d+IrU30Ew==",
+ "funding": [
+ "https://github.com/sponsors/broofa",
+ "https://github.com/sponsors/ctavan"
+ ],
"license": "MIT",
"bin": {
- "mkdirp": "bin/cmd.js"
- },
- "engines": {
- "node": ">=10"
+ "uuid": "dist-node/bin/uuid"
}
},
- "node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "license": "MIT"
- },
- "node_modules/neon": {
- "version": "4.18.0",
- "resolved": "https://registry.npmmirror.com/neon/-/neon-4.18.0.tgz",
- "integrity": "sha512-E5NzvR0LsQp9zz/Y9yxiqAwwVD7TLMqNohvlTbtEL7eEmi1g/fYnY6c8qkefow5D7CzwAxd3OkCF0/oiDZMwfg==",
+ "node_modules/vercel": {
+ "version": "59.20.0",
+ "resolved": "https://registry.npmmirror.com/vercel/-/vercel-59.20.0.tgz",
+ "integrity": "sha512-e5A70qlu7HzNZRgKKywlz09jsqkR7XwLRmQO1cwAnRzrgpVSIt/iL7GlO5131jS5xa+/fyNiLHpXT4DpOoE4WQ==",
"license": "Apache-2.0",
"dependencies": {
- "@clack/core": "0.4.2",
- "@clack/prompts": "0.10.1",
- "@hono/node-server": "2.0.4",
- "@neon/config": "1.5.0",
- "@neon/config-runtime": "1.4.0",
- "@neon/sdk": "5.0.0",
- "@segment/analytics-node": "1.3.0",
- "add-mcp": "2.0.0",
- "chalk": "5.3.0",
- "chokidar": "5.0.0",
- "cliui": "8.0.1",
- "diff": "5.2.0",
- "execa": "^9.5.2",
- "fflate": "^0.8.3",
- "open": "^10.2.0",
- "openid-client": "6.8.1",
- "pg-protocol": "^1.14.0",
- "picocolors": "^1.1.1",
- "prompts": "2.4.2",
- "undici": "^7.28.0",
- "which": "3.0.1",
- "yaml": "^2.9.0",
- "yargs": "17.7.2",
- "yoctocolors": "^2.1.2"
+ "@vercel/backends": "8.0.1",
+ "@vercel/blob": "2.8.0",
+ "@vercel/build-utils": "14.10.1",
+ "@vercel/cli-auth": "0.3.8",
+ "@vercel/cli-config": "0.2.7",
+ "@vercel/container": "8.2.0",
+ "@vercel/detect-agent": "1.2.5",
+ "@vercel/elysia": "8.0.1",
+ "@vercel/express": "8.0.1",
+ "@vercel/fastify": "8.0.1",
+ "@vercel/fun": "1.3.0",
+ "@vercel/go": "11.0.1",
+ "@vercel/h3": "8.0.1",
+ "@vercel/hono": "8.0.1",
+ "@vercel/hydrogen": "9.0.1",
+ "@vercel/koa": "8.0.1",
+ "@vercel/nestjs": "8.0.1",
+ "@vercel/next": "12.0.2",
+ "@vercel/node": "13.0.1",
+ "@vercel/prepare-flags-definitions": "0.3.0",
+ "@vercel/python": "14.1.0",
+ "@vercel/python-analysis": "0.14.0",
+ "@vercel/redwood": "10.0.1",
+ "@vercel/remix-builder": "13.0.1",
+ "@vercel/ruby": "10.0.1",
+ "@vercel/rust": "9.0.1",
+ "@vercel/static-build": "10.0.1",
+ "chokidar": "4.0.0",
+ "esbuild": "0.27.0",
+ "jose": "5.9.6",
+ "jsonc-parser": "3.3.1",
+ "luxon": "^3.4.0",
+ "sandbox": "4.1.0",
+ "smol-toml": "1.5.2",
+ "undici": "5.29.0",
+ "uuid": "14.0.1",
+ "zod": "4.1.11"
},
"bin": {
- "neon": "dist/cli.js"
+ "vc": "dist/vc.js",
+ "vercel": "dist/vc.js"
},
"engines": {
- "node": ">=20.19.0"
+ "node": ">= 18"
},
"optionalDependencies": {
- "@napi-rs/keyring": "1.3.0",
- "esbuild": "0.28.1"
- }
- },
- "node_modules/node-domexception": {
- "version": "1.0.0",
- "resolved": "https://registry.npmmirror.com/node-domexception/-/node-domexception-1.0.0.tgz",
- "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
- "deprecated": "Use your platform's native DOMException instead",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/jimmywarting"
- },
- {
- "type": "github",
- "url": "https://paypal.me/jimmywarting"
- }
+ "@vercel/vc-native-darwin-arm64": "59.20.0",
+ "@vercel/vc-native-darwin-x64": "59.20.0",
+ "@vercel/vc-native-linux-arm64": "59.20.0",
+ "@vercel/vc-native-linux-x64": "59.20.0",
+ "@vercel/vc-native-win32-arm64": "59.20.0",
+ "@vercel/vc-native-win32-x64": "59.20.0"
+ }
+ },
+ "node_modules/vercel/node_modules/@esbuild/aix-ppc64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.27.0.tgz",
+ "integrity": "sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A==",
+ "cpu": [
+ "ppc64"
],
"license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
"engines": {
- "node": ">=10.5.0"
+ "node": ">=18"
}
},
- "node_modules/node-fetch": {
- "version": "3.3.2",
- "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-3.3.2.tgz",
- "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==",
+ "node_modules/vercel/node_modules/@esbuild/android-arm": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.27.0.tgz",
+ "integrity": "sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ==",
+ "cpu": [
+ "arm"
+ ],
"license": "MIT",
- "dependencies": {
- "data-uri-to-buffer": "^4.0.0",
- "fetch-blob": "^3.1.4",
- "formdata-polyfill": "^4.0.10"
- },
+ "optional": true,
+ "os": [
+ "android"
+ ],
"engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/node-fetch"
+ "node": ">=18"
}
},
- "node_modules/node-gyp-build": {
- "version": "4.8.4",
- "resolved": "https://registry.npmmirror.com/node-gyp-build/-/node-gyp-build-4.8.4.tgz",
- "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==",
+ "node_modules/vercel/node_modules/@esbuild/android-arm64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.27.0.tgz",
+ "integrity": "sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ==",
+ "cpu": [
+ "arm64"
+ ],
"license": "MIT",
- "bin": {
- "node-gyp-build": "bin.js",
- "node-gyp-build-optional": "optional.js",
- "node-gyp-build-test": "build-test.js"
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
}
},
- "node_modules/nopt": {
- "version": "8.1.0",
- "resolved": "https://registry.npmmirror.com/nopt/-/nopt-8.1.0.tgz",
- "integrity": "sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==",
- "license": "ISC",
- "dependencies": {
- "abbrev": "^3.0.0"
- },
- "bin": {
- "nopt": "bin/nopt.js"
- },
+ "node_modules/vercel/node_modules/@esbuild/android-x64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.27.0.tgz",
+ "integrity": "sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
"engines": {
- "node": "^18.17.0 || >=20.5.0"
+ "node": ">=18"
}
},
- "node_modules/npm-run-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-6.0.0.tgz",
- "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==",
+ "node_modules/vercel/node_modules/@esbuild/darwin-arm64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.27.0.tgz",
+ "integrity": "sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg==",
+ "cpu": [
+ "arm64"
+ ],
"license": "MIT",
- "dependencies": {
- "path-key": "^4.0.0",
- "unicorn-magic": "^0.3.0"
- },
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"engines": {
"node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/npm-run-path/node_modules/path-key": {
- "version": "4.0.0",
- "resolved": "https://registry.npmmirror.com/path-key/-/path-key-4.0.0.tgz",
- "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
+ "node_modules/vercel/node_modules/@esbuild/darwin-x64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.27.0.tgz",
+ "integrity": "sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g==",
+ "cpu": [
+ "x64"
+ ],
"license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=18"
}
},
- "node_modules/oauth4webapi": {
- "version": "3.8.8",
- "resolved": "https://registry.npmmirror.com/oauth4webapi/-/oauth4webapi-3.8.8.tgz",
- "integrity": "sha512-8N28E+a/oxfXWBgOMt+ZP/JUf/XR+IFbvkAEPP3gznXOMv9BpAAwiIj0TFNz3tGTPc0ZQ8zmWBNgN1nAys0gng==",
+ "node_modules/vercel/node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.0.tgz",
+ "integrity": "sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw==",
+ "cpu": [
+ "arm64"
+ ],
"license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/panva"
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
}
},
- "node_modules/open": {
- "version": "10.2.0",
- "resolved": "https://registry.npmmirror.com/open/-/open-10.2.0.tgz",
- "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==",
+ "node_modules/vercel/node_modules/@esbuild/freebsd-x64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.27.0.tgz",
+ "integrity": "sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g==",
+ "cpu": [
+ "x64"
+ ],
"license": "MIT",
- "dependencies": {
- "default-browser": "^5.2.1",
- "define-lazy-prop": "^3.0.0",
- "is-inside-container": "^1.0.0",
- "wsl-utils": "^0.1.0"
- },
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
"engines": {
"node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/openid-client": {
- "version": "6.8.1",
- "resolved": "https://registry.npmmirror.com/openid-client/-/openid-client-6.8.1.tgz",
- "integrity": "sha512-VoYT6enBo6Vj2j3Q5Ec0AezS+9YGzQo1f5Xc42lreMGlfP4ljiXPKVDvCADh+XHCV/bqPu/wWSiCVXbJKvrODw==",
+ "node_modules/vercel/node_modules/@esbuild/linux-arm": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.27.0.tgz",
+ "integrity": "sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ==",
+ "cpu": [
+ "arm"
+ ],
"license": "MIT",
- "dependencies": {
- "jose": "^6.1.0",
- "oauth4webapi": "^3.8.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/panva"
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
}
},
- "node_modules/parse-ms": {
- "version": "4.0.0",
- "resolved": "https://registry.npmmirror.com/parse-ms/-/parse-ms-4.0.0.tgz",
- "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==",
+ "node_modules/vercel/node_modules/@esbuild/linux-arm64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.27.0.tgz",
+ "integrity": "sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ==",
+ "cpu": [
+ "arm64"
+ ],
"license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
"node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "node_modules/vercel/node_modules/@esbuild/linux-ia32": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.27.0.tgz",
+ "integrity": "sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw==",
+ "cpu": [
+ "ia32"
+ ],
"license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=8"
+ "node": ">=18"
}
},
- "node_modules/path-scurry": {
- "version": "2.0.2",
- "resolved": "https://registry.npmmirror.com/path-scurry/-/path-scurry-2.0.2.tgz",
- "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==",
- "license": "BlueOak-1.0.0",
- "dependencies": {
- "lru-cache": "^11.0.0",
- "minipass": "^7.1.2"
- },
+ "node_modules/vercel/node_modules/@esbuild/linux-loong64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.27.0.tgz",
+ "integrity": "sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg==",
+ "cpu": [
+ "loong64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": "18 || 20 || >=22"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "node": ">=18"
}
},
- "node_modules/pg-protocol": {
- "version": "1.16.0",
- "resolved": "https://registry.npmmirror.com/pg-protocol/-/pg-protocol-1.16.0.tgz",
- "integrity": "sha512-sILXutLVjCLjcDuOmvhX5e2Z4cS5qG/6Bu3VkpFwdf/633ElGLpEh9bgmuI5I4sqKqkifQiGyiCcx1HdtrK7tg==",
- "license": "MIT"
- },
- "node_modules/picocolors": {
- "version": "1.1.1",
- "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz",
- "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
- "license": "ISC"
+ "node_modules/vercel/node_modules/@esbuild/linux-mips64el": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.27.0.tgz",
+ "integrity": "sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg==",
+ "cpu": [
+ "mips64el"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
},
- "node_modules/picomatch": {
- "version": "4.0.7",
- "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.7.tgz",
- "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==",
+ "node_modules/vercel/node_modules/@esbuild/linux-ppc64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.27.0.tgz",
+ "integrity": "sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA==",
+ "cpu": [
+ "ppc64"
+ ],
"license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
+ "node": ">=18"
}
},
- "node_modules/pretty-ms": {
- "version": "9.3.1",
- "resolved": "https://registry.npmmirror.com/pretty-ms/-/pretty-ms-9.3.1.tgz",
- "integrity": "sha512-HzMy3Geq23nVALD/M2LliU+F+M+gVNsvkQWWqeBZ8HDiCgzo6YPJ/Omrmtq24EFrIsk0a3EkQGEd7bDOo+IhGA==",
+ "node_modules/vercel/node_modules/@esbuild/linux-riscv64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.27.0.tgz",
+ "integrity": "sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ==",
+ "cpu": [
+ "riscv64"
+ ],
"license": "MIT",
- "dependencies": {
- "parse-ms": "^4.0.0"
- },
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
"node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/prompts": {
- "version": "2.4.2",
- "resolved": "https://registry.npmmirror.com/prompts/-/prompts-2.4.2.tgz",
- "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
+ "node_modules/vercel/node_modules/@esbuild/linux-s390x": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.27.0.tgz",
+ "integrity": "sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w==",
+ "cpu": [
+ "s390x"
+ ],
"license": "MIT",
- "dependencies": {
- "kleur": "^3.0.3",
- "sisteransi": "^1.0.5"
- },
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">= 6"
+ "node": ">=18"
}
},
- "node_modules/readdirp": {
- "version": "5.1.1",
- "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-5.1.1.tgz",
- "integrity": "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==",
+ "node_modules/vercel/node_modules/@esbuild/linux-x64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.27.0.tgz",
+ "integrity": "sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw==",
+ "cpu": [
+ "x64"
+ ],
"license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">= 20.19.0"
- },
- "funding": {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
+ "node": ">=18"
}
},
- "node_modules/require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "node_modules/vercel/node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.0.tgz",
+ "integrity": "sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w==",
+ "cpu": [
+ "arm64"
+ ],
"license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
"engines": {
- "node": ">=0.10.0"
+ "node": ">=18"
}
},
- "node_modules/resolve-from": {
- "version": "5.0.0",
- "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "node_modules/vercel/node_modules/@esbuild/netbsd-x64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.27.0.tgz",
+ "integrity": "sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA==",
+ "cpu": [
+ "x64"
+ ],
"license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
"engines": {
- "node": ">=8"
+ "node": ">=18"
}
},
- "node_modules/run-applescript": {
- "version": "7.1.0",
- "resolved": "https://registry.npmmirror.com/run-applescript/-/run-applescript-7.1.0.tgz",
- "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==",
+ "node_modules/vercel/node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.0.tgz",
+ "integrity": "sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ==",
+ "cpu": [
+ "arm64"
+ ],
"license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
"engines": {
"node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/semver": {
- "version": "7.8.5",
- "resolved": "https://registry.npmmirror.com/semver/-/semver-7.8.5.tgz",
- "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- },
+ "node_modules/vercel/node_modules/@esbuild/openbsd-x64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.27.0.tgz",
+ "integrity": "sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
"engines": {
- "node": ">=10"
+ "node": ">=18"
}
},
- "node_modules/shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "node_modules/vercel/node_modules/@esbuild/openharmony-arm64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.0.tgz",
+ "integrity": "sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA==",
+ "cpu": [
+ "arm64"
+ ],
"license": "MIT",
- "dependencies": {
- "shebang-regex": "^3.0.0"
- },
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
"engines": {
- "node": ">=8"
+ "node": ">=18"
}
},
- "node_modules/shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "node_modules/vercel/node_modules/@esbuild/sunos-x64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.27.0.tgz",
+ "integrity": "sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA==",
+ "cpu": [
+ "x64"
+ ],
"license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
"engines": {
- "node": ">=8"
+ "node": ">=18"
}
},
- "node_modules/signal-exit": {
- "version": "4.1.0",
- "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-4.1.0.tgz",
- "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
- "license": "ISC",
+ "node_modules/vercel/node_modules/@esbuild/win32-arm64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.27.0.tgz",
+ "integrity": "sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
"engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "node": ">=18"
}
},
- "node_modules/sisteransi": {
- "version": "1.0.5",
- "resolved": "https://registry.npmmirror.com/sisteransi/-/sisteransi-1.0.5.tgz",
- "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
- "license": "MIT"
- },
- "node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "node_modules/vercel/node_modules/@esbuild/win32-ia32": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.27.0.tgz",
+ "integrity": "sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ==",
+ "cpu": [
+ "ia32"
+ ],
"license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
+ "optional": true,
+ "os": [
+ "win32"
+ ],
"engines": {
- "node": ">=8"
+ "node": ">=18"
}
},
- "node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "node_modules/vercel/node_modules/@esbuild/win32-x64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.27.0.tgz",
+ "integrity": "sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg==",
+ "cpu": [
+ "x64"
+ ],
"license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
+ "optional": true,
+ "os": [
+ "win32"
+ ],
"engines": {
- "node": ">=8"
+ "node": ">=18"
}
},
- "node_modules/strip-final-newline": {
+ "node_modules/vercel/node_modules/chokidar": {
"version": "4.0.0",
- "resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-4.0.0.tgz",
- "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==",
+ "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-4.0.0.tgz",
+ "integrity": "sha512-mxIojEAQcuEvT/lyXq+jf/3cO/KoA6z4CeNDGGevTybECPOMFCnQy3OPahluUkbqgPNGw5Bi78UC7Po6Lhy+NA==",
"license": "MIT",
+ "dependencies": {
+ "readdirp": "^4.0.1"
+ },
"engines": {
- "node": ">=18"
+ "node": ">= 14.16.0"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://paulmillr.com/funding/"
}
},
- "node_modules/tar": {
- "version": "6.2.1",
- "resolved": "https://registry.npmmirror.com/tar/-/tar-6.2.1.tgz",
- "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==",
- "license": "ISC",
- "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"
+ "node_modules/vercel/node_modules/esbuild": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.27.0.tgz",
+ "integrity": "sha512-jd0f4NHbD6cALCyGElNpGAOtWxSq46l9X/sWB0Nzd5er4Kz2YTm+Vl0qKFT9KUJvD8+fiO8AvoHhFvEatfVixA==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
},
"engines": {
- "node": ">=10"
+ "node": ">=18"
+ },
+ "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"
+ }
+ },
+ "node_modules/vercel/node_modules/jose": {
+ "version": "5.9.6",
+ "resolved": "https://registry.npmmirror.com/jose/-/jose-5.9.6.tgz",
+ "integrity": "sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/panva"
}
},
- "node_modules/tar/node_modules/minipass": {
- "version": "5.0.0",
- "resolved": "https://registry.npmmirror.com/minipass/-/minipass-5.0.0.tgz",
- "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
- "license": "ISC",
+ "node_modules/vercel/node_modules/readdirp": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-4.1.2.tgz",
+ "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
+ "license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">= 14.18.0"
+ },
+ "funding": {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
}
},
- "node_modules/tr46": {
- "version": "0.0.3",
- "resolved": "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
- "license": "MIT"
- },
- "node_modules/tslib": {
- "version": "2.8.1",
- "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.8.1.tgz",
- "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
- "license": "0BSD"
- },
- "node_modules/undici": {
- "version": "7.29.1",
- "resolved": "https://registry.npmmirror.com/undici/-/undici-7.29.1.tgz",
- "integrity": "sha512-RYONW2MeafgYlkVOKYKkA/Ag7BmXqgIWCa8t1m0JcxrQg9pI9lEqRhAOruOBCbAohOa/gkCF+iPi9hrgvTzu6Q==",
+ "node_modules/vercel/node_modules/undici": {
+ "version": "5.29.0",
+ "resolved": "https://registry.npmmirror.com/undici/-/undici-5.29.0.tgz",
+ "integrity": "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==",
"license": "MIT",
+ "dependencies": {
+ "@fastify/busboy": "^2.0.0"
+ },
"engines": {
- "node": ">=20.18.1"
+ "node": ">=14.0"
}
},
- "node_modules/unicorn-magic": {
- "version": "0.3.0",
- "resolved": "https://registry.npmmirror.com/unicorn-magic/-/unicorn-magic-0.3.0.tgz",
- "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==",
+ "node_modules/vercel/node_modules/zod": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmmirror.com/zod/-/zod-4.1.11.tgz",
+ "integrity": "sha512-WPsqwxITS2tzx1bzhIKsEs19ABD5vmCVa4xBo2tq/SrV4RNZtfws1EnCWQXM6yh8bD08a1idvkB5MZSBiZsjwg==",
"license": "MIT",
- "engines": {
- "node": ">=18"
- },
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/sponsors/colinhacks"
}
},
"node_modules/web-streams-polyfill": {
@@ -2399,6 +8450,12 @@
"node": ">= 8"
}
},
+ "node_modules/web-vitals": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmmirror.com/web-vitals/-/web-vitals-0.2.4.tgz",
+ "integrity": "sha512-6BjspCO9VriYy12z356nL6JBS0GYeEcA457YyRzD+dD6XYCQ75NKhcOHUMHentOE7OcVCIXXDvOm0jKFfQG2Gg==",
+ "license": "Apache-2.0"
+ },
"node_modules/webidl-conversions": {
"version": "3.0.1",
"resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
@@ -2447,6 +8504,33 @@
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "license": "ISC"
+ },
+ "node_modules/ws": {
+ "version": "8.21.3",
+ "resolved": "https://registry.npmmirror.com/ws/-/ws-8.21.3.tgz",
+ "integrity": "sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
"node_modules/wsl-utils": {
"version": "0.1.0",
"resolved": "https://registry.npmmirror.com/wsl-utils/-/wsl-utils-0.1.0.tgz",
@@ -2462,6 +8546,31 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/xdg-app-paths": {
+ "version": "5.5.1",
+ "resolved": "https://registry.npmmirror.com/xdg-app-paths/-/xdg-app-paths-5.5.1.tgz",
+ "integrity": "sha512-hI3flOB4PLZIy5prbtTpirobtPE2ZtZ52szO+2mM9Efp6ErM398La+C1lIpNWDfNoQk+6Lsi6nMcCwVB7pxeMQ==",
+ "license": "MIT",
+ "dependencies": {
+ "os-paths": "^4.0.1",
+ "xdg-portable": "^7.2.0"
+ },
+ "engines": {
+ "node": ">= 6.0"
+ }
+ },
+ "node_modules/xdg-portable": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmmirror.com/xdg-portable/-/xdg-portable-7.3.0.tgz",
+ "integrity": "sha512-sqMMuL1rc0FmMBOzCpd0yuy9trqF2yTTVe+E9ogwCSWQCdDEtQUwrZPT6AxqtsFGRNxycgncbP/xmOOSPw5ZUw==",
+ "license": "MIT",
+ "dependencies": {
+ "os-paths": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6.0"
+ }
+ },
"node_modules/y18n": {
"version": "5.0.8",
"resolved": "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz",
@@ -2519,6 +8628,41 @@
"node": ">=12"
}
},
+ "node_modules/yauzl": {
+ "version": "2.10.0",
+ "resolved": "https://registry.npmmirror.com/yauzl/-/yauzl-2.10.0.tgz",
+ "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
+ "license": "MIT",
+ "dependencies": {
+ "buffer-crc32": "~0.2.3",
+ "fd-slicer": "~1.1.0"
+ }
+ },
+ "node_modules/yauzl-clone": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/yauzl-clone/-/yauzl-clone-1.0.4.tgz",
+ "integrity": "sha512-igM2RRCf3k8TvZoxR2oguuw4z1xasOnA31joCqHIyLkeWrvAc2Jgay5ISQ2ZplinkoGaJ6orCz56Ey456c5ESA==",
+ "license": "MIT",
+ "dependencies": {
+ "events-intercept": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/yauzl-promise": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmmirror.com/yauzl-promise/-/yauzl-promise-2.1.3.tgz",
+ "integrity": "sha512-A1pf6fzh6eYkK0L4Qp7g9jzJSDrM6nN0bOn5T0IbY4Yo3w+YkWlHFkJP7mzknMXjqusHFHlKsK2N+4OLsK2MRA==",
+ "license": "MIT",
+ "dependencies": {
+ "yauzl": "^2.9.1",
+ "yauzl-clone": "^1.0.4"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/yoctocolors": {
"version": "2.2.0",
"resolved": "https://registry.npmmirror.com/yoctocolors/-/yoctocolors-2.2.0.tgz",
diff --git a/validation/cloud-tools/package.json b/validation/cloud-tools/package.json
index e1ad5ae..b251379 100644
--- a/validation/cloud-tools/package.json
+++ b/validation/cloud-tools/package.json
@@ -5,6 +5,7 @@
"description": "Pinned official CLIs for the personal cloud validation step",
"dependencies": {
"@railway/cli": "5.57.2",
- "neon": "4.18.0"
+ "neon": "4.18.0",
+ "vercel": "59.20.0"
}
}
diff --git a/validation/install-smoke.py b/validation/install-smoke.py
index e81d4e5..7d80242 100644
--- a/validation/install-smoke.py
+++ b/validation/install-smoke.py
@@ -16,7 +16,7 @@ def main():
if len(sys.argv) != 2:
raise SystemExit("Usage: python3 validation/install-smoke.py INSTALL_DIRECTORY")
installation = Path(sys.argv[1]).resolve()
- for tool, version in [("railway", "railway 5.57.2"), ("neon", "4.18.0")]:
+ for tool, version in [("railway", "railway 5.57.2"), ("neon", "4.18.0"), ("vercel", "59.20.0")]:
result = subprocess.run([str(installation / "tools/node_modules/.bin" / tool), "--version"],
capture_output=True, text=True, check=True, timeout=20)
assert result.stdout.strip() == version, f"Unexpected {tool} version"
diff --git a/validation/results/browser-access-diagnosis.json b/validation/results/browser-access-diagnosis.json
new file mode 100644
index 0000000..c0c2109
--- /dev/null
+++ b/validation/results/browser-access-diagnosis.json
@@ -0,0 +1,46 @@
+{
+ "recorded_at": "2026-09-17T08:35:26.781992+00:00",
+ "status": "manual_chrome_access_confirmed_automation_path_unresolved",
+ "url": "https://upok-vercel-20260917-go.vercel.app/healthz",
+ "http_client": {
+ "http_status": 200,
+ "tls_verified": true,
+ "body": {
+ "language": "go",
+ "status": "ok",
+ "version": "vercel-v1-source2"
+ }
+ },
+ "controlled_chrome": {
+ "reproductions": 2,
+ "error": "net::ERR_BLOCKED_BY_CLIENT",
+ "cdp_blocked_reason": "inspector",
+ "document_response_received": false,
+ "root_component_identified": false
+ },
+ "tool_boundary": {
+ "attempted_read_only_page": "chrome://extensions/",
+ "result": "rejected by Browser Use URL security policy",
+ "workaround_attempted": false
+ },
+ "manual_comparison": "User asked to open the same HTTPS URL directly in Chrome and report the visible result",
+ "browser_proxy_or_extension_settings_changed": false,
+ "vercel_adapter_started": false,
+ "note": "User confirmed manual Chrome access. Controlled Chrome previously reported inspector blocking; that path has not been fixed or revalidated. Ordinary browser access no longer blocks adapter evaluation.",
+ "manual_comparison_result": {
+ "recorded_at": "2026-09-17T09:54:22.482485+00:00",
+ "source": "user_report",
+ "browser": "Chrome",
+ "result": "JSON visible with status ok and a version field",
+ "exact_version_reported": false
+ },
+ "http_recheck": {
+ "http_status": 200,
+ "tls_verified": true,
+ "body": {
+ "status": "ok",
+ "version": "vercel-v1-source2"
+ },
+ "retries": 0
+ }
+}
diff --git a/validation/results/local-secret-files-report.json b/validation/results/local-secret-files-report.json
new file mode 100644
index 0000000..df7de87
--- /dev/null
+++ b/validation/results/local-secret-files-report.json
@@ -0,0 +1,46 @@
+{
+ "recorded_at": "2026-09-17T13:08:57.165563+00:00",
+ "status": "local_file_storage_and_migration_validated",
+ "scope": "macOS arm64 local storage and installed runtime; no cloud operation in this validation",
+ "storage": {
+ "default_state": "~/.ship",
+ "business_secret_files": "secrets/.json within the selected state directory",
+ "format": "plaintext UTF-8 JSON",
+ "directory_mode": "0700",
+ "file_mode": "0600",
+ "symlink_and_non_regular_files_rejected": true,
+ "group_or_other_permission_bits_rejected": true,
+ "secret_values_omitted_from_cli_output_and_local_project_api": true,
+ "state_directory_excluded_from_source_upload": true,
+ "keychain_or_cgo_required": false
+ },
+ "migration": {
+ "daily_project_count": 1,
+ "daily_operation_count": 4,
+ "ordinary_record_bytes_unchanged": true,
+ "isolated_vercel_project_count": 1,
+ "secret_values_restored": 1,
+ "source": "original authorized private validation input; reading the former Keychain item via the system CLI timed out",
+ "unknown_secret_write_count_preserved": 1,
+ "secret_operation_metadata_unchanged": true,
+ "old_state_runtime_and_keychain_kept_for_rollback": true,
+ "cloud_requests": 0
+ },
+ "checks": {
+ "go_test_race": "passed",
+ "go_vet": "passed",
+ "cgo_disabled_go_tests": "passed",
+ "javascript_syntax": "passed",
+ "fresh_install_smoke": "passed",
+ "cross_process_secret_read": "passed",
+ "past_and_current_secret_redaction": "passed",
+ "known_secret_source_upload_block": "passed",
+ "private_permissions_and_invalid_input": "passed",
+ "installed_local_ui_and_authenticated_api": "passed"
+ },
+ "limits": [
+ "Plaintext files are readable by processes with the same user file access; storage is not encrypted.",
+ "The installer is still validated only on macOS arm64; Windows ACL and file locking have not been implemented or validated.",
+ "The prior Vercel Secret write remains unknown; no retry, Secret update or deployment was performed."
+ ]
+}
diff --git a/validation/results/ship-vercel-acceptance.json b/validation/results/ship-vercel-acceptance.json
new file mode 100644
index 0000000..db2d5fe
--- /dev/null
+++ b/validation/results/ship-vercel-acceptance.json
@@ -0,0 +1,86 @@
+{
+ "recorded_at": "2026-09-17T14:31:26.242396+00:00",
+ "status": "vercel_hobby_ship_deploy_update_and_postgres_acceptance_passed",
+ "scope": "Existing personal Vercel Hobby container project plus existing Neon Free; Go sample; macOS arm64",
+ "public_url": "https://upok-vercel-20260917-go.vercel.app",
+ "secret_disposition": "user_approved_diagnosed_not_applied_with_original_evidence_retained",
+ "business_secrets_rewritten": false,
+ "business_secret_metadata_unchanged": true,
+ "plan": {
+ "vercel": "hobby",
+ "neon": "free"
+ },
+ "database_binding_evidence": "provider_secret_retained_not_readable",
+ "versions": {
+ "before": "vercel-v1-source2",
+ "first": "vercel-v1-ship-alpha1",
+ "updated": "vercel-v1-ship-alpha2"
+ },
+ "deployments": [
+ {
+ "id": "1789654753902211000-3b25d93b2bfdb546",
+ "state": "deployed",
+ "deployment_id": "dpl_rjWADdQ3PiFAZUtNJovUvvBmTtWf",
+ "provider_state": "READY",
+ "source_sha256": "bb3fca89395db5c324432a5cce510ecd1acf7dd40d19af6cbc3b48295aa5150e",
+ "source_files": 7,
+ "checks": [
+ {
+ "path": "/healthz",
+ "ok": true,
+ "http_status": 200,
+ "version": "vercel-v1-ship-alpha1"
+ },
+ {
+ "path": "/readyz",
+ "ok": true,
+ "http_status": 200
+ }
+ ]
+ },
+ {
+ "id": "1789655019091375000-8bf0ded6d7f0edbb",
+ "state": "deployed",
+ "deployment_id": "dpl_BKmooAyqLZiPQNRAMwvzvvUUQiUs",
+ "provider_state": "READY",
+ "source_sha256": "4f10c0d7fadda67de6cacf809516d6c6c95ee0204a1bda7b6f08be135f8ec236",
+ "source_files": 7,
+ "checks": [
+ {
+ "path": "/healthz",
+ "ok": true,
+ "http_status": 200,
+ "version": "vercel-v1-ship-alpha2"
+ },
+ {
+ "path": "/readyz",
+ "ok": true,
+ "http_status": 200
+ }
+ ]
+ }
+ ],
+ "checks": {
+ "first_full_http_postgres_probe": true,
+ "updated_full_http_postgres_probe": true,
+ "both_retained_records_survived_update": true,
+ "original_railway_record_preserved": true,
+ "temporary_test_record_removed": true,
+ "runtime_log_records": 40,
+ "known_database_url_password_and_validation_token_found_in_log_sample": false,
+ "transport_retries": 0
+ },
+ "boundaries": {
+ "new_cloud_project_created": false,
+ "new_database_created": false,
+ "billing_changed": false,
+ "custom_domain_changed": false,
+ "railway_resource_changed": false
+ },
+ "remaining": [
+ "Independent developer/account reproduction remains pending.",
+ "Windows ACL and file locking have not been implemented or validated.",
+ "Secret values are retained by the provider; generic database identity remains explicitly unverified.",
+ "No claim of a full-month zero bill, all-language Vercel support, or confirmed scale-to-zero behavior."
+ ]
+}
diff --git a/validation/results/vercel-adapter-report.json b/validation/results/vercel-adapter-report.json
new file mode 100644
index 0000000..2790b6d
--- /dev/null
+++ b/validation/results/vercel-adapter-report.json
@@ -0,0 +1,57 @@
+{
+ "recorded_at": "2026-09-17T10:38:26.242908+00:00",
+ "status": "local_implementation_tested_cloud_secret_write_unconfirmed",
+ "scope": "Vercel adapter remains on the local development branch; not a validated release",
+ "keychain": {
+ "native_cross_process_synthetic_test_passed": true,
+ "rebuilt_binary_readback_passed": true,
+ "synthetic_items_cleaned": true,
+ "database_url_saved_locally": true,
+ "ordinary_state_contains_only_references": true
+ },
+ "cloud": {
+ "existing_project_registration_passed": true,
+ "verified_plan": "hobby",
+ "database_secret_apply_attempts": 1,
+ "database_secret_apply_confirmed": false,
+ "validation_token_apply_attempts": 0,
+ "new_deployment_attempts": 0,
+ "diagnosis": {
+ "local_sync_state": "unknown",
+ "keychain_reference_present": true,
+ "same_remote_id": true,
+ "remote_version_before": 1789631361046,
+ "remote_version_now": 1789631361046,
+ "remote_version_changed": false,
+ "operation_marker_matches": false,
+ "still_secret": true,
+ "value_visible": false,
+ "/healthz": {
+ "http_tls": "200 0",
+ "status": "ok",
+ "version": "vercel-v1-source2"
+ },
+ "/readyz": {
+ "http_tls": "200 0",
+ "status": "ready",
+ "version": null
+ }
+ }
+ },
+ "next_step": "Discuss an isolated synthetic-variable write probe before any further cloud mutation. Keep the original DATABASE_URL write unresolved; do not retry it automatically.",
+ "candidate_changes_not_retried": [
+ "Align Secret PATCH with official Vercel CLI 59.20.0 v10 endpoint and omit the unchanged key field.",
+ "Capture only structured provider error codes, without response messages or credentials."
+ ],
+ "limitations": [
+ "The original CLI failure detail was not retained, so the root cause is not established.",
+ "Unchanged metadata means no confirmed write effect; it is not proof that replay is safe.",
+ "Vercel publication, logs, installation packaging and independent-user reproduction remain unaccepted."
+ ],
+ "local_storage_followup": {
+ "status": "replaced_with_private_local_files",
+ "report": "local-secret-files-report.json",
+ "pending_cloud_write_preserved": true,
+ "additional_cloud_requests": 0
+ }
+}
diff --git a/validation/results/vercel-container-report.json b/validation/results/vercel-container-report.json
new file mode 100644
index 0000000..58d9661
--- /dev/null
+++ b/validation/results/vercel-container-report.json
@@ -0,0 +1,117 @@
+{
+ "recorded_at": "2026-09-17T08:14:57.986859+00:00",
+ "status": "http_container_and_postgres_poc_passed_manual_browser_confirmed",
+ "scope": "Standalone official Vercel CLI validation; not an UpOK provider adapter",
+ "public_url": "https://upok-vercel-20260917-go.vercel.app",
+ "tools": {
+ "vercel_cli": "59.20.0",
+ "local_node": "24.19.0",
+ "cloud_build_cli": "59.16.0"
+ },
+ "account_checks": {
+ "vercel_plan": "hobby",
+ "personal_owner_confirmed": true,
+ "neon_plan": "free",
+ "fluid_enabled": true,
+ "vcr_free_storage_quota_verified_gb": 10,
+ "paid_upgrade_performed": false
+ },
+ "billing_observation": {
+ "usage_cost_api": "unavailable for this Hobby account; not treated as zero",
+ "dashboard_quota_checked": true,
+ "dashboard_image_usage_lagged_actual_registry_inventory": true,
+ "full_month_free_cost_verified": false
+ },
+ "initial_failure": {
+ "deployment_id": "dpl_HQnBFCcLdKgXWwKjzgcgderQk6uE",
+ "provider_state": "READY",
+ "http_status": 404,
+ "builds": [],
+ "cause": "Explicit Other framework setting did not use the container preset",
+ "fix": "Sample vercel.json now explicitly sets framework to container"
+ },
+ "deployments": {
+ "v1": {
+ "id": "dpl_3zKZfDZqP4X5Tfeafa34QrzjTwvY",
+ "version": "vercel-v1",
+ "image_digest": "sha256:65a862c46db26e62a7df5a6a4095060c2e93e8a3e369d316ae1ddad855a3da14",
+ "go_build_observed": true,
+ "container_build_observed": true
+ },
+ "source_update": {
+ "id": "dpl_Bk73LhdcwpLfJmfN7mxuo7wR4zSz",
+ "version": "vercel-v1-source2",
+ "image_digest": "sha256:e115e6c93f4c601ef539a9ed2a530c95ef55dc63ddb6ed4a7ef13f66e1cda3dd",
+ "go_build_observed": true,
+ "container_build_observed": true
+ }
+ },
+ "v1_probe": {
+ "full_probe_passed": true,
+ "original_railway_record_preserved": true,
+ "new_record_retained_for_update": true,
+ "transport_retries": 0,
+ "duration_seconds": 15.292
+ },
+ "v2_probe": {
+ "full_probe_passed": true,
+ "source_version_visible": "vercel-v1-source2",
+ "vercel_record_preserved": true,
+ "original_railway_record_preserved": true,
+ "temporary_probe_record_removed": true,
+ "transport_retries": 0,
+ "duration_seconds": 18.977
+ },
+ "idle_probe": {
+ "idle_seconds_before_request": 360.003,
+ "request_at": "2026-09-17T08:10:38.097871+00:00",
+ "curl_exit": 0,
+ "retries": 0,
+ "runtime_scale_to_zero_independently_observed": false,
+ "http_code": "200",
+ "ssl_verify_result": "0",
+ "time_total": "1.780023",
+ "time_starttransfer": "1.779887",
+ "body": {
+ "status": "ready"
+ },
+ "application_version_verified": true,
+ "both_retained_records_preserved": true,
+ "vercel_temporary_record_removed": true,
+ "follow_up_transport_retries": 0
+ },
+ "registry": {
+ "image_count": 2,
+ "manifest_sizes_bytes": [
+ 30932738,
+ 30934542
+ ],
+ "note": "Registry-reported image sizes are not a final bill or a deduplicated billable storage measurement"
+ },
+ "runtime_logs": {
+ "records_sampled": 17,
+ "known_credentials_found": false
+ },
+ "boundaries": {
+ "original_fixture_hashes_unchanged": 20,
+ "railway_resources_changed": false,
+ "existing_custom_domain_changed": false,
+ "new_database_created": false,
+ "temporary_test_record_removed": true,
+ "billing_configuration_changed": false
+ },
+ "browser_verification": {
+ "chrome_public_navigation": "blocked",
+ "error": "net::ERR_BLOCKED_BY_CLIENT",
+ "browser_or_proxy_settings_changed": false,
+ "manual_chrome_public_navigation": "passed according to user report; status ok and version JSON visible",
+ "automated_path_revalidated": false
+ },
+ "remaining": [
+ "Controlled Chrome previously failed with inspector blocking; user-reported manual Chrome access succeeded. Automated-browser cause remains unresolved.",
+ "No controlled loss-of-submit-response, quota exhaustion, or full-month bill verification on Vercel.",
+ "No Rust/Python/Node application deployment on Vercel; this run validates the Go container only.",
+ "No provider-reported scale-to-zero observation; the idle probe measures first access after six minutes without test requests.",
+ "UpOK publish still uses Railway; the Vercel adapter and independent-user reproduction remain future work."
+ ]
+}
diff --git a/validation/results/vercel-secret-update-diagnosis.json b/validation/results/vercel-secret-update-diagnosis.json
new file mode 100644
index 0000000..36a68f4
--- /dev/null
+++ b/validation/results/vercel-secret-update-diagnosis.json
@@ -0,0 +1,48 @@
+{
+ "recorded_at": "2026-09-17T14:05:12.346165+00:00",
+ "status": "secret_update_contract_reproduced_and_fix_validated_on_synthetic_variable",
+ "cli_version": "59.20.0",
+ "node_version": "24.19.0",
+ "checks": [
+ {
+ "label": "original_v9_with_key",
+ "method": "PATCH",
+ "exit_code": 1,
+ "stderr": "Error: You cannot change the key of a Sensitive Environment Variable. (400)\n",
+ "marker_observed": false,
+ "still_secret": true
+ },
+ {
+ "label": "v10_with_key",
+ "method": "PATCH",
+ "exit_code": 1,
+ "stderr": "Error: You cannot change the key of a Sensitive Environment Variable. (400)\n",
+ "marker_observed": false,
+ "still_secret": true
+ },
+ {
+ "label": "v10_without_key",
+ "method": "PATCH",
+ "exit_code": 0,
+ "marker_observed": true,
+ "still_secret": true
+ }
+ ],
+ "temporary_variable_created": true,
+ "temporary_variable_deleted": true,
+ "database_url_and_validation_token_metadata_unchanged": true,
+ "finding": "A Sensitive environment variable PATCH rejects the key field even when its value equals the existing key. Omitting the key succeeds. Both API v9 and v10 reject the key field.",
+ "source_deploy_dry_run": {
+ "framework": "container",
+ "source_file_count": 6,
+ "upload_or_deployment_created": false
+ },
+ "original_attempt": {
+ "error_receipt_retained": false,
+ "diagnosis_basis": "Same request contract reproduced with a synthetic variable; original business Secret identity and version remain unchanged.",
+ "resolution": "user_approved_diagnosed_not_applied",
+ "original_secret_retried": false,
+ "record_and_original_fields_preserved": true
+ },
+ "scope": "Synthetic create/update/delete and read-only checks only; no business Secret update or application deployment."
+}
diff --git a/validation/vercel-tools/README.md b/validation/vercel-tools/README.md
new file mode 100644
index 0000000..4fa83e7
--- /dev/null
+++ b/validation/vercel-tools/README.md
@@ -0,0 +1,36 @@
+# Vercel 容器验证工具
+
+固定官方 Vercel CLI `59.20.0`,仅用于隔离样例验证,尚未接入 Ship 的正式发布命令。本次使用 macOS arm64 / Node.js `24.19.0`。Node.js 26 下登录曾返回 `fetch failed`,使用现有 Node.js 24 后授权成功;尚未证明失败根因仅为 Node 版本。
+
+## 准备与登录
+
+使用 Node.js 24,在仓库根目录运行:
+
+```sh
+npm ci --prefix validation/vercel-tools --no-audit --no-fund
+export SHIP_VERCEL_AUTH_DIR="$HOME/.config/ship-validation/vercel"
+mkdir -p "$SHIP_VERCEL_AUTH_DIR"
+chmod 700 "$SHIP_VERCEL_AUTH_DIR"
+env -u VERCEL_TOKEN -u VERCEL_ORG_ID -u VERCEL_PROJECT_ID \
+ VERCEL_TELEMETRY_DISABLED=1 NO_UPDATE_NOTIFIER=1 \
+ ./validation/vercel-tools/node_modules/.bin/vercel login \
+ --global-config "$SHIP_VERCEL_AUTH_DIR"
+```
+
+通过官方浏览器流程完成个人账号授权。凭证留在上述私有目录,后续命令显式提供 `--global-config` 和用户选定的 `--scope`。先读取用户、工作区及 Hobby 套餐,再检查网页 Usage 中的计算和镜像存储额度。Hobby 上 `vercel usage` 的计费数据可能不可用,这不能解释成用量为零。
+
+## 部署前检查
+
+测试目录放在仓库以外,复用 `validation/fixtures/go` 的 HTTP/PostgreSQL 约定,将 Dockerfile 命名为 `Dockerfile.vercel`。已有项目的 Other 框架设置可能阻止容器预设识别,可在样例 `vercel.json` 中显式声明:
+
+```json
+{"framework": "container"}
+```
+
+使用 `vercel deploy --dry --json` 核对框架为 Container、文件列表只有预期源码,再提交到明确的隔离项目。数据库连接串与验证令牌通过 `vercel env add --sensitive` 的标准输入写入运行时 Secret,避免放入源码、命令参数或日志。设置 `PORT=8080`,保留数据库 TLS 校验。
+
+每次提交先记录唯一操作标记;响应未知时查找原部署。验收同时要求容器构建证据、真实健康/数据库接口和数据保留,不能把平台 Ready 当成应用已经运行。
+
+本工具安装、登录和预检不代表容器路径已经验收通过。实际账号验证结果单独记录;付费或用途条件不满足时停止。
+
+来源:[CLI 登录](https://vercel.com/docs/cli/login)、[全局参数](https://vercel.com/docs/cli/global-options)、[容器部署](https://vercel.com/docs/functions/container-images)、[前期研究](../../docs/research/2026-09-17-vercel-hobby-evaluation.md)。
diff --git a/validation/vercel-tools/package-lock.json b/validation/vercel-tools/package-lock.json
new file mode 100644
index 0000000..5d38ef7
--- /dev/null
+++ b/validation/vercel-tools/package-lock.json
@@ -0,0 +1,4992 @@
+{
+ "name": "ship-vercel-validation-tools",
+ "version": "0.1.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "ship-vercel-validation-tools",
+ "version": "0.1.0",
+ "dependencies": {
+ "vercel": "59.20.0"
+ }
+ },
+ "node_modules/@bytecodealliance/preview2-shim": {
+ "version": "0.17.6",
+ "resolved": "https://registry.npmmirror.com/@bytecodealliance/preview2-shim/-/preview2-shim-0.17.6.tgz",
+ "integrity": "sha512-n3cM88gTen5980UOBAD6xDcNNL3ocTK8keab21bpx1ONdA+ARj7uD1qoFxOWCyKlkpSi195FH+GeAut7Oc6zZw==",
+ "license": "(Apache-2.0 WITH LLVM-exception)"
+ },
+ "node_modules/@edge-runtime/format": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/@edge-runtime/format/-/format-2.2.1.tgz",
+ "integrity": "sha512-JQTRVuiusQLNNLe2W9tnzBlV/GvSVcozLl4XZHk5swnRZ/v6jp8TqR8P7sqmJsQqblDZ3EztcWmLDbhRje/+8g==",
+ "license": "MPL-2.0",
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/@edge-runtime/node-utils": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/@edge-runtime/node-utils/-/node-utils-2.3.0.tgz",
+ "integrity": "sha512-uUtx8BFoO1hNxtHjp3eqVPC/mWImGb2exOfGjMLUoipuWgjej+f4o/VP4bUI8U40gu7Teogd5VTeZUkGvJSPOQ==",
+ "license": "MPL-2.0",
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/@edge-runtime/ponyfill": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmmirror.com/@edge-runtime/ponyfill/-/ponyfill-2.4.2.tgz",
+ "integrity": "sha512-oN17GjFr69chu6sDLvXxdhg0Qe8EZviGSuqzR9qOiKh4MhFYGdBBcqRNzdmYeAdeRzOW2mM9yil4RftUQ7sUOA==",
+ "license": "MPL-2.0",
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/@edge-runtime/primitives": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/@edge-runtime/primitives/-/primitives-4.1.0.tgz",
+ "integrity": "sha512-Vw0lbJ2lvRUqc7/soqygUX216Xb8T3WBZ987oywz6aJqRxcwSVWwr9e+Nqo2m9bxobA9mdbWNNoRY6S9eko1EQ==",
+ "license": "MPL-2.0",
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/@edge-runtime/vm": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/@edge-runtime/vm/-/vm-3.2.0.tgz",
+ "integrity": "sha512-0dEVyRLM/lG4gp1R/Ik5bfPl/1wX00xFwd5KcNH602tzBa09oF7pbTKETEhR1GjZ75K6OJnYFu8II2dyMhONMw==",
+ "license": "MPL-2.0",
+ "dependencies": {
+ "@edge-runtime/primitives": "4.1.0"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/@emnapi/core": {
+ "version": "1.11.3",
+ "resolved": "https://registry.npmmirror.com/@emnapi/core/-/core-1.11.3.tgz",
+ "integrity": "sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg==",
+ "license": "MIT",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "@emnapi/wasi-threads": "1.2.3",
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@emnapi/runtime": {
+ "version": "1.11.3",
+ "resolved": "https://registry.npmmirror.com/@emnapi/runtime/-/runtime-1.11.3.tgz",
+ "integrity": "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==",
+ "license": "MIT",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@emnapi/wasi-threads": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmmirror.com/@emnapi/wasi-threads/-/wasi-threads-1.2.3.tgz",
+ "integrity": "sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g==",
+ "license": "MIT",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.27.0.tgz",
+ "integrity": "sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.27.0.tgz",
+ "integrity": "sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.27.0.tgz",
+ "integrity": "sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.27.0.tgz",
+ "integrity": "sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.27.0.tgz",
+ "integrity": "sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.27.0.tgz",
+ "integrity": "sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.0.tgz",
+ "integrity": "sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.27.0.tgz",
+ "integrity": "sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.27.0.tgz",
+ "integrity": "sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.27.0.tgz",
+ "integrity": "sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.27.0.tgz",
+ "integrity": "sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.27.0.tgz",
+ "integrity": "sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg==",
+ "cpu": [
+ "loong64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.27.0.tgz",
+ "integrity": "sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg==",
+ "cpu": [
+ "mips64el"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.27.0.tgz",
+ "integrity": "sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.27.0.tgz",
+ "integrity": "sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.27.0.tgz",
+ "integrity": "sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.27.0.tgz",
+ "integrity": "sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.0.tgz",
+ "integrity": "sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.27.0.tgz",
+ "integrity": "sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.0.tgz",
+ "integrity": "sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.27.0.tgz",
+ "integrity": "sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openharmony-arm64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.0.tgz",
+ "integrity": "sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.27.0.tgz",
+ "integrity": "sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.27.0.tgz",
+ "integrity": "sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.27.0.tgz",
+ "integrity": "sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.27.0.tgz",
+ "integrity": "sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@fastify/busboy": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/@fastify/busboy/-/busboy-2.1.1.tgz",
+ "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@isaacs/balanced-match": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz",
+ "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==",
+ "license": "MIT",
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
+ "node_modules/@isaacs/brace-expansion": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz",
+ "integrity": "sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@isaacs/balanced-match": "^4.0.1"
+ },
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
+ "node_modules/@isaacs/fs-minipass": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz",
+ "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==",
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^7.0.4"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@mapbox/node-pre-gyp": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmmirror.com/@mapbox/node-pre-gyp/-/node-pre-gyp-2.0.3.tgz",
+ "integrity": "sha512-uwPAhccfFJlsfCxMYTwOdVfOz3xqyj8xYL3zJj8f0pb30tLohnnFPhLuqp4/qoEz8sNxe4SESZedcBojRefIzg==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "consola": "^3.2.3",
+ "detect-libc": "^2.0.0",
+ "https-proxy-agent": "^7.0.5",
+ "node-fetch": "^2.6.7",
+ "nopt": "^8.0.0",
+ "semver": "^7.5.3",
+ "tar": "^7.4.0"
+ },
+ "bin": {
+ "node-pre-gyp": "bin/node-pre-gyp"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@napi-rs/keyring": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/@napi-rs/keyring/-/keyring-1.2.0.tgz",
+ "integrity": "sha512-d0d4Oyxm+v980PEq1ZH2PmS6cvpMIRc17eYpiU47KgW+lzxklMu6+HOEOPmxrpnF/XQZ0+Q78I2mgMhbIIo/dg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Brooooooklyn"
+ },
+ "optionalDependencies": {
+ "@napi-rs/keyring-darwin-arm64": "1.2.0",
+ "@napi-rs/keyring-darwin-x64": "1.2.0",
+ "@napi-rs/keyring-freebsd-x64": "1.2.0",
+ "@napi-rs/keyring-linux-arm-gnueabihf": "1.2.0",
+ "@napi-rs/keyring-linux-arm64-gnu": "1.2.0",
+ "@napi-rs/keyring-linux-arm64-musl": "1.2.0",
+ "@napi-rs/keyring-linux-riscv64-gnu": "1.2.0",
+ "@napi-rs/keyring-linux-x64-gnu": "1.2.0",
+ "@napi-rs/keyring-linux-x64-musl": "1.2.0",
+ "@napi-rs/keyring-win32-arm64-msvc": "1.2.0",
+ "@napi-rs/keyring-win32-ia32-msvc": "1.2.0",
+ "@napi-rs/keyring-win32-x64-msvc": "1.2.0"
+ }
+ },
+ "node_modules/@napi-rs/keyring-darwin-arm64": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/@napi-rs/keyring-darwin-arm64/-/keyring-darwin-arm64-1.2.0.tgz",
+ "integrity": "sha512-CA83rDeyONDADO25JLZsh3eHY8yTEtm/RS6ecPsY+1v+dSawzT9GywBMu2r6uOp1IEhQs/xAfxgybGAFr17lSA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/keyring-darwin-x64": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/@napi-rs/keyring-darwin-x64/-/keyring-darwin-x64-1.2.0.tgz",
+ "integrity": "sha512-dBHjtKRCj4ByfnfqIKIJLo3wueQNJhLRyuxtX/rR4K/XtcS7VLlRD01XXizjpre54vpmObj63w+ZpHG+mGM8uA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/keyring-freebsd-x64": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/@napi-rs/keyring-freebsd-x64/-/keyring-freebsd-x64-1.2.0.tgz",
+ "integrity": "sha512-DPZFr11pNJSnaoh0dzSUNF+T6ORhy3CkzUT3uGixbA71cAOPJ24iG8e8QrLOkuC/StWrAku3gBnth2XMWOcR3Q==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/keyring-linux-arm-gnueabihf": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/@napi-rs/keyring-linux-arm-gnueabihf/-/keyring-linux-arm-gnueabihf-1.2.0.tgz",
+ "integrity": "sha512-8xv6DyEMlvRdqJzp4F39RLUmmTQsLcGYYv/3eIfZNZN1O5257tHxTrFYqAsny659rJJK2EKeSa7PhrSibQqRWQ==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/keyring-linux-arm64-gnu": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/@napi-rs/keyring-linux-arm64-gnu/-/keyring-linux-arm64-gnu-1.2.0.tgz",
+ "integrity": "sha512-Pu2V6Py+PBt7inryEecirl+t+ti8bhZphjP+W68iVaXHUxLdWmkgL9KI1VkbRHbx5k8K5Tew9OP218YfmVguIA==",
+ "cpu": [
+ "arm64"
+ ],
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/keyring-linux-arm64-musl": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/@napi-rs/keyring-linux-arm64-musl/-/keyring-linux-arm64-musl-1.2.0.tgz",
+ "integrity": "sha512-8TDymrpC4P1a9iDEaegT7RnrkmrJN5eNZh3Im3UEV5PPYGtrb82CRxsuFohthCWQW81O483u1bu+25+XA4nKUw==",
+ "cpu": [
+ "arm64"
+ ],
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/keyring-linux-riscv64-gnu": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/@napi-rs/keyring-linux-riscv64-gnu/-/keyring-linux-riscv64-gnu-1.2.0.tgz",
+ "integrity": "sha512-awsB5XI1MYL7fwfjMDGmKOWvNgJEO7mM7iVEMS0fO39f0kVJnOSjlu7RHcXAF0LOx+0VfF3oxbWqJmZbvRCRHw==",
+ "cpu": [
+ "riscv64"
+ ],
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/keyring-linux-x64-gnu": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/@napi-rs/keyring-linux-x64-gnu/-/keyring-linux-x64-gnu-1.2.0.tgz",
+ "integrity": "sha512-8E+7z4tbxSJXxIBqA+vfB1CGajpCDRyTyqXkBig5NtASrv4YXcntSo96Iah2QDR5zD3dSTsmbqJudcj9rKKuHQ==",
+ "cpu": [
+ "x64"
+ ],
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/keyring-linux-x64-musl": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/@napi-rs/keyring-linux-x64-musl/-/keyring-linux-x64-musl-1.2.0.tgz",
+ "integrity": "sha512-8RZ8yVEnmWr/3BxKgBSzmgntI7lNEsY7xouNfOsQkuVAiCNmxzJwETspzK3PQ2FHtDxgz5vHQDEBVGMyM4hUHA==",
+ "cpu": [
+ "x64"
+ ],
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/keyring-win32-arm64-msvc": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/@napi-rs/keyring-win32-arm64-msvc/-/keyring-win32-arm64-msvc-1.2.0.tgz",
+ "integrity": "sha512-AoqaDZpQ6KPE19VBLpxyORcp+yWmHI9Xs9Oo0PJ4mfHma4nFSLVdhAubJCxdlNptHe5va7ghGCHj3L9Akiv4cQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/keyring-win32-ia32-msvc": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/@napi-rs/keyring-win32-ia32-msvc/-/keyring-win32-ia32-msvc-1.2.0.tgz",
+ "integrity": "sha512-EYL+EEI6bCsYi3LfwcQdnX3P/R76ENKNn+3PmpGheBsUFLuh0gQuP7aMVHM4rTw6UVe+L3vCLZSptq/oeacz0A==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/keyring-win32-x64-msvc": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/@napi-rs/keyring-win32-x64-msvc/-/keyring-win32-x64-msvc-1.2.0.tgz",
+ "integrity": "sha512-xFlx/TsmqmCwNU9v+AVnEJgoEAlBYgzFF5Ihz1rMpPAt4qQWWkMd4sCyM1gMJ1A/GnRqRegDiQpwaxGUHFtFbA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/wasm-runtime": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmmirror.com/@napi-rs/wasm-runtime/-/wasm-runtime-1.2.4.tgz",
+ "integrity": "sha512-AJxoUD2/15ESHbvpcyjU274nsAPLuOtPHCk0vKJM5pj//Fg/B1FXNWjPnXTT9PymCYYiHo4zPj0ZomXBKhoy7g==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@tybys/wasm-util": "^0.10.3"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.13.0 || >=23.5.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Brooooooklyn"
+ },
+ "peerDependencies": {
+ "@emnapi/core": "^1.7.1 || ^2.0.0-alpha.4",
+ "@emnapi/runtime": "^1.7.1 || ^2.0.0-alpha.4"
+ }
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@oxc-parser/binding-android-arm-eabi": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-android-arm-eabi/-/binding-android-arm-eabi-0.121.0.tgz",
+ "integrity": "sha512-n07FQcySwOlzap424/PLMtOkbS7xOu8nsJduKL8P3COGHKgKoDYXwoAHCbChfgFpHnviehrLWIPX0lKGtbEk/A==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-parser/binding-android-arm64": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-android-arm64/-/binding-android-arm64-0.121.0.tgz",
+ "integrity": "sha512-/Dd1xIXboYAicw+twT2utxPD7bL8qh7d3ej0qvaYIMj3/EgIrGR+tSnjCUkiCT6g6uTC0neSS4JY8LxhdSU/sA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-parser/binding-darwin-arm64": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-darwin-arm64/-/binding-darwin-arm64-0.121.0.tgz",
+ "integrity": "sha512-A0jNEvv7QMtCO1yk205t3DWU9sWUjQ2KNF0hSVO5W9R9r/R1BIvzG01UQAfmtC0dQm7sCrs5puixurKSfr2bRQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-parser/binding-darwin-x64": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-darwin-x64/-/binding-darwin-x64-0.121.0.tgz",
+ "integrity": "sha512-SsHzipdxTKUs3I9EOAPmnIimEeJOemqRlRDOp9LIj+96wtxZejF51gNibmoGq8KoqbT1ssAI5po/E3J+vEtXGA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-parser/binding-freebsd-x64": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-freebsd-x64/-/binding-freebsd-x64-0.121.0.tgz",
+ "integrity": "sha512-v1APOTkCp+RWOIDAHRoaeW/UoaHF15a60E8eUL6kUQXh+i4K7PBwq2Wi7jm8p0ymID5/m/oC1w3W31Z/+r7HQw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-parser/binding-linux-arm-gnueabihf": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.121.0.tgz",
+ "integrity": "sha512-PmqPQuqHZyFVWA4ycr0eu4VnTMmq9laOHZd+8R359w6kzuNZPvmmunmNJ8ybkm769A0nCoVp3TJ6dUz7B3FYIQ==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-parser/binding-linux-arm-musleabihf": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.121.0.tgz",
+ "integrity": "sha512-vF24htj+MOH+Q7y9A8NuC6pUZu8t/C2Fr/kDOi2OcNf28oogr2xadBPXAbml802E8wRAVfbta6YLDQTearz+jw==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-parser/binding-linux-arm64-gnu": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.121.0.tgz",
+ "integrity": "sha512-wjH8cIG2Lu/3d64iZpbYr73hREMgKAfu7fqpXjgM2S16y2zhTfDIp8EQjxO8vlDtKP5Rc7waZW72lh8nZtWrpA==",
+ "cpu": [
+ "arm64"
+ ],
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-parser/binding-linux-arm64-musl": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.121.0.tgz",
+ "integrity": "sha512-qT663J/W8yQFw3dtscbEi9LKJevr20V7uWs2MPGTnvNZ3rm8anhhE16gXGpxDOHeg9raySaSHKhd4IGa3YZvuw==",
+ "cpu": [
+ "arm64"
+ ],
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-parser/binding-linux-ppc64-gnu": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.121.0.tgz",
+ "integrity": "sha512-mYNe4NhVvDBbPkAP8JaVS8lC1dsoJZWH5WCjpw5E+sjhk1R08wt3NnXYUzum7tIiWPfgQxbCMcoxgeemFASbRw==",
+ "cpu": [
+ "ppc64"
+ ],
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-parser/binding-linux-riscv64-gnu": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.121.0.tgz",
+ "integrity": "sha512-+QiFoGxhAbaI/amqX567784cDyyuZIpinBrJNxUzb+/L2aBRX67mN6Jv40pqduHf15yYByI+K5gUEygCuv0z9w==",
+ "cpu": [
+ "riscv64"
+ ],
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-parser/binding-linux-riscv64-musl": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.121.0.tgz",
+ "integrity": "sha512-9ykEgyTa5JD/Uhv2sttbKnCfl2PieUfOjyxJC/oDL2UO0qtXOtjPLl7H8Kaj5G7p3hIvFgu3YWvAxvE0sqY+hQ==",
+ "cpu": [
+ "riscv64"
+ ],
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-parser/binding-linux-s390x-gnu": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.121.0.tgz",
+ "integrity": "sha512-DB1EW5VHZdc1lIRjOI3bW/wV6R6y0xlfvdVrqj6kKi7Ayu2U3UqUBdq9KviVkcUGd5Oq+dROqvUEEFRXGAM7EQ==",
+ "cpu": [
+ "s390x"
+ ],
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-parser/binding-linux-x64-gnu": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.121.0.tgz",
+ "integrity": "sha512-s4lfobX9p4kPTclvMiH3gcQUd88VlnkMTF6n2MTMDAyX5FPNRhhRSFZK05Ykhf8Zy5NibV4PbGR6DnK7FGNN6A==",
+ "cpu": [
+ "x64"
+ ],
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-parser/binding-linux-x64-musl": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-linux-x64-musl/-/binding-linux-x64-musl-0.121.0.tgz",
+ "integrity": "sha512-P9KlyTpuBuMi3NRGpJO8MicuGZfOoqZVRP1WjOecwx8yk4L/+mrCRNc5egSi0byhuReblBF2oVoDSMgV9Bj4Hw==",
+ "cpu": [
+ "x64"
+ ],
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-parser/binding-openharmony-arm64": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-openharmony-arm64/-/binding-openharmony-arm64-0.121.0.tgz",
+ "integrity": "sha512-R+4jrWOfF2OAPPhj3Eb3U5CaKNAH9/btMveMULIrcNW/hjfysFQlF8wE0GaVBr81dWz8JLgQlsxwctoL78JwXw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-parser/binding-wasm32-wasi": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-wasm32-wasi/-/binding-wasm32-wasi-0.121.0.tgz",
+ "integrity": "sha512-5TFISkPTymKvsmIlKasPVTPuWxzCcrT8pM+p77+mtQbIZDd1UC8zww4CJcRI46kolmgrEX6QpKO8AvWMVZ+ifw==",
+ "cpu": [
+ "wasm32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@napi-rs/wasm-runtime": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@oxc-parser/binding-win32-arm64-msvc": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.121.0.tgz",
+ "integrity": "sha512-V0pxh4mql4XTt3aiEtRNUeBAUFOw5jzZNxPABLaOKAWrVzSr9+XUaB095lY7jqMf5t8vkfh8NManGB28zanYKw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-parser/binding-win32-ia32-msvc": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.121.0.tgz",
+ "integrity": "sha512-4Ob1qvYMPnlF2N9rdmKdkQFdrq16QVcQwBsO8yiPZXof0fHKFF+LmQV501XFbi7lHyrKm8rlJRfQ/M8bZZPVLw==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-parser/binding-win32-x64-msvc": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-parser/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.121.0.tgz",
+ "integrity": "sha512-BOp1KCzdboB1tPqoCPXgntgFs0jjeSyOXHzgxVFR7B/qfr3F8r4YDacHkTOUNXtDgM8YwKnkf3rE5gwALYX7NA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-project/types": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-project/types/-/types-0.121.0.tgz",
+ "integrity": "sha512-CGtOARQb9tyv7ECgdAlFxi0Fv7lmzvmlm2rpD/RdijOO9rfk/JvB1CjT8EnoD+tjna/IYgKKw3IV7objRb+aYw==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/Boshen"
+ }
+ },
+ "node_modules/@oxc-transform/binding-android-arm-eabi": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-android-arm-eabi/-/binding-android-arm-eabi-0.111.0.tgz",
+ "integrity": "sha512-NdFLicvorfHYu0g2ftjVJaH7+Dz27AQUNJOq8t/ofRUoWmczOodgUCHx8C1M1htCN4ZmhS/FzfSy6yd/UngJGg==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-transform/binding-android-arm64": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-android-arm64/-/binding-android-arm64-0.111.0.tgz",
+ "integrity": "sha512-J2v9ajarD2FYlhHtjbgZUFsS2Kvi27pPxDWLGCy7i8tO60xBoozX9/ktSgbiE/QsxKaUhfv4zVKppKWUo71PmQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-transform/binding-darwin-arm64": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-darwin-arm64/-/binding-darwin-arm64-0.111.0.tgz",
+ "integrity": "sha512-2UYmExxpXzmiHTldhNlosWqG9Nc4US51K0GB9RLcGlTE23WO33vVo1NVAKwxPE+KYuhffwDnRYTovTMUjzwvZA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-transform/binding-darwin-x64": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-darwin-x64/-/binding-darwin-x64-0.111.0.tgz",
+ "integrity": "sha512-c4YRwfLV8Pj/ToiTCbndZaHxM2BD4W3bltr/fjXZcGypEK+U2RZFDL7tIZYT/tyneAC9hCORZKDaKhLLNuzPtA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-transform/binding-freebsd-x64": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-freebsd-x64/-/binding-freebsd-x64-0.111.0.tgz",
+ "integrity": "sha512-prvf32IcEuLnLZbNVomFosBu0CaZpyj3YsZ6epbOgJy8iJjfLsXBb+PrkO/NBKzjuJoJa2+u7jFKRE0KT7gSOw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-transform/binding-linux-arm-gnueabihf": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.111.0.tgz",
+ "integrity": "sha512-+se3579Wp7VOk8TnTZCpT+obTAyzOw2b/UuoM0+51LtbzCSfjKxd4A+o7zRl7GyPrPZvx57KdbMOC9rWB1xNrw==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-transform/binding-linux-arm-musleabihf": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.111.0.tgz",
+ "integrity": "sha512-8faC99pStqaSDPK/vBgaagAHUeL0LcIzfeSjSiDTtvPGc3AwZIeqC1tx3CP15a6tWXjdgS/IUw4IjfD5HweBlg==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-transform/binding-linux-arm64-gnu": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.111.0.tgz",
+ "integrity": "sha512-HtfQv8j796gzI5WR/RaP6IMwFpiL0vYeDrUA1hYhlPzTHKYan/B+NlhJkKOI1v24yAl/yEnFmb0pxIxLNqBqBA==",
+ "cpu": [
+ "arm64"
+ ],
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-transform/binding-linux-arm64-musl": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.111.0.tgz",
+ "integrity": "sha512-ARyfcMCIxVLDgLf6FQ8Oo1/TFySpnquV+vuSb4SFQZfYDqgMklzwv0NYXxWD0aB6enElyMDs6pQJBzusEKCkOg==",
+ "cpu": [
+ "arm64"
+ ],
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-transform/binding-linux-ppc64-gnu": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.111.0.tgz",
+ "integrity": "sha512-PKpVRrSvBNK3tv9vwxn7Fay+QWZmprPGlEqJcseBJllQc5mFMD4Q/w44chu5iR9ZLsDeSHzmNWrgMLo4J0sP2A==",
+ "cpu": [
+ "ppc64"
+ ],
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-transform/binding-linux-riscv64-gnu": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.111.0.tgz",
+ "integrity": "sha512-9bUml6rMgk+8GF5rvNMweFspkzSiCjqpV6HduwiUyexqfGKrmjq9IZOxxvnzkE2RGdQzP507NNDoVNYIoGQYuA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-transform/binding-linux-riscv64-musl": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.111.0.tgz",
+ "integrity": "sha512-tzGCohGxaeH6KRJjfYZd4mHCoGjCai6N+zZi1Oj+tSDMAAdyvs1dRzYb8PNUGnybCg3Te4M0jLPzWZaSmnKraQ==",
+ "cpu": [
+ "riscv64"
+ ],
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-transform/binding-linux-s390x-gnu": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.111.0.tgz",
+ "integrity": "sha512-sRG1KIfZ0ML9ToEygm5aM/5GJeBA05uHlgW3M0Rx/DNWMJhuahLmqWuB02aWSmijndLfEKXLLXIWhvWupRG8lg==",
+ "cpu": [
+ "s390x"
+ ],
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-transform/binding-linux-x64-gnu": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.111.0.tgz",
+ "integrity": "sha512-T0Kmvk+OdlUdABdXlDIf3MQReMzFfC75NEI9x8jxy5pKooACEFg0k0V8gyR3gq4DzbDCfucqFQDWNvSgIopAbQ==",
+ "cpu": [
+ "x64"
+ ],
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-transform/binding-linux-x64-musl": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-linux-x64-musl/-/binding-linux-x64-musl-0.111.0.tgz",
+ "integrity": "sha512-EgoutsP3YfqzN8a9vpc9+XLr0bmBl0dA3uOMiP77+exATCPxJBkJErGmQkqk6RtTp5XqX6q6mB45qWQyKk6+pA==",
+ "cpu": [
+ "x64"
+ ],
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-transform/binding-openharmony-arm64": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-openharmony-arm64/-/binding-openharmony-arm64-0.111.0.tgz",
+ "integrity": "sha512-d8J+ejc0j5WODbVwR/QxFaI65YMwvG0W53vcVCHwa6ja1QI5lpe7sislrefG2EFYgnY47voMRzlXab5d4gEcDw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-transform/binding-wasm32-wasi": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-wasm32-wasi/-/binding-wasm32-wasi-0.111.0.tgz",
+ "integrity": "sha512-HtyIZO8IwuZgXkyb56rysLz1OLbfLhEu8A3BeuyJXzUseAj96yuxgGt3cu3QYX9AXb9pfRfA3c/fvlhsDugyTQ==",
+ "cpu": [
+ "wasm32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@napi-rs/wasm-runtime": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@oxc-transform/binding-win32-arm64-msvc": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.111.0.tgz",
+ "integrity": "sha512-YeP80Riptc0MkVVBnzbmoFuHVLUq278+MbwNo9sTLALmzTIJxJqN029xRZbG+Bun7aLsoZhmRnm3J5JZ1NcP5w==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-transform/binding-win32-ia32-msvc": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.111.0.tgz",
+ "integrity": "sha512-A6ztCXpoSHt6PbvGAFqB0MLOcGG7ZJrrPXY1iB0zfOB1atLgI8oNePGxPl03XSbwpiTsFJ1oo8rj9DXcBzgT9g==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@oxc-transform/binding-win32-x64-msvc": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-transform/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.111.0.tgz",
+ "integrity": "sha512-QddKW4kBH0Wof6Y65eYCNHM4iOGmCTWLLcNYY1FGswhzmTYOUVXajNROR+iCXAOFnOF0ldtsR79SyqgyHH1Bgg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@renovatebot/pep440": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmmirror.com/@renovatebot/pep440/-/pep440-4.2.1.tgz",
+ "integrity": "sha512-2FK1hF93Fuf1laSdfiEmJvSJPVIDHEUTz68D3Fi9s0IZrrpaEcj6pTFBTbYvsgC5du4ogrtf5re7yMMvrKNgkw==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^20.9.0 || ^22.11.0 || ^24",
+ "pnpm": "^10.0.0"
+ }
+ },
+ "node_modules/@rolldown/binding-android-arm64": {
+ "version": "1.0.0-rc.1",
+ "resolved": "https://registry.npmmirror.com/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.1.tgz",
+ "integrity": "sha512-He6ZoCfv5D7dlRbrhNBkuMVIHd0GDnjJwbICE1OWpG7G3S2gmJ+eXkcNLJjzjNDpeI2aRy56ou39AJM9AD8YFA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-darwin-arm64": {
+ "version": "1.0.0-rc.1",
+ "resolved": "https://registry.npmmirror.com/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.1.tgz",
+ "integrity": "sha512-YzJdn08kSOXnj85ghHauH2iHpOJ6eSmstdRTLyaziDcUxe9SyQJgGyx/5jDIhDvtOcNvMm2Ju7m19+S/Rm1jFg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-darwin-x64": {
+ "version": "1.0.0-rc.1",
+ "resolved": "https://registry.npmmirror.com/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.1.tgz",
+ "integrity": "sha512-cIvAbqM+ZVV6lBSKSBtlNqH5iCiW933t1q8j0H66B3sjbe8AxIRetVqfGgcHcJtMzBIkIALlL9fcDrElWLJQcQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-freebsd-x64": {
+ "version": "1.0.0-rc.1",
+ "resolved": "https://registry.npmmirror.com/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.1.tgz",
+ "integrity": "sha512-rVt+B1B/qmKwCl1XD02wKfgh3vQPXRXdB/TicV2w6g7RVAM1+cZcpigwhLarqiVCxDObFZ7UgXCxPC7tpDoRog==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-linux-arm-gnueabihf": {
+ "version": "1.0.0-rc.1",
+ "resolved": "https://registry.npmmirror.com/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.1.tgz",
+ "integrity": "sha512-69YKwJJBOFprQa1GktPgbuBOfnn+EGxu8sBJ1TjPER+zhSpYeaU4N07uqmyBiksOLGXsMegymuecLobfz03h8Q==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-linux-arm64-gnu": {
+ "version": "1.0.0-rc.1",
+ "resolved": "https://registry.npmmirror.com/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.1.tgz",
+ "integrity": "sha512-9JDhHUf3WcLfnViFWm+TyorqUtnSAHaCzlSNmMOq824prVuuzDOK91K0Hl8DUcEb9M5x2O+d2/jmBMsetRIn3g==",
+ "cpu": [
+ "arm64"
+ ],
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-linux-arm64-musl": {
+ "version": "1.0.0-rc.1",
+ "resolved": "https://registry.npmmirror.com/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.1.tgz",
+ "integrity": "sha512-UvApLEGholmxw/HIwmUnLq3CwdydbhaHHllvWiCTNbyGom7wTwOtz5OAQbAKZYyiEOeIXZNPkM7nA4Dtng7CLw==",
+ "cpu": [
+ "arm64"
+ ],
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-linux-x64-gnu": {
+ "version": "1.0.0-rc.1",
+ "resolved": "https://registry.npmmirror.com/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.1.tgz",
+ "integrity": "sha512-uVctNgZHiGnJx5Fij7wHLhgw4uyZBVi6mykeWKOqE7bVy9Hcxn0fM/IuqdMwk6hXlaf9fFShDTFz2+YejP+x0A==",
+ "cpu": [
+ "x64"
+ ],
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-linux-x64-musl": {
+ "version": "1.0.0-rc.1",
+ "resolved": "https://registry.npmmirror.com/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.1.tgz",
+ "integrity": "sha512-T6Eg0xWwcxd/MzBcuv4Z37YVbUbJxy5cMNnbIt/Yr99wFwli30O4BPlY8hKeGyn6lWNtU0QioBS46lVzDN38bg==",
+ "cpu": [
+ "x64"
+ ],
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-openharmony-arm64": {
+ "version": "1.0.0-rc.1",
+ "resolved": "https://registry.npmmirror.com/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.1.tgz",
+ "integrity": "sha512-PuGZVS2xNJyLADeh2F04b+Cz4NwvpglbtWACgrDOa5YDTEHKwmiTDjoD5eZ9/ptXtcpeFrMqD2H4Zn33KAh1Eg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-wasm32-wasi": {
+ "version": "1.0.0-rc.1",
+ "resolved": "https://registry.npmmirror.com/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.1.tgz",
+ "integrity": "sha512-2mOxY562ihHlz9lEXuaGEIDCZ1vI+zyFdtsoa3M62xsEunDXQE+DVPO4S4x5MPK9tKulG/aFcA/IH5eVN257Cw==",
+ "cpu": [
+ "wasm32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@napi-rs/wasm-runtime": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@rolldown/binding-win32-arm64-msvc": {
+ "version": "1.0.0-rc.1",
+ "resolved": "https://registry.npmmirror.com/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.1.tgz",
+ "integrity": "sha512-oQVOP5cfAWZwRD0Q3nGn/cA9FW3KhMMuQ0NIndALAe6obqjLhqYVYDiGGRGrxvnjJsVbpLwR14gIUYnpIcHR1g==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-win32-x64-msvc": {
+ "version": "1.0.0-rc.1",
+ "resolved": "https://registry.npmmirror.com/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.1.tgz",
+ "integrity": "sha512-Ydsxxx++FNOuov3wCBPaYjZrEvKOOGq3k+BF4BPridhg2pENfitSRD2TEuQ8i33bp5VptuNdC9IzxRKU031z5A==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/pluginutils": {
+ "version": "1.0.0-rc.1",
+ "resolved": "https://registry.npmmirror.com/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.1.tgz",
+ "integrity": "sha512-UTBjtTxVOhodhzFVp/ayITaTETRHPUPYZPXQe0WU0wOgxghMojXxYjOiPOauKIYNWJAWS2fd7gJgGQK8GU8vDA==",
+ "license": "MIT"
+ },
+ "node_modules/@rollup/pluginutils": {
+ "version": "5.4.0",
+ "resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.4.0.tgz",
+ "integrity": "sha512-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "estree-walker": "^2.0.2",
+ "picomatch": "^4.0.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@sinclair/typebox": {
+ "version": "0.25.24",
+ "resolved": "https://registry.npmmirror.com/@sinclair/typebox/-/typebox-0.25.24.tgz",
+ "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==",
+ "license": "MIT"
+ },
+ "node_modules/@tootallnate/once": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/@tootallnate/once/-/once-2.0.0.tgz",
+ "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@ts-morph/common": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmmirror.com/@ts-morph/common/-/common-0.11.1.tgz",
+ "integrity": "sha512-7hWZS0NRpEsNV8vWJzg7FEz6V8MaLNeJOmwmghqUXTpzk16V1LLZhdo+4QvE/+zv4cVci0OviuJFnqhEfoV3+g==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-glob": "^3.2.7",
+ "minimatch": "^3.0.4",
+ "mkdirp": "^1.0.4",
+ "path-browserify": "^1.0.1"
+ }
+ },
+ "node_modules/@ts-morph/common/node_modules/minimatch": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/@tybys/wasm-util": {
+ "version": "0.10.4",
+ "resolved": "https://registry.npmmirror.com/@tybys/wasm-util/-/wasm-util-0.10.4.tgz",
+ "integrity": "sha512-W3c4gRigFS0T/Ma4qIYF3GDAc5AQdHb1yL5znJT1Zv1YaD9Kitx656wBjvr19qbiosmZT8lWDM5BEMynUqX65A==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.9.tgz",
+ "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==",
+ "license": "MIT"
+ },
+ "node_modules/@types/json-schema": {
+ "version": "7.0.15",
+ "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+ "license": "MIT"
+ },
+ "node_modules/@types/node": {
+ "version": "20.11.0",
+ "resolved": "https://registry.npmmirror.com/@types/node/-/node-20.11.0.tgz",
+ "integrity": "sha512-o9bjXmDNcF7GbM4CNQpmi+TutCgap/K3w1JyKgxAjqx41zp9qlIAVFi0IhCNsJcXolEqLWhbFbEeL0PvYm4pcQ==",
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "node_modules/@vercel/backends": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmmirror.com/@vercel/backends/-/backends-8.0.1.tgz",
+ "integrity": "sha512-kh0zJCCrNzejgvrBbg6wf68aZll756aeJqaREggTdQSlgIzfaSCu9oppXvKE9NLT/lBlGd+/wZQRjFFIrQmn7Q==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/nft": "1.10.0",
+ "@vercel/static-config": "3.4.3",
+ "execa": "3.2.0",
+ "fs-extra": "11.1.0",
+ "get-port": "5.1.1",
+ "oxc-transform": "0.111.0",
+ "path-to-regexp": "8.3.0",
+ "resolve.exports": "2.0.3",
+ "rolldown": "1.0.0-rc.1",
+ "srvx": "0.11.16",
+ "ts-morph": "12.0.0",
+ "tsx": "4.21.0",
+ "zod": "3.22.4"
+ },
+ "peerDependencies": {
+ "@vercel/build-utils": "14.10.1"
+ }
+ },
+ "node_modules/@vercel/backends/node_modules/zod": {
+ "version": "3.22.4",
+ "resolved": "https://registry.npmmirror.com/zod/-/zod-3.22.4.tgz",
+ "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/colinhacks"
+ }
+ },
+ "node_modules/@vercel/blob": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmmirror.com/@vercel/blob/-/blob-2.8.0.tgz",
+ "integrity": "sha512-Nu+HWKpkgovCh/ezlG7wCVwF7RErTzLzZMbGKFBdGBCbTKyK+s5VXPLl+0+TpNEQPH8AVaGzOpIsXUOtkqylCQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/oidc": "^3.6.1",
+ "async-retry": "^1.3.3",
+ "is-buffer": "^2.0.5",
+ "is-node-process": "^1.2.0",
+ "throttleit": "^2.1.0",
+ "undici": "^6.23.0"
+ },
+ "engines": {
+ "node": ">=20.0.0"
+ }
+ },
+ "node_modules/@vercel/blob/node_modules/undici": {
+ "version": "6.28.1",
+ "resolved": "https://registry.npmmirror.com/undici/-/undici-6.28.1.tgz",
+ "integrity": "sha512-zWpdTVD54H48CIybL0rWQ3ukpb9d23wM7eH5RtfdmeP70cWHNjtfo7P4vZX+5CoDcO53J4Pu5uXp7lNfjc6DRA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.17"
+ }
+ },
+ "node_modules/@vercel/build-utils": {
+ "version": "14.10.1",
+ "resolved": "https://registry.npmmirror.com/@vercel/build-utils/-/build-utils-14.10.1.tgz",
+ "integrity": "sha512-TjFFbw5K2uKL6/6pHPmp4ZaSJIS84AEKtU3dvNvtzbK4ATUx+PK4wRLZIyf3FqJ33NLzyER6DkHfZzHHj5k/yQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "cjs-module-lexer": "1.2.3",
+ "es-module-lexer": "1.5.0"
+ }
+ },
+ "node_modules/@vercel/cervel": {
+ "version": "0.1.65",
+ "resolved": "https://registry.npmmirror.com/@vercel/cervel/-/cervel-0.1.65.tgz",
+ "integrity": "sha512-EKdEzrEkil9B8xa+uoLSrDv4mscBrCBNV4tC5Z9nScrIce2+1/e/gnt1otQlJjeV1sG0K6m7Afp8SUWBWxwf3Q==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/backends": "8.0.1"
+ },
+ "bin": {
+ "cervel": "bin/cervel.mjs"
+ }
+ },
+ "node_modules/@vercel/cli-auth": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmmirror.com/@vercel/cli-auth/-/cli-auth-0.3.8.tgz",
+ "integrity": "sha512-jO62gH6BK99fUzWMpbD0IXg0r+MrwGn2nkv+wr7J7KBdw59S6gAUpqfXE/xGzk+Lyh58/aF4XERG9eR6RjiHTg==",
+ "dependencies": {
+ "@napi-rs/keyring": "1.2.0",
+ "@vercel/cli-config": "0.2.7",
+ "async-listen": "3.0.0",
+ "open": "8.4.0",
+ "zod": "4.1.11"
+ }
+ },
+ "node_modules/@vercel/cli-config": {
+ "version": "0.2.7",
+ "resolved": "https://registry.npmmirror.com/@vercel/cli-config/-/cli-config-0.2.7.tgz",
+ "integrity": "sha512-KeSN2HBp8puZrj7kVjSEneDi9yBqW4nAD9AnhGhdYjGNpHl7IkXZVb3HnNe0WWc5+20RlUtmAGWNPQ8qP5QBhQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "xdg-app-paths": "5",
+ "zod": "4.1.11"
+ }
+ },
+ "node_modules/@vercel/cli-exec": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/@vercel/cli-exec/-/cli-exec-1.0.1.tgz",
+ "integrity": "sha512-g9XerViJ/paZujufXYcu5XYI2vU2rtB4sgdpjUHde5RnOkdmpu0ngH46LCFGHoPXO/C+qDPSczIHIRN+8Q2YKQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "execa": "5.1.1"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@vercel/cli-exec/node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "license": "MIT",
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/@vercel/cli-exec/node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@vercel/cli-exec/node_modules/human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=10.17.0"
+ }
+ },
+ "node_modules/@vercel/cli-exec/node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "license": "ISC"
+ },
+ "node_modules/@vercel/container": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmmirror.com/@vercel/container/-/container-8.2.0.tgz",
+ "integrity": "sha512-bn6vOtvZLy7zp8xNI7fyUYbvGxBOeZzzyLfLujAS5OULSeowUZceM8oVif6wAYgVTNCfMs/LO6XYYF2Trb+tNg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "smol-toml": "1.5.2",
+ "tar": "7.5.11"
+ },
+ "peerDependencies": {
+ "@vercel/build-utils": "14.10.1"
+ }
+ },
+ "node_modules/@vercel/detect-agent": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmmirror.com/@vercel/detect-agent/-/detect-agent-1.2.5.tgz",
+ "integrity": "sha512-0krENrjuitlW8s6TJu0MlqCevyCU7K7JK63jZAf7xZ6n17tx+vUEwzHT3sTxawtwZxaW21hu+oFUpoOrm49FsQ==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@vercel/elysia": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmmirror.com/@vercel/elysia/-/elysia-8.0.1.tgz",
+ "integrity": "sha512-bZzHH8OmQfLTVaLFA9XDfn9ojAvxNUnE5LF1eojAFLNJzSKk+qrmtSxwXppvv6xiAZFO1jIt+kbiPM3gyZT9Nw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/node": "13.0.1",
+ "@vercel/static-config": "3.4.3"
+ },
+ "peerDependencies": {
+ "@vercel/build-utils": "14.10.1"
+ }
+ },
+ "node_modules/@vercel/error-utils": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/@vercel/error-utils/-/error-utils-2.2.1.tgz",
+ "integrity": "sha512-9DhP8jP7raLML4hGsBemxX5fXuQnu5xxMV+HjGygGbzEmVK/+KyJ3QP2Cw7PdF0uXdb9N0Qa4c3tRGH34ZX6vw==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/@vercel/express": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmmirror.com/@vercel/express/-/express-8.0.1.tgz",
+ "integrity": "sha512-pM+DvXc3nvhshcQtcKrKYWVXdRhzwV+RDl083nf5cgmGfX9DV3WqAICXLSeyUR015AZW1uFpILCD1OzjH1QYcw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/cervel": "0.1.65",
+ "@vercel/nft": "1.10.0",
+ "@vercel/node": "13.0.1",
+ "@vercel/static-config": "3.4.3",
+ "fs-extra": "11.1.0",
+ "path-to-regexp": "8.3.0",
+ "ts-morph": "12.0.0",
+ "zod": "3.22.4"
+ },
+ "peerDependencies": {
+ "@vercel/build-utils": "14.10.1"
+ }
+ },
+ "node_modules/@vercel/express/node_modules/zod": {
+ "version": "3.22.4",
+ "resolved": "https://registry.npmmirror.com/zod/-/zod-3.22.4.tgz",
+ "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/colinhacks"
+ }
+ },
+ "node_modules/@vercel/fastify": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmmirror.com/@vercel/fastify/-/fastify-8.0.1.tgz",
+ "integrity": "sha512-Tf81Wp2ZfSg/SF6niEaBdBjKdtyELeWNyXCB5mjNWNUvQFjmXLQqYtD6HKq8DSaAWci4Agets5UwxhO99iYBgQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/node": "13.0.1",
+ "@vercel/static-config": "3.4.3"
+ },
+ "peerDependencies": {
+ "@vercel/build-utils": "14.10.1"
+ }
+ },
+ "node_modules/@vercel/fun": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/@vercel/fun/-/fun-1.3.0.tgz",
+ "integrity": "sha512-8erw9uPe0dFg45THkNxmjtvMX143SkZebmjgSVbcM3XCkXu3RIiBaJMcMNG8aaS+rnTuw8+d4De9HVT0M/r3wg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@tootallnate/once": "2.0.0",
+ "async-listen": "1.2.0",
+ "debug": "4.3.4",
+ "generic-pool": "3.4.2",
+ "micro": "9.3.5-canary.3",
+ "ms": "2.1.1",
+ "node-fetch": "2.6.7",
+ "path-to-regexp": "8.2.0",
+ "promisepipe": "3.0.0",
+ "semver": "7.5.4",
+ "stat-mode": "0.3.0",
+ "stream-to-promise": "2.2.0",
+ "tar": "7.5.7",
+ "tinyexec": "0.3.2",
+ "tree-kill": "1.2.2",
+ "uid-promise": "1.0.0",
+ "xdg-app-paths": "5.1.0",
+ "yauzl-promise": "2.1.3"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@vercel/fun/node_modules/async-listen": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/async-listen/-/async-listen-1.2.0.tgz",
+ "integrity": "sha512-CcEtRh/oc9Jc4uWeUwdpG/+Mb2YUHKmdaTf0gUr7Wa+bfp4xx70HOb3RuSTJMvqKNB1TkdTfjLdrcz2X4rkkZA==",
+ "license": "MIT"
+ },
+ "node_modules/@vercel/fun/node_modules/path-to-regexp": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-8.2.0.tgz",
+ "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/@vercel/fun/node_modules/tar": {
+ "version": "7.5.7",
+ "resolved": "https://registry.npmmirror.com/tar/-/tar-7.5.7.tgz",
+ "integrity": "sha512-fov56fJiRuThVFXD6o6/Q354S7pnWMJIVlDBYijsTNx6jKSE4pvrDTs6lUnmGvNyfJwFQQwWy3owKz1ucIhveQ==",
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "@isaacs/fs-minipass": "^4.0.0",
+ "chownr": "^3.0.0",
+ "minipass": "^7.1.2",
+ "minizlib": "^3.1.0",
+ "yallist": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vercel/fun/node_modules/xdg-app-paths": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/xdg-app-paths/-/xdg-app-paths-5.1.0.tgz",
+ "integrity": "sha512-RAQ3WkPf4KTU1A8RtFx3gWywzVKe00tfOPFfl2NDGqbIFENQO4kqAJp7mhQjNj/33W5x5hiWWUdyfPq/5SU3QA==",
+ "license": "MIT",
+ "dependencies": {
+ "xdg-portable": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@vercel/gatsby-plugin-vercel-analytics": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmmirror.com/@vercel/gatsby-plugin-vercel-analytics/-/gatsby-plugin-vercel-analytics-1.0.12.tgz",
+ "integrity": "sha512-Ejlhwxr7EBYJxtwYnlh6Vm6A2dPsUSPxMdYrfv0koZkgAzVwo7cG4aDQiy7iASMaGzwuI/PAnwlY2sJBF5b4OA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "web-vitals": "0.2.4"
+ }
+ },
+ "node_modules/@vercel/gatsby-plugin-vercel-builder": {
+ "version": "2.2.57",
+ "resolved": "https://registry.npmmirror.com/@vercel/gatsby-plugin-vercel-builder/-/gatsby-plugin-vercel-builder-2.2.57.tgz",
+ "integrity": "sha512-cjiGBXzosNp3FvZmW62Fedr6dHj2GU2NueJ0OnVV+k0JdYX+1j2+fRbQLbX3HegqIPQjwqwgyZcaw18KbiBlZA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@sinclair/typebox": "0.25.24",
+ "@vercel/build-utils": "14.10.1",
+ "esbuild": "0.27.0",
+ "etag": "1.8.1",
+ "fs-extra": "11.1.0"
+ }
+ },
+ "node_modules/@vercel/go": {
+ "version": "11.0.1",
+ "resolved": "https://registry.npmmirror.com/@vercel/go/-/go-11.0.1.tgz",
+ "integrity": "sha512-F3RonmHzgnjLC/0gr2UsmcRczcFjv64b4/VNRYTBnc20ovZCC+d0PsHBXA0soT//AJ2Wa4OLi+aUUzGFv3E1Gg==",
+ "license": "Apache-2.0",
+ "peerDependencies": {
+ "@vercel/build-utils": "14.10.1"
+ }
+ },
+ "node_modules/@vercel/h3": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmmirror.com/@vercel/h3/-/h3-8.0.1.tgz",
+ "integrity": "sha512-29tCLPyjBerYVwQ+az3vXuJOzuFoRHc09dF1i/klg25rU6AgfadJIFXLjAQWnW3nSHc5+MVXAzCw8uaaiIvESg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/node": "13.0.1",
+ "@vercel/static-config": "3.4.3"
+ },
+ "peerDependencies": {
+ "@vercel/build-utils": "14.10.1"
+ }
+ },
+ "node_modules/@vercel/hono": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmmirror.com/@vercel/hono/-/hono-8.0.1.tgz",
+ "integrity": "sha512-Yl/sbRoKsIemZEkz0hpsDVnxGf8/bZGOGBjFUF3n3VUz7mXb2HxL4ImoVcnZrtK7dcaf+8knT/QI0984FwLm+g==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/nft": "1.10.0",
+ "@vercel/node": "13.0.1",
+ "@vercel/static-config": "3.4.3",
+ "fs-extra": "11.1.0",
+ "path-to-regexp": "8.3.0",
+ "ts-morph": "12.0.0",
+ "zod": "3.22.4"
+ },
+ "peerDependencies": {
+ "@vercel/build-utils": "14.10.1"
+ }
+ },
+ "node_modules/@vercel/hono/node_modules/zod": {
+ "version": "3.22.4",
+ "resolved": "https://registry.npmmirror.com/zod/-/zod-3.22.4.tgz",
+ "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/colinhacks"
+ }
+ },
+ "node_modules/@vercel/hydrogen": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmmirror.com/@vercel/hydrogen/-/hydrogen-9.0.1.tgz",
+ "integrity": "sha512-TY6Herz0R70MerS/Rx/dC284QL9m+tWYMObya6REUmHK+XMxDofaTIoOY+aXz0SLT1pAIW2LSbkxR3C/nmVO+g==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/static-config": "3.4.3",
+ "ts-morph": "12.0.0"
+ },
+ "peerDependencies": {
+ "@vercel/build-utils": "14.10.1"
+ }
+ },
+ "node_modules/@vercel/koa": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmmirror.com/@vercel/koa/-/koa-8.0.1.tgz",
+ "integrity": "sha512-vv+3fLbvCrtiQyqoOJ61+PDII8MWbbpIi2EwmAEiQ8eccGaPQB2SamQowk2GaV9te2Uu+kU9uIY8C9YPctYLnQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/node": "13.0.1",
+ "@vercel/static-config": "3.4.3"
+ },
+ "peerDependencies": {
+ "@vercel/build-utils": "14.10.1"
+ }
+ },
+ "node_modules/@vercel/nestjs": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmmirror.com/@vercel/nestjs/-/nestjs-8.0.1.tgz",
+ "integrity": "sha512-KfTbIMi0ANaSxJ2oN+7xw6GqV8z8BwFwTtm4n6UciKaM4E0xyl3hl3HqJIWpxrzSbM8Wgwh8tx/w8aUp7KiCrg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/node": "13.0.1",
+ "@vercel/static-config": "3.4.3"
+ },
+ "peerDependencies": {
+ "@vercel/build-utils": "14.10.1"
+ }
+ },
+ "node_modules/@vercel/next": {
+ "version": "12.0.2",
+ "resolved": "https://registry.npmmirror.com/@vercel/next/-/next-12.0.2.tgz",
+ "integrity": "sha512-o1i6P/EHxLZLe4QSlvK9/A69uW569Z+O00Yw76gd72T9wJwnL5N5EVYkpgRhb79grUImU24QdU8UWvdfNl799A==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/nft": "1.10.0"
+ },
+ "peerDependencies": {
+ "@vercel/build-utils": "14.10.1"
+ }
+ },
+ "node_modules/@vercel/nft": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmmirror.com/@vercel/nft/-/nft-1.10.0.tgz",
+ "integrity": "sha512-iLOW4fcsgkipfOh2Bw3wB38YDfxTlxr7+j4uFeui2OswkNT28jIitS/aMce7tS0mef1YPQ8zLIDYr3a0aahNrA==",
+ "license": "MIT",
+ "dependencies": {
+ "@mapbox/node-pre-gyp": "^2.0.0",
+ "@rollup/pluginutils": "^5.1.3",
+ "acorn": "^8.6.0",
+ "acorn-import-attributes": "^1.9.5",
+ "async-sema": "^3.1.1",
+ "bindings": "^1.4.0",
+ "estree-walker": "2.0.2",
+ "glob": "^13.0.0",
+ "graceful-fs": "^4.2.9",
+ "node-gyp-build": "^4.2.2",
+ "picomatch": "^4.0.2",
+ "resolve-from": "^5.0.0"
+ },
+ "bin": {
+ "nft": "out/cli.js"
+ },
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/@vercel/node": {
+ "version": "13.0.1",
+ "resolved": "https://registry.npmmirror.com/@vercel/node/-/node-13.0.1.tgz",
+ "integrity": "sha512-WpHviLdoReq5oGTQhbljiKZTxshARiSjqN+8dh8GB5icaXTjhneDoWJlQYUw0yd4PSfBeWNJzFMHt+bsSU6d/w==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@edge-runtime/node-utils": "2.3.0",
+ "@edge-runtime/primitives": "4.1.0",
+ "@edge-runtime/vm": "3.2.0",
+ "@types/node": "20.11.0",
+ "@vercel/error-utils": "2.2.1",
+ "@vercel/nft": "1.10.0",
+ "@vercel/static-config": "3.4.3",
+ "async-listen": "3.0.0",
+ "cjs-module-lexer": "1.2.3",
+ "edge-runtime": "2.5.9",
+ "es-module-lexer": "1.4.1",
+ "esbuild": "0.27.0",
+ "etag": "1.8.1",
+ "mime-types": "2.1.35",
+ "node-fetch": "2.6.9",
+ "path-to-regexp": "6.1.0",
+ "path-to-regexp-updated": "npm:path-to-regexp@6.3.0",
+ "ts-morph": "12.0.0",
+ "tsx": "4.21.0",
+ "typescript": "npm:typescript@5.9.3",
+ "undici": "5.28.4"
+ },
+ "peerDependencies": {
+ "@vercel/build-utils": "14.10.1"
+ }
+ },
+ "node_modules/@vercel/node/node_modules/es-module-lexer": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.4.1.tgz",
+ "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==",
+ "license": "MIT"
+ },
+ "node_modules/@vercel/node/node_modules/node-fetch": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.6.9.tgz",
+ "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==",
+ "license": "MIT",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vercel/node/node_modules/path-to-regexp": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-6.1.0.tgz",
+ "integrity": "sha512-h9DqehX3zZZDCEm+xbfU0ZmwCGFCAAraPJWMXJ4+v32NjZJilVg3k1TcKsRgIb8IQ/izZSaydDc1OhJCZvs2Dw==",
+ "license": "MIT"
+ },
+ "node_modules/@vercel/node/node_modules/undici": {
+ "version": "5.28.4",
+ "resolved": "https://registry.npmmirror.com/undici/-/undici-5.28.4.tgz",
+ "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==",
+ "license": "MIT",
+ "dependencies": {
+ "@fastify/busboy": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.0"
+ }
+ },
+ "node_modules/@vercel/oidc": {
+ "version": "3.8.8",
+ "resolved": "https://registry.npmmirror.com/@vercel/oidc/-/oidc-3.8.8.tgz",
+ "integrity": "sha512-aeq4/sgVh80zO6j2H+7FRfsG6NOXBrvzV1EEO8IdXPEJgwHIPakP+BFq3QmprsEQ18bIimds07kvaYhm2lehtg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/cli-config": "0.2.7",
+ "@vercel/cli-exec": "1.0.1",
+ "jose": "^5.9.6"
+ },
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/@vercel/prepare-flags-definitions": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmmirror.com/@vercel/prepare-flags-definitions/-/prepare-flags-definitions-0.3.0.tgz",
+ "integrity": "sha512-/0nuDFwYje0nqZnVKSd2VfJy2wOPQwbkas1qO1JQgtb0sLl+EeSCW4O9hrvq55pN50PNlAZ/APSeWHIAT9ZGHg==",
+ "license": "MIT"
+ },
+ "node_modules/@vercel/python": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmmirror.com/@vercel/python/-/python-14.1.0.tgz",
+ "integrity": "sha512-JzAJcam4ImefuP921A3UmBf8TLsjssHy8H7qi+8dlkklDkXaOWHNceUXx8spvdDeaFwuY2yiG66S2YG74PV0kQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/python-analysis": "0.14.0"
+ },
+ "peerDependencies": {
+ "@vercel/build-utils": "14.10.1"
+ }
+ },
+ "node_modules/@vercel/python-analysis": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmmirror.com/@vercel/python-analysis/-/python-analysis-0.14.0.tgz",
+ "integrity": "sha512-qyVxbaU14gAi/AsaR8syZLukUsOp69Jkm1xn80rZPy4k9+zRUTIfqs0AOk7L8wwBxDDB6LLjcBUAmafhbJQnUQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@bytecodealliance/preview2-shim": "0.17.6",
+ "@renovatebot/pep440": "4.2.1",
+ "fs-extra": "11.1.1",
+ "js-yaml": "4.1.1",
+ "minimatch": "10.1.1",
+ "smol-toml": "1.5.2",
+ "zod": "3.22.4"
+ }
+ },
+ "node_modules/@vercel/python-analysis/node_modules/fs-extra": {
+ "version": "11.1.1",
+ "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-11.1.1.tgz",
+ "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==",
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.14"
+ }
+ },
+ "node_modules/@vercel/python-analysis/node_modules/zod": {
+ "version": "3.22.4",
+ "resolved": "https://registry.npmmirror.com/zod/-/zod-3.22.4.tgz",
+ "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/colinhacks"
+ }
+ },
+ "node_modules/@vercel/redwood": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmmirror.com/@vercel/redwood/-/redwood-10.0.1.tgz",
+ "integrity": "sha512-QWoU1/clpD9o3ewwx0GJreQRokcOAXcAF71+CQLeKmc0fmCaeJKBtptCuuSuM6NW7Idcc8/CGcCaG59IV1Wpdw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/nft": "1.10.0",
+ "@vercel/static-config": "3.4.3",
+ "semver": "6.3.1",
+ "ts-morph": "12.0.0"
+ },
+ "peerDependencies": {
+ "@vercel/build-utils": "14.10.1"
+ }
+ },
+ "node_modules/@vercel/redwood/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@vercel/remix-builder": {
+ "version": "13.0.1",
+ "resolved": "https://registry.npmmirror.com/@vercel/remix-builder/-/remix-builder-13.0.1.tgz",
+ "integrity": "sha512-+kHAO9xF2xSMZ0Zx/+qFeY4r/ynaL14KpvJekYLbSzH6LZ4ItczGjA7KSW5LNgaEXkn7BVo926MY3xJnS8Fpzw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/error-utils": "2.2.1",
+ "@vercel/nft": "1.10.0",
+ "@vercel/static-config": "3.4.3",
+ "path-to-regexp": "6.1.0",
+ "path-to-regexp-updated": "npm:path-to-regexp@6.3.0",
+ "ts-morph": "12.0.0"
+ },
+ "peerDependencies": {
+ "@vercel/build-utils": "14.10.1"
+ }
+ },
+ "node_modules/@vercel/remix-builder/node_modules/path-to-regexp": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-6.1.0.tgz",
+ "integrity": "sha512-h9DqehX3zZZDCEm+xbfU0ZmwCGFCAAraPJWMXJ4+v32NjZJilVg3k1TcKsRgIb8IQ/izZSaydDc1OhJCZvs2Dw==",
+ "license": "MIT"
+ },
+ "node_modules/@vercel/ruby": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmmirror.com/@vercel/ruby/-/ruby-10.0.1.tgz",
+ "integrity": "sha512-kObC4bDyXCIpZ6PUnzJ0isMwF6yfvzZwXYH1ZqRp2V5l4YPFCusjdOMMJvsd7jQzAeVojLp9/TKfvn2YsOLp9g==",
+ "license": "Apache-2.0",
+ "peerDependencies": {
+ "@vercel/build-utils": "14.10.1"
+ }
+ },
+ "node_modules/@vercel/rust": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmmirror.com/@vercel/rust/-/rust-9.0.1.tgz",
+ "integrity": "sha512-Jwylr1K66LQJuQ2JakMB6D40ldod0iMy1pQ7lR26crbpC5eOESIj1Md0SJ4Qvu4O3Y7L0t5F7InBveX7vQ9EKw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "execa": "5",
+ "get-port": "5.1.1",
+ "smol-toml": "1.5.2"
+ },
+ "peerDependencies": {
+ "@vercel/build-utils": "14.10.1"
+ }
+ },
+ "node_modules/@vercel/rust/node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "license": "MIT",
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/@vercel/rust/node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@vercel/rust/node_modules/human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=10.17.0"
+ }
+ },
+ "node_modules/@vercel/rust/node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "license": "ISC"
+ },
+ "node_modules/@vercel/sandbox": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/@vercel/sandbox/-/sandbox-3.1.0.tgz",
+ "integrity": "sha512-z124E4rsmNpwGtTnLImiYzEXk972bWniQyhlvkEt35UtwKTdfBAFXcNG2OvqYqwzAsdQaP3B7teQ2pqA9B5Viw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/oidc": "3.2.0",
+ "@workflow/serde": "4.1.0-beta.2",
+ "async-retry": "1.3.3",
+ "jose": "6.2.3",
+ "jsonlines": "0.1.1",
+ "lru-cache": "^10.4.3",
+ "ms": "2.1.3",
+ "picocolors": "^1.1.1",
+ "tar-stream": "3.1.7",
+ "undici": "^7.27.1",
+ "xdg-app-paths": "5.1.0",
+ "zod": "^4.1.1"
+ }
+ },
+ "node_modules/@vercel/sandbox/node_modules/@vercel/oidc": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/@vercel/oidc/-/oidc-3.2.0.tgz",
+ "integrity": "sha512-UycprH3T6n3jH0k44NHMa7pnFHGu/N05MjojYr+Mc6I7obkoLIJujSWwin1pCvdy/eOxrI/l3uDLQsmcrOb4ug==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/@vercel/sandbox/node_modules/jose": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmmirror.com/jose/-/jose-6.2.3.tgz",
+ "integrity": "sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/panva"
+ }
+ },
+ "node_modules/@vercel/sandbox/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "license": "ISC"
+ },
+ "node_modules/@vercel/sandbox/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/@vercel/sandbox/node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "license": "ISC"
+ },
+ "node_modules/@vercel/sandbox/node_modules/undici": {
+ "version": "7.29.1",
+ "resolved": "https://registry.npmmirror.com/undici/-/undici-7.29.1.tgz",
+ "integrity": "sha512-RYONW2MeafgYlkVOKYKkA/Ag7BmXqgIWCa8t1m0JcxrQg9pI9lEqRhAOruOBCbAohOa/gkCF+iPi9hrgvTzu6Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=20.18.1"
+ }
+ },
+ "node_modules/@vercel/sandbox/node_modules/xdg-app-paths": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/xdg-app-paths/-/xdg-app-paths-5.1.0.tgz",
+ "integrity": "sha512-RAQ3WkPf4KTU1A8RtFx3gWywzVKe00tfOPFfl2NDGqbIFENQO4kqAJp7mhQjNj/33W5x5hiWWUdyfPq/5SU3QA==",
+ "license": "MIT",
+ "dependencies": {
+ "xdg-portable": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@vercel/static-build": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmmirror.com/@vercel/static-build/-/static-build-10.0.1.tgz",
+ "integrity": "sha512-uoECEpg+cuF57/i59pQSFMHVQGwUttKnuTJMW2v1TE42aDZY8eI2lHN2WwgMKlfoWzXR0Sy/M6s0dTN4181kTQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/gatsby-plugin-vercel-analytics": "1.0.12",
+ "@vercel/gatsby-plugin-vercel-builder": "2.2.57",
+ "@vercel/static-config": "3.4.3",
+ "ts-morph": "12.0.0"
+ },
+ "peerDependencies": {
+ "@vercel/build-utils": "14.10.1"
+ }
+ },
+ "node_modules/@vercel/static-config": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmmirror.com/@vercel/static-config/-/static-config-3.4.3.tgz",
+ "integrity": "sha512-BY1sL8rNJvIm3TK/8TQ+Q6jIx7NpO5xckQzv7s6c1ypHvRnTl+vf6rmgY5WFXmoYDeGm3tMy4jiy/5M/5jGr/g==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "ajv": "8.6.3",
+ "json-schema-to-ts": "1.6.4",
+ "oxc-parser": "0.121.0",
+ "ts-morph": "12.0.0"
+ }
+ },
+ "node_modules/@vercel/vc-native-darwin-arm64": {
+ "version": "59.20.0",
+ "resolved": "https://registry.npmmirror.com/@vercel/vc-native-darwin-arm64/-/vc-native-darwin-arm64-59.20.0.tgz",
+ "integrity": "sha512-MEaEAfCe0w3KK3VLGB7WHkBdm0yW0H3nswtqOnl3pIB36ZwR+MuvYksskeqyi9ugj1kQGD8d9OU+InL4v29wEA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@vercel/vc-native-darwin-x64": {
+ "version": "59.20.0",
+ "resolved": "https://registry.npmmirror.com/@vercel/vc-native-darwin-x64/-/vc-native-darwin-x64-59.20.0.tgz",
+ "integrity": "sha512-jbkt0jmm2uvbXwVpSC6THs+6arRbFCr5xMQDlUL5A/Fiz1qFwhW3qAL3NQMLJ6MajTL6mE308AQpg0ATSu0EpQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@vercel/vc-native-linux-arm64": {
+ "version": "59.20.0",
+ "resolved": "https://registry.npmmirror.com/@vercel/vc-native-linux-arm64/-/vc-native-linux-arm64-59.20.0.tgz",
+ "integrity": "sha512-cI6fF20Zzm69quoic8IfSSfFA5w0zptBWIZeYgerU4Z36UQtW4xKTZgRpxhkp1UOYZg7O6+rCYjgXi5a5D7QAQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@vercel/vc-native-linux-x64": {
+ "version": "59.20.0",
+ "resolved": "https://registry.npmmirror.com/@vercel/vc-native-linux-x64/-/vc-native-linux-x64-59.20.0.tgz",
+ "integrity": "sha512-BJTyFF/Rk6AHgzfbys0Ujgw6lPwUVtgjEHIoJlXGQ0eQrHDOUGhjAVK8Il2qw8mDO7iPErsPGTgyMvvUIprzXQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@vercel/vc-native-win32-arm64": {
+ "version": "59.20.0",
+ "resolved": "https://registry.npmmirror.com/@vercel/vc-native-win32-arm64/-/vc-native-win32-arm64-59.20.0.tgz",
+ "integrity": "sha512-C5kbeunxXXxGaJF1ZWST+g/x7ZKzFKbeish4/+/NvBUkC+202Vv/coJeO8wmPbqxcGeAIrv1rG97r6RPfC+5lw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@vercel/vc-native-win32-x64": {
+ "version": "59.20.0",
+ "resolved": "https://registry.npmmirror.com/@vercel/vc-native-win32-x64/-/vc-native-win32-x64-59.20.0.tgz",
+ "integrity": "sha512-OY+vN+zgRAFJTNgxG86D+gUs3Q4/bKEewMff6T3SS3l5eix25lcWzI3IvP6a7bAhUpt3tNayTBIb0jpTGOn8aQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@workflow/serde": {
+ "version": "4.1.0-beta.2",
+ "resolved": "https://registry.npmmirror.com/@workflow/serde/-/serde-4.1.0-beta.2.tgz",
+ "integrity": "sha512-8kkeoQKLDaKXefjV5dbhBj2aErfKp1Mc4pb6tj8144cF+Em5SPbyMbyLCHp+BVrFfFVCBluCtMx+jjvaFVZGww==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/abbrev": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/abbrev/-/abbrev-3.0.1.tgz",
+ "integrity": "sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==",
+ "license": "ISC",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/acorn": {
+ "version": "8.18.0",
+ "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.18.0.tgz",
+ "integrity": "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==",
+ "license": "MIT",
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-import-attributes": {
+ "version": "1.9.5",
+ "resolved": "https://registry.npmmirror.com/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz",
+ "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "acorn": "^8"
+ }
+ },
+ "node_modules/agent-base": {
+ "version": "7.1.4",
+ "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-7.1.4.tgz",
+ "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "8.6.3",
+ "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.6.3.tgz",
+ "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/any-promise": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/any-promise/-/any-promise-1.3.0.tgz",
+ "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
+ "license": "MIT"
+ },
+ "node_modules/arg": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/arg/-/arg-4.1.0.tgz",
+ "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==",
+ "license": "MIT"
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "license": "Python-2.0"
+ },
+ "node_modules/async-listen": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/async-listen/-/async-listen-3.0.0.tgz",
+ "integrity": "sha512-V+SsTpDqkrWTimiotsyl33ePSjA5/KrithwupuvJ6ztsqPvGv6ge4OredFhPffVXiLN/QUWvE0XcqJaYgt6fOg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/async-retry": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmmirror.com/async-retry/-/async-retry-1.3.3.tgz",
+ "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==",
+ "license": "MIT",
+ "dependencies": {
+ "retry": "0.13.1"
+ }
+ },
+ "node_modules/async-sema": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/async-sema/-/async-sema-3.1.1.tgz",
+ "integrity": "sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==",
+ "license": "MIT"
+ },
+ "node_modules/b4a": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/b4a/-/b4a-1.9.0.tgz",
+ "integrity": "sha512-dpfcF9fDNR6++cthXR67iyhgqWy9CBouAvIWhIntzBG6cvK/cnIPiZQjBwi/ZqjjBEDGfoNDtmB0kTjroOJ3pQ==",
+ "license": "Apache-2.0",
+ "peerDependencies": {
+ "react-native-b4a": "*"
+ },
+ "peerDependenciesMeta": {
+ "react-native-b4a": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "license": "MIT"
+ },
+ "node_modules/bare-events": {
+ "version": "2.9.2",
+ "resolved": "https://registry.npmmirror.com/bare-events/-/bare-events-2.9.2.tgz",
+ "integrity": "sha512-AIPKioV7/Y/8KfZ3AAhjPJxLLbY49S64Ym5DakZlUg75qQiTgUq9hEJoEwa4eUezPUlXRy/i5NpsKvo9jgKmoA==",
+ "license": "Apache-2.0",
+ "peerDependencies": {
+ "bare-abort-controller": "*"
+ },
+ "peerDependenciesMeta": {
+ "bare-abort-controller": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/bindings": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmmirror.com/bindings/-/bindings-1.5.0.tgz",
+ "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
+ "license": "MIT",
+ "dependencies": {
+ "file-uri-to-path": "1.0.0"
+ }
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.21",
+ "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.21.tgz",
+ "integrity": "sha512-9zeA+KLZNNzglF2TPKRQEDyx6Yby7daAkuy8MiPzpXPsYDWi/DRM8jmwUDxokQjYqBpv5DgPiwD4h4ZZSy1Ujw==",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "license": "MIT",
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/buffer-crc32": {
+ "version": "0.2.13",
+ "resolved": "https://registry.npmmirror.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
+ "license": "MIT",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/bytes": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.0.tgz",
+ "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/chokidar": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-4.0.0.tgz",
+ "integrity": "sha512-mxIojEAQcuEvT/lyXq+jf/3cO/KoA6z4CeNDGGevTybECPOMFCnQy3OPahluUkbqgPNGw5Bi78UC7Po6Lhy+NA==",
+ "license": "MIT",
+ "dependencies": {
+ "readdirp": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 14.16.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/chownr": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/chownr/-/chownr-3.0.0.tgz",
+ "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==",
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/cjs-module-lexer": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmmirror.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz",
+ "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==",
+ "license": "MIT"
+ },
+ "node_modules/code-block-writer": {
+ "version": "10.1.1",
+ "resolved": "https://registry.npmmirror.com/code-block-writer/-/code-block-writer-10.1.1.tgz",
+ "integrity": "sha512-67ueh2IRGst/51p0n6FvPrnRjAGHY5F8xdjkgrYE7DDzpJe6qA07RYQ9VcoUeo5ATOjSOiWpSL3SWBRRbempMw==",
+ "license": "MIT"
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "license": "MIT"
+ },
+ "node_modules/consola": {
+ "version": "3.4.2",
+ "resolved": "https://registry.npmmirror.com/consola/-/consola-3.4.2.tgz",
+ "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==",
+ "license": "MIT",
+ "engines": {
+ "node": "^14.18.0 || >=16.10.0"
+ }
+ },
+ "node_modules/content-type": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/content-type/-/content-type-1.0.4.tgz",
+ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/convert-hrtime": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/convert-hrtime/-/convert-hrtime-3.0.0.tgz",
+ "integrity": "sha512-7V+KqSvMiHp8yWDuwfww06XleMWVVB9b9tURBx+G7UTADuo5hYPuowKloz4OzOqbPezxgo+fdQ1522WzPG4OeA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/debug/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "license": "MIT"
+ },
+ "node_modules/define-lazy-prop": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
+ "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/detect-libc": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-2.1.2.tgz",
+ "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/edge-runtime": {
+ "version": "2.5.9",
+ "resolved": "https://registry.npmmirror.com/edge-runtime/-/edge-runtime-2.5.9.tgz",
+ "integrity": "sha512-pk+k0oK0PVXdlT4oRp4lwh+unuKB7Ng4iZ2HB+EZ7QCEQizX360Rp/F4aRpgpRgdP2ufB35N+1KppHmYjqIGSg==",
+ "license": "MPL-2.0",
+ "dependencies": {
+ "@edge-runtime/format": "2.2.1",
+ "@edge-runtime/ponyfill": "2.4.2",
+ "@edge-runtime/vm": "3.2.0",
+ "async-listen": "3.0.1",
+ "mri": "1.2.0",
+ "picocolors": "1.0.0",
+ "pretty-ms": "7.0.1",
+ "signal-exit": "4.0.2",
+ "time-span": "4.0.0"
+ },
+ "bin": {
+ "edge-runtime": "dist/cli/index.js"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/edge-runtime/node_modules/async-listen": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/async-listen/-/async-listen-3.0.1.tgz",
+ "integrity": "sha512-cWMaNwUJnf37C/S5TfCkk/15MwbPRwVYALA2jtjkbHjCmAPiDXyNJy2q3p1KAZzDLHAWyarUWSujUoHR4pEgrA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/end-of-stream": {
+ "version": "1.4.5",
+ "resolved": "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.5.tgz",
+ "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==",
+ "license": "MIT",
+ "dependencies": {
+ "once": "^1.4.0"
+ }
+ },
+ "node_modules/es-module-lexer": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.5.0.tgz",
+ "integrity": "sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==",
+ "license": "MIT"
+ },
+ "node_modules/esbuild": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.27.0.tgz",
+ "integrity": "sha512-jd0f4NHbD6cALCyGElNpGAOtWxSq46l9X/sWB0Nzd5er4Kz2YTm+Vl0qKFT9KUJvD8+fiO8AvoHhFvEatfVixA==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "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"
+ }
+ },
+ "node_modules/estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+ "license": "MIT"
+ },
+ "node_modules/etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/events-intercept": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/events-intercept/-/events-intercept-2.0.0.tgz",
+ "integrity": "sha512-blk1va0zol9QOrdZt0rFXo5KMkNPVSp92Eju/Qz8THwKWKRKeE0T8Br/1aW6+Edkyq9xHYgYxn2QtOnUKPUp+Q==",
+ "license": "MIT"
+ },
+ "node_modules/events-universal": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/events-universal/-/events-universal-1.0.1.tgz",
+ "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "bare-events": "^2.7.0"
+ }
+ },
+ "node_modules/execa": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/execa/-/execa-3.2.0.tgz",
+ "integrity": "sha512-kJJfVbI/lZE1PZYDI5VPxp8zXPO9rtxOkhpZ0jMKha56AI9y2gGVC6bkukStQf0ka5Rh15BA5m7cCCH4jmHqkw==",
+ "license": "MIT",
+ "dependencies": {
+ "cross-spawn": "^7.0.0",
+ "get-stream": "^5.0.0",
+ "human-signals": "^1.1.1",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.0",
+ "onetime": "^5.1.0",
+ "p-finally": "^2.0.0",
+ "signal-exit": "^3.0.2",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": "^8.12.0 || >=9.7.0"
+ }
+ },
+ "node_modules/execa/node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "license": "ISC"
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "license": "MIT"
+ },
+ "node_modules/fast-fifo": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmmirror.com/fast-fifo/-/fast-fifo-1.3.2.tgz",
+ "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==",
+ "license": "MIT"
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.3.tgz",
+ "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.8"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fastq": {
+ "version": "1.20.3",
+ "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.20.3.tgz",
+ "integrity": "sha512-XKv5nnLs6nLF71NgiKJLIZFLkPyIEuOselLG7ujZnGrRfQK8HpvY+WqKhAJUAdLomwVHErVS4LfxFlPq0/FTAw==",
+ "license": "ISC",
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/fd-slicer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/fd-slicer/-/fd-slicer-1.1.0.tgz",
+ "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
+ "license": "MIT",
+ "dependencies": {
+ "pend": "~1.2.0"
+ }
+ },
+ "node_modules/file-uri-to-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
+ "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
+ "license": "MIT"
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "license": "MIT",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/fs-extra": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-11.1.0.tgz",
+ "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==",
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.14"
+ }
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/generic-pool": {
+ "version": "3.4.2",
+ "resolved": "https://registry.npmmirror.com/generic-pool/-/generic-pool-3.4.2.tgz",
+ "integrity": "sha512-H7cUpwCQSiJmAHM4c/aFu6fUfrhWXW1ncyh8ftxEPMu6AiYkHw9K8br720TGPZJbk5eOH2bynjZD1yPvdDAmag==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/get-port": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/get-port/-/get-port-5.1.1.tgz",
+ "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-5.2.0.tgz",
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "license": "MIT",
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/get-tsconfig": {
+ "version": "4.14.3",
+ "resolved": "https://registry.npmmirror.com/get-tsconfig/-/get-tsconfig-4.14.3.tgz",
+ "integrity": "sha512-++QEw4DIY7WGoukz+/+A/8dGYPT9l9yIadnmSgZ8Rjr3YVSVDipQSO9CdnJo9ePqFqUUqh+wk9uIaoiAwsiPkA==",
+ "license": "MIT",
+ "dependencies": {
+ "resolve-pkg-maps": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
+ }
+ },
+ "node_modules/glob": {
+ "version": "13.0.6",
+ "resolved": "https://registry.npmmirror.com/glob/-/glob-13.0.6.tgz",
+ "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==",
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "minimatch": "^10.2.2",
+ "minipass": "^7.1.3",
+ "path-scurry": "^2.0.2"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/glob/node_modules/balanced-match": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-4.0.4.tgz",
+ "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
+ "license": "MIT",
+ "engines": {
+ "node": "18 || 20 || >=22"
+ }
+ },
+ "node_modules/glob/node_modules/brace-expansion": {
+ "version": "5.0.12",
+ "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-5.0.12.tgz",
+ "integrity": "sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^4.0.2"
+ },
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
+ "node_modules/glob/node_modules/minimatch": {
+ "version": "10.2.6",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-10.2.6.tgz",
+ "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==",
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "brace-expansion": "^5.0.8"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "license": "ISC"
+ },
+ "node_modules/http-errors": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-1.7.3.tgz",
+ "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==",
+ "license": "MIT",
+ "dependencies": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.1.1",
+ "statuses": ">= 1.5.0 < 2",
+ "toidentifier": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
+ "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.2",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/human-signals": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-1.1.1.tgz",
+ "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=8.12.0"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "license": "ISC"
+ },
+ "node_modules/is-buffer": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-2.0.5.tgz",
+ "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/is-docker": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/is-docker/-/is-docker-2.2.1.tgz",
+ "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+ "license": "MIT",
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "license": "MIT",
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-node-process": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/is-node-process/-/is-node-process-1.2.0.tgz",
+ "integrity": "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==",
+ "license": "MIT"
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-wsl": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/is-wsl/-/is-wsl-2.2.0.tgz",
+ "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+ "license": "MIT",
+ "dependencies": {
+ "is-docker": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "license": "ISC"
+ },
+ "node_modules/jose": {
+ "version": "5.9.6",
+ "resolved": "https://registry.npmmirror.com/jose/-/jose-5.9.6.tgz",
+ "integrity": "sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/panva"
+ }
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.1.tgz",
+ "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/json-schema-to-ts": {
+ "version": "1.6.4",
+ "resolved": "https://registry.npmmirror.com/json-schema-to-ts/-/json-schema-to-ts-1.6.4.tgz",
+ "integrity": "sha512-pR4yQ9DHz6itqswtHCm26mw45FSNfQ9rEQjosaZErhn5J3J2sIViQiz8rDaezjKAhFGpmsoczYVBgGHzFw/stA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/json-schema": "^7.0.6",
+ "ts-toolbelt": "^6.15.5"
+ }
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "license": "MIT"
+ },
+ "node_modules/jsonc-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/jsonc-parser/-/jsonc-parser-3.3.1.tgz",
+ "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==",
+ "license": "MIT"
+ },
+ "node_modules/jsonfile": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.2.1.tgz",
+ "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==",
+ "license": "MIT",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/jsonlines": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmmirror.com/jsonlines/-/jsonlines-0.1.1.tgz",
+ "integrity": "sha512-ekDrAGso79Cvf+dtm+mL8OBI2bmAOt3gssYs833De/C9NmIpWDWyUO4zPgB5x2/OhY366dkhgfPMYfwZF7yOZA==",
+ "license": "MIT"
+ },
+ "node_modules/lru-cache": {
+ "version": "11.5.2",
+ "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-11.5.2.tgz",
+ "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==",
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
+ "node_modules/luxon": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmmirror.com/luxon/-/luxon-3.7.2.tgz",
+ "integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "license": "MIT"
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/micro": {
+ "version": "9.3.5-canary.3",
+ "resolved": "https://registry.npmmirror.com/micro/-/micro-9.3.5-canary.3.tgz",
+ "integrity": "sha512-viYIo9PefV+w9dvoIBh1gI44Mvx1BOk67B4BpC2QK77qdY0xZF0Q+vWLt/BII6cLkIc8rLmSIcJaB/OrXXKe1g==",
+ "license": "MIT",
+ "dependencies": {
+ "arg": "4.1.0",
+ "content-type": "1.0.4",
+ "raw-body": "2.4.1"
+ },
+ "bin": {
+ "micro": "bin/micro.js"
+ },
+ "engines": {
+ "node": ">= 8.0.0"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "license": "MIT",
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/micromatch/node_modules/picomatch": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.2.tgz",
+ "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "10.1.1",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-10.1.1.tgz",
+ "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==",
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "@isaacs/brace-expansion": "^5.0.0"
+ },
+ "engines": {
+ "node": "20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/minipass": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmmirror.com/minipass/-/minipass-7.1.3.tgz",
+ "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==",
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/minizlib": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-3.1.0.tgz",
+ "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==",
+ "license": "MIT",
+ "dependencies": {
+ "minipass": "^7.1.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "license": "MIT",
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/mri": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/mri/-/mri-1.2.0.tgz",
+ "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "license": "MIT"
+ },
+ "node_modules/node-fetch": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.6.7.tgz",
+ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+ "license": "MIT",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/node-gyp-build": {
+ "version": "4.8.4",
+ "resolved": "https://registry.npmmirror.com/node-gyp-build/-/node-gyp-build-4.8.4.tgz",
+ "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==",
+ "license": "MIT",
+ "bin": {
+ "node-gyp-build": "bin.js",
+ "node-gyp-build-optional": "optional.js",
+ "node-gyp-build-test": "build-test.js"
+ }
+ },
+ "node_modules/nopt": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmmirror.com/nopt/-/nopt-8.1.0.tgz",
+ "integrity": "sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==",
+ "license": "ISC",
+ "dependencies": {
+ "abbrev": "^3.0.0"
+ },
+ "bin": {
+ "nopt": "bin/nopt.js"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "license": "ISC",
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "license": "MIT",
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/open": {
+ "version": "8.4.0",
+ "resolved": "https://registry.npmmirror.com/open/-/open-8.4.0.tgz",
+ "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==",
+ "license": "MIT",
+ "dependencies": {
+ "define-lazy-prop": "^2.0.0",
+ "is-docker": "^2.1.1",
+ "is-wsl": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/os-paths": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmmirror.com/os-paths/-/os-paths-4.4.0.tgz",
+ "integrity": "sha512-wrAwOeXp1RRMFfQY8Sy7VaGVmPocaLwSFOYCGKSyo8qmJ+/yaafCl5BCA1IQZWqFSRBrKDYFeR9d/VyQzfH/jg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6.0"
+ }
+ },
+ "node_modules/oxc-parser": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmmirror.com/oxc-parser/-/oxc-parser-0.121.0.tgz",
+ "integrity": "sha512-ek9o58+SCv6AV7nchiAcUJy1DNE2CC5WRdBcO0mF+W4oRjNQfPO7b3pLjTHSFECpHkKGOZSQxx3hk8viIL5YCg==",
+ "license": "MIT",
+ "dependencies": {
+ "@oxc-project/types": "^0.121.0"
+ },
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/Boshen"
+ },
+ "optionalDependencies": {
+ "@oxc-parser/binding-android-arm-eabi": "0.121.0",
+ "@oxc-parser/binding-android-arm64": "0.121.0",
+ "@oxc-parser/binding-darwin-arm64": "0.121.0",
+ "@oxc-parser/binding-darwin-x64": "0.121.0",
+ "@oxc-parser/binding-freebsd-x64": "0.121.0",
+ "@oxc-parser/binding-linux-arm-gnueabihf": "0.121.0",
+ "@oxc-parser/binding-linux-arm-musleabihf": "0.121.0",
+ "@oxc-parser/binding-linux-arm64-gnu": "0.121.0",
+ "@oxc-parser/binding-linux-arm64-musl": "0.121.0",
+ "@oxc-parser/binding-linux-ppc64-gnu": "0.121.0",
+ "@oxc-parser/binding-linux-riscv64-gnu": "0.121.0",
+ "@oxc-parser/binding-linux-riscv64-musl": "0.121.0",
+ "@oxc-parser/binding-linux-s390x-gnu": "0.121.0",
+ "@oxc-parser/binding-linux-x64-gnu": "0.121.0",
+ "@oxc-parser/binding-linux-x64-musl": "0.121.0",
+ "@oxc-parser/binding-openharmony-arm64": "0.121.0",
+ "@oxc-parser/binding-wasm32-wasi": "0.121.0",
+ "@oxc-parser/binding-win32-arm64-msvc": "0.121.0",
+ "@oxc-parser/binding-win32-ia32-msvc": "0.121.0",
+ "@oxc-parser/binding-win32-x64-msvc": "0.121.0"
+ }
+ },
+ "node_modules/oxc-transform": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmmirror.com/oxc-transform/-/oxc-transform-0.111.0.tgz",
+ "integrity": "sha512-oa5KKSDNLHZGaiqIGAbCWXeN9IJUAz9MElWcQX90epDxdKc9Hrt/BsLj3K4gDqfAYa5dwdH+ZCFJG9hR74fiGg==",
+ "license": "MIT",
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/Boshen"
+ },
+ "optionalDependencies": {
+ "@oxc-transform/binding-android-arm-eabi": "0.111.0",
+ "@oxc-transform/binding-android-arm64": "0.111.0",
+ "@oxc-transform/binding-darwin-arm64": "0.111.0",
+ "@oxc-transform/binding-darwin-x64": "0.111.0",
+ "@oxc-transform/binding-freebsd-x64": "0.111.0",
+ "@oxc-transform/binding-linux-arm-gnueabihf": "0.111.0",
+ "@oxc-transform/binding-linux-arm-musleabihf": "0.111.0",
+ "@oxc-transform/binding-linux-arm64-gnu": "0.111.0",
+ "@oxc-transform/binding-linux-arm64-musl": "0.111.0",
+ "@oxc-transform/binding-linux-ppc64-gnu": "0.111.0",
+ "@oxc-transform/binding-linux-riscv64-gnu": "0.111.0",
+ "@oxc-transform/binding-linux-riscv64-musl": "0.111.0",
+ "@oxc-transform/binding-linux-s390x-gnu": "0.111.0",
+ "@oxc-transform/binding-linux-x64-gnu": "0.111.0",
+ "@oxc-transform/binding-linux-x64-musl": "0.111.0",
+ "@oxc-transform/binding-openharmony-arm64": "0.111.0",
+ "@oxc-transform/binding-wasm32-wasi": "0.111.0",
+ "@oxc-transform/binding-win32-arm64-msvc": "0.111.0",
+ "@oxc-transform/binding-win32-ia32-msvc": "0.111.0",
+ "@oxc-transform/binding-win32-x64-msvc": "0.111.0"
+ }
+ },
+ "node_modules/p-finally": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/p-finally/-/p-finally-2.0.1.tgz",
+ "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/parse-ms": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/parse-ms/-/parse-ms-2.1.0.tgz",
+ "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/path-browserify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/path-browserify/-/path-browserify-1.0.1.tgz",
+ "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==",
+ "license": "MIT"
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-scurry": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/path-scurry/-/path-scurry-2.0.2.tgz",
+ "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==",
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "lru-cache": "^11.0.0",
+ "minipass": "^7.1.2"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/path-to-regexp": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-8.3.0.tgz",
+ "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==",
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/path-to-regexp-updated": {
+ "name": "path-to-regexp",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-6.3.0.tgz",
+ "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==",
+ "license": "MIT"
+ },
+ "node_modules/pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
+ "license": "MIT"
+ },
+ "node_modules/picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+ "license": "ISC"
+ },
+ "node_modules/picomatch": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.7.tgz",
+ "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pretty-ms": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmmirror.com/pretty-ms/-/pretty-ms-7.0.1.tgz",
+ "integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==",
+ "license": "MIT",
+ "dependencies": {
+ "parse-ms": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/promisepipe": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/promisepipe/-/promisepipe-3.0.0.tgz",
+ "integrity": "sha512-V6TbZDJ/ZswevgkDNpGt/YqNCiZP9ASfgU+p83uJE6NrGtvSGoOcHLiDCqkMs2+yg7F5qHdLV8d0aS8O26G/KA==",
+ "license": "MIT"
+ },
+ "node_modules/pump": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmmirror.com/pump/-/pump-3.0.4.tgz",
+ "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==",
+ "license": "MIT",
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/raw-body": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmmirror.com/raw-body/-/raw-body-2.4.1.tgz",
+ "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==",
+ "license": "MIT",
+ "dependencies": {
+ "bytes": "3.1.0",
+ "http-errors": "1.7.3",
+ "iconv-lite": "0.4.24",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-4.1.2.tgz",
+ "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14.18.0"
+ },
+ "funding": {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/require-from-string": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/resolve-pkg-maps": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz",
+ "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
+ }
+ },
+ "node_modules/resolve.exports": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmmirror.com/resolve.exports/-/resolve.exports-2.0.3.tgz",
+ "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/retry": {
+ "version": "0.13.1",
+ "resolved": "https://registry.npmmirror.com/retry/-/retry-0.13.1.tgz",
+ "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.1.0.tgz",
+ "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
+ "license": "MIT",
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rolldown": {
+ "version": "1.0.0-rc.1",
+ "resolved": "https://registry.npmmirror.com/rolldown/-/rolldown-1.0.0-rc.1.tgz",
+ "integrity": "sha512-M3AeZjYE6UclblEf531Hch0WfVC/NOL43Cc+WdF3J50kk5/fvouHhDumSGTh0oRjbZ8C4faaVr5r6Nx1xMqDGg==",
+ "license": "MIT",
+ "dependencies": {
+ "@oxc-project/types": "=0.110.0",
+ "@rolldown/pluginutils": "1.0.0-rc.1"
+ },
+ "bin": {
+ "rolldown": "bin/cli.mjs"
+ },
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ },
+ "optionalDependencies": {
+ "@rolldown/binding-android-arm64": "1.0.0-rc.1",
+ "@rolldown/binding-darwin-arm64": "1.0.0-rc.1",
+ "@rolldown/binding-darwin-x64": "1.0.0-rc.1",
+ "@rolldown/binding-freebsd-x64": "1.0.0-rc.1",
+ "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.1",
+ "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.1",
+ "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.1",
+ "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.1",
+ "@rolldown/binding-linux-x64-musl": "1.0.0-rc.1",
+ "@rolldown/binding-openharmony-arm64": "1.0.0-rc.1",
+ "@rolldown/binding-wasm32-wasi": "1.0.0-rc.1",
+ "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.1",
+ "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.1"
+ }
+ },
+ "node_modules/rolldown/node_modules/@oxc-project/types": {
+ "version": "0.110.0",
+ "resolved": "https://registry.npmmirror.com/@oxc-project/types/-/types-0.110.0.tgz",
+ "integrity": "sha512-6Ct21OIlrEnFEJk5LT4e63pk3btsI6/TusD/GStLi7wYlGJNOl1GI9qvXAnRAxQU9zqA2Oz+UwhfTOU2rPZVow==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/Boshen"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "license": "MIT"
+ },
+ "node_modules/sandbox": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/sandbox/-/sandbox-4.1.0.tgz",
+ "integrity": "sha512-kzDiAyvrGHGdrQ/7mT6Md18K9OUVgZW/KUKO/wBJ/gHouDh6oJPWcGWfOV5i7CSep2map3Pl7vV9gszm3Cvu7Q==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/sandbox": "3.1.0",
+ "async-retry": "1.3.3",
+ "debug": "^4.4.1",
+ "ws": "^8.21.0",
+ "zod": "^4.1.1"
+ },
+ "bin": {
+ "sandbox": "bin/sandbox.mjs",
+ "sbx": "bin/sandbox.mjs"
+ }
+ },
+ "node_modules/sandbox/node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/sandbox/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/semver/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/semver/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "license": "ISC"
+ },
+ "node_modules/setprototypeof": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.1.1.tgz",
+ "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==",
+ "license": "ISC"
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-4.0.2.tgz",
+ "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/smol-toml": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmmirror.com/smol-toml/-/smol-toml-1.5.2.tgz",
+ "integrity": "sha512-QlaZEqcAH3/RtNyet1IPIYPsEWAaYyXXv1Krsi+1L/QHppjX4Ifm8MQsBISz9vE8cHicIq3clogsheili5vhaQ==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">= 18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/cyyynthia"
+ }
+ },
+ "node_modules/srvx": {
+ "version": "0.11.16",
+ "resolved": "https://registry.npmmirror.com/srvx/-/srvx-0.11.16.tgz",
+ "integrity": "sha512-bp07zRuycfTY43IjAvvTFnmnJi8ikW0VFiHwOhhYcVW/L4xQ1XY4PAd4Nuum1rsA17C39zL7x+CDhrn5AL32Rw==",
+ "license": "MIT",
+ "bin": {
+ "srvx": "bin/srvx.mjs"
+ },
+ "engines": {
+ "node": ">=20.16.0"
+ }
+ },
+ "node_modules/stat-mode": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmmirror.com/stat-mode/-/stat-mode-0.3.0.tgz",
+ "integrity": "sha512-QjMLR0A3WwFY2aZdV0okfFEJB5TRjkggXZjxP3A1RsWsNHNu3YPv8btmtc6iCFZ0Rul3FE93OYogvhOUClU+ng==",
+ "license": "MIT"
+ },
+ "node_modules/statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/stream-to-array": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/stream-to-array/-/stream-to-array-2.3.0.tgz",
+ "integrity": "sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==",
+ "license": "MIT",
+ "dependencies": {
+ "any-promise": "^1.1.0"
+ }
+ },
+ "node_modules/stream-to-promise": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/stream-to-promise/-/stream-to-promise-2.2.0.tgz",
+ "integrity": "sha512-HAGUASw8NT0k8JvIVutB2Y/9iBk7gpgEyAudXwNJmZERdMITGdajOa4VJfD/kNiA3TppQpTP4J+CtcHwdzKBAw==",
+ "license": "MIT",
+ "dependencies": {
+ "any-promise": "~1.3.0",
+ "end-of-stream": "~1.1.0",
+ "stream-to-array": "~2.3.0"
+ }
+ },
+ "node_modules/stream-to-promise/node_modules/end-of-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.1.0.tgz",
+ "integrity": "sha512-EoulkdKF/1xa92q25PbjuDcgJ9RDHYU2Rs3SCIvs2/dSQ3BpmxneNHmA/M7fe60M3PrV7nNGTTNbkK62l6vXiQ==",
+ "license": "MIT",
+ "dependencies": {
+ "once": "~1.3.0"
+ }
+ },
+ "node_modules/stream-to-promise/node_modules/once": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmmirror.com/once/-/once-1.3.3.tgz",
+ "integrity": "sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w==",
+ "license": "ISC",
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/streamx": {
+ "version": "2.28.1",
+ "resolved": "https://registry.npmmirror.com/streamx/-/streamx-2.28.1.tgz",
+ "integrity": "sha512-zEzXb0s5Cds7tqMH6rhZ05lcJydCWiQPEwiNngVqzsxCc962vLY4Uw+mW7od8kDH258k2Uz/JrOkdIAAhSh9VA==",
+ "license": "MIT",
+ "dependencies": {
+ "events-universal": "^1.0.0",
+ "fast-fifo": "^1.3.2",
+ "text-decoder": "^1.1.0"
+ }
+ },
+ "node_modules/strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/tar": {
+ "version": "7.5.11",
+ "resolved": "https://registry.npmmirror.com/tar/-/tar-7.5.11.tgz",
+ "integrity": "sha512-ChjMH33/KetonMTAtpYdgUFr0tbz69Fp2v7zWxQfYZX4g5ZN2nOBXm1R2xyA+lMIKrLKIoKAwFj93jE/avX9cQ==",
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "@isaacs/fs-minipass": "^4.0.0",
+ "chownr": "^3.0.0",
+ "minipass": "^7.1.2",
+ "minizlib": "^3.1.0",
+ "yallist": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tar-stream": {
+ "version": "3.1.7",
+ "resolved": "https://registry.npmmirror.com/tar-stream/-/tar-stream-3.1.7.tgz",
+ "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==",
+ "license": "MIT",
+ "dependencies": {
+ "b4a": "^1.6.4",
+ "fast-fifo": "^1.2.0",
+ "streamx": "^2.15.0"
+ }
+ },
+ "node_modules/text-decoder": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmmirror.com/text-decoder/-/text-decoder-1.2.7.tgz",
+ "integrity": "sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "b4a": "^1.6.4"
+ }
+ },
+ "node_modules/throttleit": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/throttleit/-/throttleit-2.1.0.tgz",
+ "integrity": "sha512-nt6AMGKW1p/70DF/hGBdJB57B8Tspmbp5gfJ8ilhLnt7kkr2ye7hzD6NVG8GGErk2HWF34igrL2CXmNIkzKqKw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/time-span": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/time-span/-/time-span-4.0.0.tgz",
+ "integrity": "sha512-MyqZCTGLDZ77u4k+jqg4UlrzPTPZ49NDlaekU6uuFaJLzPIN1woaRXCbGeqOfxwc3Y37ZROGAJ614Rdv7Olt+g==",
+ "license": "MIT",
+ "dependencies": {
+ "convert-hrtime": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/tinyexec": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmmirror.com/tinyexec/-/tinyexec-0.3.2.tgz",
+ "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==",
+ "license": "MIT"
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "license": "MIT",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/toidentifier": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.0.tgz",
+ "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
+ "license": "MIT"
+ },
+ "node_modules/tree-kill": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmmirror.com/tree-kill/-/tree-kill-1.2.2.tgz",
+ "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
+ "license": "MIT",
+ "bin": {
+ "tree-kill": "cli.js"
+ }
+ },
+ "node_modules/ts-morph": {
+ "version": "12.0.0",
+ "resolved": "https://registry.npmmirror.com/ts-morph/-/ts-morph-12.0.0.tgz",
+ "integrity": "sha512-VHC8XgU2fFW7yO1f/b3mxKDje1vmyzFXHWzOYmKEkCEwcLjDtbdLgBQviqj4ZwP4MJkQtRo6Ha2I29lq/B+VxA==",
+ "license": "MIT",
+ "dependencies": {
+ "@ts-morph/common": "~0.11.0",
+ "code-block-writer": "^10.1.1"
+ }
+ },
+ "node_modules/ts-toolbelt": {
+ "version": "6.15.5",
+ "resolved": "https://registry.npmmirror.com/ts-toolbelt/-/ts-toolbelt-6.15.5.tgz",
+ "integrity": "sha512-FZIXf1ksVyLcfr7M317jbB67XFJhOO1YqdTcuGaq9q5jLUoTikukZ+98TPjKiP2jC5CgmYdWWYs0s2nLSU0/1A==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "license": "0BSD",
+ "optional": true
+ },
+ "node_modules/tsx": {
+ "version": "4.21.0",
+ "resolved": "https://registry.npmmirror.com/tsx/-/tsx-4.21.0.tgz",
+ "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==",
+ "license": "MIT",
+ "dependencies": {
+ "esbuild": "~0.27.0",
+ "get-tsconfig": "^4.7.5"
+ },
+ "bin": {
+ "tsx": "dist/cli.mjs"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.3"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "5.9.3",
+ "resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.9.3.tgz",
+ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/uid-promise": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/uid-promise/-/uid-promise-1.0.0.tgz",
+ "integrity": "sha512-R8375j0qwXyIu/7R0tjdF06/sElHqbmdmWC9M2qQHpEVbvE4I5+38KJI7LUUmQMp7NVq4tKHiBMkT0NFM453Ig==",
+ "license": "MIT"
+ },
+ "node_modules/undici": {
+ "version": "5.29.0",
+ "resolved": "https://registry.npmmirror.com/undici/-/undici-5.29.0.tgz",
+ "integrity": "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==",
+ "license": "MIT",
+ "dependencies": {
+ "@fastify/busboy": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.0"
+ }
+ },
+ "node_modules/undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "license": "MIT"
+ },
+ "node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/uuid": {
+ "version": "14.0.1",
+ "resolved": "https://registry.npmmirror.com/uuid/-/uuid-14.0.1.tgz",
+ "integrity": "sha512-6ZxzVpzDXDa3bJWaHilVayA+BH/1zmxCJoVgvmqJnid/gPoKHxUrS/aC/T6LGQtNHT+XHG9fXPJB4d+IrU30Ew==",
+ "funding": [
+ "https://github.com/sponsors/broofa",
+ "https://github.com/sponsors/ctavan"
+ ],
+ "license": "MIT",
+ "bin": {
+ "uuid": "dist-node/bin/uuid"
+ }
+ },
+ "node_modules/vercel": {
+ "version": "59.20.0",
+ "resolved": "https://registry.npmmirror.com/vercel/-/vercel-59.20.0.tgz",
+ "integrity": "sha512-e5A70qlu7HzNZRgKKywlz09jsqkR7XwLRmQO1cwAnRzrgpVSIt/iL7GlO5131jS5xa+/fyNiLHpXT4DpOoE4WQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vercel/backends": "8.0.1",
+ "@vercel/blob": "2.8.0",
+ "@vercel/build-utils": "14.10.1",
+ "@vercel/cli-auth": "0.3.8",
+ "@vercel/cli-config": "0.2.7",
+ "@vercel/container": "8.2.0",
+ "@vercel/detect-agent": "1.2.5",
+ "@vercel/elysia": "8.0.1",
+ "@vercel/express": "8.0.1",
+ "@vercel/fastify": "8.0.1",
+ "@vercel/fun": "1.3.0",
+ "@vercel/go": "11.0.1",
+ "@vercel/h3": "8.0.1",
+ "@vercel/hono": "8.0.1",
+ "@vercel/hydrogen": "9.0.1",
+ "@vercel/koa": "8.0.1",
+ "@vercel/nestjs": "8.0.1",
+ "@vercel/next": "12.0.2",
+ "@vercel/node": "13.0.1",
+ "@vercel/prepare-flags-definitions": "0.3.0",
+ "@vercel/python": "14.1.0",
+ "@vercel/python-analysis": "0.14.0",
+ "@vercel/redwood": "10.0.1",
+ "@vercel/remix-builder": "13.0.1",
+ "@vercel/ruby": "10.0.1",
+ "@vercel/rust": "9.0.1",
+ "@vercel/static-build": "10.0.1",
+ "chokidar": "4.0.0",
+ "esbuild": "0.27.0",
+ "jose": "5.9.6",
+ "jsonc-parser": "3.3.1",
+ "luxon": "^3.4.0",
+ "sandbox": "4.1.0",
+ "smol-toml": "1.5.2",
+ "undici": "5.29.0",
+ "uuid": "14.0.1",
+ "zod": "4.1.11"
+ },
+ "bin": {
+ "vc": "dist/vc.js",
+ "vercel": "dist/vc.js"
+ },
+ "engines": {
+ "node": ">= 18"
+ },
+ "optionalDependencies": {
+ "@vercel/vc-native-darwin-arm64": "59.20.0",
+ "@vercel/vc-native-darwin-x64": "59.20.0",
+ "@vercel/vc-native-linux-arm64": "59.20.0",
+ "@vercel/vc-native-linux-x64": "59.20.0",
+ "@vercel/vc-native-win32-arm64": "59.20.0",
+ "@vercel/vc-native-win32-x64": "59.20.0"
+ }
+ },
+ "node_modules/web-vitals": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmmirror.com/web-vitals/-/web-vitals-0.2.4.tgz",
+ "integrity": "sha512-6BjspCO9VriYy12z356nL6JBS0GYeEcA457YyRzD+dD6XYCQ75NKhcOHUMHentOE7OcVCIXXDvOm0jKFfQG2Gg==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "license": "MIT",
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "license": "ISC"
+ },
+ "node_modules/ws": {
+ "version": "8.21.3",
+ "resolved": "https://registry.npmmirror.com/ws/-/ws-8.21.3.tgz",
+ "integrity": "sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/xdg-app-paths": {
+ "version": "5.5.1",
+ "resolved": "https://registry.npmmirror.com/xdg-app-paths/-/xdg-app-paths-5.5.1.tgz",
+ "integrity": "sha512-hI3flOB4PLZIy5prbtTpirobtPE2ZtZ52szO+2mM9Efp6ErM398La+C1lIpNWDfNoQk+6Lsi6nMcCwVB7pxeMQ==",
+ "license": "MIT",
+ "dependencies": {
+ "os-paths": "^4.0.1",
+ "xdg-portable": "^7.2.0"
+ },
+ "engines": {
+ "node": ">= 6.0"
+ }
+ },
+ "node_modules/xdg-portable": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmmirror.com/xdg-portable/-/xdg-portable-7.3.0.tgz",
+ "integrity": "sha512-sqMMuL1rc0FmMBOzCpd0yuy9trqF2yTTVe+E9ogwCSWQCdDEtQUwrZPT6AxqtsFGRNxycgncbP/xmOOSPw5ZUw==",
+ "license": "MIT",
+ "dependencies": {
+ "os-paths": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6.0"
+ }
+ },
+ "node_modules/yallist": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/yallist/-/yallist-5.0.0.tgz",
+ "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==",
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/yauzl": {
+ "version": "2.10.0",
+ "resolved": "https://registry.npmmirror.com/yauzl/-/yauzl-2.10.0.tgz",
+ "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
+ "license": "MIT",
+ "dependencies": {
+ "buffer-crc32": "~0.2.3",
+ "fd-slicer": "~1.1.0"
+ }
+ },
+ "node_modules/yauzl-clone": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/yauzl-clone/-/yauzl-clone-1.0.4.tgz",
+ "integrity": "sha512-igM2RRCf3k8TvZoxR2oguuw4z1xasOnA31joCqHIyLkeWrvAc2Jgay5ISQ2ZplinkoGaJ6orCz56Ey456c5ESA==",
+ "license": "MIT",
+ "dependencies": {
+ "events-intercept": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/yauzl-promise": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmmirror.com/yauzl-promise/-/yauzl-promise-2.1.3.tgz",
+ "integrity": "sha512-A1pf6fzh6eYkK0L4Qp7g9jzJSDrM6nN0bOn5T0IbY4Yo3w+YkWlHFkJP7mzknMXjqusHFHlKsK2N+4OLsK2MRA==",
+ "license": "MIT",
+ "dependencies": {
+ "yauzl": "^2.9.1",
+ "yauzl-clone": "^1.0.4"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/zod": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmmirror.com/zod/-/zod-4.1.11.tgz",
+ "integrity": "sha512-WPsqwxITS2tzx1bzhIKsEs19ABD5vmCVa4xBo2tq/SrV4RNZtfws1EnCWQXM6yh8bD08a1idvkB5MZSBiZsjwg==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/colinhacks"
+ }
+ }
+ }
+}
diff --git a/validation/vercel-tools/package.json b/validation/vercel-tools/package.json
new file mode 100644
index 0000000..782c41b
--- /dev/null
+++ b/validation/vercel-tools/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "ship-vercel-validation-tools",
+ "version": "0.1.0",
+ "private": true,
+ "description": "Pinned official Vercel CLI for the isolated Ship container validation",
+ "dependencies": {
+ "vercel": "59.20.0"
+ }
+}