{"version":3,"file":"cli.mjs","sources":["../../src/node/constants.ts","../../src/node/static-site-generation/index.ts","../../src/node/cli.ts"],"sourcesContent":["import { resolve } from 'path'\nimport { fileURLToPath } from 'url'\n\nexport const PKG_ROOT = resolve(fileURLToPath(import.meta.url), '../../..')\nexport const CLIENT_PATH = resolve(PKG_ROOT, 'dist/client-bundles')\n","import { build as viteBuild } from 'vite'\nimport type { ResolvedConfig, Rollup } from 'vite'\nimport { minify } from 'html-minifier-terser'\nimport * as path from 'path'\nimport fs from 'fs-extra'\nimport { pathToFileURL } from 'node:url'\n\nimport { CLIENT_PATH } from '../constants'\nimport type { SSRPlugin } from '../../../clientTypes'\nimport type { staticSiteGenerationConfig } from '../types'\n\ntype RollupOutput = Rollup.RollupOutput\n\nconst minifyOptions = {\n  keepClosingSlash: true,\n  removeRedundantAttributes: true,\n  removeStyleLinkTypeAttributes: true,\n  useShortDoctype: true,\n  minifyCSS: true,\n}\n\nexport async function ssrBuild(\n  viteConfig: ResolvedConfig,\n  argv: any,\n  ssrConfig?: staticSiteGenerationConfig\n) {\n  // ssr build should not use hash router\n  // if (viteOptions?.define?.['__HASH_ROUTER__'])\n  //   viteOptions!.define!['__HASH_ROUTER__'] = false\n  const root = viteConfig.root\n  let outDir = viteConfig.build?.outDir ?? 'dist'\n  outDir = path.resolve(root, outDir)\n  await fs.emptyDir(outDir)\n\n  const ssrOutDir = path.join(outDir, 'ssr-tmp')\n  const clientOutDir = path.join(outDir, 'client-tmp')\n\n  console.log('\\n\\npreparing vite pages ssr bundle...')\n  const ssrOutput = await viteBuild({\n    root,\n    configFile: viteConfig.configFile,\n    // mode: \"development\",\n    build: {\n      ssr: true,\n      cssCodeSplit: false,\n      rollupOptions: {\n        input: path.join(CLIENT_PATH, 'entries', 'ssg-server.mjs'),\n        // preserveEntrySignatures: 'allow-extension',\n        output: {\n          entryFileNames: '[name].mjs',\n          chunkFileNames: '[name]-[hash].mjs',\n        },\n        onwarn(warning, defaultHandler) {\n          // suppress warning like: /@react-pages/pages/guide/react/getting-started is dynamically imported by /@react-pages/pages but also statically imported by /@react-pages/ssrData, dynamic import will not move module into another chunk.\n          if (\n            warning.plugin === 'vite:reporter' &&\n            warning.message.includes('/@react-pages/ssrData') &&\n            warning.message.includes(\n              'dynamic import will not move module into another chunk'\n            )\n          )\n            return\n          defaultHandler(warning)\n        },\n      },\n      outDir: ssrOutDir,\n      minify: false,\n    },\n    ssr: {\n      // `vite-pages-theme-doc/dist/index.js` have `import './index.css'`\n      // so it needs to be bundled by vite before executed by node.js.\n      // This is coupled to theme-doc,\n      // but we don't want to ask users to put this in their vite config.\n      // So let's put it here :)\n      noExternal: ['vite-pages-theme-doc'],\n    },\n  })\n\n  console.log('\\n\\nrendering html...')\n\n  const ssrPluginPromises: Promise<SSRPlugin>[] = []\n  ;(global as any)['register_vite_pages_ssr_plugin'] = (\n    importSSRPlugin: () => Promise<SSRPlugin>\n  ) => {\n    ssrPluginPromises.push(importSSRPlugin())\n  }\n  process.env.VITE_PAGES_IS_SSR = 'true'\n\n  const { renderToString, ssrData } = await import(\n    pathToFileURL(path.join(ssrOutDir, 'ssg-server.mjs')).toString()\n  )\n\n  const ssrPlugins = await Promise.all(ssrPluginPromises)\n  ssrPlugins.forEach((plugin, index) => {\n    // validate ssr plugins\n    if (!plugin?.id) {\n      console.error('invalid ssr plugins:', ssrPlugins)\n      throw new Error('invalid ssr plugin: no plugin id')\n    }\n    const idx = ssrPlugins.findIndex((p) => p.id === plugin.id)\n    if (idx !== index) {\n      console.error('invalid ssr plugins:', ssrPlugins)\n      throw new Error(`duplicate ssr plugin: ${plugin.id}`)\n    }\n  })\n\n  const pagePaths = Object.keys(ssrData)\n\n  console.log('\\n\\npreparing vite pages client bundle...')\n  const _clientResult = await viteBuild({\n    root,\n    configFile: viteConfig.configFile,\n    build: {\n      cssCodeSplit: false,\n      rollupOptions: {\n        input: path.join(CLIENT_PATH, 'entries', 'ssg-client.mjs'),\n        preserveEntrySignatures: 'allow-extension',\n      },\n      assetsDir: 'assets',\n      outDir: clientOutDir,\n    },\n  })\n  let clientResult: RollupOutput\n  if (Array.isArray(_clientResult)) {\n    if (_clientResult.length !== 1)\n      throw new Error(`expect viteBuild to have only one BuildResult`)\n    clientResult = _clientResult[0]\n  } else {\n    clientResult = _clientResult as RollupOutput\n  }\n\n  const entryChunk = (() => {\n    const _entryChunks = clientResult.output.filter((chunkOrAsset) => {\n      return chunkOrAsset.type === 'chunk' && chunkOrAsset.isEntry\n    })\n    if (_entryChunks.length !== 1) {\n      throw new Error(`Expect one entryChunk. Got ${_entryChunks.length}.`)\n    }\n    return _entryChunks[0]\n  })()\n\n  const cssChunks = clientResult.output.filter((chunk) => {\n    return chunk.type === 'asset' && chunk.fileName.endsWith('.css')\n  })\n\n  const basePath = viteConfig.base ?? '/'\n\n  const htmlCode = await fs.readFile(path.join(root, 'index.html'), 'utf-8')\n  const RootElementInjectPoint = '<div id=\"root\"></div>'\n  if (!htmlCode.includes(RootElementInjectPoint)) {\n    throw new Error(\n      `Your index.html should contain the RootElementInjectPoint: \"${RootElementInjectPoint}\" (it must appear exactly as-is)`\n    )\n  }\n  const EntryModuleInjectPoint =\n    '<script type=\"module\" src=\"/@pages-infra/main.js\"></script>'\n  if (!htmlCode.includes(EntryModuleInjectPoint)) {\n    throw new Error(\n      `Your index.html should contain EntryModuleInjectPoint: \"${EntryModuleInjectPoint}\" (it must appear exactly as-is)`\n    )\n  }\n  const CSSInjectPoint = '</head>'\n  if (!htmlCode.includes(CSSInjectPoint)) {\n    throw new Error(\n      `Your index.html should contain CSSInjectPoint: \"${CSSInjectPoint}\" (it must appear exactly as-is)`\n    )\n  }\n\n  await Promise.all(\n    pagePaths.map(async (pagePath) => {\n      // currently not support pages with path params\n      // .e.g /users/:userId\n      if (pagePath.match(/\\/:\\w/)) return\n      const html = await renderHTML(pagePath)\n      // TODO: injectPreload\n      // preload data module for this page\n      // html = injectPreload(html, \"path/to/page/data\")\n      const writePath = path.join(\n        clientOutDir,\n        pagePath.replace(/^\\//, ''),\n        'index.html'\n      )\n      await fs.ensureDir(path.dirname(writePath))\n      await fs.writeFile(writePath, html)\n      if (pagePath !== '/') {\n        // should write to both /pagePath/index.html and /pagePath.html\n        const writePath2 = path.join(\n          clientOutDir,\n          pagePath.replace(/^\\//, '') + '.html'\n        )\n        await fs.ensureDir(path.dirname(writePath2))\n        await fs.writeFile(writePath2, html)\n      }\n    })\n  )\n\n  const html404Path = path.join(clientOutDir, '404.html')\n  // pass in a pagePath that won't match any defined page\n  // so the render result will be 404 page\n  const html404 = await renderHTML('/internal-404-page')\n  await fs.writeFile(html404Path, html404)\n  // move 404 page to `/` if `/` doesn't exists\n  if (!pagePaths.includes('/')) {\n    await fs.copy(html404Path, path.join(clientOutDir, 'index.html'))\n  }\n\n  await fs.copy(clientOutDir, outDir)\n  await fs.remove(clientOutDir)\n  await fs.remove(ssrOutDir)\n  console.log('vite pages ssr build finished successfully.')\n  return\n\n  async function renderHTML(pagePath: string) {\n    const { contentText, styleText } = renderToString(pagePath, ssrPlugins)\n    const ssrInfo = {\n      routePath: pagePath,\n    }\n    let html = htmlCode.replace(\n      RootElementInjectPoint,\n      // let client know the current ssr page\n      `<script>window._vitePagesSSR=${JSON.stringify(ssrInfo)};</script>\n<div id=\"root\">${contentText}</div>`\n    )\n    const cssInject = cssChunks.map((cssChunk) => {\n      return `<link rel=\"stylesheet\" href=\"${basePath}${cssChunk.fileName}\" />`\n    })\n    cssInject.push(styleText)\n\n    html = html.replace(\n      CSSInjectPoint,\n      `${cssInject.join('\\n')}\n${CSSInjectPoint}`\n    )\n    html = html.replace(\n      EntryModuleInjectPoint,\n      `<script type=\"module\" src=\"${basePath}${entryChunk.fileName}\"></script>`\n    )\n\n    const minifyHtml = argv?.minifyHtml ?? ssrConfig?.minifyHtml ?? true\n    if (minifyHtml) {\n      const minifiedHtml = await minify(html, minifyOptions)\n      return minifiedHtml\n    }\n\n    return html\n  }\n}\n\nconst injectPreload = (html: string, filePath: string) => {\n  const tag = `<link rel=\"modulepreload\" href=\"${filePath}\" />`\n  if (/<\\/head>/.test(html)) {\n    return html.replace(/<\\/head>/, `${tag}\\n</head>`)\n  } else {\n    return tag + '\\n' + html\n  }\n}\n","import chalk from 'chalk'\nimport fs from 'fs-extra'\nimport minimist from 'minimist'\nimport path from 'node:path'\nimport { resolveConfig } from 'vite'\nimport type { InlineConfig } from 'vite'\nimport { PKG_ROOT } from './constants'\nimport { ssrBuild } from './static-site-generation'\nimport type { staticSiteGenerationConfig } from './types'\n\nconst argv: any = minimist(process.argv.slice(2))\n\nconsole.log(\n  chalk.cyan(\n    `vite-pages v${\n      fs.readJSONSync(path.resolve(PKG_ROOT, 'package.json')).version\n    }`\n  )\n)\n// console.log(chalk.cyan(`vite v${require('vite/package.json').version}`))\n\n// cli usage: vite-pages ssr [root] [--minifyHtml] [vite options like: --configFile, --base, --logLevel, --mode, --build.outDir, etc.]\nconst [command, root] = argv._\nif (root) {\n  argv.root = root\n}\n\n// make `--minifyHtml=false` to be treated as boolean false instead of string \"false\"\nObject.entries(argv).forEach(([key, value]) => {\n  if (value === 'false') argv[key] = false\n})\n\n// console.log('@@argv', argv)\n;(async () => {\n  if (!command || command === 'ssr') {\n    const toBeResovledConfig: InlineConfig = {\n      ...argv,\n    }\n\n    // user can pass in vite config like --outDir or --configFile\n    const viteConfig = await resolveConfig(\n      toBeResovledConfig,\n      'build',\n      'production',\n      'production'\n    )\n    const thisPlugin = viteConfig.plugins.find((plugin) => {\n      return plugin.name === 'vite-plugin-react-pages'\n    })\n    //@ts-expect-error\n    const ssrConfig = thisPlugin?.vitePagesStaticSiteGeneration as\n      | staticSiteGenerationConfig\n      | undefined\n\n    await ssrBuild(viteConfig, argv, ssrConfig).catch((err: any) => {\n      console.error(chalk.red(`ssr error:\\n`), err)\n      process.exit(1)\n    })\n  } else {\n    console.error(\n      `[vite-pages] Invalid command. CLI usage: vite-pages ssr [root] [--minifyHtml] [vite options like: --configFile, --base, --logLevel, --mode, --build.outDir, etc.]`\n    )\n  }\n})()\n"],"names":["PKG_ROOT","resolve","fileURLToPath","import","meta","url","CLIENT_PATH","minifyOptions","keepClosingSlash","removeRedundantAttributes","removeStyleLinkTypeAttributes","useShortDoctype","minifyCSS","ssrBuild","viteConfig","argv","ssrConfig","root","outDir","build","path","fs","emptyDir","ssrOutDir","join","clientOutDir","console","log","viteBuild","configFile","ssr","cssCodeSplit","rollupOptions","input","output","entryFileNames","chunkFileNames","onwarn","warning","defaultHandler","plugin","message","includes","minify","noExternal","ssrPluginPromises","global","importSSRPlugin","push","process","env","VITE_PAGES_IS_SSR","renderToString","ssrData","pathToFileURL","toString","ssrPlugins","Promise","all","forEach","index","id","error","Error","idx","findIndex","p","pagePaths","Object","keys","_clientResult","preserveEntrySignatures","assetsDir","clientResult","Array","isArray","length","entryChunk","_entryChunks","filter","chunkOrAsset","type","isEntry","cssChunks","chunk","fileName","endsWith","basePath","base","htmlCode","readFile","RootElementInjectPoint","EntryModuleInjectPoint","CSSInjectPoint","map","pagePath","match","html","renderHTML","writePath","replace","ensureDir","dirname","writeFile","writePath2","html404Path","html404","copy","remove","contentText","styleText","ssrInfo","routePath","JSON","stringify","cssInject","cssChunk","minifyHtml","minifiedHtml","minimist","slice","chalk","cyan","readJSONSync","version","command","_","entries","key","value","toBeResovledConfig","resolveConfig","thisPlugin","plugins","find","name","vitePagesStaticSiteGeneration","catch","err","red","exit"],"mappings":"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"}