import { printBuildComplete } from './build/buildReport';

import type { Config } from '@react-router/dev/config';

/**
 * React Router v7 framework 模式配置。
 *
 * - appDirectory: 源码根目录，routes.ts / root.tsx / entry.client.tsx 均位于此。
 * - ssr: false —— 纯静态预渲染（SPA + prerender），不部署常驻 Node 服务，对 CF 加速零影响。
 *   注意：ssr:false 仅关闭「运行时」服务端渲染；构建时仍会在 Node 端预渲染 root 及 prerender 列表中的路由，
 *   因此路由代码必须 SSR 安全（不能在渲染期直接访问 window 等浏览器 API）。
 * - prerender: 预渲染的静态路径列表。多语言采用路径前缀（/en/...），当前仅启用 en-US，
 *   将来启用其它语言时把对应 /xx/... 路径追加进来即可。未列出的路径由 SPA fallback 承载。
 */
export default {
    appDirectory: 'src',
    // 输出目录改为 dist（默认是 build，会与项目里存放自研 Vite 插件的 build/ 目录冲突并被清空）。
    // 产物结构：dist/client（静态站点，含预渲染 HTML 与资源）、dist/server（构建期预渲染用，ssr:false 时运行时不部署）。
    buildDirectory: 'dist',
    ssr: false,
    async prerender() {
        return ['/en/home', '/en/privacy', '/en/terms-of-service'];
    },
    // SSG 构建收尾。buildEnd 晚于 client/ssr 双环境构建、prerender、删除 server 目录等全部步骤，
    // 是整个 react-router build 的最后一个钩子，「🎉 恭喜打包完成」在此打印才真正是最后一行。
    // 体积统计客户端产物目录 dist/client（此时 dist/server 已因 ssr:false 被删）。
    async buildEnd({ reactRouterConfig }) {
        await printBuildComplete(`${reactRouterConfig.buildDirectory}/client`);
    },
} satisfies Config;
