@meadmin/cli 1.0.0

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 (42) hide show
  1. package/dist/commanders/crud.d.ts +2 -0
  2. package/dist/commanders/crud.js +543 -0
  3. package/dist/commanders/index.d.ts +2 -0
  4. package/dist/commanders/index.js +12 -0
  5. package/dist/commanders/sync.d.ts +2 -0
  6. package/dist/commanders/sync.js +32 -0
  7. package/dist/index.d.ts +1 -0
  8. package/dist/index.js +12 -0
  9. package/dist/utils/app.d.ts +5 -0
  10. package/dist/utils/app.js +12 -0
  11. package/dist/utils/db.d.ts +1 -0
  12. package/dist/utils/db.js +8 -0
  13. package/dist/utils/env.d.ts +1 -0
  14. package/dist/utils/env.js +20 -0
  15. package/dist/utils/file.d.ts +13 -0
  16. package/dist/utils/file.js +24 -0
  17. package/dist/utils/formatting.d.ts +68 -0
  18. package/dist/utils/formatting.js +103 -0
  19. package/dist/utils/log.d.ts +12 -0
  20. package/dist/utils/log.js +59 -0
  21. package/package.json +55 -0
  22. package/template/crud/server/controller/controller.ts.art +124 -0
  23. package/template/crud/server/dto/create.dto.ts.art +11 -0
  24. package/template/crud/server/dto/query.dto.ts.art +19 -0
  25. package/template/crud/server/dto/update.dto.ts.art +11 -0
  26. package/template/crud/server/service/service.ts.art +220 -0
  27. package/template/crud/view/api/api.ts.art +120 -0
  28. package/template/crud/view/api/class.ts.art +2 -0
  29. package/template/crud/view/api/searchTypes.ts.art +4 -0
  30. package/template/crud/view/api/type.ts.art +2 -0
  31. package/template/crud/view/api/valueDefault.ts.art +1 -0
  32. package/template/crud/view/api/valueType.ts.art +3 -0
  33. package/template/crud/view/views/components/addOrUp.vue.art +96 -0
  34. package/template/crud/view/views/components/addOrUpItem.vue.art +26 -0
  35. package/template/crud/view/views/components/info.vue.art +63 -0
  36. package/template/crud/view/views/components/rules.ts.art +5 -0
  37. package/template/crud/view/views/components/rulesList.ts.art +2 -0
  38. package/template/crud/view/views/dict.ts.art +11 -0
  39. package/template/crud/view/views/index.vue.art +83 -0
  40. package/template/crud/view/views/lang/en.json.art +4 -0
  41. package/template/crud/view/views/searchItem.vue.art +17 -0
  42. package/template/crud/view/views/tableColum.vue.art +19 -0
