{
  "version": 3,
  "sources": ["../../src/cli-commands-build-esbuild.ts"],
  "sourcesContent": ["/**\n * QCObjects CLI 2.5\n * ________________\n *\n * Author: Jean Machuca <correojean@gmail.com>\n *\n * Cross Browser Javascript Framework for MVC Patterns\n * QuickCorp/QCObjects is licensed under the\n * GNU Lesser General Public License v3.0\n * [LICENSE] (https://github.com/QuickCorp/QCObjects/blob/master/LICENSE.txt)\n *\n * Permissions of this copyleft license are conditioned on making available\n * complete source code of licensed works and modifications under the same\n * license or the GNU GPLv3. Copyright and license notices must be preserved.\n * Contributors provide an express grant of patent rights. However, a larger\n * work using the licensed work through interfaces provided by the licensed\n * work may be distributed under different terms and without source code for\n * the larger work.\n *\n * Copyright (C) 2015 Jean Machuca,<correojean@gmail.com>\n *\n * Everyone is permitted to copy and distribute verbatim copies of this\n * license document, but changing it is not allowed.\n*/\n/*eslint no-unused-vars: \"off\"*/\n/*eslint no-redeclare: \"off\"*/\n/*eslint no-empty: \"off\"*/\n/*eslint strict: \"off\"*/\n/*eslint no-mixed-operators: \"off\"*/\n/*eslint no-undef: \"off\"*/\n\"use strict\";\nimport path from \"node:path\";\nimport { readFileSync, writeFileSync } from \"node:fs\";\nimport fs from \"node:fs/promises\";\nimport glob from \"glob\";\nimport esbuild, { BuildOptions, Format } from \"esbuild\";\nimport alias from \"esbuild-plugin-alias\";\nimport { Package, InheritClass, logger } from \"qcobjects\";\n\nconst externalPackages = [\n  \"node:fs\", \"node:path\", \"node:os\", \"node:util\", \"node:events\", \n  \"node:stream\", \"node:http\", \"node:https\", \"node:crypto\", \"node:zlib\", \n  \"node:buffer\", \"node:url\", \"node:querystring\", \"node:child_process\", \n  \"node:cluster\", \"node:dgram\", \"node:dns\", \"node:net\", \"node:readline\", \n  \"node:repl\", \"node:tls\", \"node:tty\", \"node:vm\", \"node:worker_threads\"\n];\n\n// Function to detect and add the extension\nconst nameToExtension = (name: string, ext: string, settings: BuildOptions): string => {\n  function isPackage(name: string): boolean {\n    return !name.startsWith(\".\") && !name.startsWith(\"/\") && !name.includes(\"/\");\n  }\n\n  const hasExtension = /\\.[^/\\\\]+$/.test(name);\n  const isExternalPackage = name.startsWith(\"qcobjects\") || \n                          name.startsWith(\"qcobjects-sdk\") ||\n                          name.startsWith(\"node:\") ||\n                          name.startsWith(\"fs\") ||\n                          name.startsWith(\"path\") ||\n                          name.startsWith(\"os\") ||\n                          name.startsWith(\"util\") ||\n                          name.startsWith(\"events\") ||\n                          name.startsWith(\"stream\") ||\n                          name.startsWith(\"http\") ||\n                          name.startsWith(\"https\") ||\n                          name.startsWith(\"crypto\") ||\n                          name.startsWith(\"zlib\") ||\n                          name.startsWith(\"buffer\") ||\n                          name.startsWith(\"url\") ||\n                          name.startsWith(\"querystring\") ||\n                          name.startsWith(\"child_process\") ||\n                          name.startsWith(\"cluster\") ||\n                          name.startsWith(\"dgram\") ||\n                          name.startsWith(\"dns\") ||\n                          name.startsWith(\"net\") ||\n                          name.startsWith(\"readline\") ||\n                          name.startsWith(\"repl\") ||\n                          name.startsWith(\"tls\") ||\n                          name.startsWith(\"tty\") ||\n                          name.startsWith(\"vm\") ||\n                          name.startsWith(\"worker_threads\")\n                          || externalPackages.includes(name);\n  \n  if (!hasExtension && !isPackage(name) && !isExternalPackage) {\n    name += ext;\n  }\n\n  return name;\n};\n\n// Function to add .cjs and .mjs extensions to import/export/require statements\nconst addExtensions = (filePath: string, toExt: string, settings: BuildOptions): void => {\n  const content = readFileSync(filePath, \"utf8\");\n  const updatedContent = content\n    .replace(/(from\\s+['\"])(.*?)(['\"])/g, (match, p1, p2, p3) => {\n      return `${p1}${nameToExtension(p2, toExt, settings)}${p3}`;\n    })\n    .replace(/(import\\s+['\"])(.*?)(['\"])/g, (match, p1, p2, p3) => {\n      return `${p1}${nameToExtension(p2, toExt, settings)}${p3}`;\n    })\n    .replace(/(export\\s+['\"])(.*?)(['\"])/g, (match, p1, p2, p3) => {\n      return `${p1}${nameToExtension(p2, toExt, settings)}${p3}`;\n    })\n    .replace(/(require\\s*\\(\\s*['\"])(.*?)(['\"]\\s*\\))/g, (match, p1, p2, p3) => {\n      return `${p1}${nameToExtension(p2, toExt, settings)}${p3}`;\n    });\n  writeFileSync(filePath, updatedContent, \"utf8\");\n};\n\nconst copyDir = async (source: string, dest: string, exclude: string[]): Promise<void> => {\n  source = path.resolve(source);\n  dest = path.resolve(dest);\n  const dname = path.basename(source);\n  const dirExcluded = exclude.includes(dname);\n\n  const isDir = async (d: string): Promise<boolean> => {\n    try {\n      const stat = await fs.stat(d);\n      return stat.isDirectory();\n    } catch {\n      return false;\n    }\n  };\n\n  const isFile = async (d: string): Promise<boolean> => {\n    try {\n      const stat = await fs.stat(d);\n      return stat.isFile();\n    } catch {\n      return false;\n    }\n  };\n\n  if (await isDir(source) && !dirExcluded) {\n    await fs.mkdir(dest, { recursive: true });\n    const paths = await fs.readdir(source, { withFileTypes: true });\n    const dirs = paths.filter(d => d.isDirectory());\n    const files = paths.filter(f => f.isFile());\n\n    for (const f of files) {\n      const sourceFile = path.resolve(source, f.name);\n      const destFile = path.resolve(dest, f.name);\n      const fileExcluded = exclude.includes(f.name);\n      if (await isFile(sourceFile) && !fileExcluded) {\n        logger.debug(`[build:esbuild] Copying files from ${sourceFile} to ${destFile} excluding ${exclude}...`);\n        await fs.copyFile(sourceFile, destFile);\n        logger.debug(`[build:esbuild] Copying files from ${sourceFile} to ${destFile} excluding ${exclude}...DONE!`);\n      }\n    }\n\n    for (const d of dirs) {\n      const sourceDir = path.resolve(source, d.name);\n      const destDir = path.resolve(dest, d.name);\n      await copyDir(sourceDir, destDir, exclude);\n    }\n  }\n};\n\nconst ignorePlugin = {\n  name: \"transform-qcobjects-imports\",\n  setup(build: any) {\n    build.onResolve({ filter: /^(qcobjects|qcobjects-sdk)$/ }, (args: any) => {\n      if (args.kind === \"dynamic-import\") {\n        return { \n          path: args.path,\n          namespace: \"qcobjects-transform\"\n        };\n      }\n      return {\n        external: true,\n        path: args.path\n      };\n    });\n\n    build.onResolve({ filter: /.*/, namespace: \"file\" }, (args: any) => {\n      if (args.kind === \"dynamic-import\") {\n        return {\n          external: true,\n          path: args.path\n        };\n      }\n      return null;\n    });\n\n    build.onLoad({ filter: /.*/, namespace: \"qcobjects-transform\" }, (args: any) => {\n      return {\n        contents: `\n          module.exports = __toESM(require(\"${args.path}\"), true);\n        `,\n        loader: \"js\"\n      };\n    });\n  }\n};\n\nexport class CommandHandler extends InheritClass {\n  choiceOption: {\n    [x: string]: any;\n    build_esbuild: () => Promise<void>;\n  };\n\n  constructor({\n    switchCommander\n  }: { switchCommander: any }) {\n    super({ switchCommander });\n    this.choiceOption = {\n      async build_esbuild() {\n        try {\n          logger.info(\"[build:esbuild] Starting esbuild process...\");\n\n          // Get all TypeScript entry points\n          const entryPoints = glob.sync(\"src/**/*.ts\");\n\n          // Copy templates\n          await copyDir(\"./src/templates\", \"./build/templates\", []);\n          await copyDir(\"./src/templates\", \"./public/cjs/templates\", []);\n          await copyDir(\"./src/templates\", \"./public/esm/templates\", []);\n          await copyDir(\"./src/templates\", \"./public/browser/templates\", []);\n\n          const baseSettings: BuildOptions = {\n            entryPoints,\n            bundle: false,\n            outdir: \"public/cjs\",\n            format: \"cjs\" as Format,    \n            target: [\"node22\"],\n            tsconfig: \"tsconfig.json\",\n            globalName: \"global\",\n            minify: false,\n            keepNames: true,\n            sourcemap: true,\n            splitting: false,\n            chunkNames: \"chunks/[name]-[hash]\",\n            plugins: [\n              ignorePlugin,\n              alias({\n                \"types\": path.join(process.cwd(), \"src/types/global/index.d.ts\")\n              })\n            ]\n          };\n\n          const cjsSettings: BuildOptions = {\n            ...baseSettings,\n            outdir: \"public/cjs\",\n            format: \"cjs\" as Format,\n            platform: \"node\",\n            outExtension: {\n              \".js\": \".cjs\"\n            },\n            plugins: [\n              ignorePlugin,\n              {\n                name: \"transform-dynamic-imports\",\n                setup(build: any) {\n                  build.onEnd(() => {\n                    const files = glob.sync(\"public/cjs/**/*.cjs\");\n                    for (const file of files) {\n                      let content = readFileSync(file, \"utf8\");\n                      content = content.replace(\n                        /await\\s+import\\(['\"]([^'\"]+)['\"]\\)/g,\n                        \"__toESM(require(\\\"$1\\\"), true)\"\n                      );\n                      writeFileSync(file, content, \"utf8\");\n                    }\n                  });\n                }\n              },\n              {\n                name: \"add-extensions\",\n                setup(build: any) {\n                  build.onEnd(() => {\n                    entryPoints.forEach((entry: string) => {\n                      const outputFilePath = path.join(\"./public/cjs\", entry.replace(\"src/\", \"\").replace(\".ts\", \".cjs\"));\n                      addExtensions(outputFilePath, \".cjs\", cjsSettings);\n                    });\n                  });\n                }\n              }\n            ]\n          };\n\n          const esmSettings: BuildOptions = {\n            ...baseSettings,\n            outdir: \"public/esm\",\n            format: \"esm\" as Format,\n            platform: \"browser\",\n            outExtension: {\n              \".js\": \".mjs\"\n            },\n            plugins: [\n              {\n                name: \"transform-requires\",\n                setup(build: any) {\n                  build.onEnd(() => {\n                    const files = glob.sync(\"public/esm/**/*.mjs\");\n                    for (const file of files) {\n                      let content = readFileSync(file, \"utf8\");\n                      // Transform require statements to dynamic imports\n                      content = content.replace(\n                        /const\\s+{([^}]+)}\\s*=\\s*require\\(['\"]([^'\"]+)['\"]\\)/g,\n                        \"import { $1 } from \\\"$2\\\"\"\n                      );\n                      content = content.replace(\n                        /const\\s+([^=]+)\\s*=\\s*require\\(['\"]([^'\"]+)['\"]\\)/g,\n                        \"import $1 from \\\"$2\\\"\"\n                      );\n                      writeFileSync(file, content, \"utf8\");\n                    }\n                  });\n                }\n              },\n              {\n                name: \"add-extensions\",\n                setup(build: any) {\n                  build.onEnd(() => {\n                    entryPoints.forEach((entry: string) => {\n                      const outputFilePath = path.join(\"./public/esm\", entry.replace(\"src/\", \"\").replace(\".ts\", \".mjs\"));\n                      addExtensions(outputFilePath, \".mjs\", esmSettings);\n                    });\n                  });\n                }\n              }\n            ]\n          };\n\n          const browserSettings: BuildOptions = {\n            ...baseSettings,\n            outdir: \"public/browser\",\n            format: \"iife\" as Format,\n            platform: \"browser\",\n            outExtension: {\n              \".js\": \".js\"\n            }\n          };\n\n          // Build all formats\n          await Promise.all([\n            esbuild.build(cjsSettings),\n            esbuild.build(esmSettings),\n            esbuild.build(browserSettings)\n          ]);\n\n          logger.info(\"[build:esbuild] Build process completed successfully!\");\n        } catch (e: any) {\n          logger.error(`[build:esbuild] Build process failed: ${e.message}`);\n          process.exit(1);\n        }\n      }\n    };\n\n    const commandHandler = this;\n    logger.debug(\"Loading command build:esbuild...\");\n\n    // Register both commands\n    switchCommander.program.command(\"build:esbuild\")\n      .allowExcessArguments(false)\n      .description(\"Builds the project using esbuild for CJS, ESM, and browser formats\")\n      .action(function () {\n        commandHandler.choiceOption.build_esbuild.call(commandHandler);\n      });\n\n    // Add alias\n    switchCommander.program.command(\"build:esb\")\n      .allowExcessArguments(false)\n      .description(\"Alias for build:esbuild - Builds the project using esbuild\")\n      .action(function () {\n        commandHandler.choiceOption.build_esbuild.call(commandHandler);\n      });\n\n    logger.debug(\"Loading command build:esbuild... DONE.\");\n  }\n}\n\nPackage(\"com.qcobjects.cli.commands.build.esbuild\", [\n  CommandHandler\n]);"],
  "mappings": "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",
  "names": ["name"]
}
