wexts 2.0.5 → 2.0.6

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/index.js CHANGED
@@ -58,16 +58,7 @@ program.action(async () => {
58
58
  ]
59
59
  }
60
60
  ]);
61
- _chunkQP2TMRLGjs.logger.info(pc.cyan(`
62
- \u{1F680} Creating ${pc.bold(projectName)}...`));
63
- _chunkQP2TMRLGjs.logger.info(`Template: ${template}
64
- `);
65
- _chunkQP2TMRLGjs.logger.warn("\u26A0\uFE0F Project scaffolding not yet implemented");
66
- _chunkQP2TMRLGjs.logger.info("\n\u{1F4C1} Will create:");
67
- _chunkQP2TMRLGjs.logger.info(" \u2022 apps/api/ (NestJS 11)");
68
- _chunkQP2TMRLGjs.logger.info(" \u2022 apps/web/ (Next.js 16)");
69
- _chunkQP2TMRLGjs.logger.info(" \u2022 packages/types/");
70
- _chunkQP2TMRLGjs.logger.info(" \u2022 packages/api-client/\n");
61
+ await createProject(projectName, template);
71
62
  } else if (action === "dev") {
72
63
  _chunkQP2TMRLGjs.logger.info(pc.green("\u{1F680} Starting development servers...\n"));
73
64
  _chunkQP2TMRLGjs.logger.warn("Dev server not yet implemented");
@@ -98,14 +89,7 @@ program.action(async () => {
98
89
  }
99
90
  });
100
91
  program.command("create <project-name>").description("Create a new wexts project").option("-t, --template <template>", "Template to use (monorepo|api|web)", "monorepo").action(async (projectName, options) => {
101
- _chunkQP2TMRLGjs.logger.info(pc.cyan(`Creating wexts project: ${pc.bold(projectName)}`));
102
- _chunkQP2TMRLGjs.logger.info(`Template: ${options.template}`);
103
- _chunkQP2TMRLGjs.logger.warn("Project scaffolding not yet implemented");
104
- _chunkQP2TMRLGjs.logger.info("Will create:");
105
- _chunkQP2TMRLGjs.logger.info(" \u2022 apps/api/ (NestJS 11)");
106
- _chunkQP2TMRLGjs.logger.info(" \u2022 apps/web/ (Next.js 16)");
107
- _chunkQP2TMRLGjs.logger.info(" \u2022 packages/types/");
108
- _chunkQP2TMRLGjs.logger.info(" \u2022 packages/api-client/");
92
+ await createProject(projectName, options.template);
109
93
  });
110
94
  program.command("dev").description("Start development servers").option("-a, --api <path>", "Path to API project", "./apps/api").option("-w, --web <path>", "Path to Web project", "./apps/web").option("-p, --port <port>", "Port for web server", "3000").option("--api-port <port>", "Port for API server", "5050").option("--no-proxy", "Disable proxy server").action(async (options) => {
111
95
  _chunkQP2TMRLGjs.logger.info(pc.green("\u{1F680} Starting Wexts development servers...\n"));
@@ -152,5 +136,86 @@ program.command("codegen").description("Generate API client from NestJS controll
152
136
  });
153
137
  }
154
138
  });
