@simitgroup/simpleapp-generator 1.0.9 → 1.0.15

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 (40) hide show
  1. package/README.md +148 -1
  2. package/dist/createproject.js +39 -18
  3. package/dist/createproject.js.map +1 -1
  4. package/dist/generate.js +47 -20
  5. package/dist/generate.js.map +1 -1
  6. package/dist/index.js +36 -25
  7. package/dist/index.js.map +1 -1
  8. package/dist/processors/jsonschemabuilder.js +38 -8
  9. package/dist/processors/jsonschemabuilder.js.map +1 -1
  10. package/dist/storage.js +5 -0
  11. package/dist/storage.js.map +1 -0
  12. package/package.json +10 -5
  13. package/src/createproject.ts +40 -14
  14. package/src/generate.ts +60 -28
  15. package/src/index.ts +31 -20
  16. package/src/processors/jsonschemabuilder.ts +48 -14
  17. package/src/storage.ts +3 -0
  18. package/src/type.ts +23 -1
  19. package/templates/SimpleAppClient.eta +10 -5
  20. package/templates/SimpleAppService.eta +65 -17
  21. package/templates/basic/model.eta +1 -1
  22. package/templates/basic/pageindex.vue.eta +50 -0
  23. package/templates/basic/pageindexwithid.vue.eta +1 -0
  24. package/templates/basic/{apiclient.eta → simpleappclient.eta} +6 -3
  25. package/templates/nuxt/app.vue.eta +8 -0
  26. package/templates/nuxt/components.crudsimple.vue.eta +95 -0
  27. package/templates/nuxt/components.debugdocdata.vue.eta +20 -0
  28. package/templates/nuxt/components.eventmonitor.vue.eta +79 -0
  29. package/templates/nuxt/components.menus.vue.eta +18 -0
  30. package/templates/nuxt/composables.getautocomplete.ts.eta +24 -0
  31. package/templates/nuxt/composables.getmenus.ts.eta +9 -0
  32. package/templates/nuxt/env.eta +3 -0
  33. package/templates/nuxt/layouts.default.vue.eta +10 -0
  34. package/templates/{nuxt.config.eta → nuxt/nuxt.config.ts.eta} +6 -3
  35. package/templates/nuxt/pages.index.vue.eta +3 -0
  36. package/templates/{nuxt.plugins.eta → nuxt/plugins.simpleapp.ts.eta} +11 -4
  37. package/templates/nuxt/server.api.ts.eta +131 -0
  38. package/templates/nuxt/tailwind.config.ts.eta +9 -0
  39. package/templates/nuxt/tailwind.css.eta +28 -0
  40. package/templates/nuxt.env.eta +0 -2
package/README.md CHANGED
@@ -1,3 +1,92 @@
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
+ 1. front page
17
+ 2. top bar
18
+ 3. menu bars
19
+ 4. default with of each component is it nicely fit
20
+ 5. table layout
21
+ 6. error messages
22
+ 7. error formating
23
+ 7. load backend tsconfig and add more property: **
24
+ 8. add prettier formating option for frontend
25
+ 9. write proper user guide
26
+ 10.add find options
27
+ 11.retain modifications of controller, service, apiclients
28
+ 12.add find records
29
+ 13.add workflow functions
30
+ 14.add permission control
31
+ 16.access right
32
+ 17.setting of tenants
33
+ 18.keep audit trail into db
34
+ 19.function of remain menulist
35
+ 20.security of string input, block xss
36
+ 21.control csrf
37
+
38
+
39
+ 10.plugin for ajv
40
+ long string format for description
41
+ errors formating
42
+
43
+
44
+
45
+
46
+ # Todo
47
+ x8. simpleapp generate currentfolder error **
48
+ x1. override app.vue *
49
+ x2. create layout
50
+ simpleapp (first time only)
51
+ /default *
52
+ x3. components/ (first time only)
53
+ x /MonitorEvent.vue *
54
+ x /CrudBasic.vue **
55
+ x /Menubar *
56
+ 4. create page/docs (everytime)
57
+ /index.ts
58
+ //create page if docs/documentname not exists ***
59
+ //override if docs/documentname/delete-me-for-avoid-override exists *
60
+ 5. login/logout sessions
61
+ x6. auto create *
62
+ x server/api to backend *
63
+
64
+
65
+
66
+
67
+
68
+ 1. define foreign key relationship in json schema2
69
+ 2. auto index and block deletion
70
+ 3. when delete identify foreign connected documents
71
+ 4. how to unique key
72
+ 5. how to multi-tenancy
73
+ 6. login/logout in nuxt
74
+ 7. jwt in nestjs
75
+ 8. format errors at server side link back client side
76
+ 9. how to auto toast
77
+ 10.server side custom validation link back client side
78
+ 11.permission controls
79
+ 12.find records
80
+ 13.audit trail
81
+ 14.data isolation by org, branch and tenant
82
+ 15.statistics, aggregations
83
+ 16.auto generate frontend page
84
+ 17.
85
+
86
+
87
+
88
+
89
+
1
90
  # simpleapp-generator
