@simitgroup/simpleapp-generator 1.0.32 → 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 (281) hide show
  1. package/.vscode/settings.json +3 -0
  2. package/README.md +185 -16
  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 +120 -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 +310 -230
  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 +84 -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/documentation/designconcept.bpmn +349 -0
  95. package/documentation/documentation.png +0 -0
  96. package/documentation/infra.drawio +141 -0
  97. package/documentation/infra.png +0 -0
  98. package/documentation/management.drawio +57 -0
  99. package/documentation/stack.drawio +106 -0
  100. package/package.json +3 -1
  101. package/src/buildinschemas/autoincreament.ts +34 -0
  102. package/src/buildinschemas/branch.ts +39 -0
  103. package/src/buildinschemas/docnoformat.ts +58 -0
  104. package/src/buildinschemas/index.ts +7 -0
  105. package/src/buildinschemas/organization.ts +31 -0
  106. package/src/buildinschemas/permission.ts +31 -0
  107. package/src/buildinschemas/tenant.ts +38 -0
  108. package/src/buildinschemas/user.ts +28 -0
  109. package/src/constant.ts +2 -1
  110. package/src/framework.ts +126 -67
  111. package/src/generate.ts +327 -266
  112. package/src/generate.ts.backup +339 -0
  113. package/src/index.ts +93 -18
  114. package/src/processors/jsonschemabuilder.ts +199 -226
  115. package/src/processors/jsonschemabuilder.ts-old +383 -0
  116. package/src/storage.ts +1 -1
  117. package/src/type.ts +94 -27
  118. package/templates/basic/nest/controller.ts.eta +255 -0
  119. package/templates/basic/nest/default.ts.eta +42 -0
  120. package/templates/basic/{model.eta → nest/model.ts.eta} +18 -5
  121. package/templates/basic/nest/processor.ts.eta +129 -0
  122. package/templates/basic/nest/service.ts.eta +64 -0
  123. package/templates/basic/{type.eta → nest/type.ts.eta} +3 -3
  124. package/templates/basic/nuxt/default.ts.eta +42 -0
  125. package/templates/basic/{pageindex.vue.eta → nuxt/pages.crud.vue.eta} +85 -22
  126. package/templates/basic/nuxt/simpleapp.doc.ts.eta +11 -0
  127. package/templates/basic/nuxt/simpleapp.generate.client.ts.eta +212 -0
  128. package/templates/nest/.env.eta +31 -0
  129. package/templates/nest/.gitignore.eta +40 -0
  130. package/templates/nest/src/app.controller.ts.eta +19 -0
  131. package/templates/nest/src/app.module.ts.eta +77 -0
  132. package/templates/nest/src/app.service.ts.eta +9 -0
  133. package/templates/nest/src/main.ts.eta +58 -0
  134. package/templates/nest/src/simpleapp/generate/apischemas/index.ts.eta +16 -0
  135. package/templates/nest/src/simpleapp/generate/commons/decorators/appuser.decorator.ts.eta +8 -0
  136. package/templates/nest/src/simpleapp/generate/commons/dicts/foreignkeys.ts.eta +1 -0
  137. package/templates/nest/src/simpleapp/generate/commons/docnogenerator.service.ts.eta +101 -0
  138. package/templates/nest/src/simpleapp/generate/commons/exceptions/SimpleAppExceptionFilter.ts.eta +39 -0
  139. package/templates/nest/src/simpleapp/generate/commons/interceptors/response.interceptor.ts.eta +38 -0
  140. package/templates/nest/src/simpleapp/generate/commons/middlewares/tenant.middleware.ts.eta +88 -0
  141. package/templates/nest/{Workflow.eta → src/simpleapp/generate/commons/providers/workflow.provider.ts.etax} +20 -14
  142. package/templates/nest/src/simpleapp/generate/commons/roles/roles.decorator.ts.eta +6 -0
  143. package/templates/nest/src/simpleapp/generate/commons/roles/roles.enum.ts.eta +28 -0
  144. package/templates/nest/src/simpleapp/generate/commons/roles/roles.group.ts.eta +10 -0
  145. package/templates/nest/src/simpleapp/generate/commons/roles/roles.guard.ts.eta +34 -0
  146. package/templates/nest/src/simpleapp/generate/commons/user.context.ts.eta +391 -0
  147. package/templates/nest/src/simpleapp/generate/controllers/simpleapp.controller.ts.eta +71 -0
  148. package/templates/nest/src/simpleapp/generate/models/perm.model.ts.eta +53 -0
  149. package/templates/nest/src/simpleapp/generate/models/tenant.model.ts.eta +45 -0
  150. package/templates/nest/src/simpleapp/generate/models/user.model.ts.eta +57 -0
  151. package/templates/nest/src/simpleapp/generate/processors/simpleapp.processor.ts.eta +624 -0
  152. package/templates/nest/src/simpleapp/generate/types/index.ts.eta +19 -0
  153. package/templates/nest/src/simpleapp/profile/profile.apischema.ts.eta +74 -0
  154. package/templates/nest/src/simpleapp/profile/profile.controller.ts.eta +110 -0
  155. package/templates/nest/src/simpleapp/profile/profile.service.ts.eta +195 -0
  156. package/templates/nest/src/simpleapp/profile/profile.types.ts.eta +18 -0
  157. package/templates/nest/src/simpleapp/services/autoinc.service.ts.eta +89 -0
  158. package/templates/nest/src/simpleapp/services/branch.service.ts.eta +66 -0
  159. package/templates/nest/src/simpleapp/services/docno.service.ts.eta +93 -0
  160. package/templates/nest/src/simpleapp/services/org.service.ts.eta +67 -0
  161. package/templates/nest/src/simpleapp/services/perm.service.ts.eta +102 -0
  162. package/templates/nest/src/simpleapp/services/tenant.service.ts.eta +69 -0
  163. package/templates/nest/src/simpleapp/services/user.service.ts.eta +66 -0
  164. package/templates/nest/src/simpleapp/simpleapp.module.ts.eta +43 -0
  165. package/templates/nuxt/.env.eta +21 -0
  166. package/templates/nuxt/.gitignore.eta +28 -0
  167. package/templates/nuxt/app.vue.eta +5 -2
  168. package/templates/nuxt/assets/css/tailwind.css.eta +35 -0
  169. package/templates/nuxt/components/CrudNestedDoc.vue.eta +164 -0
  170. package/templates/nuxt/components/CrudSimple.vue.eta +179 -0
  171. package/templates/nuxt/{components.debugdocdata.vue.eta → components/DebugDocumentData.vue.eta} +4 -1
  172. package/templates/nuxt/{components.eventmonitor.vue.eta → components/EventMonitor.vue.eta} +27 -27
  173. package/templates/nuxt/components/Invitation.vue.eta +50 -0
  174. package/templates/nuxt/components/Menus.vue.eta +58 -0
  175. package/templates/nuxt/components/PermissionInfo.vue.eta +92 -0
  176. package/templates/nuxt/components/SimpleAppAutocomplete.vue.eta +131 -0
  177. package/templates/nuxt/components/SimpleAppAutocompletemulti.vue.eta +73 -0
  178. package/templates/nuxt/components/SimpleAppCalendar.vue.eta +55 -0
  179. package/templates/nuxt/components/SimpleAppCheckbox.vue.eta +29 -0
  180. package/templates/nuxt/components/SimpleAppChip.vue.eta +28 -0
  181. package/templates/nuxt/components/SimpleAppColor.vue.eta +41 -0
  182. package/templates/nuxt/components/SimpleAppDatatable.vue.eta +20 -0
  183. package/templates/nuxt/components/SimpleAppDocumentNo.vue.eta +90 -0
  184. package/templates/nuxt/components/SimpleAppDynamicInput.vue.eta +29 -0
  185. package/templates/nuxt/components/SimpleAppEditor.vue.eta +31 -0
  186. package/templates/nuxt/components/SimpleAppForm.vue.eta +131 -0
  187. package/templates/nuxt/components/SimpleAppInputTable.vue.eta +104 -0
  188. package/templates/nuxt/components/SimpleAppList.vue.eta +38 -0
  189. package/templates/nuxt/components/SimpleAppListmulti.vue.eta +41 -0
  190. package/templates/nuxt/components/SimpleAppNumber.vue.eta +32 -0
  191. package/templates/nuxt/components/SimpleAppPassword.vue.eta +41 -0
  192. package/templates/nuxt/components/SimpleAppRadio.vue.eta +42 -0
  193. package/templates/nuxt/components/SimpleAppRating.vue.eta +41 -0
  194. package/templates/nuxt/components/SimpleAppSelect.vue.eta +38 -0
  195. package/templates/nuxt/components/SimpleAppSelectmulti.vue.eta +39 -0
  196. package/templates/nuxt/components/SimpleAppSlider.vue.eta +42 -0
  197. package/templates/nuxt/components/SimpleAppSwitch.vue.eta +30 -0
  198. package/templates/nuxt/components/SimpleAppText.vue.eta +50 -0
  199. package/templates/nuxt/components/SimpleAppTextarea.vue.eta +30 -0
  200. package/templates/nuxt/components/SimpleAppValue.vue.eta +86 -0
  201. package/templates/nuxt/components/SimpleFieldContainer.vue.eta +102 -0
  202. package/templates/nuxt/components/XorgPicker.vue.eta +66 -0
  203. package/templates/nuxt/components/helper.ts.eta +90 -0
  204. package/templates/nuxt/components/type.ts.eta +32 -0
  205. package/templates/nuxt/composables/docformat.generate.ts.eta +5 -0
  206. package/templates/nuxt/{composables.getautocomplete.ts.eta → composables/getAutocomplete.generate.ts.eta} +4 -5
  207. package/templates/nuxt/{composables.getmenus.ts.eta → composables/getMenus.generate.ts.eta} +22 -7
  208. package/templates/nuxt/composables/getOpenApi.generate.ts.eta +6 -0
  209. package/templates/nuxt/composables/getTenant.generate.ts.eta +4 -0
  210. package/templates/nuxt/composables/getUserStore.generate.ts.eta +22 -0
  211. package/templates/nuxt/composables/logout.generate.ts.eta +22 -0
  212. package/templates/nuxt/composables/roles.generate.ts.eta +48 -0
  213. package/templates/nuxt/composables/stringHelper.generate.ts.eta +5 -0
  214. package/templates/nuxt/{layouts.default.vue.eta → layouts/default.vue.eta} +2 -0
  215. package/templates/nuxt/middleware/10.acl.global.ts.eta +38 -0
  216. package/templates/nuxt/nuxt.config.ts.eta +12 -2
  217. package/templates/nuxt/pages/[xorg]/branch/index.vue.eta +102 -0
  218. package/templates/nuxt/pages/[xorg]/docnoformat/[id].vue.eta +17 -0
  219. package/templates/nuxt/pages/[xorg]/docnoformat/index.vue.eta +269 -0
  220. package/templates/nuxt/pages/[xorg]/index.vue.eta +36 -0
  221. package/templates/nuxt/pages/[xorg]/organization/index.vue.eta +148 -0
  222. package/templates/nuxt/pages/[xorg]/permission/index.vue.eta +280 -0
  223. package/templates/nuxt/pages/[xorg]/tenant/index.vue.eta +93 -0
  224. package/templates/nuxt/pages/[xorg]/user/index.vue.eta +468 -0
  225. package/templates/nuxt/pages/index.vue.eta +191 -0
  226. package/templates/nuxt/pages/login.vue.eta +21 -0
  227. package/templates/nuxt/plugins/10.simpleapp-event.ts.eta +53 -0
  228. package/templates/nuxt/plugins/20.simpleapp-userstore.ts.eta +155 -0
  229. package/templates/nuxt/plugins/50.simpleapp-client.ts.eta +23 -0
  230. package/templates/nuxt/{server.api.ts.eta → server/api/[xorg]/[...].ts.eta} +5 -2
  231. package/templates/nuxt/server/api/auth/[...].ts.eta +68 -0
  232. package/templates/nuxt/{server.api.auth.logout.ts.eta → server/api/auth/logout.ts.eta} +1 -3
  233. package/templates/nuxt/server/api/profile/[...].ts.eta +150 -0
  234. package/templates/nuxt/server/api/profile/index.ts.eta +103 -0
  235. package/templates/nuxt/simpleapp/generate/clients/SimpleAppClient.ts.eta +187 -0
  236. package/templates/nuxt/simpleapp/generate/commons/documents.ts.eta +6 -0
  237. package/templates/nuxt/simpleapp/generate/commons/events.ts.eta +5 -0
  238. package/templates/nuxt/simpleapp/generate/commons/groups.ts.eta +11 -0
  239. package/templates/nuxt/simpleapp/generate/commons/roles.ts.eta +21 -0
  240. package/templates/nuxt/types/index.ts.eta +65 -0
  241. package/templates/project/README.md +11 -0
  242. package/templates/project/build.sh.eta +17 -0
  243. package/templates/project/config.json.eta +2 -0
  244. package/templates/project/generate.ts.eta +10 -0
  245. package/templates/project/schemas/category.ts.eta +26 -0
  246. package/templates/project/schemas/index.ts.eta +5 -0
  247. package/templates/project/schemas/product.ts.eta +59 -0
  248. package/templates/project/shares/hello.ts.eta +1 -0
  249. package/templates/project/shares/index.ts.eta +2 -0
  250. package/tsconfig.json +9 -2
  251. package/tsconfig.tsbuildinfo +1 -0
  252. package/definations/category.cat.jsonschema.json +0 -55
  253. package/definations/level.lvl.jsonschema.json +0 -48
  254. package/definations/product.prd.jsonschema.json +0 -46
  255. package/templates/basic/controller.eta +0 -152
  256. package/templates/basic/module.eta +0 -22
  257. package/templates/basic/service.eta +0 -62
  258. package/templates/basic/simpleappclient.eta +0 -120
  259. package/templates/nest/SimpleAppController.eta +0 -69
  260. package/templates/nest/SimpleAppService.eta +0 -366
  261. package/templates/nest/TenantMiddleware.eta +0 -34
  262. package/templates/nest/UserProvider.eta +0 -127
  263. package/templates/nest/app.controller.eta +0 -12
  264. package/templates/nest/app.module.eta +0 -64
  265. package/templates/nest/app.service.eta +0 -8
  266. package/templates/nest/inputvalidation-exception.eta +0 -6
  267. package/templates/nest/nest.env.eta +0 -28
  268. package/templates/nest/nest.main.eta +0 -31
  269. package/templates/nuxt/components.crudsimple.vue.eta +0 -124
  270. package/templates/nuxt/components.menus.vue.eta +0 -35
  271. package/templates/nuxt/env.eta +0 -17
  272. package/templates/nuxt/pages.[xorg].index.vue.eta +0 -20
  273. package/templates/nuxt/pages.index.vue.eta +0 -72
  274. package/templates/nuxt/pages.login.vue.eta +0 -20
  275. package/templates/nuxt/plugins.simpleapp.ts.eta +0 -88
  276. package/templates/nuxt/server.api.auth[...].ts.eta +0 -233
  277. package/templates/nuxt/tailwind.css.eta +0 -49
  278. /package/templates/basic/{apischema.eta → nest/apischema.ts.eta} +0 -0
  279. /package/templates/basic/{jsonschema.eta → nest/jsonschema.ts.eta} +0 -0
  280. /package/templates/basic/{pageindexwithid.vue.eta → nuxt/pages.[id].vue.eta} +0 -0
  281. /package/templates/nest/{oauth2-redirect.eta → public_html/oauth2-redirect.html.eta} +0 -0
