@diagramers/cli 1.1.5 → 1.1.7

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 (32) hide show
  1. package/README.md +42 -4
  2. package/dist/commands/init.d.ts.map +1 -1
  3. package/dist/commands/init.js +12 -2
  4. package/dist/commands/init.js.map +1 -1
  5. package/dist/commands/update.d.ts.map +1 -1
  6. package/dist/commands/update.js +4 -0
  7. package/dist/commands/update.js.map +1 -1
  8. package/dist/config/template-config.js +1 -1
  9. package/dist/config/template-config.js.map +1 -1
  10. package/dist/index.js +110 -39
  11. package/dist/index.js.map +1 -1
  12. package/dist/services/api-generator.js +139 -47
  13. package/dist/services/api-generator.js.map +1 -1
  14. package/dist/services/project-extender.d.ts.map +1 -1
  15. package/dist/services/project-extender.js +3 -31
  16. package/dist/services/project-extender.js.map +1 -1
  17. package/dist/services/project-initializer.d.ts +1 -0
  18. package/dist/services/project-initializer.d.ts.map +1 -1
  19. package/dist/services/project-initializer.js +5 -4
  20. package/dist/services/project-initializer.js.map +1 -1
  21. package/dist/services/project-updater.d.ts +3 -0
  22. package/dist/services/project-updater.d.ts.map +1 -1
  23. package/dist/services/project-updater.js +171 -28
  24. package/dist/services/project-updater.js.map +1 -1
  25. package/dist/services/template-processor.d.ts.map +1 -1
  26. package/dist/services/template-processor.js +23 -2
  27. package/dist/services/template-processor.js.map +1 -1
  28. package/dist/services/template-updater.d.ts +1 -0
  29. package/dist/services/template-updater.d.ts.map +1 -1
  30. package/dist/services/template-updater.js +8 -5
  31. package/dist/services/template-updater.js.map +1 -1
  32. package/package.json +1 -1
package/README.md CHANGED
@@ -64,16 +64,24 @@ npm start
64
64
 
65
65
  #### Initialize New Project
66
66
  ```bash
67
- diagramers init <template-type> <project-name>
67
+ diagramers init <template-type> <project-name> [options]
68
68
  ```
69
69
 
70
+ **Options:**
71
+ - `-v, --version <version>` - Specific version of the template to use (e.g., 1.1.17, latest)
72
+ - `-t, --template <template>` - Template version to use (deprecated, use --version)
73
+ - `-y, --yes` - Skip prompts and use defaults
74
+
70
75
  **Examples:**
71
76
  ```bash
72
- # Create API project
77
+ # Create API project with latest version
73
78
  diagramers init api my-api-project
74
79
 
75
- # Create admin project
76
- diagramers init admin my-admin-dashboard
80
+ # Create API project with specific version
81
+ diagramers init api my-api-project -v 1.1.17
82
+
83
+ # Create admin project with specific version
84
+ diagramers init admin my-admin-dashboard -v 1.1.16
77
85
  ```
78
86
 
79
87
  #### Update Project
