@solidstarters/solid-core 1.2.189 → 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 (535) 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/file.service.d.ts.map +1 -1
  293. package/dist/services/file.service.js +1 -17
  294. package/dist/services/file.service.js.map +1 -1
  295. package/dist/services/import-transaction-error-log.service.d.ts +4 -3
  296. package/dist/services/import-transaction-error-log.service.d.ts.map +1 -1
  297. package/dist/services/import-transaction-error-log.service.js +2 -3
  298. package/dist/services/import-transaction-error-log.service.js.map +1 -1
  299. package/dist/services/import-transaction.service.d.ts +8 -4
  300. package/dist/services/import-transaction.service.d.ts.map +1 -1
  301. package/dist/services/import-transaction.service.js +43 -16
  302. package/dist/services/import-transaction.service.js.map +1 -1
  303. package/dist/services/list-of-values.service.d.ts +19 -6
  304. package/dist/services/list-of-values.service.d.ts.map +1 -1
  305. package/dist/services/list-of-values.service.js +164 -9
  306. package/dist/services/list-of-values.service.js.map +1 -1
  307. package/dist/services/locale.service.d.ts +9 -10
  308. package/dist/services/locale.service.d.ts.map +1 -1
  309. package/dist/services/locale.service.js +8 -14
  310. package/dist/services/locale.service.js.map +1 -1
  311. package/dist/services/mail/smtp-email.service.d.ts.map +1 -1
  312. package/dist/services/mail/smtp-email.service.js +6 -1
  313. package/dist/services/mail/smtp-email.service.js.map +1 -1
  314. package/dist/services/media-storage-provider-metadata.service.d.ts +4 -4
  315. package/dist/services/media-storage-provider-metadata.service.d.ts.map +1 -1
  316. package/dist/services/media-storage-provider-metadata.service.js +5 -11
  317. package/dist/services/media-storage-provider-metadata.service.js.map +1 -1
  318. package/dist/services/media.service.d.ts +7 -6
  319. package/dist/services/media.service.d.ts.map +1 -1
  320. package/dist/services/media.service.js +8 -12
  321. package/dist/services/media.service.js.map +1 -1
  322. package/dist/services/menu-item-metadata.service.d.ts +4 -3
  323. package/dist/services/menu-item-metadata.service.d.ts.map +1 -1
  324. package/dist/services/menu-item-metadata.service.js +4 -5
  325. package/dist/services/menu-item-metadata.service.js.map +1 -1
  326. package/dist/services/model-metadata.service.d.ts +3 -2
  327. package/dist/services/model-metadata.service.d.ts.map +1 -1
  328. package/dist/services/model-metadata.service.js +45 -43
  329. package/dist/services/model-metadata.service.js.map +1 -1
  330. package/dist/services/module-metadata.service.d.ts +3 -2
  331. package/dist/services/module-metadata.service.d.ts.map +1 -1
  332. package/dist/services/module-metadata.service.js +3 -3
  333. package/dist/services/module-metadata.service.js.map +1 -1
  334. package/dist/services/mq-message-queue.service.d.ts +4 -3
  335. package/dist/services/mq-message-queue.service.d.ts.map +1 -1
  336. package/dist/services/mq-message-queue.service.js +2 -3
  337. package/dist/services/mq-message-queue.service.js.map +1 -1
  338. package/dist/services/mq-message.service.d.ts +4 -3
  339. package/dist/services/mq-message.service.d.ts.map +1 -1
  340. package/dist/services/mq-message.service.js +2 -2
  341. package/dist/services/mq-message.service.js.map +1 -1
  342. package/dist/services/permission-metadata.service.d.ts +4 -3
  343. package/dist/services/permission-metadata.service.d.ts.map +1 -1
  344. package/dist/services/permission-metadata.service.js +2 -3
  345. package/dist/services/permission-metadata.service.js.map +1 -1
  346. package/dist/services/queues/rabbitmq-publisher.service.d.ts +8 -3
  347. package/dist/services/queues/rabbitmq-publisher.service.d.ts.map +1 -1
  348. package/dist/services/queues/rabbitmq-publisher.service.js +79 -18
  349. package/dist/services/queues/rabbitmq-publisher.service.js.map +1 -1
  350. package/dist/services/queues/rabbitmq-subscriber.service.d.ts.map +1 -1
  351. package/dist/services/queues/rabbitmq-subscriber.service.js +9 -3
  352. package/dist/services/queues/rabbitmq-subscriber.service.js.map +1 -1
  353. package/dist/services/role-metadata.service.d.ts +10 -9
  354. package/dist/services/role-metadata.service.d.ts.map +1 -1
  355. package/dist/services/role-metadata.service.js +9 -11
  356. package/dist/services/role-metadata.service.js.map +1 -1
  357. package/dist/services/saved-filters.service.d.ts +7 -6
  358. package/dist/services/saved-filters.service.d.ts.map +1 -1
  359. package/dist/services/saved-filters.service.js +6 -7
  360. package/dist/services/saved-filters.service.js.map +1 -1
  361. package/dist/services/scheduled-job.service.d.ts +4 -3
  362. package/dist/services/scheduled-job.service.d.ts.map +1 -1
  363. package/dist/services/scheduled-job.service.js +2 -3
  364. package/dist/services/scheduled-job.service.js.map +1 -1
  365. package/dist/services/scheduled-jobs/scheduler.service.d.ts +3 -4
  366. package/dist/services/scheduled-jobs/scheduler.service.d.ts.map +1 -1
  367. package/dist/services/scheduled-jobs/scheduler.service.js +6 -11
  368. package/dist/services/scheduled-jobs/scheduler.service.js.map +1 -1
  369. package/dist/services/security-rule.service.d.ts +4 -3
  370. package/dist/services/security-rule.service.d.ts.map +1 -1
  371. package/dist/services/security-rule.service.js +3 -3
  372. package/dist/services/security-rule.service.js.map +1 -1
  373. package/dist/services/setting.service.d.ts +3 -2
  374. package/dist/services/setting.service.d.ts.map +1 -1
  375. package/dist/services/setting.service.js +25 -9
  376. package/dist/services/setting.service.js.map +1 -1
  377. package/dist/services/sms-template.service.d.ts +4 -3
  378. package/dist/services/sms-template.service.d.ts.map +1 -1
  379. package/dist/services/sms-template.service.js +2 -3
  380. package/dist/services/sms-template.service.js.map +1 -1
  381. package/dist/services/solid-introspect.service.d.ts +1 -0
  382. package/dist/services/solid-introspect.service.d.ts.map +1 -1
  383. package/dist/services/solid-introspect.service.js +14 -0
  384. package/dist/services/solid-introspect.service.js.map +1 -1
  385. package/dist/services/user-activity-history.service.d.ts +4 -3
  386. package/dist/services/user-activity-history.service.d.ts.map +1 -1
  387. package/dist/services/user-activity-history.service.js +2 -3
  388. package/dist/services/user-activity-history.service.js.map +1 -1
  389. package/dist/services/user-view-metadata.service.d.ts +4 -3
  390. package/dist/services/user-view-metadata.service.d.ts.map +1 -1
  391. package/dist/services/user-view-metadata.service.js +2 -3
  392. package/dist/services/user-view-metadata.service.js.map +1 -1
  393. package/dist/services/user.service.d.ts +2 -2
  394. package/dist/services/user.service.d.ts.map +1 -1
  395. package/dist/services/user.service.js +3 -3
  396. package/dist/services/user.service.js.map +1 -1
  397. package/dist/services/view-metadata.service.d.ts +5 -6
  398. package/dist/services/view-metadata.service.d.ts.map +1 -1
  399. package/dist/services/view-metadata.service.js +5 -10
  400. package/dist/services/view-metadata.service.js.map +1 -1
  401. package/dist/solid-core.module.d.ts.map +1 -1
  402. package/dist/solid-core.module.js +164 -121
  403. package/dist/solid-core.module.js.map +1 -1
  404. package/dist/subscribers/audit.subscriber.d.ts +4 -4
  405. package/dist/subscribers/audit.subscriber.d.ts.map +1 -1
  406. package/dist/subscribers/audit.subscriber.js +4 -5
  407. package/dist/subscribers/audit.subscriber.js.map +1 -1
  408. package/dist/subscribers/{list-of-values-metadata.subscriber.d.ts → list-of-values.subscriber.d.ts} +5 -5
  409. package/dist/subscribers/list-of-values.subscriber.d.ts.map +1 -0
  410. package/dist/subscribers/{list-of-values-metadata.subscriber.js → list-of-values.subscriber.js} +13 -13
  411. package/dist/subscribers/list-of-values.subscriber.js.map +1 -0
  412. package/dist/tsconfig.tsbuildinfo +1 -1
  413. package/package.json +5 -5
  414. package/rebuild.sh +2 -3
  415. package/src/config/iam.config.ts +3 -2
  416. package/src/constants/error-messages.ts +3 -0
  417. package/src/controllers/authentication.controller.ts +2 -2
  418. package/src/controllers/email-template.controller.ts +57 -64
  419. package/src/controllers/export-template.controller.ts +4 -2
  420. package/src/controllers/import-transaction.controller.ts +5 -2
  421. package/src/controllers/sms-template.controller.ts +55 -55
  422. package/src/decorators/security-rule-config-provider.decorator.ts +7 -0
  423. package/src/decorators/solid-password.decorator.ts +25 -17
  424. package/src/dtos/change-password.dto.ts +1 -1
  425. package/src/dtos/confirm-forgot-password.dto.ts +1 -1
  426. package/src/dtos/create-saved-filters.dto.ts +4 -0
  427. package/src/dtos/create-security-rule.dto.ts +5 -0
  428. package/src/dtos/update-saved-filters.dto.ts +4 -0
  429. package/src/dtos/update-security-rule.dto.ts +6 -1
  430. package/src/entities/field-metadata.entity.ts +2 -1
  431. package/src/entities/saved-filters.entity.ts +3 -1
  432. package/src/entities/security-rule.entity.ts +2 -0
  433. package/src/helpers/model-metadata-helper.service.ts +4 -5
  434. package/src/helpers/module-metadata-helper.service.ts +9 -0
  435. package/src/helpers/solid-registry.ts +21 -2
  436. package/src/helpers/user-helper.ts +37 -0
  437. package/src/index.ts +0 -1
  438. package/src/interfaces.ts +7 -0
  439. package/src/jobs/trigger-mcp-client-subscriber.service.ts +2 -2
  440. package/src/jobs/twilio-sms-subscriber.service.ts +2 -2
  441. package/src/repository/action-metadata.repository.ts +17 -0
  442. package/src/repository/ai-interaction.repository.ts +17 -0
  443. package/src/repository/chatter-message-details.repository.ts +3 -3
  444. package/src/repository/chatter-message.repository.ts +2 -2
  445. package/src/repository/dashboard-question-sql-dataset-config.repository.ts +17 -0
  446. package/src/repository/dashboard-question.repository.ts +17 -0
  447. package/src/repository/dashboard-variable.repository.ts +17 -0
  448. package/src/repository/dashboard.repository.ts +10 -10
  449. package/src/repository/email-template.repository.ts +17 -0
  450. package/src/repository/export-template.repository.ts +17 -0
  451. package/src/repository/export-transaction.repository.ts +17 -0
  452. package/src/repository/field-metadata.repository.ts +8 -6
  453. package/src/repository/import-transaction-error-log.repository.ts +17 -0
  454. package/src/repository/import-transaction.repository.ts +17 -0
  455. package/src/repository/list-of-values.repository.ts +17 -0
  456. package/src/repository/locale.repository.ts +17 -0
  457. package/src/repository/media-storage-provider-metadata.repository.ts +15 -0
  458. package/src/repository/media.repository.ts +21 -15
  459. package/src/repository/menu-item-metadata.repository.ts +17 -0
  460. package/src/repository/model-metadata.repository.ts +15 -0
  461. package/src/repository/module-metadata.repository.ts +15 -0
  462. package/src/repository/mq-message-queue.repository.ts +17 -0
  463. package/src/repository/mq-message.repository.ts +17 -0
  464. package/src/repository/permission-metadata.repository.ts +17 -0
  465. package/src/repository/role-metadata.repository.ts +17 -0
  466. package/src/repository/saved-filters.repository.ts +65 -0
  467. package/src/repository/scheduled-job.repository.ts +13 -14
  468. package/src/repository/security-rule.repository.ts +45 -25
  469. package/src/repository/setting.repository.ts +17 -0
  470. package/src/repository/sms-template.repository.ts +17 -0
  471. package/src/repository/solid-base.repository.ts +16 -8
  472. package/src/repository/user-activity-history.repository.ts +17 -0
  473. package/src/repository/user-view-metadata.repository.ts +17 -0
  474. package/src/repository/view-metadata.repository.ts +10 -8
  475. package/src/seeders/module-metadata-seeder.service.ts +35 -5
  476. package/src/seeders/permission-metadata-seeder.service.ts +4 -2
  477. package/src/seeders/seed-data/solid-core-metadata.json +111 -66
  478. package/src/seeders/system-fields-seeder.service.ts +6 -4
  479. package/src/services/action-metadata.service.ts +9 -7
  480. package/src/services/ai-interaction.service.ts +15 -13
  481. package/src/services/authentication.service.ts +26 -12
  482. package/src/services/chatter-message.service.ts +23 -21
  483. package/src/services/crud.service.ts +27 -32
  484. package/src/services/dashboard-question-sql-dataset-config.service.ts +4 -2
  485. package/src/services/dashboard-question.service.ts +4 -2
  486. package/src/services/dashboard-variable.service.ts +5 -2
  487. package/src/services/docker exec -it mssql //" +8 -0
  488. package/src/services/email-template.service.ts +4 -2
  489. package/src/services/export-template.service.ts +22 -4
  490. package/src/services/export-transaction.service.ts +16 -9
  491. package/src/services/field-metadata.service.ts +1 -1
  492. package/src/services/file.service.ts +1 -24
  493. package/src/services/import-transaction-error-log.service.ts +4 -2
  494. package/src/services/import-transaction.service.ts +109 -30
  495. package/src/services/list-of-values.service.ts +192 -8
  496. package/src/services/locale.service.ts +16 -14
  497. package/src/services/mail/smtp-email.service.ts +7 -1
  498. package/src/services/media-storage-provider-metadata.service.ts +10 -9
  499. package/src/services/media.service.ts +16 -8
  500. package/src/services/menu-item-metadata.service.ts +7 -4
  501. package/src/services/model-metadata.service.ts +64 -58
  502. package/src/services/module-metadata.service.ts +6 -3
  503. package/src/services/mq-message-queue.service.ts +4 -2
  504. package/src/services/mq-message.service.ts +4 -2
  505. package/src/services/permission-metadata.service.ts +5 -3
  506. package/src/services/queues/rabbitmq-publisher.service.ts +99 -41
  507. package/src/services/queues/rabbitmq-subscriber.service.ts +18 -5
  508. package/src/services/role-metadata.service.ts +16 -12
  509. package/src/services/saved-filters.service.ts +10 -8
  510. package/src/services/scheduled-job.service.ts +4 -2
  511. package/src/services/scheduled-jobs/scheduler.service.ts +9 -9
  512. package/src/services/security-rule.service.ts +6 -3
  513. package/src/services/setting.service.ts +31 -14
  514. package/src/services/sms-template.service.ts +4 -2
  515. package/src/services/solid-introspect.service.ts +23 -2
  516. package/src/services/user-activity-history.service.ts +4 -2
  517. package/src/services/user-view-metadata.service.ts +4 -2
  518. package/src/services/user.service.ts +5 -2
  519. package/src/services/view-metadata.service.ts +11 -9
  520. package/src/solid-core.module.ts +166 -138
  521. package/src/subscribers/audit.subscriber.ts +8 -7
  522. package/src/subscribers/{list-of-values-metadata.subscriber.ts → list-of-values.subscriber.ts} +7 -7
  523. package/dist/repository/field.repository.d.ts +0 -9
  524. package/dist/repository/field.repository.d.ts.map +0 -1
  525. package/dist/repository/field.repository.js +0 -46
  526. package/dist/repository/field.repository.js.map +0 -1
  527. package/dist/services/list-of-values-metadata.service.d.ts +0 -34
  528. package/dist/services/list-of-values-metadata.service.d.ts.map +0 -1
  529. package/dist/services/list-of-values-metadata.service.js +0 -213
  530. package/dist/services/list-of-values-metadata.service.js.map +0 -1
  531. package/dist/subscribers/list-of-values-metadata.subscriber.d.ts.map +0 -1
  532. package/dist/subscribers/list-of-values-metadata.subscriber.js.map +0 -1
  533. package/solid_seed_fixes.ts.txt +0 -93
  534. package/src/repository/field.repository.ts +0 -33
  535. package/src/services/list-of-values-metadata.service.ts +0 -216
