@remotex-labs/xbuild 1.4.3 → 1.5.1

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/README.md CHANGED
@@ -146,7 +146,7 @@ export default config;
146
146
  ```
147
147
 
148
148
  ## Using the ifdef Plugin
149
- The `ifdef` plugin in `xBuild` helps conditionally include or exclude code based on defined variables. Here’s an example:
149
+ The `ifdef` plugin in `xBuild` allows to conditionally include or exclude code based on defined variables. Here’s an example:
150
150
  ```typescript
151
151
  // main.ts
152
152
 
@@ -183,7 +183,7 @@ In this example:
183
183
  * When `DEBUG` is set to `true`, the `Debug mode is enabled` message is included.
184
184
  * When `FEATURE_X` is `false`, the `console.log("Feature X is active");` line is excluded.
185
185
 
186
- This approach helps manage feature toggles and debug code efficiently, making it possible to build different versions of your code based on configuration.
186
+ This approach helps to manage feature toggles and debug code efficiently, making it possible to build different versions of your code based on a configuration.
187
187
 
188
188
  ## Hooks
189
189
  The `hooks` interface provides a structure for lifecycle hooks to customize the build process.
@@ -198,7 +198,7 @@ export interface hooks {
198
198
 
199
199
  ```typescript
200
200
  /**
201
- * Import will remove at compile time
201
+ * Imports will be remove at compile time
202
202
  */
203
203
 
204
204
  import type { xBuildConfig } from '@remotex-labs/xbuild';
@@ -229,7 +229,7 @@ const config: xBuildConfig = {
229
229
  serve: {
230
230
  port: 8080,
231
231
  host: 'localhost',
232
- active: true // can be activeate using -s insted
232
+ active: true // can be activeate using -s instead
233
233
  },
234
234
  hooks: {
235
235
  onStart: async (build) => {
@@ -265,5 +265,5 @@ console.log("Feature X is active");
265
265
  // endif
266
266
 
267
267
 
268
- $$logger('data'); // will be deleted if $$logger not exist
268
+ $$logger('data'); // will be deleted if $$logger does not exist
269
269
  ```
package/dist/cli.js CHANGED
@@ -8,6 +8,6 @@ __ _| |_/ /_ _ _| | __| |
8
8
  /_/\\_\\____/ \\__,_|_|_|\\__,_|
9
9
  `;function t(r=!0){return`
10
10
  \r${e("\x1B[38;5;208m",i,r)}
11
- \rVersion: ${e("\x1B[38;5;197m","1.4.3",r)}
11
+ \rVersion: ${e("\x1B[38;5;197m","1.0.0-local",r)}
12
12
  \r`}console.log(t());o(process.argv).catch(r=>{console.error(r.stack),process.exit(1)});
13
13
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/cli.ts", "../src/components/colors.component.ts", "../src/components/banner.component.ts"],
4
- "sourceRoot": "https://github.com/remotex-lab/xBuild/tree/v1.4.3/",
4
+ "sourceRoot": "https://github.com/remotex-lab/xBuild/tree/v1.0.0-local/",
5
5
  "sourcesContent": ["#!/usr/bin/env node\n\n/**\n * Import will remove at compile time\n */\n\nimport type { xBuildError } from '@errors/xbuild.error';\nimport type { VMRuntimeError } from '@errors/vm-runtime.error';\n\n/**\n * Imports\n */\n\nimport { buildWithArgv } from './index.js';\nimport { bannerComponent } from '@components/banner.component';\n\n/**\n * Banner\n */\n\nconsole.log(bannerComponent());\n\n/**\n * Run entrypoint of xBuild\n */\n\nbuildWithArgv(process.argv).catch((error: VMRuntimeError & xBuildError) => {\n console.error(error.stack);\n process.exit(1);\n});\n", "/**\n * An enumeration of ANSI color codes used for text formatting in the terminal.\n *\n * These colors can be used to format terminal output with various text colors,\n * including different shades of gray, yellow, and orange, among others.\n *\n * Each color code starts with an ANSI escape sequence (`\\u001B`), followed by the color code.\n * The `Reset` option can be used to reset the terminal's text formatting back to the default.\n *\n * @example\n * ```typescript\n * console.log(Color.BrightPink, 'This is bright pink text', Color.Reset);\n * ```\n *\n * @enum {string}\n */\n\nexport const enum Colors {\n Reset = '\\u001B[0m',\n Red = '\\u001B[38;5;9m',\n Gray = '\\u001B[38;5;243m',\n Cyan = '\\u001B[38;5;81m',\n DarkGray = '\\u001B[38;5;238m',\n LightCoral = '\\u001B[38;5;203m',\n LightOrange = '\\u001B[38;5;215m',\n OliveGreen = '\\u001B[38;5;149m',\n BurntOrange = '\\u001B[38;5;208m',\n LightGoldenrodYellow = '\\u001B[38;5;221m',\n LightYellow = '\\u001B[38;5;230m',\n CanaryYellow = '\\u001B[38;5;227m',\n DeepOrange = '\\u001B[38;5;166m',\n LightGray = '\\u001B[38;5;252m',\n BrightPink = '\\u001B[38;5;197m'\n}\n\n/**\n * Formats a message string with the specified ANSI color and optionally resets it after the message.\n *\n * This function applies an ANSI color code to the provided message,\n * and then appends the reset code to ensure that the color formatting doesn't extend beyond the message.\n * It's useful for outputting colored text in a terminal. If color formatting is not desired,\n * the function can return the message unformatted.\n *\n * @param color - The ANSI color code to apply. This is used only if `activeColor` is true.\n * @param msg - The message to be formatted with the specified color.\n * @param activeColor - A boolean flag indicating whether color formatting should be applied. Default is `__ACTIVE_COLOR`.\n *\n * @returns {string} A string with the specified color applied to the message,\n * followed by a reset sequence if `activeColor` is true.\n *\n * @example\n * ```typescript\n * const coloredMessage = setColor(Colors.LightOrange, 'This is a light orange message');\n * console.log(coloredMessage);\n * ```\n *\n * @example\n * ```typescript\n * const plainMessage = setColor(Colors.LightOrange, 'This is a light orange message', false);\n * console.log(plainMessage); // Output will be without color formatting\n * ```\n */\n\n\nexport function setColor(color: Colors, msg: string, activeColor: boolean = __ACTIVE_COLOR): string {\n if (!activeColor)\n return msg;\n\n return `${color}${msg}${Colors.Reset}`;\n}\n\n", "/**\n * Imports\n */\n\nimport { Colors, setColor } from '@components/colors.component';\n\n/**\n * ASCII Logo and Version Information\n *\n * @remarks\n * The `asciiLogo` constant stores an ASCII representation of the project logo\n * that will be displayed in the banner. This banner is rendered in a formatted\n * string in the `bannerComponent` function.\n *\n * The `cleanScreen` constant contains an ANSI escape code to clear the terminal screen.\n */\n\nexport const asciiLogo = `\n ______ _ _ _\n | ___ \\\\ (_) | | |\n__ _| |_/ /_ _ _| | __| |\n\\\\ \\\\/ / ___ \\\\ | | | | |/ _\\` |\n > <| |_/ / |_| | | | (_| |\n/_/\\\\_\\\\____/ \\\\__,_|_|_|\\\\__,_|\n`;\n\n// ANSI escape codes for colors\nexport const cleanScreen = '\\x1Bc';\n\n/**\n * Renders the banner with the ASCII logo and version information.\n *\n * This function constructs and returns a formatted banner string that includes an ASCII logo and the version number.\n * The colors used for the ASCII logo and version number can be enabled or disabled based on the `activeColor` parameter.\n * If color formatting is enabled, the ASCII logo will be rendered in burnt orange, and the version number will be in bright pink.\n *\n * @param activeColor - A boolean flag indicating whether ANSI color formatting should be applied. Default is `__ACTIVE_COLOR`.\n *\n * @returns A formatted string containing the ASCII logo, version number, and ANSI color codes if `activeColor` is `true`.\n *\n * @remarks\n * The `bannerComponent` function clears the terminal screen, applies color formatting if enabled, and displays\n * the ASCII logo and version number. The version number is retrieved from the global `__VERSION` variable, and\n * the colors are reset after the text is rendered.\n *\n * @example\n * ```typescript\n * console.log(bannerComponent());\n * ```\n *\n * This will output the banner to the console with the ASCII logo, version, and colors.\n *\n * @example\n * ```typescript\n * console.log(bannerComponent(false));\n * ```\n *\n * This will output the banner to the console with the ASCII logo and version number without color formatting.\n *\n * Todo \\r${ activeColor ? cleanScreen : '' }\n *\n * @public\n */\n\nexport function bannerComponent(activeColor: boolean = true): string {\n return `\n \\r${ setColor(Colors.BurntOrange, asciiLogo, activeColor) }\n \\rVersion: ${ setColor(Colors.BrightPink, __VERSION, activeColor) }\n \\r`;\n}\n\n/**\n * A formatted string prefix used for logging build-related messages.\n * // todo optimize this\n */\n\nexport function prefix() {\n return setColor(Colors.LightCoral, '[xBuild]');\n}\n"],
6
- "mappings": ";AAaA,OAAS,iBAAAA,MAAqB,aCmDvB,SAASC,EAASC,EAAeC,EAAaC,EAAuB,eAAwB,CAChG,OAAKA,EAGE,GAAGF,CAAK,GAAGC,CAAG,UAFVA,CAGf,CCpDO,IAAME,EAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EA+ClB,SAASC,EAAgBC,EAAuB,GAAc,CACjE,MAAO;AAAA,YACEC,mBAA6BC,EAAWF,CAAW,CAAE;AAAA,qBAC5CC,mBAA4B,QAAWD,CAAW,CAAE;AAAA,OAE1E,CFjDA,QAAQ,IAAIG,EAAgB,CAAC,EAM7BC,EAAc,QAAQ,IAAI,EAAE,MAAOC,GAAwC,CACvE,QAAQ,MAAMA,EAAM,KAAK,EACzB,QAAQ,KAAK,CAAC,CAClB,CAAC",
6
+ "mappings": ";AAaA,OAAS,iBAAAA,MAAqB,aCmDvB,SAASC,EAASC,EAAeC,EAAaC,EAAuB,eAAwB,CAChG,OAAKA,EAGE,GAAGF,CAAK,GAAGC,CAAG,UAFVA,CAGf,CCpDO,IAAME,EAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EA+ClB,SAASC,EAAgBC,EAAuB,GAAc,CACjE,MAAO;AAAA,YACEC,mBAA6BC,EAAWF,CAAW,CAAE;AAAA,qBAC5CC,mBAA4B,cAAWD,CAAW,CAAE;AAAA,OAE1E,CFjDA,QAAQ,IAAIG,EAAgB,CAAC,EAM7BC,EAAc,QAAQ,IAAI,EAAE,MAAOC,GAAwC,CACvE,QAAQ,MAAMA,EAAM,KAAK,EACzB,QAAQ,KAAK,CAAC,CAClB,CAAC",
7
7
  "names": ["buildWithArgv", "setColor", "color", "msg", "activeColor", "asciiLogo", "bannerComponent", "activeColor", "setColor", "asciiLogo", "bannerComponent", "buildWithArgv", "error"]
8
8
  }
