@lenne.tech/cli 0.0.123 → 0.0.125
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/build/commands/claude/claude.js +25 -0
- package/build/commands/claude/install-skill.js +93 -0
- package/build/commands/fullstack/init.js +38 -16
- package/build/commands/mongodb/collection-export.js +254 -0
- package/build/commands/mongodb/mongodb.js +27 -0
- package/build/commands/mongodb/s3-restore.js +472 -0
- package/build/commands/server/add-property.js +38 -11
- package/build/commands/server/module.js +21 -11
- package/build/commands/server/object.js +17 -9
- package/build/extensions/parse-properties.js +119 -0
- package/build/templates/claude-skills/lt-cli/SKILL.md +341 -0
- package/build/templates/claude-skills/lt-cli/examples.md +312 -0
- package/build/templates/claude-skills/lt-cli/reference.md +332 -0
- package/package.json +10 -9
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
/**
|
|
13
|
+
* Claude commands
|
|
14
|
+
*/
|
|
15
|
+
module.exports = {
|
|
16
|
+
alias: ['c'],
|
|
17
|
+
description: 'Claude commands',
|
|
18
|
+
hidden: true,
|
|
19
|
+
name: 'claude',
|
|
20
|
+
run: (toolbox) => __awaiter(void 0, void 0, void 0, function* () {
|
|
21
|
+
yield toolbox.helper.showMenu('claude');
|
|
22
|
+
return 'claude';
|
|
23
|
+
}),
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhdWRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2NsYXVkZS9jbGF1ZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFFQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxPQUFPLEdBQUc7SUFDZixLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDWixXQUFXLEVBQUUsaUJBQWlCO0lBQzlCLE1BQU0sRUFBRSxJQUFJO0lBQ1osSUFBSSxFQUFFLFFBQVE7SUFDZCxHQUFHLEVBQUUsQ0FBTyxPQUErQixFQUFFLEVBQUU7UUFDN0MsTUFBTSxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QyxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDLENBQUE7Q0FDRixDQUFDIn0=
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const os_1 = require("os");
|
|
13
|
+
const path_1 = require("path");
|
|
14
|
+
/**
|
|
15
|
+
* Install LT CLI Skill to ~/.claude/skills/lt-cli/
|
|
16
|
+
*/
|
|
17
|
+
const NewCommand = {
|
|
18
|
+
alias: ['skill', 'is'],
|
|
19
|
+
description: 'Installs the LT CLI Skill to ~/.claude/skills/ for Claude Code integration. The skill helps Claude generate correct LT CLI commands.',
|
|
20
|
+
hidden: false,
|
|
21
|
+
name: 'install-skill',
|
|
22
|
+
run: (toolbox) => __awaiter(void 0, void 0, void 0, function* () {
|
|
23
|
+
// Retrieve the tools we need
|
|
24
|
+
const { filesystem, print: { error, info, spin, success }, } = toolbox;
|
|
25
|
+
const installSpinner = spin('Installing LT CLI Skill to ~/.claude/skills/lt-cli/');
|
|
26
|
+
try {
|
|
27
|
+
// Get the CLI installation directory
|
|
28
|
+
const cliRoot = (0, path_1.join)(__dirname, '..', '..');
|
|
29
|
+
const templatesDir = (0, path_1.join)(cliRoot, 'templates', 'claude-skills', 'lt-cli');
|
|
30
|
+
// Check if templates exist
|
|
31
|
+
if (!filesystem.exists(templatesDir)) {
|
|
32
|
+
installSpinner.fail();
|
|
33
|
+
error('Skill templates not found in CLI installation.');
|
|
34
|
+
info(`Expected location: ${templatesDir}`);
|
|
35
|
+
info('Please reinstall the CLI or report this issue.');
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
// Create ~/.claude/skills/lt-cli directory
|
|
39
|
+
const skillsDir = (0, path_1.join)((0, os_1.homedir)(), '.claude', 'skills', 'lt-cli');
|
|
40
|
+
if (!filesystem.exists(skillsDir)) {
|
|
41
|
+
filesystem.dir(skillsDir);
|
|
42
|
+
}
|
|
43
|
+
// Copy all skill files
|
|
44
|
+
const skillFiles = ['SKILL.md', 'examples.md', 'reference.md'];
|
|
45
|
+
let copiedCount = 0;
|
|
46
|
+
for (const file of skillFiles) {
|
|
47
|
+
const sourcePath = (0, path_1.join)(templatesDir, file);
|
|
48
|
+
const targetPath = (0, path_1.join)(skillsDir, file);
|
|
49
|
+
if (filesystem.exists(sourcePath)) {
|
|
50
|
+
const content = filesystem.read(sourcePath);
|
|
51
|
+
filesystem.write(targetPath, content);
|
|
52
|
+
copiedCount++;
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
info(`Warning: ${file} not found in templates, skipping...`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (copiedCount === 0) {
|
|
59
|
+
installSpinner.fail();
|
|
60
|
+
error('No skill files were copied.');
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
installSpinner.succeed(`Successfully installed LT CLI Skill to ${skillsDir}`);
|
|
64
|
+
info('');
|
|
65
|
+
success('The LT CLI Skill is now available in Claude Code!');
|
|
66
|
+
info('');
|
|
67
|
+
info('Claude will automatically use this skill when you:');
|
|
68
|
+
info(' • Create server modules, objects, or properties');
|
|
69
|
+
info(' • Work with NestJS/TypeScript backend code');
|
|
70
|
+
info(' • Ask for help with LT CLI commands');
|
|
71
|
+
info('');
|
|
72
|
+
info('Try it out by asking Claude:');
|
|
73
|
+
info(' "Create a User module with email and username"');
|
|
74
|
+
info('');
|
|
75
|
+
info(`Files installed: ${copiedCount} of ${skillFiles.length}`);
|
|
76
|
+
info(`Location: ${skillsDir}`);
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
installSpinner.fail();
|
|
80
|
+
error(`Failed to install skill: ${err.message}`);
|
|
81
|
+
info('');
|
|
82
|
+
info('Troubleshooting:');
|
|
83
|
+
info(' • Ensure ~/.claude directory exists and is writable');
|
|
84
|
+
info(' • Check file permissions');
|
|
85
|
+
info(' • Try running with sudo if permission issues persist');
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
// For tests
|
|
89
|
+
return 'claude install-skill';
|
|
90
|
+
}),
|
|
91
|
+
};
|
|
92
|
+
exports.default = NewCommand;
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFsbC1za2lsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9jbGF1ZGUvaW5zdGFsbC1za2lsbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUNBLDJCQUE2QjtBQUM3QiwrQkFBNEI7QUFJNUI7O0dBRUc7QUFDSCxNQUFNLFVBQVUsR0FBbUI7SUFDakMsS0FBSyxFQUFFLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQztJQUN0QixXQUFXLEVBQUUsc0lBQXNJO0lBQ25KLE1BQU0sRUFBRSxLQUFLO0lBQ2IsSUFBSSxFQUFFLGVBQWU7SUFDckIsR0FBRyxFQUFFLENBQU8sT0FBK0IsRUFBRSxFQUFFO1FBQzdDLDZCQUE2QjtRQUM3QixNQUFNLEVBQ0osVUFBVSxFQUNWLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUN0QyxHQUFHLE9BQU8sQ0FBQztRQUVaLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO1FBRW5GLElBQUksQ0FBQztZQUNILHFDQUFxQztZQUNyQyxNQUFNLE9BQU8sR0FBRyxJQUFBLFdBQUksRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzVDLE1BQU0sWUFBWSxHQUFHLElBQUEsV0FBSSxFQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBRTNFLDJCQUEyQjtZQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO2dCQUNyQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3RCLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO2dCQUN4RCxJQUFJLENBQUMsc0JBQXNCLFlBQVksRUFBRSxDQUFDLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO2dCQUN2RCxPQUFPO1lBQ1QsQ0FBQztZQUVELDJDQUEyQztZQUMzQyxNQUFNLFNBQVMsR0FBRyxJQUFBLFdBQUksRUFBQyxJQUFBLFlBQU8sR0FBRSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDakUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDbEMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM1QixDQUFDO1lBRUQsdUJBQXVCO1lBQ3ZCLE1BQU0sVUFBVSxHQUFHLENBQUMsVUFBVSxFQUFFLGFBQWEsRUFBRSxjQUFjLENBQUMsQ0FBQztZQUMvRCxJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUM7WUFFcEIsS0FBSyxNQUFNLElBQUksSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDOUIsTUFBTSxVQUFVLEdBQUcsSUFBQSxXQUFJLEVBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUM1QyxNQUFNLFVBQVUsR0FBRyxJQUFBLFdBQUksRUFBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBRXpDLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO29CQUNsQyxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUM1QyxVQUFVLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztvQkFDdEMsV0FBVyxFQUFFLENBQUM7Z0JBQ2hCLENBQUM7cUJBQU0sQ0FBQztvQkFDTixJQUFJLENBQUMsWUFBWSxJQUFJLHNDQUFzQyxDQUFDLENBQUM7Z0JBQy9ELENBQUM7WUFDSCxDQUFDO1lBRUQsSUFBSSxXQUFXLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3RCLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDdEIsS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7Z0JBQ3JDLE9BQU87WUFDVCxDQUFDO1lBRUQsY0FBYyxDQUFDLE9BQU8sQ0FBQywwQ0FBMEMsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUM5RSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDVCxPQUFPLENBQUMsbURBQW1ELENBQUMsQ0FBQztZQUM3RCxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDVCxJQUFJLENBQUMsb0RBQW9ELENBQUMsQ0FBQztZQUMzRCxJQUFJLENBQUMsbURBQW1ELENBQUMsQ0FBQztZQUMxRCxJQUFJLENBQUMsOENBQThDLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsdUNBQXVDLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDVCxJQUFJLENBQUMsOEJBQThCLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsa0RBQWtELENBQUMsQ0FBQztZQUN6RCxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDVCxJQUFJLENBQUMsb0JBQW9CLFdBQVcsT0FBTyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUNoRSxJQUFJLENBQUMsYUFBYSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRWpDLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3RCLEtBQUssQ0FBQyw0QkFBNEIsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ1QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLHVEQUF1RCxDQUFDLENBQUM7WUFDOUQsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUM7WUFDbkMsSUFBSSxDQUFDLHdEQUF3RCxDQUFDLENBQUM7WUFDL0QsT0FBTztRQUNULENBQUM7UUFFRCxZQUFZO1FBQ1osT0FBTyxzQkFBc0IsQ0FBQztJQUNoQyxDQUFDLENBQUE7Q0FDRixDQUFDO0FBRUYsa0JBQWUsVUFBVSxDQUFDIn0=
|
|
@@ -15,7 +15,7 @@ const gluegun_1 = require("gluegun");
|
|
|
15
15
|
*/
|
|
16
16
|
const NewCommand = {
|
|
17
17
|
alias: ['init'],
|
|
18
|
-
description: 'Creates a new fullstack workspace',
|
|
18
|
+
description: 'Creates a new fullstack workspace. Use --name <WorkspaceName>, --frontend (angular|nuxt), --git (true|false), --git-link <GitURL> for non-interactive mode.',
|
|
19
19
|
hidden: false,
|
|
20
20
|
name: 'init',
|
|
21
21
|
run: (toolbox) => __awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -29,11 +29,13 @@ const NewCommand = {
|
|
|
29
29
|
if (!(yield git.gitInstalled())) {
|
|
30
30
|
return;
|
|
31
31
|
}
|
|
32
|
+
// Parse CLI arguments
|
|
33
|
+
const { frontend: cliFrontend, git: cliGit, 'git-link': cliGitLink, name: cliName } = parameters.options;
|
|
32
34
|
// Get name of the workspace
|
|
33
|
-
const name = yield helper.getInput(parameters.first, {
|
|
35
|
+
const name = cliName || (yield helper.getInput(parameters.first, {
|
|
34
36
|
name: 'workspace name',
|
|
35
37
|
showError: true,
|
|
36
|
-
});
|
|
38
|
+
}));
|
|
37
39
|
if (!name) {
|
|
38
40
|
return;
|
|
39
41
|
}
|
|
@@ -45,23 +47,43 @@ const NewCommand = {
|
|
|
45
47
|
error(`There's already a folder named "${projectDir}" here.`);
|
|
46
48
|
return undefined;
|
|
47
49
|
}
|
|
48
|
-
let frontend
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}
|
|
56
|
-
else if (frontend === 'n') {
|
|
57
|
-
frontend = 'nuxt';
|
|
50
|
+
let frontend;
|
|
51
|
+
if (cliFrontend) {
|
|
52
|
+
frontend = cliFrontend === 'angular' ? 'angular' : cliFrontend === 'nuxt' ? 'nuxt' : null;
|
|
53
|
+
if (!frontend) {
|
|
54
|
+
error('Invalid frontend option. Use "angular" or "nuxt".');
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
58
57
|
}
|
|
59
58
|
else {
|
|
60
|
-
|
|
59
|
+
frontend = (yield ask({
|
|
60
|
+
message: 'Angular (a) or Nuxt 3 (n)',
|
|
61
|
+
name: 'frontend',
|
|
62
|
+
type: 'input',
|
|
63
|
+
})).frontend;
|
|
64
|
+
if (frontend === 'a') {
|
|
65
|
+
frontend = 'angular';
|
|
66
|
+
}
|
|
67
|
+
else if (frontend === 'n') {
|
|
68
|
+
frontend = 'nuxt';
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
process.exit();
|
|
72
|
+
}
|
|
61
73
|
}
|
|
62
74
|
let addToGit = false;
|
|
63
75
|
let gitLink;
|
|
64
|
-
if (
|
|
76
|
+
if (cliGit !== undefined) {
|
|
77
|
+
addToGit = cliGit === 'true' || cliGit === true;
|
|
78
|
+
if (addToGit && cliGitLink) {
|
|
79
|
+
gitLink = cliGitLink;
|
|
80
|
+
}
|
|
81
|
+
else if (addToGit) {
|
|
82
|
+
error('--git-link is required when --git is true');
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
else if (parameters.third !== 'false') {
|
|
65
87
|
addToGit = parameters.third === 'true' || (yield confirm('Add workspace to a new git repository?'));
|
|
66
88
|
// Check if git init is active
|
|
67
89
|
if (addToGit) {
|
|
@@ -167,4 +189,4 @@ const NewCommand = {
|
|
|
167
189
|
}),
|
|
168
190
|
};
|
|
169
191
|
exports.default = NewCommand;
|
|
170
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
192
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9mdWxsc3RhY2svaW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBLHFDQUFtRDtBQUtuRDs7R0FFRztBQUNILE1BQU0sVUFBVSxHQUFtQjtJQUNqQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUM7SUFDZixXQUFXLEVBQUUsNkpBQTZKO0lBQzFLLE1BQU0sRUFBRSxLQUFLO0lBQ2IsSUFBSSxFQUFFLE1BQU07SUFDWixHQUFHLEVBQUUsQ0FBTyxPQUErQixFQUFFLEVBQUU7UUFDN0MsNkJBQTZCO1FBQzdCLE1BQU0sRUFDSixVQUFVLEVBQ1YsR0FBRyxFQUNILE1BQU0sRUFDTixVQUFVLEVBQ1YsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQ3JDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFDeEIsTUFBTSxFQUNOLE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUN0QixNQUFNLEdBQ1AsR0FBRyxPQUFPLENBQUM7UUFFWixjQUFjO1FBQ2QsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRWxDLE9BQU87UUFDUCxJQUFJLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUV6QyxZQUFZO1FBQ1osSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2hDLE9BQU87UUFDVCxDQUFDO1FBRUQsc0JBQXNCO1FBQ3RCLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQztRQUV6Ryw0QkFBNEI7UUFDNUIsTUFBTSxJQUFJLEdB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
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const fs = require("fs");
|
|
13
|
+
const path = require("path");
|
|
14
|
+
const util_1 = require("util");
|
|
15
|
+
const execAsync = (0, util_1.promisify)(require('child_process').exec);
|
|
16
|
+
/**
|
|
17
|
+
* Export MongoDB collection to JSON file
|
|
18
|
+
*/
|
|
19
|
+
const command = {
|
|
20
|
+
alias: ['ce'],
|
|
21
|
+
description: 'Export MongoDB collection to JSON file',
|
|
22
|
+
name: 'collection-export',
|
|
23
|
+
run: (toolbox) => __awaiter(void 0, void 0, void 0, function* () {
|
|
24
|
+
const { helper, parameters, print: { error, info, spin, success, warning }, prompt, system, } = toolbox;
|
|
25
|
+
// Start timer
|
|
26
|
+
const timer = system.startTimer();
|
|
27
|
+
info('MongoDB Collection Export');
|
|
28
|
+
info('');
|
|
29
|
+
// ============================================================================
|
|
30
|
+
// Step 1: MongoDB Connection
|
|
31
|
+
// ============================================================================
|
|
32
|
+
info('Step 1: MongoDB Connection');
|
|
33
|
+
info('');
|
|
34
|
+
const mongoUri = yield helper.getInput(parameters.options.mongoUri || process.env.MONGO_URI || 'mongodb://127.0.0.1:27017', {
|
|
35
|
+
initial: 'mongodb://127.0.0.1:27017',
|
|
36
|
+
name: 'MongoDB Connection URI',
|
|
37
|
+
showError: true,
|
|
38
|
+
});
|
|
39
|
+
if (!mongoUri) {
|
|
40
|
+
error('MongoDB URI is required');
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
// ============================================================================
|
|
44
|
+
// Step 2: List Databases
|
|
45
|
+
// ============================================================================
|
|
46
|
+
info('');
|
|
47
|
+
info('Step 2: Fetching databases...');
|
|
48
|
+
info('');
|
|
49
|
+
let databases = [];
|
|
50
|
+
const systemDatabases = ['admin', 'local', 'config'];
|
|
51
|
+
try {
|
|
52
|
+
const listDbSpin = spin('Listing databases');
|
|
53
|
+
// Use mongo shell to list databases
|
|
54
|
+
const listDbCommand = `mongosh "${mongoUri}" --quiet --eval "JSON.stringify(db.adminCommand('listDatabases').databases.map(d => d.name))"`;
|
|
55
|
+
const { stdout } = yield execAsync(listDbCommand);
|
|
56
|
+
const allDatabases = JSON.parse(stdout.trim());
|
|
57
|
+
// Filter out system databases
|
|
58
|
+
databases = allDatabases.filter((db) => !systemDatabases.includes(db));
|
|
59
|
+
if (databases.length === 0) {
|
|
60
|
+
listDbSpin.fail('No user databases found');
|
|
61
|
+
warning('Only system databases (admin, local, config) are available');
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
listDbSpin.succeed(`Found ${databases.length} database(s)`);
|
|
65
|
+
}
|
|
66
|
+
catch (err) {
|
|
67
|
+
error(`Failed to list databases: ${err.message}`);
|
|
68
|
+
info('');
|
|
69
|
+
info('Please ensure:');
|
|
70
|
+
info('- MongoDB is running and accessible');
|
|
71
|
+
info('- mongosh (MongoDB Shell) is installed');
|
|
72
|
+
info('- The MongoDB URI is correct');
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
// ============================================================================
|
|
76
|
+
// Step 3: Select Database
|
|
77
|
+
// ============================================================================
|
|
78
|
+
info('');
|
|
79
|
+
info('Step 3: Select database');
|
|
80
|
+
info('');
|
|
81
|
+
let selectedDatabase;
|
|
82
|
+
if (parameters.options.database) {
|
|
83
|
+
selectedDatabase = parameters.options.database;
|
|
84
|
+
if (!databases.includes(selectedDatabase)) {
|
|
85
|
+
error(`Database "${selectedDatabase}" not found`);
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
success(`Using database: ${selectedDatabase}`);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
const { database } = yield prompt.ask({
|
|
92
|
+
choices: databases,
|
|
93
|
+
initial: 0,
|
|
94
|
+
message: 'Select database:',
|
|
95
|
+
name: 'database',
|
|
96
|
+
type: 'select',
|
|
97
|
+
});
|
|
98
|
+
if (!database) {
|
|
99
|
+
error('No database selected');
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
selectedDatabase = database;
|
|
103
|
+
success(`Selected database: ${selectedDatabase}`);
|
|
104
|
+
}
|
|
105
|
+
// ============================================================================
|
|
106
|
+
// Step 4: List Collections
|
|
107
|
+
// ============================================================================
|
|
108
|
+
info('');
|
|
109
|
+
info('Step 4: Fetching collections...');
|
|
110
|
+
info('');
|
|
111
|
+
let collections = [];
|
|
112
|
+
try {
|
|
113
|
+
const listCollSpin = spin('Listing collections');
|
|
114
|
+
// Use mongo shell to list collections
|
|
115
|
+
const listCollCommand = `mongosh "${mongoUri}/${selectedDatabase}" --quiet --eval "JSON.stringify(db.getCollectionNames())"`;
|
|
116
|
+
const { stdout } = yield execAsync(listCollCommand);
|
|
117
|
+
collections = JSON.parse(stdout.trim());
|
|
118
|
+
if (collections.length === 0) {
|
|
119
|
+
listCollSpin.fail('No collections found in this database');
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
listCollSpin.succeed(`Found ${collections.length} collection(s)`);
|
|
123
|
+
}
|
|
124
|
+
catch (err) {
|
|
125
|
+
error(`Failed to list collections: ${err.message}`);
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
// ============================================================================
|
|
129
|
+
// Step 5: Select Collection
|
|
130
|
+
// ============================================================================
|
|
131
|
+
info('');
|
|
132
|
+
info('Step 5: Select collection');
|
|
133
|
+
info('');
|
|
134
|
+
let selectedCollection;
|
|
135
|
+
if (parameters.options.collection) {
|
|
136
|
+
selectedCollection = parameters.options.collection;
|
|
137
|
+
if (!collections.includes(selectedCollection)) {
|
|
138
|
+
error(`Collection "${selectedCollection}" not found`);
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
success(`Using collection: ${selectedCollection}`);
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
const { collection } = yield prompt.ask({
|
|
145
|
+
choices: collections,
|
|
146
|
+
initial: 0,
|
|
147
|
+
message: 'Select collection:',
|
|
148
|
+
name: 'collection',
|
|
149
|
+
type: 'select',
|
|
150
|
+
});
|
|
151
|
+
if (!collection) {
|
|
152
|
+
error('No collection selected');
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
selectedCollection = collection;
|
|
156
|
+
success(`Selected collection: ${selectedCollection}`);
|
|
157
|
+
}
|
|
158
|
+
// Get document count
|
|
159
|
+
try {
|
|
160
|
+
const countCommand = `mongosh "${mongoUri}/${selectedDatabase}" --quiet --eval "db.${selectedCollection}.countDocuments()"`;
|
|
161
|
+
const { stdout } = yield execAsync(countCommand);
|
|
162
|
+
const count = parseInt(stdout.trim(), 10);
|
|
163
|
+
info(`Collection contains ${count} document(s)`);
|
|
164
|
+
}
|
|
165
|
+
catch (err) {
|
|
166
|
+
warning(`Could not get document count: ${err.message}`);
|
|
167
|
+
}
|
|
168
|
+
// ============================================================================
|
|
169
|
+
// Step 6: Output File Path
|
|
170
|
+
// ============================================================================
|
|
171
|
+
info('');
|
|
172
|
+
info('Step 6: Output file path');
|
|
173
|
+
info('');
|
|
174
|
+
const defaultFilename = `${selectedDatabase}_${selectedCollection}_${Date.now()}.json`;
|
|
175
|
+
const defaultPath = path.join(process.cwd(), defaultFilename);
|
|
176
|
+
const outputPath = yield helper.getInput(parameters.options.output || defaultPath, {
|
|
177
|
+
initial: defaultPath,
|
|
178
|
+
name: 'Output file path',
|
|
179
|
+
showError: true,
|
|
180
|
+
});
|
|
181
|
+
if (!outputPath) {
|
|
182
|
+
error('Output path is required');
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
// Check if file exists
|
|
186
|
+
if (yield toolbox.filesystem.existsAsync(outputPath)) {
|
|
187
|
+
const { overwrite } = yield prompt.ask({
|
|
188
|
+
initial: false,
|
|
189
|
+
message: `File "${outputPath}" already exists. Overwrite?`,
|
|
190
|
+
name: 'overwrite',
|
|
191
|
+
type: 'confirm',
|
|
192
|
+
});
|
|
193
|
+
if (!overwrite) {
|
|
194
|
+
info('Export cancelled');
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
// Ensure directory exists
|
|
199
|
+
const outputDir = path.dirname(outputPath);
|
|
200
|
+
try {
|
|
201
|
+
yield fs.promises.mkdir(outputDir, { recursive: true });
|
|
202
|
+
}
|
|
203
|
+
catch (err) {
|
|
204
|
+
error(`Failed to create directory: ${err.message}`);
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
// ============================================================================
|
|
208
|
+
// Step 7: Export Data
|
|
209
|
+
// ============================================================================
|
|
210
|
+
info('');
|
|
211
|
+
info('Step 7: Exporting data...');
|
|
212
|
+
info('');
|
|
213
|
+
try {
|
|
214
|
+
const exportSpin = spin(`Exporting ${selectedDatabase}.${selectedCollection}`);
|
|
215
|
+
// Use mongoexport to export collection
|
|
216
|
+
const exportCommand = `mongoexport --uri="${mongoUri}/${selectedDatabase}" --collection="${selectedCollection}" --out="${outputPath}" --jsonArray`;
|
|
217
|
+
const { stderr } = yield execAsync(exportCommand, {
|
|
218
|
+
maxBuffer: 1024 * 1024 * 100, // 100MB buffer
|
|
219
|
+
});
|
|
220
|
+
// mongoexport outputs progress to stderr, check for actual errors
|
|
221
|
+
if (stderr && stderr.toLowerCase().includes('error') && !stderr.includes('exported')) {
|
|
222
|
+
throw new Error(stderr);
|
|
223
|
+
}
|
|
224
|
+
exportSpin.succeed('Data exported successfully');
|
|
225
|
+
// Get file size
|
|
226
|
+
const stats = yield fs.promises.stat(outputPath);
|
|
227
|
+
const fileSizeMB = (stats.size / 1024 / 1024).toFixed(2);
|
|
228
|
+
info(`File size: ${fileSizeMB} MB`);
|
|
229
|
+
}
|
|
230
|
+
catch (err) {
|
|
231
|
+
error(`Failed to export data: ${err.message}`);
|
|
232
|
+
info('');
|
|
233
|
+
info('Please ensure:');
|
|
234
|
+
info('- MongoDB is running and accessible');
|
|
235
|
+
info('- mongoexport tool is installed (part of MongoDB Database Tools)');
|
|
236
|
+
info('- You have read permissions on the database/collection');
|
|
237
|
+
info('- You have write permissions to the output directory');
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
// ============================================================================
|
|
241
|
+
// Done
|
|
242
|
+
// ============================================================================
|
|
243
|
+
info('');
|
|
244
|
+
success(`Collection exported successfully in ${helper.msToMinutesAndSeconds(timer())}m`);
|
|
245
|
+
success(`Output: ${outputPath}`);
|
|
246
|
+
info('');
|
|
247
|
+
if (!parameters.options.fromGluegunMenu) {
|
|
248
|
+
process.exit(0);
|
|
249
|
+
}
|
|
250
|
+
return `mongodb export ${selectedDatabase}.${selectedCollection}`;
|
|
251
|
+
}),
|
|
252
|
+
};
|
|
253
|
+
exports.default = command;
|
|
254
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi1leHBvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvbW9uZ29kYi9jb2xsZWN0aW9uLWV4cG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBLHlCQUF5QjtBQUV6Qiw2QkFBNkI7QUFDN0IsK0JBQWlDO0FBSWpDLE1BQU0sU0FBUyxHQUFHLElBQUEsZ0JBQVMsRUFBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFM0Q7O0dBRUc7QUFDSCxNQUFNLE9BQU8sR0FBbUI7SUFDOUIsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQ2IsV0FBVyxFQUFFLHdDQUF3QztJQUNyRCxJQUFJLEVBQUUsbUJBQW1CO0lBQ3pCLEdBQUcsRUFBRSxDQUFPLE9BQStCLEVBQUUsRUFBRTtRQUM3QyxNQUFNLEVBQ0osTUFBTSxFQUNOLFVBQVUsRUFDVixLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQzlDLE1BQU0sRUFDTixNQUFNLEdBQ1AsR0FBRyxPQUFPLENBQUM7UUFFWixjQUFjO1FBQ2QsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRWxDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVULCtFQUErRTtRQUMvRSw2QkFBNkI7UUFDN0IsK0VBQStFO1FBRS9FLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVULE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLFFBQVEsQ0FDcEMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLElBQUksMkJBQTJCLEVBQ25G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
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
/**
|
|
13
|
+
* MongoDB commands
|
|
14
|
+
*/
|
|
15
|
+
const command = {
|
|
16
|
+
alias: ['mdb'],
|
|
17
|
+
description: 'MongoDB operations (export, restore, etc.)',
|
|
18
|
+
hidden: false,
|
|
19
|
+
name: 'mongodb',
|
|
20
|
+
run: (toolbox) => __awaiter(void 0, void 0, void 0, function* () {
|
|
21
|
+
yield toolbox.helper.showMenu('mongodb', {
|
|
22
|
+
headline: 'MongoDB Commands',
|
|
23
|
+
});
|
|
24
|
+
}),
|
|
25
|
+
};
|
|
26
|
+
exports.default = command;
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZ29kYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9tb25nb2RiL21vbmdvZGIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFFQTs7R0FFRztBQUNILE1BQU0sT0FBTyxHQUFHO0lBQ2QsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ2QsV0FBVyxFQUFFLDRDQUE0QztJQUN6RCxNQUFNLEVBQUUsS0FBSztJQUNiLElBQUksRUFBRSxTQUFTO0lBQ2YsR0FBRyxFQUFFLENBQU8sT0FBK0IsRUFBRSxFQUFFO1FBQzdDLE1BQU0sT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFO1lBQ3ZDLFFBQVEsRUFBRSxrQkFBa0I7U0FDN0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFBO0NBQ0YsQ0FBQztBQUVGLGtCQUFlLE9BQU8sQ0FBQyJ9
|