@@ -82,9 +90,39 @@ diagramers update [options]
82
90
  ```
83
91
 
84
92
  **Options:**
93
+ - `-v, --version <version>` - Specific version to update to (e.g., 1.1.17, latest)
85
94
  - `--force` - Force update even if conflicts detected
86
95
  - `--backup` - Create backup before updating
87
96
 
97
+ **Examples:**
98
+ ```bash
99
+ # Update to latest version
100
+ diagramers update
101
+
102
+ # Update to specific version
103
+ diagramers update -v 1.1.17
104
+
105
+ # Force update with backup
106
+ diagramers update -v 1.1.17 --force --backup
107
+ ```
108
+
109
+ #### List Available Versions
110
+ ```bash
111
+ diagramers versions [options]
112
+ ```
113
+
114
+ **Options:**
115
+ - `-a, --all` - Show all versions (default: show last 10)
116
+
117
+ **Examples:**
118
+ ```bash
119
+ # Show last 10 versions
120
+ diagramers versions
121
+
122
+ # Show all available versions
123
+ diagramers versions --all
124
+ ```
125
+
88
126
  ### Module Management
89
127
 
90
128
  #### Generate Module
@@ -1 +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,QA2B3C"}
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,QAuC3C"}
@@ -10,7 +10,8 @@ function initCommand(program) {
10
10
  program
11
11
  .command('init <template-type> <project-name>')
12
12
  .description('Initialize a new project from the template')
13
- .option('-t, --template <template>', 'Template version to use', 'latest')
13
+ .option('-v, --version <version>', 'Specific version of the template to use (e.g., 1.1.17, latest)', 'latest')
14
+ .option('-t, --template <template>', 'Template version to use (deprecated, use --version)', 'latest')
14
15
  .option('-y, --yes', 'Skip prompts and use defaults')
15
16
  .action(async (templateType, projectName, options) => {
16
17
  try {
@@ -19,8 +20,17 @@ function initCommand(program) {
19
20
  if (templateType !== 'api' && templateType !== 'admin') {
20
21
  throw new Error(`Unsupported template type: ${templateType}. Supported types: api, admin`);
21
22
  }
23
+ // Use --version option, fallback to --template for backwards compatibility
24
+ const targetVersion = options.version || options.template;
25
+ if (targetVersion && targetVersion !== 'latest') {
26
+ console.log(chalk_1.default.yellow(`šŸ“Œ Using @diagramers/${templateType} version: ${targetVersion}`));
27
+ }
22
28
  const initializer = new project_initializer_1.ProjectInitializer();
23
- await initializer.initialize(projectName, { ...options, template: templateType });
29
+ await initializer.initialize(projectName, {
30
+ ...options,
31
+ template: templateType,
32
+ version: targetVersion
33
+ });
24
34
  console.log(chalk_1.default.green(`āœ… Project ${projectName} initialized successfully!`));
25
35
  console.log(chalk_1.default.yellow(`šŸ“ Navigate to the project: cd ${projectName}`));
26
36
  console.log(chalk_1.default.yellow(`šŸ”§ Install dependencies: npm install`));
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;;;;AAIA,kCA2BC;AA9BD,yEAAqE;AACrE,kDAA0B;AAE1B,SAAgB,WAAW,CAAC,OAAgB;IAC1C,OAAO;SACJ,OAAO,CAAC,qCAAqC,CAAC;SAC9C,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,YAAoB,EAAE,WAAmB,EAAE,OAAY,EAAE,EAAE;QACxE,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,uBAAuB,YAAY,aAAa,WAAW,EAAE,CAAC,CAAC,CAAC;YAEvF,yBAAyB;YACzB,IAAI,YAAY,KAAK,KAAK,IAAI,YAAY,KAAK,OAAO,EAAE,CAAC;gBACvD,MAAM,IAAI,KAAK,CAAC,8BAA8B,YAAY,+BAA+B,CAAC,CAAC;YAC7F,CAAC;YAED,MAAM,WAAW,GAAG,IAAI,wCAAkB,EAAE,CAAC;YAC7C,MAAM,WAAW,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;YAElF,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,iCAAiC,CAAC,CAAC,CAAC;QAC/D,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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;;;;AAIA,kCAuCC;AA1CD,yEAAqE;AACrE,kDAA0B;AAE1B,SAAgB,WAAW,CAAC,OAAgB;IAC1C,OAAO;SACJ,OAAO,CAAC,qCAAqC,CAAC;SAC9C,WAAW,CAAC,4CAA4C,CAAC;SACzD,MAAM,CAAC,yBAAyB,EAAE,gEAAgE,EAAE,QAAQ,CAAC;SAC7G,MAAM,CAAC,2BAA2B,EAAE,qDAAqD,EAAE,QAAQ,CAAC;SACpG,MAAM,CAAC,WAAW,EAAE,+BAA+B,CAAC;SACpD,MAAM,CAAC,KAAK,EAAE,YAAoB,EAAE,WAAmB,EAAE,OAAY,EAAE,EAAE;QACxE,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,uBAAuB,YAAY,aAAa,WAAW,EAAE,CAAC,CAAC,CAAC;YAEvF,yBAAyB;YACzB,IAAI,YAAY,KAAK,KAAK,IAAI,YAAY,KAAK,OAAO,EAAE,CAAC;gBACvD,MAAM,IAAI,KAAK,CAAC,8BAA8B,YAAY,+BAA+B,CAAC,CAAC;YAC7F,CAAC;YAED,2EAA2E;YAC3E,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;YAE1D,IAAI,aAAa,IAAI,aAAa,KAAK,QAAQ,EAAE,CAAC;gBAChD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,wBAAwB,YAAY,aAAa,aAAa,EAAE,CAAC,CAAC,CAAC;YAC9F,CAAC;YAED,MAAM,WAAW,GAAG,IAAI,wCAAkB,EAAE,CAAC;YAC7C,MAAM,WAAW,CAAC,UAAU,CAAC,WAAW,EAAE;gBACxC,GAAG,OAAO;gBACV,QAAQ,EAAE,YAAY;gBACtB,OAAO,EAAE,aAAa;aACvB,CAAC,CAAC;YAEH,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,iCAAiC,CAAC,CAAC,CAAC;QAC/D,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"}
@@ -1 +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"}
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,QAyB7C"}
@@ -10,11 +10,15 @@ function updateCommand(program) {
10
10
  program
11
11
  .command('update')
12
12
  .description('Update existing project with latest template features')
13
+ .option('-v, --version <version>', 'Specific version to update to (e.g., 1.1.17, latest)', 'latest')
13
14
  .option('-f, --force', 'Force update even if conflicts detected')
14
15
  .option('-b, --backup', 'Create backup before updating')
15
16
  .action(async (options) => {
16
17
  try {
17
18
  console.log(chalk_1.default.blue('šŸ”„ Checking for template updates...'));
19
+ if (options.version && options.version !== 'latest') {
20
+ console.log(chalk_1.default.yellow(`šŸ“Œ Updating to version: ${options.version}`));
21
+ }
18
22
  const updater = new template_updater_1.TemplateUpdater();
19
23
  await updater.update(options);
20
24
  console.log(chalk_1.default.green('āœ… Project updated successfully!'));
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":";;;;;AAIA,sCAoBC;AAvBD,mEAA+D;AAC/D,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,kCAAe,EAAE,CAAC;YACtC,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"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":";;;;;AAIA,sCAyBC;AA5BD,mEAA+D;AAC/D,kDAA0B;AAE1B,SAAgB,aAAa,CAAC,OAAgB;IAC5C,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,uDAAuD,CAAC;SACpE,MAAM,CAAC,yBAAyB,EAAE,sDAAsD,EAAE,QAAQ,CAAC;SACnG,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,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACpD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,2BAA2B,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC1E,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,kCAAe,EAAE,CAAC;YACtC,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"}
@@ -33,7 +33,7 @@ exports.templateConfig = {
33
33
  'src/server/**/*',
34
34
  'webpack.config.js',
35
35
  'tsconfig.json',
36
- 'env.example'
36
+ '.env.example'
37
37
  ],
38
38
  customizable: [
39
39
  'src/controllers/**/*',
@@ -1 +1 @@
1
- {"version":3,"file":"template-config.js","sourceRoot":"","sources":["../../src/config/template-config.ts"],"names":[],"mappings":";;;AAoBa,QAAA,cAAc,GAAmB;IAC5C,IAAI,EAAE,yBAAyB;IAC/B,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,MAAM;YACN,YAAY;YACZ,wBAAwB;YACxB,iBAAiB;YACjB,uBAAuB;SACxB;QACD,UAAU,EAAE;YACV,kBAAkB;YAClB,iBAAiB;YACjB,iBAAiB;YACjB,mBAAmB;YACnB,eAAe;YACf,aAAa;SACd;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"}
1
+ {"version":3,"file":"template-config.js","sourceRoot":"","sources":["../../src/config/template-config.ts"],"names":[],"mappings":";;;AAoBa,QAAA,cAAc,GAAmB;IAC5C,IAAI,EAAE,yBAAyB;IAC/B,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,MAAM;YACN,YAAY;YACZ,wBAAwB;YACxB,iBAAiB;YACjB,uBAAuB;SACxB;QACD,UAAU,EAAE;YACV,kBAAkB;YAClB,iBAAiB;YACjB,iBAAiB;YACjB,mBAAmB;YACnB,eAAe;YACf,cAAc;SACf;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.js CHANGED
@@ -11,12 +11,21 @@ const extend_1 = require("./commands/extend");
11
11
  const chalk_1 = __importDefault(require("chalk"));
12
12
  const fs_1 = require("fs");
13
13
  const path_1 = require("path");
14
+ const child_process_1 = require("child_process");
14
15
  const program = new commander_1.Command();
15
16
  // Dynamically read CLI version
16
17
  const cliPkg = JSON.parse((0, fs_1.readFileSync)((0, path_1.join)(__dirname, '..', 'package.json'), 'utf8'));
17
18
  // Function to get API version from current project or global installation
18
19
  function getApiVersion() {
19
- // Try to read from current project first
20
+ // Check if we're in a diagramers API project directory (development scenario)
21
+ try {
22
+ const projectPkg = JSON.parse((0, fs_1.readFileSync)((0, path_1.join)(process.cwd(), 'package.json'), 'utf8'));
23
+ if (projectPkg.name === '@diagramers/api') {
24
+ return `${projectPkg.version} (development)`;
25
+ }
26
+ }
27
+ catch { }
28
+ // Try to read from current project's node_modules first
20
29
  try {
21
30
  const projectApiPkg = JSON.parse((0, fs_1.readFileSync)((0, path_1.join)(process.cwd(), 'node_modules', '@diagramers', 'api', 'package.json'), 'utf8'));
22
31
  return `${projectApiPkg.version} (project)`;
@@ -28,15 +37,27 @@ function getApiVersion() {
28
37
  return `${globalApiPkg.version} (global)`;
29
38
  }
30
39
  catch { }
31
- // Check if we're in a project directory
40
+ // Check if we're in a project created from diagramers template
32
41
  try {
33
42
  const projectPkg = JSON.parse((0, fs_1.readFileSync)((0, path_1.join)(process.cwd(), 'package.json'), 'utf8'));
34
- if (projectPkg.name && projectPkg.name.includes('diagramers') ||
35
- projectPkg.description && projectPkg.description.includes('diagramers')) {
36
- return 'installed (project template)';
43
+ // Check if it's a diagramers project by structure and package.json content
44
+ const hasApiStructure = (0, fs_1.existsSync)((0, path_1.join)(process.cwd(), 'src', 'modules')) &&
45
+ (0, fs_1.existsSync)((0, path_1.join)(process.cwd(), 'src', 'core')) &&
46
+ (0, fs_1.existsSync)((0, path_1.join)(process.cwd(), 'src', 'shared'));
47
+ if (hasApiStructure ||
48
+ (projectPkg.name && projectPkg.name.includes('diagramers')) ||
49
+ (projectPkg.description && projectPkg.description.includes('diagramers')) ||
50
+ (projectPkg.description && projectPkg.description.includes('API project'))) {
51
+ return `${projectPkg.version} (project template)`;
37
52
  }
38
53
  }
39
54
  catch { }
55
+ // Try to check if it's available via npm (last resort)
56
+ try {
57
+ const npmVersion = (0, child_process_1.execSync)('npm view @diagramers/api version', { encoding: 'utf8', timeout: 5000 }).trim();
58
+ return `${npmVersion} (available on npm)`;
59
+ }
60
+ catch { }
40
61
  return 'not installed';
41
62
  }
42
63
  program
@@ -61,46 +82,96 @@ program
61
82
  }
62
83
  catch { }
63
84
  });
85
+ // Add commands
64
86
  (0, init_1.initCommand)(program);
65
87
  (0, update_1.updateCommand)(program);
66
88
  (0, extend_1.extendCommand)(program);
89
+ // Add versions command
90
+ program
91
+ .command('versions')
92
+ .description('List available versions of @diagramers/api')
93
+ .option('-a, --all', 'Show all versions (default: show last 10)')
94
+ .action(async (options) => {
95
+ try {
96
+ console.log(chalk_1.default.blue('šŸ“¦ Fetching available versions of @diagramers/api...'));
97
+ const versionsOutput = (0, child_process_1.execSync)('npm view @diagramers/api versions --json', {
98
+ encoding: 'utf8',
99
+ timeout: 10000
100
+ });
101
+ const versions = JSON.parse(versionsOutput);
102
+ console.log(chalk_1.default.green('\nāœ… Available versions:'));
103
+ if (Array.isArray(versions)) {
104
+ const displayVersions = options.all ? versions : versions.slice(-10);
105
+ displayVersions.forEach((version) => {
106
+ console.log(chalk_1.default.yellow(` ${version}`));
107
+ });
108
+ if (!options.all && versions.length > 10) {
109
+ console.log(chalk_1.default.gray(`\n ... and ${versions.length - 10} more versions`));
110
+ console.log(chalk_1.default.gray(' Use --all to see all versions'));
111
+ }
112
+ }
113
+ else {
114
+ console.log(chalk_1.default.yellow(` ${versions}`));
115
+ }
116
+ // Show current version
117
+ try {
118
+ const currentVersion = (0, child_process_1.execSync)('npm view @diagramers/api version', {
119
+ encoding: 'utf8',
120
+ timeout: 5000
121
+ }).trim();
122
+ console.log(chalk_1.default.green(`\nšŸ“Œ Latest version: ${currentVersion}`));
123
+ }
124
+ catch (error) {
125
+ // Ignore if we can't get current version
126
+ }
127
+ console.log(chalk_1.default.blue('\nšŸ“ Usage examples:'));
128
+ console.log(chalk_1.default.gray(' diagramers init api my-project --version 1.1.17'));
129
+ console.log(chalk_1.default.gray(' diagramers update --version 1.1.17'));
130
+ }
131
+ catch (error) {
132
+ console.error(chalk_1.default.red(`āŒ Failed to fetch versions: ${error.message}`));
133
+ console.log(chalk_1.default.yellow('šŸ’” Make sure you have internet connection and npm is installed'));
134
+ // Fallback: try to get just the latest version
135
+ try {
136
+ console.log(chalk_1.default.blue('\nšŸ”„ Trying to get latest version...'));
137
+ const latestVersion = (0, child_process_1.execSync)('npm view @diagramers/api version', {
138
+ encoding: 'utf8',
139
+ timeout: 5000
140
+ }).trim();
141
+ console.log(chalk_1.default.green(`āœ… Latest version: ${latestVersion}`));
142
+ }
143
+ catch (fallbackError) {
144
+ console.log(chalk_1.default.red('āŒ Could not fetch any version information'));
145
+ }
146
+ process.exit(1);
147
+ }
148
+ });
67
149
  program.addHelpText('after', `
