vite-plugin-rttist
Version:
RTTIST plugin adding support for advanced reflection features to Vite
3 lines (2 loc) • 2.99 kB
JavaScript
;var b=Object.create;var g=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var D=Object.getOwnPropertyNames;var F=Object.getPrototypeOf,k=Object.prototype.hasOwnProperty;var M=(e,r)=>{for(var o in r)g(e,o,{get:r[o],enumerable:!0})},R=(e,r,o,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of D(r))!k.call(e,i)&&i!==o&&g(e,i,{get:()=>r[i],enumerable:!(s=j(r,i))||s.enumerable});return e};var v=(e,r,o)=>(o=e!=null?b(F(e)):{},R(r||!e||!e.__esModule?g(o,"default",{value:e,enumerable:!0}):o,e)),G=e=>R(g({},"__esModule",{value:!0}),e);var z={};M(z,{rttistPlugin:()=>L});module.exports=G(z);var l=require("@rttist/ts-loader-wasm"),n=require("@rttist/typegen"),h=v(require("fs"),1),I=v(require("path"),1),S=/\.[mc]?tsx?/i,_=/<script .*>([\s\S]*)<\/script>/gi;async function L(e){if(!e.projectRoot||e.projectRoot.length===0)throw new Error("projectRoot is required");let r=await n.ConfigProvider.getConfig({projectRoot:e.projectRoot,typecheck:!0,watch:!1,force:!1}),o=new n.Logger("vite-plugin-rttist",void 0,n.LogBuffer.autoFlush);n.Logger.setLevel(r.logLevel);let s=e.tsRootDir??r.tsRootDir;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");(0,n.printInitialMessage)(o,r);let i=new n.FsCachedStorage(r),u=new n.FsCachedStorage(r),c=new n.IncrementalGenerator(r,o,u,i);await c.initialize();let d=r.cacheDir.replace(/\\/g,"/"),m=`${d}/metadata.typelib.ts`,P=I.relative(r.projectRoot,r.cacheDir);function E(t){return t.startsWith(d)}return await c.generate([],!1,!0),{name:"vite-plugin-rttist",enforce:"pre",resolveId(t){if(t==="rttist/typelib"||t==="virtual:typelib")return m},async handleHotUpdate(t){if(E(t.file)&&c.isGenerating())return o.debug(`HMR: preventing update because generating is currently in progress.
File: `,t.file),[];if(c.isProjectFile(t.file)){let a=await t.read();u.updateMemoryCacheOnly(t.file,a);let w=t.file.replace(`${r.normalizedProjectRoot}/`,"");u.updateMemoryCacheOnly(w,a);let p=await c.generate([t.file],!1,!1),C=Object.values(p).map(f=>t.server.moduleGraph.getModuleById(f.metadataSourceFilePath.replace(/\\/g,"/"))).filter(f=>f!==void 0);return o.debug("ModuleNodes that should be updated:",[...t.modules,...C].map(f=>f?.id)),[...t.modules,...C]}},async load(t){if(t===m){let a=await i.read(m);if(a)return a}if(t.startsWith(d))return await i.read(t);if(c.isProjectFile(t)){if(t.endsWith(".vue")){let a=await h.promises.readFile(t,"utf8");return a=a.replace(_,(w,p)=>y(p,t,s,e,r)),a}if(S.test(t)){let a=await h.promises.readFile(t,"utf8");return a=y(a,t,s,e,r),a}}},config(t,a){return{server:{watch:{ignored:[new RegExp(`${P}/.*?.json`)]}}}}}}function y(e,r,o,s,i){return(0,l.transform)(e,r,new l.PackageInfo(s.packageInfo.name,o),{module:l.ModuleSystem.Preserve,runtimeGenericClasses:i.useRuntimeGenericClasses})}0&&(module.exports={rttistPlugin});