eat: enhance flattener tool with improved CLI integration and custom directory support (#372)
* feat(cli): move flatten command to installer and update docs Refactor the flatten command from tools/cli.js to tools/installer/bin/bmad.js for better integration. Add support for custom input directory and improve error handling. Update documentation in README.md and working-in-the-brownfield.md to reflect new command usage. Also clean up package-lock.json and add it to .gitignore. * chore: update gitignore and add package-lock.json for installer tool Remove package-lock.json from root gitignore since it's now needed for the installer tool Add package-lock.json with dependencies for the bmad-method installer --------- Co-authored-by: Devin Stagner <devin@blackstag.family>
This commit is contained in:
13
README.md
13
README.md
@@ -126,11 +126,18 @@ The BMad-Method includes a powerful codebase flattener tool designed to prepare
|
||||
|
||||
```bash
|
||||
# Basic usage - creates flattened-codebase.xml in current directory
|
||||
npm run flatten
|
||||
npx bmad-method flatten
|
||||
|
||||
# Specify custom input directory
|
||||
npx bmad-method flatten --input /path/to/source/directory
|
||||
npx bmad-method flatten -i /path/to/source/directory
|
||||
|
||||
# Specify custom output file
|
||||
npm run flatten -- --output my-project.xml
|
||||
npm run flatten -- -o /path/to/output/codebase.xml
|
||||
npx bmad-method flatten --output my-project.xml
|
||||
npx bmad-method flatten -o /path/to/output/codebase.xml
|
||||
|
||||
# Combine input and output options
|
||||
npx bmad-method flatten --input /path/to/source --output /path/to/output/codebase.xml
|
||||
```
|
||||
|
||||
### Example Output
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
> Gemini Web's 1M+ token context window or Gemini CLI (when it's working) can analyze your ENTIRE codebase, or critical sections of it, all at once (obviously within reason):
|
||||
>
|
||||
> - Upload via GitHub URL or use gemini cli in the project folder
|
||||
> - If working in the web: use the flattener-tool to flatten your project into a single file, then upload that file to your web agent.
|
||||
> - If working in the web: use `npx bmad-method flatten` to flatten your project into a single file, then upload that file to your web agent.
|
||||
|
||||
## What is Brownfield Development?
|
||||
|
||||
@@ -27,7 +27,7 @@ If you have just completed an MVP with BMad, and you want to continue with post-
|
||||
## The Complete Brownfield Workflow
|
||||
|
||||
1. **Follow the [<ins>User Guide - Installation</ins>](user-guide.md#installation) steps to setup your agent in the web.**
|
||||
2. **Generate a 'flattened' single file of your entire codebase** run: ```npm run flatten```
|
||||
2. **Generate a 'flattened' single file of your entire codebase** run: ```npx bmad-method flatten```
|
||||
|
||||
### Choose Your Approach
|
||||
|
||||
|
||||
2448
package-lock.json
generated
2448
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -14,28 +14,26 @@ const isNpxExecution = __dirname.includes('_npx') || __dirname.includes('.npm');
|
||||
|
||||
// If running via npx, we need to handle things differently
|
||||
if (isNpxExecution) {
|
||||
// The actual bmad.js is in installer/bin/ (relative to tools directory)
|
||||
const args = process.argv.slice(2);
|
||||
|
||||
// Use the installer for all commands
|
||||
const bmadScriptPath = path.join(__dirname, 'installer', 'bin', 'bmad.js');
|
||||
|
||||
// Verify the file exists
|
||||
if (!fs.existsSync(bmadScriptPath)) {
|
||||
console.error('Error: Could not find bmad.js at', bmadScriptPath);
|
||||
console.error('Current directory:', __dirname);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
// Execute with proper working directory
|
||||
try {
|
||||
execSync(`node "${bmadScriptPath}" ${process.argv.slice(2).join(' ')}`, {
|
||||
execSync(`node "${bmadScriptPath}" ${args.join(' ')}`, {
|
||||
stdio: 'inherit',
|
||||
cwd: path.dirname(__dirname)
|
||||
});
|
||||
} catch (error) {
|
||||
// execSync will throw if the command exits with non-zero
|
||||
// But the stdio is inherited, so the error is already displayed
|
||||
process.exit(error.status || 1);
|
||||
}
|
||||
} else {
|
||||
// Local execution - just require the installer directly
|
||||
// Local execution - use installer for all commands
|
||||
require('./installer/bin/bmad.js');
|
||||
}
|
||||
@@ -149,13 +149,4 @@ program
|
||||
});
|
||||
});
|
||||
|
||||
program
|
||||
.command('flatten')
|
||||
.description('Flatten codebase to XML format')
|
||||
.option('-o, --output <path>', 'Output file path', 'flattened-codebase.xml')
|
||||
.action(async (options) => {
|
||||
const flattener = require('./flattener/main');
|
||||
await flattener.parseAsync(['flatten', '--output', options.output], { from: 'user' });
|
||||
});
|
||||
|
||||
program.parse();
|
||||
@@ -496,24 +496,35 @@ program
|
||||
.name('bmad-flatten')
|
||||
.description('BMad-Method codebase flattener tool')
|
||||
.version('1.0.0')
|
||||
.option('-i, --input <path>', 'Input directory to flatten', process.cwd())
|
||||
.option('-o, --output <path>', 'Output file path', 'flattened-codebase.xml')
|
||||
.action(async (options) => {
|
||||
console.log(`Flattening codebase to: ${options.output}`);
|
||||
const inputDir = path.resolve(options.input);
|
||||
const outputPath = path.resolve(options.output);
|
||||
|
||||
console.log(`Flattening codebase from: ${inputDir}`);
|
||||
console.log(`Output file: ${outputPath}`);
|
||||
|
||||
try {
|
||||
// Verify input directory exists
|
||||
if (!await fs.pathExists(inputDir)) {
|
||||
console.error(`❌ Error: Input directory does not exist: ${inputDir}`);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
// Import ora dynamically
|
||||
const { default: ora } = await import('ora');
|
||||
|
||||
// Start file discovery with spinner
|
||||
const discoverySpinner = ora('🔍 Discovering files...').start();
|
||||
const files = await discoverFiles(process.cwd());
|
||||
const filteredFiles = await filterFiles(files, process.cwd());
|
||||
const files = await discoverFiles(inputDir);
|
||||
const filteredFiles = await filterFiles(files, inputDir);
|
||||
discoverySpinner.succeed(`📁 Found ${filteredFiles.length} files to include`);
|
||||
|
||||
// Process files with progress tracking
|
||||
console.log('Reading file contents');
|
||||
const processingSpinner = ora('📄 Processing files...').start();
|
||||
const aggregatedContent = await aggregateFileContents(filteredFiles, process.cwd(), processingSpinner);
|
||||
const aggregatedContent = await aggregateFileContents(filteredFiles, inputDir, processingSpinner);
|
||||
processingSpinner.succeed(`✅ Processed ${aggregatedContent.processedFiles}/${filteredFiles.length} files`);
|
||||
|
||||
// Log processing results for test validation
|
||||
@@ -528,17 +539,17 @@ program
|
||||
|
||||
// Generate XML output using streaming
|
||||
const xmlSpinner = ora('🔧 Generating XML output...').start();
|
||||
await generateXMLOutput(aggregatedContent, options.output);
|
||||
await generateXMLOutput(aggregatedContent, outputPath);
|
||||
xmlSpinner.succeed('📝 XML generation completed');
|
||||
|
||||
// Calculate and display statistics
|
||||
const outputStats = await fs.stat(options.output);
|
||||
const outputStats = await fs.stat(outputPath);
|
||||
const stats = calculateStatistics(aggregatedContent, outputStats.size);
|
||||
|
||||
// Display completion summary
|
||||
console.log('\n📊 Completion Summary:');
|
||||
console.log(`✅ Successfully processed ${filteredFiles.length} files into ${options.output}`);
|
||||
console.log(`📁 Output file: ${path.resolve(options.output)}`);
|
||||
console.log(`✅ Successfully processed ${filteredFiles.length} files into ${path.basename(outputPath)}`);
|
||||
console.log(`📁 Output file: ${outputPath}`);
|
||||
console.log(`📏 Total source size: ${stats.totalSize}`);
|
||||
console.log(`📄 Generated XML size: ${stats.xmlSize}`);
|
||||
console.log(`📝 Total lines of code: ${stats.totalLines.toLocaleString()}`);
|
||||
|
||||
@@ -110,6 +110,20 @@ program
|
||||
}
|
||||
});
|
||||
|
||||
program
|
||||
.command('flatten')
|
||||
.description('Flatten codebase to XML format')
|
||||
.option('-i, --input <path>', 'Input directory to flatten', process.cwd())
|
||||
.option('-o, --output <path>', 'Output file path', 'flattened-codebase.xml')
|
||||
.action(async (options) => {
|
||||
try {
|
||||
await installer.flatten(options);
|
||||
} catch (error) {
|
||||
console.error(chalk.red('Flatten failed:'), error.message);
|
||||
process.exit(1);
|
||||
}
|
||||
});
|
||||
|
||||
async function promptInstallation() {
|
||||
|
||||
// Display ASCII logo
|
||||
|
||||
@@ -497,7 +497,7 @@ class Installer {
|
||||
case "reinstall":
|
||||
// For reinstall, don't check for modifications - just overwrite
|
||||
return await this.performReinstall(config, installDir, spinner);
|
||||
case "expansions":
|
||||
case "expansions": {
|
||||
// Ask which expansion packs to install
|
||||
const availableExpansionPacks = await resourceLocator.getExpansionPacks();
|
||||
|
||||
@@ -534,6 +534,7 @@ class Installer {
|
||||
console.log(chalk.green(` - ${packId} → .${packId}/`));
|
||||
}
|
||||
return;
|
||||
}
|
||||
case "cancel":
|
||||
console.log("Installation cancelled.");
|
||||
return;
|
||||
@@ -865,6 +866,8 @@ class Installer {
|
||||
}).join(", ");
|
||||
console.log(chalk.green(`✓ IDE rules and configurations set up for: ${ideNames}`));
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Information about web bundles
|
||||
if (!config.includeWebBundles) {
|
||||
@@ -1428,7 +1431,7 @@ class Installer {
|
||||
return config.selectedWebBundleTeams ?
|
||||
`teams: ${config.selectedWebBundleTeams.join(', ')}` :
|
||||
'selected teams';
|
||||
case 'custom':
|
||||
case 'custom': {
|
||||
const parts = [];
|
||||
if (config.selectedWebBundleTeams && config.selectedWebBundleTeams.length > 0) {
|
||||
parts.push(`teams: ${config.selectedWebBundleTeams.join(', ')}`);
|
||||
@@ -1437,6 +1440,7 @@ class Installer {
|
||||
parts.push('individual agents');
|
||||
}
|
||||
return parts.length > 0 ? parts.join(' + ') : 'custom selection';
|
||||
}
|
||||
default:
|
||||
return 'selected bundles';
|
||||
}
|
||||
@@ -1741,6 +1745,28 @@ class Installer {
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
async flatten(options) {
|
||||
const { spawn } = require('child_process');
|
||||
const flattenerPath = path.join(__dirname, '..', '..', 'flattener', 'main.js');
|
||||
|
||||
const args = [];
|
||||
if (options.input) {
|
||||
args.push('--input', options.input);
|
||||
}
|
||||
if (options.output) {
|
||||
args.push('--output', options.output);
|
||||
}
|
||||
|
||||
const child = spawn('node', [flattenerPath, ...args], {
|
||||
stdio: 'inherit',
|
||||
cwd: process.cwd()
|
||||
});
|
||||
|
||||
child.on('exit', (code) => {
|
||||
process.exit(code);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = new Installer();
|
||||
|
||||
178
tools/installer/package-lock.json
generated
178
tools/installer/package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "bmad-method",
|
||||
"version": "4.3.0",
|
||||
"version": "4.32.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "bmad-method",
|
||||
"version": "4.3.0",
|
||||
"version": "4.32.0",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"chalk": "^5.4.1",
|
||||
@@ -25,14 +25,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@inquirer/checkbox": {
|
||||
"version": "4.1.8",
|
||||
"resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.1.8.tgz",
|
||||
"integrity": "sha512-d/QAsnwuHX2OPolxvYcgSj7A9DO9H6gVOy2DvBTx+P2LH2iRTo/RSGV3iwCzW024nP9hw98KIuDmdyhZQj1UQg==",
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.2.0.tgz",
|
||||
"integrity": "sha512-fdSw07FLJEU5vbpOPzXo5c6xmMGDzbZE2+niuDHX5N6mc6V0Ebso/q3xiHra4D73+PMsC8MJmcaZKuAAoaQsSA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@inquirer/core": "^10.1.13",
|
||||
"@inquirer/figures": "^1.0.12",
|
||||
"@inquirer/type": "^3.0.7",
|
||||
"@inquirer/core": "^10.1.15",
|
||||
"@inquirer/figures": "^1.0.13",
|
||||
"@inquirer/type": "^3.0.8",
|
||||
"ansi-escapes": "^4.3.2",
|
||||
"yoctocolors-cjs": "^2.1.2"
|
||||
},
|
||||
@@ -49,13 +49,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@inquirer/confirm": {
|
||||
"version": "5.1.12",
|
||||
"resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.12.tgz",
|
||||
"integrity": "sha512-dpq+ielV9/bqgXRUbNH//KsY6WEw9DrGPmipkpmgC1Y46cwuBTNx7PXFWTjc3MQ+urcc0QxoVHcMI0FW4Ok0hg==",
|
||||
"version": "5.1.14",
|
||||
"resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.14.tgz",
|
||||
"integrity": "sha512-5yR4IBfe0kXe59r1YCTG8WXkUbl7Z35HK87Sw+WUyGD8wNUx7JvY7laahzeytyE1oLn74bQnL7hstctQxisQ8Q==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@inquirer/core": "^10.1.13",
|
||||
"@inquirer/type": "^3.0.7"
|
||||
"@inquirer/core": "^10.1.15",
|
||||
"@inquirer/type": "^3.0.8"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
@@ -70,13 +70,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@inquirer/core": {
|
||||
"version": "10.1.13",
|
||||
"resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.13.tgz",
|
||||
"integrity": "sha512-1viSxebkYN2nJULlzCxES6G9/stgHSepZ9LqqfdIGPHj5OHhiBUXVS0a6R0bEC2A+VL4D9w6QB66ebCr6HGllA==",
|
||||
"version": "10.1.15",
|
||||
"resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.15.tgz",
|
||||
"integrity": "sha512-8xrp836RZvKkpNbVvgWUlxjT4CraKk2q+I3Ksy+seI2zkcE+y6wNs1BVhgcv8VyImFecUhdQrYLdW32pAjwBdA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@inquirer/figures": "^1.0.12",
|
||||
"@inquirer/type": "^3.0.7",
|
||||
"@inquirer/figures": "^1.0.13",
|
||||
"@inquirer/type": "^3.0.8",
|
||||
"ansi-escapes": "^4.3.2",
|
||||
"cli-width": "^4.1.0",
|
||||
"mute-stream": "^2.0.0",
|
||||
@@ -97,13 +97,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@inquirer/editor": {
|
||||
"version": "4.2.13",
|
||||
"resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.13.tgz",
|
||||
"integrity": "sha512-WbicD9SUQt/K8O5Vyk9iC2ojq5RHoCLK6itpp2fHsWe44VxxcA9z3GTWlvjSTGmMQpZr+lbVmrxdHcumJoLbMA==",
|
||||
"version": "4.2.15",
|
||||
"resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.15.tgz",
|
||||
"integrity": "sha512-wst31XT8DnGOSS4nNJDIklGKnf+8shuauVrWzgKegWUe28zfCftcWZ2vktGdzJgcylWSS2SrDnYUb6alZcwnCQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@inquirer/core": "^10.1.13",
|
||||
"@inquirer/type": "^3.0.7",
|
||||
"@inquirer/core": "^10.1.15",
|
||||
"@inquirer/type": "^3.0.8",
|
||||
"external-editor": "^3.1.0"
|
||||
},
|
||||
"engines": {
|
||||
@@ -119,13 +119,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@inquirer/expand": {
|
||||
"version": "4.0.15",
|
||||
"resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.15.tgz",
|
||||
"integrity": "sha512-4Y+pbr/U9Qcvf+N/goHzPEXiHH8680lM3Dr3Y9h9FFw4gHS+zVpbj8LfbKWIb/jayIB4aSO4pWiBTrBYWkvi5A==",
|
||||
"version": "4.0.17",
|
||||
"resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.17.tgz",
|
||||
"integrity": "sha512-PSqy9VmJx/VbE3CT453yOfNa+PykpKg/0SYP7odez1/NWBGuDXgPhp4AeGYYKjhLn5lUUavVS/JbeYMPdH50Mw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@inquirer/core": "^10.1.13",
|
||||
"@inquirer/type": "^3.0.7",
|
||||
"@inquirer/core": "^10.1.15",
|
||||
"@inquirer/type": "^3.0.8",
|
||||
"yoctocolors-cjs": "^2.1.2"
|
||||
},
|
||||
"engines": {
|
||||
@@ -141,22 +141,22 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@inquirer/figures": {
|
||||
"version": "1.0.12",
|
||||
"resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.12.tgz",
|
||||
"integrity": "sha512-MJttijd8rMFcKJC8NYmprWr6hD3r9Gd9qUC0XwPNwoEPWSMVJwA2MlXxF+nhZZNMY+HXsWa+o7KY2emWYIn0jQ==",
|
||||
"version": "1.0.13",
|
||||
"resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.13.tgz",
|
||||
"integrity": "sha512-lGPVU3yO9ZNqA7vTYz26jny41lE7yoQansmqdMLBEfqaGsmdg7V3W9mK9Pvb5IL4EVZ9GnSDGMO/cJXud5dMaw==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@inquirer/input": {
|
||||
"version": "4.1.12",
|
||||
"resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.1.12.tgz",
|
||||
"integrity": "sha512-xJ6PFZpDjC+tC1P8ImGprgcsrzQRsUh9aH3IZixm1lAZFK49UGHxM3ltFfuInN2kPYNfyoPRh+tU4ftsjPLKqQ==",
|
||||
"version": "4.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.2.1.tgz",
|
||||
"integrity": "sha512-tVC+O1rBl0lJpoUZv4xY+WGWY8V5b0zxU1XDsMsIHYregdh7bN5X5QnIONNBAl0K765FYlAfNHS2Bhn7SSOVow==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@inquirer/core": "^10.1.13",
|
||||
"@inquirer/type": "^3.0.7"
|
||||
"@inquirer/core": "^10.1.15",
|
||||
"@inquirer/type": "^3.0.8"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
@@ -171,13 +171,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@inquirer/number": {
|
||||
"version": "3.0.15",
|
||||
"resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.15.tgz",
|
||||
"integrity": "sha512-xWg+iYfqdhRiM55MvqiTCleHzszpoigUpN5+t1OMcRkJrUrw7va3AzXaxvS+Ak7Gny0j2mFSTv2JJj8sMtbV2g==",
|
||||
"version": "3.0.17",
|
||||
"resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.17.tgz",
|
||||
"integrity": "sha512-GcvGHkyIgfZgVnnimURdOueMk0CztycfC8NZTiIY9arIAkeOgt6zG57G+7vC59Jns3UX27LMkPKnKWAOF5xEYg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@inquirer/core": "^10.1.13",
|
||||
"@inquirer/type": "^3.0.7"
|
||||
"@inquirer/core": "^10.1.15",
|
||||
"@inquirer/type": "^3.0.8"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
@@ -192,13 +192,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@inquirer/password": {
|
||||
"version": "4.0.15",
|
||||
"resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.15.tgz",
|
||||
"integrity": "sha512-75CT2p43DGEnfGTaqFpbDC2p2EEMrq0S+IRrf9iJvYreMy5mAWj087+mdKyLHapUEPLjN10mNvABpGbk8Wdraw==",
|
||||
"version": "4.0.17",
|
||||
"resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.17.tgz",
|
||||
"integrity": "sha512-DJolTnNeZ00E1+1TW+8614F7rOJJCM4y4BAGQ3Gq6kQIG+OJ4zr3GLjIjVVJCbKsk2jmkmv6v2kQuN/vriHdZA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@inquirer/core": "^10.1.13",
|
||||
"@inquirer/type": "^3.0.7",
|
||||
"@inquirer/core": "^10.1.15",
|
||||
"@inquirer/type": "^3.0.8",
|
||||
"ansi-escapes": "^4.3.2"
|
||||
},
|
||||
"engines": {
|
||||
@@ -214,21 +214,21 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@inquirer/prompts": {
|
||||
"version": "7.5.3",
|
||||
"resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.5.3.tgz",
|
||||
"integrity": "sha512-8YL0WiV7J86hVAxrh3fE5mDCzcTDe1670unmJRz6ArDgN+DBK1a0+rbnNWp4DUB5rPMwqD5ZP6YHl9KK1mbZRg==",
|
||||
"version": "7.7.1",
|
||||
"resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.7.1.tgz",
|
||||
"integrity": "sha512-XDxPrEWeWUBy8scAXzXuFY45r/q49R0g72bUzgQXZ1DY/xEFX+ESDMkTQolcb5jRBzaNJX2W8XQl6krMNDTjaA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@inquirer/checkbox": "^4.1.8",
|
||||
"@inquirer/confirm": "^5.1.12",
|
||||
"@inquirer/editor": "^4.2.13",
|
||||
"@inquirer/expand": "^4.0.15",
|
||||
"@inquirer/input": "^4.1.12",
|
||||
"@inquirer/number": "^3.0.15",
|
||||
"@inquirer/password": "^4.0.15",
|
||||
"@inquirer/rawlist": "^4.1.3",
|
||||
"@inquirer/search": "^3.0.15",
|
||||
"@inquirer/select": "^4.2.3"
|
||||
"@inquirer/checkbox": "^4.2.0",
|
||||
"@inquirer/confirm": "^5.1.14",
|
||||
"@inquirer/editor": "^4.2.15",
|
||||
"@inquirer/expand": "^4.0.17",
|
||||
"@inquirer/input": "^4.2.1",
|
||||
"@inquirer/number": "^3.0.17",
|
||||
"@inquirer/password": "^4.0.17",
|
||||
"@inquirer/rawlist": "^4.1.5",
|
||||
"@inquirer/search": "^3.0.17",
|
||||
"@inquirer/select": "^4.3.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
@@ -243,13 +243,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@inquirer/rawlist": {
|
||||
"version": "4.1.3",
|
||||
"resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.3.tgz",
|
||||
"integrity": "sha512-7XrV//6kwYumNDSsvJIPeAqa8+p7GJh7H5kRuxirct2cgOcSWwwNGoXDRgpNFbY/MG2vQ4ccIWCi8+IXXyFMZA==",
|
||||
"version": "4.1.5",
|
||||
"resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.5.tgz",
|
||||
"integrity": "sha512-R5qMyGJqtDdi4Ht521iAkNqyB6p2UPuZUbMifakg1sWtu24gc2Z8CJuw8rP081OckNDMgtDCuLe42Q2Kr3BolA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@inquirer/core": "^10.1.13",
|
||||
"@inquirer/type": "^3.0.7",
|
||||
"@inquirer/core": "^10.1.15",
|
||||
"@inquirer/type": "^3.0.8",
|
||||
"yoctocolors-cjs": "^2.1.2"
|
||||
},
|
||||
"engines": {
|
||||
@@ -265,14 +265,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@inquirer/search": {
|
||||
"version": "3.0.15",
|
||||
"resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.0.15.tgz",
|
||||
"integrity": "sha512-YBMwPxYBrADqyvP4nNItpwkBnGGglAvCLVW8u4pRmmvOsHUtCAUIMbUrLX5B3tFL1/WsLGdQ2HNzkqswMs5Uaw==",
|
||||
"version": "3.0.17",
|
||||
"resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.0.17.tgz",
|
||||
"integrity": "sha512-CuBU4BAGFqRYors4TNCYzy9X3DpKtgIW4Boi0WNkm4Ei1hvY9acxKdBdyqzqBCEe4YxSdaQQsasJlFlUJNgojw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@inquirer/core": "^10.1.13",
|
||||
"@inquirer/figures": "^1.0.12",
|
||||
"@inquirer/type": "^3.0.7",
|
||||
"@inquirer/core": "^10.1.15",
|
||||
"@inquirer/figures": "^1.0.13",
|
||||
"@inquirer/type": "^3.0.8",
|
||||
"yoctocolors-cjs": "^2.1.2"
|
||||
},
|
||||
"engines": {
|
||||
@@ -288,14 +288,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@inquirer/select": {
|
||||
"version": "4.2.3",
|
||||
"resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.2.3.tgz",
|
||||
"integrity": "sha512-OAGhXU0Cvh0PhLz9xTF/kx6g6x+sP+PcyTiLvCrewI99P3BBeexD+VbuwkNDvqGkk3y2h5ZiWLeRP7BFlhkUDg==",
|
||||
"version": "4.3.1",
|
||||
"resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.3.1.tgz",
|
||||
"integrity": "sha512-Gfl/5sqOF5vS/LIrSndFgOh7jgoe0UXEizDqahFRkq5aJBLegZ6WjuMh/hVEJwlFQjyLq1z9fRtvUMkb7jM1LA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@inquirer/core": "^10.1.13",
|
||||
"@inquirer/figures": "^1.0.12",
|
||||
"@inquirer/type": "^3.0.7",
|
||||
"@inquirer/core": "^10.1.15",
|
||||
"@inquirer/figures": "^1.0.13",
|
||||
"@inquirer/type": "^3.0.8",
|
||||
"ansi-escapes": "^4.3.2",
|
||||
"yoctocolors-cjs": "^2.1.2"
|
||||
},
|
||||
@@ -312,9 +312,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@inquirer/type": {
|
||||
"version": "3.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.7.tgz",
|
||||
"integrity": "sha512-PfunHQcjwnju84L+ycmcMKB/pTPIngjUJvfnRhKY6FKPuYXlM4aQCb/nIdTFR6BEhMjFvngzvng/vBAJMZpLSA==",
|
||||
"version": "3.0.8",
|
||||
"resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.8.tgz",
|
||||
"integrity": "sha512-lg9Whz8onIHRthWaN1Q9EGLa/0LFJjyM8mEUbL1eTi6yMGvBf8gvyDLtxSXztQsxMvhxxNpJYrwa1YHdq+w4Jw==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
@@ -522,17 +522,17 @@
|
||||
}
|
||||
},
|
||||
"node_modules/inquirer": {
|
||||
"version": "12.6.3",
|
||||
"resolved": "https://registry.npmjs.org/inquirer/-/inquirer-12.6.3.tgz",
|
||||
"integrity": "sha512-eX9beYAjr1MqYsIjx1vAheXsRk1jbZRvHLcBu5nA9wX0rXR1IfCZLnVLp4Ym4mrhqmh7AuANwcdtgQ291fZDfQ==",
|
||||
"version": "12.8.2",
|
||||
"resolved": "https://registry.npmjs.org/inquirer/-/inquirer-12.8.2.tgz",
|
||||
"integrity": "sha512-oBDL9f4+cDambZVJdfJu2M5JQfvaug9lbo6fKDlFV40i8t3FGA1Db67ov5Hp5DInG4zmXhHWTSnlXBntnJ7GMA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@inquirer/core": "^10.1.13",
|
||||
"@inquirer/prompts": "^7.5.3",
|
||||
"@inquirer/type": "^3.0.7",
|
||||
"@inquirer/core": "^10.1.15",
|
||||
"@inquirer/prompts": "^7.7.1",
|
||||
"@inquirer/type": "^3.0.8",
|
||||
"ansi-escapes": "^4.3.2",
|
||||
"mute-stream": "^2.0.0",
|
||||
"run-async": "^3.0.0",
|
||||
"run-async": "^4.0.5",
|
||||
"rxjs": "^7.8.2"
|
||||
},
|
||||
"engines": {
|
||||
@@ -717,9 +717,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/run-async": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz",
|
||||
"integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==",
|
||||
"version": "4.0.5",
|
||||
"resolved": "https://registry.npmjs.org/run-async/-/run-async-4.0.5.tgz",
|
||||
"integrity": "sha512-oN9GTgxUNDBumHTTDmQ8dep6VIJbgj9S3dPP+9XylVLIK4xB9XTXtKWROd5pnhdXR9k0EgO1JRcNh0T+Ny2FsA==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=0.12.0"
|
||||
|
||||
Reference in New Issue
Block a user