2
91
  ## this project still in alpha stage!
3
92
 
@@ -44,6 +133,13 @@ Key Ideal:
44
133
  - you can regenerate source code multiple time without worry your customization gone (there is a way!)
45
134
 
46
135
 
136
+ Init Nuxt script
137
+ 1. npm i -D @sidebase/nuxt-auth
138
+ 2. pnpm i --save next-auth@4.21.1
139
+ npm i -D @sidebase/nuxt-session
140
+
141
+
142
+
47
143
  ## You shall know
48
144
  This project assume you familiar with below:
49
145
  1. typescript (no typescript, not reliable frontend)
@@ -55,6 +151,10 @@ There is special format value:
55
151
  1. `field-autcomplete-code`:field for document code, like `student_code,document_no`
56
152
  2. `field-autocomplete-label`: field for document name, like `student_name, product_name`
57
153
 
154
+ # Special properties:
155
+ ## object:
156
+ * autocomplete-src=category => autocomplete list from server-url/category/autocomplete
157
+
58
158
  You need to install mongodb and openapi generator:
59
159
  1. https://www.mongodb.com/docs/manual/installation/
60
160
  2. https://openapi-generator.tech/docs/installation/
@@ -669,4 +769,51 @@ async newFindOne(@Param('id') id: string) {
669
769
  `person.addHobbies('hobby1')`,`person.addAddress({})`,`person.delAddress(index:number)` edit `newFindOne`:
670
770
  ```
671
771
  ```
672
- 6. create bothend code for `person`
772
+ 6. create bothend code for `person`
773
+
774
+
775
+
776
+ foreign key
777
+ cat
778
+ category_id
779
+ category_code
780
+ category_name
781
+
782
+ product
783
+ product_id
784
+ product_code
785
+ product_name
786
+ category => category_id: category_code
787
+
788
+
789
+
790
+ invoice
791
+ invoice_id
792
+ invoice_no
793
+ invoice_date
794
+ total
795
+ details =>
796
+ product => product_id: product_code
797
+ qty
798
+ price
799
+ subtotal
800
+
801
+ order
802
+ order_id
803
+ order_no
804
+ order_date
805
+ total
806
+ details =>
807
+ product => product_id: product_code
808
+ qty
809
+ price
810
+ subtotal
811
+
812
+
813
+ cat => foreignkey: []
814
+ prd => foreignkey: category => category
815
+ invoice => foreignkey: detail.product=>product
816
+ order => foreignkey: detail.product=>product
817
+
818
+ cat =[product.category]
819
+ product=[invoice.detail.product, order.detail.product]
@@ -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};mkdir plugins;pnpm install;pnpm install -D prettier`, (error, stdout, stderr) => {
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
- if (!error) {
62
- (0, child_process_1.exec)(`pnpm install --save ajv ajv-formats primeflex primeicons primevue axios json-schema @simitgroup/simpleapp-vue-component@latest`, (error, stdout, stderr) => {
63
- const eta = new Eta({ views: constants.templatedir });
64
- const variables = [];
65
- const txtEnv = eta.render('./nuxt.env.eta', variables);
66
- (0, fs_1.writeFileSync)(`${targetfolder}/.env`, txtEnv);
67
- const txtConfig = eta.render('./nuxt.config.eta', variables);
68
- (0, fs_1.writeFileSync)(`${targetfolder}/nuxt.config.ts`, txtConfig);
69
- const txtPlugins = eta.render('./nuxt.plugins.eta', variables);
70
- (0, fs_1.writeFileSync)(`${targetfolder}/plugins/simpleapp.ts`, txtPlugins);
71
- log.info("nuxt project completed");
72
- callback();
73
- });
74
- }
75
- else {
76
- throw error;
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":"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"}
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
- allmodels = (0, jsonschemabuilder_1.readJsonSchemaBuilder)(doctype, docname, jsondata);
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
- loadSimpleAppModules(activatemodules, backendfolder);
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}/server/docs/`, { recursive: true });
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
@@ -175,7 +184,7 @@ const generate = (docname, doctype, rendertype, allmodels, backendfolder, fronte
175
184
  // prepare readme
176
185
  const txtReadme = eta.render('./readme', variables);
177
186
  (0, fs_1.writeFileSync)(`${targetfolder}/README.md`, txtReadme);
178
- const frontendfile = `${frontendfolder}/server/docs/${variables.typename}Doc.ts`;
187
+ const frontendfile = `${frontendfolder}/simpleapp/simpleappdocs/${variables.typename}Doc.ts`;
179
188
  let frontEndCode = '';
180
189
  if ((0, fs_1.existsSync)(frontendfile)) {
181
190
  const clientcodes = (0, fs_1.readFileSync)(frontendfile).toString();
@@ -187,25 +196,33 @@ const generate = (docname, doctype, rendertype, allmodels, backendfolder, fronte
187
196
  }
188
197
  }
189
198
  variables.frontEndCode = frontEndCode !== null && frontEndCode !== void 0 ? frontEndCode : '';
190
- const txtDocClient = eta.render('./apiclient', variables);
199
+ const txtDocClient = eta.render('./simpleappclient.eta', variables);
191
200
  (0, fs_1.writeFileSync)(frontendfile, txtDocClient);
192
- // // fs.writeFileSync(`${targetfolder}/${doctype}.uischema.ts`, txtUISchema);
193
- log.info(`- write completed: ` + clc.green(doctype));
194
- //create type
195
- //create service
196
- //create controller
197
- //create module
198
- //create apischema
199
- //create beforesave if not exists
200
- // console.log(schema, res);
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);
201
218
  }
