@remotex-labs/xbuild 2.2.2 → 2.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/bash.js CHANGED
@@ -21,7 +21,7 @@ __ _| |_/ /_ _ _| | __| |
21
21
  /_/\\_\\____/ \\__,_|_|_|\\__,_|
22
22
  `;function Dt(){return`
23
23
  \r${ot.burntOrange(ui)}
24
- \rVersion: ${ot.brightPink("2.2.2")}
24
+ \rVersion: ${ot.brightPink("2.2.3")}
25
25
  \r`}function O(){return ot.lightCoral("[xBuild]")}import{readdir as di,stat as mi,readFile as gi}from"fs/promises";import{xterm as Pe}from"@remotex-labs/xansi/xterm.component";var Ee=class{constructor(e,t){this.config=e;this.rootDir=I(t),this.config.port||=0,this.config.host||="localhost"}server;rootDir;framework=u(E);async start(){if(this.config.https)return await this.startHttpsServer();await this.startHttpServer()}async stop(){if(!this.server){console.log(O(),Pe.gray("No server is currently running."));return}await new Promise((e,t)=>{this.server.close(i=>{i?t(i):e()})}),console.log(O(),Pe.dim("Server stopped.")),this.server=void 0}async restart(){console.log(O(),Pe.burntOrange("Restarting server...")),await this.stop(),await this.start()}setActualPort(){if(this.config.port===0){let e=this.server.address();e&&typeof e=="object"&&e.port&&(this.config.port=e.port)}}startHttpServer(){return new Promise(e=>{this.server=Ht.createServer((t,i)=>{this.handleRequest(t,i,()=>this.defaultResponse(t,i))}),this.server.listen(this.config.port,this.config.host,()=>{this.setActualPort(),this.config.onStart?.({host:this.config.host,port:this.config.port,url:`http://${this.config.host}:${this.config.port}`}),e()})})}startHttpsServer(){return new Promise(e=>{let t={key:Lt(this.config.key??v(this.framework.distPath,"..","certs","server.key")),cert:Lt(this.config.cert??v(this.framework.distPath,"..","certs","server.crt"))};this.server=_t.createServer(t,(i,o)=>{this.handleRequest(i,o,()=>this.defaultResponse(i,o))}),this.server.listen(this.config.port,this.config.host,()=>{this.setActualPort(),this.config.onStart?.({host:this.config.host,port:this.config.port,url:`https://${this.config.host}:${this.config.port}`}),e()})})}handleRequest(e,t,i){try{this.config.verbose&&console.log(`${O()} Request ${Pe.lightCoral(e.url?.toString()??"")}`),this.config.onRequest?this.config.onRequest(e,t,i):i()}catch(o){this.sendError(t,o)}}getContentType(e){return{html:"text/html",css:"text/css",js:"application/javascript",cjs:"application/javascript",mjs:"application/javascript",ts:"text/plain",map:"application/json",json:"application/json",png:"image/png",jpg:"image/jpeg",gif:"image/gif",txt:"text/plain"}[e]||"application/octet-stream"}async defaultResponse(e,t){let i=e.url==="/"?"":e.url?.replace(/^\/+/,"")||"",o=v(this.rootDir,i);if(!o.startsWith(this.rootDir)){t.statusCode=403,t.end();return}try{let n=await mi(o);n.isDirectory()?await this.handleDirectory(o,i,t):n.isFile()&&await this.handleFile(o,t)}catch(n){let s=n.message;s.includes("favicon")||console.log(O(),s),this.sendNotFound(t)}}async handleDirectory(e,t,i){let n=(await di(e)).map(l=>{let p=v(t,l),f=jt(l).slice(1)||"folder";return f==="folder"?`
26
26
  <a href="/${p}" class="folder-row">
27
27
  <div class="icon"><i class="fa-solid fa-folder"></i></div>
