{"version":3,"file":"registry-use.mjs","names":[],"sources":["../src/registry-use.ts"],"sourcesContent":["import type { BosConfigInput } from \"./types\";\n\ntype ComposableConfig = Record<string, unknown> & {\n  app?: Record<string, unknown>;\n  plugins?: Record<string, unknown>;\n};\n\nexport function listComposableSections(config: BosConfigInput): string[] {\n  const source = config as ComposableConfig;\n  const sections: string[] = [];\n\n  for (const key of [\"host\", \"ui\", \"api\", \"auth\"]) {\n    if (source.app?.[key]) sections.push(`app.${key}`);\n  }\n  for (const key of Object.keys(source.plugins ?? {})) {\n    sections.push(`plugins.${key}`);\n  }\n\n  return sections;\n}\n\nexport function applyRegistrySections(\n  local: BosConfigInput,\n  remote: BosConfigInput,\n  sections: string[],\n): { config: BosConfigInput; applied: string[] } {\n  const available = listComposableSections(remote);\n  const unknown = sections.filter((section) => !available.includes(section));\n  if (unknown.length > 0) {\n    throw new Error(\n      `Unknown section(s): ${unknown.join(\", \")}. Available: ${available.join(\", \")}`,\n    );\n  }\n\n  const merged = structuredClone(local) as ComposableConfig;\n\n  for (const section of sections) {\n    if (section.startsWith(\"app.\")) {\n      const key = section.slice(\"app.\".length);\n      merged.app = { ...merged.app, [key]: (remote as ComposableConfig).app?.[key] };\n    } else {\n      const key = section.slice(\"plugins.\".length);\n      merged.plugins = {\n        ...merged.plugins,\n        [key]: (remote as ComposableConfig).plugins?.[key],\n      };\n    }\n  }\n\n  return { config: merged as BosConfigInput, applied: sections };\n}\n"],"mappings":";AAOA,SAAgB,uBAAuB,QAAkC;CACvE,MAAM,SAAS;CACf,MAAM,WAAqB,CAAC;CAE5B,KAAK,MAAM,OAAO;EAAC;EAAQ;EAAM;EAAO;CAAM,GAC5C,IAAI,OAAO,MAAM,MAAM,SAAS,KAAK,OAAO,KAAK;CAEnD,KAAK,MAAM,OAAO,OAAO,KAAK,OAAO,WAAW,CAAC,CAAC,GAChD,SAAS,KAAK,WAAW,KAAK;CAGhC,OAAO;AACT;AAEA,SAAgB,sBACd,OACA,QACA,UAC+C;CAC/C,MAAM,YAAY,uBAAuB,MAAM;CAC/C,MAAM,UAAU,SAAS,QAAQ,YAAY,CAAC,UAAU,SAAS,OAAO,CAAC;CACzE,IAAI,QAAQ,SAAS,GACnB,MAAM,IAAI,MACR,uBAAuB,QAAQ,KAAK,IAAI,EAAE,eAAe,UAAU,KAAK,IAAI,GAC9E;CAGF,MAAM,SAAS,gBAAgB,KAAK;CAEpC,KAAK,MAAM,WAAW,UACpB,IAAI,QAAQ,WAAW,MAAM,GAAG;EAC9B,MAAM,MAAM,QAAQ,MAAM,CAAa;EACvC,OAAO,MAAM;GAAE,GAAG,OAAO;IAAM,MAAO,OAA4B,MAAM;EAAK;CAC/E,OAAO;EACL,MAAM,MAAM,QAAQ,MAAM,CAAiB;EAC3C,OAAO,UAAU;GACf,GAAG,OAAO;IACT,MAAO,OAA4B,UAAU;EAChD;CACF;CAGF,OAAO;EAAE,QAAQ;EAA0B,SAAS;CAAS;AAC/D"}