@@ -0,0 +1,2 @@
1
+ export declare const run: (paraconfigs: any, genFor: string[], callback: Function) => Promise<void>;
2
+ //# sourceMappingURL=generate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAiCA,eAAO,MAAM,GAAG,gBAAuB,GAAG,UAAQ,MAAM,EAAE,YAAU,QAAQ,kBAqE3E,CAAA"}
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,254 +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');
42
+ const X_DOCUMENT_TYPE = 'x-document-type';
43
+ const X_DOCUMENT_NAME = 'x-document-name';
44
+ const X_COLLECTION_NAME = 'x-collection-name';
45
+ const X_PAGE_TYPE = 'x-page-type';
39
46
  const extFb = '.xfb.json';
40
47
  const extHfb = '.xhfb.json';
41
48
  const extjsonschema = '.jsonschema.json';
49
+ const extgroups = '.group.json';
42
50
  let jsonschemas = {};
51
+ let configs = {};
43
52
  const docs = [];
44
- const initialize = async (defFolder, backendfolder, frontendfolder, callback) => {
45
- prepareEnvironments(backendfolder, frontendfolder);
46
- 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)
47
71
  //
48
- const files = (0, fs_1.readdirSync)(defFolder);
49
- // log.warn("all schemas:",files)
50
- // readdir(defFolder, (err, files) => {
51
- // 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);
52
108
  for (let j = 0; j < files.length; j++) {
53
109
  const file = files[j];
54
- log.info(`Load ` + clc.green(file));
55
- const filearr = file.split('.');
56
- let rendertype = 'basic';
57
- const docname = filearr[0].toLowerCase();
58
- const doctype = filearr[1].toLowerCase();
59
- const jsonstring = (0, fs_1.readFileSync)(defFolder + path.sep + file, 'utf-8');
60
- let allmodels = {};
61
- if (file.endsWith(extjsonschema)) {
62
- const jsondata = JSON.parse(jsonstring);
63
- rendertype = 'basic';
64
- jsonschemas[docname] = jsondata;
65
- // foreignkeys:
66
- // tmpforeignkeys:TypeForeignKey
67
- allmodels = await (0, jsonschemabuilder_1.readJsonSchemaBuilder)(doctype, docname, jsondata, storage_1.foreignkeys);
68
- //foreignkeycatalogues
69
- // foreignkeys
70
- generate(docname, doctype, rendertype, allmodels, backendfolder, frontendfolder);
71
- activatemodules.push({ doctype: doctype, docname: capitalizeFirstLetter(docname) });
72
- }
73
- else {
74
- log.warn(`Load ` + clc.yellow(file) + ` but it is not supported`);
75
- }
110
+ const jsoncontent = (0, fs_1.readFileSync)(`${configs.jsonschemaFolder}/${file}`, 'utf-8');
111
+ const jsonschema = JSON.parse(jsoncontent);
112
+ await processSchema(file, jsonschema);
76
113
  }