139
+ async function createProject(projectName, template) {
140
+ _chunkQP2TMRLGjs.logger.info(pc.cyan(`Creating wexts project: ${pc.bold(projectName)}`));
141
+ _chunkQP2TMRLGjs.logger.info(`Template: ${template}`);
142
+ const fs = await Promise.resolve().then(() => _interopRequireWildcard(require("fs")));
143
+ const path = await Promise.resolve().then(() => _interopRequireWildcard(require("path")));
144
+ const { execSync } = await Promise.resolve().then(() => _interopRequireWildcard(require("child_process")));
145
+ const projectPath = path.join(process.cwd(), projectName);
146
+ if (fs.existsSync(projectPath)) {
147
+ _chunkQP2TMRLGjs.logger.error(`Directory ${projectName} already exists!`);
148
+ process.exit(1);
149
+ }
150
+ fs.mkdirSync(projectPath);
151
+ fs.mkdirSync(path.join(projectPath, "apps"));
152
+ fs.mkdirSync(path.join(projectPath, "packages"));
153
+ const packageJson = {
154
+ name: projectName,
155
+ version: "0.0.0",
156
+ private: true,
157
+ scripts: {
158
+ "build": "turbo run build",
159
+ "dev": "turbo run dev",
160
+ "lint": "turbo run lint",
161
+ "format": 'prettier --write "**/*.{ts,tsx,md}"'
162
+ },
163
+ devDependencies: {
164
+ "turbo": "latest",
165
+ "prettier": "latest",
166
+ "typescript": "^5.9.3"
167
+ },
168
+ packageManager: "pnpm@10.0.0",
169
+ workspaces: [
170
+ "apps/*",
171
+ "packages/*"
172
+ ]
173
+ };
174
+ fs.writeFileSync(
175
+ path.join(projectPath, "package.json"),
176
+ JSON.stringify(packageJson, null, 2)
177
+ );
178
+ const turboJson = {
179
+ "$schema": "https://turbo.build/schema.json",
180
+ "globalDependencies": ["**/.env.*local"],
181
+ "tasks": {
182
+ "build": {
183
+ "dependsOn": ["^build"],
184
+ "outputs": [".next/**", "!.next/cache/**", "dist/**"]
185
+ },
186
+ "lint": {},
187
+ "dev": {
188
+ "cache": false,
189
+ "persistent": true
190
+ }
191
+ }
192
+ };
193
+ fs.writeFileSync(
194
+ path.join(projectPath, "turbo.json"),
195
+ JSON.stringify(turboJson, null, 2)
196
+ );
197
+ _chunkQP2TMRLGjs.logger.success("\u2705 Project structure created");
198
+ _chunkQP2TMRLGjs.logger.info("\u{1F4E6} Installing dependencies...");
199
+ try {
200
+ try {
201
+ execSync("pnpm --version", { stdio: "ignore" });
202
+ } catch (e) {
203
+ _chunkQP2TMRLGjs.logger.info("Installing pnpm...");
204
+ execSync("npm install -g pnpm", { stdio: "ignore" });
205
+ }
206
+ execSync("pnpm install", { cwd: projectPath, stdio: "inherit" });
207
+ _chunkQP2TMRLGjs.logger.success("\u2705 Dependencies installed");
208
+ _chunkQP2TMRLGjs.logger.info(pc.green(`
209
+ \u{1F389} Project ${projectName} created successfully!`));
210
+ _chunkQP2TMRLGjs.logger.info(`
211
+ To get started:
212
+ `);
213
+ _chunkQP2TMRLGjs.logger.info(pc.cyan(` cd ${projectName}`));
214
+ _chunkQP2TMRLGjs.logger.info(pc.cyan(` pnpm dev
215
+ `));
216
+ } catch (error) {
217
+ _chunkQP2TMRLGjs.logger.error("Failed to install dependencies");
218
+ }
219
+ }
155
220
  program.parse();
156
221
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["c:\\Users\\ziad\\Desktop\\wexts\\packages\\dist\\cli\\index.js"],"names":[],"mappings":"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","file":"C:\\Users\\ziad\\Desktop\\wexts\\packages\\dist\\cli\\index.js","sourcesContent":[null]}
1
+ {"version":3,"sources":["c:\\Users\\ziad\\Desktop\\wexts\\packages\\dist\\cli\\index.js"],"names":[],"mappings":"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;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,kBAAA;AACA,IAAA;AACA;AACA;AACA,IAAA;AACA,IAAA;AACA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA;AACA","file":"C:\\Users\\ziad\\Desktop\\wexts\\packages\\dist\\cli\\index.js","sourcesContent":[null]}
@@ -58,16 +58,7 @@ program.action(async () => {
58
58
  ]
59
59
  }
60
60
  ]);
