@simitgroup/simpleapp-generator 1.0.33 → 1.0.35

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 (274) hide show
  1. package/.vscode/settings.json +3 -0
  2. package/README.md +185 -13
  3. package/buildinschemas copy/autoincreament.autoinc.jsonschema.json +39 -0
  4. package/buildinschemas copy/branch.branch.jsonschema.json +41 -0
  5. package/buildinschemas copy/docnoformat.docno.jsonschema.json +41 -0
  6. package/buildinschemas copy/organization.org.jsonschema.json +50 -0
  7. package/buildinschemas copy/permission.perm.jsonschema.json +23 -0
  8. package/buildinschemas copy/permission.perm.jsonschema.try.json +25 -0
  9. package/buildinschemas copy/tenant.tenant.jsonschema.json +21 -0
  10. package/buildinschemas copy/tenant.tenant.jsonschema.try.json +27 -0
  11. package/buildinschemas copy/user.user.jsonschema.json +31 -0
  12. package/dist/buildinschemas/autoincreament.d.ts +3 -0
  13. package/dist/buildinschemas/autoincreament.d.ts.map +1 -0
  14. package/dist/buildinschemas/autoincreament.js +36 -0
  15. package/dist/buildinschemas/autoincreament.js.map +1 -0
  16. package/dist/buildinschemas/branch.d.ts +3 -0
  17. package/dist/buildinschemas/branch.d.ts.map +1 -0
  18. package/dist/buildinschemas/branch.js +41 -0
  19. package/dist/buildinschemas/branch.js.map +1 -0
  20. package/dist/buildinschemas/docnoformat.d.ts +3 -0
  21. package/dist/buildinschemas/docnoformat.d.ts.map +1 -0
  22. package/dist/buildinschemas/docnoformat.js +60 -0
  23. package/dist/buildinschemas/docnoformat.js.map +1 -0
  24. package/dist/buildinschemas/index.d.ts +8 -0
  25. package/dist/buildinschemas/index.d.ts.map +1 -0
  26. package/dist/buildinschemas/index.js +18 -0
  27. package/dist/buildinschemas/index.js.map +1 -0
  28. package/dist/buildinschemas/organization.d.ts +3 -0
  29. package/dist/buildinschemas/organization.d.ts.map +1 -0
  30. package/dist/buildinschemas/organization.js +34 -0
  31. package/dist/buildinschemas/organization.js.map +1 -0
  32. package/dist/buildinschemas/permission.d.ts +3 -0
  33. package/dist/buildinschemas/permission.d.ts.map +1 -0
  34. package/dist/buildinschemas/permission.js +34 -0
  35. package/dist/buildinschemas/permission.js.map +1 -0
  36. package/dist/buildinschemas/tenant.d.ts +3 -0
  37. package/dist/buildinschemas/tenant.d.ts.map +1 -0
  38. package/dist/buildinschemas/tenant.js +41 -0
  39. package/dist/buildinschemas/tenant.js.map +1 -0
  40. package/dist/buildinschemas/user.d.ts +3 -0
  41. package/dist/buildinschemas/user.d.ts.map +1 -0
  42. package/dist/buildinschemas/user.js +31 -0
  43. package/dist/buildinschemas/user.js.map +1 -0
  44. package/dist/constant.d.ts +4 -0
  45. package/dist/constant.d.ts.map +1 -0
  46. package/dist/constant.js +2 -1
  47. package/dist/constant.js.map +1 -1
  48. package/dist/framework.d.ts +10 -0
  49. package/dist/framework.d.ts.map +1 -0
  50. package/dist/framework.js +119 -68
  51. package/dist/framework.js.map +1 -1
  52. package/dist/generate-allow-changebackend.js +305 -0
  53. package/dist/generate-allow-changebackend.js.map +1 -0
  54. package/dist/generate.d.ts +2 -0
  55. package/dist/generate.d.ts.map +1 -0
  56. package/dist/generate.js +307 -235
  57. package/dist/generate.js.map +1 -1
  58. package/dist/index.d.ts +3 -0
  59. package/dist/index.d.ts.map +1 -0
  60. package/dist/index.js +83 -20
  61. package/dist/index.js.map +1 -1
  62. package/dist/libs.d.ts +2 -0
  63. package/dist/libs.d.ts.map +1 -0
  64. package/dist/processors/groupsbuilder.js +2 -0
  65. package/dist/processors/groupsbuilder.js.map +1 -0
  66. package/dist/processors/jsonschemabuilder.d.ts +4 -0
  67. package/dist/processors/jsonschemabuilder.d.ts.map +1 -0
  68. package/dist/processors/jsonschemabuilder.js +146 -172
  69. package/dist/processors/jsonschemabuilder.js.map +1 -1
  70. package/dist/schematype/baseschema.js +25 -0
  71. package/dist/schematype/baseschema.js.map +1 -0
  72. package/dist/schematype/default.js +2 -0
  73. package/dist/schematype/default.js.map +1 -0
  74. package/dist/schematype/index.js +12 -0
  75. package/dist/schematype/index.js.map +1 -0
  76. package/dist/schematype/primarymasterdata.js +38 -0
  77. package/dist/schematype/primarymasterdata.js.map +1 -0
  78. package/dist/schematype/simple.js +24 -0
  79. package/dist/schematype/simple.js.map +1 -0
  80. package/dist/schematype/simplemasterdata.js +31 -0
  81. package/dist/schematype/simplemasterdata.js.map +1 -0
  82. package/dist/schematype/transaction.js +74 -0
  83. package/dist/schematype/transaction.js.map +1 -0
  84. package/dist/storage.d.ts +3 -0
  85. package/dist/storage.d.ts.map +1 -0
  86. package/dist/storage.js +2 -2
  87. package/dist/storage.js.map +1 -1
  88. package/dist/type.d.ts +164 -0
  89. package/dist/type.d.ts.map +1 -0
  90. package/dist/type.js +16 -1
  91. package/dist/type.js.map +1 -1
  92. package/dist/validation.d.ts +1 -0
  93. package/dist/validation.d.ts.map +1 -0
  94. package/package.json +3 -1
  95. package/src/buildinschemas/autoincreament.ts +34 -0
  96. package/src/buildinschemas/branch.ts +39 -0
  97. package/src/buildinschemas/docnoformat.ts +58 -0
  98. package/src/buildinschemas/index.ts +7 -0
  99. package/src/buildinschemas/organization.ts +31 -0
  100. package/src/buildinschemas/permission.ts +31 -0
  101. package/src/buildinschemas/tenant.ts +38 -0
  102. package/src/buildinschemas/user.ts +28 -0
  103. package/src/constant.ts +2 -1
  104. package/src/framework.ts +125 -67
  105. package/src/generate.ts +323 -274
  106. package/src/generate.ts.backup +339 -0
  107. package/src/index.ts +92 -18
  108. package/src/processors/jsonschemabuilder.ts +199 -226
  109. package/src/processors/jsonschemabuilder.ts-old +383 -0
  110. package/src/storage.ts +1 -1
  111. package/src/type.ts +94 -27
  112. package/templates/basic/nest/controller.ts.eta +255 -0
  113. package/templates/basic/nest/default.ts.eta +42 -0
  114. package/templates/basic/{model.eta → nest/model.ts.eta} +18 -5
  115. package/templates/basic/nest/processor.ts.eta +129 -0
  116. package/templates/basic/nest/service.ts.eta +64 -0
  117. package/templates/basic/{type.eta → nest/type.ts.eta} +3 -3
  118. package/templates/basic/nuxt/default.ts.eta +42 -0
  119. package/templates/basic/{pageindex.vue.eta → nuxt/pages.crud.vue.eta} +82 -20
  120. package/templates/basic/nuxt/simpleapp.doc.ts.eta +11 -0
  121. package/templates/basic/nuxt/simpleapp.generate.client.ts.eta +212 -0
  122. package/templates/nest/.env.eta +31 -0
  123. package/templates/nest/.gitignore.eta +40 -0
  124. package/templates/nest/src/app.controller.ts.eta +19 -0
  125. package/templates/nest/src/app.module.ts.eta +77 -0
  126. package/templates/nest/src/app.service.ts.eta +9 -0
  127. package/templates/nest/src/main.ts.eta +58 -0
  128. package/templates/nest/src/simpleapp/generate/apischemas/index.ts.eta +16 -0
  129. package/templates/nest/src/simpleapp/generate/commons/decorators/appuser.decorator.ts.eta +8 -0
  130. package/templates/nest/src/simpleapp/generate/commons/dicts/foreignkeys.ts.eta +1 -0
  131. package/templates/nest/src/simpleapp/generate/commons/docnogenerator.service.ts.eta +101 -0
  132. package/templates/nest/src/simpleapp/generate/commons/exceptions/SimpleAppExceptionFilter.ts.eta +39 -0
  133. package/templates/nest/src/simpleapp/generate/commons/interceptors/response.interceptor.ts.eta +38 -0
  134. package/templates/nest/src/simpleapp/generate/commons/middlewares/tenant.middleware.ts.eta +88 -0
  135. package/templates/nest/{Workflow.eta → src/simpleapp/generate/commons/providers/workflow.provider.ts.etax} +20 -14
  136. package/templates/nest/src/simpleapp/generate/commons/roles/roles.decorator.ts.eta +6 -0
  137. package/templates/nest/src/simpleapp/generate/commons/roles/roles.enum.ts.eta +28 -0
  138. package/templates/nest/src/simpleapp/generate/commons/roles/roles.group.ts.eta +10 -0
  139. package/templates/nest/src/simpleapp/generate/commons/roles/roles.guard.ts.eta +34 -0
  140. package/templates/nest/src/simpleapp/generate/commons/user.context.ts.eta +391 -0
  141. package/templates/nest/src/simpleapp/generate/controllers/simpleapp.controller.ts.eta +71 -0
  142. package/templates/nest/src/simpleapp/generate/models/perm.model.ts.eta +53 -0
  143. package/templates/nest/src/simpleapp/generate/models/tenant.model.ts.eta +45 -0
  144. package/templates/nest/src/simpleapp/generate/models/user.model.ts.eta +57 -0
  145. package/templates/nest/src/simpleapp/generate/processors/simpleapp.processor.ts.eta +624 -0
  146. package/templates/nest/src/simpleapp/generate/types/index.ts.eta +19 -0
  147. package/templates/nest/src/simpleapp/profile/profile.apischema.ts.eta +74 -0
  148. package/templates/nest/src/simpleapp/profile/profile.controller.ts.eta +110 -0
  149. package/templates/nest/src/simpleapp/profile/profile.service.ts.eta +195 -0
  150. package/templates/nest/src/simpleapp/profile/profile.types.ts.eta +18 -0
  151. package/templates/nest/src/simpleapp/services/autoinc.service.ts.eta +89 -0
  152. package/templates/nest/src/simpleapp/services/branch.service.ts.eta +66 -0
  153. package/templates/nest/src/simpleapp/services/docno.service.ts.eta +93 -0
  154. package/templates/nest/src/simpleapp/services/org.service.ts.eta +67 -0
  155. package/templates/nest/src/simpleapp/services/perm.service.ts.eta +102 -0
  156. package/templates/nest/src/simpleapp/services/tenant.service.ts.eta +69 -0
  157. package/templates/nest/src/simpleapp/services/user.service.ts.eta +66 -0
  158. package/templates/nest/src/simpleapp/simpleapp.module.ts.eta +43 -0
  159. package/templates/nuxt/.env.eta +21 -0
  160. package/templates/nuxt/.gitignore.eta +28 -0
  161. package/templates/nuxt/app.vue.eta +5 -2
  162. package/templates/nuxt/assets/css/tailwind.css.eta +35 -0
  163. package/templates/nuxt/components/CrudNestedDoc.vue.eta +164 -0
  164. package/templates/nuxt/components/CrudSimple.vue.eta +179 -0
  165. package/templates/nuxt/{components.debugdocdata.vue.eta → components/DebugDocumentData.vue.eta} +4 -1
  166. package/templates/nuxt/{components.eventmonitor.vue.eta → components/EventMonitor.vue.eta} +27 -27
  167. package/templates/nuxt/components/Invitation.vue.eta +50 -0
  168. package/templates/nuxt/{components.menus.vue.eta → components/Menus.vue.eta} +17 -15
  169. package/templates/nuxt/components/PermissionInfo.vue.eta +92 -0
  170. package/templates/nuxt/components/SimpleAppAutocomplete.vue.eta +131 -0
  171. package/templates/nuxt/components/SimpleAppAutocompletemulti.vue.eta +73 -0
  172. package/templates/nuxt/components/SimpleAppCalendar.vue.eta +55 -0
  173. package/templates/nuxt/components/SimpleAppCheckbox.vue.eta +29 -0
  174. package/templates/nuxt/components/SimpleAppChip.vue.eta +28 -0
  175. package/templates/nuxt/components/SimpleAppColor.vue.eta +41 -0
  176. package/templates/nuxt/components/SimpleAppDatatable.vue.eta +20 -0
  177. package/templates/nuxt/components/SimpleAppDocumentNo.vue.eta +90 -0
  178. package/templates/nuxt/components/SimpleAppDynamicInput.vue.eta +29 -0
  179. package/templates/nuxt/components/SimpleAppEditor.vue.eta +31 -0
  180. package/templates/nuxt/components/SimpleAppForm.vue.eta +131 -0
  181. package/templates/nuxt/components/SimpleAppInputTable.vue.eta +104 -0
  182. package/templates/nuxt/components/SimpleAppList.vue.eta +38 -0
  183. package/templates/nuxt/components/SimpleAppListmulti.vue.eta +41 -0
  184. package/templates/nuxt/components/SimpleAppNumber.vue.eta +32 -0
  185. package/templates/nuxt/components/SimpleAppPassword.vue.eta +41 -0
  186. package/templates/nuxt/components/SimpleAppRadio.vue.eta +42 -0
  187. package/templates/nuxt/components/SimpleAppRating.vue.eta +41 -0
  188. package/templates/nuxt/components/SimpleAppSelect.vue.eta +38 -0
  189. package/templates/nuxt/components/SimpleAppSelectmulti.vue.eta +39 -0
  190. package/templates/nuxt/components/SimpleAppSlider.vue.eta +42 -0
  191. package/templates/nuxt/components/SimpleAppSwitch.vue.eta +30 -0
  192. package/templates/nuxt/components/SimpleAppText.vue.eta +50 -0
  193. package/templates/nuxt/components/SimpleAppTextarea.vue.eta +30 -0
  194. package/templates/nuxt/components/SimpleAppValue.vue.eta +86 -0
  195. package/templates/nuxt/components/SimpleFieldContainer.vue.eta +102 -0
  196. package/templates/nuxt/components/XorgPicker.vue.eta +66 -0
  197. package/templates/nuxt/components/helper.ts.eta +90 -0
  198. package/templates/nuxt/components/type.ts.eta +32 -0
  199. package/templates/nuxt/composables/docformat.generate.ts.eta +5 -0
  200. package/templates/nuxt/{composables.getautocomplete.ts.eta → composables/getAutocomplete.generate.ts.eta} +4 -5
  201. package/templates/nuxt/{composables.getmenus.ts.eta → composables/getMenus.generate.ts.eta} +22 -7
  202. package/templates/nuxt/composables/getOpenApi.generate.ts.eta +6 -0
  203. package/templates/nuxt/composables/getTenant.generate.ts.eta +4 -0
  204. package/templates/nuxt/composables/getUserStore.generate.ts.eta +22 -0
  205. package/templates/nuxt/composables/logout.generate.ts.eta +22 -0
  206. package/templates/nuxt/composables/roles.generate.ts.eta +48 -0
  207. package/templates/nuxt/{layouts.default.vue.eta → layouts/default.vue.eta} +2 -0
  208. package/templates/nuxt/middleware/10.acl.global.ts.eta +38 -0
  209. package/templates/nuxt/nuxt.config.ts.eta +11 -1
  210. package/templates/nuxt/pages/[xorg]/branch/index.vue.eta +102 -0
  211. package/templates/nuxt/pages/[xorg]/docnoformat/[id].vue.eta +17 -0
  212. package/templates/nuxt/pages/[xorg]/docnoformat/index.vue.eta +269 -0
  213. package/templates/nuxt/pages/[xorg]/index.vue.eta +36 -0
  214. package/templates/nuxt/pages/[xorg]/organization/index.vue.eta +148 -0
  215. package/templates/nuxt/pages/[xorg]/permission/index.vue.eta +280 -0
  216. package/templates/nuxt/pages/[xorg]/tenant/index.vue.eta +93 -0
  217. package/templates/nuxt/pages/[xorg]/user/index.vue.eta +468 -0
  218. package/templates/nuxt/pages/index.vue.eta +191 -0
  219. package/templates/nuxt/pages/login.vue.eta +21 -0
  220. package/templates/nuxt/plugins/10.simpleapp-event.ts.eta +53 -0
  221. package/templates/nuxt/plugins/20.simpleapp-userstore.ts.eta +155 -0
  222. package/templates/nuxt/plugins/50.simpleapp-client.ts.eta +23 -0
  223. package/templates/nuxt/{server.api.ts.eta → server/api/[xorg]/[...].ts.eta} +5 -2
  224. package/templates/nuxt/server/api/auth/[...].ts.eta +68 -0
  225. package/templates/nuxt/{server.api.auth.logout.ts.eta → server/api/auth/logout.ts.eta} +1 -3
  226. package/templates/nuxt/server/api/profile/[...].ts.eta +150 -0
  227. package/templates/nuxt/server/api/profile/index.ts.eta +103 -0
  228. package/templates/nuxt/simpleapp/generate/clients/SimpleAppClient.ts.eta +187 -0
  229. package/templates/nuxt/simpleapp/generate/commons/documents.ts.eta +6 -0
  230. package/templates/nuxt/simpleapp/generate/commons/events.ts.eta +5 -0
  231. package/templates/nuxt/simpleapp/generate/commons/groups.ts.eta +11 -0
  232. package/templates/nuxt/simpleapp/generate/commons/roles.ts.eta +21 -0
  233. package/templates/nuxt/types/index.ts.eta +65 -0
  234. package/templates/project/README.md +11 -0
  235. package/templates/project/build.sh.eta +17 -0
  236. package/templates/project/config.json.eta +2 -0
  237. package/templates/project/generate.ts.eta +10 -0
  238. package/templates/project/schemas/category.ts.eta +26 -0
  239. package/templates/project/schemas/index.ts.eta +5 -0
  240. package/templates/project/schemas/product.ts.eta +59 -0
  241. package/templates/project/shares/hello.ts.eta +1 -0
  242. package/templates/project/shares/index.ts.eta +2 -0
  243. package/tsconfig.json +9 -2
  244. package/tsconfig.tsbuildinfo +1 -0
  245. package/definations/category.cat.jsonschema.json +0 -55
  246. package/definations/level.lvl.jsonschema.json +0 -48
  247. package/definations/product.prd.jsonschema.json +0 -46
  248. package/templates/basic/controller.eta +0 -152
  249. package/templates/basic/module.eta +0 -22
  250. package/templates/basic/service.eta +0 -47
  251. package/templates/basic/simpleappclient.eta +0 -123
  252. package/templates/nest/SimpleAppController.eta +0 -69
  253. package/templates/nest/SimpleAppService.eta +0 -391
  254. package/templates/nest/TenantMiddleware.eta +0 -34
  255. package/templates/nest/UserProvider.eta +0 -127
  256. package/templates/nest/app.controller.eta +0 -12
  257. package/templates/nest/app.module.eta +0 -64
  258. package/templates/nest/app.service.eta +0 -8
  259. package/templates/nest/inputvalidation-exception.eta +0 -6
  260. package/templates/nest/nest.env.eta +0 -28
  261. package/templates/nest/nest.main.eta +0 -31
  262. package/templates/nuxt/components.crudsimple.vue.eta +0 -124
  263. package/templates/nuxt/env.eta +0 -17
  264. package/templates/nuxt/pages.[xorg].index.vue.eta +0 -23
  265. package/templates/nuxt/pages.index.vue.eta +0 -69
  266. package/templates/nuxt/pages.login.vue.eta +0 -20
  267. package/templates/nuxt/plugins.simpleapp.ts.eta +0 -97
  268. package/templates/nuxt/server.api.auth[...].ts.eta +0 -233
  269. package/templates/nuxt/tailwind.css.eta +0 -49
  270. /package/templates/basic/{apischema.eta → nest/apischema.ts.eta} +0 -0
  271. /package/templates/basic/{jsonschema.eta → nest/jsonschema.ts.eta} +0 -0
  272. /package/templates/basic/{pageindexwithid.vue.eta → nuxt/pages.[id].vue.eta} +0 -0
  273. /package/templates/nest/{oauth2-redirect.eta → public_html/oauth2-redirect.html.eta} +0 -0
  274. /package/templates/nuxt/{composables.stringHelper.ts.eta → composables/stringHelper.generate.ts.eta} +0 -0
