@nextsparkjs/cli 0.1.0-beta.100 → 0.1.0-beta.102

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.
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/paths.ts","../src/commands/dev.ts","../src/commands/build.ts","../src/commands/generate.ts","../src/commands/registry.ts"],"sourcesContent":["import { existsSync } from 'node:fs';\nimport { resolve, join, dirname } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\n/**\n * Detects the core package location\n * Priority:\n * 1. node_modules/@nextsparkjs/core (npm mode)\n * 2. ../../packages/core relative to cli (monorepo mode)\n */\nexport function getCoreDir(): string {\n const cwd = process.cwd();\n\n // Option 1: npm mode - look in node_modules\n const npmCorePath = resolve(cwd, 'node_modules', '@nextsparkjs', 'core');\n if (existsSync(npmCorePath)) {\n return npmCorePath;\n }\n\n // Option 2: monorepo mode - look relative to cli package\n // From packages/cli/dist/utils, go up to packages/core\n const monorepoCorePath = resolve(__dirname, '..', '..', '..', '..', 'core');\n if (existsSync(monorepoCorePath)) {\n return monorepoCorePath;\n }\n\n // Option 3: monorepo mode - look relative to cwd\n // If running from apps/dev, look in ../../packages/core\n const cwdMonorepoCorePath = resolve(cwd, '..', '..', 'packages', 'core');\n if (existsSync(cwdMonorepoCorePath)) {\n return cwdMonorepoCorePath;\n }\n\n throw new Error(\n 'Could not find @nextsparkjs/core. Make sure it is installed as a dependency ' +\n 'or you are running from within the monorepo.'\n );\n}\n\n/**\n * Gets the path to a core script\n */\nexport function getCoreScriptPath(scriptName: string): string {\n const coreDir = getCoreDir();\n return resolve(coreDir, 'scripts', `${scriptName}.js`);\n}\n\n/**\n * Gets the current working directory (where the CLI is being run from)\n */\nexport function getProjectRoot(): string {\n return process.cwd();\n}\n\n/**\n * Checks if we are running in monorepo mode\n */\nexport function isMonorepoMode(): boolean {\n const cwd = process.cwd();\n const npmCorePath = resolve(cwd, 'node_modules', '@nextsparkjs', 'core');\n return !existsSync(npmCorePath);\n}\n\n/**\n * Resolve the ai-workflow package path.\n * Checks node_modules first, then monorepo workspace.\n */\nexport function getAIWorkflowDir(): string | null {\n const cwd = process.cwd();\n\n // Check node_modules (consumer project — flat or workspace root)\n const nmPath = join(cwd, 'node_modules', '@nextsparkjs', 'ai-workflow');\n if (existsSync(nmPath)) return nmPath;\n\n // Check web/node_modules (monorepo with hoisted deps in web/)\n const webNmPath = join(cwd, 'web', 'node_modules', '@nextsparkjs', 'ai-workflow');\n if (existsSync(webNmPath)) return webNmPath;\n\n // Check monorepo workspace (packages/ai-workflow relative to project root)\n const monoPath = join(cwd, 'packages', 'ai-workflow');\n if (existsSync(monoPath)) return monoPath;\n\n return null;\n}\n","import { spawn, ChildProcess } from 'node:child_process';\nimport chalk from 'chalk';\nimport ora from 'ora';\nimport { getCoreDir, getProjectRoot, isMonorepoMode } from '../utils/paths.js';\n\ninterface DevOptions {\n port: string;\n registry: boolean;\n}\n\nexport async function devCommand(options: DevOptions): Promise<void> {\n const spinner = ora('Starting development environment...').start();\n\n try {\n const coreDir = getCoreDir();\n const projectRoot = getProjectRoot();\n const mode = isMonorepoMode() ? 'monorepo' : 'npm';\n\n spinner.succeed(`Core found at: ${coreDir} (${mode} mode)`);\n\n const processes: ChildProcess[] = [];\n\n // Start registry watcher if enabled\n if (options.registry) {\n console.log(chalk.blue('\\n[Registry] Starting registry builder with watch mode...'));\n\n // Use the unified registry builder with watch mode\n // It loads .env internally via dotenv, so NEXT_PUBLIC_ACTIVE_THEME is available\n const registryProcess = spawn('node', ['scripts/build/registry.mjs', '--watch'], {\n cwd: coreDir,\n stdio: 'inherit',\n env: {\n ...process.env,\n NEXTSPARK_PROJECT_ROOT: projectRoot,\n },\n });\n\n processes.push(registryProcess);\n\n registryProcess.on('error', (err) => {\n console.error(chalk.red(`[Registry] Error: ${err.message}`));\n });\n }\n\n // Start Next.js dev server\n console.log(chalk.green(`\\n[Dev] Starting Next.js dev server on port ${options.port}...`));\n\n const devProcess = spawn('npx', ['next', 'dev', '-p', options.port], {\n cwd: projectRoot,\n stdio: 'inherit',\n shell: true,\n env: {\n ...process.env,\n NEXTSPARK_CORE_DIR: coreDir,\n },\n });\n\n processes.push(devProcess);\n\n devProcess.on('error', (err) => {\n console.error(chalk.red(`[Dev] Error: ${err.message}`));\n process.exit(1);\n });\n\n // Handle process termination\n const cleanup = () => {\n console.log(chalk.yellow('\\nShutting down...'));\n processes.forEach((p) => {\n if (!p.killed) {\n p.kill('SIGTERM');\n }\n });\n process.exit(0);\n };\n\n process.on('SIGINT', cleanup);\n process.on('SIGTERM', cleanup);\n\n // Wait for dev process to exit\n devProcess.on('exit', (code) => {\n cleanup();\n process.exit(code ?? 0);\n });\n } catch (error) {\n spinner.fail('Failed to start development environment');\n if (error instanceof Error) {\n console.error(chalk.red(error.message));\n }\n process.exit(1);\n }\n}\n","import { spawn } from 'node:child_process';\nimport { existsSync, readFileSync } from 'node:fs';\nimport { join } from 'node:path';\nimport chalk from 'chalk';\nimport ora from 'ora';\nimport { getCoreDir, getProjectRoot } from '../utils/paths.js';\n\n/**\n * Load environment variables from project root .env file\n */\nfunction loadProjectEnv(projectRoot: string): Record<string, string> {\n const envPath = join(projectRoot, '.env');\n const envVars: Record<string, string> = {};\n\n if (existsSync(envPath)) {\n const content = readFileSync(envPath, 'utf-8');\n for (const line of content.split('\\n')) {\n const trimmed = line.trim();\n if (trimmed && !trimmed.startsWith('#')) {\n const [key, ...valueParts] = trimmed.split('=');\n if (key && valueParts.length > 0) {\n let value = valueParts.join('=');\n // Remove surrounding quotes\n if ((value.startsWith('\"') && value.endsWith('\"')) ||\n (value.startsWith(\"'\") && value.endsWith(\"'\"))) {\n value = value.slice(1, -1);\n }\n envVars[key] = value;\n }\n }\n }\n }\n\n return envVars;\n}\n\ninterface BuildOptions {\n registry: boolean;\n}\n\nexport async function buildCommand(options: BuildOptions): Promise<void> {\n const spinner = ora('Preparing production build...').start();\n\n try {\n const coreDir = getCoreDir();\n const projectRoot = getProjectRoot();\n\n spinner.succeed('Core package found');\n\n // Load project .env file\n const projectEnv = loadProjectEnv(projectRoot);\n\n // Step 1: Generate registries if enabled\n if (options.registry) {\n spinner.start('Generating registries...');\n\n await new Promise<void>((resolve, reject) => {\n const registryProcess = spawn('node', ['scripts/build/registry.mjs'], {\n cwd: coreDir,\n stdio: 'pipe',\n env: {\n ...projectEnv,\n ...process.env,\n NEXTSPARK_PROJECT_ROOT: projectRoot,\n },\n });\n\n let stderr = '';\n\n registryProcess.stderr?.on('data', (data) => {\n stderr += data.toString();\n });\n\n registryProcess.on('close', (code) => {\n if (code === 0) {\n resolve();\n } else {\n reject(new Error(`Registry generation failed: ${stderr}`));\n }\n });\n\n registryProcess.on('error', reject);\n });\n\n spinner.succeed('Registries generated');\n }\n\n // Step 2: Run Next.js build\n spinner.start('Building for production...');\n\n const buildProcess = spawn('npx', ['next', 'build'], {\n cwd: projectRoot,\n stdio: 'inherit',\n shell: true,\n env: {\n ...projectEnv,\n ...process.env,\n NEXTSPARK_CORE_DIR: coreDir,\n NODE_ENV: 'production',\n },\n });\n\n buildProcess.on('error', (err) => {\n spinner.fail('Build failed');\n console.error(chalk.red(err.message));\n process.exit(1);\n });\n\n buildProcess.on('close', (code) => {\n if (code === 0) {\n console.log(chalk.green('\\nBuild completed successfully!'));\n process.exit(0);\n } else {\n console.error(chalk.red(`\\nBuild failed with exit code ${code}`));\n process.exit(code ?? 1);\n }\n });\n } catch (error) {\n spinner.fail('Build preparation failed');\n if (error instanceof Error) {\n console.error(chalk.red(error.message));\n }\n process.exit(1);\n }\n}\n","import { spawn } from 'node:child_process';\nimport { existsSync, readFileSync } from 'node:fs';\nimport { join } from 'node:path';\nimport chalk from 'chalk';\nimport ora from 'ora';\nimport { getCoreDir, getProjectRoot, isMonorepoMode } from '../utils/paths.js';\n\n/**\n * Load environment variables from project root .env file\n */\nfunction loadProjectEnv(projectRoot: string): Record<string, string> {\n const envPath = join(projectRoot, '.env');\n const envVars: Record<string, string> = {};\n\n if (existsSync(envPath)) {\n const content = readFileSync(envPath, 'utf-8');\n for (const line of content.split('\\n')) {\n const trimmed = line.trim();\n if (trimmed && !trimmed.startsWith('#')) {\n const [key, ...valueParts] = trimmed.split('=');\n if (key && valueParts.length > 0) {\n let value = valueParts.join('=');\n // Remove surrounding quotes\n if ((value.startsWith('\"') && value.endsWith('\"')) ||\n (value.startsWith(\"'\") && value.endsWith(\"'\"))) {\n value = value.slice(1, -1);\n }\n envVars[key] = value;\n }\n }\n }\n }\n\n return envVars;\n}\n\ninterface GenerateOptions {\n watch?: boolean;\n}\n\nexport async function generateCommand(options: GenerateOptions): Promise<void> {\n const spinner = ora('Preparing registry generation...').start();\n\n try {\n const coreDir = getCoreDir();\n const projectRoot = getProjectRoot();\n const mode = isMonorepoMode() ? 'monorepo' : 'npm';\n\n spinner.succeed(`Core found at: ${coreDir} (${mode} mode)`);\n\n // Load project .env file\n const projectEnv = loadProjectEnv(projectRoot);\n\n const watchArg = options.watch ? ['--watch'] : [];\n const action = options.watch ? 'Watching' : 'Generating';\n\n console.log(chalk.blue(`\\n${action} registries...`));\n\n const generateProcess = spawn('node', ['scripts/build/registry.mjs', ...watchArg], {\n cwd: coreDir,\n stdio: 'inherit',\n env: {\n ...projectEnv,\n ...process.env,\n NEXTSPARK_PROJECT_ROOT: projectRoot,\n },\n });\n\n generateProcess.on('error', (err) => {\n console.error(chalk.red(`Error: ${err.message}`));\n process.exit(1);\n });\n\n generateProcess.on('close', (code) => {\n if (code === 0) {\n if (!options.watch) {\n console.log(chalk.green('\\nRegistry generation completed!'));\n }\n process.exit(0);\n } else {\n console.error(chalk.red(`\\nRegistry generation failed with exit code ${code}`));\n process.exit(code ?? 1);\n }\n });\n\n // Handle termination for watch mode\n if (options.watch) {\n const cleanup = () => {\n console.log(chalk.yellow('\\nStopping watcher...'));\n if (!generateProcess.killed) {\n generateProcess.kill('SIGTERM');\n }\n process.exit(0);\n };\n\n process.on('SIGINT', cleanup);\n process.on('SIGTERM', cleanup);\n }\n } catch (error) {\n spinner.fail('Registry generation failed');\n if (error instanceof Error) {\n console.error(chalk.red(error.message));\n }\n process.exit(1);\n }\n}\n","import { spawn } from 'node:child_process';\nimport { existsSync, readFileSync } from 'node:fs';\nimport { join } from 'node:path';\nimport chalk from 'chalk';\nimport ora from 'ora';\nimport { getCoreDir, getProjectRoot, isMonorepoMode } from '../utils/paths.js';\n\n/**\n * Load environment variables from project root .env file\n */\nfunction loadProjectEnv(projectRoot: string): Record<string, string> {\n const envPath = join(projectRoot, '.env');\n const envVars: Record<string, string> = {};\n\n if (existsSync(envPath)) {\n const content = readFileSync(envPath, 'utf-8');\n for (const line of content.split('\\n')) {\n const trimmed = line.trim();\n if (trimmed && !trimmed.startsWith('#')) {\n const [key, ...valueParts] = trimmed.split('=');\n if (key && valueParts.length > 0) {\n let value = valueParts.join('=');\n // Remove surrounding quotes\n if ((value.startsWith('\"') && value.endsWith('\"')) ||\n (value.startsWith(\"'\") && value.endsWith(\"'\"))) {\n value = value.slice(1, -1);\n }\n envVars[key] = value;\n }\n }\n }\n }\n\n return envVars;\n}\n\n/**\n * Build all registries (one-time generation)\n */\nexport async function registryBuildCommand(): Promise<void> {\n const spinner = ora('Building registries...').start();\n\n try {\n const coreDir = getCoreDir();\n const projectRoot = getProjectRoot();\n const mode = isMonorepoMode() ? 'monorepo' : 'npm';\n\n // Load project .env file\n const projectEnv = loadProjectEnv(projectRoot);\n\n spinner.text = `Building registries (${mode} mode)...`;\n\n const buildProcess = spawn('node', ['scripts/build/registry.mjs'], {\n cwd: coreDir,\n stdio: 'pipe',\n env: {\n ...projectEnv,\n ...process.env,\n NEXTSPARK_PROJECT_ROOT: projectRoot,\n },\n });\n\n let stdout = '';\n let stderr = '';\n\n buildProcess.stdout?.on('data', (data) => {\n stdout += data.toString();\n });\n\n buildProcess.stderr?.on('data', (data) => {\n stderr += data.toString();\n });\n\n buildProcess.on('close', (code) => {\n if (code === 0) {\n spinner.succeed('Registries built successfully');\n if (stdout.trim()) {\n console.log(chalk.gray(stdout.trim()));\n }\n process.exit(0);\n } else {\n spinner.fail('Registry build failed');\n if (stderr.trim()) {\n console.error(chalk.red(stderr.trim()));\n }\n process.exit(code ?? 1);\n }\n });\n\n buildProcess.on('error', (err) => {\n spinner.fail('Registry build failed');\n console.error(chalk.red(err.message));\n process.exit(1);\n });\n } catch (error) {\n spinner.fail('Registry build failed');\n if (error instanceof Error) {\n console.error(chalk.red(error.message));\n }\n process.exit(1);\n }\n}\n\n/**\n * Watch registries for changes and rebuild automatically\n */\nexport async function registryWatchCommand(): Promise<void> {\n const spinner = ora('Starting registry watcher...').start();\n\n try {\n const coreDir = getCoreDir();\n const projectRoot = getProjectRoot();\n const mode = isMonorepoMode() ? 'monorepo' : 'npm';\n\n spinner.succeed(`Registry watcher started (${mode} mode)`);\n console.log(chalk.blue('\\nWatching for changes... Press Ctrl+C to stop.\\n'));\n\n // Load project .env file\n const projectEnv = loadProjectEnv(projectRoot);\n\n const watchProcess = spawn('node', ['scripts/build/registry.mjs', '--watch'], {\n cwd: coreDir,\n stdio: 'inherit',\n env: {\n ...projectEnv,\n ...process.env,\n NEXTSPARK_PROJECT_ROOT: projectRoot,\n },\n });\n\n watchProcess.on('error', (err) => {\n console.error(chalk.red(`Watcher error: ${err.message}`));\n process.exit(1);\n });\n\n // Handle termination\n const cleanup = () => {\n console.log(chalk.yellow('\\nStopping registry watcher...'));\n if (!watchProcess.killed) {\n watchProcess.kill('SIGTERM');\n }\n process.exit(0);\n };\n\n process.on('SIGINT', cleanup);\n process.on('SIGTERM', cleanup);\n\n watchProcess.on('close', (code) => {\n if (code !== 0) {\n console.error(chalk.red(`\\nWatcher exited with code ${code}`));\n }\n process.exit(code ?? 0);\n });\n } catch (error) {\n spinner.fail('Failed to start registry watcher');\n if (error instanceof Error) {\n console.error(chalk.red(error.message));\n }\n process.exit(1);\n }\n}\n"],"mappings":"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","names":["spawn","existsSync","join","chalk","ora","join","existsSync","ora","resolve","spawn","chalk","spawn","existsSync","readFileSync","join","chalk","ora","loadProjectEnv","join","existsSync","readFileSync","ora","chalk","spawn","spawn","existsSync","readFileSync","join","chalk","ora","loadProjectEnv","join","existsSync","readFileSync","ora","spawn","chalk"]}