@@ -1,13 +1,19 @@
1
1
  import { BadRequestException, Injectable, Logger, NotFoundException } from '@nestjs/common';
2
- import { InjectDataSource, InjectRepository } from '@nestjs/typeorm';
2
+ import { InjectDataSource } from '@nestjs/typeorm';
3
3
  import * as fs from 'fs/promises'; // Use the Promise-based version of fs for async/await
4
4
  import { DataSource, EntityManager, In, Repository, SelectQueryBuilder } from 'typeorm';
5
5
  import { CreateModelMetadataDto } from '../dtos/create-model-metadata.dto';
6
6
  import { ModelMetadata } from '../entities/model-metadata.entity';
7
7
  import { ModuleMetadata } from '../entities/module-metadata.entity';
8
8
 
9
+ import { classify, dasherize } from '@angular-devkit/core/src/utils/strings';
10
+ import { ERROR_MESSAGES } from 'src/constants/error-messages';
11
+ import { DisallowInProduction } from 'src/decorators/disallow-in-production.decorator';
9
12
  import { SolidFieldType } from 'src/dtos/create-field-metadata.dto';
13
+ import { PermissionMetadata } from 'src/entities/permission-metadata.entity';
10
14
  import { ModuleMetadataHelperService } from 'src/helpers/module-metadata-helper.service';
