rez_core 4.0.134 → 4.0.136

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 (438) hide show
  1. package/.claude/settings.local.json +26 -0
  2. package/.idea/250218_nodejs_core.iml +9 -0
  3. package/.idea/codeStyles/Project.xml +59 -0
  4. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  5. package/.idea/copilot.data.migration.agent.xml +6 -0
  6. package/.idea/copilot.data.migration.ask.xml +6 -0
  7. package/.idea/copilot.data.migration.ask2agent.xml +6 -0
  8. package/.idea/copilot.data.migration.edit.xml +6 -0
  9. package/.idea/inspectionProfiles/Project_Default.xml +6 -0
  10. package/.idea/misc.xml +6 -0
  11. package/.idea/modules.xml +8 -0
  12. package/.idea/prettier.xml +6 -0
  13. package/.idea/vcs.xml +6 -0
  14. package/.prettierrc +3 -3
  15. package/README.md +99 -99
  16. package/dist/config/config.module.js +2 -2
  17. package/dist/config/config.module.js.map +1 -1
  18. package/dist/config/database.config.d.ts +1 -1
  19. package/dist/config/database.config.js +15 -12
  20. package/dist/config/database.config.js.map +1 -1
  21. package/dist/module/auth/guards/role.guard.js +3 -3
  22. package/dist/module/auth/services/auth.service.js +3 -3
  23. package/dist/module/auth/services/auth.service.js.map +1 -1
  24. package/dist/module/enterprise/entity/organization.entity.js +1 -1
  25. package/dist/module/filter/repository/saved-filter.repository.js +4 -4
  26. package/dist/module/filter/service/filter-evaluator.service.js +2 -2
  27. package/dist/module/filter/service/filter.service.js +22 -22
  28. package/dist/module/integration/entity/integration-config.entity.js +6 -6
  29. package/dist/module/integration/entity/integration-config.entity.js.map +1 -1
  30. package/dist/module/integration/entity/integration-entity-mapper.entity.js +1 -1
  31. package/dist/module/integration/entity/integration-entity-mapper.entity.js.map +1 -1
  32. package/dist/module/integration/entity/integration-source.entity.js +4 -4
  33. package/dist/module/integration/entity/integration-source.entity.js.map +1 -1
  34. package/dist/module/integration/entity/user-integration.entity.js +4 -4
  35. package/dist/module/integration/entity/user-integration.entity.js.map +1 -1
  36. package/dist/module/integration/examples/usage.example.js +9 -9
  37. package/dist/module/integration/service/integration.service.js +1 -1
  38. package/dist/module/integration/service/wrapper.service.d.ts +1 -3
  39. package/dist/module/integration/service/wrapper.service.js +61 -64
  40. package/dist/module/integration/service/wrapper.service.js.map +1 -1
  41. package/dist/module/listmaster/entity/list-master-items.entity.js +3 -3
  42. package/dist/module/listmaster/entity/list-master-items.entity.js.map +1 -1
  43. package/dist/module/listmaster/entity/list-master.entity.js +4 -4
  44. package/dist/module/listmaster/entity/list-master.entity.js.map +1 -1
  45. package/dist/module/listmaster/service/list-master-item.service.js +2 -2
  46. package/dist/module/mapper/entity/field-mapper.entity.js +6 -6
  47. package/dist/module/mapper/entity/field-mapper.entity.js.map +1 -1
  48. package/dist/module/mapper/service/field-mapper.service.js +6 -6
  49. package/dist/module/mapper/service/field-mapper.service.js.map +1 -1
  50. package/dist/module/mapper/service/mapper.service.js +2 -2
  51. package/dist/module/meta/entity/entity-master.entity.js +1 -1
  52. package/dist/module/meta/entity/entity-master.entity.js.map +1 -1
  53. package/dist/module/meta/entity/view-master.entity.js +1 -1
  54. package/dist/module/meta/entity/view-master.entity.js.map +1 -1
  55. package/dist/module/meta/service/attribute-master.service.js +1 -1
  56. package/dist/module/meta/service/attribute-master.service.js.map +1 -1
  57. package/dist/module/meta/service/entity-dynamic.service.js +9 -9
  58. package/dist/module/meta/service/entity-list.service.js +3 -3
  59. package/dist/module/meta/service/entity-master.service.js +3 -3
  60. package/dist/module/meta/service/entity-relation.service.js +11 -11
  61. package/dist/module/meta/service/entity-service-impl.service.js +3 -3
  62. package/dist/module/meta/service/resolver.service.js +5 -5
  63. package/dist/module/meta/service/resolver.service.js.map +1 -1
  64. package/dist/module/module/repository/menu.repository.js +13 -13
  65. package/dist/module/module/repository/menu.repository.js.map +1 -1
  66. package/dist/module/notification/entity/otp.entity.js +1 -1
  67. package/dist/module/notification/entity/otp.entity.js.map +1 -1
  68. package/dist/module/notification/service/notification.service.js +9 -9
  69. package/dist/module/user/controller/login.controller.js +18 -18
  70. package/dist/module/user/entity/user-role-mapping.entity.js +1 -1
  71. package/dist/module/user/entity/user-role-mapping.entity.js.map +1 -1
  72. package/dist/module/user/service/role.service.js +4 -4
  73. package/dist/module/user/service/user-session.service.js +2 -2
  74. package/dist/module/workflow/entity/action-data.entity.js +1 -1
  75. package/dist/module/workflow/entity/action-data.entity.js.map +1 -1
  76. package/dist/module/workflow/entity/action.entity.js +1 -1
  77. package/dist/module/workflow/entity/action.entity.js.map +1 -1
  78. package/dist/module/workflow/entity/comm-template.entity.js +1 -1
  79. package/dist/module/workflow/entity/comm-template.entity.js.map +1 -1
  80. package/dist/module/workflow/repository/action.repository.js +20 -20
  81. package/dist/module/workflow/repository/comm-template.repository.js +6 -6
  82. package/dist/module/workflow/repository/form-master.repository.js +2 -2
  83. package/dist/module/workflow/repository/stage-group.repository.js +23 -23
  84. package/dist/module/workflow/repository/stage-movement.repository.js +15 -15
  85. package/dist/module/workflow/repository/stage.repository.js +8 -8
  86. package/dist/module/workflow/repository/task.repository.d.ts +1 -3
  87. package/dist/module/workflow/repository/task.repository.js +3 -8
  88. package/dist/module/workflow/repository/task.repository.js.map +1 -1
  89. package/dist/module/workflow/service/action-template-mapping.service.js +22 -22
  90. package/dist/module/workflow/service/action.service.js +7 -7
  91. package/dist/module/workflow/service/entity-modification.service.js +6 -6
  92. package/dist/module/workflow/service/stage-group.service.js +2 -2
  93. package/dist/module/workflow/service/stage.service.js +2 -2
  94. package/dist/module/workflow/service/task.service.js +41 -34
  95. package/dist/module/workflow/service/task.service.js.map +1 -1
  96. package/dist/module/workflow/service/workflow-list-master.service.js +15 -15
  97. package/dist/module/workflow/service/workflow-meta.service.js +47 -49
  98. package/dist/module/workflow/service/workflow-meta.service.js.map +1 -1
  99. package/dist/module/workflow/service/workflow.service.js +2 -2
  100. package/dist/tsconfig.build.tsbuildinfo +1 -1
  101. package/dist/utils/service/loggingUtil.service.d.ts +2 -9
  102. package/dist/utils/service/loggingUtil.service.js +14 -65
  103. package/dist/utils/service/loggingUtil.service.js.map +1 -1
  104. package/dist/utils/service/reflection-helper.service.js +2 -2
  105. package/dist/utils/utils.module.js +0 -2
  106. package/dist/utils/utils.module.js.map +1 -1
  107. package/docs/modules/event-driven-integration-design.md +91 -91
  108. package/docs/modules/integration.md +250 -250
  109. package/eslint.config.mjs +34 -34
  110. package/nest-cli.json +14 -14
  111. package/package.json +120 -119
  112. package/server.log +850 -0
  113. package/src/app.controller.ts +12 -12
  114. package/src/app.module.ts +52 -52
  115. package/src/app.service.ts +8 -8
  116. package/src/config/config.module.ts +17 -18
  117. package/src/config/database.config.ts +47 -23
  118. package/src/constant/global.constant.ts +67 -67
  119. package/src/core.module.ts +81 -81
  120. package/src/decorators/roles.decorator.ts +7 -7
  121. package/src/dtos/response.dto.ts +6 -6
  122. package/src/dtos/response.ts +5 -5
  123. package/src/index.ts +1 -1
  124. package/src/module/auth/auth.module.ts +49 -49
  125. package/src/module/auth/controller/auth.controller.ts +28 -28
  126. package/src/module/auth/guards/google-auth.guard.ts +9 -9
  127. package/src/module/auth/guards/jwt.guard.ts +22 -22
  128. package/src/module/auth/guards/role.guard.ts +68 -68
  129. package/src/module/auth/services/auth.service.ts +50 -50
  130. package/src/module/auth/services/jwt.service.ts +11 -11
  131. package/src/module/auth/strategies/google.strategy.ts +54 -54
  132. package/src/module/auth/strategies/jwt.strategy.ts +58 -58
  133. package/src/module/auth/strategies/local.strategy.ts +13 -13
  134. package/src/module/dashboard/controller/dashboard.controller.ts +36 -36
  135. package/src/module/dashboard/dashboard.module.ts +21 -21
  136. package/src/module/dashboard/entity/dashboard_page_data.entity.ts +27 -27
  137. package/src/module/dashboard/entity/widget_master.entity.ts +18 -18
  138. package/src/module/dashboard/repository/dashboard.repository.ts +42 -42
  139. package/src/module/dashboard/service/dashboard.service.ts +73 -73
  140. package/src/module/dev/dev.module.ts +12 -12
  141. package/src/module/dev/service/dev.service.ts +7 -7
  142. package/src/module/enterprise/controller/organization.controller.ts +36 -36
  143. package/src/module/enterprise/enterprise.module.ts +30 -30
  144. package/src/module/enterprise/entity/enterprise.entity.ts +37 -37
  145. package/src/module/enterprise/entity/organization-app-mapping.entity.ts +13 -13
  146. package/src/module/enterprise/entity/organization.entity.ts +92 -92
  147. package/src/module/enterprise/repository/enterprise.repository.ts +31 -31
  148. package/src/module/enterprise/repository/organization.repository.ts +26 -26
  149. package/src/module/enterprise/repository/school.repository.ts +278 -278
  150. package/src/module/enterprise/service/brand.service.ts +5 -5
  151. package/src/module/enterprise/service/enterprise.service.ts +16 -16
  152. package/src/module/enterprise/service/organization-app-mapping.service.ts +4 -4
  153. package/src/module/enterprise/service/organization.service.ts +145 -145
  154. package/src/module/filter/controller/filter.controller.ts +84 -84
  155. package/src/module/filter/dto/filter-request.dto.ts +38 -38
  156. package/src/module/filter/entity/saved-filter-detail.entity.ts +41 -41
  157. package/src/module/filter/entity/saved-filter-master.entity.ts +23 -23
  158. package/src/module/filter/filter.module.ts +31 -31
  159. package/src/module/filter/repository/saved-filter.repository.ts +168 -168
  160. package/src/module/filter/service/filter-evaluator.service.ts +86 -86
  161. package/src/module/filter/service/filter.service.ts +1005 -1005
  162. package/src/module/filter/service/saved-filter.service.ts +170 -170
  163. package/src/module/ics/controller/ics.controller.ts +21 -21
  164. package/src/module/ics/dto/ics.dto.ts +55 -55
  165. package/src/module/ics/ics.module.ts +13 -13
  166. package/src/module/ics/service/ics.service.ts +57 -57
  167. package/src/module/integration/controller/calender-event.controller.ts +31 -31
  168. package/src/module/integration/controller/integration.controller.ts +662 -662
  169. package/src/module/integration/controller/wrapper.controller.ts +37 -37
  170. package/src/module/integration/dto/create-config.dto.ts +526 -526
  171. package/src/module/integration/entity/integration-config.entity.ts +112 -112
  172. package/src/module/integration/entity/integration-entity-mapper.entity.ts +14 -14
  173. package/src/module/integration/entity/integration-source.entity.ts +17 -17
  174. package/src/module/integration/entity/user-integration.entity.ts +71 -71
  175. package/src/module/integration/examples/usage.example.ts +338 -338
  176. package/src/module/integration/factories/base.factory.ts +7 -7
  177. package/src/module/integration/factories/email.factory.ts +49 -49
  178. package/src/module/integration/factories/integration.factory.ts +121 -121
  179. package/src/module/integration/factories/sms.factory.ts +51 -51
  180. package/src/module/integration/factories/telephone.factory.ts +41 -41
  181. package/src/module/integration/factories/whatsapp.factory.ts +56 -56
  182. package/src/module/integration/integration.module.ts +110 -110
  183. package/src/module/integration/service/calendar-event.service.ts +118 -118
  184. package/src/module/integration/service/integration-entity-mapper.service.ts +17 -17
  185. package/src/module/integration/service/integration-queue.service.ts +229 -229
  186. package/src/module/integration/service/integration.service.ts +2633 -2633
  187. package/src/module/integration/service/oauth.service.ts +224 -224
  188. package/src/module/integration/service/wrapper.service.ts +493 -700
  189. package/src/module/integration/strategies/email/gmail-api.strategy.ts +280 -280
  190. package/src/module/integration/strategies/email/outlook-api.strategy.ts +44 -44
  191. package/src/module/integration/strategies/email/outlook.strategy.ts +64 -64
  192. package/src/module/integration/strategies/email/sendgrid-api.strategy.ts +260 -260
  193. package/src/module/integration/strategies/integration.strategy.ts +97 -97
  194. package/src/module/integration/strategies/sms/gupshup-sms.strategy.ts +146 -146
  195. package/src/module/integration/strategies/sms/msg91-sms.strategy.ts +164 -164
  196. package/src/module/integration/strategies/sms/tubelight-sms.strategy.ts +163 -163
  197. package/src/module/integration/strategies/telephone/ozonetel-voice.strategy.ts +238 -238
  198. package/src/module/integration/strategies/telephone/tubelight-voice.strategy.ts +210 -210
  199. package/src/module/integration/strategies/whatsapp/gupshup-whatsapp.strategy.ts +359 -359
  200. package/src/module/integration/strategies/whatsapp/tubelight-whatsapp.strategy.ts +372 -372
  201. package/src/module/integration/strategies/whatsapp/whatsapp-cloud.strategy.ts +403 -403
  202. package/src/module/integration/strategies/whatsapp/whatsapp.strategy.ts +57 -57
  203. package/src/module/layout/controller/layout.controller.ts +47 -47
  204. package/src/module/layout/entity/header-items.entity.ts +28 -28
  205. package/src/module/layout/entity/header-section.entity.ts +19 -19
  206. package/src/module/layout/layout.module.ts +21 -21
  207. package/src/module/layout/repository/header-items.repository.ts +18 -18
  208. package/src/module/layout/repository/header-section.repository.ts +22 -22
  209. package/src/module/layout/service/header-section.service.ts +25 -25
  210. package/src/module/layout_preference/controller/layout_preference.controller.ts +73 -73
  211. package/src/module/layout_preference/entity/layout_preference.entity.ts +28 -28
  212. package/src/module/layout_preference/layout_preference.module.ts +22 -22
  213. package/src/module/layout_preference/repository/layout_preference.repository.ts +65 -65
  214. package/src/module/layout_preference/service/layout_preference.service.ts +191 -191
  215. package/src/module/lead/controller/lead.controller.ts +30 -30
  216. package/src/module/lead/lead.module.ts +14 -14
  217. package/src/module/lead/repository/lead.repository.ts +41 -41
  218. package/src/module/lead/service/lead.service.ts +54 -54
  219. package/src/module/listmaster/controller/list-master.controller.ts +230 -230
  220. package/src/module/listmaster/entity/list-master-items.entity.ts +43 -43
  221. package/src/module/listmaster/entity/list-master.entity.ts +33 -33
  222. package/src/module/listmaster/listmaster.module.ts +46 -46
  223. package/src/module/listmaster/repository/list-master-items.repository.ts +169 -169
  224. package/src/module/listmaster/repository/list-master.repository.ts +46 -46
  225. package/src/module/listmaster/service/list-master-engine.ts +19 -19
  226. package/src/module/listmaster/service/list-master-extension.interface.ts +4 -4
  227. package/src/module/listmaster/service/list-master-item.service.ts +292 -292
  228. package/src/module/listmaster/service/list-master-registry.ts +15 -15
  229. package/src/module/listmaster/service/list-master.service.ts +535 -535
  230. package/src/module/mapper/controller/field-mapper.controller.ts +76 -76
  231. package/src/module/mapper/controller/mapper.controller.ts +20 -20
  232. package/src/module/mapper/dto/field-mapper.dto.ts +14 -14
  233. package/src/module/mapper/entity/field-lovs.entity.ts +19 -19
  234. package/src/module/mapper/entity/field-mapper.entity.ts +53 -53
  235. package/src/module/mapper/entity/mapper.entity.ts +16 -16
  236. package/src/module/mapper/mapper.module.ts +34 -34
  237. package/src/module/mapper/repository/field-lovs.repository.ts +35 -35
  238. package/src/module/mapper/repository/field-mapper.repository.ts +42 -42
  239. package/src/module/mapper/repository/mapper.repository.ts +15 -15
  240. package/src/module/mapper/service/field-mapper.service.ts +266 -271
  241. package/src/module/mapper/service/mapper.service.ts +79 -79
  242. package/src/module/master/controller/master.controller.ts +74 -74
  243. package/src/module/master/service/master.service.ts +483 -483
  244. package/src/module/meta/controller/app-master.controller.ts +38 -38
  245. package/src/module/meta/controller/attribute-master.controller.ts +66 -66
  246. package/src/module/meta/controller/entity-dynamic.controller.ts +125 -125
  247. package/src/module/meta/controller/entity-master.controller.ts +28 -28
  248. package/src/module/meta/controller/entity-relation.controller.ts +36 -36
  249. package/src/module/meta/controller/entity.controller.ts +392 -392
  250. package/src/module/meta/controller/entity.public.controller.ts +75 -75
  251. package/src/module/meta/controller/media.controller.ts +107 -107
  252. package/src/module/meta/controller/meta.controller.ts +96 -96
  253. package/src/module/meta/controller/view-master.controller.ts +86 -86
  254. package/src/module/meta/dto/entity-list-data.dto.ts +6 -6
  255. package/src/module/meta/dto/entity-tab.dto.ts +4 -4
  256. package/src/module/meta/dto/entity-table.dto.ts +9 -9
  257. package/src/module/meta/entity/app-master.entity.ts +34 -34
  258. package/src/module/meta/entity/attribute-master.entity.ts +89 -89
  259. package/src/module/meta/entity/base-entity.entity.ts +75 -75
  260. package/src/module/meta/entity/entity-master.entity.ts +85 -85
  261. package/src/module/meta/entity/entity-relation-data.entity.ts +29 -29
  262. package/src/module/meta/entity/entity-relation.entity.ts +23 -23
  263. package/src/module/meta/entity/entity-table-column.entity.ts +61 -61
  264. package/src/module/meta/entity/entity-table.entity.ts +50 -50
  265. package/src/module/meta/entity/media-data.entity.ts +32 -32
  266. package/src/module/meta/entity/preference.entity.ts +62 -62
  267. package/src/module/meta/entity/view-master.entity.ts +41 -41
  268. package/src/module/meta/entity.module.ts +158 -158
  269. package/src/module/meta/repository/app-master.repository.ts +20 -20
  270. package/src/module/meta/repository/attribute-master.repository.ts +118 -118
  271. package/src/module/meta/repository/entity-master.repository.ts +69 -69
  272. package/src/module/meta/repository/entity-table-column.repository.ts +39 -39
  273. package/src/module/meta/repository/entity-table.repository.ts +53 -53
  274. package/src/module/meta/repository/media-data.repository.ts +50 -50
  275. package/src/module/meta/repository/preference.repository.ts +20 -20
  276. package/src/module/meta/repository/user-app-mapping.repository.ts +28 -28
  277. package/src/module/meta/repository/view-master.repository.ts +42 -42
  278. package/src/module/meta/service/app-master.service.ts +37 -37
  279. package/src/module/meta/service/attribute-master.service.ts +126 -126
  280. package/src/module/meta/service/common.service.ts +9 -9
  281. package/src/module/meta/service/entity-dynamic.service.ts +819 -819
  282. package/src/module/meta/service/entity-list.service.ts +205 -205
  283. package/src/module/meta/service/entity-master.service.ts +169 -169
  284. package/src/module/meta/service/entity-realation-data.service.ts +9 -9
  285. package/src/module/meta/service/entity-relation.service.ts +69 -69
  286. package/src/module/meta/service/entity-service-impl.service.ts +525 -525
  287. package/src/module/meta/service/entity-table-column.service.ts +39 -39
  288. package/src/module/meta/service/entity-table.service.ts +150 -150
  289. package/src/module/meta/service/entity-validation.service.ts +187 -187
  290. package/src/module/meta/service/entity.service.ts +67 -67
  291. package/src/module/meta/service/field-group.service.ts +103 -103
  292. package/src/module/meta/service/media-data.service.ts +507 -507
  293. package/src/module/meta/service/populate-meta.service.ts +193 -193
  294. package/src/module/meta/service/preference.service.ts +16 -16
  295. package/src/module/meta/service/resolver.service.ts +267 -267
  296. package/src/module/meta/service/section-master.service.ts +104 -104
  297. package/src/module/meta/service/update-form-json.service.ts +22 -22
  298. package/src/module/meta/service/user-app-mapping.service.ts +17 -17
  299. package/src/module/meta/service/view-master.service.ts +127 -127
  300. package/src/module/microservice-client/microservice-clients.module.ts +13 -13
  301. package/src/module/microservice-client/service/microservice-client-factory.ts +37 -37
  302. package/src/module/microservice-client/service/microservice-clients.ts +4 -4
  303. package/src/module/module/controller/menu.controller.ts +15 -15
  304. package/src/module/module/controller/module-access.controller.ts +134 -134
  305. package/src/module/module/entity/menu.entity.ts +43 -43
  306. package/src/module/module/entity/module-access.entity.ts +25 -25
  307. package/src/module/module/entity/module-action.entity.ts +17 -17
  308. package/src/module/module/entity/module.entity.ts +52 -52
  309. package/src/module/module/module.module.ts +42 -42
  310. package/src/module/module/repository/menu.repository.ts +184 -184
  311. package/src/module/module/repository/module-access.repository.ts +344 -344
  312. package/src/module/module/service/menu.service.ts +82 -82
  313. package/src/module/module/service/module-access.service.ts +209 -209
  314. package/src/module/notification/controller/notification.controller.ts +58 -58
  315. package/src/module/notification/controller/otp.controller.ts +117 -117
  316. package/src/module/notification/entity/notification.entity.ts +26 -26
  317. package/src/module/notification/entity/otp.entity.ts +28 -28
  318. package/src/module/notification/firebase-admin.config.ts +22 -22
  319. package/src/module/notification/notification.module.ts +69 -69
  320. package/src/module/notification/repository/otp.repository.ts +27 -27
  321. package/src/module/notification/service/email.service.ts +127 -127
  322. package/src/module/notification/service/notification.service.ts +163 -163
  323. package/src/module/notification/service/otp.service.ts +132 -132
  324. package/src/module/third-party-module/entity/third-party-api-registry.entity.ts +52 -52
  325. package/src/module/third-party-module/repository/third-party-api-registry.repository.ts +20 -20
  326. package/src/module/third-party-module/service/api-registry.service.ts +13 -13
  327. package/src/module/third-party-module/third-party.module.ts +12 -12
  328. package/src/module/user/controller/login.controller.ts +197 -197
  329. package/src/module/user/controller/user.controller.ts +40 -40
  330. package/src/module/user/dto/create-user.dto.ts +62 -62
  331. package/src/module/user/dto/update-user.dto.ts +4 -4
  332. package/src/module/user/entity/role.entity.ts +33 -33
  333. package/src/module/user/entity/user-role-mapping.entity.ts +38 -38
  334. package/src/module/user/entity/user-session.entity.ts +73 -73
  335. package/src/module/user/entity/user.entity.ts +59 -59
  336. package/src/module/user/repository/role.repository.ts +96 -96
  337. package/src/module/user/repository/user-role-mapping.repository.ts +126 -126
  338. package/src/module/user/repository/user.repository.ts +50 -50
  339. package/src/module/user/repository/userSession.repository.ts +33 -33
  340. package/src/module/user/service/login.service.ts +304 -304
  341. package/src/module/user/service/role.service.ts +189 -189
  342. package/src/module/user/service/user-role-mapping.service.ts +98 -98
  343. package/src/module/user/service/user-session.service.ts +168 -168
  344. package/src/module/user/service/user.service.ts +365 -365
  345. package/src/module/user/user.module.ts +65 -65
  346. package/src/module/workflow/controller/action-category.controller.ts +54 -54
  347. package/src/module/workflow/controller/action-resource-mapping.controller.ts +23 -23
  348. package/src/module/workflow/controller/action-template-mapping.controller.ts +35 -35
  349. package/src/module/workflow/controller/action.controller.ts +111 -111
  350. package/src/module/workflow/controller/activity-log.controller.ts +55 -55
  351. package/src/module/workflow/controller/comm-template.controller.ts +43 -43
  352. package/src/module/workflow/controller/entity-modification.controller.ts +35 -35
  353. package/src/module/workflow/controller/form-master.controller.ts +43 -43
  354. package/src/module/workflow/controller/stage-group.controller.ts +48 -48
  355. package/src/module/workflow/controller/stage.controller.ts +50 -50
  356. package/src/module/workflow/controller/task.controller.ts +77 -77
  357. package/src/module/workflow/controller/workflow-list-master.controller.ts +44 -44
  358. package/src/module/workflow/controller/workflow-meta.controller.ts +80 -80
  359. package/src/module/workflow/controller/workflow.controller.ts +67 -67
  360. package/src/module/workflow/entity/action-category.entity.ts +38 -38
  361. package/src/module/workflow/entity/action-data.entity.ts +55 -55
  362. package/src/module/workflow/entity/action-resources-mapping.entity.ts +29 -29
  363. package/src/module/workflow/entity/action-template-mapping.entity.ts +17 -17
  364. package/src/module/workflow/entity/action.entity.ts +50 -50
  365. package/src/module/workflow/entity/activity-log.entity.ts +43 -43
  366. package/src/module/workflow/entity/comm-template.entity.ts +43 -43
  367. package/src/module/workflow/entity/entity-modification.entity.ts +38 -38
  368. package/src/module/workflow/entity/form.entity.ts +25 -25
  369. package/src/module/workflow/entity/stage-action-mapping.entity.ts +17 -17
  370. package/src/module/workflow/entity/stage-group.entity.ts +23 -23
  371. package/src/module/workflow/entity/stage-movement-data.entity.ts +38 -38
  372. package/src/module/workflow/entity/stage.entity.ts +20 -20
  373. package/src/module/workflow/entity/task-data.entity.ts +88 -88
  374. package/src/module/workflow/entity/template-attach-mapper.entity.ts +30 -30
  375. package/src/module/workflow/entity/workflow-data.entity.ts +11 -11
  376. package/src/module/workflow/entity/workflow-level-mapping.entity.ts +18 -18
  377. package/src/module/workflow/entity/workflow.entity.ts +20 -20
  378. package/src/module/workflow/repository/action-category.repository.ts +79 -79
  379. package/src/module/workflow/repository/action-data.repository.ts +333 -333
  380. package/src/module/workflow/repository/action.repository.ts +323 -323
  381. package/src/module/workflow/repository/activity-log.repository.ts +148 -148
  382. package/src/module/workflow/repository/comm-template.repository.ts +149 -149
  383. package/src/module/workflow/repository/form-master.repository.ts +59 -59
  384. package/src/module/workflow/repository/stage-group.repository.ts +176 -176
  385. package/src/module/workflow/repository/stage-movement.repository.ts +244 -244
  386. package/src/module/workflow/repository/stage.repository.ts +172 -172
  387. package/src/module/workflow/repository/task.repository.ts +127 -134
  388. package/src/module/workflow/repository/workflow.repository.ts +42 -42
  389. package/src/module/workflow/service/action-category.service.ts +33 -33
  390. package/src/module/workflow/service/action-data.service.ts +62 -62
  391. package/src/module/workflow/service/action-resources-mapping.service.ts +10 -10
  392. package/src/module/workflow/service/action-template-mapping.service.ts +106 -106
  393. package/src/module/workflow/service/action.service.ts +279 -279
  394. package/src/module/workflow/service/activity-log.service.ts +107 -107
  395. package/src/module/workflow/service/comm-template.service.ts +180 -180
  396. package/src/module/workflow/service/entity-modification.service.ts +67 -67
  397. package/src/module/workflow/service/form-master.service.ts +35 -35
  398. package/src/module/workflow/service/populate-workflow.service.ts +303 -303
  399. package/src/module/workflow/service/stage-action-mapping.service.ts +5 -5
  400. package/src/module/workflow/service/stage-group.service.ts +319 -319
  401. package/src/module/workflow/service/stage.service.ts +199 -199
  402. package/src/module/workflow/service/task.service.ts +560 -565
  403. package/src/module/workflow/service/workflow-list-master.service.ts +60 -60
  404. package/src/module/workflow/service/workflow-meta.service.ts +640 -654
  405. package/src/module/workflow/service/workflow.service.ts +205 -205
  406. package/src/module/workflow/workflow.module.ts +176 -176
  407. package/src/module/workflow-automation/controller/workflow-automation.controller.ts +21 -21
  408. package/src/module/workflow-automation/entity/workflow-automation-action.entity.ts +26 -26
  409. package/src/module/workflow-automation/entity/workflow-automation.entity.ts +35 -35
  410. package/src/module/workflow-automation/interface/action.decorator.ts +7 -7
  411. package/src/module/workflow-automation/interface/action.interface.ts +5 -5
  412. package/src/module/workflow-automation/service/action-registery.service.ts +35 -35
  413. package/src/module/workflow-automation/service/workflow-automation-engine.service.ts +214 -214
  414. package/src/module/workflow-automation/service/workflow-automation.service.ts +347 -347
  415. package/src/module/workflow-automation/workflow-automation.module.ts +34 -34
  416. package/src/resources/dev.properties.yaml +31 -30
  417. package/src/resources/local.properties.yaml +27 -27
  418. package/src/resources/properties.module.ts +12 -12
  419. package/src/resources/properties.yaml.ts +11 -11
  420. package/src/resources/uat.properties.yaml +31 -31
  421. package/src/table.config.ts +126 -126
  422. package/src/utils/dto/excel-data.dto.ts +14 -14
  423. package/src/utils/dto/excelsheet-data.dto.ts +5 -5
  424. package/src/utils/service/base64util.service.ts +18 -18
  425. package/src/utils/service/clockIDGenUtil.service.ts +21 -21
  426. package/src/utils/service/codeGenerator.service.ts +22 -22
  427. package/src/utils/service/dateUtil.service.ts +17 -17
  428. package/src/utils/service/encryptUtil.service.ts +97 -97
  429. package/src/utils/service/excel-helper.service.ts +72 -72
  430. package/src/utils/service/excelUtil.service.ts +15 -15
  431. package/src/utils/service/file-util.service.ts +11 -11
  432. package/src/utils/service/json-util.service.ts +23 -23
  433. package/src/utils/service/loggingUtil.service.ts +34 -88
  434. package/src/utils/service/reflection-helper.service.ts +62 -62
  435. package/src/utils/service/wbsCodeGen.service.ts +8 -8
  436. package/src/utils/utils.module.ts +25 -27
  437. package/tsconfig.build.json +4 -4
  438. package/tsconfig.json +24 -24
