rez_core 4.0.113 → 4.0.114

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 (386) hide show
  1. package/.claude/settings.local.json +26 -0
  2. package/.idea/250218_nodejs_core.iml +8 -11
  3. package/.idea/codeStyles/Project.xml +58 -58
  4. package/.idea/codeStyles/codeStyleConfig.xml +4 -4
  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 +1 -1
  10. package/.idea/misc.xml +6 -0
  11. package/.idea/modules.xml +7 -7
  12. package/.idea/prettier.xml +5 -5
  13. package/.idea/vcs.xml +5 -5
  14. package/.prettierrc +3 -3
  15. package/README.md +99 -99
  16. package/dist/module/auth/guards/role.guard.js +3 -3
  17. package/dist/module/auth/services/auth.service.js +2 -2
  18. package/dist/module/filter/repository/saved-filter.repository.js +4 -4
  19. package/dist/module/filter/service/filter-evaluator.service.js +2 -2
  20. package/dist/module/filter/service/filter.service.js +22 -22
  21. package/dist/module/integration/examples/usage.example.js +9 -9
  22. package/dist/module/integration/service/integration.service.js +1 -1
  23. package/dist/module/integration/service/wrapper.service.js +25 -25
  24. package/dist/module/listmaster/service/list-master-item.service.js +2 -2
  25. package/dist/module/mapper/service/field-mapper.service.js +4 -4
  26. package/dist/module/mapper/service/mapper.service.js +2 -2
  27. package/dist/module/meta/service/entity-dynamic.service.js +9 -9
  28. package/dist/module/meta/service/entity-list.service.js +3 -3
  29. package/dist/module/meta/service/entity-master.service.js +3 -3
  30. package/dist/module/meta/service/entity-relation.service.js +11 -11
  31. package/dist/module/meta/service/entity-service-impl.service.js +3 -3
  32. package/dist/module/meta/service/resolver.service.js +3 -3
  33. package/dist/module/module/repository/menu.repository.js +12 -12
  34. package/dist/module/notification/service/notification.service.js +9 -9
  35. package/dist/module/user/controller/login.controller.js +18 -18
  36. package/dist/module/user/service/role.service.js +4 -4
  37. package/dist/module/user/service/user-session.service.js +2 -2
  38. package/dist/module/workflow/repository/action.repository.js +20 -20
  39. package/dist/module/workflow/repository/comm-template.repository.js +6 -6
  40. package/dist/module/workflow/repository/form-master.repository.js +2 -2
  41. package/dist/module/workflow/repository/stage-group.repository.js +23 -23
  42. package/dist/module/workflow/repository/stage-movement.repository.js +15 -15
  43. package/dist/module/workflow/repository/stage.repository.js +8 -8
  44. package/dist/module/workflow/service/action-template-mapping.service.js +22 -22
  45. package/dist/module/workflow/service/action.service.js +7 -7
  46. package/dist/module/workflow/service/entity-modification.service.js +6 -6
  47. package/dist/module/workflow/service/stage-group.service.js +2 -2
  48. package/dist/module/workflow/service/stage.service.js +2 -2
  49. package/dist/module/workflow/service/task.service.js +28 -28
  50. package/dist/module/workflow/service/workflow-list-master.service.js +15 -15
  51. package/dist/module/workflow/service/workflow-meta.service.js +35 -35
  52. package/dist/module/workflow/service/workflow.service.js +2 -2
  53. package/dist/tsconfig.build.tsbuildinfo +1 -1
  54. package/dist/utils/service/reflection-helper.service.js +2 -2
  55. package/docs/modules/event-driven-integration-design.md +91 -91
  56. package/docs/modules/integration.md +250 -250
  57. package/eslint.config.mjs +34 -34
  58. package/nest-cli.json +14 -14
  59. package/package.json +119 -119
  60. package/server.log +850 -0
  61. package/src/app.controller.ts +12 -12
  62. package/src/app.module.ts +52 -52
  63. package/src/app.service.ts +8 -8
  64. package/src/config/config.module.ts +18 -18
  65. package/src/config/database.config.ts +23 -23
  66. package/src/constant/global.constant.ts +67 -67
  67. package/src/core.module.ts +81 -81
  68. package/src/decorators/roles.decorator.ts +7 -7
  69. package/src/dtos/response.dto.ts +6 -6
  70. package/src/dtos/response.ts +5 -5
  71. package/src/index.ts +1 -1
  72. package/src/module/auth/auth.module.ts +49 -49
  73. package/src/module/auth/controller/auth.controller.ts +28 -28
  74. package/src/module/auth/guards/google-auth.guard.ts +9 -9
  75. package/src/module/auth/guards/jwt.guard.ts +22 -22
  76. package/src/module/auth/guards/role.guard.ts +68 -68
  77. package/src/module/auth/services/auth.service.ts +50 -50
  78. package/src/module/auth/services/jwt.service.ts +11 -11
  79. package/src/module/auth/strategies/google.strategy.ts +54 -54
  80. package/src/module/auth/strategies/jwt.strategy.ts +58 -58
  81. package/src/module/auth/strategies/local.strategy.ts +13 -13
  82. package/src/module/dashboard/controller/dashboard.controller.ts +36 -36
  83. package/src/module/dashboard/dashboard.module.ts +21 -21
  84. package/src/module/dashboard/entity/dashboard_page_data.entity.ts +27 -27
  85. package/src/module/dashboard/entity/widget_master.entity.ts +18 -18
  86. package/src/module/dashboard/repository/dashboard.repository.ts +42 -42
  87. package/src/module/dashboard/service/dashboard.service.ts +73 -73
  88. package/src/module/dev/dev.module.ts +12 -12
  89. package/src/module/dev/service/dev.service.ts +7 -7
  90. package/src/module/enterprise/controller/organization.controller.ts +36 -36
  91. package/src/module/enterprise/enterprise.module.ts +30 -30
  92. package/src/module/enterprise/entity/enterprise.entity.ts +37 -37
  93. package/src/module/enterprise/entity/organization-app-mapping.entity.ts +13 -13
  94. package/src/module/enterprise/entity/organization.entity.ts +92 -92
  95. package/src/module/enterprise/repository/enterprise.repository.ts +31 -31
  96. package/src/module/enterprise/repository/organization.repository.ts +26 -26
  97. package/src/module/enterprise/repository/school.repository.ts +278 -278
  98. package/src/module/enterprise/service/brand.service.ts +5 -5
  99. package/src/module/enterprise/service/enterprise.service.ts +16 -16
  100. package/src/module/enterprise/service/organization-app-mapping.service.ts +4 -4
  101. package/src/module/enterprise/service/organization.service.ts +145 -145
  102. package/src/module/filter/controller/filter.controller.ts +84 -84
  103. package/src/module/filter/dto/filter-request.dto.ts +38 -38
  104. package/src/module/filter/entity/saved-filter-detail.entity.ts +41 -41
  105. package/src/module/filter/entity/saved-filter-master.entity.ts +23 -23
  106. package/src/module/filter/filter.module.ts +31 -31
  107. package/src/module/filter/repository/saved-filter.repository.ts +168 -168
  108. package/src/module/filter/service/filter-evaluator.service.ts +86 -86
  109. package/src/module/filter/service/filter.service.ts +1004 -1004
  110. package/src/module/filter/service/saved-filter.service.ts +170 -170
  111. package/src/module/ics/controller/ics.controller.ts +21 -21
  112. package/src/module/ics/dto/ics.dto.ts +55 -55
  113. package/src/module/ics/ics.module.ts +13 -13
  114. package/src/module/ics/service/ics.service.ts +57 -57
  115. package/src/module/integration/controller/calender-event.controller.ts +31 -31
  116. package/src/module/integration/controller/integration.controller.ts +662 -662
  117. package/src/module/integration/controller/wrapper.controller.ts +37 -37
  118. package/src/module/integration/dto/create-config.dto.ts +526 -526
  119. package/src/module/integration/entity/integration-config.entity.ts +112 -112
  120. package/src/module/integration/entity/integration-entity-mapper.entity.ts +14 -14
  121. package/src/module/integration/entity/integration-source.entity.ts +17 -17
  122. package/src/module/integration/entity/user-integration.entity.ts +71 -71
  123. package/src/module/integration/examples/usage.example.ts +338 -338
  124. package/src/module/integration/factories/base.factory.ts +7 -7
  125. package/src/module/integration/factories/email.factory.ts +49 -49
  126. package/src/module/integration/factories/integration.factory.ts +121 -121
  127. package/src/module/integration/factories/sms.factory.ts +51 -51
  128. package/src/module/integration/factories/telephone.factory.ts +41 -41
  129. package/src/module/integration/factories/whatsapp.factory.ts +56 -56
  130. package/src/module/integration/integration.module.ts +110 -110
  131. package/src/module/integration/service/calendar-event.service.ts +118 -118
  132. package/src/module/integration/service/integration-entity-mapper.service.ts +17 -17
  133. package/src/module/integration/service/integration-queue.service.ts +229 -229
  134. package/src/module/integration/service/integration.service.ts +2633 -2633
  135. package/src/module/integration/service/oauth.service.ts +224 -224
  136. package/src/module/integration/service/wrapper.service.ts +493 -493
  137. package/src/module/integration/strategies/email/gmail-api.strategy.ts +280 -280
  138. package/src/module/integration/strategies/email/outlook-api.strategy.ts +44 -44
  139. package/src/module/integration/strategies/email/outlook.strategy.ts +64 -64
  140. package/src/module/integration/strategies/email/sendgrid-api.strategy.ts +260 -260
  141. package/src/module/integration/strategies/integration.strategy.ts +97 -97
  142. package/src/module/integration/strategies/sms/gupshup-sms.strategy.ts +146 -146
  143. package/src/module/integration/strategies/sms/msg91-sms.strategy.ts +164 -164
  144. package/src/module/integration/strategies/sms/tubelight-sms.strategy.ts +163 -163
  145. package/src/module/integration/strategies/telephone/ozonetel-voice.strategy.ts +238 -238
  146. package/src/module/integration/strategies/telephone/tubelight-voice.strategy.ts +210 -210
  147. package/src/module/integration/strategies/whatsapp/gupshup-whatsapp.strategy.ts +359 -359
  148. package/src/module/integration/strategies/whatsapp/tubelight-whatsapp.strategy.ts +372 -372
  149. package/src/module/integration/strategies/whatsapp/whatsapp-cloud.strategy.ts +403 -403
  150. package/src/module/integration/strategies/whatsapp/whatsapp.strategy.ts +57 -57
  151. package/src/module/layout/controller/layout.controller.ts +47 -47
  152. package/src/module/layout/entity/header-items.entity.ts +28 -28
  153. package/src/module/layout/entity/header-section.entity.ts +19 -19
  154. package/src/module/layout/layout.module.ts +21 -21
  155. package/src/module/layout/repository/header-items.repository.ts +18 -18
  156. package/src/module/layout/repository/header-section.repository.ts +22 -22
  157. package/src/module/layout/service/header-section.service.ts +25 -25
  158. package/src/module/layout_preference/controller/layout_preference.controller.ts +73 -73
  159. package/src/module/layout_preference/entity/layout_preference.entity.ts +28 -28
  160. package/src/module/layout_preference/layout_preference.module.ts +22 -22
  161. package/src/module/layout_preference/repository/layout_preference.repository.ts +65 -65
  162. package/src/module/layout_preference/service/layout_preference.service.ts +191 -191
  163. package/src/module/lead/controller/lead.controller.ts +30 -30
  164. package/src/module/lead/lead.module.ts +14 -14
  165. package/src/module/lead/repository/lead.repository.ts +41 -41
  166. package/src/module/lead/service/lead.service.ts +54 -54
  167. package/src/module/listmaster/controller/list-master.controller.ts +230 -230
  168. package/src/module/listmaster/entity/list-master-items.entity.ts +43 -43
  169. package/src/module/listmaster/entity/list-master.entity.ts +33 -33
  170. package/src/module/listmaster/listmaster.module.ts +46 -46
  171. package/src/module/listmaster/repository/list-master-items.repository.ts +169 -169
  172. package/src/module/listmaster/repository/list-master.repository.ts +46 -46
  173. package/src/module/listmaster/service/list-master-engine.ts +19 -19
  174. package/src/module/listmaster/service/list-master-extension.interface.ts +4 -4
  175. package/src/module/listmaster/service/list-master-item.service.ts +292 -292
  176. package/src/module/listmaster/service/list-master-registry.ts +15 -15
  177. package/src/module/listmaster/service/list-master.service.ts +535 -535
  178. package/src/module/mapper/controller/field-mapper.controller.ts +76 -76
  179. package/src/module/mapper/controller/mapper.controller.ts +20 -20
  180. package/src/module/mapper/dto/field-mapper.dto.ts +14 -14
  181. package/src/module/mapper/entity/field-lovs.entity.ts +19 -19
  182. package/src/module/mapper/entity/field-mapper.entity.ts +53 -53
  183. package/src/module/mapper/entity/mapper.entity.ts +16 -16
  184. package/src/module/mapper/mapper.module.ts +34 -34
  185. package/src/module/mapper/repository/field-lovs.repository.ts +35 -35
  186. package/src/module/mapper/repository/field-mapper.repository.ts +42 -42
  187. package/src/module/mapper/repository/mapper.repository.ts +15 -15
  188. package/src/module/mapper/service/field-mapper.service.ts +266 -266
  189. package/src/module/mapper/service/mapper.service.ts +79 -79
  190. package/src/module/master/controller/master.controller.ts +74 -74
  191. package/src/module/master/service/master.service.ts +483 -483
  192. package/src/module/meta/controller/app-master.controller.ts +38 -38
  193. package/src/module/meta/controller/attribute-master.controller.ts +66 -66
  194. package/src/module/meta/controller/entity-dynamic.controller.ts +125 -125
  195. package/src/module/meta/controller/entity-master.controller.ts +28 -28
  196. package/src/module/meta/controller/entity-relation.controller.ts +36 -36
  197. package/src/module/meta/controller/entity.controller.ts +392 -392
  198. package/src/module/meta/controller/entity.public.controller.ts +75 -75
  199. package/src/module/meta/controller/media.controller.ts +107 -107
  200. package/src/module/meta/controller/meta.controller.ts +96 -96
  201. package/src/module/meta/controller/view-master.controller.ts +86 -86
  202. package/src/module/meta/dto/entity-list-data.dto.ts +6 -6
  203. package/src/module/meta/dto/entity-tab.dto.ts +4 -4
  204. package/src/module/meta/dto/entity-table.dto.ts +9 -9
  205. package/src/module/meta/entity/app-master.entity.ts +34 -34
  206. package/src/module/meta/entity/attribute-master.entity.ts +89 -89
  207. package/src/module/meta/entity/base-entity.entity.ts +75 -75
  208. package/src/module/meta/entity/entity-master.entity.ts +85 -85
  209. package/src/module/meta/entity/entity-relation-data.entity.ts +29 -29
  210. package/src/module/meta/entity/entity-relation.entity.ts +23 -23
  211. package/src/module/meta/entity/entity-table-column.entity.ts +61 -61
  212. package/src/module/meta/entity/entity-table.entity.ts +50 -50
  213. package/src/module/meta/entity/media-data.entity.ts +32 -32
  214. package/src/module/meta/entity/preference.entity.ts +62 -62
  215. package/src/module/meta/entity/view-master.entity.ts +41 -41
  216. package/src/module/meta/entity.module.ts +158 -158
  217. package/src/module/meta/repository/app-master.repository.ts +20 -20
  218. package/src/module/meta/repository/attribute-master.repository.ts +118 -118
  219. package/src/module/meta/repository/entity-master.repository.ts +69 -69
  220. package/src/module/meta/repository/entity-table-column.repository.ts +39 -39
  221. package/src/module/meta/repository/entity-table.repository.ts +53 -53
  222. package/src/module/meta/repository/media-data.repository.ts +50 -50
  223. package/src/module/meta/repository/preference.repository.ts +20 -20
  224. package/src/module/meta/repository/user-app-mapping.repository.ts +28 -28
  225. package/src/module/meta/repository/view-master.repository.ts +42 -42
  226. package/src/module/meta/service/app-master.service.ts +37 -37
  227. package/src/module/meta/service/attribute-master.service.ts +126 -126
  228. package/src/module/meta/service/common.service.ts +9 -9
  229. package/src/module/meta/service/entity-dynamic.service.ts +819 -819
  230. package/src/module/meta/service/entity-list.service.ts +205 -205
  231. package/src/module/meta/service/entity-master.service.ts +169 -169
  232. package/src/module/meta/service/entity-realation-data.service.ts +9 -9
  233. package/src/module/meta/service/entity-relation.service.ts +69 -69
  234. package/src/module/meta/service/entity-service-impl.service.ts +525 -525
  235. package/src/module/meta/service/entity-table-column.service.ts +39 -39
  236. package/src/module/meta/service/entity-table.service.ts +150 -150
  237. package/src/module/meta/service/entity-validation.service.ts +187 -187
  238. package/src/module/meta/service/entity.service.ts +67 -67
  239. package/src/module/meta/service/field-group.service.ts +103 -103
  240. package/src/module/meta/service/media-data.service.ts +507 -507
  241. package/src/module/meta/service/populate-meta.service.ts +193 -193
  242. package/src/module/meta/service/preference.service.ts +16 -16
  243. package/src/module/meta/service/resolver.service.ts +267 -267
  244. package/src/module/meta/service/section-master.service.ts +104 -104
  245. package/src/module/meta/service/update-form-json.service.ts +22 -22
  246. package/src/module/meta/service/user-app-mapping.service.ts +17 -17
  247. package/src/module/meta/service/view-master.service.ts +127 -127
  248. package/src/module/microservice-client/microservice-clients.module.ts +13 -13
  249. package/src/module/microservice-client/service/microservice-client-factory.ts +37 -37
  250. package/src/module/microservice-client/service/microservice-clients.ts +4 -4
  251. package/src/module/module/controller/menu.controller.ts +15 -15
  252. package/src/module/module/controller/module-access.controller.ts +134 -134
  253. package/src/module/module/entity/menu.entity.ts +43 -43
  254. package/src/module/module/entity/module-access.entity.ts +25 -25
  255. package/src/module/module/entity/module-action.entity.ts +17 -17
  256. package/src/module/module/entity/module.entity.ts +52 -52
  257. package/src/module/module/module.module.ts +42 -42
  258. package/src/module/module/repository/menu.repository.ts +184 -184
  259. package/src/module/module/repository/module-access.repository.ts +344 -344
  260. package/src/module/module/service/menu.service.ts +82 -82
  261. package/src/module/module/service/module-access.service.ts +209 -209
  262. package/src/module/notification/controller/notification.controller.ts +58 -58
  263. package/src/module/notification/controller/otp.controller.ts +117 -117
  264. package/src/module/notification/entity/notification.entity.ts +26 -26
  265. package/src/module/notification/entity/otp.entity.ts +28 -28
  266. package/src/module/notification/firebase-admin.config.ts +22 -22
  267. package/src/module/notification/notification.module.ts +69 -69
  268. package/src/module/notification/repository/otp.repository.ts +27 -27
  269. package/src/module/notification/service/email.service.ts +127 -127
  270. package/src/module/notification/service/notification.service.ts +163 -163
  271. package/src/module/notification/service/otp.service.ts +132 -132
  272. package/src/module/third-party-module/entity/third-party-api-registry.entity.ts +52 -52
  273. package/src/module/third-party-module/repository/third-party-api-registry.repository.ts +20 -20
  274. package/src/module/third-party-module/service/api-registry.service.ts +13 -13
  275. package/src/module/third-party-module/third-party.module.ts +12 -12
  276. package/src/module/user/controller/login.controller.ts +197 -197
  277. package/src/module/user/controller/user.controller.ts +40 -40
  278. package/src/module/user/dto/create-user.dto.ts +62 -62
  279. package/src/module/user/dto/update-user.dto.ts +4 -4
  280. package/src/module/user/entity/role.entity.ts +33 -33
  281. package/src/module/user/entity/user-role-mapping.entity.ts +38 -38
  282. package/src/module/user/entity/user-session.entity.ts +73 -73
  283. package/src/module/user/entity/user.entity.ts +59 -59
  284. package/src/module/user/repository/role.repository.ts +96 -96
  285. package/src/module/user/repository/user-role-mapping.repository.ts +126 -126
  286. package/src/module/user/repository/user.repository.ts +50 -50
  287. package/src/module/user/repository/userSession.repository.ts +33 -33
  288. package/src/module/user/service/login.service.ts +290 -290
  289. package/src/module/user/service/role.service.ts +189 -189
  290. package/src/module/user/service/user-role-mapping.service.ts +98 -98
  291. package/src/module/user/service/user-session.service.ts +168 -168
  292. package/src/module/user/service/user.service.ts +365 -365
  293. package/src/module/user/user.module.ts +65 -65
  294. package/src/module/workflow/controller/action-category.controller.ts +54 -54
  295. package/src/module/workflow/controller/action-resource-mapping.controller.ts +23 -23
  296. package/src/module/workflow/controller/action-template-mapping.controller.ts +35 -35
  297. package/src/module/workflow/controller/action.controller.ts +111 -111
  298. package/src/module/workflow/controller/activity-log.controller.ts +55 -55
  299. package/src/module/workflow/controller/comm-template.controller.ts +43 -43
  300. package/src/module/workflow/controller/entity-modification.controller.ts +35 -35
  301. package/src/module/workflow/controller/form-master.controller.ts +43 -43
  302. package/src/module/workflow/controller/stage-group.controller.ts +48 -48
  303. package/src/module/workflow/controller/stage.controller.ts +50 -50
  304. package/src/module/workflow/controller/task.controller.ts +77 -77
  305. package/src/module/workflow/controller/workflow-list-master.controller.ts +44 -44
  306. package/src/module/workflow/controller/workflow-meta.controller.ts +80 -80
  307. package/src/module/workflow/controller/workflow.controller.ts +67 -67
  308. package/src/module/workflow/entity/action-category.entity.ts +38 -38
  309. package/src/module/workflow/entity/action-data.entity.ts +55 -55
  310. package/src/module/workflow/entity/action-resources-mapping.entity.ts +29 -29
  311. package/src/module/workflow/entity/action-template-mapping.entity.ts +17 -17
  312. package/src/module/workflow/entity/action.entity.ts +50 -50
  313. package/src/module/workflow/entity/activity-log.entity.ts +43 -43
  314. package/src/module/workflow/entity/comm-template.entity.ts +43 -43
  315. package/src/module/workflow/entity/entity-modification.entity.ts +38 -38
  316. package/src/module/workflow/entity/form.entity.ts +25 -25
  317. package/src/module/workflow/entity/stage-action-mapping.entity.ts +17 -17
  318. package/src/module/workflow/entity/stage-group.entity.ts +23 -23
  319. package/src/module/workflow/entity/stage-movement-data.entity.ts +38 -38
  320. package/src/module/workflow/entity/stage.entity.ts +20 -20
  321. package/src/module/workflow/entity/task-data.entity.ts +88 -88
  322. package/src/module/workflow/entity/template-attach-mapper.entity.ts +30 -30
  323. package/src/module/workflow/entity/workflow-data.entity.ts +11 -11
  324. package/src/module/workflow/entity/workflow-level-mapping.entity.ts +18 -18
  325. package/src/module/workflow/entity/workflow.entity.ts +20 -20
  326. package/src/module/workflow/repository/action-category.repository.ts +79 -79
  327. package/src/module/workflow/repository/action-data.repository.ts +333 -333
  328. package/src/module/workflow/repository/action.repository.ts +323 -323
  329. package/src/module/workflow/repository/activity-log.repository.ts +148 -148
  330. package/src/module/workflow/repository/comm-template.repository.ts +149 -149
  331. package/src/module/workflow/repository/form-master.repository.ts +59 -59
  332. package/src/module/workflow/repository/stage-group.repository.ts +176 -176
  333. package/src/module/workflow/repository/stage-movement.repository.ts +244 -244
  334. package/src/module/workflow/repository/stage.repository.ts +172 -172
  335. package/src/module/workflow/repository/task.repository.ts +127 -127
  336. package/src/module/workflow/repository/workflow.repository.ts +42 -42
  337. package/src/module/workflow/service/action-category.service.ts +33 -33
  338. package/src/module/workflow/service/action-data.service.ts +62 -62
  339. package/src/module/workflow/service/action-resources-mapping.service.ts +10 -10
  340. package/src/module/workflow/service/action-template-mapping.service.ts +106 -106
  341. package/src/module/workflow/service/action.service.ts +279 -279
  342. package/src/module/workflow/service/activity-log.service.ts +107 -107
  343. package/src/module/workflow/service/comm-template.service.ts +180 -180
  344. package/src/module/workflow/service/entity-modification.service.ts +67 -67
  345. package/src/module/workflow/service/form-master.service.ts +35 -35
  346. package/src/module/workflow/service/populate-workflow.service.ts +303 -303
  347. package/src/module/workflow/service/stage-action-mapping.service.ts +5 -5
  348. package/src/module/workflow/service/stage-group.service.ts +319 -319
  349. package/src/module/workflow/service/stage.service.ts +199 -199
  350. package/src/module/workflow/service/task.service.ts +560 -560
  351. package/src/module/workflow/service/workflow-list-master.service.ts +60 -60
  352. package/src/module/workflow/service/workflow-meta.service.ts +640 -640
  353. package/src/module/workflow/service/workflow.service.ts +205 -205
  354. package/src/module/workflow/workflow.module.ts +176 -176
  355. package/src/module/workflow-automation/controller/workflow-automation.controller.ts +21 -21
  356. package/src/module/workflow-automation/entity/workflow-automation-action.entity.ts +26 -26
  357. package/src/module/workflow-automation/entity/workflow-automation.entity.ts +35 -35
  358. package/src/module/workflow-automation/interface/action.decorator.ts +7 -7
  359. package/src/module/workflow-automation/interface/action.interface.ts +5 -5
  360. package/src/module/workflow-automation/service/action-registery.service.ts +35 -35
  361. package/src/module/workflow-automation/service/workflow-automation-engine.service.ts +214 -214
  362. package/src/module/workflow-automation/service/workflow-automation.service.ts +347 -347
  363. package/src/module/workflow-automation/workflow-automation.module.ts +34 -34
  364. package/src/resources/dev.properties.yaml +30 -30
  365. package/src/resources/local.properties.yaml +27 -27
  366. package/src/resources/properties.module.ts +12 -12
  367. package/src/resources/properties.yaml.ts +11 -11
  368. package/src/resources/uat.properties.yaml +31 -31
  369. package/src/table.config.ts +126 -126
  370. package/src/utils/dto/excel-data.dto.ts +14 -14
  371. package/src/utils/dto/excelsheet-data.dto.ts +5 -5
  372. package/src/utils/service/base64util.service.ts +18 -18
  373. package/src/utils/service/clockIDGenUtil.service.ts +21 -21
  374. package/src/utils/service/codeGenerator.service.ts +22 -22
  375. package/src/utils/service/dateUtil.service.ts +17 -17
  376. package/src/utils/service/encryptUtil.service.ts +97 -97
  377. package/src/utils/service/excel-helper.service.ts +72 -72
  378. package/src/utils/service/excelUtil.service.ts +15 -15
  379. package/src/utils/service/file-util.service.ts +11 -11
  380. package/src/utils/service/json-util.service.ts +23 -23
  381. package/src/utils/service/loggingUtil.service.ts +34 -34
  382. package/src/utils/service/reflection-helper.service.ts +62 -62
  383. package/src/utils/service/wbsCodeGen.service.ts +8 -8
  384. package/src/utils/utils.module.ts +25 -25
  385. package/tsconfig.build.json +4 -4
  386. package/tsconfig.json +24 -24