202
219
  };
203
220
  const prepareEnvironments = (backendfolder, frontendfolder) => {
204
221
  const targetfolder = `${backendfolder}/src/class`;
205
- const targetfrontendfolder = `${frontendfolder}/server`;
222
+ const targetfrontendfolder = `${frontendfolder}/server/api`;
206
223
  try {
207
224
  (0, fs_1.mkdirSync)(targetfolder, { recursive: true });
208
- (0, fs_1.mkdirSync)(targetfrontendfolder);
225
+ (0, fs_1.mkdirSync)(targetfrontendfolder, { recursive: true });
209
226
  }
210
227
  catch (error) {
211
228
  //do nothing
@@ -215,13 +232,23 @@ const prepareEnvironments = (backendfolder, frontendfolder) => {
215
232
  //copy over backend controller
216
233
  (0, fs_1.copyFileSync)(`${constants.templatedir}/SimpleAppController.eta`, `${targetfolder}/SimpleAppController.ts`);
217
234
  //copy over frontend apiabstract class
218
- // copyFileSync(`${constants.templatedir}/SimpleAppClient.eta`,`${targetfrontendfolder}/SimpleAppClient.ts`)
235
+ // copyFileSync(`${constants.templatedir}/nuxt.apigateway.eta`,`${targetfrontendfolder}/[...].ts`)
219
236
  //prepare backend config.ts
220
237
  //copy over frontend config.ts
221
238
  };
222
- const loadSimpleAppModules = (modules, targetfolder) => {
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 });
223
243
  const eta = new Eta({ views: constants.templatedir });
224
244
  const txtMainModule = eta.render('app.module.eta', modules);
225
- (0, fs_1.writeFileSync)(`${targetfolder}/src/app.module.ts`, txtMainModule);
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);
226
253
  };
227
254
  //# sourceMappingURL=generate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
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
- // const {Logger, ILogObj} = require( "tslog");
12
- // const log: Logger = new Logger();
11
+ const { Logger, ILogObj } = require("tslog");
12
+ const log = new Logger();
13
13
  const figlet = require("figlet");
14
14
  // const program = new Command();
15
- let version = '1.0.8';
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
- const configs = require(options.configFile);
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
- console.error(`${backendFolder} does not exists, please run "nest new -p pnpm ${backendFolder}"`);
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
- console.log(`initial nest configuratoin for simpleapp generator`);
47
+ log.info(`initial nest configuratoin for simpleapp generator`);
40
48
  createNest(backendFolder, callback);
41
49
  }
42
50
  else {
43
- console.log(`.env file exists, skip nest initialization`);
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
- console.error(`${frontendFolder} does not exists, please run "npx nuxi@latest init ${frontendFolder}"`);
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
- console.log(`initial nuxt configuratoin for simpleapp generator`);
60
+ log.info(`initial nuxt configuratoin for simpleapp generator`);
53
61
  createNuxt(frontendFolder, callback);
54
62
  }
55
63
  else {
56
- console.log(`.env file exists, skip nuxt initialization`);
64
+ log.warn(`.env file exists, skip nuxt initialization`);
57
65
  callback();
58
66
  }
59
67
  };