68
150
  ${chalk_1.default.bold('Examples:')}
151
+ ${chalk_1.default.gray('# Initialize new API project')}
152
+ ${chalk_1.default.blue('diagramers init api my-new-api')}
153
+
154
+ ${chalk_1.default.gray('# Initialize with specific version')}
155
+ ${chalk_1.default.blue('diagramers init api my-new-api --version 1.1.17')}
156
+
157
+ ${chalk_1.default.gray('# Update project to latest version')}
158
+ ${chalk_1.default.blue('diagramers update')}
159
+
160
+ ${chalk_1.default.gray('# Update to specific version')}
161
+ ${chalk_1.default.blue('diagramers update --version 1.1.17')}
162
+
163
+ ${chalk_1.default.gray('# Generate new module')}
164
+ ${chalk_1.default.blue('diagramers extend --module products --crud')}
165
+
166
+ ${chalk_1.default.gray('# Add endpoint to existing module')}
167
+ ${chalk_1.default.blue('diagramers extend --endpoint users:search --method GET')}
168
+
169
+ ${chalk_1.default.gray('# List available versions')}
170
+ ${chalk_1.default.blue('diagramers versions')}
69
171
 
70
- ${chalk_1.default.cyan('Project Management:')}
71
- $ diagramers init api my-new-project # Create new API project
72
- $ diagramers init admin my-admin-dashboard # Create new admin project
73
- $ diagramers update # Update project templates
74
-
75
- ${chalk_1.default.cyan('Module Management:')}
76
- $ diagramers extend --module products --crud # Generate module with CRUD
77
- $ diagramers extend --module users --fields email,username,role
78
-
79
- ${chalk_1.default.cyan('Table Management:')}
80
- $ diagramers extend --table products:categories --fields name,description,slug
81
- $ diagramers extend --table users:profiles --fields bio,avatar,birth_date
82
-
83
- ${chalk_1.default.cyan('Endpoint Management:')}
84
- $ diagramers extend --endpoint products:search --method GET
85
- $ diagramers extend --endpoint users:reset-password --method POST
86
-
87
- ${chalk_1.default.cyan('Relation Management:')}
88
- $ diagramers extend --relation products:category-product
89
- $ diagramers extend --relation users:user-profile:one-to-one
90
- $ diagramers extend --relation products:product-tag:many-to-many
91
-
92
- ${chalk_1.default.cyan('Other Commands:')}
93
- $ diagramers extend --list # List available features
94
- $ diagramers extend --feature auth # Add authentication feature
95
-
96
- ${chalk_1.default.bold('Workflow Example:')}
97
- $ diagramers init api ecommerce-api # 1. Create project
98
- $ cd ecommerce-api # 2. Navigate to project
99
- $ diagramers extend --module products --crud # 3. Generate module
100
- $ diagramers extend --table products:categories --fields name,description
101
- $ diagramers extend --table products:products --fields name,price,category_id
102
- $ diagramers extend --relation products:category-product
103
- $ npm install && npm start # 4. Install & start
172
+ ${chalk_1.default.bold('Version Information:')}
173
+ CLI: ${chalk_1.default.green(cliPkg.version)}
174
+ API: ${chalk_1.default.green(getApiVersion())}
104
175
  `);
105
176
  // If no command is provided, show help
106
177
  if (!process.argv.slice(2).length) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}