77
- // log.warn("foreignkeys---",foreignkeys)
78
- log.info("Activated backend modules: ", JSON.stringify(activatemodules));
79
- // log.info(activatemodules)
80
- 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);
81
125
  callback();
82
126
  };
83
- exports.initialize = initialize;
84
- const generate = (docname, doctype, rendertype, allmodels, backendfolder, frontendfolder) => {
85
- const targetfolder = `${backendfolder}/src/docs/${doctype}`;
86
- const frontendpagefolder = `${frontendfolder}/pages/[xorg]`;
87
- try {
88
- (0, fs_1.mkdirSync)(targetfolder, { recursive: true });
89
- (0, fs_1.mkdirSync)(`${frontendfolder}/simpleapp/simpleappdocs/`, { recursive: true });
90
- (0, fs_1.mkdirSync)(frontendpagefolder, { recursive: true });
91
- }
92
- catch (err) {
93
- //do nothing if folder exists
94
- }
95
- finally {
96
- const templatefolder = `${constants.templatedir}/${rendertype}`;
97
- log.info(`- Generate ${docname}, ${doctype}, ${templatefolder}`);
98
- const eta = new Eta({
99
- views: templatefolder,
100
- functionHeader: 'const capitalizeFirstLetter = (str) => str.slice(0, 1).toUpperCase() + str.slice(1);' +
101
- 'const initType=(str)=>{return ["string","number","boolean","array","object"].includes(str) ? capitalizeFirstLetter(str) : str;}',
102
- });
103
- const variables = {
104
- name: docname,
105
- doctype: doctype,
106
- models: allmodels,
107
- autocompletecode: allmodels[capitalizeFirstLetter(docname)].codeField,
108
- autocompletename: allmodels[capitalizeFirstLetter(docname)].nameField,
109
- moreAutoComplete: allmodels[capitalizeFirstLetter(docname)].moreAutoComplete,
110
- schema: allmodels[capitalizeFirstLetter(docname)].model,
111
- apiSchemaName: capitalizeFirstLetter(docname),
112
- typename: capitalizeFirstLetter(docname),
113
- fullApiSchemaName: doctype + 'apischema.' + capitalizeFirstLetter(docname),
114
- fullTypeName: doctype + 'type.' + capitalizeFirstLetter(docname),
115
- jsonschema: jsonschemas[docname],
116
- bothEndCode: '',
117
- frontEndCode: '',
118
- backEndCode: '',
119
- controllerCode: '',
120
- apiSchemaCode: '',
121
- docStatusSettings: allmodels[capitalizeFirstLetter(docname)].docStatusSettings,
122
- apiSettings: allmodels[capitalizeFirstLetter(docname)].apiSettings,
123
- requireautocomplete: allmodels[capitalizeFirstLetter(docname)].requireautocomplete,
124
- isolationtype: allmodels[capitalizeFirstLetter(docname)].isolationtype
125
- };
126
- // console.log('generate 2', JSON.stringify(variables));
127
- // // const txtUISchema = eta.render('./uischema', variables);
128
- // console.log('generate 4');
129
- // console.log('generate 2', variables);
130
- const txtType = eta.render('./type', variables);
131
- (0, fs_1.writeFileSync)(`${targetfolder}/${doctype}.type.ts`, txtType);
132
- // compile(jsonschemas[docname], docname).then((txtType: string) => {
133
- // writeFileSync(`${targetfolder}/${doctype}.type.ts`, txtType);
134
- // });
135
- // generate jsonschema object, use for data validation
136
- const txtJsonSchema = eta.render('./jsonschema', variables);
137
- (0, fs_1.writeFileSync)(`${targetfolder}/${doctype}.jsonschema.ts`, txtJsonSchema);
138
- // generate before save source code, wont override after regenerate
139
- // const customizefilename = `${targetfolder}/${doctype}.beforesave.ts`;
140
- // if (!existsSync(customizefilename)) {
141
- // const txtBeforeSave = eta.render('./beforesave', variables);
142
- // writeFileSync(
143
- // `${targetfolder}/${doctype}.beforesave.ts`,
144
- // txtBeforeSave,
145
- // );
146
- // }
147
- // write mongoose model file
148
- const txtModel = eta.render('./model', variables);
149
- (0, fs_1.writeFileSync)(`${targetfolder}/${doctype}.model.ts`, txtModel);
150
- // prepare openapi schema
151
- const apischemafile = `${targetfolder}/${doctype}.apischema.ts`;
152
- if ((0, fs_1.existsSync)(apischemafile)) {
153
- const apischemaCode = (0, fs_1.readFileSync)(apischemafile).toString();
154
- const regexapischema = /\/\/<begin-apischema-code>([\s\S]*?)\/\/<end-apischema-code>/g;
155
- const apischemaresult = apischemaCode.match(regexapischema);
156
- if (apischemaresult) {
157
- variables.apiSchemaCode = apischemaresult[0];
158
- }
159
- else {
160
- variables.apiSchemaCode = "//<begin-apischema-code>\n//<end-apischema-code>";
161
- }
162
- }
163
- const txtApiSchema = eta.render('./apischema', variables);
164
- (0, fs_1.writeFileSync)(apischemafile, txtApiSchema);
165
- // prepare backend classes
166
- // prepare frontend api client
167
- const servicefile = `${targetfolder}/${doctype}.service.ts`;
168
- let bothEndCode = '';
169
- let backEndCode = '';
170
- if ((0, fs_1.existsSync)(servicefile)) {
171
- const servicecodes = (0, fs_1.readFileSync)(servicefile).toString();
172
- /* extract string bothend and backend, put in back */
173
- const regex1 = /\/\/<begin-bothend-code>([\s\S]*?)\/\/<end-bothend-code>/g;
174
- const regex2 = /\/\/<begin-backend-code>([\s\S]*?)\/\/<end-backend-code>/g;
175
- const bothendresult = servicecodes.match(regex1);
176
- const backendresult = servicecodes.match(regex2);
177
- console.log("bothendresult", bothendresult);
178
- console.log("backendresult", backendresult);
179
- if (bothendresult) {
180
- variables.bothEndCode = bothendresult[0];
181
- }
182
- else {
183
- 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;
184
216
  }
185
- if (backendresult) {
186
- 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
+ }
187
242
  }
188
- else {
189
- 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
+ }
190
309
  }
191
310
  }
