@solidstarters/solid-core 1.2.203 → 1.2.206

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 (505) hide show
  1. package/dist/commands/info.command.d.ts +19 -0
  2. package/dist/commands/info.command.d.ts.map +1 -0
  3. package/dist/commands/info.command.js +98 -0
  4. package/dist/commands/info.command.js.map +1 -0
  5. package/dist/commands/mcp.command.d.ts.map +1 -1
  6. package/dist/commands/mcp.command.js +2 -10
  7. package/dist/commands/mcp.command.js.map +1 -1
  8. package/dist/commands/seed.command.d.ts.map +1 -1
  9. package/dist/commands/seed.command.js +2 -11
  10. package/dist/commands/seed.command.js.map +1 -1
  11. package/dist/controllers/email-template.controller.d.ts +3 -1
  12. package/dist/controllers/email-template.controller.d.ts.map +1 -1
  13. package/dist/controllers/email-template.controller.js +7 -4
  14. package/dist/controllers/email-template.controller.js.map +1 -1
  15. package/dist/controllers/google-authentication.controller.d.ts +4 -5
  16. package/dist/controllers/google-authentication.controller.d.ts.map +1 -1
  17. package/dist/controllers/google-authentication.controller.js +21 -14
  18. package/dist/controllers/google-authentication.controller.js.map +1 -1
  19. package/dist/controllers/otp-authentication.controller.d.ts +10 -0
  20. package/dist/controllers/otp-authentication.controller.d.ts.map +1 -1
  21. package/dist/controllers/otp-authentication.controller.js +1 -1
  22. package/dist/controllers/setting.controller.d.ts +2 -34
  23. package/dist/controllers/setting.controller.d.ts.map +1 -1
  24. package/dist/controllers/setting.controller.js +4 -130
  25. package/dist/controllers/setting.controller.js.map +1 -1
  26. package/dist/decorators/settings-provider.decorator.d.ts +3 -0
  27. package/dist/decorators/settings-provider.decorator.d.ts.map +1 -0
  28. package/dist/decorators/settings-provider.decorator.js +8 -0
  29. package/dist/decorators/settings-provider.decorator.js.map +1 -0
  30. package/dist/decorators/solid-password.decorator.d.ts.map +1 -1
  31. package/dist/decorators/solid-password.decorator.js +3 -3
  32. package/dist/decorators/solid-password.decorator.js.map +1 -1
  33. package/dist/dtos/create-role-metadata.dto.d.ts +3 -4
  34. package/dist/dtos/create-role-metadata.dto.d.ts.map +1 -1
  35. package/dist/dtos/create-role-metadata.dto.js +4 -51
  36. package/dist/dtos/create-role-metadata.dto.js.map +1 -1
  37. package/dist/dtos/create-setting.dto.d.ts +3 -0
  38. package/dist/dtos/create-setting.dto.d.ts.map +1 -1
  39. package/dist/dtos/create-setting.dto.js +20 -2
  40. package/dist/dtos/create-setting.dto.js.map +1 -1
  41. package/dist/dtos/update-setting.dto.d.ts +3 -0
  42. package/dist/dtos/update-setting.dto.d.ts.map +1 -1
  43. package/dist/dtos/update-setting.dto.js +19 -1
  44. package/dist/dtos/update-setting.dto.js.map +1 -1
  45. package/dist/entities/setting.entity.d.ts +3 -0
  46. package/dist/entities/setting.entity.d.ts.map +1 -1
  47. package/dist/entities/setting.entity.js +13 -1
  48. package/dist/entities/setting.entity.js.map +1 -1
  49. package/dist/factories/mail.factory.d.ts +3 -4
  50. package/dist/factories/mail.factory.d.ts.map +1 -1
  51. package/dist/factories/mail.factory.js +6 -12
  52. package/dist/factories/mail.factory.js.map +1 -1
  53. package/dist/factories/sms.factory.d.ts +3 -4
  54. package/dist/factories/sms.factory.d.ts.map +1 -1
  55. package/dist/factories/sms.factory.js +6 -12
  56. package/dist/factories/sms.factory.js.map +1 -1
  57. package/dist/factories/whatsapp.factory.d.ts +3 -4
  58. package/dist/factories/whatsapp.factory.d.ts.map +1 -1
  59. package/dist/factories/whatsapp.factory.js +6 -12
  60. package/dist/factories/whatsapp.factory.js.map +1 -1
  61. package/dist/guards/access-token.guard.d.ts +3 -4
  62. package/dist/guards/access-token.guard.d.ts.map +1 -1
  63. package/dist/guards/access-token.guard.js +14 -9
  64. package/dist/guards/access-token.guard.js.map +1 -1
  65. package/dist/helpers/cors.helper.d.ts +1 -2
  66. package/dist/helpers/cors.helper.d.ts.map +1 -1
  67. package/dist/helpers/cors.helper.js +2 -2
  68. package/dist/helpers/cors.helper.js.map +1 -1
  69. package/dist/helpers/error-mapper.service.d.ts.map +1 -1
  70. package/dist/helpers/error-mapper.service.js.map +1 -1
  71. package/dist/helpers/google-oauth.helper.d.ts +7 -3
  72. package/dist/helpers/google-oauth.helper.d.ts.map +1 -1
  73. package/dist/helpers/google-oauth.helper.js +1 -2
  74. package/dist/helpers/google-oauth.helper.js.map +1 -1
  75. package/dist/helpers/module.helper.js +0 -2
  76. package/dist/helpers/module.helper.js.map +1 -1
  77. package/dist/helpers/solid-registry.d.ts +8 -3
  78. package/dist/helpers/solid-registry.d.ts.map +1 -1
  79. package/dist/helpers/solid-registry.js +32 -9
  80. package/dist/helpers/solid-registry.js.map +1 -1
  81. package/dist/index.d.ts +2 -4
  82. package/dist/index.d.ts.map +1 -1
  83. package/dist/index.js +3 -6
  84. package/dist/index.js.map +1 -1
  85. package/dist/interfaces.d.ts +21 -0
  86. package/dist/interfaces.d.ts.map +1 -1
  87. package/dist/interfaces.js +8 -1
  88. package/dist/interfaces.js.map +1 -1
  89. package/dist/passport-strategies/google-oauth.strategy.d.ts +1 -4
  90. package/dist/passport-strategies/google-oauth.strategy.d.ts.map +1 -1
  91. package/dist/passport-strategies/google-oauth.strategy.js +12 -12
  92. package/dist/passport-strategies/google-oauth.strategy.js.map +1 -1
  93. package/dist/seeders/email-template-seeder.service.d.ts +3 -4
  94. package/dist/seeders/email-template-seeder.service.d.ts.map +1 -1
  95. package/dist/seeders/email-template-seeder.service.js +7 -12
  96. package/dist/seeders/email-template-seeder.service.js.map +1 -1
  97. package/dist/seeders/module-metadata-seeder.service.d.ts +1 -5
  98. package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
  99. package/dist/seeders/module-metadata-seeder.service.js +23 -23
  100. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  101. package/dist/seeders/seed-data/solid-core-metadata.json +98 -4
  102. package/dist/seeders/sms-template-seeder.service.d.ts +3 -4
  103. package/dist/seeders/sms-template-seeder.service.d.ts.map +1 -1
  104. package/dist/seeders/sms-template-seeder.service.js +7 -12
  105. package/dist/seeders/sms-template-seeder.service.js.map +1 -1
  106. package/dist/services/action-metadata.service.d.ts +2 -13
  107. package/dist/services/action-metadata.service.d.ts.map +1 -1
  108. package/dist/services/action-metadata.service.js +4 -22
  109. package/dist/services/action-metadata.service.js.map +1 -1
  110. package/dist/services/ai-interaction.service.d.ts +2 -13
  111. package/dist/services/ai-interaction.service.d.ts.map +1 -1
  112. package/dist/services/ai-interaction.service.js +6 -24
  113. package/dist/services/ai-interaction.service.js.map +1 -1
  114. package/dist/services/authentication.service.d.ts +14 -10
  115. package/dist/services/authentication.service.d.ts.map +1 -1
  116. package/dist/services/authentication.service.js +159 -114
  117. package/dist/services/authentication.service.js.map +1 -1
  118. package/dist/services/bcrypt.service.d.ts +3 -5
  119. package/dist/services/bcrypt.service.d.ts.map +1 -1
  120. package/dist/services/bcrypt.service.js +10 -14
  121. package/dist/services/bcrypt.service.js.map +1 -1
  122. package/dist/services/chatter-message-details.service.d.ts +2 -13
  123. package/dist/services/chatter-message-details.service.d.ts.map +1 -1
  124. package/dist/services/chatter-message-details.service.js +4 -22
  125. package/dist/services/chatter-message-details.service.js.map +1 -1
  126. package/dist/services/chatter-message.service.d.ts +2 -13
  127. package/dist/services/chatter-message.service.d.ts.map +1 -1
  128. package/dist/services/chatter-message.service.js +5 -23
  129. package/dist/services/chatter-message.service.js.map +1 -1
  130. package/dist/services/crud.service.d.ts +12 -12
  131. package/dist/services/crud.service.d.ts.map +1 -1
  132. package/dist/services/crud.service.js +25 -17
  133. package/dist/services/crud.service.js.map +1 -1
  134. package/dist/services/dashboard-question-sql-dataset-config.service.d.ts +2 -13
  135. package/dist/services/dashboard-question-sql-dataset-config.service.d.ts.map +1 -1
  136. package/dist/services/dashboard-question-sql-dataset-config.service.js +4 -21
  137. package/dist/services/dashboard-question-sql-dataset-config.service.js.map +1 -1
  138. package/dist/services/dashboard-question.service.d.ts +2 -13
  139. package/dist/services/dashboard-question.service.d.ts.map +1 -1
  140. package/dist/services/dashboard-question.service.js +4 -21
  141. package/dist/services/dashboard-question.service.js.map +1 -1
  142. package/dist/services/dashboard-variable.service.d.ts +2 -13
  143. package/dist/services/dashboard-variable.service.d.ts.map +1 -1
  144. package/dist/services/dashboard-variable.service.js +4 -21
  145. package/dist/services/dashboard-variable.service.js.map +1 -1
  146. package/dist/services/dashboard.service.d.ts +2 -13
  147. package/dist/services/dashboard.service.d.ts.map +1 -1
  148. package/dist/services/dashboard.service.js +4 -21
  149. package/dist/services/dashboard.service.js.map +1 -1
  150. package/dist/services/email-template.service.d.ts +2 -13
  151. package/dist/services/email-template.service.d.ts.map +1 -1
  152. package/dist/services/email-template.service.js +4 -22
  153. package/dist/services/email-template.service.js.map +1 -1
  154. package/dist/services/export-template.service.d.ts +2 -13
  155. package/dist/services/export-template.service.d.ts.map +1 -1
  156. package/dist/services/export-template.service.js +4 -21
  157. package/dist/services/export-template.service.js.map +1 -1
  158. package/dist/services/export-transaction.service.d.ts +2 -13
  159. package/dist/services/export-transaction.service.d.ts.map +1 -1
  160. package/dist/services/export-transaction.service.js +4 -21
  161. package/dist/services/export-transaction.service.js.map +1 -1
  162. package/dist/services/field-metadata.service.d.ts +11 -0
  163. package/dist/services/field-metadata.service.d.ts.map +1 -1
  164. package/dist/services/field-metadata.service.js +3 -0
  165. package/dist/services/field-metadata.service.js.map +1 -1
  166. package/dist/services/file/file-service.interface.d.ts +22 -0
  167. package/dist/services/file/file-service.interface.d.ts.map +1 -0
  168. package/dist/services/file/file-service.interface.js +5 -0
  169. package/dist/services/file/file-service.interface.js.map +1 -0
  170. package/dist/services/file.service.d.ts +1 -4
  171. package/dist/services/file.service.d.ts.map +1 -1
  172. package/dist/services/file.service.js +11 -12
  173. package/dist/services/file.service.js.map +1 -1
  174. package/dist/services/genai/r2r-helper.service.d.ts +3 -1
  175. package/dist/services/genai/r2r-helper.service.d.ts.map +1 -1
  176. package/dist/services/genai/r2r-helper.service.js +11 -7
  177. package/dist/services/genai/r2r-helper.service.js.map +1 -1
  178. package/dist/services/import-transaction-error-log.service.d.ts +2 -13
  179. package/dist/services/import-transaction-error-log.service.d.ts.map +1 -1
  180. package/dist/services/import-transaction-error-log.service.js +4 -22
  181. package/dist/services/import-transaction-error-log.service.js.map +1 -1
  182. package/dist/services/import-transaction.service.d.ts +2 -13
  183. package/dist/services/import-transaction.service.d.ts.map +1 -1
  184. package/dist/services/import-transaction.service.js +4 -22
  185. package/dist/services/import-transaction.service.js.map +1 -1
  186. package/dist/services/list-of-values.service.d.ts +2 -13
  187. package/dist/services/list-of-values.service.d.ts.map +1 -1
  188. package/dist/services/list-of-values.service.js +4 -22
  189. package/dist/services/list-of-values.service.js.map +1 -1
  190. package/dist/services/locale.service.d.ts +2 -13
  191. package/dist/services/locale.service.d.ts.map +1 -1
  192. package/dist/services/locale.service.js +4 -22
  193. package/dist/services/locale.service.js.map +1 -1
  194. package/dist/services/mail/elastic-email.service.d.ts +4 -5
  195. package/dist/services/mail/elastic-email.service.d.ts.map +1 -1
  196. package/dist/services/mail/elastic-email.service.js +10 -13
  197. package/dist/services/mail/elastic-email.service.js.map +1 -1
  198. package/dist/services/mail/smtp-email.service.d.ts +3 -4
  199. package/dist/services/mail/smtp-email.service.d.ts.map +1 -1
  200. package/dist/services/mail/smtp-email.service.js +19 -17
  201. package/dist/services/mail/smtp-email.service.js.map +1 -1
  202. package/dist/services/media-storage-provider-metadata.service.d.ts +11 -0
  203. package/dist/services/media-storage-provider-metadata.service.d.ts.map +1 -1
  204. package/dist/services/media-storage-provider-metadata.service.js +3 -0
  205. package/dist/services/media-storage-provider-metadata.service.js.map +1 -1
  206. package/dist/services/media.service.d.ts +2 -9
  207. package/dist/services/media.service.d.ts.map +1 -1
  208. package/dist/services/media.service.js +17 -28
  209. package/dist/services/media.service.js.map +1 -1
  210. package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts +2 -4
  211. package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts.map +1 -1
  212. package/dist/services/mediaStorageProviders/file-s3-storage-provider.js +2 -11
  213. package/dist/services/mediaStorageProviders/file-s3-storage-provider.js.map +1 -1
  214. package/dist/services/mediaStorageProviders/file-storage-provider.d.ts +3 -1
  215. package/dist/services/mediaStorageProviders/file-storage-provider.d.ts.map +1 -1
  216. package/dist/services/mediaStorageProviders/file-storage-provider.js +16 -12
  217. package/dist/services/mediaStorageProviders/file-storage-provider.js.map +1 -1
  218. package/dist/services/mediaStorageProviders/index.d.ts +1 -1
  219. package/dist/services/mediaStorageProviders/index.d.ts.map +1 -1
  220. package/dist/services/mediaStorageProviders/index.js +1 -1
  221. package/dist/services/mediaStorageProviders/index.js.map +1 -1
  222. package/dist/services/menu-item-metadata.service.d.ts +2 -13
  223. package/dist/services/menu-item-metadata.service.d.ts.map +1 -1
  224. package/dist/services/menu-item-metadata.service.js +4 -22
  225. package/dist/services/menu-item-metadata.service.js.map +1 -1
  226. package/dist/services/model-metadata.service.d.ts +11 -0
  227. package/dist/services/model-metadata.service.d.ts.map +1 -1
  228. package/dist/services/model-metadata.service.js +3 -0
  229. package/dist/services/model-metadata.service.js.map +1 -1
  230. package/dist/services/model-sequence.service.d.ts +2 -13
  231. package/dist/services/model-sequence.service.d.ts.map +1 -1
  232. package/dist/services/model-sequence.service.js +4 -21
  233. package/dist/services/model-sequence.service.js.map +1 -1
  234. package/dist/services/module-metadata.service.d.ts +14 -1
  235. package/dist/services/module-metadata.service.d.ts.map +1 -1
  236. package/dist/services/module-metadata.service.js +13 -6
  237. package/dist/services/module-metadata.service.js.map +1 -1
  238. package/dist/services/mq-message-queue.service.d.ts +2 -13
  239. package/dist/services/mq-message-queue.service.d.ts.map +1 -1
  240. package/dist/services/mq-message-queue.service.js +4 -22
  241. package/dist/services/mq-message-queue.service.js.map +1 -1
  242. package/dist/services/mq-message.service.d.ts +2 -13
  243. package/dist/services/mq-message.service.d.ts.map +1 -1
  244. package/dist/services/mq-message.service.js +4 -22
  245. package/dist/services/mq-message.service.js.map +1 -1
  246. package/dist/services/permission-metadata.service.d.ts +2 -13
  247. package/dist/services/permission-metadata.service.d.ts.map +1 -1
  248. package/dist/services/permission-metadata.service.js +4 -22
  249. package/dist/services/permission-metadata.service.js.map +1 -1
  250. package/dist/services/role-metadata.service.d.ts +2 -13
  251. package/dist/services/role-metadata.service.d.ts.map +1 -1
  252. package/dist/services/role-metadata.service.js +4 -23
  253. package/dist/services/role-metadata.service.js.map +1 -1
  254. package/dist/services/saved-filters.service.d.ts +2 -13
  255. package/dist/services/saved-filters.service.d.ts.map +1 -1
  256. package/dist/services/saved-filters.service.js +4 -21
  257. package/dist/services/saved-filters.service.js.map +1 -1
  258. package/dist/services/scheduled-job.service.d.ts +2 -13
  259. package/dist/services/scheduled-job.service.d.ts.map +1 -1
  260. package/dist/services/scheduled-job.service.js +4 -22
  261. package/dist/services/scheduled-job.service.js.map +1 -1
  262. package/dist/services/security-rule.service.d.ts +2 -13
  263. package/dist/services/security-rule.service.d.ts.map +1 -1
  264. package/dist/services/security-rule.service.js +5 -23
  265. package/dist/services/security-rule.service.js.map +1 -1
  266. package/dist/services/selection-providers/list-of-roles-selectionproviders.service.d.ts +15 -0
  267. package/dist/services/selection-providers/list-of-roles-selectionproviders.service.d.ts.map +1 -0
  268. package/dist/services/selection-providers/list-of-roles-selectionproviders.service.js +59 -0
  269. package/dist/services/selection-providers/list-of-roles-selectionproviders.service.js.map +1 -0
  270. package/dist/services/setting.service.d.ts +23 -30
  271. package/dist/services/setting.service.d.ts.map +1 -1
  272. package/dist/services/setting.service.js +147 -196
  273. package/dist/services/setting.service.js.map +1 -1
  274. package/dist/services/settings/default-settings-provider.service.d.ts +1058 -0
  275. package/dist/services/settings/default-settings-provider.service.d.ts.map +1 -0
  276. package/dist/services/settings/default-settings-provider.service.js +139 -0
  277. package/dist/services/settings/default-settings-provider.service.js.map +1 -0
  278. package/dist/services/short-url/tiny-url.service.d.ts +3 -4
  279. package/dist/services/short-url/tiny-url.service.d.ts.map +1 -1
  280. package/dist/services/short-url/tiny-url.service.js +10 -13
  281. package/dist/services/short-url/tiny-url.service.js.map +1 -1
  282. package/dist/services/sms/Msg91BaseSMSService.d.ts +3 -4
  283. package/dist/services/sms/Msg91BaseSMSService.d.ts.map +1 -1
  284. package/dist/services/sms/Msg91BaseSMSService.js +3 -3
  285. package/dist/services/sms/Msg91BaseSMSService.js.map +1 -1
  286. package/dist/services/sms/Msg91OTPService.d.ts +2 -3
  287. package/dist/services/sms/Msg91OTPService.d.ts.map +1 -1
  288. package/dist/services/sms/Msg91OTPService.js +7 -13
  289. package/dist/services/sms/Msg91OTPService.js.map +1 -1
  290. package/dist/services/sms/Msg91SMSService.d.ts +2 -3
  291. package/dist/services/sms/Msg91SMSService.d.ts.map +1 -1
  292. package/dist/services/sms/Msg91SMSService.js +7 -13
  293. package/dist/services/sms/Msg91SMSService.js.map +1 -1
  294. package/dist/services/sms/TwilioSMSService.d.ts +3 -4
  295. package/dist/services/sms/TwilioSMSService.d.ts.map +1 -1
  296. package/dist/services/sms/TwilioSMSService.js +13 -16
  297. package/dist/services/sms/TwilioSMSService.js.map +1 -1
  298. package/dist/services/sms-template.service.d.ts +2 -13
  299. package/dist/services/sms-template.service.d.ts.map +1 -1
  300. package/dist/services/sms-template.service.js +4 -22
  301. package/dist/services/sms-template.service.js.map +1 -1
  302. package/dist/services/solid-introspect.service.d.ts +4 -1
  303. package/dist/services/solid-introspect.service.d.ts.map +1 -1
  304. package/dist/services/solid-introspect.service.js +33 -47
  305. package/dist/services/solid-introspect.service.js.map +1 -1
  306. package/dist/services/textract.service.d.ts +1 -4
  307. package/dist/services/textract.service.d.ts.map +1 -1
  308. package/dist/services/textract.service.js +14 -18
  309. package/dist/services/textract.service.js.map +1 -1
  310. package/dist/services/user-activity-history.service.d.ts +2 -13
  311. package/dist/services/user-activity-history.service.d.ts.map +1 -1
  312. package/dist/services/user-activity-history.service.js +4 -22
  313. package/dist/services/user-activity-history.service.js.map +1 -1
  314. package/dist/services/user-view-metadata.service.d.ts +2 -13
  315. package/dist/services/user-view-metadata.service.d.ts.map +1 -1
  316. package/dist/services/user-view-metadata.service.js +4 -22
  317. package/dist/services/user-view-metadata.service.js.map +1 -1
  318. package/dist/services/user.service.d.ts +2 -15
  319. package/dist/services/user.service.d.ts.map +1 -1
  320. package/dist/services/user.service.js +7 -28
  321. package/dist/services/user.service.js.map +1 -1
  322. package/dist/services/view-metadata.service.d.ts +2 -13
  323. package/dist/services/view-metadata.service.d.ts.map +1 -1
  324. package/dist/services/view-metadata.service.js +5 -23
  325. package/dist/services/view-metadata.service.js.map +1 -1
  326. package/dist/services/whatsapp/Msg91WhatsappService.d.ts +3 -4
  327. package/dist/services/whatsapp/Msg91WhatsappService.d.ts.map +1 -1
  328. package/dist/services/whatsapp/Msg91WhatsappService.js +12 -18
  329. package/dist/services/whatsapp/Msg91WhatsappService.js.map +1 -1
  330. package/dist/services/whatsapp/Three60WhatsappService.d.ts +1 -4
  331. package/dist/services/whatsapp/Three60WhatsappService.d.ts.map +1 -1
  332. package/dist/services/whatsapp/Three60WhatsappService.js +2 -11
  333. package/dist/services/whatsapp/Three60WhatsappService.js.map +1 -1
  334. package/dist/solid-core.module.d.ts.map +1 -1
  335. package/dist/solid-core.module.js +11 -47
  336. package/dist/solid-core.module.js.map +1 -1
  337. package/dist/transformers/typeorm/local-date-time-transformer.d.ts.map +1 -1
  338. package/dist/transformers/typeorm/local-date-time-transformer.js +4 -2
  339. package/dist/transformers/typeorm/local-date-time-transformer.js.map +1 -1
  340. package/dist/tsconfig.tsbuildinfo +1 -1
  341. package/package.json +1 -1
  342. package/src/commands/info.command.ts +101 -0
  343. package/src/commands/mcp.command.ts +3 -17
  344. package/src/commands/seed.command.ts +4 -16
  345. package/src/controllers/email-template.controller.ts +9 -4
  346. package/src/controllers/google-authentication.controller.ts +19 -12
  347. package/src/controllers/setting.controller.ts +6 -81
  348. package/src/decorators/settings-provider.decorator.ts +7 -0
  349. package/src/decorators/solid-password.decorator.ts +43 -43
  350. package/src/dtos/create-role-metadata.dto.ts +4 -81
  351. package/src/dtos/create-setting.dto.ts +14 -1
  352. package/src/dtos/update-setting.dto.ts +14 -0
  353. package/src/entities/setting.entity.ts +15 -1
  354. package/src/factories/mail.factory.ts +4 -4
  355. package/src/factories/sms.factory.ts +9 -7
  356. package/src/factories/whatsapp.factory.ts +4 -4
  357. package/src/guards/access-token.guard.ts +12 -5
  358. package/src/helpers/cors.helper.ts +3 -3
  359. package/src/helpers/error-mapper.service.ts +0 -1
  360. package/src/helpers/google-oauth.helper.ts +11 -7
  361. package/src/helpers/module.helper.ts +2 -2
  362. package/src/helpers/solid-registry.ts +45 -16
  363. package/src/index.ts +2 -4
  364. package/src/interfaces.ts +29 -0
  365. package/src/passport-strategies/google-oauth.strategy.ts +11 -8
  366. package/src/seeders/email-template-seeder.service.ts +6 -4
  367. package/src/seeders/module-metadata-seeder.service.ts +40 -28
  368. package/src/seeders/seed-data/solid-core-metadata.json +99 -5
  369. package/src/seeders/sms-template-seeder.service.ts +6 -4
  370. package/src/services/action-metadata.service.ts +4 -16
  371. package/src/services/ai-interaction.service.ts +6 -17
  372. package/src/services/authentication.service.ts +173 -111
  373. package/src/services/bcrypt.service.ts +9 -9
  374. package/src/services/chatter-message-details.service.ts +5 -17
  375. package/src/services/chatter-message.service.ts +2 -14
  376. package/src/services/crud.service.ts +36 -28
  377. package/src/services/dashboard-question-sql-dataset-config.service.ts +4 -15
  378. package/src/services/dashboard-question.service.ts +4 -17
  379. package/src/services/dashboard-variable.service.ts +4 -16
  380. package/src/services/dashboard.service.ts +2 -13
  381. package/src/services/email-template.service.ts +3 -15
  382. package/src/services/export-template.service.ts +4 -18
  383. package/src/services/export-transaction.service.ts +4 -19
  384. package/src/services/field-metadata.service.ts +5 -1
  385. package/src/services/file/file-service.interface.ts +74 -0
  386. package/src/services/file.service.ts +10 -7
  387. package/src/services/genai/r2r-helper.service.ts +10 -6
  388. package/src/services/import-transaction-error-log.service.ts +5 -17
  389. package/src/services/import-transaction.service.ts +3 -15
  390. package/src/services/list-of-values.service.ts +3 -16
  391. package/src/services/locale.service.ts +3 -15
  392. package/src/services/mail/elastic-email.service.ts +7 -7
  393. package/src/services/mail/smtp-email.service.ts +19 -11
  394. package/src/services/media-storage-provider-metadata.service.ts +4 -0
  395. package/src/services/media.service.ts +39 -22
  396. package/src/services/mediaStorageProviders/file-s3-storage-provider.ts +0 -3
  397. package/src/services/mediaStorageProviders/file-storage-provider.ts +24 -12
  398. package/src/services/mediaStorageProviders/index.ts +1 -1
  399. package/src/services/menu-item-metadata.service.ts +5 -17
  400. package/src/services/model-metadata.service.ts +4 -0
  401. package/src/services/model-sequence.service.ts +4 -15
  402. package/src/services/module-metadata.service.ts +13 -4
  403. package/src/services/mq-message-queue.service.ts +5 -17
  404. package/src/services/mq-message.service.ts +5 -17
  405. package/src/services/permission-metadata.service.ts +4 -16
  406. package/src/services/role-metadata.service.ts +3 -16
  407. package/src/services/saved-filters.service.ts +2 -13
  408. package/src/services/scheduled-job.service.ts +3 -15
  409. package/src/services/security-rule.service.ts +4 -16
  410. package/src/services/selection-providers/list-of-roles-selectionproviders.service.ts +69 -0
  411. package/src/services/setting.service.ts +223 -212
  412. package/src/services/settings/default-settings-provider.service.ts +157 -0
  413. package/src/services/short-url/tiny-url.service.ts +9 -7
  414. package/src/services/sms/Msg91BaseSMSService.ts +6 -4
  415. package/src/services/sms/Msg91OTPService.ts +7 -7
  416. package/src/services/sms/Msg91SMSService.ts +7 -6
  417. package/src/services/sms/TwilioSMSService.ts +18 -19
  418. package/src/services/sms-template.service.ts +3 -15
  419. package/src/services/solid-introspect.service.ts +45 -66
  420. package/src/services/textract.service.ts +13 -10
  421. package/src/services/user-activity-history.service.ts +5 -17
  422. package/src/services/user-view-metadata.service.ts +5 -17
  423. package/src/services/user.service.ts +7 -22
  424. package/src/services/view-metadata.service.ts +3 -15
  425. package/src/services/whatsapp/Msg91WhatsappService.ts +10 -11
  426. package/src/services/whatsapp/Three60WhatsappService.ts +0 -3
  427. package/src/solid-core.module.ts +19 -49
  428. package/src/transformers/typeorm/local-date-time-transformer.ts +10 -5
  429. package/dist/config/app-builder.config.d.ts +0 -11
  430. package/dist/config/app-builder.config.d.ts.map +0 -1
  431. package/dist/config/app-builder.config.js +0 -13
  432. package/dist/config/app-builder.config.js.map +0 -1
  433. package/dist/config/common.config.d.ts +0 -96
  434. package/dist/config/common.config.d.ts.map +0 -1
  435. package/dist/config/common.config.js +0 -51
  436. package/dist/config/common.config.js.map +0 -1
  437. package/dist/config/iam.config.d.ts +0 -56
  438. package/dist/config/iam.config.d.ts.map +0 -1
  439. package/dist/config/iam.config.js +0 -35
  440. package/dist/config/iam.config.js.map +0 -1
  441. package/dist/config/jwt.config.d.ts +0 -14
  442. package/dist/config/jwt.config.d.ts.map +0 -1
  443. package/dist/config/jwt.config.js +0 -15
  444. package/dist/config/jwt.config.js.map +0 -1
  445. package/dist/services/genai/mcp-handlers/solid-add-button-to-form-view-mcp-handler.service.d.ts +0 -16
  446. package/dist/services/genai/mcp-handlers/solid-add-button-to-form-view-mcp-handler.service.d.ts.map +0 -1
  447. package/dist/services/genai/mcp-handlers/solid-add-button-to-form-view-mcp-handler.service.js +0 -151
  448. package/dist/services/genai/mcp-handlers/solid-add-button-to-form-view-mcp-handler.service.js.map +0 -1
  449. package/dist/services/genai/mcp-handlers/solid-add-controller-handler-method-mcp-handler.service.d.ts +0 -17
  450. package/dist/services/genai/mcp-handlers/solid-add-controller-handler-method-mcp-handler.service.d.ts.map +0 -1
  451. package/dist/services/genai/mcp-handlers/solid-add-controller-handler-method-mcp-handler.service.js +0 -80
  452. package/dist/services/genai/mcp-handlers/solid-add-controller-handler-method-mcp-handler.service.js.map +0 -1
  453. package/dist/services/genai/mcp-handlers/solid-add-custom-service-method-mcp-handler.service.d.ts +0 -16
  454. package/dist/services/genai/mcp-handlers/solid-add-custom-service-method-mcp-handler.service.d.ts.map +0 -1
  455. package/dist/services/genai/mcp-handlers/solid-add-custom-service-method-mcp-handler.service.js +0 -74
  456. package/dist/services/genai/mcp-handlers/solid-add-custom-service-method-mcp-handler.service.js.map +0 -1
  457. package/dist/services/genai/mcp-handlers/solid-add-fields-to-model-mcp-handler.service.d.ts +0 -12
  458. package/dist/services/genai/mcp-handlers/solid-add-fields-to-model-mcp-handler.service.d.ts.map +0 -1
  459. package/dist/services/genai/mcp-handlers/solid-add-fields-to-model-mcp-handler.service.js +0 -47
  460. package/dist/services/genai/mcp-handlers/solid-add-fields-to-model-mcp-handler.service.js.map +0 -1
  461. package/dist/services/genai/mcp-handlers/solid-add-header-button-or-row-button-to-list-view-mcp-handler.service.d.ts +0 -16
  462. package/dist/services/genai/mcp-handlers/solid-add-header-button-or-row-button-to-list-view-mcp-handler.service.d.ts.map +0 -1
  463. package/dist/services/genai/mcp-handlers/solid-add-header-button-or-row-button-to-list-view-mcp-handler.service.js +0 -151
  464. package/dist/services/genai/mcp-handlers/solid-add-header-button-or-row-button-to-list-view-mcp-handler.service.js.map +0 -1
  465. package/dist/services/genai/mcp-handlers/solid-create-computed-provider-mcp-handler.service.d.ts +0 -16
  466. package/dist/services/genai/mcp-handlers/solid-create-computed-provider-mcp-handler.service.d.ts.map +0 -1
  467. package/dist/services/genai/mcp-handlers/solid-create-computed-provider-mcp-handler.service.js +0 -75
  468. package/dist/services/genai/mcp-handlers/solid-create-computed-provider-mcp-handler.service.js.map +0 -1
  469. package/dist/services/genai/mcp-handlers/solid-create-custom-form-view-widget-mcp-handler.service.d.ts +0 -14
  470. package/dist/services/genai/mcp-handlers/solid-create-custom-form-view-widget-mcp-handler.service.d.ts.map +0 -1
  471. package/dist/services/genai/mcp-handlers/solid-create-custom-form-view-widget-mcp-handler.service.js +0 -73
  472. package/dist/services/genai/mcp-handlers/solid-create-custom-form-view-widget-mcp-handler.service.js.map +0 -1
  473. package/dist/services/genai/mcp-handlers/solid-create-model-with-fields-mcp-handler.service.d.ts +0 -14
  474. package/dist/services/genai/mcp-handlers/solid-create-model-with-fields-mcp-handler.service.d.ts.map +0 -1
  475. package/dist/services/genai/mcp-handlers/solid-create-model-with-fields-mcp-handler.service.js +0 -45
  476. package/dist/services/genai/mcp-handlers/solid-create-model-with-fields-mcp-handler.service.js.map +0 -1
  477. package/dist/services/genai/mcp-handlers/solid-create-module-mcp-handler.service.d.ts +0 -14
  478. package/dist/services/genai/mcp-handlers/solid-create-module-mcp-handler.service.d.ts.map +0 -1
  479. package/dist/services/genai/mcp-handlers/solid-create-module-mcp-handler.service.js +0 -51
  480. package/dist/services/genai/mcp-handlers/solid-create-module-mcp-handler.service.js.map +0 -1
  481. package/dist/services/genai/mcp-handlers/solid-update-layout-mcp-handler.service.d.ts +0 -12
  482. package/dist/services/genai/mcp-handlers/solid-update-layout-mcp-handler.service.d.ts.map +0 -1
  483. package/dist/services/genai/mcp-handlers/solid-update-layout-mcp-handler.service.js +0 -38
  484. package/dist/services/genai/mcp-handlers/solid-update-layout-mcp-handler.service.js.map +0 -1
  485. package/dist/services/media-storage-provider-metadata-seeder.service.d.ts +0 -8
  486. package/dist/services/media-storage-provider-metadata-seeder.service.d.ts.map +0 -1
  487. package/dist/services/media-storage-provider-metadata-seeder.service.js +0 -43
  488. package/dist/services/media-storage-provider-metadata-seeder.service.js.map +0 -1
  489. package/src/config/app-builder.config.ts +0 -12
  490. package/src/config/common.config.ts +0 -55
  491. package/src/config/iam.config.ts +0 -32
  492. package/src/config/jwt.config.ts +0 -13
  493. package/src/services/export_issues.txt +0 -10
  494. package/src/services/genai/mcp-handlers/solid-add-button-to-form-view-mcp-handler.service.ts +0 -137
  495. package/src/services/genai/mcp-handlers/solid-add-controller-handler-method-mcp-handler.service.ts +0 -81
  496. package/src/services/genai/mcp-handlers/solid-add-custom-service-method-mcp-handler.service.ts +0 -69
  497. package/src/services/genai/mcp-handlers/solid-add-fields-to-model-mcp-handler.service.ts +0 -68
  498. package/src/services/genai/mcp-handlers/solid-add-header-button-or-row-button-to-list-view-mcp-handler.service.ts +0 -141
  499. package/src/services/genai/mcp-handlers/solid-create-computed-provider-mcp-handler.service.ts +0 -71
  500. package/src/services/genai/mcp-handlers/solid-create-custom-form-view-widget-mcp-handler.service.ts +0 -72
  501. package/src/services/genai/mcp-handlers/solid-create-model-with-fields-mcp-handler.service.ts +0 -45
  502. package/src/services/genai/mcp-handlers/solid-create-module-mcp-handler.service.ts +0 -58
  503. package/src/services/genai/mcp-handlers/solid-update-layout-mcp-handler.service.ts +0 -40
  504. package/src/services/groupBy.json +0 -92
  505. package/src/services/media-storage-provider-metadata-seeder.service.ts +0 -33
