rez_core 4.0.88 → 4.0.91

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 (385) hide show
  1. package/.idea/250218_nodejs_core.iml +11 -8
  2. package/.idea/codeStyles/Project.xml +58 -58
  3. package/.idea/codeStyles/codeStyleConfig.xml +4 -4
  4. package/.idea/inspectionProfiles/Project_Default.xml +1 -1
  5. package/.idea/modules.xml +7 -7
  6. package/.idea/prettier.xml +5 -5
  7. package/.idea/vcs.xml +5 -5
  8. package/.prettierrc +3 -3
  9. package/README.md +99 -99
  10. package/dist/module/auth/guards/role.guard.js +3 -3
  11. package/dist/module/auth/services/auth.service.js +2 -2
  12. package/dist/module/filter/repository/saved-filter.repository.js +4 -4
  13. package/dist/module/filter/service/filter-evaluator.service.js +2 -2
  14. package/dist/module/filter/service/filter.service.js +32 -23
  15. package/dist/module/filter/service/filter.service.js.map +1 -1
  16. package/dist/module/integration/examples/usage.example.js +9 -9
  17. package/dist/module/integration/service/integration.service.js +10 -1
  18. package/dist/module/integration/service/integration.service.js.map +1 -1
  19. package/dist/module/integration/service/wrapper.service.js +25 -25
  20. package/dist/module/listmaster/service/list-master-item.service.js +2 -2
  21. package/dist/module/mapper/service/field-mapper.service.js +4 -4
  22. package/dist/module/mapper/service/mapper.service.js +2 -2
  23. package/dist/module/meta/service/entity-dynamic.service.js +18 -18
  24. package/dist/module/meta/service/entity-list.service.js +3 -3
  25. package/dist/module/meta/service/entity-master.service.js +3 -3
  26. package/dist/module/meta/service/entity-relation.service.js +11 -11
  27. package/dist/module/meta/service/entity-service-impl.service.js +3 -3
  28. package/dist/module/meta/service/resolver.service.js +3 -3
  29. package/dist/module/module/repository/menu.repository.js +12 -12
  30. package/dist/module/notification/service/notification.service.js +9 -9
  31. package/dist/module/user/controller/login.controller.js +18 -18
  32. package/dist/module/user/service/role.service.js +4 -4
  33. package/dist/module/user/service/user-session.service.js +2 -2
  34. package/dist/module/workflow/repository/action.repository.js +20 -20
  35. package/dist/module/workflow/repository/comm-template.repository.js +6 -6
  36. package/dist/module/workflow/repository/form-master.repository.js +2 -2
  37. package/dist/module/workflow/repository/stage-group.repository.js +23 -23
  38. package/dist/module/workflow/repository/stage-movement.repository.js +15 -15
  39. package/dist/module/workflow/repository/stage.repository.js +8 -8
  40. package/dist/module/workflow/service/action-template-mapping.service.js +22 -22
  41. package/dist/module/workflow/service/action.service.js +7 -7
  42. package/dist/module/workflow/service/entity-modification.service.js +6 -6
  43. package/dist/module/workflow/service/stage-group.service.js +2 -2
  44. package/dist/module/workflow/service/stage.service.js +2 -2
  45. package/dist/module/workflow/service/task.service.js +28 -28
  46. package/dist/module/workflow/service/workflow-list-master.service.js +15 -15
  47. package/dist/module/workflow/service/workflow-meta.service.js +35 -35
  48. package/dist/module/workflow/service/workflow.service.js +2 -2
  49. package/dist/tsconfig.build.tsbuildinfo +1 -1
  50. package/dist/utils/service/reflection-helper.service.js +2 -2
  51. package/docs/modules/event-driven-integration-design.md +91 -91
  52. package/docs/modules/integration.md +250 -250
  53. package/eslint.config.mjs +34 -34
  54. package/nest-cli.json +14 -14
  55. package/package.json +118 -118
  56. package/src/app.controller.ts +12 -12
  57. package/src/app.module.ts +49 -49
  58. package/src/app.service.ts +8 -8
  59. package/src/config/config.module.ts +18 -18
  60. package/src/config/database.config.ts +23 -23
  61. package/src/constant/global.constant.ts +67 -67
  62. package/src/core.module.ts +81 -81
  63. package/src/decorators/roles.decorator.ts +7 -7
  64. package/src/dtos/response.dto.ts +6 -6
  65. package/src/dtos/response.ts +5 -5
  66. package/src/index.ts +1 -1
  67. package/src/module/auth/auth.module.ts +49 -49
  68. package/src/module/auth/controller/auth.controller.ts +28 -28
  69. package/src/module/auth/guards/google-auth.guard.ts +9 -9
  70. package/src/module/auth/guards/jwt.guard.ts +22 -22
  71. package/src/module/auth/guards/role.guard.ts +68 -68
  72. package/src/module/auth/services/auth.service.ts +50 -50
  73. package/src/module/auth/services/jwt.service.ts +11 -11
  74. package/src/module/auth/strategies/google.strategy.ts +54 -54
  75. package/src/module/auth/strategies/jwt.strategy.ts +58 -58
  76. package/src/module/auth/strategies/local.strategy.ts +13 -13
  77. package/src/module/dashboard/controller/dashboard.controller.ts +36 -36
  78. package/src/module/dashboard/dashboard.module.ts +21 -21
  79. package/src/module/dashboard/entity/dashboard_page_data.entity.ts +27 -27
  80. package/src/module/dashboard/entity/widget_master.entity.ts +18 -18
  81. package/src/module/dashboard/repository/dashboard.repository.ts +42 -42
  82. package/src/module/dashboard/service/dashboard.service.ts +73 -73
  83. package/src/module/dev/dev.module.ts +12 -12
  84. package/src/module/dev/service/dev.service.ts +7 -7
  85. package/src/module/enterprise/controller/organization.controller.ts +36 -36
  86. package/src/module/enterprise/enterprise.module.ts +30 -30
  87. package/src/module/enterprise/entity/enterprise.entity.ts +37 -37
  88. package/src/module/enterprise/entity/organization-app-mapping.entity.ts +13 -13
  89. package/src/module/enterprise/entity/organization.entity.ts +92 -92
  90. package/src/module/enterprise/repository/enterprise.repository.ts +31 -31
  91. package/src/module/enterprise/repository/organization.repository.ts +26 -26
  92. package/src/module/enterprise/repository/school.repository.ts +278 -278
  93. package/src/module/enterprise/service/brand.service.ts +5 -5
  94. package/src/module/enterprise/service/enterprise.service.ts +16 -16
  95. package/src/module/enterprise/service/organization-app-mapping.service.ts +4 -4
  96. package/src/module/enterprise/service/organization.service.ts +145 -145
  97. package/src/module/filter/controller/filter.controller.ts +84 -84
  98. package/src/module/filter/dto/filter-request.dto.ts +38 -38
  99. package/src/module/filter/entity/saved-filter-detail.entity.ts +41 -41
  100. package/src/module/filter/entity/saved-filter-master.entity.ts +23 -23
  101. package/src/module/filter/filter.module.ts +31 -31
  102. package/src/module/filter/repository/saved-filter.repository.ts +168 -168
  103. package/src/module/filter/service/filter-evaluator.service.ts +86 -86
  104. package/src/module/filter/service/filter.service.ts +941 -930
  105. package/src/module/filter/service/saved-filter.service.ts +170 -170
  106. package/src/module/ics/controller/ics.controller.ts +21 -21
  107. package/src/module/ics/dto/ics.dto.ts +55 -55
  108. package/src/module/ics/ics.module.ts +13 -13
  109. package/src/module/ics/service/ics.service.ts +57 -57
  110. package/src/module/integration/controller/calender-event.controller.ts +31 -31
  111. package/src/module/integration/controller/integration.controller.ts +662 -662
  112. package/src/module/integration/controller/wrapper.controller.ts +37 -37
  113. package/src/module/integration/dto/create-config.dto.ts +526 -526
  114. package/src/module/integration/entity/integration-config.entity.ts +112 -112
  115. package/src/module/integration/entity/integration-entity-mapper.entity.ts +14 -14
  116. package/src/module/integration/entity/integration-source.entity.ts +17 -17
  117. package/src/module/integration/entity/user-integration.entity.ts +71 -71
  118. package/src/module/integration/examples/usage.example.ts +338 -338
  119. package/src/module/integration/factories/base.factory.ts +7 -7
  120. package/src/module/integration/factories/email.factory.ts +49 -49
  121. package/src/module/integration/factories/integration.factory.ts +121 -121
  122. package/src/module/integration/factories/sms.factory.ts +51 -51
  123. package/src/module/integration/factories/telephone.factory.ts +41 -41
  124. package/src/module/integration/factories/whatsapp.factory.ts +56 -56
  125. package/src/module/integration/integration.module.ts +110 -110
  126. package/src/module/integration/service/calendar-event.service.ts +118 -118
  127. package/src/module/integration/service/integration-entity-mapper.service.ts +17 -17
  128. package/src/module/integration/service/integration-queue.service.ts +229 -229
  129. package/src/module/integration/service/integration.service.ts +2633 -2621
  130. package/src/module/integration/service/oauth.service.ts +224 -224
  131. package/src/module/integration/service/wrapper.service.ts +499 -499
  132. package/src/module/integration/strategies/email/gmail-api.strategy.ts +280 -280
  133. package/src/module/integration/strategies/email/outlook-api.strategy.ts +44 -44
  134. package/src/module/integration/strategies/email/outlook.strategy.ts +64 -64
  135. package/src/module/integration/strategies/email/sendgrid-api.strategy.ts +260 -260
  136. package/src/module/integration/strategies/integration.strategy.ts +97 -97
  137. package/src/module/integration/strategies/sms/gupshup-sms.strategy.ts +146 -146
  138. package/src/module/integration/strategies/sms/msg91-sms.strategy.ts +164 -164
  139. package/src/module/integration/strategies/sms/tubelight-sms.strategy.ts +163 -163
  140. package/src/module/integration/strategies/telephone/ozonetel-voice.strategy.ts +238 -238
  141. package/src/module/integration/strategies/telephone/tubelight-voice.strategy.ts +210 -210
  142. package/src/module/integration/strategies/whatsapp/gupshup-whatsapp.strategy.ts +359 -359
  143. package/src/module/integration/strategies/whatsapp/tubelight-whatsapp.strategy.ts +372 -372
  144. package/src/module/integration/strategies/whatsapp/whatsapp-cloud.strategy.ts +403 -403
  145. package/src/module/integration/strategies/whatsapp/whatsapp.strategy.ts +57 -57
  146. package/src/module/layout/controller/layout.controller.ts +47 -47
  147. package/src/module/layout/entity/header-items.entity.ts +28 -28
  148. package/src/module/layout/entity/header-section.entity.ts +19 -19
  149. package/src/module/layout/layout.module.ts +21 -21
  150. package/src/module/layout/repository/header-items.repository.ts +18 -18
  151. package/src/module/layout/repository/header-section.repository.ts +22 -22
  152. package/src/module/layout/service/header-section.service.ts +25 -25
  153. package/src/module/layout_preference/controller/layout_preference.controller.ts +47 -47
  154. package/src/module/layout_preference/entity/layout_preference.entity.ts +28 -28
  155. package/src/module/layout_preference/layout_preference.module.ts +18 -18
  156. package/src/module/layout_preference/repository/layout_preference.repository.ts +30 -30
  157. package/src/module/layout_preference/service/layout_preference.service.ts +172 -172
  158. package/src/module/lead/controller/lead.controller.ts +30 -30
  159. package/src/module/lead/lead.module.ts +14 -14
  160. package/src/module/lead/repository/lead.repository.ts +41 -41
  161. package/src/module/lead/service/lead.service.ts +54 -54
  162. package/src/module/listmaster/controller/list-master.controller.ts +187 -187
  163. package/src/module/listmaster/entity/list-master-items.entity.ts +43 -43
  164. package/src/module/listmaster/entity/list-master.entity.ts +33 -33
  165. package/src/module/listmaster/listmaster.module.ts +44 -44
  166. package/src/module/listmaster/repository/list-master-items.repository.ts +169 -169
  167. package/src/module/listmaster/repository/list-master.repository.ts +46 -46
  168. package/src/module/listmaster/service/list-master-engine.ts +19 -19
  169. package/src/module/listmaster/service/list-master-extension.interface.ts +4 -4
  170. package/src/module/listmaster/service/list-master-item.service.ts +292 -292
  171. package/src/module/listmaster/service/list-master-registry.ts +15 -15
  172. package/src/module/listmaster/service/list-master.service.ts +442 -442
  173. package/src/module/mapper/controller/field-mapper.controller.ts +76 -76
  174. package/src/module/mapper/controller/mapper.controller.ts +20 -20
  175. package/src/module/mapper/dto/field-mapper.dto.ts +14 -14
  176. package/src/module/mapper/entity/field-lovs.entity.ts +19 -19
  177. package/src/module/mapper/entity/field-mapper.entity.ts +53 -53
  178. package/src/module/mapper/entity/mapper.entity.ts +16 -16
  179. package/src/module/mapper/mapper.module.ts +34 -34
  180. package/src/module/mapper/repository/field-lovs.repository.ts +35 -35
  181. package/src/module/mapper/repository/field-mapper.repository.ts +42 -42
  182. package/src/module/mapper/repository/mapper.repository.ts +15 -15
  183. package/src/module/mapper/service/field-mapper.service.ts +266 -266
  184. package/src/module/mapper/service/mapper.service.ts +79 -79
  185. package/src/module/master/controller/master.controller.ts +74 -74
  186. package/src/module/master/service/master.service.ts +483 -483
  187. package/src/module/meta/controller/app-master.controller.ts +38 -38
  188. package/src/module/meta/controller/attribute-master.controller.ts +66 -66
  189. package/src/module/meta/controller/entity-dynamic.controller.ts +125 -125
  190. package/src/module/meta/controller/entity-master.controller.ts +28 -28
  191. package/src/module/meta/controller/entity-relation.controller.ts +36 -36
  192. package/src/module/meta/controller/entity.controller.ts +392 -392
  193. package/src/module/meta/controller/entity.public.controller.ts +75 -75
  194. package/src/module/meta/controller/media.controller.ts +107 -107
  195. package/src/module/meta/controller/meta.controller.ts +96 -96
  196. package/src/module/meta/controller/view-master.controller.ts +86 -86
  197. package/src/module/meta/dto/entity-list-data.dto.ts +6 -6
  198. package/src/module/meta/dto/entity-tab.dto.ts +4 -4
  199. package/src/module/meta/dto/entity-table.dto.ts +9 -9
  200. package/src/module/meta/entity/app-master.entity.ts +34 -34
  201. package/src/module/meta/entity/attribute-master.entity.ts +89 -89
  202. package/src/module/meta/entity/base-entity.entity.ts +75 -75
  203. package/src/module/meta/entity/entity-master.entity.ts +85 -85
  204. package/src/module/meta/entity/entity-relation-data.entity.ts +29 -29
  205. package/src/module/meta/entity/entity-relation.entity.ts +23 -23
  206. package/src/module/meta/entity/entity-table-column.entity.ts +61 -61
  207. package/src/module/meta/entity/entity-table.entity.ts +50 -50
  208. package/src/module/meta/entity/media-data.entity.ts +32 -32
  209. package/src/module/meta/entity/preference.entity.ts +62 -62
  210. package/src/module/meta/entity/view-master.entity.ts +41 -41
  211. package/src/module/meta/entity.module.ts +158 -158
  212. package/src/module/meta/repository/app-master.repository.ts +20 -20
  213. package/src/module/meta/repository/attribute-master.repository.ts +110 -110
  214. package/src/module/meta/repository/entity-master.repository.ts +69 -69
  215. package/src/module/meta/repository/entity-table-column.repository.ts +39 -39
  216. package/src/module/meta/repository/entity-table.repository.ts +53 -53
  217. package/src/module/meta/repository/media-data.repository.ts +50 -50
  218. package/src/module/meta/repository/preference.repository.ts +20 -20
  219. package/src/module/meta/repository/user-app-mapping.repository.ts +28 -28
  220. package/src/module/meta/repository/view-master.repository.ts +42 -42
  221. package/src/module/meta/service/app-master.service.ts +37 -37
  222. package/src/module/meta/service/attribute-master.service.ts +117 -117
  223. package/src/module/meta/service/common.service.ts +9 -9
  224. package/src/module/meta/service/entity-dynamic.service.ts +824 -824
  225. package/src/module/meta/service/entity-list.service.ts +205 -205
  226. package/src/module/meta/service/entity-master.service.ts +169 -169
  227. package/src/module/meta/service/entity-realation-data.service.ts +9 -9
  228. package/src/module/meta/service/entity-relation.service.ts +69 -69
  229. package/src/module/meta/service/entity-service-impl.service.ts +525 -525
  230. package/src/module/meta/service/entity-table-column.service.ts +39 -39
  231. package/src/module/meta/service/entity-table.service.ts +150 -150
  232. package/src/module/meta/service/entity-validation.service.ts +187 -187
  233. package/src/module/meta/service/entity.service.ts +67 -67
  234. package/src/module/meta/service/field-group.service.ts +103 -103
  235. package/src/module/meta/service/media-data.service.ts +507 -507
  236. package/src/module/meta/service/populate-meta.service.ts +193 -193
  237. package/src/module/meta/service/preference.service.ts +16 -16
  238. package/src/module/meta/service/resolver.service.ts +267 -267
  239. package/src/module/meta/service/section-master.service.ts +104 -104
  240. package/src/module/meta/service/update-form-json.service.ts +22 -22
  241. package/src/module/meta/service/user-app-mapping.service.ts +17 -17
  242. package/src/module/meta/service/view-master.service.ts +127 -127
  243. package/src/module/module/controller/menu.controller.ts +15 -15
  244. package/src/module/module/controller/module-access.controller.ts +134 -134
  245. package/src/module/module/entity/menu.entity.ts +43 -43
  246. package/src/module/module/entity/module-access.entity.ts +25 -25
  247. package/src/module/module/entity/module-action.entity.ts +17 -17
  248. package/src/module/module/entity/module.entity.ts +52 -52
  249. package/src/module/module/module.module.ts +42 -42
  250. package/src/module/module/repository/menu.repository.ts +184 -184
  251. package/src/module/module/repository/module-access.repository.ts +344 -344
  252. package/src/module/module/service/menu.service.ts +82 -82
  253. package/src/module/module/service/module-access.service.ts +209 -209
  254. package/src/module/notification/controller/notification.controller.ts +58 -58
  255. package/src/module/notification/controller/otp.controller.ts +117 -117
  256. package/src/module/notification/entity/notification.entity.ts +26 -26
  257. package/src/module/notification/entity/otp.entity.ts +28 -28
  258. package/src/module/notification/firebase-admin.config.ts +22 -22
  259. package/src/module/notification/notification.module.ts +69 -69
  260. package/src/module/notification/repository/otp.repository.ts +27 -27
  261. package/src/module/notification/service/email.service.ts +127 -127
  262. package/src/module/notification/service/notification.service.ts +163 -163
  263. package/src/module/notification/service/otp.service.ts +132 -132
  264. package/src/module/third-party-module/entity/third-party-api-registry.entity.ts +52 -52
  265. package/src/module/third-party-module/repository/third-party-api-registry.repository.ts +20 -20
  266. package/src/module/third-party-module/service/api-registry.service.ts +13 -13
  267. package/src/module/third-party-module/third-party.module.ts +12 -12
  268. package/src/module/user/controller/login.controller.ts +197 -197
  269. package/src/module/user/controller/user.controller.ts +40 -40
  270. package/src/module/user/dto/create-user.dto.ts +62 -62
  271. package/src/module/user/dto/update-user.dto.ts +4 -4
  272. package/src/module/user/entity/role.entity.ts +33 -33
  273. package/src/module/user/entity/user-role-mapping.entity.ts +38 -38
  274. package/src/module/user/entity/user-session.entity.ts +73 -73
  275. package/src/module/user/entity/user.entity.ts +59 -59
  276. package/src/module/user/repository/role.repository.ts +96 -96
  277. package/src/module/user/repository/user-role-mapping.repository.ts +126 -126
  278. package/src/module/user/repository/user.repository.ts +50 -50
  279. package/src/module/user/repository/userSession.repository.ts +33 -33
  280. package/src/module/user/service/login.service.ts +284 -284
  281. package/src/module/user/service/role.service.ts +189 -189
  282. package/src/module/user/service/user-role-mapping.service.ts +98 -98
  283. package/src/module/user/service/user-session.service.ts +168 -168
  284. package/src/module/user/service/user.service.ts +365 -365
  285. package/src/module/user/user.module.ts +65 -65
  286. package/src/module/workflow/controller/action-category.controller.ts +54 -54
  287. package/src/module/workflow/controller/action-resource-mapping.controller.ts +23 -23
  288. package/src/module/workflow/controller/action-template-mapping.controller.ts +35 -35
  289. package/src/module/workflow/controller/action.controller.ts +111 -111
  290. package/src/module/workflow/controller/activity-log.controller.ts +55 -55
  291. package/src/module/workflow/controller/comm-template.controller.ts +43 -43
  292. package/src/module/workflow/controller/entity-modification.controller.ts +35 -35
  293. package/src/module/workflow/controller/form-master.controller.ts +43 -43
  294. package/src/module/workflow/controller/stage-group.controller.ts +48 -48
  295. package/src/module/workflow/controller/stage.controller.ts +50 -50
  296. package/src/module/workflow/controller/task.controller.ts +77 -77
  297. package/src/module/workflow/controller/workflow-list-master.controller.ts +44 -44
  298. package/src/module/workflow/controller/workflow-meta.controller.ts +80 -80
  299. package/src/module/workflow/controller/workflow.controller.ts +67 -67
  300. package/src/module/workflow/entity/action-category.entity.ts +38 -38
  301. package/src/module/workflow/entity/action-data.entity.ts +55 -55
  302. package/src/module/workflow/entity/action-resources-mapping.entity.ts +29 -29
  303. package/src/module/workflow/entity/action-template-mapping.entity.ts +17 -17
  304. package/src/module/workflow/entity/action.entity.ts +50 -50
  305. package/src/module/workflow/entity/activity-log.entity.ts +43 -43
  306. package/src/module/workflow/entity/comm-template.entity.ts +43 -43
  307. package/src/module/workflow/entity/entity-modification.entity.ts +38 -38
  308. package/src/module/workflow/entity/form.entity.ts +25 -25
  309. package/src/module/workflow/entity/stage-action-mapping.entity.ts +17 -17
  310. package/src/module/workflow/entity/stage-group.entity.ts +23 -23
  311. package/src/module/workflow/entity/stage-movement-data.entity.ts +38 -38
  312. package/src/module/workflow/entity/stage.entity.ts +20 -20
  313. package/src/module/workflow/entity/task-data.entity.ts +88 -88
  314. package/src/module/workflow/entity/template-attach-mapper.entity.ts +30 -30
  315. package/src/module/workflow/entity/workflow-data.entity.ts +11 -11
  316. package/src/module/workflow/entity/workflow-level-mapping.entity.ts +18 -18
  317. package/src/module/workflow/entity/workflow.entity.ts +20 -20
  318. package/src/module/workflow/repository/action-category.repository.ts +79 -79
  319. package/src/module/workflow/repository/action-data.repository.ts +323 -323
  320. package/src/module/workflow/repository/action.repository.ts +323 -323
  321. package/src/module/workflow/repository/activity-log.repository.ts +148 -148
  322. package/src/module/workflow/repository/comm-template.repository.ts +149 -149
  323. package/src/module/workflow/repository/form-master.repository.ts +59 -59
  324. package/src/module/workflow/repository/stage-group.repository.ts +176 -176
  325. package/src/module/workflow/repository/stage-movement.repository.ts +244 -244
  326. package/src/module/workflow/repository/stage.repository.ts +172 -172
  327. package/src/module/workflow/repository/task.repository.ts +127 -127
  328. package/src/module/workflow/repository/workflow.repository.ts +42 -42
  329. package/src/module/workflow/service/action-category.service.ts +33 -33
  330. package/src/module/workflow/service/action-data.service.ts +62 -62
  331. package/src/module/workflow/service/action-resources-mapping.service.ts +10 -10
  332. package/src/module/workflow/service/action-template-mapping.service.ts +104 -104
  333. package/src/module/workflow/service/action.service.ts +279 -279
  334. package/src/module/workflow/service/activity-log.service.ts +107 -107
  335. package/src/module/workflow/service/comm-template.service.ts +180 -180
  336. package/src/module/workflow/service/entity-modification.service.ts +67 -67
  337. package/src/module/workflow/service/form-master.service.ts +35 -35
  338. package/src/module/workflow/service/populate-workflow.service.ts +303 -303
  339. package/src/module/workflow/service/stage-action-mapping.service.ts +5 -5
  340. package/src/module/workflow/service/stage-group.service.ts +319 -319
  341. package/src/module/workflow/service/stage.service.ts +199 -199
  342. package/src/module/workflow/service/task.service.ts +560 -560
  343. package/src/module/workflow/service/workflow-list-master.service.ts +60 -60
  344. package/src/module/workflow/service/workflow-meta.service.ts +640 -640
  345. package/src/module/workflow/service/workflow.service.ts +205 -205
  346. package/src/module/workflow/workflow.module.ts +174 -174
  347. package/src/module/workflow-automation/controller/workflow-automation.controller.ts +21 -21
  348. package/src/module/workflow-automation/entity/workflow-automation-action.entity.ts +26 -26
  349. package/src/module/workflow-automation/entity/workflow-automation.entity.ts +35 -35
  350. package/src/module/workflow-automation/interface/action.decorator.ts +7 -7
  351. package/src/module/workflow-automation/interface/action.interface.ts +5 -5
  352. package/src/module/workflow-automation/service/action-registery.service.ts +35 -35
  353. package/src/module/workflow-automation/service/workflow-automation-engine.service.ts +214 -214
  354. package/src/module/workflow-automation/service/workflow-automation.service.ts +347 -347
  355. package/src/module/workflow-automation/workflow-automation.module.ts +34 -34
  356. package/src/resources/dev.properties.yaml +30 -30
  357. package/src/resources/local.properties.yaml +27 -27
  358. package/src/resources/properties.module.ts +12 -12
  359. package/src/resources/properties.yaml.ts +11 -11
  360. package/src/resources/uat.properties.yaml +31 -31
  361. package/src/table.config.ts +126 -126
  362. package/src/utils/dto/excel-data.dto.ts +14 -14
  363. package/src/utils/dto/excelsheet-data.dto.ts +5 -5
  364. package/src/utils/service/base64util.service.ts +18 -18
  365. package/src/utils/service/clockIDGenUtil.service.ts +21 -21
  366. package/src/utils/service/codeGenerator.service.ts +22 -22
  367. package/src/utils/service/dateUtil.service.ts +17 -17
  368. package/src/utils/service/encryptUtil.service.ts +97 -97
  369. package/src/utils/service/excel-helper.service.ts +72 -72
  370. package/src/utils/service/excelUtil.service.ts +15 -15
  371. package/src/utils/service/file-util.service.ts +11 -11
  372. package/src/utils/service/json-util.service.ts +23 -23
  373. package/src/utils/service/loggingUtil.service.ts +34 -34
  374. package/src/utils/service/reflection-helper.service.ts +62 -62
  375. package/src/utils/service/wbsCodeGen.service.ts +8 -8
  376. package/src/utils/utils.module.ts +25 -25
  377. package/tsconfig.build.json +4 -4
  378. package/tsconfig.json +24 -24
  379. package/.claude/settings.local.json +0 -26
  380. package/.idea/copilot.data.migration.agent.xml +0 -6
  381. package/.idea/copilot.data.migration.ask.xml +0 -6
  382. package/.idea/copilot.data.migration.ask2agent.xml +0 -6
  383. package/.idea/copilot.data.migration.edit.xml +0 -6
  384. package/.idea/misc.xml +0 -6
  385. package/server.log +0 -850