package/dist/generate.js CHANGED
@@ -22,10 +22,11 @@ var __importStar = (this && this.__importStar) || function (mod) {
22
22
  __setModuleDefault(result, mod);
23
23
  return result;
24
24
  };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
25
28
  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
+ exports.run = void 0;
29
30
  const constants = __importStar(require("./constant"));
30
31
  const jsonschemabuilder_1 = require("./processors/jsonschemabuilder");
31
32
  const storage_1 = require("./storage");
@@ -34,262 +35,333 @@ const log = new tslog_1.Logger();
34
35
  const clc = require("cli-color");
35
36
  const path = require('path');
36
37
  const fs_1 = require("fs");
38
+ const lodash_1 = __importDefault(require("lodash"));
39
+ const buildinschemas = __importStar(require("./buildinschemas"));
37
40
  const { Eta } = require('eta');
38
41
  const { capitalizeFirstLetter } = require('./libs');
39
42
  const X_DOCUMENT_TYPE = 'x-document-type';
40
43
  const X_DOCUMENT_NAME = 'x-document-name';
41
44
  const X_COLLECTION_NAME = 'x-collection-name';
45
+ const X_PAGE_TYPE = 'x-page-type';
42
46
  const extFb = '.xfb.json';
43
47
  const extHfb = '.xhfb.json';
