rez_core 3.1.116 → 3.1.118

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