UNPKG

esbuild-plugin-rttist

Version:

RTTIST plugin adding support for advanced reflection features to esbuild

2 lines (1 loc) 2.83 kB
"use strict";var I=Object.create;var f=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var S=Object.getOwnPropertyNames;var j=Object.getPrototypeOf,v=Object.prototype.hasOwnProperty;var D=(e,t)=>{for(var o in t)f(e,o,{get:t[o],enumerable:!0})},m=(e,t,o,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of S(t))!v.call(e,n)&&n!==o&&f(e,n,{get:()=>t[n],enumerable:!(a=k(t,n))||a.enumerable});return e};var p=(e,t,o)=>(o=e!=null?I(j(e)):{},m(t||!e||!e.__esModule?f(o,"default",{value:e,enumerable:!0}):o,e)),P=e=>m(f({},"__esModule",{value:!0}),e);var E={};D(E,{rttistPlugin:()=>L});module.exports=P(E);var u=p(require("fs")),d=p(require("esbuild")),s=require("@rttist/ts-loader-wasm"),r=require("@rttist/typegen"),b=new Set(["sourcemap","legalComments","sourceRoot","sourcesContent","format","globalName","target","supported","platform","mangleProps","reserveProps","mangleQuoted","mangleCache","drop","dropLabels","minify","minifyWhitespace","minifyIdentifiers","minifySyntax","lineLimit","charset","treeShaking","ignoreAnnotations","jsx","jsxFactory","jsxFragment","jsxImportSource","jsxDev","jsxSideEffects","define","pure","keepNames","color","logLevel","logLimit","logOverride","tsconfigRaw"]);function L(e){return{name:"esbuild-plugin-rttist",async setup(t){if(!e.projectRoot||e.projectRoot.length===0)throw new Error("projectRoot is required");let o=await r.ConfigProvider.getConfig({projectRoot:e.projectRoot,typecheck:!0,watch:!1,force:!1}),a=new r.Logger("vite-plugin-rttist",void 0,r.LogBuffer.autoFlush);r.Logger.setLevel(o.logLevel);let n=e.tsRootDir??o.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,r.printInitialMessage)(a,o);let h=new r.FsCachedStorage(o),R=new r.FsCachedStorage(o),i=new r.IncrementalGenerator(o,a,R,h);await i.initialize();let w=`${o.cacheDir.replace(/\\/g,"/")}/metadata.typelib.ts`;await i.generate([],!1,!0),t.onResolve({filter:/^(rttist\/typelib)|(virtual:typelib)$/},c=>({path:w})),t.onStart(async()=>{if(i.isGenerating()){a.debug("WATCH: preventing update because generating is currently in progress.");return}await i.generate([],!1,!0)}),t.onLoad({filter:/\.(tsx?|mts|cts)$/},async c=>{let y=await u.promises.readFile(c.path,"utf8"),C=x(y,c.path,n,e,o),g={sourcefile:c.path,loader:"ts",tsconfigRaw:t.initialOptions.tsconfigRaw};for(let l of Object.keys(t.initialOptions))b.has(l)&&(g[l]=t.initialOptions[l]);return{contents:(await d.transform(C,g)).code}})}}}function x(e,t,o,a,n){return(0,s.transform)(e,t,new s.PackageInfo(a.packageInfo.name,o),{module:s.ModuleSystem.Preserve,runtimeGenericClasses:n.useRuntimeGenericClasses})}0&&(module.exports={rttistPlugin});