@solidstarters/solid-core 1.2.191 → 1.2.192

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 (531) hide show
  1. package/dist/config/iam.config.d.ts +6 -4
  2. package/dist/config/iam.config.d.ts.map +1 -1
  3. package/dist/config/iam.config.js +3 -2
  4. package/dist/config/iam.config.js.map +1 -1
  5. package/dist/constants/error-messages.d.ts +2 -0
  6. package/dist/constants/error-messages.d.ts.map +1 -1
  7. package/dist/constants/error-messages.js +2 -0
  8. package/dist/constants/error-messages.js.map +1 -1
  9. package/dist/controllers/authentication.controller.d.ts +1 -1
  10. package/dist/controllers/authentication.controller.d.ts.map +1 -1
  11. package/dist/controllers/authentication.controller.js +4 -3
  12. package/dist/controllers/authentication.controller.js.map +1 -1
  13. package/dist/controllers/email-template.controller.d.ts.map +1 -1
  14. package/dist/controllers/email-template.controller.js +8 -8
  15. package/dist/controllers/email-template.controller.js.map +1 -1
  16. package/dist/controllers/export-template.controller.d.ts +2 -1
  17. package/dist/controllers/export-template.controller.d.ts.map +1 -1
  18. package/dist/controllers/export-template.controller.js +5 -3
  19. package/dist/controllers/export-template.controller.js.map +1 -1
  20. package/dist/controllers/import-transaction.controller.d.ts +2 -1
  21. package/dist/controllers/import-transaction.controller.d.ts.map +1 -1
  22. package/dist/controllers/import-transaction.controller.js +6 -3
  23. package/dist/controllers/import-transaction.controller.js.map +1 -1
  24. package/dist/controllers/sms-template.controller.d.ts.map +1 -1
  25. package/dist/controllers/sms-template.controller.js +7 -7
  26. package/dist/controllers/sms-template.controller.js.map +1 -1
  27. package/dist/decorators/active-user.decorator.d.ts +1 -1
  28. package/dist/decorators/security-rule-config-provider.decorator.d.ts +3 -0
  29. package/dist/decorators/security-rule-config-provider.decorator.d.ts.map +1 -0
  30. package/dist/decorators/security-rule-config-provider.decorator.js +11 -0
  31. package/dist/decorators/security-rule-config-provider.decorator.js.map +1 -0
  32. package/dist/decorators/solid-password.decorator.d.ts +5 -1
  33. package/dist/decorators/solid-password.decorator.d.ts.map +1 -1
  34. package/dist/decorators/solid-password.decorator.js +18 -6
  35. package/dist/decorators/solid-password.decorator.js.map +1 -1
  36. package/dist/dtos/change-password.dto.js +1 -1
  37. package/dist/dtos/change-password.dto.js.map +1 -1
  38. package/dist/dtos/confirm-forgot-password.dto.js +1 -1
  39. package/dist/dtos/confirm-forgot-password.dto.js.map +1 -1
  40. package/dist/dtos/create-saved-filters.dto.d.ts +1 -0
  41. package/dist/dtos/create-saved-filters.dto.d.ts.map +1 -1
  42. package/dist/dtos/create-saved-filters.dto.js +7 -1
  43. package/dist/dtos/create-saved-filters.dto.js.map +1 -1
  44. package/dist/dtos/create-security-rule.dto.d.ts +1 -0
  45. package/dist/dtos/create-security-rule.dto.d.ts.map +1 -1
  46. package/dist/dtos/create-security-rule.dto.js +7 -1
  47. package/dist/dtos/create-security-rule.dto.js.map +1 -1
  48. package/dist/dtos/update-saved-filters.dto.d.ts +1 -0
  49. package/dist/dtos/update-saved-filters.dto.d.ts.map +1 -1
  50. package/dist/dtos/update-saved-filters.dto.js +7 -1
  51. package/dist/dtos/update-saved-filters.dto.js.map +1 -1
  52. package/dist/dtos/update-security-rule.dto.d.ts +1 -0
  53. package/dist/dtos/update-security-rule.dto.d.ts.map +1 -1
  54. package/dist/dtos/update-security-rule.dto.js +7 -1
  55. package/dist/dtos/update-security-rule.dto.js.map +1 -1
  56. package/dist/entities/field-metadata.entity.d.ts.map +1 -1
  57. package/dist/entities/field-metadata.entity.js +2 -1
  58. package/dist/entities/field-metadata.entity.js.map +1 -1
  59. package/dist/entities/saved-filters.entity.d.ts +1 -0
  60. package/dist/entities/saved-filters.entity.d.ts.map +1 -1
  61. package/dist/entities/saved-filters.entity.js +6 -2
  62. package/dist/entities/saved-filters.entity.js.map +1 -1
  63. package/dist/entities/security-rule.entity.d.ts +1 -0
  64. package/dist/entities/security-rule.entity.d.ts.map +1 -1
  65. package/dist/entities/security-rule.entity.js +5 -1
  66. package/dist/entities/security-rule.entity.js.map +1 -1
  67. package/dist/helpers/model-metadata-helper.service.d.ts +2 -3
  68. package/dist/helpers/model-metadata-helper.service.d.ts.map +1 -1
  69. package/dist/helpers/model-metadata-helper.service.js +2 -8
  70. package/dist/helpers/model-metadata-helper.service.js.map +1 -1
  71. package/dist/helpers/module-metadata-helper.service.d.ts.map +1 -1
  72. package/dist/helpers/module-metadata-helper.service.js +9 -0
  73. package/dist/helpers/module-metadata-helper.service.js.map +1 -1
  74. package/dist/helpers/solid-registry.d.ts +5 -1
  75. package/dist/helpers/solid-registry.d.ts.map +1 -1
  76. package/dist/helpers/solid-registry.js +16 -0
  77. package/dist/helpers/solid-registry.js.map +1 -1
  78. package/dist/helpers/user-helper.d.ts +2 -0
  79. package/dist/helpers/user-helper.d.ts.map +1 -0
  80. package/dist/helpers/user-helper.js +41 -0
  81. package/dist/helpers/user-helper.js.map +1 -0
  82. package/dist/index.d.ts +0 -1
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/index.js +0 -1
  85. package/dist/index.js.map +1 -1
  86. package/dist/interfaces.d.ts +6 -0
  87. package/dist/interfaces.d.ts.map +1 -1
  88. package/dist/interfaces.js.map +1 -1
  89. package/dist/jobs/trigger-mcp-client-subscriber.service.d.ts +2 -2
  90. package/dist/jobs/trigger-mcp-client-subscriber.service.d.ts.map +1 -1
  91. package/dist/jobs/trigger-mcp-client-subscriber.service.js +2 -2
  92. package/dist/jobs/trigger-mcp-client-subscriber.service.js.map +1 -1
  93. package/dist/jobs/twilio-sms-subscriber.service.d.ts +2 -2
  94. package/dist/jobs/twilio-sms-subscriber.service.d.ts.map +1 -1
  95. package/dist/jobs/twilio-sms-subscriber.service.js +2 -2
  96. package/dist/jobs/twilio-sms-subscriber.service.js.map +1 -1
  97. package/dist/repository/action-metadata.repository.d.ts +12 -0
  98. package/dist/repository/action-metadata.repository.d.ts.map +1 -0
  99. package/dist/repository/action-metadata.repository.js +34 -0
  100. package/dist/repository/action-metadata.repository.js.map +1 -0
  101. package/dist/repository/ai-interaction.repository.d.ts +12 -0
  102. package/dist/repository/ai-interaction.repository.d.ts.map +1 -0
  103. package/dist/repository/ai-interaction.repository.js +34 -0
  104. package/dist/repository/ai-interaction.repository.js.map +1 -0
  105. package/dist/repository/chatter-message-details.repository.d.ts +1 -1
  106. package/dist/repository/chatter-message-details.repository.d.ts.map +1 -1
  107. package/dist/repository/chatter-message-details.repository.js +2 -2
  108. package/dist/repository/chatter-message-details.repository.js.map +1 -1
  109. package/dist/repository/chatter-message.repository.d.ts +1 -1
  110. package/dist/repository/chatter-message.repository.d.ts.map +1 -1
  111. package/dist/repository/chatter-message.repository.js +2 -2
  112. package/dist/repository/chatter-message.repository.js.map +1 -1
  113. package/dist/repository/dashboard-question-sql-dataset-config.repository.d.ts +12 -0
  114. package/dist/repository/dashboard-question-sql-dataset-config.repository.d.ts.map +1 -0
  115. package/dist/repository/dashboard-question-sql-dataset-config.repository.js +34 -0
  116. package/dist/repository/dashboard-question-sql-dataset-config.repository.js.map +1 -0
  117. package/dist/repository/dashboard-question.repository.d.ts +12 -0
  118. package/dist/repository/dashboard-question.repository.d.ts.map +1 -0
  119. package/dist/repository/dashboard-question.repository.js +34 -0
  120. package/dist/repository/dashboard-question.repository.js.map +1 -0
  121. package/dist/repository/dashboard-variable.repository.d.ts +12 -0
  122. package/dist/repository/dashboard-variable.repository.d.ts.map +1 -0
  123. package/dist/repository/dashboard-variable.repository.js +34 -0
  124. package/dist/repository/dashboard-variable.repository.js.map +1 -0
  125. package/dist/repository/dashboard.repository.d.ts +9 -5
  126. package/dist/repository/dashboard.repository.d.ts.map +1 -1
  127. package/dist/repository/dashboard.repository.js +11 -5
  128. package/dist/repository/dashboard.repository.js.map +1 -1
  129. package/dist/repository/email-template.repository.d.ts +12 -0
  130. package/dist/repository/email-template.repository.d.ts.map +1 -0
  131. package/dist/repository/email-template.repository.js +34 -0
  132. package/dist/repository/email-template.repository.js.map +1 -0
  133. package/dist/repository/export-template.repository.d.ts +12 -0
  134. package/dist/repository/export-template.repository.d.ts.map +1 -0
  135. package/dist/repository/export-template.repository.js +34 -0
  136. package/dist/repository/export-template.repository.js.map +1 -0
  137. package/dist/repository/export-transaction.repository.d.ts +12 -0
  138. package/dist/repository/export-transaction.repository.d.ts.map +1 -0
  139. package/dist/repository/export-transaction.repository.js +34 -0
  140. package/dist/repository/export-transaction.repository.js.map +1 -0
  141. package/dist/repository/field-metadata.repository.d.ts +4 -3
  142. package/dist/repository/field-metadata.repository.d.ts.map +1 -1
  143. package/dist/repository/field-metadata.repository.js +5 -5
  144. package/dist/repository/field-metadata.repository.js.map +1 -1
  145. package/dist/repository/import-transaction-error-log.repository.d.ts +12 -0
  146. package/dist/repository/import-transaction-error-log.repository.d.ts.map +1 -0
  147. package/dist/repository/import-transaction-error-log.repository.js +34 -0
  148. package/dist/repository/import-transaction-error-log.repository.js.map +1 -0
  149. package/dist/repository/import-transaction.repository.d.ts +12 -0
  150. package/dist/repository/import-transaction.repository.d.ts.map +1 -0
  151. package/dist/repository/import-transaction.repository.js +34 -0
  152. package/dist/repository/import-transaction.repository.js.map +1 -0
  153. package/dist/repository/list-of-values.repository.d.ts +12 -0
  154. package/dist/repository/list-of-values.repository.d.ts.map +1 -0
  155. package/dist/repository/list-of-values.repository.js +34 -0
  156. package/dist/repository/list-of-values.repository.js.map +1 -0
  157. package/dist/repository/locale.repository.d.ts +12 -0
  158. package/dist/repository/locale.repository.d.ts.map +1 -0
  159. package/dist/repository/locale.repository.js +34 -0
  160. package/dist/repository/locale.repository.js.map +1 -0
  161. package/dist/repository/media-storage-provider-metadata.repository.d.ts +8 -0
  162. package/dist/repository/media-storage-provider-metadata.repository.d.ts.map +1 -0
  163. package/dist/repository/media-storage-provider-metadata.repository.js +28 -0
  164. package/dist/repository/media-storage-provider-metadata.repository.js.map +1 -0
  165. package/dist/repository/media.repository.d.ts +13 -8
  166. package/dist/repository/media.repository.d.ts.map +1 -1
  167. package/dist/repository/media.repository.js +18 -18
  168. package/dist/repository/media.repository.js.map +1 -1
  169. package/dist/repository/menu-item-metadata.repository.d.ts +12 -0
  170. package/dist/repository/menu-item-metadata.repository.d.ts.map +1 -0
  171. package/dist/repository/menu-item-metadata.repository.js +34 -0
  172. package/dist/repository/menu-item-metadata.repository.js.map +1 -0
  173. package/dist/repository/model-metadata.repository.d.ts +8 -0
  174. package/dist/repository/model-metadata.repository.d.ts.map +1 -0
  175. package/dist/repository/model-metadata.repository.js +28 -0
  176. package/dist/repository/model-metadata.repository.js.map +1 -0
  177. package/dist/repository/module-metadata.repository.d.ts +8 -0
  178. package/dist/repository/module-metadata.repository.d.ts.map +1 -0
  179. package/dist/repository/module-metadata.repository.js +28 -0
  180. package/dist/repository/module-metadata.repository.js.map +1 -0
  181. package/dist/repository/mq-message-queue.repository.d.ts +12 -0
  182. package/dist/repository/mq-message-queue.repository.d.ts.map +1 -0
  183. package/dist/repository/mq-message-queue.repository.js +34 -0
  184. package/dist/repository/mq-message-queue.repository.js.map +1 -0
  185. package/dist/repository/mq-message.repository.d.ts +12 -0
  186. package/dist/repository/mq-message.repository.d.ts.map +1 -0
  187. package/dist/repository/mq-message.repository.js +34 -0
  188. package/dist/repository/mq-message.repository.js.map +1 -0
  189. package/dist/repository/permission-metadata.repository.d.ts +12 -0
  190. package/dist/repository/permission-metadata.repository.d.ts.map +1 -0
  191. package/dist/repository/permission-metadata.repository.js +34 -0
  192. package/dist/repository/permission-metadata.repository.js.map +1 -0
  193. package/dist/repository/role-metadata.repository.d.ts +12 -0
  194. package/dist/repository/role-metadata.repository.d.ts.map +1 -0
  195. package/dist/repository/role-metadata.repository.js +34 -0
  196. package/dist/repository/role-metadata.repository.js.map +1 -0
  197. package/dist/repository/saved-filters.repository.d.ts +12 -0
  198. package/dist/repository/saved-filters.repository.d.ts.map +1 -0
  199. package/dist/repository/saved-filters.repository.js +62 -0
  200. package/dist/repository/saved-filters.repository.js.map +1 -0
  201. package/dist/repository/scheduled-job.repository.d.ts +9 -9
  202. package/dist/repository/scheduled-job.repository.d.ts.map +1 -1
  203. package/dist/repository/scheduled-job.repository.js +11 -12
  204. package/dist/repository/scheduled-job.repository.js.map +1 -1
  205. package/dist/repository/security-rule.repository.d.ts +7 -7
  206. package/dist/repository/security-rule.repository.d.ts.map +1 -1
  207. package/dist/repository/security-rule.repository.js +28 -17
  208. package/dist/repository/security-rule.repository.js.map +1 -1
  209. package/dist/repository/setting.repository.d.ts +12 -0
  210. package/dist/repository/setting.repository.d.ts.map +1 -0
  211. package/dist/repository/setting.repository.js +34 -0
  212. package/dist/repository/setting.repository.js.map +1 -0
  213. package/dist/repository/sms-template.repository.d.ts +12 -0
  214. package/dist/repository/sms-template.repository.d.ts.map +1 -0
  215. package/dist/repository/sms-template.repository.js +34 -0
  216. package/dist/repository/sms-template.repository.js.map +1 -0
  217. package/dist/repository/solid-base.repository.d.ts +4 -3
  218. package/dist/repository/solid-base.repository.d.ts.map +1 -1
  219. package/dist/repository/solid-base.repository.js +12 -5
  220. package/dist/repository/solid-base.repository.js.map +1 -1
  221. package/dist/repository/user-activity-history.repository.d.ts +12 -0
  222. package/dist/repository/user-activity-history.repository.d.ts.map +1 -0
  223. package/dist/repository/user-activity-history.repository.js +34 -0
  224. package/dist/repository/user-activity-history.repository.js.map +1 -0
  225. package/dist/repository/user-view-metadata.repository.d.ts +12 -0
  226. package/dist/repository/user-view-metadata.repository.d.ts.map +1 -0
  227. package/dist/repository/user-view-metadata.repository.js +34 -0
  228. package/dist/repository/user-view-metadata.repository.js.map +1 -0
  229. package/dist/repository/view-metadata.repository.d.ts +9 -5
  230. package/dist/repository/view-metadata.repository.d.ts.map +1 -1
  231. package/dist/repository/view-metadata.repository.js +11 -5
  232. package/dist/repository/view-metadata.repository.js.map +1 -1
  233. package/dist/seeders/module-metadata-seeder.service.d.ts +9 -5
  234. package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
  235. package/dist/seeders/module-metadata-seeder.service.js +32 -13
  236. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  237. package/dist/seeders/permission-metadata-seeder.service.d.ts +2 -3
  238. package/dist/seeders/permission-metadata-seeder.service.d.ts.map +1 -1
  239. package/dist/seeders/permission-metadata-seeder.service.js +2 -5
  240. package/dist/seeders/permission-metadata-seeder.service.js.map +1 -1
  241. package/dist/seeders/seed-data/solid-core-metadata.json +109 -62
  242. package/dist/seeders/system-fields-seeder.service.d.ts +2 -3
  243. package/dist/seeders/system-fields-seeder.service.d.ts.map +1 -1
  244. package/dist/seeders/system-fields-seeder.service.js +4 -8
  245. package/dist/seeders/system-fields-seeder.service.js.map +1 -1
  246. package/dist/services/action-metadata.service.d.ts +7 -6
  247. package/dist/services/action-metadata.service.d.ts.map +1 -1
  248. package/dist/services/action-metadata.service.js +7 -8
  249. package/dist/services/action-metadata.service.js.map +1 -1
  250. package/dist/services/ai-interaction.service.d.ts +10 -9
  251. package/dist/services/ai-interaction.service.d.ts.map +1 -1
  252. package/dist/services/ai-interaction.service.js +9 -10
  253. package/dist/services/ai-interaction.service.js.map +1 -1
  254. package/dist/services/authentication.service.d.ts +3 -4
  255. package/dist/services/authentication.service.d.ts.map +1 -1
  256. package/dist/services/authentication.service.js +11 -11
  257. package/dist/services/authentication.service.js.map +1 -1
  258. package/dist/services/chatter-message.service.d.ts +12 -12
  259. package/dist/services/chatter-message.service.d.ts.map +1 -1
  260. package/dist/services/chatter-message.service.js +16 -18
  261. package/dist/services/chatter-message.service.js.map +1 -1
  262. package/dist/services/crud.service.d.ts +5 -5
  263. package/dist/services/crud.service.d.ts.map +1 -1
  264. package/dist/services/crud.service.js +9 -9
  265. package/dist/services/crud.service.js.map +1 -1
  266. package/dist/services/dashboard-question-sql-dataset-config.service.d.ts +4 -3
  267. package/dist/services/dashboard-question-sql-dataset-config.service.d.ts.map +1 -1
  268. package/dist/services/dashboard-question-sql-dataset-config.service.js +2 -3
  269. package/dist/services/dashboard-question-sql-dataset-config.service.js.map +1 -1
  270. package/dist/services/dashboard-question.service.d.ts +4 -3
  271. package/dist/services/dashboard-question.service.d.ts.map +1 -1
  272. package/dist/services/dashboard-question.service.js +2 -2
  273. package/dist/services/dashboard-question.service.js.map +1 -1
  274. package/dist/services/dashboard-variable.service.d.ts +4 -3
  275. package/dist/services/dashboard-variable.service.d.ts.map +1 -1
  276. package/dist/services/dashboard-variable.service.js +2 -3
  277. package/dist/services/dashboard-variable.service.js.map +1 -1
  278. package/dist/services/email-template.service.d.ts +4 -3
  279. package/dist/services/email-template.service.d.ts.map +1 -1
  280. package/dist/services/email-template.service.js +2 -3
  281. package/dist/services/email-template.service.js.map +1 -1
  282. package/dist/services/export-template.service.d.ts +6 -4
  283. package/dist/services/export-template.service.d.ts.map +1 -1
  284. package/dist/services/export-template.service.js +14 -4
  285. package/dist/services/export-template.service.js.map +1 -1
  286. package/dist/services/export-transaction.service.d.ts +8 -7
  287. package/dist/services/export-transaction.service.d.ts.map +1 -1
  288. package/dist/services/export-transaction.service.js +11 -14
  289. package/dist/services/export-transaction.service.js.map +1 -1
  290. package/dist/services/field-metadata.service.js +1 -1
  291. package/dist/services/field-metadata.service.js.map +1 -1
  292. package/dist/services/import-transaction-error-log.service.d.ts +4 -3
  293. package/dist/services/import-transaction-error-log.service.d.ts.map +1 -1
  294. package/dist/services/import-transaction-error-log.service.js +2 -3
  295. package/dist/services/import-transaction-error-log.service.js.map +1 -1
  296. package/dist/services/import-transaction.service.d.ts +8 -4
  297. package/dist/services/import-transaction.service.d.ts.map +1 -1
  298. package/dist/services/import-transaction.service.js +43 -16
  299. package/dist/services/import-transaction.service.js.map +1 -1
  300. package/dist/services/list-of-values.service.d.ts +19 -6
  301. package/dist/services/list-of-values.service.d.ts.map +1 -1
  302. package/dist/services/list-of-values.service.js +164 -9
  303. package/dist/services/list-of-values.service.js.map +1 -1
  304. package/dist/services/locale.service.d.ts +9 -10
  305. package/dist/services/locale.service.d.ts.map +1 -1
  306. package/dist/services/locale.service.js +8 -14
  307. package/dist/services/locale.service.js.map +1 -1
  308. package/dist/services/mail/smtp-email.service.d.ts.map +1 -1
  309. package/dist/services/mail/smtp-email.service.js +6 -1
  310. package/dist/services/mail/smtp-email.service.js.map +1 -1
  311. package/dist/services/media-storage-provider-metadata.service.d.ts +4 -4
  312. package/dist/services/media-storage-provider-metadata.service.d.ts.map +1 -1
  313. package/dist/services/media-storage-provider-metadata.service.js +5 -11
  314. package/dist/services/media-storage-provider-metadata.service.js.map +1 -1
  315. package/dist/services/media.service.d.ts +7 -6
  316. package/dist/services/media.service.d.ts.map +1 -1
  317. package/dist/services/media.service.js +8 -12
  318. package/dist/services/media.service.js.map +1 -1
  319. package/dist/services/menu-item-metadata.service.d.ts +4 -3
  320. package/dist/services/menu-item-metadata.service.d.ts.map +1 -1
  321. package/dist/services/menu-item-metadata.service.js +4 -5
  322. package/dist/services/menu-item-metadata.service.js.map +1 -1
  323. package/dist/services/model-metadata.service.d.ts +3 -2
  324. package/dist/services/model-metadata.service.d.ts.map +1 -1
  325. package/dist/services/model-metadata.service.js +45 -43
  326. package/dist/services/model-metadata.service.js.map +1 -1
  327. package/dist/services/module-metadata.service.d.ts +3 -2
  328. package/dist/services/module-metadata.service.d.ts.map +1 -1
  329. package/dist/services/module-metadata.service.js +3 -3
  330. package/dist/services/module-metadata.service.js.map +1 -1
  331. package/dist/services/mq-message-queue.service.d.ts +4 -3
  332. package/dist/services/mq-message-queue.service.d.ts.map +1 -1
  333. package/dist/services/mq-message-queue.service.js +2 -3
  334. package/dist/services/mq-message-queue.service.js.map +1 -1
  335. package/dist/services/mq-message.service.d.ts +4 -3
  336. package/dist/services/mq-message.service.d.ts.map +1 -1
  337. package/dist/services/mq-message.service.js +2 -2
  338. package/dist/services/mq-message.service.js.map +1 -1
  339. package/dist/services/permission-metadata.service.d.ts +4 -3
  340. package/dist/services/permission-metadata.service.d.ts.map +1 -1
  341. package/dist/services/permission-metadata.service.js +2 -3
  342. package/dist/services/permission-metadata.service.js.map +1 -1
  343. package/dist/services/queues/rabbitmq-publisher.service.d.ts +8 -3
  344. package/dist/services/queues/rabbitmq-publisher.service.d.ts.map +1 -1
  345. package/dist/services/queues/rabbitmq-publisher.service.js +79 -18
  346. package/dist/services/queues/rabbitmq-publisher.service.js.map +1 -1
  347. package/dist/services/queues/rabbitmq-subscriber.service.d.ts.map +1 -1
  348. package/dist/services/queues/rabbitmq-subscriber.service.js +9 -3
  349. package/dist/services/queues/rabbitmq-subscriber.service.js.map +1 -1
  350. package/dist/services/role-metadata.service.d.ts +10 -9
  351. package/dist/services/role-metadata.service.d.ts.map +1 -1
  352. package/dist/services/role-metadata.service.js +9 -11
  353. package/dist/services/role-metadata.service.js.map +1 -1
  354. package/dist/services/saved-filters.service.d.ts +7 -6
  355. package/dist/services/saved-filters.service.d.ts.map +1 -1
  356. package/dist/services/saved-filters.service.js +6 -7
  357. package/dist/services/saved-filters.service.js.map +1 -1
  358. package/dist/services/scheduled-job.service.d.ts +4 -3
  359. package/dist/services/scheduled-job.service.d.ts.map +1 -1
  360. package/dist/services/scheduled-job.service.js +2 -3
  361. package/dist/services/scheduled-job.service.js.map +1 -1
  362. package/dist/services/scheduled-jobs/scheduler.service.d.ts +3 -4
  363. package/dist/services/scheduled-jobs/scheduler.service.d.ts.map +1 -1
  364. package/dist/services/scheduled-jobs/scheduler.service.js +6 -11
  365. package/dist/services/scheduled-jobs/scheduler.service.js.map +1 -1
  366. package/dist/services/security-rule.service.d.ts +4 -3
  367. package/dist/services/security-rule.service.d.ts.map +1 -1
  368. package/dist/services/security-rule.service.js +3 -3
  369. package/dist/services/security-rule.service.js.map +1 -1
  370. package/dist/services/setting.service.d.ts +3 -2
  371. package/dist/services/setting.service.d.ts.map +1 -1
  372. package/dist/services/setting.service.js +25 -9
  373. package/dist/services/setting.service.js.map +1 -1
  374. package/dist/services/sms-template.service.d.ts +4 -3
  375. package/dist/services/sms-template.service.d.ts.map +1 -1
  376. package/dist/services/sms-template.service.js +2 -3
  377. package/dist/services/sms-template.service.js.map +1 -1
  378. package/dist/services/solid-introspect.service.d.ts +1 -0
  379. package/dist/services/solid-introspect.service.d.ts.map +1 -1
  380. package/dist/services/solid-introspect.service.js +14 -0
  381. package/dist/services/solid-introspect.service.js.map +1 -1
  382. package/dist/services/user-activity-history.service.d.ts +4 -3
  383. package/dist/services/user-activity-history.service.d.ts.map +1 -1
  384. package/dist/services/user-activity-history.service.js +2 -3
  385. package/dist/services/user-activity-history.service.js.map +1 -1
  386. package/dist/services/user-view-metadata.service.d.ts +4 -3
  387. package/dist/services/user-view-metadata.service.d.ts.map +1 -1
  388. package/dist/services/user-view-metadata.service.js +2 -3
  389. package/dist/services/user-view-metadata.service.js.map +1 -1
  390. package/dist/services/user.service.d.ts +2 -2
  391. package/dist/services/user.service.d.ts.map +1 -1
  392. package/dist/services/user.service.js +3 -3
  393. package/dist/services/user.service.js.map +1 -1
  394. package/dist/services/view-metadata.service.d.ts +5 -6
  395. package/dist/services/view-metadata.service.d.ts.map +1 -1
  396. package/dist/services/view-metadata.service.js +5 -10
  397. package/dist/services/view-metadata.service.js.map +1 -1
  398. package/dist/solid-core.module.d.ts.map +1 -1
  399. package/dist/solid-core.module.js +164 -121
  400. package/dist/solid-core.module.js.map +1 -1
  401. package/dist/subscribers/audit.subscriber.d.ts +4 -4
  402. package/dist/subscribers/audit.subscriber.d.ts.map +1 -1
  403. package/dist/subscribers/audit.subscriber.js +4 -5
  404. package/dist/subscribers/audit.subscriber.js.map +1 -1
  405. package/dist/subscribers/{list-of-values-metadata.subscriber.d.ts → list-of-values.subscriber.d.ts} +5 -5
  406. package/dist/subscribers/list-of-values.subscriber.d.ts.map +1 -0
  407. package/dist/subscribers/{list-of-values-metadata.subscriber.js → list-of-values.subscriber.js} +13 -13
  408. package/dist/subscribers/list-of-values.subscriber.js.map +1 -0
  409. package/dist/tsconfig.tsbuildinfo +1 -1
  410. package/package.json +5 -5
  411. package/rebuild.sh +2 -3
  412. package/src/config/iam.config.ts +3 -2
  413. package/src/constants/error-messages.ts +3 -0
  414. package/src/controllers/authentication.controller.ts +2 -2
  415. package/src/controllers/email-template.controller.ts +57 -64
  416. package/src/controllers/export-template.controller.ts +4 -2
  417. package/src/controllers/import-transaction.controller.ts +5 -2
  418. package/src/controllers/sms-template.controller.ts +55 -55
  419. package/src/decorators/security-rule-config-provider.decorator.ts +7 -0
  420. package/src/decorators/solid-password.decorator.ts +25 -17
  421. package/src/dtos/change-password.dto.ts +1 -1
  422. package/src/dtos/confirm-forgot-password.dto.ts +1 -1
  423. package/src/dtos/create-saved-filters.dto.ts +4 -0
  424. package/src/dtos/create-security-rule.dto.ts +5 -0
  425. package/src/dtos/update-saved-filters.dto.ts +4 -0
  426. package/src/dtos/update-security-rule.dto.ts +6 -1
  427. package/src/entities/field-metadata.entity.ts +2 -1
  428. package/src/entities/saved-filters.entity.ts +3 -1
  429. package/src/entities/security-rule.entity.ts +2 -0
  430. package/src/helpers/model-metadata-helper.service.ts +4 -5
  431. package/src/helpers/module-metadata-helper.service.ts +9 -0
  432. package/src/helpers/solid-registry.ts +21 -2
  433. package/src/helpers/user-helper.ts +37 -0
  434. package/src/index.ts +0 -1
  435. package/src/interfaces.ts +7 -0
  436. package/src/jobs/trigger-mcp-client-subscriber.service.ts +2 -2
  437. package/src/jobs/twilio-sms-subscriber.service.ts +2 -2
  438. package/src/repository/action-metadata.repository.ts +17 -0
  439. package/src/repository/ai-interaction.repository.ts +17 -0
  440. package/src/repository/chatter-message-details.repository.ts +3 -3
  441. package/src/repository/chatter-message.repository.ts +2 -2
  442. package/src/repository/dashboard-question-sql-dataset-config.repository.ts +17 -0
  443. package/src/repository/dashboard-question.repository.ts +17 -0
  444. package/src/repository/dashboard-variable.repository.ts +17 -0
  445. package/src/repository/dashboard.repository.ts +10 -10
  446. package/src/repository/email-template.repository.ts +17 -0
  447. package/src/repository/export-template.repository.ts +17 -0
  448. package/src/repository/export-transaction.repository.ts +17 -0
  449. package/src/repository/field-metadata.repository.ts +8 -6
  450. package/src/repository/import-transaction-error-log.repository.ts +17 -0
  451. package/src/repository/import-transaction.repository.ts +17 -0
  452. package/src/repository/list-of-values.repository.ts +17 -0
  453. package/src/repository/locale.repository.ts +17 -0
  454. package/src/repository/media-storage-provider-metadata.repository.ts +15 -0
  455. package/src/repository/media.repository.ts +21 -15
  456. package/src/repository/menu-item-metadata.repository.ts +17 -0
  457. package/src/repository/model-metadata.repository.ts +15 -0
  458. package/src/repository/module-metadata.repository.ts +15 -0
  459. package/src/repository/mq-message-queue.repository.ts +17 -0
  460. package/src/repository/mq-message.repository.ts +17 -0
  461. package/src/repository/permission-metadata.repository.ts +17 -0
  462. package/src/repository/role-metadata.repository.ts +17 -0
  463. package/src/repository/saved-filters.repository.ts +65 -0
  464. package/src/repository/scheduled-job.repository.ts +13 -14
  465. package/src/repository/security-rule.repository.ts +45 -25
  466. package/src/repository/setting.repository.ts +17 -0
  467. package/src/repository/sms-template.repository.ts +17 -0
  468. package/src/repository/solid-base.repository.ts +16 -8
  469. package/src/repository/user-activity-history.repository.ts +17 -0
  470. package/src/repository/user-view-metadata.repository.ts +17 -0
  471. package/src/repository/view-metadata.repository.ts +10 -8
  472. package/src/seeders/module-metadata-seeder.service.ts +35 -5
  473. package/src/seeders/permission-metadata-seeder.service.ts +4 -2
  474. package/src/seeders/seed-data/solid-core-metadata.json +111 -66
  475. package/src/seeders/system-fields-seeder.service.ts +6 -4
  476. package/src/services/action-metadata.service.ts +9 -7
  477. package/src/services/ai-interaction.service.ts +15 -13
  478. package/src/services/authentication.service.ts +26 -12
  479. package/src/services/chatter-message.service.ts +23 -21
  480. package/src/services/crud.service.ts +27 -32
  481. package/src/services/dashboard-question-sql-dataset-config.service.ts +4 -2
  482. package/src/services/dashboard-question.service.ts +4 -2
  483. package/src/services/dashboard-variable.service.ts +5 -2
  484. package/src/services/docker exec -it mssql //" +8 -0
  485. package/src/services/email-template.service.ts +4 -2
  486. package/src/services/export-template.service.ts +22 -4
  487. package/src/services/export-transaction.service.ts +16 -9
  488. package/src/services/field-metadata.service.ts +1 -1
  489. package/src/services/import-transaction-error-log.service.ts +4 -2
  490. package/src/services/import-transaction.service.ts +109 -30
  491. package/src/services/list-of-values.service.ts +192 -8
  492. package/src/services/locale.service.ts +16 -14
  493. package/src/services/mail/smtp-email.service.ts +7 -1
  494. package/src/services/media-storage-provider-metadata.service.ts +10 -9
  495. package/src/services/media.service.ts +16 -8
  496. package/src/services/menu-item-metadata.service.ts +7 -4
  497. package/src/services/model-metadata.service.ts +64 -58
  498. package/src/services/module-metadata.service.ts +6 -3
  499. package/src/services/mq-message-queue.service.ts +4 -2
  500. package/src/services/mq-message.service.ts +4 -2
  501. package/src/services/permission-metadata.service.ts +5 -3
  502. package/src/services/queues/rabbitmq-publisher.service.ts +99 -41
  503. package/src/services/queues/rabbitmq-subscriber.service.ts +18 -5
  504. package/src/services/role-metadata.service.ts +16 -12
  505. package/src/services/saved-filters.service.ts +10 -8
  506. package/src/services/scheduled-job.service.ts +4 -2
  507. package/src/services/scheduled-jobs/scheduler.service.ts +9 -9
  508. package/src/services/security-rule.service.ts +6 -3
  509. package/src/services/setting.service.ts +31 -14
  510. package/src/services/sms-template.service.ts +4 -2
  511. package/src/services/solid-introspect.service.ts +23 -2
  512. package/src/services/user-activity-history.service.ts +4 -2
  513. package/src/services/user-view-metadata.service.ts +4 -2
  514. package/src/services/user.service.ts +5 -2
  515. package/src/services/view-metadata.service.ts +11 -9
  516. package/src/solid-core.module.ts +166 -138
  517. package/src/subscribers/audit.subscriber.ts +8 -7
  518. package/src/subscribers/{list-of-values-metadata.subscriber.ts → list-of-values.subscriber.ts} +7 -7
  519. package/dist/repository/field.repository.d.ts +0 -9
  520. package/dist/repository/field.repository.d.ts.map +0 -1
  521. package/dist/repository/field.repository.js +0 -46
  522. package/dist/repository/field.repository.js.map +0 -1
  523. package/dist/services/list-of-values-metadata.service.d.ts +0 -34
  524. package/dist/services/list-of-values-metadata.service.d.ts.map +0 -1
  525. package/dist/services/list-of-values-metadata.service.js +0 -213
  526. package/dist/services/list-of-values-metadata.service.js.map +0 -1
  527. package/dist/subscribers/list-of-values-metadata.subscriber.d.ts.map +0 -1
  528. package/dist/subscribers/list-of-values-metadata.subscriber.js.map +0 -1
  529. package/solid_seed_fixes.ts.txt +0 -93
  530. package/src/repository/field.repository.ts +0 -33
  531. package/src/services/list-of-values-metadata.service.ts +0 -216