@@ -1,18 +1,18 @@
1
- export class Base64Util {
2
- static encode(byteArray: Uint8Array): string {
3
- return Buffer.from(byteArray).toString('base64');
4
- }
5
-
6
- static decode(base64String: string): Uint8Array {
7
- if (typeof Buffer !== 'undefined') {
8
- return Uint8Array.from(Buffer.from(base64String, 'base64'));
9
- }
10
-
11
- const binaryString = atob(base64String);
12
- const byteArray = new Uint8Array(binaryString.length);
13
- for (let i = 0; i < binaryString.length; i++) {
14
- byteArray[i] = binaryString.charCodeAt(i);
15
- }
16
- return byteArray;
17
- }
18
- }
1
+ export class Base64Util {
2
+ static encode(byteArray: Uint8Array): string {
3
+ return Buffer.from(byteArray).toString('base64');
4
+ }
5
+
6
+ static decode(base64String: string): Uint8Array {
7
+ if (typeof Buffer !== 'undefined') {
8
+ return Uint8Array.from(Buffer.from(base64String, 'base64'));
9
+ }
10
+
11
+ const binaryString = atob(base64String);
12
+ const byteArray = new Uint8Array(binaryString.length);
13
+ for (let i = 0; i < binaryString.length; i++) {
14
+ byteArray[i] = binaryString.charCodeAt(i);
15
+ }
16
+ return byteArray;
17
+ }
18
+ }
@@ -1,21 +1,21 @@
1
- import { Injectable } from '@nestjs/common';
2
-
3
- @Injectable()
4
- export class ClockIDGenService {
5
- private _counter = 0n;
6
- private timestampBits = 42;
7
- private timestampMask = BigInt(
8
- Math.floor(Math.pow(2, this.timestampBits)) - 1,
9
- );
10
- private counterBits = 10;
11
- private counterMask = BigInt(Math.floor(Math.pow(2, this.counterBits)) - 1);
12
-
13
- idGenerator(prefix?: string): string {
14
- const timestamp = BigInt(Date.now()) & this.timestampMask;
15
- const counter = BigInt(this._counter++) & this.counterMask;
16
- let now = timestamp << BigInt(this.counterBits);
17
- now = now | counter;
18
- const id = now.toString(36).toUpperCase();
19
- return prefix ? prefix + id : id;
20
- }
21
- }
1
+ import { Injectable } from '@nestjs/common';
2
+
3
+ @Injectable()
4
+ export class ClockIDGenService {
5
+ private _counter = 0n;
6
+ private timestampBits = 42;
7
+ private timestampMask = BigInt(
8
+ Math.floor(Math.pow(2, this.timestampBits)) - 1,
9
+ );
10
+ private counterBits = 10;
11
+ private counterMask = BigInt(Math.floor(Math.pow(2, this.counterBits)) - 1);
12
+
13
+ idGenerator(prefix?: string): string {
14
+ const timestamp = BigInt(Date.now()) & this.timestampMask;
15
+ const counter = BigInt(this._counter++) & this.counterMask;
16
+ let now = timestamp << BigInt(this.counterBits);
17
+ now = now | counter;
18
+ const id = now.toString(36).toUpperCase();
19
+ return prefix ? prefix + id : id;
20
+ }
21
+ }
@@ -1,22 +1,22 @@
1
- export class CodeGeneratorService {
2
- static generateCode(input_string: string) {
3
- if (!input_string) {
4
- throw new Error('Input string cannot be empty');
5
- }
6
-
7
- // Step 1: Trim, to lowercase
8
- let code = input_string.trim().toLowerCase();
9
-
10
- // Step 2: Replace all whitespace with underscores
11
- code = code.replace(/\s+/g, '_');
12
-
13
- // Step 3: Remove all non-alphanumeric and non-underscore characters
14
- const sanitizedCode = code.replace(/[^a-z0-9_]/g, '');
15
-
16
- if (!sanitizedCode) {
17
- throw new Error('Invalid input string, cannot generate code');
18
- }
19
-
20
- return sanitizedCode;
21
- }
22
- }
1
+ export class CodeGeneratorService {
2
+ static generateCode(input_string: string) {
3
+ if (!input_string) {
4
+ throw new Error('Input string cannot be empty');
5
+ }
6
+
7
+ // Step 1: Trim, to lowercase
8
+ let code = input_string.trim().toLowerCase();
9
+
10
+ // Step 2: Replace all whitespace with underscores
11
+ code = code.replace(/\s+/g, '_');
12
+
13
+ // Step 3: Remove all non-alphanumeric and non-underscore characters
14
+ const sanitizedCode = code.replace(/[^a-z0-9_]/g, '');
15
+
16
+ if (!sanitizedCode) {
17
+ throw new Error('Invalid input string, cannot generate code');
18
+ }
19
+
20
+ return sanitizedCode;
21
+ }
22
+ }
@@ -1,17 +1,17 @@
1
- import { Injectable } from '@nestjs/common';
2
-
3
- @Injectable()
4
- export class DateUtil {
5
- static formatDate(date: Date, format: string): string {
6
- const map: { [key: string]: string } = {
7
- dd: String(date.getDate()).padStart(2, '0'),
8
- MM: String(date.getMonth() + 1).padStart(2, '0'),
9
- yyyy: String(date.getFullYear()),
10
- HH: String(date.getHours()).padStart(2, '0'),
11
- mm: String(date.getMinutes()).padStart(2, '0'),
12
- ss: String(date.getSeconds()).padStart(2, '0'),
13
- };
14
-
15
- return format.replace(/dd|MM|yyyy|HH|mm|ss/g, (matched) => map[matched]);
16
- }
17
- }
1
+ import { Injectable } from '@nestjs/common';
2
+
3
+ @Injectable()
4
+ export class DateUtil {
5
+ static formatDate(date: Date, format: string): string {
6
+ const map: { [key: string]: string } = {
7
+ dd: String(date.getDate()).padStart(2, '0'),
8
+ MM: String(date.getMonth() + 1).padStart(2, '0'),
9
+ yyyy: String(date.getFullYear()),
10
+ HH: String(date.getHours()).padStart(2, '0'),
11
+ mm: String(date.getMinutes()).padStart(2, '0'),
12
+ ss: String(date.getSeconds()).padStart(2, '0'),
13
+ };
14
+
15
+ return format.replace(/dd|MM|yyyy|HH|mm|ss/g, (matched) => map[matched]);
16
+ }
17
+ }
@@ -1,97 +1,97 @@
1
- import { Injectable, InternalServerErrorException } from '@nestjs/common';
2
- import * as crypto from 'crypto';
3
-
4
- const CryptoJS = require('crypto-js');
5
- const encryptionType = 'aes-256-cbc';
6
-
7
- @Injectable()
8
- export class EncryptUtilService {
9
- constructor() {}
10
-
11
- static encryptGCM(data: any, Datakey: string, Dataiv: string) {
12
- try {
13
- const cipher = crypto.createCipheriv('aes-256-gcm', Datakey, Dataiv);
14
- const encrypted = Buffer.concat([
15
- cipher.update(data, 'utf8'),
16
- cipher.final(),
17
- ]);
18
- const tag = cipher.getAuthTag();
19
- return Buffer.concat([encrypted, tag]).toString('base64');
20
- } catch (error) {
21
- throw new InternalServerErrorException('Encryption process failed');
22
- }
23
- }
24
-
25
- static decryptGCM(data: any, Datakey: any, Dataiv: any) {
26
- try {
27
- data = Buffer.from(data, 'base64');
28
- const decipher = crypto.createDecipheriv('aes-256-gcm', Datakey, Dataiv);
29
- const tag = data.slice(data.length - 16);
30
- decipher.setAuthTag(tag);
31
- data = data.slice(0, data.length - 16);
32
- const decrypted = decipher.update(data, 'utf8') + decipher.final('utf8');
33
- return decrypted;
34
- } catch (error) {
35
- throw new InternalServerErrorException('Decryption process failed');
36
- }
37
- }
38
-
39
- static encryptCBC(data: any, Datakey: any, Dataiv: any) {
40
- let encryptedRequest;
41
- try {
42
- const cipher = CryptoJS.AES.encrypt(data, Datakey, {
43
- iv: Dataiv,
44
- mode: CryptoJS.mode.CBC,
45
- });
46
- encryptedRequest = cipher.toString();
47
- } catch (error) {
48
- console.log(error);
49
- throw new InternalServerErrorException('Encryption process failed');
50
- }
51
- return encryptedRequest;
52
- }
53
-
54
- static decryptCBC(data: any, Datakey: any, Dataiv: any) {
55
- let decryptRequest;
56
- try {
57
- const cipher = CryptoJS.AES.decrypt(data, Datakey, {
58
- iv: Dataiv,
59
- mode: CryptoJS.mode.CBC,
60
- });
61
- decryptRequest = cipher.toString(CryptoJS.enc.Utf8);
62
- } catch (error) {
63
- throw new InternalServerErrorException('Encryption process failed');
64
- }
65
- return decryptRequest;
66
- }
67
-
68
- static encryptRequest(data: any, Datakey: any, Dataiv: any, type?: any) {
69
- try {
70
- switch (type) {
71
- case 'GCM':
72
- return this.encryptGCM(data, Datakey, Dataiv);
73
- case 'CBC':
74
- return this.encryptCBC(data, Datakey, Dataiv);
75
- default:
76
- return this.encryptCBC(data, Datakey, Dataiv);
77
- }
78
- } catch (error) {
79
- throw new InternalServerErrorException('Encryption process failed');
80
- }
81
- }
82
-
83
- static decryptRequest(data: any, Datakey: any, Dataiv: any, type?: any) {
84
- try {
85
- switch (type) {
86
- case 'GCM':
87
- return this.decryptGCM(data, Datakey, Dataiv);
88
- case 'CBC':
89
- return this.decryptCBC(data, Datakey, Dataiv);
90
- default:
91
- return this.decryptCBC(data, Datakey, Dataiv);
92
- }
93
- } catch (error) {
94
- throw new InternalServerErrorException('Encryption process failed');
95
- }
96
- }
97
- }
1
+ import { Injectable, InternalServerErrorException } from '@nestjs/common';
2
+ import * as crypto from 'crypto';
3
+
4
+ const CryptoJS = require('crypto-js');
5
+ const encryptionType = 'aes-256-cbc';
6
+
7
+ @Injectable()
8
+ export class EncryptUtilService {
9
+ constructor() {}
10
+
11
+ static encryptGCM(data: any, Datakey: string, Dataiv: string) {
12
+ try {
13
+ const cipher = crypto.createCipheriv('aes-256-gcm', Datakey, Dataiv);
14
+ const encrypted = Buffer.concat([
15
+ cipher.update(data, 'utf8'),
16
+ cipher.final(),
17
+ ]);
18
+ const tag = cipher.getAuthTag();
19
+ return Buffer.concat([encrypted, tag]).toString('base64');
20
+ } catch (error) {
21
+ throw new InternalServerErrorException('Encryption process failed');
22
+ }
23
+ }
24
+
25
+ static decryptGCM(data: any, Datakey: any, Dataiv: any) {
26
+ try {
27
+ data = Buffer.from(data, 'base64');
28
+ const decipher = crypto.createDecipheriv('aes-256-gcm', Datakey, Dataiv);
29
+ const tag = data.slice(data.length - 16);
30
+ decipher.setAuthTag(tag);
31
+ data = data.slice(0, data.length - 16);
32
+ const decrypted = decipher.update(data, 'utf8') + decipher.final('utf8');
33
+ return decrypted;
34
+ } catch (error) {
35
+ throw new InternalServerErrorException('Decryption process failed');
36
+ }
37
+ }
38
+
39
+ static encryptCBC(data: any, Datakey: any, Dataiv: any) {
40
+ let encryptedRequest;
41
+ try {
42
+ const cipher = CryptoJS.AES.encrypt(data, Datakey, {
43
+ iv: Dataiv,
44
+ mode: CryptoJS.mode.CBC,
45
+ });
46
+ encryptedRequest = cipher.toString();
47
+ } catch (error) {
48
+ console.log(error);
49
+ throw new InternalServerErrorException('Encryption process failed');
50
+ }
51
+ return encryptedRequest;
52
+ }
53
+
54
+ static decryptCBC(data: any, Datakey: any, Dataiv: any) {
55
+ let decryptRequest;
56
+ try {
57
+ const cipher = CryptoJS.AES.decrypt(data, Datakey, {
58
+ iv: Dataiv,
59
+ mode: CryptoJS.mode.CBC,
60
+ });
61
+ decryptRequest = cipher.toString(CryptoJS.enc.Utf8);
62
+ } catch (error) {
63
+ throw new InternalServerErrorException('Encryption process failed');
64
+ }
65
+ return decryptRequest;
66
+ }
67
+
68
+ static encryptRequest(data: any, Datakey: any, Dataiv: any, type?: any) {
69
+ try {
70
+ switch (type) {
71
+ case 'GCM':
72
+ return this.encryptGCM(data, Datakey, Dataiv);
73
+ case 'CBC':
74
+ return this.encryptCBC(data, Datakey, Dataiv);
75
+ default:
76
+ return this.encryptCBC(data, Datakey, Dataiv);
77
+ }
78
+ } catch (error) {
79
+ throw new InternalServerErrorException('Encryption process failed');
80
+ }
81
+ }
82
+
83
+ static decryptRequest(data: any, Datakey: any, Dataiv: any, type?: any) {
84
+ try {
85
+ switch (type) {
86
+ case 'GCM':
87
+ return this.decryptGCM(data, Datakey, Dataiv);
88
+ case 'CBC':
89
+ return this.decryptCBC(data, Datakey, Dataiv);
90
+ default:
91
+ return this.decryptCBC(data, Datakey, Dataiv);
92
+ }
93
+ } catch (error) {
94
+ throw new InternalServerErrorException('Encryption process failed');
95
+ }
96
+ }
97
+ }
@@ -1,72 +1,72 @@
1
- import * as ExcelJS from 'exceljs';
2
- import { ExcelData } from '../dto/excel-data.dto';
3
- import * as XLSX from 'xlsx';
4
-
5
- export class ExcelHelper {
6
- static getHeader(filePath: string, sheetName: string): string[] {
7
- const rows = this.readExcel(filePath, 'HEADER', sheetName);
8
- return rows.length > 0 ? rows[0] : [];
9
- }
10
-
11
- static readExcel(
12
- filePath: string,
13
- rowLevel: string,
14
- sheetName: string,
15
- ): string[][] {
16
- const workbook = new ExcelJS.Workbook();
17
- workbook.xlsx.readFile(filePath);
18
- const sheet = workbook.getWorksheet(sheetName);
19
- if (!sheet) throw new Error(`Sheet ${sheetName} not found`);
20
-
21
- const result: string[][] = [];
22
- sheet.eachRow((row, rowNumber) => {
23
- if (rowLevel === 'HEADER' && rowNumber > 1) return;
24
- if (rowLevel === 'ROWDATA' && rowNumber === 1) return;
25
-
26
- const rowData: string[] = (row.values as any[]).slice(1).map((value) => {
27
- return value !== undefined ? String(value).trim() : '';
28
- });
29
- result.push(rowData);
30
- result.push(rowData);
31
- });
32
-
33
- return result;
34
- }
35
-
36
- static getRowData(filePath: string, sheetName: string): string[][] {
37
- return this.readExcel(filePath, 'ROWDATA', sheetName);
38
- }
39
-
40
- static getJSONStringFromList(header: string[], rowData: string[][]): string {
41
- return JSON.stringify(
42
- rowData.map((row) =>
43
- Object.fromEntries(header.map((col, i) => [col, row[i] || ''])),
44
- ),
45
- );
46
- }
47
-
48
- static getDataObjectListFromXLS<T>(
49
- filePath: string,
50
- sheetName: string,
51
- classType: new () => T,
52
- ): T[] {
53
- const header = this.getHeader(filePath, sheetName);
54
- const rowData = this.getRowData(filePath, sheetName);
55
- const jsonString = this.getJSONStringFromList(header, rowData);
56
- return JSON.parse(jsonString) as T[];
57
- }
58
-
59
- static writeExcel(excelData: ExcelData) {
60
- const wb = XLSX.utils.book_new();
61
-
62
- for (const sheetData of excelData.sheetList) {
63
- const ws = XLSX.utils.aoa_to_sheet([
64
- sheetData.headers,
65
- ...sheetData.rowList,
66
- ]);
67
- XLSX.utils.book_append_sheet(wb, ws, sheetData.sheetName || 'Sheet1');
68
- }
69
-
70
- XLSX.writeFile(wb, excelData.filePath);
71
- }
72
- }
1
+ import * as ExcelJS from 'exceljs';
2
+ import { ExcelData } from '../dto/excel-data.dto';
3
+ import * as XLSX from 'xlsx';
4
+
5
+ export class ExcelHelper {
6
+ static getHeader(filePath: string, sheetName: string): string[] {
7
+ const rows = this.readExcel(filePath, 'HEADER', sheetName);
8
+ return rows.length > 0 ? rows[0] : [];
9
+ }
10
+
11
+ static readExcel(
12
+ filePath: string,
13
+ rowLevel: string,
14
+ sheetName: string,
15
+ ): string[][] {
16
+ const workbook = new ExcelJS.Workbook();
17
+ workbook.xlsx.readFile(filePath);
18
+ const sheet = workbook.getWorksheet(sheetName);
19
+ if (!sheet) throw new Error(`Sheet ${sheetName} not found`);
20
+
21
+ const result: string[][] = [];
22
+ sheet.eachRow((row, rowNumber) => {
23
+ if (rowLevel === 'HEADER' && rowNumber > 1) return;
24
+ if (rowLevel === 'ROWDATA' && rowNumber === 1) return;
25
+
26
+ const rowData: string[] = (row.values as any[]).slice(1).map((value) => {
27
+ return value !== undefined ? String(value).trim() : '';
28
+ });
29
+ result.push(rowData);
30
+ result.push(rowData);
31
+ });
32
+
33
+ return result;
34
+ }
35
+
36
+ static getRowData(filePath: string, sheetName: string): string[][] {
37
+ return this.readExcel(filePath, 'ROWDATA', sheetName);
38
+ }
39
+
40
+ static getJSONStringFromList(header: string[], rowData: string[][]): string {
41
+ return JSON.stringify(
42
+ rowData.map((row) =>
43
+ Object.fromEntries(header.map((col, i) => [col, row[i] || ''])),
44
+ ),
45
+ );
46
+ }
47
+
48
+ static getDataObjectListFromXLS<T>(
49
+ filePath: string,
50
+ sheetName: string,
51
+ classType: new () => T,
52
+ ): T[] {
53
+ const header = this.getHeader(filePath, sheetName);
54
+ const rowData = this.getRowData(filePath, sheetName);
55
+ const jsonString = this.getJSONStringFromList(header, rowData);
56
+ return JSON.parse(jsonString) as T[];
57
+ }
58
+
59
+ static writeExcel(excelData: ExcelData) {
60
+ const wb = XLSX.utils.book_new();
61
+
62
+ for (const sheetData of excelData.sheetList) {
63
+ const ws = XLSX.utils.aoa_to_sheet([
64
+ sheetData.headers,
65
+ ...sheetData.rowList,
66
+ ]);
67
+ XLSX.utils.book_append_sheet(wb, ws, sheetData.sheetName || 'Sheet1');
68
+ }
69
+
70
+ XLSX.writeFile(wb, excelData.filePath);
71
+ }
72
+ }
@@ -1,15 +1,15 @@
1
- import * as xlsx from 'xlsx';
2
-
3
- export class ExcelUtil {
4
- static readExcel(fileBuffer: Buffer): Record<string, any[]> {
5
- const workbook = xlsx.read(fileBuffer, { type: 'buffer' });
6
- const data: Record<string, any[]> = {};
7
-
8
- workbook.SheetNames.forEach((sheetName) => {
9
- const sheet = workbook.Sheets[sheetName];
10
- data[sheetName] = xlsx.utils.sheet_to_json(sheet);
11
- });
12
-
13
- return data;
14
- }
15
- }
1
+ import * as xlsx from 'xlsx';
2
+
3
+ export class ExcelUtil {
4
+ static readExcel(fileBuffer: Buffer): Record<string, any[]> {
5
+ const workbook = xlsx.read(fileBuffer, { type: 'buffer' });
6
+ const data: Record<string, any[]> = {};
7
+
8
+ workbook.SheetNames.forEach((sheetName) => {
9
+ const sheet = workbook.Sheets[sheetName];
10
+ data[sheetName] = xlsx.utils.sheet_to_json(sheet);
11
+ });
12
+
13
+ return data;
14
+ }
15
+ }
@@ -1,11 +1,11 @@
1
- import * as fs from 'node:fs';
2
-
3
- export class FileUtil {
4
- static deleteFile(path: string) {
5
- fs.unlink(path, (err) => {
6
- if (err) {
7
- console.log(`Error deleting file ${path}:`, err);
8
- }
9
- });
10
- }
11
- }
1
+ import * as fs from 'node:fs';
2
+
3
+ export class FileUtil {
4
+ static deleteFile(path: string) {
5
+ fs.unlink(path, (err) => {
6
+ if (err) {
7
+ console.log(`Error deleting file ${path}:`, err);
8
+ }
9
+ });
10
+ }
11
+ }
@@ -1,23 +1,23 @@
1
- export class JsonUtil {
2
- static merge(mainNode: any, updatedNode: any): any {
3
- if (typeof mainNode !== 'object' || typeof updatedNode !== 'object') {
4
- return updatedNode;
5
- }
6
-
7
- const mergedNode: any = {};
8
-
9
- for (const key in updatedNode) {
10
- if (updatedNode.hasOwnProperty(key)) {
11
- mergedNode[key] = this.merge(mainNode[key], updatedNode[key]);
12
- }
13
- }
14
-
15
- for (const key in mainNode) {
16
- if (mainNode.hasOwnProperty(key) && !updatedNode.hasOwnProperty(key)) {
17
- mergedNode[key] = mainNode[key];
18
- }
19
- }
20
-
21
- return mergedNode;
22
- }
23
- }
1
+ export class JsonUtil {
2
+ static merge(mainNode: any, updatedNode: any): any {
3
+ if (typeof mainNode !== 'object' || typeof updatedNode !== 'object') {
4
+ return updatedNode;
5
+ }
6
+
7
+ const mergedNode: any = {};
8
+
9
+ for (const key in updatedNode) {
10
+ if (updatedNode.hasOwnProperty(key)) {
11
+ mergedNode[key] = this.merge(mainNode[key], updatedNode[key]);
12
+ }
13
+ }
14
+
15
+ for (const key in mainNode) {
16
+ if (mainNode.hasOwnProperty(key) && !updatedNode.hasOwnProperty(key)) {
17
+ mergedNode[key] = mainNode[key];
18
+ }
19
+ }
20
+
21
+ return mergedNode;
22
+ }
23
+ }