@solidstarters/solid-core 1.2.200 → 1.2.202

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 (527) hide show
  1. package/dist/commands/fixtures/fixtures-setup.command.d.ts +15 -0
  2. package/dist/commands/fixtures/fixtures-setup.command.d.ts.map +1 -0
  3. package/dist/commands/fixtures/fixtures-setup.command.js +58 -0
  4. package/dist/commands/fixtures/fixtures-setup.command.js.map +1 -0
  5. package/dist/commands/fixtures/fixtures-tear-down.command.d.ts +16 -0
  6. package/dist/commands/fixtures/fixtures-tear-down.command.d.ts.map +1 -0
  7. package/dist/commands/fixtures/fixtures-tear-down.command.js +59 -0
  8. package/dist/commands/fixtures/fixtures-tear-down.command.js.map +1 -0
  9. package/dist/commands/refresh-model.command.d.ts.map +1 -1
  10. package/dist/commands/refresh-model.command.js +4 -0
  11. package/dist/commands/refresh-model.command.js.map +1 -1
  12. package/dist/config/cache.options.d.ts +1 -1
  13. package/dist/config/cache.options.d.ts.map +1 -1
  14. package/dist/config/cache.options.js +2 -2
  15. package/dist/config/cache.options.js.map +1 -1
  16. package/dist/config/iam.config.d.ts +4 -0
  17. package/dist/config/iam.config.d.ts.map +1 -1
  18. package/dist/config/iam.config.js +2 -0
  19. package/dist/config/iam.config.js.map +1 -1
  20. package/dist/constants/error-messages.d.ts +2 -0
  21. package/dist/constants/error-messages.d.ts.map +1 -1
  22. package/dist/constants/error-messages.js +4 -0
  23. package/dist/constants/error-messages.js.map +1 -1
  24. package/dist/controllers/model-metadata.controller.d.ts +25 -0
  25. package/dist/controllers/model-metadata.controller.d.ts.map +1 -1
  26. package/dist/controllers/model-metadata.controller.js +23 -0
  27. package/dist/controllers/model-metadata.controller.js.map +1 -1
  28. package/dist/controllers/model-sequence.controller.d.ts +43 -0
  29. package/dist/controllers/model-sequence.controller.d.ts.map +1 -0
  30. package/dist/controllers/model-sequence.controller.js +179 -0
  31. package/dist/controllers/model-sequence.controller.js.map +1 -0
  32. package/dist/controllers/setting.controller.d.ts +2 -2
  33. package/dist/controllers/setting.controller.d.ts.map +1 -1
  34. package/dist/controllers/setting.controller.js +36 -42
  35. package/dist/controllers/setting.controller.js.map +1 -1
  36. package/dist/decorators/sms-provider.decorator.d.ts +3 -0
  37. package/dist/decorators/sms-provider.decorator.d.ts.map +1 -0
  38. package/dist/decorators/sms-provider.decorator.js +11 -0
  39. package/dist/decorators/sms-provider.decorator.js.map +1 -0
  40. package/dist/dtos/basic-filters.dto.d.ts +3 -1
  41. package/dist/dtos/basic-filters.dto.d.ts.map +1 -1
  42. package/dist/dtos/basic-filters.dto.js +8 -2
  43. package/dist/dtos/basic-filters.dto.js.map +1 -1
  44. package/dist/dtos/basic-group-filters.dto.d.ts +6 -0
  45. package/dist/dtos/basic-group-filters.dto.d.ts.map +1 -0
  46. package/dist/dtos/basic-group-filters.dto.js +46 -0
  47. package/dist/dtos/basic-group-filters.dto.js.map +1 -0
  48. package/dist/dtos/create-field-metadata.dto.js +2 -2
  49. package/dist/dtos/create-field-metadata.dto.js.map +1 -1
  50. package/dist/dtos/create-model-sequence.dto.d.ts +14 -0
  51. package/dist/dtos/create-model-sequence.dto.d.ts.map +1 -0
  52. package/dist/dtos/create-model-sequence.dto.js +90 -0
  53. package/dist/dtos/create-model-sequence.dto.js.map +1 -0
  54. package/dist/dtos/create-role-metadata.dto.d.ts.map +1 -1
  55. package/dist/dtos/create-role-metadata.dto.js +1 -0
  56. package/dist/dtos/create-role-metadata.dto.js.map +1 -1
  57. package/dist/dtos/get-mcp-url.dto.d.ts +5 -0
  58. package/dist/dtos/get-mcp-url.dto.d.ts.map +1 -0
  59. package/dist/dtos/get-mcp-url.dto.js +31 -0
  60. package/dist/dtos/get-mcp-url.dto.js.map +1 -0
  61. package/dist/dtos/navigation.dto.d.ts +6 -0
  62. package/dist/dtos/navigation.dto.d.ts.map +1 -0
  63. package/dist/dtos/navigation.dto.js +33 -0
  64. package/dist/dtos/navigation.dto.js.map +1 -0
  65. package/dist/dtos/resolve-s3-url.dto.d.ts +5 -5
  66. package/dist/dtos/resolve-s3-url.dto.d.ts.map +1 -1
  67. package/dist/dtos/resolve-s3-url.dto.js +7 -7
  68. package/dist/dtos/resolve-s3-url.dto.js.map +1 -1
  69. package/dist/dtos/sign-in.dto.js +3 -3
  70. package/dist/dtos/sign-in.dto.js.map +1 -1
  71. package/dist/dtos/update-model-sequence.dto.d.ts +15 -0
  72. package/dist/dtos/update-model-sequence.dto.d.ts.map +1 -0
  73. package/dist/dtos/update-model-sequence.dto.js +94 -0
  74. package/dist/dtos/update-model-sequence.dto.js.map +1 -0
  75. package/dist/entities/common.entity.d.ts.map +1 -1
  76. package/dist/entities/common.entity.js +6 -4
  77. package/dist/entities/common.entity.js.map +1 -1
  78. package/dist/entities/field-metadata.entity.d.ts.map +1 -1
  79. package/dist/entities/field-metadata.entity.js +2 -1
  80. package/dist/entities/field-metadata.entity.js.map +1 -1
  81. package/dist/entities/legacy-common.entity.d.ts.map +1 -1
  82. package/dist/entities/legacy-common.entity.js +6 -4
  83. package/dist/entities/legacy-common.entity.js.map +1 -1
  84. package/dist/entities/model-metadata.entity.d.ts.map +1 -1
  85. package/dist/entities/model-metadata.entity.js +5 -1
  86. package/dist/entities/model-metadata.entity.js.map +1 -1
  87. package/dist/entities/model-sequence.entity.d.ts +15 -0
  88. package/dist/entities/model-sequence.entity.d.ts.map +1 -0
  89. package/dist/entities/model-sequence.entity.js +67 -0
  90. package/dist/entities/model-sequence.entity.js.map +1 -0
  91. package/dist/factories/mail.factory.d.ts.map +1 -1
  92. package/dist/factories/mail.factory.js.map +1 -1
  93. package/dist/factories/sms.factory.d.ts +14 -0
  94. package/dist/factories/sms.factory.d.ts.map +1 -0
  95. package/dist/factories/sms.factory.js +53 -0
  96. package/dist/factories/sms.factory.js.map +1 -0
  97. package/dist/helpers/date.helper.d.ts.map +1 -1
  98. package/dist/helpers/date.helper.js +13 -4
  99. package/dist/helpers/date.helper.js.map +1 -1
  100. package/dist/helpers/field-crud-managers/BigIntFieldCrudManager.d.ts.map +1 -1
  101. package/dist/helpers/field-crud-managers/BigIntFieldCrudManager.js +13 -2
  102. package/dist/helpers/field-crud-managers/BigIntFieldCrudManager.js.map +1 -1
  103. package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.d.ts +0 -1
  104. package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.d.ts.map +1 -1
  105. package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.js +4 -9
  106. package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.js.map +1 -1
  107. package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.d.ts +0 -1
  108. package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.d.ts.map +1 -1
  109. package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.js +7 -8
  110. package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.js.map +1 -1
  111. package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.d.ts +0 -1
  112. package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.d.ts.map +1 -1
  113. package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.js +4 -9
  114. package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.js.map +1 -1
  115. package/dist/helpers/model-metadata-helper.service.d.ts.map +1 -1
  116. package/dist/helpers/model-metadata-helper.service.js +6 -2
  117. package/dist/helpers/model-metadata-helper.service.js.map +1 -1
  118. package/dist/helpers/module-metadata-helper.service.d.ts +1 -0
  119. package/dist/helpers/module-metadata-helper.service.d.ts.map +1 -1
  120. package/dist/helpers/module-metadata-helper.service.js +9 -0
  121. package/dist/helpers/module-metadata-helper.service.js.map +1 -1
  122. package/dist/helpers/module.helper.d.ts +1 -0
  123. package/dist/helpers/module.helper.d.ts.map +1 -1
  124. package/dist/helpers/module.helper.js +29 -3
  125. package/dist/helpers/module.helper.js.map +1 -1
  126. package/dist/helpers/solid-registry.d.ts +14 -0
  127. package/dist/helpers/solid-registry.d.ts.map +1 -1
  128. package/dist/helpers/solid-registry.js +7 -0
  129. package/dist/helpers/solid-registry.js.map +1 -1
  130. package/dist/index.d.ts +12 -7
  131. package/dist/index.d.ts.map +1 -1
  132. package/dist/index.js +13 -8
  133. package/dist/index.js.map +1 -1
  134. package/dist/jobs/computed-field-evaluation-subscriber.service.d.ts +1 -0
  135. package/dist/jobs/computed-field-evaluation-subscriber.service.d.ts.map +1 -1
  136. package/dist/jobs/computed-field-evaluation-subscriber.service.js +16 -4
  137. package/dist/jobs/computed-field-evaluation-subscriber.service.js.map +1 -1
  138. package/dist/jobs/database/{sms-publisher-database.service.d.ts → msg91-sms-publisher-database.service.d.ts} +2 -2
  139. package/dist/jobs/database/msg91-sms-publisher-database.service.d.ts.map +1 -0
  140. package/dist/jobs/database/{sms-publisher-database.service.js → msg91-sms-publisher-database.service.js} +8 -8
  141. package/dist/jobs/database/msg91-sms-publisher-database.service.js.map +1 -0
  142. package/dist/jobs/database/{sms-queue-database-options.d.ts → msg91-sms-queue-database-options.d.ts} +1 -1
  143. package/dist/jobs/database/msg91-sms-queue-database-options.d.ts.map +1 -0
  144. package/dist/jobs/database/{sms-queue-database-options.js → msg91-sms-queue-database-options.js} +1 -1
  145. package/dist/jobs/database/msg91-sms-queue-database-options.js.map +1 -0
  146. package/dist/jobs/database/{sms-subscriber-database.service.d.ts → msg91-sms-subscriber-database.service.d.ts} +5 -5
  147. package/dist/jobs/database/msg91-sms-subscriber-database.service.d.ts.map +1 -0
  148. package/dist/jobs/database/{sms-subscriber-database.service.js → msg91-sms-subscriber-database.service.js} +14 -12
  149. package/dist/jobs/database/msg91-sms-subscriber-database.service.js.map +1 -0
  150. package/dist/jobs/database/otp-subscriber-database.service.d.ts +4 -4
  151. package/dist/jobs/database/otp-subscriber-database.service.d.ts.map +1 -1
  152. package/dist/jobs/database/otp-subscriber-database.service.js +6 -4
  153. package/dist/jobs/database/otp-subscriber-database.service.js.map +1 -1
  154. package/dist/jobs/database/twilio-sms-subscriber-database.service.d.ts +3 -3
  155. package/dist/jobs/database/twilio-sms-subscriber-database.service.d.ts.map +1 -1
  156. package/dist/jobs/database/twilio-sms-subscriber-database.service.js +6 -4
  157. package/dist/jobs/database/twilio-sms-subscriber-database.service.js.map +1 -1
  158. package/dist/jobs/{sms-publisher.service.d.ts → msg91-otp-publisher.service.d.ts} +2 -2
  159. package/dist/jobs/msg91-otp-publisher.service.d.ts.map +1 -0
  160. package/dist/jobs/{sms-publisher.service.js → msg91-otp-publisher.service.js} +8 -8
  161. package/dist/jobs/msg91-otp-publisher.service.js.map +1 -0
  162. package/dist/jobs/{sms-queue-options.d.ts → msg91-otp-queue-options.d.ts} +1 -1
  163. package/dist/jobs/msg91-otp-queue-options.d.ts.map +1 -0
  164. package/dist/jobs/{otp-queue-options.js → msg91-otp-queue-options.js} +1 -1
  165. package/dist/jobs/msg91-otp-queue-options.js.map +1 -0
  166. package/dist/jobs/{sms-subscriber.service.d.ts → msg91-otp-subscriber.service.d.ts} +6 -6
  167. package/dist/jobs/msg91-otp-subscriber.service.d.ts.map +1 -0
  168. package/dist/jobs/{otp-subscriber.service.js → msg91-otp-subscriber.service.js} +14 -12
  169. package/dist/jobs/msg91-otp-subscriber.service.js.map +1 -0
  170. package/dist/jobs/{otp-publisher.service.d.ts → msg91-sms-publisher.service.d.ts} +2 -2
  171. package/dist/jobs/msg91-sms-publisher.service.d.ts.map +1 -0
  172. package/dist/jobs/{otp-publisher.service.js → msg91-sms-publisher.service.js} +8 -8
  173. package/dist/jobs/msg91-sms-publisher.service.js.map +1 -0
  174. package/dist/jobs/{otp-queue-options.d.ts → msg91-sms-queue-options.d.ts} +1 -1
  175. package/dist/jobs/msg91-sms-queue-options.d.ts.map +1 -0
  176. package/dist/jobs/{sms-queue-options.js → msg91-sms-queue-options.js} +1 -1
  177. package/dist/jobs/msg91-sms-queue-options.js.map +1 -0
  178. package/dist/jobs/{otp-subscriber.service.d.ts → msg91-sms-subscriber.service.d.ts} +7 -7
  179. package/dist/jobs/msg91-sms-subscriber.service.d.ts.map +1 -0
  180. package/dist/jobs/{sms-subscriber.service.js → msg91-sms-subscriber.service.js} +14 -12
  181. package/dist/jobs/msg91-sms-subscriber.service.js.map +1 -0
  182. package/dist/jobs/twilio-sms-subscriber.service.d.ts +3 -3
  183. package/dist/jobs/twilio-sms-subscriber.service.d.ts.map +1 -1
  184. package/dist/jobs/twilio-sms-subscriber.service.js +6 -4
  185. package/dist/jobs/twilio-sms-subscriber.service.js.map +1 -1
  186. package/dist/repository/media.repository.d.ts.map +1 -1
  187. package/dist/repository/media.repository.js +4 -0
  188. package/dist/repository/media.repository.js.map +1 -1
  189. package/dist/repository/model-sequence.repository.d.ts +14 -0
  190. package/dist/repository/model-sequence.repository.d.ts.map +1 -0
  191. package/dist/repository/model-sequence.repository.js +103 -0
  192. package/dist/repository/model-sequence.repository.js.map +1 -0
  193. package/dist/seeders/module-metadata-seeder.service.d.ts +7 -12
  194. package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
  195. package/dist/seeders/module-metadata-seeder.service.js +87 -27
  196. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  197. package/dist/seeders/seed-data/solid-core-metadata.json +373 -52
  198. package/dist/seeders/system-fields-seeder.service.d.ts +1 -0
  199. package/dist/seeders/system-fields-seeder.service.d.ts.map +1 -1
  200. package/dist/seeders/system-fields-seeder.service.js +11 -2
  201. package/dist/seeders/system-fields-seeder.service.js.map +1 -1
  202. package/dist/seeders/user-seeder.service.d.ts.map +1 -1
  203. package/dist/seeders/user-seeder.service.js +5 -4
  204. package/dist/seeders/user-seeder.service.js.map +1 -1
  205. package/dist/services/action-metadata.service.d.ts.map +1 -1
  206. package/dist/services/action-metadata.service.js +1 -0
  207. package/dist/services/action-metadata.service.js.map +1 -1
  208. package/dist/services/ai-interaction.service.d.ts.map +1 -1
  209. package/dist/services/ai-interaction.service.js +1 -0
  210. package/dist/services/ai-interaction.service.js.map +1 -1
  211. package/dist/services/authentication.service.d.ts +6 -3
  212. package/dist/services/authentication.service.d.ts.map +1 -1
  213. package/dist/services/authentication.service.js +70 -27
  214. package/dist/services/authentication.service.js.map +1 -1
  215. package/dist/services/chatter-message-details.service.d.ts.map +1 -1
  216. package/dist/services/chatter-message-details.service.js +1 -0
  217. package/dist/services/chatter-message-details.service.js.map +1 -1
  218. package/dist/services/chatter-message.service.d.ts.map +1 -1
  219. package/dist/services/chatter-message.service.js +7 -3
  220. package/dist/services/chatter-message.service.js.map +1 -1
  221. package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.js +7 -5
  222. package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.js.map +1 -1
  223. package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.d.ts +15 -0
  224. package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.d.ts.map +1 -0
  225. package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.js +72 -0
  226. package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.js.map +1 -0
  227. package/dist/services/crud-helper.service.d.ts +23 -6
  228. package/dist/services/crud-helper.service.d.ts.map +1 -1
  229. package/dist/services/crud-helper.service.js +257 -45
  230. package/dist/services/crud-helper.service.js.map +1 -1
  231. package/dist/services/crud.service.d.ts +4 -3
  232. package/dist/services/crud.service.d.ts.map +1 -1
  233. package/dist/services/crud.service.js +53 -24
  234. package/dist/services/crud.service.js.map +1 -1
  235. package/dist/services/database/database-bootstrap.service.d.ts +12 -0
  236. package/dist/services/database/database-bootstrap.service.d.ts.map +1 -0
  237. package/dist/services/database/database-bootstrap.service.js +115 -0
  238. package/dist/services/database/database-bootstrap.service.js.map +1 -0
  239. package/dist/services/email-template.service.d.ts +7 -7
  240. package/dist/services/email-template.service.d.ts.map +1 -1
  241. package/dist/services/email-template.service.js +8 -7
  242. package/dist/services/email-template.service.js.map +1 -1
  243. package/dist/services/excel.service.d.ts +11 -0
  244. package/dist/services/excel.service.d.ts.map +1 -1
  245. package/dist/services/excel.service.js +104 -0
  246. package/dist/services/excel.service.js.map +1 -1
  247. package/dist/services/field-metadata.service.d.ts +4 -1
  248. package/dist/services/field-metadata.service.d.ts.map +1 -1
  249. package/dist/services/field-metadata.service.js +35 -30
  250. package/dist/services/field-metadata.service.js.map +1 -1
  251. package/dist/services/file.service.d.ts +1 -0
  252. package/dist/services/file.service.d.ts.map +1 -1
  253. package/dist/services/file.service.js +9 -0
  254. package/dist/services/file.service.js.map +1 -1
  255. package/dist/services/fixtures.service.d.ts +13 -0
  256. package/dist/services/fixtures.service.d.ts.map +1 -0
  257. package/dist/services/fixtures.service.js +95 -0
  258. package/dist/services/fixtures.service.js.map +1 -0
  259. package/dist/services/genai/ingest-metadata.service.d.ts.map +1 -1
  260. package/dist/services/genai/ingest-metadata.service.js +1 -1
  261. package/dist/services/genai/ingest-metadata.service.js.map +1 -1
  262. package/dist/services/import-transaction-error-log.service.d.ts.map +1 -1
  263. package/dist/services/import-transaction-error-log.service.js +1 -0
  264. package/dist/services/import-transaction-error-log.service.js.map +1 -1
  265. package/dist/services/import-transaction.service.d.ts.map +1 -1
  266. package/dist/services/import-transaction.service.js +7 -1
  267. package/dist/services/import-transaction.service.js.map +1 -1
  268. package/dist/services/list-of-values.service.d.ts +2 -2
  269. package/dist/services/list-of-values.service.d.ts.map +1 -1
  270. package/dist/services/list-of-values.service.js +2 -1
  271. package/dist/services/list-of-values.service.js.map +1 -1
  272. package/dist/services/locale.service.d.ts.map +1 -1
  273. package/dist/services/locale.service.js +1 -0
  274. package/dist/services/locale.service.js.map +1 -1
  275. package/dist/services/mail/smtp-email.service.js +0 -1
  276. package/dist/services/mail/smtp-email.service.js.map +1 -1
  277. package/dist/services/media.service.d.ts +3 -3
  278. package/dist/services/media.service.d.ts.map +1 -1
  279. package/dist/services/media.service.js +6 -4
  280. package/dist/services/media.service.js.map +1 -1
  281. package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts.map +1 -1
  282. package/dist/services/mediaStorageProviders/file-s3-storage-provider.js +17 -6
  283. package/dist/services/mediaStorageProviders/file-s3-storage-provider.js.map +1 -1
  284. package/dist/services/mediaStorageProviders/file-storage-provider.d.ts.map +1 -1
  285. package/dist/services/mediaStorageProviders/file-storage-provider.js +0 -13
  286. package/dist/services/mediaStorageProviders/file-storage-provider.js.map +1 -1
  287. package/dist/services/menu-item-metadata.service.d.ts.map +1 -1
  288. package/dist/services/menu-item-metadata.service.js +4 -0
  289. package/dist/services/menu-item-metadata.service.js.map +1 -1
  290. package/dist/services/model-metadata.service.d.ts +28 -1
  291. package/dist/services/model-metadata.service.d.ts.map +1 -1
  292. package/dist/services/model-metadata.service.js +111 -44
  293. package/dist/services/model-metadata.service.js.map +1 -1
  294. package/dist/services/model-sequence.service.d.ts +23 -0
  295. package/dist/services/model-sequence.service.d.ts.map +1 -0
  296. package/dist/services/model-sequence.service.js +55 -0
  297. package/dist/services/model-sequence.service.js.map +1 -0
  298. package/dist/services/module-metadata.service.d.ts +1 -0
  299. package/dist/services/module-metadata.service.d.ts.map +1 -1
  300. package/dist/services/module-metadata.service.js +35 -1
  301. package/dist/services/module-metadata.service.js.map +1 -1
  302. package/dist/services/permission-metadata.service.d.ts +5 -5
  303. package/dist/services/permission-metadata.service.d.ts.map +1 -1
  304. package/dist/services/permission-metadata.service.js +6 -5
  305. package/dist/services/permission-metadata.service.js.map +1 -1
  306. package/dist/services/queues/database-subscriber.service.d.ts.map +1 -1
  307. package/dist/services/queues/database-subscriber.service.js +2 -1
  308. package/dist/services/queues/database-subscriber.service.js.map +1 -1
  309. package/dist/services/queues/rabbitmq-subscriber.service.d.ts.map +1 -1
  310. package/dist/services/queues/rabbitmq-subscriber.service.js +2 -2
  311. package/dist/services/queues/rabbitmq-subscriber.service.js.map +1 -1
  312. package/dist/services/role-metadata.service.d.ts.map +1 -1
  313. package/dist/services/role-metadata.service.js +1 -0
  314. package/dist/services/role-metadata.service.js.map +1 -1
  315. package/dist/services/scheduled-job.service.d.ts +6 -6
  316. package/dist/services/scheduled-job.service.d.ts.map +1 -1
  317. package/dist/services/scheduled-job.service.js +8 -8
  318. package/dist/services/scheduled-job.service.js.map +1 -1
  319. package/dist/services/scheduled-jobs/scheduler.service.d.ts.map +1 -1
  320. package/dist/services/scheduled-jobs/scheduler.service.js +4 -0
  321. package/dist/services/scheduled-jobs/scheduler.service.js.map +1 -1
  322. package/dist/services/security-rule.service.d.ts.map +1 -1
  323. package/dist/services/security-rule.service.js +1 -0
  324. package/dist/services/security-rule.service.js.map +1 -1
  325. package/dist/services/selection-providers/list-of-models-selection-provider.service.d.ts.map +1 -1
  326. package/dist/services/selection-providers/list-of-models-selection-provider.service.js +4 -0
  327. package/dist/services/selection-providers/list-of-models-selection-provider.service.js.map +1 -1
  328. package/dist/services/setting.service.d.ts +7 -5
  329. package/dist/services/setting.service.d.ts.map +1 -1
  330. package/dist/services/setting.service.js +28 -48
  331. package/dist/services/setting.service.js.map +1 -1
  332. package/dist/services/sms/Msg91BaseSMSService.js +6 -6
  333. package/dist/services/sms/Msg91BaseSMSService.js.map +1 -1
  334. package/dist/services/sms/Msg91OTPService.d.ts.map +1 -1
  335. package/dist/services/sms/Msg91OTPService.js +3 -1
  336. package/dist/services/sms/Msg91OTPService.js.map +1 -1
  337. package/dist/services/sms/Msg91SMSService.d.ts.map +1 -1
  338. package/dist/services/sms/Msg91SMSService.js +3 -1
  339. package/dist/services/sms/Msg91SMSService.js.map +1 -1
  340. package/dist/services/sms/TwilioSMSService.d.ts.map +1 -1
  341. package/dist/services/sms/TwilioSMSService.js +2 -0
  342. package/dist/services/sms/TwilioSMSService.js.map +1 -1
  343. package/dist/services/sms-template.service.d.ts +7 -7
  344. package/dist/services/sms-template.service.d.ts.map +1 -1
  345. package/dist/services/sms-template.service.js +8 -7
  346. package/dist/services/sms-template.service.js.map +1 -1
  347. package/dist/services/solid-introspect.service.d.ts +5 -13
  348. package/dist/services/solid-introspect.service.d.ts.map +1 -1
  349. package/dist/services/solid-introspect.service.js +18 -22
  350. package/dist/services/solid-introspect.service.js.map +1 -1
  351. package/dist/services/solid-ts-morph.service.js +2 -2
  352. package/dist/services/solid-ts-morph.service.js.map +1 -1
  353. package/dist/services/user-activity-history.service.d.ts.map +1 -1
  354. package/dist/services/user-activity-history.service.js +1 -0
  355. package/dist/services/user-activity-history.service.js.map +1 -1
  356. package/dist/services/user-view-metadata.service.d.ts.map +1 -1
  357. package/dist/services/user-view-metadata.service.js +3 -2
  358. package/dist/services/user-view-metadata.service.js.map +1 -1
  359. package/dist/services/user.service.d.ts.map +1 -1
  360. package/dist/services/user.service.js +1 -0
  361. package/dist/services/user.service.js.map +1 -1
  362. package/dist/services/view-metadata.service.d.ts +1 -1
  363. package/dist/services/view-metadata.service.d.ts.map +1 -1
  364. package/dist/services/view-metadata.service.js +3 -1
  365. package/dist/services/view-metadata.service.js.map +1 -1
  366. package/dist/solid-core-cli-db.module.d.ts.map +1 -1
  367. package/dist/solid-core-cli-db.module.js +5 -2
  368. package/dist/solid-core-cli-db.module.js.map +1 -1
  369. package/dist/solid-core-cli.module.js +1 -1
  370. package/dist/solid-core-cli.module.js.map +1 -1
  371. package/dist/solid-core.module.d.ts.map +1 -1
  372. package/dist/solid-core.module.js +40 -13
  373. package/dist/solid-core.module.js.map +1 -1
  374. package/dist/subscribers/audit.subscriber.d.ts.map +1 -1
  375. package/dist/subscribers/audit.subscriber.js +5 -1
  376. package/dist/subscribers/audit.subscriber.js.map +1 -1
  377. package/dist/subscribers/computed-entity-field.subscriber.d.ts +4 -2
  378. package/dist/subscribers/computed-entity-field.subscriber.d.ts.map +1 -1
  379. package/dist/subscribers/computed-entity-field.subscriber.js +53 -12
  380. package/dist/subscribers/computed-entity-field.subscriber.js.map +1 -1
  381. package/dist/subscribers/scheduled-job.subscriber.d.ts.map +1 -1
  382. package/dist/subscribers/scheduled-job.subscriber.js +1 -1
  383. package/dist/subscribers/scheduled-job.subscriber.js.map +1 -1
  384. package/dist/transformers/typeorm/local-date-time-transformer.d.ts +5 -0
  385. package/dist/transformers/typeorm/local-date-time-transformer.d.ts.map +1 -0
  386. package/dist/transformers/typeorm/local-date-time-transformer.js +48 -0
  387. package/dist/transformers/typeorm/local-date-time-transformer.js.map +1 -0
  388. package/dist/tsconfig.tsbuildinfo +1 -1
  389. package/docs/grouping-enhancements.md +89 -0
  390. package/package.json +1 -1
  391. package/src/commands/fixtures/fixtures-setup.command.ts +44 -0
  392. package/src/commands/fixtures/fixtures-tear-down.command.ts +45 -0
  393. package/src/commands/refresh-model.command.ts +3 -1
  394. package/src/config/cache.options.ts +6 -3
  395. package/src/config/iam.config.ts +2 -1
  396. package/src/constants/error-messages.ts +7 -1
  397. package/src/controllers/model-metadata.controller.ts +21 -1
  398. package/src/controllers/model-sequence.controller.ts +93 -0
  399. package/src/controllers/setting.controller.ts +62 -54
  400. package/src/decorators/sms-provider.decorator.ts +7 -0
  401. package/src/dtos/basic-filters.dto.ts +6 -1
  402. package/src/dtos/basic-group-filters.dto.ts +23 -0
  403. package/src/dtos/create-field-metadata.dto.ts +1 -1
  404. package/src/dtos/create-model-sequence.dto.ts +51 -0
  405. package/src/dtos/create-role-metadata.dto.ts +16 -3
  406. package/src/dtos/get-mcp-url.dto.ts +13 -0
  407. package/src/dtos/navigation.dto.ts +14 -0
  408. package/src/dtos/resolve-s3-url.dto.ts +9 -11
  409. package/src/dtos/sign-in.dto.ts +3 -3
  410. package/src/dtos/update-model-sequence.dto.ts +53 -0
  411. package/src/entities/common.entity.ts +8 -8
  412. package/src/entities/field-metadata.entity.ts +1 -1
  413. package/src/entities/legacy-common.entity.ts +8 -6
  414. package/src/entities/model-metadata.entity.ts +1 -1
  415. package/src/entities/model-sequence.entity.ts +32 -0
  416. package/src/factories/mail.factory.ts +0 -1
  417. package/src/factories/sms.factory.ts +43 -0
  418. package/src/helpers/date.helper.ts +38 -9
  419. package/src/helpers/field-crud-managers/BigIntFieldCrudManager.ts +18 -5
  420. package/src/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.ts +9 -9
  421. package/src/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.ts +16 -8
  422. package/src/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.ts +9 -9
  423. package/src/helpers/model-metadata-helper.service.ts +6 -4
  424. package/src/helpers/module-metadata-helper.service.ts +18 -1
  425. package/src/helpers/module.helper.ts +40 -5
  426. package/src/helpers/solid-registry.ts +23 -0
  427. package/src/index.ts +12 -7
  428. package/src/jobs/computed-field-evaluation-subscriber.service.ts +15 -4
  429. package/src/jobs/database/{sms-publisher-database.service.ts → msg91-sms-publisher-database.service.ts} +2 -2
  430. package/src/jobs/database/{sms-subscriber-database.service.ts → msg91-sms-subscriber-database.service.ts} +9 -4
  431. package/src/jobs/database/otp-subscriber-database.service.ts +8 -2
  432. package/src/jobs/database/twilio-sms-subscriber-database.service.ts +5 -2
  433. package/src/jobs/{otp-publisher.service.ts → msg91-otp-publisher.service.ts} +2 -2
  434. package/src/jobs/{otp-subscriber.service.ts → msg91-otp-subscriber.service.ts} +10 -4
  435. package/src/jobs/{sms-publisher.service.ts → msg91-sms-publisher.service.ts} +2 -2
  436. package/src/jobs/{sms-subscriber.service.ts → msg91-sms-subscriber.service.ts} +9 -4
  437. package/src/jobs/twilio-sms-subscriber.service.ts +6 -2
  438. package/src/repository/media.repository.ts +3 -2
  439. package/src/repository/model-sequence.repository.ts +97 -0
  440. package/src/seeders/module-metadata-seeder.service.ts +133 -34
  441. package/src/seeders/seed-data/email-templates/email-on-signup.handlebars.html +155 -0
  442. package/src/seeders/seed-data/sms-templates/text-on-signup.handlebars.txt +10 -0
  443. package/src/seeders/seed-data/solid-core-metadata.json +374 -53
  444. package/src/seeders/system-fields-seeder.service.ts +6 -2
  445. package/src/seeders/user-seeder.service.ts +5 -4
  446. package/src/services/action-metadata.service.ts +3 -2
  447. package/src/services/ai-interaction.service.ts +2 -1
  448. package/src/services/authentication.service.ts +119 -24
  449. package/src/services/chatter-message-details.service.ts +2 -1
  450. package/src/services/chatter-message.service.ts +10 -4
  451. package/src/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.ts +9 -9
  452. package/src/services/computed-fields/entity/sequence-num-computed-field-provider.ts +86 -0
  453. package/src/services/crud-helper.service.ts +287 -49
  454. package/src/services/crud.service.ts +95 -45
  455. package/src/services/database/database-bootstrap.service.ts +91 -0
  456. package/src/services/email-template.service.ts +11 -13
  457. package/src/services/excel.service.ts +152 -3
  458. package/src/services/field-metadata.service.ts +102 -55
  459. package/src/services/file.service.ts +9 -0
  460. package/src/services/fixtures.service.ts +108 -0
  461. package/src/services/genai/ingest-metadata.service.ts +4 -3
  462. package/src/services/import-transaction-error-log.service.ts +2 -1
  463. package/src/services/import-transaction.service.ts +8 -4
  464. package/src/services/list-of-values.service.ts +4 -4
  465. package/src/services/locale.service.ts +2 -1
  466. package/src/services/mail/smtp-email.service.ts +1 -1
  467. package/src/services/media.service.ts +10 -11
  468. package/src/services/mediaStorageProviders/file-s3-storage-provider.ts +22 -7
  469. package/src/services/mediaStorageProviders/file-storage-provider.ts +18 -13
  470. package/src/services/menu-item-metadata.service.ts +6 -2
  471. package/src/services/model-metadata.service.ts +201 -44
  472. package/src/services/model-sequence.service.ts +33 -0
  473. package/src/services/module-metadata.service.ts +49 -2
  474. package/src/services/permission-metadata.service.ts +8 -9
  475. package/src/services/queues/database-subscriber.service.ts +3 -1
  476. package/src/services/queues/rabbitmq-subscriber.service.ts +4 -2
  477. package/src/services/role-metadata.service.ts +1 -0
  478. package/src/services/scheduled-job.service.ts +9 -9
  479. package/src/services/scheduled-jobs/scheduler.service.ts +5 -0
  480. package/src/services/security-rule.service.ts +1 -0
  481. package/src/services/selection-providers/list-of-models-selection-provider.service.ts +5 -2
  482. package/src/services/setting.service.ts +42 -55
  483. package/src/services/sms/Msg91BaseSMSService.ts +6 -6
  484. package/src/services/sms/Msg91OTPService.ts +3 -2
  485. package/src/services/sms/Msg91SMSService.ts +3 -1
  486. package/src/services/sms/TwilioSMSService.ts +3 -3
  487. package/src/services/sms-template.service.ts +11 -13
  488. package/src/services/solid-introspect.service.ts +28 -19
  489. package/src/services/solid-ts-morph.service.ts +2 -2
  490. package/src/services/user-activity-history.service.ts +3 -2
  491. package/src/services/user-view-metadata.service.ts +4 -3
  492. package/src/services/user.service.ts +2 -1
  493. package/src/services/view-metadata.service.ts +5 -4
  494. package/src/solid-core-cli-db.module.ts +5 -4
  495. package/src/solid-core-cli.module.ts +2 -2
  496. package/src/solid-core.module.ts +42 -13
  497. package/src/subscribers/audit.subscriber.ts +3 -2
  498. package/src/subscribers/computed-entity-field.subscriber.ts +60 -17
  499. package/src/subscribers/scheduled-job.subscriber.ts +9 -2
  500. package/src/transformers/typeorm/local-date-time-transformer.ts +55 -0
  501. package/dist/jobs/database/sms-publisher-database.service.d.ts.map +0 -1
  502. package/dist/jobs/database/sms-publisher-database.service.js.map +0 -1
  503. package/dist/jobs/database/sms-queue-database-options.d.ts.map +0 -1
  504. package/dist/jobs/database/sms-queue-database-options.js.map +0 -1
  505. package/dist/jobs/database/sms-subscriber-database.service.d.ts.map +0 -1
  506. package/dist/jobs/database/sms-subscriber-database.service.js.map +0 -1
  507. package/dist/jobs/otp-publisher.service.d.ts.map +0 -1
  508. package/dist/jobs/otp-publisher.service.js.map +0 -1
  509. package/dist/jobs/otp-queue-options.d.ts.map +0 -1
  510. package/dist/jobs/otp-queue-options.js.map +0 -1
  511. package/dist/jobs/otp-subscriber.service.d.ts.map +0 -1
  512. package/dist/jobs/otp-subscriber.service.js.map +0 -1
  513. package/dist/jobs/sms-publisher.service.d.ts.map +0 -1
  514. package/dist/jobs/sms-publisher.service.js.map +0 -1
  515. package/dist/jobs/sms-queue-options.d.ts.map +0 -1
  516. package/dist/jobs/sms-queue-options.js.map +0 -1
  517. package/dist/jobs/sms-subscriber.service.d.ts.map +0 -1
  518. package/dist/jobs/sms-subscriber.service.js.map +0 -1
  519. /package/sql/{mssql → default/mssql}/proc_CleanupModelMetadata.sql +0 -0
  520. /package/sql/{mssql → default/mssql}/proc_CleanupModuleMetadata.sql +0 -0
  521. /package/sql/{mssql/scratchpad.sql → default/mssql/scratchpad.sql.txt} +0 -0
  522. /package/sql/{postgres → default/postgres}/proc_CleanupModelMetadata.sql +0 -0
  523. /package/sql/{postgres → default/postgres}/proc_CleanupModuleMetadata.sql +0 -0
  524. /package/sql/{postgres/scratchpad.sql → default/postgres/scratchpad.sql.txt} +0 -0
  525. /package/src/jobs/database/{sms-queue-database-options.ts → msg91-sms-queue-database-options.ts} +0 -0
  526. /package/src/jobs/{otp-queue-options.ts → msg91-otp-queue-options.ts} +0 -0
  527. /package/src/jobs/{sms-queue-options.ts → msg91-sms-queue-options.ts} +0 -0