61
- logger.info(pc.cyan(`
62
- \u{1F680} Creating ${pc.bold(projectName)}...`));
63
- logger.info(`Template: ${template}
64
- `);
65
- logger.warn("\u26A0\uFE0F Project scaffolding not yet implemented");
66
- logger.info("\n\u{1F4C1} Will create:");
67
- logger.info(" \u2022 apps/api/ (NestJS 11)");
68
- logger.info(" \u2022 apps/web/ (Next.js 16)");
69
- logger.info(" \u2022 packages/types/");
70
- logger.info(" \u2022 packages/api-client/\n");
61
+ await createProject(projectName, template);
71
62
  } else if (action === "dev") {
72
63
  logger.info(pc.green("\u{1F680} Starting development servers...\n"));
73
64
  logger.warn("Dev server not yet implemented");
@@ -98,14 +89,7 @@ program.action(async () => {
98
89
  }
99
90
  });
100
91
  program.command("create <project-name>").description("Create a new wexts project").option("-t, --template <template>", "Template to use (monorepo|api|web)", "monorepo").action(async (projectName, options) => {
101
- logger.info(pc.cyan(`Creating wexts project: ${pc.bold(projectName)}`));
102
- logger.info(`Template: ${options.template}`);
103
- logger.warn("Project scaffolding not yet implemented");
104
- logger.info("Will create:");
105
- logger.info(" \u2022 apps/api/ (NestJS 11)");
106
- logger.info(" \u2022 apps/web/ (Next.js 16)");
107
- logger.info(" \u2022 packages/types/");
108
- logger.info(" \u2022 packages/api-client/");
92
+ await createProject(projectName, options.template);
109
93
  });
110
94
  program.command("dev").description("Start development servers").option("-a, --api <path>", "Path to API project", "./apps/api").option("-w, --web <path>", "Path to Web project", "./apps/web").option("-p, --port <port>", "Port for web server", "3000").option("--api-port <port>", "Port for API server", "5050").option("--no-proxy", "Disable proxy server").action(async (options) => {
111
95
  logger.info(pc.green("\u{1F680} Starting Wexts development servers...\n"));
@@ -152,5 +136,86 @@ program.command("codegen").description("Generate API client from NestJS controll
152
136
  });
153
137
  }
154
138
  });
139
+ async function createProject(projectName, template) {
140
+ logger.info(pc.cyan(`Creating wexts project: ${pc.bold(projectName)}`));
141
+ logger.info(`Template: ${template}`);
142
+ const fs = await import("fs");
143
+ const path = await import("path");
144
+ const { execSync } = await import("child_process");
145
+ const projectPath = path.join(process.cwd(), projectName);
146
+ if (fs.existsSync(projectPath)) {
147
+ logger.error(`Directory ${projectName} already exists!`);
148
+ process.exit(1);
149
+ }
150
+ fs.mkdirSync(projectPath);
151
+ fs.mkdirSync(path.join(projectPath, "apps"));
152
+ fs.mkdirSync(path.join(projectPath, "packages"));
153
+ const packageJson = {
154
+ name: projectName,
155
+ version: "0.0.0",
156
+ private: true,
157
+ scripts: {
158
+ "build": "turbo run build",
159
+ "dev": "turbo run dev",
160
+ "lint": "turbo run lint",
161
+ "format": 'prettier --write "**/*.{ts,tsx,md}"'
162
+ },
163
+ devDependencies: {
164
+ "turbo": "latest",
165
+ "prettier": "latest",
166
+ "typescript": "^5.9.3"
167
+ },
168
+ packageManager: "pnpm@10.0.0",
169
+ workspaces: [
170
+ "apps/*",
171
+ "packages/*"
172
+ ]
173
+ };
174
+ fs.writeFileSync(
175
+ path.join(projectPath, "package.json"),
176
+ JSON.stringify(packageJson, null, 2)
177
+ );
178
+ const turboJson = {
179
+ "$schema": "https://turbo.build/schema.json",
180
+ "globalDependencies": ["**/.env.*local"],
181
+ "tasks": {
182
+ "build": {
183
+ "dependsOn": ["^build"],
184
+ "outputs": [".next/**", "!.next/cache/**", "dist/**"]
185
+ },
186
+ "lint": {},
187
+ "dev": {
188
+ "cache": false,
189
+ "persistent": true
190
+ }
191
+ }
192
+ };
193
+ fs.writeFileSync(
194
+ path.join(projectPath, "turbo.json"),
195
+ JSON.stringify(turboJson, null, 2)
196
+ );
197
+ logger.success("\u2705 Project structure created");
198
+ logger.info("\u{1F4E6} Installing dependencies...");
199
+ try {
200
+ try {
201
+ execSync("pnpm --version", { stdio: "ignore" });
202
+ } catch {
203
+ logger.info("Installing pnpm...");
204
+ execSync("npm install -g pnpm", { stdio: "ignore" });
205
+ }
206
+ execSync("pnpm install", { cwd: projectPath, stdio: "inherit" });
207
+ logger.success("\u2705 Dependencies installed");
208
+ logger.info(pc.green(`
209
+ \u{1F389} Project ${projectName} created successfully!`));
210
+ logger.info(`
211
+ To get started:
212
+ `);
213
+ logger.info(pc.cyan(` cd ${projectName}`));
214
+ logger.info(pc.cyan(` pnpm dev
215
+ `));
216
+ } catch (error) {
217
+ logger.error("Failed to install dependencies");
218
+ }
219
+ }
155
220
  program.parse();
