wexts 2.0.7 → 2.0.8
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/chunk-63MTCWU2.mjs +361 -0
- package/dist/chunk-63MTCWU2.mjs.map +1 -0
- package/dist/chunk-67IJ6H4J.mjs +44 -0
- package/dist/chunk-67IJ6H4J.mjs.map +1 -0
- package/dist/chunk-7NSRDJ5C.mjs +1 -0
- package/dist/chunk-7NSRDJ5C.mjs.map +1 -0
- package/dist/chunk-ASDXAK6G.js +44 -0
- package/dist/chunk-ASDXAK6G.js.map +1 -0
- package/dist/chunk-CKZ4VSCB.mjs +18 -0
- package/dist/chunk-CKZ4VSCB.mjs.map +1 -0
- package/dist/chunk-DW6GOKMF.js +57 -0
- package/dist/chunk-DW6GOKMF.js.map +1 -0
- package/dist/chunk-GKVPGKAH.js +66 -0
- package/dist/chunk-GKVPGKAH.js.map +1 -0
- package/dist/chunk-HSFLZUJN.mjs +57 -0
- package/dist/chunk-HSFLZUJN.mjs.map +1 -0
- package/dist/chunk-HU63F22V.js +361 -0
- package/dist/chunk-HU63F22V.js.map +1 -0
- package/dist/chunk-JMBD6DOP.js +225 -0
- package/dist/chunk-JMBD6DOP.js.map +1 -0
- package/dist/chunk-K7EIJSYQ.js +1 -0
- package/dist/chunk-K7EIJSYQ.js.map +1 -0
- package/dist/chunk-OTBYRUBE.mjs +225 -0
- package/dist/chunk-OTBYRUBE.mjs.map +1 -0
- package/dist/chunk-WMHVXEYQ.mjs +66 -0
- package/dist/chunk-WMHVXEYQ.mjs.map +1 -0
- package/dist/cli/index.js +146 -25
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/index.mjs +130 -7
- package/dist/cli/index.mjs.map +1 -1
- package/dist/client/index.js +2 -2
- package/dist/client/index.mjs +2 -2
- package/dist/codegen/index.d.mts +1 -0
- package/dist/codegen/index.d.ts +1 -0
- package/dist/codegen/index.js +13 -0
- package/dist/codegen/index.js.map +1 -0
- package/dist/codegen/index.mjs +13 -0
- package/dist/codegen/index.mjs.map +1 -0
- package/dist/dev-server/index.d.mts +1 -0
- package/dist/dev-server/index.d.ts +1 -0
- package/dist/dev-server/index.js +13 -0
- package/dist/dev-server/index.js.map +1 -0
- package/dist/dev-server/index.mjs +13 -0
- package/dist/dev-server/index.mjs.map +1 -0
- package/dist/index-SjUaHgFr.d.mts +75 -0
- package/dist/index-SjUaHgFr.d.ts +75 -0
- package/dist/index-tFGPFVfQ.d.mts +67 -0
- package/dist/index-tFGPFVfQ.d.ts +67 -0
- package/dist/index.d.mts +83 -164
- package/dist/index.d.ts +83 -164
- package/dist/index.js +89 -22
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +76 -9
- package/dist/index.mjs.map +1 -1
- package/dist/nest/index.js +2 -2
- package/dist/nest/index.mjs +2 -2
- package/dist/next/index.d.mts +61 -3
- package/dist/next/index.d.ts +61 -3
- package/dist/next/index.js +140 -7
- package/dist/next/index.js.map +1 -1
- package/dist/next/index.mjs +102 -7
- package/dist/next/index.mjs.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/index.mjs +2 -1
- package/package.json +1 -1
- package/templates/nestjs-api/package-lock.json +5623 -0
- package/templates/nestjs-api/package.json +21 -19
- package/templates/nestjs-api/prisma/migrations/20251123205437_init/migration.sql +24 -0
- package/templates/nestjs-api/prisma/migrations/migration_lock.toml +3 -0
- package/templates/nestjs-api/src/auth/auth.controller.ts +5 -5
- package/templates/nestjs-api/src/main.ts +1 -1
- package/templates/nestjs-api/src/todos/todos.controller.ts +7 -7
- package/templates/nestjs-api/src/users/users.controller.ts +3 -3
- package/templates/nestjs-api/tsconfig.json +20 -1
- package/templates/nextjs-web/app/actions/auth.ts +79 -0
- package/templates/nextjs-web/app/dashboard/error.tsx +39 -0
- package/templates/nextjs-web/app/dashboard/loading.tsx +14 -0
- package/templates/nextjs-web/app/dashboard/page.tsx +2 -172
- package/templates/nextjs-web/app/globals.css +80 -15
- package/templates/nextjs-web/app/layout.tsx +7 -5
- package/templates/nextjs-web/app/login/page.tsx +2 -104
- package/templates/nextjs-web/app/page.tsx +1 -1
- package/templates/nextjs-web/app/register/page.tsx +2 -127
- package/templates/nextjs-web/components/ui/button.tsx +56 -0
- package/templates/nextjs-web/components/ui/card.tsx +79 -0
- package/templates/nextjs-web/components/ui/input.tsx +25 -0
- package/templates/nextjs-web/components/ui/label.tsx +24 -0
- package/templates/nextjs-web/features/auth/LoginForm.tsx +140 -0
- package/templates/nextjs-web/features/auth/RegisterForm.tsx +159 -0
- package/templates/nextjs-web/features/auth/api.ts +35 -0
- package/templates/nextjs-web/features/auth/index.ts +3 -0
- package/templates/nextjs-web/features/dashboard/DashboardView.tsx +204 -0
- package/templates/nextjs-web/features/dashboard/api.ts +9 -0
- package/templates/nextjs-web/features/dashboard/components.tsx +74 -0
- package/templates/nextjs-web/features/dashboard/index.ts +3 -0
- package/templates/nextjs-web/hooks/index.ts +4 -0
- package/templates/nextjs-web/lib/api-client.ts +89 -0
- package/templates/nextjs-web/lib/axios-global-config.ts +17 -0
- package/templates/nextjs-web/lib/utils.ts +6 -0
- package/templates/nextjs-web/lib/wexts-client.ts +4 -0
- package/templates/nextjs-web/next-env.d.ts +6 -0
- package/templates/nextjs-web/next.config.ts +20 -0
- package/templates/nextjs-web/package-lock.json +3254 -0
- package/templates/nextjs-web/package.json +23 -14
- package/templates/nextjs-web/postcss.config.js +6 -0
- package/templates/nextjs-web/tailwind.config.ts +55 -1
- package/templates/nextjs-web/tsconfig.json +41 -39
- package/templates/nestjs-api/.env.example +0 -4
- package/templates/nextjs-web/next.config.mjs +0 -4
- /package/templates/nextjs-web/{.env.local.example → .env} +0 -0
package/dist/cli/index.mjs
CHANGED
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
logger
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import
|
|
4
|
+
} from "../chunk-HSFLZUJN.mjs";
|
|
5
|
+
import {
|
|
6
|
+
__dirname
|
|
7
|
+
} from "../chunk-CKZ4VSCB.mjs";
|
|
6
8
|
|
|
7
9
|
// src/cli/index.ts
|
|
8
10
|
import { Command } from "commander";
|
|
9
11
|
import * as pc from "picocolors";
|
|
10
12
|
import inquirer from "inquirer";
|
|
13
|
+
import * as fs from "fs";
|
|
14
|
+
import * as path from "path";
|
|
15
|
+
import { execSync } from "child_process";
|
|
11
16
|
var program = new Command();
|
|
12
17
|
program.name("wexts").description("Wexts Framework - Next.js 16 + NestJS 11").version("2.0.0");
|
|
13
18
|
program.action(async () => {
|
|
@@ -93,7 +98,7 @@ program.command("create <project-name>").description("Create a new wexts project
|
|
|
93
98
|
});
|
|
94
99
|
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) => {
|
|
95
100
|
logger.info(pc.green("\u{1F680} Starting Wexts development servers...\n"));
|
|
96
|
-
const { FusionDevServer } = await import("../dev-server
|
|
101
|
+
const { FusionDevServer } = await import("../dev-server/index.mjs");
|
|
97
102
|
const server = new FusionDevServer();
|
|
98
103
|
try {
|
|
99
104
|
await server.start({
|
|
@@ -117,7 +122,7 @@ program.command("generate <type> <name>").alias("g").description("Generate code
|
|
|
117
122
|
logger.warn("Code generation not yet implemented");
|
|
118
123
|
});
|
|
119
124
|
program.command("codegen").description("Generate API client from NestJS controllers").option("-w, --watch", "Watch mode - regenerate on changes").option("-p, --project <path>", "Path to NestJS project", "./apps/api").option("-o, --output <path>", "Output path for generated client", "./packages/api-client/src").action(async (options) => {
|
|
120
|
-
const { NestJSParser, ClientGenerator, CodegenWatcher } = await import("../codegen
|
|
125
|
+
const { NestJSParser, ClientGenerator, CodegenWatcher } = await import("../codegen/index.mjs");
|
|
121
126
|
if (options.watch) {
|
|
122
127
|
logger.info(pc.cyan("Starting codegen in watch mode..."));
|
|
123
128
|
const watcher = new CodegenWatcher();
|
|
@@ -139,10 +144,128 @@ program.command("codegen").description("Generate API client from NestJS controll
|
|
|
139
144
|
async function createProject(projectName, template) {
|
|
140
145
|
logger.info(pc.cyan(`Creating wexts project: ${pc.bold(projectName)}`));
|
|
141
146
|
logger.info(`Template: ${template}`);
|
|
142
|
-
const fs = await import("fs");
|
|
143
|
-
const path = await import("path");
|
|
144
|
-
const { execSync } = await import("child_process");
|
|
145
147
|
const projectPath = path.join(process.cwd(), projectName);
|
|
148
|
+
if (fs.existsSync(projectPath)) {
|
|
149
|
+
logger.error(`Directory ${projectName} already exists!`);
|
|
150
|
+
process.exit(1);
|
|
151
|
+
}
|
|
152
|
+
function getTemplatePath() {
|
|
153
|
+
const possiblePaths = [
|
|
154
|
+
path.join(__dirname, "../../templates"),
|
|
155
|
+
// When running from dist/cli/index.js
|
|
156
|
+
path.join(__dirname, "../templates"),
|
|
157
|
+
// Alternative structure
|
|
158
|
+
path.join(process.cwd(), "templates"),
|
|
159
|
+
// Local dev
|
|
160
|
+
path.resolve(__dirname, "..", "..", "templates")
|
|
161
|
+
// Absolute resolve
|
|
162
|
+
];
|
|
163
|
+
for (const p of possiblePaths) {
|
|
164
|
+
if (fs.existsSync(p)) {
|
|
165
|
+
return p;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return "";
|
|
169
|
+
}
|
|
170
|
+
const templatePath = getTemplatePath();
|
|
171
|
+
if (!templatePath) {
|
|
172
|
+
logger.error(`\u274C Template directory not found!`);
|
|
173
|
+
logger.info(`Searched in:`);
|
|
174
|
+
logger.info(` - ${path.join(__dirname, "../../templates")}`);
|
|
175
|
+
logger.info(` - ${path.join(__dirname, "../templates")}`);
|
|
176
|
+
logger.info(` - ${path.join(process.cwd(), "templates")}`);
|
|
177
|
+
logger.warn("\u26A0\uFE0F Using fallback scaffolding (empty structure)");
|
|
178
|
+
fs.mkdirSync(projectPath, { recursive: true });
|
|
179
|
+
fs.mkdirSync(path.join(projectPath, "apps"), { recursive: true });
|
|
180
|
+
fs.mkdirSync(path.join(projectPath, "packages"), { recursive: true });
|
|
181
|
+
} else {
|
|
182
|
+
logger.info(`\u{1F4E6} Copying templates from: ${templatePath}`);
|
|
183
|
+
fs.mkdirSync(projectPath, { recursive: true });
|
|
184
|
+
fs.mkdirSync(path.join(projectPath, "apps"), { recursive: true });
|
|
185
|
+
fs.mkdirSync(path.join(projectPath, "packages"), { recursive: true });
|
|
186
|
+
const apiTemplatePath = path.join(templatePath, "nestjs-api");
|
|
187
|
+
const apiDestPath = path.join(projectPath, "apps/api");
|
|
188
|
+
if (fs.existsSync(apiTemplatePath)) {
|
|
189
|
+
fs.cpSync(apiTemplatePath, apiDestPath, { recursive: true });
|
|
190
|
+
logger.success(" - Copied API template");
|
|
191
|
+
} else {
|
|
192
|
+
logger.warn(` \u26A0\uFE0F API template not found at ${apiTemplatePath}`);
|
|
193
|
+
}
|
|
194
|
+
const webTemplatePath = path.join(templatePath, "nextjs-web");
|
|
195
|
+
const webDestPath = path.join(projectPath, "apps/web");
|
|
196
|
+
if (fs.existsSync(webTemplatePath)) {
|
|
197
|
+
fs.cpSync(webTemplatePath, webDestPath, { recursive: true });
|
|
198
|
+
logger.success(" - Copied Web template");
|
|
199
|
+
} else {
|
|
200
|
+
logger.warn(` \u26A0\uFE0F Web template not found at ${webTemplatePath}`);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
const packageJson = {
|
|
204
|
+
name: projectName,
|
|
205
|
+
version: "0.0.0",
|
|
206
|
+
private: true,
|
|
207
|
+
scripts: {
|
|
208
|
+
"build": "turbo run build",
|
|
209
|
+
"dev": "turbo run dev",
|
|
210
|
+
"lint": "turbo run lint",
|
|
211
|
+
"format": 'prettier --write "**/*.{ts,tsx,md}"'
|
|
212
|
+
},
|
|
213
|
+
devDependencies: {
|
|
214
|
+
"turbo": "latest",
|
|
215
|
+
"prettier": "latest",
|
|
216
|
+
"typescript": "^5.9.3",
|
|
217
|
+
"wexts": "latest"
|
|
218
|
+
},
|
|
219
|
+
packageManager: "pnpm@10.0.0",
|
|
220
|
+
workspaces: [
|
|
221
|
+
"apps/*",
|
|
222
|
+
"packages/*"
|
|
223
|
+
]
|
|
224
|
+
};
|
|
225
|
+
fs.writeFileSync(
|
|
226
|
+
path.join(projectPath, "package.json"),
|
|
227
|
+
JSON.stringify(packageJson, null, 2)
|
|
228
|
+
);
|
|
229
|
+
const turboJson = {
|
|
230
|
+
"$schema": "https://turbo.build/schema.json",
|
|
231
|
+
"tasks": {
|
|
232
|
+
"build": {
|
|
233
|
+
"dependsOn": ["^build"],
|
|
234
|
+
"outputs": [".next/**", "!.next/cache/**", "dist/**"]
|
|
235
|
+
},
|
|
236
|
+
"lint": {},
|
|
237
|
+
"dev": {
|
|
238
|
+
"cache": false,
|
|
239
|
+
"persistent": true
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
};
|
|
243
|
+
fs.writeFileSync(
|
|
244
|
+
path.join(projectPath, "turbo.json"),
|
|
245
|
+
JSON.stringify(turboJson, null, 2)
|
|
246
|
+
);
|
|
247
|
+
logger.success("\u2705 Project structure created");
|
|
248
|
+
logger.info("\u{1F4E6} Installing dependencies...");
|
|
249
|
+
try {
|
|
250
|
+
try {
|
|
251
|
+
execSync("pnpm --version", { stdio: "ignore" });
|
|
252
|
+
} catch {
|
|
253
|
+
logger.info("Installing pnpm...");
|
|
254
|
+
execSync("npm install -g pnpm", { stdio: "ignore" });
|
|
255
|
+
}
|
|
256
|
+
execSync("pnpm install", { cwd: projectPath, stdio: "inherit" });
|
|
257
|
+
logger.success("\u2705 Dependencies installed");
|
|
258
|
+
logger.info(pc.green(`
|
|
259
|
+
\u{1F389} Project ${projectName} created successfully!`));
|
|
260
|
+
logger.info(`
|
|
261
|
+
To get started:
|
|
262
|
+
`);
|
|
263
|
+
logger.info(pc.cyan(` cd ${projectName}`));
|
|
264
|
+
logger.info(pc.cyan(` pnpm dev
|
|
265
|
+
`));
|
|
266
|
+
} catch (error) {
|
|
267
|
+
logger.error("Failed to install dependencies");
|
|
268
|
+
}
|
|
146
269
|
}
|
|
147
270
|
program.parse();
|
|
148
271
|
//# sourceMappingURL=index.mjs.map
|
package/dist/cli/index.mjs.map
CHANGED
|
@@ -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 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}\r\n\r\nprogram.parse();\r\n"],"mappings":";;;;;;;AAEA,SAAS,eAAe;AAExB,YAAY,QAAQ;AACpB,OAAO,cAAc;AAErB,IAAM,UAAU,IAAI,QAAQ;AAE5B,QACK,KAAK,OAAO,EACZ,YAAY,0CAA0C,EACtD,QAAQ,OAAO;AAGpB,QACK,OAAO,YAAY;AAChB,UAAQ,IAAO,QAAK;AAAA;AAAA;AAAA,cAGhB,QAAK,gCAAyB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,SAKlC,CAAC;AAEF,QAAM,EAAE,OAAO,IAAI,MAAM,SAAS,OAAO;AAAA,IACrC;AAAA,MACI,MAAM;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS;AAAA,QACL,EAAE,MAAM,kCAA2B,OAAO,SAAS;AAAA,QACnD,EAAE,MAAM,sCAA+B,OAAO,MAAM;AAAA,QACpD,EAAE,MAAM,kCAA2B,OAAO,QAAQ;AAAA,QAClD,EAAE,MAAM,wBAAmB,OAAO,WAAW;AAAA,QAC7C,EAAE,MAAM,iCAA0B,OAAO,UAAU;AAAA,QACnD,EAAE,MAAM,eAAU,OAAO,OAAO;AAAA,MACpC;AAAA,IACJ;AAAA,EACJ,CAAC;AAED,MAAI,WAAW,QAAQ;AACnB,WAAO,KAAK,oBAAa;AACzB,YAAQ,KAAK,CAAC;AAAA,EAClB;AAGA,MAAI,WAAW,UAAU;AACrB,UAAM,EAAE,aAAa,SAAS,IAAI,MAAM,SAAS,OAAO;AAAA,MACpD;AAAA,QACI,MAAM;AAAA,QACN,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,MACb;AAAA,MACA;AAAA,QACI,MAAM;AAAA,QACN,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,UACL,EAAE,MAAM,yCAAkC,OAAO,WAAW;AAAA,UAC5D,EAAE,MAAM,+BAAwB,OAAO,MAAM;AAAA,UAC7C,EAAE,MAAM,gCAAyB,OAAO,MAAM;AAAA,QAClD;AAAA,MACJ;AAAA,IACJ,CAAC;AAED,UAAM,cAAc,aAAa,QAAQ;AAAA,EAC7C,WAAW,WAAW,OAAO;AACzB,WAAO,KAAQ,SAAM,6CAAsC,CAAC;AAC5D,WAAO,KAAK,gCAAgC;AAAA,EAChD,WAAW,WAAW,SAAS;AAC3B,WAAO,KAAQ,QAAK,iCAA0B,CAAC;AAC/C,WAAO,KAAK,2BAA2B;AAAA,EAC3C,WAAW,WAAW,YAAY;AAC9B,UAAM,EAAE,MAAM,KAAK,IAAI,MAAM,SAAS,OAAO;AAAA,MACzC;AAAA,QACI,MAAM;AAAA,QACN,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS,CAAC,cAAc,UAAU,WAAW,MAAM;AAAA,MACvD;AAAA,MACA;AAAA,QACI,MAAM;AAAA,QACN,MAAM;AAAA,QACN,SAAS;AAAA,MACb;AAAA,IACJ,CAAC;AACD,WAAO,KAAQ,WAAQ;AAAA,oBAAkB,IAAI,KAAK,IAAI;AAAA,CAAI,CAAC;AAC3D,WAAO,KAAK,qCAAqC;AAAA,EACrD,WAAW,WAAW,WAAW;AAC7B,WAAO,KAAQ,QAAK,wCAAiC,CAAC;AACtD,WAAO,KAAK,6BAA6B;AAAA,EAC7C;AACJ,CAAC;AAGL,QACK,QAAQ,uBAAuB,EAC/B,YAAY,4BAA4B,EACxC,OAAO,6BAA6B,sCAAsC,UAAU,EACpF,OAAO,OAAO,aAAqB,YAAiB;AACjD,QAAM,cAAc,aAAa,QAAQ,QAAQ;AACrD,CAAC;AAGL,QACK,QAAQ,KAAK,EACb,YAAY,2BAA2B,EACvC,OAAO,oBAAoB,uBAAuB,YAAY,EAC9D,OAAO,oBAAoB,uBAAuB,YAAY,EAC9D,OAAO,qBAAqB,uBAAuB,MAAM,EACzD,OAAO,qBAAqB,uBAAuB,MAAM,EACzD,OAAO,cAAc,sBAAsB,EAC3C,OAAO,OAAO,YAAiB;AAC5B,SAAO,KAAQ,SAAM,mDAA4C,CAAC;AAElE,QAAM,EAAE,gBAAgB,IAAI,MAAM,OAAO,4BAAwB;AACjE,QAAM,SAAS,IAAI,gBAAgB;AAEnC,MAAI;AACA,UAAM,OAAO,MAAM;AAAA,MACf,SAAS,QAAQ;AAAA,MACjB,SAAS,QAAQ;AAAA,MACjB,SAAS,SAAS,QAAQ,IAAI;AAAA,MAC9B,SAAS,SAAS,QAAQ,OAAO;AAAA,MACjC,UAAU,QAAQ;AAAA,IACtB,CAAC;AAAA,EACL,SAAS,OAAY;AACjB,WAAO,MAAM,+BAA+B,MAAM,OAAO;AACzD,YAAQ,KAAK,CAAC;AAAA,EAClB;AACJ,CAAC;AAGL,QACK,QAAQ,OAAO,EACf,YAAY,sBAAsB,EAClC,OAAO,YAAY;AAChB,SAAO,KAAQ,QAAK,2BAA2B,CAAC;AAGhD,SAAO,KAAK,2BAA2B;AAC3C,CAAC;AAGL,QACK,QAAQ,wBAAwB,EAChC,MAAM,GAAG,EACT,YAAY,wCAAwC,EACpD,OAAO,OAAO,MAAc,SAAiB;AAC1C,SAAO,KAAQ,WAAQ,cAAc,IAAI,KAAK,IAAI,EAAE,CAAC;AAGrD,SAAO,KAAK,qCAAqC;AACrD,CAAC;AAGL,QACK,QAAQ,SAAS,EACjB,YAAY,6CAA6C,EACzD,OAAO,eAAe,oCAAoC,EAC1D,OAAO,wBAAwB,0BAA0B,YAAY,EACrE,OAAO,uBAAuB,oCAAoC,2BAA2B,EAC7F,OAAO,OAAO,YAAiB;AAC5B,QAAM,EAAE,cAAc,iBAAiB,eAAe,IAAI,MAAM,OAAO,yBAAqB;AAE5F,MAAI,QAAQ,OAAO;AACf,WAAO,KAAQ,QAAK,mCAAmC,CAAC;AACxD,UAAM,UAAU,IAAI,eAAe;AACnC,UAAM,QAAQ,MAAM;AAAA,MAChB,aAAa,QAAQ;AAAA,MACrB,YAAY,QAAQ;AAAA,IACxB,CAAC;AAAA,EACL,OAAO;AACH,WAAO,KAAQ,QAAK,0BAA0B,CAAC;AAC/C,UAAM,SAAS,IAAI,aAAa,QAAQ,OAAO;AAC/C,UAAM,cAAc,OAAO,sBAAsB;AAEjD,UAAM,YAAY,IAAI,gBAAgB;AACtC,UAAM,UAAU,SAAS;AAAA,MACrB;AAAA,MACA,YAAY,QAAQ;AAAA,IACxB,CAAC;AAAA,EACL;AACJ,CAAC;AAGL,eAAe,cAAc,aAAqB,UAAkB;AAChE,SAAO,KAAQ,QAAK,2BAA8B,QAAK,WAAW,CAAC,EAAE,CAAC;AACtE,SAAO,KAAK,aAAa,QAAQ,EAAE;AAEnC,QAAM,KAAK,MAAM,OAAO,IAAI;AAC5B,QAAM,OAAO,MAAM,OAAO,MAAM;AAChC,QAAM,EAAE,SAAS,IAAI,MAAM,OAAO,eAAe;AAEjD,QAAM,cAAc,KAAK,KAAK,QAAQ,IAAI,GAAG,WAAW;AAE5D;AAEA,QAAQ,MAAM;","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\nimport * as fs from 'fs';\r\nimport * as path from 'path';\r\nimport { execSync } from 'child_process';\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 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 // Helper to resolve template path\r\n function getTemplatePath(): string {\r\n // Try multiple locations\r\n const possiblePaths = [\r\n path.join(__dirname, '../../templates'), // When running from dist/cli/index.js\r\n path.join(__dirname, '../templates'), // Alternative structure\r\n path.join(process.cwd(), 'templates'), // Local dev\r\n path.resolve(__dirname, '..', '..', 'templates') // Absolute resolve\r\n ];\r\n\r\n for (const p of possiblePaths) {\r\n if (fs.existsSync(p)) {\r\n return p;\r\n }\r\n }\r\n return '';\r\n }\r\n\r\n const templatePath = getTemplatePath();\r\n\r\n if (!templatePath) {\r\n logger.error(`❌ Template directory not found!`);\r\n logger.info(`Searched in:`);\r\n logger.info(` - ${path.join(__dirname, '../../templates')}`);\r\n logger.info(` - ${path.join(__dirname, '../templates')}`);\r\n logger.info(` - ${path.join(process.cwd(), 'templates')}`);\r\n\r\n // Fallback to basic structure if templates are missing (for dev/test)\r\n logger.warn('⚠️ Using fallback scaffolding (empty structure)');\r\n fs.mkdirSync(projectPath, { recursive: true });\r\n fs.mkdirSync(path.join(projectPath, 'apps'), { recursive: true });\r\n fs.mkdirSync(path.join(projectPath, 'packages'), { recursive: true });\r\n } else {\r\n logger.info(`📦 Copying templates from: ${templatePath}`);\r\n\r\n fs.mkdirSync(projectPath, { recursive: true });\r\n fs.mkdirSync(path.join(projectPath, 'apps'), { recursive: true });\r\n fs.mkdirSync(path.join(projectPath, 'packages'), { recursive: true });\r\n\r\n // Copy NestJS API Template\r\n const apiTemplatePath = path.join(templatePath, 'nestjs-api');\r\n const apiDestPath = path.join(projectPath, 'apps/api');\r\n if (fs.existsSync(apiTemplatePath)) {\r\n fs.cpSync(apiTemplatePath, apiDestPath, { recursive: true });\r\n logger.success(' - Copied API template');\r\n } else {\r\n logger.warn(` ⚠️ API template not found at ${apiTemplatePath}`);\r\n }\r\n\r\n // Copy Next.js Web Template\r\n const webTemplatePath = path.join(templatePath, 'nextjs-web');\r\n const webDestPath = path.join(projectPath, 'apps/web');\r\n if (fs.existsSync(webTemplatePath)) {\r\n fs.cpSync(webTemplatePath, webDestPath, { recursive: true });\r\n logger.success(' - Copied Web template');\r\n } else {\r\n logger.warn(` ⚠️ Web template not found at ${webTemplatePath}`);\r\n }\r\n }\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 \"wexts\": \"latest\"\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 \"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":";;;;;;;;;AAEA,SAAS,eAAe;AAExB,YAAY,QAAQ;AACpB,OAAO,cAAc;AACrB,YAAY,QAAQ;AACpB,YAAY,UAAU;AACtB,SAAS,gBAAgB;AAEzB,IAAM,UAAU,IAAI,QAAQ;AAE5B,QACK,KAAK,OAAO,EACZ,YAAY,0CAA0C,EACtD,QAAQ,OAAO;AAGpB,QACK,OAAO,YAAY;AAChB,UAAQ,IAAO,QAAK;AAAA;AAAA;AAAA,cAGhB,QAAK,gCAAyB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,SAKlC,CAAC;AAEF,QAAM,EAAE,OAAO,IAAI,MAAM,SAAS,OAAO;AAAA,IACrC;AAAA,MACI,MAAM;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS;AAAA,QACL,EAAE,MAAM,kCAA2B,OAAO,SAAS;AAAA,QACnD,EAAE,MAAM,sCAA+B,OAAO,MAAM;AAAA,QACpD,EAAE,MAAM,kCAA2B,OAAO,QAAQ;AAAA,QAClD,EAAE,MAAM,wBAAmB,OAAO,WAAW;AAAA,QAC7C,EAAE,MAAM,iCAA0B,OAAO,UAAU;AAAA,QACnD,EAAE,MAAM,eAAU,OAAO,OAAO;AAAA,MACpC;AAAA,IACJ;AAAA,EACJ,CAAC;AAED,MAAI,WAAW,QAAQ;AACnB,WAAO,KAAK,oBAAa;AACzB,YAAQ,KAAK,CAAC;AAAA,EAClB;AAGA,MAAI,WAAW,UAAU;AACrB,UAAM,EAAE,aAAa,SAAS,IAAI,MAAM,SAAS,OAAO;AAAA,MACpD;AAAA,QACI,MAAM;AAAA,QACN,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,MACb;AAAA,MACA;AAAA,QACI,MAAM;AAAA,QACN,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,UACL,EAAE,MAAM,yCAAkC,OAAO,WAAW;AAAA,UAC5D,EAAE,MAAM,+BAAwB,OAAO,MAAM;AAAA,UAC7C,EAAE,MAAM,gCAAyB,OAAO,MAAM;AAAA,QAClD;AAAA,MACJ;AAAA,IACJ,CAAC;AAED,UAAM,cAAc,aAAa,QAAQ;AAAA,EAC7C,WAAW,WAAW,OAAO;AACzB,WAAO,KAAQ,SAAM,6CAAsC,CAAC;AAC5D,WAAO,KAAK,gCAAgC;AAAA,EAChD,WAAW,WAAW,SAAS;AAC3B,WAAO,KAAQ,QAAK,iCAA0B,CAAC;AAC/C,WAAO,KAAK,2BAA2B;AAAA,EAC3C,WAAW,WAAW,YAAY;AAC9B,UAAM,EAAE,MAAM,KAAK,IAAI,MAAM,SAAS,OAAO;AAAA,MACzC;AAAA,QACI,MAAM;AAAA,QACN,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS,CAAC,cAAc,UAAU,WAAW,MAAM;AAAA,MACvD;AAAA,MACA;AAAA,QACI,MAAM;AAAA,QACN,MAAM;AAAA,QACN,SAAS;AAAA,MACb;AAAA,IACJ,CAAC;AACD,WAAO,KAAQ,WAAQ;AAAA,oBAAkB,IAAI,KAAK,IAAI;AAAA,CAAI,CAAC;AAC3D,WAAO,KAAK,qCAAqC;AAAA,EACrD,WAAW,WAAW,WAAW;AAC7B,WAAO,KAAQ,QAAK,wCAAiC,CAAC;AACtD,WAAO,KAAK,6BAA6B;AAAA,EAC7C;AACJ,CAAC;AAGL,QACK,QAAQ,uBAAuB,EAC/B,YAAY,4BAA4B,EACxC,OAAO,6BAA6B,sCAAsC,UAAU,EACpF,OAAO,OAAO,aAAqB,YAAiB;AACjD,QAAM,cAAc,aAAa,QAAQ,QAAQ;AACrD,CAAC;AAGL,QACK,QAAQ,KAAK,EACb,YAAY,2BAA2B,EACvC,OAAO,oBAAoB,uBAAuB,YAAY,EAC9D,OAAO,oBAAoB,uBAAuB,YAAY,EAC9D,OAAO,qBAAqB,uBAAuB,MAAM,EACzD,OAAO,qBAAqB,uBAAuB,MAAM,EACzD,OAAO,cAAc,sBAAsB,EAC3C,OAAO,OAAO,YAAiB;AAC5B,SAAO,KAAQ,SAAM,mDAA4C,CAAC;AAElE,QAAM,EAAE,gBAAgB,IAAI,MAAM,OAAO,yBAAwB;AACjE,QAAM,SAAS,IAAI,gBAAgB;AAEnC,MAAI;AACA,UAAM,OAAO,MAAM;AAAA,MACf,SAAS,QAAQ;AAAA,MACjB,SAAS,QAAQ;AAAA,MACjB,SAAS,SAAS,QAAQ,IAAI;AAAA,MAC9B,SAAS,SAAS,QAAQ,OAAO;AAAA,MACjC,UAAU,QAAQ;AAAA,IACtB,CAAC;AAAA,EACL,SAAS,OAAY;AACjB,WAAO,MAAM,+BAA+B,MAAM,OAAO;AACzD,YAAQ,KAAK,CAAC;AAAA,EAClB;AACJ,CAAC;AAGL,QACK,QAAQ,OAAO,EACf,YAAY,sBAAsB,EAClC,OAAO,YAAY;AAChB,SAAO,KAAQ,QAAK,2BAA2B,CAAC;AAGhD,SAAO,KAAK,2BAA2B;AAC3C,CAAC;AAGL,QACK,QAAQ,wBAAwB,EAChC,MAAM,GAAG,EACT,YAAY,wCAAwC,EACpD,OAAO,OAAO,MAAc,SAAiB;AAC1C,SAAO,KAAQ,WAAQ,cAAc,IAAI,KAAK,IAAI,EAAE,CAAC;AAGrD,SAAO,KAAK,qCAAqC;AACrD,CAAC;AAGL,QACK,QAAQ,SAAS,EACjB,YAAY,6CAA6C,EACzD,OAAO,eAAe,oCAAoC,EAC1D,OAAO,wBAAwB,0BAA0B,YAAY,EACrE,OAAO,uBAAuB,oCAAoC,2BAA2B,EAC7F,OAAO,OAAO,YAAiB;AAC5B,QAAM,EAAE,cAAc,iBAAiB,eAAe,IAAI,MAAM,OAAO,sBAAqB;AAE5F,MAAI,QAAQ,OAAO;AACf,WAAO,KAAQ,QAAK,mCAAmC,CAAC;AACxD,UAAM,UAAU,IAAI,eAAe;AACnC,UAAM,QAAQ,MAAM;AAAA,MAChB,aAAa,QAAQ;AAAA,MACrB,YAAY,QAAQ;AAAA,IACxB,CAAC;AAAA,EACL,OAAO;AACH,WAAO,KAAQ,QAAK,0BAA0B,CAAC;AAC/C,UAAM,SAAS,IAAI,aAAa,QAAQ,OAAO;AAC/C,UAAM,cAAc,OAAO,sBAAsB;AAEjD,UAAM,YAAY,IAAI,gBAAgB;AACtC,UAAM,UAAU,SAAS;AAAA,MACrB;AAAA,MACA,YAAY,QAAQ;AAAA,IACxB,CAAC;AAAA,EACL;AACJ,CAAC;AAGL,eAAe,cAAc,aAAqB,UAAkB;AAChE,SAAO,KAAQ,QAAK,2BAA8B,QAAK,WAAW,CAAC,EAAE,CAAC;AACtE,SAAO,KAAK,aAAa,QAAQ,EAAE;AAEnC,QAAM,cAAmB,UAAK,QAAQ,IAAI,GAAG,WAAW;AAExD,MAAO,cAAW,WAAW,GAAG;AAC5B,WAAO,MAAM,aAAa,WAAW,kBAAkB;AACvD,YAAQ,KAAK,CAAC;AAAA,EAClB;AAGA,WAAS,kBAA0B;AAE/B,UAAM,gBAAgB;AAAA,MACb,UAAK,WAAW,iBAAiB;AAAA;AAAA,MACjC,UAAK,WAAW,cAAc;AAAA;AAAA,MAC9B,UAAK,QAAQ,IAAI,GAAG,WAAW;AAAA;AAAA,MAC/B,aAAQ,WAAW,MAAM,MAAM,WAAW;AAAA;AAAA,IACnD;AAEA,eAAW,KAAK,eAAe;AAC3B,UAAO,cAAW,CAAC,GAAG;AAClB,eAAO;AAAA,MACX;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAEA,QAAM,eAAe,gBAAgB;AAErC,MAAI,CAAC,cAAc;AACf,WAAO,MAAM,sCAAiC;AAC9C,WAAO,KAAK,cAAc;AAC1B,WAAO,KAAK,OAAY,UAAK,WAAW,iBAAiB,CAAC,EAAE;AAC5D,WAAO,KAAK,OAAY,UAAK,WAAW,cAAc,CAAC,EAAE;AACzD,WAAO,KAAK,OAAY,UAAK,QAAQ,IAAI,GAAG,WAAW,CAAC,EAAE;AAG1D,WAAO,KAAK,2DAAiD;AAC7D,IAAG,aAAU,aAAa,EAAE,WAAW,KAAK,CAAC;AAC7C,IAAG,aAAe,UAAK,aAAa,MAAM,GAAG,EAAE,WAAW,KAAK,CAAC;AAChE,IAAG,aAAe,UAAK,aAAa,UAAU,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,EACxE,OAAO;AACH,WAAO,KAAK,qCAA8B,YAAY,EAAE;AAExD,IAAG,aAAU,aAAa,EAAE,WAAW,KAAK,CAAC;AAC7C,IAAG,aAAe,UAAK,aAAa,MAAM,GAAG,EAAE,WAAW,KAAK,CAAC;AAChE,IAAG,aAAe,UAAK,aAAa,UAAU,GAAG,EAAE,WAAW,KAAK,CAAC;AAGpE,UAAM,kBAAuB,UAAK,cAAc,YAAY;AAC5D,UAAM,cAAmB,UAAK,aAAa,UAAU;AACrD,QAAO,cAAW,eAAe,GAAG;AAChC,MAAG,UAAO,iBAAiB,aAAa,EAAE,WAAW,KAAK,CAAC;AAC3D,aAAO,QAAQ,yBAAyB;AAAA,IAC5C,OAAO;AACH,aAAO,KAAK,4CAAkC,eAAe,EAAE;AAAA,IACnE;AAGA,UAAM,kBAAuB,UAAK,cAAc,YAAY;AAC5D,UAAM,cAAmB,UAAK,aAAa,UAAU;AACrD,QAAO,cAAW,eAAe,GAAG;AAChC,MAAG,UAAO,iBAAiB,aAAa,EAAE,WAAW,KAAK,CAAC;AAC3D,aAAO,QAAQ,yBAAyB;AAAA,IAC5C,OAAO;AACH,aAAO,KAAK,4CAAkC,eAAe,EAAE;AAAA,IACnE;AAAA,EACJ;AAGA,QAAM,cAAc;AAAA,IAChB,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS;AAAA,IACT,SAAS;AAAA,MACL,SAAS;AAAA,MACT,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU;AAAA,IACd;AAAA,IACA,iBAAiB;AAAA,MACb,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,SAAS;AAAA,IACb;AAAA,IACA,gBAAgB;AAAA,IAChB,YAAY;AAAA,MACR;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAEA,EAAG;AAAA,IACM,UAAK,aAAa,cAAc;AAAA,IACrC,KAAK,UAAU,aAAa,MAAM,CAAC;AAAA,EACvC;AAGA,QAAM,YAAY;AAAA,IACd,WAAW;AAAA,IACX,SAAS;AAAA,MACL,SAAS;AAAA,QACL,aAAa,CAAC,QAAQ;AAAA,QACtB,WAAW,CAAC,YAAY,mBAAmB,SAAS;AAAA,MACxD;AAAA,MACA,QAAQ,CAAC;AAAA,MACT,OAAO;AAAA,QACH,SAAS;AAAA,QACT,cAAc;AAAA,MAClB;AAAA,IACJ;AAAA,EACJ;AAEA,EAAG;AAAA,IACM,UAAK,aAAa,YAAY;AAAA,IACnC,KAAK,UAAU,WAAW,MAAM,CAAC;AAAA,EACrC;AAEA,SAAO,QAAQ,kCAA6B;AAC5C,SAAO,KAAK,sCAA+B;AAE3C,MAAI;AAEA,QAAI;AACA,eAAS,kBAAkB,EAAE,OAAO,SAAS,CAAC;AAAA,IAClD,QAAQ;AACJ,aAAO,KAAK,oBAAoB;AAChC,eAAS,uBAAuB,EAAE,OAAO,SAAS,CAAC;AAAA,IACvD;AAEA,aAAS,gBAAgB,EAAE,KAAK,aAAa,OAAO,UAAU,CAAC;AAC/D,WAAO,QAAQ,+BAA0B;AAEzC,WAAO,KAAQ,SAAM;AAAA,oBAAgB,WAAW,wBAAwB,CAAC;AACzE,WAAO,KAAK;AAAA;AAAA,CAAqB;AACjC,WAAO,KAAQ,QAAK,QAAQ,WAAW,EAAE,CAAC;AAC1C,WAAO,KAAQ,QAAK;AAAA,CAAc,CAAC;AAAA,EACvC,SAAS,OAAO;AACZ,WAAO,MAAM,gCAAgC;AAAA,EACjD;AACJ;AAEA,QAAQ,MAAM;","names":[]}
|
package/dist/client/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var _chunkASDXAK6Gjs = require('../chunk-ASDXAK6G.js');
|
|
5
5
|
require('../chunk-PZ5AY32C.js');
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
exports.FusionFetcher =
|
|
9
|
+
exports.FusionFetcher = _chunkASDXAK6Gjs.FusionFetcher; exports.apiFetcher = _chunkASDXAK6Gjs.apiFetcher;
|
|
10
10
|
//# sourceMappingURL=index.js.map
|
package/dist/client/index.mjs
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { a as ClientGenerator, b as CodegenWatcher, C as ControllerInfo, G as GenerateOptions, N as NestJSParser, R as RouteInfo, W as WatchOptions } from '../index-SjUaHgFr.mjs';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { a as ClientGenerator, b as CodegenWatcher, C as ControllerInfo, G as GenerateOptions, N as NestJSParser, R as RouteInfo, W as WatchOptions } from '../index-SjUaHgFr.js';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
var _chunkHU63F22Vjs = require('../chunk-HU63F22V.js');
|
|
6
|
+
require('../chunk-DW6GOKMF.js');
|
|
7
|
+
require('../chunk-PZ5AY32C.js');
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
exports.ClientGenerator = _chunkHU63F22Vjs.ClientGenerator; exports.CodegenWatcher = _chunkHU63F22Vjs.CodegenWatcher; exports.NestJSParser = _chunkHU63F22Vjs.NestJSParser;
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["c:\\Users\\ziad\\Desktop\\wexts\\packages\\dist\\codegen\\index.js"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACF,uDAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACF,2KAAC","file":"C:\\Users\\ziad\\Desktop\\wexts\\packages\\dist\\codegen\\index.js"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ClientGenerator,
|
|
3
|
+
CodegenWatcher,
|
|
4
|
+
NestJSParser
|
|
5
|
+
} from "../chunk-63MTCWU2.mjs";
|
|
6
|
+
import "../chunk-HSFLZUJN.mjs";
|
|
7
|
+
import "../chunk-CKZ4VSCB.mjs";
|
|
8
|
+
export {
|
|
9
|
+
ClientGenerator,
|
|
10
|
+
CodegenWatcher,
|
|
11
|
+
NestJSParser
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { D as DevServerConfig, F as FusionDevServer, P as ProcessConfig, a as ProcessRunner, b as ProxyConfig, c as ProxyServer } from '../index-tFGPFVfQ.mjs';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { D as DevServerConfig, F as FusionDevServer, P as ProcessConfig, a as ProcessRunner, b as ProxyConfig, c as ProxyServer } from '../index-tFGPFVfQ.js';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
var _chunkJMBD6DOPjs = require('../chunk-JMBD6DOP.js');
|
|
6
|
+
require('../chunk-DW6GOKMF.js');
|
|
7
|
+
require('../chunk-PZ5AY32C.js');
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
exports.FusionDevServer = _chunkJMBD6DOPjs.FusionDevServer; exports.ProcessRunner = _chunkJMBD6DOPjs.ProcessRunner; exports.ProxyServer = _chunkJMBD6DOPjs.ProxyServer;
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["c:\\Users\\ziad\\Desktop\\wexts\\packages\\dist\\dev-server\\index.js"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACF,uDAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACF,uKAAC","file":"C:\\Users\\ziad\\Desktop\\wexts\\packages\\dist\\dev-server\\index.js"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import {
|
|
2
|
+
FusionDevServer,
|
|
3
|
+
ProcessRunner,
|
|
4
|
+
ProxyServer
|
|
5
|
+
} from "../chunk-OTBYRUBE.mjs";
|
|
6
|
+
import "../chunk-HSFLZUJN.mjs";
|
|
7
|
+
import "../chunk-CKZ4VSCB.mjs";
|
|
8
|
+
export {
|
|
9
|
+
FusionDevServer,
|
|
10
|
+
ProcessRunner,
|
|
11
|
+
ProxyServer
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
interface RouteInfo {
|
|
2
|
+
method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
|
|
3
|
+
path: string;
|
|
4
|
+
handler: string;
|
|
5
|
+
controllerName: string;
|
|
6
|
+
}
|
|
7
|
+
interface ControllerInfo {
|
|
8
|
+
name: string;
|
|
9
|
+
prefix: string;
|
|
10
|
+
routes: RouteInfo[];
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Parse NestJS controllers to extract Fusion metadata
|
|
14
|
+
*/
|
|
15
|
+
declare class NestJSParser {
|
|
16
|
+
private projectPath;
|
|
17
|
+
private program;
|
|
18
|
+
constructor(projectPath: string);
|
|
19
|
+
/**
|
|
20
|
+
* Find all controllers with @FusionController decorator
|
|
21
|
+
*/
|
|
22
|
+
findFusionControllers(): ControllerInfo[];
|
|
23
|
+
private parseSourceFile;
|
|
24
|
+
private parseController;
|
|
25
|
+
private parseRoutes;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
interface GenerateOptions {
|
|
29
|
+
controllers: ControllerInfo[];
|
|
30
|
+
outputPath: string;
|
|
31
|
+
baseUrl?: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Generate TypeScript API client from controller metadata
|
|
35
|
+
*/
|
|
36
|
+
declare class ClientGenerator {
|
|
37
|
+
generate(options: GenerateOptions): Promise<void>;
|
|
38
|
+
private generateClientCode;
|
|
39
|
+
private generateClientClass;
|
|
40
|
+
private generateControllerMethods;
|
|
41
|
+
private generateMethodName;
|
|
42
|
+
private generateMethod;
|
|
43
|
+
private capitalize;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
interface WatchOptions {
|
|
47
|
+
projectPath: string;
|
|
48
|
+
outputPath: string;
|
|
49
|
+
pattern?: string;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Watch NestJS controllers and regenerate client on changes
|
|
53
|
+
*/
|
|
54
|
+
declare class CodegenWatcher {
|
|
55
|
+
private watcher;
|
|
56
|
+
watch(options: WatchOptions): Promise<void>;
|
|
57
|
+
stop(): Promise<void>;
|
|
58
|
+
private generateClient;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
type index_ClientGenerator = ClientGenerator;
|
|
62
|
+
declare const index_ClientGenerator: typeof ClientGenerator;
|
|
63
|
+
type index_CodegenWatcher = CodegenWatcher;
|
|
64
|
+
declare const index_CodegenWatcher: typeof CodegenWatcher;
|
|
65
|
+
type index_ControllerInfo = ControllerInfo;
|
|
66
|
+
type index_GenerateOptions = GenerateOptions;
|
|
67
|
+
type index_NestJSParser = NestJSParser;
|
|
68
|
+
declare const index_NestJSParser: typeof NestJSParser;
|
|
69
|
+
type index_RouteInfo = RouteInfo;
|
|
70
|
+
type index_WatchOptions = WatchOptions;
|
|
71
|
+
declare namespace index {
|
|
72
|
+
export { index_ClientGenerator as ClientGenerator, index_CodegenWatcher as CodegenWatcher, type index_ControllerInfo as ControllerInfo, type index_GenerateOptions as GenerateOptions, index_NestJSParser as NestJSParser, type index_RouteInfo as RouteInfo, type index_WatchOptions as WatchOptions };
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export { type ControllerInfo as C, type GenerateOptions as G, NestJSParser as N, type RouteInfo as R, type WatchOptions as W, ClientGenerator as a, CodegenWatcher as b, index as i };
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
interface RouteInfo {
|
|
2
|
+
method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
|
|
3
|
+
path: string;
|
|
4
|
+
handler: string;
|
|
5
|
+
controllerName: string;
|
|
6
|
+
}
|
|
7
|
+
interface ControllerInfo {
|
|
8
|
+
name: string;
|
|
9
|
+
prefix: string;
|
|
10
|
+
routes: RouteInfo[];
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Parse NestJS controllers to extract Fusion metadata
|
|
14
|
+
*/
|
|
15
|
+
declare class NestJSParser {
|
|
16
|
+
private projectPath;
|
|
17
|
+
private program;
|
|
18
|
+
constructor(projectPath: string);
|
|
19
|
+
/**
|
|
20
|
+
* Find all controllers with @FusionController decorator
|
|
21
|
+
*/
|
|
22
|
+
findFusionControllers(): ControllerInfo[];
|
|
23
|
+
private parseSourceFile;
|
|
24
|
+
private parseController;
|
|
25
|
+
private parseRoutes;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
interface GenerateOptions {
|
|
29
|
+
controllers: ControllerInfo[];
|
|
30
|
+
outputPath: string;
|
|
31
|
+
baseUrl?: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Generate TypeScript API client from controller metadata
|
|
35
|
+
*/
|
|
36
|
+
declare class ClientGenerator {
|
|
37
|
+
generate(options: GenerateOptions): Promise<void>;
|
|
38
|
+
private generateClientCode;
|
|
39
|
+
private generateClientClass;
|
|
40
|
+
private generateControllerMethods;
|
|
41
|
+
private generateMethodName;
|
|
42
|
+
private generateMethod;
|
|
43
|
+
private capitalize;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
interface WatchOptions {
|
|
47
|
+
projectPath: string;
|
|
48
|
+
outputPath: string;
|
|
49
|
+
pattern?: string;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Watch NestJS controllers and regenerate client on changes
|
|
53
|
+
*/
|
|
54
|
+
declare class CodegenWatcher {
|
|
55
|
+
private watcher;
|
|
56
|
+
watch(options: WatchOptions): Promise<void>;
|
|
57
|
+
stop(): Promise<void>;
|
|
58
|
+
private generateClient;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
type index_ClientGenerator = ClientGenerator;
|
|
62
|
+
declare const index_ClientGenerator: typeof ClientGenerator;
|
|
63
|
+
type index_CodegenWatcher = CodegenWatcher;
|
|
64
|
+
declare const index_CodegenWatcher: typeof CodegenWatcher;
|
|
65
|
+
type index_ControllerInfo = ControllerInfo;
|
|
66
|
+
type index_GenerateOptions = GenerateOptions;
|
|
67
|
+
type index_NestJSParser = NestJSParser;
|
|
68
|
+
declare const index_NestJSParser: typeof NestJSParser;
|
|
69
|
+
type index_RouteInfo = RouteInfo;
|
|
70
|
+
type index_WatchOptions = WatchOptions;
|
|
71
|
+
declare namespace index {
|
|
72
|
+
export { index_ClientGenerator as ClientGenerator, index_CodegenWatcher as CodegenWatcher, type index_ControllerInfo as ControllerInfo, type index_GenerateOptions as GenerateOptions, index_NestJSParser as NestJSParser, type index_RouteInfo as RouteInfo, type index_WatchOptions as WatchOptions };
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export { type ControllerInfo as C, type GenerateOptions as G, NestJSParser as N, type RouteInfo as R, type WatchOptions as W, ClientGenerator as a, CodegenWatcher as b, index as i };
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
interface DevServerConfig {
|
|
2
|
+
apiPath: string;
|
|
3
|
+
webPath: string;
|
|
4
|
+
webPort?: number;
|
|
5
|
+
apiPort?: number;
|
|
6
|
+
useProxy?: boolean;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Unified development server for Fusion projects
|
|
10
|
+
*/
|
|
11
|
+
declare class FusionDevServer {
|
|
12
|
+
private processRunner;
|
|
13
|
+
private proxyServer;
|
|
14
|
+
constructor();
|
|
15
|
+
start(config: DevServerConfig): Promise<void>;
|
|
16
|
+
stop(): void;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
interface ProcessConfig {
|
|
20
|
+
name: string;
|
|
21
|
+
command: string;
|
|
22
|
+
args: string[];
|
|
23
|
+
cwd: string;
|
|
24
|
+
color: 'cyan' | 'green' | 'yellow' | 'magenta' | 'blue';
|
|
25
|
+
env?: Record<string, string>;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Run multiple processes concurrently with colored output
|
|
29
|
+
*/
|
|
30
|
+
declare class ProcessRunner {
|
|
31
|
+
private processes;
|
|
32
|
+
private colors;
|
|
33
|
+
run(configs: ProcessConfig[]): Promise<void>;
|
|
34
|
+
private startProcess;
|
|
35
|
+
stopAll(): void;
|
|
36
|
+
isRunning(name: string): boolean;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
interface ProxyConfig {
|
|
40
|
+
port: number;
|
|
41
|
+
apiTarget: string;
|
|
42
|
+
apiPrefix: string;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Proxy server to forward API requests from Next.js to NestJS
|
|
46
|
+
*/
|
|
47
|
+
declare class ProxyServer {
|
|
48
|
+
private server;
|
|
49
|
+
private proxy;
|
|
50
|
+
start(config: ProxyConfig): Promise<void>;
|
|
51
|
+
stop(): void;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
type index_DevServerConfig = DevServerConfig;
|
|
55
|
+
type index_FusionDevServer = FusionDevServer;
|
|
56
|
+
declare const index_FusionDevServer: typeof FusionDevServer;
|
|
57
|
+
type index_ProcessConfig = ProcessConfig;
|
|
58
|
+
type index_ProcessRunner = ProcessRunner;
|
|
59
|
+
declare const index_ProcessRunner: typeof ProcessRunner;
|
|
60
|
+
type index_ProxyConfig = ProxyConfig;
|
|
61
|
+
type index_ProxyServer = ProxyServer;
|
|
62
|
+
declare const index_ProxyServer: typeof ProxyServer;
|
|
63
|
+
declare namespace index {
|
|
64
|
+
export { type index_DevServerConfig as DevServerConfig, index_FusionDevServer as FusionDevServer, type index_ProcessConfig as ProcessConfig, index_ProcessRunner as ProcessRunner, type index_ProxyConfig as ProxyConfig, index_ProxyServer as ProxyServer };
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export { type DevServerConfig as D, FusionDevServer as F, type ProcessConfig as P, ProcessRunner as a, type ProxyConfig as b, ProxyServer as c, index as i };
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
interface DevServerConfig {
|
|
2
|
+
apiPath: string;
|
|
3
|
+
webPath: string;
|
|
4
|
+
webPort?: number;
|
|
5
|
+
apiPort?: number;
|
|
6
|
+
useProxy?: boolean;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Unified development server for Fusion projects
|
|
10
|
+
*/
|
|
11
|
+
declare class FusionDevServer {
|
|
12
|
+
private processRunner;
|
|
13
|
+
private proxyServer;
|
|
14
|
+
constructor();
|
|
15
|
+
start(config: DevServerConfig): Promise<void>;
|
|
16
|
+
stop(): void;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
interface ProcessConfig {
|
|
20
|
+
name: string;
|
|
21
|
+
command: string;
|
|
22
|
+
args: string[];
|
|
23
|
+
cwd: string;
|
|
24
|
+
color: 'cyan' | 'green' | 'yellow' | 'magenta' | 'blue';
|
|
25
|
+
env?: Record<string, string>;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Run multiple processes concurrently with colored output
|
|
29
|
+
*/
|
|
30
|
+
declare class ProcessRunner {
|
|
31
|
+
private processes;
|
|
32
|
+
private colors;
|
|
33
|
+
run(configs: ProcessConfig[]): Promise<void>;
|
|
34
|
+
private startProcess;
|
|
35
|
+
stopAll(): void;
|
|
36
|
+
isRunning(name: string): boolean;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
interface ProxyConfig {
|
|
40
|
+
port: number;
|
|
41
|
+
apiTarget: string;
|
|
42
|
+
apiPrefix: string;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Proxy server to forward API requests from Next.js to NestJS
|
|
46
|
+
*/
|
|
47
|
+
declare class ProxyServer {
|
|
48
|
+
private server;
|
|
49
|
+
private proxy;
|
|
50
|
+
start(config: ProxyConfig): Promise<void>;
|
|
51
|
+
stop(): void;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
type index_DevServerConfig = DevServerConfig;
|
|
55
|
+
type index_FusionDevServer = FusionDevServer;
|
|
56
|
+
declare const index_FusionDevServer: typeof FusionDevServer;
|
|
57
|
+
type index_ProcessConfig = ProcessConfig;
|
|
58
|
+
type index_ProcessRunner = ProcessRunner;
|
|
59
|
+
declare const index_ProcessRunner: typeof ProcessRunner;
|
|
60
|
+
type index_ProxyConfig = ProxyConfig;
|
|
61
|
+
type index_ProxyServer = ProxyServer;
|
|
62
|
+
declare const index_ProxyServer: typeof ProxyServer;
|
|
63
|
+
declare namespace index {
|
|
64
|
+
export { type index_DevServerConfig as DevServerConfig, index_FusionDevServer as FusionDevServer, type index_ProcessConfig as ProcessConfig, index_ProcessRunner as ProcessRunner, type index_ProxyConfig as ProxyConfig, index_ProxyServer as ProxyServer };
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export { type DevServerConfig as D, FusionDevServer as F, type ProcessConfig as P, ProcessRunner as a, type ProxyConfig as b, ProxyServer as c, index as i };
|