@@ -10,6 +10,7 @@ import { FileService } from "src/services/file.service";
10
10
  import { CrudHelperService } from "src/services/crud-helper.service";
11
11
  import { MqMessage } from '../entities/mq-message.entity';
12
12
  import { Logger } from '@nestjs/common';
13
+ import { MqMessageRepository } from 'src/repository/mq-message.repository';
13
14
 
14
15
  @Injectable()
15
16
  export class MqMessageService extends CRUDService<MqMessage> {
@@ -25,8 +26,9 @@ export class MqMessageService extends CRUDService<MqMessage> {
25
26
  readonly crudHelperService: CrudHelperService,
26
27
  @InjectEntityManager()
27
28
  readonly entityManager: EntityManager,
28
- @InjectRepository(MqMessage)
29
- readonly repo: Repository<MqMessage>,
29
+ // @InjectRepository(MqMessage)
30
+ // readonly repo: Repository<MqMessage>,
31
+ readonly repo: MqMessageRepository,
30
32
  readonly moduleRef: ModuleRef
31
33
  ) {
32
34
  super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, entityManager, repo, 'mqMessage', 'solid-core', moduleRef);
@@ -13,6 +13,7 @@ import { CrudHelperService } from "src/services/crud-helper.service";
13
13
  import { PermissionMetadata } from '../entities/permission-metadata.entity';
14
14
  import { ActiveUserData } from '../interfaces/active-user-data.interface';
15
15
  import { classify } from '@angular-devkit/core/src/utils/strings';
16
+ import { PermissionMetadataRepository } from 'src/repository/permission-metadata.repository';
16
17
 
17
18
  @Injectable()
18
19
  export class PermissionMetadataService extends CRUDService<PermissionMetadata> {
@@ -25,9 +26,10 @@ export class PermissionMetadataService extends CRUDService<PermissionMetadata> {
25
26
  readonly crudHelperService: CrudHelperService,
26
27
  @InjectEntityManager()
27
28
  readonly entityManager: EntityManager,
28
- @InjectRepository(PermissionMetadata, 'default')
29
- readonly repo: Repository<PermissionMetadata>,
30
- readonly moduleRef: ModuleRef
29
+ // @InjectRepository(PermissionMetadata, 'default')
30
+ // readonly repo: Repository<PermissionMetadata>,
31
+ readonly repo: PermissionMetadataRepository,
32
+ readonly moduleRef: ModuleRef
31
33
 
32
34
  ) {
33
35
  super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, entityManager, repo, 'permissionMetadata', 'solid-core',moduleRef);
@@ -1,4 +1,4 @@
1
- import { Logger } from '@nestjs/common';
1
+ import { Logger, OnModuleDestroy } from '@nestjs/common';
2
2
  import * as amqp from 'amqplib';
3
3
  import { v4 as uuidv4 } from 'uuid';
4
4
  import { QueuesModuleOptions } from "../../interfaces";
@@ -6,11 +6,16 @@ import { QueueMessage, QueuePublisher } from '../../interfaces/mq';
6
6
  import { MqMessageQueueService } from '../mq-message-queue.service';
7
7
  import { MqMessageService } from '../mq-message.service';
8
8
 
9
- export abstract class RabbitMqPublisher<T> implements QueuePublisher<T> {
9
+ export abstract class RabbitMqPublisher<T> implements OnModuleDestroy, QueuePublisher<T> {
10
10
  private readonly logger = new Logger(RabbitMqPublisher.name);
11
11
  private readonly url: string;
12
12
  private readonly serviceRole: string;
13
13
 
14
+ // Maintain connection...
15
+ private connection: amqp.Connection | null = null;
16
+ private channel: amqp.Channel | null = null;
17
+ private connectingPromise: Promise<void> | null = null;
18
+
14
19
  constructor(
15
20
  protected readonly mqMessageService: MqMessageService,
16
21
  protected readonly mqMessageQueueService: MqMessageQueueService,
@@ -23,27 +28,106 @@ export abstract class RabbitMqPublisher<T> implements QueuePublisher<T> {
23
28
  if (!this.serviceRole) {
24
29
  this.logger.debug('Queue service Role is not defined in the environment variables');
25
30
  }
26
- this.logger.debug(`RabbitMqPublisher instance created with options: ${JSON.stringify(this.options())} and url: ${this.url}`);
31
+ // this.logger.debug(`RabbitMqPublisher instance created with options: ${JSON.stringify(this.options())} and url: ${this.url}`);
27
32
  }
28
33
 
29
34
  abstract options(): QueuesModuleOptions;
30
35
 
31
- async establishConnection(): Promise<amqp.Connection> {
36
+ private async ensureConnectionAndChannel(): Promise<amqp.Channel> {
37
+ if (this.channel) {
38
+ return this.channel;
39
+ }
32
40
 
33
- const url = new URL(this.url);
41
+ // If another call is already connecting, wait for it
42
+ if (this.connectingPromise) {
43
+ await this.connectingPromise;
44
+ if (this.channel) return this.channel;
45
+ }
46
+
47
+ this.connectingPromise = (async () => {
48
+ const url = new URL(this.url);
49
+
50
+ const conn = await amqp.connect({
51
+ protocol: url.protocol.replace(':', ''), // "amqps"
52
+ hostname: url.hostname,
53
+ port: parseInt(url.port),
54
+ username: url.username,
55
+ // Node's URL already decodes percent-encoding; decodeURIComponent is not needed
56
+ // But without it does not seem to be working...
57
+ password: decodeURIComponent(url.password),
58
+ frameMax: 131072,
59
+ });
60
+
61
+ conn.on('error', (err) => {
62
+ this.logger.error(`RabbitMQ connection error: ${err.message}`, err.stack);
63
+ });
64
+
65
+ conn.on('close', () => {
66
+ this.logger.warn('RabbitMQ connection closed, resetting');
67
+ this.connection = null;
68
+ this.channel = null;
69
+ });
34
70
 
35
- const connection = await amqp.connect({
36
- protocol: url.protocol.replace(':', ''),
37
- hostname: url.hostname,
38
- port: parseInt(url.port),
39
- username: url.username,
40
- password: url.password,
41
- frameMax: 131072,
42
- });
71
+ const channel = await conn.createChannel();
72
+
73
+ const options = this.options();
74
+ const queueName = options.queueName;
75
+ const exchangeName = `${queueName}.exchange`;
76
+ const routingKey = `${queueName}.routing-key`;
77
+
78
+ await channel.assertExchange(exchangeName, 'direct', {});
79
+ const queue = await channel.assertQueue(queueName, {});
80
+ await channel.bindQueue(queue.queue, exchangeName, routingKey);
81
+
82
+ this.connection = conn;
83
+ this.channel = channel;
84
+ })();
85
+
86
+ try {
87
+ await this.connectingPromise;
88
+ } finally {
89
+ this.connectingPromise = null;
90
+ }
91
+
92
+ if (!this.channel) {
93
+ throw new Error('Failed to initialize RabbitMQ channel');
94
+ }
43
95
 
44
- return connection
96
+ return this.channel;
45
97
  }
46
98
 
99
+ // Nest will call this for every subclass instance, because they inherit the method
100
+ async onModuleDestroy(): Promise<void> {
101
+ await this.closeConnectionAndChannel();
102
+ }
103
+
104
+ private async closeConnectionAndChannel(): Promise<void> {
105
+ if (this.channel) {
106
+ try {
107
+ await this.channel.close();
108
+ } catch (err) {
109
+ this.logger.warn(
110
+ `RabbitMqPublisher error closing channel: ${(err as Error).message}`,
111
+ );
112
+ } finally {
113
+ this.channel = null;
114
+ }
115
+ }
116
+
117
+ if (this.connection) {
118
+ try {
119
+ await this.connection.close();
120
+ } catch (err) {
121
+ this.logger.warn(
122
+ `RabbitMqPublisher error closing connection: ${(err as Error).message}`,
123
+ );
124
+ } finally {
125
+ this.connection = null;
126
+ }
127
+ }
128
+ }
129
+
130
+
47
131
  async publish(message: QueueMessage<T>): Promise<string> {
48
132
  if (!this.url) {
49
133
  this.logger.error('RabbitMqPublisher url is not defined in the environment variables');
@@ -58,13 +142,7 @@ export abstract class RabbitMqPublisher<T> implements QueuePublisher<T> {
58
142
  throw new Error('Queue service Role is subscriber, cannot publish messages');
59
143
  }
60
144
 
61
- this.logger.debug(`RabbitMqPublisher publishing with options: ${JSON.stringify(this.options())} and url: ${this.url}`);
62
-
63
- // const connection = await amqp.connect(this.url);
64
- const connection = await this.establishConnection();
65
- // this.logger.debug(`RabbitMqPublisher publisher connected options: ${JSON.stringify(this.options())} and url: ${url}`);
66
-
67
- const channel = await connection.createChannel();
145
+ const channel = await this.ensureConnectionAndChannel();
68
146
  // this.logger.debug(`RabbitMqPublisher publisher channel created options: ${JSON.stringify(this.options())} and url: ${url}`);
69
147
 
70
148
  const options = this.options();
@@ -73,15 +151,6 @@ export abstract class RabbitMqPublisher<T> implements QueuePublisher<T> {
73
151
  const exchangeName = `${queueName}.exchange`;
74
152
  const routingKey = `${queueName}.routing-key`;
75
153
 
76
- await channel.assertExchange(exchangeName, 'direct', {});
77
- // this.logger.debug(`RabbitMqPublisher channel asserted: ${JSON.stringify(this.options())} and url: ${url}`);
78
-
79
- const queue = await channel.assertQueue(queueName, {});
80
- // this.logger.debug(`RabbitMqPublisher queue asserted: ${JSON.stringify(this.options())} and url: ${url}`);
81
-
82
- await channel.bindQueue(queue.queue, exchangeName, routingKey);
83
- // this.logger.debug(`RabbitMqPublisher queue bound: ${JSON.stringify(this.options())} and url: ${url}`);
84
-
85
154
  // Set default values for retry.
86
155
  // by default there are no retries.
87
156
  if (!message.retryCount) message.retryCount = 0;
@@ -111,20 +180,9 @@ export abstract class RabbitMqPublisher<T> implements QueuePublisher<T> {
111
180
  }
112
181
  }
113
182
  finally {
114
- // TODO: check if we want to do this or keep the connection open all the time.
115
- // connection.close();
116
- // setTimeout(() => {
117
- // connection.close();
118
- // this.logger.error('RabbitMqPublisher connection closed');
119
- // }, 3000);
120
183
  }
121
184
  // this.logger.debug(`Sent message: ${JSON.stringify(message)}`);
122
185
 
123
- // TODO: check if we want to do this or keep the connection open all the time.
124
- // setTimeout(() => {
125
- // connection.close();
126
- // }, 500);
127
-
128
186
  // return the newly created message id.
129
187
  return message.messageId;
130
188
  }
@@ -23,7 +23,7 @@ export abstract class RabbitMqSubscriber<T> implements OnModuleInit, QueueSubscr
23
23
  if (!this.serviceRole) {
24
24
  this.logger.debug('Queue service Role is not defined in the environment variables');
25
25
  }
26
- this.logger.debug(`RabbitMqSubscriber instance created with options: ${JSON.stringify(this.options())} and url: ${this.url}`);
26
+ // this.logger.debug(`RabbitMqSubscriber instance created with options: ${JSON.stringify(this.options())} and url: ${this.url}`);
27
27
  }
28
28
 
29
29
  abstract subscribe(message: QueueMessage<T>);
@@ -34,12 +34,17 @@ export abstract class RabbitMqSubscriber<T> implements OnModuleInit, QueueSubscr
34
34
 
35
35
  const url = new URL(this.url);
36
36
 
37
+ // this.logger.debug(`user: ${url.username}`);
38
+ // // just for local debug, don’t log in prod
39
+ // this.logger.debug(`pass: ${url.password}`);
40
+ // this.logger.debug(`path (vhost): ${url.pathname}`);
41
+
37
42
  const connection = await amqp.connect({
38
43
  protocol: url.protocol.replace(':', ''),
39
44
  hostname: url.hostname,
40
45
  port: parseInt(url.port),
41
46
  username: url.username,
42
- password: url.password,
47
+ password: decodeURIComponent(url.password),
43
48
  frameMax: 131072,
44
49
  });
45
50
 
@@ -50,10 +55,18 @@ export abstract class RabbitMqSubscriber<T> implements OnModuleInit, QueueSubscr
50
55
  // we will start subscriber only if the current service role is subscriber.
51
56
  if (this.url && ['both', 'subscriber'].includes(this.serviceRole)) {
52
57
 
53
- // this.logger.debug(`RabbitMqSubscriber instance created with options: ${JSON.stringify(this.options())} and url: ${url}`);
58
+ // this.logger.debug(`RabbitMqSubscriber instance created with options: ${JSON.stringify(this.options())} and url: ${this.url}`);
54
59
  // const connection = await amqp.connect(this.url);
55
- const connection = await this.establishConnection();
56
- // this.logger.debug(`RabbitMqSubscriber connection established: ${JSON.stringify(this.options())} and url: ${url}`);
60
+
61
+ let connection;
62
+ try {
63
+ connection = await this.establishConnection();
64
+ // this.logger.debug(`RabbitMqSubscriber connection established: ${JSON.stringify(this.options())} and url: ${this.url}`);
65
+ }
66
+ catch (err) {
67
+ this.logger.error(`Failed to connect to RabbitMQ: ${(err as Error).message}`, (err as Error).stack);
68
+ throw err;
69
+ }
57
70
 
58
71
  const channel = await connection.createChannel();
59
72
  // this.logger.debug(`RabbitMqSubscriber channel created: ${JSON.stringify(this.options())} and url: ${url}`);
@@ -1,18 +1,20 @@
1
1
  import { forwardRef, Inject, Injectable, Logger, NotFoundException } from '@nestjs/common';
2
- import { InjectEntityManager, InjectRepository } from '@nestjs/typeorm';
2
+ import { ConfigService } from '@nestjs/config';
3
3
  import { DiscoveryService, ModuleRef } from "@nestjs/core";
4
- import { EntityManager, In, Repository } from 'typeorm';
4
+ import { InjectEntityManager } from '@nestjs/typeorm';
5
+ import { CrudHelperService } from "src/services/crud-helper.service";
5
6
  import { CRUDService } from 'src/services/crud.service';
7
+ import { FileService } from "src/services/file.service";
6
8
  import { ModelMetadataService } from 'src/services/model-metadata.service';
7
9
  import { ModuleMetadataService } from 'src/services/module-metadata.service';
8
- import { ConfigService } from '@nestjs/config';
9
- import { FileService } from "src/services/file.service";
10
- import { CrudHelperService } from "src/services/crud-helper.service";
10
+ import { EntityManager, In } from 'typeorm';
11
11
 
12
- import { RoleMetadata } from '../entities/role-metadata.entity';
13
- import { PermissionMetadata } from '../entities/permission-metadata.entity';
14
- import { CreateRoleMetadataDto } from '../dtos/create-role-metadata.dto';
15
12
  import { ERROR_MESSAGES } from 'src/constants/error-messages';
13
+ import { PermissionMetadataRepository } from 'src/repository/permission-metadata.repository';
14
+ import { RoleMetadataRepository } from 'src/repository/role-metadata.repository';
15
+ import { CreateRoleMetadataDto } from '../dtos/create-role-metadata.dto';
16
+ import { PermissionMetadata } from '../entities/permission-metadata.entity';
17
+ import { RoleMetadata } from '../entities/role-metadata.entity';
16
18
 
17
19
  @Injectable()
18
20
  export class RoleMetadataService extends CRUDService<RoleMetadata> {
@@ -28,10 +30,12 @@ export class RoleMetadataService extends CRUDService<RoleMetadata> {
28
30
  readonly crudHelperService: CrudHelperService,
29
31
  @InjectEntityManager()
30
32
  readonly entityManager: EntityManager,
31
- @InjectRepository(RoleMetadata, 'default')
32
- readonly repo: Repository<RoleMetadata>,
33
- @InjectRepository(PermissionMetadata)
34
- private readonly permissionRepository: Repository<PermissionMetadata>,
33
+ // @InjectRepository(RoleMetadata, 'default')
34
+ // readonly repo: Repository<RoleMetadata>,
35
+ readonly repo: RoleMetadataRepository,
36
+ // @InjectRepository(PermissionMetadata)
37
+ // private readonly permissionRepository: Repository<PermissionMetadata>,
38
+ readonly permissionRepository: PermissionMetadataRepository,
35
39
  readonly moduleRef: ModuleRef
36
40
 
37
41
  ) {
@@ -1,16 +1,17 @@
1
1
  import { Injectable } from '@nestjs/common';
2
- import { InjectEntityManager, InjectRepository } from '@nestjs/typeorm';
3
- import { DiscoveryService, ModuleRef } from "@nestjs/core";
4
- import { EntityManager, Repository } from 'typeorm';
2
+ import { DiscoveryService, ModuleRef } from "@nestjs/core";
3
+ import { InjectEntityManager } from '@nestjs/typeorm';
4
+ import { EntityManager } from 'typeorm';
5
5
 
6
+ import { ConfigService } from '@nestjs/config';
7
+ import { CrudHelperService } from 'src/services/crud-helper.service';
6
8
  import { CRUDService } from 'src/services/crud.service';
9
+ import { FileService } from 'src/services/file.service';
7
10
  import { ModelMetadataService } from 'src/services/model-metadata.service';
8
11
  import { ModuleMetadataService } from 'src/services/module-metadata.service';
9
- import { ConfigService } from '@nestjs/config';
10
- import { FileService } from 'src/services/file.service';
11
- import { CrudHelperService } from 'src/services/crud-helper.service';
12
12
 
13
13
 
14
+ import { SavedFiltersRepository } from 'src/repository/saved-filters.repository';
14
15
  import { SavedFilters } from '../entities/saved-filters.entity';
15
16
 
16
17
  @Injectable()
@@ -24,8 +25,9 @@ export class SavedFiltersService extends CRUDService<SavedFilters>{
24
25
  readonly crudHelperService: CrudHelperService,
25
26
  @InjectEntityManager()
26
27
  readonly entityManager: EntityManager,
27
- @InjectRepository(SavedFilters, 'default')
28
- readonly repo: Repository<SavedFilters>,
28
+ // @InjectRepository(SavedFilters, 'default')
29
+ // readonly repo: Repository<SavedFilters>,
30
+ readonly repo: SavedFiltersRepository,
29
31
  readonly moduleRef: ModuleRef
30
32
 
31
33
  ) {
@@ -10,6 +10,7 @@ import { FileService } from './file.service';
10
10
  import { CrudHelperService } from './crud-helper.service';
11
11
  import { CRUDService } from './crud.service';
12
12
  import { Logger } from '@nestjs/common';
13
+ import { ScheduledJobRepository } from 'src/repository/scheduled-job.repository';
13
14
 
14
15
  @Injectable()
15
16
  export class ScheduledJobService extends CRUDService<ScheduledJob> {
@@ -24,8 +25,9 @@ export class ScheduledJobService extends CRUDService<ScheduledJob> {
24
25
  readonly crudHelperService: CrudHelperService,
25
26
  @InjectEntityManager()
26
27
  readonly entityManager: EntityManager,
27
- @InjectRepository(ScheduledJob)
28
- readonly repo: Repository<ScheduledJob>,
28
+ // @InjectRepository(ScheduledJob)
29
+ // readonly repo: Repository<ScheduledJob>,
30
+ readonly repo: ScheduledJobRepository,
29
31
  readonly moduleRef: ModuleRef
30
32
 
31
33
  ) {
@@ -1,20 +1,20 @@
1
- import { Injectable, Logger, Inject } from '@nestjs/common';
2
- import { InjectRepository } from '@nestjs/typeorm';
3
- import { IsNull, LessThanOrEqual, Repository } from 'typeorm';
1
+ import { Injectable, Logger } from '@nestjs/common';
2
+ import { IsNull, LessThanOrEqual } from 'typeorm';
4
3
 
5
- import { ISchedulerService } from './scheduler.interface';
6
- import { SolidRegistry } from 'src/helpers/solid-registry';
7
- import { ScheduledJob } from 'src/entities/scheduled-job.entity';
8
- import { IScheduledJob } from './scheduled-job.interface';
9
4
  import { Cron, CronExpression } from '@nestjs/schedule';
5
+ import { ScheduledJob } from 'src/entities/scheduled-job.entity';
6
+ import { SolidRegistry } from 'src/helpers/solid-registry';
7
+ import { ScheduledJobRepository } from 'src/repository/scheduled-job.repository';
8
+ import { ISchedulerService } from './scheduler.interface';
10
9
 
11
10
  @Injectable()
12
11
  export class SchedulerServiceImpl implements ISchedulerService {
13
12
  private readonly logger = new Logger(SchedulerServiceImpl.name);
14
13
 
15
14
  constructor(
16
- @InjectRepository(ScheduledJob)
17
- private readonly scheduledJobRepo: Repository<ScheduledJob>,
15
+ // @InjectRepository(ScheduledJob)
16
+ // private readonly scheduledJobRepo: Repository<ScheduledJob>,
17
+ private readonly scheduledJobRepo: ScheduledJobRepository,
18
18
  private readonly solidRegistry: SolidRegistry,
19
19
  ) { }
20
20
 
@@ -1,4 +1,4 @@
1
- import { Injectable, OnApplicationBootstrap } from '@nestjs/common';
1
+ import { forwardRef, Inject, Injectable, OnApplicationBootstrap } from '@nestjs/common';
2
2
  import { InjectEntityManager, InjectRepository } from '@nestjs/typeorm';
3
3
  import { DiscoveryService, ModuleRef } from "@nestjs/core";
4
4
  import { EntityManager, Repository } from 'typeorm';
@@ -13,6 +13,7 @@ import { CrudHelperService } from 'src/services/crud-helper.service';
13
13
 
14
14
  import { SecurityRule } from '../entities/security-rule.entity';
15
15
  import { SolidRegistry } from 'src/helpers/solid-registry';
16
+ import { SecurityRuleRepository } from 'src';
16
17
 
17
18
  @Injectable()
18
19
  export class SecurityRuleService extends CRUDService<SecurityRule> implements OnApplicationBootstrap {
@@ -25,8 +26,10 @@ export class SecurityRuleService extends CRUDService<SecurityRule> implements On
25
26
  readonly crudHelperService: CrudHelperService,
26
27
  @InjectEntityManager()
27
28
  readonly entityManager: EntityManager,
28
- @InjectRepository(SecurityRule, 'default')
29
- readonly repo: Repository<SecurityRule>,
29
+ // @InjectRepository(SecurityRule, 'default')
30
+ // readonly repo: Repository<SecurityRule>,
31
+ @Inject(forwardRef(() => SecurityRuleRepository))
32
+ readonly repo: SecurityRuleRepository,
30
33
  readonly moduleRef: ModuleRef,
31
34
  readonly solidRegistry: SolidRegistry,
32
35
 
@@ -15,6 +15,7 @@ import { Setting } from '../entities/setting.entity';
15
15
  import { RequestContextService } from './request-context.service';
16
16
  import { User } from 'src/entities/user.entity';
17
17
  import { CreateSettingDto } from 'src/dtos/create-setting.dto';
18
+ import { SettingRepository } from 'src/repository/setting.repository';
18
19
 
19
20
  @Injectable()
20
21
  export class SettingService extends CRUDService<Setting> {
@@ -30,8 +31,9 @@ export class SettingService extends CRUDService<Setting> {
30
31
  private readonly commonConfiguration: ConfigType<typeof commonConfig>,
31
32
  @InjectEntityManager()
32
33
  readonly entityManager: EntityManager,
33
- @InjectRepository(Setting, 'default')
34
- readonly repo: Repository<Setting>,
34
+ // @InjectRepository(Setting, 'default')
35
+ // readonly repo: Repository<Setting>,
36
+ readonly repo: SettingRepository,
35
37
  readonly moduleRef: ModuleRef,
36
38
  private readonly requestContextService: RequestContextService,
37
39
  @InjectRepository(User) private readonly userRepository: Repository<User>,
@@ -43,8 +45,8 @@ export class SettingService extends CRUDService<Setting> {
43
45
  async seedDefaultSettings(): Promise<void> {
44
46
  const settingsSeederData = {
45
47
  allowPublicRegistration: this.iamConfiguration.allowPublicRegistration,
46
- iamPasswordRegistrationEnabled: this.iamConfiguration.iamPasswordRegistrationEnabled,
47
- passwordlessRegistration: this.iamConfiguration.passwordlessRegistration,
48
+ passwordBasedAuth: this.iamConfiguration.passwordBasedAuth,
49
+ passwordLessAuth: this.iamConfiguration.passwordLessAuth,
48
50
  activateUserOnRegistration: this.iamConfiguration.activateUserOnRegistration,
49
51
  iamGoogleOAuthEnabled: false,
50
52
  authPagesLayout: "center",
@@ -67,12 +69,15 @@ export class SettingService extends CRUDService<Setting> {
67
69
  copyright: null,
68
70
  enableUsername: true,
69
71
  enabledNotification: true,
70
- contactSupportEmail : null,
72
+ contactSupportEmail: null,
71
73
  contactSupportDisplayName: null,
72
74
  contactSupportIcon: null,
73
75
  authScreenRightBackgroundImage: null,
74
76
  authScreenLeftBackgroundImage: null,
75
77
  authScreenCenterBackgroundImage: null,
78
+ authenticationPasswordRegex: this.iamConfiguration.PASSWORD_REGEX,
79
+ authenticationPasswordRegexErrorMessage: this.iamConfiguration.PASSWORD_REGEX_ERROR_MESSAGE,
80
+ authenticationPasswordComplexityDescription: this.iamConfiguration.PASSWORD_COMPLEXITY_DESC,
76
81
  solidXGenAiCodeBuilderConfig: JSON.stringify({
77
82
  defaultProvider: "",
78
83
  availableProviders: []
@@ -91,7 +96,7 @@ export class SettingService extends CRUDService<Setting> {
91
96
  setting.key = key;
92
97
  setting.value = typeof value === 'boolean' ? value.toString() :
93
98
  Array.isArray(value) ? value.join(',') :
94
- value === null || value === undefined ? '' : String(value);
99
+ value === null || value === undefined ? null : String(value);
95
100
  settingsToInsert.push(setting);
96
101
  }
97
102
  }
@@ -109,17 +114,22 @@ export class SettingService extends CRUDService<Setting> {
109
114
  }
110
115
 
111
116
  const settingsMap: Record<string, any> = {};
117
+ const arrayKeysToSkip = [
118
+ 'authenticationPasswordRegex',
119
+ 'authenticationPasswordRegexErrorMessage',
120
+ 'authenticationPasswordComplexityDescription',
121
+ ];
112
122
  for (const setting of settingsArray) {
113
123
  if (setting.key && setting.value !== undefined && setting.value !== null) {
114
124
  let value = setting.value;
115
- try {
125
+ try {
116
126
  settingsMap[setting.key] = JSON.parse(value);
117
127
  } catch {
118
128
  if (value === 'true' || value === 'false') {
119
129
  settingsMap[setting.key] = value === 'true';
120
130
  } else if (!isNaN(Number(value)) && value.trim() !== '') {
121
131
  settingsMap[setting.key] = Number(value);
122
- } else if (value.includes(',')) {
132
+ } else if (!arrayKeysToSkip.includes(setting.key) && value.includes(',')) {
123
133
  settingsMap[setting.key] = value.split(',').map(item => item.trim());
124
134
  } else {
125
135
  settingsMap[setting.key] = value;
@@ -139,7 +149,7 @@ export class SettingService extends CRUDService<Setting> {
139
149
  // settingsMap[setting.key] = value;
140
150
  // }
141
151
  }
142
- }
152
+ }
143
153
 
144
154
  const defaultSettings = this.getDefaultSettings();
145
155
 
@@ -154,8 +164,8 @@ export class SettingService extends CRUDService<Setting> {
154
164
  private getDefaultSettings(): Record<string, any> {
155
165
  return {
156
166
  allowPublicRegistration: this.iamConfiguration.allowPublicRegistration,
157
- iamPasswordRegistrationEnabled: this.iamConfiguration.iamPasswordRegistrationEnabled,
158
- passwordlessRegistration: this.iamConfiguration.passwordlessRegistration,
167
+ passwordBasedAuth: this.iamConfiguration.passwordBasedAuth,
168
+ passwordLessAuth: this.iamConfiguration.passwordLessAuth,
159
169
  activateUserOnRegistration: this.iamConfiguration.activateUserOnRegistration,
160
170
  iamGoogleOAuthEnabled: false,
161
171
  authPagesLayout: "center",
@@ -179,12 +189,15 @@ export class SettingService extends CRUDService<Setting> {
179
189
  forceChangePasswordOnFirstLogin: this.iamConfiguration.forceChangePasswordOnFirstLogin,
180
190
  enableUsername: true,
181
191
  enabledNotification: true,
182
- contactSupportEmail : null,
192
+ contactSupportEmail: null,
183
193
  contactSupportDisplayName: null,
184
194
  contactSupportIcon: null,
185
195
  authScreenRightBackgroundImage: null,
186
196
  authScreenLeftBackgroundImage: null,
187
197
  authScreenCenterBackgroundImage: null,
198
+ authenticationPasswordRegex: this.iamConfiguration.PASSWORD_REGEX,
199
+ authenticationPasswordRegexErrorMessage: this.iamConfiguration.PASSWORD_REGEX_ERROR_MESSAGE,
200
+ authenticationPasswordComplexityDescription: this.iamConfiguration.PASSWORD_COMPLEXITY_DESC,
188
201
  solidXGenAiCodeBuilderConfig: JSON.stringify({
189
202
  defaultProvider: "",
190
203
  availableProviders: []
@@ -322,7 +335,11 @@ export class SettingService extends CRUDService<Setting> {
322
335
 
323
336
  const system: Record<string, any> = {};
324
337
  const user: Record<string, any> = {};
325
-
338
+ const arrayKeysToSkip = [
339
+ 'authenticationPasswordRegex',
340
+ 'authenticationPasswordRegexErrorMessage',
341
+ 'authenticationPasswordComplexityDescription',
342
+ ];
326
343
  for (const setting of settingsArray) {
327
344
  if (setting.key && setting.value !== undefined && setting.value !== null) {
328
345
  const value = setting.value;
@@ -335,7 +352,7 @@ export class SettingService extends CRUDService<Setting> {
335
352
  parsedValue = value === 'true';
336
353
  } else if (!isNaN(Number(value)) && value.trim() !== '') {
337
354
  parsedValue = Number(value);
338
- } else if (value.includes(',')) {
355
+ } else if (!arrayKeysToSkip.includes(setting.key) && value.includes(',')) {
339
356
  parsedValue = value.split(',').map(item => item.trim());
340
357
  } else {
341
358
  parsedValue = value;
@@ -15,6 +15,7 @@ import { FileService } from './file.service';
15
15
  import { MediaService } from './media.service';
16
16
  import { DiscoveryService, ModuleRef } from '@nestjs/core';
17
17
  import { CrudHelperService } from './crud-helper.service';
18
+ import { SmsTemplateRepository } from 'src/repository/sms-template.repository';
18
19
 
19
20
  @Injectable()
20
21
  export class SmsTemplateService extends CRUDService<SmsTemplate>{
@@ -29,8 +30,9 @@ export class SmsTemplateService extends CRUDService<SmsTemplate>{
29
30
  readonly crudHelperService: CrudHelperService,
30
31
  @InjectEntityManager()
31
32
  readonly entityManager: EntityManager,
32
- @InjectRepository(SmsTemplate, 'default')
33
- readonly repo: Repository<SmsTemplate>,
33
+ // @InjectRepository(SmsTemplate, 'default')
34
+ // readonly repo: Repository<SmsTemplate>,
35
+ readonly repo: SmsTemplateRepository,
34
36
  readonly moduleRef: ModuleRef,
35
37
  ) {
36
38
  super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, entityManager, repo, 'smsTemplate', 'app-builder', moduleRef);