@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,7 +1,7 @@
1
- import { BadRequestException, Injectable, Logger } from '@nestjs/common';
1
+ import { BadRequestException, ForbiddenException, Injectable, Logger } from '@nestjs/common';
2
2
  import { DiscoveryService, ModuleRef } from "@nestjs/core";
3
- import { InjectEntityManager, InjectRepository } from '@nestjs/typeorm';
4
- import { EntityManager, Repository } from 'typeorm';
3
+ import { InjectEntityManager } from '@nestjs/typeorm';
4
+ import { EntityManager } from 'typeorm';
5
5
 
6
6
  import { ConfigService } from '@nestjs/config';
7
7
  import { CrudHelperService } from 'src/services/crud-helper.service';
@@ -13,20 +13,25 @@ import { ModuleMetadataService } from 'src/services/module-metadata.service';
13
13
 
14
14
  import { classify } from '@angular-devkit/core/src/utils/strings';
15
15
  import { HttpService } from '@nestjs/axios';
16
+ import { ERROR_MESSAGES } from 'src/constants/error-messages';
16
17
  import { RelationFieldsCommand, RelationType, SolidFieldType } from 'src/dtos/create-field-metadata.dto';
17
18
  import { ImportInstructionsResponseDto, StandardImportInstructionsResponseDto } from 'src/dtos/import-instructions.dto';
18
19
  import { FieldMetadata } from 'src/entities/field-metadata.entity';
19
20
  import { ImportTransactionErrorLog } from 'src/entities/import-transaction-error-log.entity';
20
21
  import { ModelMetadata } from 'src/entities/model-metadata.entity';
22
+ import { parseFlexibleDate } from 'src/helpers/date.helper';
21
23
  import { MediaWithFullUrl } from 'src/interfaces';
24
+ import { ImportTransactionRepository } from 'src/repository/import-transaction.repository';
22
25
  import { Readable } from 'stream';
23
26
  import { v4 as uuidv4 } from 'uuid';
24
27
  import { ImportTransaction } from '../entities/import-transaction.entity';
25
28
  import { CsvService } from './csv.service';
26
29
  import { ExcelService } from './excel.service';
27
30
  import { SolidIntrospectService } from './solid-introspect.service';
28
- import { ERROR_MESSAGES } from 'src/constants/error-messages';
29
- import { parseFlexibleDate } from 'src/helpers/date.helper';
31
+ import { ModelMetadataHelperService } from 'src/helpers/model-metadata-helper.service';
32
+ import { getUserExcludedFields } from 'src/helpers/user-helper';
33
+ import { ActiveUserData } from 'src/interfaces/active-user-data.interface';
34
+ import {upperFirst, camelCase} from 'lodash';
30
35
 
