@diagramers/cli 1.1.39 → 1.1.42
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.
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../src/commands/admin.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../src/commands/admin.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2CpC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,OA6I5C"}
|
package/dist/commands/admin.js
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
"use strict";
|
2
|
+
// Admin CLI commands have been removed. Start your new admin CLI implementation here.
|
2
3
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
4
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
5
|
};
|
@@ -6,10 +7,48 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
7
|
exports.adminCommand = adminCommand;
|
7
8
|
const chalk_1 = __importDefault(require("chalk"));
|
8
9
|
const child_process_1 = require("child_process");
|
10
|
+
const fs_1 = __importDefault(require("fs"));
|
11
|
+
const path_1 = __importDefault(require("path"));
|
12
|
+
const glob_1 = __importDefault(require("glob"));
|
13
|
+
// Utility to read .templateignore and filter files
|
14
|
+
function getTemplateFiles(templateDir) {
|
15
|
+
const ignorePath = path_1.default.join(templateDir, '.templateignore');
|
16
|
+
let ignorePatterns = [];
|
17
|
+
if (fs_1.default.existsSync(ignorePath)) {
|
18
|
+
ignorePatterns = fs_1.default.readFileSync(ignorePath, 'utf8')
|
19
|
+
.split('\n')
|
20
|
+
.map(line => line.trim())
|
21
|
+
.filter(line => line && !line.startsWith('#'));
|
22
|
+
}
|
23
|
+
// Get all files, then filter out ignored
|
24
|
+
const allFiles = glob_1.default.sync('**/*', { cwd: templateDir, dot: true, nodir: true });
|
25
|
+
if (ignorePatterns.length === 0)
|
26
|
+
return allFiles;
|
27
|
+
// Use glob to filter
|
28
|
+
const ignored = new Set(ignorePatterns.flatMap(pattern => glob_1.default.sync(pattern, { cwd: templateDir, dot: true, nodir: true })));
|
29
|
+
return allFiles.filter(f => !ignored.has(f));
|
30
|
+
}
|
31
|
+
// Example usage in a stub for processAdminTemplate
|
32
|
+
async function processAdminTemplate(projectName) {
|
33
|
+
const templateDir = path_1.default.resolve(__dirname, '../../../diagramers-admin');
|
34
|
+
const destDir = path_1.default.resolve(process.cwd(), projectName);
|
35
|
+
if (!fs_1.default.existsSync(destDir))
|
36
|
+
fs_1.default.mkdirSync(destDir, { recursive: true });
|
37
|
+
const files = getTemplateFiles(templateDir);
|
38
|
+
for (const relPath of files) {
|
39
|
+
const srcPath = path_1.default.join(templateDir, relPath);
|
40
|
+
const destPath = path_1.default.join(destDir, relPath);
|
41
|
+
const destFolder = path_1.default.dirname(destPath);
|
42
|
+
if (!fs_1.default.existsSync(destFolder))
|
43
|
+
fs_1.default.mkdirSync(destFolder, { recursive: true });
|
44
|
+
fs_1.default.copyFileSync(srcPath, destPath);
|
45
|
+
}
|
46
|
+
console.log(chalk_1.default.green(`✅ Admin template processed for '${projectName}' (ignored files excluded)`));
|
47
|
+
}
|
9
48
|
function adminCommand(program) {
|
10
49
|
const admin = program
|
11
50
|
.command('admin')
|
12
|
-
.description('Admin-specific commands for
|
51
|
+
.description('Admin-specific commands for Diagramers projects');
|
13
52
|
// Version command
|
14
53
|
admin
|
15
54
|
.command('version')
|
@@ -22,17 +61,16 @@ function adminCommand(program) {
|
|
22
61
|
try {
|
23
62
|
const versionInfo = (0, child_process_1.execSync)(`npm view @diagramers/admin@${options.check} version`, {
|
24
63
|
encoding: 'utf8',
|
25
|
-
timeout: 5000
|
64
|
+
timeout: 5000,
|
26
65
|
}).trim();
|
27
66
|
console.log(chalk_1.default.green(`✅ Version ${options.check} exists: ${versionInfo}`));
|
28
67
|
}
|
29
68
|
catch (error) {
|
30
69
|
console.log(chalk_1.default.red(`❌ Version ${options.check} not found`));
|
31
|
-
// Show available versions
|
32
70
|
try {
|
33
71
|
const versionsOutput = (0, child_process_1.execSync)('npm view @diagramers/admin versions --json', {
|
34
72
|
encoding: 'utf8',
|
35
|
-
timeout: 10000
|
73
|
+
timeout: 10000,
|
36
74
|
});
|
37
75
|
const versions = JSON.parse(versionsOutput);
|
38
76
|
const recentVersions = Array.isArray(versions) ? versions.slice(-5) : [versions];
|
@@ -47,23 +85,21 @@ function adminCommand(program) {
|
|
47
85
|
}
|
48
86
|
}
|
49
87
|
else {
|
50
|
-
// Show current version info
|
51
88
|
console.log(chalk_1.default.blue('📦 @diagramers/admin version information:'));
|
52
89
|
try {
|
53
90
|
const latestVersion = (0, child_process_1.execSync)('npm view @diagramers/admin version', {
|
54
91
|
encoding: 'utf8',
|
55
|
-
timeout: 5000
|
92
|
+
timeout: 5000,
|
56
93
|
}).trim();
|
57
94
|
console.log(chalk_1.default.green(`Latest: ${latestVersion}`));
|
58
95
|
}
|
59
96
|
catch (error) {
|
60
97
|
console.log(chalk_1.default.red('Could not fetch latest version'));
|
61
98
|
}
|
62
|
-
// Check local version if in a project
|
63
99
|
try {
|
64
100
|
const localVersion = (0, child_process_1.execSync)('npm list @diagramers/admin --depth=0', {
|
65
101
|
encoding: 'utf8',
|
66
|
-
timeout: 5000
|
102
|
+
timeout: 5000,
|
67
103
|
});
|
68
104
|
console.log(chalk_1.default.blue('Local project version:'));
|
69
105
|
console.log(localVersion);
|
@@ -78,118 +114,78 @@ function adminCommand(program) {
|
|
78
114
|
process.exit(1);
|
79
115
|
}
|
80
116
|
});
|
81
|
-
//
|
117
|
+
// Generate admin module
|
82
118
|
admin
|
83
|
-
.command('
|
84
|
-
.description('
|
85
|
-
.
|
86
|
-
.option('-v, --version <version>', 'Specific version to use')
|
87
|
-
.action(async (projectName, options) => {
|
119
|
+
.command('generate:module <name>')
|
120
|
+
.description('Generate a new admin module (feature folder/component/page)')
|
121
|
+
.action(async (name) => {
|
88
122
|
try {
|
89
|
-
console.log(chalk_1.default.blue(`🚀
|
90
|
-
|
91
|
-
|
92
|
-
command += `@${options.version}`;
|
93
|
-
}
|
94
|
-
command += ` init ${projectName}`;
|
95
|
-
if (options.port) {
|
96
|
-
command += ` --port ${options.port}`;
|
97
|
-
}
|
98
|
-
console.log(chalk_1.default.gray(`Executing: ${command}`));
|
99
|
-
(0, child_process_1.execSync)(command, { stdio: 'inherit' });
|
100
|
-
console.log(chalk_1.default.green(`✅ React admin application '${projectName}' initialized successfully!`));
|
101
|
-
console.log(chalk_1.default.blue(`📁 Project created at: ${process.cwd()}/${projectName}`));
|
102
|
-
console.log(chalk_1.default.blue(`🚀 To start development: cd ${projectName} && npm start`));
|
123
|
+
console.log(chalk_1.default.blue(`🚀 Generating admin module: ${name}`));
|
124
|
+
await generateAdminModule(name);
|
125
|
+
console.log(chalk_1.default.green(`✅ Admin module '${name}' generated successfully!`));
|
103
126
|
}
|
104
127
|
catch (error) {
|
105
|
-
console.error(chalk_1.default.red(`❌
|
128
|
+
console.error(chalk_1.default.red(`❌ Error generating admin module: ${error.message}`));
|
106
129
|
process.exit(1);
|
107
130
|
}
|
108
131
|
});
|
109
|
-
//
|
132
|
+
// Generate admin page
|
110
133
|
admin
|
111
|
-
.command('
|
112
|
-
.description('
|
113
|
-
.
|
114
|
-
.action(async (feature, options) => {
|
134
|
+
.command('generate:page <name>')
|
135
|
+
.description('Generate a new page in the admin dashboard')
|
136
|
+
.action(async (name) => {
|
115
137
|
try {
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
process.exit(1);
|
120
|
-
}
|
121
|
-
console.log(chalk_1.default.blue(`🔧 Extending project with ${feature} feature`));
|
122
|
-
let command = `npx @diagramers/admin extend ${feature}`;
|
123
|
-
if (options.project) {
|
124
|
-
// Change to project directory
|
125
|
-
process.chdir(options.project);
|
126
|
-
}
|
127
|
-
console.log(chalk_1.default.gray(`Executing: ${command}`));
|
128
|
-
(0, child_process_1.execSync)(command, { stdio: 'inherit' });
|
129
|
-
console.log(chalk_1.default.green(`✅ ${feature} feature added successfully!`));
|
138
|
+
console.log(chalk_1.default.blue(`🚀 Generating admin page: ${name}`));
|
139
|
+
await generateAdminPage(name);
|
140
|
+
console.log(chalk_1.default.green(`✅ Admin page '${name}' generated successfully!`));
|
130
141
|
}
|
131
142
|
catch (error) {
|
132
|
-
console.error(chalk_1.default.red(`❌
|
143
|
+
console.error(chalk_1.default.red(`❌ Error generating admin page: ${error.message}`));
|
133
144
|
process.exit(1);
|
134
145
|
}
|
135
146
|
});
|
136
|
-
//
|
147
|
+
// Generate admin component
|
137
148
|
admin
|
138
|
-
.command('
|
139
|
-
.description('
|
140
|
-
.action(() => {
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
console.log(chalk_1.default.yellow('\n📊 dashboard'));
|
151
|
-
console.log(chalk_1.default.gray(' - Analytics dashboard components'));
|
152
|
-
console.log(chalk_1.default.gray(' - Charts and statistics'));
|
153
|
-
console.log(chalk_1.default.gray(' - Redux dashboard slice for data management'));
|
154
|
-
console.log(chalk_1.default.blue('\n📝 Usage:'));
|
155
|
-
console.log(chalk_1.default.gray(' diagramers admin extend auth'));
|
156
|
-
console.log(chalk_1.default.gray(' diagramers admin extend users'));
|
157
|
-
console.log(chalk_1.default.gray(' diagramers admin extend dashboard'));
|
149
|
+
.command('generate:component <name>')
|
150
|
+
.description('Generate a new reusable component in the admin project')
|
151
|
+
.action(async (name) => {
|
152
|
+
try {
|
153
|
+
console.log(chalk_1.default.blue(`🚀 Generating admin component: ${name}`));
|
154
|
+
await generateAdminComponent(name);
|
155
|
+
console.log(chalk_1.default.green(`✅ Admin component '${name}' generated successfully!`));
|
156
|
+
}
|
157
|
+
catch (error) {
|
158
|
+
console.error(chalk_1.default.red(`❌ Error generating admin component: ${error.message}`));
|
159
|
+
process.exit(1);
|
160
|
+
}
|
158
161
|
});
|
159
|
-
//
|
162
|
+
// Generate admin service
|
160
163
|
admin
|
161
|
-
.command('
|
162
|
-
.description('
|
163
|
-
.
|
164
|
-
.option('-p, --project <path>', 'Project path (defaults to current directory)')
|
165
|
-
.action(async (options) => {
|
164
|
+
.command('generate:service <name>')
|
165
|
+
.description('Generate a new service (API integration or business logic) in the admin project')
|
166
|
+
.action(async (name) => {
|
166
167
|
try {
|
167
|
-
console.log(chalk_1.default.blue(
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
}
|
183
|
-
|
184
|
-
|
185
|
-
updateCommand = `npm install @diagramers/admin@${options.version}`;
|
186
|
-
}
|
187
|
-
console.log(chalk_1.default.gray(`Executing: ${updateCommand}`));
|
188
|
-
(0, child_process_1.execSync)(updateCommand, { stdio: 'inherit' });
|
189
|
-
console.log(chalk_1.default.green('✅ Admin project updated successfully!'));
|
168
|
+
console.log(chalk_1.default.blue(`🚀 Generating admin service: ${name}`));
|
169
|
+
await generateAdminService(name);
|
170
|
+
console.log(chalk_1.default.green(`✅ Admin service '${name}' generated successfully!`));
|
171
|
+
}
|
172
|
+
catch (error) {
|
173
|
+
console.error(chalk_1.default.red(`❌ Error generating admin service: ${error.message}`));
|
174
|
+
process.exit(1);
|
175
|
+
}
|
176
|
+
});
|
177
|
+
// Process admin template
|
178
|
+
admin
|
179
|
+
.command('process:template <projectName>')
|
180
|
+
.description('Process the admin template for a new project (branding, API URL, etc.)')
|
181
|
+
.action(async (projectName) => {
|
182
|
+
try {
|
183
|
+
console.log(chalk_1.default.blue(`🔧 Processing admin template for project: ${projectName}`));
|
184
|
+
await processAdminTemplate(projectName);
|
185
|
+
console.log(chalk_1.default.green(`✅ Admin template processed for '${projectName}'!`));
|
190
186
|
}
|
191
187
|
catch (error) {
|
192
|
-
console.error(chalk_1.default.red(`❌
|
188
|
+
console.error(chalk_1.default.red(`❌ Error processing admin template: ${error.message}`));
|
193
189
|
process.exit(1);
|
194
190
|
}
|
195
191
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"admin.js","sourceRoot":"","sources":["../../src/commands/admin.ts"],"names":[],"mappings":";;;;;
|
1
|
+
{"version":3,"file":"admin.js","sourceRoot":"","sources":["../../src/commands/admin.ts"],"names":[],"mappings":"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"}
|