192
- const txtService = eta.render('./service', variables);
193
- (0, fs_1.writeFileSync)(`${targetfolder}/${doctype}.service.ts`, txtService);
194
- // prepare api router, allow add more api and wont override after regenerate
195
- const controllerfile = `${targetfolder}/${doctype}.controller.ts`;
196
- let controllerCode = '';
197
- if ((0, fs_1.existsSync)(controllerfile)) {
198
- /* extract customized controller, put in back */
199
- const controllersourcecodes = (0, fs_1.readFileSync)(controllerfile).toString();
200
- const controllerregex = /\/\/<begin-controller-code>([\s\S]*?)\/\/<end-controller-code>/g;
201
- const controllerresult = controllersourcecodes.match(controllerregex);
202
- if (controllerresult) {
203
- 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);
204
346
  }
205
- }
206
- variables.controllerCode = controllerCode != '' ? controllerCode : "\n//<begin-controller-code>\n//<end-controller-code>";
207
- const txtController = eta.render('./controller', variables);
208
- (0, fs_1.writeFileSync)(controllerfile, txtController);
209
- // prepare module
210
- const txtModule = eta.render('./module', variables);
211
- (0, fs_1.writeFileSync)(`${targetfolder}/${doctype}.module.ts`, txtModule);
212
- // prepare readme
213
- // const txtReadme = eta.render('./readme', variables);
214
- // writeFileSync(`${targetfolder}/README.md`, txtReadme);
215
- const frontendfile = `${frontendfolder}/simpleapp/simpleappdocs/${variables.typename}Doc.ts`;
216
- let frontEndCode = '';
217
- if ((0, fs_1.existsSync)(frontendfile)) {
218
- const clientcodes = (0, fs_1.readFileSync)(frontendfile).toString();
219
- /* extract string frontend code, put in back */
220
- const regex3 = /\/\/<begin-frontend-code>([\s\S]*?)\/\/<end-frontend-code>/g;
221
- const frontendresult = clientcodes.match(regex3);
222
- if (frontendresult) {
223
- frontEndCode = frontendresult[0];
347
+ else {
348
+ log.warn("skip: ", longfilename);
224
349
  }
225
350
  }
226
- variables.frontEndCode = frontEndCode !== null && frontEndCode !== void 0 ? frontEndCode : '';
227
- const txtDocClient = eta.render('./simpleappclient.eta', variables);
228
- (0, fs_1.writeFileSync)(frontendfile, txtDocClient);
229
- generateClientPage(variables, eta, frontendpagefolder);
230
- log.info(`- write completed: ${doctype}`);
231
- }
351
+ });
232
352
  };
