import { green, red } from "ansis" import { defineCommand } from "../lib/command" import { globalOptions, globalOptionsSchema } from "../lib/global-options" import { joinURL } from "ufo" import { authClient } from "../lib/auth-client" import { renderDetailBlock } from "../lib/detail-block" import { env } from "../lib/env" import { output, sessionIntro } from "../utils" import { log } from "@clack/prompts" import { dimmed } from "../lib/io" export const debugCommand = defineCommand({ name: "debug", description: "Print resolved app URL and API endpoints this CLI uses", options: globalOptions, schema: globalOptionsSchema, run: debug, }) /** Logs APP_ORIGIN and the RPC/auth base URLs derived from it. */ export async function debug() { const { APP_ORIGIN } = env const session = await authClient.getSession() const appOrigin = APP_ORIGIN const apiRpc = joinURL(APP_ORIGIN, "/api/rpc") const apiRest = joinURL(APP_ORIGIN, "/api/v1") const apiAuth = joinURL(APP_ORIGIN, "/api/auth") output .normal(() => { sessionIntro(session) log.message( renderDetailBlock( { [dimmed`App origin`]: appOrigin, [dimmed`API RPC`]: apiRpc, [dimmed`API REST`]: apiRest, [dimmed`API Auth`]: apiAuth, [dimmed`Auth Status`]: session ? green`Logged in` : red`No Auth`, }, { keyAlignment: "right" }, ), ) log.message() }) .json({ appOrigin, apiRpc, apiRest, apiAuth, authStatus: session ? "logged_in" : "no_auth", }) }