@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.
Files changed (46) hide show
  1. package/README.md +91 -0
  2. package/dist/commands/extend.d.ts +3 -0
  3. package/dist/commands/extend.d.ts.map +1 -0
  4. package/dist/commands/extend.js +37 -0
  5. package/dist/commands/extend.js.map +1 -0
  6. package/dist/commands/init.d.ts +3 -0
  7. package/dist/commands/init.d.ts.map +1 -0
  8. package/dist/commands/init.js +31 -0
  9. package/dist/commands/init.js.map +1 -0
  10. package/dist/commands/update.d.ts +3 -0
  11. package/dist/commands/update.d.ts.map +1 -0
  12. package/dist/commands/update.js +29 -0
  13. package/dist/commands/update.js.map +1 -0
  14. package/dist/config/template-config.d.ts +21 -0
  15. package/dist/config/template-config.d.ts.map +1 -0
  16. package/dist/config/template-config.js +93 -0
  17. package/dist/config/template-config.js.map +1 -0
  18. package/dist/index.d.ts +3 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +30 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/services/project-extender.d.ts +15 -0
  23. package/dist/services/project-extender.d.ts.map +1 -0
  24. package/dist/services/project-extender.js +207 -0
  25. package/dist/services/project-extender.js.map +1 -0
  26. package/dist/services/project-initializer.d.ts +15 -0
  27. package/dist/services/project-initializer.d.ts.map +1 -0
  28. package/dist/services/project-initializer.js +240 -0
  29. package/dist/services/project-initializer.js.map +1 -0
  30. package/dist/services/project-updater.d.ts +16 -0
  31. package/dist/services/project-updater.d.ts.map +1 -0
  32. package/dist/services/project-updater.js +134 -0
  33. package/dist/services/project-updater.js.map +1 -0
  34. package/package.json +51 -0
  35. package/scripts/publish.sh +58 -0
  36. package/scripts/setup.sh +38 -0
  37. package/scripts/version.sh +80 -0
  38. package/src/commands/extend.ts +35 -0
  39. package/src/commands/init.ts +27 -0
  40. package/src/commands/update.ts +25 -0
  41. package/src/config/template-config.ts +111 -0
  42. package/src/index.ts +35 -0
  43. package/src/services/project-extender.ts +196 -0
  44. package/src/services/project-initializer.ts +224 -0
  45. package/src/services/project-updater.ts +125 -0
  46. 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,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function extendCommand(program: Command): void;
3
+ //# sourceMappingURL=extend.d.ts.map
@@ -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,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function initCommand(program: Command): void;
3
+ //# sourceMappingURL=init.d.ts.map
@@ -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,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function updateCommand(program: Command): void;
3
+ //# sourceMappingURL=update.d.ts.map
@@ -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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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"}