@veloxts/cli 0.4.2 → 0.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +4 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/db.d.ts +12 -0
- package/dist/commands/db.d.ts.map +1 -0
- package/dist/commands/db.js +18 -0
- package/dist/commands/db.js.map +1 -0
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +29 -3
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/procedures.d.ts +12 -0
- package/dist/commands/procedures.d.ts.map +1 -0
- package/dist/commands/procedures.js +153 -0
- package/dist/commands/procedures.js.map +1 -0
- package/dist/dev/hmr-runner.d.ts +52 -0
- package/dist/dev/hmr-runner.d.ts.map +1 -0
- package/dist/dev/hmr-runner.js +153 -0
- package/dist/dev/hmr-runner.js.map +1 -0
- package/dist/dev/index.d.ts +6 -0
- package/dist/dev/index.d.ts.map +1 -0
- package/dist/dev/index.js +6 -0
- package/dist/dev/index.js.map +1 -0
- package/dist/dev/watch-config.d.ts +32 -0
- package/dist/dev/watch-config.d.ts.map +1 -0
- package/dist/dev/watch-config.js +74 -0
- package/dist/dev/watch-config.js.map +1 -0
- package/dist/generators/generators/factory.d.ts +36 -0
- package/dist/generators/generators/factory.d.ts.map +1 -0
- package/dist/generators/generators/factory.js +85 -0
- package/dist/generators/generators/factory.js.map +1 -0
- package/dist/generators/generators/index.d.ts +2 -0
- package/dist/generators/generators/index.d.ts.map +1 -1
- package/dist/generators/generators/index.js +8 -0
- package/dist/generators/generators/index.js.map +1 -1
- package/dist/generators/generators/seeder.d.ts +36 -0
- package/dist/generators/generators/seeder.d.ts.map +1 -0
- package/dist/generators/generators/seeder.js +99 -0
- package/dist/generators/generators/seeder.js.map +1 -0
- package/dist/generators/templates/factory.d.ts +26 -0
- package/dist/generators/templates/factory.d.ts.map +1 -0
- package/dist/generators/templates/factory.js +125 -0
- package/dist/generators/templates/factory.js.map +1 -0
- package/dist/generators/templates/seeder.d.ts +34 -0
- package/dist/generators/templates/seeder.d.ts.map +1 -0
- package/dist/generators/templates/seeder.js +129 -0
- package/dist/generators/templates/seeder.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/seeding/commands/seed.d.ts +11 -0
- package/dist/seeding/commands/seed.d.ts.map +1 -0
- package/dist/seeding/commands/seed.js +268 -0
- package/dist/seeding/commands/seed.js.map +1 -0
- package/dist/seeding/errors.d.ts +119 -0
- package/dist/seeding/errors.d.ts.map +1 -0
- package/dist/seeding/errors.js +191 -0
- package/dist/seeding/errors.js.map +1 -0
- package/dist/seeding/factory.d.ts +162 -0
- package/dist/seeding/factory.d.ts.map +1 -0
- package/dist/seeding/factory.js +250 -0
- package/dist/seeding/factory.js.map +1 -0
- package/dist/seeding/index.d.ts +31 -0
- package/dist/seeding/index.d.ts.map +1 -0
- package/dist/seeding/index.js +41 -0
- package/dist/seeding/index.js.map +1 -0
- package/dist/seeding/loader.d.ts +41 -0
- package/dist/seeding/loader.d.ts.map +1 -0
- package/dist/seeding/loader.js +210 -0
- package/dist/seeding/loader.js.map +1 -0
- package/dist/seeding/registry.d.ts +116 -0
- package/dist/seeding/registry.d.ts.map +1 -0
- package/dist/seeding/registry.js +298 -0
- package/dist/seeding/registry.js.map +1 -0
- package/dist/seeding/runner.d.ts +88 -0
- package/dist/seeding/runner.d.ts.map +1 -0
- package/dist/seeding/runner.js +254 -0
- package/dist/seeding/runner.js.map +1 -0
- package/dist/seeding/types.d.ts +247 -0
- package/dist/seeding/types.d.ts.map +1 -0
- package/dist/seeding/types.js +7 -0
- package/dist/seeding/types.js.map +1 -0
- package/dist/utils/output.d.ts +12 -0
- package/dist/utils/output.d.ts.map +1 -1
- package/dist/utils/output.js +21 -0
- package/dist/utils/output.js.map +1 -1
- package/package.json +18 -17
- package/LICENSE +0 -21
package/dist/cli.js
CHANGED
|
@@ -5,9 +5,11 @@
|
|
|
5
5
|
* A beautiful, Laravel-inspired command-line interface for the VeloxTS Framework
|
|
6
6
|
*/
|
|
7
7
|
import { Command } from 'commander';
|
|
8
|
+
import { createDbCommand } from './commands/db.js';
|
|
8
9
|
import { createDevCommand } from './commands/dev.js';
|
|
9
10
|
import { createGenerateCommand } from './commands/generate.js';
|
|
10
11
|
import { createMigrateCommand } from './commands/migrate.js';
|
|
12
|
+
import { createProceduresCommand } from './commands/procedures.js';
|
|
11
13
|
import { CLI_VERSION } from './index.js';
|
|
12
14
|
/**
|
|
13
15
|
* Create the main CLI program
|
|
@@ -20,9 +22,11 @@ function createCLI() {
|
|
|
20
22
|
.version(CLI_VERSION, '-v, --version', 'Output the current version')
|
|
21
23
|
.helpOption('-h, --help', 'Display help for command');
|
|
22
24
|
// Register commands
|
|
25
|
+
program.addCommand(createDbCommand());
|
|
23
26
|
program.addCommand(createDevCommand(CLI_VERSION));
|
|
24
27
|
program.addCommand(createGenerateCommand());
|
|
25
28
|
program.addCommand(createMigrateCommand());
|
|
29
|
+
program.addCommand(createProceduresCommand());
|
|
26
30
|
return program;
|
|
27
31
|
}
|
|
28
32
|
/**
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC;;GAEG;AACH,SAAS,SAAS;IAChB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,OAAO,CAAC;SACb,WAAW,CAAC,sEAAsE,CAAC;SACnF,OAAO,CAAC,WAAW,EAAE,eAAe,EAAE,4BAA4B,CAAC;SACnE,UAAU,CAAC,YAAY,EAAE,0BAA0B,CAAC,CAAC;IAExD,oBAAoB;IACpB,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC;;GAEG;AACH,SAAS,SAAS;IAChB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,OAAO,CAAC;SACb,WAAW,CAAC,sEAAsE,CAAC;SACnF,OAAO,CAAC,WAAW,EAAE,eAAe,EAAE,4BAA4B,CAAC;SACnE,UAAU,CAAC,YAAY,EAAE,0BAA0B,CAAC,CAAC;IAExD,oBAAoB;IACpB,OAAO,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC,CAAC;IACtC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,UAAU,CAAC,uBAAuB,EAAE,CAAC,CAAC;IAE9C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,SAAS,EAAE,CAAC;IAE5B,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,cAAc;AACd,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DB command - Database seeding commands
|
|
3
|
+
*
|
|
4
|
+
* Provides subcommands for managing database seeding:
|
|
5
|
+
* - db:seed - Run database seeders
|
|
6
|
+
*/
|
|
7
|
+
import { Command } from 'commander';
|
|
8
|
+
/**
|
|
9
|
+
* Create the db command with subcommands
|
|
10
|
+
*/
|
|
11
|
+
export declare function createDbCommand(): Command;
|
|
12
|
+
//# sourceMappingURL=db.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/commands/db.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAMzC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DB command - Database seeding commands
|
|
3
|
+
*
|
|
4
|
+
* Provides subcommands for managing database seeding:
|
|
5
|
+
* - db:seed - Run database seeders
|
|
6
|
+
*/
|
|
7
|
+
import { Command } from 'commander';
|
|
8
|
+
import { createSeedCommand } from '../seeding/commands/seed.js';
|
|
9
|
+
/**
|
|
10
|
+
* Create the db command with subcommands
|
|
11
|
+
*/
|
|
12
|
+
export function createDbCommand() {
|
|
13
|
+
const db = new Command('db')
|
|
14
|
+
.description('Database seeding commands')
|
|
15
|
+
.addCommand(createSeedCommand());
|
|
16
|
+
return db;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=db.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/commands/db.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,EAAE,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;SACzB,WAAW,CAAC,2BAA2B,CAAC;SACxC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAEnC,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBpC;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAYzD"}
|
package/dist/commands/dev.js
CHANGED
|
@@ -7,7 +7,8 @@ import { spawn } from 'node:child_process';
|
|
|
7
7
|
import * as p from '@clack/prompts';
|
|
8
8
|
import { Command } from 'commander';
|
|
9
9
|
import pc from 'picocolors';
|
|
10
|
-
import {
|
|
10
|
+
import { buildWatchArgs, runHMRServer } from '../dev/index.js';
|
|
11
|
+
import { error, formatCommand, formatPath, info, instruction, printBanner, warning, } from '../utils/output.js';
|
|
11
12
|
import { findEntryPoint, isVeloxProject, validateEntryPath } from '../utils/paths.js';
|
|
12
13
|
/**
|
|
13
14
|
* Create the dev command
|
|
@@ -18,6 +19,9 @@ export function createDevCommand(version) {
|
|
|
18
19
|
.option('-p, --port <port>', 'Port to listen on', '3210')
|
|
19
20
|
.option('-H, --host <host>', 'Host to bind to', 'localhost')
|
|
20
21
|
.option('-e, --entry <file>', 'Entry point file (auto-detected if not specified)')
|
|
22
|
+
.option('--clear', 'Clear console on restart (default: true)', true)
|
|
23
|
+
.option('--no-clear', 'Disable console clearing on restart')
|
|
24
|
+
.option('--hmr', 'Enable experimental hot module replacement', false)
|
|
21
25
|
.action(async (options) => {
|
|
22
26
|
await runDevServer(options, version);
|
|
23
27
|
});
|
|
@@ -84,6 +88,11 @@ async function runDevServer(options, version) {
|
|
|
84
88
|
}
|
|
85
89
|
// Print startup banner
|
|
86
90
|
printBanner(version);
|
|
91
|
+
// Show HMR warning if enabled
|
|
92
|
+
if (options.hmr) {
|
|
93
|
+
warning('HMR mode is experimental. Some changes may require a full restart.');
|
|
94
|
+
console.log('');
|
|
95
|
+
}
|
|
87
96
|
info('Starting development server...');
|
|
88
97
|
console.log('');
|
|
89
98
|
// Set environment variables for the app
|
|
@@ -93,8 +102,25 @@ async function runDevServer(options, version) {
|
|
|
93
102
|
HOST: host,
|
|
94
103
|
NODE_ENV: 'development',
|
|
95
104
|
};
|
|
96
|
-
//
|
|
97
|
-
|
|
105
|
+
// Check if HMR mode is requested
|
|
106
|
+
if (options.hmr) {
|
|
107
|
+
// Run with experimental HMR
|
|
108
|
+
await runHMRServer({
|
|
109
|
+
entry: entryPoint,
|
|
110
|
+
port,
|
|
111
|
+
host,
|
|
112
|
+
env,
|
|
113
|
+
});
|
|
114
|
+
return; // HMR runner handles its own lifecycle
|
|
115
|
+
}
|
|
116
|
+
// Build watch arguments with smart ignore patterns
|
|
117
|
+
const clearScreen = options.clear !== false;
|
|
118
|
+
const watchArgs = buildWatchArgs({
|
|
119
|
+
entry: entryPoint,
|
|
120
|
+
clearScreen,
|
|
121
|
+
});
|
|
122
|
+
// Spawn tsx in watch mode with optimized file watching
|
|
123
|
+
const devProcess = spawn('npx', watchArgs, {
|
|
98
124
|
stdio: 'inherit',
|
|
99
125
|
env,
|
|
100
126
|
shell: true,
|
package/dist/commands/dev.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EACL,KAAK,EACL,aAAa,EACb,UAAU,EACV,IAAI,EACJ,WAAW,EACX,WAAW,
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Procedures command - Discover and list procedures
|
|
3
|
+
*
|
|
4
|
+
* Provides subcommands for managing procedures:
|
|
5
|
+
* - procedures:list - List all discovered procedures
|
|
6
|
+
*/
|
|
7
|
+
import { Command } from 'commander';
|
|
8
|
+
/**
|
|
9
|
+
* Create the procedures command with subcommands
|
|
10
|
+
*/
|
|
11
|
+
export declare function createProceduresCommand(): Command;
|
|
12
|
+
//# sourceMappingURL=procedures.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"procedures.d.ts","sourceRoot":"","sources":["../../src/commands/procedures.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0LpC;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,OAAO,CAMjD"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Procedures command - Discover and list procedures
|
|
3
|
+
*
|
|
4
|
+
* Provides subcommands for managing procedures:
|
|
5
|
+
* - procedures:list - List all discovered procedures
|
|
6
|
+
*/
|
|
7
|
+
import { discoverProceduresVerbose, isDiscoveryError, } from '@veloxts/router';
|
|
8
|
+
import { Command } from 'commander';
|
|
9
|
+
import pc from 'picocolors';
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// Helper Functions
|
|
12
|
+
// ============================================================================
|
|
13
|
+
/**
|
|
14
|
+
* Extract procedure info from a collection
|
|
15
|
+
*/
|
|
16
|
+
function extractProcedureInfo(collection) {
|
|
17
|
+
const procedures = [];
|
|
18
|
+
for (const [name, proc] of Object.entries(collection.procedures)) {
|
|
19
|
+
const procedure = proc;
|
|
20
|
+
procedures.push({
|
|
21
|
+
name,
|
|
22
|
+
type: procedure.type,
|
|
23
|
+
hasInput: procedure.inputSchema !== undefined,
|
|
24
|
+
hasOutput: procedure.outputSchema !== undefined,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
// Sort by name for consistent output
|
|
28
|
+
procedures.sort((a, b) => a.name.localeCompare(b.name));
|
|
29
|
+
return {
|
|
30
|
+
namespace: collection.namespace,
|
|
31
|
+
procedures,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Format HTTP method label based on procedure type and name
|
|
36
|
+
*/
|
|
37
|
+
function formatMethodLabel(name, type) {
|
|
38
|
+
// Infer HTTP method from procedure name
|
|
39
|
+
if (name.startsWith('get') || name.startsWith('find'))
|
|
40
|
+
return pc.green('GET ');
|
|
41
|
+
if (name.startsWith('list'))
|
|
42
|
+
return pc.green('GET ');
|
|
43
|
+
if (name.startsWith('create') || name.startsWith('add'))
|
|
44
|
+
return pc.yellow('POST ');
|
|
45
|
+
if (name.startsWith('update') || name.startsWith('edit'))
|
|
46
|
+
return pc.blue('PUT ');
|
|
47
|
+
if (name.startsWith('patch'))
|
|
48
|
+
return pc.cyan('PATCH ');
|
|
49
|
+
if (name.startsWith('delete') || name.startsWith('remove'))
|
|
50
|
+
return pc.red('DELETE ');
|
|
51
|
+
// Fallback to procedure type
|
|
52
|
+
return type === 'query' ? pc.green('GET ') : pc.yellow('POST ');
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Print human-readable output
|
|
56
|
+
*/
|
|
57
|
+
function printPrettyOutput(result) {
|
|
58
|
+
const totalProcedures = result.collections.reduce((sum, c) => sum + c.procedures.length, 0);
|
|
59
|
+
console.log();
|
|
60
|
+
console.log(pc.bold('Discovered Procedures'));
|
|
61
|
+
console.log(pc.dim(`─`.repeat(50)));
|
|
62
|
+
console.log();
|
|
63
|
+
for (const collection of result.collections) {
|
|
64
|
+
console.log(pc.bold(pc.cyan(`/${collection.namespace}`)));
|
|
65
|
+
for (const proc of collection.procedures) {
|
|
66
|
+
const method = formatMethodLabel(proc.name, proc.type);
|
|
67
|
+
const schemas = [];
|
|
68
|
+
if (proc.hasInput)
|
|
69
|
+
schemas.push('input');
|
|
70
|
+
if (proc.hasOutput)
|
|
71
|
+
schemas.push('output');
|
|
72
|
+
const schemaInfo = schemas.length > 0 ? pc.dim(` (${schemas.join(', ')})`) : '';
|
|
73
|
+
console.log(` ${method} ${proc.name}${schemaInfo}`);
|
|
74
|
+
}
|
|
75
|
+
console.log();
|
|
76
|
+
}
|
|
77
|
+
// Summary
|
|
78
|
+
console.log(pc.dim(`─`.repeat(50)));
|
|
79
|
+
console.log(`${pc.bold(totalProcedures.toString())} procedures in ${pc.bold(result.collections.length.toString())} collections`);
|
|
80
|
+
console.log(pc.dim(`Scanned ${result.scannedFiles} files, loaded ${result.loadedFiles} files`));
|
|
81
|
+
// Warnings
|
|
82
|
+
if (result.warnings.length > 0) {
|
|
83
|
+
console.log();
|
|
84
|
+
console.log(pc.yellow(`${result.warnings.length} warning(s):`));
|
|
85
|
+
for (const warning of result.warnings) {
|
|
86
|
+
console.log(pc.yellow(` • ${warning}`));
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
console.log();
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Print JSON output
|
|
93
|
+
*/
|
|
94
|
+
function printJsonOutput(result) {
|
|
95
|
+
console.log(JSON.stringify(result, null, 2));
|
|
96
|
+
}
|
|
97
|
+
// ============================================================================
|
|
98
|
+
// Command Implementation
|
|
99
|
+
// ============================================================================
|
|
100
|
+
/**
|
|
101
|
+
* Create the procedures:list command
|
|
102
|
+
*/
|
|
103
|
+
function createListCommand() {
|
|
104
|
+
return new Command('list')
|
|
105
|
+
.description('List all discovered procedures')
|
|
106
|
+
.option('-p, --path <path>', 'Path to procedures directory', './src/procedures')
|
|
107
|
+
.option('-r, --recursive', 'Scan subdirectories', false)
|
|
108
|
+
.option('--json', 'Output as JSON', false)
|
|
109
|
+
.action(async (options) => {
|
|
110
|
+
const proceduresPath = options.path ?? './src/procedures';
|
|
111
|
+
const discoveryOptions = {
|
|
112
|
+
recursive: options.recursive ?? false,
|
|
113
|
+
onInvalidExport: 'warn',
|
|
114
|
+
};
|
|
115
|
+
try {
|
|
116
|
+
const discovery = await discoverProceduresVerbose(proceduresPath, discoveryOptions);
|
|
117
|
+
const result = {
|
|
118
|
+
collections: discovery.collections.map(extractProcedureInfo),
|
|
119
|
+
scannedFiles: discovery.scannedFiles.length,
|
|
120
|
+
loadedFiles: discovery.loadedFiles.length,
|
|
121
|
+
warnings: discovery.warnings.map((w) => `${w.filePath}: ${w.message}`),
|
|
122
|
+
};
|
|
123
|
+
if (options.json) {
|
|
124
|
+
printJsonOutput(result);
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
printPrettyOutput(result);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
if (isDiscoveryError(error)) {
|
|
132
|
+
if (options.json) {
|
|
133
|
+
console.log(JSON.stringify({ error: error.toJSON() }, null, 2));
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
console.error(pc.red(error.format()));
|
|
137
|
+
}
|
|
138
|
+
process.exit(1);
|
|
139
|
+
}
|
|
140
|
+
throw error;
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Create the procedures command with subcommands
|
|
146
|
+
*/
|
|
147
|
+
export function createProceduresCommand() {
|
|
148
|
+
const procedures = new Command('procedures')
|
|
149
|
+
.description('Procedure discovery and management commands')
|
|
150
|
+
.addCommand(createListCommand());
|
|
151
|
+
return procedures;
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=procedures.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"procedures.js","sourceRoot":"","sources":["../../src/commands/procedures.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HMR Runner - Experimental Hot Module Replacement
|
|
3
|
+
*
|
|
4
|
+
* Uses hot-hook library to enable module replacement without full process restart.
|
|
5
|
+
* This is marked as experimental and may not work for all use cases.
|
|
6
|
+
*
|
|
7
|
+
* @see https://github.com/Julien-R44/hot-hook
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Options for the HMR runner
|
|
11
|
+
*/
|
|
12
|
+
export interface HMRRunnerOptions {
|
|
13
|
+
/** Entry point file */
|
|
14
|
+
readonly entry: string;
|
|
15
|
+
/** Port for the application */
|
|
16
|
+
readonly port: string;
|
|
17
|
+
/** Host for the application */
|
|
18
|
+
readonly host: string;
|
|
19
|
+
/** Environment variables to pass */
|
|
20
|
+
readonly env?: Record<string, string>;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* HMR Runner manages a Node.js process with hot-hook enabled
|
|
24
|
+
* for experimental hot module replacement.
|
|
25
|
+
*/
|
|
26
|
+
export declare class HMRRunner {
|
|
27
|
+
private readonly options;
|
|
28
|
+
private child;
|
|
29
|
+
private isShuttingDown;
|
|
30
|
+
private restartCount;
|
|
31
|
+
constructor(options: HMRRunnerOptions);
|
|
32
|
+
/**
|
|
33
|
+
* Start the HMR-enabled development server
|
|
34
|
+
*/
|
|
35
|
+
start(): Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* Stop the HMR runner
|
|
38
|
+
*/
|
|
39
|
+
stop(): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Restart the process (used when HMR fails)
|
|
42
|
+
*/
|
|
43
|
+
restart(): Promise<void>;
|
|
44
|
+
private printHMRBanner;
|
|
45
|
+
private spawnProcess;
|
|
46
|
+
private setupSignalHandlers;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Run the development server with HMR enabled
|
|
50
|
+
*/
|
|
51
|
+
export declare function runHMRServer(options: HMRRunnerOptions): Promise<void>;
|
|
52
|
+
//# sourceMappingURL=hmr-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hmr-runner.d.ts","sourceRoot":"","sources":["../../src/dev/hmr-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,uBAAuB;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,+BAA+B;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oCAAoC;IACpC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAED;;;GAGG;AACH,qBAAa,SAAS;IAKR,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJpC,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,YAAY,CAAK;gBAEI,OAAO,EAAE,gBAAgB;IAEtD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB3B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAe9B,OAAO,CAAC,cAAc;YAYR,YAAY;IAyD1B,OAAO,CAAC,mBAAmB;CAW5B;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAG3E"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HMR Runner - Experimental Hot Module Replacement
|
|
3
|
+
*
|
|
4
|
+
* Uses hot-hook library to enable module replacement without full process restart.
|
|
5
|
+
* This is marked as experimental and may not work for all use cases.
|
|
6
|
+
*
|
|
7
|
+
* @see https://github.com/Julien-R44/hot-hook
|
|
8
|
+
*/
|
|
9
|
+
import { spawn } from 'node:child_process';
|
|
10
|
+
import pc from 'picocolors';
|
|
11
|
+
import { error, info, warning } from '../utils/output.js';
|
|
12
|
+
/**
|
|
13
|
+
* HMR Runner manages a Node.js process with hot-hook enabled
|
|
14
|
+
* for experimental hot module replacement.
|
|
15
|
+
*/
|
|
16
|
+
export class HMRRunner {
|
|
17
|
+
options;
|
|
18
|
+
child = null;
|
|
19
|
+
isShuttingDown = false;
|
|
20
|
+
restartCount = 0;
|
|
21
|
+
constructor(options) {
|
|
22
|
+
this.options = options;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Start the HMR-enabled development server
|
|
26
|
+
*/
|
|
27
|
+
async start() {
|
|
28
|
+
this.printHMRBanner();
|
|
29
|
+
await this.spawnProcess();
|
|
30
|
+
this.setupSignalHandlers();
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Stop the HMR runner
|
|
34
|
+
*/
|
|
35
|
+
async stop() {
|
|
36
|
+
if (this.isShuttingDown)
|
|
37
|
+
return;
|
|
38
|
+
this.isShuttingDown = true;
|
|
39
|
+
if (this.child) {
|
|
40
|
+
this.child.kill('SIGTERM');
|
|
41
|
+
// Wait for graceful shutdown with timeout
|
|
42
|
+
await new Promise((resolve) => {
|
|
43
|
+
const timeout = setTimeout(() => {
|
|
44
|
+
if (this.child) {
|
|
45
|
+
this.child.kill('SIGKILL');
|
|
46
|
+
}
|
|
47
|
+
resolve();
|
|
48
|
+
}, 5000);
|
|
49
|
+
this.child?.on('exit', () => {
|
|
50
|
+
clearTimeout(timeout);
|
|
51
|
+
resolve();
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Restart the process (used when HMR fails)
|
|
58
|
+
*/
|
|
59
|
+
async restart() {
|
|
60
|
+
this.restartCount++;
|
|
61
|
+
info(`Full restart triggered (restart #${this.restartCount})`);
|
|
62
|
+
if (this.child) {
|
|
63
|
+
this.child.kill('SIGTERM');
|
|
64
|
+
await new Promise((resolve) => {
|
|
65
|
+
this.child?.on('exit', () => resolve());
|
|
66
|
+
setTimeout(resolve, 2000);
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
await this.spawnProcess();
|
|
70
|
+
}
|
|
71
|
+
printHMRBanner() {
|
|
72
|
+
console.log('');
|
|
73
|
+
console.log(pc.yellow(' ⚡ HMR Mode (Experimental)'));
|
|
74
|
+
console.log(pc.dim(' Hot module replacement enabled for:'));
|
|
75
|
+
console.log(pc.dim(' • src/procedures/**/*.ts'));
|
|
76
|
+
console.log(pc.dim(' • src/schemas/**/*.ts'));
|
|
77
|
+
console.log(pc.dim(' • src/handlers/**/*.ts'));
|
|
78
|
+
console.log('');
|
|
79
|
+
console.log(pc.dim(' Config/database changes require full restart.'));
|
|
80
|
+
console.log('');
|
|
81
|
+
}
|
|
82
|
+
async spawnProcess() {
|
|
83
|
+
const env = {
|
|
84
|
+
...process.env,
|
|
85
|
+
...this.options.env,
|
|
86
|
+
PORT: this.options.port,
|
|
87
|
+
HOST: this.options.host,
|
|
88
|
+
NODE_ENV: 'development',
|
|
89
|
+
HOT_HOOK_ENABLED: 'true',
|
|
90
|
+
};
|
|
91
|
+
// Spawn with hot-hook register via Node.js loader
|
|
92
|
+
// Note: tsx provides TypeScript support, hot-hook provides HMR
|
|
93
|
+
this.child = spawn('node', ['--import=tsx', '--import=hot-hook/register', this.options.entry], {
|
|
94
|
+
stdio: ['inherit', 'inherit', 'inherit', 'ipc'],
|
|
95
|
+
env,
|
|
96
|
+
cwd: process.cwd(),
|
|
97
|
+
});
|
|
98
|
+
// Handle IPC messages from hot-hook
|
|
99
|
+
this.child.on('message', (message) => {
|
|
100
|
+
if (typeof message === 'object' && message !== null) {
|
|
101
|
+
const msg = message;
|
|
102
|
+
if (msg.type === 'hot-hook:full-reload') {
|
|
103
|
+
// Full reload requested by hot-hook (e.g., non-boundary file changed)
|
|
104
|
+
this.restart().catch((err) => {
|
|
105
|
+
error(`Failed to restart: ${err instanceof Error ? err.message : String(err)}`);
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
else if (msg.type === 'hot-hook:error') {
|
|
109
|
+
warning(`HMR error: ${msg.error ?? 'Unknown error'}`);
|
|
110
|
+
warning('Falling back to full restart...');
|
|
111
|
+
this.restart().catch((err) => {
|
|
112
|
+
error(`Failed to restart: ${err instanceof Error ? err.message : String(err)}`);
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
else if (msg.type === 'hot-hook:update') {
|
|
116
|
+
console.log(pc.green(' ⚡ Hot updated:'), pc.dim(msg.file ?? 'unknown'));
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
this.child.on('error', (err) => {
|
|
121
|
+
error(`Process error: ${err.message}`);
|
|
122
|
+
if (!this.isShuttingDown) {
|
|
123
|
+
this.restart().catch(() => {
|
|
124
|
+
process.exit(1);
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
this.child.on('exit', (code) => {
|
|
129
|
+
if (!this.isShuttingDown && code !== 0) {
|
|
130
|
+
error(`Process exited with code ${code}`);
|
|
131
|
+
// Don't auto-restart on crash - let developer fix the issue
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
setupSignalHandlers() {
|
|
136
|
+
const shutdown = async (signal) => {
|
|
137
|
+
console.log(`\n${pc.yellow('⚠')} Received ${signal}, shutting down...`);
|
|
138
|
+
await this.stop();
|
|
139
|
+
console.log(pc.dim('HMR server stopped.'));
|
|
140
|
+
process.exit(0);
|
|
141
|
+
};
|
|
142
|
+
process.on('SIGINT', () => shutdown('SIGINT'));
|
|
143
|
+
process.on('SIGTERM', () => shutdown('SIGTERM'));
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Run the development server with HMR enabled
|
|
148
|
+
*/
|
|
149
|
+
export async function runHMRServer(options) {
|
|
150
|
+
const runner = new HMRRunner(options);
|
|
151
|
+
await runner.start();
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=hmr-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hmr-runner.js","sourceRoot":"","sources":["../../src/dev/hmr-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAqB,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAgB1D;;;GAGG;AACH,MAAM,OAAO,SAAS;IAKS;IAJrB,KAAK,GAAwB,IAAI,CAAC;IAClC,cAAc,GAAG,KAAK,CAAC;IACvB,YAAY,GAAG,CAAC,CAAC;IAEzB,YAA6B,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;IAAG,CAAC;IAE1D;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1B,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,cAAc;YAAE,OAAO;QAChC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAE3B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAE3B,0CAA0C;YAC1C,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBAClC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC9B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;wBACf,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC7B,CAAC;oBACD,OAAO,EAAE,CAAC;gBACZ,CAAC,EAAE,IAAI,CAAC,CAAC;gBAET,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;oBAC1B,YAAY,CAAC,OAAO,CAAC,CAAC;oBACtB,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,oCAAoC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QAE/D,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3B,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBAClC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;gBACxC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC5B,CAAC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;IAC5B,CAAC;IAEO,cAAc;QACpB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAEO,KAAK,CAAC,YAAY;QACxB,MAAM,GAAG,GAAG;YACV,GAAG,OAAO,CAAC,GAAG;YACd,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG;YACnB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;YACvB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;YACvB,QAAQ,EAAE,aAAa;YACvB,gBAAgB,EAAE,MAAM;SACzB,CAAC;QAEF,kDAAkD;QAClD,+DAA+D;QAC/D,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,cAAc,EAAE,4BAA4B,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC7F,KAAK,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC;YAC/C,GAAG;YACH,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;SACnB,CAAC,CAAC;QAEH,oCAAoC;QACpC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;YACnC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACpD,MAAM,GAAG,GAAG,OAA2D,CAAC;gBAExE,IAAI,GAAG,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;oBACxC,sEAAsE;oBACtE,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;wBAC3B,KAAK,CAAC,sBAAsB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAClF,CAAC,CAAC,CAAC;gBACL,CAAC;qBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;oBACzC,OAAO,CAAC,cAAc,GAAG,CAAC,KAAK,IAAI,eAAe,EAAE,CAAC,CAAC;oBACtD,OAAO,CAAC,iCAAiC,CAAC,CAAC;oBAC3C,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;wBAC3B,KAAK,CAAC,sBAAsB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAClF,CAAC,CAAC,CAAC;gBACL,CAAC;qBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;oBAC1C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC;gBAC3E,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAC7B,KAAK,CAAC,kBAAkB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;gBACzB,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;oBACxB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAC7B,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACvC,KAAK,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAC;gBAC1C,4DAA4D;YAC9D,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,mBAAmB;QACzB,MAAM,QAAQ,GAAG,KAAK,EAAE,MAAc,EAAE,EAAE;YACxC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,MAAM,oBAAoB,CAAC,CAAC;YACxE,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC;QAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC/C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IACnD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAyB;IAC1D,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dev/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dev/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Watch Configuration for Development Server
|
|
3
|
+
*
|
|
4
|
+
* Defines file patterns to ignore during development to prevent
|
|
5
|
+
* unnecessary restarts and improve developer experience.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Default patterns to ignore when watching for file changes.
|
|
9
|
+
* These patterns match files that should not trigger a restart.
|
|
10
|
+
*/
|
|
11
|
+
export declare const DEFAULT_WATCH_IGNORE: readonly string[];
|
|
12
|
+
/**
|
|
13
|
+
* Options for building watch arguments
|
|
14
|
+
*/
|
|
15
|
+
export interface WatchOptions {
|
|
16
|
+
/** Entry point file */
|
|
17
|
+
readonly entry: string;
|
|
18
|
+
/** Whether to clear screen on restart */
|
|
19
|
+
readonly clearScreen: boolean;
|
|
20
|
+
/** Patterns to ignore (defaults to DEFAULT_WATCH_IGNORE) */
|
|
21
|
+
readonly ignore?: readonly string[];
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Build command line arguments for tsx watch
|
|
25
|
+
*/
|
|
26
|
+
export declare function buildWatchArgs(options: WatchOptions): string[];
|
|
27
|
+
/**
|
|
28
|
+
* Get the essential ignore patterns (minimal set for fastest filtering)
|
|
29
|
+
* Used when full ignore list causes performance issues
|
|
30
|
+
*/
|
|
31
|
+
export declare function getEssentialIgnorePatterns(): readonly string[];
|
|
32
|
+
//# sourceMappingURL=watch-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch-config.d.ts","sourceRoot":"","sources":["../../src/dev/watch-config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,SAAS,MAAM,EAsCjD,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,uBAAuB;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,yCAAyC;IACzC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,EAAE,CAkB9D;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,SAAS,MAAM,EAAE,CAS9D"}
|