claude-code-subagents-orchestrator
Version:
Claude Code Sub-agents Orchestrator - A powerful MCP server for orchestrating multiple AI sub-agents for complex task execution in Claude Code
69 lines (51 loc) • 2.03 kB
JavaScript
/**
* ESM Build Script
* Converts CommonJS modules to ESM format and handles package.json generation
*/
import fs from 'fs-extra';
import path from 'path';
import { fileURLToPath } from 'url';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const ROOT_DIR = path.resolve(__dirname, '..');
const DIST_DIR = path.join(ROOT_DIR, 'dist');
const ESM_DIR = path.join(DIST_DIR, 'esm');
async function buildESM() {
console.log('🔨 Building ESM modules...');
try {
// Ensure ESM directory exists
await fs.ensureDir(ESM_DIR);
// Copy files from CJS build and modify for ESM
const cjsFiles = await fs.readdir(path.join(DIST_DIR, 'cjs'), { recursive: true });
for (const file of cjsFiles) {
if (file.endsWith('.js')) {
const cjsPath = path.join(DIST_DIR, 'cjs', file);
const esmPath = path.join(ESM_DIR, file.replace('.js', '.esm.js'));
let content = await fs.readFile(cjsPath, 'utf-8');
// Convert require() to import statements
content = content.replace(/const\s+(.+?)\s+=\s+require\(["'](.+?)["']\);?/g,
'import $1 from "$2";');
// Convert module.exports to export default
content = content.replace(/module\.exports\s*=\s*(.+);?/g, 'export default $1;');
// Convert exports.X to export
content = content.replace(/exports\.(\w+)\s*=\s*(.+);?/g, 'export const $1 = $2;');
await fs.ensureDir(path.dirname(esmPath));
await fs.writeFile(esmPath, content);
}
}
// Create package.json for ESM directory
const esmPackageJson = {
type: 'module'
};
await fs.writeFile(
path.join(ESM_DIR, 'package.json'),
JSON.stringify(esmPackageJson, null, 2)
);
console.log('✅ ESM build completed successfully');
} catch (error) {
console.error('❌ ESM build failed:', error);
process.exit(1);
}
}
buildESM();