@@ -1,22 +1,21 @@
1
1
  import { Inject, Injectable } from '@nestjs/common';
2
2
  import { ConfigType } from '@nestjs/config';
3
3
  import { compare as bcryptCompare, genSalt, hash as bcryptHash } from 'bcrypt';
4
- import { iamConfig } from 'src/config/iam.config';
5
4
  import { HashingService } from './hashing.service';
5
+ import { SettingService } from './setting.service';
6
+ import type { SolidCoreSetting } from "src/services/settings/default-settings-provider.service";
6
7
 
7
8
  @Injectable()
8
9
  export class BcryptService implements HashingService {
9
10
  constructor(
10
- @Inject(iamConfig.KEY)
11
- private readonly iamConfiguration: ConfigType<typeof iamConfig>,
11
+ readonly settingService: SettingService,
12
12
  ) { }
13
13
 
14
14
  private readonly rounds = 12;
15
- private readonly pepper = this.iamConfiguration.passwordPepper ?? '';
16
15
 
17
16
  async hash(data: string | Buffer): Promise<string> {
18
17
  const salt = await genSalt(this.rounds);
19
- const normalized = this.normalize(data, this.currentVersion());
18
+ const normalized = await this.normalize(data, this.currentVersion());
20
19
  return bcryptHash(normalized, salt);
21
20
  }
22
21
 
@@ -25,7 +24,7 @@ export class BcryptService implements HashingService {
25
24
  hashed: string,
26
25
  hashVersion: number = this.currentVersion()
27
26
  ): Promise<boolean> {
28
- const normalized = this.normalize(data, hashVersion);
27
+ const normalized = await this.normalize(data, hashVersion);
29
28
  return bcryptCompare(normalized, hashed);
30
29
  }
31
30
 
@@ -44,10 +43,11 @@ export class BcryptService implements HashingService {
44
43
  }
45
44
 
46
45
  /** Normalize input based on version & pepper policy */
47
- private normalize(data: string | Buffer, version: number): string {
46
+ private async normalize(data: string | Buffer, version: number): Promise<string> {
47
+ const pepper = this.settingService.getConfigValue<SolidCoreSetting>('passwordPepper')
48
48
  const plain = typeof data === 'string' ? data : data.toString('utf8');
49
- const usePepper = version >= 2 && this.pepper.length > 0;
50
- return usePepper ? plain + this.pepper : plain;
49
+ const usePepper = version >= 2 && pepper.length > 0;
50
+ return usePepper ? plain + pepper : plain;
51
51
  }
52
52
 
53
53
  }
@@ -1,14 +1,9 @@
1
- import { forwardRef, Inject, Injectable } from '@nestjs/common';
2
- import { InjectEntityManager, InjectRepository } from '@nestjs/typeorm';
3
- import { DiscoveryService, ModuleRef } from "@nestjs/core";
4
- import { EntityManager, Repository, In } from 'typeorm';
1
+ import { Injectable } from '@nestjs/common';
2
+ import { InjectEntityManager } from '@nestjs/typeorm';
3
+ import { ModuleRef } from "@nestjs/core";
4
+ import { EntityManager } from 'typeorm';
5
5
 
6
6
  import { CRUDService } from 'src/services/crud.service';
7
- import { ModelMetadataService } from 'src/services/model-metadata.service';
8
- 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
7
 
13
8
  import { ChatterMessageDetails } from '../entities/chatter-message-details.entity';
14
9
  import { ChatterMessageDetailsRepository } from 'src/repository/chatter-message-details.repository';
@@ -16,19 +11,12 @@ import { ChatterMessageDetailsRepository } from 'src/repository/chatter-message-
16
11
  @Injectable()
17
12
  export class ChatterMessageDetailsService extends CRUDService<ChatterMessageDetails>{
18
13
  constructor(
19
- @Inject(forwardRef(() => ModelMetadataService))
20
- readonly modelMetadataService: ModelMetadataService,
21
- readonly moduleMetadataService: ModuleMetadataService,
22
- readonly configService: ConfigService,
23
- readonly fileService: FileService,
24
- readonly discoveryService: DiscoveryService,
25
- readonly crudHelperService: CrudHelperService,
26
14
  @InjectEntityManager()
27
15
  readonly entityManager: EntityManager,
28
16
  // @InjectRepository(ChatterMessageDetails, 'default')
29
17
  readonly repo: ChatterMessageDetailsRepository,
30
18
  readonly moduleRef: ModuleRef,
31
19
  ) {
32
- super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, entityManager, repo, 'chatterMessageDetails', 'solid-core', moduleRef);
20
+ super(entityManager, repo, 'chatterMessageDetails', 'solid-core', moduleRef);
33
21
  }
34
22
  }
