@object-ui/cli 0.5.0 โ†’ 2.0.0

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/dist/cli.js CHANGED
@@ -558,16 +558,54 @@ async function add(component) {
558
558
 
559
559
  // src/commands/studio.ts
560
560
  import chalk9 from "chalk";
561
+ import { spawn } from "child_process";
562
+ import { existsSync as existsSync8 } from "fs";
563
+ import { join as join8, resolve as resolve4, dirname as dirname2 } from "path";
564
+ import { fileURLToPath } from "url";
561
565
  async function studio() {
562
- console.log(chalk9.bold("Starting Object UI Studio..."));
563
- console.log(chalk9.yellow("Studio mode is experimental."));
566
+ console.log(chalk9.bold("\n\u{1F3A8} Starting ObjectUI Studio...\n"));
567
+ const cwd = process.cwd();
568
+ const __filename3 = fileURLToPath(import.meta.url);
569
+ const __dirname3 = dirname2(__filename3);
570
+ const candidates = [
571
+ join8(cwd, "apps/console"),
572
+ resolve4(__dirname3, "../../apps/console"),
573
+ resolve4(__dirname3, "../../../apps/console")
574
+ ];
575
+ let consolePath = null;
576
+ for (const candidate of candidates) {
577
+ if (existsSync8(join8(candidate, "package.json"))) {
578
+ consolePath = candidate;
579
+ break;
580
+ }
581
+ }
582
+ if (!consolePath) {
583
+ console.log(chalk9.yellow("\u26A0 Console app not found in workspace."));
584
+ console.log(chalk9.dim(" Hint: Run this command from the monorepo root."));
585
+ console.log(chalk9.dim(" Expected: apps/console/package.json\n"));
586
+ process.exit(1);
587
+ }
588
+ console.log(chalk9.dim(` Console: ${consolePath}`));
589
+ console.log(chalk9.dim(" Mode: MSW (in-browser mock server)\n"));
590
+ const child = spawn("pnpm", ["run", "dev"], {
591
+ cwd: consolePath,
592
+ stdio: "inherit",
593
+ env: { ...process.env, NODE_ENV: "development" },
594
+ shell: true
595
+ });
596
+ child.on("error", (err) => {
597
+ console.error(chalk9.red(`
598
+ \u2717 Failed to start studio: ${err.message}`));
599
+ process.exit(1);
600
+ });
601
+ child.on("exit", (code) => process.exit(code ?? 0));
564
602
  }
565
603
 
566
604
  // src/commands/check.ts
567
605
  import chalk10 from "chalk";
568
606
  import { globSync } from "glob";
569
607
  import { readFileSync as readFileSync2 } from "fs";
570
- import { join as join8 } from "path";
608
+ import { join as join9 } from "path";
571
609
  async function check() {
572
610
  console.log(chalk10.bold("Object UI Schema Check"));
573
611
  const cwd = process.cwd();
@@ -580,7 +618,7 @@ async function check() {
580
618
  for (const file of files) {
581
619
  try {
582
620
  if (file.endsWith(".json")) {
583
- JSON.parse(readFileSync2(join8(cwd, file), "utf-8"));
621
+ JSON.parse(readFileSync2(join9(cwd, file), "utf-8"));
584
622
  }
585
623
  } catch (e) {
586
624
  console.log(chalk10.red(`x Invalid JSON in ${file}: ${e.message}`));
@@ -597,14 +635,14 @@ async function check() {
597
635
 
598
636
  // src/commands/validate.ts
599
637
  import chalk11 from "chalk";
600
- import { readFileSync as readFileSync3, existsSync as existsSync8 } from "fs";
601
- import { resolve as resolve4 } from "path";
638
+ import { readFileSync as readFileSync3, existsSync as existsSync9 } from "fs";
639
+ import { resolve as resolve5 } from "path";
602
640
  import { load as loadYaml } from "js-yaml";
603
641
  import { safeValidateSchema } from "@object-ui/types/zod";
604
642
  async function validate(schemaPath) {
605
643
  console.log(chalk11.blue("\u{1F50D} ObjectUI Schema Validator\n"));
606
- const resolvedPath = resolve4(process.cwd(), schemaPath);
607
- if (!existsSync8(resolvedPath)) {
644
+ const resolvedPath = resolve5(process.cwd(), schemaPath);
645
+ if (!existsSync9(resolvedPath)) {
608
646
  console.error(chalk11.red(`\u2717 Error: Schema file not found: ${schemaPath}`));
609
647
  process.exit(1);
610
648
  }
@@ -671,19 +709,19 @@ ${index + 1}. ${error.message}`));
671
709
 
672
710
  // src/commands/create-plugin.ts
673
711
  import chalk12 from "chalk";
674
- import { spawn } from "child_process";
675
- import { resolve as resolve5, dirname as dirname2 } from "path";
676
- import { fileURLToPath } from "url";
677
- var __filename = fileURLToPath(import.meta.url);
678
- var __dirname = dirname2(__filename);
712
+ import { spawn as spawn2 } from "child_process";
713
+ import { resolve as resolve6, dirname as dirname3 } from "path";
714
+ import { fileURLToPath as fileURLToPath2 } from "url";
715
+ var __filename = fileURLToPath2(import.meta.url);
716
+ var __dirname = dirname3(__filename);
679
717
  async function createPlugin(pluginName) {
680
718
  console.log(chalk12.blue("\u{1F680} Creating ObjectUI plugin...\n"));
681
- const createPluginScript = resolve5(
719
+ const createPluginScript = resolve6(
682
720
  __dirname,
683
721
  "../../../create-plugin/dist/index.js"
684
722
  );
685
- return new Promise((resolve7, reject) => {
686
- const child = spawn("node", [createPluginScript, pluginName], {
723
+ return new Promise((resolve8, reject) => {
724
+ const child = spawn2("node", [createPluginScript, pluginName], {
687
725
  stdio: "inherit",
688
726
  shell: true
689
727
  });
@@ -693,7 +731,7 @@ async function createPlugin(pluginName) {
693
731
  });
694
732
  child.on("exit", (code) => {
695
733
  if (code === 0) {
696
- resolve7();
734
+ resolve8();
697
735
  } else {
698
736
  reject(new Error(`create-plugin exited with code ${code}`));
699
737
  }
@@ -703,12 +741,12 @@ async function createPlugin(pluginName) {
703
741
 
704
742
  // src/commands/analyze.ts
705
743
  import chalk13 from "chalk";
706
- import { existsSync as existsSync9, statSync as statSync2, readdirSync } from "fs";
707
- import { resolve as resolve6, join as join9, extname } from "path";
744
+ import { existsSync as existsSync10, statSync as statSync2, readdirSync } from "fs";
745
+ import { resolve as resolve7, join as join10, extname } from "path";
708
746
  async function analyzeBundleSize() {
709
747
  console.log(chalk13.bold("\n\u{1F4E6} Bundle Size Analysis\n"));
710
- const distDir = resolve6(process.cwd(), "dist");
711
- if (!existsSync9(distDir)) {
748
+ const distDir = resolve7(process.cwd(), "dist");
749
+ if (!existsSync10(distDir)) {
712
750
  console.log(chalk13.yellow("\u26A0 No dist directory found. Run build first."));
713
751
  return;
714
752
  }
@@ -716,7 +754,7 @@ async function analyzeBundleSize() {
716
754
  function scanDirectory(dir) {
717
755
  const items = readdirSync(dir);
718
756
  for (const item of items) {
719
- const fullPath = join9(dir, item);
757
+ const fullPath = join10(dir, item);
720
758
  const stat = statSync2(fullPath);
721
759
  if (stat.isDirectory()) {
722
760
  scanDirectory(fullPath);
@@ -798,12 +836,12 @@ async function analyze(options = {}) {
798
836
 
799
837
  // src/cli.ts
800
838
  import { readFileSync as readFileSync4 } from "fs";
801
- import { fileURLToPath as fileURLToPath2 } from "url";
802
- import { dirname as dirname3, join as join10 } from "path";
803
- var __filename2 = fileURLToPath2(import.meta.url);
804
- var __dirname2 = dirname3(__filename2);
839
+ import { fileURLToPath as fileURLToPath3 } from "url";
840
+ import { dirname as dirname4, join as join11 } from "path";
841
+ var __filename2 = fileURLToPath3(import.meta.url);
842
+ var __dirname2 = dirname4(__filename2);
805
843
  var packageJson = JSON.parse(
806
- readFileSync4(join10(__dirname2, "../package.json"), "utf-8")
844
+ readFileSync4(join11(__dirname2, "../package.json"), "utf-8")
807
845
  );
808
846
  var program = new Command();
809
847
  program.name("objectui").description("CLI tool for Object UI - Build applications from JSON schemas").version(packageJson.version);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli.ts","../src/commands/dev.ts","../src/commands/build.ts","../src/commands/start.ts","../src/commands/lint.ts","../src/commands/test.ts","../src/commands/generate.ts","../src/commands/doctor.ts","../src/commands/add.ts","../src/commands/studio.ts","../src/commands/check.ts","../src/commands/validate.ts","../src/commands/create-plugin.ts","../src/commands/analyze.ts"],"sourcesContent":["#!/usr/bin/env node\n/**\n * ObjectUI\n * Copyright (c) 2024-present ObjectStack Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { Command } from 'commander';\nimport chalk from 'chalk';\nimport { serve } from './commands/serve.js';\nimport { init } from './commands/init.js';\nimport { dev } from './commands/dev.js';\nimport { buildApp } from './commands/build.js';\nimport { start } from './commands/start.js';\nimport { lint } from './commands/lint.js';\nimport { test } from './commands/test.js';\nimport { generate } from './commands/generate.js';\nimport { doctor } from './commands/doctor.js';\nimport { add } from './commands/add.js';\nimport { studio } from './commands/studio.js';\nimport { check } from './commands/check.js';\nimport { validate } from './commands/validate.js';\nimport { createPlugin } from './commands/create-plugin.js';\nimport { analyze } from './commands/analyze.js';\nimport { readFileSync } from 'fs';\nimport { fileURLToPath } from 'url';\nimport { dirname, join } from 'path';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\n// Read package.json for version\nconst packageJson = JSON.parse(\n readFileSync(join(__dirname, '../package.json'), 'utf-8')\n);\n\nconst program = new Command();\n\nprogram\n .name('objectui')\n .description('CLI tool for Object UI - Build applications from JSON schemas')\n .version(packageJson.version);\n\nprogram\n .command('serve')\n .description('Start a development server with your JSON/YAML schema')\n .argument('[schema]', 'Path to JSON/YAML schema file', 'app.json')\n .option('-p, --port <port>', 'Port to run the server on', '3000')\n .option('-h, --host <host>', 'Host to bind the server to', 'localhost')\n .action(async (schema, options) => {\n try {\n await serve(schema, options);\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\nprogram\n .command('dev')\n .description('Start development server (alias for serve)')\n .argument('[schema]', 'Path to JSON/YAML schema file', 'app.json')\n .option('-p, --port <port>', 'Port to run the server on', '3000')\n .option('-h, --host <host>', 'Host to bind the server to', 'localhost')\n .option('--no-open', 'Do not open browser automatically')\n .action(async (schema, options) => {\n try {\n await dev(schema, options);\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\nprogram\n .command('build')\n .description('Build application for production')\n .argument('[schema]', 'Path to JSON/YAML schema file', 'app.json')\n .option('-o, --out-dir <dir>', 'Output directory', 'dist')\n .option('--clean', 'Clean output directory before build', false)\n .action(async (schema, options) => {\n try {\n await buildApp(schema, options);\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\nprogram\n .command('start')\n .description('Start production server')\n .option('-p, --port <port>', 'Port to run the server on', '3000')\n .option('-h, --host <host>', 'Host to bind the server to', '0.0.0.0')\n .option('-d, --dir <dir>', 'Directory to serve', 'dist')\n .action(async (options) => {\n try {\n await start(options);\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\nprogram\n .command('init')\n .description('ๅˆๅง‹ๅŒ–ๆ–ฐ็š„Object UIๅบ”็”จ / Initialize a new Object UI application with sample schema')\n .argument('[name]', 'ๅบ”็”จๅ็งฐ / Application name', 'my-app')\n .option('-t, --template <template>', 'ไฝฟ็”จ็š„ๆจกๆฟ / Template to use (dashboard, form, simple)', 'dashboard')\n .action(async (name, options) => {\n try {\n await init(name, options);\n } catch (error) {\n console.error(chalk.red('้”™่ฏฏ Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\nprogram\n .command('lint')\n .description('Lint the generated application code')\n .option('--fix', 'Automatically fix linting issues')\n .action(async (options) => {\n try {\n await lint(options);\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\nprogram\n .command('test')\n .description('Run tests for the application')\n .option('-w, --watch', 'Run tests in watch mode')\n .option('-c, --coverage', 'Generate test coverage report')\n .option('--ui', 'Run tests with Vitest UI')\n .action(async (options) => {\n try {\n await test(options);\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\nprogram\n .command('generate')\n .alias('g')\n .description('Generate new resources (objects, pages, plugins)')\n .argument('<type>', 'Type of resource to generate (resource/object, page, plugin)')\n .argument('<name>', 'Name of the resource')\n .option('--from <source>', 'Generate schema from external source (openapi.yaml, prisma.schema)')\n .option('--output <dir>', 'Output directory for generated schemas', 'schemas/')\n .action(async (type, name, options) => {\n try {\n // Handle schema generation from external sources\n if (options.from) {\n console.log(chalk.yellow('\\nโš  Schema generation from external sources (OpenAPI/Prisma) is not yet implemented.'));\n console.log(chalk.gray('This feature will be available in a future release.\\n'));\n process.exit(0);\n }\n \n await generate(type, name);\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\nprogram\n .command('doctor')\n .description('Diagnose and fix common issues')\n .action(async () => {\n try {\n await doctor();\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\nprogram\n .command('add')\n .description('Add a new component renderer to your project')\n .argument('<component>', 'Component name (e.g. Input, Grid)')\n .action(async (component) => {\n try {\n await add(component);\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\nprogram\n .command('studio')\n .description('Start the visual designer')\n .action(async () => {\n try {\n await studio();\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\nprogram\n .command('check')\n .description('Validate schema files')\n .action(async () => {\n try {\n await check();\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\nprogram\n .command('validate')\n .description('Validate a schema file against ObjectUI specifications')\n .argument('[schema]', 'Path to schema file (JSON or YAML)', 'app.json')\n .action(async (schema) => {\n try {\n await validate(schema);\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\nprogram\n .command('create')\n .description('Create new resources')\n .argument('<type>', 'Type of resource to create (plugin)')\n .argument('<name>', 'Name of the resource')\n .action(async (type, name) => {\n try {\n if (type === 'plugin') {\n await createPlugin(name);\n } else {\n console.error(chalk.red(`Unknown resource type: ${type}`));\n console.log(chalk.gray('Available types: plugin'));\n process.exit(1);\n }\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\nprogram\n .command('analyze')\n .description('Analyze application performance')\n .option('--bundle-size', 'Analyze bundle size')\n .option('--render-performance', 'Analyze render performance')\n .action(async (options) => {\n try {\n await analyze(options);\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n\nprogram.parse();\n","/**\n * ObjectUI\n * Copyright (c) 2024-present ObjectStack Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { createServer } from 'vite';\nimport react from '@vitejs/plugin-react';\nimport { existsSync, mkdirSync, unlinkSync, statSync } from 'fs';\nimport { join, resolve, dirname } from 'path';\nimport chalk from 'chalk';\nimport { execSync } from 'child_process';\nimport { createRequire } from 'module';\nimport { scanPagesDirectory, createTempAppWithRouting, createTempApp, parseSchemaFile, type RouteInfo } from '../utils/app-generator.js';\n\ninterface DevOptions {\n port: string;\n host: string;\n open?: boolean;\n}\n\nexport async function dev(schemaPath: string, options: DevOptions) {\n const cwd = process.cwd();\n \n // Resolve the actual project root and schema file\n let _projectRoot = cwd;\n const targetSchemaPath = schemaPath;\n let hasPagesDir = false;\n let pagesDir = '';\n let appConfig: unknown = null;\n\n // 1. Determine Project Root & Mode\n const absoluteSchemaPath = resolve(cwd, schemaPath);\n \n if (existsSync(absoluteSchemaPath) && statSync(absoluteSchemaPath).isFile()) {\n // If input is a file (e.g. examples/showcase/app.json)\n const fileDir = dirname(absoluteSchemaPath);\n const potentialPagesDir = join(fileDir, 'pages');\n\n if (existsSync(potentialPagesDir)) {\n console.log(chalk.blue(`๐Ÿ“‚ Detected project structure at ${fileDir}`));\n _projectRoot = fileDir;\n hasPagesDir = true;\n pagesDir = potentialPagesDir;\n \n // Try to load app.json as config\n try {\n appConfig = parseSchemaFile(absoluteSchemaPath);\n console.log(chalk.blue('โš™๏ธ Loaded App Config from app.json'));\n } catch (_e) {\n console.warn('Failed to parse app config');\n }\n }\n } \n \n // Fallback: Check detect pages dir in current cwd if not found above\n if (!hasPagesDir) {\n const localPagesDir = join(cwd, 'pages');\n if (existsSync(localPagesDir)) {\n hasPagesDir = true;\n pagesDir = localPagesDir;\n // Try to find app.json in cwd\n // TODO: Load app.json if exists\n }\n }\n\n const require = createRequire(join(cwd, 'package.json'));\n \n let routes: RouteInfo[] = [];\n let schema: unknown = null;\n let useFileSystemRouting = false;\n\n if (hasPagesDir) {\n // File-system based routing\n console.log(chalk.blue(`๐Ÿ“ Using file-system routing from ${pagesDir}`));\n routes = scanPagesDirectory(pagesDir);\n useFileSystemRouting = true;\n \n if (routes.length === 0) {\n throw new Error(`No schema files found in ${pagesDir}`);\n }\n \n console.log(chalk.green(`โœ“ Found ${routes.length} route(s)`));\n routes.forEach(route => {\n console.log(chalk.dim(` ${route.path} โ†’ ${route.filePath.replace(cwd, '.')}`));\n });\n } else {\n // Single schema file mode\n const fullSchemaPath = resolve(cwd, schemaPath);\n // ... (rest of the logic)\n if (!existsSync(fullSchemaPath)) {\n throw new Error(`Schema file not found: ${schemaPath}\\nRun 'objectui init' to create a sample schema.`);\n }\n console.log(chalk.blue('๐Ÿ“‹ Loading schema:'), chalk.cyan(schemaPath));\n try {\n schema = parseSchemaFile(fullSchemaPath);\n } catch (error) {\n throw new Error(`Invalid schema file: ${error instanceof Error ? error.message : error}`);\n }\n }\n\n // Create temporary app directory (always in cwd to keep node_modules access)\n const tmpDir = join(cwd, '.objectui-tmp');\n mkdirSync(tmpDir, { recursive: true });\n\n // Create temporary app files\n if (useFileSystemRouting) {\n createTempAppWithRouting(tmpDir, routes, appConfig);\n } else {\n createTempApp(tmpDir, schema);\n }\n\n\n // Install dependencies\n const isMonorepo = existsSync(join(cwd, 'pnpm-workspace.yaml'));\n \n if (isMonorepo) {\n console.log(chalk.blue('๐Ÿ“ฆ Detected monorepo - using root node_modules'));\n } else {\n console.log(chalk.blue('๐Ÿ“ฆ Installing dependencies...'));\n console.log(chalk.dim(' This may take a moment on first run...'));\n try {\n execSync('npm install --silent --prefer-offline', { \n cwd: tmpDir, \n stdio: 'inherit',\n });\n console.log(chalk.green('โœ“ Dependencies installed'));\n } catch {\n throw new Error('Failed to install dependencies. Please check your internet connection and try again.');\n }\n }\n\n console.log(chalk.green('โœ“ Schema loaded successfully'));\n console.log(chalk.blue('๐Ÿš€ Starting development server...\\n'));\n\n // Create Vite config\n const viteConfig: any = {\n root: tmpDir,\n server: {\n port: parseInt(options.port),\n host: options.host,\n open: options.open !== false,\n fs: {\n // Allow serving files from workspace root\n allow: [cwd],\n }\n },\n resolve: {\n alias: {}\n },\n plugins: [react()],\n };\n\n if (isMonorepo) {\n console.log(chalk.blue('๐Ÿ“ฆ Detected monorepo - configuring workspace aliases'));\n \n // Remove postcss.config.js to prevent interference with programmatic config\n const postcssPath = join(tmpDir, 'postcss.config.js');\n if (existsSync(postcssPath)) {\n unlinkSync(postcssPath);\n }\n\n // Add aliases for workspace packages\n viteConfig.resolve.alias = {\n '@object-ui/react': join(cwd, 'packages/react/src/index.ts'),\n '@object-ui/components': join(cwd, 'packages/components/src/index.ts'),\n '@object-ui/core': join(cwd, 'packages/core/src/index.ts'),\n '@object-ui/types': join(cwd, 'packages/types/src/index.ts'),\n '@object-ui/plugin-charts': join(cwd, 'packages/plugin-charts/src/index.tsx'),\n '@object-ui/plugin-editor': join(cwd, 'packages/plugin-editor/src/index.tsx'),\n '@object-ui/plugin-kanban': join(cwd, 'packages/plugin-kanban/src/index.tsx'),\n '@object-ui/plugin-markdown': join(cwd, 'packages/plugin-markdown/src/index.tsx'),\n '@object-ui/plugin-form': join(cwd, 'packages/plugin-form/src/index.tsx'),\n '@object-ui/plugin-grid': join(cwd, 'packages/plugin-grid/src/index.tsx'),\n '@object-ui/plugin-view': join(cwd, 'packages/plugin-view/src/index.tsx'),\n };\n\n // Fix: Resolve lucide-react from components package to avoid \"dependency not found\" in temp app\n try {\n // Trying to find lucide-react in the components' node_modules or hoist\n // checking specifically in packages/components context\n const lucidePath = require.resolve('lucide-react', { paths: [join(cwd, 'packages/components')] });\n // We might get the cjs entry, but for aliasing usually fine. \n // Better yet, if we can find the package root, but require.resolve gives file.\n // Let's just use what require.resolve gives.\n // @ts-expect-error - lucidePath is dynamically resolved\n viteConfig.resolve.alias['lucide-react'] = lucidePath;\n } catch (e) {\n console.warn('โš ๏ธ Could not resolve lucide-react automatically:', e);\n }\n \n // Debug aliases\n // console.log('Aliases:', viteConfig.resolve.alias);\n\n // Configure PostCSS programmatically reusing root dependencies\n try {\n const tailwindcss = require('tailwindcss');\n const autoprefixer = require('autoprefixer');\n \n viteConfig.css = {\n postcss: {\n plugins: [\n tailwindcss(join(tmpDir, 'tailwind.config.js')),\n autoprefixer(),\n ],\n },\n };\n } catch (_e) {\n console.warn(chalk.yellow('โš ๏ธ Failed to load PostCSS plugins from root node_modules. Styles might not work correctly.'));\n }\n }\n\n // Create Vite server\n const server = await createServer(viteConfig);\n\n await server.listen();\n\n const { port, host } = server.config.server;\n const protocol = server.config.server.https ? 'https' : 'http';\n const displayHost = host === '0.0.0.0' ? 'localhost' : host;\n\n console.log();\n console.log(chalk.green('โœ“ Development server started successfully!'));\n console.log();\n console.log(chalk.bold(' Local: ') + chalk.cyan(`${protocol}://${displayHost}:${port}`));\n console.log();\n console.log(chalk.dim(' Press Ctrl+C to stop the server'));\n console.log();\n}\n","/**\n * ObjectUI\n * Copyright (c) 2024-present ObjectStack Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { build as viteBuild } from 'vite';\nimport react from '@vitejs/plugin-react';\nimport { existsSync, mkdirSync, cpSync, rmSync } from 'fs';\nimport { join, resolve } from 'path';\nimport chalk from 'chalk';\nimport { execSync } from 'child_process';\nimport { scanPagesDirectory, createTempAppWithRouting, createTempApp, parseSchemaFile, type RouteInfo } from '../utils/app-generator.js';\n\ninterface BuildOptions {\n outDir?: string;\n clean?: boolean;\n}\n\nexport async function buildApp(schemaPath: string, options: BuildOptions) {\n const cwd = process.cwd();\n const outDir = options.outDir || 'dist';\n const outputPath = resolve(cwd, outDir);\n \n console.log(chalk.blue('๐Ÿ”จ Building application for production...'));\n console.log();\n \n // Check if pages directory exists for file-system routing\n const pagesDir = join(cwd, 'pages');\n const hasPagesDir = existsSync(pagesDir);\n \n let routes: RouteInfo[] = [];\n let schema: unknown = null;\n let useFileSystemRouting = false;\n\n if (hasPagesDir) {\n // File-system based routing\n console.log(chalk.blue('๐Ÿ“ Using file-system routing'));\n routes = scanPagesDirectory(pagesDir);\n useFileSystemRouting = true;\n \n if (routes.length === 0) {\n throw new Error('No schema files found in pages/ directory');\n }\n \n console.log(chalk.green(`โœ“ Found ${routes.length} route(s)`));\n } else {\n // Single schema file mode\n const fullSchemaPath = resolve(cwd, schemaPath);\n\n // Check if schema file exists\n if (!existsSync(fullSchemaPath)) {\n throw new Error(`Schema file not found: ${schemaPath}\\nRun 'objectui init' to create a sample schema.`);\n }\n\n console.log(chalk.blue('๐Ÿ“‹ Loading schema:'), chalk.cyan(schemaPath));\n\n // Read and validate schema\n try {\n schema = parseSchemaFile(fullSchemaPath);\n } catch (error) {\n throw new Error(`Invalid schema file: ${error instanceof Error ? error.message : error}`);\n }\n }\n\n // Create temporary app directory\n const tmpDir = join(cwd, '.objectui-tmp');\n mkdirSync(tmpDir, { recursive: true });\n\n // Create temporary app files\n if (useFileSystemRouting) {\n createTempAppWithRouting(tmpDir, routes);\n } else {\n createTempApp(tmpDir, schema);\n }\n\n // Install dependencies\n console.log(chalk.blue('๐Ÿ“ฆ Installing dependencies...'));\n try {\n execSync('npm install --silent --prefer-offline', { \n cwd: tmpDir, \n stdio: 'pipe',\n });\n console.log(chalk.green('โœ“ Dependencies installed'));\n } catch {\n throw new Error('Failed to install dependencies. Please check your internet connection and try again.');\n }\n\n console.log(chalk.blue('โš™๏ธ Building with Vite...'));\n console.log();\n\n // Clean output directory if requested\n if (options.clean && existsSync(outputPath)) {\n console.log(chalk.dim(` Cleaning ${outDir}/ directory...`));\n rmSync(outputPath, { recursive: true, force: true });\n }\n\n // Build with Vite\n try {\n await viteBuild({\n root: tmpDir,\n build: {\n outDir: join(tmpDir, 'dist'),\n emptyOutDir: true,\n reportCompressedSize: true,\n },\n plugins: [react()],\n logLevel: 'info',\n });\n\n // Copy built files to output directory\n mkdirSync(outputPath, { recursive: true });\n cpSync(join(tmpDir, 'dist'), outputPath, { recursive: true });\n\n console.log();\n console.log(chalk.green('โœ“ Build completed successfully!'));\n console.log();\n console.log(chalk.bold(' Output: ') + chalk.cyan(outDir + '/'));\n console.log();\n console.log(chalk.dim(' To serve the production build, run:'));\n console.log(chalk.cyan(` objectui start --dir ${outDir}`));\n console.log();\n } catch (error) {\n throw new Error(`Build failed: ${error instanceof Error ? error.message : error}`);\n }\n}\n","/**\n * ObjectUI\n * Copyright (c) 2024-present ObjectStack Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport express from 'express';\nimport rateLimit from 'express-rate-limit';\nimport { existsSync } from 'fs';\nimport { join, resolve } from 'path';\nimport chalk from 'chalk';\n\ninterface StartOptions {\n port: string;\n host: string;\n dir?: string;\n}\n\nexport async function start(options: StartOptions) {\n const cwd = process.cwd();\n const distDir = options.dir || 'dist';\n const distPath = resolve(cwd, distDir);\n\n // Check if dist directory exists\n if (!existsSync(distPath)) {\n throw new Error(\n `Build directory not found: ${distDir}\\n` +\n `Run 'objectui build' first to create a production build.`\n );\n }\n\n // Check if index.html exists\n const indexPath = join(distPath, 'index.html');\n if (!existsSync(indexPath)) {\n throw new Error(\n `index.html not found in ${distDir}/\\n` +\n `Make sure you have a valid production build.`\n );\n }\n\n console.log(chalk.blue('๐Ÿš€ Starting production server...\\n'));\n\n const app = express();\n const port = parseInt(options.port);\n const host = options.host;\n\n // Configure rate limiting to prevent abuse\n const limiter = rateLimit({\n windowMs: 15 * 60 * 1000, // 15 minutes\n max: 1000, // Limit each IP to 1000 requests per windowMs\n message: 'Too many requests from this IP, please try again later.',\n standardHeaders: true, // Return rate limit info in the `RateLimit-*` headers\n legacyHeaders: false, // Disable the `X-RateLimit-*` headers\n });\n\n // Apply rate limiting to all routes\n app.use(limiter);\n\n // Serve static files from dist directory\n app.use(express.static(distPath));\n\n // SPA fallback - serve index.html for all routes\n app.get('*', (req, res) => {\n res.sendFile(indexPath);\n });\n\n // Start server\n app.listen(port, host, () => {\n const protocol = 'http';\n const displayHost = host === '0.0.0.0' ? 'localhost' : host;\n\n console.log(chalk.green('โœ“ Production server started successfully!'));\n console.log();\n console.log(chalk.bold(' Local: ') + chalk.cyan(`${protocol}://${displayHost}:${port}`));\n console.log(chalk.bold(' Serving: ') + chalk.dim(distDir + '/'));\n console.log();\n console.log(chalk.dim(' Press Ctrl+C to stop the server'));\n console.log();\n });\n}\n","/**\n * ObjectUI\n * Copyright (c) 2024-present ObjectStack Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { execSync } from 'child_process';\nimport { existsSync } from 'fs';\nimport { join } from 'path';\nimport chalk from 'chalk';\n\ninterface LintOptions {\n fix?: boolean;\n}\n\nexport async function lint(options: LintOptions) {\n const cwd = process.cwd();\n \n console.log(chalk.blue('๐Ÿ” Running linter...\\n'));\n\n // Check if the generated temp app exists\n const tmpDir = join(cwd, '.objectui-tmp');\n const hasTempApp = existsSync(tmpDir);\n\n if (!hasTempApp) {\n throw new Error(\n 'No Object UI application found. Run \\'objectui dev\\' first to generate the application.'\n );\n }\n\n // Check if package.json and node_modules exist\n const packageJsonPath = join(tmpDir, 'package.json');\n const nodeModulesPath = join(tmpDir, 'node_modules');\n \n if (!existsSync(packageJsonPath) || !existsSync(nodeModulesPath)) {\n throw new Error(\n 'Dependencies not installed. Run \\'objectui dev\\' first to set up the application.'\n );\n }\n\n try {\n const fixFlag = options.fix ? '--fix' : '';\n const command = `npx eslint \"src/**/*.{js,jsx,ts,tsx}\" ${fixFlag}`.trim();\n \n console.log(chalk.dim(` Running: ${command}\\n`));\n \n execSync(command, {\n cwd: tmpDir,\n stdio: 'inherit',\n });\n\n console.log();\n console.log(chalk.green('โœ“ Linting completed successfully!'));\n console.log();\n } catch {\n // ESLint returns non-zero exit code when there are linting errors\n console.log();\n console.log(chalk.yellow('โš  Linting found issues.'));\n if (!options.fix) {\n console.log(chalk.dim(' Run \\'objectui lint --fix\\' to automatically fix some issues.'));\n }\n console.log();\n process.exit(1);\n }\n}\n","/**\n * ObjectUI\n * Copyright (c) 2024-present ObjectStack Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { execSync } from 'child_process';\nimport { existsSync } from 'fs';\nimport { join } from 'path';\nimport chalk from 'chalk';\n\ninterface TestOptions {\n watch?: boolean;\n coverage?: boolean;\n ui?: boolean;\n}\n\nexport async function test(options: TestOptions) {\n const cwd = process.cwd();\n \n console.log(chalk.blue('๐Ÿงช Running tests...\\n'));\n\n // Check if the generated temp app exists\n const tmpDir = join(cwd, '.objectui-tmp');\n const hasTempApp = existsSync(tmpDir);\n\n if (!hasTempApp) {\n throw new Error(\n 'No Object UI application found. Run \\'objectui dev\\' first to generate the application.'\n );\n }\n\n // Check if package.json and node_modules exist\n const packageJsonPath = join(tmpDir, 'package.json');\n const nodeModulesPath = join(tmpDir, 'node_modules');\n \n if (!existsSync(packageJsonPath) || !existsSync(nodeModulesPath)) {\n throw new Error(\n 'Dependencies not installed. Run \\'objectui dev\\' first to set up the application.'\n );\n }\n\n try {\n let command = 'npx vitest';\n \n if (options.watch) {\n command += ' --watch';\n } else if (options.ui) {\n command += ' --ui';\n } else {\n command += ' run';\n }\n\n if (options.coverage) {\n command += ' --coverage';\n }\n\n console.log(chalk.dim(` Running: ${command}\\n`));\n \n execSync(command, {\n cwd: tmpDir,\n stdio: 'inherit',\n });\n\n if (!options.watch && !options.ui) {\n console.log();\n console.log(chalk.green('โœ“ Tests completed successfully!'));\n console.log();\n }\n } catch {\n // Vitest returns non-zero exit code when tests fail\n console.log();\n console.log(chalk.red('โœ— Some tests failed.'));\n console.log();\n process.exit(1);\n }\n}\n","/**\n * ObjectUI\n * Copyright (c) 2024-present ObjectStack Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport chalk from 'chalk';\nimport { existsSync, mkdirSync, writeFileSync } from 'fs';\nimport { join } from 'path';\n\nexport async function generate(type: string, name: string) {\n const cwd = process.cwd();\n\n switch (type) {\n case 'resource':\n case 'object':\n generateResource(cwd, name);\n break;\n case 'page':\n generatePage(cwd, name);\n break;\n case 'plugin':\n generatePlugin(cwd, name);\n break;\n default:\n console.log(chalk.red(`Unknown type: ${type}`));\n console.log(`Available types: resource, page, plugin`);\n process.exit(1);\n }\n}\n\nfunction generateResource(cwd: string, name: string) {\n const dir = join(cwd, 'objects');\n if (!existsSync(dir)) mkdirSync(dir, { recursive: true });\n\n const fileName = `${name.toLowerCase()}.json`;\n const filePath = join(dir, fileName);\n\n if (existsSync(filePath)) {\n console.log(chalk.yellow(`Object ${name} already exists at ${filePath}`));\n return;\n }\n\n const content = {\n name: name,\n fields: {\n name: { type: 'text', label: 'Name', required: true }\n }\n };\n\n writeFileSync(filePath, JSON.stringify(content, null, 2));\n console.log(chalk.green(`โœ“ Generated resource schema: ${filePath}`));\n}\n\nfunction generatePage(cwd: string, name: string) {\n const dir = join(cwd, 'pages');\n if (!existsSync(dir)) mkdirSync(dir, { recursive: true });\n\n const fileName = `${name.toLowerCase()}.json`;\n const filePath = join(dir, fileName);\n\n if (existsSync(filePath)) {\n console.log(chalk.yellow(`Page ${name} already exists at ${filePath}`));\n return;\n }\n\n const content = {\n type: \"page\",\n title: name,\n body: [\n {\n type: \"markdown\",\n content: `# Welcome to ${name}`\n }\n ]\n };\n\n writeFileSync(filePath, JSON.stringify(content, null, 2));\n console.log(chalk.green(`โœ“ Generated page schema: ${filePath}`));\n}\n\nfunction generatePlugin(cwd: string, name: string) {\n const dir = join(cwd, 'plugins', name);\n if (existsSync(dir)) {\n console.log(chalk.yellow(`Plugin ${name} already exists`));\n return;\n }\n mkdirSync(dir, { recursive: true });\n\n const content = `\nexport const ${name}Plugin = {\n name: '${name}',\n install(app) {\n console.log('${name} plugin installed');\n }\n};\n`;\n\n writeFileSync(join(dir, 'index.ts'), content.trim());\n console.log(chalk.green(`โœ“ Generated plugin: ${dir}`));\n}\n","/**\n * ObjectUI\n * Copyright (c) 2024-present ObjectStack Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport chalk from 'chalk';\nimport { existsSync, readFileSync } from 'fs';\nimport { join } from 'path';\n\nexport async function doctor() {\n console.log(chalk.bold('Object UI Doctor'));\n console.log('Diagnosis in progress...\\n');\n \n const cwd = process.cwd();\n let issues = 0;\n\n // 1. Check package.json\n const pkgPath = join(cwd, 'package.json');\n if (existsSync(pkgPath)) {\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));\n \n // Check React version\n const reactVer = pkg.dependencies?.react || pkg.devDependencies?.react;\n if (reactVer) {\n console.log(chalk.green('โœ“ React installed'));\n } else {\n console.log(chalk.yellow('โš ๏ธ React not found in dependencies'));\n issues++;\n }\n\n // Check Tailwind\n const tailwindVer = pkg.dependencies?.tailwindcss || pkg.devDependencies?.tailwindcss;\n if (tailwindVer) {\n console.log(chalk.green('โœ“ Tailwind CSS installed'));\n } else {\n console.log(chalk.yellow('โš ๏ธ Tailwind CSS not found'));\n issues++;\n }\n } catch (e) {\n console.log(chalk.red('x Failed to read package.json'));\n issues++;\n }\n } else {\n console.log(chalk.red('x package.json not found'));\n issues++;\n }\n\n // 2. Check tailwind.config.js\n const tailwindConfigPath = join(cwd, 'tailwind.config.js');\n if (existsSync(tailwindConfigPath)) {\n console.log(chalk.green('โœ“ tailwind.config.js found'));\n // TODO: Check content configuration\n } else {\n console.log(chalk.yellow('โš ๏ธ tailwind.config.js not found'));\n issues++;\n }\n\n // Summary\n console.log('\\nResult:');\n if (issues === 0) {\n console.log(chalk.green('Everything looks good! โœจ'));\n } else {\n console.log(chalk.yellow(`Found ${issues} issue(s).`));\n }\n}\n","/**\n * ObjectUI\n * Copyright (c) 2024-present ObjectStack Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport chalk from 'chalk';\nimport { existsSync, mkdirSync, writeFileSync } from 'fs';\nimport { join } from 'path';\n\nexport async function add(component: string) {\n console.log(chalk.bold(`Object UI Add: ${component}`));\n console.log(chalk.yellow('Feature not implemented yet.'));\n console.log(`This command will download the source code for ${component}Renderer to your project.`);\n}\n","/**\n * ObjectUI\n * Copyright (c) 2024-present ObjectStack Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport chalk from 'chalk';\nimport { serve } from './serve.js';\n\nexport async function studio() {\n console.log(chalk.bold('Starting Object UI Studio...'));\n \n // Logic to start designer server\n // This might reuse 'serve' but with a special mode or different root\n \n console.log(chalk.yellow('Studio mode is experimental.'));\n \n // For now, we can just point to the designer URL if it was hosted, \n // or start the local dev server with a flag.\n // Assuming designer is a static app that connects to the local API.\n}\n","/**\n * ObjectUI\n * Copyright (c) 2024-present ObjectStack Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport chalk from 'chalk';\nimport { globSync } from 'glob';\nimport { readFileSync } from 'fs';\nimport { join } from 'path';\n\nexport async function check() {\n console.log(chalk.bold('Object UI Schema Check'));\n const cwd = process.cwd();\n \n // 1. Find all JSON/YAML files\n const files = globSync('**/*.{json,yaml,yml}', { \n cwd, \n ignore: ['node_modules/**', 'dist/**', '.git/**'] \n });\n \n console.log(`Analyzing ${files.length} files...`);\n \n let errors = 0;\n \n for (const file of files) {\n try {\n // Basic JSON parsing check\n if (file.endsWith('.json')) {\n JSON.parse(readFileSync(join(cwd, file), 'utf-8'));\n }\n // TODO: Schema validation logic\n } catch (e) {\n console.log(chalk.red(`x Invalid JSON in ${file}: ${(e as Error).message}`));\n errors++;\n }\n }\n \n if (errors === 0) {\n console.log(chalk.green('โœ“ All checks passed'));\n } else {\n console.log(chalk.red(`Found ${errors} errors`));\n process.exit(1);\n }\n}\n","/**\n * ObjectUI\n * Copyright (c) 2024-present ObjectStack Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport chalk from 'chalk';\nimport { readFileSync, existsSync } from 'fs';\nimport { resolve } from 'path';\nimport { load as loadYaml } from 'js-yaml';\nimport { safeValidateSchema } from '@object-ui/types/zod';\n\n/**\n * Validate a schema file\n * \n * @param schemaPath - Path to the schema file (JSON or YAML)\n */\nexport async function validate(schemaPath: string) {\n console.log(chalk.blue('๐Ÿ” ObjectUI Schema Validator\\n'));\n\n // Resolve the schema path\n const resolvedPath = resolve(process.cwd(), schemaPath);\n\n // Check if file exists\n if (!existsSync(resolvedPath)) {\n console.error(chalk.red(`โœ— Error: Schema file not found: ${schemaPath}`));\n process.exit(1);\n }\n\n try {\n // Read the file\n const fileContent = readFileSync(resolvedPath, 'utf-8');\n let schema: unknown;\n\n // Parse based on file extension\n if (schemaPath.endsWith('.yaml') || schemaPath.endsWith('.yml')) {\n console.log(chalk.gray(`Reading YAML schema from: ${schemaPath}`));\n schema = loadYaml(fileContent);\n } else if (schemaPath.endsWith('.json')) {\n console.log(chalk.gray(`Reading JSON schema from: ${schemaPath}`));\n schema = JSON.parse(fileContent);\n } else {\n // Try JSON first, then YAML\n try {\n schema = JSON.parse(fileContent);\n console.log(chalk.gray(`Reading schema from: ${schemaPath} (detected as JSON)`));\n } catch {\n schema = loadYaml(fileContent);\n console.log(chalk.gray(`Reading schema from: ${schemaPath} (detected as YAML)`));\n }\n }\n\n // Validate the schema\n console.log(chalk.gray('Validating schema...\\n'));\n const result = safeValidateSchema(schema);\n\n if (result.success) {\n console.log(chalk.green('โœ“ Schema is valid!\\n'));\n \n // Show some info about the schema\n const data = result.data;\n console.log(chalk.bold('Schema Information:'));\n console.log(chalk.gray(' Type:'), data.type || 'unknown');\n \n if (data.id) {\n console.log(chalk.gray(' ID:'), data.id);\n }\n \n if (data.label || data.title) {\n console.log(chalk.gray(' Label:'), data.label || data.title);\n }\n \n // Count children if present\n if (data.children && Array.isArray(data.children)) {\n console.log(chalk.gray(' Children:'), data.children.length);\n }\n \n console.log('');\n process.exit(0);\n } else {\n console.error(chalk.red('โœ— Schema validation failed!\\n'));\n console.error(chalk.bold('Validation Errors:'));\n \n // Format Zod errors nicely\n const errors = result.error.errors;\n errors.forEach((error, index) => {\n console.error(chalk.red(`\\n${index + 1}. ${error.message}`));\n if (error.path && error.path.length > 0) {\n console.error(chalk.gray(` Path: ${error.path.join(' โ†’ ')}`));\n }\n if (error.code) {\n console.error(chalk.gray(` Code: ${error.code}`));\n }\n });\n \n console.error('');\n process.exit(1);\n }\n } catch (error) {\n console.error(chalk.red('\\nโœ— Error reading or parsing schema file:'));\n console.error(chalk.red((error as Error).message));\n console.error('');\n process.exit(1);\n }\n}\n","/**\n * ObjectUI\n * Copyright (c) 2024-present ObjectStack Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport chalk from 'chalk';\nimport { spawn } from 'child_process';\nimport { resolve, dirname } from 'path';\nimport { fileURLToPath } from 'url';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\n/**\n * Create a new plugin using the @object-ui/create-plugin package\n * \n * @param pluginName - Name of the plugin to create\n */\nexport async function createPlugin(pluginName: string) {\n console.log(chalk.blue('๐Ÿš€ Creating ObjectUI plugin...\\n'));\n\n // Resolve the create-plugin script path\n const createPluginScript = resolve(\n __dirname,\n '../../../create-plugin/dist/index.js'\n );\n\n return new Promise<void>((resolve, reject) => {\n // Spawn the create-plugin command\n const child = spawn('node', [createPluginScript, pluginName], {\n stdio: 'inherit',\n shell: true,\n });\n\n child.on('error', (error) => {\n console.error(chalk.red('Failed to create plugin:'), error);\n reject(error);\n });\n\n child.on('exit', (code) => {\n if (code === 0) {\n resolve();\n } else {\n reject(new Error(`create-plugin exited with code ${code}`));\n }\n });\n });\n}\n","/**\n * ObjectUI\n * Copyright (c) 2024-present ObjectStack Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport chalk from 'chalk';\nimport { existsSync, statSync, readdirSync } from 'fs';\nimport { resolve, join, extname } from 'path';\n\ninterface AnalyzeOptions {\n bundleSize?: boolean;\n renderPerformance?: boolean;\n}\n\n/**\n * Analyze bundle size by scanning dist directory\n */\nasync function analyzeBundleSize() {\n console.log(chalk.bold('\\n๐Ÿ“ฆ Bundle Size Analysis\\n'));\n\n const distDir = resolve(process.cwd(), 'dist');\n \n if (!existsSync(distDir)) {\n console.log(chalk.yellow('โš  No dist directory found. Run build first.'));\n return;\n }\n\n const files: Array<{ path: string; size: number }> = [];\n \n function scanDirectory(dir: string) {\n const items = readdirSync(dir);\n \n for (const item of items) {\n const fullPath = join(dir, item);\n const stat = statSync(fullPath);\n \n if (stat.isDirectory()) {\n scanDirectory(fullPath);\n } else {\n files.push({\n path: fullPath.replace(distDir + '/', ''),\n size: stat.size,\n });\n }\n }\n }\n \n scanDirectory(distDir);\n \n // Sort by size (largest first)\n files.sort((a, b) => b.size - a.size);\n \n // Calculate totals\n const totalSize = files.reduce((sum, file) => sum + file.size, 0);\n const jsFiles = files.filter(f => extname(f.path) === '.js');\n const cssFiles = files.filter(f => extname(f.path) === '.css');\n \n const jsSize = jsFiles.reduce((sum, file) => sum + file.size, 0);\n const cssSize = cssFiles.reduce((sum, file) => sum + file.size, 0);\n \n console.log(chalk.bold('Summary:'));\n console.log(chalk.gray(' Total Size:'), formatBytes(totalSize));\n console.log(chalk.gray(' JavaScript:'), formatBytes(jsSize), chalk.dim(`(${jsFiles.length} files)`));\n console.log(chalk.gray(' CSS: '), formatBytes(cssSize), chalk.dim(`(${cssFiles.length} files)`));\n console.log(chalk.gray(' Other: '), formatBytes(totalSize - jsSize - cssSize));\n \n console.log(chalk.bold('\\nLargest Files:'));\n files.slice(0, 10).forEach((file) => {\n const sizeStr = formatBytes(file.size).padStart(10);\n console.log(chalk.gray(` ${sizeStr}`), file.path);\n });\n \n // Bundle size recommendations\n console.log(chalk.bold('\\n๐Ÿ’ก Recommendations:'));\n \n if (totalSize > 1024 * 1024) {\n console.log(chalk.yellow(' โš  Total bundle size is large (> 1MB)'));\n console.log(chalk.gray(' Consider code splitting or lazy loading'));\n }\n \n if (jsSize > 500 * 1024) {\n console.log(chalk.yellow(' โš  JavaScript bundle is large (> 500KB)'));\n console.log(chalk.gray(' Consider:'));\n console.log(chalk.gray(' - Tree shaking unused code'));\n console.log(chalk.gray(' - Lazy loading components'));\n console.log(chalk.gray(' - Using dynamic imports'));\n }\n \n if (files.length > 100) {\n console.log(chalk.yellow(` โš  Large number of files (${files.length})`));\n console.log(chalk.gray(' Consider bundling or combining files'));\n }\n \n console.log('');\n}\n\n/**\n * Analyze render performance (placeholder for now)\n */\nasync function analyzeRenderPerformance() {\n console.log(chalk.bold('\\nโšก Render Performance Analysis\\n'));\n \n console.log(chalk.gray('Performance analysis features:'));\n console.log(chalk.gray(' โœ“ Expression caching enabled'));\n console.log(chalk.gray(' โœ“ Component memoization available'));\n console.log(chalk.gray(' โœ“ Virtual scrolling support for large lists'));\n \n console.log(chalk.bold('\\n๐Ÿ’ก Performance Tips:'));\n console.log(chalk.gray(' โ€ข Use virtual scrolling for lists > 100 items'));\n console.log(chalk.gray(' โ€ข Cache frequently evaluated expressions'));\n console.log(chalk.gray(' โ€ข Use React.memo for expensive components'));\n console.log(chalk.gray(' โ€ข Implement pagination for large datasets'));\n console.log(chalk.gray(' โ€ข Use code splitting for large apps'));\n \n console.log('');\n}\n\n/**\n * Format bytes to human-readable string\n */\nfunction formatBytes(bytes: number): string {\n if (bytes === 0) return '0 B';\n \n const k = 1024;\n const sizes = ['B', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n \n return `${(bytes / Math.pow(k, i)).toFixed(2)} ${sizes[i]}`;\n}\n\n/**\n * Analyze application performance\n * \n * @param options - Analysis options\n */\nexport async function analyze(options: AnalyzeOptions = {}) {\n console.log(chalk.blue('๐Ÿ” ObjectUI Performance Analyzer\\n'));\n\n const runAll = !options.bundleSize && !options.renderPerformance;\n \n if (options.bundleSize || runAll) {\n await analyzeBundleSize();\n }\n \n if (options.renderPerformance || runAll) {\n await analyzeRenderPerformance();\n }\n \n console.log(chalk.green('โœ“ Analysis complete!\\n'));\n}\n"],"mappings":"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","names":["chalk","require","react","existsSync","mkdirSync","join","resolve","chalk","execSync","resolve","chalk","join","existsSync","mkdirSync","execSync","react","existsSync","join","resolve","chalk","execSync","existsSync","join","chalk","execSync","existsSync","join","chalk","chalk","existsSync","mkdirSync","join","chalk","existsSync","join","chalk","chalk","chalk","readFileSync","join","chalk","readFileSync","existsSync","resolve","chalk","resolve","dirname","chalk","existsSync","statSync","resolve","join","readFileSync","fileURLToPath","dirname","join","__filename","__dirname","chalk"]}
1
+ {"version":3,"sources":["../src/cli.ts","../src/commands/dev.ts","../src/commands/build.ts","../src/commands/start.ts","../src/commands/lint.ts","../src/commands/test.ts","../src/commands/generate.ts","../src/commands/doctor.ts","../src/commands/add.ts","../src/commands/studio.ts","../src/commands/check.ts","../src/commands/validate.ts","../src/commands/create-plugin.ts","../src/commands/analyze.ts"],"sourcesContent":["#!/usr/bin/env node\n/**\n * ObjectUI\n * Copyright (c) 2024-present ObjectStack Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { Command } from 'commander';\nimport chalk from 'chalk';\nimport { serve } from './commands/serve.js';\nimport { init } from './commands/init.js';\nimport { dev } from './commands/dev.js';\nimport { buildApp } from './commands/build.js';\nimport { start } from './commands/start.js';\nimport { lint } from './commands/lint.js';\nimport { test } from './commands/test.js';\nimport { generate } from './commands/generate.js';\nimport { doctor } from './commands/doctor.js';\nimport { add } from './commands/add.js';\nimport { studio } from './commands/studio.js';\nimport { check } from './commands/check.js';\nimport { validate } from './commands/validate.js';\nimport { createPlugin } from './commands/create-plugin.js';\nimport { analyze } from './commands/analyze.js';\nimport { readFileSync } from 'fs';\nimport { fileURLToPath } from 'url';\nimport { dirname, join } from 'path';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\n// Read package.json for version\nconst packageJson = JSON.parse(\n readFileSync(join(__dirname, '../package.json'), 'utf-8')\n);\n\nconst program = new Command();\n\nprogram\n .name('objectui')\n .description('CLI tool for Object UI - Build applications from JSON schemas')\n .version(packageJson.version);\n\nprogram\n .command('serve')\n .description('Start a development server with your JSON/YAML schema')\n .argument('[schema]', 'Path to JSON/YAML schema file', 'app.json')\n .option('-p, --port <port>', 'Port to run the server on', '3000')\n .option('-h, --host <host>', 'Host to bind the server to', 'localhost')\n .action(async (schema, options) => {\n try {\n await serve(schema, options);\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\nprogram\n .command('dev')\n .description('Start development server (alias for serve)')\n .argument('[schema]', 'Path to JSON/YAML schema file', 'app.json')\n .option('-p, --port <port>', 'Port to run the server on', '3000')\n .option('-h, --host <host>', 'Host to bind the server to', 'localhost')\n .option('--no-open', 'Do not open browser automatically')\n .action(async (schema, options) => {\n try {\n await dev(schema, options);\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\nprogram\n .command('build')\n .description('Build application for production')\n .argument('[schema]', 'Path to JSON/YAML schema file', 'app.json')\n .option('-o, --out-dir <dir>', 'Output directory', 'dist')\n .option('--clean', 'Clean output directory before build', false)\n .action(async (schema, options) => {\n try {\n await buildApp(schema, options);\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\nprogram\n .command('start')\n .description('Start production server')\n .option('-p, --port <port>', 'Port to run the server on', '3000')\n .option('-h, --host <host>', 'Host to bind the server to', '0.0.0.0')\n .option('-d, --dir <dir>', 'Directory to serve', 'dist')\n .action(async (options) => {\n try {\n await start(options);\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\nprogram\n .command('init')\n .description('ๅˆๅง‹ๅŒ–ๆ–ฐ็š„Object UIๅบ”็”จ / Initialize a new Object UI application with sample schema')\n .argument('[name]', 'ๅบ”็”จๅ็งฐ / Application name', 'my-app')\n .option('-t, --template <template>', 'ไฝฟ็”จ็š„ๆจกๆฟ / Template to use (dashboard, form, simple)', 'dashboard')\n .action(async (name, options) => {\n try {\n await init(name, options);\n } catch (error) {\n console.error(chalk.red('้”™่ฏฏ Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\nprogram\n .command('lint')\n .description('Lint the generated application code')\n .option('--fix', 'Automatically fix linting issues')\n .action(async (options) => {\n try {\n await lint(options);\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\nprogram\n .command('test')\n .description('Run tests for the application')\n .option('-w, --watch', 'Run tests in watch mode')\n .option('-c, --coverage', 'Generate test coverage report')\n .option('--ui', 'Run tests with Vitest UI')\n .action(async (options) => {\n try {\n await test(options);\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\nprogram\n .command('generate')\n .alias('g')\n .description('Generate new resources (objects, pages, plugins)')\n .argument('<type>', 'Type of resource to generate (resource/object, page, plugin)')\n .argument('<name>', 'Name of the resource')\n .option('--from <source>', 'Generate schema from external source (openapi.yaml, prisma.schema)')\n .option('--output <dir>', 'Output directory for generated schemas', 'schemas/')\n .action(async (type, name, options) => {\n try {\n // Handle schema generation from external sources\n if (options.from) {\n console.log(chalk.yellow('\\nโš  Schema generation from external sources (OpenAPI/Prisma) is not yet implemented.'));\n console.log(chalk.gray('This feature will be available in a future release.\\n'));\n process.exit(0);\n }\n \n await generate(type, name);\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\nprogram\n .command('doctor')\n .description('Diagnose and fix common issues')\n .action(async () => {\n try {\n await doctor();\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\nprogram\n .command('add')\n .description('Add a new component renderer to your project')\n .argument('<component>', 'Component name (e.g. Input, Grid)')\n .action(async (component) => {\n try {\n await add(component);\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\nprogram\n .command('studio')\n .description('Start the visual designer')\n .action(async () => {\n try {\n await studio();\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\nprogram\n .command('check')\n .description('Validate schema files')\n .action(async () => {\n try {\n await check();\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\nprogram\n .command('validate')\n .description('Validate a schema file against ObjectUI specifications')\n .argument('[schema]', 'Path to schema file (JSON or YAML)', 'app.json')\n .action(async (schema) => {\n try {\n await validate(schema);\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\nprogram\n .command('create')\n .description('Create new resources')\n .argument('<type>', 'Type of resource to create (plugin)')\n .argument('<name>', 'Name of the resource')\n .action(async (type, name) => {\n try {\n if (type === 'plugin') {\n await createPlugin(name);\n } else {\n console.error(chalk.red(`Unknown resource type: ${type}`));\n console.log(chalk.gray('Available types: plugin'));\n process.exit(1);\n }\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\nprogram\n .command('analyze')\n .description('Analyze application performance')\n .option('--bundle-size', 'Analyze bundle size')\n .option('--render-performance', 'Analyze render performance')\n .action(async (options) => {\n try {\n await analyze(options);\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n\nprogram.parse();\n","/**\n * ObjectUI\n * Copyright (c) 2024-present ObjectStack Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { createServer } from 'vite';\nimport react from '@vitejs/plugin-react';\nimport { existsSync, mkdirSync, unlinkSync, statSync } from 'fs';\nimport { join, resolve, dirname } from 'path';\nimport chalk from 'chalk';\nimport { execSync } from 'child_process';\nimport { createRequire } from 'module';\nimport { scanPagesDirectory, createTempAppWithRouting, createTempApp, parseSchemaFile, type RouteInfo } from '../utils/app-generator.js';\n\ninterface DevOptions {\n port: string;\n host: string;\n open?: boolean;\n}\n\nexport async function dev(schemaPath: string, options: DevOptions) {\n const cwd = process.cwd();\n \n // Resolve the actual project root and schema file\n let _projectRoot = cwd;\n const targetSchemaPath = schemaPath;\n let hasPagesDir = false;\n let pagesDir = '';\n let appConfig: unknown = null;\n\n // 1. Determine Project Root & Mode\n const absoluteSchemaPath = resolve(cwd, schemaPath);\n \n if (existsSync(absoluteSchemaPath) && statSync(absoluteSchemaPath).isFile()) {\n // If input is a file (e.g. examples/showcase/app.json)\n const fileDir = dirname(absoluteSchemaPath);\n const potentialPagesDir = join(fileDir, 'pages');\n\n if (existsSync(potentialPagesDir)) {\n console.log(chalk.blue(`๐Ÿ“‚ Detected project structure at ${fileDir}`));\n _projectRoot = fileDir;\n hasPagesDir = true;\n pagesDir = potentialPagesDir;\n \n // Try to load app.json as config\n try {\n appConfig = parseSchemaFile(absoluteSchemaPath);\n console.log(chalk.blue('โš™๏ธ Loaded App Config from app.json'));\n } catch (_e) {\n console.warn('Failed to parse app config');\n }\n }\n } \n \n // Fallback: Check detect pages dir in current cwd if not found above\n if (!hasPagesDir) {\n const localPagesDir = join(cwd, 'pages');\n if (existsSync(localPagesDir)) {\n hasPagesDir = true;\n pagesDir = localPagesDir;\n // Try to find app.json in cwd\n // TODO: Load app.json if exists\n }\n }\n\n const require = createRequire(join(cwd, 'package.json'));\n \n let routes: RouteInfo[] = [];\n let schema: unknown = null;\n let useFileSystemRouting = false;\n\n if (hasPagesDir) {\n // File-system based routing\n console.log(chalk.blue(`๐Ÿ“ Using file-system routing from ${pagesDir}`));\n routes = scanPagesDirectory(pagesDir);\n useFileSystemRouting = true;\n \n if (routes.length === 0) {\n throw new Error(`No schema files found in ${pagesDir}`);\n }\n \n console.log(chalk.green(`โœ“ Found ${routes.length} route(s)`));\n routes.forEach(route => {\n console.log(chalk.dim(` ${route.path} โ†’ ${route.filePath.replace(cwd, '.')}`));\n });\n } else {\n // Single schema file mode\n const fullSchemaPath = resolve(cwd, schemaPath);\n // ... (rest of the logic)\n if (!existsSync(fullSchemaPath)) {\n throw new Error(`Schema file not found: ${schemaPath}\\nRun 'objectui init' to create a sample schema.`);\n }\n console.log(chalk.blue('๐Ÿ“‹ Loading schema:'), chalk.cyan(schemaPath));\n try {\n schema = parseSchemaFile(fullSchemaPath);\n } catch (error) {\n throw new Error(`Invalid schema file: ${error instanceof Error ? error.message : error}`);\n }\n }\n\n // Create temporary app directory (always in cwd to keep node_modules access)\n const tmpDir = join(cwd, '.objectui-tmp');\n mkdirSync(tmpDir, { recursive: true });\n\n // Create temporary app files\n if (useFileSystemRouting) {\n createTempAppWithRouting(tmpDir, routes, appConfig);\n } else {\n createTempApp(tmpDir, schema);\n }\n\n\n // Install dependencies\n const isMonorepo = existsSync(join(cwd, 'pnpm-workspace.yaml'));\n \n if (isMonorepo) {\n console.log(chalk.blue('๐Ÿ“ฆ Detected monorepo - using root node_modules'));\n } else {\n console.log(chalk.blue('๐Ÿ“ฆ Installing dependencies...'));\n console.log(chalk.dim(' This may take a moment on first run...'));\n try {\n execSync('npm install --silent --prefer-offline', { \n cwd: tmpDir, \n stdio: 'inherit',\n });\n console.log(chalk.green('โœ“ Dependencies installed'));\n } catch {\n throw new Error('Failed to install dependencies. Please check your internet connection and try again.');\n }\n }\n\n console.log(chalk.green('โœ“ Schema loaded successfully'));\n console.log(chalk.blue('๐Ÿš€ Starting development server...\\n'));\n\n // Create Vite config\n const viteConfig: any = {\n root: tmpDir,\n server: {\n port: parseInt(options.port),\n host: options.host,\n open: options.open !== false,\n fs: {\n // Allow serving files from workspace root\n allow: [cwd],\n }\n },\n resolve: {\n alias: {}\n },\n plugins: [react()],\n };\n\n if (isMonorepo) {\n console.log(chalk.blue('๐Ÿ“ฆ Detected monorepo - configuring workspace aliases'));\n \n // Remove postcss.config.js to prevent interference with programmatic config\n const postcssPath = join(tmpDir, 'postcss.config.js');\n if (existsSync(postcssPath)) {\n unlinkSync(postcssPath);\n }\n\n // Add aliases for workspace packages\n viteConfig.resolve.alias = {\n '@object-ui/react': join(cwd, 'packages/react/src/index.ts'),\n '@object-ui/components': join(cwd, 'packages/components/src/index.ts'),\n '@object-ui/core': join(cwd, 'packages/core/src/index.ts'),\n '@object-ui/types': join(cwd, 'packages/types/src/index.ts'),\n '@object-ui/plugin-charts': join(cwd, 'packages/plugin-charts/src/index.tsx'),\n '@object-ui/plugin-editor': join(cwd, 'packages/plugin-editor/src/index.tsx'),\n '@object-ui/plugin-kanban': join(cwd, 'packages/plugin-kanban/src/index.tsx'),\n '@object-ui/plugin-markdown': join(cwd, 'packages/plugin-markdown/src/index.tsx'),\n '@object-ui/plugin-form': join(cwd, 'packages/plugin-form/src/index.tsx'),\n '@object-ui/plugin-grid': join(cwd, 'packages/plugin-grid/src/index.tsx'),\n '@object-ui/plugin-view': join(cwd, 'packages/plugin-view/src/index.tsx'),\n };\n\n // Fix: Resolve lucide-react from components package to avoid \"dependency not found\" in temp app\n try {\n // Trying to find lucide-react in the components' node_modules or hoist\n // checking specifically in packages/components context\n const lucidePath = require.resolve('lucide-react', { paths: [join(cwd, 'packages/components')] });\n // We might get the cjs entry, but for aliasing usually fine. \n // Better yet, if we can find the package root, but require.resolve gives file.\n // Let's just use what require.resolve gives.\n // @ts-expect-error - lucidePath is dynamically resolved\n viteConfig.resolve.alias['lucide-react'] = lucidePath;\n } catch (e) {\n console.warn('โš ๏ธ Could not resolve lucide-react automatically:', e);\n }\n \n // Debug aliases\n // console.log('Aliases:', viteConfig.resolve.alias);\n\n // Configure PostCSS programmatically reusing root dependencies\n try {\n const tailwindcss = require('tailwindcss');\n const autoprefixer = require('autoprefixer');\n \n viteConfig.css = {\n postcss: {\n plugins: [\n tailwindcss(join(tmpDir, 'tailwind.config.js')),\n autoprefixer(),\n ],\n },\n };\n } catch (_e) {\n console.warn(chalk.yellow('โš ๏ธ Failed to load PostCSS plugins from root node_modules. Styles might not work correctly.'));\n }\n }\n\n // Create Vite server\n const server = await createServer(viteConfig);\n\n await server.listen();\n\n const { port, host } = server.config.server;\n const protocol = server.config.server.https ? 'https' : 'http';\n const displayHost = host === '0.0.0.0' ? 'localhost' : host;\n\n console.log();\n console.log(chalk.green('โœ“ Development server started successfully!'));\n console.log();\n console.log(chalk.bold(' Local: ') + chalk.cyan(`${protocol}://${displayHost}:${port}`));\n console.log();\n console.log(chalk.dim(' Press Ctrl+C to stop the server'));\n console.log();\n}\n","/**\n * ObjectUI\n * Copyright (c) 2024-present ObjectStack Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { build as viteBuild } from 'vite';\nimport react from '@vitejs/plugin-react';\nimport { existsSync, mkdirSync, cpSync, rmSync } from 'fs';\nimport { join, resolve } from 'path';\nimport chalk from 'chalk';\nimport { execSync } from 'child_process';\nimport { scanPagesDirectory, createTempAppWithRouting, createTempApp, parseSchemaFile, type RouteInfo } from '../utils/app-generator.js';\n\ninterface BuildOptions {\n outDir?: string;\n clean?: boolean;\n}\n\nexport async function buildApp(schemaPath: string, options: BuildOptions) {\n const cwd = process.cwd();\n const outDir = options.outDir || 'dist';\n const outputPath = resolve(cwd, outDir);\n \n console.log(chalk.blue('๐Ÿ”จ Building application for production...'));\n console.log();\n \n // Check if pages directory exists for file-system routing\n const pagesDir = join(cwd, 'pages');\n const hasPagesDir = existsSync(pagesDir);\n \n let routes: RouteInfo[] = [];\n let schema: unknown = null;\n let useFileSystemRouting = false;\n\n if (hasPagesDir) {\n // File-system based routing\n console.log(chalk.blue('๐Ÿ“ Using file-system routing'));\n routes = scanPagesDirectory(pagesDir);\n useFileSystemRouting = true;\n \n if (routes.length === 0) {\n throw new Error('No schema files found in pages/ directory');\n }\n \n console.log(chalk.green(`โœ“ Found ${routes.length} route(s)`));\n } else {\n // Single schema file mode\n const fullSchemaPath = resolve(cwd, schemaPath);\n\n // Check if schema file exists\n if (!existsSync(fullSchemaPath)) {\n throw new Error(`Schema file not found: ${schemaPath}\\nRun 'objectui init' to create a sample schema.`);\n }\n\n console.log(chalk.blue('๐Ÿ“‹ Loading schema:'), chalk.cyan(schemaPath));\n\n // Read and validate schema\n try {\n schema = parseSchemaFile(fullSchemaPath);\n } catch (error) {\n throw new Error(`Invalid schema file: ${error instanceof Error ? error.message : error}`);\n }\n }\n\n // Create temporary app directory\n const tmpDir = join(cwd, '.objectui-tmp');\n mkdirSync(tmpDir, { recursive: true });\n\n // Create temporary app files\n if (useFileSystemRouting) {\n createTempAppWithRouting(tmpDir, routes);\n } else {\n createTempApp(tmpDir, schema);\n }\n\n // Install dependencies\n console.log(chalk.blue('๐Ÿ“ฆ Installing dependencies...'));\n try {\n execSync('npm install --silent --prefer-offline', { \n cwd: tmpDir, \n stdio: 'pipe',\n });\n console.log(chalk.green('โœ“ Dependencies installed'));\n } catch {\n throw new Error('Failed to install dependencies. Please check your internet connection and try again.');\n }\n\n console.log(chalk.blue('โš™๏ธ Building with Vite...'));\n console.log();\n\n // Clean output directory if requested\n if (options.clean && existsSync(outputPath)) {\n console.log(chalk.dim(` Cleaning ${outDir}/ directory...`));\n rmSync(outputPath, { recursive: true, force: true });\n }\n\n // Build with Vite\n try {\n await viteBuild({\n root: tmpDir,\n build: {\n outDir: join(tmpDir, 'dist'),\n emptyOutDir: true,\n reportCompressedSize: true,\n },\n plugins: [react()],\n logLevel: 'info',\n });\n\n // Copy built files to output directory\n mkdirSync(outputPath, { recursive: true });\n cpSync(join(tmpDir, 'dist'), outputPath, { recursive: true });\n\n console.log();\n console.log(chalk.green('โœ“ Build completed successfully!'));\n console.log();\n console.log(chalk.bold(' Output: ') + chalk.cyan(outDir + '/'));\n console.log();\n console.log(chalk.dim(' To serve the production build, run:'));\n console.log(chalk.cyan(` objectui start --dir ${outDir}`));\n console.log();\n } catch (error) {\n throw new Error(`Build failed: ${error instanceof Error ? error.message : error}`);\n }\n}\n","/**\n * ObjectUI\n * Copyright (c) 2024-present ObjectStack Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport express from 'express';\nimport rateLimit from 'express-rate-limit';\nimport { existsSync } from 'fs';\nimport { join, resolve } from 'path';\nimport chalk from 'chalk';\n\ninterface StartOptions {\n port: string;\n host: string;\n dir?: string;\n}\n\nexport async function start(options: StartOptions) {\n const cwd = process.cwd();\n const distDir = options.dir || 'dist';\n const distPath = resolve(cwd, distDir);\n\n // Check if dist directory exists\n if (!existsSync(distPath)) {\n throw new Error(\n `Build directory not found: ${distDir}\\n` +\n `Run 'objectui build' first to create a production build.`\n );\n }\n\n // Check if index.html exists\n const indexPath = join(distPath, 'index.html');\n if (!existsSync(indexPath)) {\n throw new Error(\n `index.html not found in ${distDir}/\\n` +\n `Make sure you have a valid production build.`\n );\n }\n\n console.log(chalk.blue('๐Ÿš€ Starting production server...\\n'));\n\n const app = express();\n const port = parseInt(options.port);\n const host = options.host;\n\n // Configure rate limiting to prevent abuse\n const limiter = rateLimit({\n windowMs: 15 * 60 * 1000, // 15 minutes\n max: 1000, // Limit each IP to 1000 requests per windowMs\n message: 'Too many requests from this IP, please try again later.',\n standardHeaders: true, // Return rate limit info in the `RateLimit-*` headers\n legacyHeaders: false, // Disable the `X-RateLimit-*` headers\n });\n\n // Apply rate limiting to all routes\n app.use(limiter);\n\n // Serve static files from dist directory\n app.use(express.static(distPath));\n\n // SPA fallback - serve index.html for all routes\n app.get('*', (req, res) => {\n res.sendFile(indexPath);\n });\n\n // Start server\n app.listen(port, host, () => {\n const protocol = 'http';\n const displayHost = host === '0.0.0.0' ? 'localhost' : host;\n\n console.log(chalk.green('โœ“ Production server started successfully!'));\n console.log();\n console.log(chalk.bold(' Local: ') + chalk.cyan(`${protocol}://${displayHost}:${port}`));\n console.log(chalk.bold(' Serving: ') + chalk.dim(distDir + '/'));\n console.log();\n console.log(chalk.dim(' Press Ctrl+C to stop the server'));\n console.log();\n });\n}\n","/**\n * ObjectUI\n * Copyright (c) 2024-present ObjectStack Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { execSync } from 'child_process';\nimport { existsSync } from 'fs';\nimport { join } from 'path';\nimport chalk from 'chalk';\n\ninterface LintOptions {\n fix?: boolean;\n}\n\nexport async function lint(options: LintOptions) {\n const cwd = process.cwd();\n \n console.log(chalk.blue('๐Ÿ” Running linter...\\n'));\n\n // Check if the generated temp app exists\n const tmpDir = join(cwd, '.objectui-tmp');\n const hasTempApp = existsSync(tmpDir);\n\n if (!hasTempApp) {\n throw new Error(\n 'No Object UI application found. Run \\'objectui dev\\' first to generate the application.'\n );\n }\n\n // Check if package.json and node_modules exist\n const packageJsonPath = join(tmpDir, 'package.json');\n const nodeModulesPath = join(tmpDir, 'node_modules');\n \n if (!existsSync(packageJsonPath) || !existsSync(nodeModulesPath)) {\n throw new Error(\n 'Dependencies not installed. Run \\'objectui dev\\' first to set up the application.'\n );\n }\n\n try {\n const fixFlag = options.fix ? '--fix' : '';\n const command = `npx eslint \"src/**/*.{js,jsx,ts,tsx}\" ${fixFlag}`.trim();\n \n console.log(chalk.dim(` Running: ${command}\\n`));\n \n execSync(command, {\n cwd: tmpDir,\n stdio: 'inherit',\n });\n\n console.log();\n console.log(chalk.green('โœ“ Linting completed successfully!'));\n console.log();\n } catch {\n // ESLint returns non-zero exit code when there are linting errors\n console.log();\n console.log(chalk.yellow('โš  Linting found issues.'));\n if (!options.fix) {\n console.log(chalk.dim(' Run \\'objectui lint --fix\\' to automatically fix some issues.'));\n }\n console.log();\n process.exit(1);\n }\n}\n","/**\n * ObjectUI\n * Copyright (c) 2024-present ObjectStack Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { execSync } from 'child_process';\nimport { existsSync } from 'fs';\nimport { join } from 'path';\nimport chalk from 'chalk';\n\ninterface TestOptions {\n watch?: boolean;\n coverage?: boolean;\n ui?: boolean;\n}\n\nexport async function test(options: TestOptions) {\n const cwd = process.cwd();\n \n console.log(chalk.blue('๐Ÿงช Running tests...\\n'));\n\n // Check if the generated temp app exists\n const tmpDir = join(cwd, '.objectui-tmp');\n const hasTempApp = existsSync(tmpDir);\n\n if (!hasTempApp) {\n throw new Error(\n 'No Object UI application found. Run \\'objectui dev\\' first to generate the application.'\n );\n }\n\n // Check if package.json and node_modules exist\n const packageJsonPath = join(tmpDir, 'package.json');\n const nodeModulesPath = join(tmpDir, 'node_modules');\n \n if (!existsSync(packageJsonPath) || !existsSync(nodeModulesPath)) {\n throw new Error(\n 'Dependencies not installed. Run \\'objectui dev\\' first to set up the application.'\n );\n }\n\n try {\n let command = 'npx vitest';\n \n if (options.watch) {\n command += ' --watch';\n } else if (options.ui) {\n command += ' --ui';\n } else {\n command += ' run';\n }\n\n if (options.coverage) {\n command += ' --coverage';\n }\n\n console.log(chalk.dim(` Running: ${command}\\n`));\n \n execSync(command, {\n cwd: tmpDir,\n stdio: 'inherit',\n });\n\n if (!options.watch && !options.ui) {\n console.log();\n console.log(chalk.green('โœ“ Tests completed successfully!'));\n console.log();\n }\n } catch {\n // Vitest returns non-zero exit code when tests fail\n console.log();\n console.log(chalk.red('โœ— Some tests failed.'));\n console.log();\n process.exit(1);\n }\n}\n","/**\n * ObjectUI\n * Copyright (c) 2024-present ObjectStack Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport chalk from 'chalk';\nimport { existsSync, mkdirSync, writeFileSync } from 'fs';\nimport { join } from 'path';\n\nexport async function generate(type: string, name: string) {\n const cwd = process.cwd();\n\n switch (type) {\n case 'resource':\n case 'object':\n generateResource(cwd, name);\n break;\n case 'page':\n generatePage(cwd, name);\n break;\n case 'plugin':\n generatePlugin(cwd, name);\n break;\n default:\n console.log(chalk.red(`Unknown type: ${type}`));\n console.log(`Available types: resource, page, plugin`);\n process.exit(1);\n }\n}\n\nfunction generateResource(cwd: string, name: string) {\n const dir = join(cwd, 'objects');\n if (!existsSync(dir)) mkdirSync(dir, { recursive: true });\n\n const fileName = `${name.toLowerCase()}.json`;\n const filePath = join(dir, fileName);\n\n if (existsSync(filePath)) {\n console.log(chalk.yellow(`Object ${name} already exists at ${filePath}`));\n return;\n }\n\n const content = {\n name: name,\n fields: {\n name: { type: 'text', label: 'Name', required: true }\n }\n };\n\n writeFileSync(filePath, JSON.stringify(content, null, 2));\n console.log(chalk.green(`โœ“ Generated resource schema: ${filePath}`));\n}\n\nfunction generatePage(cwd: string, name: string) {\n const dir = join(cwd, 'pages');\n if (!existsSync(dir)) mkdirSync(dir, { recursive: true });\n\n const fileName = `${name.toLowerCase()}.json`;\n const filePath = join(dir, fileName);\n\n if (existsSync(filePath)) {\n console.log(chalk.yellow(`Page ${name} already exists at ${filePath}`));\n return;\n }\n\n const content = {\n type: \"page\",\n title: name,\n body: [\n {\n type: \"markdown\",\n content: `# Welcome to ${name}`\n }\n ]\n };\n\n writeFileSync(filePath, JSON.stringify(content, null, 2));\n console.log(chalk.green(`โœ“ Generated page schema: ${filePath}`));\n}\n\nfunction generatePlugin(cwd: string, name: string) {\n const dir = join(cwd, 'plugins', name);\n if (existsSync(dir)) {\n console.log(chalk.yellow(`Plugin ${name} already exists`));\n return;\n }\n mkdirSync(dir, { recursive: true });\n\n const content = `\nexport const ${name}Plugin = {\n name: '${name}',\n install(app) {\n console.log('${name} plugin installed');\n }\n};\n`;\n\n writeFileSync(join(dir, 'index.ts'), content.trim());\n console.log(chalk.green(`โœ“ Generated plugin: ${dir}`));\n}\n","/**\n * ObjectUI\n * Copyright (c) 2024-present ObjectStack Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport chalk from 'chalk';\nimport { existsSync, readFileSync } from 'fs';\nimport { join } from 'path';\n\nexport async function doctor() {\n console.log(chalk.bold('Object UI Doctor'));\n console.log('Diagnosis in progress...\\n');\n \n const cwd = process.cwd();\n let issues = 0;\n\n // 1. Check package.json\n const pkgPath = join(cwd, 'package.json');\n if (existsSync(pkgPath)) {\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));\n \n // Check React version\n const reactVer = pkg.dependencies?.react || pkg.devDependencies?.react;\n if (reactVer) {\n console.log(chalk.green('โœ“ React installed'));\n } else {\n console.log(chalk.yellow('โš ๏ธ React not found in dependencies'));\n issues++;\n }\n\n // Check Tailwind\n const tailwindVer = pkg.dependencies?.tailwindcss || pkg.devDependencies?.tailwindcss;\n if (tailwindVer) {\n console.log(chalk.green('โœ“ Tailwind CSS installed'));\n } else {\n console.log(chalk.yellow('โš ๏ธ Tailwind CSS not found'));\n issues++;\n }\n } catch (e) {\n console.log(chalk.red('x Failed to read package.json'));\n issues++;\n }\n } else {\n console.log(chalk.red('x package.json not found'));\n issues++;\n }\n\n // 2. Check tailwind.config.js\n const tailwindConfigPath = join(cwd, 'tailwind.config.js');\n if (existsSync(tailwindConfigPath)) {\n console.log(chalk.green('โœ“ tailwind.config.js found'));\n // TODO: Check content configuration\n } else {\n console.log(chalk.yellow('โš ๏ธ tailwind.config.js not found'));\n issues++;\n }\n\n // Summary\n console.log('\\nResult:');\n if (issues === 0) {\n console.log(chalk.green('Everything looks good! โœจ'));\n } else {\n console.log(chalk.yellow(`Found ${issues} issue(s).`));\n }\n}\n","/**\n * ObjectUI\n * Copyright (c) 2024-present ObjectStack Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport chalk from 'chalk';\nimport { existsSync, mkdirSync, writeFileSync } from 'fs';\nimport { join } from 'path';\n\nexport async function add(component: string) {\n console.log(chalk.bold(`Object UI Add: ${component}`));\n console.log(chalk.yellow('Feature not implemented yet.'));\n console.log(`This command will download the source code for ${component}Renderer to your project.`);\n}\n","/**\n * ObjectUI\n * Copyright (c) 2024-present ObjectStack Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport chalk from 'chalk';\nimport { spawn } from 'child_process';\nimport { existsSync } from 'fs';\nimport { join, resolve, dirname } from 'path';\nimport { fileURLToPath } from 'url';\n\nexport async function studio() {\n console.log(chalk.bold('\\n๐ŸŽจ Starting ObjectUI Studio...\\n'));\n\n const cwd = process.cwd();\n const __filename = fileURLToPath(import.meta.url);\n const __dirname = dirname(__filename);\n\n // Resolve the console app directory\n // 1. Check monorepo structure (apps/console)\n // 2. Check relative path (../../apps/console from packages/cli)\n const candidates = [\n join(cwd, 'apps/console'),\n resolve(__dirname, '../../apps/console'),\n resolve(__dirname, '../../../apps/console'),\n ];\n\n let consolePath: string | null = null;\n for (const candidate of candidates) {\n if (existsSync(join(candidate, 'package.json'))) {\n consolePath = candidate;\n break;\n }\n }\n\n if (!consolePath) {\n console.log(chalk.yellow('โš  Console app not found in workspace.'));\n console.log(chalk.dim(' Hint: Run this command from the monorepo root.'));\n console.log(chalk.dim(' Expected: apps/console/package.json\\n'));\n process.exit(1);\n }\n\n console.log(chalk.dim(` Console: ${consolePath}`));\n console.log(chalk.dim(' Mode: MSW (in-browser mock server)\\n'));\n\n // Delegate to the console's dev script which starts Vite + MSW\n const child = spawn('pnpm', ['run', 'dev'], {\n cwd: consolePath,\n stdio: 'inherit',\n env: { ...process.env, NODE_ENV: 'development' },\n shell: true,\n });\n\n child.on('error', (err) => {\n console.error(chalk.red(`\\n โœ— Failed to start studio: ${err.message}`));\n process.exit(1);\n });\n\n child.on('exit', (code) => process.exit(code ?? 0));\n}\n","/**\n * ObjectUI\n * Copyright (c) 2024-present ObjectStack Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport chalk from 'chalk';\nimport { globSync } from 'glob';\nimport { readFileSync } from 'fs';\nimport { join } from 'path';\n\nexport async function check() {\n console.log(chalk.bold('Object UI Schema Check'));\n const cwd = process.cwd();\n \n // 1. Find all JSON/YAML files\n const files = globSync('**/*.{json,yaml,yml}', { \n cwd, \n ignore: ['node_modules/**', 'dist/**', '.git/**'] \n });\n \n console.log(`Analyzing ${files.length} files...`);\n \n let errors = 0;\n \n for (const file of files) {\n try {\n // Basic JSON parsing check\n if (file.endsWith('.json')) {\n JSON.parse(readFileSync(join(cwd, file), 'utf-8'));\n }\n // TODO: Schema validation logic\n } catch (e) {\n console.log(chalk.red(`x Invalid JSON in ${file}: ${(e as Error).message}`));\n errors++;\n }\n }\n \n if (errors === 0) {\n console.log(chalk.green('โœ“ All checks passed'));\n } else {\n console.log(chalk.red(`Found ${errors} errors`));\n process.exit(1);\n }\n}\n","/**\n * ObjectUI\n * Copyright (c) 2024-present ObjectStack Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport chalk from 'chalk';\nimport { readFileSync, existsSync } from 'fs';\nimport { resolve } from 'path';\nimport { load as loadYaml } from 'js-yaml';\nimport { safeValidateSchema } from '@object-ui/types/zod';\n\n/**\n * Validate a schema file\n * \n * @param schemaPath - Path to the schema file (JSON or YAML)\n */\nexport async function validate(schemaPath: string) {\n console.log(chalk.blue('๐Ÿ” ObjectUI Schema Validator\\n'));\n\n // Resolve the schema path\n const resolvedPath = resolve(process.cwd(), schemaPath);\n\n // Check if file exists\n if (!existsSync(resolvedPath)) {\n console.error(chalk.red(`โœ— Error: Schema file not found: ${schemaPath}`));\n process.exit(1);\n }\n\n try {\n // Read the file\n const fileContent = readFileSync(resolvedPath, 'utf-8');\n let schema: unknown;\n\n // Parse based on file extension\n if (schemaPath.endsWith('.yaml') || schemaPath.endsWith('.yml')) {\n console.log(chalk.gray(`Reading YAML schema from: ${schemaPath}`));\n schema = loadYaml(fileContent);\n } else if (schemaPath.endsWith('.json')) {\n console.log(chalk.gray(`Reading JSON schema from: ${schemaPath}`));\n schema = JSON.parse(fileContent);\n } else {\n // Try JSON first, then YAML\n try {\n schema = JSON.parse(fileContent);\n console.log(chalk.gray(`Reading schema from: ${schemaPath} (detected as JSON)`));\n } catch {\n schema = loadYaml(fileContent);\n console.log(chalk.gray(`Reading schema from: ${schemaPath} (detected as YAML)`));\n }\n }\n\n // Validate the schema\n console.log(chalk.gray('Validating schema...\\n'));\n const result = safeValidateSchema(schema);\n\n if (result.success) {\n console.log(chalk.green('โœ“ Schema is valid!\\n'));\n \n // Show some info about the schema\n const data = result.data;\n console.log(chalk.bold('Schema Information:'));\n console.log(chalk.gray(' Type:'), data.type || 'unknown');\n \n if (data.id) {\n console.log(chalk.gray(' ID:'), data.id);\n }\n \n if (data.label || data.title) {\n console.log(chalk.gray(' Label:'), data.label || data.title);\n }\n \n // Count children if present\n if (data.children && Array.isArray(data.children)) {\n console.log(chalk.gray(' Children:'), data.children.length);\n }\n \n console.log('');\n process.exit(0);\n } else {\n console.error(chalk.red('โœ— Schema validation failed!\\n'));\n console.error(chalk.bold('Validation Errors:'));\n \n // Format Zod errors nicely\n const errors = result.error.errors;\n errors.forEach((error, index) => {\n console.error(chalk.red(`\\n${index + 1}. ${error.message}`));\n if (error.path && error.path.length > 0) {\n console.error(chalk.gray(` Path: ${error.path.join(' โ†’ ')}`));\n }\n if (error.code) {\n console.error(chalk.gray(` Code: ${error.code}`));\n }\n });\n \n console.error('');\n process.exit(1);\n }\n } catch (error) {\n console.error(chalk.red('\\nโœ— Error reading or parsing schema file:'));\n console.error(chalk.red((error as Error).message));\n console.error('');\n process.exit(1);\n }\n}\n","/**\n * ObjectUI\n * Copyright (c) 2024-present ObjectStack Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport chalk from 'chalk';\nimport { spawn } from 'child_process';\nimport { resolve, dirname } from 'path';\nimport { fileURLToPath } from 'url';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\n/**\n * Create a new plugin using the @object-ui/create-plugin package\n * \n * @param pluginName - Name of the plugin to create\n */\nexport async function createPlugin(pluginName: string) {\n console.log(chalk.blue('๐Ÿš€ Creating ObjectUI plugin...\\n'));\n\n // Resolve the create-plugin script path\n const createPluginScript = resolve(\n __dirname,\n '../../../create-plugin/dist/index.js'\n );\n\n return new Promise<void>((resolve, reject) => {\n // Spawn the create-plugin command\n const child = spawn('node', [createPluginScript, pluginName], {\n stdio: 'inherit',\n shell: true,\n });\n\n child.on('error', (error) => {\n console.error(chalk.red('Failed to create plugin:'), error);\n reject(error);\n });\n\n child.on('exit', (code) => {\n if (code === 0) {\n resolve();\n } else {\n reject(new Error(`create-plugin exited with code ${code}`));\n }\n });\n });\n}\n","/**\n * ObjectUI\n * Copyright (c) 2024-present ObjectStack Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport chalk from 'chalk';\nimport { existsSync, statSync, readdirSync } from 'fs';\nimport { resolve, join, extname } from 'path';\n\ninterface AnalyzeOptions {\n bundleSize?: boolean;\n renderPerformance?: boolean;\n}\n\n/**\n * Analyze bundle size by scanning dist directory\n */\nasync function analyzeBundleSize() {\n console.log(chalk.bold('\\n๐Ÿ“ฆ Bundle Size Analysis\\n'));\n\n const distDir = resolve(process.cwd(), 'dist');\n \n if (!existsSync(distDir)) {\n console.log(chalk.yellow('โš  No dist directory found. Run build first.'));\n return;\n }\n\n const files: Array<{ path: string; size: number }> = [];\n \n function scanDirectory(dir: string) {\n const items = readdirSync(dir);\n \n for (const item of items) {\n const fullPath = join(dir, item);\n const stat = statSync(fullPath);\n \n if (stat.isDirectory()) {\n scanDirectory(fullPath);\n } else {\n files.push({\n path: fullPath.replace(distDir + '/', ''),\n size: stat.size,\n });\n }\n }\n }\n \n scanDirectory(distDir);\n \n // Sort by size (largest first)\n files.sort((a, b) => b.size - a.size);\n \n // Calculate totals\n const totalSize = files.reduce((sum, file) => sum + file.size, 0);\n const jsFiles = files.filter(f => extname(f.path) === '.js');\n const cssFiles = files.filter(f => extname(f.path) === '.css');\n \n const jsSize = jsFiles.reduce((sum, file) => sum + file.size, 0);\n const cssSize = cssFiles.reduce((sum, file) => sum + file.size, 0);\n \n console.log(chalk.bold('Summary:'));\n console.log(chalk.gray(' Total Size:'), formatBytes(totalSize));\n console.log(chalk.gray(' JavaScript:'), formatBytes(jsSize), chalk.dim(`(${jsFiles.length} files)`));\n console.log(chalk.gray(' CSS: '), formatBytes(cssSize), chalk.dim(`(${cssFiles.length} files)`));\n console.log(chalk.gray(' Other: '), formatBytes(totalSize - jsSize - cssSize));\n \n console.log(chalk.bold('\\nLargest Files:'));\n files.slice(0, 10).forEach((file) => {\n const sizeStr = formatBytes(file.size).padStart(10);\n console.log(chalk.gray(` ${sizeStr}`), file.path);\n });\n \n // Bundle size recommendations\n console.log(chalk.bold('\\n๐Ÿ’ก Recommendations:'));\n \n if (totalSize > 1024 * 1024) {\n console.log(chalk.yellow(' โš  Total bundle size is large (> 1MB)'));\n console.log(chalk.gray(' Consider code splitting or lazy loading'));\n }\n \n if (jsSize > 500 * 1024) {\n console.log(chalk.yellow(' โš  JavaScript bundle is large (> 500KB)'));\n console.log(chalk.gray(' Consider:'));\n console.log(chalk.gray(' - Tree shaking unused code'));\n console.log(chalk.gray(' - Lazy loading components'));\n console.log(chalk.gray(' - Using dynamic imports'));\n }\n \n if (files.length > 100) {\n console.log(chalk.yellow(` โš  Large number of files (${files.length})`));\n console.log(chalk.gray(' Consider bundling or combining files'));\n }\n \n console.log('');\n}\n\n/**\n * Analyze render performance (placeholder for now)\n */\nasync function analyzeRenderPerformance() {\n console.log(chalk.bold('\\nโšก Render Performance Analysis\\n'));\n \n console.log(chalk.gray('Performance analysis features:'));\n console.log(chalk.gray(' โœ“ Expression caching enabled'));\n console.log(chalk.gray(' โœ“ Component memoization available'));\n console.log(chalk.gray(' โœ“ Virtual scrolling support for large lists'));\n \n console.log(chalk.bold('\\n๐Ÿ’ก Performance Tips:'));\n console.log(chalk.gray(' โ€ข Use virtual scrolling for lists > 100 items'));\n console.log(chalk.gray(' โ€ข Cache frequently evaluated expressions'));\n console.log(chalk.gray(' โ€ข Use React.memo for expensive components'));\n console.log(chalk.gray(' โ€ข Implement pagination for large datasets'));\n console.log(chalk.gray(' โ€ข Use code splitting for large apps'));\n \n console.log('');\n}\n\n/**\n * Format bytes to human-readable string\n */\nfunction formatBytes(bytes: number): string {\n if (bytes === 0) return '0 B';\n \n const k = 1024;\n const sizes = ['B', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n \n return `${(bytes / Math.pow(k, i)).toFixed(2)} ${sizes[i]}`;\n}\n\n/**\n * Analyze application performance\n * \n * @param options - Analysis options\n */\nexport async function analyze(options: AnalyzeOptions = {}) {\n console.log(chalk.blue('๐Ÿ” ObjectUI Performance Analyzer\\n'));\n\n const runAll = !options.bundleSize && !options.renderPerformance;\n \n if (options.bundleSize || runAll) {\n await analyzeBundleSize();\n }\n \n if (options.renderPerformance || runAll) {\n await analyzeRenderPerformance();\n }\n \n console.log(chalk.green('โœ“ Analysis complete!\\n'));\n}\n"],"mappings":"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","names":["chalk","require","react","existsSync","mkdirSync","join","resolve","chalk","execSync","resolve","chalk","join","existsSync","mkdirSync","execSync","react","existsSync","join","resolve","chalk","execSync","existsSync","join","chalk","execSync","existsSync","join","chalk","chalk","existsSync","mkdirSync","join","chalk","existsSync","join","chalk","chalk","existsSync","join","resolve","dirname","__filename","__dirname","chalk","readFileSync","join","chalk","readFileSync","existsSync","resolve","chalk","spawn","resolve","dirname","fileURLToPath","chalk","existsSync","statSync","resolve","join","readFileSync","fileURLToPath","dirname","join","__filename","__dirname","chalk"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@object-ui/cli",
3
- "version": "0.5.0",
3
+ "version": "2.0.0",
4
4
  "description": "CLI tool for Object UI - Build applications from JSON schemas",
5
5
  "type": "module",
6
6
  "homepage": "https://www.objectui.org",
@@ -41,17 +41,17 @@
41
41
  "commander": "^14.0.3",
42
42
  "express": "^4.21.2",
43
43
  "express-rate-limit": "^8.2.1",
44
- "glob": "^13.0.0",
44
+ "glob": "^13.0.1",
45
45
  "js-yaml": "^4.1.0",
46
46
  "vite": "^7.3.1",
47
- "@object-ui/components": "0.5.0",
48
- "@object-ui/react": "0.5.0",
49
- "@object-ui/types": "0.5.0"
47
+ "@object-ui/components": "2.0.0",
48
+ "@object-ui/react": "2.0.0",
49
+ "@object-ui/types": "2.0.0"
50
50
  },
51
51
  "devDependencies": {
52
52
  "@types/express": "^4.17.21",
53
53
  "@types/js-yaml": "^4.0.9",
54
- "@types/node": "^25.0.10",
54
+ "@types/node": "^25.2.2",
55
55
  "tsup": "^8.0.0",
56
56
  "typescript": "^5.9.3"
57
57
  },