31
36
  interface ImportTemplateFileInfo {
32
37
  stream: NodeJS.ReadableStream;
@@ -97,13 +102,15 @@ export class ImportTransactionService extends CRUDService<ImportTransaction> {
97
102
  readonly crudHelperService: CrudHelperService,
98
103
  @InjectEntityManager()
99
104
  readonly entityManager: EntityManager,
100
- @InjectRepository(ImportTransaction, 'default')
101
- readonly repo: Repository<ImportTransaction>,
105
+ // @InjectRepository(ImportTransaction, 'default')
106
+ // readonly repo: Repository<ImportTransaction>,
107
+ readonly repo: ImportTransactionRepository,
102
108
  readonly moduleRef: ModuleRef,
103
109
  readonly excelService: ExcelService,
104
110
  readonly csvService: CsvService,
105
111
  readonly httpService: HttpService,
106
112
  readonly introspectService: SolidIntrospectService,
113
+ private readonly modelMetadataHelperService: ModelMetadataHelperService,
107
114
  // readonly fieldMetadataService: FieldMetadataService,
108
115
  ) {
109
116
  super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, entityManager, repo, 'importTransaction', 'solid-core', moduleRef);
@@ -124,8 +131,16 @@ export class ImportTransactionService extends CRUDService<ImportTransaction> {
124
131
  if (!modelMetadata) {
125
132
  throw new Error(ERROR_MESSAGES.MODEL_METADATA_NOT_FOUND(modelMetadataId));
126
133
  }
134
+
135
+ const allFields = await this.modelMetadataHelperService.loadFieldHierarchy(
136
+ modelMetadata.singularName,
137
+ );
138
+
139
+ // Replace original fields with full hierarchy fields
140
+ // modelMetadata.fields = allFields;
141
+
127
142
  // Create a header row with the display names of the fields, excluding the media fields,computed fields
128
- const headers = this.fieldsAllowedForImport(modelMetadata.fields)
143
+ const headers = this.fieldsAllowedForImport(allFields)
129
144
  .map(field => field.displayName);
130
145
 
131
146
  // Depending on the format, generate the template
@@ -163,6 +178,19 @@ export class ImportTransactionService extends CRUDService<ImportTransaction> {
163
178
  throw new Error(ERROR_MESSAGES.MODEL_METADATA_NOT_FOUND(modelMetadataId));
164
179
  }
165
180
 
181
+ // Step 2: Load full field hierarchy (includes parent model fields)
182
+ const allFields = await this.modelMetadataHelperService.loadFieldHierarchy(
183
+ modelMetadata.singularName,
184
+ );
185
+
186
+ const systemFieldNames = this.modelMetadataHelperService
187
+ .getSystemFieldsMetadata()
188
+ .map(field => field.name);
189
+
190
+ const userExcluded = getUserExcludedFields();
191
+ // Replace modelMetadata.fields with combined (child + parent) fields
192
+ // modelMetadata.fields = allFields;
193
+
166
194
  // Create the standard import instructions
167
195
  const standardInstructions: StandardImportInstructionsResponseDto = {
168
196
  requiredFields: [],
@@ -176,8 +204,18 @@ export class ImportTransactionService extends CRUDService<ImportTransaction> {
176
204
  };
177
205
 
178
206
  // Iterate through the fields and populate the standard instructions
179
- for (const field of modelMetadata.fields) {
180
- if (field.isSystem) continue; // Skip system fields
207
+ for (const field of allFields) {
208
+ // Skip system fields
209
+ if (systemFieldNames.includes(field.name)) {
210
+ continue;
211
+ }
212
+
213
+ // Skip excluded user fields (NO model name check needed)
214
+ if (userExcluded.includes(field.name)) {
215
+ continue;
216
+ }
217
+
218
+ // if (field.isSystem) continue; // Skip system fields
181
219
  if (field.required) {
182
220
  standardInstructions.requiredFields.push(field.displayName);
183
221
  }
@@ -255,9 +293,22 @@ export class ImportTransactionService extends CRUDService<ImportTransaction> {
255
293
  };
256
294
  }
257
295
 
258
- async startImportSync(importTransactionId: number): Promise<ImportSyncResult> {
296
+ async startImportSync(importTransactionId: number, activeUser: ActiveUserData): Promise<ImportSyncResult> {
259
297
  // Load the import transaction for the given ID
260
298
  const importTransaction = await this.loadImportTransaction(importTransactionId);
299
+ const modelName = upperFirst(camelCase(importTransaction.modelMetadata.singularName));
300
+ const permissionKey = `${modelName}Controller.insertMany`;
301
+
302
+ const userPermissions = activeUser.permissions ?? [];
303
+ const hasPermission = Array.isArray(userPermissions)
304
+ ? userPermissions.includes(permissionKey)
305
+ : userPermissions[permissionKey] === true;
306
+
307
+ if (!hasPermission) {
308
+ throw new ForbiddenException(
309
+ `Missing permission: ${permissionKey}`
310
+ );
311
+ }
261
312
 
262
313
  // Get the import file media object from the import transaction
263
314
  const importFileMediaObject = this.getImportFileObject(importTransaction);
@@ -366,18 +417,43 @@ export class ImportTransactionService extends CRUDService<ImportTransaction> {
366
417
  }
367
418
 
368
419
 
420
+ // private async loadImportTransaction(importTransactionId: number) {
421
+ // const importTransaction = await this.findOne(importTransactionId, {
422
+ // populate: ['modelMetadata', 'modelMetadata.fields'],
423
+ // populateMedia: ['fileLocation'],
424
+ // });
425
+ // if (!importTransaction) {
426
+ // throw new Error(`Import transaction with ID ${importTransactionId} not found.`);
427
+ // }
428
+ // return importTransaction;
429
+ // }
430
+
369
431
  private async loadImportTransaction(importTransactionId: number) {
432
+ // Step 1: Load the transaction with model metadata
370
433
  const importTransaction = await this.findOne(importTransactionId, {
371
- populate: ['modelMetadata', 'modelMetadata.fields'],
434
+ populate: ['modelMetadata'],
372
435
  populateMedia: ['fileLocation'],
373
436
  });
374
- if (!importTransaction) {
375
- throw new Error(`Import transaction with ID ${importTransactionId} not found.`);
376
- }
437
+
438
+ // Step 2: Load full field hierarchy (child + parent fields)
439
+ const modelFields = await this.modelMetadataHelperService.loadFieldHierarchy(
440
+ importTransaction.modelMetadata.singularName,
441
+ );
442
+
443
+ // Step 3: Attach the combined fields back into the modelMetadata
444
+ importTransaction.modelMetadata.fields = modelFields;
445
+
377
446
  return importTransaction;
378
447
  }
379
448
 
380
449
  private fieldsAllowedForImport(fields: FieldMetadata[]): FieldMetadata[] {
450
+ // Get system field names (e.g. id, createdAt, updatedAt...)
451
+ const systemFieldNames = this.modelMetadataHelperService
452
+ .getSystemFieldsMetadata()
453
+ .map(field => field.name);
454
+
455
+ const userExcluded = getUserExcludedFields();
456
+
381
457
  // Filter out fields that are not allowed for import
382
458
  return fields.filter(field =>
383
459
  field.type !== SolidFieldType.mediaMultiple && // Exclude media multiple fields
@@ -387,7 +463,10 @@ export class ImportTransactionService extends CRUDService<ImportTransaction> {
387
463
  field.type !== SolidFieldType.richText &&
388
464
  field.type !== SolidFieldType.uuid &&
389
465
  field.relationType !== RelationType.oneToMany &&
390
- field.isSystem !== true // Exclude system fields
466
+ !systemFieldNames.includes(field.name) &&
467
+ // field.isSystem !== true // Exclude system fields
468
+
469
+ !userExcluded.includes(field.name)
391
470
  );
392
471
  }
393
472
 
@@ -567,11 +646,11 @@ export class ImportTransactionService extends CRUDService<ImportTransaction> {
567
646
  // TODO Move this logic to field crud managers i.e add a parse method to the field crud manager interface
568
647
  switch (fieldType) {
569
648
  case SolidFieldType.relation: {
570
- return await this.populateDtoForRelations(fieldMetadata, record, key, dtoRecord);
649
+ return await this.populateDtoForRelations(fieldMetadata, record, key, dtoRecord);
571
650
  }
572
651
  case SolidFieldType.date:
573
652
  case SolidFieldType.datetime:
574
- return this.populateDtoForDate(record, key, fieldMetadata, dtoRecord);
653
+ return this.populateDtoForDate(record, key, fieldMetadata, dtoRecord);
575
654
  case SolidFieldType.int:
576
655
  case SolidFieldType.bigint:
577
656
  case SolidFieldType.decimal:
@@ -594,7 +673,7 @@ export class ImportTransactionService extends CRUDService<ImportTransaction> {
594
673
  }
595
674
  }
596
675
  }
597
-
676
+
598
677
  private populateDtoForSelectionValues(dtoRecord: Record<string, any>, fieldMetadata: FieldMetadata, record: Record<string, any>, key: string) {
599
678
  const rawValue = record[key];
600
679
 
@@ -658,17 +737,17 @@ export class ImportTransactionService extends CRUDService<ImportTransaction> {
658
737
  dtoRecord[fieldMetadata.name] = null; // If the cell is empty, set the field to null
659
738
  return dtoRecord;
660
739
  }
661
- // Use flexible date parser
662
- this.logger.verbose(cellValue,'cellValue');
663
-
664
- const dateValue = parseFlexibleDate(cellValue);
665
- this.logger.verbose(dateValue,'dateValue');
666
-
667
- if (!dateValue) {
668
- throw new Error(
669
- `Invalid date value for cell ${key} with value ${cellValue}`
670
- );
671
- }
740
+ // Use flexible date parser
741
+ this.logger.verbose(cellValue, 'cellValue');
742
+
743
+ const dateValue = parseFlexibleDate(cellValue);
744
+ this.logger.verbose(dateValue, 'dateValue');
745
+
746
+ if (!dateValue) {
747
+ throw new Error(
748
+ `Invalid date value for cell ${key} with value ${cellValue}`
749
+ );
750
+ }
672
751
  dtoRecord[fieldMetadata.name] = dateValue;
673
752
  return dtoRecord;
674
753
  }
@@ -1,20 +1,29 @@
1
1
  import { Injectable } from '@nestjs/common';
2
- import { InjectEntityManager, InjectRepository } from '@nestjs/typeorm';
3
2
  import { DiscoveryService, ModuleRef } from "@nestjs/core";
4
- import { EntityManager, Repository } from 'typeorm';
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 * as fs from 'fs/promises'; // Use the Promise-based version of fs for async/await
15
+ import { ListOfValuesRepository } from 'src/repository/list-of-values.repository';
14
16
  import { ListOfValues } from '../entities/list-of-values.entity';
17
+ import { ModelMetadataHelperService } from 'src/helpers/model-metadata-helper.service';
18
+ import { ModuleMetadataHelperService } from 'src/helpers/module-metadata-helper.service';
19
+ import { ListOfValuesMapper } from 'src/mappers/list-of-values-mapper';
20
+
15
21
 
16
22
  @Injectable()
17
23
  export class ListOfValuesService extends CRUDService<ListOfValues> {
24
+ logger: any;
25
+ // moduleMetadataHelperService: any;
26
+ // listOfValuesMapper: any;
18
27
  constructor(
19
28
  readonly modelMetadataService: ModelMetadataService,
20
29
  readonly moduleMetadataService: ModuleMetadataService,
@@ -22,11 +31,15 @@ export class ListOfValuesService extends CRUDService<ListOfValues> {
22
31
  readonly fileService: FileService,
23
32
  readonly discoveryService: DiscoveryService,
24
33
  readonly crudHelperService: CrudHelperService,
34
+
25
35
  @InjectEntityManager()
26
36
  readonly entityManager: EntityManager,
27
- @InjectRepository(ListOfValues, 'default')
28
- readonly repo: Repository<ListOfValues>,
29
- readonly moduleRef: ModuleRef
37
+ // @InjectRepository(ListOfValues, 'default')
38
+ // readonly repo: Repository<ListOfValues>,
39
+ readonly repo: ListOfValuesRepository,
40
+ readonly moduleRef: ModuleRef,
41
+ private readonly moduleMetadataHelperService: ModuleMetadataHelperService,
42
+ readonly listOfValuesMapper: ListOfValuesMapper,
30
43
 
31
44
  ) {
32
45
  super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, entityManager, repo, 'listOfValues', 'solid-core', moduleRef);
@@ -64,4 +77,175 @@ export class ListOfValuesService extends CRUDService<ListOfValues> {
64
77
  }
65
78
  }
66
79
 
80
+
81
+ async saveListofValuesToConfig(entity: ListOfValues) {
82
+ if (!entity) {
83
+ this.logger.debug('No entity found in the ListofValuesSubscriber saveListofvalueToConfig method');
84
+ return;
85
+ }
86
+
87
+ // Validate list of value details
88
+ const listofvalue = entity as ListOfValues;
89
+ const moduleMetadata = entity.module;
90
+ if (!moduleMetadata) {
91
+ throw new Error(`Module metadata not found for listofvalue id ${entity.id}`);
92
+ }
93
+
94
+ // Get config file details
95
+ const { filePath, metaData } = await this.getConfigFileDetails(moduleMetadata.name); // sting expected module name
96
+ if (!filePath || !metaData) {
97
+ throw new Error(`Configuration details not found for module: ${moduleMetadata.name}`);
98
+ }
99
+
100
+ // Write the listofvalue to the config file
101
+ await this.writeToConfig(metaData, listofvalue, filePath);
102
+ }
103
+
104
+ async updateListofValuesToConfig(oldentity: ListOfValues, entity: ListOfValues) {
105
+ if (!entity) {
106
+ this.logger.debug('No entity found in the ListofValuesSubscriber saveListofvalueToConfig method');
107
+ return;
108
+ }
109
+
110
+ // Validate list of value details
111
+ const oldlistofvalue = oldentity as ListOfValues;
112
+ const listofvalue = entity as ListOfValues;
113
+ const moduleMetadata = entity.module;
114
+ if (!moduleMetadata) {
115
+ throw new Error(`Module metadata not found for listofvalue id ${entity.id}`);
116
+ }
117
+
118
+ // Get config file details
119
+ const { filePath, metaData } = await this.getConfigFileDetails(moduleMetadata.name); // sting expected module name
120
+ if (!filePath || !metaData) {
121
+ throw new Error(`Configuration details not found for module: ${moduleMetadata.name}`);
122
+ }
123
+
124
+ // Write the listofvalue to the config file
125
+ await this.updateToConfig(metaData, oldlistofvalue, listofvalue, filePath);
126
+ }
127
+
128
+ async deleteListOfValuesFromConfig(entity: ListOfValues) {
129
+ if (!entity) {
130
+ this.logger.debug('No entity found in the ListofValuesSubscriber saveListofvalueToConfig method');
131
+ return;
132
+ }
133
+
134
+ // Validate list of value details
135
+ const listofvalue = entity as ListOfValues;
136
+ const moduleMetadata = entity.module;
137
+ if (!moduleMetadata) {
138
+ throw new Error(`Module metadata not found for listofvalue id ${entity.id}`);
139
+ }
140
+
141
+ // Get config file details
142
+ const { filePath, metaData } = await this.getConfigFileDetails(moduleMetadata.name); // sting expected module name
143
+ if (!filePath || !metaData) {
144
+ throw new Error(`Configuration details not found for module: ${moduleMetadata.name}`);
145
+ }
146
+
147
+ // delete the listofvalue to the config file
148
+ await this.deleteFromConfig(metaData, listofvalue, filePath);
149
+ }
150
+
151
+ private async getConfigFileDetails(moduleName: string): Promise<{ filePath: string; metaData: any }> {
152
+ const filePath = await this.moduleMetadataHelperService.getModuleMetadataFilePath(moduleName);
153
+ try {
154
+ await fs.access(filePath);
155
+ } catch (error) {
156
+ throw new Error(`Configuration file not found for module: ${moduleName}`);
157
+ }
158
+ const metaData = await this.moduleMetadataHelperService.getModuleMetadataConfiguration(filePath);
159
+ return { filePath, metaData };
160
+ }
161
+
162
+ private async writeToConfig(metaData: any, listofvalues: ListOfValues, filePath: string) {
163
+ const dto = await this.listOfValuesMapper.toDto(listofvalues);
164
+
165
+ if (!Array.isArray(metaData.listOfValues)) {
166
+ metaData.listOfValues = [];
167
+ }
168
+
169
+ // Match by type + value + module
170
+ const existingIndex = metaData.listOfValues.findIndex(
171
+ (item: { type: string; value: string; module: number }) =>
172
+ item.type === dto.type &&
173
+ item.value === dto.value &&
174
+ item.module === dto.module
175
+ );
176
+
177
+ if (existingIndex !== -1) {
178
+ // Replace existing entry
179
+ metaData.listOfValues[existingIndex] = dto;
180
+ } else {
181
+ // Insert new entry
182
+ // metaData.listOfValues.unshift(dto);
183
+
184
+ if (metaData.listOfValues.length === 0) {
185
+ // Case 1: Empty array → add first item
186
+ metaData.listOfValues.push(dto);
187
+ } else {
188
+ // Case 2: Insert new item right after index 0
189
+ metaData.listOfValues.unshift(dto);
190
+ }
191
+
192
+ }
193
+
194
+ const updatedContent = JSON.stringify(metaData, null, 2);
195
+ await fs.writeFile(filePath, updatedContent);
196
+ }
197
+
198
+ private async updateToConfig(metaData: any, oldlistofvalues: ListOfValues, listofvalues: ListOfValues, filePath: string) {
199
+ const newvalue = await this.listOfValuesMapper.toDto(listofvalues);
200
+ const oldvalue = await this.listOfValuesMapper.toDto(oldlistofvalues);
201
+
202
+ if (!Array.isArray(metaData.listOfValues)) {
203
+ metaData.listOfValues = [];
204
+ }
205
+
206
+ const searchType = oldvalue.type || newvalue.type;
207
+ const searchValue = oldvalue.value || newvalue.value;
208
+ const searchModule = oldvalue.module || newvalue.module;
209
+
210
+ const existingIndex = metaData.listOfValues.findIndex(
211
+ (item: { type: string; value: string; module: number }) =>
212
+ item.type === searchType && item.value === searchValue && item.module === searchModule
213
+ );
214
+ if (existingIndex !== -1) {
215
+ // Replace existing match
216
+ metaData.listOfValues[existingIndex] = newvalue;
217
+ }
218
+
219
+ const updatedContent = JSON.stringify(metaData, null, 2);
220
+ await fs.writeFile(filePath, updatedContent);
221
+ }
222
+
223
+ private async deleteFromConfig(metaData: any, listofvalues: ListOfValues, filePath: string) {
224
+ const dto = await this.listOfValuesMapper.toDto(listofvalues);
225
+
226
+ if (!Array.isArray(metaData.listOfValues)) {
227
+ metaData.listOfValues = [];
228
+ }
229
+
230
+ // Match by type + value + module
231
+ const existingIndex = metaData.listOfValues.findIndex(
232
+ (item: { type: string; value: string; module: number }) =>
233
+ item.type === dto.type &&
234
+ item.value === dto.value &&
235
+ item.module === dto.module
236
+ );
237
+
238
+ if (existingIndex !== -1) {
239
+ // Remove the item
240
+ metaData.listOfValues.splice(existingIndex, 1);
241
+ this.logger.debug(`Deleted LOV ${dto.type}:${dto.value} (module ${dto.module}) from config`);
242
+ } else {
243
+ this.logger.warn(
244
+ `LOV ${dto.type}:${dto.value} (module ${dto.module}) not found in config during delete`
245
+ );
246
+ }
247
+ const updatedContent = JSON.stringify(metaData, null, 2);
248
+ await fs.writeFile(filePath, updatedContent);
249
+
250
+ }
67
251
  }
@@ -1,18 +1,18 @@
1
1
  import { Injectable, Logger, OnApplicationBootstrap } 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 { Locale } from 'src/entities/locale.entity';
8
+ import { SolidRegistry } from 'src/helpers/solid-registry';
9
+ import { LocaleRepository } from 'src/repository/locale.repository';
10
+ import { CrudHelperService } from 'src/services/crud-helper.service';
6
11
  import { CRUDService } from 'src/services/crud.service';
12
+ import { FileService } from 'src/services/file.service';
7
13
  import { ModelMetadataService } from 'src/services/model-metadata.service';
8
14
  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
- import { ModelMetadata } from 'src/entities/model-metadata.entity';
13
15
  import { RequestContextService } from './request-context.service';
14
- import { Locale } from 'src/entities/locale.entity';
15
- import { SolidRegistry } from 'src/helpers/solid-registry';
16
16
  @Injectable()
17
17
  export class LocaleService extends CRUDService<Locale> implements OnApplicationBootstrap{
18
18
  constructor(
@@ -24,12 +24,14 @@ export class LocaleService extends CRUDService<Locale> implements OnApplicationB
24
24
  readonly crudHelperService: CrudHelperService,
25
25
  @InjectEntityManager()
26
26
  readonly entityManager: EntityManager,
27
- @InjectRepository(Locale, 'default')
28
- readonly repo: Repository<Locale>,
29
- @InjectRepository(Locale, 'default')
27
+ // @InjectRepository(Locale, 'default')
28
+ // readonly repo: Repository<Locale>,
29
+ readonly repo: LocaleRepository,
30
+ // @InjectRepository(Locale, 'default')
30
31
  readonly moduleRef: ModuleRef,
31
- @InjectRepository(ModelMetadata)
32
- private readonly modelMetadataRepo: Repository<ModelMetadata>,
32
+ // @InjectRepository(ModelMetadata)
33
+ // private readonly modelMetadataRepo: Repository<ModelMetadata>,
34
+ // private readonly modelMetadataRepo: ModelMetadataRepository,
33
35
  readonly requestContextService: RequestContextService,
34
36
  readonly solidRegistry: SolidRegistry,
35
37
  ) {
@@ -114,7 +114,13 @@ export class SMTPEMailService implements IMail {
114
114
  }
115
115
 
116
116
  async sendEmailSynchronously(message: QueueMessage<any>) {
117
- const { from, to, subject, body, attachments = [], cc, bcc } = message.payload;
117
+ let from;
118
+ const { to, subject, body, attachments = [], cc, bcc } = message.payload;
119
+
120
+ const envFrom = this.commonConfiguration.smtpMail.from;
121
+ if (envFrom) {
122
+ from = envFrom;
123
+ }
118
124
 
119
125
  // if any of the required fields are missing, throw an error.
120
126
  if (!from || !to || !subject || !body) {
@@ -1,17 +1,18 @@
1
1
  import { Injectable, NotFoundException } from "@nestjs/common";
2
- import { InjectRepository } from "@nestjs/typeorm";
3
- import { Repository, SelectQueryBuilder } from "typeorm";
4
- import { MediaStorageProviderMetadata } from "../entities/media-storage-provider-metadata.entity";
2
+ import { ERROR_MESSAGES } from "src/constants/error-messages";
3
+ import { MediaStorageProviderMetadataRepository } from "src/repository/media-storage-provider-metadata.repository";
4
+ import { SelectQueryBuilder } from "typeorm";
5
5
  import { BasicFilterDto } from "../dtos/basic-filters.dto";
6
- import { CrudHelperService } from "./crud-helper.service";
7
6
  import { UpdateMediaStorageProviderMetadataDto } from "../dtos/update-media-storage-provider.dto";
8
- import { ERROR_MESSAGES } from "src/constants/error-messages";
7
+ import { MediaStorageProviderMetadata } from "../entities/media-storage-provider-metadata.entity";
8
+ import { CrudHelperService } from "./crud-helper.service";
9
9
 
10
10
  @Injectable()
11
11
  export class MediaStorageProviderMetadataService {
12
12
  constructor(
13
- @InjectRepository(MediaStorageProviderMetadata)
14
- private readonly mediaStorageProviderRepo: Repository<MediaStorageProviderMetadata>,
13
+ // @InjectRepository(MediaStorageProviderMetadata)
14
+ // private readonly mediaStorageProviderRepo: Repository<MediaStorageProviderMetadata>,
15
+ private readonly mediaStorageProviderRepo: MediaStorageProviderMetadataRepository,
15
16
  private readonly crudHelperService: CrudHelperService
16
17
  ) { }
17
18
 
@@ -21,8 +22,8 @@ export class MediaStorageProviderMetadataService {
21
22
  let { limit, offset, populateMedia } = basicFilterDto;
22
23
 
23
24
  // Create above query on pincode table using query builder
24
- var qb: SelectQueryBuilder<MediaStorageProviderMetadata> = this.mediaStorageProviderRepo.createQueryBuilder(alias)
25
- qb = await this.crudHelperService.buildFilterQuery(qb, basicFilterDto, alias);
25
+ var qb: SelectQueryBuilder<MediaStorageProviderMetadata> = await this.mediaStorageProviderRepo.createSecurityRuleAwareQueryBuilder(alias)
26
+ qb = this.crudHelperService.buildFilterQuery(qb, basicFilterDto, alias);
26
27
 
27
28
  // Get the records and the count
28
29
  const [entities, count] = await qb.getManyAndCount();
@@ -19,6 +19,10 @@ import { ModelMetadata } from 'src/entities/model-metadata.entity';
19
19
  import { getMediaStorageProvider } from "./mediaStorageProviders";
20
20
  import { BasicFilterDto } from 'src/dtos/basic-filters.dto';
21
21
  import { ERROR_MESSAGES } from 'src/constants/error-messages';
22
+ import { MediaRepository } from 'src/repository/media.repository';
23
+ import { ModelMetadataRepository } from 'src/repository/model-metadata.repository';
24
+ import { MediaStorageProviderMetadataRepository } from 'src/repository/media-storage-provider-metadata.repository';
25
+ import { FieldMetadataRepository } from 'src/repository/field-metadata.repository';
22
26
 
23
27
 
24
28
  @Injectable()
@@ -32,14 +36,18 @@ export class MediaService extends CRUDService<Media> {
32
36
  readonly crudHelperService: CrudHelperService,
33
37
  @InjectEntityManager()
34
38
  readonly entityManager: EntityManager,
35
- @InjectRepository(Media, 'default')
36
- readonly repo: Repository<Media>,
37
- @InjectRepository(ModelMetadata)
38
- private readonly modelMetadataRepo: Repository<ModelMetadata>,
39
- @InjectRepository(MediaStorageProviderMetadata)
40
- private readonly mediaStorageProviderMetadataRepo: Repository<MediaStorageProviderMetadata>,
41
- @InjectRepository(FieldMetadata)
42
- private readonly fieldMetadataRepo: Repository<FieldMetadata>,
39
+ // @InjectRepository(Media, 'default')
40
+ // readonly repo: Repository<Media>,
41
+ readonly repo: MediaRepository,
42
+ // @InjectRepository(ModelMetadata)
43
+ // private readonly modelMetadataRepo: Repository<ModelMetadata>,
44
+ // @InjectRepository(MediaStorageProviderMetadata)
45
+ // private readonly mediaStorageProviderMetadataRepo: Repository<MediaStorageProviderMetadata>,
46
+ // @InjectRepository(FieldMetadata)
47
+ // private readonly fieldMetadataRepo: Repository<FieldMetadata>,
48
+ private readonly modelMetadataRepo: ModelMetadataRepository,
49
+ private readonly mediaStorageProviderMetadataRepo: MediaStorageProviderMetadataRepository,
50
+ private readonly fieldMetadataRepo: FieldMetadataRepository,
43
51
  readonly moduleRef: ModuleRef,
44
52
  ) {
45
53
  super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, entityManager, repo, 'media', 'solid-core', moduleRef);
@@ -15,6 +15,7 @@ import { UpdateMenuItemMetadataDto } from '../dtos/update-menu-item-metadata.dto
15
15
  import { ActiveUserData } from 'src/interfaces/active-user-data.interface';
16
16
  import { ModuleMetadata } from '../entities/module-metadata.entity';
17
17
  import { dasherize } from '@angular-devkit/core/src/utils/strings';
18
+ import { MenuItemMetadataRepository } from 'src/repository/menu-item-metadata.repository';
18
19
 
19
20
  @Injectable()
20
21
  export class MenuItemMetadataService extends CRUDService<MenuItemMetadata> {
@@ -27,8 +28,9 @@ export class MenuItemMetadataService extends CRUDService<MenuItemMetadata> {
27
28
  readonly crudHelperService: CrudHelperService,
28
29
  @InjectEntityManager()
29
30
  readonly entityManager: EntityManager,
30
- @InjectRepository(MenuItemMetadata, 'default')
31
- readonly repo: Repository<MenuItemMetadata>,
31
+ // @InjectRepository(MenuItemMetadata, 'default')
32
+ // readonly repo: Repository<MenuItemMetadata>,
33
+ readonly repo: MenuItemMetadataRepository,
32
34
  readonly moduleRef: ModuleRef
33
35
 
34
36
  ) {
@@ -83,8 +85,9 @@ export class MenuItemMetadataService extends CRUDService<MenuItemMetadata> {
83
85
  // },
84
86
  // relations: ['module', 'parentMenuItem', 'action']
85
87
  // });
86
- const menuItems = await this.repo
87
- .createQueryBuilder('menuItem')
88
+ const qb = await this.repo.createSecurityRuleAwareQueryBuilder('menuItem')
89
+
90
+ const menuItems = await qb
88
91
  .leftJoinAndSelect('menuItem.module', 'module')
89
92
  .leftJoinAndSelect('menuItem.parentMenuItem', 'parentMenuItem')
90
93
  .leftJoinAndSelect('menuItem.action', 'action')