@@ -1,10 +1,9 @@
1
1
  import { forwardRef, Inject, Injectable } from '@nestjs/common';
2
- import { DiscoveryService, ModuleRef } from "@nestjs/core";
2
+ import { ModuleRef } from "@nestjs/core";
3
3
  import { InjectEntityManager } from '@nestjs/typeorm';
4
4
  import { Brackets, EntityManager, EntityMetadata } from 'typeorm';
5
5
 
6
6
  import { classify } from '@angular-devkit/core/src/utils/strings';
7
- import { ConfigService } from '@nestjs/config';
8
7
  import { CHATTER_MESSAGE_SUBTYPE, CHATTER_MESSAGE_TYPE } from 'src/constants/chatter-message.constants';
9
8
  import { PostChatterMessageDto } from 'src/dtos/post-chatter-message.dto';
10
9
  import { ModelMetadataHelperService } from 'src/helpers/model-metadata-helper.service';
@@ -13,11 +12,7 @@ import { ChatterMessageDetailsRepository } from 'src/repository/chatter-message-
13
12
  import { ChatterMessageRepository } from 'src/repository/chatter-message.repository';
14
13
  import { FieldMetadataRepository } from 'src/repository/field-metadata.repository';
15
14
  import { ModelMetadataRepository } from 'src/repository/model-metadata.repository';