@@ -1,372 +1,372 @@
1
- import { Injectable, Logger } from '@nestjs/common';
2
- import axios, { AxiosResponse } from 'axios';
3
- import { randomUUID } from 'crypto';
4
- import {
5
- IntegrationResult,
6
- IntegrationStrategy,
7
- } from '../integration.strategy';
8
-
9
- interface TubelightWhatsAppConfig {
10
- userName: string;
11
- password: string;
12
- tenantId: string;
13
- custUuid?: string;
14
- baseUrl?: string;
15
- templateId?: string;
16
- templateName?: string;
17
- templateLanguage?: string;
18
- variables?: string;
19
- }
20
-
21
- interface TubelightApiResponse {
22
- success: boolean;
23
- messageId?: string;
24
- id?: string;
25
- status?: string;
26
- message?: string;
27
- error?: string;
28
- details?: string;
29
- }
30
-
31
- @Injectable()
32
- export class TubelightWhatsAppStrategy implements IntegrationStrategy {
33
- private readonly logger = new Logger(TubelightWhatsAppStrategy.name);
34
- private readonly defaultBaseUrl =
35
- 'https://portal.tubelightcommunications.com/whatsapp/api/v1';
36
-
37
- async sendMessage(
38
- to: string,
39
- message: string,
40
- config: any,
41
- ): Promise<IntegrationResult> {
42
- try {
43
- if (!this.validateConfig(config)) {
44
- throw new Error('Invalid Tubelight WhatsApp configuration');
45
- }
46
-
47
- const tubelightConfig = config as TubelightWhatsAppConfig;
48
- const token = await this.authenticate(tubelightConfig);
49
-
50
- if (!token) {
51
- throw new Error('Failed to authenticate with Tubelight');
52
- }
53
-
54
- const baseUrl = this.defaultBaseUrl;
55
- const url = `${baseUrl}/bulk/send`;
56
-
57
- const payload = [this.prepareMessagePayload(to, message, config)];
58
-
59
- console.log(payload)
60
-
61
- const response = await axios.post(
62
- url,
63
- payload,
64
- {
65
- headers: {
66
- 'Content-Type': 'application/json',
67
- Authorization: `Bearer ${token}`,
68
- },
69
- timeout: 30000,
70
- },
71
- );
72
-
73
- if (
74
- response.status === 200
75
- ) {
76
- const messageId = response.data.messageId || response.data.id;
77
- this.logger.log(
78
- `Tubelight WhatsApp message sent successfully to ${to}, messageId: ${messageId}`,
79
- );
80
-
81
- return {
82
- success: true,
83
- messageId: messageId,
84
- provider: 'tubelight',
85
- service: 'API',
86
- timestamp: new Date(),
87
- message: "WhatsApp Message sent successfully"
88
- };
89
- } else {
90
- throw new Error(
91
- response.data?.error ||
92
- response.data?.message ||
93
- 'Invalid response from Tubelight API',
94
- );
95
- }
96
- } catch (error) {
97
- this.logger.error(
98
- `Failed to send Tubelight WhatsApp message to ${to}`,
99
- error.response?.data || error.message,
100
- );
101
-
102
- return {
103
- success: false,
104
- provider: 'tubelight',
105
- service: 'API',
106
- error: this.extractErrorMessage(error),
107
- timestamp: new Date(),
108
- };
109
- }
110
- }
111
-
112
- private async authenticate(
113
- config: TubelightWhatsAppConfig,
114
- ): Promise<string | null> {
115
- try {
116
- const authUrl = 'https://portal.tubelightcommunications.com/api/authentication/login';
117
-
118
- const response = await axios.post(
119
- authUrl,
120
- {
121
- username: config.userName,
122
- password: config.password,
123
- validityTime: 3600,
124
- },
125
- {
126
- headers: {
127
- 'Content-Type': 'application/json',
128
- },
129
- },
130
- );
131
-
132
- const data = response.data as {
133
- bearer_token?: string;
134
- accessToken?: string;
135
- token?: string;
136
- authToken?: string;
137
- success?: boolean;
138
- };
139
-
140
- // Return token in various possible formats
141
- const token = data?.bearer_token || data?.accessToken || data?.token || data?.authToken || null;
142
-
143
- if (token) {
144
- this.logger.log('Successfully authenticated with Tubelight');
145
- return token;
146
- }
147
-
148
- this.logger.warn('No token found in Tubelight auth response');
149
- return null;
150
- } catch (error) {
151
- const errorMessage = error.response?.data
152
- ? JSON.stringify(error.response.data)
153
- : error.message;
154
- this.logger.error(
155
- 'Failed to authenticate with Tubelight:',
156
- errorMessage,
157
- );
158
- return null;
159
- }
160
- }
161
-
162
- private prepareMessagePayload(to: string, message: string, config: any): any {
163
- const basePayload = {
164
- cust_uuid: config.custUuid || randomUUID(),
165
- to: [this.formatPhoneNumber(to)],
166
- };
167
-
168
- // If templateId exists, send template message
169
- if (config.templateId || config.templateName) {
170
- const messagePayload: any = {
171
- type: 'template',
172
- template_name: config.templateId || config.templateName,
173
- language: config.templateLanguage || 'en',
174
- };
175
-
176
- // Add body_params if provided
177
- if (config.variables) {
178
- console.log("variables", config.variables)
179
- try {
180
- // Parse JSON string
181
- const parsedVariables = typeof config.variables === 'string'
182
- ? JSON.parse(config.variables)
183
- : config.variables;
184
-
185
- // Convert object to array of values, or use array as-is
186
- messagePayload.body_params = Array.isArray(parsedVariables)
187
- ? parsedVariables
188
- : Object.values(parsedVariables);
189
- } catch (e) {
190
- this.logger.error('Failed to parse variables JSON:', e.message);
191
- messagePayload.body_params = [];
192
- }
193
- }
194
-
195
- return {
196
- ...basePayload,
197
- message: messagePayload,
198
- };
199
- }
200
-
201
- // Default text message
202
- return {
203
- ...basePayload,
204
- message: {
205
- type: 'text',
206
- text: message,
207
- },
208
- };
209
- }
210
-
211
- private formatPhoneNumber(phoneNumber: string): string {
212
- // Remove any non-digit characters
213
- let formatted = phoneNumber.replace(/\D/g, '');
214
-
215
- return formatted;
216
- }
217
-
218
- private extractErrorMessage(error: any): string {
219
- if (error.response?.data?.error) {
220
- return error.response.data.error;
221
- }
222
-
223
- if (error.response?.data?.message) {
224
- return error.response.data.message;
225
- }
226
-
227
- if (error.response?.data?.details) {
228
- return error.response.data.details;
229
- }
230
-
231
- if (error.message) {
232
- return error.message;
233
- }
234
-
235
- return 'Unknown Tubelight API error';
236
- }
237
-
238
- validateConfig(config: any): boolean {
239
- if (!config || typeof config !== 'object') {
240
- return false;
241
- }
242
-
243
- // Required fields
244
- if (!config.userName || !config.password || !config.tenantId) {
245
- return false;
246
- }
247
-
248
- return true;
249
- }
250
-
251
- async getAccountInfo(config: TubelightWhatsAppConfig): Promise<any> {
252
- try {
253
- const token = await this.authenticate(config);
254
- if (!token) {
255
- throw new Error('Authentication failed');
256
- }
257
-
258
- const baseUrl = config.baseUrl || this.defaultBaseUrl;
259
- const url = `${baseUrl}/account/info`;
260
-
261
- const response = await axios.get(url, {
262
- headers: {
263
- Authorization: `Bearer ${token}`,
264
- },
265
- });
266
-
267
- return response.data;
268
- } catch (error) {
269
- this.logger.error(
270
- 'Failed to get Tubelight account info',
271
- error.response?.data || error.message,
272
- );
273
- throw new Error(
274
- `Failed to get account info: ${this.extractErrorMessage(error)}`,
275
- );
276
- }
277
- }
278
-
279
- async getTemplates(config: TubelightWhatsAppConfig): Promise<{
280
- success: boolean;
281
- data?: Array<{
282
- label: string;
283
- value: string;
284
- }>;
285
- error?: string;
286
- }> {
287
- try {
288
- const token = await this.authenticate(config);
289
- if (!token) {
290
- throw new Error('Authentication failed');
291
- }
292
-
293
- const url = `${this.defaultBaseUrl}/retreive/template`;
294
-
295
- const response = await axios.post(
296
- url,
297
- {},
298
- {
299
- headers: {
300
- 'Content-Type': 'application/json',
301
- Authorization: `Bearer ${token}`,
302
- },
303
- },
304
- );
305
-
306
- const templates = response.data?.data || response.data?.templates || response.data || [];
307
-
308
- // Format the response with templateName as both label and value
309
- const formattedTemplates = Array.isArray(templates)
310
- ? templates.map((template: any) => ({
311
- label: template.templateName,
312
- value: template.templateName,
313
- }))
314
- : [];
315
-
316
- return {
317
- success: true,
318
- data: formattedTemplates,
319
- };
320
- } catch (error) {
321
- let errorMessage = 'Failed to fetch Tubelight templates';
322
-
323
- if (error.response?.status === 401) {
324
- errorMessage = 'Authentication failed';
325
- } else if (error.response?.data?.message) {
326
- errorMessage = error.response.data.message;
327
- } else if (error.response?.data?.error) {
328
- errorMessage = error.response.data.error;
329
- } else if (error.message) {
330
- errorMessage = error.message;
331
- }
332
-
333
- this.logger.error('Failed to get Tubelight templates', errorMessage);
334
-
335
- return {
336
- success: false,
337
- error: errorMessage,
338
- };
339
- }
340
- }
341
-
342
- async getMessageStatus(
343
- config: TubelightWhatsAppConfig,
344
- messageId: string,
345
- ): Promise<any> {
346
- try {
347
- const token = await this.authenticate(config);
348
- if (!token) {
349
- throw new Error('Authentication failed');
350
- }
351
-
352
- const baseUrl = config.baseUrl || this.defaultBaseUrl;
353
- const url = `${baseUrl}/messages/${messageId}/status`;
354
-
355
- const response = await axios.get(url, {
356
- headers: {
357
- Authorization: `Bearer ${token}`,
358
- },
359
- });
360
-
361
- return response.data;
362
- } catch (error) {
363
- this.logger.error(
364
- 'Failed to get message status',
365
- error.response?.data || error.message,
366
- );
367
- throw new Error(
368
- `Failed to get message status: ${this.extractErrorMessage(error)}`,
369
- );
370
- }
371
- }
372
- }
1
+ import { Injectable, Logger } from '@nestjs/common';
2
+ import axios, { AxiosResponse } from 'axios';
3
+ import { randomUUID } from 'crypto';
4
+ import {
5
+ IntegrationResult,
6
+ IntegrationStrategy,
7
+ } from '../integration.strategy';
8
+
9
+ interface TubelightWhatsAppConfig {
10
+ userName: string;
11
+ password: string;
12
+ tenantId: string;
13
+ custUuid?: string;
14
+ baseUrl?: string;
15
+ templateId?: string;
16
+ templateName?: string;
17
+ templateLanguage?: string;
18
+ variables?: string;
19
+ }
20
+
21
+ interface TubelightApiResponse {
22
+ success: boolean;
23
+ messageId?: string;
24
+ id?: string;
25
+ status?: string;
26
+ message?: string;
27
+ error?: string;
28
+ details?: string;
29
+ }
30
+
31
+ @Injectable()
32
+ export class TubelightWhatsAppStrategy implements IntegrationStrategy {
33
+ private readonly logger = new Logger(TubelightWhatsAppStrategy.name);
34
+ private readonly defaultBaseUrl =
35
+ 'https://portal.tubelightcommunications.com/whatsapp/api/v1';
36
+
37
+ async sendMessage(
38
+ to: string,
39
+ message: string,
40
+ config: any,
41
+ ): Promise<IntegrationResult> {
42
+ try {
43
+ if (!this.validateConfig(config)) {
44
+ throw new Error('Invalid Tubelight WhatsApp configuration');
45
+ }
46
+
47
+ const tubelightConfig = config as TubelightWhatsAppConfig;
48
+ const token = await this.authenticate(tubelightConfig);
49
+
50
+ if (!token) {
51
+ throw new Error('Failed to authenticate with Tubelight');
52
+ }
53
+
54
+ const baseUrl = this.defaultBaseUrl;
55
+ const url = `${baseUrl}/bulk/send`;
56
+
57
+ const payload = [this.prepareMessagePayload(to, message, config)];
58
+
59
+ console.log(payload)
60
+
61
+ const response = await axios.post(
62
+ url,
63
+ payload,
64
+ {
65
+ headers: {
66
+ 'Content-Type': 'application/json',
67
+ Authorization: `Bearer ${token}`,
68
+ },
69
+ timeout: 30000,
70
+ },
71
+ );
72
+
73
+ if (
74
+ response.status === 200
75
+ ) {
76
+ const messageId = response.data.messageId || response.data.id;
77
+ this.logger.log(
78
+ `Tubelight WhatsApp message sent successfully to ${to}, messageId: ${messageId}`,
79
+ );
80
+
81
+ return {
82
+ success: true,
83
+ messageId: messageId,
84
+ provider: 'tubelight',
85
+ service: 'API',
86
+ timestamp: new Date(),
87
+ message: "WhatsApp Message sent successfully"
88
+ };
89
+ } else {
90
+ throw new Error(
91
+ response.data?.error ||
92
+ response.data?.message ||
93
+ 'Invalid response from Tubelight API',
94
+ );
95
+ }
96
+ } catch (error) {
97
+ this.logger.error(
98
+ `Failed to send Tubelight WhatsApp message to ${to}`,
99
+ error.response?.data || error.message,
100
+ );
101
+
102
+ return {
103
+ success: false,
104
+ provider: 'tubelight',
105
+ service: 'API',
106
+ error: this.extractErrorMessage(error),
107
+ timestamp: new Date(),
108
+ };
109
+ }
110
+ }
111
+
112
+ private async authenticate(
113
+ config: TubelightWhatsAppConfig,
114
+ ): Promise<string | null> {
115
+ try {
116
+ const authUrl = 'https://portal.tubelightcommunications.com/api/authentication/login';
117
+
118
+ const response = await axios.post(
119
+ authUrl,
120
+ {
121
+ username: config.userName,
122
+ password: config.password,
123
+ validityTime: 3600,
124
+ },
125
+ {
126
+ headers: {
127
+ 'Content-Type': 'application/json',
128
+ },
129
+ },
130
+ );
131
+
132
+ const data = response.data as {
133
+ bearer_token?: string;
134
+ accessToken?: string;
135
+ token?: string;
136
+ authToken?: string;
137
+ success?: boolean;
138
+ };
139
+
140
+ // Return token in various possible formats
141
+ const token = data?.bearer_token || data?.accessToken || data?.token || data?.authToken || null;
142
+
143
+ if (token) {
144
+ this.logger.log('Successfully authenticated with Tubelight');
145
+ return token;
146
+ }
147
+
148
+ this.logger.warn('No token found in Tubelight auth response');
149
+ return null;
150
+ } catch (error) {
151
+ const errorMessage = error.response?.data
152
+ ? JSON.stringify(error.response.data)
153
+ : error.message;
154
+ this.logger.error(
155
+ 'Failed to authenticate with Tubelight:',
156
+ errorMessage,
157
+ );
158
+ return null;
159
+ }
160
+ }
161
+
162
+ private prepareMessagePayload(to: string, message: string, config: any): any {
163
+ const basePayload = {
164
+ cust_uuid: config.custUuid || randomUUID(),
165
+ to: [this.formatPhoneNumber(to)],
166
+ };
167
+
168
+ // If templateId exists, send template message
169
+ if (config.templateId || config.templateName) {
170
+ const messagePayload: any = {
171
+ type: 'template',
172
+ template_name: config.templateId || config.templateName,
173
+ language: config.templateLanguage || 'en',
174
+ };
175
+
176
+ // Add body_params if provided
177
+ if (config.variables) {
178
+ console.log("variables", config.variables)
179
+ try {
180
+ // Parse JSON string
181
+ const parsedVariables = typeof config.variables === 'string'
182
+ ? JSON.parse(config.variables)
183
+ : config.variables;
184
+
185
+ // Convert object to array of values, or use array as-is
186
+ messagePayload.body_params = Array.isArray(parsedVariables)
187
+ ? parsedVariables
188
+ : Object.values(parsedVariables);
189
+ } catch (e) {
190
+ this.logger.error('Failed to parse variables JSON:', e.message);
191
+ messagePayload.body_params = [];
192
+ }
193
+ }
194
+
195
+ return {
196
+ ...basePayload,
197
+ message: messagePayload,
198
+ };
199
+ }
200
+
201
+ // Default text message
202
+ return {
203
+ ...basePayload,
204
+ message: {
205
+ type: 'text',
206
+ text: message,
207
+ },
208
+ };
209
+ }
210
+
211
+ private formatPhoneNumber(phoneNumber: string): string {
212
+ // Remove any non-digit characters
213
+ let formatted = phoneNumber.replace(/\D/g, '');
214
+
215
+ return formatted;
216
+ }
217
+
218
+ private extractErrorMessage(error: any): string {
219
+ if (error.response?.data?.error) {
220
+ return error.response.data.error;
221
+ }
222
+
223
+ if (error.response?.data?.message) {
224
+ return error.response.data.message;
225
+ }
226
+
227
+ if (error.response?.data?.details) {
228
+ return error.response.data.details;
229
+ }
230
+
231
+ if (error.message) {
232
+ return error.message;
233
+ }
234
+
235
+ return 'Unknown Tubelight API error';
236
+ }
237
+
238
+ validateConfig(config: any): boolean {
239
+ if (!config || typeof config !== 'object') {
240
+ return false;
241
+ }
242
+
243
+ // Required fields
244
+ if (!config.userName || !config.password || !config.tenantId) {
245
+ return false;
246
+ }
247
+
248
+ return true;
249
+ }
250
+
251
+ async getAccountInfo(config: TubelightWhatsAppConfig): Promise<any> {
252
+ try {
253
+ const token = await this.authenticate(config);
254
+ if (!token) {
255
+ throw new Error('Authentication failed');
256
+ }
257
+
258
+ const baseUrl = config.baseUrl || this.defaultBaseUrl;
259
+ const url = `${baseUrl}/account/info`;
260
+
261
+ const response = await axios.get(url, {
262
+ headers: {
263
+ Authorization: `Bearer ${token}`,
264
+ },
265
+ });
266
+
267
+ return response.data;
268
+ } catch (error) {
269
+ this.logger.error(
270
+ 'Failed to get Tubelight account info',
271
+ error.response?.data || error.message,
272
+ );
273
+ throw new Error(
274
+ `Failed to get account info: ${this.extractErrorMessage(error)}`,
275
+ );
276
+ }
277
+ }
278
+
279
+ async getTemplates(config: TubelightWhatsAppConfig): Promise<{
280
+ success: boolean;
281
+ data?: Array<{
282
+ label: string;
283
+ value: string;
284
+ }>;
285
+ error?: string;
286
+ }> {
287
+ try {
288
+ const token = await this.authenticate(config);
289
+ if (!token) {
290
+ throw new Error('Authentication failed');
291
+ }
292
+
293
+ const url = `${this.defaultBaseUrl}/retreive/template`;
294
+
295
+ const response = await axios.post(
296
+ url,
297
+ {},
298
+ {
299
+ headers: {
300
+ 'Content-Type': 'application/json',
301
+ Authorization: `Bearer ${token}`,
302
+ },
303
+ },
304
+ );
305
+
306
+ const templates = response.data?.data || response.data?.templates || response.data || [];
307
+
308
+ // Format the response with templateName as both label and value
309
+ const formattedTemplates = Array.isArray(templates)
310
+ ? templates.map((template: any) => ({
311
+ label: template.templateName,
312
+ value: template.templateName,
313
+ }))
314
+ : [];
315
+
316
+ return {
317
+ success: true,
318
+ data: formattedTemplates,
319
+ };
320
+ } catch (error) {
321
+ let errorMessage = 'Failed to fetch Tubelight templates';
322
+
323
+ if (error.response?.status === 401) {
324
+ errorMessage = 'Authentication failed';
325
+ } else if (error.response?.data?.message) {
326
+ errorMessage = error.response.data.message;
327
+ } else if (error.response?.data?.error) {
328
+ errorMessage = error.response.data.error;
329
+ } else if (error.message) {
330
+ errorMessage = error.message;
331
+ }
332
+
333
+ this.logger.error('Failed to get Tubelight templates', errorMessage);
334
+
335
+ return {
336
+ success: false,
337
+ error: errorMessage,
338
+ };
339
+ }
340
+ }
341
+
342
+ async getMessageStatus(
343
+ config: TubelightWhatsAppConfig,
344
+ messageId: string,
345
+ ): Promise<any> {
346
+ try {
347
+ const token = await this.authenticate(config);
348
+ if (!token) {
349
+ throw new Error('Authentication failed');
350
+ }
351
+
352
+ const baseUrl = config.baseUrl || this.defaultBaseUrl;
353
+ const url = `${baseUrl}/messages/${messageId}/status`;
354
+
355
+ const response = await axios.get(url, {
356
+ headers: {
357
+ Authorization: `Bearer ${token}`,
358
+ },
359
+ });
360
+
361
+ return response.data;
362
+ } catch (error) {
363
+ this.logger.error(
364
+ 'Failed to get message status',
365
+ error.response?.data || error.message,
366
+ );
367
+ throw new Error(
368
+ `Failed to get message status: ${this.extractErrorMessage(error)}`,
369
+ );
370
+ }
371
+ }
372
+ }