@@ -336,6 +336,14 @@ export interface ConfigurationInterface {
336
336
  * @public
337
337
  */
338
338
  define: Record<string, unknown>;
339
+ /** Documentation: https://esbuild.github.io/api/#banner */
340
+ banner?: {
341
+ [type: string]: string | (() => string);
342
+ };
343
+ /** Documentation: https://esbuild.github.io/api/#footer */
344
+ footer?: {
345
+ [type: string]: string | (() => string);
346
+ };
339
347
  }
340
348
  interface ExportedConfigurationInterface extends ConfigurationInterface {
341
349
  /**
package/dist/index.js CHANGED
@@ -1,24 +1,24 @@
1
- import{cwd as he}from"process";import{readFileSync as ye}from"fs";import{fileURLToPath as ve}from"url";import{dirname as j,join as Se,resolve as $}from"path";function l(i,e,t=__ACTIVE_COLOR){return t?`${i}${e}\x1B[0m`:e}import{SourceService as Ce,formatErrorCode as be,highlightCode as xe}from"@remotex-labs/xmap";var N=he(),D=j(ve(import.meta.url)),we=j(D),F=(()=>{let i;return{get service(){if(!i){let e=ye(Se(D,"index.js.map"));i=new Ce(e.toString(),import.meta.url)}return i}}})();global.__ACTIVE_COLOR||(global.__ACTIVE_COLOR=!0);function Ee(i,e,t,r){return`${i.replace(`${r}\\`,e).replace(/\\/g,"/")}#L${t}`}function L(i,e,t,r,o){if(o.isPromiseAll())return`at async Promise.all (index: ${o.getPromiseIndex()})`;let n=o.isAsync()?"async":"",s=i?`${n} ${i}`:n,a=t>=0&&r>=0?l("\x1B[38;5;243m",`[${t}:${r}]`):"";return`at ${s} ${l("\x1B[38;5;238m",e)} ${a}`.replace(/\s{2,}/g," ").trim()}function Te(i){let e=i.getLineNumber()||-1,t=i.getColumnNumber()||-1,r=i.getFileName()||"<anonymous>",o=i.getTypeName()||"",n=i.getFunctionName()||"",s=i.isNative()?"<native>":n;return o&&(s=`${o}.${s}`),{functionName:s,source:r,line:e,column:t}}function Pe(i,e){let t=__ACTIVE_COLOR?xe(i.code):i.code;return i.name&&e.name=="TypeError"&&(e.message=e.message.replace(/^\S+/,i.name)),be({...i,code:t},{color:__ACTIVE_COLOR?"\x1B[38;5;197m":"",reset:__ACTIVE_COLOR?"\x1B[0m":""})}function ke(i,e){let{functionName:t,source:r,line:o,column:n}=Te(i);if(i.isPromiseAll()||i.isEval()||i.isNative())return L(t,r,o,n,i);let s=null,a=r===F.service.file;if(a?s=F.service.getPositionWithCode(o,n):e.error.sourceMap&&(s=e.error.sourceMap.getPositionWithCode(o,n)),s){let c=a?D:N,{line:p,column:v,name:B}=s,_=$(c,s.source);return e.blockCode||(e.blockCode=Pe(s,e.error)),s.sourceRoot&&(_=Ee($(c,s.source),s.sourceRoot,s.line,a?we:N)),L(B||t,_,p,v,i)}return r==="evalmachine.<anonymous>"?"":L(t,r,o,n,i)}function Oe(i,e){return e.map(t=>ke(t,i)).filter(Boolean)}function W(i,e){let t={error:i,blockCode:null,formattedError:global.__ACTIVE_COLOR?"\x1B[0m":""},r=Oe(t,e);return t.formattedError+=`
2
- ${i.name}:
3
- ${l("\x1B[38;5;203m",i.message)}
1
+ import{cwd as ye}from"process";import{readFileSync as ve}from"fs";import{fileURLToPath as Se}from"url";import{dirname as j,join as Ce,resolve as _}from"path";function f(o,e,t=__ACTIVE_COLOR){return t?`${o}${e}\x1B[0m`:e}import{SourceService as be,formatErrorCode as xe,highlightCode as we}from"@remotex-labs/xmap";var N=ye(),D=j(Se(import.meta.url)),Ee=j(D),F=(()=>{let o;return{get service(){if(!o){let e=ve(Ce(D,"index.js.map"));o=new be(e.toString(),import.meta.url)}return o}}})();global.__ACTIVE_COLOR||(global.__ACTIVE_COLOR=!0);function Te(o,e,t,r){return`${o.replace(`${r}\\`,e).replace(/\\/g,"/")}#L${t}`}function L(o,e,t,r,i){if(i.isPromiseAll())return`at async Promise.all (index: ${i.getPromiseIndex()})`;let n=i.isAsync()?"async":"",s=o?`${n} ${o}`:n,a=t>=0&&r>=0?f("\x1B[38;5;243m",`[${t}:${r}]`):"";return`at ${s} ${f("\x1B[38;5;238m",e)} ${a}`.replace(/\s{2,}/g," ").trim()}function Pe(o){let e=o.getLineNumber()||-1,t=o.getColumnNumber()||-1,r=o.getFileName()||"<anonymous>",i=o.getTypeName()||"",n=o.getFunctionName()||"",s=o.isNative()?"<native>":n;return i&&(s=`${i}.${s}`),{functionName:s,source:r,line:e,column:t}}function ke(o,e){let t=__ACTIVE_COLOR?we(o.code):o.code;return o.name&&e.name=="TypeError"&&(e.message=e.message.replace(/^\S+/,o.name)),xe({...o,code:t},{color:__ACTIVE_COLOR?"\x1B[38;5;197m":"",reset:__ACTIVE_COLOR?"\x1B[0m":""})}function Oe(o,e){let{functionName:t,source:r,line:i,column:n}=Pe(o);if(o.isPromiseAll()||o.isEval()||o.isNative())return L(t,r,i,n,o);let s=null,a=r===F.service.file;if(a?s=F.service.getPositionWithCode(i,n):e.error.sourceMap&&(s=e.error.sourceMap.getPositionWithCode(i,n)),s){let c=a?D:N,{line:p,column:g,name:v}=s,$=_(c,s.source);return e.blockCode||(e.blockCode=ke(s,e.error)),s.sourceRoot&&($=Te(_(c,s.source),s.sourceRoot,s.line,a?Ee:N)),L(v||t,$,p,g,o)}return r==="evalmachine.<anonymous>"?"":L(t,r,i,n,o)}function Re(o,e){return e.map(t=>Oe(t,o)).filter(Boolean)}function W(o,e){let t={error:o,blockCode:null,formattedError:global.__ACTIVE_COLOR?"\x1B[0m":""},r=Re(t,e);return t.formattedError+=`
2
+ ${o.name}:
3
+ ${f("\x1B[38;5;203m",o.message)}
4
4
 
5
5
  `,t.blockCode&&(t.formattedError+=`${t.blockCode}
6
6
 
7
7
  `),r.length>0&&(t.formattedError+=`Enhanced Stack Trace:
8
8
  ${r.join(`
9
9
  `)}
10
- `),t.formattedError}var M=Error.prepareStackTrace;Error.prepareStackTrace=(i,e)=>(i.callStacks=e,M?M(i,e):"");process.on("uncaughtException",i=>{console.error(i.stack)});process.on("unhandledRejection",i=>{console.error(i.stack)});import{existsSync as Et}from"fs";import Re from"yargs";import{hideBin as Ae}from"yargs/helpers";function H(i){let e=Re(Ae(i)).command("$0 [file]","A versatile JavaScript and TypeScript toolchain build system.",t=>{t.positional("entryPoints",{describe:"The file entryPoints to build",type:"string"}).option("typeCheck",{describe:"Perform type checking",alias:"tc",type:"boolean"}).option("node",{alias:"n",describe:"Build for node platform",type:"boolean"}).option("dev",{alias:"d",describe:"Array entryPoints to run as development in Node.js",type:"array"}).option("debug",{alias:"db",describe:"Array entryPoints to run in Node.js with debug state",type:"array"}).option("serve",{alias:"s",describe:"Serve the build folder over HTTP",type:"boolean"}).option("outdir",{alias:"o",describe:"Output directory",type:"string"}).option("declaration",{alias:"de",describe:"Add TypeScript declarations",type:"boolean"}).option("watch",{alias:"w",describe:"Watch for file changes",type:"boolean"}).option("config",{alias:"c",describe:"Build configuration file (js/ts)",type:"string",default:"xbuild.config.ts"}).option("tsconfig",{alias:"tsc",describe:"Set TypeScript configuration file to use",type:"string",default:"tsconfig.json"}).option("minify",{alias:"m",describe:"Minify the code",type:"boolean"}).option("bundle",{alias:"b",describe:"Bundle the code",type:"boolean"}).option("noTypeChecker",{alias:"ntc",describe:"Skip TypeScript type checking",type:"boolean"}).option("buildOnError",{alias:"boe",describe:"Continue building even if there are TypeScript type errors",type:"boolean"}).option("format",{alias:"f",describe:"Defines the format for the build output ('cjs' | 'esm' | 'iif').",type:"string"}).option("version",{alias:"v",describe:"Show version number",type:"boolean",default:!1,conflicts:"help"})}).help().alias("help","h").version(!1).middleware(t=>{t.version&&process.exit(0)});return e.showHelp(t=>{(process.argv.includes("--help")||process.argv.includes("-h"))&&(console.log(t+`
10
+ `),t.formattedError}var M=Error.prepareStackTrace;Error.prepareStackTrace=(o,e)=>(o.callStacks=e,M?M(o,e):"");process.on("uncaughtException",o=>{console.error(o.stack),process.exit(1)});process.on("unhandledRejection",o=>{console.error(o.stack),process.exit(1)});import{existsSync as Tt}from"fs";import Be from"yargs";import{hideBin as Ae}from"yargs/helpers";function H(o){let e=Be(Ae(o)).command("$0 [file]","A versatile JavaScript and TypeScript toolchain build system.",t=>{t.positional("entryPoints",{describe:"The file entryPoints to build",type:"string"}).option("typeCheck",{describe:"Perform type checking",alias:"tc",type:"boolean"}).option("node",{alias:"n",describe:"Build for node platform",type:"boolean"}).option("dev",{alias:"d",describe:"Array entryPoints to run as development in Node.js",type:"array"}).option("debug",{alias:"db",describe:"Array entryPoints to run in Node.js with debug state",type:"array"}).option("serve",{alias:"s",describe:"Serve the build folder over HTTP",type:"boolean"}).option("outdir",{alias:"o",describe:"Output directory",type:"string"}).option("declaration",{alias:"de",describe:"Add TypeScript declarations",type:"boolean"}).option("watch",{alias:"w",describe:"Watch for file changes",type:"boolean"}).option("config",{alias:"c",describe:"Build configuration file (js/ts)",type:"string",default:"xbuild.config.ts"}).option("tsconfig",{alias:"tsc",describe:"Set TypeScript configuration file to use",type:"string",default:"tsconfig.json"}).option("minify",{alias:"m",describe:"Minify the code",type:"boolean"}).option("bundle",{alias:"b",describe:"Bundle the code",type:"boolean"}).option("noTypeChecker",{alias:"ntc",describe:"Skip TypeScript type checking",type:"boolean"}).option("buildOnError",{alias:"boe",describe:"Continue building even if there are TypeScript type errors",type:"boolean"}).option("format",{alias:"f",describe:"Defines the format for the build output ('cjs' | 'esm' | 'iif').",type:"string"}).option("version",{alias:"v",describe:"Show version number",type:"boolean",default:!1,conflicts:"help"})}).help().alias("help","h").version(!1).middleware(t=>{t.version&&process.exit(0)});return e.showHelp(t=>{(process.argv.includes("--help")||process.argv.includes("-h"))&&(console.log(t+`
11
11
 
12
- `),process.exit(0))}),e}import{dirname as bt,resolve as C}from"path";import{build as xt,context as wt}from"esbuild";import{spawn as Be}from"child_process";function V(i,e=!1){let t=["--enable-source-maps",i];e&&t.unshift("--inspect-brk=0.0.0.0:0");let r=Be("node",t);return r.stdout.on("data",o=>{console.log(o.toString())}),r.stderr.on("data",o=>{console.error(o.toString())}),r}import f from"typescript";import{promises as _e}from"fs";import{cwd as Le}from"process";import{build as J}from"esbuild";var g=class i extends Error{constructor(t,r){super(t);this.sourceMap=r;Error.captureStackTrace&&Error.captureStackTrace(this,i),this.name="xBuildBaseError"}callStacks=[];reformatStack(t){return t.callStacks?W(this,t.callStacks):t.stack??""}};var d=class i extends g{originalErrorStack;constructor(e,t){super(e),Error.captureStackTrace&&Error.captureStackTrace(this,i),t&&Object.assign(this,t),this.name="xBuildError",this.originalErrorStack=this.stack,this.stack=this.reformatStack(this)}};var De={write:!1,bundle:!0,minify:!0,format:"cjs",target:"esnext",platform:"node",sourcemap:!0,sourcesContent:!0,preserveSymlinks:!0};function Ie(i){let e=/\/\/# sourceMappingURL=data:application\/json;base64,([^'"\s]+)/,t=i.match(e);if(!t||!t[1])throw new d("Source map URL not found in the output.");let r=t[1];return{code:i.replace(e,""),sourceMap:r}}async function U(i,e={}){let t={absWorkingDir:Le(),...De,...e,entryPoints:[i]},o=(await J(t)).outputFiles?.pop()?.text??"";return Ie(o)}async function b(i,e="browser"){return await J({outdir:"tmp",write:!1,bundle:!0,metafile:!0,platform:e,packages:"external",logLevel:"silent",entryPoints:i})}function $e(i,e){let t=f.createSourceFile("temp.ts",i,f.ScriptTarget.Latest,!0),r=o=>{if(f.isFunctionDeclaration(o)&&o.name&&o.name.text.startsWith("$$")){e.removeFunctions.add(o.name.text);return}f.isVariableStatement(o)&&o.declarationList.declarations.length>0&&o.declarationList.declarations.forEach(n=>{f.isIdentifier(n.name)&&n.name.text.startsWith("$$")&&n.initializer&&(f.isArrowFunction(n.initializer)||f.isFunctionExpression(n.initializer))&&e.removeFunctions.add(n.name.text)}),f.forEachChild(o,r)};r(t)}async function Ne(i,e,t){let r=Object.keys(i.inputs);for(let o of r){let n=await _e.readFile(o,"utf8"),s=/\/\/\s?ifdef\s?(\w+)([\s\S]*?)\/\/\s?endif/g,a;for(;(a=s.exec(n))!==null;){let[,c,p]=a;e.define[c]||$e(p,t)}}}function Fe(i,e){function t(n){let s=a=>{if(f.isCallExpression(a)){let c=a.expression.getText(),p=c.endsWith("!")?c.slice(0,-1):c;if(p.startsWith("$$")&&e.removeFunctions.has(p))return f.factory.createIdentifier("undefined")}return f.visitEachChild(a,s,n)};return a=>f.visitNode(a,s)}let r=f.transform(i,[t]);return f.createPrinter().printFile(r.transformed[0])}async function z(i,e,t,r,o){if(!t.path.endsWith(".ts")&&!t.path.endsWith(".js"))return{loader:e,contents:i};if(!r.macros){r.macros={removeFunctions:new Set};let a=await b([t.path]);await Ne(a.metafile,o,r.macros)}let n=i.toString(),s=f.createSourceFile(t.path,n,f.ScriptTarget.Latest,!0);return{loader:e??"ts",contents:Fe(s,r.macros)}}import{join as Me}from"path";import{cwd as je}from"process";import{existsSync as We,readFileSync as He}from"fs";import{formatErrorCode as Ve,highlightCode as Je}from"@remotex-labs/xmap";var x=class i extends g{originalErrorStack;constructor(e){super(e.text),this.name="esBuildError",Error.captureStackTrace&&Error.captureStackTrace(this,i),e.location?this.stack=this.generateFormattedError(e):(this.originalErrorStack=this.stack,this.stack=this.reformatStack(this))}generateFormattedError(e){let{text:t,location:r,notes:o}=e,n=this.applyColor("\x1B[0m",`
12
+ `),process.exit(0))}),e}import*as he from"node:process";import{dirname as xt,resolve as b}from"path";import{build as wt,context as Et}from"esbuild";import{spawn as Le}from"child_process";function V(o,e=!1){let t=["--enable-source-maps",o];e&&t.unshift("--inspect-brk=0.0.0.0:0");let r=Le("node",t);return r.stdout.on("data",i=>{console.log(i.toString())}),r.stderr.on("data",i=>{console.error(i.toString())}),r}import l from"typescript";import{promises as _e}from"fs";import{cwd as De}from"process";import{build as J}from"esbuild";var h=class o extends Error{constructor(t,r){super(t);this.sourceMap=r;Error.captureStackTrace&&Error.captureStackTrace(this,o),this.name="xBuildBaseError"}callStacks=[];reformatStack(t){return t.callStacks?W(this,t.callStacks):t.stack??""}};var d=class o extends h{originalErrorStack;constructor(e,t){super(e),Error.captureStackTrace&&Error.captureStackTrace(this,o),t&&Object.assign(this,t),this.name="xBuildError",this.originalErrorStack=this.stack,this.stack=this.reformatStack(this)}};var Ie={write:!1,bundle:!0,minify:!0,format:"cjs",target:"esnext",platform:"node",sourcemap:!0,sourcesContent:!0,preserveSymlinks:!0};function $e(o){let e=/\/\/# sourceMappingURL=data:application\/json;base64,([^'"\s]+)/,t=o.match(e);if(!t||!t[1])throw new d("Source map URL not found in the output.");let r=t[1];return{code:o.replace(e,""),sourceMap:r}}async function U(o,e={}){let t={absWorkingDir:De(),...Ie,...e,entryPoints:[o]},i=(await J(t)).outputFiles?.pop()?.text??"";return $e(i)}async function x(o,e="browser"){return await J({outdir:"tmp",write:!1,bundle:!0,metafile:!0,platform:e,packages:"external",logLevel:"silent",entryPoints:o,loader:{".html":"text"}})}function Ne(o,e){let t=l.createSourceFile("temp.ts",o,l.ScriptTarget.Latest,!0),r=i=>{if(l.isFunctionDeclaration(i)&&i.name&&i.name.text.startsWith("$$")){e.removeFunctions.add(i.name.text);return}if(l.isVariableStatement(i)&&i.declarationList.declarations.length>0){i.declarationList.declarations.forEach(n=>{l.isIdentifier(n.name)&&n.name.text.startsWith("$$")&&n.initializer&&(l.isArrowFunction(n.initializer)||l.isFunctionExpression(n.initializer))&&e.removeFunctions.add(n.name.text)});return}if(l.isIdentifier(i)&&l.isExpression(i)&&i.escapedText&&i.escapedText.startsWith("$$")){e.removeFunctions.add(i.escapedText);return}l.forEachChild(i,r)};r(t)}async function Fe(o,e,t){let r=Object.keys(o.inputs);for(let i of r){let n=await _e.readFile(i,"utf8"),s=/\/\/\s?ifdef\s?(\w+)([\s\S]*?)\/\/\s?endif/g,a;for(;(a=s.exec(n))!==null;){let[,c,p]=a;e.define[c]||Ne(p,t)}}}function Me(o,e){function t(n){let s=a=>{if(l.isCallExpression(a)){let c=a.expression.getText(),p=c.endsWith("!")?c.slice(0,-1):c;if(p.startsWith("$$")&&e.removeFunctions.has(p))return l.factory.createIdentifier("undefined");let g=a.expression;if(l.isPropertyAccessExpression(g)){let v=g.name;if(l.isIdentifier(v)&&v.text.startsWith("$$"))return l.factory.createIdentifier("undefined")}}return l.visitEachChild(a,s,n)};return a=>l.visitNode(a,s)}let r=l.transform(o,[t]);return l.createPrinter().printFile(r.transformed[0])}async function z(o,e,t,r,i){if(!t.path.endsWith(".ts")&&!t.path.endsWith(".js"))return{loader:e,contents:o};if(!r.macros){r.macros={removeFunctions:new Set};let a=await x([t.path]);await Fe(a.metafile,i,r.macros)}let n=o.toString(),s=l.createSourceFile(t.path,n,l.ScriptTarget.Latest,!0);return{loader:e??"ts",contents:Me(s,r.macros)}}import{join as je}from"path";import{cwd as We}from"process";import{existsSync as He,readFileSync as Ve}from"fs";import{formatErrorCode as Je,highlightCode as Ue}from"@remotex-labs/xmap";var w=class o extends h{originalErrorStack;constructor(e){super(e.text),this.name="esBuildError",Error.captureStackTrace&&Error.captureStackTrace(this,o),e.location?this.stack=this.generateFormattedError(e):(this.originalErrorStack=this.stack,this.stack=this.reformatStack(this))}generateFormattedError(e){let{text:t,location:r,notes:i}=e,n=this.applyColor("\x1B[0m",`
13
13
  ${this.name}: ${this.applyColor("\x1B[38;5;243m",r?.file??"")}
14
14
  `);if(n+=this.applyColor("\x1B[38;5;203m",`${t}
15
15
 
16
- `),o.forEach(s=>{n+=this.applyColor("\x1B[38;5;243m",`${s.text}
16
+ `),i.forEach(s=>{n+=this.applyColor("\x1B[38;5;243m",`${s.text}
17
17
 
18
18
  `)}),r){let s=this.readCode(r.file);s&&(n+=`${this.formatCodeSnippet(s,r)}
19
- `)}return n}readCode(e){try{return We(e)?He(Me(je(),e),"utf-8").split(`
20
- `):null}catch{return null}}formatCodeSnippet(e,t){let{line:r=1,column:o=0,file:n}=t,s=Math.max(r-3,0),a=Math.min(r+3,e.length),c=Je(e.slice(s,a).join(`
21
- `));return Ve({line:r,name:null,code:c,source:n,endLine:a,startLine:s,column:o+1,sourceRoot:null,sourceIndex:-1,generatedLine:-1,generatedColumn:-1},{color:global.__ACTIVE_COLOR?"\x1B[38;5;197m":"",reset:global.__ACTIVE_COLOR?"\x1B[0m":""})}applyColor(e,t){return global.__ACTIVE_COLOR?l(e,t):t}};function u(){return l("\x1B[38;5;203m","[xBuild]")}var h=class i extends g{originalError;originalErrorStack;constructor(e,t){super(e.message,t),Error.captureStackTrace&&Error.captureStackTrace(this,i),this.originalError=e,this.originalErrorStack=e.stack,this.name="VMRuntimeError",this.stack=this.reformatStack(e)}};import*as Q from"http";import*as ee from"https";var G=`<!DOCTYPE html>
19
+ `)}return n}readCode(e){try{return He(e)?Ve(je(We(),e),"utf-8").split(`
20
+ `):null}catch{return null}}formatCodeSnippet(e,t){let{line:r=1,column:i=0,file:n}=t,s=Math.max(r-3,0),a=Math.min(r+3,e.length),c=Ue(e.slice(s,a).join(`
21
+ `));return Je({line:r,name:null,code:c,source:n,endLine:a,startLine:s,column:i+1,sourceRoot:null,sourceIndex:-1,generatedLine:-1,generatedColumn:-1},{color:global.__ACTIVE_COLOR?"\x1B[38;5;197m":"",reset:global.__ACTIVE_COLOR?"\x1B[0m":""})}applyColor(e,t){return global.__ACTIVE_COLOR?f(e,t):t}};function u(){return f("\x1B[38;5;203m","[xBuild]")}var y=class o extends h{originalError;originalErrorStack;constructor(e,t){super(e.message,t),Error.captureStackTrace&&Error.captureStackTrace(this,o),this.originalError=e,this.originalErrorStack=e.stack,this.name="VMRuntimeError",this.stack=this.reformatStack(e)}};import*as Q from"http";import*as ee from"https";var G=`<!DOCTYPE html>
22
22
  <html>
23
23
  <head>
24
24
  <meta charset="UTF-8">
@@ -75,10 +75,10 @@ ${this.name}: ${this.applyColor("\x1B[38;5;243m",r?.file??"")}
75
75
  <ul>\${ fileList }</ul>
76
76
  </body>
77
77
  </html>
78
- `;import{extname as q,join as Y,resolve as ze}from"path";import{existsSync as Z,readdir as Ge,readFile as qe,readFileSync as K,stat as Ye}from"fs";var X={html:{icon:"fa-file-code",color:"#d1a65f"},css:{icon:"fa-file-css",color:"#264de4"},js:{icon:"fa-file-code",color:"#f7df1e"},json:{icon:"fa-file-json",color:"#b41717"},png:{icon:"fa-file-image",color:"#53a8e4"},jpg:{icon:"fa-file-image",color:"#53a8e4"},jpeg:{icon:"fa-file-image",color:"#53a8e4"},gif:{icon:"fa-file-image",color:"#53a8e4"},txt:{icon:"fa-file-alt",color:"#8e8e8e"},folder:{icon:"fa-folder",color:"#ffb800"}},w=class{rootDir;isHttps;config;constructor(e,t){this.rootDir=ze(t),this.config=e,this.isHttps=this.config.keyfile&&this.config.certfile?Z(this.config.keyfile)&&Z(this.config.certfile):!1}start(){if(this.config.onStart&&this.config.onStart(),this.isHttps)return this.startHttpsServer();this.startHttpServer()}startHttpServer(){Q.createServer((t,r)=>{this.handleRequest(t,r,()=>this.defaultResponse(t,r))}).listen(this.config.port,this.config.host,()=>{console.log(`${u()} HTTP/S server is running at http://${this.config.host}:${this.config.port}`)})}startHttpsServer(){let e={key:K(this.config.keyfile),cert:K(this.config.certfile)};ee.createServer(e,(r,o)=>{this.handleRequest(r,o,()=>this.defaultResponse(r,o))}).listen(this.config.port,this.config.host,()=>{let r=l("\x1B[38;5;227m",`https://${this.config.host}:${this.config.port}`);console.log(`${u()} HTTPS server is running at ${r}`)})}handleRequest(e,t,r){try{this.config.onRequest?this.config.onRequest(e,t,r):r()}catch(o){this.sendError(t,o)}}getContentType(e){return{html:"text/html",css:"text/css",js:"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 r=e.url==="/"?"":e.url?.replace(/^\/+/,"")||"",o=Y(this.rootDir,r);if(!o.startsWith(this.rootDir)){t.statusCode=403,t.end();return}try{let n=await this.promisifyStat(o);n.isDirectory()?this.handleDirectory(o,r,t):n.isFile()&&this.handleFile(o,t)}catch(n){let s=n.message;s.includes("favicon")||console.log(u(),s),this.sendNotFound(t)}}promisifyStat(e){return new Promise((t,r)=>{Ye(e,(o,n)=>o?r(o):t(n))})}handleDirectory(e,t,r){Ge(e,(o,n)=>{if(o)return this.sendError(r,o);let s=n.map(a=>{if(a.match(/[^A-Za-z0-9_\/\\.-]/))return;let c=Y(t,a);if(c.match(/[^A-Za-z0-9_\/\\.-]/))return;let p=q(a).slice(1)||"folder",{icon:v,color:B}=X[p]||X.folder;return`<li><i class="fas ${v}" style="color: ${B};"></i> <a href="/${c}">${a}</a></li>`}).join("");r.writeHead(200,{"Content-Type":"text/html"}),r.end(G.replace("${ fileList }",s))})}handleFile(e,t){let r=q(e).slice(1)||"txt",o=this.getContentType(r);qe(e,(n,s)=>{if(n)return this.sendError(t,n);t.writeHead(200,{"Content-Type":o}),t.end(s)})}sendNotFound(e){e.writeHead(404,{"Content-Type":"text/plain"}),e.end("Not Found")}sendError(e,t){console.error(`${u()}`,t.toString()),e.writeHead(500,{"Content-Type":"text/plain"}),e.end("Internal Server Error")}};import{promises as Ze}from"fs";import{resolve as Ke}from"path";var E=class{buildState={};onEndHooks=[];onSuccess=[];onLoadHooks=[];onStartHooks=[];onResolveHooks=[];registerOnStart(e){e&&this.onStartHooks.push(e)}registerOnEnd(e){e&&this.onEndHooks.push(e)}registerOnSuccess(e){e&&this.onSuccess.push(e)}registerOnResolve(e){e&&this.onResolveHooks.push(e)}registerOnLoad(e){e&&this.onLoadHooks.push(e)}setup(){return{name:"middleware-plugin",setup:e=>{e.initialOptions.metafile=!0,e.onEnd(this.handleOnEnd.bind(this)),e.onStart(this.handleOnStart.bind(this,e)),e.onLoad({filter:/.*/},this.handleOnLoad.bind(this)),e.onResolve({filter:/.*/},this.handleOnResolve.bind(this))}}}async handleOnStart(e){this.buildState={};let t={errors:[],warnings:[]};for(let r of this.onStartHooks){let o=await r(e,this.buildState);o&&(o.errors?.length&&t.errors.push(...o.errors),o.warnings?.length&&t.warnings.push(...o.warnings))}return t}async handleOnEnd(e){let t={errors:e.errors??[],warnings:e.warnings??[]};for(let r of this.onEndHooks){e.errors=t.errors,e.warnings=t.warnings;let o=await r(e,this.buildState);o&&(o.errors?.length&&t.errors.push(...o.errors),o.warnings?.length&&t.warnings.push(...o.warnings))}if(t.errors.length<1)for(let r of this.onSuccess)await r(e,this.buildState);return t}async handleOnResolve(e){let t={};for(let r of this.onResolveHooks){let o=await r(e,this.buildState);o&&(t={...t,...o,path:o.path||t.path})}return t.path?t:null}async handleOnLoad(e){let t={contents:void 0,loader:"default"},r=Ke(e.path);t.contents||(t.contents=await Ze.readFile(r,"utf8"));for(let o of this.onLoadHooks){let n=await o(t.contents??"",t.loader,e,this.buildState);n&&(t={...t,...n,contents:n.contents||t.contents,loader:n.loader||t.loader})}return t.contents?t:null}};function te(i,e){return i.replace(/\/\/\s?ifdef\s?(\w+)([\s\S]*?)\/\/\s?endif/g,(t,r,o)=>e[r]?o:"")}import{relative as Xe}from"path";function re(i,e,t,r){let o=/(?:import|export)\s.*?\sfrom\s+['"]([^'"]+)['"]/g;for(let n in t){let s=Xe(e,t[n]).replace(/\\/g,"/");s.startsWith("..")||(s=`./${s}`),i=i.replaceAll(n,`${s}/`),r&&(i=i.replace(o,(a,c)=>(c.startsWith("../")||c.startsWith("./"))&&!c.endsWith(".js")?a.replace(c,`${c}.js`):a))}return i}var T=class i extends Error{constructor(e,t){super(e),this.name="TypesError",Object.setPrototypeOf(this,i.prototype),t?.cause&&(this.cause=t.cause)}};import{resolve as P,relative as Qe,dirname as et,parse as tt}from"path";import{sys as rt,factory as I,createProgram as ie,visitEachChild as oe,isStringLiteral as it,resolveModuleName as ot,DiagnosticCategory as nt,isImportDeclaration as ne,isExportDeclaration as se,getPreEmitDiagnostics as ae,flattenDiagnosticMessageText as ce}from"typescript";var k=class{constructor(e,t,r=!0){this.tsConfig=e;this.outDir=t;this.activeColor=r;this.options={...this.tsConfig.options,outDir:this.outDir}}options;typeCheck(e=!1){let t=ie(this.tsConfig.fileNames,{...this.options,noEmit:!0,skipLibCheck:!0});this.handleDiagnostics(ae(t),e)}generateDeclarations(e=!1,t=!1){let r=ie(this.tsConfig.fileNames,{...this.options,rootDir:this.options.baseUrl,declaration:!0,skipLibCheck:!0,emitDeclarationOnly:!0}),o=ae(r);!e&&o.some(n=>n.category===nt.Error)&&this.handleDiagnostics(o,t),r.emit(void 0,void 0,void 0,!0,{afterDeclarations:[this.createTransformerFactory()]})}isImportOrExportDeclaration(e){return ne(e)||se(e)}hasStringLiteralModuleSpecifier(e){return e.moduleSpecifier&&it(e.moduleSpecifier)}resolveModuleFileName(e,t){let r,o=ot(e,t.baseUrl,t,rt);if(o.resolvedModule&&t.baseUrl){if(o.resolvedModule.resolvedFileName.includes("node_modules"))return r;r=P(o.resolvedModule.resolvedFileName).replace(P(t.baseUrl),".")}return r}getRelativePathToOutDir(e,t){e=P(e).replace(P(this.options.baseUrl??""),".");let r=Qe(et(e),t).replace(/\\/g,"/"),o=tt(r);return o.dir.startsWith("..")||(o.dir=`./${o.dir}`),`${o.dir}/${o.name}`}updateModuleSpecifier(e,t){let r=I.createStringLiteral(t);return ne(e)?I.updateImportDeclaration(e,e.modifiers,e.importClause,r,void 0):se(e)?I.updateExportDeclaration(e,e.modifiers,e.isTypeOnly,e.exportClause,r,void 0):e}createVisitor(e,t){let r=o=>{if(this.isImportOrExportDeclaration(o)&&this.hasStringLiteralModuleSpecifier(o)){let n=o.moduleSpecifier.text,s=this.resolveModuleFileName(n,this.options);if(s){let a=this.getRelativePathToOutDir(e.fileName,s);return this.updateModuleSpecifier(o,a)}}return oe(o,r,t)};return r}createTransformerFactory(){return e=>({transformSourceFile:t=>oe(t,this.createVisitor(t,e),e),transformBundle:t=>t})}handleDiagnostics(e,t=!1){if(e.length!==0&&(e.forEach(r=>{if(r.file&&r.start!==void 0){let{line:o,character:n}=r.file.getLineAndCharacterOfPosition(r.start),s=ce(r.messageText,`
79
- `),a=l("\x1B[38;5;81m",r.file.fileName,this.activeColor),c=l("\x1B[38;5;230m",`${o+1}:${n+1}`,this.activeColor),p=l("\x1B[38;5;9m","error",this.activeColor),v=l("\x1B[38;5;243m",`TS${r.code}`,this.activeColor);console.error(`${u()} ${a}:${c} - ${p} ${v}:${s}`)}else console.error(ce(r.messageText,`
78
+ `;import{extname as q,join as Y,resolve as Ge}from"path";import{existsSync as K,readdir as qe,readFile as Ye,readFileSync as Z,stat as Ke}from"fs";var X={html:{icon:"fa-file-code",color:"#d1a65f"},css:{icon:"fa-file-css",color:"#264de4"},js:{icon:"fa-file-code",color:"#f7df1e"},json:{icon:"fa-file-json",color:"#b41717"},png:{icon:"fa-file-image",color:"#53a8e4"},jpg:{icon:"fa-file-image",color:"#53a8e4"},jpeg:{icon:"fa-file-image",color:"#53a8e4"},gif:{icon:"fa-file-image",color:"#53a8e4"},txt:{icon:"fa-file-alt",color:"#8e8e8e"},folder:{icon:"fa-folder",color:"#ffb800"}},E=class{rootDir;isHttps;config;constructor(e,t){this.rootDir=Ge(t),this.config=e,this.isHttps=this.config.keyfile&&this.config.certfile?K(this.config.keyfile)&&K(this.config.certfile):!1}start(){if(this.config.onStart&&this.config.onStart(),this.isHttps)return this.startHttpsServer();this.startHttpServer()}startHttpServer(){Q.createServer((t,r)=>{this.handleRequest(t,r,()=>this.defaultResponse(t,r))}).listen(this.config.port,this.config.host,()=>{console.log(`${u()} HTTP/S server is running at http://${this.config.host}:${this.config.port}`)})}startHttpsServer(){let e={key:Z(this.config.keyfile),cert:Z(this.config.certfile)};ee.createServer(e,(r,i)=>{this.handleRequest(r,i,()=>this.defaultResponse(r,i))}).listen(this.config.port,this.config.host,()=>{let r=f("\x1B[38;5;227m",`https://${this.config.host}:${this.config.port}`);console.log(`${u()} HTTPS server is running at ${r}`)})}handleRequest(e,t,r){try{this.config.onRequest?this.config.onRequest(e,t,r):r()}catch(i){this.sendError(t,i)}}getContentType(e){return{html:"text/html",css:"text/css",js:"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 r=e.url==="/"?"":e.url?.replace(/^\/+/,"")||"",i=Y(this.rootDir,r);if(!i.startsWith(this.rootDir)){t.statusCode=403,t.end();return}try{let n=await this.promisifyStat(i);n.isDirectory()?this.handleDirectory(i,r,t):n.isFile()&&this.handleFile(i,t)}catch(n){let s=n.message;s.includes("favicon")||console.log(u(),s),this.sendNotFound(t)}}promisifyStat(e){return new Promise((t,r)=>{Ke(e,(i,n)=>i?r(i):t(n))})}handleDirectory(e,t,r){qe(e,(i,n)=>{if(i)return this.sendError(r,i);let s=n.map(a=>{if(a.match(/[^A-Za-z0-9_\/\\.-]/))return;let c=Y(t,a);if(c.match(/[^A-Za-z0-9_\/\\.-]/))return;let p=q(a).slice(1)||"folder",{icon:g,color:v}=X[p]||X.folder;return`<li><i class="fas ${g}" style="color: ${v};"></i> <a href="/${c}">${a}</a></li>`}).join("");r.writeHead(200,{"Content-Type":"text/html"}),r.end(G.replace("${ fileList }",s))})}handleFile(e,t){let r=q(e).slice(1)||"txt",i=this.getContentType(r);Ye(e,(n,s)=>{if(n)return this.sendError(t,n);t.writeHead(200,{"Content-Type":i}),t.end(s)})}sendNotFound(e){e.writeHead(404,{"Content-Type":"text/plain"}),e.end("Not Found")}sendError(e,t){console.error(`${u()}`,t.toString()),e.writeHead(500,{"Content-Type":"text/plain"}),e.end("Internal Server Error")}};import{promises as Ze}from"fs";import{resolve as Xe}from"path";var T=class{buildState={};onEndHooks=[];onSuccess=[];onLoadHooks=[];onStartHooks=[];onResolveHooks=[];registerOnStart(e){e&&this.onStartHooks.push(e)}registerOnEnd(e){e&&this.onEndHooks.push(e)}registerOnSuccess(e){e&&this.onSuccess.push(e)}registerOnResolve(e){e&&this.onResolveHooks.push(e)}registerOnLoad(e){e&&this.onLoadHooks.push(e)}setup(){return{name:"middleware-plugin",setup:e=>{e.initialOptions.metafile=!0,e.onEnd(this.handleOnEnd.bind(this)),e.onStart(this.handleOnStart.bind(this,e)),e.onLoad({filter:/.*/},this.handleOnLoad.bind(this)),e.onResolve({filter:/.*/},this.handleOnResolve.bind(this))}}}async handleOnStart(e){this.buildState={};let t={errors:[],warnings:[]};for(let r of this.onStartHooks){let i=await r(e,this.buildState);i&&(i.errors?.length&&t.errors.push(...i.errors),i.warnings?.length&&t.warnings.push(...i.warnings))}return t}async handleOnEnd(e){let t={errors:e.errors??[],warnings:e.warnings??[]};for(let r of this.onEndHooks){e.errors=t.errors,e.warnings=t.warnings;let i=await r(e,this.buildState);i&&(i.errors?.length&&t.errors.push(...i.errors),i.warnings?.length&&t.warnings.push(...i.warnings))}if(t.errors.length<1)for(let r of this.onSuccess)await r(e,this.buildState);return t}async handleOnResolve(e){let t={};for(let r of this.onResolveHooks){let i=await r(e,this.buildState);i&&(t={...t,...i,path:i.path||t.path})}return t.path?t:null}async handleOnLoad(e){let t={contents:void 0,loader:"default"},r=Xe(e.path);t.contents||(t.contents=await Ze.readFile(r,"utf8"));for(let i of this.onLoadHooks){let n=await i(t.contents??"",t.loader,e,this.buildState);n&&(t={...t,...n,contents:n.contents||t.contents,loader:n.loader||t.loader})}return t.contents?t:null}};function te(o,e){return o.replace(/\/\/\s?ifdef\s?(\w+)([\s\S]*?)\/\/\s?endif/g,(t,r,i)=>e[r]?i:"")}import{relative as Qe}from"path";function re(o,e,t,r){let i=/(?:import|export)\s.*?\sfrom\s+['"]([^'"]+)['"]/g;for(let n in t){let s=Qe(e,t[n]).replace(/\\/g,"/");s.startsWith("..")||(s=`./${s}`),o=o.replaceAll(n,`${s}/`),r&&(o=o.replace(i,(a,c)=>(c.startsWith("../")||c.startsWith("./"))&&!c.endsWith(".js")?a.replace(c,`${c}.js`):a))}return o}var P=class o extends Error{constructor(e,t){super(e),this.name="TypesError",Object.setPrototypeOf(this,o.prototype),t?.cause&&(this.cause=t.cause)}};import{resolve as k,relative as et,dirname as tt,parse as rt}from"path";import{sys as it,factory as I,createProgram as ie,visitEachChild as oe,isStringLiteral as ot,resolveModuleName as nt,DiagnosticCategory as st,isImportDeclaration as ne,isExportDeclaration as se,getPreEmitDiagnostics as ae,flattenDiagnosticMessageText as ce}from"typescript";var O=class{constructor(e,t,r=!0){this.tsConfig=e;this.outDir=t;this.activeColor=r;this.options={...this.tsConfig.options,outDir:this.outDir}}options;typeCheck(e=!1){let t=ie(this.tsConfig.fileNames,{...this.options,noEmit:!0,skipLibCheck:!0});this.handleDiagnostics(ae(t),e)}generateDeclarations(e=!1,t=!1){let r=ie(this.tsConfig.fileNames,{...this.options,rootDir:this.options.baseUrl,declaration:!0,skipLibCheck:!0,emitDeclarationOnly:!0}),i=ae(r);!e&&i.some(n=>n.category===st.Error)&&this.handleDiagnostics(i,t),r.emit(void 0,void 0,void 0,!0,{afterDeclarations:[this.createTransformerFactory()]})}isImportOrExportDeclaration(e){return ne(e)||se(e)}hasStringLiteralModuleSpecifier(e){return e.moduleSpecifier&&ot(e.moduleSpecifier)}resolveModuleFileName(e,t){let r,i=nt(e,t.baseUrl,t,it);if(i.resolvedModule&&t.baseUrl){if(i.resolvedModule.resolvedFileName.includes("node_modules"))return r;r=k(i.resolvedModule.resolvedFileName).replace(k(t.baseUrl),".")}return r}getRelativePathToOutDir(e,t){e=k(e).replace(k(this.options.baseUrl??""),".");let r=et(tt(e),t).replace(/\\/g,"/"),i=rt(r);return i.dir.startsWith("..")||(i.dir=`./${i.dir}`),`${i.dir}/${i.name}`}updateModuleSpecifier(e,t){let r=I.createStringLiteral(t);return ne(e)?I.updateImportDeclaration(e,e.modifiers,e.importClause,r,void 0):se(e)?I.updateExportDeclaration(e,e.modifiers,e.isTypeOnly,e.exportClause,r,void 0):e}createVisitor(e,t){let r=i=>{if(this.isImportOrExportDeclaration(i)&&this.hasStringLiteralModuleSpecifier(i)){let n=i.moduleSpecifier.text,s=this.resolveModuleFileName(n,this.options);if(s){let a=this.getRelativePathToOutDir(e.fileName,s);return this.updateModuleSpecifier(i,a)}}return oe(i,r,t)};return r}createTransformerFactory(){return e=>({transformSourceFile:t=>oe(t,this.createVisitor(t,e),e),transformBundle:t=>t})}handleDiagnostics(e,t=!1){if(e.length!==0&&(e.forEach(r=>{if(r.file&&r.start!==void 0){let{line:i,character:n}=r.file.getLineAndCharacterOfPosition(r.start),s=ce(r.messageText,`
79
+ `),a=f("\x1B[38;5;81m",r.file.fileName,this.activeColor),c=f("\x1B[38;5;230m",`${i+1}:${n+1}`,this.activeColor),p=f("\x1B[38;5;9m","error",this.activeColor),g=f("\x1B[38;5;243m",`TS${r.code}`,this.activeColor);console.error(`${u()} ${a}:${c} - ${p} ${g}:${s}`)}else console.error(ce(r.messageText,`
80
80
  `))}),console.log(`
81
- `),!t))throw new T("Type checking failed due to errors.")}};import m from"typescript";import{dirname as dt}from"path";import{existsSync as ue,readFileSync as mt}from"fs";import{cwd as st}from"process";var O={dev:!1,watch:!1,declaration:!1,buildOnError:!1,noTypeChecker:!1,define:{},esbuild:{write:!0,bundle:!0,minify:!0,format:"cjs",outdir:"dist",platform:"browser",absWorkingDir:st(),loader:{".js":"ts"}},serve:{port:3e3,host:"localhost",active:!1}};import{createRequire as lt}from"module";import{SourceService as ft}from"@remotex-labs/xmap";import{Script as at,createContext as ct}from"vm";function le(i,e={}){e.RegExp=RegExp,e.console=console;let t=new at(i),r=ct(e);return t.runInContext(r,{breakOnSigint:!0})}function fe(i,e){for(let t in i)if(Object.prototype.hasOwnProperty.call(i,t)){let r=i[t];typeof r=="function"?i[t]=ut(r,e):typeof r=="object"&&r!==null&&fe(r,e)}return i}function ut(i,e){return(...t)=>{try{return i(...t)}catch(r){throw new h(r,e)}}}function pt(i,e){return fe(i,e)}async function R(i){let{code:e,sourceMap:t}=await U(i,{banner:{js:"(function(module, exports) {"},footer:{js:"})(module, module.exports);"}}),r={exports:{}},o=lt(import.meta.url),n=new ft(JSON.parse(atob(t)));try{await le(e,{require:o,module:r})}catch(s){throw new h(s,n)}return pt(r.exports.default,n)}var gt=JSON.stringify({compilerOptions:{strict:!0,target:"ESNext",module:"ESNext",outDir:"dist",skipLibCheck:!0,isolatedModules:!1,esModuleInterop:!1,moduleDetection:"force",moduleResolution:"node",resolveJsonModule:!0,allowSyntheticDefaultImports:!0,forceConsistentCasingInFileNames:!0}});function ht(i){let e=i.argv,t=o=>Object.fromEntries(Object.entries(o).filter(([,n])=>n!==void 0)),r=t({bundle:e.bundle,minify:e.minify,outdir:e.outdir,tsconfig:e.tsconfig,entryPoints:e.file?[e.file]:void 0,target:e.node?[`node${process.version.slice(1)}`]:void 0,platform:e.node?"node":void 0,format:e.format});return{...t({dev:e.dev,watch:e.watch,declaration:e.declaration,serve:e.serve?{active:e.serve}:{undefined:void 0}}),esbuild:r}}function pe(i){let e=i.tsconfig??"tsconfig.json",t=ue(e)?mt(e,"utf8"):JSON.stringify(gt),r=m.parseConfigFileTextToJson(e,t);if(r.error)throw new d(m.formatDiagnosticsWithColorAndContext([r.error],{getCurrentDirectory:m.sys.getCurrentDirectory,getCanonicalFileName:n=>n,getNewLine:()=>m.sys.newLine}));let o=m.parseJsonConfigFileContent(r.config,m.sys,dt(e));if(o.errors.length>0)throw new d(m.formatDiagnosticsWithColorAndContext(o.errors,{getCurrentDirectory:m.sys.getCurrentDirectory,getCanonicalFileName:n=>n,getNewLine:()=>m.sys.newLine}));return o}async function A(i,e={}){let t=Array.isArray(i)?i:[i],r=t[0];return t.flatMap(o=>{let n={...O,...r,...o,...e,esbuild:{...O.esbuild,...r?.esbuild,...o?.esbuild,...e.esbuild},serve:{...O.serve,...r.serve,...o.serve,...e.serve}};if(!n.esbuild.entryPoints)throw new d("entryPoints cannot be undefined.");return n})}async function de(i,e){let t=ht(e),r=ue(i)?await R(i):{};return A(r,t)}function yt(i){let e={};return i.forEach(t=>{let r=t.substring(0,t.lastIndexOf("."));e[r]=t}),e}function me(i){if(Array.isArray(i)){let e={};return i.length>0&&typeof i[0]=="object"?i.forEach(t=>{e[t.out]=t.in}):typeof i[0]=="string"&&(e=yt(i)),e}else if(i&&typeof i=="object")return i;throw new d("Unsupported entry points format")}import{join as vt}from"path";import{mkdirSync as St,writeFileSync as Ct}from"fs";function ge(i){let e=i.moduleTypeOutDir??i.esbuild.outdir??"dist",t=i.esbuild.format==="esm"?"module":"commonjs";St(e,{recursive:!0}),Ct(vt(e,"package.json"),`{"type": "${t}"}`)}var y=class{constructor(e){this.config=e;let t=pe(this.config.esbuild);this.config.esbuild.logLevel="silent",this.pluginsProvider=new E,this.typeScriptProvider=new k(t,this.config.declarationOutDir??t.options.outDir??this.config.esbuild.outdir),this.configureDevelopmentMode(),this.setupPlugins()}typeScriptProvider;activePossess=[];pluginsProvider;async run(){return await this.execute(async()=>{let e=await this.build();return(this.config.watch||this.config.dev)&&await e.watch(),e})}async runDebug(e){return await this.execute(async()=>{this.config.dev=!1,this.config.watch=!1;let t=await this.build();this.spawnDev(t.metafile,e,!0)})}async serve(){let e=new w(this.config.serve,this.config.esbuild.outdir??"");return await this.execute(async()=>{e.start(),await(await this.build()).watch()})}async execute(e){try{return await e()}catch(t){let r=t;Array.isArray(r.errors)&&(!this.config.watch||!this.config.dev||!this.config.serve.active)?this.handleErrors(r):console.error(new h(t).stack)}}configureDevelopmentMode(){this.config.dev!==!1&&(!Array.isArray(this.config.dev)||this.config.dev.length<1)&&(this.config.dev=["index"])}setupPlugins(){let e=C(this.typeScriptProvider.options.baseUrl??""),t=this.generatePathAlias(e);this.registerPluginHooks(t,e),this.pluginsProvider.registerOnLoad(async(r,o,n,s)=>await z(r,o,n,s,this.config))}registerPluginHooks(e,t){this.pluginsProvider.registerOnEnd(this.end.bind(this)),this.pluginsProvider.registerOnStart(this.start.bind(this)),this.pluginsProvider.registerOnLoad((r,o,n)=>{if(n.path.endsWith(".ts")){if(!this.config.esbuild.bundle){let s=bt(C(n.path).replace(t,"."));r=re(r.toString(),s,e,this.config.esbuild.format==="esm")}return{loader:"ts",contents:te(r.toString(),this.config.define)}}})}generatePathAlias(e){let t=this.typeScriptProvider.options.paths,r={};for(let o in t){let n=t[o];if(n.length>0){let s=o.replace(/\*/g,"");r[s]=C(n[0].replace(/\*/g,"")).replace(e,".")}}return r}handleErrors(e){let t=e.errors??[];for(let r of t){if(!r.detail){console.error(new x(r).stack);continue}if(r.detail.name!=="TypesError"){if(r.detail.name){if(r.detail.name==="VMRuntimeError"){console.error(r.detail.stack);continue}if(r.detail instanceof Error){console.error(new h(r.detail).stack);continue}}return console.error(r.text)}}}async build(){ge(this.config);let e=this.config.esbuild;this.config.hooks&&(this.pluginsProvider.registerOnEnd(this.config.hooks.onEnd),this.pluginsProvider.registerOnLoad(this.config.hooks.onLoad),this.pluginsProvider.registerOnEnd(this.config.hooks.onSuccess),this.pluginsProvider.registerOnStart(this.config.hooks.onStart),this.pluginsProvider.registerOnResolve(this.config.hooks.onResolve)),e.define||(e.define={});for(let t in this.config.define)e.define[t]=JSON.stringify(this.config.define[t]);return this.config.esbuild.bundle||await this.processEntryPoints(),e.plugins=[this.pluginsProvider.setup()],this.config.watch||this.config.dev||this.config.serve.active?await wt(e):await xt(e)}spawnDev(e,t,r=!1){if(Array.isArray(t))for(let o in e.outputs)o.includes("map")||!t.some(n=>o.includes(`/${n}.`))||this.activePossess.push(V(o,r))}async start(e,t){try{t.startTime=Date.now(),console.log(`${u()} StartBuild ${e.initialOptions.outdir}`),this.config.declaration?this.typeScriptProvider.generateDeclarations(this.config.noTypeChecker,this.config.buildOnError):this.config.noTypeChecker||this.typeScriptProvider.typeCheck(this.config.buildOnError)}finally{for(;this.activePossess.length>0;){let r=this.activePossess.pop();r&&r.kill("SIGTERM")}}}async end(e,t){if(e.errors.length>0)return this.handleErrors(e);let r=Date.now()-t.startTime;console.log(`
82
- ${u()} ${l("\x1B[38;5;166m",`Build completed! in ${r} ms`)}`),console.log(`${u()} ${Object.keys(e.metafile.outputs).length} Modules:`),Object.keys(e.metafile.outputs).forEach(o=>{let n=e.metafile.outputs[o].bytes;console.log(`${u()} ${l("\x1B[38;5;227m",o)}: ${l("\x1B[38;5;208m",n.toString())} bytes`)}),console.log(`
83
- `),this.config.dev&&this.spawnDev(e.metafile,this.config.dev)}async processEntryPoints(){let e=this.config.esbuild,t=await b(e.entryPoints,e.platform),r=C(this.typeScriptProvider.options.baseUrl??""),o=me(e.entryPoints),n=Object.values(o);Array.isArray(e.entryPoints)&&typeof e.entryPoints[0]=="string"&&(o={},n=[]);for(let s in t.metafile.inputs){if(n.includes(s))continue;let a=C(s).replace(r,"."),c=a.substring(0,a.lastIndexOf("."));o[c]=s}e.entryPoints=o}};global.__ACTIVE_COLOR=!0;async function Ci(i){let e=H(i),t=e.argv,o=(await de(t.config,e)).map(async n=>{let s=new y(n);if(t.typeCheck)return s.typeScriptProvider.typeCheck(!0);if(t.serve||n.serve.active)return await s.serve();if(Array.isArray(t.debug))return t.debug.length<1&&(t.debug=["index"]),await s.runDebug(t.debug);await s.run()});await Promise.all(o)}async function bi(i){let e=Et(i)?await R(i):{},r=(await A(e)).map(async o=>await new y(o).run());return await Promise.all(r)}async function xi(i){let t=(await A(i)).map(async r=>await new y(r).run());return await Promise.all(t)}export{xi as build,Ci as buildWithArgv,bi as buildWithConfigPath};
81
+ `),!t))throw new P("Type checking failed due to errors.")}};import m from"typescript";import{dirname as mt}from"path";import{existsSync as ue,readFileSync as gt}from"fs";import{cwd as at}from"process";var R={dev:!1,watch:!1,declaration:!1,buildOnError:!1,noTypeChecker:!1,define:{},esbuild:{write:!0,bundle:!0,minify:!0,format:"cjs",outdir:"dist",platform:"browser",absWorkingDir:at(),loader:{".js":"ts"}},serve:{port:3e3,host:"localhost",active:!1}};import{createRequire as ft}from"module";import{SourceService as ut}from"@remotex-labs/xmap";import{Script as ct,createContext as lt}from"vm";function le(o,e={}){e.RegExp=RegExp,e.console=console;let t=new ct(o),r=lt(e);return t.runInContext(r,{breakOnSigint:!0})}function fe(o,e){for(let t in o)if(Object.prototype.hasOwnProperty.call(o,t)){let r=o[t];typeof r=="function"?o[t]=pt(r,e):typeof r=="object"&&r!==null&&fe(r,e)}return o}function pt(o,e){return(...t)=>{try{return o(...t)}catch(r){throw new y(r,e)}}}function dt(o,e){return fe(o,e)}async function B(o){let{code:e,sourceMap:t}=await U(o,{banner:{js:"(function(module, exports) {"},footer:{js:"})(module, module.exports);"}}),r={exports:{}},i=ft(import.meta.url),n=new ut(JSON.parse(atob(t)));try{await le(e,{require:i,module:r})}catch(s){throw new y(s,n)}return dt(r.exports.default,n)}var ht=JSON.stringify({compilerOptions:{strict:!0,target:"ESNext",module:"ESNext",outDir:"dist",skipLibCheck:!0,isolatedModules:!1,esModuleInterop:!1,moduleDetection:"force",moduleResolution:"node",resolveJsonModule:!0,allowSyntheticDefaultImports:!0,forceConsistentCasingInFileNames:!0}});function yt(o){let e=o.argv,t=i=>Object.fromEntries(Object.entries(i).filter(([,n])=>n!==void 0)),r=t({bundle:e.bundle,minify:e.minify,outdir:e.outdir,tsconfig:e.tsconfig,entryPoints:e.file?[e.file]:void 0,target:e.node?[`node${process.version.slice(1)}`]:void 0,platform:e.node?"node":void 0,format:e.format});return{...t({dev:e.dev,watch:e.watch,declaration:e.declaration,serve:e.serve?{active:e.serve}:{undefined:void 0}}),esbuild:r}}function pe(o){let e=o.tsconfig??"tsconfig.json",t=ue(e)?gt(e,"utf8"):JSON.stringify(ht),r=m.parseConfigFileTextToJson(e,t);if(r.error)throw new d(m.formatDiagnosticsWithColorAndContext([r.error],{getCurrentDirectory:m.sys.getCurrentDirectory,getCanonicalFileName:n=>n,getNewLine:()=>m.sys.newLine}));let i=m.parseJsonConfigFileContent(r.config,m.sys,mt(e));if(i.errors.length>0)throw new d(m.formatDiagnosticsWithColorAndContext(i.errors,{getCurrentDirectory:m.sys.getCurrentDirectory,getCanonicalFileName:n=>n,getNewLine:()=>m.sys.newLine}));return i}async function A(o,e={}){let t=Array.isArray(o)?o:[o],r=t[0];return t.flatMap(i=>{let n={...R,...r,...i,...e,esbuild:{...R.esbuild,...r?.esbuild,...i?.esbuild,...e.esbuild},serve:{...R.serve,...r.serve,...i.serve,...e.serve}};if(!n.esbuild.entryPoints)throw new d("entryPoints cannot be undefined.");return n})}async function de(o,e){let t=yt(e),r=ue(o)?await B(o):{};return A(r,t)}function vt(o){let e={};return o.forEach(t=>{let r=t.substring(0,t.lastIndexOf("."));e[r]=t}),e}function me(o){if(Array.isArray(o)){let e={};return o.length>0&&typeof o[0]=="object"?o.forEach(t=>{e[t.out]=t.in}):typeof o[0]=="string"&&(e=vt(o)),e}else if(o&&typeof o=="object")return o;throw new d("Unsupported entry points format")}import{join as St}from"path";import{mkdirSync as Ct,writeFileSync as bt}from"fs";function ge(o){let e=o.moduleTypeOutDir??o.esbuild.outdir??"dist",t=o.esbuild.format==="esm"?"module":"commonjs";Ct(e,{recursive:!0}),bt(St(e,"package.json"),`{"type": "${t}"}`)}var S=class{constructor(e){this.config=e;let t=pe(this.config.esbuild);this.config.esbuild.logLevel="silent",this.pluginsProvider=new T,this.typeScriptProvider=new O(t,this.config.declarationOutDir??t.options.outDir??this.config.esbuild.outdir),this.configureDevelopmentMode(),this.setupPlugins()}typeScriptProvider;activePossess=[];pluginsProvider;async run(){return await this.execute(async()=>{let e=await this.build();return(this.config.watch||this.config.dev)&&await e.watch(),e})}async runDebug(e){return await this.execute(async()=>{this.config.dev=!1,this.config.watch=!1;let t=await this.build();this.spawnDev(t.metafile,e,!0)})}async serve(){let e=new E(this.config.serve,this.config.esbuild.outdir??"");return await this.execute(async()=>{e.start(),await(await this.build()).watch()})}async execute(e){try{return await e()}catch(t){let r=t;Array.isArray(r.errors)&&(!this.config.watch||!this.config.dev||!this.config.serve.active)?this.handleErrors(r):console.error(new y(t).stack)}}configureDevelopmentMode(){this.config.dev!==!1&&(!Array.isArray(this.config.dev)||this.config.dev.length<1)&&(this.config.dev=["index"])}setupPlugins(){let e=b(this.typeScriptProvider.options.baseUrl??""),t=this.generatePathAlias(e);this.registerPluginHooks(t,e),this.pluginsProvider.registerOnLoad(async(r,i,n,s)=>await z(r,i,n,s,this.config))}registerPluginHooks(e,t){this.pluginsProvider.registerOnEnd(this.end.bind(this)),this.pluginsProvider.registerOnStart(this.start.bind(this)),this.pluginsProvider.registerOnLoad((r,i,n)=>{if(n.path.endsWith(".ts")){if(!this.config.esbuild.bundle){let s=xt(b(n.path).replace(t,"."));r=re(r.toString(),s,e,this.config.esbuild.format==="esm")}return{loader:"ts",contents:te(r.toString(),this.config.define)}}})}generatePathAlias(e){let t=this.typeScriptProvider.options.paths,r={};for(let i in t){let n=t[i];if(n.length>0){let s=i.replace(/\*/g,"");r[s]=b(n[0].replace(/\*/g,"")).replace(e,".")}}return r}handleErrors(e){let t=e.errors??[];for(let r of t){if(!r.detail){console.error(new w(r).stack);continue}if(r.detail.name!=="TypesError"){if(r.detail.name){if(r.detail.name==="VMRuntimeError"){console.error(r.detail.stack);continue}if(r.detail instanceof Error){console.error(new y(r.detail).stack);continue}}return console.error(r.text)}}}injects(e,t,r){if(!t)return;e[r]||(e[r]={});let i=e[r];for(let n in t)if(t.hasOwnProperty(n)){let s=t[n];if(typeof s=="function"){console.log(`${u()} trigger ${r} function`),i[n]=s();continue}i[n]=s}}async build(){ge(this.config);let e=this.config.esbuild;this.config.hooks&&(this.pluginsProvider.registerOnEnd(this.config.hooks.onEnd),this.pluginsProvider.registerOnLoad(this.config.hooks.onLoad),this.pluginsProvider.registerOnEnd(this.config.hooks.onSuccess),this.pluginsProvider.registerOnStart(this.config.hooks.onStart),this.pluginsProvider.registerOnResolve(this.config.hooks.onResolve)),e.define||(e.define={});for(let t in this.config.define)e.define[t]=JSON.stringify(this.config.define[t]);return this.config.esbuild.bundle||await this.processEntryPoints(),e.plugins=[this.pluginsProvider.setup()],this.injects(this.config.esbuild,this.config.banner,"banner"),this.injects(this.config.esbuild,this.config.footer,"footer"),this.config.watch||this.config.dev||this.config.serve.active?await Et(e):await wt(e)}spawnDev(e,t,r=!1){if(Array.isArray(t))for(let i in e.outputs)i.includes("map")||!t.some(n=>i.includes(`/${n}.`))||this.activePossess.push(V(i,r))}async start(e,t){try{t.startTime=Date.now(),console.log(`${u()} StartBuild ${e.initialOptions.outdir}`),this.config.declaration?this.typeScriptProvider.generateDeclarations(this.config.noTypeChecker,this.config.buildOnError):this.config.noTypeChecker||this.typeScriptProvider.typeCheck(this.config.buildOnError)}finally{for(;this.activePossess.length>0;){let r=this.activePossess.pop();r&&r.kill("SIGTERM")}}}async end(e,t){if(e.errors.length>0){this.handleErrors(e),!this.config.serve.active&&!this.config.dev&&!this.config.watch&&he.exit(1);return}let r=Date.now()-t.startTime;console.log(`
82
+ ${u()} ${f("\x1B[38;5;166m",`Build completed! in ${r} ms`)}`),console.log(`${u()} ${Object.keys(e.metafile.outputs).length} Modules:`),Object.keys(e.metafile.outputs).forEach(i=>{let n=e.metafile.outputs[i].bytes;console.log(`${u()} ${f("\x1B[38;5;227m",i)}: ${f("\x1B[38;5;208m",n.toString())} bytes`)}),console.log(`
83
+ `),this.config.dev&&this.spawnDev(e.metafile,this.config.dev)}async processEntryPoints(){let e=this.config.esbuild,t=await x(e.entryPoints,e.platform),r=b(this.typeScriptProvider.options.baseUrl??""),i=me(e.entryPoints),n=Object.values(i);Array.isArray(e.entryPoints)&&typeof e.entryPoints[0]=="string"&&(i={},n=[]);for(let s in t.metafile.inputs){if(n.includes(s))continue;let a=b(s).replace(r,"."),c=a.substring(0,a.lastIndexOf("."));i[c]=s}e.entryPoints=i}};global.__ACTIVE_COLOR=!0;async function bi(o){let e=H(o),t=e.argv,i=(await de(t.config,e)).map(async n=>{let s=new S(n);if(t.typeCheck)return s.typeScriptProvider.typeCheck(!0);if(t.serve||n.serve.active)return await s.serve();if(Array.isArray(t.debug))return t.debug.length<1&&(t.debug=["index"]),await s.runDebug(t.debug);await s.run()});await Promise.all(i)}async function xi(o){let e=Tt(o)?await B(o):{},r=(await A(e)).map(async i=>await new S(i).run());return await Promise.all(r)}async function wi(o){let t=(await A(o)).map(async r=>await new S(r).run());return await Promise.all(t)}export{wi as build,bi as buildWithArgv,xi as buildWithConfigPath};
84
84
  //# sourceMappingURL=index.js.map