@simitgroup/simpleapp-generator 1.6.7-m-alpha → 2.0.0-a-alpha

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 (300) hide show
  1. package/ReleaseNote.md +7 -0
  2. package/dist/buildinschemas/autoincreament.js +1 -1
  3. package/dist/buildinschemas/branch.d.ts.map +1 -1
  4. package/dist/buildinschemas/branch.js +2 -0
  5. package/dist/buildinschemas/branch.js.map +1 -1
  6. package/dist/buildinschemas/docnoformat.js +1 -1
  7. package/dist/buildinschemas/docnoformat.js.map +1 -1
  8. package/dist/buildinschemas/documentevent.js +1 -1
  9. package/dist/buildinschemas/documentnoformat.d.ts +3 -0
  10. package/dist/buildinschemas/documentnoformat.d.ts.map +1 -0
  11. package/dist/buildinschemas/documentnoformat.js +58 -0
  12. package/dist/buildinschemas/documentnoformat.js.map +1 -0
  13. package/dist/buildinschemas/index.d.ts +0 -5
  14. package/dist/buildinschemas/index.d.ts.map +1 -1
  15. package/dist/buildinschemas/index.js +5 -11
  16. package/dist/buildinschemas/index.js.map +1 -1
  17. package/dist/buildinschemas/organization.d.ts.map +1 -1
  18. package/dist/buildinschemas/organization.js +3 -19
  19. package/dist/buildinschemas/organization.js.map +1 -1
  20. package/dist/buildinschemas/user.d.ts.map +1 -1
  21. package/dist/buildinschemas/user.js +5 -2
  22. package/dist/buildinschemas/user.js.map +1 -1
  23. package/dist/generate.d.ts.map +1 -1
  24. package/dist/generate.js +118 -23
  25. package/dist/generate.js.map +1 -1
  26. package/dist/type.d.ts +6 -0
  27. package/dist/type.d.ts.map +1 -1
  28. package/dist/type.js.map +1 -1
  29. package/package.json +1 -1
  30. package/src/buildinschemas/{autoincreament.ts → autoincreament.ts.backup} +1 -1
  31. package/src/buildinschemas/branch.ts +2 -0
  32. package/src/buildinschemas/{documentevent.ts → documentevent.ts.backup} +1 -1
  33. package/src/buildinschemas/{docnoformat.ts → documentnoformat.ts.backup} +3 -3
  34. package/src/buildinschemas/index.ts +4 -5
  35. package/src/buildinschemas/organization.ts +3 -19
  36. package/src/buildinschemas/user.ts +5 -2
  37. package/src/generate.ts +128 -28
  38. package/src/type.ts +6 -1
  39. package/templates/basic/nest/api.controller.ts.eta +153 -0
  40. package/templates/basic/nest/api.module.ts.eta +32 -0
  41. package/templates/basic/nest/api.resolver.ts.eta +94 -0
  42. package/templates/basic/nest/api.schema.ts.eta +20 -0
  43. package/templates/basic/nest/api.service.ts.eta +85 -0
  44. package/templates/basic/nest/controller.ts.eta +18 -119
  45. package/templates/basic/nest/default.ts.eta +16 -10
  46. package/templates/basic/nest/enum.ts.eta +16 -0
  47. package/templates/basic/nest/model.ts.eta +6 -28
  48. package/templates/basic/nest/module.ts.eta +25 -0
  49. package/templates/basic/nest/resolver.ts.eta +12 -56
  50. package/templates/basic/nest/schema.ts.eta +133 -0
  51. package/templates/basic/nest/service.ts.eta +82 -73
  52. package/templates/basic/nest/service.ts.eta-backup +50 -0
  53. package/templates/basic/nuxt/default.ts.eta +10 -8
  54. package/templates/basic/nuxt/pages.[id].vue.eta +2 -2
  55. package/templates/basic/nuxt/pages.form.vue.eta +2 -2
  56. package/templates/basic/nuxt/pages.viewer.vue.eta +2 -2
  57. package/templates/basic/nuxt/simpleapp.doc.ts.eta +1 -1
  58. package/templates/basic/nuxt/simpleapp.generate.client.ts.eta +7 -5
  59. package/templates/nest/src/app.module.ts._eta +53 -67
  60. package/templates/nest/src/main.ts._eta +1 -1
  61. package/templates/nest/src/simple-app/.core/features/auth/api-key/api-key.service.ts.eta +29 -0
  62. package/templates/nest/src/simple-app/.core/features/auth/api-key/api-key.type.ts.eta +5 -0
  63. package/templates/nest/src/simple-app/.core/features/auth/api-key/validators/interface.ts.eta +7 -0
  64. package/templates/nest/src/simple-app/.core/features/auth/api-key/validators/mini-api-key.validator.ts.eta +30 -0
  65. package/templates/nest/src/simple-app/.core/features/auth/api-key/validators/static-api-key.validator.ts.eta +27 -0
  66. package/templates/nest/src/simple-app/.core/features/auth/auth.module.ts.eta +9 -0
  67. package/templates/nest/src/{simpleapp/generate/commons/roles → simple-app/.core/features/auth/role-guard}/roles.enum.ts.eta +7 -7
  68. package/templates/nest/src/{simpleapp/generate/commons/roles → simple-app/.core/features/auth/role-guard}/roles.guard.ts.eta +1 -1
  69. package/templates/nest/src/simple-app/.core/features/auto-increament/auto-increament.model.ts.eta +10 -0
  70. package/templates/nest/src/simple-app/.core/features/auto-increament/auto-increament.module.ts.eta +18 -0
  71. package/templates/nest/src/simple-app/.core/features/auto-increament/auto-increament.schema.ts.eta +119 -0
  72. package/templates/nest/src/simple-app/.core/features/auto-increament/auto-increament.service.ts.eta +65 -0
  73. package/templates/nest/src/simple-app/.core/features/cron/base/cron.base.ts.eta +13 -0
  74. package/templates/nest/src/simple-app/.core/features/cron/cron-system/cron-system.module.ts.eta +17 -0
  75. package/templates/nest/src/simple-app/.core/features/cron/cron-system/cron-system.service.ts.eta +37 -0
  76. package/templates/nest/src/simple-app/.core/features/cron/cron-system/schemas/index.ts.eta +2 -0
  77. package/templates/nest/src/simple-app/.core/features/cron/cron.module.ts.eta +10 -0
  78. package/templates/nest/src/simple-app/.core/features/document-no-format/document-no-format.controller.ts.eta +31 -0
  79. package/templates/nest/src/simple-app/.core/features/document-no-format/document-no-format.model.ts.eta +15 -0
  80. package/templates/nest/src/simple-app/.core/features/document-no-format/document-no-format.module.ts.eta +12 -0
  81. package/templates/nest/src/simple-app/.core/features/document-no-format/document-no-format.schema.ts.eta +162 -0
  82. package/templates/nest/src/simple-app/.core/features/document-no-format/document-no-format.service.ts.eta +189 -0
  83. package/templates/nest/src/simple-app/.core/features/event/event.module.ts.eta +9 -0
  84. package/templates/nest/src/simple-app/.core/features/event/event.type.ts.eta +23 -0
  85. package/templates/nest/src/simple-app/.core/features/event/interface/event-after-create.interface.ts.eta +5 -0
  86. package/templates/nest/src/simple-app/.core/features/event/interface/event-after-delete.interface.ts.eta +5 -0
  87. package/templates/nest/src/simple-app/.core/features/event/interface/event-after-set-status.interface.ts.eta +5 -0
  88. package/templates/nest/src/simple-app/.core/features/event/interface/event-after-update.interface.ts.eta +5 -0
  89. package/templates/nest/src/simple-app/.core/features/event/interface/event-before-create.interface.ts.eta +5 -0
  90. package/templates/nest/src/simple-app/.core/features/event/interface/event-before-delete.interface.ts.eta +5 -0
  91. package/templates/nest/src/simple-app/.core/features/event/interface/event-before-set-status.interface.ts.eta +5 -0
  92. package/templates/nest/src/simple-app/.core/features/event/interface/event-before-update.interface.ts.eta +5 -0
  93. package/templates/nest/src/simple-app/.core/features/event/interface/index.ts.eta +8 -0
  94. package/templates/nest/src/simple-app/.core/features/foreign-key/foreign-key.module.ts.eta +16 -0
  95. package/templates/nest/src/simple-app/.core/features/log/log.module.ts.eta +20 -0
  96. package/templates/nest/src/simple-app/.core/features/log/log.service.ts.eta +68 -0
  97. package/templates/nest/src/simple-app/.core/features/log/schemas/api-event.schema.ts.eta +57 -0
  98. package/templates/nest/src/simple-app/.core/features/log/schemas/document-event.schema.ts.eta +87 -0
  99. package/templates/nest/src/simple-app/.core/features/log/schemas/index.ts.eta +2 -0
  100. package/templates/nest/src/simple-app/.core/features/maintenance/db-update/1.00.00/index.ts._eta +39 -0
  101. package/templates/nest/src/simple-app/.core/features/maintenance/db-update/index.ts._eta +8 -0
  102. package/templates/nest/src/simple-app/.core/features/maintenance/maintenance.controller.ts.eta +84 -0
  103. package/templates/nest/src/simple-app/.core/features/maintenance/maintenance.module.ts.eta +19 -0
  104. package/templates/nest/src/simple-app/.core/features/maintenance/maintenance.service.ts.eta +86 -0
  105. package/templates/nest/src/simple-app/.core/features/maintenance/schemas/db-update.ts.eta +17 -0
  106. package/templates/nest/src/simple-app/.core/features/maintenance/schemas/environment.ts.eta +23 -0
  107. package/templates/nest/src/{simpleapp/generate/workflow/formschema → simple-app/.core/features/maintenance/schemas}/index.ts.eta +3 -2
  108. package/templates/nest/src/simple-app/.core/features/mini-app/developer-portal/developer-portal-bridge.service.ts.eta.eta +31 -0
  109. package/templates/nest/src/simple-app/.core/features/mini-app/developer-portal/developer-portal-env-development.service.ts.eta +124 -0
  110. package/templates/nest/src/simple-app/.core/features/mini-app/developer-portal/developer-portal-env-production.service.ts.eta +50 -0
  111. package/templates/nest/src/simple-app/.core/features/mini-app/developer-portal/developer-portal.controller.ts.eta +41 -0
  112. package/templates/nest/src/simple-app/.core/features/mini-app/developer-portal/developer-portal.schema.ts.eta +18 -0
  113. package/templates/nest/src/simple-app/.core/features/mini-app/developer-portal/developer-portal.service.ts.eta +94 -0
  114. package/templates/nest/src/simple-app/.core/features/mini-app/developer-portal/dto/developer-portal-create-app.dto.ts.eta +22 -0
  115. package/templates/nest/src/simple-app/.core/features/mini-app/developer-portal/dto/developer-portal-publish-app.dto.ts.eta +0 -0
  116. package/templates/nest/src/simple-app/.core/features/mini-app/dto/imports.ts.eta +2 -0
  117. package/templates/nest/src/simple-app/.core/features/mini-app/dto/index.ts.eta +2 -0
  118. package/templates/nest/src/simple-app/.core/features/mini-app/dto/mini-app.ts.eta +55 -0
  119. package/templates/nest/src/simple-app/.core/features/mini-app/mini-app-manager/mini-app-manager-bridge.service.ts.eta +162 -0
  120. package/templates/nest/src/simple-app/.core/features/mini-app/mini-app-manager/mini-app-manager-env-development.service.ts.eta +140 -0
  121. package/templates/nest/src/simple-app/.core/features/mini-app/mini-app-manager/mini-app-manager-env-production.service.ts.eta +125 -0
  122. package/templates/nest/src/simple-app/.core/features/mini-app/mini-app-manager/mini-app-manager-policy.service.ts.eta +43 -0
  123. package/templates/nest/src/simple-app/.core/features/mini-app/mini-app-manager/mini-app-manager.controller.ts.eta +81 -0
  124. package/templates/nest/src/simple-app/.core/features/mini-app/mini-app-manager/mini-app-manager.enum.ts.eta +5 -0
  125. package/templates/nest/src/simple-app/.core/features/mini-app/mini-app-manager/mini-app-manager.error.ts.eta +24 -0
  126. package/templates/nest/src/simple-app/.core/features/mini-app/mini-app-manager/mini-app-manager.processor.ts.eta +309 -0
  127. package/templates/nest/src/simple-app/.core/features/mini-app/mini-app-manager/mini-app-manager.service.ts.eta +346 -0
  128. package/templates/nest/src/simple-app/.core/features/mini-app/mini-app-scope/mini-app-scope.decorator.ts.eta +5 -0
  129. package/templates/nest/src/simple-app/.core/features/mini-app/mini-app-scope/mini-app-scope.guard.ts.eta +43 -0
  130. package/templates/nest/src/simple-app/.core/features/mini-app/mini-app-scope/mini-app-scope.service.ts.eta +101 -0
  131. package/templates/nest/src/simple-app/.core/features/mini-app/mini-app.module.ts.eta +24 -0
  132. package/templates/nest/src/simple-app/.core/features/mini-app/types/miniApp.ts.eta +23 -0
  133. package/templates/nest/src/simple-app/.core/features/mini-app/utils/mini-app.util.ts.eta +26 -0
  134. package/templates/nest/src/simple-app/.core/features/policy/policy.module.ts.eta +12 -0
  135. package/templates/nest/src/simple-app/.core/features/policy/policy.service.ts.eta +45 -0
  136. package/templates/nest/src/{simpleapp/profile/profile.controller.ts._eta → simple-app/.core/features/profile/profile.controller.ts.eta} +37 -83
  137. package/templates/nest/src/simple-app/.core/features/profile/profile.module.ts.eta +22 -0
  138. package/templates/nest/src/simple-app/.core/features/profile/profile.schema.ts.eta +165 -0
  139. package/templates/nest/src/{simpleapp/profile/profile.service.ts._eta → simple-app/.core/features/profile/profile.service.ts.eta} +36 -48
  140. package/templates/nest/src/simple-app/.core/features/queue/queue-base/queue-base.consumer.ts.eta +196 -0
  141. package/templates/nest/src/simple-app/.core/features/queue/queue-base/queue-base.producer.ts.eta +147 -0
  142. package/templates/nest/src/simple-app/.core/features/queue/queue-user-context/queue-user-context.service.ts.eta +35 -0
  143. package/templates/nest/src/simple-app/.core/features/queue/queue.module.ts.eta +24 -0
  144. package/templates/nest/src/simple-app/.core/features/queue/queue.type.ts.eta +75 -0
  145. package/templates/nest/src/simple-app/.core/features/simple-app-core-features.module.ts.eta +51 -0
  146. package/templates/nest/src/{simpleapp/generate/commons/robotuser.service.ts.eta → simple-app/.core/features/user-context/robot-user.service.ts.eta} +27 -16
  147. package/templates/nest/src/simple-app/.core/features/user-context/user-context.module.ts.eta +24 -0
  148. package/templates/nest/src/simple-app/.core/features/user-context/user-context.type.ts.eta +15 -0
  149. package/templates/nest/src/{simpleapp/generate/commons → simple-app/.core/features/user-context}/user.context.ts.eta +469 -449
  150. package/templates/nest/src/{simpleapp/generate/commons/runwebhook.service.ts.eta → simple-app/.core/features/webhook/run-webhook.service.ts.eta} +7 -11
  151. package/templates/nest/src/simple-app/.core/features/webhook/schemas/index.ts.eta +2 -0
  152. package/templates/nest/src/simple-app/.core/features/webhook/schemas/webhook-log.schema.ts.eta +116 -0
  153. package/templates/nest/src/simple-app/.core/features/webhook/schemas/webhook.schema.ts.eta +177 -0
  154. package/templates/nest/src/simple-app/.core/features/webhook/webhook.module.ts.eta +20 -0
  155. package/templates/nest/src/{simpleapp/generate/controllers/simpleapp.controller.ts.eta → simple-app/.core/framework/base/simple-app.controller.ts.eta} +13 -35
  156. package/templates/nest/src/{simpleapp/generate/processors/simpleapp.processor.ts.eta → simple-app/.core/framework/base/simple-app.service.ts.eta} +242 -139
  157. package/templates/nest/src/simple-app/.core/framework/custom-exception.ts.eta +26 -0
  158. package/templates/nest/src/simple-app/.core/framework/framework.module.ts.eta +12 -0
  159. package/templates/nest/src/simple-app/.core/framework/schemas/index.ts.eta +3 -0
  160. package/templates/nest/src/simple-app/.core/framework/schemas/others.schema.ts.eta +153 -0
  161. package/templates/nest/src/simple-app/.core/framework/schemas/simple-app.schema.ts.eta +172 -0
  162. package/templates/nest/src/{simpleapp/generate/commons/interceptors/response.interceptor.ts.eta → simple-app/.core/framework/simple-app.interceptor.ts.eta} +12 -22
  163. package/templates/nest/src/{simpleapp/generate/commons/middlewares/tenant.middleware.ts.eta → simple-app/.core/framework/simple-app.middleware.ts.eta} +39 -15
  164. package/templates/nest/src/simple-app/.core/readme.md.eta +3 -0
  165. package/templates/nest/src/simple-app/.core/resources/core-resources.module.ts.eta +38 -0
  166. package/templates/nest/src/simple-app/.core/simple-app-core.module.ts.eta +18 -0
  167. package/templates/nest/src/simple-app/.core/utils/dayjs.ts.eta +47 -0
  168. package/templates/nest/src/simple-app/.core/utils/locale-tool.ts.eta +11 -0
  169. package/templates/nest/src/simple-app/.core/utils/string-utils.ts.eta +1 -0
  170. package/templates/nest/src/simple-app/.resources/readme.md.eta +3 -0
  171. package/templates/nest/src/simple-app/.resources/resources.module.ts.eta +36 -0
  172. package/templates/nest/src/simple-app/apis/readme.md.eta +9 -0
  173. package/templates/nest/src/simple-app/apis/resource-api.module.ts.eta +37 -0
  174. package/templates/nest/src/simple-app/events/branch-event/branch-event.module.ts._eta +20 -0
  175. package/templates/nest/src/simple-app/events/branch-event/branch-event.service.ts._eta +43 -0
  176. package/templates/nest/src/simple-app/events/branch-event/branch-event.type.ts._eta +7 -0
  177. package/templates/nest/src/simple-app/events/events.module.ts._eta +17 -0
  178. package/templates/nest/src/simple-app/events/organization-event/organization-event.module.ts._eta +13 -0
  179. package/templates/nest/src/simple-app/events/organization-event/organization-event.service.ts._eta +52 -0
  180. package/templates/nest/src/simple-app/events/organization-event/organization-event.type.ts._eta +1 -0
  181. package/templates/nest/src/simple-app/events/permission-event/permission-event.module.ts.eta +11 -0
  182. package/templates/nest/src/simple-app/events/permission-event/permission-event.service.ts.eta +33 -0
  183. package/templates/nest/src/simple-app/events/permission-event/permission-event.type.ts.eta +1 -0
  184. package/templates/nest/src/simple-app/events/readme.md.eta +76 -0
  185. package/templates/nest/src/simple-app/events/tenant-event/tenant-event.module.ts_eta +12 -0
  186. package/templates/nest/src/simple-app/events/tenant-event/tenant-event.service.ts_eta +30 -0
  187. package/templates/nest/src/simple-app/events/tenant-event/tenant-event.type.ts_eta +1 -0
  188. package/templates/nest/src/{simpleapp/additional.module.ts._eta → simple-app/features/features.module.ts._eta} +8 -7
  189. package/templates/nest/src/{printapi/printapi.module.ts.eta → simple-app/features/print/print.module.ts.eta} +4 -4
  190. package/templates/nest/src/{printapi/printapi.service.ts.eta → simple-app/features/print/print.service.ts.eta} +7 -7
  191. package/templates/nest/src/simple-app/features/readme.md._eta +6 -0
  192. package/templates/nest/src/simple-app/simple-app.module.ts.eta +32 -0
  193. package/templates/nuxt/.env._eta +2 -0
  194. package/templates/nuxt/app.vue.eta +15 -7
  195. package/templates/nuxt/components/header/HeaderSelectBranch.vue.eta +2 -1
  196. package/templates/nuxt/components/image/ImageAvatar.vue._eta +63 -0
  197. package/templates/nuxt/components/image/ImageOrganization.vue._eta +77 -0
  198. package/templates/nuxt/components/simpleApp/SimpleAppForm.vue.eta +1 -1
  199. package/templates/nuxt/components/simpleApp/SimpleAppFormToolBar.vue._eta +95 -20
  200. package/templates/nuxt/components/user/UserButtonCreateTenant.vue._eta +20 -21
  201. package/templates/nuxt/components/user/UserTenantPicker.vue._eta +1 -1
  202. package/templates/nuxt/composables/docformat.generate.ts.eta +4 -2
  203. package/templates/nuxt/enums/enums.generate.ts.eta +1 -1
  204. package/templates/nuxt/middleware/30.acl.global.ts.eta +6 -6
  205. package/templates/nuxt/nuxt.config.ts._eta +1 -0
  206. package/templates/nuxt/pages/login.vue._eta +21 -15
  207. package/templates/nuxt/pages/profile.vue._eta +24 -32
  208. package/templates/nuxt/plugins/20.simpleapp-userstore.ts.eta +31 -24
  209. package/templates/nuxt/plugins/50.simpleapp-client.ts.eta +2 -2
  210. package/templates/nuxt/providers/my-provider.ts.eta +5 -6
  211. package/templates/nuxt/simpleapp/generate/clients/SimpleAppClient.ts.eta +1 -0
  212. package/templates/nuxt/simpleapp/generate/defaults/index.ts.eta +1 -1
  213. package/templates/nuxt/simpleapp/generate/types/index.ts.eta +1 -1
  214. package/templates/nuxt/types/schema.ts.eta +1 -0
  215. package/templates/nuxt/types/user.ts.eta +39 -38
  216. package/templates/project/build.sh.eta +2 -2
  217. package/templates/basic/nest/apischema.ts.eta +0 -96
  218. package/templates/basic/nest/processor.ts.eta +0 -86
  219. package/templates/nest/src/cloudapi/cloudapi.module.ts._eta +0 -15
  220. package/templates/nest/src/cloudapi/cloudapi.service.ts._eta +0 -15
  221. package/templates/nest/src/enums/enums.generate.ts.eta +0 -23
  222. package/templates/nest/src/simpleapp/apischemas/index.ts._eta +0 -85
  223. package/templates/nest/src/simpleapp/generate/apischemas/index.ts.eta +0 -15
  224. package/templates/nest/src/simpleapp/generate/apischemas/simpleapp.apischema.ts.eta +0 -62
  225. package/templates/nest/src/simpleapp/generate/commons/audittrail.service.ts.eta +0 -52
  226. package/templates/nest/src/simpleapp/generate/commons/customkeycloa.guard.ts.eta +0 -45
  227. package/templates/nest/src/simpleapp/generate/commons/docnogenerator.service.ts.eta +0 -129
  228. package/templates/nest/src/simpleapp/generate/commons/providers/workflow.provider.ts.etax +0 -87
  229. package/templates/nest/src/simpleapp/generate/jsonschemas/index.ts.eta +0 -11
  230. package/templates/nest/src/simpleapp/generate/models/apievent.model.ts.eta +0 -27
  231. package/templates/nest/src/simpleapp/generate/processors/autoinc.processor.ts.eta +0 -88
  232. package/templates/nest/src/simpleapp/generate/processors/branch.processor.ts.eta +0 -110
  233. package/templates/nest/src/simpleapp/generate/processors/docno.processor.ts.eta +0 -77
  234. package/templates/nest/src/simpleapp/generate/processors/org.processor.ts.eta +0 -110
  235. package/templates/nest/src/simpleapp/generate/processors/perm.processor.ts.eta +0 -71
  236. package/templates/nest/src/simpleapp/generate/processors/sysmsg.processor.ts.eta +0 -49
  237. package/templates/nest/src/simpleapp/generate/processors/tenant.processor.ts.eta +0 -52
  238. package/templates/nest/src/simpleapp/generate/processors/webhooklog.processor.ts.eta +0 -45
  239. package/templates/nest/src/simpleapp/generate/types/index.ts.eta +0 -7
  240. package/templates/nest/src/simpleapp/generate/types/schema.type.ts.eta +0 -193
  241. package/templates/nest/src/simpleapp/generate/types/simpleapp.type.ts.eta +0 -299
  242. package/templates/nest/src/simpleapp/generate/types/workflow.type.ts.eta +0 -15
  243. package/templates/nest/src/simpleapp/generate/workflow/formschema/SimpleApproveReject.ts.eta +0 -8
  244. package/templates/nest/src/simpleapp/generate/workflow/workflow.apischema.ts.eta +0 -136
  245. package/templates/nest/src/simpleapp/generate/workflow/workflow.config.ts.eta +0 -79
  246. package/templates/nest/src/simpleapp/generate/workflow/workflow.controller.ts.eta +0 -414
  247. package/templates/nest/src/simpleapp/generate/workflow/workflow.delegate.ts.eta +0 -201
  248. package/templates/nest/src/simpleapp/generate/workflow/workflow.service.ts.eta +0 -641
  249. package/templates/nest/src/simpleapp/generate/workflow/workflow.type.ts.eta +0 -98
  250. package/templates/nest/src/simpleapp/generate/workflow/workflow.userservice.ts.eta +0 -83
  251. package/templates/nest/src/simpleapp/profile/profile.apischema.ts._eta +0 -95
  252. package/templates/nest/src/simpleapp/resolvers/readme.md.eta +0 -1
  253. package/templates/nest/src/simpleapp/services/autoinc.service.ts.etaxx +0 -59
  254. package/templates/nest/src/simpleapp/services/branch.service.ts.etaxxx +0 -83
  255. package/templates/nest/src/simpleapp/services/docno.service.ts.etaxxx +0 -59
  256. package/templates/nest/src/simpleapp/services/org.service.ts.etaxxx +0 -37
  257. package/templates/nest/src/simpleapp/services/perm.service.ts.etaxxx +0 -56
  258. package/templates/nest/src/simpleapp/services/sysmsg.service.ts._etaxxx +0 -43
  259. package/templates/nest/src/simpleapp/services/tenant.service.ts.etaxxx +0 -38
  260. package/templates/nest/src/simpleapp/services/user.service.ts.eta.old +0 -118
  261. package/templates/nest/src/simpleapp/services/userresolver.service.ts._eta +0 -67
  262. package/templates/nest/src/simpleapp/services/webhook.service.ts._eta +0 -37
  263. package/templates/nest/src/simpleapp/simpleapp.module.ts.eta +0 -80
  264. package/templates/nest/src/simpleapp/types/index.ts._eta +0 -45
  265. package/templates/nest/src/simpleapp/webhooks/branch.ts._eta +0 -44
  266. package/templates/nest/src/simpleapp/webhooks/index.ts._eta +0 -21
  267. package/templates/nest/src/simpleapp/workflows/bpmn/readme.md._eta +0 -1
  268. package/templates/nest/src/simpleapp/workflows/listeners/simpleapp.listener.ts.eta +0 -31
  269. package/templates/nest/src/simpleapp/workflows/readme.md._eta +0 -1
  270. package/templates/nuxt/components/image/ImageAvatar.vue.eta +0 -56
  271. package/templates/nuxt/components/image/ImageOrganization.vue.eta +0 -66
  272. /package/src/buildinschemas/{webhook.ts → webhook.ts.backup} +0 -0
  273. /package/src/buildinschemas/{webhooklog.ts → webhooklog.ts.backup} +0 -0
  274. /package/templates/basic/nest/{type.ts.eta → type.ts.eta-backup} +0 -0
  275. /package/templates/nest/src/{simpleapp/generate/commons/customkeycloak.guard.ts.eta → simple-app/.core/features/auth/keycloak/keycloak.guard.ts.eta} +0 -0
  276. /package/templates/nest/src/{simpleapp/generate/commons/roles → simple-app/.core/features/auth/role-guard}/roles.decorator.ts.eta +0 -0
  277. /package/templates/nest/src/{simpleapp/generate/commons/roles → simple-app/.core/features/auth/role-guard}/roles.group.ts.eta +0 -0
  278. /package/templates/nest/src/{simpleapp/generate/commons/dicts/documents.ts.eta → simple-app/.core/features/document-no-format/document.dict.ts.eta} +0 -0
  279. /package/templates/nest/src/{simpleapp/generate/commons/dicts/foreignkeys.ts.eta → simple-app/.core/features/foreign-key/foreignkeys.dict.ts.eta} +0 -0
  280. /package/templates/nest/src/{simpleapp/profile/profile.types.ts.eta → simple-app/.core/features/profile/profile.types.ts.eta-backup} +0 -0
  281. /package/templates/nest/src/{simpleapp/generate/commons/decorators → simple-app/.core/features/user-context}/appuser.decorator.ts.eta +0 -0
  282. /package/templates/nest/src/{simpleapp/generate/commons/exceptions/SimpleAppExceptionFilter.ts.eta → simple-app/.core/framework/exception-filter.ts.eta} +0 -0
  283. /package/templates/nest/src/{simpleapp/generate/commons → simple-app/.core/utils}/encryption.static.ts.eta +0 -0
  284. /package/templates/nest/src/{simpleapp → simple-app}/.gitignore.eta +0 -0
  285. /package/templates/nest/src/{printapi → simple-app/features/print}/api/.gitignore.eta +0 -0
  286. /package/templates/nest/src/{printapi → simple-app/features/print}/api/.npmignore.eta +0 -0
  287. /package/templates/nest/src/{printapi → simple-app/features/print}/api/.openapi-generator/FILES.eta +0 -0
  288. /package/templates/nest/src/{printapi → simple-app/features/print}/api/.openapi-generator/VERSION.eta +0 -0
  289. /package/templates/nest/src/{printapi → simple-app/features/print}/api/.openapi-generator-ignore.eta +0 -0
  290. /package/templates/nest/src/{printapi → simple-app/features/print}/api/api.ts.eta +0 -0
  291. /package/templates/nest/src/{printapi → simple-app/features/print}/api/base.ts.eta +0 -0
  292. /package/templates/nest/src/{printapi → simple-app/features/print}/api/common.ts.eta +0 -0
  293. /package/templates/nest/src/{printapi → simple-app/features/print}/api/configuration.ts.eta +0 -0
  294. /package/templates/nest/src/{printapi → simple-app/features/print}/api/git_push.sh.eta +0 -0
  295. /package/templates/nest/src/{printapi → simple-app/features/print}/api/index.ts.eta +0 -0
  296. /package/templates/nest/src/{printapi → simple-app/features/print}/api/openapitools.json.eta +0 -0
  297. /package/templates/project/{sharelibs → share-libs}/hello.ts._eta +0 -0
  298. /package/templates/project/{sharelibs → share-libs}/index.ts.eta +0 -0
  299. /package/templates/project/{sharelibs → share-libs}/money.ts.eta +0 -0
  300. /package/templates/project/{sharelibs → share-libs}/validate.ts.eta +0 -0