60
68
  runGenNext(() => {
61
- console.log("runGenNext (backen) done");
62
- // runGenNuxt(()=>{
63
- console.log("runGenNuxt (frontend) done");
64
- generator.initialize(definationsFolder, backendFolder, frontendFolder);
65
- if (openapi3Yaml != '') {
66
- exec(`openapi-generator generate -i ${openapi3Yaml} -o ${frontendFolder}/server/openapi -g typescript-axios --skip-validate-spec`, (error, stdout, stderr) => {
67
- if (error) {
68
- console.error(stderr);
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":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,22 +1,34 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.readJsonSchemaBuilder = void 0;
4
7
  const libs_1 = require("../libs");
5
8
  const tslog_1 = require("tslog");
9
+ const json_schema_ref_parser_1 = __importDefault(require("@apidevtools/json-schema-ref-parser"));
10
+ const storage_1 = require("../storage");
6
11
  // import { ConflictException } from '@nestjs/common';
7
12
  const type_1 = require("../type");
8
13
  const log = new tslog_1.Logger();
9
14
  const FIELD_AUTOCOMPLETE_CODE = 'field-autocomplete-code';
10
15
  const FIELD_AUTOCOMPLETE_NAME = 'field-autocomplete-name';
16
+ const FOREIGNKEY_PROPERTY = 'x-foreignkey';
11
17
  let allmodels = {};
18
+ let fullschema = {};
12
19
  let fieldAutoCompleteCode = '';
13
20
  let fieldAutoCompleteName = '';
14
- const readJsonSchemaBuilder = (doctype, docname, jsondata) => {
21
+ const readJsonSchemaBuilder = async (doctype, docname, orijsondata, allforeignkeys) => {
15
22
  fieldAutoCompleteCode = '';
16
23
  fieldAutoCompleteName = '';
17
24
  allmodels = {};
18
- const validateddata = Object.assign({}, jsondata);
25
+ const validateddata = Object.assign({}, orijsondata);
19
26
  let schema;
27
+ const tmpjsondata = await json_schema_ref_parser_1.default.dereference(orijsondata).then((schema) => {
28
+ // console.log("schema",doctype, schema['properties']['category']? schema['properties']['category']:'')
29
+ return schema;
30
+ });
31
+ const jsondata = Object.assign({}, tmpjsondata);
20
32
  if (jsondata && jsondata.type == 'object') {
21
33
  //no _id then need add
22
34
  // console.log(jsondata)
@@ -34,7 +46,7 @@ const readJsonSchemaBuilder = (doctype, docname, jsondata) => {
34
46
  log.error(`you shall define 1 field with format: '${FIELD_AUTOCOMPLETE_NAME}'}`);
35
47
  throw "missing field format";
36
48
  }
37
- return allmodels;
49
+ return Promise.resolve(allmodels);
38
50
  };
39
51
  exports.readJsonSchemaBuilder = readJsonSchemaBuilder;
40
52
  const processObject = (doctype, docname, jsondata) => {
@@ -74,11 +86,29 @@ requiredlist) => {
74
86
  if (obj.format && obj.format == FIELD_AUTOCOMPLETE_NAME) {
75
87
  fieldAutoCompleteName = key;
76
88
  }
77
- if (obj.type == 'object' && !obj.properties) {
78
- console.log("Skip empty object", docname, ': ', key);
79
- newmodel[key] = 'Object';
80
- }
81
- else if (obj.type == 'object' && obj.properties) {
89
+ // if (obj.type == 'object' && obj.items ){
90
+ // console.log("Refer to another object",docname,': ',key,obj,obj.items)
91
+ // obj,obj.items
92
+ //foreignkeys
93
+ //FOREIGNKEY_PROPERTY
94
+ // newmodel[key] = 'Object';
95
+ // }
96
+ // else
97
+ if (obj.type == 'object') {
98
+ if (obj[FOREIGNKEY_PROPERTY]) {
99
+ console.warn("FOREIGNKEY_PROPERTY exists", FOREIGNKEY_PROPERTY, obj[FOREIGNKEY_PROPERTY]);
100
+ const masterdatacollection = obj[FOREIGNKEY_PROPERTY];
101
+ const clientdatacollection = docname.toLowerCase();
102
+ const foreignkeyidentity = key + '._id';
103
+ if (!storage_1.foreignkeys[masterdatacollection]) {
104
+ let tmp = {};
105
+ tmp[clientdatacollection] = [foreignkeyidentity];
106
+ storage_1.foreignkeys[masterdatacollection] = tmp;
107
+ }
108
+ else {
109
+ storage_1.foreignkeys[masterdatacollection][clientdatacollection].push(foreignkeyidentity);
110
+ }
111
+ }
82
112
  genSchema(newName, obj.type, obj.properties, obj.required);
83
113
  newmodel[key] = newName;
84
114
  }