import { A_Concept, A_Error, A_Feature, A_IdentityHelper, A_Inject } from "@adaas/a-concept" import { A_Config } from "@adaas/a-utils/a-config"; import { A_Logger } from "@adaas/a-utils/a-logger"; import { A_Service, A_ServiceFeatures } from "@adaas/a-utils/a-service"; import { AreContext } from "@adaas/are"; import { AreHTMLEngine } from "src/engine/AreHTML.engine"; import { build } from "esbuild"; import fs from "fs"; import http from "http"; import path from "path"; export class UIContainer extends A_Service { protected server!: any; @A_Concept.Build() async build( @A_Inject(A_Logger) logger: A_Logger, @A_Inject(A_Config) config: A_Config ): Promise { logger.log('Building UI Container...', process.cwd()); const entryFile = path.resolve(__dirname, "../src/concept.ts"); const BundleID = A_IdentityHelper.generateTimeId(); const outFile = path.resolve(__dirname, `../dist/${BundleID}.js`); // first to drop folder if exists if (fs.existsSync(path.resolve(__dirname, "../dist"))) { fs.rmSync(path.resolve(__dirname, "../dist"), { recursive: true, force: true }); } // STEP1 generate Bundle await build({ entryPoints: [entryFile], outfile: outFile, bundle: true, // ✅ includes all imports & node_modules // minify: config.get('A_CONCEPT_ENVIRONMENT') !== 'production' ? false : true, minify: false, keepNames: true, // <— preserve the original function/class names // sourcemap: config.get('A_CONCEPT_ENVIRONMENT') !== 'production' ? 'inline' : false, sourcemap: false, // platform: "browser", // conditions: ["browser", "import", "default"], // mainFields: ["browser", "module", "main"], // ✅ builds for browser target: "es2020", format: "esm", // ✅ ESM output for