@@ -0,0 +1,2 @@
1
+ import { Command } from 'commander';
2
+ export declare const crudInit: (program: Command) => Promise<void>;
@@ -0,0 +1,543 @@
1
+ import { Sequelize } from '@sequelize/core';
2
+ import { getKeyInfo, lowerFirstCase, normalizeToKebabOrSnakeCase, relativePath, resovePath, toHump, upFirstCase } from '../utils/formatting.js';
3
+ import { existsSync } from 'node:fs';
4
+ import { join, resolve } from 'node:path';
5
+ import { getConfig } from '../utils/db.js';
6
+ import { delFileSync, recursionWriteFileSync } from '../utils/file.js';
7
+ import { Log } from '../utils/log.js';
8
+ import template from 'art-template';
9
+ import { getClassMetadata } from '@midwayjs/core';
10
+ import { DECORATORS, DECORATORS_CLASS_METADATA, SwaggerExplorer } from '@midwayjs/swagger';
11
+ import { pathToFileURL } from 'node:url';
12
+ import * as prettier from 'prettier';
13
+ import prettierrc from '../../.prettierrc.cjs';
14
+ import { omit } from 'lodash-es';
15
+ let swaggerSchemas = {};
16
+ let sequelize; //数据库配置
17
+ const tableInfos = {};
18
+ //关闭自动编码
19
+ template.defaults.excape = false;
20
+ template.defaults.minimize = false;
21
+ const include = template.defaults.include;
22
+ template.defaults.include = (...args) => include(...args).trim();
23
+ class MeSwaggerExplorer extends SwaggerExplorer {
24
+ /**
25
+ * 解析 ApiExtraModel
26
+ * @param clzz
27
+ */
28
+ parseApiExtraModel(clzz) {
29
+ const metaForClass = getClassMetadata(DECORATORS_CLASS_METADATA, clzz) || [];
30
+ const extraModels = metaForClass.filter((item) => item.key === DECORATORS.API_EXTRA_MODEL);
31
+ for (const m of extraModels) {
32
+ if (Array.isArray(m.metadata)) {
33
+ for (const sclz of m.metadata) {
34
+ this.parseClzz(sclz);
35
+ }
36
+ }
37
+ else {
38
+ this.parseClzz(m.metadata);
39
+ }
40
+ }
41
+ }
42
+ /**
43
+ * 解析 ApiExtraModel
44
+ * @param clzz
45
+ */
46
+ parseClzz(clzz) {
47
+ return super.parseClzz(clzz);
48
+ }
49
+ }
50
+ /**
51
+ * 获取schemas对象
52
+ * @param documentBuilder
53
+ * @param entitySchemaName
54
+ * @returns
55
+ */
56
+ const getSchemas = (documentBuilder, entitySchemaName) => {
57
+ const swaggerSchemas = {};
58
+ const setSchemas = (schemaName) => {
59
+ const name = (typeof schemaName === 'function' ? schemaName() : schemaName).replace('#/components/schemas/', '');
60
+ if (swaggerSchemas[name]) {
61
+ return;
62
+ }
63
+ swaggerSchemas[name] = documentBuilder.getSchema(name);
64
+ const setItem = (item) => {
65
+ if (item['$ref']) {
66
+ let ref = item['$ref'];
67
+ if (typeof item['$ref'] === 'function') {
68
+ ref = ref();
69
+ }
70
+ if (!['#/components/schemas/SystemAdmin', '#/components/schemas/File'].includes(ref)) {
71
+ setSchemas(ref);
72
+ }
73
+ else {
74
+ item['$ref'] = item['$ref'].replace('SystemAdmin', 'SystemAdminInfo').replace('File', 'FileInfo');
75
+ }
76
+ }
77
+ if (item.items) {
78
+ setItem(item.items);
79
+ }
80
+ if (item.properties) {
81
+ setProperties(item.properties);
82
+ }
83
+ };
84
+ const setProperties = (properties) => {
85
+ //设置变量顺序,放到到末尾
86
+ ['createdAt', 'updatedAt'].forEach((key) => {
87
+ if (properties[key]) {
88
+ const temp = properties[key];
89
+ delete properties[key];
90
+ properties[key] = temp;
91
+ }
92
+ });
93
+ Object.keys(properties).forEach((key) => {
94
+ setItem(properties[key]);
95
+ });
96
+ };
97
+ if (swaggerSchemas[name].properties) {
98
+ setProperties(swaggerSchemas[name].properties);
99
+ }
100
+ if (swaggerSchemas[name].items) {
101
+ setItem(swaggerSchemas[name].items);
102
+ }
103
+ };
104
+ setSchemas(entitySchemaName);
105
+ return swaggerSchemas;
106
+ };
107
+ /**
108
+ * 获取数据库信息
109
+ * @param entityName 实例className
110
+ * @param noBelongs 不查询belongs关联
111
+ * @returns
112
+ */
113
+ function tableInfo(entityName, noBelongs = false) {
114
+ if (tableInfos[entityName]) {
115
+ return tableInfos[entityName];
116
+ }
117
+ const modelDefinition = sequelize.models.get(entityName)?.modelDefinition;
118
+ if (!modelDefinition) {
119
+ tableInfos[entityName] = {
120
+ tableComment: '',
121
+ pk: [],
122
+ deletedAt: null,
123
+ attributes: {},
124
+ autoAttributes: [],
125
+ };
126
+ }
127
+ else {
128
+ let tableComment = modelDefinition.options.comment;
129
+ if (tableComment.endsWith('表')) {
130
+ tableComment = tableComment.slice(0, -1);
131
+ }
132
+ const autoAttributes = [...modelDefinition.primaryKeysAttributeNames, ...modelDefinition.readOnlyAttributeNames];
133
+ ['deletedVersion', 'createdAdminId', 'updatedAdminId', 'createdUserId', 'updatedUserId'].forEach((attribute) => {
134
+ if (modelDefinition.attributes.has(attribute)) {
135
+ autoAttributes.push(attribute);
136
+ }
137
+ });
138
+ if (swaggerSchemas[entityName]?.properties?.['createdAdmin']) {
139
+ autoAttributes.push('createdAdmin');
140
+ }
141
+ if (swaggerSchemas[entityName]?.properties?.['updatedAdmin']) {
142
+ autoAttributes.push('updatedAdmin');
143
+ }
144
+ if (swaggerSchemas[entityName]?.properties?.['createdUser']) {
145
+ autoAttributes.push('createdUser');
146
+ }
147
+ if (swaggerSchemas[entityName]?.properties?.['updatedUser']) {
148
+ autoAttributes.push('updatedUser');
149
+ }
150
+ const belongs = [];
151
+ const belongsTo = [];
152
+ const belongsToEntity = {};
153
+ const belongsToMany = [];
154
+ const belongsToManyEntity = {};
155
+ if (!noBelongs) {
156
+ Object.keys(modelDefinition.associations).forEach(key => {
157
+ if (['createdAdmin', 'updatedAdmin', 'createdUser', 'updatedUser'].includes(key)) {
158
+ belongs.push(key);
159
+ return;
160
+ }
161
+ if (modelDefinition.associations[key].isSelfAssociation) { //TODO::自关联暂不支持
162
+ return;
163
+ }
164
+ if ('BelongsTo' === modelDefinition.associations[key].associationType) {
165
+ belongs.push(key);
166
+ belongsTo.push(key);
167
+ belongsToEntity[key] = tableInfo(modelDefinition.associations[key].target.name, true);
168
+ }
169
+ if ('BelongsToMany' === modelDefinition.associations[key].associationType) {
170
+ belongs.push(key);
171
+ belongsToMany.push(key);
172
+ belongsToManyEntity[key] = tableInfo(modelDefinition.associations[key].target.name, true);
173
+ }
174
+ });
175
+ }
176
+ const nameKeys = []; //可快捷查询的name
177
+ for (const key of modelDefinition.attributes.keys()) {
178
+ if ((key.endsWith('name') || key.endsWith('Name')) && ['VARCHAR', 'CHAR', 'STRING'].some(v => modelDefinition.attributes.get(key).type.toString().includes(v))) {
179
+ nameKeys.push(key);
180
+ }
181
+ }
182
+ tableInfos[entityName] = {
183
+ entityName,
184
+ entityFileName: lowerFirstCase(entityName),
185
+ tableComment,
186
+ pk: Array.from(modelDefinition.primaryKeysAttributeNames),
187
+ deletedAt: modelDefinition.options.deletedAt,
188
+ attributes: modelDefinition.attributes,
189
+ autoAttributes,
190
+ belongsTo,
191
+ belongsToEntity,
192
+ belongsToMany,
193
+ belongsToManyEntity,
194
+ belongs: belongs,
195
+ nameKeys,
196
+ };
197
+ }
198
+ return tableInfos[entityName];
199
+ }
200
+ template.defaults.imports.tableInfo = tableInfo;
201
+ template.defaults.imports.upFirstCase = upFirstCase;
202
+ template.defaults.imports.lowerFirstCase = lowerFirstCase;
203
+ template.defaults.imports.objectKeys = Object.keys;
204
+ template.defaults.imports.objectValues = Object.values;
205
+ template.defaults.imports.leftTag = () => '{{';
206
+ template.defaults.imports.rightTag = () => '}}';
207
+ template.defaults.imports.getKeyInfo = getKeyInfo;
208
+ template.defaults.imports.langName = (name) => upFirstCase(normalizeToKebabOrSnakeCase(name, ' ').replace(' at', ' time')); //字段名转义为语言
209
+ // template.defaults.imports.log = console.log;//调试打印时放开
210
+ //需要写入的文件地址集(以.js结尾)
211
+ const writeServerFiles = {
212
+ entityPath: '',
213
+ createDtoPath: '',
214
+ updateDtoPath: '',
215
+ queryDtoPath: '',
216
+ servicePath: '',
217
+ controllerPath: '',
218
+ baseControllerPath: '',
219
+ };
220
+ const noWriteKey = ['entityPath', 'baseControllerPath'];
221
+ //需要写入的前端文件地址集
222
+ const writeViewFiles = {
223
+ apiPath: '',
224
+ listPath: '',
225
+ dictPath: '',
226
+ langEnPath: '',
227
+ info: '',
228
+ addOrUp: '',
229
+ };
230
+ const replaceNames = {
231
+ name: '',
232
+ Name: '',
233
+ createDto: '',
234
+ CreateDto: '',
235
+ updateDto: '',
236
+ UpdateDto: '',
237
+ queryDto: '',
238
+ QueryDto: '',
239
+ service: '',
240
+ Service: '',
241
+ controller: '',
242
+ Controller: '',
243
+ controllerPath: '',
244
+ namePath: '',
245
+ roleName: '',
246
+ };
247
+ //是否添加权限校验
248
+ let adminPermission = false;
249
+ /**
250
+ * 监测路径,如果待写入文件已存在则返回对应数组,否则返回true
251
+ * @returns Boolean|Array<string>
252
+ */
253
+ function checkPaths() {
254
+ const existsFiles = [];
255
+ Object.keys(writeServerFiles).forEach((key) => {
256
+ const path = writeServerFiles[key].endsWith('.js') ? writeServerFiles[key].replace('.js', '.ts') : writeServerFiles[key];
257
+ if (!noWriteKey.includes(key) && existsSync(path)) {
258
+ existsFiles.push(path);
259
+ }
260
+ });
261
+ Object.keys(writeViewFiles).forEach((key) => {
262
+ const path = writeViewFiles[key].endsWith('.js') ? writeViewFiles[key].replace('.js', '.ts') : writeViewFiles[key];
263
+ if (!noWriteKey.includes(key) && existsSync(path)) {
264
+ existsFiles.push(path);
265
+ }
266
+ });
267
+ return existsFiles.length === 0 ? true : existsFiles;
268
+ }
269
+ /**
270
+ * 替换模板内容并写入
271
+ * @param templatePath 模板文件路径
272
+ * @param toPath 写入文件路径
273
+ * @returns
274
+ */
275
+ async function writeContent(templatePath, toPath, writeType) {
276
+ const paths = writeType === 'api' ? { ...writeServerFiles } : { ...writeViewFiles };
277
+ Object.keys(paths).forEach((key) => {
278
+ paths[key] = relativePath(toPath, paths[key], []);
279
+ });
280
+ const str = template(resolve(import.meta.dirname, templatePath), {
281
+ adminPermission,
282
+ replaceNames,
283
+ paths,
284
+ swaggerSchemas,
285
+ entitySchema: swaggerSchemas[replaceNames.Name],
286
+ entity: tableInfo(replaceNames.Name),
287
+ });
288
+ if (str.trim()) {
289
+ recursionWriteFileSync(toPath.endsWith('.js') ? toPath.replace('.js', '.ts') : toPath, await prettier.format(str, {
290
+ ...prettierrc,
291
+ filepath: toPath.endsWith('.js') ? toPath.replace('.js', '.ts') : toPath,
292
+ }), { flag: 'w' });
293
+ Log.success((toPath.endsWith('.js') ? toPath.replace('.js', '.ts') : toPath) + ' 写入完成');
294
+ }
295
+ }
296
+ //写入后端文件
297
+ function writeServer() {
298
+ //写入后端文件
299
+ return Promise.all([
300
+ writeContent('../../template/crud/server/dto/create.dto.ts.art', writeServerFiles.createDtoPath, 'api'),
301
+ writeContent('../../template/crud/server/dto/update.dto.ts.art', writeServerFiles.updateDtoPath, 'api'),
302
+ writeContent('../../template/crud/server/dto/query.dto.ts.art', writeServerFiles.queryDtoPath, 'api'),
303
+ writeContent('../../template/crud/server/service/service.ts.art', writeServerFiles.servicePath, 'api'),
304
+ writeContent('../../template/crud/server/controller/controller.ts.art', writeServerFiles.controllerPath, 'api'),
305
+ ]);
306
+ }
307
+ //写入前端接口文件
308
+ function writeViewApi() {
309
+ return writeContent('../../template/crud/view/api/api.ts.art', writeViewFiles.apiPath, 'view');
310
+ }
311
+ //写入前端view文件
312
+ function writeViews() {
313
+ return Promise.all([
314
+ writeContent('../../template/crud/view/views/lang/en.json.art', writeViewFiles.langEnPath, 'view'),
315
+ writeContent('../../template/crud/view/views/dict.ts.art', writeViewFiles.dictPath, 'view'),
316
+ writeContent('../../template/crud/view/views/index.vue.art', writeViewFiles.listPath, 'view'),
317
+ writeContent('../../template/crud/view/views/components/info.vue.art', writeViewFiles.info, 'view'),
318
+ writeContent('../../template/crud/view/views/components/addOrUp.vue.art', writeViewFiles.addOrUp, 'view'),
319
+ ]);
320
+ }
321
+ /**
322
+ * 设置菜单及对应语言包内容
323
+ * @param model
324
+ * @returns
325
+ */
326
+ async function setMenu(model, namePath, sequelize) {
327
+ let parentId = null;
328
+ let paths = [];
329
+ const langFilePath = resovePath(`view/${model}/src/locales/lang/en/menu`, ['.json']);
330
+ const lang = await import(pathToFileURL(langFilePath).href, { with: { type: 'json' } });
331
+ const comments = tableInfo(replaceNames.Name).tableComment.split('_');
332
+ const menuNames = namePath.split('/').filter(v => v);
333
+ for (let i = 0; i < menuNames.length; i++) {
334
+ const menu = menuNames[i];
335
+ paths.push(menu);
336
+ let menuTitle = upFirstCase(toHump(menu));
337
+ if (comments.length === menuNames.length) {
338
+ lang.default[comments[i]] = menuTitle;
339
+ menuTitle = comments[i];
340
+ }
341
+ else {
342
+ if (i === (menuNames.length - 1)) {
343
+ lang.default[tableInfo(replaceNames.Name).tableComment] = menuTitle;
344
+ menuTitle = tableInfo(replaceNames.Name).tableComment;
345
+ }
346
+ else {
347
+ lang.default[menuTitle] = menuTitle;
348
+ }
349
+ }
350
+ if (i < (menuNames.length - 1)) {
351
+ const [menuEntity] = await sequelize.models.get('SystemMenu').findOrCreate({
352
+ where: { rule: paths.join('_') },
353
+ defaults: {
354
+ title: menuTitle,
355
+ menuType: 1, //目录
356
+ orderNum: 999,
357
+ path: '/' + paths.join('/'),
358
+ parentId,
359
+ alwaysShow: 1,
360
+ },
361
+ });
362
+ parentId = menuEntity.get('id');
363
+ }
364
+ else {
365
+ const [menuEntity] = await sequelize.models.get('SystemMenu').findOrCreate({
366
+ where: { rule: paths.join('_') },
367
+ defaults: {
368
+ title: menuTitle,
369
+ menuType: 2, //菜单
370
+ orderNum: 999,
371
+ path: '/' + paths.join('/'),
372
+ component: namePath + '/index',
373
+ parentId,
374
+ },
375
+ });
376
+ parentId = menuEntity.get('id');
377
+ }
378
+ }
379
+ await sequelize.models.get('SystemMenu').findOrCreate({
380
+ where: { rule: paths.join('_') + '_list' },
381
+ defaults: {
382
+ parentId,
383
+ title: '列表',
384
+ menuType: 3, //按钮
385
+ orderNum: 99,
386
+ },
387
+ });
388
+ await sequelize.models.get('SystemMenu').findOrCreate({
389
+ where: { rule: paths.join('_') + '_info' },
390
+ defaults: {
391
+ parentId,
392
+ title: '详情',
393
+ menuType: 3, //按钮
394
+ orderNum: 98,
395
+ },
396
+ });
397
+ await sequelize.models.get('SystemMenu').findOrCreate({
398
+ where: { rule: paths.join('_') + '_add' },
399
+ defaults: {
400
+ parentId,
401
+ title: '新增',
402
+ menuType: 3, //按钮
403
+ orderNum: 97,
404
+ },
405
+ });
406
+ await sequelize.models.get('SystemMenu').findOrCreate({
407
+ where: { rule: paths.join('_') + '_edit' },
408
+ defaults: {
409
+ parentId,
410
+ title: '编辑',
411
+ menuType: 3, //按钮
412
+ orderNum: 96,
413
+ },
414
+ });
415
+ await sequelize.models.get('SystemMenu').findOrCreate({
416
+ where: { rule: paths.join('_') + '_del' },
417
+ defaults: {
418
+ parentId,
419
+ title: '删除',
420
+ menuType: 3, //按钮
421
+ orderNum: 95,
422
+ },
423
+ });
424
+ recursionWriteFileSync(langFilePath, await prettier.format(JSON.stringify(lang.default), {
425
+ ...prettierrc,
426
+ filepath: langFilePath,
427
+ }));
428
+ return;
429
+ }
430
+ export const crudInit = async (program) => {
431
+ program
432
+ .command('crud')
433
+ .description('创建crud')
434
+ .argument('<file>', '基于的entity文件地址,如果是相对路径会基于src/entities查找')
435
+ .requiredOption('--model <char>', 'model名称会放到app/{model}下对应的文件夹', 'admin')
436
+ .option('-f, --force', '强制覆盖')
437
+ .option('-n, --name <char>', '使用的数据库配置defaultDataSourceName')
438
+ .option('-d, --dbConfig <char>', '数据库配置文件地址默认为当前目录下dist/config/database.js', join(process.cwd(), 'dist/config/database.js'))
439
+ .option('--del', '删除crud创建的文件')
440
+ .option('--path <char>', '生成的路径,默认根据驼峰转多级路径')
441
+ .option('-c, --controller <char>', '生成的controller路径,默认使用path')
442
+ .option('--menu', '生成菜单')
443
+ .option('--cov, --coverage <char>', '生成代码发覆盖范围:b后端代码、a前端api接口代码、v前端view 代码、p后台权限校验,默认值bavp', 'bavp')
444
+ .action(async (file, options) => {
445
+ sequelize = new Sequelize(await getConfig(options.dbConfig, options.name));
446
+ const noSuffixEntityPath = relativePath('', file, ['.entity', '.ts']);
447
+ const entityFileName = lowerFirstCase(toHump(relativePath('', noSuffixEntityPath, []).split('/').pop()));
448
+ replaceNames.namePath = options.path ? options.path : normalizeToKebabOrSnakeCase(entityFileName, '/');
449
+ replaceNames.namePath = replaceNames.namePath.replaceAll('//', '/');
450
+ if (replaceNames.namePath.endsWith('/')) {
451
+ replaceNames.namePath = replaceNames.namePath.slice(0, -1);
452
+ }
453
+ if (replaceNames.namePath.startsWith('/')) {
454
+ replaceNames.namePath = replaceNames.namePath.slice(1);
455
+ }
456
+ replaceNames.roleName = replaceNames.namePath.split('/').filter(v => v).join('_');
457
+ replaceNames.controllerPath = options.controllerPath ? options.controllerPath : replaceNames.namePath;
458
+ //初始化需要创建的文件路径
459
+ writeServerFiles.entityPath = resovePath(noSuffixEntityPath + '.entity.js', [], process.cwd() + '/src/entities');
460
+ writeServerFiles.baseControllerPath = resovePath(`src/app/${options.model}/controller/base`, ['.controller', '.js']);
461
+ const entity = await import(pathToFileURL(writeServerFiles.entityPath.replace('/src/', '/dist/')).href);
462
+ writeServerFiles.createDtoPath = resovePath(`src/app/${options.model}/dto/${replaceNames.namePath}Create`, ['.dto', '.js']);
463
+ writeServerFiles.updateDtoPath = resovePath(`src/app/${options.model}/dto/${replaceNames.namePath}Update`, ['.dto', '.js']);
464
+ writeServerFiles.queryDtoPath = resovePath(`src/app/${options.model}/dto/${replaceNames.namePath}Query`, ['.dto', '.js']);
465
+ writeServerFiles.servicePath = resovePath(`src/app/${options.model}/service/${replaceNames.namePath}`, ['.service', '.js']);
466
+ writeServerFiles.controllerPath = resovePath(`src/app/${options.model}/controller/${replaceNames.namePath}`, ['.controller', '.js']);
467
+ writeViewFiles.apiPath = resovePath(`view/${options.model}/src/api/${replaceNames.namePath}`, ['.js']);
468
+ writeViewFiles.langEnPath = resovePath(`view/${options.model}/src/views/${replaceNames.namePath}/lang/en`, ['.json']);
469
+ writeViewFiles.dictPath = resovePath(`view/${options.model}/src/views/${replaceNames.namePath}/dict`, ['.js']);
470
+ writeViewFiles.listPath = resovePath(`view/${options.model}/src/views/${replaceNames.namePath}/index`, ['.vue']);
471
+ writeViewFiles.info = resovePath(`view/${options.model}/src/views/${replaceNames.namePath}/components/info`, ['.vue']);
472
+ writeViewFiles.addOrUp = resovePath(`view/${options.model}/src/views/${replaceNames.namePath}/components/addOrUp`, ['.vue']);
473
+ if (options.del) {
474
+ const delPath = [];
475
+ if (options.coverage.includes('b')) {
476
+ delPath.push(...Object.values(omit(writeServerFiles, noWriteKey)));
477
+ }
478
+ if (options.coverage.includes('a') && !noWriteKey.includes('apiPath')) {
479
+ delPath.push(writeViewFiles.apiPath);
480
+ }
481
+ if (options.coverage.includes('v')) {
482
+ delPath.push(...Object.values(omit(writeViewFiles, ['apiPath', ...noWriteKey])));
483
+ }
484
+ delPath.forEach((toPath) => {
485
+ delFileSync(toPath.endsWith('.js') ? toPath.replace('.js', '.ts') : toPath);
486
+ Log.warn((toPath.endsWith('.js') ? toPath.replace('.js', '.ts') : toPath) + ' 已删除');
487
+ });
488
+ if (options.coverage.includes('v')) {
489
+ delFileSync(`view/${options.model}/src/views/${replaceNames.namePath}`);
490
+ Log.warn(`view/${options.model}/src/views/${replaceNames.namePath}` + ' 已删除');
491
+ }
492
+ Log.success(entityFileName + ' 清除成功');
493
+ return;
494
+ }
495
+ if (!options.force) {
496
+ let res = checkPaths();
497
+ if (res !== true) {
498
+ Log.error('文件已存在,如果想要强制覆盖请使用-f参数\n' + res.join('\n'));
499
+ return;
500
+ }
501
+ }
502
+ //初始化变量名称
503
+ replaceNames.name = entityFileName;
504
+ replaceNames.Name = upFirstCase(replaceNames.name);
505
+ replaceNames.createDto = `${entityFileName}CreateDto`;
506
+ replaceNames.CreateDto = upFirstCase(replaceNames.createDto);
507
+ replaceNames.updateDto = `${entityFileName}UpdateDto`;
508
+ replaceNames.UpdateDto = upFirstCase(replaceNames.updateDto);
509
+ replaceNames.queryDto = `${entityFileName}QueryDto`;
510
+ replaceNames.QueryDto = upFirstCase(replaceNames.queryDto);
511
+ replaceNames.service = `${entityFileName}Service`;
512
+ replaceNames.Service = upFirstCase(replaceNames.service);
513
+ replaceNames.controller = `${entityFileName}Controller`;
514
+ replaceNames.Controller = upFirstCase(replaceNames.controller);
515
+ const swaggerExplorer = new MeSwaggerExplorer();
516
+ swaggerExplorer.parseApiExtraModel(entity[upFirstCase(entityFileName)]);
517
+ swaggerExplorer.parseClzz(entity[upFirstCase(entityFileName)]);
518
+ for (let modelName of sequelize.models.getNames()) {
519
+ swaggerExplorer.parseApiExtraModel(sequelize.models.get(modelName));
520
+ swaggerExplorer.parseClzz(sequelize.models.get(modelName));
521
+ }
522
+ swaggerSchemas = getSchemas(swaggerExplorer.getDocumentBuilder(), replaceNames.Name);
523
+ if (options.coverage.includes('p')) {
524
+ adminPermission = true;
525
+ }
526
+ //写入文件
527
+ if (options.coverage.includes('b')) {
528
+ await writeServer();
529
+ }
530
+ if (options.coverage.includes('a')) {
531
+ await writeViewApi();
532
+ }
533
+ if (options.coverage.includes('v')) {
534
+ await writeViews();
535
+ }
536
+ if (options.menu) {
537
+ await setMenu(options.model, replaceNames.namePath, sequelize);
538
+ }
539
+ sequelize.close();
540
+ Log.success(entityFileName + ' crud创建完成');
541
+ });
542
+ };
543
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J1ZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kZXJzL2NydWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQyxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSwyQkFBMkIsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVoSixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RDLE9BQU8sUUFBUSxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLHlCQUF5QixFQUF1RCxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoSixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBR3pDLE9BQU8sS0FBSyxRQUFRLE1BQU0sVUFBVSxDQUFDO0FBQ3JDLE9BQU8sVUFBVSxNQUFNLHVCQUF1QixDQUFDO0FBQy9DLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFakMsSUFBSSxjQUFjLEdBQUcsRUFBa0MsQ0FBQztBQUN4RCxJQUFJLFNBQW9CLENBQUMsQ0FBQyxPQUFPO0FBQ2pDLE1BQU0sVUFBVSxHQUFHLEVBS2xCLENBQUM7QUFDRixRQUFRO0FBQ1IsUUFB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QUFPLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEcsZ0JBQWdCLENBQUMsYUFBYSxHQUFHLFVBQVUsQ0FBQyxXQUFXLE9BQU8sQ0FBQyxLQUFLLFFBQVEsWUFBWSxDQUFDLFFBQVEsUUFBUSxFQUFFLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDNUgsZ0JBQWdCLENBQUMsYUFBYSxHQUFHLFVBQVUsQ0FBQyxXQUFXLE9BQU8sQ0FBQyxLQUFLLFFBQVEsWUFBWSxDQUFDLFFBQVEsUUFBUSxFQUFFLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDNUgsZ0JBQWdCLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxXQUFXLE9BQU8sQ0FBQyxLQUFLLFFBQVEsWUFBWSxDQUFDLFFBQVEsT0FBTyxFQUFFLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDMUgsZ0JBQWdCLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxXQUFXLE9BQU8sQ0FBQyxLQUFLLFlBQVksWUFBWSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDNUgsZ0JBQWdCLENBQUMsY0FBYyxHQUFHLFVBQVUsQ0FBQyxXQUFXLE9BQU8sQ0FBQyxLQUFLLGVBQWUsWUFBWSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDckksY0FBYyxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUMsUUFBUSxPQUFPLENBQUMsS0FBSyxZQUFZLFlBQVksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDdkcsY0FBYyxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsUUFBUSxPQUFPLENBQUMsS0FBSyxjQUFjLFlBQVksQ0FBQyxRQUFRLFVBQVUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDdEgsY0FBYyxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsUUFBUSxPQUFPLENBQUMsS0FBSyxjQUFjLFlBQVksQ0FBQyxRQUFRLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDL0csY0FBYyxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsUUFBUSxPQUFPLENBQUMsS0FBSyxjQUFjLFlBQVksQ0FBQyxRQUFRLFFBQVEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDakgsY0FBYyxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsUUFBUSxPQUFPLENBQUMsS0FBSyxjQUFjLFlBQVksQ0FBQyxRQUFRLGtCQUFrQixFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN2SCxjQUFjLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxRQUFRLE9BQU8sQ0FBQyxLQUFLLGNBQWMsWUFBWSxDQUFDLFFBQVEscUJBQXFCLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQzdILElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sT0FBTyxHQUFHLEVBQWMsQ0FBQztZQUMvQixJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ25DLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckUsQ0FBQztZQUNELElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RFLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7WUFDRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ25DLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxTQUFTLEVBQUUsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuRixDQUFDO1lBQ0QsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQWMsRUFBRSxFQUFFO2dCQUNqQyxXQUFXLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM1RSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO1lBQ3RGLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNuQyxXQUFXLENBQUMsUUFBUSxPQUFPLENBQUMsS0FBSyxjQUFjLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUN4RSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsT0FBTyxDQUFDLEtBQUssY0FBYyxZQUFZLENBQUMsUUFBUSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUM7WUFDaEYsQ0FBQztZQUNELEdBQUcsQ0FBQyxPQUFPLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQyxDQUFDO1lBQ3RDLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNuQixJQUFJLEdBQUcsR0FBRyxVQUFVLEVBQUUsQ0FBQztZQUN2QixJQUFJLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDakIsR0FBRyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ3RELE9BQU87WUFDVCxDQUFDO1FBQ0gsQ0FBQztRQUNELFNBQVM7UUFDVCxZQUFZLENBQUMsSUFBSSxHQUFHLGNBQWMsQ0FBQztRQUNuQyxZQUFZLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkQsWUFBWSxDQUFDLFNBQVMsR0FBRyxHQUFHLGNBQWMsV0FBVyxDQUFDO1FBQ3RELFlBQVksQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3RCxZQUFZLENBQUMsU0FBUyxHQUFHLEdBQUcsY0FBYyxXQUFXLENBQUM7UUFDdEQsWUFBWSxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdELFlBQVksQ0FBQyxRQUFRLEdBQUcsR0FBRyxjQUFjLFVBQVUsQ0FBQztRQUNwRCxZQUFZLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0QsWUFBWSxDQUFDLE9BQU8sR0FBRyxHQUFHLGNBQWMsU0FBUyxDQUFDO1FBQ2xELFlBQVksQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6RCxZQUFZLENBQUMsVUFBVSxHQUFHLEdBQUcsY0FBYyxZQUFZLENBQUM7UUFDeEQsWUFBWSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sZUFBZSxHQUFHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUNoRCxlQUFlLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEUsZUFBZSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvRCxLQUFJLElBQUksU0FBUyxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUMsQ0FBQztZQUM5QyxlQUFlLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUNwRSxlQUFlLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUNELGNBQWMsR0FBRyxVQUFVLENBQUMsZUFBZSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JGLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNuQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLENBQUM7UUFDRCxNQUFNO1FBQ04sSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ25DLE1BQU0sV0FBVyxFQUFFLENBQUM7UUFDdEIsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNuQyxNQUFNLFlBQVksRUFBRSxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbkMsTUFBTSxVQUFVLEVBQUUsQ0FBQztRQUNyQixDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDakIsTUFBTSxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFDRCxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDakIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEdBQUcsV0FBVyxDQUFDLENBQUM7SUFDNUMsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUMifQ==
@@ -0,0 +1,2 @@
1
+ import { Command } from 'commander';
2
+ export declare const init: (program: Command) => void;
@@ -0,0 +1,12 @@
1
+ import { crudInit } from './crud.js';
2
+ import { syncInit } from './sync.js';
3
+ import { setEnv } from '../utils/env.js';
4
+ export const init = (program) => {
5
+ program.option('-m <char>', 'env环境变量')
6
+ .hook('preAction', (thisCommand) => {
7
+ setEnv(thisCommand.opts().m);
8
+ });
9
+ syncInit(program);
10
+ crudInit(program);
11
+ };
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLE9BQWUsRUFBQyxFQUFFO0lBQ25DLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQztTQUNyQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsV0FBVyxFQUFFLEVBQUU7UUFDL0IsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNILFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsQixRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdEIsQ0FBQyxDQUFBIn0=
@@ -0,0 +1,2 @@
1
+ import { Command } from 'commander';
2
+ export declare const syncInit: (program: Command) => void;