UNPKG

@honohub/vite

Version:

Vite plugin for honohub

2 lines (1 loc) 3.53 kB
"use strict";var e=require("node:fs/promises"),t=require("node:path"),o=require("drizzle-orm");function n(){return n=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},n.apply(this,arguments)}async function r({config:r,build:s,basePath:u,override:p}){const d={};for(const e in r.routes){const t=r.routes[e],o="string"==typeof t.import?{module:t.import,component:"default"}:t.import;var m;d[t.path]={label:t.label,icon:t.icon,import:`import('${o.module}').then((mod) => mod.${o.component})`,props:null!=(m=t.props&&"function"==typeof t.props?t.props(r):t.props)?m:{}}}await e.mkdir(s.cache,{recursive:!0});const h={version:"0.0.0",hono:"0.0.0",collections:r.collections.length,plugins:r.plugins.length,routes:0};try{const o=JSON.parse(await e.readFile(t.join(process.cwd(),"package.json"),"utf-8"));h.version=a(o,"honohub"),h.hono=a(o,"hono")}catch(e){console.error("Failed to read package.json",e)}await Promise.all([e.writeFile(t.join(process.cwd(),s.cache,"./index.html"),l,{flag:"w+"}),e.writeFile(t.join(process.cwd(),s.cache,"./main.jsx"),c(i({importStatement:p,props:{basePath:u,serverUrl:r.serverUrl,plugins:d,stats:h,collections:r.collections.map((e=>{var t,r,i;const l=o.getTableColumns(e.schema),a={};for(const[e,t]of Object.entries(l)){const{name:o,notNull:n,dataType:r}=t;a[o]={name:e,label:o,type:r,required:n}}var c;const s=null!=(c=null==(t=e.admin.columns)?void 0:t.map((e=>{let t;return"string"==typeof e&&(t=a[String(e)]),t=n({},a[String(e.name)],e),{name:t.name,label:t.label,type:t.type}})))?c:Object.values(a);var u;const p=null!=(u=null==(r=e.admin.fields)?void 0:r.map((e=>"string"==typeof e?a[String(e)]:n({},a[String(e.name)],e))))?u:Object.values(a);var d,m;return{slug:e.slug,label:null!=(d=e.admin.label)?d:o.getTableName(e.schema),columns:s,fields:p,actions:null!=(m=null==(i=e.admin.actions)?void 0:i.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"]))))?m:[]}}))}}),d),{flag:"w+"})])}const i=({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>);`,l='<!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 a(e,t){var o,n,r,i,l,a;return(null!=(a=null!=(l=null!=(i=null==(o=e.dependencies)?void 0:o[t])?i:null==(n=e.devDependencies)?void 0:n[t])?l:null==(r=e.peerDependencies)?void 0:r[t])?a:"0.0.0").replace(/^[\^~]/,"")}function c(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 s={cache:"./.honohub",outDir:"../dist"};module.exports=function(t){const{config:o,build:i={},basePath:l="/",generator:a=r}=t,c=n({},s,i);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.mkdir(c.cache,{recursive:!0}),await(null==a?void 0:a({basePath:l,config:o,build:c,override:t.override}))}}};