15
+ import { FieldMetadataRepository } from 'src/repository/field-metadata.repository';
16
+ import { ModelMetadataRepository } from 'src/repository/model-metadata.repository';
11
17
  import { BasicFilterDto } from '../dtos/basic-filters.dto';
12
18
  import { UpdateModelMetaDataDto } from '../dtos/update-model-metadata.dto';
13
19
  import { ActionMetadata } from '../entities/action-metadata.entity';
@@ -24,19 +30,17 @@ import { CrudHelperService } from './crud-helper.service';
24
30
  import { FieldMetadataService } from './field-metadata.service';
25
31
  import { MediaStorageProviderMetadataService } from './media-storage-provider-metadata.service';
26
32
  import { RoleMetadataService } from './role-metadata.service';
27
- import { PermissionMetadata } from 'src/entities/permission-metadata.entity';
28
- import { classify, dasherize } from '@angular-devkit/core/src/utils/strings';
29
- import { DisallowInProduction } from 'src/decorators/disallow-in-production.decorator';
30
- import { ERROR_MESSAGES } from 'src/constants/error-messages';
31
33
 
32
34
  @Injectable()
33
35
  export class ModelMetadataService {
34
36
  private logger = new Logger('ModelMetadataService');
35
37
  constructor(
36
- @InjectRepository(ModelMetadata)
37
- private readonly modelMetadataRepo: Repository<ModelMetadata>,
38
- @InjectRepository(FieldMetadata)
39
- private readonly fieldMetadataRepo: Repository<FieldMetadata>,
38
+ // @InjectRepository(ModelMetadata)
39
+ // private readonly modelMetadataRepo: Repository<ModelMetadata>,
40
+ // @InjectRepository(FieldMetadata)
41
+ // private readonly fieldMetadataRepo: Repository<FieldMetadata>,
42
+ private readonly modelMetadataRepo: ModelMetadataRepository,
43
+ private readonly fieldMetadataRepo: FieldMetadataRepository,
40
44
  private readonly schematicService: SchematicService,
41
45
  @InjectDataSource()
42
46
  private readonly dataSource: DataSource,
@@ -55,7 +59,7 @@ export class ModelMetadataService {
55
59
  let { limit, offset } = basicFilterDto;
56
60
 
57
61
  // Create above query on pincode table using query builder
58
- var qb: SelectQueryBuilder<ModelMetadata> = this.modelMetadataRepo.createQueryBuilder(alias)
62
+ var qb: SelectQueryBuilder<ModelMetadata> = await this.modelMetadataRepo.createSecurityRuleAwareQueryBuilder(alias)
59
63
  qb = await this.crudHelperService.buildFilterQuery(qb, basicFilterDto, alias);
60
64
 
61
65
  // Get the records and the count
@@ -555,50 +559,52 @@ export class ModelMetadataService {
555
559
  return;
556
560
  }
557
561
 
558
- this.logger.log(`Cleaning up for model: ${modelEntity.singularName} belonging to module: ${modelEntity.module.name}`);
559
-
560
- const modulePath = await this.moduleMetadataHelperService.getModulePath(modelEntity.module.name);
561
- // /Users/harishpatel/Code/javascript/school-fees-portal/solid-api/src/solid-core
562
- this.logger.log(`Module path: ${modulePath}`);
563
-
564
- const filesToDelete = [];
565
- // <singularName>.entity.ts | The TypeORM model that needs to be deleted. | Automatic
566
- const entityFilePath = `${modulePath}/entities/${dasherize(modelEntity.singularName)}.entity.ts`;
567
- filesToDelete.push(entityFilePath);
568
- this.logger.log(`About to delete entity file path: ${entityFilePath}`);
569
-
570
- // <singularName>.create.dto.ts | The TypeORM model that needs to be deleted. | Automatic
571
- const createDtoFilePath = `${modulePath}/dtos/create-${dasherize(modelEntity.singularName)}.dto.ts`;
572
- filesToDelete.push(createDtoFilePath);
573
- this.logger.log(`About to delete create DTO file path: ${createDtoFilePath}`);
574
-
575
- // <singularName>.update.dto.ts | The TypeORM model that needs to be deleted. | Automatic
576
- const updateDtoFilePath = `${modulePath}/dtos/update-${dasherize(modelEntity.singularName)}.dto.ts`;
577
- filesToDelete.push(updateDtoFilePath);
578
- this.logger.log(`About to delete update DTO file path: ${updateDtoFilePath}`);
579
-
580
- // <singularName>.repository.ts | The TypeORM model that needs to be deleted. | Automatic
581
- const repositoryFilePath = `${modulePath}/repositories/${dasherize(modelEntity.singularName)}.repository.ts`;
582
- filesToDelete.push(repositoryFilePath);
583
- this.logger.log(`About to delete repository file path: ${repositoryFilePath}`);
584
-
585
- // <singularName>.service.ts | The TypeORM model that needs to be deleted. | Automatic
586
- const serviceFilePath = `${modulePath}/services/${dasherize(modelEntity.singularName)}.service.ts`;
587
- filesToDelete.push(serviceFilePath);
588
- this.logger.log(`About to delete service file path: ${serviceFilePath}`);
589
-
590
- // <singularName>.controller.ts | The TypeORM model that needs to be deleted. | Automatic
591
- const controllerFilePath = `${modulePath}/controllers/${dasherize(modelEntity.singularName)}.controller.ts`;
592
- filesToDelete.push(controllerFilePath);
593
- this.logger.log(`About to delete controller file path: ${controllerFilePath}`);
594
-
595
- for (let i = 0; i < filesToDelete.length; i++) {
596
- const fileToDelete = filesToDelete[i];
597
- try {
598
- await fs.unlink(fileToDelete);
599
- this.logger.log(`Deleted file: ${fileToDelete}`);
600
- } catch (error) {
601
- this.logger.error(`Error deleting file: ${fileToDelete}`, error);
562
+ this.logger.log(`Cleaning up for model: ${modelEntity.singularName} belonging to module: ${modelEntity.module?.name}`);
563
+
564
+ const modulePath = await this.moduleMetadataHelperService.getModulePath(modelEntity.module?.name);
565
+ if (modulePath) {
566
+ // /Users/harishpatel/Code/javascript/school-fees-portal/solid-api/src/solid-core
567
+ this.logger.log(`Module path: ${modulePath}`);
568
+
569
+ const filesToDelete = [];
570
+ // <singularName>.entity.ts | The TypeORM model that needs to be deleted. | Automatic
571
+ const entityFilePath = `${modulePath}/entities/${dasherize(modelEntity.singularName)}.entity.ts`;
572
+ filesToDelete.push(entityFilePath);
573
+ this.logger.log(`About to delete entity file path: ${entityFilePath}`);
574
+
575
+ // <singularName>.create.dto.ts | The TypeORM model that needs to be deleted. | Automatic
576
+ const createDtoFilePath = `${modulePath}/dtos/create-${dasherize(modelEntity.singularName)}.dto.ts`;
577
+ filesToDelete.push(createDtoFilePath);
578
+ this.logger.log(`About to delete create DTO file path: ${createDtoFilePath}`);
579
+
580
+ // <singularName>.update.dto.ts | The TypeORM model that needs to be deleted. | Automatic
581
+ const updateDtoFilePath = `${modulePath}/dtos/update-${dasherize(modelEntity.singularName)}.dto.ts`;
582
+ filesToDelete.push(updateDtoFilePath);
583
+ this.logger.log(`About to delete update DTO file path: ${updateDtoFilePath}`);
584
+
585
+ // <singularName>.repository.ts | The TypeORM model that needs to be deleted. | Automatic
586
+ const repositoryFilePath = `${modulePath}/repositories/${dasherize(modelEntity.singularName)}.repository.ts`;
587
+ filesToDelete.push(repositoryFilePath);
588
+ this.logger.log(`About to delete repository file path: ${repositoryFilePath}`);
589
+
590
+ // <singularName>.service.ts | The TypeORM model that needs to be deleted. | Automatic
591
+ const serviceFilePath = `${modulePath}/services/${dasherize(modelEntity.singularName)}.service.ts`;
592
+ filesToDelete.push(serviceFilePath);
593
+ this.logger.log(`About to delete service file path: ${serviceFilePath}`);
594
+
595
+ // <singularName>.controller.ts | The TypeORM model that needs to be deleted. | Automatic
596
+ const controllerFilePath = `${modulePath}/controllers/${dasherize(modelEntity.singularName)}.controller.ts`;
597
+ filesToDelete.push(controllerFilePath);
598
+ this.logger.log(`About to delete controller file path: ${controllerFilePath}`);
599
+
600
+ for (let i = 0; i < filesToDelete.length; i++) {
601
+ const fileToDelete = filesToDelete[i];
602
+ try {
603
+ await fs.unlink(fileToDelete);
604
+ this.logger.log(`Deleted file: ${fileToDelete}`);
605
+ } catch (error) {
606
+ this.logger.error(`Error deleting file: ${fileToDelete}`, error);
607
+ }
602
608
  }
603
609
  }
604
610
 
@@ -655,7 +661,7 @@ export class ModelMetadataService {
655
661
  await viewRepo.delete({ model: { id: modelEntity.id } })
656
662
 
657
663
  // <moduleName>-metadata.json | Remove references to this model in the model metadata, menu, action & view sections. | Automatic
658
- const filePath = await this.moduleMetadataHelperService.getModuleMetadataFilePath(modelEntity.module.name);
664
+ const filePath = await this.moduleMetadataHelperService.getModuleMetadataFilePath(modelEntity.module?.name);
659
665
  const metaData = await this.moduleMetadataHelperService.getModuleMetadataConfiguration(filePath);
660
666
  if (metaData) {
661
667
  const existingModelIndex = metaData.moduleMetadata.models.findIndex(
@@ -668,13 +674,13 @@ export class ModelMetadataService {
668
674
  }
669
675
 
670
676
  // Remove references to this model in the menu, action & view sections.
671
- metaData.moduleMetadata.menus = metaData.moduleMetadata.menus.filter(
677
+ metaData.moduleMetadata.menus = metaData.moduleMetadata?.menus?.filter(
672
678
  (menu: any) => menu.modelUserKey !== modelEntity.singularName
673
679
  );
674
- metaData.moduleMetadata.actions = metaData.moduleMetadata.actions.filter(
680
+ metaData.moduleMetadata.actions = metaData.moduleMetadata?.actions?.filter(
675
681
  (action: any) => action.modelUserKey !== modelEntity.singularName
676
682
  );
677
- metaData.moduleMetadata.views = metaData.moduleMetadata.views.filter(
683
+ metaData.moduleMetadata.views = metaData.moduleMetadata?.views?.filter(
678
684
  (view: any) => view.modelUserKey !== modelEntity.singularName
679
685
  );
680
686
 
@@ -23,6 +23,8 @@ import { ModelMetadataService } from './model-metadata.service';
23
23
  import { ModuleMetadataHelperService } from 'src/helpers/module-metadata-helper.service';
24
24
  import { DisallowInProduction } from 'src/decorators/disallow-in-production.decorator';
25
25
  import { ERROR_MESSAGES } from 'src/constants/error-messages';
26
+ import Module from 'module';
27
+ import { ModuleMetadataRepository } from 'src/repository/module-metadata.repository';
26
28
 
27
29
  @Injectable()
28
30
  export class ModuleMetadataService {
@@ -31,8 +33,9 @@ export class ModuleMetadataService {
31
33
  constructor(
32
34
  @InjectDataSource()
33
35
  private readonly dataSource: DataSource,
34
- @InjectRepository(ModuleMetadata)
35
- private readonly moduleMetadataRepo: Repository<ModuleMetadata>,
36
+ // @InjectRepository(ModuleMetadata)
37
+ // private readonly moduleMetadataRepo: Repository<ModuleMetadata>,
38
+ private readonly moduleMetadataRepo: ModuleMetadataRepository,
36
39
  private readonly crudHelperService: CrudHelperService,
37
40
  private readonly schematicService: SchematicService,
38
41
  private readonly configService: ConfigService,
@@ -50,7 +53,7 @@ export class ModuleMetadataService {
50
53
  let { limit, offset } = basicFilterDto;
51
54
 
52
55
  // Create above query on pincode table using query builder
53
- var qb: SelectQueryBuilder<ModuleMetadata> = this.moduleMetadataRepo.createQueryBuilder(alias)
56
+ var qb: SelectQueryBuilder<ModuleMetadata> = await this.moduleMetadataRepo.createSecurityRuleAwareQueryBuilder(alias)
54
57
  qb = await this.crudHelperService.buildFilterQuery(qb, basicFilterDto, alias);
55
58
 
56
59
  // Get the records and the count
@@ -11,6 +11,7 @@ import { CrudHelperService } from "src/services/crud-helper.service";
11
11
 
12
12
 
13
13
  import { MqMessageQueue } from '../entities/mq-message-queue.entity';
14
+ import { MqMessageQueueRepository } from 'src/repository/mq-message-queue.repository';
14
15
 
15
16
  @Injectable()
16
17
  export class MqMessageQueueService extends CRUDService<MqMessageQueue> {
@@ -24,8 +25,9 @@ export class MqMessageQueueService extends CRUDService<MqMessageQueue> {
24
25
  readonly crudHelperService: CrudHelperService,
25
26
  @InjectEntityManager()
26
27
  readonly entityManager: EntityManager,
27
- @InjectRepository(MqMessageQueue)
28
- readonly repo: Repository<MqMessageQueue>,
28
+ // @InjectRepository(MqMessageQueue)
29
+ // readonly repo: Repository<MqMessageQueue>,
30
+ readonly repo: MqMessageQueueRepository,
29
31
  readonly moduleRef: ModuleRef
30
32
 
31
33
  ) {
@@ -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
  ) {