{"version":3,"file":"framework-version.cjs","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;AACnD,QAAO,QAAQ,QAAQ,aAAa,GAAG;;AAGzC,SAAgB,uBACd,YACA,aACoB;CACpB,MAAM,8BAAe,YAAY,eAAe;AAChD,KAAI,yBAAY,QAAQ,CAAE,QAAO;CAIjC,MAAM,UAHM,KAAK,gCAAmB,SAAS,QAAQ,CAGlC,CAAC,YAAY,UAAU;AAC1C,QAAO,UAAU,mBAAmB,QAAQ,GAAG;;AAGjD,SAAgB,uBACd,YACA,aACoB;CACpB,MAAM,8BAAe,YAAY,gBAAgB,aAAa,eAAe;AAC7E,KAAI,yBAAY,QAAQ,CAAE,QAAO;AAEjC,QADY,KAAK,gCAAmB,SAAS,QAAQ,CAC3C,CAAC;;AAGb,SAAS,cAAc,KAA8B,aAAyC;CAC5F,MAAM,OAAQ,IAAI,gBAAgB,EAAE;CACpC,MAAM,UAAW,IAAI,mBAAmB,EAAE;CAC1C,MAAM,WAAY,IAAI,oBAAoB,EAAE;AAC5C,QAAO,KAAK,gBAAgB,QAAQ,gBAAgB,SAAS;;AAG/D,SAAgB,wBACd,YACA,aAC4B;CAC5B,MAAM,8BAAe,YAAY,eAAe;AAChD,KAAI,yBAAY,QAAQ,CACtB,QAAO;EAAE,UAAU;EAAO,iBAAiB;EAAO;CAIpD,MAAM,YAAY,cADN,KAAK,gCAAmB,SAAS,QAAQ,CAClB,EAAE,YAAY;AAEjD,KAAI,CAAC,UAGH,QAAO;EACL;EACA,kBAJc,uBAAuB,YAAY,YAC1B,IAAI,uBAAuB,YAAY,YAAY;EAI1E,UAAU;EACV,iBAAiB;EAClB;AAGH,KAAI,UAAU,WAAW,QAAQ,CAC/B,QAAO;EACL;EACA,kBAAkB,uBAAuB,YAAY,YAAY;EACjE,UAAU;EACV,iBAAiB;EAClB;AAGH,KAAI,UAAU,WAAW,aAAa,IAAI,UAAU,WAAW,QAAQ,CACrE,QAAO;EACL;EACA,kBAAkB,uBAAuB,YAAY,YAAY;EACjE,UAAU;EACV,iBAAiB;EAClB;AAGH,KAAI,cAAc,WAGhB,QAAO;EACL;EACA,kBAJc,uBAAuB,YAAY,YAC1B,IAAI,uBAAuB,YAAY,YAAY;EAI1E,UAAU;EACV,iBAAiB;EAClB;AAGH,QAAO;EACL;EACA,kBAAkB,mBAAmB,UAAU;EAC/C,UAAU;EACV,iBAAiB;EAClB;;AAGH,SAAgB,8BACd,YACA,aACoB;AACpB,QAAO,wBAAwB,YAAY,YAAY,CAAC"}