@simitgroup/simpleapp-generator 1.0.8 → 1.0.14
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 +128 -1
- package/dist/createproject.js +39 -18
- package/dist/createproject.js.map +1 -1
- package/dist/generate.js +49 -20
- package/dist/generate.js.map +1 -1
- package/dist/index.js +36 -25
- package/dist/index.js.map +1 -1
- package/dist/processors/jsonschemabuilder.js +60 -9
- package/dist/processors/jsonschemabuilder.js.map +1 -1
- package/dist/storage.js +5 -0
- package/dist/storage.js.map +1 -0
- package/package.json +10 -5
- package/src/createproject.ts +40 -14
- package/src/generate.ts +62 -28
- package/src/index.ts +31 -20
- package/src/processors/jsonschemabuilder.ts +70 -15
- package/src/storage.ts +3 -0
- package/src/type.ts +24 -2
- package/templates/SimpleAppClient.eta +10 -5
- package/templates/SimpleAppController.eta +4 -1
- package/templates/SimpleAppService.eta +87 -11
- package/templates/basic/controller.eta +17 -1
- package/templates/basic/model.eta +1 -1
- package/templates/basic/pageindex.vue.eta +50 -0
- package/templates/basic/pageindexwithid.vue.eta +1 -0
- package/templates/basic/service.eta +2 -0
- package/templates/basic/{apiclient.eta → simpleappclient.eta} +15 -7
- package/templates/nuxt/app.vue.eta +8 -0
- package/templates/nuxt/components.crudsimple.vue.eta +95 -0
- package/templates/nuxt/components.debugdocdata.vue.eta +20 -0
- package/templates/nuxt/components.eventmonitor.vue.eta +79 -0
- package/templates/nuxt/components.menus.vue.eta +8 -0
- package/templates/nuxt/composables.getautocomplete.ts.eta +24 -0
- package/templates/nuxt/composables.getmenus.ts.eta +8 -0
- package/templates/nuxt/env.eta +3 -0
- package/templates/nuxt/layouts.default.vue.eta +10 -0
- package/templates/{nuxt.config.eta → nuxt/nuxt.config.ts.eta} +6 -3
- package/templates/nuxt/pages.index.vue.eta +3 -0
- package/templates/{nuxt.plugins.eta → nuxt/plugins.simpleapp.ts.eta} +12 -2
- package/templates/nuxt/server.api.ts.eta +131 -0
- package/templates/nuxt/tailwind.config.ts.eta +9 -0
- package/templates/nuxt/tailwind.css.eta +28 -0
- package/templates/nuxt.env.eta +0 -2
package/README.md
CHANGED
|
@@ -1,3 +1,68 @@
|
|
|
1
|
+
after generate
|
|
2
|
+
1. `./backend/tsconfig.ts` add bolow into compile options
|
|
3
|
+
```typescript
|
|
4
|
+
"resolveJsonModule": true,
|
|
5
|
+
"esModuleInterop": true,
|
|
6
|
+
```
|
|
7
|
+
2.`./backend/.env` change mongodb setting as below example:
|
|
8
|
+
```bash
|
|
9
|
+
MONGODB_URL='mongodb://mongoadmin:secret@localhost:27017/admin?authMechanism=DEFAULT'
|
|
10
|
+
```
|
|
11
|
+
3. download http://localhost:8080/api into `./openapi.yaml`
|
|
12
|
+
4. regenerate code (for frontend can function completely)
|
|
13
|
+
5.
|
|
14
|
+
|
|
15
|
+
9. beautify default tailwind ui
|
|
16
|
+
10.plugin for ajv
|
|
17
|
+
long string format for description
|
|
18
|
+
errors formating
|
|
19
|
+
7. load backend tsconfig and add more property: **
|
|
20
|
+
8. simpleapp generate currentfolder error **
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
# Todo
|
|
24
|
+
x1. override app.vue *
|
|
25
|
+
x2. create layout
|
|
26
|
+
simpleapp (first time only)
|
|
27
|
+
/default *
|
|
28
|
+
x3. components/ (first time only)
|
|
29
|
+
x /MonitorEvent.vue *
|
|
30
|
+
x /CrudBasic.vue **
|
|
31
|
+
x /Menubar *
|
|
32
|
+
4. create page/docs (everytime)
|
|
33
|
+
/index.ts
|
|
34
|
+
//create page if docs/documentname not exists ***
|
|
35
|
+
//override if docs/documentname/delete-me-for-avoid-override exists *
|
|
36
|
+
5. login/logout sessions
|
|
37
|
+
x6. auto create *
|
|
38
|
+
x server/api to backend *
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
1. define foreign key relationship in json schema2
|
|
45
|
+
2. auto index and block deletion
|
|
46
|
+
3. when delete identify foreign connected documents
|
|
47
|
+
4. how to unique key
|
|
48
|
+
5. how to multi-tenancy
|
|
49
|
+
6. login/logout in nuxt
|
|
50
|
+
7. jwt in nestjs
|
|
51
|
+
8. format errors at server side link back client side
|
|
52
|
+
9. how to auto toast
|
|
53
|
+
10.server side custom validation link back client side
|
|
54
|
+
11.permission controls
|
|
55
|
+
12.find records
|
|
56
|
+
13.audit trail
|
|
57
|
+
14.data isolation by org, branch and tenant
|
|
58
|
+
15.statistics, aggregations
|
|
59
|
+
16.auto generate frontend page
|
|
60
|
+
17.
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
1
66
|
# simpleapp-generator
|
|
2
67
|
## this project still in alpha stage!
|
|
3
68
|
|
|
@@ -44,12 +109,27 @@ Key Ideal:
|
|
|
44
109
|
- you can regenerate source code multiple time without worry your customization gone (there is a way!)
|
|
45
110
|
|
|
46
111
|
|
|
112
|
+
Init Nuxt script
|
|
113
|
+
1. npm i -D @sidebase/nuxt-auth
|
|
114
|
+
2. pnpm i --save next-auth@4.21.1
|
|
115
|
+
npm i -D @sidebase/nuxt-session
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
|
|
47
119
|
## You shall know
|
|
48
120
|
This project assume you familiar with below:
|
|
49
121
|
1. typescript (no typescript, not reliable frontend)
|
|
50
122
|
2. mongodb
|
|
51
123
|
3. vue/react kind of ecosystem
|
|
52
124
|
|
|
125
|
+
# Special Format:
|
|
126
|
+
There is special format value:
|
|
127
|
+
1. `field-autcomplete-code`:field for document code, like `student_code,document_no`
|
|
128
|
+
2. `field-autocomplete-label`: field for document name, like `student_name, product_name`
|
|
129
|
+
|
|
130
|
+
# Special properties:
|
|
131
|
+
## object:
|
|
132
|
+
* autocomplete-src=category => autocomplete list from server-url/category/autocomplete
|
|
53
133
|
|
|
54
134
|
You need to install mongodb and openapi generator:
|
|
55
135
|
1. https://www.mongodb.com/docs/manual/installation/
|
|
@@ -665,4 +745,51 @@ async newFindOne(@Param('id') id: string) {
|
|
|
665
745
|
`person.addHobbies('hobby1')`,`person.addAddress({})`,`person.delAddress(index:number)` edit `newFindOne`:
|
|
666
746
|
```
|
|
667
747
|
```
|
|
668
|
-
6. create bothend code for `person`
|
|
748
|
+
6. create bothend code for `person`
|
|
749
|
+
|
|
750
|
+
|
|
751
|
+
|
|
752
|
+
foreign key
|
|
753
|
+
cat
|
|
754
|
+
category_id
|
|
755
|
+
category_code
|
|
756
|
+
category_name
|
|
757
|
+
|
|
758
|
+
product
|
|
759
|
+
product_id
|
|
760
|
+
product_code
|
|
761
|
+
product_name
|
|
762
|
+
category => category_id: category_code
|
|
763
|
+
|
|
764
|
+
|
|
765
|
+
|
|
766
|
+
invoice
|
|
767
|
+
invoice_id
|
|
768
|
+
invoice_no
|
|
769
|
+
invoice_date
|
|
770
|
+
total
|
|
771
|
+
details =>
|
|
772
|
+
product => product_id: product_code
|
|
773
|
+
qty
|
|
774
|
+
price
|
|
775
|
+
subtotal
|
|
776
|
+
|
|
777
|
+
order
|
|
778
|
+
order_id
|
|
779
|
+
order_no
|
|
780
|
+
order_date
|
|
781
|
+
total
|
|
782
|
+
details =>
|
|
783
|
+
product => product_id: product_code
|
|
784
|
+
qty
|
|
785
|
+
price
|
|
786
|
+
subtotal
|
|
787
|
+
|
|
788
|
+
|
|
789
|
+
cat => foreignkey: []
|
|
790
|
+
prd => foreignkey: category => category
|
|
791
|
+
invoice => foreignkey: detail.product=>product
|
|
792
|
+
order => foreignkey: detail.product=>product
|
|
793
|
+
|
|
794
|
+
cat =[product.category]
|
|
795
|
+
product=[invoice.detail.product, order.detail.product]
|
package/dist/createproject.js
CHANGED
|
@@ -56,25 +56,46 @@ const checkNestCli = (callback) => {
|
|
|
56
56
|
const createNuxt = (targetfolder, callback) => {
|
|
57
57
|
log.info("setting up nuxt frontend ${targetfolder}");
|
|
58
58
|
log.info(`frontend nuxt project "${targetfolder}" created, installing module`);
|
|
59
|
-
(0, child_process_1.exec)(`cd ${targetfolder};
|
|
59
|
+
(0, child_process_1.exec)(`cd ${targetfolder};pnpm install;pnpm install -D @types/node prettier @nuxtjs/tailwindcss`, (error, stdout, stderr) => {
|
|
60
60
|
//;pnpm install
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
61
|
+
console.log(error, stdout, stderr);
|
|
62
|
+
(0, child_process_1.exec)(`cd ${targetfolder};pnpm install --save ajv ajv-formats primeflex primeicons prettier primevue axios json-schema mitt @simitgroup/simpleapp-vue-component@latest`, (error, stdout, stderr) => {
|
|
63
|
+
console.log(error, stdout, stderr);
|
|
64
|
+
(0, fs_1.mkdirSync)(`${targetfolder}/assets/css/`, { recursive: true });
|
|
65
|
+
(0, fs_1.mkdirSync)(`${targetfolder}/layouts`, { recursive: true });
|
|
66
|
+
(0, fs_1.mkdirSync)(`${targetfolder}/components`, { recursive: true });
|
|
67
|
+
(0, fs_1.mkdirSync)(`${targetfolder}/server/api`, { recursive: true });
|
|
68
|
+
(0, fs_1.mkdirSync)(`${targetfolder}/pages`, { recursive: true });
|
|
69
|
+
(0, fs_1.mkdirSync)(`${targetfolder}/plugins`, { recursive: true });
|
|
70
|
+
const eta = new Eta({ views: `${constants.templatedir}/nuxt` });
|
|
71
|
+
const variables = [];
|
|
72
|
+
const writes = {
|
|
73
|
+
'./app.vue.eta': 'app.vue',
|
|
74
|
+
'./components.eventmonitor.vue.eta': 'components/EventMonitor.vue',
|
|
75
|
+
'./components.menus.vue.eta': 'components/Menus.vue',
|
|
76
|
+
'./components.crudsimple.vue.eta': 'components/CrudSimple.vue',
|
|
77
|
+
'./components.debugdocdata.vue.eta': 'components/DebugDocumentData.vue',
|
|
78
|
+
'./layouts.default.vue.eta': 'layouts/default.vue',
|
|
79
|
+
'./server.api.ts.eta': 'server/api/[...].ts',
|
|
80
|
+
'./nuxt.config.ts.eta': 'nuxt.config.ts',
|
|
81
|
+
'./pages.index.vue.eta': 'pages/index.vue',
|
|
82
|
+
'./plugins.simpleapp.ts.eta': 'plugins/simpleapp.ts',
|
|
83
|
+
'./tailwind.config.ts.eta': 'tailwind.config.ts',
|
|
84
|
+
'./tailwind.css.eta': 'assets/css/tailwind.css',
|
|
85
|
+
'./env.eta': '.env',
|
|
86
|
+
};
|
|
87
|
+
const templates = Object.getOwnPropertyNames(writes);
|
|
88
|
+
for (let i = 0; i < templates.length; i++) {
|
|
89
|
+
const template = templates[i];
|
|
90
|
+
const filename = writes[template];
|
|
91
|
+
const txt = eta.render(template, variables);
|
|
92
|
+
const file = `${targetfolder}/${filename}`;
|
|
93
|
+
log.info("writing ", file);
|
|
94
|
+
(0, fs_1.writeFileSync)(file, txt);
|
|
95
|
+
}
|
|
96
|
+
log.info("nuxt project completed");
|
|
97
|
+
callback();
|
|
98
|
+
});
|
|
78
99
|
});
|
|
79
100
|
};
|
|
80
101
|
exports.createNuxt = createNuxt;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createproject.js","sourceRoot":"","sources":["../src/createproject.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAA4C;AAC5C,
|
|
1
|
+
{"version":3,"file":"createproject.js","sourceRoot":"","sources":["../src/createproject.ts"],"names":[],"mappings":"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"}
|
package/dist/generate.js
CHANGED
|
@@ -28,6 +28,7 @@ exports.initialize = void 0;
|
|
|
28
28
|
// import { readJsonSchemaBuilder } from './processors/jsonschemabuilder';
|
|
29
29
|
const constants = __importStar(require("./constant"));
|
|
30
30
|
const jsonschemabuilder_1 = require("./processors/jsonschemabuilder");
|
|
31
|
+
const storage_1 = require("./storage");
|
|
31
32
|
const tslog_1 = require("tslog");
|
|
32
33
|
const log = new tslog_1.Logger();
|
|
33
34
|
const clc = require("cli-color");
|
|
@@ -40,9 +41,10 @@ const extHfb = '.xhfb.json';
|
|
|
40
41
|
const extjsonschema = '.jsonschema.json';
|
|
41
42
|
let jsonschemas = {};
|
|
42
43
|
const docs = [];
|
|
43
|
-
const initialize = (defFolder, backendfolder, frontendfolder) => {
|
|
44
|
+
const initialize = async (defFolder, backendfolder, frontendfolder) => {
|
|
44
45
|
prepareEnvironments(backendfolder, frontendfolder);
|
|
45
46
|
let activatemodules = [];
|
|
47
|
+
//
|
|
46
48
|
const files = (0, fs_1.readdirSync)(defFolder);
|
|
47
49
|
// readdir(defFolder, (err, files) => {
|
|
48
50
|
// files.forEach((file) => {
|
|
@@ -59,7 +61,11 @@ const initialize = (defFolder, backendfolder, frontendfolder) => {
|
|
|
59
61
|
log.info(`Load ` + clc.green(file));
|
|
60
62
|
rendertype = 'basic';
|
|
61
63
|
jsonschemas[docname] = jsondata;
|
|
62
|
-
|
|
64
|
+
// foreignkeys:
|
|
65
|
+
// tmpforeignkeys:TypeForeignKey
|
|
66
|
+
allmodels = await (0, jsonschemabuilder_1.readJsonSchemaBuilder)(doctype, docname, jsondata, storage_1.foreignkeys);
|
|
67
|
+
//foreignkeycatalogues
|
|
68
|
+
// foreignkeys
|
|
63
69
|
generate(docname, doctype, rendertype, allmodels, backendfolder, frontendfolder);
|
|
64
70
|
activatemodules.push({ doctype: doctype, docname: capitalizeFirstLetter(docname) });
|
|
65
71
|
}
|
|
@@ -67,17 +73,20 @@ const initialize = (defFolder, backendfolder, frontendfolder) => {
|
|
|
67
73
|
log.warn(`Load ` + clc.yellow(file) + ` but it is not supported`);
|
|
68
74
|
}
|
|
69
75
|
}
|
|
76
|
+
// log.warn("foreignkeys---",foreignkeys)
|
|
70
77
|
log.info("Activated backend modules: ", activatemodules);
|
|
71
78
|
// log.info(activatemodules)
|
|
72
|
-
|
|
79
|
+
finalize(activatemodules, backendfolder, frontendfolder);
|
|
73
80
|
return Promise.resolve(true);
|
|
74
81
|
};
|
|
75
82
|
exports.initialize = initialize;
|
|
76
83
|
const generate = (docname, doctype, rendertype, allmodels, backendfolder, frontendfolder) => {
|
|
77
84
|
const targetfolder = `${backendfolder}/src/docs/${doctype}`;
|
|
85
|
+
const frontendpagefolder = `${frontendfolder}/pages`;
|
|
78
86
|
try {
|
|
79
87
|
(0, fs_1.mkdirSync)(targetfolder, { recursive: true });
|
|
80
|
-
(0, fs_1.mkdirSync)(`${frontendfolder}/
|
|
88
|
+
(0, fs_1.mkdirSync)(`${frontendfolder}/simpleapp/simpleappdocs/`, { recursive: true });
|
|
89
|
+
(0, fs_1.mkdirSync)(frontendpagefolder, { recursive: true });
|
|
81
90
|
}
|
|
82
91
|
catch (err) {
|
|
83
92
|
//do nothing if folder exists
|
|
@@ -94,6 +103,8 @@ const generate = (docname, doctype, rendertype, allmodels, backendfolder, fronte
|
|
|
94
103
|
name: docname,
|
|
95
104
|
doctype: doctype,
|
|
96
105
|
models: allmodels,
|
|
106
|
+
autocompletecode: allmodels[capitalizeFirstLetter(docname)].codeField,
|
|
107
|
+
autocompletename: allmodels[capitalizeFirstLetter(docname)].nameField,
|
|
97
108
|
schema: allmodels[capitalizeFirstLetter(docname)].model,
|
|
98
109
|
apiSchemaName: capitalizeFirstLetter(docname),
|
|
99
110
|
typename: capitalizeFirstLetter(docname),
|
|
@@ -173,7 +184,7 @@ const generate = (docname, doctype, rendertype, allmodels, backendfolder, fronte
|
|
|
173
184
|
// prepare readme
|
|
174
185
|
const txtReadme = eta.render('./readme', variables);
|
|
175
186
|
(0, fs_1.writeFileSync)(`${targetfolder}/README.md`, txtReadme);
|
|
176
|
-
const frontendfile = `${frontendfolder}/
|
|
187
|
+
const frontendfile = `${frontendfolder}/simpleapp/simpleappdocs/${variables.typename}Doc.ts`;
|
|
177
188
|
let frontEndCode = '';
|
|
178
189
|
if ((0, fs_1.existsSync)(frontendfile)) {
|
|
179
190
|
const clientcodes = (0, fs_1.readFileSync)(frontendfile).toString();
|
|
@@ -185,25 +196,33 @@ const generate = (docname, doctype, rendertype, allmodels, backendfolder, fronte
|
|
|
185
196
|
}
|
|
186
197
|
}
|
|
187
198
|
variables.frontEndCode = frontEndCode !== null && frontEndCode !== void 0 ? frontEndCode : '';
|
|
188
|
-
const txtDocClient = eta.render('./
|
|
199
|
+
const txtDocClient = eta.render('./simpleappclient.eta', variables);
|
|
189
200
|
(0, fs_1.writeFileSync)(frontendfile, txtDocClient);
|
|
190
|
-
|
|
191
|
-
log.info(`- write completed: `
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
201
|
+
generateClientPage(variables, eta, frontendpagefolder);
|
|
202
|
+
log.info(`- write completed: ${doctype}`);
|
|
203
|
+
}
|
|
204
|
+
};
|
|
205
|
+
const generateClientPage = (variables, eta, frontendpagefolder) => {
|
|
206
|
+
const docname = variables.name;
|
|
207
|
+
const targetfolder = `${frontendpagefolder}/${docname}`;
|
|
208
|
+
const overridefilename = `${targetfolder}/delete-me-for-avoid-override`;
|
|
209
|
+
if (!(0, fs_1.existsSync)(targetfolder)) {
|
|
210
|
+
(0, fs_1.mkdirSync)(targetfolder);
|
|
211
|
+
(0, fs_1.writeFileSync)(overridefilename, 'delete this file to prevent override by generator');
|
|
212
|
+
}
|
|
213
|
+
if ((0, fs_1.existsSync)(overridefilename)) {
|
|
214
|
+
const txtIndex = eta.render('./pageindex.vue.eta', variables);
|
|
215
|
+
const txtIndexwithid = eta.render('./pageindexwithid.vue.eta', variables);
|
|
216
|
+
(0, fs_1.writeFileSync)(`${targetfolder}/index.vue`, txtIndex);
|
|
217
|
+
(0, fs_1.writeFileSync)(`${targetfolder}/[id].vue`, txtIndexwithid);
|
|
199
218
|
}
|
|
200
219
|
};
|
|
201
220
|
const prepareEnvironments = (backendfolder, frontendfolder) => {
|
|
202
221
|
const targetfolder = `${backendfolder}/src/class`;
|
|
203
|
-
const targetfrontendfolder = `${frontendfolder}/server/
|
|
222
|
+
const targetfrontendfolder = `${frontendfolder}/server/api`;
|
|
204
223
|
try {
|
|
205
224
|
(0, fs_1.mkdirSync)(targetfolder, { recursive: true });
|
|
206
|
-
(0, fs_1.mkdirSync)(targetfrontendfolder);
|
|
225
|
+
(0, fs_1.mkdirSync)(targetfrontendfolder, { recursive: true });
|
|
207
226
|
}
|
|
208
227
|
catch (error) {
|
|
209
228
|
//do nothing
|
|
@@ -213,13 +232,23 @@ const prepareEnvironments = (backendfolder, frontendfolder) => {
|
|
|
213
232
|
//copy over backend controller
|
|
214
233
|
(0, fs_1.copyFileSync)(`${constants.templatedir}/SimpleAppController.eta`, `${targetfolder}/SimpleAppController.ts`);
|
|
215
234
|
//copy over frontend apiabstract class
|
|
216
|
-
// copyFileSync(`${constants.templatedir}/
|
|
235
|
+
// copyFileSync(`${constants.templatedir}/nuxt.apigateway.eta`,`${targetfrontendfolder}/[...].ts`)
|
|
217
236
|
//prepare backend config.ts
|
|
218
237
|
//copy over frontend config.ts
|
|
219
238
|
};
|
|
220
|
-
const
|
|
239
|
+
const finalize = (modules, backendfolder, frontendfolder) => {
|
|
240
|
+
log.info("Finalizing foreignkey:", storage_1.foreignkeys);
|
|
241
|
+
(0, fs_1.mkdirSync)(`${backendfolder}/src/dicts/`, { recursive: true });
|
|
242
|
+
(0, fs_1.mkdirSync)(`${frontendfolder}/composables/`, { recursive: true });
|
|
221
243
|
const eta = new Eta({ views: constants.templatedir });
|
|
222
244
|
const txtMainModule = eta.render('app.module.eta', modules);
|
|
223
|
-
(0, fs_1.writeFileSync)(`${
|
|
245
|
+
(0, fs_1.writeFileSync)(`${backendfolder}/src/app.module.ts`, txtMainModule);
|
|
246
|
+
const foreignkeyfile = `${backendfolder}/src/dicts/foreignkeys.json`;
|
|
247
|
+
(0, fs_1.writeFileSync)(foreignkeyfile, JSON.stringify(storage_1.foreignkeys));
|
|
248
|
+
console.log("write to foreignkey file ", foreignkeyfile);
|
|
249
|
+
const txtCatalogue = eta.render('./nuxt/composables.getautocomplete.ts.eta', modules);
|
|
250
|
+
(0, fs_1.writeFileSync)(`${frontendfolder}/composables/getAutocomplete.ts`, txtCatalogue);
|
|
251
|
+
const txtMenus = eta.render('./nuxt/composables.getmenus.ts.eta', modules);
|
|
252
|
+
(0, fs_1.writeFileSync)(`${frontendfolder}/composables/getMenus.ts`, txtMenus);
|
|
224
253
|
};
|
|
225
254
|
//# sourceMappingURL=generate.js.map
|
package/dist/generate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kEAAkE;AAClE,0EAA0E;AAC1E,sDAAuC;AACvC,sEAAoE;
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -8,24 +8,32 @@ const fs = require('fs');
|
|
|
8
8
|
const { createNuxt, createNest } = require('./createproject');
|
|
9
9
|
const { exec } = require("child_process");
|
|
10
10
|
const capitalizeFirstLetter = require('./libs');
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
const { Logger, ILogObj } = require("tslog");
|
|
12
|
+
const log = new Logger();
|
|
13
13
|
const figlet = require("figlet");
|
|
14
14
|
// const program = new Command();
|
|
15
|
-
|
|
15
|
+
const pj = require('../package.json');
|
|
16
|
+
let version = pj.version;
|
|
16
17
|
program
|
|
17
18
|
.version(version)
|
|
18
19
|
.description("An simpleapp CLI tool for generate frontend (vuejs) and backend(nestjs) codes")
|
|
19
20
|
.option("-c, --config-file <value>", 'configuration file content such as:{"definationsFolder":"./definations", "backendFolder":"./nestproject/src/docs", "frontendFolder":"./nuxt/server"}')
|
|
20
|
-
.option("-s, --definations-folder <value>", "load defination files from which folder")
|
|
21
|
-
.option("-b, --backend-folder <value>", "Create backend code at which folder")
|
|
22
|
-
.option("-f, --frontend-folder <value>", "Create frontend code at which folder")
|
|
23
|
-
.option("-i, --openapi3-yaml <value>", 'openapi3.yaml generated by backend server')
|
|
21
|
+
// .option("-s, --definations-folder <value>", "load defination files from which folder")
|
|
22
|
+
// .option("-b, --backend-folder <value>", "Create backend code at which folder")
|
|
23
|
+
// .option("-f, --frontend-folder <value>", "Create frontend code at which folder")
|
|
24
|
+
// .option("-i, --openapi3-yaml <value>", 'openapi3.yaml generated by backend server')
|
|
24
25
|
.parse(process.argv);
|
|
25
26
|
const options = program.opts();
|
|
26
27
|
console.log(figlet.textSync(`SimpleApp Generator ${version}`));
|
|
27
28
|
// console.log(options)
|
|
28
|
-
|
|
29
|
+
let path = '';
|
|
30
|
+
if (options.configFile[0] == '.') {
|
|
31
|
+
path = process.cwd() + '/' + options.configFile;
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
path = options.configFile;
|
|
35
|
+
}
|
|
36
|
+
const configs = require(path);
|
|
29
37
|
console.log("configurations: ", configs);
|
|
30
38
|
const definationsFolder = (_a = configs.definationsFolder) !== null && _a !== void 0 ? _a : options.definationsFolder;
|
|
31
39
|
const backendFolder = (_b = configs.backendFolder) !== null && _b !== void 0 ? _b : options.backendFolder;
|
|
@@ -33,42 +41,45 @@ const frontendFolder = (_c = configs.frontendFolder) !== null && _c !== void 0 ?
|
|
|
33
41
|
const openapi3Yaml = (_d = configs.openapi3Yaml) !== null && _d !== void 0 ? _d : options.openapi3Yaml;
|
|
34
42
|
const runGenNext = (callback) => {
|
|
35
43
|
if (!fs.existsSync(backendFolder)) {
|
|
36
|
-
|
|
44
|
+
log.error(`${backendFolder} does not exists, please run "nest new -p pnpm ${backendFolder}"`);
|
|
37
45
|
}
|
|
38
46
|
else if (!fs.existsSync(`${backendFolder}/.env`)) {
|
|
39
|
-
|
|
47
|
+
log.info(`initial nest configuratoin for simpleapp generator`);
|
|
40
48
|
createNest(backendFolder, callback);
|
|
41
49
|
}
|
|
42
50
|
else {
|
|
43
|
-
|
|
51
|
+
log.warn(`.env file exists, skip nest initialization`);
|
|
44
52
|
callback();
|
|
45
53
|
}
|
|
46
54
|
};
|
|
47
55
|
const runGenNuxt = (callback) => {
|
|
48
56
|
if (!fs.existsSync(frontendFolder)) {
|
|
49
|
-
|
|
57
|
+
log.error(`${frontendFolder} does not exists, please run "npx nuxi@latest init ${frontendFolder}"`);
|
|
50
58
|
}
|
|
51
59
|
else if (!fs.existsSync(`${frontendFolder}/.env`)) {
|
|
52
|
-
|
|
60
|
+
log.info(`initial nuxt configuratoin for simpleapp generator`);
|
|
53
61
|
createNuxt(frontendFolder, callback);
|
|
54
62
|
}
|
|
55
63
|
else {
|
|
56
|
-
|
|
64
|
+
log.warn(`.env file exists, skip nuxt initialization`);
|
|
57
65
|
callback();
|
|
58
66
|
}
|
|
59
67
|
};
|
|
60
68
|
runGenNext(() => {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
exec(`
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
69
|
+
log.info("runGenNext (backen) done");
|
|
70
|
+
runGenNuxt(() => {
|
|
71
|
+
log.info("runGenNuxt (frontend) done");
|
|
72
|
+
generator.initialize(definationsFolder, backendFolder, frontendFolder);
|
|
73
|
+
exec(`cd ${frontendFolder};npx prettier --write "./pages/**/*.vue" "./simpleapp/**/*" `);
|
|
74
|
+
exec(`cd ${backendFolder};npx run format `);
|
|
75
|
+
if (openapi3Yaml != '') {
|
|
76
|
+
exec(`openapi-generator generate -i ${openapi3Yaml} -o ${frontendFolder}/simpleapp/openapi -g typescript-axios --skip-validate-spec`, (error, stdout, stderr) => {
|
|
77
|
+
if (error) {
|
|
78
|
+
log.error(stderr);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
});
|
|
72
83
|
});
|
|
73
84
|
// pnpm exec prettier ./src/docs --write
|
|
74
85
|
// pnpm exec prettier ./apiclients --write
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,MAAM,OAAO,GAAI,OAAO,CAAC,WAAW,CAAC,CAAA,CAAC,gBAAgB;AACtD,MAAM,UAAU,GAAE,OAAO,CAAE,QAAQ,CAAC,CAAA;AACpC,MAAM,SAAS,GAAE,OAAO,CAAE,YAAY,CAAC,CAAA;AACvC,MAAM,EAAE,GAAG,OAAO,CAAE,IAAI,CAAC,CAAA;AACzB,MAAO,EAAC,UAAU,EAAC,UAAU,EAAC,GAAE,OAAO,CAAE,iBAAiB,CAAC,CAAA;AAC3D,MAAM,EAAC,IAAI,EAAC,GAAI,OAAO,CAAE,eAAe,CAAC,CAAA;AAEzC,MAAM,qBAAqB,GAAE,OAAO,CAAE,QAAQ,CAAC,CAAA;AAC/C
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|