UNPKG

@honohub/vite

Version:

Vite plugin for honohub

2 lines (1 loc) 3.52 kB
import{mkdir as e,readFile as t,writeFile as o}from"node:fs/promises";import{join as n}from"node:path";import{getTableColumns as r,getTableName as i}from"drizzle-orm";function a(){return a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&(e[n]=o[n])}return e},a.apply(this,arguments)}async function l({config:l,build:m,basePath:d,override:h}){const f={};for(const e in l.routes){const t=l.routes[e],o="string"==typeof t.import?{module:t.import,component:"default"}:t.import;var b;f[t.path]={label:t.label,icon:t.icon,import:`import('${o.module}').then((mod) => mod.${o.component})`,props:null!=(b=t.props&&"function"==typeof t.props?t.props(l):t.props)?b:{}}}await e(m.cache,{recursive:!0});const v={version:"0.0.0",hono:"0.0.0",collections:l.collections.length,plugins:l.plugins.length,routes:0};try{const e=JSON.parse(await t(n(process.cwd(),"package.json"),"utf-8"));v.version=p(e,"honohub"),v.hono=p(e,"hono")}catch(e){console.error("Failed to read package.json",e)}await Promise.all([o(n(process.cwd(),m.cache,"./index.html"),s,{flag:"w+"}),o(n(process.cwd(),m.cache,"./main.jsx"),u(c({importStatement:h,props:{basePath:d,serverUrl:l.serverUrl,plugins:f,stats:v,collections:l.collections.map((e=>{var t,o,n;const l=r(e.schema),c={};for(const[e,t]of Object.entries(l)){const{name:o,notNull:n,dataType:r}=t;c[o]={name:e,label:o,type:r,required:n}}var s;const p=null!=(s=null==(t=e.admin.columns)?void 0:t.map((e=>{let t;return"string"==typeof e&&(t=c[String(e)]),t=a({},c[String(e.name)],e),{name:t.name,label:t.label,type:t.type}})))?s:Object.values(c);var u;const m=null!=(u=null==(o=e.admin.fields)?void 0:o.map((e=>"string"==typeof e?c[String(e)]:a({},c[String(e.name)],e))))?u:Object.values(c);var d,h;return{slug:e.slug,label:null!=(d=e.admin.label)?d:i(e.schema),columns:p,fields:m,actions:null!=(h=null==(n=e.admin.actions)?void 0:n.map((e=>function(e,t){if(null==e)return{};var o,n,r={},i=Object.keys(e);for(n=0;n<i.length;n++)o=i[n],t.indexOf(o)>=0||(r[o]=e[o]);return r}(e,["action"]))))?h:[]}}))}}),f),{flag:"w+"})])}const c=({props:e,importStatement:t='import {HonoHub} from "@honohub/react";import "@honohub/react/index.esm.css";'})=>`import React from "react";import ReactDOM from "react-dom/client";${t};const props=${JSON.stringify(e)};ReactDOM.createRoot(document.getElementById("root")).render(<React.StrictMode><HonoHub {...props} /></React.StrictMode>);`,s='<!doctype html><html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>HonoHub</title></head><body><div id="root" ></div><script type="module" src="./main.jsx"><\/script></body></html>';function p(e,t){var o,n,r,i,a,l;return(null!=(l=null!=(a=null!=(i=null==(o=e.dependencies)?void 0:o[t])?i:null==(n=e.devDependencies)?void 0:n[t])?a:null==(r=e.peerDependencies)?void 0:r[t])?l:"0.0.0").replace(/^[\^~]/,"")}function u(e,t){let o=e;for(const e of Object.values(t)){const t=o.indexOf(`"${e.import}"`);-1!==t&&(o=o.slice(0,t)+e.import+o.slice(t+e.import.length+2))}return o}const m={cache:"./.honohub",outDir:"../dist"};function d(t){const{config:o,build:n={},basePath:r="/",generator:i=l}=t,c=a({},m,n);return{name:"honohub-vite-plugin",enforce:"pre",async config(n){n.root=c.cache,n.build=n.build||{},n.build.outDir=c.outDir,n.build.emptyOutDir=!0,await e(c.cache,{recursive:!0}),await(null==i?void 0:i({basePath:r,config:o,build:c,override:t.override}))}}}export{d as default};