16
- import { CrudHelperService } from 'src/services/crud-helper.service';
17
15
  import { CRUDService } from 'src/services/crud.service';
18
- import { FileService } from 'src/services/file.service';
19
- import { ModelMetadataService } from 'src/services/model-metadata.service';
20
- import { ModuleMetadataService } from 'src/services/module-metadata.service';
21
16
  import { MediaStorageProviderType } from '../dtos/create-media-storage-provider-metadata.dto';
22
17
  import { ChatterMessageDetails } from '../entities/chatter-message-details.entity';
23
18
  import { ChatterMessage } from '../entities/chatter-message.entity';
@@ -26,13 +21,6 @@ import { RequestContextService } from './request-context.service';
26
21
  @Injectable()
27
22
  export class ChatterMessageService extends CRUDService<ChatterMessage> {
28
23
  constructor(
29
- @Inject(forwardRef(() => ModelMetadataService))
30
- readonly modelMetadataService: ModelMetadataService,
31
- readonly moduleMetadataService: ModuleMetadataService,
32
- readonly configService: ConfigService,
33
- readonly fileService: FileService,
34
- readonly discoveryService: DiscoveryService,
35
- readonly crudHelperService: CrudHelperService,
36
24
  @InjectEntityManager()
37
25
  readonly entityManager: EntityManager,
38
26
  // @InjectRepository(ChatterMessage, 'default')
@@ -50,7 +38,7 @@ export class ChatterMessageService extends CRUDService<ChatterMessage> {
50
38
  readonly requestContextService: RequestContextService,
51
39
  private readonly modelMetadataHelperService: ModelMetadataHelperService,
52
40
  ) {
53
- super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, entityManager, repo, 'chatterMessage', 'solid-core', moduleRef);
41
+ super(entityManager, repo, 'chatterMessage', 'solid-core', moduleRef);
54
42
  }
55
43
 
56
44
  async postMessage(postDto: PostChatterMessageDto, files: Express.Multer.File[] = []) {
@@ -1,8 +1,7 @@
1
1
  import { BadRequestException, NotFoundException } from "@nestjs/common";
2
- import { ConfigService } from "@nestjs/config";
3
2
  import { DiscoveryService, ModuleRef } from "@nestjs/core";
4
3
  import { isArray } from "class-validator";
5
- import { CommonEntity, FileService, SolidBaseRepository, User } from "src";
4
+ import { CommonEntity, SettingService, SolidBaseRepository, User } from "src";
6
5
  import { ERROR_MESSAGES } from "src/constants/error-messages";
7
6
  import { SUCCESS_MESSAGES } from "src/constants/success-messages";
8
7
  import { EntityManager, FindOptionsWhere, In, IsNull, Not, QueryFailedError, SelectQueryBuilder } from "typeorm";
@@ -37,29 +36,41 @@ import { CrudHelperService, FilterCombinator, UserIdFields } from "./crud-helper
37
36
  import { HashingService } from "./hashing.service";
38
37
  import { getMediaStorageProvider } from "./mediaStorageProviders";
39
38
  import { ModelMetadataService } from "./model-metadata.service";
40
- import { ModuleMetadataService } from "./module-metadata.service";
41
39
  import { RequestContextService } from "./request-context.service";
42
40
  import { BasicGroupFilterDto } from "src/dtos/basic-group-filters.dto";
43
41
 
42
+
44
43
  export class CRUDService<T extends CommonEntity> { // Add two generic value i.e Person,CreatePersonDto, so we get the proper types in our service
45
44
 
45
+ private _modelMetadataService: ModelMetadataService;
46
+ private _crudHelperService: CrudHelperService;
47
+ private _discoveryService: DiscoveryService;
48
+ private _settingService: SettingService;
49
+
46
50
  constructor(
47
- readonly modelMetadataService: ModelMetadataService, // go away
48
- readonly moduleMetadataService: ModuleMetadataService, // go away
49
- readonly configService: ConfigService, // we don't use it - go away
50
- readonly fileService: FileService, // we don't use it - go away
51
- readonly discoveryService: DiscoveryService, // go away
52
- readonly crudHelperService: CrudHelperService, // go away
53
51
  readonly entityManager: EntityManager,
54
52
  readonly repo: SolidBaseRepository<T>,
55
53
  readonly modelName: string,
56
54
  readonly moduleName: string,
57
55
  readonly moduleRef: ModuleRef,
58
- readonly defaultEntityManager?: EntityManager
59
-
60
- //We can just have the Model Entity here
56
+ readonly defaultDatasourceEntityManager?: EntityManager
61
57
  ) { }
62
58
 
59
+ protected get modelMetadataService(): ModelMetadataService {
60
+ return this._modelMetadataService ??= this.moduleRef.get(ModelMetadataService, { strict: false });
61
+ }
62
+
63
+ protected get crudHelperService(): CrudHelperService {
64
+ return this._crudHelperService ??= this.moduleRef.get(CrudHelperService, { strict: false });
65
+ }
66
+
67
+ protected get discoveryService(): DiscoveryService {
68
+ return this._discoveryService ??= this.moduleRef.get(DiscoveryService, { strict: false });
69
+ }
70
+ protected get settingService(): SettingService {
71
+ return this._settingService ??= this.moduleRef.get(SettingService, { strict: false });
72
+ }
73
+
63
74
  async create(createDto: any, files: Express.Multer.File[] = [], solidRequestContext: any = {}): Promise<T> {
64
75
  // This class will be extended by the generated service class i.e PersonService
65
76
  // The data required to identify the model and module name will be passed from the generate CrudService subclass
@@ -94,7 +105,7 @@ export class CRUDService<T extends CommonEntity> { // Add two generic value i.e
94
105
 
95
106
  // 6. Save the media
96
107
  if (hasMediaFields) {
97
- this.saveMedia(model, files, savedEntity);
108
+ await this.saveMedia(model, files, savedEntity);
98
109
  }
99
110
  return savedEntity;
100
111
  } catch (error) {
@@ -130,14 +141,13 @@ export class CRUDService<T extends CommonEntity> { // Add two generic value i.e
130
141
  return { dto, hasMediaFields };
131
142
  }
132
143
 
133
- //FIXME: Need to make this saving media async. Use queues approach
134
- private saveMedia(model: ModelMetadata, files: Express.Multer.File[], savedEntity: T) {
144
+ private async saveMedia(model: ModelMetadata, files: Express.Multer.File[], savedEntity: T): Promise<void> {
135
145
  // Get all the media fields in the dto
136
-
137
146
  const mediaFields = model.fields.filter(field => field.type === 'mediaSingle' || field.type === 'mediaMultiple');
138
147
 
139
148
  // Depending upon media storage provider configured, get the appropriate storage provider
140
- mediaFields.forEach(async (mediaField) => {
149
+ // Using Promise.all to save all media fields in parallel
150
+ await Promise.all(mediaFields.map(async (mediaField) => {
141
151
  const media = files.filter(multerFile => multerFile.fieldname === mediaField.name);
142
152
 
143
153
  // If media is present, then save the media
@@ -150,11 +160,9 @@ export class CRUDService<T extends CommonEntity> { // Add two generic value i.e
150
160
  // Get the storage provider implementation
151
161
  const storageProvider = await getMediaStorageProvider(this.moduleRef, storageProviderType);
152
162
 
153
- //Commented the below code since we will be direclty images from server on call from ui
154
- // await storageProvider.delete(savedEntity, mediaField);
155
163
  await storageProvider.store(media, savedEntity, mediaField);
156
164
  }
157
- });
165
+ }));
158
166
  }
159
167
 
160
168
  //TODO: Will the updates be partial i.e PATCH or full i.e PUT
@@ -214,7 +222,7 @@ export class CRUDService<T extends CommonEntity> { // Add two generic value i.e
214
222
 
215
223
  // 6. Save the media
216
224
  if (hasMediaFields) {
217
- this.saveMedia(model, files, savedEntity);
225
+ await this.saveMedia(model, files, savedEntity);
218
226
  }
219
227
  return savedEntity;
220
228
  }
@@ -339,11 +347,11 @@ export class CRUDService<T extends CommonEntity> { // Add two generic value i.e
339
347
  // Use the EntityController to extract uploaded content & pass to the entity service.
340
348
  // If embedded media, then the media uri will saved in the entity table, else the uri will be saved in the media table
341
349
  // Plan the media table schema e.g id, uri, storageProvider, entity_id, entity_name, createdAt, updatedAt
342
- const options = {
343
- ...commonOptions,
350
+ const options = {
351
+ ...commonOptions,
344
352
  mediaMaxSizeKb: fieldMetadata.mediaMaxSizeKb,
345
353
  mediaTypes: fieldMetadata.mediaTypes,
346
- type: fieldMetadata.type as unknown as SolidMediaType
354
+ type: fieldMetadata.type as unknown as SolidMediaType
347
355
  };
348
356
  return new MediaFieldCrudManager(options);
349
357
  }
@@ -626,7 +634,7 @@ export class CRUDService<T extends CommonEntity> { // Add two generic value i.e
626
634
  }
627
635
 
628
636
  private async handlePopulateMedia(populateMedia: string[], entities: T[]) {
629
- const model = await this.getDefaultEntityManager().getRepository(ModelMetadata).findOne({
637
+ const model = await this.getDatasourceDefaultEntityManager().getRepository(ModelMetadata).findOne({
630
638
  where: {
631
639
  singularName: this.modelName,
632
640
  },
@@ -965,7 +973,7 @@ export class CRUDService<T extends CommonEntity> { // Add two generic value i.e
965
973
  throw new BadRequestException(`Field ${field.name} does not define a relationCoModelSingularName`);
966
974
  }
967
975
 
968
- const relationCoModel = await this.getDefaultEntityManager().getRepository(ModelMetadata).findOne({
976
+ const relationCoModel = await this.getDatasourceDefaultEntityManager().getRepository(ModelMetadata).findOne({
969
977
  where: { singularName: field.relationCoModelSingularName },
970
978
  relations: ['fields', 'fields.mediaStorageProvider', 'fields.model'],
971
979
  });
@@ -1069,7 +1077,7 @@ export class CRUDService<T extends CommonEntity> { // Add two generic value i.e
1069
1077
  return updatedEntity
1070
1078
  }
1071
1079
 
1072
- private getDefaultEntityManager() {
1073
- return this.defaultEntityManager ?? this.entityManager;
1080
+ private getDatasourceDefaultEntityManager() {
1081
+ return this.defaultDatasourceEntityManager ?? this.entityManager;
1074
1082
  }
1075
1083
  }
@@ -1,14 +1,9 @@
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 { InjectEntityManager } from '@nestjs/typeorm';
3
+ import { ModuleRef } from "@nestjs/core";
4
+ import { EntityManager } from 'typeorm';
5
5
 
6
6
  import { CRUDService } from 'src/services/crud.service';
7
- import { ModelMetadataService } from 'src/services/model-metadata.service';
8
- 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
7
 
13
8
 
14
9
  import { DashboardQuestionSqlDatasetConfig } from '../entities/dashboard-question-sql-dataset-config.entity';
@@ -17,12 +12,6 @@ import { DashboardQuestionSqlDatasetConfigRepository } from 'src/repository/dash
17
12
  @Injectable()
18
13
  export class DashboardQuestionSqlDatasetConfigService extends CRUDService<DashboardQuestionSqlDatasetConfig>{
19
14
  constructor(
20
- readonly modelMetadataService: ModelMetadataService,
21
- readonly moduleMetadataService: ModuleMetadataService,
22
- readonly configService: ConfigService,
23
- readonly fileService: FileService,
24
- readonly discoveryService: DiscoveryService,
25
- readonly crudHelperService: CrudHelperService,
26
15
  @InjectEntityManager()
27
16
  readonly entityManager: EntityManager,
28
17
  // @InjectRepository(DashboardQuestionSqlDatasetConfig, 'default')
@@ -31,6 +20,6 @@ export class DashboardQuestionSqlDatasetConfigService extends CRUDService<Dashbo
31
20
  readonly moduleRef: ModuleRef
32
21
 
33
22
  ) {
34
- super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService,entityManager, repo, 'dashboardQuestionSqlDatasetConfig', 'solid-core', moduleRef);
23
+ super(entityManager, repo, 'dashboardQuestionSqlDatasetConfig', 'solid-core', moduleRef);
35
24
  }
36
25
  }
@@ -1,22 +1,15 @@
1
1
  import { BadRequestException, Injectable, Logger, NotImplementedException } from '@nestjs/common';
2
- import { DiscoveryService, ModuleRef } from "@nestjs/core";
3
- import { InjectEntityManager, InjectRepository } from '@nestjs/typeorm';
4
- import { EntityManager, Repository } from 'typeorm';
2
+ import { 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';
8
6
  import { CRUDService } from 'src/services/crud.service';
9
- import { FileService } from 'src/services/file.service';
10
- import { ModelMetadataService } from 'src/services/model-metadata.service';
11
- import { ModuleMetadataService } from 'src/services/module-metadata.service';
12
7
 
13
8
 
14
9
  import { DashboardVariable } from 'src/entities/dashboard-variable.entity';
15
10
  import { SolidRegistry } from 'src/helpers/solid-registry';
16
11
  import { DashboardQuestion } from '../entities/dashboard-question.entity';
17
12
  import { SqlExpression, SqlExpressionOperator } from './question-data-providers/chartjs-sql-data-provider.service';
18
- import { DashboardService } from './dashboard.service';
19
- import { Dashboard } from 'src/entities/dashboard.entity';
20
13
  import { DashboardQuestionRepository } from 'src/repository/dashboard-question.repository';
21
14
 
22
15
  enum SOURCE_TYPE {
@@ -32,12 +25,6 @@ const PRIME_REACT_DATATABLE_SQL_DATA_PROVIDER_NAME = 'PrimeReactDatatableSqlData
32
25
  export class DashboardQuestionService extends CRUDService<DashboardQuestion> {
33
26
  private readonly logger = new Logger(this.constructor.name);
34
27
  constructor(
35
- readonly modelMetadataService: ModelMetadataService,
36
- readonly moduleMetadataService: ModuleMetadataService,
37
- readonly configService: ConfigService,
38
- readonly fileService: FileService,
39
- readonly discoveryService: DiscoveryService,
40
- readonly crudHelperService: CrudHelperService,
41
28
  @InjectEntityManager()
42
29
  readonly entityManager: EntityManager,
43
30
  // @InjectRepository(DashboardQuestion, 'default')
@@ -46,7 +33,7 @@ export class DashboardQuestionService extends CRUDService<DashboardQuestion> {
46
33
  readonly moduleRef: ModuleRef,
47
34
  readonly solidRegistry: SolidRegistry, // Assuming solidRegistry is injected for data providers
48
35
  ) {
49
- super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, entityManager, repo, 'dashboardQuestion', 'solid-core', moduleRef);
36
+ super(entityManager, repo, 'dashboardQuestion', 'solid-core', moduleRef);
50
37
  }
51
38
 
52
39
  // Get the data for a specific question
@@ -1,30 +1,18 @@
1
1
  import { Injectable, Logger } from '@nestjs/common';
2
- import { DiscoveryService, ModuleRef } from "@nestjs/core";
3
- import { InjectEntityManager, InjectRepository } from '@nestjs/typeorm';
4
- import { EntityManager, Repository } from 'typeorm';
2
+ import { 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';
8
6
  import { CRUDService } from 'src/services/crud.service';
9
- import { FileService } from 'src/services/file.service';
10
- import { ModelMetadataService } from 'src/services/model-metadata.service';
11
- import { ModuleMetadataService } from 'src/services/module-metadata.service';
12
7
 
13
8
 
14
9
  import { DashboardVariable } from '../entities/dashboard-variable.entity';
15
- import { Dashboard } from 'src/entities/dashboard.entity';
16
10
  import { DashboardVariableRepository } from 'src/repository/dashboard-variable.repository';
17
11
 
18
12
  @Injectable()
19
13
  export class DashboardVariableService extends CRUDService<DashboardVariable> {
20
14
  private readonly logger = new Logger(this.constructor.name);
21
15
  constructor(
22
- readonly modelMetadataService: ModelMetadataService,
23
- readonly moduleMetadataService: ModuleMetadataService,
24
- readonly configService: ConfigService,
25
- readonly fileService: FileService,
26
- readonly discoveryService: DiscoveryService,
27
- readonly crudHelperService: CrudHelperService,
28
16
  @InjectEntityManager()
29
17
  readonly entityManager: EntityManager,
30
18
  // @InjectRepository(DashboardVariable, 'default')
@@ -32,7 +20,7 @@ export class DashboardVariableService extends CRUDService<DashboardVariable> {
32
20
  readonly repo: DashboardVariableRepository,
33
21
  readonly moduleRef: ModuleRef,
34
22
  ) {
35
- super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, entityManager, repo, 'dashboardVariable', 'solid-core', moduleRef);
23
+ super(entityManager, repo, 'dashboardVariable', 'solid-core', moduleRef);
36
24
  }
37
25
 
38
26
 
@@ -1,14 +1,9 @@
1
1
  import { Injectable, Logger, NotFoundException } from '@nestjs/common';
2
- import { DiscoveryService, ModuleRef } from "@nestjs/core";
2
+ import { ModuleRef } from "@nestjs/core";
3
3
  import { InjectEntityManager } from '@nestjs/typeorm';
4
4
  import { EntityManager } from 'typeorm';
5
5
 
6
- import { ConfigService } from '@nestjs/config';
7
- import { CrudHelperService } from 'src/services/crud-helper.service';
8
6
  import { CRUDService } from 'src/services/crud.service';
9
- import { FileService } from 'src/services/file.service';
10
- import { ModelMetadataService } from 'src/services/model-metadata.service';
11
- import { ModuleMetadataService } from 'src/services/module-metadata.service';
12
7
 
13
8
 
14
9
  import * as fs from 'fs/promises'; // Use the Promise-based version of fs for async/await
@@ -27,12 +22,6 @@ export const SQL_DYNAMIC_PROVIDER_NAME = 'DashboardVariableSQLDynamicProvider';
27
22
  export class DashboardService extends CRUDService<Dashboard> {
28
23
  private readonly logger = new Logger(this.constructor.name);
29
24
  constructor(
30
- readonly modelMetadataService: ModelMetadataService,
31
- readonly moduleMetadataService: ModuleMetadataService,
32
- readonly configService: ConfigService,
33
- readonly fileService: FileService,
34
- readonly discoveryService: DiscoveryService,
35
- readonly crudHelperService: CrudHelperService,
36
25
  @InjectEntityManager()
37
26
  readonly entityManager: EntityManager,
38
27
  readonly repo: DashboardRepository, // Assuming you have a DashboardRepository for custom queries
@@ -41,7 +30,7 @@ export class DashboardService extends CRUDService<Dashboard> {
41
30
  readonly moduleMetadataHelperService: ModuleMetadataHelperService,
42
31
  readonly dashboardMapper: DashboardMapper,
43
32
  ) {
44
- super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, entityManager, repo, 'dashboard', 'solid-core', moduleRef);
33
+ super(entityManager, repo, 'dashboard', 'solid-core', moduleRef);
45
34
  }
46
35
 
47
36
  async getSelectionDynamicValues(query: DashboardVariableSelectionDynamicQueryDto) {
@@ -1,31 +1,19 @@
1
- import { forwardRef, Inject, Injectable } from '@nestjs/common';
1
+ import { Injectable } from '@nestjs/common';
2
2
 
3
- import { ConfigService } from '@nestjs/config';
4
- import { DiscoveryService, ModuleRef } from '@nestjs/core';
3
+ import { ModuleRef } from '@nestjs/core';
5
4
  import { InjectEntityManager } from '@nestjs/typeorm';
6
5
  import { EmailTemplateRepository } from 'src/repository/email-template.repository';
7
6
  import { EntityManager } from 'typeorm';
8
7
  import { EmailTemplate } from '../entities/email-template.entity';
9
- import { CrudHelperService } from './crud-helper.service';
10
8
  import { CRUDService } from './crud.service';
11
- import { FileService } from './file.service';
12
9
  import { MediaStorageProviderMetadataService } from './media-storage-provider-metadata.service';
13
10
  import { MediaService } from './media.service';
14
- import { ModelMetadataService } from './model-metadata.service';
15
- import { ModuleMetadataService } from './module-metadata.service';
16
11
 
17
12
  @Injectable()
18
13
  export class EmailTemplateService extends CRUDService<EmailTemplate>{
19
14
  constructor(
20
- @Inject(forwardRef(() => ModelMetadataService))
21
- readonly modelMetadataService: ModelMetadataService,
22
- readonly moduleMetadataService: ModuleMetadataService,
23
15
  readonly mediaStorageProviderService: MediaStorageProviderMetadataService,
24
- readonly configService: ConfigService,
25
- readonly fileService: FileService,
26
16
  readonly mediaService: MediaService,
27
- readonly discoveryService: DiscoveryService,
28
- readonly crudHelperService: CrudHelperService,
29
17
  @InjectEntityManager()
30
18
  readonly entityManager: EntityManager,
31
19
  // @InjectRepository(EmailTemplate, 'default')
@@ -33,7 +21,7 @@ export class EmailTemplateService extends CRUDService<EmailTemplate>{
33
21
  readonly repo: EmailTemplateRepository,
34
22
  readonly moduleRef: ModuleRef,
35
23
  ) {
36
- super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, entityManager, repo, 'emailTemplate', 'app-builder', moduleRef);
24
+ super(entityManager, repo, 'emailTemplate', 'app-builder', moduleRef);
37
25
  }
38
26
  async findOneByName(name: string, relations: any = {}) {
39
27
  const entity = await this.repo.findOne({
@@ -1,21 +1,13 @@
1
1
  import { ForbiddenException, Injectable } from '@nestjs/common';
2
- import { DiscoveryService, ModuleRef } from "@nestjs/core";
3
- import { InjectEntityManager, InjectRepository } from '@nestjs/typeorm';
4
- import { EntityManager, Repository } from 'typeorm';
2
+ import { 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';
8
6
  import { CRUDService } from 'src/services/crud.service';
9
- import { FileService } from 'src/services/file.service';
10
- import { MediaStorageProviderMetadataService } from 'src/services/media-storage-provider-metadata.service';
11
- import { MediaService } from 'src/services/media.service';
12
- import { ModelMetadataService } from 'src/services/model-metadata.service';
13
- import { ModuleMetadataService } from 'src/services/module-metadata.service';
14
7
 
15
8
 
16
9
  import { CreateExportTransactionDto } from 'src/dtos/create-export-transaction.dto';
17
10
  import { ExportTransaction } from 'src/entities/export-transaction.entity';
18
- import { Readable } from 'stream';
19
11
  import { ExportTemplate } from '../entities/export-template.entity';
20
12
  import { ExportTransactionFileInfo, ExportTransactionService } from './export-transaction.service';
21
13
  import { UpdateExportTemplateDto } from 'src/dtos/update-export-template.dto';
@@ -71,12 +63,6 @@ export class ExportTemplateService extends CRUDService<ExportTemplate>{
71
63
  }
72
64
 
73
65
  constructor(
74
- readonly modelMetadataService: ModelMetadataService,
75
- readonly moduleMetadataService: ModuleMetadataService,
76
- readonly configService: ConfigService,
77
- readonly fileService: FileService,
78
- readonly discoveryService: DiscoveryService,
79
- readonly crudHelperService: CrudHelperService,
80
66
  @InjectEntityManager()
81
67
  readonly entityManager: EntityManager,
82
68
  // @InjectRepository(ExportTemplate, 'default')
@@ -85,6 +71,6 @@ export class ExportTemplateService extends CRUDService<ExportTemplate>{
85
71
  readonly exportTransactionService: ExportTransactionService,
86
72
  readonly moduleRef: ModuleRef
87
73
  ) {
88
- super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService,entityManager, repo, 'exportTemplate', 'solid-core',moduleRef);
74
+ super(entityManager, repo, 'exportTemplate', 'solid-core',moduleRef);
89
75
  }
90
76
  }
@@ -1,16 +1,9 @@
1
1
  import { Injectable, Logger } from '@nestjs/common';
2
- import { DiscoveryService, ModuleRef } from "@nestjs/core";
3
- import { InjectEntityManager, InjectRepository } from '@nestjs/typeorm';
4
- import { EntityManager, Repository } from 'typeorm';
2
+ import { 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';
8
6
  import { CRUDService } from 'src/services/crud.service';
9
- import { FileService } from 'src/services/file.service';
10
- import { MediaStorageProviderMetadataService } from 'src/services/media-storage-provider-metadata.service';
11
- import { MediaService } from 'src/services/media.service';
12
- import { ModelMetadataService } from 'src/services/model-metadata.service';
13
- import { ModuleMetadataService } from 'src/services/module-metadata.service';
14
7
 
15
8
 
16
9
  import { classify, dasherize } from '@angular-devkit/core/src/utils/strings';
@@ -26,12 +19,10 @@ import { CsvService } from './csv.service';
26
19
  import { ExcelService } from './excel.service';
27
20
  import { getMediaStorageProvider } from './mediaStorageProviders';
28
21
  import { SolidIntrospectService } from './solid-introspect.service';
29
- import { ModelMetadata } from 'src/entities/model-metadata.entity';
30
22
  import { UpdateExportTemplateDto } from 'src/dtos/update-export-template.dto';
31
23
  import { ERROR_MESSAGES } from 'src/constants/error-messages';
32
24
  import { ModelMetadataHelperService } from 'src/helpers/model-metadata-helper.service';
33
25
  import { ExportTransactionRepository } from 'src/repository/export-transaction.repository';
34
- import { Field } from 'mysql2/typings/mysql/lib/parsers/typeCast';
35
26
  import { FieldMetadataRepository } from 'src/repository/field-metadata.repository';
36
27
  import { ModelMetadataRepository } from 'src/repository/model-metadata.repository';
37
28
 
@@ -59,12 +50,6 @@ export class ExportTransactionService extends CRUDService<ExportTransaction> {
59
50
  private logger = new Logger(ExportTransactionService.name);
60
51
 
61
52
  constructor(
62
- readonly modelMetadataService: ModelMetadataService,
63
- readonly moduleMetadataService: ModuleMetadataService,
64
- readonly configService: ConfigService,
65
- readonly fileService: FileService,
66
- readonly discoveryService: DiscoveryService,
67
- readonly crudHelperService: CrudHelperService,
68
53
  @InjectEntityManager()
69
54
  readonly entityManager: EntityManager,
70
55
  // @InjectRepository(ExportTransaction, 'default')
@@ -84,7 +69,7 @@ export class ExportTransactionService extends CRUDService<ExportTransaction> {
84
69
  private readonly modelMetadataHelperService: ModelMetadataHelperService,
85
70
 
86
71
  ) {
87
- super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, entityManager, repo, 'exportTransaction', 'solid-core', moduleRef);
72
+ super(entityManager, repo, 'exportTransaction', 'solid-core', moduleRef);
88
73
  }
89
74
 
90
75
  // Return the export stream
@@ -225,6 +225,10 @@ export class FieldMetadataService implements OnApplicationBootstrap {
225
225
  return { moduleName, modelName };
226
226
  }
227
227
 
228
+ async find(basicFilterDto: BasicFilterDto) {
229
+ return this.findMany(basicFilterDto);
230
+ }
231
+
228
232
  async findMany(basicFilterDto: BasicFilterDto) {
229
233
  const alias = 'fieldMetadata';
230
234
  // Extract the required keys from the input query
@@ -1374,7 +1378,7 @@ export class FieldMetadataService implements OnApplicationBootstrap {
1374
1378
  resolvedBucketName = mediaStorageProvider.bucketName;
1375
1379
  }
1376
1380
  this.logger.debug(`INSIDE::resolveS3Url:: resolvedBucketName: ${resolvedBucketName}`)
1377
-
1381
+
1378
1382
  if (resolveS3UrlDto.isPrivate == "true") {
1379
1383
  const expiryInSeconds = 60 * 60;
1380
1384
  url = await this.fileService.getSignedUrl(normalizedKey, expiryInSeconds, resolvedBucketName);