@@ -42,7 +42,7 @@ __ _| |_/ /_ _ _| | __| |
42
42
  `)}
43
43
  };`)}return l.length>0&&o.push(...l),o.join(`
44
44
  `)}};import{mkdir as Ai,writeFile as Pi}from"fs/promises";import{xterm as $i}from"@remotex-labs/xansi/xterm.component";var Me=class r{constructor(e,t){this.languageService=e;this.languageHostService=t}static emittedVersions=new Map;static clearCache(){this.emittedVersions.clear()}async emit(e){let t=this.languageService.getProgram();if(!t)throw new Error(`${$i.deepOrange("[TS]")} Language service program is not available`);let i=this.languageHostService.getCompilationSettings();e&&(i={...i,outDir:e});let o=[],n=t.getSourceFiles();for(let s=0;s<n.length;s++){let a=n[s];this.shouldEmitFile(a,t,i)&&o.push(a)}o.length!==0&&await Promise.all(o.map(s=>this.emitSingleDeclaration(s,i)))}shouldEmitFile(e,t,i){if(e.isDeclarationFile||t.isSourceFileFromExternalLibrary(e))return!1;let o=nt(e.fileName,i),n=r.emittedVersions.get(o),s=this.languageHostService.getScriptVersion(e.fileName);return!n||n!==s?(r.emittedVersions.set(o,s),!0):!1}async emitSingleDeclaration(e,t){let i=this.languageService.getEmitOutput(e.fileName,!0);if(i.emitSkipped)return;let o=i.outputFiles[0].text,n=nt(e.fileName,t);o=$e(o),o=this.languageHostService.resolveAliases(o,e.fileName,".d.ts"),await Ai(S(n),{recursive:!0}),await Pi(n,o,"utf8")}};import se from"typescript";var Be=class r{constructor(e={}){this.compilerOptions=e;this.alias=r.generateAliasRegex(e),this.moduleResolutionCache=se.createModuleResolutionCache(process.cwd(),t=>t,this.compilerOptions)}static sys=se.sys;alias;aliasCache=new Map;moduleResolutionCache;trackFiles=new Set;filesCache=u(b);get aliasRegex(){return this.alias}set options(e){this.compilerOptions=e,this.alias=r.generateAliasRegex(e),this.moduleResolutionCache=se.createModuleResolutionCache(process.cwd(),t=>t,this.compilerOptions)}touchFile(e){return this.trackFiles.add(this.filesCache.resolve(e)),this.filesCache.touchFile(e)}touchFiles(e){for(let t of e)this.touchFile(t)}getCompilationSettings(){return this.compilerOptions}fileExists(e){return r.sys.fileExists(e)}readFile(e,t){return r.sys.readFile(e,t)}readDirectory(e,t,i,o,n){return r.sys.readDirectory(e,t,i,o,n)}getDirectories(e){return r.sys.getDirectories(e)}directoryExists(e){return r.sys.directoryExists(e)}getCurrentDirectory(){return r.sys.getCurrentDirectory()}getScriptFileNames(){return[...this.trackFiles]}getDefaultLibFileName(e){return se.getDefaultLibFilePath(e)}getScriptVersion(e){let t=this.filesCache.getSnapshot(e);return this.trackFiles.add(this.filesCache.resolve(e)),t?t.version.toString():"0"}hasScriptSnapshot(e){return this.trackFiles.has(this.filesCache.resolve(e))}getScriptSnapshot(e){let t=this.filesCache.getSnapshot(e);return this.trackFiles.add(this.filesCache.resolve(e)),t?t.contentSnapshot:this.touchFile(e).contentSnapshot}resolveModuleName(e,t){return se.resolveModuleName(e,t,this.compilerOptions,se.sys,this.moduleResolutionCache)}resolveModuleFileName(e,t){if(this.aliasCache.has(e))return this.aliasCache.get(e);let o=this.resolveModuleName(e,t).resolvedModule?.resolvedFileName;return this.aliasCache.set(e,o),o}resolveAliases(e,t,i=""){return this.alias?e.replace(this.alias,(o,n)=>{let s=this.resolveModuleFileName(n,t);if(!s)return o;let a=s.replace(/\.tsx?$/,i),c=F(S(t),a);return o.replace(n,c.startsWith(".")?c:"./"+c)}):e}static generateAliasRegex(e){let t=e.paths;if(!t||Object.keys(t).length<1)return;let i=Object.keys(t).map(o=>o.replace("/*","").replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|");return new RegExp(`(?:^|\\s)(?:import|export)\\s+(?:type\\s+)?(?:[^'"]*from\\s+)?['"]((${i})[^'"]*)['"];?`,"gm")}};var Gt,at;Gt=[M({providers:[{useValue:"tsconfig.json"}]})];var _=class _{constructor(e="tsconfig.json"){this.configPath=e;let{config:t,host:i,service:o}=this.acquireLanguageService();this.config=t,this.languageService=o,this.languageHostService=i,this.languageHostService.touchFiles(this.config.fileNames),this.emitterService=new Me(o,i),this.bundlerService=new Re(o,i)}config;languageService;languageHostService;static serviceCache=new Map;emitterService;bundlerService;check(e){let t=this.languageService.getProgram();if(!t)return[];let i=e&&e.length>0?e.map(o=>t.getSourceFile(o)):this.languageService.getProgram()?.getSourceFiles();return i?i.filter(o=>this.shouldCheckFile(o)).flatMap(o=>this.collectDiagnostics(o)):[]}touchFiles(e){for(let t of e)if(this.languageHostService.hasScriptSnapshot(t)&&this.languageHostService.touchFile(t),t.includes(this.configPath)){let i=_.serviceCache.get(this.configPath);i.config=this.parseConfig(),i.host.options=i.config.options}}async emitBundle(e,t){await this.bundlerService.emit(e,t)}async emit(e){await this.emitterService.emit(e)}dispose(e){let t=_.serviceCache.get(e);t&&(t.refCount--,_.cleanupUnusedServices())}static cleanupUnusedServices(){for(let[e,t]of this.serviceCache)t.refCount<1&&(t.service.dispose(),this.serviceCache.delete(e))}shouldCheckFile(e){return e&&!e.fileName.includes("node_modules")&&!e.isDeclarationFile}collectDiagnostics(e){return[...this.languageService.getSemanticDiagnostics(e.fileName),...this.languageService.getSyntacticDiagnostics(e.fileName),...this.languageService.getSuggestionDiagnostics(e.fileName)].map(t=>this.formatDiagnostic(t))}acquireLanguageService(){let e=_.serviceCache.get(this.configPath);return e?(e.refCount++,e):this.createLanguageService()}createLanguageService(){let e=this.parseConfig(),t=new Be(e.options),i=J.createLanguageService(t,J.createDocumentRegistry()),o={config:e,host:t,service:i,refCount:1};return _.serviceCache.set(this.configPath,o),o}parseConfig(){let e=J.getParsedCommandLineOfConfigFile(this.configPath,{skipLibCheck:!0,stripInternal:!0,emitDeclarationOnly:!0},{...J.sys,onUnRecoverableConfigFileDiagnostic:()=>{}});return e||(e={options:{strict:!0,target:J.ScriptTarget.ESNext,module:J.ModuleKind.NodeNext,declaration:!0,skipLibCheck:!0,moduleResolution:J.ModuleResolutionKind.NodeNext},errors:[],fileNames:[],projectReferences:void 0}),e.options={...e.options,rootDir:e.options?.rootDir??process.cwd()},e}formatDiagnostic(e){let t={message:J.flattenDiagnosticMessageText(e.messageText,`
45
- `),category:e.category};if(e.file&&e.start!==void 0){let{line:i,character:o}=e.file.getLineAndCharacterOfPosition(e.start);t.file=e.file.fileName,t.line=i+1,t.column=o+1,t.code=e.code}return t}};at=P(null),_=R(at,0,"TypescriptService",Gt,_),$(at,1,_);var ae=_;import{cwd as Ne}from"process";import{build as ct}from"esbuild";var Kt={write:!1,bundle:!0,minify:!0,outdir:`${Ne()}`,format:"esm",target:"esnext",platform:"browser",sourcemap:"external",mangleQuoted:!0,sourcesContent:!0,preserveSymlinks:!0};async function qt(r,e={}){try{return await ct({absWorkingDir:Ne(),...Kt,...e,metafile:!0,entryPoints:r})}catch(t){if(G(t)){let i=new AggregateError([],"Failed to build entryPoints");throw be(t.errors,i.errors),i}throw t}}async function Yt(r,e,t={}){return await ct({absWorkingDir:Ne(),...Kt,...t,stdin:{loader:"ts",contents:r,resolveDir:Ne(),sourcefile:e},write:!1,metafile:!0,logLevel:"silent",sourcemap:"external"})}async function Xt(r,e={}){try{return await ct({...e,outdir:"tmp",write:!1,bundle:!0,metafile:!0,packages:"external",logLevel:"silent",entryPoints:r})}catch(t){if(G(t)){let i=new AggregateError([],"Failed to analyze entryPoint");throw be(t.errors,i.errors),i}throw t}}function Jt(r,e){if(Array.isArray(e)){let t={};return e.length>0&&typeof e[0]=="object"?e.forEach(i=>{t[i.out]=i.in}):typeof e[0]=="string"&&(t=Ae(r,e)),t}else if(e&&typeof e=="object")return e;throw new w("Unsupported entry points format")}var De=class{constructor(e,t,i,o={}){this.name=e;this.lifecycle=t;this.buildConfig=i;this.argv=o;if(!this.buildConfig?.esbuild)throw new w(`Variant '${this.name}' not found configuration`);this.tsConfigPath=this.buildConfig.esbuild.tsconfig??"tsconfig.json",this.typescriptModule=new ae(this.tsConfigPath),this.buildConfig=this.initializeConfig(this.getConfig(this.buildConfig,this.configService.getValue().common)),this.typescriptModule.languageHostService.touchFiles(Object.values(this.buildConfig.esbuild.entryPoints)),this.lifecycle.onEnd(this.end.bind(this),`${this.name}-core`),this.lifecycle.onStart(this.start.bind(this),`${this.name}-core`),this.configUnsubscribe=this.configService.select(n=>({variantConfig:n.variants?.[this.name],commonConfig:n.common})).subscribe(this.handleConfigChange.bind(this),n=>{throw n})}dependenciesFile;active=!0;tsConfigPath;typescriptModule;configUnsubscribe;configService=u(x);get typescript(){return this.typescriptModule}get config(){return this.buildConfig}get dependencies(){return this.dependenciesFile??{}}dispose(){this.configUnsubscribe(),this.typescriptModule.dispose(this.tsConfigPath)}touchFiles(e){this.typescriptModule.touchFiles(e)}async check(){return this.dependenciesFile||(this.dependenciesFile=await this.buildDependencyMap()),this.typescriptModule.check(Object.values(this.dependenciesFile))}async build(){if(!this.active)return;this.applyInjections();let e=Object.assign({},this.buildConfig.esbuild);this.dependenciesFile=await this.buildDependencyMap(),this.buildConfig.esbuild.bundle===!1&&Object.assign(e,{entryPoints:this.dependenciesFile});try{let t=await Mi(e);return await this.packageTypeComponent(),t}catch(t){if(G(t)){if(t.errors.filter(o=>o.location).length>0)throw t;return{errors:t?.errors??[],warnings:t?.warnings??[]}}}}getConfig(e,t={}){return e?Y({},t,e):null}async start(){let e={errors:[],warnings:[]};if(!this.buildConfig.types)return e;let t=this.typescriptModule.check(Object.values(this.dependenciesFile??{}));if(t.length===0)return e;if(typeof this.buildConfig.types=="object"&&!this.buildConfig.types.failOnError){let o=new N("Type checking failed",t);e.warnings?.push({detail:o,location:void 0})}else{let o=[],n=[],s=new N("Type checking failed",o),a=new N("Type checking failed",n);for(let c of t)(c.category===Ri.DiagnosticCategory.Error?o:n).push(c);o.length&&e.errors?.push({detail:s,location:void 0}),n.length&&e.warnings?.push({detail:a,location:void 0})}return e}async end(e){if(e.buildResult.errors?.length>0)return;let t={errors:[],warnings:[]};if(typeof e.buildResult.metafile?.outputs=="object"){let s=Object.keys(e.buildResult.metafile?.outputs);for(let a of s){if(!a.endsWith(".map"))continue;let c=S(a);Ni(a,"utf8").then(l=>{let p=JSON.parse(l);p.sources=p.sources.map(f=>v(c,f)),Qt(a,JSON.stringify(p),"utf8")})}}if(!this.buildConfig.declaration)return;let i=this.buildConfig.declaration,o=typeof i=="object"?i.bundle!==!1:!0,n=typeof i=="object"?i.outDir:void 0;try{o?await this.typescriptModule.emitBundle(this.buildConfig.esbuild.entryPoints,n):await this.typescriptModule.emit(n)}catch(s){t.warnings?.push({detail:s,location:void 0})}return t}registerConfigHooks(e){if(!e)return;let{onStart:t,onResolve:i,onLoad:o,onEnd:n,onSuccess:s}=e;t&&this.lifecycle.onStart(t),i&&this.lifecycle.onResolve(i),o&&this.lifecycle.onLoad(o),n&&this.lifecycle.onEnd(n),s&&this.lifecycle.onSuccess(s)}async packageTypeComponent(){let e=this.buildConfig.esbuild.outdir??"dist",t=this.buildConfig.esbuild.format==="esm"?"module":"commonjs";await Bi(e,{recursive:!0}),await Qt(v(e,"package.json"),`{"type": "${t}"}`)}initializeConfig(e){if(!e)throw new w(`Variant '${this.name}' not found configuration`);if(!e.esbuild.entryPoints)throw new w("Entry points are required in esbuild configuration");let t=e.define,i=t?Object.fromEntries(Object.entries(t).map(([o,n])=>[o,JSON.stringify(n)])):void 0;return this.registerConfigHooks(e.lifecycle),e.esbuild.entryPoints=Jt(this.typescriptModule.config.options.rootDir??process.cwd(),e.esbuild.entryPoints),e.esbuild=Object.assign({},e.esbuild,{define:i,logLevel:"silent",plugins:[this.lifecycle.create()]}),e}async handleConfigChange({variantConfig:e,commonConfig:t}){this.active=!1;let i=this.getConfig(e,t);i&&(this.active=!0,this.buildConfig=this.initializeConfig(i),i.esbuild.outdir&&i.esbuild.outfile&&(this.buildConfig.esbuild.outdir=void 0),i.esbuild.tsconfig&&i.esbuild.tsconfig!==this.tsConfigPath&&(this.typescriptModule.dispose(this.tsConfigPath),this.tsConfigPath=i.esbuild.tsconfig,this.typescriptModule=new ae(this.tsConfigPath)))}stripExtension(e){let t=e.lastIndexOf(".");return t>0?e.substring(0,t):e}async buildDependencyMap(){let{esbuild:e}=this.buildConfig,{metafile:t}=await Xt(e.entryPoints,{loader:e.loader,platform:e.platform}),i={};for(let o of Object.keys(t.inputs)){let n=F(this.typescriptModule.config.options.rootDir,I(o)),s=this.stripExtension(n);i[s]=o}return i}injectTextBlock(e){let t=this.buildConfig[e];if(!t)return;let i=this.buildConfig.esbuild;i[e]??={};for(let[o,n]of Object.entries(t))i[e][o]=typeof n=="function"?n(this.name,this.argv):n}applyInjections(){this.injectTextBlock("banner"),this.injectTextBlock("footer")}};import{readFile as Di}from"fs/promises";var je=class{constructor(e,t){this.variantName=e;this.argv=t}filesModel=u(b);endHooks=new Map;loadHooks=new Map;startHooks=new Map;successHooks=new Map;resolveHooks=new Map;onStart(e,t=this.variantName){e&&this.startHooks.set(t,e)}onEnd(e,t=this.variantName){e&&this.endHooks.set(t,e)}onSuccess(e,t=this.variantName){e&&this.successHooks.set(t,e)}onResolve(e,t=this.variantName){e&&this.resolveHooks.set(t,e)}onLoad(e,t=this.variantName){e&&this.loadHooks.set(t,e)}clearAll(){this.endHooks.clear(),this.loadHooks.clear(),this.startHooks.clear(),this.successHooks.clear(),this.resolveHooks.clear()}create(){return{name:this.variantName,setup:e=>{let t={argv:this.argv,options:e.initialOptions,variantName:this.variantName,stage:{startTime:new Date}};e.initialOptions.metafile=!0,this.startHooks.size>0&&e.onStart(this.executeStartHooks.bind(this,t,e)),(this.endHooks.size>0||this.successHooks.size>0)&&e.onEnd(this.executeEndHooks.bind(this,t)),this.resolveHooks.size>0&&e.onResolve({filter:/.*/},this.executeResolveHooks.bind(this,t)),this.loadHooks.size>0&&e.onLoad({filter:/.*/},this.executeLoadHooks.bind(this,t))}}}pushError(e,t,i,o=this.variantName){e.push({id:t,detail:i,location:null,pluginName:o})}async executeStartHooks(e,t){e.stage.startTime=new Date;let i=[],o=[],n={build:t,...e};for(let[s,a]of this.startHooks.entries())try{let c=await a(n);c?.errors&&i.push(...c.errors),c?.warnings&&o.push(...c.warnings)}catch(c){this.pushError(i,"startHook",c,s)}return{errors:i,warnings:o}}async executeEndHooks(e,t){let{errors:i,warnings:o}=t,n=Date.now()-e.stage.startTime.getTime(),s={buildResult:t,duration:n,...e};for(let[a,c]of this.endHooks.entries())try{let l=await c(s);l?.errors&&i.push(...l.errors),l?.warnings&&o.push(...l.warnings)}catch(l){this.pushError(i,"endHook",l,a)}if(t.errors.length===0)for(let[a,c]of this.successHooks.entries())try{await c(s)}catch(l){this.pushError(i,"endHook",l,a)}}async executeResolveHooks(e,t){let i={errors:[]},o={args:t,...e};for(let[n,s]of this.resolveHooks.entries())try{let a=await s(o);if(!a)continue;i={...i,...a}}catch(a){this.pushError(i.errors,"endResolve",a,n)}return i}async executeLoadHooks(e,t){let i=[],o=[],n="default",s=I(t.path),a=this.filesModel.getSnapshot(s),c=a?.contentSnapshot?a.contentSnapshot.text:await Di(s,"utf8");for(let[l,p]of this.loadHooks.entries())try{let f=await p({contents:c,loader:n,args:t,...e});if(!f)continue;f.contents!==void 0&&(c=f.contents),f.loader&&(n=f.loader),f.errors&&i.push(...f.errors),f.warnings&&o.push(...f.warnings)}catch(f){this.pushError(i,"loadHook",f,l)}return{contents:c,loader:n,errors:i,warnings:o}}};import h from"typescript";import{highlightCode as sr}from"@remotex-labs/xmap/highlighter.component";import V from"typescript";var ji="$$ifdef";function Li(r,e,t,i=!1){let o=i?"export function ":"function ";return V.isArrowFunction(e)||V.isFunctionExpression(e)?Hi(r,e,t,o):`${i?"export const ":"const "}${r} = ${e.getText(t)};`}function Hi(r,e,t,i){let n=e.modifiers?.some(l=>l.kind===V.SyntaxKind.AsyncKeyword)??!1?"async ":"",s=e.parameters.map(l=>l.getText(t)).join(", "),a=e.type?`: ${e.type.getText(t)}`:"",c=_i(e,t);return`${n}${i}${r}(${s})${a} ${c}`}function _i(r,e){let t=r.body.getText(e);return V.isArrowFunction(r)&&!V.isBlock(r.body)?`{ return ${t}; }`:t}function Vi(r,e,t="",i="();"){return V.isArrowFunction(r)||V.isFunctionExpression(r)?`${r.modifiers?.some(s=>s.kind===V.SyntaxKind.AsyncKeyword)??!1?"async ":""}${t}(${r.getText(e)})${i}`:t?`${t}${r.getText(e)}`:`(() => { return ${r.getText(e)}; })${i}`}function Zt(r,e,t){let i=r in t&&!!t[r];return e===ji===i}function er(r,e,t,i){let[o,n]=e.arguments;if(!V.isStringLiteral(o))return!1;let s=e.expression.text,a=o.text;if(!Zt(a,s,i.defines))return"undefined";let c=r.name.getText(i.sourceFile);return Li(c,n,i.sourceFile,t)}function Le(r,e,t,i=!1,o){let[n,s]=r.arguments;if(!V.isStringLiteral(n))return!1;let a=n.text,c=r.expression.text;if(!Zt(a,c,e.defines))return"";let l="",p=t?.name.getText(e.sourceFile);return p&&(l=i?`export const ${p} = `:`const ${p} = `),Vi(s,e.sourceFile,l,o)}import D from"typescript";import{createRequire as Wi}from"module";var He=class extends y{constructor(e,t=0){super(e.message,"InlineError"),this.errorMetadata=z(e,{},t),this.stack=W(this.errorMetadata,this.name,this.message)}};import{Script as Ui,createContext as zi}from"vm";async function tr(r,e={},t={}){let i=new Ui(r,t),o=zi(e);return await i.runInContext(o,{breakOnSigint:!0,displayErrors:!1})}async function rr(r,e,t){let[i,o]=(await Yt(r,e.sourceFile.fileName,{bundle:!0,format:"cjs",platform:"node",packages:"external"})).outputFiles;try{let n={exports:{}},s=Wi(e.sourceFile.fileName),a=Gi(e.sourceFile.fileName,n,s);a.context=e.context;let c=await tr(o.text,a,{filename:e.sourceFile.fileName});return c===null?"undefined":typeof c=="number"||typeof c=="boolean"?String(c):JSON.stringify(c)}catch(n){Ki(n,e,i.text,t)}return"undefined"}function Gi(r,e,t){return{...globalThis,Error,RegExp,process,Buffer,module:e,require:t,console,setTimeout,setInterval,clearTimeout,clearInterval,ReferenceError,__dirname:S(r),__filename:r}}function Ki(r,e,t,i){(!r||typeof r!="object"||!("stack"in r))&&(r=new Error(String(r)));let o=i.getStart(e.sourceFile),{line:n}=e.sourceFile.getLineAndCharacterOfPosition(o);u(E).setSource(t,e.sourceFile.fileName);let s=new He(r,n);e.errors.push({text:s.message,detail:s})}function qi(r,e){let t=null,i=o=>{if(!t){if(D.isFunctionDeclaration(o)&&o.name?.text===r){t=o;return}D.isVariableStatement(o)&&(t=Yi(o,r),t)||D.forEachChild(o,i)}};return i(e),t}function Yi(r,e){for(let t of r.declarationList.declarations)if(D.isIdentifier(t.name)&&t.name.text===e&&t.initializer&&(D.isArrowFunction(t.initializer)||D.isFunctionExpression(t.initializer)))return t.initializer;return null}function ir(r){return`module.exports = (${r})();`}function Xi(r){return r&D.NodeFlags.Const?"const":r&D.NodeFlags.Let?"let":"var"}function or(r,e){return r?D.isIdentifier(r)?Ji(r,e):D.isArrowFunction(r)||D.isFunctionExpression(r)?{node:r,data:ir(r.getText(e.sourceFile))}:{node:r,data:r.getText(e.sourceFile)}:null}function Ji(r,e){let t=qi(r.text,e.sourceFile);return t?{node:t,data:ir(t.getText(e.sourceFile))}:(Qi(r.text,e,r),{data:"",node:r})}function Qi(r,e,t){let i=t.getStart(e.sourceFile),{line:o,character:n}=e.sourceFile.getLineAndCharacterOfPosition(i),s=F(".",e.sourceFile.fileName);e.warnings.push({text:`Function $$inline(${r}); not found in ${s}`,location:{line:o+1,column:n,file:e.sourceFile.fileName,lineText:"asd"}})}async function nr(r,e,t,i,o){let n=t.arguments[0],s=or(n,o);if(!s)return!1;let a=await rr(s.data,o,s.node),c=Xi(e.declarationList.flags),l=i?"export ":"",p=r.name.getText(o.sourceFile);return`${l}${c} ${p} = ${a};`}async function lt(r,e){let t=r[0],i=or(t,e);return i?rr(i.data,e,i.node):!1}var Zi=/\.(ts|js)$/,Q=["$$ifdef","$$ifndef","$$inline"];function ft(r,e){return Q.some(t=>r.getText(e).includes(t))}function ar(r){return r===Q[2]?1:2}async function eo(r,e,t){let i=!1;for(let o of r.declarationList.declarations){let n="",s,a=o.initializer;if(!a||(h.isCallExpression(a)&&h.isIdentifier(a.expression)?s=a:h.isCallExpression(a)&&h.isCallExpression(a.expression)&&h.isIdentifier(a.expression.expression)?(s=a.expression,n=`(${a.arguments.map(f=>f.getText(t.sourceFile)).join(", ")})`):h.isAsExpression(a)&&h.isCallExpression(a.expression)&&h.isIdentifier(a.expression.expression)&&(s=a.expression),!s))continue;let c=s.expression.text;if(!Q.includes(c))continue;if(s.arguments.length!==ar(c)){let{line:p,character:f}=t.sourceFile.getLineAndCharacterOfPosition(s.getStart(t.sourceFile));throw new X({text:`Invalid macro call: ${c} with ${s.arguments.length} arguments`,location:{file:t.sourceFile.fileName,line:p+1,column:f}})}let l=r.modifiers?.some(p=>p.kind===h.SyntaxKind.ExportKeyword)??!1;c===Q[2]?i=await nr(o,r,s,l,t):n?i=Le(s,t,o,l,n):i=er(o,s,l,t),i!==!1&&e.add({replacement:i,end:r.getEnd(),start:r.getStart(t.sourceFile)})}return i!==!1}async function to(r,e,t){let i=r.expression;if(!i.expression||!h.isIdentifier(i.expression))return!1;let o=i.expression.text;if(!Q.includes(o))return!1;if(i.arguments.length!==ar(o)){let{line:s,character:a}=t.sourceFile.getLineAndCharacterOfPosition(r.getStart(t.sourceFile));throw new X({text:`Invalid macro call: ${o} with ${i.arguments.length} arguments`,location:{file:t.sourceFile.fileName,line:s+1,column:a}})}let n=!1;return o==Q[2]?(await lt(i.arguments,t),n="undefined"):n=Le(i,t),n!==!1&&e.add({replacement:n,end:i.getEnd(),start:i.getStart(t.sourceFile)}),n!==!1}async function ro(r,e,t){if(!h.isCallExpression(r)||!ft(r,t.sourceFile))return!1;let i=r;if(!h.isIdentifier(i.expression))return!1;if(i.expression.text===Q[2]){let s=await lt(i.arguments,t);return s===!1?!1:(e.add({start:r.getStart(t.sourceFile),end:r.getEnd(),replacement:s}),!0)}let n=Le(i,t);return n===!1?!1:(e.add({start:r.getStart(t.sourceFile),end:r.getEnd(),replacement:n}),!0)}async function io(r,e="unknow"){let t=r.stage.defineMetadata.disabledMacroNames,i=r.stage.defineMetadata.filesWithMacros.has(r.sourceFile.fileName);if(!i&&t.size===0)return r.contents;let o=[r.sourceFile],n=new Set;for(;o.length>0;){let c=o.pop(),l=c?.kind;if(!c||!l||i&&(l===h.SyntaxKind.VariableStatement&&await eo(c,n,r)||l===h.SyntaxKind.ExpressionStatement&&ft(c,r.sourceFile)&&await to(c,n,r)||l===h.SyntaxKind.CallExpression&&ft(c,r.sourceFile)&&await ro(c,n,r)))continue;if(t.size>0){if(l===h.SyntaxKind.CallExpression){let f=c;h.isIdentifier(f.expression)&&t.has(f.expression.text)&&n.add({start:c.getStart(r.sourceFile),end:c.getEnd(),replacement:"undefined"})}else if(l===h.SyntaxKind.Identifier){let f=c;if(t.has(f.text)){let d=c.parent??c;if(d&&!h.isImportSpecifier(d)&&!h.isExportSpecifier(d)){let g=d?.getText(r.sourceFile);(!h.isCallExpression(d)||d.expression!==c)&&(!g||Q.every(H=>!g.includes(H)))&&n.add({start:c.getStart(r.sourceFile),end:c.getEnd(),replacement:"undefined"})}}}}let p=c.getChildren(r.sourceFile);for(let f=p.length-1;f>=0;f--)o.push(p[f])}if(n.size===0)return r.contents;let s=Array.from(n);s.sort((c,l)=>l.start-c.start),r.stage.replacementInfo??={},r.stage.replacementInfo[e]??=[];let a=r.stage.replacementInfo[e];for(let{start:c,end:l,replacement:p}of s)a.push({source:sr(r.contents.slice(c,l)),replacement:sr(p)}),r.contents=r.contents.slice(0,c)+p+r.contents.slice(l);return r.contents}async function cr(r,e){let{args:t,loader:i,stage:o,contents:n,variantName:s,options:a,argv:c}=e;if(t.path.includes("node_modules")||n.length<1||!Zi.test(t.path))return;let p=r.typescript.languageService.getProgram()?.getSourceFile(t.path);if(!p)return;let f={stage:o,errors:[],contents:n.toString(),warnings:[],defines:r.config.define??{},sourceFile:p,context:{argv:c,options:a,variantName:s}},d=await io(f,r.name);return r.config.esbuild.bundle||r.typescript.languageHostService.aliasRegex&&(d=r.typescript.languageHostService.resolveAliases(d,t.path,".js")),{loader:i,contents:d,warnings:f.warnings,errors:f.errors}}var lr="$$",fr=/(?:(?:export\s+)?(?:const|let|var)\s+([\w$]+)\s*=\s*)?\$\$(ifdef|ifndef|inline)\s*\(\s*(?:['"]([^'"]+)['"])?/g;function oo(r,e,t,i){let o=1;for(let s=0;s<i;s++)r[s]===`
45
+ `),category:e.category};if(e.file&&e.start!==void 0){let{line:i,character:o}=e.file.getLineAndCharacterOfPosition(e.start);t.file=e.file.fileName,t.line=i+1,t.column=o+1,t.code=e.code}return t}};at=P(null),_=R(at,0,"TypescriptService",Gt,_),$(at,1,_);var ae=_;import{cwd as Ne}from"process";import{build as ct}from"esbuild";var Kt={write:!1,bundle:!0,minify:!0,outdir:`${Ne()}`,format:"esm",target:"esnext",platform:"browser",sourcemap:"external",mangleQuoted:!0,sourcesContent:!0,preserveSymlinks:!0};async function qt(r,e={}){try{return await ct({absWorkingDir:Ne(),...Kt,...e,metafile:!0,entryPoints:r})}catch(t){if(G(t)){let i=new AggregateError([],"Failed to build entryPoints");throw be(t.errors,i.errors),i}throw t}}async function Yt(r,e,t={}){return await ct({absWorkingDir:Ne(),...Kt,...t,stdin:{loader:"ts",contents:r,resolveDir:Ne(),sourcefile:e},write:!1,metafile:!0,logLevel:"silent",sourcemap:"external"})}async function Xt(r,e={}){try{return await ct({...e,outdir:"tmp",write:!1,bundle:!0,metafile:!0,packages:"external",logLevel:"silent",entryPoints:r})}catch(t){if(G(t)){let i=new AggregateError([],"Failed to analyze entryPoint");throw be(t.errors,i.errors),i}throw t}}function Jt(r,e){if(Array.isArray(e)){let t={};return e.length>0&&typeof e[0]=="object"?e.forEach(i=>{t[i.out]=i.in}):typeof e[0]=="string"&&(t=Ae(r,e)),t}else if(e&&typeof e=="object")return e;throw new w("Unsupported entry points format")}var De=class{constructor(e,t,i,o={}){this.name=e;this.lifecycle=t;this.buildConfig=i;this.argv=o;if(!this.buildConfig?.esbuild)throw new w(`Variant '${this.name}' not found configuration`);this.tsConfigPath=this.buildConfig.esbuild.tsconfig??"tsconfig.json",this.typescriptModule=new ae(this.tsConfigPath),this.buildConfig=this.initializeConfig(this.getConfig(this.buildConfig,this.configService.getValue().common)),this.typescriptModule.languageHostService.touchFiles(Object.values(this.buildConfig.esbuild.entryPoints)),this.lifecycle.onEnd(this.end.bind(this),`${this.name}-core`),this.lifecycle.onStart(this.start.bind(this),`${this.name}-core`),this.configUnsubscribe=this.configService.select(n=>({variantConfig:n.variants?.[this.name],commonConfig:n.common})).subscribe(this.handleConfigChange.bind(this),n=>{throw n})}dependenciesFile;active=!0;tsConfigPath;typescriptModule;configUnsubscribe;configService=u(x);get typescript(){return this.typescriptModule}get config(){return this.buildConfig}get dependencies(){return this.dependenciesFile??{}}dispose(){this.configUnsubscribe(),this.typescriptModule.dispose(this.tsConfigPath)}touchFiles(e){this.typescriptModule.touchFiles(e)}async check(){return this.dependenciesFile||(this.dependenciesFile=await this.buildDependencyMap()),this.typescriptModule.check(Object.values(this.dependenciesFile))}async build(){if(!this.active)return;this.applyInjections();let e=Object.assign({},this.buildConfig.esbuild);this.dependenciesFile=await this.buildDependencyMap(),this.buildConfig.esbuild.bundle===!1&&Object.assign(e,{entryPoints:this.dependenciesFile});try{let t=await Mi(e);return await this.packageTypeComponent(),t}catch(t){if(G(t)){if(t.errors.filter(o=>o.location).length>0)throw t;return{errors:t?.errors??[],warnings:t?.warnings??[]}}}}getConfig(e,t={}){return e?Y({},t,e):null}async start(){let e={errors:[],warnings:[]};if(!this.buildConfig.types)return e;let t=this.typescriptModule.check(Object.values(this.dependenciesFile??{}));if(t.length===0)return e;if(typeof this.buildConfig.types=="object"&&!this.buildConfig.types.failOnError){let o=new N("Type checking failed",t);e.warnings?.push({detail:o,location:void 0})}else{let o=[],n=[],s=new N("Type checking failed",o),a=new N("Type checking failed",n);for(let c of t)(c.category===Ri.DiagnosticCategory.Error?o:n).push(c);o.length&&e.errors?.push({detail:s,location:void 0}),n.length&&e.warnings?.push({detail:a,location:void 0})}return e}async end(e){if(e.buildResult.errors?.length>0)return;let t={errors:[],warnings:[]};if(typeof e.buildResult.metafile?.outputs=="object"){let s=Object.keys(e.buildResult.metafile?.outputs);for(let a of s){if(!a.endsWith(".map"))continue;let c=S(a);Ni(a,"utf8").then(l=>{let p=JSON.parse(l);p.sources=p.sources.map(f=>f.startsWith("http")?f:v(c,f)),Qt(a,JSON.stringify(p),"utf8")})}}if(!this.buildConfig.declaration)return;let i=this.buildConfig.declaration,o=typeof i=="object"?i.bundle!==!1:!0,n=typeof i=="object"?i.outDir:void 0;try{o?await this.typescriptModule.emitBundle(this.buildConfig.esbuild.entryPoints,n):await this.typescriptModule.emit(n)}catch(s){t.warnings?.push({detail:s,location:void 0})}return t}registerConfigHooks(e){if(!e)return;let{onStart:t,onResolve:i,onLoad:o,onEnd:n,onSuccess:s}=e;t&&this.lifecycle.onStart(t),i&&this.lifecycle.onResolve(i),o&&this.lifecycle.onLoad(o),n&&this.lifecycle.onEnd(n),s&&this.lifecycle.onSuccess(s)}async packageTypeComponent(){let e=this.buildConfig.esbuild.outdir??"dist",t=this.buildConfig.esbuild.format==="esm"?"module":"commonjs";await Bi(e,{recursive:!0}),await Qt(v(e,"package.json"),`{"type": "${t}"}`)}initializeConfig(e){if(!e)throw new w(`Variant '${this.name}' not found configuration`);if(!e.esbuild.entryPoints)throw new w("Entry points are required in esbuild configuration");let t=e.define,i=t?Object.fromEntries(Object.entries(t).map(([o,n])=>[o,JSON.stringify(n)])):void 0;return this.registerConfigHooks(e.lifecycle),e.esbuild.entryPoints=Jt(this.typescriptModule.config.options.rootDir??process.cwd(),e.esbuild.entryPoints),e.esbuild=Object.assign({},e.esbuild,{define:i,logLevel:"silent",plugins:[this.lifecycle.create()]}),e}async handleConfigChange({variantConfig:e,commonConfig:t}){this.active=!1;let i=this.getConfig(e,t);i&&(this.active=!0,this.buildConfig=this.initializeConfig(i),i.esbuild.outdir&&i.esbuild.outfile&&(this.buildConfig.esbuild.outdir=void 0),i.esbuild.tsconfig&&i.esbuild.tsconfig!==this.tsConfigPath&&(this.typescriptModule.dispose(this.tsConfigPath),this.tsConfigPath=i.esbuild.tsconfig,this.typescriptModule=new ae(this.tsConfigPath)))}stripExtension(e){let t=e.lastIndexOf(".");return t>0?e.substring(0,t):e}async buildDependencyMap(){let{esbuild:e}=this.buildConfig,{metafile:t}=await Xt(e.entryPoints,{loader:e.loader,platform:e.platform}),i={};for(let o of Object.keys(t.inputs)){let n=F(this.typescriptModule.config.options.rootDir,I(o)),s=this.stripExtension(n);i[s]=o}return i}injectTextBlock(e){let t=this.buildConfig[e];if(!t)return;let i=this.buildConfig.esbuild;i[e]??={};for(let[o,n]of Object.entries(t))i[e][o]=typeof n=="function"?n(this.name,this.argv):n}applyInjections(){this.injectTextBlock("banner"),this.injectTextBlock("footer")}};import{readFile as Di}from"fs/promises";var je=class{constructor(e,t){this.variantName=e;this.argv=t}filesModel=u(b);endHooks=new Map;loadHooks=new Map;startHooks=new Map;successHooks=new Map;resolveHooks=new Map;onStart(e,t=this.variantName){e&&this.startHooks.set(t,e)}onEnd(e,t=this.variantName){e&&this.endHooks.set(t,e)}onSuccess(e,t=this.variantName){e&&this.successHooks.set(t,e)}onResolve(e,t=this.variantName){e&&this.resolveHooks.set(t,e)}onLoad(e,t=this.variantName){e&&this.loadHooks.set(t,e)}clearAll(){this.endHooks.clear(),this.loadHooks.clear(),this.startHooks.clear(),this.successHooks.clear(),this.resolveHooks.clear()}create(){return{name:this.variantName,setup:e=>{let t={argv:this.argv,options:e.initialOptions,variantName:this.variantName,stage:{startTime:new Date}};e.initialOptions.metafile=!0,this.startHooks.size>0&&e.onStart(this.executeStartHooks.bind(this,t,e)),(this.endHooks.size>0||this.successHooks.size>0)&&e.onEnd(this.executeEndHooks.bind(this,t)),this.resolveHooks.size>0&&e.onResolve({filter:/.*/},this.executeResolveHooks.bind(this,t)),this.loadHooks.size>0&&e.onLoad({filter:/.*/},this.executeLoadHooks.bind(this,t))}}}pushError(e,t,i,o=this.variantName){e.push({id:t,detail:i,location:null,pluginName:o})}async executeStartHooks(e,t){e.stage.startTime=new Date;let i=[],o=[],n={build:t,...e};for(let[s,a]of this.startHooks.entries())try{let c=await a(n);c?.errors&&i.push(...c.errors),c?.warnings&&o.push(...c.warnings)}catch(c){this.pushError(i,"startHook",c,s)}return{errors:i,warnings:o}}async executeEndHooks(e,t){let{errors:i,warnings:o}=t,n=Date.now()-e.stage.startTime.getTime(),s={buildResult:t,duration:n,...e};for(let[a,c]of this.endHooks.entries())try{let l=await c(s);l?.errors&&i.push(...l.errors),l?.warnings&&o.push(...l.warnings)}catch(l){this.pushError(i,"endHook",l,a)}if(t.errors.length===0)for(let[a,c]of this.successHooks.entries())try{await c(s)}catch(l){this.pushError(i,"endHook",l,a)}}async executeResolveHooks(e,t){let i={errors:[]},o={args:t,...e};for(let[n,s]of this.resolveHooks.entries())try{let a=await s(o);if(!a)continue;i={...i,...a}}catch(a){this.pushError(i.errors,"endResolve",a,n)}return i}async executeLoadHooks(e,t){let i=[],o=[],n="default",s=I(t.path),a=this.filesModel.getSnapshot(s),c=a?.contentSnapshot?a.contentSnapshot.text:await Di(s,"utf8");for(let[l,p]of this.loadHooks.entries())try{let f=await p({contents:c,loader:n,args:t,...e});if(!f)continue;f.contents!==void 0&&(c=f.contents),f.loader&&(n=f.loader),f.errors&&i.push(...f.errors),f.warnings&&o.push(...f.warnings)}catch(f){this.pushError(i,"loadHook",f,l)}return{contents:c,loader:n,errors:i,warnings:o}}};import h from"typescript";import{highlightCode as sr}from"@remotex-labs/xmap/highlighter.component";import V from"typescript";var ji="$$ifdef";function Li(r,e,t,i=!1){let o=i?"export function ":"function ";return V.isArrowFunction(e)||V.isFunctionExpression(e)?Hi(r,e,t,o):`${i?"export const ":"const "}${r} = ${e.getText(t)};`}function Hi(r,e,t,i){let n=e.modifiers?.some(l=>l.kind===V.SyntaxKind.AsyncKeyword)??!1?"async ":"",s=e.parameters.map(l=>l.getText(t)).join(", "),a=e.type?`: ${e.type.getText(t)}`:"",c=_i(e,t);return`${n}${i}${r}(${s})${a} ${c}`}function _i(r,e){let t=r.body.getText(e);return V.isArrowFunction(r)&&!V.isBlock(r.body)?`{ return ${t}; }`:t}function Vi(r,e,t="",i="();"){return V.isArrowFunction(r)||V.isFunctionExpression(r)?`${r.modifiers?.some(s=>s.kind===V.SyntaxKind.AsyncKeyword)??!1?"async ":""}${t}(${r.getText(e)})${i}`:t?`${t}${r.getText(e)}`:`(() => { return ${r.getText(e)}; })${i}`}function Zt(r,e,t){let i=r in t&&!!t[r];return e===ji===i}function er(r,e,t,i){let[o,n]=e.arguments;if(!V.isStringLiteral(o))return!1;let s=e.expression.text,a=o.text;if(!Zt(a,s,i.defines))return"undefined";let c=r.name.getText(i.sourceFile);return Li(c,n,i.sourceFile,t)}function Le(r,e,t,i=!1,o){let[n,s]=r.arguments;if(!V.isStringLiteral(n))return!1;let a=n.text,c=r.expression.text;if(!Zt(a,c,e.defines))return"";let l="",p=t?.name.getText(e.sourceFile);return p&&(l=i?`export const ${p} = `:`const ${p} = `),Vi(s,e.sourceFile,l,o)}import D from"typescript";import{createRequire as Wi}from"module";var He=class extends y{constructor(e,t=0){super(e.message,"InlineError"),this.errorMetadata=z(e,{},t),this.stack=W(this.errorMetadata,this.name,this.message)}};import{Script as Ui,createContext as zi}from"vm";async function tr(r,e={},t={}){let i=new Ui(r,t),o=zi(e);return await i.runInContext(o,{breakOnSigint:!0,displayErrors:!1})}async function rr(r,e,t){let[i,o]=(await Yt(r,e.sourceFile.fileName,{bundle:!0,format:"cjs",platform:"node",packages:"external"})).outputFiles;try{let n={exports:{}},s=Wi(e.sourceFile.fileName),a=Gi(e.sourceFile.fileName,n,s);a.context=e.context;let c=await tr(o.text,a,{filename:e.sourceFile.fileName});return c===null?"undefined":typeof c=="number"||typeof c=="boolean"?String(c):JSON.stringify(c)}catch(n){Ki(n,e,i.text,t)}return"undefined"}function Gi(r,e,t){return{...globalThis,Error,RegExp,process,Buffer,module:e,require:t,console,setTimeout,setInterval,clearTimeout,clearInterval,ReferenceError,__dirname:S(r),__filename:r}}function Ki(r,e,t,i){(!r||typeof r!="object"||!("stack"in r))&&(r=new Error(String(r)));let o=i.getStart(e.sourceFile),{line:n}=e.sourceFile.getLineAndCharacterOfPosition(o);u(E).setSource(t,e.sourceFile.fileName);let s=new He(r,n);e.errors.push({text:s.message,detail:s})}function qi(r,e){let t=null,i=o=>{if(!t){if(D.isFunctionDeclaration(o)&&o.name?.text===r){t=o;return}D.isVariableStatement(o)&&(t=Yi(o,r),t)||D.forEachChild(o,i)}};return i(e),t}function Yi(r,e){for(let t of r.declarationList.declarations)if(D.isIdentifier(t.name)&&t.name.text===e&&t.initializer&&(D.isArrowFunction(t.initializer)||D.isFunctionExpression(t.initializer)))return t.initializer;return null}function ir(r){return`module.exports = (${r})();`}function Xi(r){return r&D.NodeFlags.Const?"const":r&D.NodeFlags.Let?"let":"var"}function or(r,e){return r?D.isIdentifier(r)?Ji(r,e):D.isArrowFunction(r)||D.isFunctionExpression(r)?{node:r,data:ir(r.getText(e.sourceFile))}:{node:r,data:r.getText(e.sourceFile)}:null}function Ji(r,e){let t=qi(r.text,e.sourceFile);return t?{node:t,data:ir(t.getText(e.sourceFile))}:(Qi(r.text,e,r),{data:"",node:r})}function Qi(r,e,t){let i=t.getStart(e.sourceFile),{line:o,character:n}=e.sourceFile.getLineAndCharacterOfPosition(i),s=F(".",e.sourceFile.fileName);e.warnings.push({text:`Function $$inline(${r}); not found in ${s}`,location:{line:o+1,column:n,file:e.sourceFile.fileName,lineText:"asd"}})}async function nr(r,e,t,i,o){let n=t.arguments[0],s=or(n,o);if(!s)return!1;let a=await rr(s.data,o,s.node),c=Xi(e.declarationList.flags),l=i?"export ":"",p=r.name.getText(o.sourceFile);return`${l}${c} ${p} = ${a};`}async function lt(r,e){let t=r[0],i=or(t,e);return i?rr(i.data,e,i.node):!1}var Zi=/\.(ts|js)$/,Q=["$$ifdef","$$ifndef","$$inline"];function ft(r,e){return Q.some(t=>r.getText(e).includes(t))}function ar(r){return r===Q[2]?1:2}async function eo(r,e,t){let i=!1;for(let o of r.declarationList.declarations){let n="",s,a=o.initializer;if(!a||(h.isCallExpression(a)&&h.isIdentifier(a.expression)?s=a:h.isCallExpression(a)&&h.isCallExpression(a.expression)&&h.isIdentifier(a.expression.expression)?(s=a.expression,n=`(${a.arguments.map(f=>f.getText(t.sourceFile)).join(", ")})`):h.isAsExpression(a)&&h.isCallExpression(a.expression)&&h.isIdentifier(a.expression.expression)&&(s=a.expression),!s))continue;let c=s.expression.text;if(!Q.includes(c))continue;if(s.arguments.length!==ar(c)){let{line:p,character:f}=t.sourceFile.getLineAndCharacterOfPosition(s.getStart(t.sourceFile));throw new X({text:`Invalid macro call: ${c} with ${s.arguments.length} arguments`,location:{file:t.sourceFile.fileName,line:p+1,column:f}})}let l=r.modifiers?.some(p=>p.kind===h.SyntaxKind.ExportKeyword)??!1;c===Q[2]?i=await nr(o,r,s,l,t):n?i=Le(s,t,o,l,n):i=er(o,s,l,t),i!==!1&&e.add({replacement:i,end:r.getEnd(),start:r.getStart(t.sourceFile)})}return i!==!1}async function to(r,e,t){let i=r.expression;if(!i.expression||!h.isIdentifier(i.expression))return!1;let o=i.expression.text;if(!Q.includes(o))return!1;if(i.arguments.length!==ar(o)){let{line:s,character:a}=t.sourceFile.getLineAndCharacterOfPosition(r.getStart(t.sourceFile));throw new X({text:`Invalid macro call: ${o} with ${i.arguments.length} arguments`,location:{file:t.sourceFile.fileName,line:s+1,column:a}})}let n=!1;return o==Q[2]?(await lt(i.arguments,t),n="undefined"):n=Le(i,t),n!==!1&&e.add({replacement:n,end:i.getEnd(),start:i.getStart(t.sourceFile)}),n!==!1}async function ro(r,e,t){if(!h.isCallExpression(r)||!ft(r,t.sourceFile))return!1;let i=r;if(!h.isIdentifier(i.expression))return!1;if(i.expression.text===Q[2]){let s=await lt(i.arguments,t);return s===!1?!1:(e.add({start:r.getStart(t.sourceFile),end:r.getEnd(),replacement:s}),!0)}let n=Le(i,t);return n===!1?!1:(e.add({start:r.getStart(t.sourceFile),end:r.getEnd(),replacement:n}),!0)}async function io(r,e="unknow"){let t=r.stage.defineMetadata.disabledMacroNames,i=r.stage.defineMetadata.filesWithMacros.has(r.sourceFile.fileName);if(!i&&t.size===0)return r.contents;let o=[r.sourceFile],n=new Set;for(;o.length>0;){let c=o.pop(),l=c?.kind;if(!c||!l||i&&(l===h.SyntaxKind.VariableStatement&&await eo(c,n,r)||l===h.SyntaxKind.ExpressionStatement&&ft(c,r.sourceFile)&&await to(c,n,r)||l===h.SyntaxKind.CallExpression&&ft(c,r.sourceFile)&&await ro(c,n,r)))continue;if(t.size>0){if(l===h.SyntaxKind.CallExpression){let f=c;h.isIdentifier(f.expression)&&t.has(f.expression.text)&&n.add({start:c.getStart(r.sourceFile),end:c.getEnd(),replacement:"undefined"})}else if(l===h.SyntaxKind.Identifier){let f=c;if(t.has(f.text)){let d=c.parent??c;if(d&&!h.isImportSpecifier(d)&&!h.isExportSpecifier(d)){let g=d?.getText(r.sourceFile);(!h.isCallExpression(d)||d.expression!==c)&&(!g||Q.every(H=>!g.includes(H)))&&n.add({start:c.getStart(r.sourceFile),end:c.getEnd(),replacement:"undefined"})}}}}let p=c.getChildren(r.sourceFile);for(let f=p.length-1;f>=0;f--)o.push(p[f])}if(n.size===0)return r.contents;let s=Array.from(n);s.sort((c,l)=>l.start-c.start),r.stage.replacementInfo??={},r.stage.replacementInfo[e]??=[];let a=r.stage.replacementInfo[e];for(let{start:c,end:l,replacement:p}of s)a.push({source:sr(r.contents.slice(c,l)),replacement:sr(p)}),r.contents=r.contents.slice(0,c)+p+r.contents.slice(l);return r.contents}async function cr(r,e){let{args:t,loader:i,stage:o,contents:n,variantName:s,options:a,argv:c}=e;if(t.path.includes("node_modules")||n.length<1||!Zi.test(t.path))return;let p=r.typescript.languageService.getProgram()?.getSourceFile(t.path);if(!p)return;let f={stage:o,errors:[],contents:n.toString(),warnings:[],defines:r.config.define??{},sourceFile:p,context:{argv:c,options:a,variantName:s}},d=await io(f,r.name);return r.config.esbuild.bundle||r.typescript.languageHostService.aliasRegex&&(d=r.typescript.languageHostService.resolveAliases(d,t.path,".js")),{loader:i,contents:d,warnings:f.warnings,errors:f.errors}}var lr="$$",fr=/(?:(?:export\s+)?(?:const|let|var)\s+([\w$]+)\s*=\s*)?\$\$(ifdef|ifndef|inline)\s*\(\s*(?:['"]([^'"]+)['"])?/g;function oo(r,e,t,i){let o=1;for(let s=0;s<i;s++)r[s]===`
46
46
  `&&o++;let n=r.lastIndexOf(`
47
47
  `,i-1)+1;return{file:t,line:o,column:r.indexOf(e,n)-n}}function no(r,e){let t=r.lastIndexOf(`
48
48
  `,e-1)+1;for(;t<e&&(r[t]===" "||r[t]===" ");)t++;if(t>=e)return!1;let i=r[t],o=r[t+1];return i==="/"&&(o==="/"||o==="*")||i==="*"}async function pr(r,e){let t={disabledMacroNames:new Set,filesWithMacros:new Set};e.stage.defineMetadata=t;let i=[],o=u(b),n=r.config.define??{},s=Object.values(r.dependencies??{});for(let a of s){let c=o.getOrTouchFile(a)?.contentSnapshot?.text;if(!c)continue;let l=o.resolve(a);fr.lastIndex=0;for(let p of c.matchAll(fr)){let f=p.index;if(no(c,f))continue;let[,d,g,H]=p;if(t.filesWithMacros.add(l),!d||(d.startsWith(lr)||i.push({text:`Macro function '${d}' not start with '${lr}' prefix to avoid conflicts`,location:oo(c,d,a,f)}),g==="inline"))continue;let K=!!n[H];g==="ifndef"===K&&t.disabledMacroNames.add(d)}}return{warnings:i}}var Ie=class{constructor(e={}){this.argv=e;this.configuration.subscribe(this.parseVariants.bind(this))}onEndCallback;onStartCallback;variants={};configuration=u(x);get config(){return this.configuration.getValue()}set onEnd(e){this.onEndCallback=e}set onStart(e){this.onStartCallback=e}reload(e){e&&this.configuration.reload(e),this.disposeVariants(this.compareKeys(this.config.variants,this.variants)),this.parseVariants()}touchFiles(e){for(let t of Object.values(this.variants))t.touchFiles(e)}setConfiguration(e){this.configuration.patch(e)}async typeChack(){let e={};for(let t of Object.values(this.variants))e[t.name]=await t.check();return e}async build(e){let t=[],i={},o=Object.entries(this.variants).map(async([n,s])=>{if(!(e&&!e.includes(n)))try{let a=await s.build();a&&(i[n]=Se(a))}catch(a){if(G(a)||a instanceof AggregateError){let c=Se({errors:a.errors});t.push(...c.errors)}else a instanceof Error?t.push(a):t.push(new Error(String(a)))}});if(await Promise.allSettled(o),t.length)throw new AggregateError(t,"Build failed");return i}onEndTrigger(e){this.onEndCallback&&this.onEndCallback(e)}async onStartTrigger(e){try{let t=await pr(this.variants[e.variantName],e);return this.onStartCallback&&this.onStartCallback(e),t}catch(t){let i=[];if(t instanceof AggregateError){for(let o of t.errors)i.push({detail:o,text:o.message});return{errors:i}}throw t}}disposeVariants(e){if(e.length)for(let t of e)this.variants[t].dispose(),delete this.variants[t]}compareKeys(e,t){return[...Object.keys(t).filter(n=>!(n in e))]}parseVariants(){if(!this.config.variants)throw new w("Variants are not defined in the configuration");for(let e of Object.keys(this.config.variants)){if(this.variants[e])continue;let t=new je(e,this.argv);t.onEnd(this.onEndTrigger.bind(this),"build-service"),t.onStart(this.onStartTrigger.bind(this),"build-service"),this.variants[e]=new De(e,t,this.config.variants[e],this.argv),t.onLoad(cr.bind({},this.variants[e]),"build-service")}}};function ur(r){u(x).reload(r)}function dr(r){u(x).patch(r)}import{platform as ao,exit as co,stdin as _e,stdout as ut}from"process";import{xterm as Ve}from"@remotex-labs/xansi/xterm.component";var pt={SIGINT:"",SIGQUIT:""},T={HELP:"h",QUIT:"q",CLEAR:"c",RELOAD:"r",VERBOSE:"v",SHOW_URL:"u",OPEN_BROWSER:"o"},mr={win32:"start",darwin:"open",linux:"xdg-open"};function lo(r=!1){let e=["\u{1F680} Shortcuts"],t=Ve.dim(" press "),i=(o,n)=>{e.push(`${t}${Ve.bold(o)}${Ve.dim(n)}`)};return r&&(i(T.SHOW_URL," to show server url"),i(T.OPEN_BROWSER," to open in browser")),i(T.VERBOSE," to enable / disable verbose mode"),i(T.RELOAD," to reload"),i(T.CLEAR," to clear console"),i(T.QUIT,` to quit