156
221
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/index.ts"],"sourcesContent":["#!/usr/bin/env node\r\n\r\nimport { Command } from 'commander';\r\nimport { logger } from '../core/logger';\r\nimport * as pc from 'picocolors';\r\nimport inquirer from 'inquirer';\r\n\r\nconst program = new Command();\r\n\r\nprogram\r\n .name('wexts')\r\n .description('Wexts Framework - Next.js 16 + NestJS 11')\r\n .version('2.0.0');\r\n\r\n// Interactive Mode (when no command is provided)\r\nprogram\r\n .action(async () => {\r\n console.log(pc.cyan(`\r\n╔══════════════════════════════════════════╗\r\n║ ║\r\n║ ${pc.bold('🚀 Wexts Framework v2.0')} ║\r\n║ ║\r\n║ Next.js 16 + NestJS 11 Full-Stack ║\r\n║ ║\r\n╚══════════════════════════════════════════╝\r\n `));\r\n\r\n const { action } = await inquirer.prompt([\r\n {\r\n type: 'list',\r\n name: 'action',\r\n message: 'What would you like to do?',\r\n choices: [\r\n { name: '📦 Create a new project', value: 'create' },\r\n { name: '🚀 Start development server', value: 'dev' },\r\n { name: '🔨 Build for production', value: 'build' },\r\n { name: '⚡ Generate code', value: 'generate' },\r\n { name: '🤖 Generate API client', value: 'codegen' },\r\n { name: '❌ Exit', value: 'exit' },\r\n ],\r\n },\r\n ]);\r\n\r\n if (action === 'exit') {\r\n logger.info('Goodbye! 👋');\r\n process.exit(0);\r\n }\r\n\r\n // Route to appropriate command\r\n if (action === 'create') {\r\n const { projectName, template } = await inquirer.prompt([\r\n {\r\n type: 'input',\r\n name: 'projectName',\r\n message: 'Project name:',\r\n default: 'my-wexts-app',\r\n },\r\n {\r\n type: 'list',\r\n name: 'template',\r\n message: 'Select template:',\r\n choices: [\r\n { name: '📦 Monorepo (Next.js + NestJS)', value: 'monorepo' },\r\n { name: '🎯 API only (NestJS)', value: 'api' },\r\n { name: '🌐 Web only (Next.js)', value: 'web' },\r\n ],\r\n },\r\n ]);\r\n\r\n logger.info(pc.cyan(`\\n🚀 Creating ${pc.bold(projectName)}...`));\r\n logger.info(`Template: ${template}\\n`);\r\n\r\n // TODO: Implement project scaffolding\r\n logger.warn('⚠️ Project scaffolding not yet implemented');\r\n logger.info('\\n📁 Will create:');\r\n logger.info(' • apps/api/ (NestJS 11)');\r\n logger.info(' • apps/web/ (Next.js 16)');\r\n logger.info(' • packages/types/');\r\n logger.info(' • packages/api-client/\\n');\r\n } else if (action === 'dev') {\r\n logger.info(pc.green('🚀 Starting development servers...\\n'));\r\n logger.warn('Dev server not yet implemented');\r\n } else if (action === 'build') {\r\n logger.info(pc.blue('🔨 Building project...\\n'));\r\n logger.warn('Build not yet implemented');\r\n } else if (action === 'generate') {\r\n const { type, name } = await inquirer.prompt([\r\n {\r\n type: 'list',\r\n name: 'type',\r\n message: 'What to generate?',\r\n choices: ['controller', 'module', 'service', 'page'],\r\n },\r\n {\r\n type: 'input',\r\n name: 'name',\r\n message: 'Name:',\r\n },\r\n ]);\r\n logger.info(pc.magenta(`\\n⚡ Generating ${type}: ${name}\\n`));\r\n logger.warn('Code generation not yet implemented');\r\n } else if (action === 'codegen') {\r\n logger.info(pc.cyan('\\n🤖 Generating API client...\\n'));\r\n logger.warn('Codegen not yet implemented');\r\n }\r\n });\r\n\r\n// Create Command\r\nprogram\r\n .command('create <project-name>')\r\n .description('Create a new wexts project')\r\n .option('-t, --template <template>', 'Template to use (monorepo|api|web)', 'monorepo')\r\n .action(async (projectName: string, options: any) => {\r\n logger.info(pc.cyan(`Creating wexts project: ${pc.bold(projectName)}`));\r\n logger.info(`Template: ${options.template}`);\r\n\r\n // TODO: Implement project scaffolding\r\n logger.warn('Project scaffolding not yet implemented');\r\n logger.info('Will create:');\r\n logger.info(' • apps/api/ (NestJS 11)');\r\n logger.info(' • apps/web/ (Next.js 16)');\r\n logger.info(' • packages/types/');\r\n logger.info(' • packages/api-client/');\r\n });\r\n\r\n// Dev Command\r\nprogram\r\n .command('dev')\r\n .description('Start development servers')\r\n .option('-a, --api <path>', 'Path to API project', './apps/api')\r\n .option('-w, --web <path>', 'Path to Web project', './apps/web')\r\n .option('-p, --port <port>', 'Port for web server', '3000')\r\n .option('--api-port <port>', 'Port for API server', '5050')\r\n .option('--no-proxy', 'Disable proxy server')\r\n .action(async (options: any) => {\r\n logger.info(pc.green('🚀 Starting Wexts development servers...\\n'));\r\n\r\n const { FusionDevServer } = await import('../dev-server/index.js');\r\n const server = new FusionDevServer();\r\n\r\n try {\r\n await server.start({\r\n apiPath: options.api,\r\n webPath: options.web,\r\n webPort: parseInt(options.port),\r\n apiPort: parseInt(options.apiPort),\r\n useProxy: options.proxy,\r\n });\r\n } catch (error: any) {\r\n logger.error('Failed to start dev server:', error.message);\r\n process.exit(1);\r\n }\r\n });\r\n\r\n// Build Command\r\nprogram\r\n .command('build')\r\n .description('Build for production')\r\n .action(async () => {\r\n logger.info(pc.blue('Building Wexts project...'));\r\n\r\n // TODO: Build logic\r\n logger.warn('Build not yet implemented');\r\n });\r\n\r\n// Generate Command\r\nprogram\r\n .command('generate <type> <name>')\r\n .alias('g')\r\n .description('Generate code (controller|module|page)')\r\n .action(async (type: string, name: string) => {\r\n logger.info(pc.magenta(`Generating ${type}: ${name}`));\r\n\r\n // TODO: Code generation\r\n logger.warn('Code generation not yet implemented');\r\n });\r\n\r\n// Codegen Command\r\nprogram\r\n .command('codegen')\r\n .description('Generate API client from NestJS controllers')\r\n .option('-w, --watch', 'Watch mode - regenerate on changes')\r\n .option('-p, --project <path>', 'Path to NestJS project', './apps/api')\r\n .option('-o, --output <path>', 'Output path for generated client', './packages/api-client/src')\r\n .action(async (options: any) => {\r\n const { NestJSParser, ClientGenerator, CodegenWatcher } = await import('../codegen/index.js');\r\n\r\n if (options.watch) {\r\n logger.info(pc.cyan('Starting codegen in watch mode...'));\r\n const watcher = new CodegenWatcher();\r\n await watcher.watch({\r\n projectPath: options.project,\r\n outputPath: options.output,\r\n });\r\n } else {\r\n logger.info(pc.cyan('Generating API client...'));\r\n const parser = new NestJSParser(options.project);\r\n const controllers = parser.findFusionControllers();\r\n\r\n const generator = new ClientGenerator();\r\n await generator.generate({\r\n controllers,\r\n outputPath: options.output,\r\n });\r\n }\r\n });\r\n\r\nprogram.parse();\r\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/cli/index.ts"],"sourcesContent":["#!/usr/bin/env node\r\n\r\nimport { Command } from 'commander';\r\nimport { logger } from '../core/logger';\r\nimport * as pc from 'picocolors';\r\nimport inquirer from 'inquirer';\r\n\r\nconst program = new Command();\r\n\r\nprogram\r\n .name('wexts')\r\n .description('Wexts Framework - Next.js 16 + NestJS 11')\r\n .version('2.0.0');\r\n\r\n// Interactive Mode (when no command is provided)\r\nprogram\r\n .action(async () => {\r\n console.log(pc.cyan(`\r\n╔══════════════════════════════════════════╗\r\n║ ║\r\n║ ${pc.bold('🚀 Wexts Framework v2.0')} ║\r\n║ ║\r\n║ Next.js 16 + NestJS 11 Full-Stack ║\r\n║ ║\r\n╚══════════════════════════════════════════╝\r\n `));\r\n\r\n const { action } = await inquirer.prompt([\r\n {\r\n type: 'list',\r\n name: 'action',\r\n message: 'What would you like to do?',\r\n choices: [\r\n { name: '📦 Create a new project', value: 'create' },\r\n { name: '🚀 Start development server', value: 'dev' },\r\n { name: '🔨 Build for production', value: 'build' },\r\n { name: '⚡ Generate code', value: 'generate' },\r\n { name: '🤖 Generate API client', value: 'codegen' },\r\n { name: '❌ Exit', value: 'exit' },\r\n ],\r\n },\r\n ]);\r\n\r\n if (action === 'exit') {\r\n logger.info('Goodbye! 👋');\r\n process.exit(0);\r\n }\r\n\r\n // Route to appropriate command\r\n if (action === 'create') {\r\n const { projectName, template } = await inquirer.prompt([\r\n {\r\n type: 'input',\r\n name: 'projectName',\r\n message: 'Project name:',\r\n default: 'my-wexts-app',\r\n },\r\n {\r\n type: 'list',\r\n name: 'template',\r\n message: 'Select template:',\r\n choices: [\r\n { name: '📦 Monorepo (Next.js + NestJS)', value: 'monorepo' },\r\n { name: '🎯 API only (NestJS)', value: 'api' },\r\n { name: '🌐 Web only (Next.js)', value: 'web' },\r\n ],\r\n },\r\n ]);\r\n\r\n await createProject(projectName, template);\r\n } else if (action === 'dev') {\r\n logger.info(pc.green('🚀 Starting development servers...\\n'));\r\n logger.warn('Dev server not yet implemented');\r\n } else if (action === 'build') {\r\n logger.info(pc.blue('🔨 Building project...\\n'));\r\n logger.warn('Build not yet implemented');\r\n } else if (action === 'generate') {\r\n const { type, name } = await inquirer.prompt([\r\n {\r\n type: 'list',\r\n name: 'type',\r\n message: 'What to generate?',\r\n choices: ['controller', 'module', 'service', 'page'],\r\n },\r\n {\r\n type: 'input',\r\n name: 'name',\r\n message: 'Name:',\r\n },\r\n ]);\r\n logger.info(pc.magenta(`\\n⚡ Generating ${type}: ${name}\\n`));\r\n logger.warn('Code generation not yet implemented');\r\n } else if (action === 'codegen') {\r\n logger.info(pc.cyan('\\n🤖 Generating API client...\\n'));\r\n logger.warn('Codegen not yet implemented');\r\n }\r\n });\r\n\r\n// Create Command\r\nprogram\r\n .command('create <project-name>')\r\n .description('Create a new wexts project')\r\n .option('-t, --template <template>', 'Template to use (monorepo|api|web)', 'monorepo')\r\n .action(async (projectName: string, options: any) => {\r\n await createProject(projectName, options.template);\r\n });\r\n\r\n// Dev Command\r\nprogram\r\n .command('dev')\r\n .description('Start development servers')\r\n .option('-a, --api <path>', 'Path to API project', './apps/api')\r\n .option('-w, --web <path>', 'Path to Web project', './apps/web')\r\n .option('-p, --port <port>', 'Port for web server', '3000')\r\n .option('--api-port <port>', 'Port for API server', '5050')\r\n .option('--no-proxy', 'Disable proxy server')\r\n .action(async (options: any) => {\r\n logger.info(pc.green('🚀 Starting Wexts development servers...\\n'));\r\n\r\n const { FusionDevServer } = await import('../dev-server/index.js');\r\n const server = new FusionDevServer();\r\n\r\n try {\r\n await server.start({\r\n apiPath: options.api,\r\n webPath: options.web,\r\n webPort: parseInt(options.port),\r\n apiPort: parseInt(options.apiPort),\r\n useProxy: options.proxy,\r\n });\r\n } catch (error: any) {\r\n logger.error('Failed to start dev server:', error.message);\r\n process.exit(1);\r\n }\r\n });\r\n\r\n// Build Command\r\nprogram\r\n .command('build')\r\n .description('Build for production')\r\n .action(async () => {\r\n logger.info(pc.blue('Building Wexts project...'));\r\n\r\n // TODO: Build logic\r\n logger.warn('Build not yet implemented');\r\n });\r\n\r\n// Generate Command\r\nprogram\r\n .command('generate <type> <name>')\r\n .alias('g')\r\n .description('Generate code (controller|module|page)')\r\n .action(async (type: string, name: string) => {\r\n logger.info(pc.magenta(`Generating ${type}: ${name}`));\r\n\r\n // TODO: Code generation\r\n logger.warn('Code generation not yet implemented');\r\n });\r\n\r\n// Codegen Command\r\nprogram\r\n .command('codegen')\r\n .description('Generate API client from NestJS controllers')\r\n .option('-w, --watch', 'Watch mode - regenerate on changes')\r\n .option('-p, --project <path>', 'Path to NestJS project', './apps/api')\r\n .option('-o, --output <path>', 'Output path for generated client', './packages/api-client/src')\r\n .action(async (options: any) => {\r\n const { NestJSParser, ClientGenerator, CodegenWatcher } = await import('../codegen/index.js');\r\n\r\n if (options.watch) {\r\n logger.info(pc.cyan('Starting codegen in watch mode...'));\r\n const watcher = new CodegenWatcher();\r\n await watcher.watch({\r\n projectPath: options.project,\r\n outputPath: options.output,\r\n });\r\n } else {\r\n logger.info(pc.cyan('Generating API client...'));\r\n const parser = new NestJSParser(options.project);\r\n const controllers = parser.findFusionControllers();\r\n\r\n const generator = new ClientGenerator();\r\n await generator.generate({\r\n controllers,\r\n outputPath: options.output,\r\n });\r\n }\r\n });\r\n\r\n// Helper function for creating project\r\nasync function createProject(projectName: string, template: string) {\r\n logger.info(pc.cyan(`Creating wexts project: ${pc.bold(projectName)}`));\r\n logger.info(`Template: ${template}`);\r\n\r\n const fs = await import('fs');\r\n const path = await import('path');\r\n const { execSync } = await import('child_process');\r\n\r\n const projectPath = path.join(process.cwd(), projectName);\r\n\r\n if (fs.existsSync(projectPath)) {\r\n logger.error(`Directory ${projectName} already exists!`);\r\n process.exit(1);\r\n }\r\n\r\n // Create project structure\r\n fs.mkdirSync(projectPath);\r\n fs.mkdirSync(path.join(projectPath, 'apps'));\r\n fs.mkdirSync(path.join(projectPath, 'packages'));\r\n\r\n // Create package.json\r\n const packageJson = {\r\n name: projectName,\r\n version: \"0.0.0\",\r\n private: true,\r\n scripts: {\r\n \"build\": \"turbo run build\",\r\n \"dev\": \"turbo run dev\",\r\n \"lint\": \"turbo run lint\",\r\n \"format\": \"prettier --write \\\"**/*.{ts,tsx,md}\\\"\"\r\n },\r\n devDependencies: {\r\n \"turbo\": \"latest\",\r\n \"prettier\": \"latest\",\r\n \"typescript\": \"^5.9.3\"\r\n },\r\n packageManager: \"pnpm@10.0.0\",\r\n workspaces: [\r\n \"apps/*\",\r\n \"packages/*\"\r\n ]\r\n };\r\n\r\n fs.writeFileSync(\r\n path.join(projectPath, 'package.json'),\r\n JSON.stringify(packageJson, null, 2)\r\n );\r\n\r\n // Create turbo.json\r\n const turboJson = {\r\n \"$schema\": \"https://turbo.build/schema.json\",\r\n \"globalDependencies\": [\"**/.env.*local\"],\r\n \"tasks\": {\r\n \"build\": {\r\n \"dependsOn\": [\"^build\"],\r\n \"outputs\": [\".next/**\", \"!.next/cache/**\", \"dist/**\"]\r\n },\r\n \"lint\": {},\r\n \"dev\": {\r\n \"cache\": false,\r\n \"persistent\": true\r\n }\r\n }\r\n };\r\n\r\n fs.writeFileSync(\r\n path.join(projectPath, 'turbo.json'),\r\n JSON.stringify(turboJson, null, 2)\r\n );\r\n\r\n logger.success('✅ Project structure created');\r\n logger.info('📦 Installing dependencies...');\r\n\r\n try {\r\n // Check if pnpm is installed\r\n try {\r\n execSync('pnpm --version', { stdio: 'ignore' });\r\n } catch {\r\n logger.info('Installing pnpm...');\r\n execSync('npm install -g pnpm', { stdio: 'ignore' });\r\n }\r\n\r\n execSync('pnpm install', { cwd: projectPath, stdio: 'inherit' });\r\n logger.success('✅ Dependencies installed');\r\n\r\n logger.info(pc.green(`\\n🎉 Project ${projectName} created successfully!`));\r\n logger.info(`\\nTo get started:\\n`);\r\n logger.info(pc.cyan(` cd ${projectName}`));\r\n logger.info(pc.cyan(` pnpm dev\\n`));\r\n } catch (error) {\r\n logger.error('Failed to install dependencies');\r\n }\r\n}\r\n\r\nprogram.parse();\r\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wexts",
3
- "version": "2.0.5",
3
+ "version": "2.0.6",
4
4
  "description": "Modern full-stack framework combining NestJS 11 and Next.js 16",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",