{"version":3,"file":"build.cjs","names":["resolveLocalDevelopmentPath","run","colors","parseDeployLines","padRight","formatDuration","icons","syncResolvedSharedDeps","process","applyDeployResults"],"sources":["../src/build.ts"],"sourcesContent":["import { existsSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { access, readFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport process from \"node:process\";\nimport { formatDuration } from \"./cli/timing\";\nimport { resolveLocalDevelopmentPath } from \"./config\";\nimport type { WorkspaceDeployResult } from \"./contract\";\nimport { applyDeployResults, type DeployResultEntry, parseDeployLines } from \"./integrity\";\nimport { syncResolvedSharedDeps } from \"./shared-deps\";\nimport type { BosConfig, BosPluginRef, RuntimeConfig } from \"./types\";\nimport { run } from \"./utils/run\";\nimport { padRight } from \"./utils/string\";\nimport { colors, icons } from \"./utils/theme\";\n\nconst buildCommands: Record<string, { cmd: string; args: string[] }> = {\n  host: { cmd: \"bun\", args: [\"run\", \"build\"] },\n  ui: { cmd: \"bun\", args: [\"run\", \"build\"] },\n  api: { cmd: \"bun\", args: [\"run\", \"build\"] },\n};\n\ntype WorkspaceTarget = {\n  key: string;\n  kind: \"app\" | \"plugin\";\n  path: string;\n};\n\nexport function getPluginRef(entry: string | BosPluginRef | undefined | null): BosPluginRef | null {\n  if (!entry || typeof entry === \"string\") return null;\n  return entry;\n}\n\nexport async function fileExists(path: string): Promise<boolean> {\n  try {\n    await access(path);\n    return true;\n  } catch {\n    return false;\n  }\n}\n\nexport async function readJsonFile<T>(path: string): Promise<T> {\n  return JSON.parse(await readFile(path, \"utf8\")) as T;\n}\n\nfunction resolveWorkspaceTarget(\n  key: string,\n  bosConfig: BosConfig | null,\n  runtimeConfig: RuntimeConfig | null,\n  configDir: string,\n): WorkspaceTarget | null {\n  if (bosConfig?.app && key in bosConfig.app) {\n    const appEntry = (bosConfig.app as Record<string, { development?: string }>)[key];\n    const devPath = resolveLocalDevelopmentPath(appEntry?.development, configDir);\n    if (devPath) {\n      return {\n        key,\n        kind: \"app\",\n        path: devPath,\n      };\n    }\n    return {\n      key,\n      kind: \"app\",\n      path: `${configDir}/${key}`,\n    };\n  }\n\n  const runtimePlugin = runtimeConfig?.plugins?.[key];\n  const pluginPath =\n    runtimePlugin?.localPath ??\n    resolveLocalDevelopmentPath(getPluginRef(bosConfig?.plugins?.[key])?.development, configDir);\n  if (pluginPath) {\n    return {\n      key,\n      kind: \"plugin\",\n      path: pluginPath,\n    };\n  }\n\n  return null;\n}\n\nexport function selectWorkspaceTargets(packages: string, bosConfig: BosConfig | null): string[] {\n  const allPackages = [\n    ...Object.keys(bosConfig?.app ?? {}),\n    ...Object.keys(bosConfig?.plugins ?? {}),\n  ];\n  if (packages === \"all\") {\n    return allPackages;\n  }\n\n  return packages\n    .split(\",\")\n    .map((pkg) => pkg.trim())\n    .filter((pkg) => allPackages.includes(pkg));\n}\n\ninterface BuildAttemptResult {\n  success: boolean;\n  url?: string;\n  error?: string;\n  warnings?: string[];\n  exitCode: number;\n  output: string;\n  deployEntries?: DeployResultEntry[];\n}\n\nasync function runBuildAttempt(\n  cmd: string,\n  args: string[],\n  cwd: string,\n  env: Record<string, string>,\n  verbose: boolean,\n  wsKey: string,\n): Promise<BuildAttemptResult> {\n  let zephyrAuthShown = false;\n  const result = await run(cmd, args, {\n    cwd,\n    env,\n    capture: true,\n    onChunk: (stream, chunk) => {\n      if (verbose) {\n        if (stream === \"stdout\") process.stdout.write(chunk);\n        else process.stderr.write(chunk);\n      }\n      if (zephyrAuthShown) return;\n      const text = chunk.toString(\"utf-8\");\n      if (\n        /Authentication required.*log in to Zephyr/i.test(text) ||\n        /auth\\.zephyr-cloud\\.io\\/authorize/.test(text)\n      ) {\n        zephyrAuthShown = true;\n        const urlMatch = text.match(/https:\\/\\/auth\\.zephyr-cloud\\.io\\/authorize\\S+/);\n        console.log();\n        console.log(colors.yellow(`  ⚠ Zephyr authentication required for ${wsKey}`));\n        if (urlMatch) {\n          console.log(`    ${colors.cyan(urlMatch[0])}`);\n        }\n        console.log(colors.dim(\"    Waiting for authentication...\"));\n        console.log();\n      }\n    },\n  });\n  const stdout = result?.stdout ?? \"\";\n  const stderr = result?.stderr ?? \"\";\n  const exitCode = result?.exitCode ?? 0;\n  const output = `${stdout}\\n${stderr}`;\n\n  const deployEntries = parseDeployLines(output);\n\n  if (deployEntries.length > 0) {\n    const result: BuildAttemptResult = {\n      success: true,\n      url: deployEntries[0]?.url,\n      exitCode: 0,\n      output,\n      deployEntries,\n    };\n    if (exitCode !== 0) {\n      const errorLines = output\n        .split(\"\\n\")\n        .filter((line) => /\\bERROR\\b/.test(line) || line.startsWith(\"Rspack compiled with\"))\n        .slice(0, 5);\n      if (errorLines.length > 0) {\n        result.warnings = errorLines.map((l) => l.trim());\n        if (!verbose) {\n          console.log(\n            `  ${colors.yellow(\"⚠\")} Build completed with errors (exit code ${exitCode}) — Zephyr deployed successfully`,\n          );\n          for (const line of errorLines) {\n            console.log(`    ${colors.dim(line.trim())}`);\n          }\n        }\n      }\n    }\n    return result;\n  }\n\n  if (exitCode !== 0) {\n    const lastLines = output.trim().split(\"\\n\").slice(-5).join(\"\\n\");\n    return {\n      success: false,\n      error: `Build failed (exit code ${exitCode})\\n${lastLines}`,\n      exitCode,\n      output,\n    };\n  }\n\n  const deployMatch = output.match(/🚀.*Deployed:\\s*(https?:\\S+)/);\n  if (deployMatch) {\n    return { success: true, url: deployMatch[1], exitCode: 0, output };\n  }\n\n  const zeMatch = output.match(/ZE\\d{4,}/);\n  if (zeMatch) {\n    return {\n      success: false,\n      error: `Zephyr upload failed (${zeMatch[0]})`,\n      exitCode: 0,\n      output,\n    };\n  }\n\n  if (env.DEPLOY === \"true\") {\n    return {\n      success: false,\n      error: \"No deploy URL found (Zephyr may have failed)\",\n      exitCode: 0,\n      output,\n    };\n  }\n  return { success: true, exitCode: 0, output };\n}\n\ninterface InternalWorkspaceResult extends WorkspaceDeployResult {\n  deployEntries?: DeployResultEntry[];\n}\n\nasync function buildOneWorkspace(\n  ws: WorkspaceTarget,\n  env: Record<string, string>,\n  opts: { deploy: boolean; verbose?: boolean },\n): Promise<InternalWorkspaceResult> {\n  const pkgJson = await readJsonFile<{\n    scripts?: Record<string, string>;\n  }>(`${ws.path}/package.json`);\n  const shouldDeployScript = opts.deploy && pkgJson.scripts?.deploy;\n  const buildConfig = shouldDeployScript\n    ? { cmd: \"bun\", args: [\"run\", \"deploy\"] }\n    : (buildCommands[ws.key] ?? { cmd: \"bun\", args: [\"run\", \"build\"] });\n\n  const wsEnv = { ...env };\n\n  const startTime = Date.now();\n  let attempt = await runBuildAttempt(\n    buildConfig.cmd,\n    buildConfig.args,\n    ws.path,\n    wsEnv,\n    opts.verbose ?? false,\n    ws.key,\n  );\n\n  let retried = false;\n  const firstAttempt: BuildAttemptResult | undefined = attempt.success ? undefined : { ...attempt };\n\n  if (!attempt.success && attempt.exitCode === 0 && opts.deploy) {\n    if (!opts.verbose) {\n      console.log(`  ${colors.yellow(\"↻\")} ${padRight(ws.key, 28)} retrying...`);\n    }\n    retried = true;\n    attempt = await runBuildAttempt(\n      buildConfig.cmd,\n      buildConfig.args,\n      ws.path,\n      wsEnv,\n      opts.verbose ?? false,\n      ws.key,\n    );\n\n    if (!attempt.success && firstAttempt) {\n      attempt.error = `First attempt: ${firstAttempt.error}\\nRetry: ${attempt.error}`;\n    }\n  }\n\n  const durationMs = Date.now() - startTime;\n  const result: InternalWorkspaceResult = {\n    key: ws.key,\n    kind: ws.kind,\n    success: attempt.success,\n    url: attempt.url,\n    error: attempt.error,\n    warnings: attempt.warnings,\n    deployEntries: attempt.deployEntries,\n    durationMs,\n    retried: retried ? true : undefined,\n  };\n\n  if (!opts.verbose) {\n    const name = padRight(ws.key, 28);\n    if (result.success) {\n      const duration = formatDuration(durationMs);\n      const retryTag = retried ? \" (retried)\" : \"\";\n      console.log(`  ${colors.green(icons.ok)} ${name} ${colors.dim(duration + retryTag)}`);\n    } else {\n      const errorLine = (result.error ?? \"Failed\").split(\"\\n\")[0];\n      console.log(`  ${colors.error(icons.err)} ${name} ${errorLine}`);\n    }\n  }\n\n  return result;\n}\n\nexport async function buildWorkspaceTargets(opts: {\n  configDir: string;\n  bosConfig: BosConfig | null;\n  runtimeConfig: RuntimeConfig | null;\n  targets: string[];\n  deploy: boolean;\n  verbose?: boolean;\n}): Promise<{\n  built: string[];\n  skipped: string[];\n  deployResults?: WorkspaceDeployResult[];\n}> {\n  const existing: WorkspaceTarget[] = [];\n  const skipped: string[] = [];\n\n  for (const target of opts.targets) {\n    const resolved = resolveWorkspaceTarget(\n      target,\n      opts.bosConfig,\n      opts.runtimeConfig,\n      opts.configDir,\n    );\n    if (!resolved) {\n      skipped.push(target);\n      continue;\n    }\n\n    const exists = await fileExists(`${resolved.path}/package.json`);\n    if (exists) existing.push(resolved);\n    else skipped.push(target);\n  }\n\n  if (existing.length === 0) {\n    return { built: [], skipped };\n  }\n\n  const sharedSync = await syncResolvedSharedDeps({\n    configDir: opts.configDir,\n    hostMode: \"local\",\n    bosConfig: opts.bosConfig ?? undefined,\n    extendsChain: [],\n  });\n  if (sharedSync.catalogChanged) {\n    await run(\"bun\", [\"install\"], { cwd: opts.configDir });\n  }\n\n  const shouldBuildPlugin = existing.some((entry) => entry.key === \"api\");\n\n  const forceRebuild = opts.deploy;\n  const buildTasks: Promise<void>[] = [buildEverythingDevQuietly(opts.configDir, forceRebuild)];\n  if (shouldBuildPlugin) {\n    buildTasks.push(buildEveryPluginQuietly(opts.configDir, forceRebuild));\n  }\n  await Promise.all(buildTasks);\n\n  const env: Record<string, string> = {\n    ...process.env,\n    NODE_ENV: opts.deploy ? \"production\" : \"development\",\n  };\n  if (opts.deploy) {\n    env.DEPLOY = \"true\";\n  } else {\n    delete env.DEPLOY;\n  }\n\n  const bosConfigPath = join(opts.configDir, \"bos.config.json\");\n  let configSnapshot: string | undefined;\n  if (opts.deploy && existsSync(bosConfigPath)) {\n    configSnapshot = readFileSync(bosConfigPath, \"utf-8\");\n  }\n\n  const orderedExisting = opts.deploy\n    ? [\n        ...existing.filter((entry) => entry.kind === \"app\" && entry.key !== \"host\"),\n        ...existing.filter((entry) => entry.kind === \"plugin\"),\n        ...existing.filter((entry) => entry.kind === \"app\" && entry.key === \"host\"),\n      ]\n    : existing;\n\n  const parallelGroup = opts.deploy\n    ? orderedExisting.filter((e) => e.key !== \"host\")\n    : orderedExisting;\n  const sequentialGroup = opts.deploy ? orderedExisting.filter((e) => e.key === \"host\") : [];\n\n  const built: string[] = [];\n  const deployResults: WorkspaceDeployResult[] = [];\n\n  if (opts.deploy && parallelGroup.length > 0) {\n    const total = parallelGroup.length + sequentialGroup.length;\n    console.log();\n    console.log(`  Building ${total} workspace${total > 1 ? \"s\" : \"\"}...`);\n    console.log();\n\n    const results = await Promise.allSettled(\n      parallelGroup.map((ws) => buildOneWorkspace(ws, env, opts)),\n    );\n\n    const allDeployEntries: DeployResultEntry[] = [];\n    for (let i = 0; i < parallelGroup.length; i++) {\n      const ws = parallelGroup[i];\n      const result = results[i];\n      if (result.status === \"fulfilled\") {\n        if (result.value.success) {\n          built.push(ws.key);\n        }\n        if (result.value.deployEntries) {\n          allDeployEntries.push(...result.value.deployEntries);\n        }\n        const { deployEntries: _deployEntries, ...deployResult } = result.value;\n        deployResults.push(deployResult);\n      } else {\n        deployResults.push({\n          key: ws.key,\n          kind: ws.kind,\n          success: false,\n          error: result.reason?.message ?? \"Unknown error\",\n        });\n      }\n    }\n\n    if (configSnapshot && allDeployEntries.length > 0) {\n      const config = JSON.parse(configSnapshot) as Record<string, unknown>;\n      const merged = applyDeployResults(config, allDeployEntries);\n      writeFileSync(bosConfigPath, `${JSON.stringify(merged, null, 2)}\\n`);\n    }\n\n    for (const ws of sequentialGroup) {\n      const result = await buildOneWorkspace(ws, env, opts);\n      if (result.success) {\n        built.push(ws.key);\n      }\n      if (result.deployEntries) {\n        const hostEntries = result.deployEntries.filter((r) => r.urlField.startsWith(\"app.host\"));\n        if (hostEntries.length > 0 && existsSync(bosConfigPath)) {\n          const currentConfig = JSON.parse(readFileSync(bosConfigPath, \"utf-8\")) as Record<\n            string,\n            unknown\n          >;\n          const merged = applyDeployResults(currentConfig, hostEntries);\n          writeFileSync(bosConfigPath, `${JSON.stringify(merged, null, 2)}\\n`);\n        }\n      }\n      const { deployEntries: _deployEntries, ...sequentialResult } = result;\n      deployResults.push(sequentialResult);\n    }\n\n    console.log();\n  } else {\n    for (const resolved of orderedExisting) {\n      const buildConfig = buildCommands[resolved.key] ?? {\n        cmd: \"bun\",\n        args: [\"run\", \"build\"],\n      };\n\n      await run(buildConfig.cmd, buildConfig.args, {\n        cwd: resolved.path,\n        env,\n      });\n      built.push(resolved.key);\n    }\n  }\n\n  return { built, skipped, deployResults: opts.deploy ? deployResults : undefined };\n}\n\nexport async function buildEveryPluginQuietly(cwd: string, force = false) {\n  const packageDir = `${cwd}/packages/every-plugin`;\n  const packageExists = await fileExists(`${packageDir}/package.json`);\n  if (!packageExists) {\n    return;\n  }\n\n  const distPath = `${cwd}/packages/every-plugin/dist/build/rspack/plugin.mjs`;\n  const distExists = await fileExists(distPath);\n\n  if (distExists && !force) {\n    return;\n  }\n\n  const result = (await run(\"bun\", [\"run\", \"--cwd\", \"packages/every-plugin\", \"build\"], {\n    cwd,\n    capture: true,\n  })) as { stdout: string; stderr: string; exitCode: number };\n\n  if (result.exitCode === 0) {\n    return;\n  }\n\n  if (result.stdout.trim()) {\n    process.stdout.write(result.stdout);\n  }\n\n  if (result.stderr.trim()) {\n    process.stderr.write(result.stderr);\n  }\n\n  throw new Error(\n    `bun run --cwd packages/every-plugin build failed with exit code ${result.exitCode}`,\n  );\n}\n\nexport async function buildEverythingDevQuietly(cwd: string, force = false) {\n  const packageDir = `${cwd}/packages/everything-dev`;\n  const packageExists = await fileExists(`${packageDir}/package.json`);\n  if (!packageExists) {\n    return;\n  }\n\n  const distPath = `${cwd}/packages/everything-dev/dist/index.mjs`;\n  const distExists = await fileExists(distPath);\n\n  if (distExists && !force) {\n    return;\n  }\n\n  const result = (await run(\"bun\", [\"run\", \"--cwd\", \"packages/everything-dev\", \"build\"], {\n    cwd,\n    capture: true,\n  })) as { stdout: string; stderr: string; exitCode: number };\n\n  if (result.exitCode === 0) {\n    return;\n  }\n\n  if (result.stdout.trim()) {\n    process.stdout.write(result.stdout);\n  }\n\n  if (result.stderr.trim()) {\n    process.stderr.write(result.stderr);\n  }\n\n  throw new Error(\n    `bun run --cwd packages/everything-dev build failed with exit code ${result.exitCode}`,\n  );\n}\n"],"mappings":"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"}