@vertz/cli 0.2.0 → 0.2.1
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/README.md +101 -107
- package/dist/index.d.ts +76 -88
- package/dist/index.js +1866 -3505
- package/dist/vertz.js +1822 -3404
- package/package.json +16 -10
package/README.md
CHANGED
|
@@ -1,132 +1,154 @@
|
|
|
1
1
|
# @vertz/cli
|
|
2
2
|
|
|
3
|
-
The `vertz`
|
|
3
|
+
The `vertz` CLI — create, develop, build, and deploy Vertz applications.
|
|
4
4
|
|
|
5
|
-
> **5-minute rule:** You should understand what this CLI does and how to use it in 5 minutes or less. If not, [open an issue](https://github.com/
|
|
5
|
+
> **5-minute rule:** You should understand what this CLI does and how to use it in 5 minutes or less. If not, [open an issue](https://github.com/vertz-dev/vertz/issues) — that's a bug in our docs.
|
|
6
6
|
|
|
7
|
-
##
|
|
8
|
-
|
|
9
|
-
`@vertz/cli` is the developer tool for Vertz projects. It's the `vertz` binary you run in your terminal. If you're looking for terminal UI building blocks (spinners, task lists, select menus), that's `@vertz/tui`.
|
|
10
|
-
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
## You want to start a new project
|
|
7
|
+
## Quick Start
|
|
14
8
|
|
|
15
9
|
```bash
|
|
10
|
+
# Create a new project
|
|
16
11
|
npx @vertz/cli create my-app
|
|
17
12
|
cd my-app
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
This scaffolds a new Vertz app with a working `src/app.ts`, config file, and dev scripts. You'll have a running server in under a minute.
|
|
21
|
-
|
|
22
|
-
Your entry point will look something like this:
|
|
23
13
|
|
|
24
|
-
|
|
25
|
-
|
|
14
|
+
# Start development
|
|
15
|
+
npx vertz dev
|
|
26
16
|
|
|
27
|
-
|
|
28
|
-
|
|
17
|
+
# Build for production
|
|
18
|
+
npx vertz build
|
|
29
19
|
```
|
|
30
20
|
|
|
31
21
|
---
|
|
32
22
|
|
|
33
|
-
##
|
|
23
|
+
## Installation
|
|
34
24
|
|
|
35
25
|
```bash
|
|
36
|
-
vertz
|
|
26
|
+
npm install @vertz/cli
|
|
27
|
+
# or
|
|
28
|
+
bun add @vertz/cli
|
|
37
29
|
```
|
|
38
30
|
|
|
39
|
-
|
|
31
|
+
**Requirements:** Node.js 22+ or Bun 1.0+
|
|
40
32
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
```bash
|
|
44
|
-
vertz dev --port 4000 # custom port
|
|
45
|
-
vertz dev --host 0.0.0.0 # expose to network
|
|
46
|
-
vertz dev --no-typecheck # skip background type-checking
|
|
47
|
-
```
|
|
33
|
+
---
|
|
48
34
|
|
|
49
|
-
|
|
50
|
-
1. Compiles your `src/` directory
|
|
51
|
-
2. Starts your server (default: `localhost:3000`)
|
|
52
|
-
3. Watches for file changes and recompiles automatically
|
|
53
|
-
4. Runs type-checking in the background so errors show inline
|
|
35
|
+
## Commands
|
|
54
36
|
|
|
55
|
-
|
|
37
|
+
### `vertz create <name>`
|
|
56
38
|
|
|
57
|
-
|
|
39
|
+
Scaffold a new Vertz project.
|
|
58
40
|
|
|
59
41
|
```bash
|
|
60
|
-
vertz
|
|
42
|
+
vertz create my-app # Create with Bun (default)
|
|
43
|
+
vertz create my-app --runtime node # Create with Node.js
|
|
44
|
+
vertz create my-app --runtime deno # Create with Deno
|
|
45
|
+
vertz create my-app --example # Include example health module
|
|
46
|
+
vertz create my-app --no-example # Exclude example (default)
|
|
61
47
|
```
|
|
62
48
|
|
|
63
|
-
|
|
49
|
+
### `vertz dev`
|
|
50
|
+
|
|
51
|
+
Start the development server with hot reload. Runs the full pipeline (analyze → generate → build → serve) and watches for file changes.
|
|
64
52
|
|
|
65
53
|
```bash
|
|
66
|
-
vertz
|
|
67
|
-
vertz
|
|
54
|
+
vertz dev # Start on localhost:3000
|
|
55
|
+
vertz dev --port 4000 # Custom port
|
|
56
|
+
vertz dev --host 0.0.0.0 # Expose to network
|
|
57
|
+
vertz dev --open # Open browser on start
|
|
58
|
+
vertz dev --no-typecheck # Disable background type-checking
|
|
59
|
+
vertz dev -v # Verbose output
|
|
68
60
|
```
|
|
69
61
|
|
|
70
|
-
|
|
62
|
+
### `vertz build`
|
|
71
63
|
|
|
72
|
-
|
|
64
|
+
Compile your project for production.
|
|
73
65
|
|
|
74
66
|
```bash
|
|
75
|
-
vertz
|
|
67
|
+
vertz build # Build for Node.js
|
|
68
|
+
vertz build --target edge # Build for edge runtime
|
|
69
|
+
vertz build --target worker # Build for worker runtime
|
|
70
|
+
vertz build --output dist # Custom output directory
|
|
71
|
+
vertz build --no-typecheck # Skip type checking
|
|
72
|
+
vertz build --no-minify # Skip minification
|
|
73
|
+
vertz build --sourcemap # Generate sourcemaps
|
|
74
|
+
vertz build -v # Verbose output
|
|
76
75
|
```
|
|
77
76
|
|
|
78
|
-
|
|
77
|
+
### `vertz check`
|
|
78
|
+
|
|
79
|
+
Type-check and validate your project without producing output. Useful in CI or as a pre-commit hook.
|
|
79
80
|
|
|
80
81
|
```bash
|
|
81
|
-
vertz check
|
|
82
|
-
vertz check --format json
|
|
82
|
+
vertz check # Text output
|
|
83
|
+
vertz check --format json # JSON output
|
|
84
|
+
vertz check --format github # GitHub Actions format
|
|
83
85
|
```
|
|
84
86
|
|
|
85
|
-
|
|
87
|
+
### `vertz generate [type] [name]`
|
|
86
88
|
|
|
87
|
-
|
|
89
|
+
Generate code scaffolds. Supports multiple types:
|
|
88
90
|
|
|
89
91
|
```bash
|
|
92
|
+
# Generate a new module
|
|
90
93
|
vertz generate module users
|
|
94
|
+
|
|
95
|
+
# Generate service/router/schema within a module
|
|
91
96
|
vertz generate service user --module users
|
|
92
97
|
vertz generate router api --module users
|
|
93
98
|
vertz generate schema user --module users
|
|
94
|
-
```
|
|
95
99
|
|
|
96
|
-
|
|
100
|
+
# Auto-discover domains and generate all (experimental)
|
|
101
|
+
vertz generate
|
|
97
102
|
|
|
98
|
-
|
|
103
|
+
# Preview without writing files
|
|
104
|
+
vertz generate module users --dry-run
|
|
105
|
+
```
|
|
99
106
|
|
|
100
|
-
|
|
107
|
+
### `vertz codegen`
|
|
101
108
|
|
|
102
|
-
|
|
109
|
+
Generate SDK and CLI clients from your compiled API.
|
|
103
110
|
|
|
104
111
|
```bash
|
|
105
|
-
vertz
|
|
112
|
+
vertz codegen # Generate clients
|
|
113
|
+
vertz codegen --dry-run # Preview without writing
|
|
114
|
+
vertz codegen --output ./sdk # Custom output directory
|
|
106
115
|
```
|
|
107
116
|
|
|
108
|
-
|
|
117
|
+
Requires `codegen` configuration in `vertz.config.ts`:
|
|
109
118
|
|
|
110
|
-
|
|
119
|
+
```ts
|
|
120
|
+
const config = {
|
|
121
|
+
codegen: {
|
|
122
|
+
output: './src/clients',
|
|
123
|
+
generators: ['typescript', 'swift', 'kotlin'],
|
|
124
|
+
},
|
|
125
|
+
};
|
|
126
|
+
```
|
|
111
127
|
|
|
112
|
-
|
|
128
|
+
### `vertz routes`
|
|
129
|
+
|
|
130
|
+
Display all routes in your application.
|
|
113
131
|
|
|
114
132
|
```bash
|
|
115
|
-
vertz routes
|
|
116
|
-
vertz routes --format json
|
|
133
|
+
vertz routes # Table format
|
|
134
|
+
vertz routes --format json # JSON output
|
|
117
135
|
```
|
|
118
136
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
---
|
|
137
|
+
### `vertz db migrate`
|
|
122
138
|
|
|
123
|
-
|
|
139
|
+
Smart database migration. Automatically chooses the right Prisma command based on environment.
|
|
124
140
|
|
|
125
141
|
```bash
|
|
126
|
-
|
|
142
|
+
vertz db migrate # Auto-detect: dev=dev, prod=deploy
|
|
143
|
+
vertz db migrate --status # Show migration status
|
|
144
|
+
vertz db migrate --create-only # Create migration file without applying
|
|
145
|
+
vertz db migrate --name my-change # Specify migration name
|
|
146
|
+
vertz db migrate --reset # Reset database (drop all tables)
|
|
147
|
+
vertz db migrate -v # Verbose output
|
|
127
148
|
```
|
|
128
149
|
|
|
129
|
-
|
|
150
|
+
In development: runs `prisma migrate dev` (applies pending + creates new if schema changed).
|
|
151
|
+
In production: runs `prisma migrate deploy` (applies pending only).
|
|
130
152
|
|
|
131
153
|
---
|
|
132
154
|
|
|
@@ -147,60 +169,24 @@ const config: CLIConfig = {
|
|
|
147
169
|
port: 3000,
|
|
148
170
|
host: 'localhost',
|
|
149
171
|
typecheck: true,
|
|
172
|
+
open: false,
|
|
150
173
|
},
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
Also supports `.js` and `.mjs`. See [Configuration Reference](#configuration-reference) for all options.
|
|
157
|
-
|
|
158
|
-
---
|
|
159
|
-
|
|
160
|
-
## Custom Generators
|
|
161
|
-
|
|
162
|
-
Extend `vertz generate` with your own templates:
|
|
163
|
-
|
|
164
|
-
```ts
|
|
165
|
-
import type { CLIConfig, GeneratorDefinition } from '@vertz/cli';
|
|
166
|
-
|
|
167
|
-
const entity: GeneratorDefinition = {
|
|
168
|
-
name: 'entity',
|
|
169
|
-
description: 'Generate a domain entity with schema and service',
|
|
170
|
-
arguments: [{ name: 'name', description: 'Entity name', required: true }],
|
|
171
|
-
options: [
|
|
172
|
-
{ name: 'timestamps', flag: '--timestamps', description: 'Include timestamp fields', default: 'true' },
|
|
173
|
-
],
|
|
174
|
-
async run({ name, sourceDir }) {
|
|
175
|
-
return [
|
|
176
|
-
{ path: `${sourceDir}/entities/${name}.schema.ts`, content: `export const ${name}Schema = s.object({});` },
|
|
177
|
-
{ path: `${sourceDir}/entities/${name}.service.ts`, content: `export class ${name}Service {}` },
|
|
178
|
-
];
|
|
174
|
+
codegen: {
|
|
175
|
+
output: './src/clients',
|
|
176
|
+
generators: ['typescript'],
|
|
179
177
|
},
|
|
180
178
|
};
|
|
181
179
|
|
|
182
|
-
const config: CLIConfig = {
|
|
183
|
-
generators: { entity },
|
|
184
|
-
};
|
|
185
|
-
|
|
186
180
|
export default config;
|
|
187
181
|
```
|
|
188
182
|
|
|
189
|
-
|
|
190
|
-
vertz generate entity product
|
|
191
|
-
vertz generate entity product --timestamps false
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
---
|
|
195
|
-
|
|
196
|
-
## Configuration Reference
|
|
183
|
+
### Configuration Reference
|
|
197
184
|
|
|
198
185
|
| Option | Type | Default | Description |
|
|
199
186
|
|--------|------|---------|-------------|
|
|
200
187
|
| `strict` | `boolean` | `false` | Treat warnings as errors |
|
|
201
|
-
| `forceGenerate` | `boolean` | `false` | Force code generation even if up-to-date |
|
|
202
188
|
| `compiler.sourceDir` | `string` | `'src'` | Source directory |
|
|
203
|
-
| `compiler.entryFile` | `string` | `'src/app.ts'` | Entry file
|
|
189
|
+
| `compiler.entryFile` | `string` | `'src/app.ts'` | Entry file |
|
|
204
190
|
| `compiler.outputDir` | `string` | `'.vertz/generated'` | Generated code output |
|
|
205
191
|
| `dev.port` | `number` | `3000` | Dev server port |
|
|
206
192
|
| `dev.host` | `string` | `'localhost'` | Dev server host |
|
|
@@ -211,7 +197,14 @@ vertz generate entity product --timestamps false
|
|
|
211
197
|
|
|
212
198
|
## Programmatic API
|
|
213
199
|
|
|
214
|
-
|
|
200
|
+
Import CLI functions for custom tooling:
|
|
201
|
+
|
|
202
|
+
```ts
|
|
203
|
+
import { buildAction, devAction, createDevLoop } from '@vertz/cli';
|
|
204
|
+
|
|
205
|
+
await buildAction({ output: './dist' });
|
|
206
|
+
await devAction({ port: 3000 });
|
|
207
|
+
```
|
|
215
208
|
|
|
216
209
|
---
|
|
217
210
|
|
|
@@ -220,6 +213,7 @@ The CLI exports its internals for custom tooling. See the [Programmatic API docs
|
|
|
220
213
|
- [`@vertz/server`](../server) — Server framework (`createServer`)
|
|
221
214
|
- [`@vertz/compiler`](../compiler) — Vertz compiler
|
|
222
215
|
- [`@vertz/codegen`](../codegen) — Code generation utilities
|
|
216
|
+
- [`@vertz/tui`](../tui) — Terminal UI components
|
|
223
217
|
|
|
224
218
|
## License
|
|
225
219
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,14 +1,8 @@
|
|
|
1
|
+
import { TaskGroup, TaskHandle, TaskRunner } from "@vertz/tui";
|
|
2
|
+
import { colors, createTaskRunner, Message, SelectList, symbols, Task, TaskList } from "@vertz/tui";
|
|
1
3
|
import { Command } from "commander";
|
|
2
4
|
declare function createCLI(): Command;
|
|
3
|
-
|
|
4
|
-
* Vertz Build Command - Production Build
|
|
5
|
-
*
|
|
6
|
-
* Production build command that orchestrates:
|
|
7
|
-
* 1. Codegen - runs the full pipeline to generate types, routes, OpenAPI
|
|
8
|
-
* 2. Typecheck - runs TypeScript compiler for type checking
|
|
9
|
-
* 3. Bundle - bundles the server for production (esbuild)
|
|
10
|
-
* 4. Manifest - generates build manifest for vertz publish
|
|
11
|
-
*/
|
|
5
|
+
import { Result } from "@vertz/errors";
|
|
12
6
|
interface BuildCommandOptions {
|
|
13
7
|
strict?: boolean;
|
|
14
8
|
output?: string;
|
|
@@ -20,26 +14,28 @@ interface BuildCommandOptions {
|
|
|
20
14
|
}
|
|
21
15
|
/**
|
|
22
16
|
* Run the build command
|
|
23
|
-
* @returns Exit code (0 for success, 1 for failure)
|
|
24
17
|
*/
|
|
25
|
-
declare function buildAction(options?: BuildCommandOptions): Promise<
|
|
18
|
+
declare function buildAction(options?: BuildCommandOptions): Promise<Result<void, Error>>;
|
|
26
19
|
import { Compiler, Diagnostic } from "@vertz/compiler";
|
|
20
|
+
import { Result as Result2 } from "@vertz/errors";
|
|
27
21
|
interface CheckOptions {
|
|
28
22
|
compiler: Compiler;
|
|
29
23
|
format: "text" | "json" | "github";
|
|
30
24
|
}
|
|
31
|
-
interface
|
|
32
|
-
success: boolean;
|
|
25
|
+
interface CheckData {
|
|
33
26
|
diagnostics: Diagnostic[];
|
|
34
27
|
output: string;
|
|
28
|
+
hasErrors: boolean;
|
|
35
29
|
}
|
|
36
|
-
declare function checkAction(options: CheckOptions): Promise<
|
|
30
|
+
declare function checkAction(options: CheckOptions): Promise<Result2<CheckData, Error>>;
|
|
31
|
+
import { Result as Result3 } from "@vertz/errors";
|
|
37
32
|
interface CreateOptions {
|
|
38
33
|
projectName?: string;
|
|
39
34
|
runtime?: string;
|
|
40
35
|
example?: boolean;
|
|
41
36
|
}
|
|
42
|
-
declare function createAction(options: CreateOptions): Promise<void
|
|
37
|
+
declare function createAction(options: CreateOptions): Promise<Result3<void, Error>>;
|
|
38
|
+
import { Result as Result4 } from "@vertz/errors";
|
|
43
39
|
import { VertzConfig } from "@vertz/compiler";
|
|
44
40
|
interface DevConfig {
|
|
45
41
|
port: number;
|
|
@@ -90,15 +86,10 @@ interface DeployOptions {
|
|
|
90
86
|
projectRoot: string;
|
|
91
87
|
dryRun?: boolean;
|
|
92
88
|
}
|
|
93
|
-
|
|
94
|
-
success: true;
|
|
89
|
+
declare function deployAction(options: DeployOptions): Result4<{
|
|
95
90
|
files: GeneratedFile[];
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
files: GeneratedFile[];
|
|
99
|
-
error: string;
|
|
100
|
-
};
|
|
101
|
-
declare function deployAction(options: DeployOptions): DeployResult;
|
|
91
|
+
}, Error>;
|
|
92
|
+
import { Result as Result5 } from "@vertz/errors";
|
|
102
93
|
import { Command as Command2 } from "commander";
|
|
103
94
|
interface DevCommandOptions {
|
|
104
95
|
port?: number;
|
|
@@ -111,11 +102,12 @@ interface DevCommandOptions {
|
|
|
111
102
|
/**
|
|
112
103
|
* Run the dev command
|
|
113
104
|
*/
|
|
114
|
-
declare function devAction(options?: DevCommandOptions): Promise<void
|
|
105
|
+
declare function devAction(options?: DevCommandOptions): Promise<Result5<void, Error>>;
|
|
115
106
|
/**
|
|
116
107
|
* Register the dev command with a Commander program
|
|
117
108
|
*/
|
|
118
109
|
declare function registerDevCommand(program: Command2): void;
|
|
110
|
+
import { Result as Result6 } from "@vertz/errors";
|
|
119
111
|
interface GenerateOptions {
|
|
120
112
|
type: string;
|
|
121
113
|
name: string;
|
|
@@ -123,16 +115,11 @@ interface GenerateOptions {
|
|
|
123
115
|
sourceDir: string;
|
|
124
116
|
dryRun?: boolean;
|
|
125
117
|
}
|
|
126
|
-
|
|
127
|
-
success: true;
|
|
128
|
-
files: GeneratedFile[];
|
|
129
|
-
} | {
|
|
130
|
-
success: false;
|
|
118
|
+
declare function generateAction(options: GenerateOptions): Result6<{
|
|
131
119
|
files: GeneratedFile[];
|
|
132
|
-
|
|
133
|
-
};
|
|
134
|
-
declare function generateAction(options: GenerateOptions): GenerateResult;
|
|
120
|
+
}, Error>;
|
|
135
121
|
import { Compiler as Compiler2, HttpMethod } from "@vertz/compiler";
|
|
122
|
+
import { Result as Result7 } from "@vertz/errors";
|
|
136
123
|
interface FlatRoute {
|
|
137
124
|
method: HttpMethod;
|
|
138
125
|
path: string;
|
|
@@ -146,28 +133,66 @@ interface RoutesOptions {
|
|
|
146
133
|
format: "table" | "json";
|
|
147
134
|
module?: string;
|
|
148
135
|
}
|
|
149
|
-
|
|
136
|
+
declare function routesAction(options: RoutesOptions): Promise<Result7<{
|
|
150
137
|
routes: FlatRoute[];
|
|
151
138
|
output: string;
|
|
139
|
+
}, Error>>;
|
|
140
|
+
import { VertzConfig as VertzConfig2 } from "@vertz/compiler";
|
|
141
|
+
declare function findConfigFile(startDir?: string): string | undefined;
|
|
142
|
+
declare function loadConfig(configPath?: string): Promise<VertzConfig2>;
|
|
143
|
+
import { CompileResult } from "@vertz/compiler";
|
|
144
|
+
interface FileChange {
|
|
145
|
+
type: "add" | "change" | "remove";
|
|
146
|
+
path: string;
|
|
147
|
+
}
|
|
148
|
+
interface Watcher {
|
|
149
|
+
on(event: "change", handler: (changes: FileChange[]) => void): void;
|
|
150
|
+
close(): void;
|
|
151
|
+
/** @internal — for testing only */
|
|
152
|
+
_emit(change: FileChange): void;
|
|
152
153
|
}
|
|
153
|
-
declare function
|
|
154
|
+
declare function createWatcher(_dir: string): Watcher;
|
|
155
|
+
interface DevLoopDeps {
|
|
156
|
+
compile(): Promise<CompileResult>;
|
|
157
|
+
startProcess(): void;
|
|
158
|
+
stopProcess(): Promise<void>;
|
|
159
|
+
onFileChange(handler: (changes: FileChange[]) => void): void;
|
|
160
|
+
onCompileSuccess(result: CompileResult): void;
|
|
161
|
+
onCompileError(result: CompileResult): void;
|
|
162
|
+
}
|
|
163
|
+
interface DevLoop {
|
|
164
|
+
start(): Promise<void>;
|
|
165
|
+
stop(): Promise<void>;
|
|
166
|
+
}
|
|
167
|
+
declare function createDevLoop(deps: DevLoopDeps): DevLoop;
|
|
168
|
+
import { ChildProcess } from "node:child_process";
|
|
169
|
+
interface ProcessManager {
|
|
170
|
+
start(entryPoint: string, env?: Record<string, string>): void;
|
|
171
|
+
stop(): Promise<void>;
|
|
172
|
+
restart(entryPoint: string, env?: Record<string, string>): Promise<void>;
|
|
173
|
+
isRunning(): boolean;
|
|
174
|
+
onOutput(handler: (data: string) => void): void;
|
|
175
|
+
onError(handler: (data: string) => void): void;
|
|
176
|
+
}
|
|
177
|
+
type SpawnFn = (entryPoint: string, env?: Record<string, string>) => ChildProcess;
|
|
178
|
+
declare function createProcessManager(spawnFn?: SpawnFn): ProcessManager;
|
|
154
179
|
import { AppIR } from "@vertz/compiler";
|
|
155
|
-
import { GenerateResult
|
|
180
|
+
import { GenerateResult } from "@vertz/codegen";
|
|
156
181
|
/**
|
|
157
182
|
* Pipeline types - Core type definitions
|
|
158
183
|
*/
|
|
159
184
|
/**
|
|
160
185
|
* Pipeline stages that can be executed
|
|
161
186
|
*/
|
|
162
|
-
type PipelineStage = "analyze" | "codegen" | "build-ui" | "db-sync";
|
|
187
|
+
type PipelineStage = "analyze" | "openapi" | "codegen" | "build-ui" | "db-sync";
|
|
163
188
|
/**
|
|
164
189
|
* File categories for smart dispatch
|
|
165
190
|
*/
|
|
166
|
-
type FileCategory = "
|
|
191
|
+
type FileCategory = "module" | "schema" | "service" | "route" | "entity" | "component" | "config" | "other";
|
|
167
192
|
/**
|
|
168
193
|
* A file change event from the watcher
|
|
169
194
|
*/
|
|
170
|
-
interface
|
|
195
|
+
interface FileChange2 {
|
|
171
196
|
type: "add" | "change" | "remove";
|
|
172
197
|
path: string;
|
|
173
198
|
category?: FileCategory;
|
|
@@ -175,11 +200,11 @@ interface FileChange {
|
|
|
175
200
|
/**
|
|
176
201
|
* Watcher interface
|
|
177
202
|
*/
|
|
178
|
-
interface
|
|
179
|
-
on(event: "change", handler: (changes:
|
|
203
|
+
interface Watcher2 {
|
|
204
|
+
on(event: "change", handler: (changes: FileChange2[]) => void): void;
|
|
180
205
|
close(): void;
|
|
181
206
|
/** @internal — for testing only */
|
|
182
|
-
_emit(change:
|
|
207
|
+
_emit(change: FileChange2): void;
|
|
183
208
|
}
|
|
184
209
|
/**
|
|
185
210
|
* Configuration for the watcher
|
|
@@ -192,15 +217,15 @@ interface WatcherConfig {
|
|
|
192
217
|
/** Debounce delay in ms */
|
|
193
218
|
debounceMs?: number;
|
|
194
219
|
/** Callback when files change */
|
|
195
|
-
onChange?: (changes:
|
|
220
|
+
onChange?: (changes: FileChange2[]) => void;
|
|
196
221
|
}
|
|
197
222
|
/**
|
|
198
223
|
* Pipeline watcher event handlers
|
|
199
224
|
*/
|
|
200
225
|
interface PipelineWatcherHandlers {
|
|
201
|
-
analyze: (changes:
|
|
202
|
-
codegen: (changes:
|
|
203
|
-
"build-ui": (changes:
|
|
226
|
+
analyze: (changes: FileChange2[]) => void;
|
|
227
|
+
codegen: (changes: FileChange2[]) => void;
|
|
228
|
+
"build-ui": (changes: FileChange2[]) => void;
|
|
204
229
|
error: (error: Error) => void;
|
|
205
230
|
}
|
|
206
231
|
/**
|
|
@@ -247,7 +272,7 @@ interface PipelineResult {
|
|
|
247
272
|
stages: StageResult[];
|
|
248
273
|
totalDurationMs: number;
|
|
249
274
|
appIR?: AppIR;
|
|
250
|
-
generatedFiles?:
|
|
275
|
+
generatedFiles?: GenerateResult;
|
|
251
276
|
}
|
|
252
277
|
/**
|
|
253
278
|
* Pipeline Orchestrator
|
|
@@ -282,6 +307,10 @@ declare class PipelineOrchestrator {
|
|
|
282
307
|
*/
|
|
283
308
|
private runAnalyze;
|
|
284
309
|
/**
|
|
310
|
+
* Run the OpenAPI generation stage
|
|
311
|
+
*/
|
|
312
|
+
private runOpenAPIGenerate;
|
|
313
|
+
/**
|
|
285
314
|
* Run the codegen stage
|
|
286
315
|
*/
|
|
287
316
|
private runCodegen;
|
|
@@ -327,45 +356,6 @@ declare function getAffectedStages(category: FileCategory): PipelineStage[];
|
|
|
327
356
|
* Create a pipeline watcher
|
|
328
357
|
*/
|
|
329
358
|
declare function createPipelineWatcher(config: WatcherConfig): PipelineWatcher;
|
|
330
|
-
import { VertzConfig as VertzConfig2 } from "@vertz/compiler";
|
|
331
|
-
declare function findConfigFile(startDir?: string): string | undefined;
|
|
332
|
-
declare function loadConfig(configPath?: string): Promise<VertzConfig2>;
|
|
333
|
-
import { CompileResult } from "@vertz/compiler";
|
|
334
|
-
interface FileChange2 {
|
|
335
|
-
type: "add" | "change" | "remove";
|
|
336
|
-
path: string;
|
|
337
|
-
}
|
|
338
|
-
interface Watcher2 {
|
|
339
|
-
on(event: "change", handler: (changes: FileChange2[]) => void): void;
|
|
340
|
-
close(): void;
|
|
341
|
-
/** @internal — for testing only */
|
|
342
|
-
_emit(change: FileChange2): void;
|
|
343
|
-
}
|
|
344
|
-
declare function createWatcher2(_dir: string): Watcher2;
|
|
345
|
-
interface DevLoopDeps {
|
|
346
|
-
compile(): Promise<CompileResult>;
|
|
347
|
-
startProcess(): void;
|
|
348
|
-
stopProcess(): Promise<void>;
|
|
349
|
-
onFileChange(handler: (changes: FileChange2[]) => void): void;
|
|
350
|
-
onCompileSuccess(result: CompileResult): void;
|
|
351
|
-
onCompileError(result: CompileResult): void;
|
|
352
|
-
}
|
|
353
|
-
interface DevLoop {
|
|
354
|
-
start(): Promise<void>;
|
|
355
|
-
stop(): Promise<void>;
|
|
356
|
-
}
|
|
357
|
-
declare function createDevLoop(deps: DevLoopDeps): DevLoop;
|
|
358
|
-
import { ChildProcess } from "node:child_process";
|
|
359
|
-
interface ProcessManager {
|
|
360
|
-
start(entryPoint: string, env?: Record<string, string>): void;
|
|
361
|
-
stop(): Promise<void>;
|
|
362
|
-
restart(entryPoint: string, env?: Record<string, string>): Promise<void>;
|
|
363
|
-
isRunning(): boolean;
|
|
364
|
-
onOutput(handler: (data: string) => void): void;
|
|
365
|
-
onError(handler: (data: string) => void): void;
|
|
366
|
-
}
|
|
367
|
-
type SpawnFn = (entryPoint: string, env?: Record<string, string>) => ChildProcess;
|
|
368
|
-
declare function createProcessManager(spawnFn?: SpawnFn): ProcessManager;
|
|
369
359
|
import React from "react";
|
|
370
360
|
interface BannerProps {
|
|
371
361
|
version: string;
|
|
@@ -386,8 +376,6 @@ declare function DiagnosticSummary({ diagnostics }: DiagnosticSummaryProps): Rea
|
|
|
386
376
|
import { Diagnostic as Diagnostic4 } from "@vertz/compiler";
|
|
387
377
|
declare function formatDiagnostic(diagnostic: Diagnostic4): string;
|
|
388
378
|
declare function formatDiagnosticSummary(diagnostics: readonly Diagnostic4[]): string;
|
|
389
|
-
import { colors, createTaskRunner, Message, SelectList, symbols, Task, TaskList } from "@vertz/tui";
|
|
390
|
-
import { TaskGroup, TaskHandle, TaskRunner } from "@vertz/tui";
|
|
391
379
|
declare function formatDuration(ms: number): string;
|
|
392
380
|
declare function formatFileSize(bytes: number): string;
|
|
393
381
|
declare function formatPath(absolutePath: string, cwd?: string): string;
|
|
@@ -396,4 +384,4 @@ declare function isCI(): boolean;
|
|
|
396
384
|
declare function requireParam(value: string | undefined, name: string): string;
|
|
397
385
|
type Runtime = "bun" | "node";
|
|
398
386
|
declare function detectRuntime(): Runtime;
|
|
399
|
-
export { symbols, routesAction, requireParam, registerDevCommand, loadConfig, isCI, getAffectedStages, generateAction, formatPath, formatFileSize, formatDuration, formatDiagnosticSummary, formatDiagnostic, findProjectRoot, findConfigFile, devAction, detectTarget, detectRuntime, deployAction, defaultCLIConfig,
|
|
387
|
+
export { symbols, routesAction, requireParam, registerDevCommand, loadConfig, isCI, getAffectedStages, generateAction, formatPath, formatFileSize, formatDuration, formatDiagnosticSummary, formatDiagnostic, findProjectRoot, findConfigFile, devAction, detectTarget, detectRuntime, deployAction, defaultCLIConfig, createWatcher, createTaskRunner, createProcessManager, createPipelineWatcher, createPipelineOrchestrator, createDevLoop, createCLI, createAction, colors, checkAction, categorizeFileChange, buildAction, Watcher2 as Watcher, TaskRunner, TaskList, TaskHandle, TaskGroup, Task, StageResult, SelectList, PipelineWatcher, PipelineStage, PipelineResult, PipelineOrchestrator, PipelineConfig, Message, GeneratorDefinition, GeneratedFile, FileChange2 as FileChange, FileCategory, DiagnosticSummary, DiagnosticDisplay, DevConfig, CLIConfig, Banner };
|