44
48
  const extjsonschema = '.jsonschema.json';
49
+ const extgroups = '.group.json';
45
50
  let jsonschemas = {};
51
+ let configs = {};
46
52
  const docs = [];
47
- const initialize = async (defFolder, bpmnFolder, backendfolder, frontendfolder, callback) => {
48
- prepareEnvironments(backendfolder, frontendfolder);
49
- let activatemodules = [];
53
+ let frontendFolder = '';
54
+ let backendFolder = '';
55
+ let frontendpagefolder = '';
56
+ const allroles = {};
57
+ let activatemodules = [];
58
+ let generateTypes = {};
59
+ const run = async (paraconfigs, genFor, callback) => {
60
+ configs = paraconfigs;
61
+ frontendFolder = configs.frontendFolder;
62
+ backendFolder = configs.backendFolder;
63
+ const groupFolder = configs.groupFolder;
64
+ if (genFor.includes('nest')) {
65
+ generateTypes['nest'] = backendFolder;
66
+ }
67
+ if (genFor.includes('nuxt')) {
68
+ generateTypes['nuxt'] = frontendFolder;
69
+ }
70
+ // console.log("genForgenForgenForgenFor",genFor,generateTypes)
50
71
  //
51
- /*
52
- load available bpmn into array
53
- */
54
- const files = (0, fs_1.readdirSync)(defFolder);
55
- // log.warn("all schemas:",files)
56
- // readdir(defFolder, (err, files) => {
57
- // files.forEach((file) => {
72
+ frontendpagefolder = `${frontendFolder}/pages/[xorg]`;
73
+ const buildinschemanames = Object.keys(buildinschemas);
74
+ for (let i = 0; i < buildinschemanames.length; i++) {
75
+ const schemaname = buildinschemanames[i];
76
+ // .forEach(async(schemaname)=>{
77
+ const cloneschema = Object.assign({}, buildinschemas[schemaname]);
78
+ // console.log("=====>>>>>",schemaname,cloneschema)
79
+ await processSchema(schemaname, cloneschema);
80
+ }
81
+ // console.log('jsonschemasjsonschemasjsonschemasjsonschemas',jsonschemas)
82
+ // const buildinschemas = readdirSync(constants.buildinschemafolder)
83
+ // for(let i = 0; i< buildinschemas.length;i++){
84
+ // const file = buildinschemas[i]
85
+ // await processSchema(file,constants.buildinschemafolder)
86
+ // }
87
+ // load available bpmn into array
88
+ // const files = readdirSync(configs.jsonschemaFolder)
89
+ // for(let i = 0; i< files.length;i++){
90
+ // const file = files[i]
91
+ // await processSchema(file,constants.buildinschemafolder)
92
+ // }
93
+ // const schemapath = process.cwd()+'/'+ configs.jsonschemaFolder
94
+ // console.log("dynamic import" ,schemapath)
95
+ // const {category} = require(schemapath)
96
+ // const schemas = await import('/Users/kstan/dev/products/simtrain-next/project-design/jsonschemas');
97
+ // console.log(schemas)
98
+ // const schemanames = Object.keys(schemas)
99
+ // for(let i=0; i<schemanames.length;i++){
100
+ // const schemaname = schemanames[i]
101
+ // .forEach(async(schemaname)=>{
102
+ // const cloneschema:JSONSchema7 = {...buildinschemas[schemaname]}
103
+ // console.log("=====>>>>>",schemaname,cloneschema)
104
+ // await processSchema(schemaname,cloneschema)
105
+ // }
106
+ //
107
+ const files = (0, fs_1.readdirSync)(configs.jsonschemaFolder);
58
108
  for (let j = 0; j < files.length; j++) {
59
109
  const file = files[j];
60
- log.info(`Load ` + clc.green(file));
61
- const filearr = file.split('.');
62
- let rendertype = 'basic';
63
- let docname = filearr[0].toLowerCase();
64
- let doctype = filearr[1].toLowerCase();
65
- const jsonstring = (0, fs_1.readFileSync)(defFolder + path.sep + file, 'utf-8');
66
- let allmodels = {};
67
- if (file.endsWith(extjsonschema)) {
68
- const jsondata = JSON.parse(jsonstring);
69
- rendertype = 'basic';
70
- jsonschemas[docname] = jsondata;
71
- // foreignkeys:
72
- // tmpforeignkeys:TypeForeignKey
73
- allmodels = await (0, jsonschemabuilder_1.readJsonSchemaBuilder)(doctype, docname, jsondata, storage_1.foreignkeys);
74
- //foreignkeycatalogues
75
- // foreignkeys
76
- generate(docname, doctype, rendertype, allmodels, backendfolder, frontendfolder);
77
- activatemodules.push({ doctype: doctype, docname: capitalizeFirstLetter(docname) });
78
- }
79
- else {
80
- log.warn(`Load ` + clc.yellow(file) + ` but it is not supported`);
81
- }
110
+ const jsoncontent = (0, fs_1.readFileSync)(`${configs.jsonschemaFolder}/${file}`, 'utf-8');
111
+ const jsonschema = JSON.parse(jsoncontent);
112
+ await processSchema(file, jsonschema);
82
113
  }
83
- // log.warn("foreignkeys---",foreignkeys)
84
- log.info("Activated backend modules: ", JSON.stringify(activatemodules));
85
- // log.info(activatemodules)
86
- finalize(activatemodules, backendfolder, frontendfolder);
114
+ // //generate groups
115
+ // const systemgroups = readdirSync(`${groupFolder}`)
116
+ // for(let g = 0; g< systemgroups.length;g++){
117
+ // const groupfile = systemgroups[g]
118
+ // const groupjsonstr = readFileSync(`${groupFolder}/${groupfile}`, 'utf-8');
119
+ // const groupdata = JSON.parse(groupjsonstr);
120
+ // const documentname = groupfile.split('.')[0]
121
+ // const roles = prepareRoles(groupdata)
122
+ // allroles[documentname]=roles
123
+ // }
124
+ finalize(activatemodules);
87
125
  callback();
88
126
  };
89
- exports.initialize = initialize;
90
- const generate = (docname, doctype, rendertype, allmodels, backendfolder, frontendfolder) => {
91
- const targetfolder = `${backendfolder}/src/docs/${doctype}`;
92
- const frontendpagefolder = `${frontendfolder}/pages/[xorg]`;
93
- try {
94
- (0, fs_1.mkdirSync)(targetfolder, { recursive: true });
95
- (0, fs_1.mkdirSync)(`${frontendfolder}/simpleapp/simpleappdocs/`, { recursive: true });
96
- (0, fs_1.mkdirSync)(frontendpagefolder, { recursive: true });
97
- }
98
- catch (err) {
99
- //do nothing if folder exists
100
- }
101
- finally {
102
- const templatefolder = `${constants.templatedir}/${rendertype}`;
103
- log.info(`- Generate ${docname}, ${doctype}, ${templatefolder}`);
104
- const eta = new Eta({
105
- views: templatefolder,
106
- functionHeader: 'const capitalizeFirstLetter = (str) => str.slice(0, 1).toUpperCase() + str.slice(1);' +
107
- 'const initType=(str)=>{return ["string","number","boolean","array","object"].includes(str) ? capitalizeFirstLetter(str) : str;}',
108
- });
109
- const variables = {
110
- name: docname,
111
- doctype: doctype,
112
- models: allmodels,
113
- autocompletecode: allmodels[capitalizeFirstLetter(docname)].codeField,
114
- autocompletename: allmodels[capitalizeFirstLetter(docname)].nameField,
115
- moreAutoComplete: allmodels[capitalizeFirstLetter(docname)].moreAutoComplete,
116
- schema: allmodels[capitalizeFirstLetter(docname)].model,
117
- apiSchemaName: capitalizeFirstLetter(docname),
118
- typename: capitalizeFirstLetter(docname),
119
- fullApiSchemaName: doctype + 'apischema.' + capitalizeFirstLetter(docname),
120
- fullTypeName: doctype + 'type.' + capitalizeFirstLetter(docname),
121
- jsonschema: jsonschemas[docname],
122
- bothEndCode: '',
123
- frontEndCode: '',
124
- backEndCode: '',
125
- controllerCode: '',
126
- apiSchemaCode: '',
127
- docStatusSettings: allmodels[capitalizeFirstLetter(docname)].docStatusSettings,
128
- apiSettings: allmodels[capitalizeFirstLetter(docname)].apiSettings,
129
- requireautocomplete: allmodels[capitalizeFirstLetter(docname)].requireautocomplete,
130
- isolationtype: allmodels[capitalizeFirstLetter(docname)].isolationtype
131
- };
132
- // console.log('generate 2', JSON.stringify(variables));
133
- // // const txtUISchema = eta.render('./uischema', variables);
134
- // console.log('generate 4');
135
- // console.log('generate 2', variables);
136
- const txtType = eta.render('./type', variables);
137
- (0, fs_1.writeFileSync)(`${targetfolder}/${doctype}.type.ts`, txtType);
138
- // compile(jsonschemas[docname], docname).then((txtType: string) => {
139
- // writeFileSync(`${targetfolder}/${doctype}.type.ts`, txtType);
140
- // });
141
- // generate jsonschema object, use for data validation
142
- const txtJsonSchema = eta.render('./jsonschema', variables);
143
- (0, fs_1.writeFileSync)(`${targetfolder}/${doctype}.jsonschema.ts`, txtJsonSchema);
144
- // generate before save source code, wont override after regenerate
145
- // const customizefilename = `${targetfolder}/${doctype}.beforesave.ts`;
146
- // if (!existsSync(customizefilename)) {
147
- // const txtBeforeSave = eta.render('./beforesave', variables);
148
- // writeFileSync(
149
- // `${targetfolder}/${doctype}.beforesave.ts`,
150
- // txtBeforeSave,
151
- // );
152
- // }
153
- // write mongoose model file
154
- const txtModel = eta.render('./model', variables);
155
- (0, fs_1.writeFileSync)(`${targetfolder}/${doctype}.model.ts`, txtModel);
156
- // prepare openapi schema
157
- const apischemafile = `${targetfolder}/${doctype}.apischema.ts`;
158
- if ((0, fs_1.existsSync)(apischemafile)) {
159
- const apischemaCode = (0, fs_1.readFileSync)(apischemafile).toString();
160
- const regexapischema = /\/\/<begin-apischema-code>([\s\S]*?)\/\/<end-apischema-code>/g;
161
- const apischemaresult = apischemaCode.match(regexapischema);
162
- if (apischemaresult) {
163
- variables.apiSchemaCode = apischemaresult[0];
164
- }
165
- else {
166
- variables.apiSchemaCode = "//<begin-apischema-code>\n//<end-apischema-code>";
167
- }
168
- }
169
- const txtApiSchema = eta.render('./apischema', variables);
170
- (0, fs_1.writeFileSync)(apischemafile, txtApiSchema);
171
- // prepare backend classes
172
- // prepare frontend api client
173
- const servicefile = `${targetfolder}/${doctype}.service.ts`;
174
- let bothEndCode = '';
175
- let backEndCode = '';
176
- if ((0, fs_1.existsSync)(servicefile)) {
177
- const servicecodes = (0, fs_1.readFileSync)(servicefile).toString();
178
- /* extract string bothend and backend, put in back */
179
- const regex1 = /\/\/<begin-bothend-code>([\s\S]*?)\/\/<end-bothend-code>/g;
180
- const regex2 = /\/\/<begin-backend-code>([\s\S]*?)\/\/<end-backend-code>/g;
181
- const bothendresult = servicecodes.match(regex1);
182
- const backendresult = servicecodes.match(regex2);
183
- console.log("bothendresult", bothendresult);
184
- console.log("backendresult", backendresult);
185
- if (bothendresult) {
186
- variables.bothEndCode = bothendresult[0];
187
- }
188
- else {
189
- variables.bothEndCode = "//<begin-bothend-code>\n//<end-bothend-code>";
127
+ exports.run = run;
128
+ // const processSchema=async (file:string,defFolder:string)=>{
129
+ const processSchema = async (schemaname, jsondata) => {
130
+ var _a;
131
+ // console.log(file,defFolder)
132
+ // const filearr = file.split('.');
133
+ // let rendertype = 'basic';
134
+ // let docname = filearr[0].toLowerCase();
135
+ // let doctype = filearr[1].toLowerCase();
136
+ const config = jsondata['x-simpleapp-config'];
137
+ let doctype = config.documentType;
138
+ let docname = config.documentName;
139
+ // const jsonstring = readFileSync(defFolder +path.sep+ file, 'utf-8');
140
+ // if (file.endsWith('.ts')) {
141
+ // log.info(`Load `+clc.green(file))
142
+ // const filepath = `${defFolder}/${file.replace('.ts','')}`
143
+ // console.log(filepath)
144
+ // const jsondata = require(filepath)
145
+ // console.log(jsondata)
146
+ // const jsondata = JSON.parse(jsonstring);
147
+ const rendertype = 'basic';
148
+ jsonschemas[docname] = jsondata;
149
+ const allmodels = await (0, jsonschemabuilder_1.readJsonSchemaBuilder)(docname, jsondata);
150
+ console.log("allmodels", docname, allmodels);
151
+ generateSchema(docname, doctype, rendertype, allmodels);
152
+ activatemodules.push({
153
+ doctype: doctype,
154
+ docname: capitalizeFirstLetter(docname),
155
+ pagetype: (_a = config.pageType) !== null && _a !== void 0 ? _a : '',
156
+ api: config.additionalApis
157
+ });
158
+ // } else {
159
+ // log.warn(`Load `+clc.yellow(file) + ` but it is not supported`)
160
+ // }
161
+ };
162
+ /**
163
+ * generate frontend nuxt and backend nest codes.
164
+ *
165
+ */
166
+ const generateSchema = (docname, doctype, rendertype, allmodels) => {
167
+ var _a, _b, _c, _d, _e, _f;
168
+ const simpleapptemplates = `${constants.templatedir}/basic`;
169
+ const finalizefolder = `${constants.templatedir}/nest`;
170
+ const modelname = lodash_1.default.upperFirst(docname);
171
+ const currentmodel = allmodels[modelname];
172
+ //console.log("---^^^^^------",modelname,docname, doctype, rendertype,currentmodel,allmodels)
173
+ const variables = {
174
+ name: docname,
175
+ doctype: doctype,
176
+ models: allmodels,
177
+ autocompletecode: (_a = currentmodel.codeField) !== null && _a !== void 0 ? _a : '',
178
+ autocompletename: (_b = currentmodel.nameField) !== null && _b !== void 0 ? _b : '',
179
+ moreAutoComplete: (_c = currentmodel.moreAutoComplete) !== null && _c !== void 0 ? _c : [],
180
+ schema: currentmodel.model,
181
+ apiSchemaName: capitalizeFirstLetter(docname),
182
+ typename: capitalizeFirstLetter(docname),
183
+ fullApiSchemaName: doctype + 'apischema.' + capitalizeFirstLetter(docname),
184
+ fullTypeName: doctype + 'type.' + capitalizeFirstLetter(docname),
185
+ jsonschema: jsonschemas[docname],
186
+ bothEndCode: '',
187
+ frontEndCode: '',
188
+ backEndCode: '',
189
+ controllerCode: '',
190
+ apiSchemaCode: '',
191
+ docStatusSettings: (_d = currentmodel.docStatusSettings) !== null && _d !== void 0 ? _d : [],
192
+ apiSettings: (_e = currentmodel.apiSettings) !== null && _e !== void 0 ? _e : [],
193
+ isolationtype: currentmodel.isolationtype,
194
+ hasdocformat: currentmodel.hasdocformat,
195
+ foreignkeys: (_f = currentmodel.foreignkeys) !== null && _f !== void 0 ? _f : {}
196
+ };
197
+ const templatefolder = `${constants.templatedir}/${rendertype}`;
198
+ log.info(`- Generate ${docname}, ${doctype}, ${templatefolder}`);
199
+ const eta = new Eta({
200
+ views: '/',
201
+ functionHeader: 'const capitalizeFirstLetter = (str) => str.slice(0, 1).toUpperCase() + str.slice(1);' +
202
+ 'const initType=(str)=>{return ["string","number","boolean","array","object"].includes(str) ? capitalizeFirstLetter(str) : str;}',
203
+ });
204
+ const backendTargetFolder = `${backendFolder}/src/simpleapp/generate`;
205
+ const backendServiceFolder = `${backendFolder}/src/simpleapp/services`;
206
+ Object.keys(generateTypes).forEach((foldertype) => {
207
+ //generate code for every schema
208
+ const generateTemplatefolder = `${constants.templatedir}/basic/${foldertype}`;
209
+ const allfiles = (0, fs_1.readdirSync)(generateTemplatefolder, { recursive: true });
210
+ for (let j = 0; j < allfiles.length; j++) {
211
+ const filename = String(allfiles[j]);
212
+ const templatepath = `${generateTemplatefolder}/${filename}`;
213
+ if (lodash_1.default.last(filename.split('.')) != 'eta') {
214
+ log.warn("skip file: ", filename);
215
+ continue;
190
216
  }
191
- if (backendresult) {
192
- variables.backEndCode = backendresult[0];
217
+ if (foldertype == 'nest') {
218
+ const arrfilename = filename.split('.');
219
+ const filecategory = arrfilename[0];
220
+ const filetype = arrfilename[1];
221
+ const autogeneratetypes = ['apischema', 'controller', 'jsonschema', 'model', 'processor', 'type', 'default'];
222
+ if (autogeneratetypes.includes(filecategory)) {
223
+ //multiple files in folder, append s at folder name
224
+ const storein = `${backendTargetFolder}/${filecategory}s`;
225
+ const targetfile = `${storein}/${doctype}.${filecategory}.${filetype}`;
226
+ if (!(0, fs_1.existsSync)(storein)) {
227
+ (0, fs_1.mkdirSync)(storein, { recursive: true });
228
+ }
229
+ const filecontent = eta.render(templatepath, variables);
230
+ (0, fs_1.writeFileSync)(targetfile, filecontent);
231
+ }
232
+ else if (filecategory == 'service') { //service file won't override if exists
233
+ const targetfile = `${backendServiceFolder}/${doctype}.${filecategory}.${filetype}`;
234
+ if (!(0, fs_1.existsSync)(backendServiceFolder)) {
235
+ (0, fs_1.mkdirSync)(backendServiceFolder, { recursive: true });
236
+ }
237
+ if (!(0, fs_1.existsSync)(targetfile)) {
238
+ const filecontent = eta.render(templatepath, variables);
239
+ (0, fs_1.writeFileSync)(targetfile, filecontent);
240
+ }
241
+ }
193
242
  }
194
- else {
195
- variables.backEndCode = "//<begin-backend-code>\n//<end-backend-code>";
243
+ else if (foldertype == 'nuxt') {
244
+ const capname = capitalizeFirstLetter(docname);
245
+ const validateWritePage = (folder, isexists) => {
246
+ if (!jsonschemas[docname][X_PAGE_TYPE]) {
247
+ return false;
248
+ }
249
+ else if (!isexists) {
250
+ return true;
251
+ }
252
+ else if ((0, fs_1.existsSync)(`${folder}/delete-me.txt`)) {
253
+ return true;
254
+ }
255
+ else {
256
+ return false;
257
+ }
258
+ };
259
+ const mapfiles = {
260
+ 'pages.[id].vue.eta': {
261
+ to: `pages/[xorg]/${docname}`,
262
+ as: '[id].vue',
263
+ validate: validateWritePage
264
+ },
265
+ 'pages.crud.vue.eta': {
266
+ to: `pages/[xorg]/${docname}`,
267
+ as: 'index.vue',
268
+ validate: validateWritePage
269
+ },
270
+ 'simpleapp.doc.ts.eta': {
271
+ to: `simpleapp/docs`,
272
+ as: `${capname}Doc.ts`,
273
+ validate: (folder, isexists) => !isexists
274
+ },
275
+ 'default.ts.eta': {
276
+ to: `simpleapp/generate/defaults`,
277
+ as: `${capname}.default.ts`,
278
+ validate: (folder, isexists) => {
279
+ return true;
280
+ }
281
+ },
282
+ 'simpleapp.generate.client.ts.eta': {
283
+ to: `simpleapp/generate/clients`,
284
+ as: `${capname}Client.ts`,
285
+ validate: (folder, isexists) => {
286
+ return true;
287
+ }
288
+ },
289
+ };
290
+ const target = mapfiles[filename];
291
+ const targetfolder = `${generateTypes[foldertype]}/${target.to}`;
292
+ const targetfile = `${targetfolder}/${target.as}`;
293
+ const isexists = (0, fs_1.existsSync)(targetfile);
294
+ const iswrite = target.validate(targetfolder, isexists);
295
+ log.warn("process: ", filename, '---->', targetfile);
296
+ if (iswrite && !(0, fs_1.existsSync)(targetfolder)) {
297
+ (0, fs_1.mkdirSync)(targetfolder, { recursive: true });
298
+ (0, fs_1.writeFileSync)(`${targetfolder}/delete-me.txt`, "delete this file for keep modified page");
299
+ }
300
+ // if(
301
+ // target.override=="always" ||
302
+ // !existsSync(targetfile) ||
303
+ // (target.override=="check" && existsSync(`${targetfolder}/delete-me.txt`))
304
+ // ){
305
+ if (iswrite) {
306
+ const filecontent = eta.render(templatepath, variables);
307
+ (0, fs_1.writeFileSync)(targetfile, filecontent);
308
+ }
196
309
  }
197
310
  }
198
- const txtService = eta.render('./service', variables);
199
- (0, fs_1.writeFileSync)(`${targetfolder}/${doctype}.service.ts`, txtService);
200
- // prepare api router, allow add more api and wont override after regenerate
201
- const controllerfile = `${targetfolder}/${doctype}.controller.ts`;
202
- let controllerCode = '';
203
- if ((0, fs_1.existsSync)(controllerfile)) {
204
- /* extract customized controller, put in back */
205
- const controllersourcecodes = (0, fs_1.readFileSync)(controllerfile).toString();
206
- const controllerregex = /\/\/<begin-controller-code>([\s\S]*?)\/\/<end-controller-code>/g;
207
- const controllerresult = controllersourcecodes.match(controllerregex);
208
- if (controllerresult) {
209
- controllerCode = controllerresult[0];
311
+ });
312
+ };
313
+ const finalize = (modules) => {
314
+ const renderProperties = {
315
+ configs: configs,
316
+ modules: modules,
317
+ allroles: allroles,
318
+ foreignkeys: storage_1.allforeignkeys,
319
+ };
320
+ Object.getOwnPropertyNames(generateTypes).forEach((foldertype) => {
321
+ const frameworkpath = generateTypes[foldertype];
322
+ log.info("Generate ", foldertype);
323
+ const frameworkfolder = `${constants.templatedir}/${foldertype}`;
324
+ const frameworkfiles = (0, fs_1.readdirSync)(frameworkfolder, { recursive: true });
325
+ const eta = new Eta({ views: frameworkfolder });
326
+ //generate code for framework
327
+ for (let index = 0; index < frameworkfiles.length; index++) {
328
+ const longfilename = String(frameworkfiles[index]);
329
+ const patharr = longfilename.split('/');
330
+ const filename = lodash_1.default.last(patharr);
331
+ const arrfilename = filename.split('.');
332
+ // log.info("check longfilename:::",longfilename,"become====",arrfilename)
333
+ //only process .eta
334
+ if (lodash_1.default.last(arrfilename) == 'eta') {
335
+ const relativepath = longfilename.includes('/') ? longfilename.replace(`/${filename}`, '') : '';
336
+ const foldername = `${frameworkpath}/${relativepath}`;
337
+ const shortfilename = filename.replace('.eta', '');
338
+ const targetfilename = `${foldername}/${shortfilename}`;
339
+ if (!(0, fs_1.existsSync)(foldername)) {
340
+ (0, fs_1.mkdirSync)(foldername, { recursive: true });
341
+ }
342
+ const templatename = `${frameworkfolder}/${longfilename}`.replace(".eta", "");
343
+ log.info("Write template:", templatename, '----> ', targetfilename);
344
+ const txt = eta.render(longfilename, renderProperties);
345
+ (0, fs_1.writeFileSync)(targetfilename, txt);
210
346
  }
211
- }
212
- variables.controllerCode = controllerCode != '' ? controllerCode : "\n//<begin-controller-code>\n//<end-controller-code>";
213
- const txtController = eta.render('./controller', variables);
214
- (0, fs_1.writeFileSync)(controllerfile, txtController);
215
- // prepare module
216
- const txtModule = eta.render('./module', variables);
217
- (0, fs_1.writeFileSync)(`${targetfolder}/${doctype}.module.ts`, txtModule);
218
- // prepare readme
219
- // const txtReadme = eta.render('./readme', variables);
220
- // writeFileSync(`${targetfolder}/README.md`, txtReadme);
221
- const frontendfile = `${frontendfolder}/simpleapp/simpleappdocs/${variables.typename}Doc.ts`;
222
- let frontEndCode = '';
223
- if ((0, fs_1.existsSync)(frontendfile)) {
224
- const clientcodes = (0, fs_1.readFileSync)(frontendfile).toString();
225
- /* extract string frontend code, put in back */
226
- const regex3 = /\/\/<begin-frontend-code>([\s\S]*?)\/\/<end-frontend-code>/g;
227
- const frontendresult = clientcodes.match(regex3);
228
- if (frontendresult) {
229
- frontEndCode = frontendresult[0];
347
+ else {
348
+ log.warn("skip: ", longfilename);
230
349
  }
231
350
  }
232
- variables.frontEndCode = frontEndCode !== null && frontEndCode !== void 0 ? frontEndCode : '';
233
- const txtDocClient = eta.render('./simpleappclient.eta', variables);
234
- (0, fs_1.writeFileSync)(frontendfile, txtDocClient);
235
- generateClientPage(variables, eta, frontendpagefolder);
236
- log.info(`- write completed: ${doctype}`);
237
- }
351
+ });
238
352
  };
239
- const generateClientPage = (variables, eta, frontendpagefolder) => {
240
- const docname = variables.name;
241
- const targetfolder = `${frontendpagefolder}/${docname}`;
242
- const overridefilename = `${targetfolder}/delete-me-for-avoid-override`;
243
- if (!(0, fs_1.existsSync)(targetfolder)) {
244
- (0, fs_1.mkdirSync)(targetfolder);
245
- (0, fs_1.writeFileSync)(overridefilename, 'delete this file to prevent override by generator');
246
- }
247
- if ((0, fs_1.existsSync)(overridefilename)) {
248
- const txtIndex = eta.render('./pageindex.vue.eta', variables);
249
- const txtIndexwithid = eta.render('./pageindexwithid.vue.eta', variables);
250
- (0, fs_1.writeFileSync)(`${targetfolder}/index.vue`, txtIndex);
251
- (0, fs_1.writeFileSync)(`${targetfolder}/[id].vue`, txtIndexwithid);
252
- }
253
- };
254
- const prepareEnvironments = (backendfolder, frontendfolder) => {
255
- const targetfolder = `${backendfolder}/src/class`;
256
- const targetfrontendfolder = `${frontendfolder}/server/api`;
257
- try {
258
- (0, fs_1.mkdirSync)(targetfolder, { recursive: true });
259
- (0, fs_1.mkdirSync)(targetfrontendfolder, { recursive: true });
260
- }
261
- catch (error) {
262
- //do nothing
353
+ const prepareRoles = (groupsettings) => {
354
+ let roles = [];
355
+ const docnames = Object.getOwnPropertyNames(groupsettings);
356
+ for (let i = 0; i < docnames.length; i++) {
357
+ let docname = docnames[i];
358
+ let docpermissions = groupsettings[docname];
359
+ for (let j = 0; j < docpermissions.length; j++) {
360
+ const perm = docpermissions[j];
361
+ const typename = lodash_1.default.upperFirst(docname);
362
+ roles.push(`${typename}_${perm}`);
363
+ }
263
364
  }
264
- (0, fs_1.copyFileSync)(`${constants.templatedir}/nest/SimpleAppService.eta`, `${targetfolder}/SimpleAppService.ts`);
265
- (0, fs_1.copyFileSync)(`${constants.templatedir}/nest/SimpleAppController.eta`, `${targetfolder}/SimpleAppController.ts`);
266
- (0, fs_1.copyFileSync)(`${constants.templatedir}/nest/Workflow.eta`, `${targetfolder}/Workflow.ts`);
267
- (0, fs_1.copyFileSync)(`${constants.templatedir}/nest/TenantMiddleware.eta`, `${targetfolder}/TenantMiddleware.ts`);
268
- (0, fs_1.copyFileSync)(`${constants.templatedir}/nest/UserProvider.eta`, `${targetfolder}/UserProvider.ts`);
269
- //copy over frontend apiabstract class
270
- // copyFileSync(`${constants.templatedir}/nuxt.apigateway.eta`,`${targetfrontendfolder}/[...].ts`)
271
- //prepare backend config.ts
272
- //copy over frontend config.ts
273
- };
274
- const finalize = (modules, backendfolder, frontendfolder) => {
275
- log.info("Finalizing foreignkey:", JSON.stringify(storage_1.foreignkeys));
276
- (0, fs_1.mkdirSync)(`${backendfolder}/src/dicts/`, { recursive: true });
277
- (0, fs_1.mkdirSync)(`${frontendfolder}/composables/`, { recursive: true });
278
- const eta = new Eta({ views: constants.templatedir });
279
- const txtMainModule = eta.render('./nest/app.module.eta', modules);
280
- (0, fs_1.writeFileSync)(`${backendfolder}/src/app.module.ts`, txtMainModule);
281
- const txtMainService = eta.render('./nest/app.service.eta', modules);
282
- (0, fs_1.writeFileSync)(`${backendfolder}/src/app.service.ts`, txtMainService);
283
- const txtAppController = eta.render('./nest/app.controller.eta', modules);
284
- (0, fs_1.writeFileSync)(`${backendfolder}/src/app.controller.ts`, txtAppController);
285
- const foreignkeyfile = `${backendfolder}/src/dicts/foreignkeys.json`;
286
- (0, fs_1.writeFileSync)(foreignkeyfile, JSON.stringify(storage_1.foreignkeys));
287
- log.info("write to foreignkey file ", foreignkeyfile);
288
- const txtCatalogue = eta.render('./nuxt/composables.getautocomplete.ts.eta', modules);
289
- (0, fs_1.writeFileSync)(`${frontendfolder}/composables/getAutocomplete.ts`, txtCatalogue);
290
- const txtMenus = eta.render('./nuxt/composables.getmenus.ts.eta', modules);
291
- (0, fs_1.writeFileSync)(`${frontendfolder}/composables/getMenus.ts`, txtMenus);
292
- const txtStringHelper = eta.render('./nuxt/composables.stringHelper.ts.eta', modules);
293
- (0, fs_1.writeFileSync)(`${frontendfolder}/composables/stringHelper.ts`, txtStringHelper);
365
+ return roles;
294
366
  };
295
367
  //# sourceMappingURL=generate.js.map