{"version":3,"file":"framework-version.mjs","names":[],"sources":["../../src/cli/framework-version.ts"],"sourcesContent":["import { existsSync, readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\n\nexport interface FrameworkPackageResolution {\n  specifier?: string;\n  installedVersion?: string;\n  isLinked: boolean;\n  isWorkspaceLike: boolean;\n}\n\nfunction stripVersionPrefix(version: string): string {\n  return version.replace(/^[\\^~>=]+/, \"\");\n}\n\nexport function readRootCatalogVersion(\n  projectDir: string,\n  packageName: string,\n): string | undefined {\n  const pkgPath = join(projectDir, \"package.json\");\n  if (!existsSync(pkgPath)) return undefined;\n  const pkg = JSON.parse(readFileSync(pkgPath, \"utf-8\")) as {\n    workspaces?: { catalog?: Record<string, string> };\n  };\n  const version = pkg.workspaces?.catalog?.[packageName];\n  return version ? stripVersionPrefix(version) : undefined;\n}\n\nexport function readNodeModulesVersion(\n  projectDir: string,\n  packageName: string,\n): string | undefined {\n  const pkgPath = join(projectDir, \"node_modules\", packageName, \"package.json\");\n  if (!existsSync(pkgPath)) return undefined;\n  const pkg = JSON.parse(readFileSync(pkgPath, \"utf-8\")) as { version?: string };\n  return pkg.version;\n}\n\nfunction readSpecifier(pkg: Record<string, unknown>, packageName: string): string | undefined {\n  const deps = (pkg.dependencies ?? {}) as Record<string, string>;\n  const devDeps = (pkg.devDependencies ?? {}) as Record<string, string>;\n  const peerDeps = (pkg.peerDependencies ?? {}) as Record<string, string>;\n  return deps[packageName] || devDeps[packageName] || peerDeps[packageName];\n}\n\nexport function resolveFrameworkPackage(\n  projectDir: string,\n  packageName: string,\n): FrameworkPackageResolution {\n  const pkgPath = join(projectDir, \"package.json\");\n  if (!existsSync(pkgPath)) {\n    return { isLinked: false, isWorkspaceLike: false };\n  }\n\n  const pkg = JSON.parse(readFileSync(pkgPath, \"utf-8\")) as Record<string, unknown>;\n  const specifier = readSpecifier(pkg, packageName);\n\n  if (!specifier) {\n    const catalog = readRootCatalogVersion(projectDir, packageName);\n    const installed = catalog ?? readNodeModulesVersion(projectDir, packageName);\n    return {\n      specifier,\n      installedVersion: installed,\n      isLinked: false,\n      isWorkspaceLike: false,\n    };\n  }\n\n  if (specifier.startsWith(\"link:\")) {\n    return {\n      specifier,\n      installedVersion: readNodeModulesVersion(projectDir, packageName),\n      isLinked: true,\n      isWorkspaceLike: false,\n    };\n  }\n\n  if (specifier.startsWith(\"workspace:\") || specifier.startsWith(\"file:\")) {\n    return {\n      specifier,\n      installedVersion: readNodeModulesVersion(projectDir, packageName),\n      isLinked: false,\n      isWorkspaceLike: true,\n    };\n  }\n\n  if (specifier === \"catalog:\") {\n    const catalog = readRootCatalogVersion(projectDir, packageName);\n    const installed = catalog ?? readNodeModulesVersion(projectDir, packageName);\n    return {\n      specifier,\n      installedVersion: installed,\n      isLinked: false,\n      isWorkspaceLike: false,\n    };\n  }\n\n  return {\n    specifier,\n    installedVersion: stripVersionPrefix(specifier),\n    isLinked: false,\n    isWorkspaceLike: false,\n  };\n}\n\nexport function readInstalledFrameworkVersion(\n  projectDir: string,\n  packageName: string,\n): string | undefined {\n  return resolveFrameworkPackage(projectDir, packageName).installedVersion;\n}\n"],"mappings":";;;;AAUA,SAAS,mBAAmB,SAAyB;CACnD,OAAO,QAAQ,QAAQ,aAAa,EAAE;AACxC;AAEA,SAAgB,uBACd,YACA,aACoB;CACpB,MAAM,UAAU,KAAK,YAAY,cAAc;CAC/C,IAAI,CAAC,WAAW,OAAO,GAAG,OAAO;CAIjC,MAAM,UAHM,KAAK,MAAM,aAAa,SAAS,OAAO,CAGlC,CAAC,CAAC,YAAY,UAAU;CAC1C,OAAO,UAAU,mBAAmB,OAAO,IAAI;AACjD;AAEA,SAAgB,uBACd,YACA,aACoB;CACpB,MAAM,UAAU,KAAK,YAAY,gBAAgB,aAAa,cAAc;CAC5E,IAAI,CAAC,WAAW,OAAO,GAAG,OAAO;CAEjC,OADY,KAAK,MAAM,aAAa,SAAS,OAAO,CAC3C,CAAC,CAAC;AACb;AAEA,SAAS,cAAc,KAA8B,aAAyC;CAC5F,MAAM,OAAQ,IAAI,gBAAgB,CAAC;CACnC,MAAM,UAAW,IAAI,mBAAmB,CAAC;CACzC,MAAM,WAAY,IAAI,oBAAoB,CAAC;CAC3C,OAAO,KAAK,gBAAgB,QAAQ,gBAAgB,SAAS;AAC/D;AAEA,SAAgB,wBACd,YACA,aAC4B;CAC5B,MAAM,UAAU,KAAK,YAAY,cAAc;CAC/C,IAAI,CAAC,WAAW,OAAO,GACrB,OAAO;EAAE,UAAU;EAAO,iBAAiB;CAAM;CAInD,MAAM,YAAY,cADN,KAAK,MAAM,aAAa,SAAS,OAAO,CAClB,GAAG,WAAW;CAEhD,IAAI,CAAC,WAGH,OAAO;EACL;EACA,kBAJc,uBAAuB,YAAY,WAC3B,KAAK,uBAAuB,YAAY,WAAW;EAIzE,UAAU;EACV,iBAAiB;CACnB;CAGF,IAAI,UAAU,WAAW,OAAO,GAC9B,OAAO;EACL;EACA,kBAAkB,uBAAuB,YAAY,WAAW;EAChE,UAAU;EACV,iBAAiB;CACnB;CAGF,IAAI,UAAU,WAAW,YAAY,KAAK,UAAU,WAAW,OAAO,GACpE,OAAO;EACL;EACA,kBAAkB,uBAAuB,YAAY,WAAW;EAChE,UAAU;EACV,iBAAiB;CACnB;CAGF,IAAI,cAAc,YAGhB,OAAO;EACL;EACA,kBAJc,uBAAuB,YAAY,WAC3B,KAAK,uBAAuB,YAAY,WAAW;EAIzE,UAAU;EACV,iBAAiB;CACnB;CAGF,OAAO;EACL;EACA,kBAAkB,mBAAmB,SAAS;EAC9C,UAAU;EACV,iBAAiB;CACnB;AACF;AAEA,SAAgB,8BACd,YACA,aACoB;CACpB,OAAO,wBAAwB,YAAY,WAAW,CAAC,CAAC;AAC1D"}