@simitgroup/simpleapp-generator 1.0.19 → 1.0.21
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/README.md +13 -10
- package/backend1/.env +5 -0
- package/backend1/.eslintrc.js +25 -0
- package/backend1/.prettierrc +4 -0
- package/backend1/README.md +73 -0
- package/backend1/nest-cli.json +8 -0
- package/backend1/package.json +75 -0
- package/backend1/pnpm-lock.yaml +5459 -0
- package/backend1/src/app.controller.js +71 -0
- package/backend1/src/app.controller.js.map +1 -0
- package/backend1/src/app.controller.spec.js +21 -0
- package/backend1/src/app.controller.spec.js.map +1 -0
- package/backend1/src/app.controller.spec.ts +22 -0
- package/backend1/src/app.controller.ts +12 -0
- package/backend1/src/app.module.js +67 -0
- package/backend1/src/app.module.js.map +1 -0
- package/backend1/src/app.module.ts +10 -0
- package/backend1/src/app.service.js +64 -0
- package/backend1/src/app.service.js.map +1 -0
- package/backend1/src/app.service.ts +8 -0
- package/backend1/src/class/SimpleAppController.js +38 -0
- package/backend1/src/class/SimpleAppController.js.map +1 -0
- package/backend1/src/class/SimpleAppController.ts +69 -0
- package/backend1/src/class/SimpleAppService.js +264 -0
- package/backend1/src/class/SimpleAppService.js.map +1 -0
- package/backend1/src/class/SimpleAppService.ts +213 -0
- package/backend1/src/main.js +22 -0
- package/backend1/src/main.js.map +1 -0
- package/backend1/src/main.ts +20 -0
- package/backend1/test/app.e2e-spec.js +45 -0
- package/backend1/test/app.e2e-spec.js.map +1 -0
- package/backend1/test/app.e2e-spec.ts +24 -0
- package/backend1/test/jest-e2e.json +9 -0
- package/backend1/tsconfig.build.json +4 -0
- package/backend1/tsconfig.json +1 -0
- package/dist/createproject.js +6 -1
- package/dist/createproject.js.map +1 -1
- package/dist/framework.js +161 -0
- package/dist/framework.js.map +1 -0
- package/dist/generate.js +2 -2
- package/dist/generate.js.map +1 -1
- package/dist/index.js +54 -58
- package/dist/index.js.map +1 -1
- package/dist/index2.js +118 -0
- package/dist/index2.js.map +1 -0
- package/dist/installdependency.js +20 -0
- package/dist/installdependency.js.map +1 -0
- package/dist/installnest.js +2 -0
- package/dist/installnest.js.map +1 -0
- package/dist/installnuxt.js +2 -0
- package/dist/installnuxt.js.map +1 -0
- package/dist/validation.js +2 -0
- package/dist/validation.js.map +1 -0
- package/frontend1/README.md +63 -0
- package/frontend1/app.vue +8 -0
- package/frontend1/assets/css/tailwind.css +28 -0
- package/frontend1/components/CrudSimple.vue +112 -0
- package/frontend1/components/DebugDocumentData.vue +20 -0
- package/frontend1/components/EventMonitor.vue +79 -0
- package/frontend1/components/Menus.vue +18 -0
- package/frontend1/layouts/default.vue +10 -0
- package/frontend1/nuxt.config.js +42 -0
- package/frontend1/nuxt.config.js.map +1 -0
- package/frontend1/nuxt.config.ts +42 -0
- package/frontend1/package-lock.json +11877 -0
- package/frontend1/package.json +38 -0
- package/frontend1/pages/index.vue +3 -0
- package/frontend1/plugins/simpleapp.js +73 -0
- package/frontend1/plugins/simpleapp.js.map +1 -0
- package/frontend1/plugins/simpleapp.ts +73 -0
- package/frontend1/pnpm-lock.yaml +8339 -0
- package/frontend1/public/favicon.ico +0 -0
- package/frontend1/server/api/[...].js +117 -0
- package/frontend1/server/api/[...].js.map +1 -0
- package/frontend1/server/api/[...].ts +131 -0
- package/frontend1/server/tsconfig.json +3 -0
- package/frontend1/tailwind.config.js +10 -0
- package/frontend1/tailwind.config.js.map +1 -0
- package/frontend1/tailwind.config.ts +9 -0
- package/frontend1/tsconfig.json +4 -0
- package/openapitools.json +0 -0
- package/package.json +2 -6
- package/sampleconfig.json +2 -2
- package/src/createproject.ts +5 -0
- package/src/framework.ts +133 -0
- package/src/generate.ts +2 -2
- package/src/index.ts +38 -69
- package/src/index2.ts +132 -0
- package/src/installdependency.sh +5 -0
- package/src/installdependency.ts +4 -0
- package/src/installnest.ts +0 -0
- package/src/installnuxt.ts +0 -0
- package/src/validation.ts +0 -0
- package/templates/basic/pageindex.vue.eta +9 -9
- package/templates/nuxt/plugins.simpleapp.ts.eta +3 -3
package/src/index2.ts
ADDED
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
#! /usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { error } from "console"
|
|
4
|
+
|
|
5
|
+
const program = require("commander") // add this line
|
|
6
|
+
const Fieldtypes= require( './type')
|
|
7
|
+
const generator= require( './generate')
|
|
8
|
+
const fs = require( 'fs')
|
|
9
|
+
const createproject =require( './createproject')
|
|
10
|
+
const {exec} = require( "child_process")
|
|
11
|
+
|
|
12
|
+
const capitalizeFirstLetter= require( './libs')
|
|
13
|
+
const {Logger, ILogObj} = require( "tslog");
|
|
14
|
+
|
|
15
|
+
const log :typeof Logger= new Logger();
|
|
16
|
+
|
|
17
|
+
const figlet = require("figlet");
|
|
18
|
+
// const program = new Command();
|
|
19
|
+
const pj = require('../package.json')
|
|
20
|
+
|
|
21
|
+
let version=pj.version
|
|
22
|
+
program
|
|
23
|
+
.version(version)
|
|
24
|
+
.description("An simpleapp CLI tool for generate frontend (vuejs) and backend(nestjs) codes")
|
|
25
|
+
.option("-c, --config-file <value>", 'configuration file content such as:{"definationsFolder":"./definations", "backendFolder":"./nestproject/src/docs", "frontendFolder":"./nuxt/server"}')
|
|
26
|
+
// .option("-s, --definations-folder <value>", "load defination files from which folder")
|
|
27
|
+
// .option("-b, --backend-folder <value>", "Create backend code at which folder")
|
|
28
|
+
// .option("-f, --frontend-folder <value>", "Create frontend code at which folder")
|
|
29
|
+
// .option("-i, --openapi3-yaml <value>", 'openapi3.yaml generated by backend server')
|
|
30
|
+
.parse(process.argv);
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
const options = program.opts();
|
|
34
|
+
console.log(figlet.textSync(`SimpleApp Generator ${version}`));
|
|
35
|
+
// console.log(options)
|
|
36
|
+
let path=''
|
|
37
|
+
if(!options.configFile){
|
|
38
|
+
log.error("Config file parameter is required. Example: simpleapp-generator -c ./config.json")
|
|
39
|
+
throw "Undefine configuration file"
|
|
40
|
+
}
|
|
41
|
+
else if(options.configFile && options.configFile[0]=='/'){
|
|
42
|
+
path=options.configFile
|
|
43
|
+
}
|
|
44
|
+
else if(options.configFile){
|
|
45
|
+
path=process.cwd()+'/'+options.configFile
|
|
46
|
+
}else{
|
|
47
|
+
log.error("undefine configuration file, use command simpleapp-generator -c <configfilename.json>")
|
|
48
|
+
throw error
|
|
49
|
+
}
|
|
50
|
+
const configs = require(path)
|
|
51
|
+
console.log("configurations: ",configs)
|
|
52
|
+
const definationsFolder = configs.definationsFolder ?? options.definationsFolder
|
|
53
|
+
const backendFolder = configs.backendFolder ?? options.backendFolder
|
|
54
|
+
const frontendFolder = configs.frontendFolder ?? options.frontendFolder
|
|
55
|
+
const openapi3Yaml:string = configs.openapi3Yaml ?? options.openapi3Yaml
|
|
56
|
+
|
|
57
|
+
const runGenNext = async (callback)=>{
|
|
58
|
+
let isnestready=false
|
|
59
|
+
if(!fs.existsSync(backendFolder)){
|
|
60
|
+
console.log("Nest does not exists, begin install nodejs environment tools: [pnpm, @nestjs/cli, @openapitools/openapi-generator-cli, nuxi]")
|
|
61
|
+
isnestready = await exec("npm install -g pnpm @nestjs/cli @openapitools/openapi-generator-cli nuxi",async (a,b,c)=>{
|
|
62
|
+
console.log("result of environment tools:",a,b,c)
|
|
63
|
+
console.log(`Install new nest backend: 'nest new -p pnpm ${backendFolder}'`)
|
|
64
|
+
return await exec(`nest new -p pnpm ${backendFolder}`,(a,b,c)=>{
|
|
65
|
+
console.log("new nest result",a,b,c)
|
|
66
|
+
return true
|
|
67
|
+
})
|
|
68
|
+
})
|
|
69
|
+
}else{
|
|
70
|
+
isnestready=true
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
if(isnestready){
|
|
76
|
+
if(!fs.existsSync(`${backendFolder}/.env`)){
|
|
77
|
+
log.info(`initial nest configuratoin for simpleapp generator`)
|
|
78
|
+
await createNest(backendFolder,callback)
|
|
79
|
+
}else{
|
|
80
|
+
log.warn(`.env file exists, skip nest initialization`)
|
|
81
|
+
callback()
|
|
82
|
+
}
|
|
83
|
+
}else{
|
|
84
|
+
log.error('nest not ready, which shouldnot continue')
|
|
85
|
+
throw error
|
|
86
|
+
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
}
|
|
90
|
+
const runGenNuxt = async (callback)=>{
|
|
91
|
+
|
|
92
|
+
if(!fs.existsSync(frontendFolder)){
|
|
93
|
+
log.error(`${frontendFolder} does not exists, please run "npx nuxi@latest init ${frontendFolder}"`)
|
|
94
|
+
}else if(!fs.existsSync(`${frontendFolder}/.env`)){
|
|
95
|
+
log.info(`initial nuxt configuratoin for simpleapp generator`)
|
|
96
|
+
createNuxt(frontendFolder,callback)
|
|
97
|
+
}else{
|
|
98
|
+
log.warn(`.env file exists, skip nuxt initialization`)
|
|
99
|
+
callback()
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
const generateCode = async () =>{
|
|
105
|
+
|
|
106
|
+
await runGenNext(async ()=>{
|
|
107
|
+
log.info("runGenNext (backen) done")
|
|
108
|
+
await runGenNuxt( async ()=>{
|
|
109
|
+
log.info("runGenNuxt (frontend) done")
|
|
110
|
+
generator.initialize(definationsFolder,backendFolder,frontendFolder)
|
|
111
|
+
exec(`cd ${frontendFolder};npx prettier --write "./pages/**/*.vue" "./simpleapp/**/*" `)
|
|
112
|
+
exec(`cd ${backendFolder};npx run format `)
|
|
113
|
+
if(openapi3Yaml !=''){
|
|
114
|
+
|
|
115
|
+
exec(`openapi-generator-cli generate -i ${openapi3Yaml} -o ${frontendFolder}/simpleapp/openapi -g typescript-axios --skip-validate-spec`,(error, stdout, stderr)=>{
|
|
116
|
+
if(error){
|
|
117
|
+
log.error(stderr);
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
})
|
|
122
|
+
})
|
|
123
|
+
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
log.info("generate code: ")
|
|
127
|
+
generateCode()
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
// pnpm exec prettier ./src/docs --write
|
|
132
|
+
// pnpm exec prettier ./apiclients --write
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -8,30 +8,30 @@
|
|
|
8
8
|
<% let obj=it.jsonschema.properties[key] %>
|
|
9
9
|
<% if(skipcolumns.indexOf(key)>=0){ %>
|
|
10
10
|
<% } else if(obj.type=='boolean'){ %>
|
|
11
|
-
<SimpleAppCheckbox :setting="o.getField('#/properties/<%= key %>')" v-model="data.<%= key %>"/>
|
|
11
|
+
<SimpleAppCheckbox autofocus :setting="o.getField('#/properties/<%= key %>')" v-model="data.<%= key %>"/>
|
|
12
12
|
<% } else if(obj.type=='number' || obj.type=='integer'){ %>
|
|
13
|
-
<SimpleAppNumber :setting="o.getField('#/properties/<%= key %>')" v-model="data.<%= key %>"/>
|
|
13
|
+
<SimpleAppNumber autofocus :setting="o.getField('#/properties/<%= key %>')" v-model="data.<%= key %>"/>
|
|
14
14
|
<% } else if(obj.type=='array' && obj.items && obj.items.type =='string' ){ %>
|
|
15
|
-
<SimpleAppChip :setting="o.getField('#/properties/<%= key %>')" v-model="data.<%= key %>"/>
|
|
15
|
+
<SimpleAppChip autofocus :setting="o.getField('#/properties/<%= key %>')" v-model="data.<%= key %>"/>
|
|
16
16
|
<% } else if(obj.type=='object' && typeof obj['x-foreignkey']!='undefined'){ %>
|
|
17
|
-
<SimpleAppAutocomplete :setting="o.getField('#/properties/<%= key %>')"
|
|
17
|
+
<SimpleAppAutocomplete autofocus :setting="o.getField('#/properties/<%= key %>')"
|
|
18
18
|
v-model="data.<%= key %>" optionLabel="label" :remote-src="getAutocomplete('<%=obj['x-foreignkey']%>')"/>
|
|
19
19
|
<% } else if(obj.type=='string'){ %>
|
|
20
20
|
<% if(obj.format=='date'){ %>
|
|
21
|
-
<SimpleAppText type="<%=obj.format%>" :setting="o.getField('#/properties/<%= key %>')" v-model="data.<%= key %>"/>
|
|
21
|
+
<SimpleAppText type="<%=obj.format%>" autofocus :setting="o.getField('#/properties/<%= key %>')" v-model="data.<%= key %>"/>
|
|
22
22
|
<% } else if(obj.format=='x-text'){ %>
|
|
23
23
|
<SimpleAppTextarea :setting="o.getField('#/properties/<%= key %>')" v-model="data.<%= key %>"/>
|
|
24
24
|
<% } else if(obj.format=='x-html'){ %>
|
|
25
25
|
<SimpleAppEditor editorStyle="height: 320px" :setting="o.getField('#/properties/<%= key %>')" v-model="data.<%= key %>"/>
|
|
26
26
|
<% } else if(obj.format=='email'){ %>
|
|
27
|
-
<SimpleAppText type="<%=obj.type%>" :setting="o.getField('#/properties/<%= key %>')" v-model="data.<%= key %>"/>
|
|
27
|
+
<SimpleAppText autofocus type="<%=obj.type%>" :setting="o.getField('#/properties/<%= key %>')" v-model="data.<%= key %>"/>
|
|
28
28
|
<% } else if(obj.enum){ %>
|
|
29
|
-
<SimpleAppRadio :setting="o.getField('#/properties/<%= key %>')" v-model="data.<%= key %>"/>
|
|
29
|
+
<SimpleAppRadio autofocus :setting="o.getField('#/properties/<%= key %>')" v-model="data.<%= key %>"/>
|
|
30
30
|
<% } else {%>
|
|
31
|
-
<SimpleAppText :setting="o.getField('#/properties/<%= key %>')" v-model="data.<%= key %>"/>
|
|
31
|
+
<SimpleAppText autofocus :setting="o.getField('#/properties/<%= key %>')" v-model="data.<%= key %>"/>
|
|
32
32
|
<% }%>
|
|
33
33
|
<% } else { %>
|
|
34
|
-
<SimpleAppText
|
|
34
|
+
<SimpleAppText autofocus :setting="o.getField('#/properties/<%= key %>')" v-model="data.<%= key %>"/>
|
|
35
35
|
<% }%>
|
|
36
36
|
<%})%>
|
|
37
37
|
|
|
@@ -7,7 +7,7 @@ import SimpleAppCalendar from '@simitgroup/simpleapp-vue-component/src/component
|
|
|
7
7
|
import SimpleAppCheckbox from '@simitgroup/simpleapp-vue-component/src/components/SimpleAppCheckbox.vue'
|
|
8
8
|
import SimpleAppChip from '@simitgroup/simpleapp-vue-component/src/components/SimpleAppChip.vue'
|
|
9
9
|
import SimpleAppColor from '@simitgroup/simpleapp-vue-component/src/components/SimpleAppColor.vue'
|
|
10
|
-
import SimpleAppEditor from '@simitgroup/simpleapp-vue-component/src/components/SimpleAppEditor.vue'
|
|
10
|
+
// import SimpleAppEditor from '@simitgroup/simpleapp-vue-component/src/components/SimpleAppEditor.vue'
|
|
11
11
|
import SimpleAppForm from '@simitgroup/simpleapp-vue-component/src/components/SimpleAppForm.vue'
|
|
12
12
|
import SimpleAppList from '@simitgroup/simpleapp-vue-component/src/components/SimpleAppList.vue'
|
|
13
13
|
import SimpleAppListmulti from '@simitgroup/simpleapp-vue-component/src/components/SimpleAppListmulti.vue'
|
|
@@ -44,7 +44,7 @@ export default defineNuxtPlugin((nuxtApp) => {
|
|
|
44
44
|
.component("SimpleAppCheckbox",SimpleAppCheckbox)
|
|
45
45
|
.component("SimpleAppChip",SimpleAppChip)
|
|
46
46
|
.component("SimpleAppColor",SimpleAppColor)
|
|
47
|
-
.component("SimpleAppEditor",SimpleAppEditor)
|
|
47
|
+
// .component("SimpleAppEditor",SimpleAppEditor) // not suitable, will cause problem in ssr mode
|
|
48
48
|
.component("SimpleAppForm",SimpleAppForm)
|
|
49
49
|
.component("SimpleAppList",SimpleAppList)
|
|
50
50
|
.component("SimpleAppListmulti",SimpleAppListmulti)
|
|
@@ -60,7 +60,7 @@ export default defineNuxtPlugin((nuxtApp) => {
|
|
|
60
60
|
.component("SimpleAppTextarea",SimpleAppTextarea)
|
|
61
61
|
.component("SimpleAppValue",SimpleAppValue)
|
|
62
62
|
.component("SimpleFieldContainer",SimpleFieldContainer)
|
|
63
|
-
//.component("Quill",Quill)
|
|
63
|
+
//.component("Quill",Quill) // cause problem in ssr mode
|
|
64
64
|
.use(ToastService).use(ConfirmationService)
|
|
65
65
|
;
|
|
66
66
|
return {
|