@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,4 +1,4 @@
1
- import { Injectable } from '@nestjs/common';
1
+ import { forwardRef, Inject, Injectable } 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,7 +7,7 @@ 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 { ActionMetadataRepository } from 'src/repository/action-metadata.repository';
@@ -16,6 +16,7 @@ import { ActionMetadata } from '../entities/action-metadata.entity';
16
16
  @Injectable()
17
17
  export class ActionMetadataService extends CRUDService<ActionMetadata> {
18
18
  constructor(
19
+ @Inject(forwardRef(() => ModelMetadataService))
19
20
  readonly modelMetadataService: ModelMetadataService,
20
21
  readonly moduleMetadataService: ModuleMetadataService,
21
22
  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 { DiscoveryService, ModuleRef } from "@nestjs/core";
3
3
  import { InjectEntityManager } from '@nestjs/typeorm';
4
4
  import { EntityManager } from 'typeorm';
@@ -24,6 +24,7 @@ export class AiInteractionService extends CRUDService<AiInteraction> {
24
24
  private readonly logger = new Logger(AiInteractionService.name);
25
25
 
26
26
  constructor(
27
+ @Inject(forwardRef(() => ModelMetadataService))
27
28
  readonly modelMetadataService: ModelMetadataService,
28
29
  readonly moduleMetadataService: ModuleMetadataService,
29
30
  readonly configService: ConfigService,
@@ -49,6 +49,7 @@ import { RoleMetadataService } from './role-metadata.service';
49
49
  import { SettingService } from './setting.service';
50
50
  import { UserActivityHistoryService } from './user-activity-history.service';
51
51
  import { UserService } from './user.service';
52
+ import { SmsFactory } from 'src/factories/sms.factory';
52
53
 
53
54
  enum LoginProvider {
54
55
  LOCAL = 'local',
@@ -79,7 +80,8 @@ export class AuthenticationService {
79
80
  private readonly httpService: HttpService,
80
81
  // private readonly mailService: SMTPEMailService,
81
82
  private readonly mailServiceFactory: MailFactory,
82
- private readonly smsService: Msg91OTPService,
83
+ // private readonly smsService: Msg91OTPService,
84
+ private readonly smsFactory: SmsFactory,
83
85
  private readonly eventEmitter: EventEmitter2,
84
86
  private readonly settingService: SettingService,
85
87
  private readonly roleMetadataService: RoleMetadataService,
@@ -197,7 +199,7 @@ export class AuthenticationService {
197
199
  // Merge the extended signUpDto attributes into the user entity
198
200
  //@ts-ignore
199
201
  const extensionUser = extensionUserRepo.merge(extensionUserRepo.create() as T, extensionUserDto);
200
- var { user, pwd, autoGeneratedPwd } = await this.populateForSignup<T>(extensionUser, signUpDto, true, onForcePasswordChange);
202
+ var { user, pwd, autoGeneratedPwd } = await this.populateForSignup<T>(extensionUser, signUpDto, extensionUserDto.active ?? true, onForcePasswordChange);
201
203
  const savedUser = await extensionUserRepo.save(user);
202
204
 
203
205
  await this.handlePostSignup(savedUser, signUpDto.roles, pwd, autoGeneratedPwd);
@@ -278,6 +280,9 @@ export class AuthenticationService {
278
280
  if (user.forcePasswordChange && autoGeneratedPwd) {
279
281
  this.notifyUserOnForcePasswordChange(user, autoGeneratedPwd);
280
282
  }
283
+
284
+ // Send welcome notifications (email/SMS) if enabled.
285
+ await this.notifyUserOnSignup(user);
281
286
  }
282
287
 
283
288
 
@@ -323,6 +328,56 @@ export class AuthenticationService {
323
328
 
324
329
  }
325
330
 
331
+ private isWelcomeEmailEnabled(): boolean {
332
+ return this.iamConfiguration.sendWelcomeEmailOnSignup;
333
+ }
334
+
335
+ private isWelcomeSmsEnabled(): boolean {
336
+ return this.iamConfiguration.sendWelcomeSmsOnSignup;
337
+ }
338
+
339
+ private async notifyUserOnSignup(user: User) {
340
+ const companyLogo = await this.getCompanyLogo();
341
+ // Email welcome
342
+ if (this.isWelcomeEmailEnabled()) {
343
+ const mailService = this.mailServiceFactory.getMailService();
344
+ mailService.sendEmailUsingTemplate(
345
+ user.email,
346
+ 'email-on-signup',
347
+ {
348
+ solidAppName: process.env.SOLID_APP_NAME,
349
+ solidAppWebsiteUrl: process.env.SOLID_APP_WEBSITE_URL,
350
+ frontendLoginPageUrl: process.env.IAM_FRONTEND_APP_LOGIN_PAGE_URL,
351
+ email: user.email,
352
+ fullName: user.fullName,
353
+ userName: user.username,
354
+ companyLogoUrl: companyLogo
355
+ },
356
+ this.commonConfiguration.shouldQueueEmails,
357
+ null,
358
+ null,
359
+ 'user',
360
+ user.id
361
+ );
362
+ }
363
+
364
+ // SMS welcome
365
+ if (this.isWelcomeSmsEnabled() && user.mobile) {
366
+ const smsService = this.smsFactory.getSmsService();
367
+ smsService.sendSMSUsingTemplate(
368
+ user.mobile,
369
+ 'text-on-signup',
370
+ {
371
+ solidAppName: process.env.SOLID_APP_NAME,
372
+ frontendLoginPageUrl: process.env.IAM_FRONTEND_APP_LOGIN_PAGE_URL,
373
+ firstName: user.username,
374
+ fullName: user.fullName ? user.fullName : user.username
375
+ },
376
+ this.commonConfiguration.shouldQueueSms,
377
+ );
378
+ }
379
+ }
380
+
326
381
  async otpInitiateRegistration(signUpDto: OTPSignUpDto) {
327
382
  try {
328
383
  if (!this.isPasswordlessRegistrationEnabled()) {
@@ -444,7 +499,8 @@ export class AuthenticationService {
444
499
  );
445
500
  }
446
501
  if (registrationValidationSources.includes(RegistrationValidationSource.MOBILE)) {
447
- this.smsService.sendSMSUsingTemplate(
502
+ const smsService = this.smsFactory.getSmsService();
503
+ smsService.sendSMSUsingTemplate(
448
504
  user.mobile,
449
505
  'otp-on-register',
450
506
  {
@@ -454,7 +510,8 @@ export class AuthenticationService {
454
510
  firstName: user.username,
455
511
  fullName: user.fullName ? user.fullName : user.username,
456
512
  companyLogoUrl: companyLogo
457
- }
513
+ },
514
+ this.commonConfiguration.shouldQueueSms,
458
515
  );
459
516
  }
460
517
  }
@@ -571,11 +628,18 @@ export class AuthenticationService {
571
628
 
572
629
  // Validate & generate otp token for the user based on the identifier type.
573
630
  if (signInDto.type === RegistrationValidationSource.EMAIL) {
631
+ // const user = await this.userRepository.findOne({
632
+ // where: {
633
+ // email: signInDto.identifier,
634
+ // }
635
+ // });
574
636
  const user = await this.userRepository.findOne({
575
- where: {
576
- email: signInDto.identifier,
577
- }
637
+ where: [
638
+ { username: signInDto.identifier },
639
+ { email: signInDto.identifier },
640
+ ]
578
641
  });
642
+
579
643
  if (!user) {
580
644
  throw new UnauthorizedException(ERROR_MESSAGES.USER_NOT_FOUND);
581
645
  }
@@ -588,11 +652,18 @@ export class AuthenticationService {
588
652
  await this.userRepository.save(user);
589
653
  this.notifyUserOnOtpInititateLogin(user, RegistrationValidationSource.EMAIL);
590
654
  } else if (signInDto.type === RegistrationValidationSource.MOBILE) {
655
+ // const user = await this.userRepository.findOne({
656
+ // where: {
657
+ // mobile: signInDto.identifier,
658
+ // }
659
+ // });
591
660
  const user = await this.userRepository.findOne({
592
- where: {
593
- mobile: signInDto.identifier,
594
- }
661
+ where: [
662
+ { username: signInDto.identifier },
663
+ { mobile: signInDto.identifier },
664
+ ]
595
665
  });
666
+
596
667
  if (!user) {
597
668
  throw new UnauthorizedException(ERROR_MESSAGES.USER_NOT_FOUND);
598
669
  }
@@ -635,7 +706,8 @@ export class AuthenticationService {
635
706
  );
636
707
  }
637
708
  if (loginType === RegistrationValidationSource.MOBILE) {
638
- this.smsService.sendSMSUsingTemplate(
709
+ const smsService = this.smsFactory.getSmsService();
710
+ smsService.sendSMSUsingTemplate(
639
711
  user.mobile,
640
712
  'otp-on-login',
641
713
  {
@@ -645,7 +717,8 @@ export class AuthenticationService {
645
717
  firstName: user.username,
646
718
  fullName: user.fullName ? user.fullName : user.username,
647
719
  companyLogoUrl: companyLogo
648
- }
720
+ },
721
+ this.commonConfiguration.shouldQueueSms,
649
722
  );
650
723
  }
651
724
  }
@@ -655,11 +728,20 @@ export class AuthenticationService {
655
728
  throw new BadRequestException(ERROR_MESSAGES.PASSWORDLESS_REGISTRATION_DISABLED);
656
729
  }
657
730
  if (confirmSignInDto.type === RegistrationValidationSource.EMAIL) {
731
+ // const user = await this.userRepository.findOne({
732
+ // where: {
733
+ // email: confirmSignInDto.identifier,
734
+ // },
735
+ // relations: ['roles']
736
+ // });
658
737
  const user = await this.userRepository.findOne({
659
- where: {
660
- email: confirmSignInDto.identifier,
661
- },
662
- relations: ['roles']
738
+ where: [
739
+ { username: confirmSignInDto.identifier },
740
+ { email: confirmSignInDto.identifier },
741
+ ],
742
+ relations: {
743
+ roles: true
744
+ }
663
745
  });
664
746
  if (!user) {
665
747
  throw new UnauthorizedException(ERROR_MESSAGES.USER_NOT_FOUND);
@@ -682,11 +764,20 @@ export class AuthenticationService {
682
764
  const roles = user.roles.map((role) => role.name);
683
765
  return { accessToken, refreshToken, user: { id, username, email, mobile, lastLoginProvider, roles } };
684
766
  } else if (confirmSignInDto.type === RegistrationValidationSource.MOBILE) {
767
+ // const user = await this.userRepository.findOne({
768
+ // where: {
769
+ // mobile: confirmSignInDto.identifier,
770
+ // },
771
+ // relations: ['roles']
772
+ // });
685
773
  const user = await this.userRepository.findOne({
686
- where: {
687
- mobile: confirmSignInDto.identifier,
688
- },
689
- relations: ['roles']
774
+ where: [
775
+ { username: confirmSignInDto.identifier },
776
+ { mobile: confirmSignInDto.identifier },
777
+ ],
778
+ relations: {
779
+ roles: true
780
+ }
690
781
  });
691
782
  if (!user) {
692
783
  throw new UnauthorizedException(ERROR_MESSAGES.USER_NOT_ACTIVE);
@@ -856,7 +947,8 @@ export class AuthenticationService {
856
947
  }
857
948
  // Assuming all users do not have mobile as mandatory.
858
949
  if (forgotPasswordSendVerificationTokenOn == ForgotPasswordSendVerificationTokenOn.MOBILE && user.mobile) {
859
- this.smsService.sendSMSUsingTemplate(
950
+ const smsService = this.smsFactory.getSmsService();
951
+ smsService.sendSMSUsingTemplate(
860
952
  user.mobile,
861
953
  'forgot-password',
862
954
  {
@@ -865,7 +957,8 @@ export class AuthenticationService {
865
957
  verificationTokenOnForgotPassword: user.verificationTokenOnForgotPassword,
866
958
  firstName: user.username,
867
959
  companyLogoUrl: companyLogo
868
- }
960
+ },
961
+ this.commonConfiguration.shouldQueueSms,
869
962
  );
870
963
  }
871
964
  }
@@ -945,7 +1038,8 @@ export class AuthenticationService {
945
1038
  }
946
1039
  // Assuming all users do not have mobile as mandatory.
947
1040
  if (forgotPasswordSendVerificationTokenOn == ForgotPasswordSendVerificationTokenOn.MOBILE && user.mobile) {
948
- this.smsService.sendSMSUsingTemplate(
1041
+ const smsService = this.smsFactory.getSmsService();
1042
+ smsService.sendSMSUsingTemplate(
949
1043
  user.mobile,
950
1044
  'forgot-password',
951
1045
  {
@@ -954,7 +1048,8 @@ export class AuthenticationService {
954
1048
  verificationTokenOnForgotPassword: user.verificationTokenOnForgotPassword,
955
1049
  firstName: user.username,
956
1050
  companyLogoUrl: companyLogo
957
- }
1051
+ },
1052
+ this.commonConfiguration.shouldQueueSms,
958
1053
  );
959
1054
  }
960
1055
  }
@@ -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, In } from 'typeorm';
@@ -16,6 +16,7 @@ import { ChatterMessageDetailsRepository } from 'src/repository/chatter-message-
16
16
  @Injectable()
17
17
  export class ChatterMessageDetailsService extends CRUDService<ChatterMessageDetails>{
18
18
  constructor(
19
+ @Inject(forwardRef(() => ModelMetadataService))
19
20
  readonly modelMetadataService: ModelMetadataService,
20
21
  readonly moduleMetadataService: ModuleMetadataService,
21
22
  readonly configService: ConfigService,
@@ -1,4 +1,4 @@
1
- import { Injectable } from '@nestjs/common';
1
+ import { forwardRef, Inject, Injectable } from '@nestjs/common';
2
2
  import { DiscoveryService, ModuleRef } from "@nestjs/core";
3
3
  import { InjectEntityManager } from '@nestjs/typeorm';
4
4
  import { Brackets, EntityManager, EntityMetadata } from 'typeorm';
@@ -26,6 +26,7 @@ import { RequestContextService } from './request-context.service';
26
26
  @Injectable()
27
27
  export class ChatterMessageService extends CRUDService<ChatterMessage> {
28
28
  constructor(
29
+ @Inject(forwardRef(() => ModelMetadataService))
29
30
  readonly modelMetadataService: ModelMetadataService,
30
31
  readonly moduleMetadataService: ModuleMetadataService,
31
32
  readonly configService: ConfigService,
@@ -44,6 +45,7 @@ export class ChatterMessageService extends CRUDService<ChatterMessage> {
44
45
  readonly moduleRef: ModuleRef,
45
46
  // @InjectRepository(ModelMetadata)
46
47
  // private readonly modelMetadataRepo: Repository<ModelMetadata>,
48
+ @Inject(forwardRef(() => ModelMetadataRepository))
47
49
  private readonly modelMetadataRepo: ModelMetadataRepository,
48
50
  readonly requestContextService: RequestContextService,
49
51
  private readonly modelMetadataHelperService: ModelMetadataHelperService,
@@ -116,7 +118,7 @@ export class ChatterMessageService extends CRUDService<ChatterMessage> {
116
118
 
117
119
  const auditFields = model.fields.filter(field =>
118
120
  field.enableAuditTracking &&
119
- !['mediaSingle', 'mediaMultiple', 'computed', 'richText', 'json'].includes(field.type) &&
121
+ !['mediaSingle', 'mediaMultiple', 'richText', 'json'].includes(field.type) &&
120
122
  !(field.type === 'relation' && field.relationType === 'one-to-many')
121
123
  );
122
124
 
@@ -179,7 +181,7 @@ export class ChatterMessageService extends CRUDService<ChatterMessage> {
179
181
 
180
182
  const auditFields = modelFields.filter(field =>
181
183
  field.enableAuditTracking &&
182
- !['mediaSingle', 'mediaMultiple', 'computed', 'richText', 'json'].includes(field.type) &&
184
+ !['mediaSingle', 'mediaMultiple', 'richText', 'json'].includes(field.type) &&
183
185
  !(field.type === 'relation' && field.relationType === 'one-to-many')
184
186
  );
185
187
 
@@ -542,7 +544,11 @@ export class ChatterMessageService extends CRUDService<ChatterMessage> {
542
544
  });
543
545
 
544
546
  if (coModel) {
545
- const relatedEntityRepository = this.entityManager.getRepository(classify(coModelName));
547
+ //const relatedEntityRepository = this.entityManager.getRepository(classify(coModelName));
548
+ const dsName = coModel.dataSource || 'default';
549
+ const em = dsName === 'default' ? this.entityManager : this.moduleRef.get(`${dsName}EntityManager`, { strict: false });
550
+
551
+ const relatedEntityRepository = em.getRepository(classify(coModelName));
546
552
 
547
553
  const relatedEntities = await relatedEntityRepository.find({
548
554
  where: { [coModelFieldName]: { id: entityId } }
@@ -28,10 +28,10 @@ export class AlphaNumExternalIdComputationProvider<T extends CommonEntity> imple
28
28
  return 'Provider used to compute external ID for a CommonEntity with support for static or dynamic prefix.';
29
29
  }
30
30
 
31
- async preComputeValue(triggerEntity: T, computedFieldMetadata: ComputedFieldMetadata<AlphaNumExternalIdContext>
32
- ) {
33
- const { prefix, length, dynamicFieldPrefix } =
34
- computedFieldMetadata.computedFieldValueProviderCtxt;
31
+ async preComputeValue(triggerEntity: T, computedFieldMetadata: ComputedFieldMetadata<AlphaNumExternalIdContext>) {
32
+ const { prefix, length, dynamicFieldPrefix } = computedFieldMetadata.computedFieldValueProviderCtxt;
33
+ const eventContext = computedFieldMetadata.eventContext;
34
+ const entityName = eventContext?.metadataName ?? eventContext.databaseEntity?.constructor?.name ?? '';
35
35
 
36
36
  const codeLength = length || 5;
37
37
 
@@ -45,7 +45,7 @@ export class AlphaNumExternalIdComputationProvider<T extends CommonEntity> imple
45
45
  }
46
46
  }
47
47
 
48
- const uniqueCode = await this.generateUniqueExternalId(resolvedPrefix, codeLength, triggerEntity, computedFieldMetadata.fieldName);
48
+ const uniqueCode = await this.generateUniqueExternalId(resolvedPrefix, codeLength, computedFieldMetadata.fieldName, entityName);
49
49
  const finalExternalId = resolvedPrefix ? `${resolvedPrefix}-${uniqueCode}` : uniqueCode;
50
50
 
51
51
  triggerEntity[computedFieldMetadata.fieldName] = finalExternalId;
@@ -60,8 +60,8 @@ export class AlphaNumExternalIdComputationProvider<T extends CommonEntity> imple
60
60
  return result;
61
61
  }
62
62
 
63
- private async isExternalIdUnique(externalId: string, triggerEntity: T, fieldName: string): Promise<boolean> {
64
- const count = await this.entityManager.count(triggerEntity.constructor as any,
63
+ private async isExternalIdUnique(externalId: string, fieldName: string, entityName: string): Promise<boolean> {
64
+ const count = await this.entityManager.count(entityName as any,
65
65
  {
66
66
  where: { [fieldName]: externalId },
67
67
  }
@@ -69,7 +69,7 @@ export class AlphaNumExternalIdComputationProvider<T extends CommonEntity> imple
69
69
  return count === 0;
70
70
  }
71
71
 
72
- private async generateUniqueExternalId(resolvedPrefix: string, codeLength: number, triggerEntity: T, fieldName: string): Promise<string> {
72
+ private async generateUniqueExternalId(resolvedPrefix: string, codeLength: number, fieldName: string, entityName: string): Promise<string> {
73
73
  const maxAttempts = 10;
74
74
 
75
75
  for (let attempt = 0; attempt < maxAttempts; attempt++) {
@@ -78,7 +78,7 @@ export class AlphaNumExternalIdComputationProvider<T extends CommonEntity> imple
78
78
 
79
79
  const fullId = resolvedPrefix ? `${resolvedPrefix}-${newId}` : newId;
80
80
 
81
- const isUnique = await this.isExternalIdUnique(fullId, triggerEntity, fieldName);
81
+ const isUnique = await this.isExternalIdUnique(fullId, fieldName, entityName);
82
82
 
83
83
  if (isUnique) {
84
84
  return newId;
@@ -0,0 +1,86 @@
1
+ import { Injectable } from "@nestjs/common";
2
+ import { InjectDataSource } from "@nestjs/typeorm";
3
+ import { ComputedFieldProvider } from "src/decorators/computed-field-provider.decorator";
4
+ import { CommonEntity } from "src/entities/common.entity";
5
+ import { ModelSequence } from "src/entities/model-sequence.entity";
6
+ import { ComputedFieldMetadata } from "src/helpers/solid-registry";
7
+ import { IEntityPreComputeFieldProvider } from "src/interfaces";
8
+ import { DataSource, EntityTarget } from "typeorm";
9
+
10
+
11
+ export interface SequenceNumComputedFieldContext {
12
+ sequenceName: string; // The separator to use between concatenated values
13
+ }
14
+
15
+ @ComputedFieldProvider()
16
+ @Injectable()
17
+ export class SequenceNumComputedFieldProvider<T extends CommonEntity> implements IEntityPreComputeFieldProvider<T, SequenceNumComputedFieldContext> {
18
+ constructor(
19
+ @InjectDataSource()
20
+ private readonly dataSource: DataSource
21
+ ) { }
22
+
23
+ name(): string {
24
+ return "SequenceNumComputedFieldProvider";
25
+ }
26
+
27
+ help(): string {
28
+ return "Computed field provider used to create fields whose value is based on some prefix, padding & sequence number.";
29
+ }
30
+
31
+ async preComputeValue(triggerEntity: T, computedFieldMetadata: ComputedFieldMetadata<SequenceNumComputedFieldContext>) {
32
+ const { sequenceName } =
33
+ computedFieldMetadata.computedFieldValueProviderCtxt ?? {};
34
+
35
+ if (!sequenceName) {
36
+ throw new Error("sequenceName is required for sequence computation");
37
+ }
38
+
39
+ await this.dataSource.transaction(async (manager) => {
40
+ /**
41
+ * 1️⃣ Lock sequence row (prevents race conditions)
42
+ */
43
+ // 1️⃣ Fetch sequence row
44
+ const modelSequenceRepo = manager.getRepository(ModelSequence)
45
+ const modelSequence = await modelSequenceRepo.findOne({
46
+ where: { sequenceName },
47
+ lock: { mode: "pessimistic_write" }
48
+ });
49
+
50
+ if (!modelSequence) {
51
+ throw new Error(`ModelSequence not found for ${sequenceName}`);
52
+ }
53
+
54
+ // 2️⃣ Generate next sequence value
55
+ const nextValue = modelSequence.currentValue + 1;
56
+
57
+ const paddedValue = String(nextValue).padStart(modelSequence.padding ?? 5, "0");
58
+
59
+ const prefix = modelSequence.prefix ?? "";
60
+ const separator = modelSequence.separator ?? "";
61
+
62
+ const sequenceString = `${prefix}${separator}${paddedValue}`;
63
+
64
+ // 3️⃣ Duplicate check on TARGET ENTITY (extra safety)
65
+ const entityRepo = manager.getRepository(triggerEntity.constructor as any);
66
+
67
+ const existing = await entityRepo.findOne({
68
+ where: {
69
+ [computedFieldMetadata.fieldName]: sequenceString,
70
+ },
71
+ });
72
+
73
+ if (existing) {
74
+ throw new Error(`Duplicate Sequence generated: ${sequenceString}`);
75
+ }
76
+
77
+ // 4️⃣ set the computed field on the entity
78
+ (triggerEntity as any)[computedFieldMetadata.fieldName] = sequenceString;
79
+
80
+ // 5️⃣ Persist updated sequence current value
81
+ modelSequence.currentValue = nextValue;
82
+ await modelSequenceRepo.save(modelSequence);
83
+ });
84
+ }
85
+
86
+ }