@@ -1,25 +1,28 @@
1
- import { Inject, Injectable } from '@nestjs/common';
1
+ import { BadRequestException, ForbiddenException, forwardRef, Inject, Injectable } from '@nestjs/common';
2
2
  import { DiscoveryService, ModuleRef } from "@nestjs/core";
3
3
  import { InjectEntityManager, InjectRepository } from '@nestjs/typeorm';
4
4
  import { EntityManager, Repository } from 'typeorm';
5
5
 
6
6
  import { ConfigService, ConfigType } from '@nestjs/config';
7
+ import commonConfig from 'src/config/common.config';
8
+ import { iamConfig } from 'src/config/iam.config';
9
+ import { ERROR_MESSAGES } from 'src/constants/error-messages';
10
+ import { CreateSettingDto } from 'src/dtos/create-setting.dto';
11
+ import { GetMcpUrlDto } from 'src/dtos/get-mcp-url.dto';
12
+ import { User } from 'src/entities/user.entity';
13
+ import { SettingRepository } from 'src/repository/setting.repository';
7
14
  import { CrudHelperService } from 'src/services/crud-helper.service';
8
15
  import { CRUDService } from 'src/services/crud.service';
9
16
  import { FileService } from 'src/services/file.service';
10
17
  import { ModelMetadataService } from 'src/services/model-metadata.service';
