{"version":3,"file":"status.cjs","names":["readInstalledFrameworkVersion","fetchBosConfigFromFastKv","readSnapshot"],"sources":["../../src/cli/status.ts"],"sourcesContent":["import { existsSync, readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport type { StatusResult } from \"../contract\";\nimport { fetchBosConfigFromFastKv } from \"../fastkv\";\nimport { readInstalledFrameworkVersion } from \"./framework-version\";\nimport { readSnapshot } from \"./snapshot\";\n\nconst FRAMEWORK_PACKAGES = [\"everything-dev\", \"every-plugin\"];\n\nconst CATALOG_TOOL_PACKAGES = [\n  \"@rspack/core\",\n  \"@rspack/cli\",\n  \"@rsbuild/core\",\n  \"@rsbuild/plugin-react\",\n  \"@module-federation/enhanced\",\n  \"@module-federation/node\",\n  \"@module-federation/rsbuild-plugin\",\n  \"@module-federation/runtime-core\",\n  \"@module-federation/sdk\",\n  \"@module-federation/dts-plugin\",\n] as const;\n\nasync function fetchLatestNpmVersion(packageName: string): Promise<string | null> {\n  try {\n    const response = await fetch(`https://registry.npmjs.org/${packageName}/latest`, {\n      headers: { Accept: \"application/json\" },\n      signal: AbortSignal.timeout(10_000),\n    });\n    if (!response.ok) return null;\n    const data = (await response.json()) as { version: string };\n    return data.version;\n  } catch {\n    return null;\n  }\n}\n\nfunction readInstalledVersion(projectDir: string, packageName: string): string | undefined {\n  return readInstalledFrameworkVersion(projectDir, packageName);\n}\n\nfunction checkEnvFile(projectDir: string): \"found\" | \"missing\" | \"example-only\" {\n  if (existsSync(join(projectDir, \".env\"))) return \"found\";\n  if (existsSync(join(projectDir, \".env.example\"))) return \"example-only\";\n  return \"missing\";\n}\n\nasync function checkParentReachable(extendsRef: string | undefined): Promise<boolean | undefined> {\n  if (!extendsRef?.startsWith(\"bos://\")) return undefined;\n  try {\n    const config = await fetchBosConfigFromFastKv(extendsRef);\n    return config !== null;\n  } catch {\n    return false;\n  }\n}\n\nexport async function getStatus(projectDir: string): Promise<StatusResult> {\n  const configPath = join(projectDir, \"bos.config.json\");\n  if (!existsSync(configPath)) {\n    return {\n      status: \"error\",\n      error: \"No bos.config.json found in current directory\",\n      packages: [],\n      envFile: \"missing\",\n    };\n  }\n\n  const config = JSON.parse(readFileSync(configPath, \"utf-8\")) as Record<string, unknown>;\n\n  const packages = [];\n  for (const name of FRAMEWORK_PACKAGES) {\n    const installed = readInstalledVersion(projectDir, name);\n    const latest = await fetchLatestNpmVersion(name);\n    packages.push({ name, installed, latest: latest ?? undefined });\n  }\n\n  for (const name of CATALOG_TOOL_PACKAGES) {\n    const installed = readInstalledVersion(projectDir, name);\n    if (!installed) continue;\n    const latest = await fetchLatestNpmVersion(name);\n    packages.push({ name, installed, latest: latest ?? undefined });\n  }\n\n  const snapshot = await readSnapshot(projectDir);\n\n  const extendsRef = config.extends as string | undefined;\n  const parentReachable = await checkParentReachable(extendsRef);\n\n  return {\n    status: \"ok\",\n    extends: extendsRef,\n    account: config.account as string | undefined,\n    domain: config.domain as string | undefined,\n    packages,\n    lastSync: snapshot?.timestamp,\n    envFile: checkEnvFile(projectDir),\n    parentReachable,\n  };\n}\n"],"mappings":";;;;;;;;AAOA,MAAM,qBAAqB,CAAC,kBAAkB,eAAe;AAE7D,MAAM,wBAAwB;CAC5B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAED,eAAe,sBAAsB,aAA6C;AAChF,KAAI;EACF,MAAM,WAAW,MAAM,MAAM,8BAA8B,YAAY,UAAU;GAC/E,SAAS,EAAE,QAAQ,oBAAoB;GACvC,QAAQ,YAAY,QAAQ,IAAO;GACpC,CAAC;AACF,MAAI,CAAC,SAAS,GAAI,QAAO;AAEzB,UAAO,MADa,SAAS,MAAM,EACvB;SACN;AACN,SAAO;;;AAIX,SAAS,qBAAqB,YAAoB,aAAyC;AACzF,QAAOA,wDAA8B,YAAY,YAAY;;AAG/D,SAAS,aAAa,YAA0D;AAC9E,iDAAoB,YAAY,OAAO,CAAC,CAAE,QAAO;AACjD,iDAAoB,YAAY,eAAe,CAAC,CAAE,QAAO;AACzD,QAAO;;AAGT,eAAe,qBAAqB,YAA8D;AAChG,KAAI,CAAC,YAAY,WAAW,SAAS,CAAE,QAAO;AAC9C,KAAI;AAEF,SAAO,MADcC,wCAAyB,WAAW,KACvC;SACZ;AACN,SAAO;;;AAIX,eAAsB,UAAU,YAA2C;CACzE,MAAM,iCAAkB,YAAY,kBAAkB;AACtD,KAAI,yBAAY,WAAW,CACzB,QAAO;EACL,QAAQ;EACR,OAAO;EACP,UAAU,EAAE;EACZ,SAAS;EACV;CAGH,MAAM,SAAS,KAAK,gCAAmB,YAAY,QAAQ,CAAC;CAE5D,MAAM,WAAW,EAAE;AACnB,MAAK,MAAM,QAAQ,oBAAoB;EACrC,MAAM,YAAY,qBAAqB,YAAY,KAAK;EACxD,MAAM,SAAS,MAAM,sBAAsB,KAAK;AAChD,WAAS,KAAK;GAAE;GAAM;GAAW,QAAQ,UAAU;GAAW,CAAC;;AAGjE,MAAK,MAAM,QAAQ,uBAAuB;EACxC,MAAM,YAAY,qBAAqB,YAAY,KAAK;AACxD,MAAI,CAAC,UAAW;EAChB,MAAM,SAAS,MAAM,sBAAsB,KAAK;AAChD,WAAS,KAAK;GAAE;GAAM;GAAW,QAAQ,UAAU;GAAW,CAAC;;CAGjE,MAAM,WAAW,MAAMC,8BAAa,WAAW;CAE/C,MAAM,aAAa,OAAO;CAC1B,MAAM,kBAAkB,MAAM,qBAAqB,WAAW;AAE9D,QAAO;EACL,QAAQ;EACR,SAAS;EACT,SAAS,OAAO;EAChB,QAAQ,OAAO;EACf;EACA,UAAU,UAAU;EACpB,SAAS,aAAa,WAAW;EACjC;EACD"}