@simitgroup/simpleapp-generator 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.prettierrc +6 -0
- package/LICENSE +201 -0
- package/README.md +668 -0
- package/definations/person.pes.jsonschema.json +84 -0
- package/definations/salesinvoice.si.jsonschema.json +84 -0
- package/dist/app.module.ts +14 -0
- package/dist/constant.js +6 -0
- package/dist/constant.js.map +1 -0
- package/dist/createproject.js +123 -0
- package/dist/createproject.js.map +1 -0
- package/dist/generate.js +225 -0
- package/dist/generate.js.map +1 -0
- package/dist/index.js +65 -0
- package/dist/index.js.map +1 -0
- package/dist/libs.js +15 -0
- package/dist/libs.js.map +1 -0
- package/dist/processors/jsonschemabuilder.js +116 -0
- package/dist/processors/jsonschemabuilder.js.map +1 -0
- package/dist/type.js +13 -0
- package/dist/type.js.map +1 -0
- package/package.json +44 -0
- package/sampleconfig.json +6 -0
- package/src/constant.ts +2 -0
- package/src/createproject.ts +96 -0
- package/src/generate.ts +254 -0
- package/src/index.ts +73 -0
- package/src/libs.ts +14 -0
- package/src/processors/jsonschemabuilder.ts +137 -0
- package/src/type.ts +42 -0
- package/templates/SimpleAppClient.eta +111 -0
- package/templates/SimpleAppController.eta +66 -0
- package/templates/SimpleAppService.eta +134 -0
- package/templates/app.module.eta +15 -0
- package/templates/app.vue.eta +21 -0
- package/templates/basic/apiclient.eta +56 -0
- package/templates/basic/apischema.eta +29 -0
- package/templates/basic/backend.config.eta +1 -0
- package/templates/basic/beforesave.eta +7 -0
- package/templates/basic/controller.eta +103 -0
- package/templates/basic/controller2.eta +86 -0
- package/templates/basic/frontend.config.eta +1 -0
- package/templates/basic/jsonschema.eta +6 -0
- package/templates/basic/model-converter.etabackup +21 -0
- package/templates/basic/model.eta +35 -0
- package/templates/basic/module.eta +20 -0
- package/templates/basic/readme.eta +3 -0
- package/templates/basic/service.eta +32 -0
- package/templates/basic/service.etabackupe +106 -0
- package/templates/basic/type.eta +27 -0
- package/templates/basic/type.etabackup +23 -0
- package/templates/basic/uischema.eta +13 -0
- package/templates/nest.env.eta +5 -0
- package/templates/nest.main.eta +20 -0
- package/templates/nuxt.env.eta +2 -0
- package/tsconfig.json +17 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "object",
|
|
3
|
+
"properties": {
|
|
4
|
+
"name": {
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"firstName": {
|
|
8
|
+
"type": "string",
|
|
9
|
+
"examples": [
|
|
10
|
+
"John"
|
|
11
|
+
]
|
|
12
|
+
},
|
|
13
|
+
"lastName": {
|
|
14
|
+
"type": "string",
|
|
15
|
+
"examples": [
|
|
16
|
+
"Fox"
|
|
17
|
+
]
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"age": {
|
|
22
|
+
"type": "integer",
|
|
23
|
+
"examples": [
|
|
24
|
+
20
|
|
25
|
+
]
|
|
26
|
+
},
|
|
27
|
+
"email": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"examples": [
|
|
30
|
+
"john@example.com"
|
|
31
|
+
],
|
|
32
|
+
"format": "email"
|
|
33
|
+
},
|
|
34
|
+
"dob": {
|
|
35
|
+
"type": "string",
|
|
36
|
+
"examples": [
|
|
37
|
+
"2000-01-01"
|
|
38
|
+
],
|
|
39
|
+
"format": "date"
|
|
40
|
+
},
|
|
41
|
+
"hobbies": {
|
|
42
|
+
"type": "array",
|
|
43
|
+
"items": {
|
|
44
|
+
"type": "string",
|
|
45
|
+
"examples": [
|
|
46
|
+
"badminton",
|
|
47
|
+
"dota",
|
|
48
|
+
"reading"
|
|
49
|
+
]
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"addresses": {
|
|
53
|
+
"type": "array",
|
|
54
|
+
"items": {
|
|
55
|
+
"type": "object",
|
|
56
|
+
"required": [
|
|
57
|
+
"street1",
|
|
58
|
+
"street2",
|
|
59
|
+
"postcode"
|
|
60
|
+
],
|
|
61
|
+
"properties": {
|
|
62
|
+
"street1": {
|
|
63
|
+
"type": "string",
|
|
64
|
+
"examples": [
|
|
65
|
+
"11, Fox Road"
|
|
66
|
+
]
|
|
67
|
+
},
|
|
68
|
+
"street2": {
|
|
69
|
+
"type": "string",
|
|
70
|
+
"examples": [
|
|
71
|
+
"My Home Town"
|
|
72
|
+
]
|
|
73
|
+
},
|
|
74
|
+
"postcode": {
|
|
75
|
+
"type": "integer",
|
|
76
|
+
"examples": [
|
|
77
|
+
12345
|
|
78
|
+
]
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "object",
|
|
3
|
+
"properties": {
|
|
4
|
+
"name": {
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"firstName": {
|
|
8
|
+
"type": "string",
|
|
9
|
+
"examples": [
|
|
10
|
+
"John"
|
|
11
|
+
]
|
|
12
|
+
},
|
|
13
|
+
"lastName": {
|
|
14
|
+
"type": "string",
|
|
15
|
+
"examples": [
|
|
16
|
+
"Fox"
|
|
17
|
+
]
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"age": {
|
|
22
|
+
"type": "integer",
|
|
23
|
+
"examples": [
|
|
24
|
+
20
|
|
25
|
+
]
|
|
26
|
+
},
|
|
27
|
+
"email": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"examples": [
|
|
30
|
+
"john@example.com"
|
|
31
|
+
],
|
|
32
|
+
"format": "email"
|
|
33
|
+
},
|
|
34
|
+
"dob": {
|
|
35
|
+
"type": "string",
|
|
36
|
+
"examples": [
|
|
37
|
+
"2000-01-01"
|
|
38
|
+
],
|
|
39
|
+
"format": "date"
|
|
40
|
+
},
|
|
41
|
+
"hobbies": {
|
|
42
|
+
"type": "array",
|
|
43
|
+
"items": {
|
|
44
|
+
"type": "string",
|
|
45
|
+
"examples": [
|
|
46
|
+
"badminton",
|
|
47
|
+
"dota",
|
|
48
|
+
"reading"
|
|
49
|
+
]
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"addresses": {
|
|
53
|
+
"type": "array",
|
|
54
|
+
"items": {
|
|
55
|
+
"type": "object",
|
|
56
|
+
"required": [
|
|
57
|
+
"street1",
|
|
58
|
+
"street2",
|
|
59
|
+
"postcode"
|
|
60
|
+
],
|
|
61
|
+
"properties": {
|
|
62
|
+
"street1": {
|
|
63
|
+
"type": "string",
|
|
64
|
+
"examples": [
|
|
65
|
+
"11, Fox Road"
|
|
66
|
+
]
|
|
67
|
+
},
|
|
68
|
+
"street2": {
|
|
69
|
+
"type": "string",
|
|
70
|
+
"examples": [
|
|
71
|
+
"My Home Town"
|
|
72
|
+
]
|
|
73
|
+
},
|
|
74
|
+
"postcode": {
|
|
75
|
+
"type": "integer",
|
|
76
|
+
"examples": [
|
|
77
|
+
12345
|
|
78
|
+
]
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Module } from '@nestjs/common';
|
|
2
|
+
import { MongooseModule } from '@nestjs/mongoose';
|
|
3
|
+
import { ConfigModule } from '@nestjs/config';
|
|
4
|
+
|
|
5
|
+
import {PersonModule} from './docs/pes/pes.module'
|
|
6
|
+
import {SalesinvoiceModule} from './docs/si/si.module'
|
|
7
|
+
|
|
8
|
+
@Module({
|
|
9
|
+
//define environment variables: MONGODB_URL='mongodb://<user>:<pass>@<host>:<port>/<db>?authMechanism=DEFAULT'
|
|
10
|
+
imports: [ConfigModule.forRoot(),MongooseModule.forRoot(process.env.MONGODB_URL),PersonModule,SalesinvoiceModule,],
|
|
11
|
+
controllers: [],
|
|
12
|
+
providers: [],
|
|
13
|
+
})
|
|
14
|
+
export class AppModule {}
|
package/dist/constant.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constant.js","sourceRoot":"","sources":["../src/constant.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAC,SAAS,GAAC,eAAe,CAAA;AACrC,QAAA,MAAM,GAAC,SAAS,CAAA"}
|
|
@@ -0,0 +1,123 @@
|
|
|
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 (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.createNest = exports.createNuxt = void 0;
|
|
27
|
+
const child_process_1 = require("child_process");
|
|
28
|
+
const fs_1 = require("fs");
|
|
29
|
+
const constants = __importStar(require("./constant"));
|
|
30
|
+
const tslog_1 = require("tslog");
|
|
31
|
+
const log = new tslog_1.Logger();
|
|
32
|
+
const { Eta } = require('eta');
|
|
33
|
+
const checkNodeJS = (callback) => {
|
|
34
|
+
return (0, child_process_1.exec)(`npx -v`, (error, stdout, stderr) => {
|
|
35
|
+
if (error) {
|
|
36
|
+
throw ("Nodejs not exists");
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
callback();
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
const checkNestCli = (callback) => {
|
|
44
|
+
log.info("setting up nest backend");
|
|
45
|
+
return (0, child_process_1.exec)(`npx -v`, (error, stdout, stderr) => {
|
|
46
|
+
if (error) {
|
|
47
|
+
return (0, child_process_1.exec)(`npm i -g @nestjs/cli`, (error, stdout, stderr) => {
|
|
48
|
+
callback();
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
callback();
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
const createNuxt = (targetfolder, callback) => {
|
|
57
|
+
log.info("setting up nuxt frontend");
|
|
58
|
+
checkNodeJS(() => {
|
|
59
|
+
log.info("Nodejs ok");
|
|
60
|
+
(0, child_process_1.exec)(`npx nuxi@latest init ${targetfolder}`, (error, stdout, stderr) => {
|
|
61
|
+
log.info(`frontend nuxt project "${targetfolder}" created, installing module`);
|
|
62
|
+
(0, child_process_1.exec)(`cd ${targetfolder};pnpm install`, (error, stdout, stderr) => {
|
|
63
|
+
//;pnpm install
|
|
64
|
+
if (!error) {
|
|
65
|
+
(0, child_process_1.exec)(`pnpm install ajv ajv-formats axios json-schema`, (error, stdout, stderr) => {
|
|
66
|
+
const eta = new Eta({ views: constants.templatedir });
|
|
67
|
+
const variables = [];
|
|
68
|
+
const txtEnv = eta.render('./nuxt.env.eta', variables);
|
|
69
|
+
(0, fs_1.writeFileSync)(`${targetfolder}/.env`, txtEnv);
|
|
70
|
+
log.info("nuxt project completed");
|
|
71
|
+
callback();
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
throw error;
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
if (error) {
|
|
79
|
+
log.error(stderr);
|
|
80
|
+
throw error;
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
};
|
|
85
|
+
exports.createNuxt = createNuxt;
|
|
86
|
+
const createNest = (targetfolder, callback) => {
|
|
87
|
+
checkNestCli(() => {
|
|
88
|
+
(0, child_process_1.exec)(`nest new -p pnpm ${targetfolder}`, (error, stdout, stderr) => {
|
|
89
|
+
if (error)
|
|
90
|
+
throw stderr;
|
|
91
|
+
log.info(`creating backend project ${targetfolder}`);
|
|
92
|
+
(0, child_process_1.exec)(`cd ${targetfolder};pnpm install --save @nestjs/swagger @nestjs/mongoose mongoose ajv ajv-formats @nestjs/config`, async (error, stdout, stderr) => {
|
|
93
|
+
// log.info(`dependency installed`)
|
|
94
|
+
if (!error) {
|
|
95
|
+
(0, child_process_1.exec)(`pnpm install ajv ajv-formats axios json-schema`, (error, stdout, stderr) => {
|
|
96
|
+
const eta = new Eta({ views: constants.templatedir });
|
|
97
|
+
const variables = [];
|
|
98
|
+
const txtEnv = eta.render('./nest.env.eta', variables);
|
|
99
|
+
const txtMain = eta.render('./nest.main.eta', variables);
|
|
100
|
+
(0, fs_1.writeFileSync)(`${targetfolder}/.env`, txtEnv);
|
|
101
|
+
(0, fs_1.writeFileSync)(`${targetfolder}/src/main.ts`, txtMain);
|
|
102
|
+
log.info("nest project completed");
|
|
103
|
+
callback();
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
log.error(stderr);
|
|
108
|
+
throw error;
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
//
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
//install nestjs cli
|
|
115
|
+
//create nest project
|
|
116
|
+
//install dependency
|
|
117
|
+
//create empty .env
|
|
118
|
+
//swap nestjs src/main.ts file
|
|
119
|
+
//try edit the configuration files
|
|
120
|
+
//console log http server how to start
|
|
121
|
+
};
|
|
122
|
+
exports.createNest = createNest;
|
|
123
|
+
//# sourceMappingURL=createproject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createproject.js","sourceRoot":"","sources":["../src/createproject.ts"],"names":[],"mappings":"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"}
|
package/dist/generate.js
ADDED
|
@@ -0,0 +1,225 @@
|
|
|
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 (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.initialize = void 0;
|
|
27
|
+
// import { readFormBuilder } from './processors/formbuilder.tsa';
|
|
28
|
+
// import { readJsonSchemaBuilder } from './processors/jsonschemabuilder';
|
|
29
|
+
const constants = __importStar(require("./constant"));
|
|
30
|
+
const jsonschemabuilder_1 = require("./processors/jsonschemabuilder");
|
|
31
|
+
const tslog_1 = require("tslog");
|
|
32
|
+
const log = new tslog_1.Logger();
|
|
33
|
+
const clc = require("cli-color");
|
|
34
|
+
const path = require('path');
|
|
35
|
+
const fs_1 = require("fs");
|
|
36
|
+
const { Eta } = require('eta');
|
|
37
|
+
const { capitalizeFirstLetter } = require('./libs');
|
|
38
|
+
const extFb = '.xfb.json';
|
|
39
|
+
const extHfb = '.xhfb.json';
|
|
40
|
+
const extjsonschema = '.jsonschema.json';
|
|
41
|
+
let jsonschemas = {};
|
|
42
|
+
const docs = [];
|
|
43
|
+
const initialize = (defFolder, backendfolder, frontendfolder) => {
|
|
44
|
+
prepareEnvironments(backendfolder, frontendfolder);
|
|
45
|
+
let activatemodules = [];
|
|
46
|
+
const files = (0, fs_1.readdirSync)(defFolder);
|
|
47
|
+
// readdir(defFolder, (err, files) => {
|
|
48
|
+
// files.forEach((file) => {
|
|
49
|
+
for (let j = 0; j < files.length; j++) {
|
|
50
|
+
const file = files[j];
|
|
51
|
+
const filearr = file.split('.');
|
|
52
|
+
let rendertype = 'basic';
|
|
53
|
+
const docname = filearr[0].toLowerCase();
|
|
54
|
+
const doctype = filearr[1].toLowerCase();
|
|
55
|
+
const jsonstring = (0, fs_1.readFileSync)(defFolder + path.sep + file, 'utf-8');
|
|
56
|
+
const jsondata = JSON.parse(jsonstring);
|
|
57
|
+
let allmodels = {};
|
|
58
|
+
if (file.endsWith(extjsonschema)) {
|
|
59
|
+
log.info(`Load ` + clc.green(file));
|
|
60
|
+
rendertype = 'basic';
|
|
61
|
+
jsonschemas[docname] = jsondata;
|
|
62
|
+
allmodels = (0, jsonschemabuilder_1.readJsonSchemaBuilder)(doctype, docname, jsondata);
|
|
63
|
+
generate(docname, doctype, rendertype, allmodels, backendfolder, frontendfolder);
|
|
64
|
+
activatemodules.push({ doctype: doctype, docname: capitalizeFirstLetter(docname) });
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
log.warn(`Load ` + clc.yellow(file) + ` but it is not supported`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
log.info("Activated backend modules: ");
|
|
71
|
+
log.info(activatemodules);
|
|
72
|
+
loadSimpleAppModules(activatemodules, backendfolder);
|
|
73
|
+
return Promise.resolve(true);
|
|
74
|
+
};
|
|
75
|
+
exports.initialize = initialize;
|
|
76
|
+
const generate = (docname, doctype, rendertype, allmodels, backendfolder, frontendfolder) => {
|
|
77
|
+
const targetfolder = `${backendfolder}/src/docs/${doctype}`;
|
|
78
|
+
try {
|
|
79
|
+
(0, fs_1.mkdirSync)(targetfolder, { recursive: true });
|
|
80
|
+
(0, fs_1.mkdirSync)(`${frontendfolder}/server/docs/`, { recursive: true });
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
//do nothing if folder exists
|
|
84
|
+
}
|
|
85
|
+
finally {
|
|
86
|
+
const templatefolder = `${constants.templatedir}/${rendertype}`;
|
|
87
|
+
log.info(`- Generate ${docname}, ${doctype}, ${templatefolder}`);
|
|
88
|
+
const eta = new Eta({
|
|
89
|
+
views: templatefolder,
|
|
90
|
+
functionHeader: 'const capitalizeFirstLetter = (str) => str.slice(0, 1).toUpperCase() + str.slice(1);' +
|
|
91
|
+
'const initType=(str)=>{return ["string","number","boolean","array","object"].includes(str) ? capitalizeFirstLetter(str) : str;}',
|
|
92
|
+
});
|
|
93
|
+
const variables = {
|
|
94
|
+
name: docname,
|
|
95
|
+
doctype: doctype,
|
|
96
|
+
models: allmodels,
|
|
97
|
+
schema: allmodels[capitalizeFirstLetter(docname)].model,
|
|
98
|
+
apiSchemaName: capitalizeFirstLetter(docname),
|
|
99
|
+
typename: capitalizeFirstLetter(docname),
|
|
100
|
+
fullApiSchemaName: doctype + 'apischema.' + capitalizeFirstLetter(docname),
|
|
101
|
+
fullTypeName: doctype + 'type.' + capitalizeFirstLetter(docname),
|
|
102
|
+
jsonschema: jsonschemas[docname],
|
|
103
|
+
bothEndCode: '',
|
|
104
|
+
frontEndCode: '',
|
|
105
|
+
backEndCode: '',
|
|
106
|
+
controllerCode: ''
|
|
107
|
+
};
|
|
108
|
+
// console.log('generate 2', JSON.stringify(variables));
|
|
109
|
+
// // const txtUISchema = eta.render('./uischema', variables);
|
|
110
|
+
// console.log('generate 4');
|
|
111
|
+
// console.log('generate 2', variables);
|
|
112
|
+
const txtType = eta.render('./type', variables);
|
|
113
|
+
(0, fs_1.writeFileSync)(`${targetfolder}/${doctype}.type.ts`, txtType);
|
|
114
|
+
// compile(jsonschemas[docname], docname).then((txtType: string) => {
|
|
115
|
+
// writeFileSync(`${targetfolder}/${doctype}.type.ts`, txtType);
|
|
116
|
+
// });
|
|
117
|
+
// generate jsonschema object, use for data validation
|
|
118
|
+
const txtJsonSchema = eta.render('./jsonschema', variables);
|
|
119
|
+
(0, fs_1.writeFileSync)(`${targetfolder}/${doctype}.jsonschema.ts`, txtJsonSchema);
|
|
120
|
+
// generate before save source code, wont override after regenerate
|
|
121
|
+
const customizefilename = `${targetfolder}/${doctype}.beforesave.ts`;
|
|
122
|
+
if (!(0, fs_1.existsSync)(customizefilename)) {
|
|
123
|
+
const txtBeforeSave = eta.render('./beforesave', variables);
|
|
124
|
+
(0, fs_1.writeFileSync)(`${targetfolder}/${doctype}.beforesave.ts`, txtBeforeSave);
|
|
125
|
+
}
|
|
126
|
+
// write mongoose model file
|
|
127
|
+
const txtModel = eta.render('./model', variables);
|
|
128
|
+
(0, fs_1.writeFileSync)(`${targetfolder}/${doctype}.model.ts`, txtModel);
|
|
129
|
+
// prepare openapi schema
|
|
130
|
+
const txtApiSchema = eta.render('./apischema', variables);
|
|
131
|
+
(0, fs_1.writeFileSync)(`${targetfolder}/${doctype}.apischema.ts`, txtApiSchema);
|
|
132
|
+
// prepare backend classes
|
|
133
|
+
// prepare frontend api client
|
|
134
|
+
const servicefile = `${targetfolder}/${doctype}.service.ts`;
|
|
135
|
+
let bothEndCode = '';
|
|
136
|
+
let backEndCode = '';
|
|
137
|
+
if ((0, fs_1.existsSync)(servicefile)) {
|
|
138
|
+
const servicecodes = (0, fs_1.readFileSync)(servicefile).toString();
|
|
139
|
+
/* extract string bothend and backend, put in back */
|
|
140
|
+
const regex1 = /\/\/<begin-bothend-code>([\s\S]*?)\/\/<end-bothend-code>/g;
|
|
141
|
+
const regex2 = /\/\/<begin-backend-code>([\s\S]*?)\/\/<end-backend-code>/g;
|
|
142
|
+
const bothendresult = servicecodes.match(regex1);
|
|
143
|
+
const backendresult = servicecodes.match(regex2);
|
|
144
|
+
if (bothendresult) {
|
|
145
|
+
bothEndCode = bothendresult[0];
|
|
146
|
+
}
|
|
147
|
+
if (backendresult) {
|
|
148
|
+
backEndCode = backendresult[0];
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
variables.bothEndCode = bothEndCode !== null && bothEndCode !== void 0 ? bothEndCode : "//<begin-bothend-code>\n//<end-bothend-code>";
|
|
152
|
+
variables.backEndCode = backEndCode !== null && backEndCode !== void 0 ? backEndCode : "//<begin-backend-code>\n//<end-backend-code>";
|
|
153
|
+
const txtService = eta.render('./service', variables);
|
|
154
|
+
(0, fs_1.writeFileSync)(`${targetfolder}/${doctype}.service.ts`, txtService);
|
|
155
|
+
// prepare api router, allow add more api and wont override after regenerate
|
|
156
|
+
const controllerfile = `${targetfolder}/${doctype}.controller.ts`;
|
|
157
|
+
let controllerCode = '';
|
|
158
|
+
if ((0, fs_1.existsSync)(controllerfile)) {
|
|
159
|
+
/* extract customized controller, put in back */
|
|
160
|
+
const controllersourcecodes = (0, fs_1.readFileSync)(controllerfile).toString();
|
|
161
|
+
const controllerregex = /\/\/<begin-controller-code>([\s\S]*?)\/\/<end-controller-code>/g;
|
|
162
|
+
const controllerresult = controllersourcecodes.match(controllerregex);
|
|
163
|
+
if (controllerresult) {
|
|
164
|
+
controllerCode = controllerresult[0];
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
variables.controllerCode = controllerCode != '' ? controllerCode : "\n//<begin-controller-code>\n//<end-controller-code>";
|
|
168
|
+
const txtController = eta.render('./controller', variables);
|
|
169
|
+
(0, fs_1.writeFileSync)(controllerfile, txtController);
|
|
170
|
+
// prepare module
|
|
171
|
+
const txtModule = eta.render('./module', variables);
|
|
172
|
+
(0, fs_1.writeFileSync)(`${targetfolder}/${doctype}.module.ts`, txtModule);
|
|
173
|
+
// prepare readme
|
|
174
|
+
const txtReadme = eta.render('./readme', variables);
|
|
175
|
+
(0, fs_1.writeFileSync)(`${targetfolder}/README.md`, txtReadme);
|
|
176
|
+
const frontendfile = `${frontendfolder}/server/docs/${variables.typename}Doc.ts`;
|
|
177
|
+
let frontEndCode = '';
|
|
178
|
+
if ((0, fs_1.existsSync)(frontendfile)) {
|
|
179
|
+
const clientcodes = (0, fs_1.readFileSync)(frontendfile).toString();
|
|
180
|
+
/* extract string frontend code, put in back */
|
|
181
|
+
const regex3 = /\/\/<begin-frontend-code>([\s\S]*?)\/\/<end-frontend-code>/g;
|
|
182
|
+
const frontendresult = clientcodes.match(regex3);
|
|
183
|
+
if (frontendresult) {
|
|
184
|
+
frontEndCode = frontendresult[0];
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
variables.frontEndCode = frontEndCode !== null && frontEndCode !== void 0 ? frontEndCode : '';
|
|
188
|
+
const txtDocClient = eta.render('./apiclient', variables);
|
|
189
|
+
(0, fs_1.writeFileSync)(frontendfile, txtDocClient);
|
|
190
|
+
// // fs.writeFileSync(`${targetfolder}/${doctype}.uischema.ts`, txtUISchema);
|
|
191
|
+
log.info(`- write completed: ` + clc.green(doctype));
|
|
192
|
+
//create type
|
|
193
|
+
//create service
|
|
194
|
+
//create controller
|
|
195
|
+
//create module
|
|
196
|
+
//create apischema
|
|
197
|
+
//create beforesave if not exists
|
|
198
|
+
// console.log(schema, res);
|
|
199
|
+
}
|
|
200
|
+
};
|
|
201
|
+
const prepareEnvironments = (backendfolder, frontendfolder) => {
|
|
202
|
+
const targetfolder = `${backendfolder}/src/class`;
|
|
203
|
+
const targetfrontendfolder = `${frontendfolder}/server/class`;
|
|
204
|
+
try {
|
|
205
|
+
(0, fs_1.mkdirSync)(targetfolder, { recursive: true });
|
|
206
|
+
(0, fs_1.mkdirSync)(targetfrontendfolder);
|
|
207
|
+
}
|
|
208
|
+
catch (error) {
|
|
209
|
+
//do nothing
|
|
210
|
+
}
|
|
211
|
+
//copy over backend service class
|
|
212
|
+
(0, fs_1.copyFileSync)(`${constants.templatedir}/SimpleAppService.eta`, `${targetfolder}/SimpleAppService.ts`);
|
|
213
|
+
//copy over backend controller
|
|
214
|
+
(0, fs_1.copyFileSync)(`${constants.templatedir}/SimpleAppController.eta`, `${targetfolder}/SimpleAppController.ts`);
|
|
215
|
+
//copy over frontend apiabstract class
|
|
216
|
+
(0, fs_1.copyFileSync)(`${constants.templatedir}/SimpleAppClient.eta`, `${targetfrontendfolder}/SimpleAppClient.ts`);
|
|
217
|
+
//prepare backend config.ts
|
|
218
|
+
//copy over frontend config.ts
|
|
219
|
+
};
|
|
220
|
+
const loadSimpleAppModules = (modules, targetfolder) => {
|
|
221
|
+
const eta = new Eta({ views: constants.templatedir });
|
|
222
|
+
const txtMainModule = eta.render('app.module.eta', modules);
|
|
223
|
+
(0, fs_1.writeFileSync)(`${targetfolder}/src/app.module.ts`, txtMainModule);
|
|
224
|
+
};
|
|
225
|
+
//# sourceMappingURL=generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
#! /usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var _a, _b, _c, _d;
|
|
4
|
+
const program = require("commander"); // add this line
|
|
5
|
+
const Fieldtypes = require('./type');
|
|
6
|
+
const generator = require('./generate');
|
|
7
|
+
const fs = require('fs');
|
|
8
|
+
const { createNuxt, createNest } = require('./createproject');
|
|
9
|
+
const { exec } = require("child_process");
|
|
10
|
+
const capitalizeFirstLetter = require('./libs');
|
|
11
|
+
// const {Logger, ILogObj} = require( "tslog");
|
|
12
|
+
// const log: Logger = new Logger();
|
|
13
|
+
const figlet = require("figlet");
|
|
14
|
+
// const program = new Command();
|
|
15
|
+
program
|
|
16
|
+
.version("1.0.0")
|
|
17
|
+
.description("An simpleapp CLI tool for generate frontend (vuejs) and backend(nestjs) codes")
|
|
18
|
+
.option("-c, --config-file <value>", 'configuration file content such as:{"definationsFolder":"./definations", "backendFolder":"./nestproject/src/docs", "frontendFolder":"./nuxt/server"}')
|
|
19
|
+
.option("-s, --definations-folder <value>", "load defination files from which folder")
|
|
20
|
+
.option("-b, --backend-folder <value>", "Create backend code at which folder")
|
|
21
|
+
.option("-f, --frontend-folder <value>", "Create frontend code at which folder")
|
|
22
|
+
.option("-i, --openapi3-yaml <value>", 'openapi3.yaml generated by backend server')
|
|
23
|
+
.parse(process.argv);
|
|
24
|
+
const options = program.opts();
|
|
25
|
+
console.log(figlet.textSync("SimpleApp Generator 1"));
|
|
26
|
+
// console.log(options)
|
|
27
|
+
const configs = require(options.configFile);
|
|
28
|
+
console.log("configurations: ", configs);
|
|
29
|
+
const definationsFolder = (_a = configs.definationsFolder) !== null && _a !== void 0 ? _a : options.definationsFolder;
|
|
30
|
+
const backendFolder = (_b = configs.backendFolder) !== null && _b !== void 0 ? _b : options.backendFolder;
|
|
31
|
+
const frontendFolder = (_c = configs.frontendFolder) !== null && _c !== void 0 ? _c : options.frontendFolder;
|
|
32
|
+
const openapi3Yaml = (_d = configs.openapi3Yaml) !== null && _d !== void 0 ? _d : options.openapi3Yaml;
|
|
33
|
+
const runGenNext = (callback) => {
|
|
34
|
+
if (!fs.existsSync(backendFolder)) {
|
|
35
|
+
createNest(backendFolder, callback);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
callback();
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
const runGenNuxt = (callback) => {
|
|
42
|
+
if (!fs.existsSync(frontendFolder)) {
|
|
43
|
+
createNuxt(frontendFolder, callback);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
callback();
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
runGenNuxt(() => {
|
|
50
|
+
console.log("runGenNuxt done");
|
|
51
|
+
runGenNext(() => {
|
|
52
|
+
console.log("runGenNext done");
|
|
53
|
+
generator.initialize(definationsFolder, backendFolder, frontendFolder);
|
|
54
|
+
if (openapi3Yaml != '') {
|
|
55
|
+
exec(`openapi-generator generate -i ${openapi3Yaml} -o ${frontendFolder}/server/openapi -g typescript-axios --skip-validate-spec`, (error, stdout, stderr) => {
|
|
56
|
+
if (error) {
|
|
57
|
+
console.error(stderr);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
// pnpm exec prettier ./src/docs --write
|
|
64
|
+
// pnpm exec prettier ./apiclients --write
|
|
65
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/libs.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// const clc = require("cli-color");
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.capitalizeFirstLetter = void 0;
|
|
5
|
+
const capitalizeFirstLetter = (str) => {
|
|
6
|
+
const res = str == '' ? '' : str.slice(0, 1).toUpperCase() + str.slice(1);
|
|
7
|
+
// const res = str;
|
|
8
|
+
return res;
|
|
9
|
+
};
|
|
10
|
+
exports.capitalizeFirstLetter = capitalizeFirstLetter;
|
|
11
|
+
// export const logsuccess = (data:any)=>console.log(clc.green(data))
|
|
12
|
+
// export const logerror = (data:any)=>console.log(clc.error(data))
|
|
13
|
+
// export const logwarn = (data:any)=>console.log(clc.yellow(data))
|
|
14
|
+
// export const logdefault = (data:any)=>console.log(data)
|
|
15
|
+
//# sourceMappingURL=libs.js.map
|
package/dist/libs.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"libs.js","sourceRoot":"","sources":["../src/libs.ts"],"names":[],"mappings":";AAAA,oCAAoC;;;AAE7B,MAAM,qBAAqB,GAAG,CAAC,GAAW,EAAE,EAAE;IACjD,MAAM,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1E,mBAAmB;IACnB,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAJS,QAAA,qBAAqB,yBAI9B;AAEJ,qEAAqE;AACrE,mEAAmE;AACnE,mEAAmE;AACnE,0DAA0D"}
|