233
- const generateClientPage = (variables, eta, frontendpagefolder) => {
234
- const docname = variables.name;
235
- const targetfolder = `${frontendpagefolder}/${docname}`;
236
- const overridefilename = `${targetfolder}/delete-me-for-avoid-override`;
237
- if (!(0, fs_1.existsSync)(targetfolder)) {
238
- (0, fs_1.mkdirSync)(targetfolder);
239
- (0, fs_1.writeFileSync)(overridefilename, 'delete this file to prevent override by generator');
240
- }
241
- if ((0, fs_1.existsSync)(overridefilename)) {
242
- const txtIndex = eta.render('./pageindex.vue.eta', variables);
243
- const txtIndexwithid = eta.render('./pageindexwithid.vue.eta', variables);
244
- (0, fs_1.writeFileSync)(`${targetfolder}/index.vue`, txtIndex);
245
- (0, fs_1.writeFileSync)(`${targetfolder}/[id].vue`, txtIndexwithid);
246
- }
247
- };
248
- const prepareEnvironments = (backendfolder, frontendfolder) => {
249
- const targetfolder = `${backendfolder}/src/class`;
250
- const targetfrontendfolder = `${frontendfolder}/server/api`;
251
- try {
252
- (0, fs_1.mkdirSync)(targetfolder, { recursive: true });
253
- (0, fs_1.mkdirSync)(targetfrontendfolder, { recursive: true });
254
- }
255
- catch (error) {
256
- //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
+ }
257
364
  }
