@diagramers/cli 1.0.6
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 +91 -0
- package/dist/commands/extend.d.ts +3 -0
- package/dist/commands/extend.d.ts.map +1 -0
- package/dist/commands/extend.js +37 -0
- package/dist/commands/extend.js.map +1 -0
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +31 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/update.d.ts +3 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +29 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/config/template-config.d.ts +21 -0
- package/dist/config/template-config.d.ts.map +1 -0
- package/dist/config/template-config.js +93 -0
- package/dist/config/template-config.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/dist/services/project-extender.d.ts +15 -0
- package/dist/services/project-extender.d.ts.map +1 -0
- package/dist/services/project-extender.js +207 -0
- package/dist/services/project-extender.js.map +1 -0
- package/dist/services/project-initializer.d.ts +15 -0
- package/dist/services/project-initializer.d.ts.map +1 -0
- package/dist/services/project-initializer.js +240 -0
- package/dist/services/project-initializer.js.map +1 -0
- package/dist/services/project-updater.d.ts +16 -0
- package/dist/services/project-updater.d.ts.map +1 -0
- package/dist/services/project-updater.js +134 -0
- package/dist/services/project-updater.js.map +1 -0
- package/package.json +51 -0
- package/scripts/publish.sh +58 -0
- package/scripts/setup.sh +38 -0
- package/scripts/version.sh +80 -0
- package/src/commands/extend.ts +35 -0
- package/src/commands/init.ts +27 -0
- package/src/commands/update.ts +25 -0
- package/src/config/template-config.ts +111 -0
- package/src/index.ts +35 -0
- package/src/services/project-extender.ts +196 -0
- package/src/services/project-initializer.ts +224 -0
- package/src/services/project-updater.ts +125 -0
- package/tsconfig.json +19 -0
package/README.md
ADDED
@@ -0,0 +1,91 @@
|
|
1
|
+
# @diagramers/cli
|
2
|
+
|
3
|
+
Command-line tools for managing Diagramers projects.
|
4
|
+
|
5
|
+
## 🚀 Installation
|
6
|
+
|
7
|
+
```bash
|
8
|
+
npm install -g @diagramers/cli
|
9
|
+
```
|
10
|
+
|
11
|
+
## 📋 Commands
|
12
|
+
|
13
|
+
### Initialize Projects
|
14
|
+
|
15
|
+
```bash
|
16
|
+
# Create new API project
|
17
|
+
diagramers init api my-new-api
|
18
|
+
|
19
|
+
# Create new admin project
|
20
|
+
diagramers init admin my-admin-dashboard
|
21
|
+
```
|
22
|
+
|
23
|
+
### Update Projects
|
24
|
+
|
25
|
+
```bash
|
26
|
+
# Update existing project with latest features
|
27
|
+
diagramers update
|
28
|
+
|
29
|
+
# Update with backup
|
30
|
+
diagramers update --backup
|
31
|
+
|
32
|
+
# Force update (overwrite conflicts)
|
33
|
+
diagramers update --force
|
34
|
+
```
|
35
|
+
|
36
|
+
### Extend Projects
|
37
|
+
|
38
|
+
```bash
|
39
|
+
# List available features
|
40
|
+
diagramers extend --list
|
41
|
+
|
42
|
+
# Add authentication feature
|
43
|
+
diagramers extend --feature auth
|
44
|
+
|
45
|
+
# Add email system
|
46
|
+
diagramers extend --feature email
|
47
|
+
|
48
|
+
# Add WebSocket support
|
49
|
+
diagramers extend --feature socket
|
50
|
+
|
51
|
+
# Add cron jobs
|
52
|
+
diagramers extend --feature cron
|
53
|
+
|
54
|
+
# Add audit logging
|
55
|
+
diagramers extend --feature audit
|
56
|
+
```
|
57
|
+
|
58
|
+
## 🔧 Development
|
59
|
+
|
60
|
+
```bash
|
61
|
+
# Clone the repository
|
62
|
+
git clone https://github.com/diagramers/diagramers-cli.git
|
63
|
+
cd diagramers-cli
|
64
|
+
|
65
|
+
# Install dependencies
|
66
|
+
npm install
|
67
|
+
|
68
|
+
# Build the CLI
|
69
|
+
npm run build
|
70
|
+
|
71
|
+
# Link locally
|
72
|
+
npm link
|
73
|
+
|
74
|
+
# Test the CLI
|
75
|
+
diagramers --help
|
76
|
+
```
|
77
|
+
|
78
|
+
## 📚 Documentation
|
79
|
+
|
80
|
+
For detailed documentation, visit our [docs](https://github.com/diagramers/diagramers-cli/wiki).
|
81
|
+
|
82
|
+
## 🤝 Contributing
|
83
|
+
|
84
|
+
1. Fork the repository
|
85
|
+
2. Create a feature branch
|
86
|
+
3. Make your changes
|
87
|
+
4. Submit a pull request
|
88
|
+
|
89
|
+
## 📄 License
|
90
|
+
|
91
|
+
MIT
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"extend.d.ts","sourceRoot":"","sources":["../../src/commands/extend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,QA8B7C"}
|
@@ -0,0 +1,37 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.extendCommand = extendCommand;
|
7
|
+
const project_extender_1 = require("../services/project-extender");
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
9
|
+
function extendCommand(program) {
|
10
|
+
program
|
11
|
+
.command('extend')
|
12
|
+
.description('Extend project with additional features')
|
13
|
+
.option('-f, --feature <feature>', 'Feature to add (auth, email, socket, etc.)')
|
14
|
+
.option('-l, --list', 'List available features')
|
15
|
+
.action(async (options) => {
|
16
|
+
try {
|
17
|
+
if (options.list) {
|
18
|
+
const extender = new project_extender_1.ProjectExtender();
|
19
|
+
await extender.listFeatures();
|
20
|
+
return;
|
21
|
+
}
|
22
|
+
if (!options.feature) {
|
23
|
+
console.log(chalk_1.default.red('❌ Please specify a feature to add or use --list to see available features'));
|
24
|
+
process.exit(1);
|
25
|
+
}
|
26
|
+
console.log(chalk_1.default.blue(`🔧 Adding feature: ${options.feature}`));
|
27
|
+
const extender = new project_extender_1.ProjectExtender();
|
28
|
+
await extender.addFeature(options.feature);
|
29
|
+
console.log(chalk_1.default.green(`✅ Feature ${options.feature} added successfully!`));
|
30
|
+
}
|
31
|
+
catch (error) {
|
32
|
+
console.error(chalk_1.default.red(`❌ Failed to add feature: ${error.message}`));
|
33
|
+
process.exit(1);
|
34
|
+
}
|
35
|
+
});
|
36
|
+
}
|
37
|
+
//# sourceMappingURL=extend.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"extend.js","sourceRoot":"","sources":["../../src/commands/extend.ts"],"names":[],"mappings":";;;;;AAIA,sCA8BC;AAjCD,mEAA+D;AAC/D,kDAA0B;AAE1B,SAAgB,aAAa,CAAC,OAAgB;IAC5C,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,yCAAyC,CAAC;SACtD,MAAM,CAAC,yBAAyB,EAAE,4CAA4C,CAAC;SAC/E,MAAM,CAAC,YAAY,EAAE,yBAAyB,CAAC;SAC/C,MAAM,CAAC,KAAK,EAAE,OAAY,EAAE,EAAE;QAC7B,IAAI,CAAC;YACH,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,QAAQ,GAAG,IAAI,kCAAe,EAAE,CAAC;gBACvC,MAAM,QAAQ,CAAC,YAAY,EAAE,CAAC;gBAC9B,OAAO;YACT,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACrB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,2EAA2E,CAAC,CAAC,CAAC;gBACpG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,sBAAsB,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAEjE,MAAM,QAAQ,GAAG,IAAI,kCAAe,EAAE,CAAC;YACvC,MAAM,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAE3C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,aAAa,OAAO,CAAC,OAAO,sBAAsB,CAAC,CAAC,CAAC;QAC/E,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,4BAA4B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,QAsB3C"}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.initCommand = initCommand;
|
7
|
+
const project_initializer_1 = require("../services/project-initializer");
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
9
|
+
function initCommand(program) {
|
10
|
+
program
|
11
|
+
.command('init <project-name>')
|
12
|
+
.description('Initialize a new project from the template')
|
13
|
+
.option('-t, --template <template>', 'Template version to use', 'latest')
|
14
|
+
.option('-y, --yes', 'Skip prompts and use defaults')
|
15
|
+
.action(async (projectName, options) => {
|
16
|
+
try {
|
17
|
+
console.log(chalk_1.default.blue(`🚀 Initializing new project: ${projectName}`));
|
18
|
+
const initializer = new project_initializer_1.ProjectInitializer();
|
19
|
+
await initializer.initialize(projectName, options);
|
20
|
+
console.log(chalk_1.default.green(`✅ Project ${projectName} initialized successfully!`));
|
21
|
+
console.log(chalk_1.default.yellow(`📁 Navigate to the project: cd ${projectName}`));
|
22
|
+
console.log(chalk_1.default.yellow(`🔧 Install dependencies: npm install`));
|
23
|
+
console.log(chalk_1.default.yellow(`🚀 Start development: npm run serve`));
|
24
|
+
}
|
25
|
+
catch (error) {
|
26
|
+
console.error(chalk_1.default.red(`❌ Failed to initialize project: ${error.message}`));
|
27
|
+
process.exit(1);
|
28
|
+
}
|
29
|
+
});
|
30
|
+
}
|
31
|
+
//# sourceMappingURL=init.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;;;;AAIA,kCAsBC;AAzBD,yEAAqE;AACrE,kDAA0B;AAE1B,SAAgB,WAAW,CAAC,OAAgB;IAC1C,OAAO;SACJ,OAAO,CAAC,qBAAqB,CAAC;SAC9B,WAAW,CAAC,4CAA4C,CAAC;SACzD,MAAM,CAAC,2BAA2B,EAAE,yBAAyB,EAAE,QAAQ,CAAC;SACxE,MAAM,CAAC,WAAW,EAAE,+BAA+B,CAAC;SACpD,MAAM,CAAC,KAAK,EAAE,WAAmB,EAAE,OAAY,EAAE,EAAE;QAClD,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gCAAgC,WAAW,EAAE,CAAC,CAAC,CAAC;YAEvE,MAAM,WAAW,GAAG,IAAI,wCAAkB,EAAE,CAAC;YAC7C,MAAM,WAAW,CAAC,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAEnD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,aAAa,WAAW,4BAA4B,CAAC,CAAC,CAAC;YAC/E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,kCAAkC,WAAW,EAAE,CAAC,CAAC,CAAC;YAC3E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,sCAAsC,CAAC,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,qCAAqC,CAAC,CAAC,CAAC;QACnE,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,mCAAmC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC7E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,QAoB7C"}
|
@@ -0,0 +1,29 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.updateCommand = updateCommand;
|
7
|
+
const project_updater_1 = require("../services/project-updater");
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
9
|
+
function updateCommand(program) {
|
10
|
+
program
|
11
|
+
.command('update')
|
12
|
+
.description('Update existing project with latest template features')
|
13
|
+
.option('-f, --force', 'Force update even if conflicts detected')
|
14
|
+
.option('-b, --backup', 'Create backup before updating')
|
15
|
+
.action(async (options) => {
|
16
|
+
try {
|
17
|
+
console.log(chalk_1.default.blue('🔄 Checking for template updates...'));
|
18
|
+
const updater = new project_updater_1.ProjectUpdater();
|
19
|
+
await updater.update(options);
|
20
|
+
console.log(chalk_1.default.green('✅ Project updated successfully!'));
|
21
|
+
console.log(chalk_1.default.yellow('📝 Review the changes and test your application'));
|
22
|
+
}
|
23
|
+
catch (error) {
|
24
|
+
console.error(chalk_1.default.red(`❌ Failed to update project: ${error.message}`));
|
25
|
+
process.exit(1);
|
26
|
+
}
|
27
|
+
});
|
28
|
+
}
|
29
|
+
//# sourceMappingURL=update.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":";;;;;AAIA,sCAoBC;AAvBD,iEAA6D;AAC7D,kDAA0B;AAE1B,SAAgB,aAAa,CAAC,OAAgB;IAC5C,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,uDAAuD,CAAC;SACpE,MAAM,CAAC,aAAa,EAAE,yCAAyC,CAAC;SAChE,MAAM,CAAC,cAAc,EAAE,+BAA+B,CAAC;SACvD,MAAM,CAAC,KAAK,EAAE,OAAY,EAAE,EAAE;QAC7B,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC;YAE/D,MAAM,OAAO,GAAG,IAAI,gCAAc,EAAE,CAAC;YACrC,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAE9B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAAC,CAAC;QAC/E,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,+BAA+B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
export interface TemplateConfig {
|
2
|
+
name: string;
|
3
|
+
version: string;
|
4
|
+
description: string;
|
5
|
+
files: {
|
6
|
+
include: string[];
|
7
|
+
exclude: string[];
|
8
|
+
updateable: string[];
|
9
|
+
customizable: string[];
|
10
|
+
};
|
11
|
+
features: {
|
12
|
+
[key: string]: {
|
13
|
+
name: string;
|
14
|
+
description: string;
|
15
|
+
dependencies: string[];
|
16
|
+
files: string[];
|
17
|
+
};
|
18
|
+
};
|
19
|
+
}
|
20
|
+
export declare const templateConfig: TemplateConfig;
|
21
|
+
//# sourceMappingURL=template-config.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"template-config.d.ts","sourceRoot":"","sources":["../../src/config/template-config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE;QACL,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,YAAY,EAAE,MAAM,EAAE,CAAC;KACxB,CAAC;IACF,QAAQ,EAAE;QACR,CAAC,GAAG,EAAE,MAAM,GAAG;YACb,IAAI,EAAE,MAAM,CAAC;YACb,WAAW,EAAE,MAAM,CAAC;YACpB,YAAY,EAAE,MAAM,EAAE,CAAC;YACvB,KAAK,EAAE,MAAM,EAAE,CAAC;SACjB,CAAC;KACH,CAAC;CACH;AAED,eAAO,MAAM,cAAc,EAAE,cA0F5B,CAAC"}
|
@@ -0,0 +1,93 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.templateConfig = void 0;
|
4
|
+
exports.templateConfig = {
|
5
|
+
name: 'diagrammers-api-template',
|
6
|
+
version: '1.0.0',
|
7
|
+
description: 'Node.js API template with TypeScript, Firebase Functions, and Socket.io',
|
8
|
+
files: {
|
9
|
+
include: [
|
10
|
+
'src/**/*',
|
11
|
+
'package.json',
|
12
|
+
'tsconfig.json',
|
13
|
+
'webpack.config.js',
|
14
|
+
'main.ts',
|
15
|
+
'certs/**/*'
|
16
|
+
],
|
17
|
+
exclude: [
|
18
|
+
'node_modules/**',
|
19
|
+
'dist/**',
|
20
|
+
'cli/**',
|
21
|
+
'.git/**',
|
22
|
+
'backup-*/**',
|
23
|
+
'*.log',
|
24
|
+
'.env*'
|
25
|
+
],
|
26
|
+
updateable: [
|
27
|
+
'src/helpers/**/*',
|
28
|
+
'src/config/**/*',
|
29
|
+
'src/server/**/*',
|
30
|
+
'webpack.config.js',
|
31
|
+
'tsconfig.json'
|
32
|
+
],
|
33
|
+
customizable: [
|
34
|
+
'src/controllers/**/*',
|
35
|
+
'src/entities/**/*',
|
36
|
+
'src/routes/**/*',
|
37
|
+
'src/services/**/*',
|
38
|
+
'src/schemas/**/*',
|
39
|
+
'main.ts'
|
40
|
+
]
|
41
|
+
},
|
42
|
+
features: {
|
43
|
+
auth: {
|
44
|
+
name: 'Authentication',
|
45
|
+
description: 'JWT-based authentication system',
|
46
|
+
dependencies: ['jsonwebtoken', 'bcryptjs', '@types/jsonwebtoken', '@types/bcryptjs'],
|
47
|
+
files: [
|
48
|
+
'src/features/auth/**/*',
|
49
|
+
'src/helpers/auth.ts'
|
50
|
+
]
|
51
|
+
},
|
52
|
+
email: {
|
53
|
+
name: 'Email System',
|
54
|
+
description: 'Email notification system with templates',
|
55
|
+
dependencies: ['nodemailer', 'handlebars', '@types/nodemailer'],
|
56
|
+
files: [
|
57
|
+
'src/features/email/**/*',
|
58
|
+
'src/helpers/mailer.ts',
|
59
|
+
'src/assets/css/email-template.css'
|
60
|
+
]
|
61
|
+
},
|
62
|
+
socket: {
|
63
|
+
name: 'WebSocket',
|
64
|
+
description: 'Real-time communication with Socket.io',
|
65
|
+
dependencies: ['socket.io', '@types/socket.io'],
|
66
|
+
files: [
|
67
|
+
'src/features/socket/**/*',
|
68
|
+
'src/server/socket-server-provider.ts'
|
69
|
+
]
|
70
|
+
},
|
71
|
+
cron: {
|
72
|
+
name: 'Scheduled Tasks',
|
73
|
+
description: 'Cron job system for scheduled tasks',
|
74
|
+
dependencies: ['node-cron', '@types/node-cron'],
|
75
|
+
files: [
|
76
|
+
'src/features/cron/**/*',
|
77
|
+
'src/helpers/cronHelper.ts'
|
78
|
+
]
|
79
|
+
},
|
80
|
+
audit: {
|
81
|
+
name: 'Audit Logging',
|
82
|
+
description: 'Comprehensive audit logging system',
|
83
|
+
dependencies: [],
|
84
|
+
files: [
|
85
|
+
'src/features/audit/**/*',
|
86
|
+
'src/entities/audit.ts',
|
87
|
+
'src/schemas/audit.ts',
|
88
|
+
'src/services/audit-service.ts'
|
89
|
+
]
|
90
|
+
}
|
91
|
+
}
|
92
|
+
};
|
93
|
+
//# sourceMappingURL=template-config.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"template-config.js","sourceRoot":"","sources":["../../src/config/template-config.ts"],"names":[],"mappings":";;;AAoBa,QAAA,cAAc,GAAmB;IAC5C,IAAI,EAAE,0BAA0B;IAChC,OAAO,EAAE,OAAO;IAChB,WAAW,EAAE,yEAAyE;IAEtF,KAAK,EAAE;QACL,OAAO,EAAE;YACP,UAAU;YACV,cAAc;YACd,eAAe;YACf,mBAAmB;YACnB,SAAS;YACT,YAAY;SACb;QACD,OAAO,EAAE;YACP,iBAAiB;YACjB,SAAS;YACT,QAAQ;YACR,SAAS;YACT,aAAa;YACb,OAAO;YACP,OAAO;SACR;QACD,UAAU,EAAE;YACV,kBAAkB;YAClB,iBAAiB;YACjB,iBAAiB;YACjB,mBAAmB;YACnB,eAAe;SAChB;QACD,YAAY,EAAE;YACZ,sBAAsB;YACtB,mBAAmB;YACnB,iBAAiB;YACjB,mBAAmB;YACnB,kBAAkB;YAClB,SAAS;SACV;KACF;IAED,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,iCAAiC;YAC9C,YAAY,EAAE,CAAC,cAAc,EAAE,UAAU,EAAE,qBAAqB,EAAE,iBAAiB,CAAC;YACpF,KAAK,EAAE;gBACL,wBAAwB;gBACxB,qBAAqB;aACtB;SACF;QACD,KAAK,EAAE;YACL,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,0CAA0C;YACvD,YAAY,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,mBAAmB,CAAC;YAC/D,KAAK,EAAE;gBACL,yBAAyB;gBACzB,uBAAuB;gBACvB,mCAAmC;aACpC;SACF;QACD,MAAM,EAAE;YACN,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,wCAAwC;YACrD,YAAY,EAAE,CAAC,WAAW,EAAE,kBAAkB,CAAC;YAC/C,KAAK,EAAE;gBACL,0BAA0B;gBAC1B,sCAAsC;aACvC;SACF;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,iBAAiB;YACvB,WAAW,EAAE,qCAAqC;YAClD,YAAY,EAAE,CAAC,WAAW,EAAE,kBAAkB,CAAC;YAC/C,KAAK,EAAE;gBACL,wBAAwB;gBACxB,2BAA2B;aAC5B;SACF;QACD,KAAK,EAAE;YACL,IAAI,EAAE,eAAe;YACrB,WAAW,EAAE,oCAAoC;YACjD,YAAY,EAAE,EAAE;YAChB,KAAK,EAAE;gBACL,yBAAyB;gBACzB,uBAAuB;gBACvB,sBAAsB;gBACtB,+BAA+B;aAChC;SACF;KACF;CACF,CAAC"}
|
package/dist/index.d.ts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
#!/usr/bin/env node
|
2
|
+
"use strict";
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
4
|
+
const commander_1 = require("commander");
|
5
|
+
const init_1 = require("./commands/init");
|
6
|
+
const update_1 = require("./commands/update");
|
7
|
+
const extend_1 = require("./commands/extend");
|
8
|
+
const program = new commander_1.Command();
|
9
|
+
program
|
10
|
+
.name('diagrammers')
|
11
|
+
.description('CLI tool for managing Diagrammers projects')
|
12
|
+
.version('1.0.0');
|
13
|
+
// Add commands
|
14
|
+
(0, init_1.initCommand)(program);
|
15
|
+
(0, update_1.updateCommand)(program);
|
16
|
+
(0, extend_1.extendCommand)(program);
|
17
|
+
// Add help text
|
18
|
+
program.addHelpText('after', `
|
19
|
+
Examples:
|
20
|
+
$ diagrammers init api my-new-project
|
21
|
+
$ diagrammers init admin my-admin-dashboard
|
22
|
+
$ diagrammers update
|
23
|
+
$ diagrammers extend --feature auth
|
24
|
+
`);
|
25
|
+
program.parse();
|
26
|
+
// If no command is provided, show help
|
27
|
+
if (!process.argv.slice(2).length) {
|
28
|
+
program.outputHelp();
|
29
|
+
}
|
30
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,0CAA8C;AAC9C,8CAAkD;AAClD,8CAAkD;AAGlD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,aAAa,CAAC;KACnB,WAAW,CAAC,4CAA4C,CAAC;KACzD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,eAAe;AACf,IAAA,kBAAW,EAAC,OAAO,CAAC,CAAC;AACrB,IAAA,sBAAa,EAAC,OAAO,CAAC,CAAC;AACvB,IAAA,sBAAa,EAAC,OAAO,CAAC,CAAC;AAEvB,gBAAgB;AAChB,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE;;;;;;CAM5B,CAAC,CAAC;AAEH,OAAO,CAAC,KAAK,EAAE,CAAC;AAEhB,uCAAuC;AACvC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,OAAO,CAAC,UAAU,EAAE,CAAC;AACvB,CAAC"}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
export interface Feature {
|
2
|
+
name: string;
|
3
|
+
description: string;
|
4
|
+
files: string[];
|
5
|
+
dependencies?: string[];
|
6
|
+
}
|
7
|
+
export declare class ProjectExtender {
|
8
|
+
private features;
|
9
|
+
listFeatures(): Promise<void>;
|
10
|
+
addFeature(featureName: string): Promise<void>;
|
11
|
+
private createFeatureStructure;
|
12
|
+
private addDependencies;
|
13
|
+
private capitalizeFirst;
|
14
|
+
}
|
15
|
+
//# sourceMappingURL=project-extender.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"project-extender.d.ts","sourceRoot":"","sources":["../../src/services/project-extender.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CA8Bd;IAEI,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAc7B,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YA0BtC,sBAAsB;YAmGtB,eAAe;IAS7B,OAAO,CAAC,eAAe;CAGxB"}
|
@@ -0,0 +1,207 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
15
|
+
}) : function(o, v) {
|
16
|
+
o["default"] = v;
|
17
|
+
});
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
19
|
+
var ownKeys = function(o) {
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
21
|
+
var ar = [];
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
23
|
+
return ar;
|
24
|
+
};
|
25
|
+
return ownKeys(o);
|
26
|
+
};
|
27
|
+
return function (mod) {
|
28
|
+
if (mod && mod.__esModule) return mod;
|
29
|
+
var result = {};
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
31
|
+
__setModuleDefault(result, mod);
|
32
|
+
return result;
|
33
|
+
};
|
34
|
+
})();
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
37
|
+
};
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
39
|
+
exports.ProjectExtender = void 0;
|
40
|
+
const fs = __importStar(require("fs-extra"));
|
41
|
+
const path = __importStar(require("path"));
|
42
|
+
const chalk_1 = __importDefault(require("chalk"));
|
43
|
+
class ProjectExtender {
|
44
|
+
constructor() {
|
45
|
+
this.features = [
|
46
|
+
{
|
47
|
+
name: 'auth',
|
48
|
+
description: 'Authentication system with JWT',
|
49
|
+
files: ['src/features/auth/**/*'],
|
50
|
+
dependencies: ['jsonwebtoken', 'bcryptjs']
|
51
|
+
},
|
52
|
+
{
|
53
|
+
name: 'email',
|
54
|
+
description: 'Email notification system',
|
55
|
+
files: ['src/features/email/**/*'],
|
56
|
+
dependencies: ['nodemailer', 'handlebars']
|
57
|
+
},
|
58
|
+
{
|
59
|
+
name: 'socket',
|
60
|
+
description: 'Real-time WebSocket communication',
|
61
|
+
files: ['src/features/socket/**/*'],
|
62
|
+
dependencies: ['socket.io']
|
63
|
+
},
|
64
|
+
{
|
65
|
+
name: 'cron',
|
66
|
+
description: 'Scheduled task system',
|
67
|
+
files: ['src/features/cron/**/*'],
|
68
|
+
dependencies: ['node-cron']
|
69
|
+
},
|
70
|
+
{
|
71
|
+
name: 'audit',
|
72
|
+
description: 'Audit logging system',
|
73
|
+
files: ['src/features/audit/**/*']
|
74
|
+
}
|
75
|
+
];
|
76
|
+
}
|
77
|
+
async listFeatures() {
|
78
|
+
console.log(chalk_1.default.blue('📋 Available features:'));
|
79
|
+
console.log('');
|
80
|
+
this.features.forEach(feature => {
|
81
|
+
console.log(chalk_1.default.green(` ${feature.name}`));
|
82
|
+
console.log(chalk_1.default.gray(` ${feature.description}`));
|
83
|
+
if (feature.dependencies && feature.dependencies.length > 0) {
|
84
|
+
console.log(chalk_1.default.yellow(` Dependencies: ${feature.dependencies.join(', ')}`));
|
85
|
+
}
|
86
|
+
console.log('');
|
87
|
+
});
|
88
|
+
}
|
89
|
+
async addFeature(featureName) {
|
90
|
+
const feature = this.features.find(f => f.name === featureName);
|
91
|
+
if (!feature) {
|
92
|
+
throw new Error(`Feature '${featureName}' not found. Use --list to see available features.`);
|
93
|
+
}
|
94
|
+
const projectPath = process.cwd();
|
95
|
+
// Check if feature already exists
|
96
|
+
const featurePath = path.join(projectPath, 'src', 'features', featureName);
|
97
|
+
if (await fs.pathExists(featurePath)) {
|
98
|
+
throw new Error(`Feature '${featureName}' already exists in this project.`);
|
99
|
+
}
|
100
|
+
// Create feature directory structure
|
101
|
+
await this.createFeatureStructure(projectPath, feature);
|
102
|
+
// Add dependencies if any
|
103
|
+
if (feature.dependencies && feature.dependencies.length > 0) {
|
104
|
+
await this.addDependencies(feature.dependencies);
|
105
|
+
}
|
106
|
+
console.log(chalk_1.default.green(`✅ Feature '${featureName}' added successfully!`));
|
107
|
+
}
|
108
|
+
async createFeatureStructure(projectPath, feature) {
|
109
|
+
const featurePath = path.join(projectPath, 'src', 'features', feature.name);
|
110
|
+
// Create basic feature structure
|
111
|
+
const structure = {
|
112
|
+
'controllers': 'Feature controllers',
|
113
|
+
'services': 'Feature business logic',
|
114
|
+
'schemas': 'Feature validation schemas',
|
115
|
+
'routes': 'Feature API routes',
|
116
|
+
'types': 'Feature TypeScript types'
|
117
|
+
};
|
118
|
+
for (const [dir, description] of Object.entries(structure)) {
|
119
|
+
const dirPath = path.join(featurePath, dir);
|
120
|
+
await fs.ensureDir(dirPath);
|
121
|
+
// Create index file
|
122
|
+
const indexContent = `// ${description} for ${feature.name} feature
|
123
|
+
export * from './${feature.name}-${dir.slice(0, -1)}';
|
124
|
+
`;
|
125
|
+
await fs.writeFile(path.join(dirPath, 'index.ts'), indexContent);
|
126
|
+
}
|
127
|
+
// Create main feature file
|
128
|
+
const mainFeatureContent = `import { Router } from 'express';
|
129
|
+
import { ${feature.name}Controller } from './controllers';
|
130
|
+
import { ${feature.name}Service } from './services';
|
131
|
+
|
132
|
+
export class ${this.capitalizeFirst(feature.name)}Feature {
|
133
|
+
private router: Router;
|
134
|
+
private controller: ${feature.name}Controller;
|
135
|
+
private service: ${feature.name}Service;
|
136
|
+
|
137
|
+
constructor() {
|
138
|
+
this.router = Router();
|
139
|
+
this.service = new ${feature.name}Service();
|
140
|
+
this.controller = new ${feature.name}Controller(this.service);
|
141
|
+
this.setupRoutes();
|
142
|
+
}
|
143
|
+
|
144
|
+
private setupRoutes(): void {
|
145
|
+
// Define your routes here
|
146
|
+
// this.router.get('/', this.controller.index.bind(this.controller));
|
147
|
+
}
|
148
|
+
|
149
|
+
public getRouter(): Router {
|
150
|
+
return this.router;
|
151
|
+
}
|
152
|
+
}
|
153
|
+
`;
|
154
|
+
await fs.writeFile(path.join(featurePath, `${feature.name}.ts`), mainFeatureContent);
|
155
|
+
// Create controller
|
156
|
+
const controllerContent = `import { Request, Response } from 'express';
|
157
|
+
import { ${feature.name}Service } from '../services';
|
158
|
+
|
159
|
+
export class ${feature.name}Controller {
|
160
|
+
constructor(private service: ${feature.name}Service) {}
|
161
|
+
|
162
|
+
// Add your controller methods here
|
163
|
+
// async index(req: Request, res: Response): Promise<void> {
|
164
|
+
// try {
|
165
|
+
// const result = await this.service.someMethod();
|
166
|
+
// res.json(result);
|
167
|
+
// } catch (error) {
|
168
|
+
// res.status(500).json({ error: error.message });
|
169
|
+
// }
|
170
|
+
// }
|
171
|
+
}
|
172
|
+
`;
|
173
|
+
await fs.writeFile(path.join(featurePath, 'controllers', `${feature.name}-controller.ts`), controllerContent);
|
174
|
+
// Create service
|
175
|
+
const serviceContent = `export class ${feature.name}Service {
|
176
|
+
// Add your service methods here
|
177
|
+
// async someMethod(): Promise<any> {
|
178
|
+
// // Implementation
|
179
|
+
// }
|
180
|
+
}
|
181
|
+
`;
|
182
|
+
await fs.writeFile(path.join(featurePath, 'services', `${feature.name}-service.ts`), serviceContent);
|
183
|
+
// Create types
|
184
|
+
const typesContent = `// TypeScript types for ${feature.name} feature
|
185
|
+
export interface ${this.capitalizeFirst(feature.name)}Config {
|
186
|
+
// Add configuration interface
|
187
|
+
}
|
188
|
+
|
189
|
+
export interface ${this.capitalizeFirst(feature.name)}Data {
|
190
|
+
// Add data interface
|
191
|
+
}
|
192
|
+
`;
|
193
|
+
await fs.writeFile(path.join(featurePath, 'types', `${feature.name}-types.ts`), typesContent);
|
194
|
+
}
|
195
|
+
async addDependencies(dependencies) {
|
196
|
+
console.log(chalk_1.default.blue('📦 Installing dependencies...'));
|
197
|
+
// This would typically run npm install with the dependencies
|
198
|
+
// For now, we'll just log what would be installed
|
199
|
+
console.log(chalk_1.default.yellow(`Would install: ${dependencies.join(', ')}`));
|
200
|
+
console.log(chalk_1.default.gray('Run: npm install ' + dependencies.join(' ') + ' to install dependencies'));
|
201
|
+
}
|
202
|
+
capitalizeFirst(str) {
|
203
|
+
return str.charAt(0).toUpperCase() + str.slice(1);
|
204
|
+
}
|
205
|
+
}
|
206
|
+
exports.ProjectExtender = ProjectExtender;
|
207
|
+
//# sourceMappingURL=project-extender.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"project-extender.js","sourceRoot":"","sources":["../../src/services/project-extender.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
export interface InitOptions {
|
2
|
+
template?: string;
|
3
|
+
yes?: boolean;
|
4
|
+
}
|
5
|
+
export declare class ProjectInitializer {
|
6
|
+
private templatePath;
|
7
|
+
private templateFiles;
|
8
|
+
constructor();
|
9
|
+
initialize(projectName: string, options: InitOptions): Promise<void>;
|
10
|
+
private copyTemplateFiles;
|
11
|
+
private updatePackageJson;
|
12
|
+
private createGitignore;
|
13
|
+
private createReadme;
|
14
|
+
}
|
15
|
+
//# sourceMappingURL=project-initializer.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"project-initializer.d.ts","sourceRoot":"","sources":["../../src/services/project-initializer.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,aAAa,CAOnB;;IAOI,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;YA0B5D,iBAAiB;YAkCjB,iBAAiB;YAYjB,eAAe;YAyDf,YAAY;CAoE3B"}
|