11
18
  import { ModuleMetadataService } from 'src/services/module-metadata.service';
12
- import commonConfig from 'src/config/common.config';
13
- import { iamConfig } from 'src/config/iam.config';
14
19
  import { Setting } from '../entities/setting.entity';
15
20
  import { RequestContextService } from './request-context.service';
16
- import { User } from 'src/entities/user.entity';
17
- import { CreateSettingDto } from 'src/dtos/create-setting.dto';
18
- import { SettingRepository } from 'src/repository/setting.repository';
19
21
 
20
22
  @Injectable()
21
23
  export class SettingService extends CRUDService<Setting> {
22
24
  constructor(
25
+ @Inject(forwardRef(() => ModelMetadataService))
23
26
  readonly modelMetadataService: ModelMetadataService,
24
27
  readonly moduleMetadataService: ModuleMetadataService,
25
28
  readonly configService: ConfigService,
@@ -43,48 +46,7 @@ export class SettingService extends CRUDService<Setting> {
43
46
  }
44
47
 
45
48
  async seedDefaultSettings(): Promise<void> {
46
- const settingsSeederData = {
47
- allowPublicRegistration: this.iamConfiguration.allowPublicRegistration,
48
- passwordBasedAuth: this.iamConfiguration.passwordBasedAuth,
49
- passwordLessAuth: this.iamConfiguration.passwordLessAuth,
50
- activateUserOnRegistration: this.iamConfiguration.activateUserOnRegistration,
51
- iamGoogleOAuthEnabled: false,
52
- authPagesLayout: "center",
53
- authPagesTheme: "light",
54
- appLogo: null,
55
- companylogo: null,
56
- favicon: null,
57
- appLogoPosition: "in_form_view",
58
- showAuthContent: false,
59
- appTitle: process.env.SOLID_APP_NAME || "Solid App",
60
- appSubtitle: process.env.SOLID_APP_SUBTITLE || "Lorem Ipsum",
61
- appDescription: process.env.SOLID_APP_DESCRIPTION || "lorem ipsum",
62
- showLegalLinks: false,
63
- appTnc: null,
64
- appPrivacyPolicy: null,
65
- defaultRole: this.iamConfiguration.defaultRole,
66
- shouldQueueEmails: this.commonConfiguration.shouldQueueEmails,
67
- shouldQueueSms: this.commonConfiguration.shouldQueueSms,
68
- enableDarkMode: true,
69
- copyright: null,
70
- enableUsername: true,
71
- enabledNotification: true,
72
- contactSupportEmail: null,
73
- contactSupportDisplayName: null,
74
- contactSupportIcon: null,
75
- authScreenRightBackgroundImage: null,
76
- authScreenLeftBackgroundImage: null,
77
- authScreenCenterBackgroundImage: null,
78
- authenticationPasswordRegex: this.iamConfiguration.PASSWORD_REGEX,
79
- authenticationPasswordRegexErrorMessage: this.iamConfiguration.PASSWORD_REGEX_ERROR_MESSAGE,
80
- authenticationPasswordComplexityDescription: this.iamConfiguration.PASSWORD_COMPLEXITY_DESC,
81
- solidXGenAiCodeBuilderConfig: JSON.stringify({
82
- defaultProvider: "",
83
- availableProviders: []
84
- }),
85
- showNameFieldsForRegistration: this.iamConfiguration.showNameFieldsForRegistration,
86
- forceChangePasswordOnFirstLogin: this.iamConfiguration.forceChangePasswordOnFirstLogin
87
- };
49
+ const settingsSeederData = this.getDefaultSettings();
88
50
 
89
51
  const existingSettings = await this.repo.find();
90
52
  const existingKeys = new Set(existingSettings.map(s => s.key));
@@ -163,6 +125,7 @@ export class SettingService extends CRUDService<Setting> {
163
125
 
164
126
  private getDefaultSettings(): Record<string, any> {
165
127
  return {
128
+ passwordlessRegistrationValidateWhat: this.iamConfiguration.passwordlessRegistrationValidateWhat,
166
129
  allowPublicRegistration: this.iamConfiguration.allowPublicRegistration,
167
130
  passwordBasedAuth: this.iamConfiguration.passwordBasedAuth,
168
131
  passwordLessAuth: this.iamConfiguration.passwordLessAuth,
@@ -173,11 +136,12 @@ export class SettingService extends CRUDService<Setting> {
173
136
  appLogo: null,
174
137
  companylogo: null,
175
138
  favicon: null,
176
- appLogoPosition: "in_form_view", //in_form_view | in_image_view
139
+ // in_form_view | in_image_view
140
+ appLogoPosition: "in_form_view",
177
141
  showAuthContent: false,
178
142
  appTitle: process.env.SOLID_APP_NAME || "Solid App",
179
- appSubtitle: null,
180
- appDescription: null,
143
+ appSubtitle: process.env.SOLID_APP_SUBTITLE || "",
144
+ appDescription: process.env.SOLID_APP_DESCRIPTION || "",
181
145
  showLegalLinks: false,
182
146
  appTnc: null,
183
147
  appPrivacyPolicy: null,
@@ -207,6 +171,10 @@ export class SettingService extends CRUDService<Setting> {
207
171
  };
208
172
  }
209
173
 
174
+ // private async getSettingsFromRepo(): Promise<Setting[]> {
175
+ // const cachedSettings = await this.cacheManager.get('cached-system-settings');
176
+ // }
177
+
210
178
  async getConfigValue(settingKey: string) {
211
179
  try {
212
180
  const settingsArray: Setting[] = await this.repo.find();
@@ -237,10 +205,7 @@ export class SettingService extends CRUDService<Setting> {
237
205
  }
238
206
  }
239
207
 
240
- async updateSettings(
241
- settings: CreateSettingDto[] = [],
242
- uploadedFiles: Array<Express.Multer.File> = []
243
- ): Promise<Setting[]> {
208
+ async updateSettings(settings: CreateSettingDto[] = [], uploadedFiles: Array<Express.Multer.File> = []): Promise<Setting[]> {
244
209
  const activeUser = this.requestContextService.getActiveUser();
245
210
  const userId = activeUser?.sub;
246
211
 
@@ -372,4 +337,26 @@ export class SettingService extends CRUDService<Setting> {
372
337
  return { system, user };
373
338
  }
374
339
 
340
+ async getMcpUrl(getMcpUrlDto: GetMcpUrlDto, solidRequestContext: any = {}): Promise<any> {
341
+
342
+ const { showHeader, inListView } = getMcpUrlDto;
343
+
344
+ if (process.env.MCP_ENABLED === 'false') {
345
+ throw new ForbiddenException(ERROR_MESSAGES.FORBIDDEN);
346
+ }
347
+
348
+ if (solidRequestContext.activeUser) {
349
+ const permissionNames = ["SettingController.getMcpUrl"];
350
+ const matchingPermssions = solidRequestContext.activeUser.permissions.filter((p: any) => permissionNames.includes(p));
351
+ const hasPermission = matchingPermssions.length > 0;
352
+ if (!hasPermission) {
353
+ throw new BadRequestException(ERROR_MESSAGES.FORBIDDEN);
354
+ }
355
+ }
356
+ const apiKey = process.env.MCP_API_KEY;
357
+ const userId = solidRequestContext.activeUser.sub;
358
+ const mcpServerUrl = process.env.MCP_SERVER_URL;
359
+ return { mcpUrl: `${mcpServerUrl}/static/frontend.html?solidx-mcp-api-key=${apiKey}&solidx-user-id=${userId}&solidx-show-header=${showHeader}&solidx-in-list-view=${inListView}` };
360
+ }
361
+
375
362
  }
@@ -22,8 +22,8 @@ export abstract class Msg91BaseSMSService implements ISMS {
22
22
 
23
23
  async sendSMSUsingTemplate(to: string, templateName: string, templateParams: any, shouldQueueSms = false): Promise<any> {
24
24
  // Load template and evaluate it.
25
- const emailTemplate = await this.smsTemplateService.findOneByName(templateName);
26
- if (!emailTemplate) {
25
+ const smsTemplate = await this.smsTemplateService.findOneByName(templateName);
26
+ if (!smsTemplate) {
27
27
  throw new Error(`Invalid template name ${templateName}`);
28
28
  }
29
29
 
@@ -33,12 +33,12 @@ export abstract class Msg91BaseSMSService implements ISMS {
33
33
 
34
34
  // The below code is only for reference, msh91 maintains the SMS templates in their database, and we need to only specify the templateId.
35
35
  // The below was designed assuming that there are certain sms gateways who do not work this way.
36
- if (emailTemplate.body) {
37
- const bodyTemplate = Handlebars.compile(emailTemplate.body);
36
+ if (smsTemplate.body) {
37
+ const bodyTemplate = Handlebars.compile(smsTemplate.body);
38
38
  body = bodyTemplate(templateParams);
39
39
  }
40
- if (emailTemplate.smsProviderTemplateId) {
41
- templateId = emailTemplate.smsProviderTemplateId;
40
+ if (smsTemplate.smsProviderTemplateId) {
41
+ templateId = smsTemplate.smsProviderTemplateId;
42
42
  }
43
43
  if (!body && !templateId) {
44
44
  throw new Error(`Invalid template, neither body nor templateId specified on template with name ${templateName}`);
@@ -7,6 +7,7 @@ import { SmsTemplateService } from "../sms-template.service";
7
7
  import { Msg91BaseSMSService } from "./Msg91BaseSMSService";
8
8
  import { ISMS } from "../../interfaces";
9
9
  import { PublisherFactory } from "../queues/publisher-factory.service";
10
+ import { SmsProvider } from "src/decorators/sms-provider.decorator";
10
11
 
11
12
  interface OtpParams {
12
13
  otp: string,
@@ -16,16 +17,16 @@ interface OtpParams {
16
17
  }
17
18
 
18
19
  @Injectable()
20
+ @SmsProvider()
19
21
  export class Msg91OTPService extends Msg91BaseSMSService implements ISMS {
20
22
  constructor(
21
23
  @Inject(commonConfig.KEY)
22
24
  commonConfiguration: ConfigType<typeof commonConfig>,
23
- // smsPublisher: OTPQueuePublisher,
24
25
  publisherFactory: PublisherFactory<any>,
25
26
  smsTemplateService: SmsTemplateService,
26
27
  private readonly httpService: HttpService,
27
28
  ) {
28
- super(commonConfiguration, 'OTPQueuePublisher', publisherFactory, smsTemplateService);
29
+ super(commonConfiguration, 'Msg91OTPQueuePublisher', publisherFactory, smsTemplateService);
29
30
  }
30
31
 
31
32
  async sendSMSSynchronously(message: QueueMessage<any>): Promise<any> {
@@ -7,8 +7,10 @@ import { SmsTemplateService } from "../sms-template.service";
7
7
  import { Msg91BaseSMSService } from "./Msg91BaseSMSService";
8
8
  import { ISMS } from "../../interfaces";
9
9
  import { PublisherFactory } from "../queues/publisher-factory.service";
10
+ import { SmsProvider } from "src/decorators/sms-provider.decorator";
10
11
 
11
12
  @Injectable()
13
+ @SmsProvider()
12
14
  export class Msg91SMSService extends Msg91BaseSMSService implements ISMS {
13
15
  constructor(
14
16
  @Inject(commonConfig.KEY)
@@ -18,7 +20,7 @@ export class Msg91SMSService extends Msg91BaseSMSService implements ISMS {
18
20
  smsTemplateService: SmsTemplateService,
19
21
  private readonly httpService: HttpService,
20
22
  ) {
21
- super(commonConfiguration, 'SmsQueuePublisher', publisherFactory, smsTemplateService)
23
+ super(commonConfiguration, 'Msg91SmsQueuePublisher', publisherFactory, smsTemplateService)
22
24
  }
23
25
 
24
26
  async sendSMSSynchronously(message: QueueMessage<any>): Promise<any> {
@@ -7,9 +7,11 @@ import { ISMS } from "../../interfaces";
7
7
  import { PublisherFactory } from "../queues/publisher-factory.service";
8
8
  import twilio from 'twilio';
9
9
  import { QueueMessage } from "src/interfaces/mq";
10
+ import { SmsProvider } from "src/decorators/sms-provider.decorator";
10
11
 
11
12
 
12
13
  @Injectable()
14
+ @SmsProvider()
13
15
  export class TwilioSMSService implements ISMS {
14
16
  private readonly logger = new Logger(TwilioSMSService.name);
15
17
 
@@ -18,9 +20,7 @@ export class TwilioSMSService implements ISMS {
18
20
  private commonConfiguration: ConfigType<typeof commonConfig>,
19
21
  private publisherFactory: PublisherFactory<any>,
20
22
  private smsTemplateService: SmsTemplateService,
21
- ) {
22
- // super(commonConfiguration, 'OTPQueuePublisher', publisherFactory, smsTemplateService);
23
- }
23
+ ) { }
24
24
 
25
25
  async sendSMS(to: string, body: string, shouldQueueSms: boolean): Promise<any> {
26
26
  const accountSid = this.commonConfiguration.twilio.accountSid;
@@ -1,25 +1,23 @@
1
- import { Injectable, NotFoundException } from '@nestjs/common';
1
+ import { forwardRef, Inject, Injectable } from '@nestjs/common';
2
2
 
3
- import { InjectEntityManager, InjectRepository } from '@nestjs/typeorm';
4
- import { EntityManager, Repository } from 'typeorm';
5
- import { PaginationQueryDto } from 'src/dtos/pagination-query.dto';
3
+ import { ConfigService } from '@nestjs/config';
4
+ import { DiscoveryService, ModuleRef } from '@nestjs/core';
5
+ import { InjectEntityManager } from '@nestjs/typeorm';
6
+ import { SmsTemplateRepository } from 'src/repository/sms-template.repository';
7
+ import { EntityManager } from 'typeorm';
6
8
  import { SmsTemplate } from '../entities/sms-template.entity';
7
- import { CreateSmsTemplateDto } from '../dtos/create-sms-template.dto';
8
- import { UpdateSmsTemplateDto } from '../dtos/update-sms-template.dto';
9
+ import { CrudHelperService } from './crud-helper.service';
9
10
  import { CRUDService } from './crud.service';
10
- import { ModelMetadataService } from './model-metadata.service';
11
- import { ModuleMetadataService } from './module-metadata.service';
12
- import { MediaStorageProviderMetadataService } from './media-storage-provider-metadata.service';
13
- import { ConfigService } from '@nestjs/config';
14
11
  import { FileService } from './file.service';
12
+ import { MediaStorageProviderMetadataService } from './media-storage-provider-metadata.service';
15
13
  import { MediaService } from './media.service';
16
- import { DiscoveryService, ModuleRef } from '@nestjs/core';
17
- import { CrudHelperService } from './crud-helper.service';
18
- import { SmsTemplateRepository } from 'src/repository/sms-template.repository';
14
+ import { ModelMetadataService } from './model-metadata.service';
15
+ import { ModuleMetadataService } from './module-metadata.service';
19
16
 
20
17
  @Injectable()
21
18
  export class SmsTemplateService extends CRUDService<SmsTemplate>{
22
19
  constructor(
20
+ @Inject(forwardRef(() => ModelMetadataService))
23
21
  readonly modelMetadataService: ModelMetadataService,
24
22
  readonly moduleMetadataService: ModuleMetadataService,
25
23
  readonly mediaStorageProviderService: MediaStorageProviderMetadataService,
@@ -1,5 +1,5 @@
1
1
  import { classify } from '@angular-devkit/core/src/utils/strings';
2
- import { forwardRef, Inject, Injectable, Logger, OnApplicationBootstrap } from '@nestjs/common';
2
+ import { Injectable, Logger, OnApplicationBootstrap } from '@nestjs/common';
3
3
  import { DiscoveryService, MetadataScanner, ModuleRef, Reflector } from '@nestjs/core';
4
4
  import { InstanceWrapper } from '@nestjs/core/injector/instance-wrapper';
5
5
  import { getDataSourceToken } from '@nestjs/typeorm';
@@ -14,16 +14,13 @@ import { IS_SELECTION_PROVIDER } from 'src/decorators/selection-provider.decorat
14
14
  import { IS_SOLID_DATABASE_MODULE } from 'src/decorators/solid-database-module.decorator';
15
15
  import { IS_WA_PROVIDER } from 'src/decorators/whatsapp-provider.decorator';
16
16
  import { SolidRegistry } from 'src/helpers/solid-registry';
17
- import { DataSource } from 'typeorm';
18
- import { CRUDService } from './crud.service';
19
- import { RequestContextService } from './request-context.service';
20
- import { CreatedByUpdatedBySubscriber } from 'src/subscribers/created-by-updated-by.subscriber';
21
17
  import { AuditSubscriber } from 'src/subscribers/audit.subscriber';
22
- import { ComputedEntityFieldSubscriber, ComputedFieldEvaluationPayload } from 'src/subscribers/computed-entity-field.subscriber';
18
+ import { ComputedEntityFieldSubscriber } from 'src/subscribers/computed-entity-field.subscriber';
19
+ import { CreatedByUpdatedBySubscriber } from 'src/subscribers/created-by-updated-by.subscriber';
23
20
  import { SoftDeleteAwareEventSubscriber } from 'src/subscribers/soft-delete-aware-event.subscriber';
24
- import { ChatterMessageService } from './chatter-message.service';
25
- import { ModelMetadataRepository } from 'src/repository/model-metadata.repository';
26
- import { ModelMetadataHelperService, PublisherFactory } from 'src';
21
+ import { DataSource } from 'typeorm';
22
+ import { CRUDService } from './crud.service';
23
+ import { IS_SMS_PROVIDER } from 'src/decorators/sms-provider.decorator';
27
24
 
28
25
  export const coreSubscriberClasses = [
29
26
  AuditSubscriber,
@@ -40,20 +37,11 @@ export class SolidIntrospectService implements OnApplicationBootstrap {
40
37
  private readonly metadataScanner: MetadataScanner,
41
38
  private readonly solidRegistry: SolidRegistry,
42
39
  private readonly moduleRef: ModuleRef,
43
- private readonly requestContextService: RequestContextService,
44
- // AuditSubscribe related dependencies
45
- private readonly chatterMessageService: ChatterMessageService,
46
- private readonly modelMetadataHelperService: ModelMetadataHelperService,
47
- private readonly modelMetadataRepo: ModelMetadataRepository,
48
- // ComputedEntityFieldSubscriber related dependencies
49
- @Inject(forwardRef(() => PublisherFactory))
50
- private readonly publisherFactory: PublisherFactory<any>,
51
-
52
40
  ) { }
53
41
 
54
42
  private readonly logger = new Logger(SolidIntrospectService.name);
55
43
  async onApplicationBootstrap() {
56
- this.logger.log('Introspecting the application for Solid metadata');
44
+ this.logger.debug('Introspecting the application for Solid metadata');
57
45
 
58
46
  // Register all seeders
59
47
  const seeders = this.discoveryService
@@ -166,6 +154,15 @@ export class SolidIntrospectService implements OnApplicationBootstrap {
166
154
  this.solidRegistry.registerWhatsappProvider(whatsappProvider);
167
155
  });
168
156
 
157
+ // Register all IWhatsappTransport implementations
158
+ const smsProviders = this.discoveryService
159
+ .getProviders()
160
+ .filter((provider) => this.isSmsProvider(provider));
161
+
162
+ smsProviders.forEach((smsProvider) => {
163
+ this.solidRegistry.registerSmsProvider(smsProvider);
164
+ });
165
+
169
166
  // Register all ISecurityRuleConfigProvider implementations
170
167
  const securityRuleConfigProviders = this.discoveryService
171
168
  .getProviders()
@@ -365,6 +362,18 @@ export class SolidIntrospectService implements OnApplicationBootstrap {
365
362
  return !!isWhatsappProvider;
366
363
  }
367
364
 
365
+ private isSmsProvider(provider: InstanceWrapper) {
366
+ const { instance } = provider;
367
+ if (!instance) return false;
368
+
369
+ const isSmsProvider = this.reflector.get<boolean>(
370
+ IS_SMS_PROVIDER,
371
+ instance.constructor,
372
+ );
373
+
374
+ return !!isSmsProvider;
375
+ }
376
+
368
377
  private isSecurityRuleConfigProvider(provider: InstanceWrapper) {
369
378
  const { instance } = provider;
370
379
  if (!instance) return false;
@@ -47,8 +47,8 @@ export class SolidTsMorphService {
47
47
  },
48
48
  });
49
49
 
50
- this.logger.log(`SolidTsMorphService repoRoot = ${this.repoRoot}`);
51
- Object.entries(this.workspaceMap).forEach(([k, v]) => this.logger.log(`workspace '${k}' => ${v}`));
50
+ this.logger.debug(`SolidTsMorphService repoRoot = ${this.repoRoot}`);
51
+ Object.entries(this.workspaceMap).forEach(([k, v]) => this.logger.debug(`workspace '${k}' => ${v}`));
52
52
  }
53
53
 
54
54
  // ---- repo-root discovery ----
@@ -1,7 +1,7 @@
1
- import { Injectable } from '@nestjs/common';
1
+ import { forwardRef, Inject, Injectable } from '@nestjs/common';
2
2
  import { InjectEntityManager, InjectRepository } from '@nestjs/typeorm';
3
3
  import { DiscoveryService, ModuleRef } from "@nestjs/core";
4
- import { EntityManager, Repository } from 'typeorm';
4
+ import { EntityManager, In, Repository } from 'typeorm';
5
5
 
6
6
  import { CRUDService } from 'src/services/crud.service';
7
7
  import { ModelMetadataService } from 'src/services/model-metadata.service';
@@ -19,6 +19,7 @@ import { UserActivityHistoryRepository } from 'src/repository/user-activity-hist
19
19
  @Injectable()
20
20
  export class UserActivityHistoryService extends CRUDService<UserActivityHistory> {
21
21
  constructor(
22
+ @Inject(forwardRef(() => ModelMetadataService))
22
23
  readonly modelMetadataService: ModelMetadataService,
23
24
  readonly moduleMetadataService: ModuleMetadataService,
24
25
  readonly configService: ConfigService,
@@ -1,4 +1,4 @@
1
- import { Injectable } from '@nestjs/common';
1
+ import { forwardRef, Inject, Injectable } from '@nestjs/common';
2
2
  import { InjectEntityManager, InjectRepository } from '@nestjs/typeorm';
3
3
  import { DiscoveryService, ModuleRef } from "@nestjs/core";
4
4
  import { EntityManager, Repository } from 'typeorm';
@@ -19,6 +19,7 @@ import { UserViewMetadataRepository } from 'src/repository/user-view-metadata.re
19
19
  @Injectable()
20
20
  export class UserViewMetadataService extends CRUDService<UserViewMetadata> {
21
21
  constructor(
22
+ @Inject(forwardRef(() => ModelMetadataService))
22
23
  readonly modelMetadataService: ModelMetadataService,
23
24
  readonly moduleMetadataService: ModuleMetadataService,
24
25
  readonly configService: ConfigService,
@@ -42,13 +43,13 @@ export class UserViewMetadataService extends CRUDService<UserViewMetadata> {
42
43
  });
43
44
 
44
45
  if (existing) {
45
- existing.layout = JSON.parse(query.layout);
46
+ existing.layout = query.layout;
46
47
  return await this.repo.save(existing);
47
48
  } else {
48
49
  const newEntry = this.repo.create({
49
50
  user: { id: activeUser?.sub },
50
51
  viewMetadata: { id: query.viewMetadataId },
51
- layout: JSON.parse(query.layout)
52
+ layout: query.layout
52
53
  });
53
54
  return await this.repo.save(newEntry);
54
55
  }
@@ -1,4 +1,4 @@
1
- import { BadRequestException, Inject, Injectable } from '@nestjs/common';
1
+ import { BadRequestException, forwardRef, Inject, Injectable } from '@nestjs/common';
2
2
  import { ConfigService, ConfigType } from '@nestjs/config';
3
3
  import { DiscoveryService, ModuleRef } from "@nestjs/core";
4
4
  import { InjectEntityManager, InjectRepository } from '@nestjs/typeorm';
@@ -22,6 +22,7 @@ import { RoleMetadataRepository } from 'src/repository/role-metadata.repository'
22
22
  @Injectable()
23
23
  export class UserService extends CRUDService<User> {
24
24
  constructor(
25
+ @Inject(forwardRef(() => ModelMetadataService))
25
26
  readonly modelMetadataService: ModelMetadataService,
26
27
  readonly moduleMetadataService: ModuleMetadataService,
27
28
  readonly configService: ConfigService,
@@ -1,4 +1,4 @@
1
- import { BadRequestException, Injectable, Logger } from '@nestjs/common';
1
+ import { BadRequestException, forwardRef, Inject, Injectable, Logger } from '@nestjs/common';
2
2
  import { ConfigService } from '@nestjs/config';
3
3
  import { DiscoveryService, ModuleRef } from "@nestjs/core";
4
4
  import { InjectEntityManager } from '@nestjs/typeorm';
@@ -7,27 +7,27 @@ import { CRUDService } from 'src/services/crud.service';
7
7
  import { FileService } from "src/services/file.service";
8
8
  import { ModelMetadataService } from 'src/services/model-metadata.service';
9
9
  import { ModuleMetadataService } from 'src/services/module-metadata.service';
10
- import { EntityManager } from 'typeorm';
10
+ import { EntityManager, In } from 'typeorm';
11
11
 
12
12
 
13
13
  import { classify } from '@angular-devkit/core/src/utils/strings';
14
14
  import { Locale } from 'src/entities/locale.entity';
15
15
  import { ModelMetadataHelperService } from 'src/helpers/model-metadata-helper.service';
16
16
  import { SolidRegistry } from 'src/helpers/solid-registry';
17
- import { FieldMetadataRepository } from 'src/repository/field-metadata.repository';
18
17
  import { ModelMetadataRepository } from 'src/repository/model-metadata.repository';
19
18
  import { ViewMetadataRepository } from 'src/repository/view-metadata.repository';
20
19
  import { UpdateViewMetadataDto } from '../dtos/update-view-metadata.dto';
21
20
  import { FieldMetadata } from '../entities/field-metadata.entity';
22
21
  import { ViewMetadata } from '../entities/view-metadata.entity';
23
22
  import { ActionMetadataService } from './action-metadata.service';
23
+ import { MenuItemMetadataService } from './menu-item-metadata.service';
24
24
  import { SolidIntrospectService } from './solid-introspect.service';
25
25
  import { UserViewMetadataService } from './user-view-metadata.service';
26
- import { MenuItemMetadataService } from './menu-item-metadata.service';
27
26
 
28
27
  @Injectable()
29
28
  export class ViewMetadataService extends CRUDService<ViewMetadata> {
30
29
  constructor(
30
+ @Inject(forwardRef(() => ModelMetadataService))
31
31
  readonly modelMetadataService: ModelMetadataService,
32
32
  readonly moduleMetadataService: ModuleMetadataService,
33
33
  readonly configService: ConfigService,
@@ -46,6 +46,7 @@ export class ViewMetadataService extends CRUDService<ViewMetadata> {
46
46
  // private readonly fieldMetadataRepo: Repository<FieldMetadata>,
47
47
  // @InjectRepository(ModelMetadata)
48
48
  // private readonly modelMetadataRepo: Repository<ModelMetadata>,
49
+ @Inject(forwardRef(() => ModelMetadataRepository))
49
50
  private readonly modelMetadataRepo: ModelMetadataRepository,
50
51
  private readonly modelMetadataHelperService: ModelMetadataHelperService,
51
52
  readonly moduleRef: ModuleRef
@@ -4,7 +4,8 @@ import { join } from 'path';
4
4
  import { SnakeNamingStrategy } from 'typeorm-naming-strategies';
5
5
  import { WinstonTypeORMLogger } from './winston.logger';
6
6
  import { WINSTON_MODULE_PROVIDER } from 'nest-winston';
7
-
7
+ import { parseBooleanEnv } from './helpers/environment.helper';
8
+ import { Logger } from 'winston';
8
9
  @Module({
9
10
  imports: [
10
11
  TypeOrmModule.forRootAsync({
@@ -47,9 +48,9 @@ import { WINSTON_MODULE_PROVIDER } from 'nest-winston';
47
48
  // autoLoadEntities: true,
48
49
  entities: entities,
49
50
  // your entities will be synced with the database (recommended: disable in prod)
50
- synchronize: Boolean(process.env.DEFAULT_DATABASE_SYNCHRONIZE),
51
- logging: Boolean(process.env.DEFAULT_DATABASE_LOGGING),
52
- // logger: new WinstonTypeORMLogger(logger), // Pass in the custom WinstonLogger
51
+ synchronize: parseBooleanEnv('DEFAULT_DATABASE_SYNCHRONIZE'),
52
+ logging: parseBooleanEnv('DEFAULT_DATABASE_LOGGING'),
53
+ logger: parseBooleanEnv('DEFAULT_DATABASE_LOGGING') ? new WinstonTypeORMLogger(logger) : undefined, // Pass in the custom WinstonLogger
53
54
  namingStrategy: new SnakeNamingStrategy(),
54
55
  // subscribers: subscribers
55
56
  }
@@ -5,7 +5,7 @@ import { WinstonLoggerConfig } from './winston.logger';
5
5
  import { WinstonModule } from 'nest-winston';
6
6
  import { CacheModule } from '@nestjs/cache-manager';
7
7
  import { EventEmitterModule } from '@nestjs/event-emitter';
8
- import { RedisOptions } from './config/cache.options';
8
+ import { CacheManagerOptions } from './config/cache.options';
9
9
  import { ConfigModule } from '@nestjs/config';
10
10
  import Joi from '@hapi/joi';
11
11
 
@@ -31,7 +31,7 @@ import Joi from '@hapi/joi';
31
31
  }),
32
32
 
33
33
  SolidCoreCliDBModule,
34
- CacheModule.registerAsync(RedisOptions),
34
+ CacheModule.registerAsync(CacheManagerOptions),
35
35
  EventEmitterModule.forRoot(),
36
36
  SolidCoreModule, // Import main module without exposing forRoot()
37
37
  ],