258
- (0, fs_1.copyFileSync)(`${constants.templatedir}/nest/SimpleAppService.eta`, `${targetfolder}/SimpleAppService.ts`);
259
- (0, fs_1.copyFileSync)(`${constants.templatedir}/nest/SimpleAppController.eta`, `${targetfolder}/SimpleAppController.ts`);
260
- (0, fs_1.copyFileSync)(`${constants.templatedir}/nest/Workflow.eta`, `${targetfolder}/Workflow.ts`);
261
- (0, fs_1.copyFileSync)(`${constants.templatedir}/nest/TenantMiddleware.eta`, `${targetfolder}/TenantMiddleware.ts`);
262
- (0, fs_1.copyFileSync)(`${constants.templatedir}/nest/UserProvider.eta`, `${targetfolder}/UserProvider.ts`);
263
- //copy over frontend apiabstract class
264
- // copyFileSync(`${constants.templatedir}/nuxt.apigateway.eta`,`${targetfrontendfolder}/[...].ts`)
265
- //prepare backend config.ts
266
- //copy over frontend config.ts
267
- };
268
- const finalize = (modules, backendfolder, frontendfolder) => {
269
- log.info("Finalizing foreignkey:", JSON.stringify(storage_1.foreignkeys));
270
- (0, fs_1.mkdirSync)(`${backendfolder}/src/dicts/`, { recursive: true });
271
- (0, fs_1.mkdirSync)(`${frontendfolder}/composables/`, { recursive: true });
272
- const eta = new Eta({ views: constants.templatedir });
273
- const txtMainModule = eta.render('./nest/app.module.eta', modules);
274
- (0, fs_1.writeFileSync)(`${backendfolder}/src/app.module.ts`, txtMainModule);
275
- const txtMainService = eta.render('./nest/app.service.eta', modules);
276
- (0, fs_1.writeFileSync)(`${backendfolder}/src/app.service.ts`, txtMainService);
277
- const txtAppController = eta.render('./nest/app.controller.eta', modules);
278
- (0, fs_1.writeFileSync)(`${backendfolder}/src/app.controller.ts`, txtAppController);
279
- const foreignkeyfile = `${backendfolder}/src/dicts/foreignkeys.json`;
280
- (0, fs_1.writeFileSync)(foreignkeyfile, JSON.stringify(storage_1.foreignkeys));
281
- log.info("write to foreignkey file ", foreignkeyfile);
282
- const txtCatalogue = eta.render('./nuxt/composables.getautocomplete.ts.eta', modules);
283
- (0, fs_1.writeFileSync)(`${frontendfolder}/composables/getAutocomplete.ts`, txtCatalogue);
284
- const txtMenus = eta.render('./nuxt/composables.getmenus.ts.eta', modules);
285
- (0, fs_1.writeFileSync)(`${frontendfolder}/composables/getMenus.ts`, txtMenus);
365
+ return roles;
286
366
  };
287
367
  //# sourceMappingURL=generate.js.map