@@ -1,11 +1,4 @@
1
- import { ConfigService } from '@nestjs/config';
2
1
  export declare class LoggingService {
3
- private readonly configService;
4
- private readonly logger;
5
- private readonly graylogUrl;
6
- private readonly environment;
7
- constructor(configService: ConfigService);
8
- log(level: string, serviceName: string, methodName: string, message: string, parameters?: unknown[], debugInfo?: unknown[]): Promise<void>;
9
- private sendToGraylog;
10
- private mapLogLevel;
2
+ constructor();
3
+ log(level: string, serviceName: string, methodName: string, message: string, parameters?: unknown[], debuginfo?: unknown[]): Promise<void>;
11
4
  }
@@ -8,80 +8,29 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
- var LoggingService_1;
12
11
  Object.defineProperty(exports, "__esModule", { value: true });
13
12
  exports.LoggingService = void 0;
14
13
  const common_1 = require("@nestjs/common");
15
- const config_1 = require("@nestjs/config");
16
- const axios_1 = require("axios");
17
- let LoggingService = LoggingService_1 = class LoggingService {
18
- constructor(configService) {
19
- this.configService = configService;
20
- this.logger = new common_1.Logger(LoggingService_1.name);
21
- this.graylogUrl =
22
- this.configService.get('GRAYLOG_URL') ||
23
- 'http://localhost:12201/gelf';
24
- this.environment = this.configService.get('PROFILE') || 'dev';
25
- }
26
- async log(level, serviceName, methodName, message, parameters, debugInfo) {
27
- const logLevel = level.toLowerCase().trim();
28
- const logMessage = `${serviceName}.${methodName}: ${message} | Params: ${JSON.stringify(parameters)} | Debug: ${JSON.stringify(debugInfo)}`;
29
- switch (logLevel) {
30
- case 'debug':
31
- case 'info':
32
- this.logger.debug(logMessage);
33
- break;
34
- case 'warn':
35
- this.logger.warn(logMessage);
36
- break;
37
- case 'error':
38
- this.logger.error(logMessage);
39
- break;
40
- default:
41
- this.logger.log(logMessage);
14
+ let LoggingService = class LoggingService {
15
+ constructor() { }
16
+ async log(level, serviceName, methodName, message, parameters, debuginfo) {
17
+ const levelInfo = level.toLowerCase().trim();
18
+ const logger = new common_1.Logger(serviceName);
19
+ const logMessage = `${methodName} : ${message} : Parameters :${JSON.stringify(parameters)}: Debug Info: ${JSON.stringify(debuginfo)}`;
20
+ if (levelInfo === 'debug' || levelInfo === 'info') {
21
+ logger.debug(logMessage);
42
22
  }
43
- this.sendToGraylog({
44
- version: '1.1',
45
- host: serviceName || 'nestjs-app',
46
- short_message: message,
47
- full_message: logMessage,
48
- level: this.mapLogLevel(logLevel),
49
- _service: serviceName,
50
- _method: methodName,
51
- _parameters: parameters,
52
- _debug: debugInfo,
53
- _environment: this.environment,
54
- timestamp: Date.now() / 1000,
55
- });
56
- }
57
- async sendToGraylog(payload) {
58
- try {
59
- await axios_1.default.post(this.graylogUrl, payload, {
60
- headers: { 'Content-Type': 'application/json' },
61
- timeout: 2000,
62
- });
23
+ else if (levelInfo === 'error') {
24
+ logger.error(logMessage);
63
25
  }
64
- catch (err) {
65
- this.logger.warn(`Graylog send failed: ${err.message}`);
26
+ else {
27
+ logger.log(logMessage);
66
28
  }
67
29
  }
68
- mapLogLevel(level) {
69
- const mapping = {
70
- emerg: 0,
71
- alert: 1,
72
- crit: 2,
73
- error: 3,
74
- warn: 4,
75
- notice: 5,
76
- info: 6,
77
- debug: 7,
78
- };
79
- return mapping[level] ?? 6;
80
- }
81
30
  };
82
31
  exports.LoggingService = LoggingService;
83
- exports.LoggingService = LoggingService = LoggingService_1 = __decorate([
32
+ exports.LoggingService = LoggingService = __decorate([
84
33
  (0, common_1.Injectable)(),
85
- __metadata("design:paramtypes", [config_1.ConfigService])
34
+ __metadata("design:paramtypes", [])
86
35
  ], LoggingService);
87
36
  //# sourceMappingURL=loggingUtil.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loggingUtil.service.js","sourceRoot":"","sources":["../../../src/utils/service/loggingUtil.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loggingUtil.service.js","sourceRoot":"","sources":["../../../src/utils/service/loggingUtil.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAoD;AAG7C,IAAM,cAAc,GAApB,MAAM,cAAc;IACzB,gBAAe,CAAC;IAEhB,KAAK,CAAC,GAAG,CACP,KAAa,EACb,WAAmB,EACnB,UAAkB,EAClB,OAAe,EACf,UAAsB,EACtB,SAAqB;QAErB,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,WAAW,CAAC,CAAC;QAGvC,MAAM,UAAU,GAAG,GAAG,UAAU,MAAM,OAAO,kBAAkB,IAAI,CAAC,SAAS,CAC3E,UAAU,CACX,iBAAiB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;QAE9C,IAAI,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YAClD,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC3B,CAAC;aAAM,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;YACjC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC3B,CAAC;aAAM,CAAC;YAEN,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACzB,CAAC;IAGH,CAAC;CACF,CAAA;AA9BY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAU,GAAE;;GACA,cAAc,CA8B1B"}
@@ -51,8 +51,8 @@ let ReflectionHelper = class ReflectionHelper {
51
51
  }
52
52
  }
53
53
  async getEntityData(id, tableName) {
54
- const entityList = await this.dataSource.query(`SELECT *
55
- FROM ${tableName}
54
+ const entityList = await this.dataSource.query(`SELECT *
55
+ FROM ${tableName}
56
56
  WHERE id = ?`, [id]);
57
57
  return entityList.length > 0 ? entityList[0] : null;
58
58
  }
@@ -13,14 +13,12 @@ const reflection_helper_service_1 = require("./service/reflection-helper.service
13
13
  const excelUtil_service_1 = require("./service/excelUtil.service");
14
14
  const clockIDGenUtil_service_1 = require("./service/clockIDGenUtil.service");
15
15
  const wbsCodeGen_service_1 = require("./service/wbsCodeGen.service");
16
- const config_1 = require("@nestjs/config");
17
16
  let UtilsModule = class UtilsModule {
18
17
  };
19
18
  exports.UtilsModule = UtilsModule;
20
19
  exports.UtilsModule = UtilsModule = __decorate([
21
20
  (0, common_1.Global)(),
22
21
  (0, common_1.Module)({
23
- imports: [config_1.ConfigModule],
24
22
  providers: [
25
23
  loggingUtil_service_1.LoggingService,
26
24
  reflection_helper_service_1.ReflectionHelper,
@@ -1 +1 @@
1
- {"version":3,"file":"utils.module.js","sourceRoot":"","sources":["../../src/utils/utils.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAgD;AAChD,uEAA+D;AAC/D,mFAAuE;AACvE,mEAAwD;AACxD,6EAAqE;AACrE,qEAAiE;AACjE,2CAA8C;AAoBvC,IAAM,WAAW,GAAjB,MAAM,WAAW;CAAG,CAAA;AAAd,kCAAW;sBAAX,WAAW;IAlBvB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,qBAAY,CAAC;QACvB,SAAS,EAAE;YACT,oCAAc;YACd,4CAAgB;YAChB,6BAAS;YACT,0CAAiB;YACjB,sCAAiB;SAClB;QACD,OAAO,EAAE;YACP,oCAAc;YACd,4CAAgB;YAChB,6BAAS;YACT,0CAAiB;YACjB,sCAAiB;SAClB;KACF,CAAC;GACW,WAAW,CAAG"}
1
+ {"version":3,"file":"utils.module.js","sourceRoot":"","sources":["../../src/utils/utils.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAgD;AAChD,uEAA+D;AAC/D,mFAAuE;AACvE,mEAAwD;AACxD,6EAAqE;AACrE,qEAAiE;AAmB1D,IAAM,WAAW,GAAjB,MAAM,WAAW;CAAG,CAAA;AAAd,kCAAW;sBAAX,WAAW;IAjBvB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,SAAS,EAAE;YACT,oCAAc;YACd,4CAAgB;YAChB,6BAAS;YACT,0CAAiB;YACjB,sCAAiB;SAClB;QACD,OAAO,EAAE;YACP,oCAAc;YACd,4CAAgB;YAChB,6BAAS;YACT,0CAAiB;YACjB,sCAAiB;SAClB;KACF,CAAC;GACW,WAAW,CAAG"}
@@ -1,92 +1,92 @@
1
- # Event-Driven Integration Module Design (NestJS)
2
-
3
- ## 1. Goal
4
- Introduce **Event-Driven Architecture (EDA)** into the integration module to:
5
- - Decouple producers (e.g., order service, user service) from message delivery logic.
6
- - Support asynchronous message processing, retries, and multi-level fallback.
7
- - Allow smooth transition from in-memory events to external brokers like Kafka or RabbitMQ.
8
-
9
- ---
10
-
11
- ## 2. Current State
12
- - **Database Tables**:
13
- - `frm_integration_config` (stores provider configuration JSON and level mapping)
14
- - **Factory Pattern**:
15
- - Uses `IntegrationFactory` to select strategies (e.g., Gmail API, Twilio SMS, WhatsApp Cloud).
16
- - **Service Layer**:
17
- - Provides methods for sending messages (generic and type-specific).
18
- - Currently invoked directly by producers.
19
- - **Fallback Hierarchy**:
20
- - Resolution order: user → team → project → department → organization.
21
-
22
- ### Limitation
23
- - Tight coupling between producers and `IntegrationService`.
24
- - Direct synchronous calls, no retry or async pipeline.
25
- - Fallback handled procedurally inside service.
26
-
27
- ---
28
-
29
- ## 3. Event-Driven Proposal
30
-
31
- ### Core Events
32
- - **IntegrationRequestedEvent** → emitted whenever any module requests integration.
33
- - **IntegrationSuccessEvent** → emitted when delivery succeeds.
34
- - **IntegrationFailedEvent** → emitted when delivery fails.
35
- - **FallbackRequestedEvent** → emitted when a level-specific config fails, triggering retry with the next fallback level.
36
-
37
- ### Event Flow
38
- 1. A producer (e.g., order service) emits a `IntegrationRequestedEvent`.
39
- 2. The integration module listens for this event.
40
- 3. Delivery attempt is made using the factory and service layer.
41
- 4. Depending on outcome:
42
- - Success → emit `IntegrationSuccessEvent`.
43
- - Failure → emit `IntegrationFailedEvent`.
44
- 5. If failure is due to invalid or unavailable provider, emit `FallbackRequestedEvent` and retry at the next level in hierarchy.
45
- 6. Outcome events (`success`/`failed`) can be consumed by analytics, logging, monitoring, or retry queues.
46
-
47
- ---
48
-
49
- ## 4. Components
50
-
51
- ### Event Producers
52
- - Any module in the system (order, billing, onboarding, etc.) can raise integration requests without depending on the integration module.
53
-
54
- ### Event Handlers
55
- - Dedicated handlers inside the integration module react to request events, coordinate with the factory and service layer, and trigger outcome events.
56
-
57
- ### Subscribers
58
- - Separate subscribers for success/failure events handle logging, retries, notifications, and analytics.
59
-
60
- ---
61
-
62
- ## 5. Multi-Level Fallback
63
- - Instead of handling fallback inside the service, use chained events.
64
- - When one provider fails, emit a `FallbackRequestedEvent` with the next priority level.
65
- - A fallback handler retries delivery using the new configuration.
66
- - This continues until a provider succeeds or the lowest-level configuration (organization) fails.
67
-
68
- ---
69
-
70
- ## 6. Module Wiring
71
- - Use NestJS `EventEmitterModule` or `@nestjs/cqrs` for in-memory event handling.
72
- - Define event classes and handlers within the integration module.
73
- - Export the integration module to make it available across the application.
74
- - Future enhancement: swap in-memory event emitter with Kafka, RabbitMQ, or Redis for distributed systems.
75
-
76
- ---
77
-
78
- ## 7. Benefits
79
- - **Loose coupling**: Producers only emit events, no dependency on the integration module.
80
- - **Resilience**: Fallback and retries managed via events rather than procedural logic.
81
- - **Scalability**: Easy to extend with new providers or migrate to distributed event brokers.
82
- - **Observability**: Success and failure events provide clear audit trails.
83
- - **Future-proof**: In-memory implementation today, external broker tomorrow without major refactor.
84
-
85
- ---
86
-
87
- ## 8. Next Steps
88
- 1. Define event classes and event bus integration.
89
- 2. Implement core handlers for request, success, failure, and fallback.
90
- 3. Add subscribers for logging and monitoring.
91
- 4. Extend fallback logic into event-driven retry mechanism.
1
+ # Event-Driven Integration Module Design (NestJS)
2
+
3
+ ## 1. Goal
4
+ Introduce **Event-Driven Architecture (EDA)** into the integration module to:
5
+ - Decouple producers (e.g., order service, user service) from message delivery logic.
6
+ - Support asynchronous message processing, retries, and multi-level fallback.
7
+ - Allow smooth transition from in-memory events to external brokers like Kafka or RabbitMQ.
8
+
9
+ ---
10
+
11
+ ## 2. Current State
12
+ - **Database Tables**:
13
+ - `frm_integration_config` (stores provider configuration JSON and level mapping)
14
+ - **Factory Pattern**:
15
+ - Uses `IntegrationFactory` to select strategies (e.g., Gmail API, Twilio SMS, WhatsApp Cloud).
16
+ - **Service Layer**:
17
+ - Provides methods for sending messages (generic and type-specific).
18
+ - Currently invoked directly by producers.
19
+ - **Fallback Hierarchy**:
20
+ - Resolution order: user → team → project → department → organization.
21
+
22
+ ### Limitation
23
+ - Tight coupling between producers and `IntegrationService`.
24
+ - Direct synchronous calls, no retry or async pipeline.
25
+ - Fallback handled procedurally inside service.
26
+
27
+ ---
28
+
29
+ ## 3. Event-Driven Proposal
30
+
31
+ ### Core Events
32
+ - **IntegrationRequestedEvent** → emitted whenever any module requests integration.
33
+ - **IntegrationSuccessEvent** → emitted when delivery succeeds.
34
+ - **IntegrationFailedEvent** → emitted when delivery fails.
35
+ - **FallbackRequestedEvent** → emitted when a level-specific config fails, triggering retry with the next fallback level.
36
+
37
+ ### Event Flow
38
+ 1. A producer (e.g., order service) emits a `IntegrationRequestedEvent`.
39
+ 2. The integration module listens for this event.
40
+ 3. Delivery attempt is made using the factory and service layer.
41
+ 4. Depending on outcome:
42
+ - Success → emit `IntegrationSuccessEvent`.
43
+ - Failure → emit `IntegrationFailedEvent`.
44
+ 5. If failure is due to invalid or unavailable provider, emit `FallbackRequestedEvent` and retry at the next level in hierarchy.
45
+ 6. Outcome events (`success`/`failed`) can be consumed by analytics, logging, monitoring, or retry queues.
46
+
47
+ ---
48
+
49
+ ## 4. Components
50
+
51
+ ### Event Producers
52
+ - Any module in the system (order, billing, onboarding, etc.) can raise integration requests without depending on the integration module.
53
+
54
+ ### Event Handlers
55
+ - Dedicated handlers inside the integration module react to request events, coordinate with the factory and service layer, and trigger outcome events.
56
+
57
+ ### Subscribers
58
+ - Separate subscribers for success/failure events handle logging, retries, notifications, and analytics.
59
+
60
+ ---
61
+
62
+ ## 5. Multi-Level Fallback
63
+ - Instead of handling fallback inside the service, use chained events.
64
+ - When one provider fails, emit a `FallbackRequestedEvent` with the next priority level.
65
+ - A fallback handler retries delivery using the new configuration.
66
+ - This continues until a provider succeeds or the lowest-level configuration (organization) fails.
67
+
68
+ ---
69
+
70
+ ## 6. Module Wiring
71
+ - Use NestJS `EventEmitterModule` or `@nestjs/cqrs` for in-memory event handling.
72
+ - Define event classes and handlers within the integration module.
73
+ - Export the integration module to make it available across the application.
74
+ - Future enhancement: swap in-memory event emitter with Kafka, RabbitMQ, or Redis for distributed systems.
75
+
76
+ ---
77
+
78
+ ## 7. Benefits
79
+ - **Loose coupling**: Producers only emit events, no dependency on the integration module.
80
+ - **Resilience**: Fallback and retries managed via events rather than procedural logic.
81
+ - **Scalability**: Easy to extend with new providers or migrate to distributed event brokers.
82
+ - **Observability**: Success and failure events provide clear audit trails.
83
+ - **Future-proof**: In-memory implementation today, external broker tomorrow without major refactor.
84
+
85
+ ---
86
+
87
+ ## 8. Next Steps
88
+ 1. Define event classes and event bus integration.
89
+ 2. Implement core handlers for request, success, failure, and fallback.
90
+ 3. Add subscribers for logging and monitoring.
91
+ 4. Extend fallback logic into event-driven retry mechanism.
92
92
  5. Plan for integration with Kafka/RabbitMQ for production scalability.