vite-plugin-rttist
Version:
RTTIST plugin adding support for advanced reflection features to Vite
2 lines (1 loc) • 1.46 kB
JavaScript
import*as n from"fs";import{resolve as o}from"path";import{PackageInfo as l,transform as m}from"@rttist/ts-loader-wasm";var u=/\.[mc]?tsx?/i,c=/<script .*>([\s\S]*)<\/script>/gi,g=/\/internal.typelib$/,d=/\u{0}.*\/internal.typelib$/u;function I(e){if(!e.tsRootDir||e.tsRootDir.length===0)throw new Error("tsRootDir is required");if(!e.packageInfo||!e.packageInfo.rootDir||e.packageInfo.rootDir.length===0)throw new Error("packageInfo.rootDir is required");if(!e.packageInfo.name||e.packageInfo.name.length===0)throw new Error("packageInfo.name is required");if(!e.metadataOutDir||e.metadataOutDir.length===0)throw new Error("metadataOutDir is required");let a=null,i=null;return{name:"vite-plugin-rttist",enforce:"pre",configResolved(t){a=t.build.outDir},resolveId(t){if(g.test(t))return i==="serve"?o(e.metadataOutDir,"internal.typelib.js"):"\0"+t},handleHotUpdate(t){if(t.file.includes("/metadata.typelib.ts"))return[];if(t.file.includes("/internal.typelib.js"))return[]},async load(t){if(d.test(t)){let r=o(e.metadataOutDir,"internal.typelib.js");return await n.promises.readFile(r,"utf8")}if(t.endsWith(".vue")){let r=await n.promises.readFile(t,"utf8");return r=r.replace(c,(E,f)=>s(f,t,e)),r}else if(u.test(t)){let r=await n.promises.readFile(t,"utf8");return r=s(r,t,e),r}},config(t,r){return i=r.command,{server:{watch:{ignored:[/\/.metadata\//]}}}}}}function s(e,a,i){return m(e,a,new l(i.packageInfo.name,i.tsRootDir))}export{I as rttistPlugin};