{"version":3,"file":"linked-packages.mjs","names":[],"sources":["../../../src/services/workspace/linked-packages.ts"],"sourcesContent":["import { existsSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { resolveLocalDevelopmentPath } from \"../../config\";\nimport type { BosConfig, RuntimeConfig } from \"../../types\";\n\nexport interface LocalPackage {\n  readonly name: string;\n  readonly dir: string;\n}\n\nexport function detectLocalPackages(\n  bosConfig?: BosConfig,\n  runtimeConfig?: RuntimeConfig,\n  root: string = process.cwd(),\n): LocalPackage[] {\n  const packages: LocalPackage[] = [];\n  const configDir = root;\n\n  const uiLocalPath =\n    runtimeConfig?.ui.localPath ??\n    resolveLocalDevelopmentPath(bosConfig?.app.ui.development, configDir);\n  if (uiLocalPath && existsSync(join(uiLocalPath, \"package.json\"))) {\n    packages.push({ name: \"ui\", dir: uiLocalPath });\n  }\n\n  const apiLocalPath =\n    runtimeConfig?.api.localPath ??\n    resolveLocalDevelopmentPath(bosConfig?.app.api.development, configDir);\n  if (apiLocalPath && existsSync(join(apiLocalPath, \"package.json\"))) {\n    packages.push({ name: \"api\", dir: apiLocalPath });\n  }\n\n  const hostLocalPath =\n    runtimeConfig?.host?.localPath ??\n    resolveLocalDevelopmentPath(bosConfig?.app.host.development, configDir);\n  if (hostLocalPath && existsSync(join(hostLocalPath, \"package.json\"))) {\n    packages.push({ name: \"host\", dir: hostLocalPath });\n  } else if (existsSync(join(configDir, \"host\", \"package.json\"))) {\n    packages.push({ name: \"host\", dir: join(configDir, \"host\") });\n  }\n\n  for (const [pluginId, pluginConfig] of Object.entries(runtimeConfig?.plugins ?? {})) {\n    if (pluginConfig.localPath && existsSync(join(pluginConfig.localPath, \"package.json\"))) {\n      packages.push({ name: `plugin:${pluginId}`, dir: pluginConfig.localPath });\n    }\n    if (pluginConfig.ui?.localPath && existsSync(join(pluginConfig.ui.localPath, \"package.json\"))) {\n      packages.push({ name: `plugin-ui:${pluginId}`, dir: pluginConfig.ui.localPath });\n    }\n  }\n\n  const authLocalPath =\n    runtimeConfig?.auth?.localPath ??\n    resolveLocalDevelopmentPath(bosConfig?.app.auth?.development, configDir);\n  if (authLocalPath && existsSync(join(authLocalPath, \"package.json\"))) {\n    packages.push({ name: \"auth\", dir: authLocalPath });\n  }\n\n  return packages;\n}\n"],"mappings":";;;;;AAUA,SAAgB,oBACd,WACA,eACA,OAAe,QAAQ,IAAI,GACX;CAChB,MAAM,WAA2B,CAAC;CAClC,MAAM,YAAY;CAElB,MAAM,cACJ,eAAe,GAAG,aAClB,4BAA4B,WAAW,IAAI,GAAG,aAAa,SAAS;CACtE,IAAI,eAAe,WAAW,KAAK,aAAa,cAAc,CAAC,GAC7D,SAAS,KAAK;EAAE,MAAM;EAAM,KAAK;CAAY,CAAC;CAGhD,MAAM,eACJ,eAAe,IAAI,aACnB,4BAA4B,WAAW,IAAI,IAAI,aAAa,SAAS;CACvE,IAAI,gBAAgB,WAAW,KAAK,cAAc,cAAc,CAAC,GAC/D,SAAS,KAAK;EAAE,MAAM;EAAO,KAAK;CAAa,CAAC;CAGlD,MAAM,gBACJ,eAAe,MAAM,aACrB,4BAA4B,WAAW,IAAI,KAAK,aAAa,SAAS;CACxE,IAAI,iBAAiB,WAAW,KAAK,eAAe,cAAc,CAAC,GACjE,SAAS,KAAK;EAAE,MAAM;EAAQ,KAAK;CAAc,CAAC;MAC7C,IAAI,WAAW,KAAK,WAAW,QAAQ,cAAc,CAAC,GAC3D,SAAS,KAAK;EAAE,MAAM;EAAQ,KAAK,KAAK,WAAW,MAAM;CAAE,CAAC;CAG9D,KAAK,MAAM,CAAC,UAAU,iBAAiB,OAAO,QAAQ,eAAe,WAAW,CAAC,CAAC,GAAG;EACnF,IAAI,aAAa,aAAa,WAAW,KAAK,aAAa,WAAW,cAAc,CAAC,GACnF,SAAS,KAAK;GAAE,MAAM,UAAU;GAAY,KAAK,aAAa;EAAU,CAAC;EAE3E,IAAI,aAAa,IAAI,aAAa,WAAW,KAAK,aAAa,GAAG,WAAW,cAAc,CAAC,GAC1F,SAAS,KAAK;GAAE,MAAM,aAAa;GAAY,KAAK,aAAa,GAAG;EAAU,CAAC;CAEnF;CAEA,MAAM,gBACJ,eAAe,MAAM,aACrB,4BAA4B,WAAW,IAAI,MAAM,aAAa,SAAS;CACzE,IAAI,iBAAiB,WAAW,KAAK,eAAe,cAAc,CAAC,GACjE,SAAS,KAAK;EAAE,MAAM;EAAQ,KAAK;CAAc,CAAC;CAGpD,OAAO;AACT"}