@@ -0,0 +1,26 @@
1
+ import { HttpException, HttpStatus } from '@nestjs/common';
2
+
3
+ export class CustomException extends HttpException {
4
+ constructor(errorCode: string, errorMessage: string, fields: { field: string; message: string }[] = [], status: number = 400) {
5
+ const errorResponse = {
6
+ ts: new Date().toISOString(),
7
+ elapsed: 0,
8
+ fields: fields,
9
+ statusCode: errorCode,
10
+ // statusMessage: errorMessage,
11
+ message: errorMessage,
12
+ data: {
13
+ message: errorMessage,
14
+ statusCode: errorCode,
15
+ timestamp: new Date().toISOString(),
16
+ path: '', // Dynamic path support
17
+ error: fields.reduce((acc, field) => {
18
+ acc[field.field] = field.message;
19
+ return acc;
20
+ }, {}),
21
+ },
22
+ };
23
+
24
+ super(errorResponse, status);
25
+ }
26
+ }
@@ -0,0 +1,12 @@
1
+ import { Module } from '@nestjs/common';
2
+ import { SimpleAppInterceptor } from './simple-app.interceptor';
3
+ import { SimpleAppMiddleware } from './simple-app.middleware';
4
+ import { SimpleAppCoreFeaturesModule } from '../features/simple-app-core-features.module';
5
+ import {SimpleAppCoreResourcesModule} from '../resources/core-resources.module'
6
+ @Module({
7
+ imports: [SimpleAppCoreFeaturesModule,SimpleAppCoreResourcesModule],
8
+ controllers: [],
9
+ providers: [SimpleAppMiddleware, SimpleAppInterceptor],
10
+ exports: [SimpleAppCoreFeaturesModule,SimpleAppCoreResourcesModule,SimpleAppMiddleware, SimpleAppInterceptor],
11
+ })
12
+ export class SimpleAppFrameworkModule {}
@@ -0,0 +1,3 @@
1
+ export * from './others.schema';
2
+ export * from './simple-app.schema';
3
+
@@ -0,0 +1,153 @@
1
+ import { ApiProperty } from '@nestjs/swagger';
2
+ import { Field, ObjectType, ID } from '@nestjs/graphql';
3
+ import GraphQLJSON, { GraphQLJSONObject } from 'graphql-type-json';
4
+
5
+ export class TMiniApiTokenInfo {
6
+ miniAppId: string;
7
+ }
8
+ export type TUserType = 'normal' | 'miniApi' | 'robot' | 'guest' | 'miniAppSdk';
9
+
10
+ export class PreparedKey {
11
+ _id: string;
12
+ fullName?: string;
13
+ uid?: string;
14
+ }
15
+
16
+
17
+ export class PatchManyRequest<T> {
18
+ @ApiProperty({ type: () => Object, required: true })
19
+ data: Partial<T>;
20
+
21
+ @ApiProperty({ type: () => Object, required: false })
22
+ filter?: Object | null;
23
+ }
24
+
25
+ @ObjectType()
26
+ export class UpdateManyResponse {
27
+ /** Indicates whether this write result was acknowledged. If not, then all other members of this result will be undefined */
28
+ @ApiProperty({ type: 'boolean' })
29
+ @Field()
30
+ acknowledged: boolean;
31
+
32
+ /** The number of documents that matched the filter */
33
+ @ApiProperty({ type: 'number' })
34
+ @Field()
35
+ matchedCount: number;
36
+
37
+ /** The number of documents that were modified */
38
+ @ApiProperty({ type: 'number' })
39
+ @Field()
40
+ modifiedCount: number;
41
+
42
+ /** The number of documents that were upserted */
43
+ @ApiProperty({ type: 'number' })
44
+ @Field()
45
+ upsertedCount: number;
46
+
47
+ /** The identifier of the inserted document if an upsert took place */
48
+ @ApiProperty({ type: 'string', nullable: true })
49
+ @Field()
50
+ upsertedId: string | null
51
+ }
52
+
53
+
54
+
55
+ @ObjectType()
56
+ export class CodeLabelValue {
57
+ @Field()
58
+ @ApiProperty({ type: () => String })
59
+ _id: string;
60
+ @Field()
61
+ @ApiProperty({ type: () => String })
62
+ code: string;
63
+ @Field()
64
+ @ApiProperty({ type: () => String })
65
+ label: string;
66
+ @Field()
67
+ @ApiProperty({ type: () => Number })
68
+ value: number;
69
+ }
70
+
71
+ @ObjectType()
72
+ export class KeyValue {
73
+ @Field()
74
+ @ApiProperty({ type: () => String })
75
+ key: string;
76
+ @Field()
77
+ @ApiProperty({ type: () => String })
78
+ value: string;
79
+ @Field()
80
+ @ApiProperty({ type: () => String, required: false })
81
+ id?: string;
82
+ }
83
+
84
+ @ObjectType()
85
+ export class ImportErrorMessgeError {
86
+ @Field()
87
+ @ApiProperty({ type: () => String })
88
+ message: string;
89
+
90
+ // @Field()
91
+ // @ApiProperty({ type: () => Object})
92
+ [key: string]: any;
93
+ }
94
+
95
+ @ObjectType()
96
+ export class ImportErrorMessage {
97
+ @Field()
98
+ @ApiProperty({ type: () => String })
99
+ code: string;
100
+ @Field()
101
+ @ApiProperty({ type: () => String })
102
+ label: string;
103
+ @Field()
104
+ @ApiProperty({ type: () => String })
105
+ message: string;
106
+ @Field()
107
+ @ApiProperty({ type: () => ImportErrorMessgeError })
108
+ error: ImportErrorMessgeError;
109
+ }
110
+
111
+ @ObjectType()
112
+ export class QueueJobProducerResponse {
113
+ @Field()
114
+ @ApiProperty({ type: () => String })
115
+ id: string;
116
+ @Field()
117
+ @ApiProperty({ type: () => String })
118
+ name: string;
119
+ @Field()
120
+ @ApiProperty({ type: () => String })
121
+ processor: string;
122
+ }
123
+
124
+ export class DocnoformatBranch {
125
+ _id: string;
126
+ code: string;
127
+ label: string;
128
+ branchId: number;
129
+ }
130
+
131
+ export class Docnoformat {
132
+ _id: string;
133
+ created: string;
134
+ updated: string;
135
+ createdBy: string;
136
+ updatedBy: string;
137
+ tenantId: number;
138
+ orgId: number;
139
+ branchId: number;
140
+ docNoFormatNo: string;
141
+ docNoFormatName: string;
142
+ active: boolean;
143
+ default: boolean;
144
+ docNoType: string;
145
+ docNoPattern: string;
146
+ nextNumber: number;
147
+ branch: DocnoformatBranch;
148
+ }
149
+
150
+ @ObjectType()
151
+ export class UniqueKeyExistResponse {
152
+ [code: string]: 0 | 1;
153
+ }
@@ -0,0 +1,172 @@
1
+ import { ApiProperty } from '@nestjs/swagger';
2
+ import { Field, ObjectType, ID } from '@nestjs/graphql';
3
+ import { JSONSchema7, JSONSchema7Type, JSONSchema7Version, JSONSchema7TypeName, JSONSchema7Definition } from 'json-schema';
4
+ import { Permission } from 'src/simple-app/.core/resources/permission/permission.schema';
5
+
6
+ export class ModifiedCollection {
7
+ [key: string]: string[];
8
+ }
9
+ export class ModifiedRecords {
10
+ createds: ModifiedCollection;
11
+ updateds: ModifiedCollection;
12
+ deleteds: ModifiedCollection;
13
+ }
14
+ export class DocNumberFormatResult {
15
+ formatId: string;
16
+ formatName: string;
17
+ result: string;
18
+ }
19
+
20
+ export class SearchBody {
21
+ filter?: Object;
22
+
23
+ fields?: any[];
24
+
25
+ sorts?: any[];
26
+ lookup?: Object;
27
+ }
28
+
29
+ export enum IsolationType {
30
+ 'none' = 'none',
31
+ 'org' = 'org',
32
+ 'tenant' = 'tenant',
33
+ 'branch' = 'branch',
34
+ }
35
+ export class MoreProjectionType {
36
+ [key: string]: string;
37
+ }
38
+ export class ApiEvent {
39
+ _id: string;
40
+ created: string;
41
+ updated?: string;
42
+ duration: number;
43
+ createdBy: string;
44
+ path: string;
45
+ ip: string;
46
+ method: string;
47
+ headers: any;
48
+ data?: any;
49
+ statusCode: number;
50
+ status: string;
51
+ errMsg?: string;
52
+ errData?: any;
53
+ }
54
+
55
+ export class DeleteResultType<T> {
56
+ data: T;
57
+ result: {
58
+ acknowledged: boolean;
59
+ deletedCount: number;
60
+ };
61
+ }
62
+
63
+ export class DocumentStatus {
64
+ status: string; //'CO', 'V', 'CL', 'D' and etc
65
+ statusName: string;
66
+ readOnly: boolean;
67
+ actions: string[]; //api name ['confirm','revert','close','void' and etc]
68
+ }
69
+ export enum RESTMethods {
70
+ 'post' = 'post',
71
+ 'get' = 'get',
72
+ 'delete' = 'delete',
73
+ 'put' = 'put',
74
+ 'patch' = 'patch',
75
+ }
76
+ export class DocumentApi {
77
+ action: string; //api action name
78
+ entryPoint: string; //api entry point example:':id', ':id/confirm'
79
+ queryPara?: string[]; //what query parameter wish to accept, example: ['description','date']
80
+ requiredRole?: string[]; // what special user role wish to allow for this api, example: ['SuperUser']
81
+ workflowSetting?: { bpmn: string }; //optional property, once define code gen connect the bpmn workflow
82
+ method: RESTMethods;
83
+ schema?: string; //any schema/type name in types & apischemas
84
+ responseType?: string; //any schema/type name for response
85
+ description: string; //description of api
86
+ }
87
+ //export enum IsolationType {"none"="none" , "tenant"="tenant","org"="org", "branch"="branch"}
88
+ // export class ImportLibs = {"lib":string,"as":string}
89
+ export class Formula {
90
+ jsonPath: string; //example: "$.subtotal","$.details[*]"
91
+ formula: string; //example "jslib.getDocumentSubTotal(@F{$.details})"
92
+ }
93
+ export class SchemaPrintFormat {
94
+ formatName: string;
95
+ formatId: string;
96
+ description?: string;
97
+ }
98
+ export class SchemaConfig {
99
+ isolationType: string;
100
+ requiredRoles?: string[];
101
+ pageType?: string;
102
+ uniqueKey?: string;
103
+ uniqueKeys?: string[][];
104
+ documentTitle?: string;
105
+ generateDocumentNumber?: boolean;
106
+ docNoPattern?: string;
107
+ documentDate?: string;
108
+ allStatus?: DocumentStatus[];
109
+ additionalApis?: DocumentApi[];
110
+ additionalAutoCompleteFields?: string[];
111
+ search?: string[];
112
+ // libs?:ImportLibs[] // both process class and frontend client class will import same lib
113
+ formulas?: Formula[];
114
+ documentType: string;
115
+ documentName: string;
116
+ collectionName?: string;
117
+ foreignKeys?: MyForeignKey;
118
+ }
119
+
120
+ @ObjectType()
121
+ export class ForeignKey {
122
+ @Field()
123
+ @ApiProperty({ type: () => String })
124
+ _id?: String;
125
+ @Field()
126
+ @ApiProperty({ type: () => String })
127
+ code?: String;
128
+ @Field()
129
+ @ApiProperty({ type: () => String })
130
+ label?: String;
131
+ [key: string]: any;
132
+ }
133
+ export class MyForeignKey {
134
+ [collectionname: string]: string[];
135
+ }
136
+
137
+ export class NoParam {}
138
+
139
+ export class DynamicParam {
140
+ [key: string]: any;
141
+ }
142
+
143
+ export class TextSearchBody {
144
+ keyword: string;
145
+ fields?: string[];
146
+ sorts?: string[][];
147
+ lookup?: Record<string, string>;
148
+ }
149
+
150
+ export class SchemaFields {
151
+ _id?: string;
152
+ tenantId?: number;
153
+ orgId?: number;
154
+ branchId?: number;
155
+ created?: string;
156
+ updated?: string;
157
+ createdBy?: string;
158
+ updatedBy?: string;
159
+ __v?: number;
160
+ documentStatus?: string;
161
+ [key: string]: any; //SimpleAppJSONSchema7 | SimpleAppJSONSchema7[] | undefined;
162
+ }
163
+
164
+ export class SimpleAppJSONSchema7 implements JSONSchema7 {
165
+ 'x-simpleapp-config': SchemaConfig;
166
+ }
167
+ export const SimpleAppJSONSchema7Definition = SimpleAppJSONSchema7;
168
+
169
+ export class BranchPermission extends Permission {
170
+ @ApiProperty({ type: () => ForeignKey })
171
+ branch: ForeignKey;
172
+ }
@@ -4,41 +4,31 @@
4
4
  * last change 2023-03-17
