@resolid/react-router-hono
Version:
React Router Hono Server
1 lines • 1.74 kB
JavaScript
import{i as e,n as t,r as n,t as r}from"./preset-utils-0rqHBKmP.mjs";import{join as i}from"node:path";import{cp as a,rm as o,writeFile as s}from"node:fs/promises";const c=e=>{let a=e?.nodeVersion??22;return{name:`@resolid/react-router-hono-vercel-preset`,reactRouterConfig:()=>({buildEnd:async({buildManifest:o,reactRouterConfig:c,viteConfig:d})=>{await r({entryFile:e?.entryFile,includeFiles:e?.includeFiles,nodeVersion:a,bundleLoader:e?.bundleLoader,buildManifest:o,reactRouterConfig:c,viteConfig:d,buildStart:async()=>{console.log(`Bundle Vercel Serverless for production...`);let e=await n([d.root,`.vercel`,`output`],!0);return await l(i(c.buildDirectory,`client`),e),await u(d.build.assetsDir??`assets`,o,i(e,`config.json`)),{vercelOutput:e,nftCache:{}}},buildBundleEnd:async(e,r,o)=>{console.log(`Coping Vercel function files for ${r}...`);let c=await n([e.vercelOutput,`functions`,`_${r}.func`],!0),l=await t(o,c,e.nftCache);await s(i(c,`.vc-config.json`),JSON.stringify({handler:l,runtime:`nodejs${a}.x`,launcherType:`Nodejs`,supportsResponseStreaming:!0},null,2),`utf8`)}})}})}},l=async(e,t)=>{console.log(`Copying assets...`);let r=await n([t,`static`]);await a(e,r,{recursive:!0,force:!0}),await o(i(r,`.vite`),{recursive:!0,force:!0})},u=async(t,n,r)=>{console.log(`Writing Vercel config file...`);let i={version:3,routes:[],framework:{slug:`vite`}};i.routes.push({src:`^/${t}/.*`,headers:{"Cache-Control":`public, max-age=31536000, immutable`},continue:!0}),i.routes.push({handle:`filesystem`});let a=e(n);for(let e of a)e.path.length>0?i.routes.push({src:`^${e.path}(?:/.*)?$`,dest:`_${e.bundleId}`}):i.routes.push({src:`^/.*$`,dest:`_${e.bundleId}`});await s(r,JSON.stringify(i,null,2),`utf8`)};export{c as vercelPreset};