5
5
  * Author: Ks Tan
6
6
  */
7
- import {
8
- Injectable,
9
- NestInterceptor,
10
- ExecutionContext,
11
- CallHandler,
12
- BadGatewayException,
13
- HttpException,
14
- } from '@nestjs/common';
7
+ import { Injectable, NestInterceptor, ExecutionContext, CallHandler, BadGatewayException, HttpException } from '@nestjs/common';
15
8
  import { Observable, throwError } from 'rxjs';
16
9
  import { catchError, tap } from 'rxjs/operators';
17
10
  import { Model, Connection, ClientSession } from 'mongoose';
18
11
  import { InjectConnection, InjectModel } from '@nestjs/mongoose';
19
- import { UserContext } from '../user.context';
20
- import { ApiEvent } from '../../types';
12
+ import { UserContext } from '../features/user-context/user.context';
13
+ import { ApiEvent } from './schemas';
21
14
  @Injectable()
22
- export class ResponseInterceptor implements NestInterceptor {
15
+ export class SimpleAppInterceptor implements NestInterceptor {
23
16
  constructor(
24
17
  @InjectConnection() private readonly connection: Connection,
25
18
  @InjectModel('ApiEvent') private apieventmodel: Model<ApiEvent>,
26
19
  ) {}
27
20
 
28
- async intercept(
29
- context: ExecutionContext,
30
- next: CallHandler,
31
- ): Promise<Observable<any>> {
32
-
21
+ async intercept(context: ExecutionContext, next: CallHandler): Promise<Observable<any>> {
33
22
  //not http request then exclude such as graphql
34
- if(context.getType()!='http'){
35
- // obtain usersession here
36
- return next.handle().pipe(tap(async () => {
37
- //console.log("none http, do nothing at interceptor")
38
- }))
23
+ if (context.getType() != 'http') {
24
+ // obtain usersession here
25
+ return next.handle().pipe(
26
+ tap(async () => {
27
+ //console.log("none http, do nothing at interceptor")
28
+ }),
29
+ );
39
30
  }
40
31
 
41
-
42
32
  const req = context.switchToHttp().getRequest();
43
33
  const resp = context.switchToHttp().getResponse();
44
34
  //console.log("want to get user session:", Object.keys(req))
@@ -1,25 +1,27 @@
1
1
  /**
2
2
  * This file was automatically generated by simpleapp generator. Every
3
3
  * MODIFICATION OVERRIDE BY GENERATEOR
4
- * last change 2024-03-17
4
+ * last change 2025-08-27
5
5
  * Author: Ks Tan
6
6
  */
7
7
 
8
8
  import Base64URL from '@darkwolf/base64url';
9
- import { BadRequestException, Injectable, Logger, NestMiddleware } from '@nestjs/common';
9
+ import { BadRequestException, Injectable, Logger, NestMiddleware, ServiceUnavailableException } from '@nestjs/common';
10
10
  import { InjectModel } from '@nestjs/mongoose';
11
11
  import { NextFunction, Request, Response } from 'express';
12
12
  import { Model } from 'mongoose';
13
- import { Permission } from '../../types/perm.type';
14
- import { User } from '../../types/user.type';
15
- import { Appintegration } from '../../types/appintegration.type';
16
- import { Miniappinstallation, Webhook } from '../../types';
17
- import { UserContext } from '../user.context';
18
- import { ApiKeyService } from './api-key/api-key.service';
19
- import { HEADER_X_API_KEY, HEADER_X_API_SECRET } from '../constants/header';
20
-
13
+ import { Permission } from '../resources/permission/permission.schema';
14
+ import { User } from '../resources/user/user.schema';
15
+ // import { Miniappinstallation } from '../../resources/';
16
+ import { Webhook } from '../features/webhook/schemas';
17
+ // import { Appintegration } from '../../types/appintegration.type';
18
+ import { MiniAppInstallation } from 'src/simple-app/.core/resources/mini-app-installation/mini-app-installation.schema';
19
+ import { UserContext } from '../features/user-context/user.context';
20
+ import { ApiKeyService } from '../features/auth/api-key/api-key.service';
21
+ import { HEADER_X_API_KEY, HEADER_X_API_SECRET } from '../features/auth/api-key/api-key.type';
22
+ import { Environment } from '../features/maintenance/schemas';
21
23
  @Injectable()
22
- export class TenantMiddleware implements NestMiddleware {
24
+ export class SimpleAppMiddleware implements NestMiddleware {
23
25
  protected defaultXOrg = Base64URL.encodeText('0-0-0');
24
26
 
25
27
  protected excludeXOrgPaths = ['/profile', '/profile/tenant', '/profile/session'];
@@ -29,11 +31,14 @@ export class TenantMiddleware implements NestMiddleware {
29
31
  constructor(
30
32
  @InjectModel('User') private readonly userModel: Model<User>,
31
33
  @InjectModel('Permission') private readonly permModel: Model<Permission>,
32
- @InjectModel('Appintegration') private readonly appModel: Model<Appintegration>,
34
+ // @InjectModel('Appintegration') private readonly appModel: Model<Appintegration>,
33
35
  @InjectModel('Webhook') private readonly webhookModel: Model<Webhook>,
34
- @InjectModel('Miniappinstallation') private readonly miniAppInstallationModel: Model<Miniappinstallation>,
36
+ @InjectModel('MiniAppInstallation') private readonly miniAppInstallationModel: Model<MiniAppInstallation>,
37
+ @InjectModel('Environment') private envModel: Model<Environment>,
35
38
  private readonly apiKeyService: ApiKeyService,
36
- ) {}
39
+ ) {
40
+ // console.log("middleware userModel aggregate",this.userModel)
41
+ }
37
42
 
38
43
  requireXOrg(baseurl: string): boolean {
39
44
  for (let i = 0; i < this.excludeXOrgPaths.length; i++) {
@@ -51,16 +56,27 @@ export class TenantMiddleware implements NestMiddleware {
51
56
  return;
52
57
  }
53
58
 
59
+ const envs = await this.envModel.find();
60
+ let maintenanceMode = false;
61
+ if (envs) {
62
+ maintenanceMode = !envs[0].systemEnable;
63
+ }
64
+
54
65
  let tokenStr: string = req.get('authorization') ?? '';
55
66
  tokenStr = tokenStr.replace('Bearer ', '');
56
67
  const xOrg = req.get('x-org') ?? this.defaultXOrg;
57
68
 
58
- const user = new UserContext(this.userModel, this.permModel, this.appModel, this.miniAppInstallationModel);
69
+ const user = new UserContext(this.userModel, this.permModel, this.miniAppInstallationModel);
59
70
 
60
71
  if (req.baseUrl == '/graphql') {
61
72
  if (tokenStr) {
62
73
  await user.setCurrentUserInfo(tokenStr, xOrg, this.webhookModel);
63
74
  }
75
+
76
+ if (maintenanceMode && !user.isRealmAdmin()) {
77
+ throw new ServiceUnavailableException('System in maintenance mode');
78
+ }
79
+
64
80
  req['sessionuser'] = user;
65
81
  next();
66
82
  return;
@@ -74,6 +90,9 @@ export class TenantMiddleware implements NestMiddleware {
74
90
  await this.apiKeyService.validate(req, user);
75
91
 
76
92
  req['sessionuser'] = user;
93
+ if (maintenanceMode) {
94
+ throw new ServiceUnavailableException('System in maintenance mode');
95
+ }
77
96
  next();
78
97
  return;
79
98
  } catch (e) {
@@ -110,6 +129,11 @@ export class TenantMiddleware implements NestMiddleware {
110
129
 
111
130
  try {
112
131
  await user.setCurrentUserInfo(tokenStr, xOrg, this.webhookModel);
132
+
133
+ if (maintenanceMode && !user.isRealmAdmin()) {
134
+ throw new ServiceUnavailableException('System in maintenance mode');
135
+ }
136
+
113
137
  user.detectMiniAppSdkRequest(req);
114
138
  if (user.getId() == '' && this.requireXOrg(req.baseUrl)) {
115
139
  this.logger.log('Access deny for user:', req.baseUrl);
@@ -0,0 +1,3 @@
1
+ - leave everything in this folder under change!!
2
+ - any modification will be override by generator
3
+ - store system librarly and some system resources
@@ -0,0 +1,38 @@
1
+ /**
2
+ * This file was automatically generated by simpleapp generator. Every
3
+ * MODIFICATION OVERRIDE BY GENERATEOR
4
+ * last change 2024-04-02
5
+ * Author: Ks Tan
6
+ */
7
+ import { Module } from '@nestjs/common';
8
+
9
+
10
+ <% for(let i=0;i<it.modules.length; i++){ %>
11
+ <% let obj = it.modules[i]%>
12
+ <% if(getSystemResources().includes(obj.docname.toLowerCase())){%>
13
+ import { <%= obj.typename %>Module } from './<%= camelToKebab(obj.resourcename) %>/<%= camelToKebab(obj.resourcename) %>.module';
14
+ <%}%>
15
+ <%}%>
16
+
17
+
18
+ @Module({
19
+ imports: [
20
+ <% for(let i=0;i<it.modules.length; i++){ %>
21
+ <% let obj = it.modules[i]%>
22
+ <% if(getSystemResources().includes(obj.docname.toLowerCase())){%>
23
+ <%= obj.typename %>Module,
24
+ <%}%>
25
+ <%}%>
26
+ ],
27
+ controllers:[],
28
+ providers: [],
29
+ exports: [
30
+ <% for(let i=0;i<it.modules.length; i++){ %>
31
+ <% let obj = it.modules[i]%>
32
+ <% if(getSystemResources().includes(obj.docname.toLowerCase())){%>
33
+ <%= obj.typename %>Module,
34
+ <%}%>
35
+ <%}%>
36
+ ],
37
+ })
38
+ export class SimpleAppCoreResourcesModule {}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * This file was automatically generated by simpleapp generator. Every
3
+ * MODIFICATION OVERRIDE BY GENERATEOR
4
+ * last change 2024-04-02
5
+ * Author: Ks Tan
6
+ */
7
+ import { Module } from '@nestjs/common';
8
+
9
+ import { SimpleAppCoreFeaturesModule } from './features/simple-app-core-features.module';
10
+ import { SimpleAppFrameworkModule } from './framework/framework.module';
11
+ import { SimpleAppCoreResourcesModule } from './resources/core-resources.module';
12
+ @Module({
13
+ imports: [SimpleAppCoreFeaturesModule, SimpleAppCoreResourcesModule,SimpleAppFrameworkModule],
14
+ controllers: [],
15
+ providers: [],
16
+ exports: [SimpleAppCoreFeaturesModule, SimpleAppCoreResourcesModule,SimpleAppFrameworkModule],
17
+ })
18
+ export class SimpleAppCoreModule {}
@@ -0,0 +1,47 @@
1
+ import dayjs from 'dayjs';
2
+ import duration from 'dayjs/plugin/duration';
3
+ import timezone from 'dayjs/plugin/timezone';
4
+ import utc from 'dayjs/plugin/utc';
5
+
6
+ dayjs.extend(utc);
7
+ dayjs.extend(duration);
8
+ dayjs.extend(timezone);
9
+
10
+ export const getDayJs = () => {
11
+ return dayjs;
12
+ };
13
+
14
+
15
+ /**
16
+ * this function is used to convert user time date to UTC
17
+ * @param date
18
+ * @param timeZone from appuser, example Asia/Malaysia
19
+ * @returns
20
+ */
21
+ export const convertToStartOfDayUTC = (date: string, timeZone: string): string => {
22
+ const startOfDay = dayjs.tz(date, timeZone).startOf('day');
23
+ const utcTime = startOfDay.utc().format();
24
+ return utcTime;
25
+ }
26
+
27
+ /**
28
+ * this function is used to convert user time date to UTC
29
+ * @param appuser
30
+ * @param date
31
+ * @returns
32
+ */
33
+ export const convertToEndOfDayUTC = (date: string, timeZone: string): string => {
34
+ const endOfDay = dayjs.tz(date, timeZone).endOf('day');
35
+ const utcTime = endOfDay.utc().format();
36
+ return utcTime;
37
+ }
38
+
39
+ /**
40
+ * this function is used to convert UTC time to user timezone
41
+ * @param date example, 2024-12-31T23:45:00Z
42
+ * @param timeZone example, Asia/Kuala_Lumpur
43
+ */
44
+ export const convertUTCToTimezone = (date: string, timeZone: string): string => {
45
+ const localTime = dayjs(date).tz(timeZone).format();
46
+ return localTime;
47
+ }
@@ -0,0 +1,11 @@
1
+ import * as countrytimezone from 'countries-and-timezones';
2
+
3
+ import countryToCurrency, { Countries } from 'country-to-currency';
4
+
5
+ export const getCurrencyCode = (countryCode: Countries) => {
6
+ return countryToCurrency[countryCode];
7
+ };
8
+
9
+ export const getCountriesForTimezone = (timeZone: string) => {
10
+ return countrytimezone.getCountriesForTimezone(timeZone)[0];
11
+ };
@@ -0,0 +1 @@
1
+ export const camelToKebab = (value) => value.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase()
@@ -0,0 +1,3 @@
1
+ - leave everything in this folder under change!!
2
+ - any modification will be override by generator
3
+ - jsonschemas will generate all resources here