@solidxai/core 0.1.9-beta.1 → 0.1.9-beta.11

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 (779) hide show
  1. package/dist/commands/fixtures/fixtures-setup.command.d.ts +1 -1
  2. package/dist/commands/fixtures/fixtures-tear-down.command.d.ts +1 -1
  3. package/dist/commands/info.command.d.ts +3 -3
  4. package/dist/commands/ingest.command.d.ts +2 -2
  5. package/dist/commands/mcp.command.d.ts +1 -1
  6. package/dist/commands/refresh-model.command.d.ts +1 -1
  7. package/dist/commands/remove-fields.command.d.ts +1 -1
  8. package/dist/commands/run-tests.command.d.ts +1 -1
  9. package/dist/commands/seed.command.d.ts +1 -1
  10. package/dist/commands/test-data.command.d.ts +1 -1
  11. package/dist/constants/chatter-message.constants.d.ts +6 -0
  12. package/dist/constants/chatter-message.constants.d.ts.map +1 -1
  13. package/dist/constants/chatter-message.constants.js +7 -1
  14. package/dist/constants/chatter-message.constants.js.map +1 -1
  15. package/dist/controllers/action-metadata.controller.d.ts +1 -1
  16. package/dist/controllers/agent-event.controller.d.ts +3 -3
  17. package/dist/controllers/agent-session.controller.d.ts +3 -3
  18. package/dist/controllers/ai-interaction.controller.d.ts +1 -1
  19. package/dist/controllers/authentication.controller.d.ts +12 -0
  20. package/dist/controllers/authentication.controller.d.ts.map +1 -1
  21. package/dist/controllers/authentication.controller.js +13 -0
  22. package/dist/controllers/authentication.controller.js.map +1 -1
  23. package/dist/controllers/chatter-message.controller.d.ts +1 -0
  24. package/dist/controllers/chatter-message.controller.d.ts.map +1 -1
  25. package/dist/controllers/chatter-message.controller.js +12 -0
  26. package/dist/controllers/chatter-message.controller.js.map +1 -1
  27. package/dist/controllers/dashboard-layout.controller.d.ts +3 -3
  28. package/dist/controllers/dashboard-question.controller.d.ts +1 -1
  29. package/dist/controllers/dashboard.controller.d.ts +1 -1
  30. package/dist/controllers/export-template.controller.d.ts +2 -2
  31. package/dist/controllers/facebook-authentication.controller.d.ts +27 -0
  32. package/dist/controllers/facebook-authentication.controller.d.ts.map +1 -0
  33. package/dist/controllers/facebook-authentication.controller.js +117 -0
  34. package/dist/controllers/facebook-authentication.controller.js.map +1 -0
  35. package/dist/controllers/field-metadata.controller.d.ts +1 -1
  36. package/dist/controllers/google-authentication.controller.d.ts +1 -1
  37. package/dist/controllers/import-transaction.controller.d.ts +1 -1
  38. package/dist/controllers/locale.controller.d.ts +3 -3
  39. package/dist/controllers/media.controller.d.ts +3 -3
  40. package/dist/controllers/menu-item-metadata.controller.d.ts +3 -2
  41. package/dist/controllers/menu-item-metadata.controller.d.ts.map +1 -1
  42. package/dist/controllers/menu-item-metadata.controller.js +15 -0
  43. package/dist/controllers/menu-item-metadata.controller.js.map +1 -1
  44. package/dist/controllers/microsoft-authentication.controller.d.ts +27 -0
  45. package/dist/controllers/microsoft-authentication.controller.d.ts.map +1 -0
  46. package/dist/controllers/microsoft-authentication.controller.js +118 -0
  47. package/dist/controllers/microsoft-authentication.controller.js.map +1 -0
  48. package/dist/controllers/model-metadata.controller.d.ts +1 -1
  49. package/dist/controllers/mq-message-queue.controller.d.ts +1 -1
  50. package/dist/controllers/mq-message.controller.d.ts +1 -1
  51. package/dist/controllers/otp-authentication.controller.js.map +1 -1
  52. package/dist/controllers/permission-metadata.controller.d.ts +1 -1
  53. package/dist/controllers/role-metadata.controller.d.ts +1 -1
  54. package/dist/controllers/scheduled-job.controller.d.ts +3 -3
  55. package/dist/controllers/service.controller.d.ts +4 -4
  56. package/dist/controllers/setting.controller.d.ts +3 -3
  57. package/dist/controllers/setting.controller.js +4 -4
  58. package/dist/controllers/setting.controller.js.map +1 -1
  59. package/dist/controllers/test-queue.controller.d.ts +1 -1
  60. package/dist/controllers/test.controller.d.ts +2 -2
  61. package/dist/controllers/user-view-metadata.controller.d.ts +2 -2
  62. package/dist/controllers/user.controller.d.ts +2 -2
  63. package/dist/controllers/view-metadata.controller.d.ts +2 -2
  64. package/dist/decorators/auth.decorator.d.ts.map +1 -1
  65. package/dist/decorators/computed-field-provider.decorator.d.ts.map +1 -1
  66. package/dist/decorators/dashboard-question-data-provider.decorator.d.ts.map +1 -1
  67. package/dist/decorators/dashboard-selection-provider.decorator.d.ts.map +1 -1
  68. package/dist/decorators/disallow-in-production.decorator.d.ts.map +1 -1
  69. package/dist/decorators/error-codes-provider.decorator.d.ts.map +1 -1
  70. package/dist/decorators/extension-user-creation-provider.decorator.d.ts +3 -0
  71. package/dist/decorators/extension-user-creation-provider.decorator.d.ts.map +1 -0
  72. package/dist/decorators/extension-user-creation-provider.decorator.js +7 -0
  73. package/dist/decorators/extension-user-creation-provider.decorator.js.map +1 -0
  74. package/dist/decorators/is-not-in-enum.decorator.d.ts.map +1 -1
  75. package/dist/decorators/mail-provider.decorator.d.ts.map +1 -1
  76. package/dist/decorators/roles.decorator.d.ts.map +1 -1
  77. package/dist/decorators/scheduled-job-provider.decorator.d.ts.map +1 -1
  78. package/dist/decorators/security-rule-config-provider.decorator.d.ts.map +1 -1
  79. package/dist/decorators/selection-provider.decorator.d.ts.map +1 -1
  80. package/dist/decorators/sms-provider.decorator.d.ts.map +1 -1
  81. package/dist/decorators/solid-database-module.decorator.d.ts.map +1 -1
  82. package/dist/decorators/solid-password.decorator.d.ts +1 -1
  83. package/dist/decorators/whatsapp-provider.decorator.d.ts.map +1 -1
  84. package/dist/dtos/create-chatter-message.dto.d.ts +1 -0
  85. package/dist/dtos/create-chatter-message.dto.d.ts.map +1 -1
  86. package/dist/dtos/create-chatter-message.dto.js +7 -1
  87. package/dist/dtos/create-chatter-message.dto.js.map +1 -1
  88. package/dist/dtos/create-dashboard-question.dto.d.ts +1 -1
  89. package/dist/dtos/create-dashboard.dto.d.ts +2 -2
  90. package/dist/dtos/create-field-metadata.dto.js +1 -2
  91. package/dist/dtos/create-field-metadata.dto.js.map +1 -1
  92. package/dist/dtos/create-import-transaction.dto.d.ts +1 -1
  93. package/dist/dtos/create-menu-item-metadata.dto.d.ts +1 -1
  94. package/dist/dtos/create-mq-message-queue.dto.d.ts +1 -1
  95. package/dist/dtos/create-permission-metadata.dto.d.ts +1 -1
  96. package/dist/dtos/create-role-metadata.dto.d.ts +3 -3
  97. package/dist/dtos/create-user.dto.d.ts +3 -2
  98. package/dist/dtos/create-user.dto.d.ts.map +1 -1
  99. package/dist/dtos/create-user.dto.js +8 -1
  100. package/dist/dtos/create-user.dto.js.map +1 -1
  101. package/dist/dtos/create-view-metadata.dto.d.ts +1 -1
  102. package/dist/dtos/dashboard-variable-selection-dynamic-query.dto.d.ts +1 -1
  103. package/dist/dtos/fetch-roles.dto.d.ts +1 -1
  104. package/dist/dtos/post-chatter-message.dto.d.ts +1 -0
  105. package/dist/dtos/post-chatter-message.dto.d.ts.map +1 -1
  106. package/dist/dtos/post-chatter-message.dto.js +6 -1
  107. package/dist/dtos/post-chatter-message.dto.js.map +1 -1
  108. package/dist/dtos/selection-dynamic-query.dto.d.ts +1 -1
  109. package/dist/dtos/solid-request-context.dto.d.ts +1 -1
  110. package/dist/dtos/sort-filter.dto.d.ts +1 -1
  111. package/dist/dtos/update-chatter-message.dto.d.ts +1 -0
  112. package/dist/dtos/update-chatter-message.dto.d.ts.map +1 -1
  113. package/dist/dtos/update-chatter-message.dto.js +7 -1
  114. package/dist/dtos/update-chatter-message.dto.js.map +1 -1
  115. package/dist/dtos/update-dashboard-question.dto.d.ts +1 -1
  116. package/dist/dtos/update-dashboard.dto.d.ts +2 -2
  117. package/dist/dtos/update-import-transaction.dto.d.ts +1 -1
  118. package/dist/dtos/update-menu-item-metadata.dto.d.ts +1 -1
  119. package/dist/dtos/update-mq-message-queue.dto.d.ts +1 -1
  120. package/dist/dtos/update-permission-metadata.dto.d.ts +1 -1
  121. package/dist/dtos/update-role-metadata.dto.d.ts +3 -3
  122. package/dist/dtos/update-user.dto.d.ts +3 -2
  123. package/dist/dtos/update-user.dto.d.ts.map +1 -1
  124. package/dist/dtos/update-user.dto.js +7 -1
  125. package/dist/dtos/update-user.dto.js.map +1 -1
  126. package/dist/dtos/update-view-metadata.dto.d.ts +1 -1
  127. package/dist/entities/action-metadata.entity.d.ts +4 -4
  128. package/dist/entities/agent-event.entity.d.ts +1 -1
  129. package/dist/entities/agent-session.entity.d.ts +1 -1
  130. package/dist/entities/ai-interaction.entity.d.ts +2 -2
  131. package/dist/entities/chatter-message-details.entity.d.ts +2 -2
  132. package/dist/entities/chatter-message.entity.d.ts +3 -2
  133. package/dist/entities/chatter-message.entity.d.ts.map +1 -1
  134. package/dist/entities/chatter-message.entity.js +5 -1
  135. package/dist/entities/chatter-message.entity.js.map +1 -1
  136. package/dist/entities/dashboard-layout.entity.d.ts +2 -2
  137. package/dist/entities/dashboard-question-sql-dataset-config.entity.d.ts +2 -2
  138. package/dist/entities/dashboard-question.entity.d.ts +3 -3
  139. package/dist/entities/dashboard-variable.entity.d.ts +2 -2
  140. package/dist/entities/dashboard.entity.d.ts +4 -4
  141. package/dist/entities/email-template.entity.d.ts +1 -1
  142. package/dist/entities/export-template.entity.d.ts +2 -2
  143. package/dist/entities/export-transaction.entity.d.ts +2 -2
  144. package/dist/entities/field-metadata.entity.d.ts +2 -2
  145. package/dist/entities/import-transaction-error-log.entity.d.ts +2 -2
  146. package/dist/entities/import-transaction.entity.d.ts +3 -3
  147. package/dist/entities/list-of-values.entity.d.ts +2 -2
  148. package/dist/entities/locale.entity.d.ts +1 -1
  149. package/dist/entities/media-storage-provider-metadata.entity.d.ts +1 -1
  150. package/dist/entities/media.entity.d.ts +4 -4
  151. package/dist/entities/menu-item-metadata.entity.d.ts +4 -4
  152. package/dist/entities/model-metadata.entity.d.ts +1 -1
  153. package/dist/entities/model-sequence.entity.d.ts +4 -4
  154. package/dist/entities/module-metadata.entity.d.ts +1 -1
  155. package/dist/entities/mq-message-queue.entity.d.ts +2 -2
  156. package/dist/entities/mq-message.entity.d.ts +2 -2
  157. package/dist/entities/permission-metadata.entity.d.ts +2 -2
  158. package/dist/entities/role-metadata.entity.d.ts +4 -4
  159. package/dist/entities/saved-filters.entity.d.ts +4 -4
  160. package/dist/entities/scheduled-job.entity.d.ts +1 -1
  161. package/dist/entities/security-rule.entity.d.ts +3 -3
  162. package/dist/entities/setting.entity.d.ts +2 -2
  163. package/dist/entities/sms-template.entity.d.ts +1 -1
  164. package/dist/entities/user-activity-history.entity.d.ts +2 -2
  165. package/dist/entities/user-api-key.entity.d.ts +1 -1
  166. package/dist/entities/user-view-metadata.entity.d.ts +3 -3
  167. package/dist/entities/user.entity.d.ts +12 -4
  168. package/dist/entities/user.entity.d.ts.map +1 -1
  169. package/dist/entities/user.entity.js +34 -1
  170. package/dist/entities/user.entity.js.map +1 -1
  171. package/dist/entities/view-metadata.entity.d.ts +4 -4
  172. package/dist/factories/mail.factory.d.ts +3 -3
  173. package/dist/factories/sms.factory.d.ts +3 -3
  174. package/dist/factories/whatsapp.factory.d.ts +3 -3
  175. package/dist/filters/http-exception.filter.d.ts +1 -1
  176. package/dist/guards/api-key.guard.d.ts +1 -1
  177. package/dist/helpers/bootstrap.helper.d.ts.map +1 -1
  178. package/dist/helpers/bootstrap.helper.js +4 -1
  179. package/dist/helpers/bootstrap.helper.js.map +1 -1
  180. package/dist/helpers/cors.helper.js +1 -1
  181. package/dist/helpers/cors.helper.js.map +1 -1
  182. package/dist/helpers/error-mapper.service.d.ts +2 -2
  183. package/dist/helpers/facebook-oauth.helper.d.ts +8 -0
  184. package/dist/helpers/facebook-oauth.helper.d.ts.map +1 -0
  185. package/dist/helpers/facebook-oauth.helper.js +11 -0
  186. package/dist/helpers/facebook-oauth.helper.js.map +1 -0
  187. package/dist/helpers/field-crud-managers/BigIntFieldCrudManager.d.ts +1 -1
  188. package/dist/helpers/field-crud-managers/BooleanFieldCrudManager.d.ts +1 -1
  189. package/dist/helpers/field-crud-managers/ComputedFieldCrudManager.d.ts +2 -2
  190. package/dist/helpers/field-crud-managers/DateFieldCrudManager.d.ts +1 -1
  191. package/dist/helpers/field-crud-managers/DecimalFieldCrudManager.d.ts +1 -1
  192. package/dist/helpers/field-crud-managers/EmailFieldCrudManager.d.ts +1 -1
  193. package/dist/helpers/field-crud-managers/IntFieldCrudManager.d.ts +1 -1
  194. package/dist/helpers/field-crud-managers/JsonFieldCrudManager.d.ts +1 -1
  195. package/dist/helpers/field-crud-managers/LongTextFieldCrudManager.d.ts +1 -1
  196. package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.d.ts +1 -1
  197. package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.js +5 -5
  198. package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.js.map +1 -1
  199. package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.d.ts +1 -1
  200. package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.d.ts.map +1 -1
  201. package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.js +2 -2
  202. package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.js.map +1 -1
  203. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.d.ts +1 -1
  204. package/dist/helpers/field-crud-managers/NoOpsFieldCrudManager.d.ts +1 -1
  205. package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.d.ts +1 -1
  206. package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.js +5 -5
  207. package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.js.map +1 -1
  208. package/dist/helpers/field-crud-managers/PasswordFieldCrudManager.d.ts +2 -2
  209. package/dist/helpers/field-crud-managers/RichTextFieldCrudManager.d.ts +1 -1
  210. package/dist/helpers/field-crud-managers/SelectionDynamicFieldCrudManager.d.ts +2 -2
  211. package/dist/helpers/field-crud-managers/SelectionStaticFieldCrudManager.d.ts +2 -2
  212. package/dist/helpers/field-crud-managers/ShortTextFieldCrudManager.d.ts +1 -1
  213. package/dist/helpers/field-crud-managers/UUIDFieldCrudManager.d.ts +1 -1
  214. package/dist/helpers/microsoft-oauth.helper.d.ts +9 -0
  215. package/dist/helpers/microsoft-oauth.helper.d.ts.map +1 -0
  216. package/dist/helpers/microsoft-oauth.helper.js +12 -0
  217. package/dist/helpers/microsoft-oauth.helper.js.map +1 -0
  218. package/dist/helpers/model-metadata-helper.service.d.ts +1 -1
  219. package/dist/helpers/module-metadata-helper.service.d.ts +1 -1
  220. package/dist/helpers/module-metadata-helper.service.js +3 -3
  221. package/dist/helpers/module-metadata-helper.service.js.map +1 -1
  222. package/dist/helpers/security.helper.d.ts.map +1 -1
  223. package/dist/helpers/solid-core-error-codes-provider.service.d.ts +1 -1
  224. package/dist/helpers/solid-registry.d.ts +11 -5
  225. package/dist/helpers/solid-registry.d.ts.map +1 -1
  226. package/dist/helpers/solid-registry.js +15 -2
  227. package/dist/helpers/solid-registry.js.map +1 -1
  228. package/dist/helpers/string.helper.d.ts +1 -0
  229. package/dist/helpers/string.helper.d.ts.map +1 -1
  230. package/dist/helpers/string.helper.js +4 -1
  231. package/dist/helpers/string.helper.js.map +1 -1
  232. package/dist/helpers/user-helper.d.ts.map +1 -1
  233. package/dist/helpers/user-helper.js +4 -0
  234. package/dist/helpers/user-helper.js.map +1 -1
  235. package/dist/index.d.ts +3 -0
  236. package/dist/index.d.ts.map +1 -1
  237. package/dist/index.js +3 -0
  238. package/dist/index.js.map +1 -1
  239. package/dist/interfaces/mq.d.ts +1 -1
  240. package/dist/interfaces/mq.d.ts.map +1 -1
  241. package/dist/interfaces/mq.js.map +1 -1
  242. package/dist/interfaces.d.ts +30 -3
  243. package/dist/interfaces.d.ts.map +1 -1
  244. package/dist/interfaces.js.map +1 -1
  245. package/dist/jobs/database/api-email-publisher-database.service.d.ts +4 -4
  246. package/dist/jobs/database/api-email-queue-options-database.d.ts +1 -1
  247. package/dist/jobs/database/api-email-subscriber-database.service.d.ts +8 -8
  248. package/dist/jobs/database/api-email-subscriber-database.service.js +1 -1
  249. package/dist/jobs/database/api-email-subscriber-database.service.js.map +1 -1
  250. package/dist/jobs/database/chatter-queue-publisher-database.service.d.ts +1 -1
  251. package/dist/jobs/database/chatter-queue-subscriber-database.service.d.ts +4 -4
  252. package/dist/jobs/database/computed-field-evaluation-publisher-database.service.d.ts +5 -5
  253. package/dist/jobs/database/computed-field-evaluation-subscriber-database.service.d.ts +8 -8
  254. package/dist/jobs/database/generate-code-publisher-database.service.d.ts +1 -1
  255. package/dist/jobs/database/generate-code-subscriber-database.service.d.ts +4 -4
  256. package/dist/jobs/database/msg91-sms-publisher-database.service.d.ts +4 -4
  257. package/dist/jobs/database/msg91-sms-queue-database-options.d.ts +1 -1
  258. package/dist/jobs/database/msg91-sms-subscriber-database.service.d.ts +7 -7
  259. package/dist/jobs/database/msg91-whatsapp-publisher-database.service.d.ts +4 -4
  260. package/dist/jobs/database/msg91-whatsapp-queue-options-database.d.ts +1 -1
  261. package/dist/jobs/database/msg91-whatsapp-subscriber-database.service.d.ts +8 -8
  262. package/dist/jobs/database/msg91-whatsapp-subscriber-database.service.js +1 -1
  263. package/dist/jobs/database/msg91-whatsapp-subscriber-database.service.js.map +1 -1
  264. package/dist/jobs/database/otp-publisher-database.service.d.ts +4 -4
  265. package/dist/jobs/database/otp-queue-options-database.d.ts +1 -1
  266. package/dist/jobs/database/otp-subscriber-database.service.d.ts +7 -7
  267. package/dist/jobs/database/smtp-email-publisher-database.service.d.ts +4 -4
  268. package/dist/jobs/database/smtp-email-queue-options-database.d.ts +1 -1
  269. package/dist/jobs/database/smtp-email-subscriber-database.service.d.ts +7 -7
  270. package/dist/jobs/database/test-queue-publisher-database.service.d.ts +1 -1
  271. package/dist/jobs/database/test-queue-subscriber-database.service.d.ts +3 -3
  272. package/dist/jobs/database/three60-whatsapp-publisher-database.service.d.ts +4 -4
  273. package/dist/jobs/database/three60-whatsapp-queue-options-database.d.ts +1 -1
  274. package/dist/jobs/database/three60-whatsapp-subscriber-database.service.d.ts +8 -8
  275. package/dist/jobs/database/three60-whatsapp-subscriber-database.service.js +1 -1
  276. package/dist/jobs/database/three60-whatsapp-subscriber-database.service.js.map +1 -1
  277. package/dist/jobs/database/trigger-mcp-client-publisher-database.service.d.ts +4 -4
  278. package/dist/jobs/database/trigger-mcp-client-queue-options.d.ts +1 -1
  279. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts +8 -8
  280. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts.map +1 -1
  281. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js +2 -2
  282. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js.map +1 -1
  283. package/dist/jobs/database/twilio-sms-publisher-database.service.d.ts +4 -4
  284. package/dist/jobs/database/twilio-sms-queue-database-options.d.ts +1 -1
  285. package/dist/jobs/database/twilio-sms-subscriber-database.service.d.ts +7 -7
  286. package/dist/jobs/rabbitmq/api-email-publisher.service.d.ts +3 -3
  287. package/dist/jobs/rabbitmq/api-email-subscriber.service.d.ts +5 -5
  288. package/dist/jobs/rabbitmq/api-email-subscriber.service.js +1 -1
  289. package/dist/jobs/rabbitmq/api-email-subscriber.service.js.map +1 -1
  290. package/dist/jobs/rabbitmq/chatter-queue-publisher.service.d.ts +1 -1
  291. package/dist/jobs/rabbitmq/chatter-queue-subscriber.service.d.ts +3 -3
  292. package/dist/jobs/rabbitmq/computed-field-evaluation-publisher.service.d.ts +5 -5
  293. package/dist/jobs/rabbitmq/computed-field-evaluation-subscriber.service.d.ts +8 -8
  294. package/dist/jobs/rabbitmq/generate-code-publisher.service.d.ts +1 -1
  295. package/dist/jobs/rabbitmq/generate-code-subscriber.service.d.ts +7 -7
  296. package/dist/jobs/rabbitmq/msg91-otp-publisher.service.d.ts +3 -3
  297. package/dist/jobs/rabbitmq/msg91-otp-subscriber.service.d.ts +5 -5
  298. package/dist/jobs/rabbitmq/msg91-sms-publisher.service.d.ts +3 -3
  299. package/dist/jobs/rabbitmq/msg91-sms-subscriber.service.d.ts +5 -5
  300. package/dist/jobs/rabbitmq/msg91-whatsapp-publisher.service.d.ts +3 -3
  301. package/dist/jobs/rabbitmq/msg91-whatsapp-subscriber.service.d.ts +5 -5
  302. package/dist/jobs/rabbitmq/msg91-whatsapp-subscriber.service.js +1 -1
  303. package/dist/jobs/rabbitmq/msg91-whatsapp-subscriber.service.js.map +1 -1
  304. package/dist/jobs/rabbitmq/smtp-email-publisher.service.d.ts +3 -3
  305. package/dist/jobs/rabbitmq/smtp-email-subscriber.service.d.ts +4 -4
  306. package/dist/jobs/rabbitmq/test-queue-publisher.service.d.ts +1 -1
  307. package/dist/jobs/rabbitmq/test-queue-subscriber.service.d.ts +3 -3
  308. package/dist/jobs/rabbitmq/test-queue-subscriber.service.d.ts.map +1 -1
  309. package/dist/jobs/rabbitmq/test-queue-subscriber.service.js +6 -3
  310. package/dist/jobs/rabbitmq/test-queue-subscriber.service.js.map +1 -1
  311. package/dist/jobs/rabbitmq/three60-whatsapp-publisher.service.d.ts +3 -3
  312. package/dist/jobs/rabbitmq/three60-whatsapp-subscriber.service.d.ts +6 -6
  313. package/dist/jobs/rabbitmq/three60-whatsapp-subscriber.service.js +1 -1
  314. package/dist/jobs/rabbitmq/three60-whatsapp-subscriber.service.js.map +1 -1
  315. package/dist/jobs/rabbitmq/trigger-mcp-client-publisher.service.d.ts +3 -3
  316. package/dist/jobs/rabbitmq/trigger-mcp-client-subscriber.service.d.ts +6 -6
  317. package/dist/jobs/rabbitmq/twilio-sms-publisher.service.d.ts +3 -3
  318. package/dist/jobs/rabbitmq/twilio-sms-subscriber.service.d.ts +6 -6
  319. package/dist/jobs/redis/api-email-publisher-redis.service.d.ts +1 -1
  320. package/dist/jobs/redis/api-email-subscriber-redis.service.d.ts +3 -3
  321. package/dist/jobs/redis/api-email-subscriber-redis.service.js +1 -1
  322. package/dist/jobs/redis/api-email-subscriber-redis.service.js.map +1 -1
  323. package/dist/jobs/redis/chatter-queue-publisher-redis.service.d.ts +1 -1
  324. package/dist/jobs/redis/chatter-queue-subscriber-redis.service.d.ts +2 -2
  325. package/dist/jobs/redis/computed-field-evaluation-publisher-redis.service.d.ts +2 -2
  326. package/dist/jobs/redis/computed-field-evaluation-subscriber-redis.service.d.ts +4 -4
  327. package/dist/jobs/redis/generate-code-publisher-redis.service.d.ts +1 -1
  328. package/dist/jobs/redis/generate-code-subscriber-redis.service.d.ts +3 -3
  329. package/dist/jobs/redis/msg91-otp-publisher-redis.service.d.ts +1 -1
  330. package/dist/jobs/redis/msg91-otp-subscriber-redis.service.d.ts +3 -3
  331. package/dist/jobs/redis/msg91-sms-publisher-redis.service.d.ts +1 -1
  332. package/dist/jobs/redis/msg91-sms-subscriber-redis.service.d.ts +3 -3
  333. package/dist/jobs/redis/msg91-whatsapp-publisher-redis.service.d.ts +1 -1
  334. package/dist/jobs/redis/msg91-whatsapp-subscriber-redis.service.d.ts +3 -3
  335. package/dist/jobs/redis/msg91-whatsapp-subscriber-redis.service.js +1 -1
  336. package/dist/jobs/redis/msg91-whatsapp-subscriber-redis.service.js.map +1 -1
  337. package/dist/jobs/redis/smtp-email-publisher-redis.service.d.ts +1 -1
  338. package/dist/jobs/redis/smtp-email-subscriber-redis.service.d.ts +2 -2
  339. package/dist/jobs/redis/test-queue-publisher-redis.service.d.ts +1 -1
  340. package/dist/jobs/redis/test-queue-subscriber-redis.service.d.ts +2 -2
  341. package/dist/jobs/redis/three60-whatsapp-publisher-redis.service.d.ts +1 -1
  342. package/dist/jobs/redis/three60-whatsapp-subscriber-redis.service.d.ts +3 -3
  343. package/dist/jobs/redis/three60-whatsapp-subscriber-redis.service.js +1 -1
  344. package/dist/jobs/redis/three60-whatsapp-subscriber-redis.service.js.map +1 -1
  345. package/dist/jobs/redis/trigger-mcp-client-publisher-redis.service.d.ts +1 -1
  346. package/dist/jobs/redis/trigger-mcp-client-subscriber-redis.service.d.ts +2 -2
  347. package/dist/jobs/redis/twilio-sms-publisher-redis.service.d.ts +1 -1
  348. package/dist/jobs/redis/twilio-sms-subscriber-redis.service.d.ts +3 -3
  349. package/dist/mappers/dashboard-mapper.d.ts +1 -1
  350. package/dist/mappers/list-of-values-mapper.d.ts +1 -1
  351. package/dist/passport-strategies/facebook-oauth.strategy.d.ts +16 -0
  352. package/dist/passport-strategies/facebook-oauth.strategy.d.ts.map +1 -0
  353. package/dist/passport-strategies/facebook-oauth.strategy.js +96 -0
  354. package/dist/passport-strategies/facebook-oauth.strategy.js.map +1 -0
  355. package/dist/passport-strategies/microsoft-oauth.strategy.d.ts +14 -0
  356. package/dist/passport-strategies/microsoft-oauth.strategy.d.ts.map +1 -0
  357. package/dist/passport-strategies/microsoft-oauth.strategy.js +77 -0
  358. package/dist/passport-strategies/microsoft-oauth.strategy.js.map +1 -0
  359. package/dist/repository/action-metadata.repository.d.ts +2 -2
  360. package/dist/repository/agent-event.repository.d.ts +2 -2
  361. package/dist/repository/agent-session.repository.d.ts +2 -2
  362. package/dist/repository/ai-interaction.repository.d.ts +2 -2
  363. package/dist/repository/chatter-message-details.repository.d.ts +2 -2
  364. package/dist/repository/chatter-message-details.repository.d.ts.map +1 -1
  365. package/dist/repository/chatter-message-details.repository.js +7 -6
  366. package/dist/repository/chatter-message-details.repository.js.map +1 -1
  367. package/dist/repository/chatter-message.repository.d.ts +2 -2
  368. package/dist/repository/chatter-message.repository.d.ts.map +1 -1
  369. package/dist/repository/chatter-message.repository.js +4 -4
  370. package/dist/repository/chatter-message.repository.js.map +1 -1
  371. package/dist/repository/dashboard-layout.repository.d.ts +2 -2
  372. package/dist/repository/dashboard-question-sql-dataset-config.repository.d.ts +2 -2
  373. package/dist/repository/dashboard-question-sql-dataset-config.repository.d.ts.map +1 -1
  374. package/dist/repository/dashboard-question-sql-dataset-config.repository.js +2 -2
  375. package/dist/repository/dashboard-question-sql-dataset-config.repository.js.map +1 -1
  376. package/dist/repository/dashboard-question.repository.d.ts +2 -2
  377. package/dist/repository/dashboard-question.repository.d.ts.map +1 -1
  378. package/dist/repository/dashboard-question.repository.js +2 -2
  379. package/dist/repository/dashboard-question.repository.js.map +1 -1
  380. package/dist/repository/dashboard-variable.repository.d.ts +2 -2
  381. package/dist/repository/dashboard-variable.repository.d.ts.map +1 -1
  382. package/dist/repository/dashboard-variable.repository.js +2 -2
  383. package/dist/repository/dashboard-variable.repository.js.map +1 -1
  384. package/dist/repository/dashboard.repository.d.ts +2 -2
  385. package/dist/repository/email-template.repository.d.ts +2 -2
  386. package/dist/repository/email-template.repository.d.ts.map +1 -1
  387. package/dist/repository/email-template.repository.js +2 -2
  388. package/dist/repository/email-template.repository.js.map +1 -1
  389. package/dist/repository/export-template.repository.d.ts +2 -2
  390. package/dist/repository/export-template.repository.d.ts.map +1 -1
  391. package/dist/repository/export-template.repository.js +2 -2
  392. package/dist/repository/export-template.repository.js.map +1 -1
  393. package/dist/repository/export-transaction.repository.d.ts +2 -2
  394. package/dist/repository/export-transaction.repository.d.ts.map +1 -1
  395. package/dist/repository/export-transaction.repository.js +2 -2
  396. package/dist/repository/export-transaction.repository.js.map +1 -1
  397. package/dist/repository/field-metadata.repository.d.ts +1 -1
  398. package/dist/repository/import-transaction-error-log.repository.d.ts +2 -2
  399. package/dist/repository/import-transaction-error-log.repository.d.ts.map +1 -1
  400. package/dist/repository/import-transaction-error-log.repository.js +2 -2
  401. package/dist/repository/import-transaction-error-log.repository.js.map +1 -1
  402. package/dist/repository/import-transaction.repository.d.ts +2 -2
  403. package/dist/repository/import-transaction.repository.d.ts.map +1 -1
  404. package/dist/repository/import-transaction.repository.js +2 -2
  405. package/dist/repository/import-transaction.repository.js.map +1 -1
  406. package/dist/repository/list-of-values.repository.d.ts +2 -2
  407. package/dist/repository/list-of-values.repository.d.ts.map +1 -1
  408. package/dist/repository/list-of-values.repository.js +2 -2
  409. package/dist/repository/list-of-values.repository.js.map +1 -1
  410. package/dist/repository/locale.repository.d.ts +2 -2
  411. package/dist/repository/locale.repository.d.ts.map +1 -1
  412. package/dist/repository/locale.repository.js +2 -2
  413. package/dist/repository/locale.repository.js.map +1 -1
  414. package/dist/repository/media-storage-provider-metadata.repository.d.ts +1 -1
  415. package/dist/repository/media.repository.d.ts +2 -2
  416. package/dist/repository/menu-item-metadata.repository.d.ts +2 -2
  417. package/dist/repository/menu-item-metadata.repository.d.ts.map +1 -1
  418. package/dist/repository/menu-item-metadata.repository.js +2 -2
  419. package/dist/repository/menu-item-metadata.repository.js.map +1 -1
  420. package/dist/repository/model-metadata.repository.d.ts +1 -1
  421. package/dist/repository/model-metadata.repository.d.ts.map +1 -1
  422. package/dist/repository/model-metadata.repository.js +2 -2
  423. package/dist/repository/model-metadata.repository.js.map +1 -1
  424. package/dist/repository/model-sequence.repository.d.ts +3 -3
  425. package/dist/repository/module-metadata.repository.d.ts +1 -1
  426. package/dist/repository/module-metadata.repository.d.ts.map +1 -1
  427. package/dist/repository/module-metadata.repository.js +2 -2
  428. package/dist/repository/module-metadata.repository.js.map +1 -1
  429. package/dist/repository/mq-message-queue.repository.d.ts +2 -2
  430. package/dist/repository/mq-message-queue.repository.d.ts.map +1 -1
  431. package/dist/repository/mq-message-queue.repository.js +2 -2
  432. package/dist/repository/mq-message-queue.repository.js.map +1 -1
  433. package/dist/repository/mq-message.repository.d.ts +2 -2
  434. package/dist/repository/mq-message.repository.d.ts.map +1 -1
  435. package/dist/repository/mq-message.repository.js +2 -2
  436. package/dist/repository/mq-message.repository.js.map +1 -1
  437. package/dist/repository/permission-metadata.repository.d.ts +2 -2
  438. package/dist/repository/permission-metadata.repository.d.ts.map +1 -1
  439. package/dist/repository/permission-metadata.repository.js +2 -2
  440. package/dist/repository/permission-metadata.repository.js.map +1 -1
  441. package/dist/repository/role-metadata.repository.d.ts +2 -2
  442. package/dist/repository/role-metadata.repository.d.ts.map +1 -1
  443. package/dist/repository/role-metadata.repository.js +2 -2
  444. package/dist/repository/role-metadata.repository.js.map +1 -1
  445. package/dist/repository/saved-filters.repository.d.ts +2 -2
  446. package/dist/repository/scheduled-job.repository.d.ts +3 -3
  447. package/dist/repository/security-rule.repository.d.ts +7 -7
  448. package/dist/repository/setting.repository.d.ts +2 -2
  449. package/dist/repository/setting.repository.d.ts.map +1 -1
  450. package/dist/repository/setting.repository.js +2 -2
  451. package/dist/repository/setting.repository.js.map +1 -1
  452. package/dist/repository/sms-template.repository.d.ts +2 -2
  453. package/dist/repository/sms-template.repository.d.ts.map +1 -1
  454. package/dist/repository/sms-template.repository.js +2 -2
  455. package/dist/repository/sms-template.repository.js.map +1 -1
  456. package/dist/repository/solid-base.repository.d.ts +2 -2
  457. package/dist/repository/solid-base.repository.js +2 -2
  458. package/dist/repository/solid-base.repository.js.map +1 -1
  459. package/dist/repository/user-activity-history.repository.d.ts +2 -2
  460. package/dist/repository/user-activity-history.repository.d.ts.map +1 -1
  461. package/dist/repository/user-activity-history.repository.js +2 -2
  462. package/dist/repository/user-activity-history.repository.js.map +1 -1
  463. package/dist/repository/user-api-key.repository.d.ts +2 -2
  464. package/dist/repository/user-view-metadata.repository.d.ts +2 -2
  465. package/dist/repository/user-view-metadata.repository.d.ts.map +1 -1
  466. package/dist/repository/user-view-metadata.repository.js +2 -2
  467. package/dist/repository/user-view-metadata.repository.js.map +1 -1
  468. package/dist/repository/user.repository.d.ts +2 -2
  469. package/dist/repository/view-metadata.repository.d.ts +2 -2
  470. package/dist/seeders/module-metadata-seeder.service.d.ts +17 -14
  471. package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
  472. package/dist/seeders/module-metadata-seeder.service.js +65 -38
  473. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  474. package/dist/seeders/module-test-data.service.d.ts +1 -1
  475. package/dist/seeders/module-test-data.service.d.ts.map +1 -1
  476. package/dist/seeders/module-test-data.service.js +5 -12
  477. package/dist/seeders/module-test-data.service.js.map +1 -1
  478. package/dist/seeders/permission-metadata-seeder.service.d.ts +2 -2
  479. package/dist/seeders/seed-data/solid-core-metadata.json +40 -89
  480. package/dist/seeders/system-fields-seeder.service.d.ts +3 -3
  481. package/dist/services/action-metadata.service.d.ts +2 -2
  482. package/dist/services/agent-event.service.d.ts +2 -2
  483. package/dist/services/agent-session.service.d.ts +2 -2
  484. package/dist/services/ai-interaction.service.d.ts +4 -4
  485. package/dist/services/api-key.service.d.ts +23 -7
  486. package/dist/services/api-key.service.d.ts.map +1 -1
  487. package/dist/services/api-key.service.js +38 -2
  488. package/dist/services/api-key.service.js.map +1 -1
  489. package/dist/services/authentication.service.d.ts +66 -28
  490. package/dist/services/authentication.service.d.ts.map +1 -1
  491. package/dist/services/authentication.service.js +377 -180
  492. package/dist/services/authentication.service.js.map +1 -1
  493. package/dist/services/chatter-message-details.service.d.ts +2 -2
  494. package/dist/services/chatter-message.service.d.ts +8 -7
  495. package/dist/services/chatter-message.service.d.ts.map +1 -1
  496. package/dist/services/chatter-message.service.js +17 -0
  497. package/dist/services/chatter-message.service.js.map +1 -1
  498. package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.d.ts +3 -3
  499. package/dist/services/computed-fields/entity/concat-entity-computed-field-provider.service.d.ts +3 -3
  500. package/dist/services/computed-fields/entity/noops-entity-computed-field-provider.service.d.ts +2 -2
  501. package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.d.ts +3 -3
  502. package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.d.ts.map +1 -1
  503. package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.js +2 -2
  504. package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.js.map +1 -1
  505. package/dist/services/computed-fields/entity/uuid-externalid-entity-computed-field-provider.service.d.ts +2 -2
  506. package/dist/services/crud-helper.service.d.ts +1 -1
  507. package/dist/services/crud-helper.service.d.ts.map +1 -1
  508. package/dist/services/crud-helper.service.js +9 -9
  509. package/dist/services/crud-helper.service.js.map +1 -1
  510. package/dist/services/crud.service.d.ts +4 -1
  511. package/dist/services/crud.service.d.ts.map +1 -1
  512. package/dist/services/crud.service.js +52 -3
  513. package/dist/services/crud.service.js.map +1 -1
  514. package/dist/services/dashboard-layout.service.d.ts +4 -4
  515. package/dist/services/dashboard-question-sql-dataset-config.service.d.ts +2 -2
  516. package/dist/services/dashboard-question.service.d.ts +3 -3
  517. package/dist/services/dashboard-question.service.js.map +1 -1
  518. package/dist/services/dashboard-variable.service.d.ts +2 -2
  519. package/dist/services/dashboard.service.d.ts +7 -7
  520. package/dist/services/email-template.service.d.ts +1 -1
  521. package/dist/services/export-template.service.d.ts +5 -5
  522. package/dist/services/export-transaction.service.d.ts +7 -7
  523. package/dist/services/export-transaction.service.d.ts.map +1 -1
  524. package/dist/services/export-transaction.service.js +4 -3
  525. package/dist/services/export-transaction.service.js.map +1 -1
  526. package/dist/services/field-metadata.service.d.ts +5 -5
  527. package/dist/services/field-metadata.service.d.ts.map +1 -1
  528. package/dist/services/field-metadata.service.js +7 -7
  529. package/dist/services/field-metadata.service.js.map +1 -1
  530. package/dist/services/fixtures.service.d.ts +1 -1
  531. package/dist/services/fixtures.service.js +2 -2
  532. package/dist/services/fixtures.service.js.map +1 -1
  533. package/dist/services/genai/mcp-handlers/mcp-handler-factory.service.d.ts +1 -1
  534. package/dist/services/genai/mcp-handlers/mcp-handler-factory.service.d.ts.map +1 -1
  535. package/dist/services/genai/mcp-handlers/mcp-handler-factory.service.js +2 -2
  536. package/dist/services/genai/mcp-handlers/mcp-handler-factory.service.js.map +1 -1
  537. package/dist/services/genai/mcp-handlers/solid-add-question-to-dashboard-mcp-handler.service.d.ts +1 -1
  538. package/dist/services/genai/mcp-handlers/solid-add-variable-to-dashboard-mcp-handler.service.d.ts +2 -2
  539. package/dist/services/genai/mcp-handlers/solid-create-dashboard-mcp-handler.service.d.ts +1 -1
  540. package/dist/services/genai/mcp-handlers/solid-create-dashboard-question-mcp-handler.service.d.ts +1 -1
  541. package/dist/services/genai/mcp-handlers/solid-create-dashboard-question-sql-dataset-config-mcp-handler.service.d.ts +1 -1
  542. package/dist/services/genai/mcp-handlers/solid-create-dashboard-widget-mcp-handler.service.d.ts +1 -1
  543. package/dist/services/import-transaction-error-log.service.d.ts +2 -2
  544. package/dist/services/import-transaction.service.d.ts +6 -6
  545. package/dist/services/import-transaction.service.d.ts.map +1 -1
  546. package/dist/services/import-transaction.service.js +2 -2
  547. package/dist/services/import-transaction.service.js.map +1 -1
  548. package/dist/services/list-of-values.service.d.ts +4 -4
  549. package/dist/services/locale.service.d.ts +4 -4
  550. package/dist/services/mail/elastic-email.service.d.ts +1 -1
  551. package/dist/services/mail/smtp-email.service.d.ts +1 -1
  552. package/dist/services/media-storage-provider-metadata.service.d.ts +1 -1
  553. package/dist/services/media.service.d.ts +8 -8
  554. package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts +5 -5
  555. package/dist/services/mediaStorageProviders/file-storage-provider.d.ts +5 -5
  556. package/dist/services/menu-item-metadata.service.d.ts +4 -4
  557. package/dist/services/menu-item-metadata.service.js +2 -2
  558. package/dist/services/menu-item-metadata.service.js.map +1 -1
  559. package/dist/services/model-metadata.service.d.ts +4 -4
  560. package/dist/services/model-metadata.service.d.ts.map +1 -1
  561. package/dist/services/model-metadata.service.js +12 -11
  562. package/dist/services/model-metadata.service.js.map +1 -1
  563. package/dist/services/model-sequence.service.d.ts +1 -1
  564. package/dist/services/module-metadata.service.d.ts +4 -4
  565. package/dist/services/module-metadata.service.d.ts.map +1 -1
  566. package/dist/services/module-metadata.service.js +2 -2
  567. package/dist/services/module-metadata.service.js.map +1 -1
  568. package/dist/services/mq-message-queue.service.d.ts +2 -2
  569. package/dist/services/mq-message.service.d.ts +2 -2
  570. package/dist/services/permission-metadata.service.d.ts +2 -2
  571. package/dist/services/question-data-providers/chartjs-sql-data-provider.service.d.ts +2 -2
  572. package/dist/services/question-data-providers/helpers.d.ts +1 -1
  573. package/dist/services/question-data-providers/prime-react-datatable-sql-data-provider.service.d.ts +2 -2
  574. package/dist/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.d.ts +2 -2
  575. package/dist/services/queues/database-subscriber.service.d.ts +1 -1
  576. package/dist/services/queues/database-subscriber.service.d.ts.map +1 -1
  577. package/dist/services/queues/database-subscriber.service.js.map +1 -1
  578. package/dist/services/queues/publisher-factory.service.d.ts +1 -1
  579. package/dist/services/queues/publisher-factory.service.d.ts.map +1 -1
  580. package/dist/services/queues/publisher-factory.service.js +2 -2
  581. package/dist/services/queues/publisher-factory.service.js.map +1 -1
  582. package/dist/services/queues/rabbitmq-subscriber.service.d.ts +1 -1
  583. package/dist/services/queues/rabbitmq-subscriber.service.d.ts.map +1 -1
  584. package/dist/services/queues/rabbitmq-subscriber.service.js +3 -1
  585. package/dist/services/queues/rabbitmq-subscriber.service.js.map +1 -1
  586. package/dist/services/queues/redis-subscriber.service.d.ts +1 -1
  587. package/dist/services/queues/redis-subscriber.service.d.ts.map +1 -1
  588. package/dist/services/queues/redis-subscriber.service.js.map +1 -1
  589. package/dist/services/request-context.service.d.ts +2 -2
  590. package/dist/services/role-metadata.service.d.ts +3 -3
  591. package/dist/services/saved-filters.service.d.ts +2 -2
  592. package/dist/services/scheduled-job.service.d.ts +3 -3
  593. package/dist/services/scheduled-jobs/scheduled-job.interface.d.ts +1 -1
  594. package/dist/services/scheduled-jobs/scheduler.interface.d.ts +1 -1
  595. package/dist/services/scheduled-jobs/scheduler.service.d.ts +3 -3
  596. package/dist/services/security-rule.service.d.ts +3 -3
  597. package/dist/services/security-rule.service.d.ts.map +1 -1
  598. package/dist/services/security-rule.service.js +3 -3
  599. package/dist/services/security-rule.service.js.map +1 -1
  600. package/dist/services/selection-providers/list-of-dashboard-question-providers-selection-provider.service.d.ts +1 -1
  601. package/dist/services/selection-providers/list-of-dashboard-variable-providers-selection-provider.service.d.ts +1 -1
  602. package/dist/services/selection-providers/list-of-models-selection-provider.service.d.ts +1 -1
  603. package/dist/services/selection-providers/list-of-scheduled-jobs-selection-provider.service.d.ts +1 -1
  604. package/dist/services/selection-providers/pseudo-foreign-key-selection-provider.service.js +3 -3
  605. package/dist/services/selection-providers/pseudo-foreign-key-selection-provider.service.js.map +1 -1
  606. package/dist/services/setting.service.d.ts +10 -7
  607. package/dist/services/setting.service.d.ts.map +1 -1
  608. package/dist/services/setting.service.js +52 -7
  609. package/dist/services/setting.service.js.map +1 -1
  610. package/dist/services/settings/default-settings-provider.service.d.ts +845 -9
  611. package/dist/services/settings/default-settings-provider.service.d.ts.map +1 -1
  612. package/dist/services/settings/default-settings-provider.service.js +1096 -118
  613. package/dist/services/settings/default-settings-provider.service.js.map +1 -1
  614. package/dist/services/short-url/tiny-url.service.d.ts +1 -1
  615. package/dist/services/sms/Msg91BaseSMSService.d.ts +1 -1
  616. package/dist/services/sms/Msg91OTPService.d.ts +1 -1
  617. package/dist/services/sms/Msg91SMSService.d.ts +1 -1
  618. package/dist/services/sms/TwilioSMSService.d.ts +1 -1
  619. package/dist/services/sms-template.service.d.ts +1 -1
  620. package/dist/services/solid-introspect.service.d.ts +9 -8
  621. package/dist/services/solid-introspect.service.d.ts.map +1 -1
  622. package/dist/services/solid-introspect.service.js +13 -2
  623. package/dist/services/solid-introspect.service.js.map +1 -1
  624. package/dist/services/user-activity-history.service.d.ts +3 -3
  625. package/dist/services/user-view-metadata.service.d.ts +4 -4
  626. package/dist/services/user.service.d.ts +12 -8
  627. package/dist/services/user.service.d.ts.map +1 -1
  628. package/dist/services/user.service.js +143 -32
  629. package/dist/services/user.service.js.map +1 -1
  630. package/dist/services/view-metadata.service.d.ts +4 -4
  631. package/dist/services/view-metadata.service.d.ts.map +1 -1
  632. package/dist/services/view-metadata.service.js +2 -2
  633. package/dist/services/view-metadata.service.js.map +1 -1
  634. package/dist/services/whatsapp/Msg91WhatsappService.d.ts +1 -1
  635. package/dist/services/whatsapp/Three60WhatsappService.d.ts +1 -1
  636. package/dist/solid-core.module.d.ts.map +1 -1
  637. package/dist/solid-core.module.js +11 -3
  638. package/dist/solid-core.module.js.map +1 -1
  639. package/dist/subscribers/audit.subscriber.d.ts +4 -4
  640. package/dist/subscribers/computed-entity-field.subscriber.d.ts +2 -2
  641. package/dist/subscribers/computed-entity-field.subscriber.js +6 -6
  642. package/dist/subscribers/computed-entity-field.subscriber.js.map +1 -1
  643. package/dist/subscribers/created-by-updated-by.subscriber.d.ts +1 -1
  644. package/dist/subscribers/dashboard-question-sql-dataset-config.subscriber.d.ts +3 -3
  645. package/dist/subscribers/dashboard-question.subscriber.d.ts +3 -3
  646. package/dist/subscribers/dashboard-variable.subscriber.d.ts +3 -3
  647. package/dist/subscribers/dashboard.subscriber.d.ts +3 -3
  648. package/dist/subscribers/list-of-values.subscriber.d.ts +3 -3
  649. package/dist/subscribers/model-metadata.subscriber.d.ts +1 -1
  650. package/dist/subscribers/scheduled-job.subscriber.d.ts +3 -3
  651. package/dist/subscribers/security-rule.subscriber.d.ts +3 -3
  652. package/dist/subscribers/view-metadata.subscriber.d.ts +2 -2
  653. package/dist/testing/contracts/testing-metadata.types.d.ts +1 -0
  654. package/dist/testing/contracts/testing-metadata.types.d.ts.map +1 -1
  655. package/dist/testing/contracts/testing-metadata.types.js.map +1 -1
  656. package/dist/testing/steps/ui/assertions.step.d.ts.map +1 -1
  657. package/dist/testing/steps/ui/assertions.step.js +8 -0
  658. package/dist/testing/steps/ui/assertions.step.js.map +1 -1
  659. package/dist/testing/steps/ui/form.step.d.ts.map +1 -1
  660. package/dist/testing/steps/ui/form.step.js +49 -0
  661. package/dist/testing/steps/ui/form.step.js.map +1 -1
  662. package/dist/transformers/array-transformer.d.ts.map +1 -1
  663. package/dist/transformers/boolean-transformer.d.ts.map +1 -1
  664. package/dist/transformers/datetime-transformer.d.ts.map +1 -1
  665. package/dist/transformers/integer-transformer.d.ts.map +1 -1
  666. package/dist/validators/is-parsable-int.d.ts.map +1 -1
  667. package/dist/winston.logger.js +1 -1
  668. package/dist/winston.logger.js.map +1 -1
  669. package/nest +0 -0
  670. package/package.json +13 -7
  671. package/src/constants/chatter-message.constants.ts +7 -0
  672. package/src/controllers/authentication.controller.ts +8 -1
  673. package/src/controllers/chatter-message.controller.ts +6 -0
  674. package/src/controllers/facebook-authentication.controller.ts +113 -0
  675. package/src/controllers/menu-item-metadata.controller.ts +21 -15
  676. package/src/controllers/microsoft-authentication.controller.ts +116 -0
  677. package/src/controllers/otp-authentication.controller.ts +2 -2
  678. package/src/controllers/setting.controller.ts +2 -2
  679. package/src/decorators/extension-user-creation-provider.decorator.ts +5 -0
  680. package/src/dtos/create-chatter-message.dto.ts +11 -0
  681. package/src/dtos/create-field-metadata.dto.ts +1 -1
  682. package/src/dtos/create-user.dto.ts +4 -0
  683. package/src/dtos/post-chatter-message.dto.ts +4 -0
  684. package/src/dtos/update-chatter-message.dto.ts +13 -1
  685. package/src/dtos/update-user.dto.ts +4 -0
  686. package/src/entities/chatter-message.entity.ts +4 -1
  687. package/src/entities/user.entity.ts +33 -0
  688. package/src/helpers/bootstrap.helper.ts +5 -2
  689. package/src/helpers/cors.helper.ts +1 -1
  690. package/src/helpers/facebook-oauth.helper.ts +17 -0
  691. package/src/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.ts +1 -1
  692. package/src/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.ts +1 -2
  693. package/src/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.ts +1 -1
  694. package/src/helpers/microsoft-oauth.helper.ts +19 -0
  695. package/src/helpers/module-metadata-helper.service.ts +3 -3
  696. package/src/helpers/solid-registry.ts +19 -1
  697. package/src/helpers/string.helper.ts +3 -0
  698. package/src/helpers/user-helper.ts +4 -0
  699. package/src/index.ts +3 -0
  700. package/src/interfaces/mq.ts +2 -2
  701. package/src/interfaces.ts +41 -1
  702. package/src/jobs/database/api-email-subscriber-database.service.ts +1 -1
  703. package/src/jobs/database/msg91-whatsapp-subscriber-database.service.ts +1 -1
  704. package/src/jobs/database/three60-whatsapp-subscriber-database.service.ts +1 -1
  705. package/src/jobs/database/trigger-mcp-client-subscriber-database.service.ts +1 -1
  706. package/src/jobs/rabbitmq/api-email-subscriber.service.ts +1 -1
  707. package/src/jobs/rabbitmq/msg91-whatsapp-subscriber.service.ts +1 -1
  708. package/src/jobs/rabbitmq/test-queue-subscriber.service.ts +6 -7
  709. package/src/jobs/rabbitmq/three60-whatsapp-subscriber.service.ts +1 -1
  710. package/src/jobs/redis/api-email-subscriber-redis.service.ts +1 -1
  711. package/src/jobs/redis/msg91-whatsapp-subscriber-redis.service.ts +1 -1
  712. package/src/jobs/redis/three60-whatsapp-subscriber-redis.service.ts +1 -1
  713. package/src/passport-strategies/facebook-oauth.strategy.ts +115 -0
  714. package/src/passport-strategies/microsoft-oauth.strategy.ts +70 -0
  715. package/src/repository/chatter-message-details.repository.ts +4 -3
  716. package/src/repository/chatter-message.repository.ts +4 -4
  717. package/src/repository/dashboard-question-sql-dataset-config.repository.ts +1 -1
  718. package/src/repository/dashboard-question.repository.ts +1 -1
  719. package/src/repository/dashboard-variable.repository.ts +1 -1
  720. package/src/repository/email-template.repository.ts +1 -1
  721. package/src/repository/export-template.repository.ts +2 -1
  722. package/src/repository/export-transaction.repository.ts +1 -1
  723. package/src/repository/import-transaction-error-log.repository.ts +1 -1
  724. package/src/repository/import-transaction.repository.ts +1 -1
  725. package/src/repository/list-of-values.repository.ts +1 -1
  726. package/src/repository/locale.repository.ts +1 -1
  727. package/src/repository/menu-item-metadata.repository.ts +1 -1
  728. package/src/repository/model-metadata.repository.ts +1 -1
  729. package/src/repository/module-metadata.repository.ts +1 -1
  730. package/src/repository/mq-message-queue.repository.ts +2 -1
  731. package/src/repository/mq-message.repository.ts +1 -1
  732. package/src/repository/permission-metadata.repository.ts +1 -1
  733. package/src/repository/role-metadata.repository.ts +1 -1
  734. package/src/repository/setting.repository.ts +1 -1
  735. package/src/repository/sms-template.repository.ts +1 -1
  736. package/src/repository/solid-base.repository.ts +2 -2
  737. package/src/repository/user-activity-history.repository.ts +1 -1
  738. package/src/repository/user-view-metadata.repository.ts +1 -1
  739. package/src/seeders/module-metadata-seeder.service.ts +50 -25
  740. package/src/seeders/module-test-data.service.ts +2 -9
  741. package/src/seeders/seed-data/solid-core-metadata.json +40 -89
  742. package/src/services/api-key.service.ts +77 -35
  743. package/src/services/authentication.service.ts +1947 -1434
  744. package/src/services/chatter-message.service.ts +22 -4
  745. package/src/services/computed-fields/entity/sequence-num-computed-field-provider.ts +1 -2
  746. package/src/services/crud-helper.service.ts +1 -4
  747. package/src/services/crud.service.ts +22 -2
  748. package/src/services/dashboard-question.service.ts +1 -1
  749. package/src/services/export-transaction.service.ts +3 -4
  750. package/src/services/field-metadata.service.ts +1 -4
  751. package/src/services/fixtures.service.ts +1 -1
  752. package/src/services/genai/mcp-handlers/mcp-handler-factory.service.ts +1 -2
  753. package/src/services/import-transaction.service.ts +1 -1
  754. package/src/services/menu-item-metadata.service.ts +2 -2
  755. package/src/services/model-metadata.service.ts +11 -13
  756. package/src/services/module-metadata.service.ts +1 -2
  757. package/src/services/queues/database-subscriber.service.ts +1 -1
  758. package/src/services/queues/publisher-factory.service.ts +1 -2
  759. package/src/services/queues/rabbitmq-subscriber.service.ts +13 -11
  760. package/src/services/queues/redis-subscriber.service.ts +2 -2
  761. package/src/services/security-rule.service.ts +1 -1
  762. package/src/services/selection-providers/pseudo-foreign-key-selection-provider.service.ts +1 -1
  763. package/src/services/setting.service.ts +64 -8
  764. package/src/services/settings/default-settings-provider.service.ts +1168 -155
  765. package/src/services/solid-introspect.service.ts +14 -1
  766. package/src/services/user.service.ts +220 -61
  767. package/src/services/view-metadata.service.ts +1 -5
  768. package/src/solid-core.module.ts +25 -8
  769. package/src/subscribers/computed-entity-field.subscriber.ts +6 -6
  770. package/src/testing/contracts/testing-metadata.types.ts +1 -0
  771. package/src/testing/steps/ui/assertions.step.ts +9 -0
  772. package/src/testing/steps/ui/form.step.ts +19 -0
  773. package/src/winston.logger.ts +1 -1
  774. package/tsconfig.json +3 -0
  775. package/dev-grooming-docs/ozzy-prompts.txt +0 -70
  776. package/docs/grouping-enhancements.md +0 -89
  777. package/docs/seed-changes.md +0 -65
  778. package/docs/test-data-workflow.md +0 -200
  779. package/docs/type-declaration-import-issue.md +0 -24
@@ -1 +1 @@
1
- {"version":3,"file":"crud-helper.service.js","sourceRoot":"","sources":["../../src/services/crud-helper.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Brackets, SelectQueryBuilder, WhereExpressionBuilder } from \"typeorm\";\nimport { BasicFilterDto } from \"../dtos/basic-filters.dto\";\nimport { classify } from \"@angular-devkit/core/src/utils/strings\";\nimport { ActiveUserData } from \"src/interfaces/active-user-data.interface\";\nimport { SolidRegistry } from \"src/helpers/solid-registry\";\nimport { BadRequestException, Logger } from \"@nestjs/common\";\nimport { ERROR_MESSAGES } from \"src/constants/error-messages\";\n\nexport enum FilterCombinator {\n AND = '$and',\n OR = '$or'\n}\n\nexport enum UserIdFields {\n CREATED_BY = 'createdBy',\n UPDATED_BY = 'updatedBy'\n}\n\nexport class CrudHelperService {\n constructor(\n ) { }\n private readonly logger = new Logger(CrudHelperService.name);\n\n private orderOptions(sort: any[] = []) {\n const orderOptions = {};\n sort.forEach((s: string) => {\n const parts = s.split(':');\n let order: string | undefined;\n let field: string;\n if (parts.length > 1) {\n order = parts.pop();\n field = parts.join(':');\n } else {\n field = parts[0];\n }\n const normalizedOrder = order ? order.toUpperCase() : 'ASC';\n if (!['ASC', 'DESC'].includes(normalizedOrder)) {\n throw new Error(`Invalid sort order provided: ${order}`);\n }\n orderOptions[field] = normalizedOrder;\n });\n return orderOptions;\n }\n\n applyFilters(qb: WhereExpressionBuilder, filters: any, alias: string = 'entity', selectQb: SelectQueryBuilder<any>) {\n const normalizedFilters = this.normalizeObjectKeys(filters);\n if (normalizedFilters.$and) {\n normalizedFilters.$and.forEach((andFilter: any) => {\n qb.andWhere(\n new Brackets(subQb => {\n this.applyFilters(subQb, andFilter, alias, selectQb);\n })\n );\n });\n } else if (normalizedFilters.$or) {\n normalizedFilters.$or.forEach((orFilter: any) => {\n qb.orWhere(new Brackets(subQb => {\n this.applyFilters(subQb, orFilter, alias, selectQb);\n }));\n });\n } else {\n // For individual conditions\n Object.keys(normalizedFilters).forEach(key => {\n const primaryFilterObj = normalizedFilters[key];\n const normalizedPrimaryFilterObj = this.normalizeObjectKeys(primaryFilterObj);\n\n const [rawField, funcAlias] = key.split(':');\n\n // Get the operator or field from the key\n const operatorOrField = Object.keys(normalizedPrimaryFilterObj)[0];\n // if the key is an operator, then build the query based on the operator\n if (operatorOrField.startsWith('$')) {\n const operator = operatorOrField;\n let columnExpression: string | undefined;\n if (funcAlias) {\n try {\n columnExpression = this.buildDateGranularityExpression(this.getDriver(selectQb), `${alias}.${rawField}`, funcAlias);\n } catch {\n throw new BadRequestException(`Unsupported field function '${funcAlias}'. Supported functions are: day, week, month, year.`);\n }\n }\n this.buildOperatorQuery(qb, alias, rawField, normalizedPrimaryFilterObj, operator, columnExpression);\n return;\n }\n else { // Recursively call the applyFilters method to handle nested conditions\n if (funcAlias) {\n throw new BadRequestException(`Function alias ':${funcAlias}' is not valid on relation field '${rawField}'. It can only be applied to scalar fields.`);\n }\n const joinField = `${alias}.${rawField}`;\n if (!this.isRelationJoined(selectQb, joinField)) selectQb.leftJoin(joinField, rawField);\n this.applyFilters(qb, primaryFilterObj, rawField, selectQb);\n }\n });\n }\n }\n\n private buildOperatorQuery(qb: any, alias: string, field: string, normalizedPrimaryOperatorObj: any, operator: string, columnExpression?: string) {\n const uniqueFieldAlias = `${alias}_${field}_${Math.floor(Math.random() * 1000)}`;\n const colExpr = columnExpression ?? `${alias}.${field}`;\n switch (operator) {\n case '$eq':\n qb.andWhere(`${colExpr} = :${uniqueFieldAlias}`, { [uniqueFieldAlias]: normalizedPrimaryOperatorObj.$eq });\n break;\n case '$eqi':\n qb.andWhere(`LOWER(${colExpr}) = :${uniqueFieldAlias}`, { [uniqueFieldAlias]: normalizedPrimaryOperatorObj.$eqi.toLowerCase() });\n break;\n case '$ne':\n qb.andWhere(`${colExpr} != :${uniqueFieldAlias}`, { [uniqueFieldAlias]: normalizedPrimaryOperatorObj.$ne });\n break;\n case '$nei':\n qb.andWhere(`LOWER(${colExpr}) != :${uniqueFieldAlias}`, { [uniqueFieldAlias]: normalizedPrimaryOperatorObj.$nei.toLowerCase() });\n break;\n case '$gt':\n qb.andWhere(`${colExpr} > :${uniqueFieldAlias}`, { [uniqueFieldAlias]: normalizedPrimaryOperatorObj.$gt });\n break;\n case '$gte':\n qb.andWhere(`${colExpr} >= :${uniqueFieldAlias}`, { [uniqueFieldAlias]: normalizedPrimaryOperatorObj.$gte });\n break;\n case '$lt':\n qb.andWhere(`${colExpr} < :${uniqueFieldAlias}`, { [uniqueFieldAlias]: normalizedPrimaryOperatorObj.$lt });\n break;\n case '$lte':\n qb.andWhere(`${colExpr} <= :${uniqueFieldAlias}`, { [uniqueFieldAlias]: normalizedPrimaryOperatorObj.$lte });\n break;\n case '$in':\n qb.andWhere(`${colExpr} IN (:...${uniqueFieldAlias})`, { [uniqueFieldAlias]: normalizedPrimaryOperatorObj.$in });\n break;\n case '$notIn':\n qb.andWhere(`${colExpr} NOT IN (:...${uniqueFieldAlias})`, { [uniqueFieldAlias]: normalizedPrimaryOperatorObj.$notIn });\n break;\n case '$contains':\n qb.andWhere(`${colExpr} LIKE :${uniqueFieldAlias}`, { [uniqueFieldAlias]: `%${normalizedPrimaryOperatorObj.$contains}%` });\n break;\n case '$notContains':\n qb.andWhere(`${colExpr} NOT LIKE :${uniqueFieldAlias}`, { [uniqueFieldAlias]: `%${normalizedPrimaryOperatorObj.$notContains}%` });\n break;\n case '$containsi':\n qb.andWhere(`LOWER(${colExpr}) LIKE :${uniqueFieldAlias}`, { [uniqueFieldAlias]: `%${normalizedPrimaryOperatorObj.$containsi.toLowerCase()}%` });\n break;\n case '$notContainsi':\n qb.andWhere(`LOWER(${colExpr}) NOT LIKE :${uniqueFieldAlias}`, { [uniqueFieldAlias]: `%${normalizedPrimaryOperatorObj.$notContainsi.toLowerCase()}%` });\n break;\n case '$null':\n qb.andWhere(`${colExpr} IS NULL`);\n break;\n case '$notNull':\n qb.andWhere(`${colExpr} IS NOT NULL`);\n break;\n case '$between':\n qb.andWhere(`${colExpr} BETWEEN :${uniqueFieldAlias}0 AND :${uniqueFieldAlias}1`, { [`${uniqueFieldAlias}0`]: normalizedPrimaryOperatorObj.$between[0], [`${uniqueFieldAlias}1`]: normalizedPrimaryOperatorObj.$between[1] });\n break;\n case '$startsWith':\n qb.andWhere(`${colExpr} LIKE :${uniqueFieldAlias}`, { [uniqueFieldAlias]: `${normalizedPrimaryOperatorObj.$startsWith}%` });\n break;\n case '$startsWithi':\n qb.andWhere(`LOWER(${colExpr}) LIKE :${uniqueFieldAlias}`, { [uniqueFieldAlias]: `${normalizedPrimaryOperatorObj.$startsWithi.toLowerCase()}%` });\n break;\n case '$endsWith':\n qb.andWhere(`${colExpr} LIKE :${uniqueFieldAlias}`, { [uniqueFieldAlias]: `%${normalizedPrimaryOperatorObj.$endsWith}` });\n break;\n case '$endsWithi':\n qb.andWhere(`LOWER(${colExpr}) LIKE :${uniqueFieldAlias}`, { [uniqueFieldAlias]: `%${normalizedPrimaryOperatorObj.$endsWithi.toLowerCase()}` });\n break;\n default:\n throw new Error(`Operator ${operator} is not supported`);\n }\n }\n\n // Normalize the primary operator object by removing the surrounding brackets in the keys e.g [$eq] => $eq\n private normalizeObjectKeys(obj: any): any {\n return Object.keys(obj).reduce((acc, key) => {\n // Transform the key by removing surrounding brackets\n const newKey = key.replace(/^\\[(.*)\\]$/, '$1');\n // Assign the value to the transformed key in the accumulator object\n acc[newKey] = obj[key];\n return acc;\n }, {});\n }\n\n normalize(value: string | string[]): string[] {\n if (!value) return []; // if the value is nullish, then return an empty array\n return Array.isArray(value) ? value : [value]; // if the value is an array, return it as is, otherwise return it as an array\n }\n\n private normalizeAndFilterPopulateAttributes(value: string | string[]): string[] {\n // Normalize and remove the userId fields from the populate filter, since they are handled separately\n const normalized = this.normalize(value);\n return normalized.filter(item => item !== UserIdFields.CREATED_BY && item !== UserIdFields.UPDATED_BY);\n }\n\n extractUserIdFieldsFromPopulate(value: string | string[]): UserIdFields[] {\n const normalized = this.normalize(value);\n return normalized.filter(item => item === UserIdFields.CREATED_BY || item === UserIdFields.UPDATED_BY);\n }\n\n private isRelationJoined(queryBuilder: SelectQueryBuilder<any>, joinProperty: string): boolean {\n return queryBuilder.expressionMap.joinAttributes.some(join => join.entityOrProperty === joinProperty);\n }\n\n private hasJoins(queryBuilder: SelectQueryBuilder<any>): boolean {\n return queryBuilder.expressionMap.joinAttributes.length > 0;\n }\n\n buildFilterQuery(\n qb: SelectQueryBuilder<any>,\n basicFilterDto: BasicFilterDto,\n entityAlias: string,\n internationalisation?: boolean,\n draftPublishWorkflow?: boolean,\n moduleRef?: any,\n filterCombinator: FilterCombinator = FilterCombinator.AND,\n applyPagination: boolean = true,\n applySorting: boolean = true\n ): SelectQueryBuilder<any> { // TODO : Check how to pass a type to SelectQueryBuilder instead of any\n let { limit, offset, showSoftDeleted, filters } = basicFilterDto;\n const { fields, sort, populate = [], populateMedia = [], locale, status } = basicFilterDto;\n\n // Normalize the fields, sort, groupBy and populate options i.e (since they can be either a string or an array of strings, when coming from the request)\n const normalizedFields = this.normalize(fields);\n const normalizedAndFilteredPopulateAttributes = this.normalizeAndFilterPopulateAttributes(populate);\n const normalizedPopulateMedia = this.normalize(populateMedia);\n\n // if normalizedPopulateMedia, has any nested media paths, then add then to populate excluding the last part\n const additionalPopulate = this.additionalRelationsRequiredForMediaPopulation(normalizedPopulateMedia);\n // Add the additional populate relations to the normalizedPopulate, if they are not already present\n normalizedAndFilteredPopulateAttributes.push(...additionalPopulate.filter((relation) => !normalizedAndFilteredPopulateAttributes.includes(relation)));\n\n const normalizedSort = this.normalize(sort);\n\n // Depending upon the populate option, apply the join clause\n if (normalizedAndFilteredPopulateAttributes && normalizedAndFilteredPopulateAttributes.length) {\n this.buildPopulateQuery(normalizedAndFilteredPopulateAttributes, entityAlias, qb);\n }\n\n if (filters) {\n if (filterCombinator === FilterCombinator.AND) {\n qb.andWhere(new Brackets(whereQb => {\n this.applyFilters(whereQb, filters, entityAlias, qb);\n }));\n } else if (filterCombinator === FilterCombinator.OR) {\n qb.orWhere(new Brackets(whereQb => {\n this.applyFilters(whereQb, filters, entityAlias, qb);\n }));\n }\n }\n\n let finalLocale = locale\n if (internationalisation) {\n // If locale is not provided in the filter dto, then assume it is the default locale to be used. \n if (!finalLocale) {\n //Get default locale from registry\n const solidRegistry = moduleRef.get(SolidRegistry, { strict: false });\n const defaultLocale = solidRegistry.getDefaultLocale();\n if(defaultLocale){\n finalLocale = defaultLocale.locale;\n }else{\n finalLocale = 'en';\n }\n }\n qb.andWhere(`${entityAlias}.localeName = :locale`, { locale: finalLocale });\n }\n\n if (draftPublishWorkflow && status) {\n if (basicFilterDto.status === 'published') {\n qb.andWhere(`${entityAlias}.publishedAt IS NOT NULL`);\n } else if (basicFilterDto.status === 'draft') {\n qb.andWhere(`${entityAlias}.publishedAt IS NULL`);\n }\n }\n // Depending upon the select option, apply the select clause\n if (normalizedFields && normalizedFields.length) {\n qb.select(normalizedFields.map(field => {\n // If the field contains a (, do not prefix the entity alias\n return this.wrapFieldWithAlias(field, entityAlias);\n }));\n }\n\n // Depending upon the order option, apply the order by clause\n if (applySorting && normalizedSort && normalizedSort.length) {\n const orderOptions = this.orderOptions(normalizedSort);\n if (orderOptions) {\n const orderOptionKeys = Object.keys(orderOptions) as Array<keyof typeof orderOptions>;\n orderOptionKeys.forEach((key) => {\n const value = orderOptions[key] as 'ASC' | 'DESC';\n qb.addOrderBy(`${entityAlias}.${key}`, value);\n });\n }\n }\n\n\n if (showSoftDeleted === 'inclusive') {\n qb.withDeleted();\n }\n\n if (showSoftDeleted === 'exclusive') {\n qb.withDeleted();\n qb.where(`${entityAlias}.deletedAt IS NOT NULL`);\n }\n\n // Apply the pagination options & handle the case when the query has joins\n if (applyPagination) {\n if (limit) this.hasJoins(qb) ? qb.take(limit) : qb.limit(limit);\n if (offset) this.hasJoins(qb) ? qb.skip(offset) : qb.offset(offset);\n }\n return qb;\n }\n\n additionalRelationsRequiredForMediaPopulation(normalizedPopulateMedia: string[]) {\n // Populate relations containing the media field\n return normalizedPopulateMedia\n .filter(pm => pm.includes(\".\"))\n .map((pm) => {\n const mediaPathParts = pm.split('.');\n if (mediaPathParts.length <= 1) return pm;\n return mediaPathParts.slice(0, -1).join('.');\n });\n }\n\n private buildPopulateQuery(normalizedPopulate: string[], entityAlias: string, qb: SelectQueryBuilder<any>) {\n normalizedPopulate.forEach((relation) => {\n this.buildJoinQueryForRelation(qb, entityAlias, relation);\n });\n return qb;\n }\n\n private sanitizeAlias(alias: string) {\n return alias.replace(/[^a-zA-Z0-9_]/g, '_');\n }\n\n private isAliasJoined(queryBuilder: SelectQueryBuilder<any>, alias: string): boolean {\n return queryBuilder.expressionMap.joinAttributes.some(join => join.alias?.name === alias);\n }\n\n private getExistingJoinAlias(qb: SelectQueryBuilder<any>, joinProperty: string): string | undefined {\n const existingJoin = qb.expressionMap.joinAttributes.find(join => join.entityOrProperty === joinProperty);\n return existingJoin?.alias?.name;\n }\n\n private ensureRelationPathJoined(qb: SelectQueryBuilder<any>, rootAlias: string, pathParts: string[]) {\n const mainAlias =\n qb.expressionMap?.mainAlias?.name ||\n qb.expressionMap?.aliases?.find(a => a.metadata)?.name ||\n qb.expressionMap?.aliases?.[0]?.name;\n let parentAlias = mainAlias || rootAlias;\n for (let i = 0; i < pathParts.length - 1; i++) {\n const part = pathParts[i];\n const joinProperty = `${parentAlias}.${part}`;\n const existingAlias = this.getExistingJoinAlias(qb, joinProperty);\n const joinAlias = existingAlias ?? this.sanitizeAlias(`${parentAlias}_${part}`);\n if (!existingAlias && !this.isRelationJoined(qb, joinProperty) && !this.isAliasJoined(qb, joinAlias)) {\n qb.leftJoin(joinProperty, joinAlias);\n }\n parentAlias = joinAlias;\n }\n return { alias: parentAlias, property: pathParts[pathParts.length - 1] };\n }\n\n private getDriver(qb: SelectQueryBuilder<any>) {\n return qb.connection.options.type as string;\n }\n\n private buildDateGranularityExpression(driver: string, columnExpr: string, granularity: string) {\n switch (driver) {\n case 'postgres':\n case 'cockroachdb':\n return `DATE_TRUNC('${granularity}', ${columnExpr})`;\n case 'mysql':\n case 'mariadb':\n switch (granularity) {\n case 'day': return `DATE(${columnExpr})`;\n case 'week': return `STR_TO_DATE(DATE_FORMAT(${columnExpr}, '%x-%v-1'), '%x-%v-%w')`;\n case 'month': return `DATE_FORMAT(${columnExpr}, '%Y-%m-01')`;\n case 'year': return `DATE_FORMAT(${columnExpr}, '%Y-01-01')`;\n default: throw new Error(`Unsupported granularity ${granularity} for driver ${driver}`);\n }\n case 'mssql':\n case 'sqlserver':\n switch (granularity) {\n case 'day': return `CONVERT(date, ${columnExpr})`;\n case 'week': return `DATEADD(week, DATEDIFF(week, 0, ${columnExpr}), 0)`;\n case 'month': return `DATEFROMPARTS(YEAR(${columnExpr}), MONTH(${columnExpr}), 1)`;\n case 'year': return `DATEFROMPARTS(YEAR(${columnExpr}), 1, 1)`;\n default: throw new Error(`Unsupported granularity ${granularity} for driver ${driver}`);\n }\n default:\n throw new Error(`Granularity not supported for driver ${driver}`);\n }\n }\n\n private buildGroupByExpression(qb: SelectQueryBuilder<any>, rootAlias: string, field: string) {\n const parts = field.split(':');\n const rawField = parts[0];\n const granularity = parts[1];\n const format = parts[2];\n const pathParts = rawField.split('.');\n const { alias, property } = this.ensureRelationPathJoined(qb, rootAlias, pathParts);\n const columnExpr = `${alias}.${property}`;\n const groupExpr = granularity ? this.buildDateGranularityExpression(this.getDriver(qb), columnExpr, granularity) : columnExpr;\n const selectAlias = this.sanitizeAlias(`${rawField.replace(/\\./g, '_')}${granularity ? '_' + granularity : ''}`);\n return { groupExpr, selectAlias, sourceKey: field, format };\n }\n\n applyGroupBySelections(\n qb: SelectQueryBuilder<any>,\n groupBy: string[],\n entityAlias: string\n ) {\n const aliasMap: Record<string, string> = {};\n const formatMap: Record<string, string | undefined> = {};\n const expressionMap: Record<string, string> = {};\n qb.select([]);\n groupBy.forEach((field) => {\n const { groupExpr, selectAlias, sourceKey, format } = this.buildGroupByExpression(qb, entityAlias, field);\n qb.addSelect(groupExpr, selectAlias);\n qb.addGroupBy(groupExpr);\n aliasMap[sourceKey] = selectAlias;\n formatMap[selectAlias] = format;\n expressionMap[selectAlias] = groupExpr;\n });\n return { aliasMap, formatMap, expressionMap };\n }\n\n private buildAggregateExpression(qb: SelectQueryBuilder<any>, rootAlias: string, aggregate: string) {\n const [rawField, rawFn] = aggregate.split(':');\n const fn = (rawFn || 'count').toLowerCase();\n if ((!rawField || rawField.toLowerCase() === 'count') && fn === 'count') {\n return { expression: 'COUNT(*)', selectAlias: 'count' };\n }\n if (!rawField) throw new Error(`Invalid aggregate specification: ${aggregate}`);\n const pathParts = rawField.split('.');\n const { alias, property } = this.ensureRelationPathJoined(qb, rootAlias, pathParts);\n const columnExpr = `${alias}.${property}`;\n const selectAlias = this.sanitizeAlias(`${rawField.replace(/\\./g, '_')}_${fn}`);\n let expression = '';\n switch (fn) {\n case 'count': expression = `COUNT(${columnExpr})`; break;\n case 'count_distinct': expression = `COUNT(DISTINCT ${columnExpr})`; break;\n case 'sum': expression = `SUM(${columnExpr})`; break;\n case 'avg': expression = `AVG(${columnExpr})`; break;\n case 'min': expression = `MIN(${columnExpr})`; break;\n case 'max': expression = `MAX(${columnExpr})`; break;\n default: throw new Error(`Unsupported aggregate function ${fn}`);\n }\n return { expression, selectAlias, sourceKey: aggregate };\n }\n\n applyAggregates(\n qb: SelectQueryBuilder<any>,\n aggregates: string[] | undefined,\n entityAlias: string\n ) {\n const aggregateList = this.normalize(aggregates);\n const aggregateAliasMap: Record<string, string> = {};\n if (!aggregateList.length) {\n qb.addSelect('COUNT(*)', 'count');\n aggregateAliasMap['count'] = 'count';\n return aggregateAliasMap;\n }\n aggregateList.forEach((agg) => {\n const { expression, selectAlias, sourceKey } = this.buildAggregateExpression(qb, entityAlias, agg);\n qb.addSelect(expression, selectAlias);\n aggregateAliasMap[sourceKey] = selectAlias;\n });\n return aggregateAliasMap;\n }\n\n applyGroupSortingAndPagination(\n qb: SelectQueryBuilder<any>,\n sort: string[] | undefined,\n aliasMap: Record<string, string>,\n limit?: number,\n offset?: number\n ) {\n const normalizedSort = this.normalize(sort);\n if (normalizedSort.length) {\n const orderOptions = this.orderOptions(normalizedSort);\n const orderOptionKeys = Object.keys(orderOptions) as Array<keyof typeof orderOptions>;\n orderOptionKeys.forEach((key) => {\n const resolvedKey = aliasMap[key] || key as string;\n const value = orderOptions[key] as 'ASC' | 'DESC';\n qb.addOrderBy(`\"${resolvedKey}\"`, value);\n });\n }\n const hasLimit = limit !== undefined && limit !== null;\n const hasOffset = offset !== undefined && offset !== null;\n\n // Use both take/skip and limit/offset to ensure pagination is applied even when joins are present.\n if (hasLimit) {\n qb.take(limit);\n qb.limit(limit);\n }\n if (hasOffset) {\n qb.skip(offset);\n qb.offset(offset);\n }\n }\n\n async countGroups(qb: SelectQueryBuilder<any>) {\n const clone = qb.clone();\n clone.limit(undefined).offset(undefined).take(undefined).skip(undefined);\n const rows = await clone.getRawMany();\n return rows.length;\n }\n\n private buildJoinQueryForRelation(qb: SelectQueryBuilder<any>, entityAlias: string, relation: string) {\n // We split the joinProperty to get the alias of the entity we are joining\n const relationParts = relation.split('.');\n let parentAlias = entityAlias;\n relationParts.forEach((part, i) => {\n const joinProperty = `${parentAlias}.${part}`;\n // Check if the relation is already joined, if not then join it\n if (!this.isRelationJoined(qb, joinProperty)) {\n const joinAlias = relationParts.slice(0, i + 1).join('_');\n qb.leftJoinAndSelect(joinProperty, joinAlias);\n }\n else {\n // Since in populate, we are create a unique alias based on the relation path\n //If the join is already present, it is probably because of the relation being passed in the where filter i.e applyFilters method\n qb.addSelect(`${part}`);\n }\n parentAlias = part; // Update the parent alias for the next iteration\n });\n return qb;\n }\n\n private wrapFieldWithAlias(field: string, entityAlias: string): string {\n if (!this.isAggregateField(field)) return `${entityAlias}.${field}`;\n // For aggregate fields, extract the field name from the aggregate function & wrap it with the entity alias, if it is not already wrapped\n const fieldParts = field.split('(');\n const aggregateFunction = fieldParts[0];\n const fieldName = fieldParts[1].replace(')', '');\n return `${aggregateFunction}(${entityAlias}.${fieldName})`;\n }\n\n isAggregateField(field: string): boolean {\n return field.includes('(');\n }\n\n isAggregateFieldKey(key: string, aggregateAliases: Set<string>): boolean {\n return aggregateAliases.has(key);\n }\n\n getFieldFromQueryFieldKey(queryFieldKey: string, alias: string): string {\n return queryFieldKey.replace(`${alias}_`, '');\n }\n\n buildGroupByRecordsQuery(\n qb: SelectQueryBuilder<any>,\n group: any,\n alias: string,\n groupAliasMap: Record<string, string> = {},\n aggregateAliasMap: Record<string, string> = {},\n groupExpressionMap: Record<string, string> = {}\n ): SelectQueryBuilder<any> {\n const rootAlias = qb.expressionMap?.mainAlias?.name\n ?? qb.expressionMap?.aliases?.find(a => a.metadata)?.name\n ?? qb.expressionMap?.aliases?.[0]?.name\n ?? (qb as any).alias\n ?? alias;\n qb.andWhere(new Brackets(qb => {\n const aggregateAliasSet = new Set(Object.values(aggregateAliasMap));\n const reverseGroupAliasMap = Object.entries(groupAliasMap).reduce((acc, [sourceKey, aliasKey]) => {\n acc[aliasKey] = sourceKey;\n return acc;\n }, {} as Record<string, string>);\n for (const key in group) {\n if (group.hasOwnProperty(key) && !this.isAggregateFieldKey(key, aggregateAliasSet)) {\n const value = group[key];\n const sourceField = reverseGroupAliasMap[key] || key;\n const cleanedField = sourceField.split(':')[0];\n const pathParts = cleanedField.split('.');\n const { alias: resolvedAlias, property } = this.ensureRelationPathJoined(qb as any, rootAlias, pathParts);\n const paramKey = this.sanitizeAlias(`${resolvedAlias}_${property}_${key}`);\n const expr = (sourceField.includes(':') && groupExpressionMap[key])\n ? groupExpressionMap[key]\n : `${resolvedAlias}.${property}`;\n qb.andWhere(`${expr} = :${paramKey}`, { [paramKey]: value });\n }\n }\n }));\n return qb;\n }\n\n private formatGroupValue(value: any, format?: string) {\n if (!format) return value;\n if (value === null || value === undefined) return value;\n const dateVal = value instanceof Date ? value : new Date(value);\n if (isNaN(dateVal.getTime())) return value;\n switch (format) {\n case 'MMM':\n return dateVal.toLocaleString('en', { month: 'short' });\n case 'MMMM':\n return dateVal.toLocaleString('en', { month: 'long' });\n case 'YYYY':\n return dateVal.getFullYear();\n case 'YYYY-MM':\n return `${dateVal.getFullYear()}-${String(dateVal.getMonth() + 1).padStart(2, '0')}`;\n case 'YYYY-MM-DD':\n return `${dateVal.getFullYear()}-${String(dateVal.getMonth() + 1).padStart(2, '0')}-${String(dateVal.getDate()).padStart(2, '0')}`;\n default:\n return value;\n }\n }\n\n private getGroupFieldValues(\n group: any,\n groupByFields: string[],\n groupAliasMap: Record<string, string>\n ): Array<{ rawVal: any; alias: string; granularity?: string }> {\n return groupByFields\n .map(field => {\n const parts = field.split(':');\n const granularity = parts[1];\n const alias = groupAliasMap[field] ?? this.sanitizeAlias(field.replace(/\\./g, '_'));\n const rawVal = group[alias] ?? group[field] ?? group[field.replace(/\\./g, '_')];\n return { rawVal, alias, granularity };\n })\n .filter(({ rawVal }) => rawVal !== undefined && rawVal !== null);\n }\n\n private normalizeGroupValue(value: any, granularity?: string): any {\n if (!granularity) return value;\n return this.formatGroupValue(value, 'YYYY-MM-DD');\n }\n\n getGroupName(\n group: any,\n aggregateAliases: Set<string>,\n groupByFields: string[],\n groupAliasMap: Record<string, string>,\n groupFormatMap: Record<string, string | undefined>\n ): string {\n const fieldValues = this.getGroupFieldValues(group, groupByFields, groupAliasMap);\n\n if (fieldValues.length === 0) {\n return Object.keys(group)\n .filter(key => !this.isAggregateFieldKey(key, aggregateAliases))\n .map(key => group[key])\n .join('_');\n }\n\n return fieldValues\n .map(({ rawVal, alias }) => this.formatGroupValue(rawVal, groupFormatMap[alias]))\n .join('_');\n }\n\n getGroupValue( \n group: any,\n groupByFields: string[],\n groupAliasMap: Record<string, string>\n ): any {\n const fieldValues = this.getGroupFieldValues(group, groupByFields, groupAliasMap);\n if (fieldValues.length === 1) return this.normalizeGroupValue(fieldValues[0].rawVal, fieldValues[0].granularity);\n return fieldValues.map(({ rawVal, granularity }) => this.normalizeGroupValue(rawVal, granularity)).join('_');\n }\n\n createGroupRecords(group: any, aggregateAliases: Set<string>, groupData: any, groupByFields: string[], groupAliasMap: Record<string, string>, groupFormatMap: Record<string, string | undefined>) {\n const groupName = this.getGroupName(group, aggregateAliases, groupByFields, groupAliasMap, groupFormatMap);\n return {\n groupName,\n groupData\n }\n }\n createGroupMeta(group: any, aggregateAliases: Set<string>, groupByFields: string[], groupAliasMap: Record<string, string>, groupFormatMap: Record<string, string | undefined>) {\n const groupName = this.getGroupName(group, aggregateAliases, groupByFields, groupAliasMap, groupFormatMap);\n const groupValue = this.getGroupValue(group, groupByFields, groupAliasMap);\n const groupAggregateValues = {}\n for (const key in group) {\n if (group.hasOwnProperty(key) && this.isAggregateFieldKey(key, aggregateAliases)) {\n const value = group[key];\n groupAggregateValues[key] = value;\n }\n }\n return {\n groupName,\n groupValue,\n ...groupAggregateValues\n };\n }\n\n async countGroupedRecords(qb: SelectQueryBuilder<any>, basicFilterDto: BasicFilterDto, entityAlias: string) { //TODO : Check how to pass a type to SelectQueryBuilder instead of any\n const { limit, offset, ...rest } = basicFilterDto;\n const filteredDto = { ...rest, limit: undefined, offset: undefined };\n\n const filteredQB = this.buildFilterQuery(qb, filteredDto as BasicFilterDto, entityAlias, undefined, undefined, undefined, FilterCombinator.AND, false, false);\n\n const groupByFields = this.normalize(filteredDto.groupBy);\n\n if (!groupByFields || groupByFields.length === 0) {\n throw new Error(ERROR_MESSAGES.INVALID_GROUP_BY_COUNT);\n }\n\n this.applyGroupBySelections(filteredQB, groupByFields, entityAlias);\n this.applyAggregates(filteredQB, ['count'], entityAlias);\n filteredQB.limit(undefined).offset(undefined).take(undefined).skip(undefined);\n\n const rawResults = await filteredQB.getRawMany();\n return rawResults.length;\n }\n\n hasReadPermissionOnModel = (activeUser: ActiveUserData, modelName: string) => {\n const permissionNames = [`${classify(modelName)}Controller.findOne`, `${classify(modelName)}Controller.findMany`];\n const matchingPermssions = activeUser.permissions.filter((p) => permissionNames.includes(p));\n return matchingPermssions.length > 0\n }\n\n hasWritePermissionOnModel = (activeUser: ActiveUserData, modelName: string) => {\n const permissionNames = [`${classify(modelName)}Controller.create`, `${classify(modelName)}Controller.insertMany`, `${classify(modelName)}Controller.update`];\n const matchingPermssions = activeUser.permissions.filter((p) => permissionNames.includes(p));\n return matchingPermssions.length > 0\n }\n\n hasUpdatePermissionOnModel = (activeUser: ActiveUserData, modelName: string) => {\n const permissionNames = [`${classify(modelName)}Controller.update`];\n const matchingPermssions = activeUser.permissions.filter((p) => permissionNames.includes(p));\n return matchingPermssions.length > 0\n }\n\n hasPublishPermissionOnModel = (activeUser: ActiveUserData, modelName: string) => {\n const permissionNames = [`${classify(modelName)}Controller.publish`];\n const matchingPermssions = activeUser.permissions.filter((p) => permissionNames.includes(p));\n return matchingPermssions.length > 0\n }\n\n hasUnpublishPermissionOnModel = (activeUser: ActiveUserData, modelName: string) => {\n const permissionNames = [`${classify(modelName)}Controller.publish`];\n const matchingPermssions = activeUser.permissions.filter((p) => permissionNames.includes(p));\n return matchingPermssions.length > 0\n }\n\n hasDeletePermissionOnModel = (activeUser: ActiveUserData, modelName: string) => {\n const permissionNames = [`${classify(modelName)}Controller.delete`, `${classify(modelName)}Controller.deleteMany`];\n const matchingPermssions = activeUser.permissions.filter((p) => permissionNames.includes(p));\n return matchingPermssions.length > 0\n }\n hasCreatePermissionOnModel = (activeUser: ActiveUserData, modelName: string) => {\n const permissionNames = [`${classify(modelName)}Controller.create`];\n const matchingPermssions = activeUser.permissions.filter((p) => permissionNames.includes(p));\n return matchingPermssions.length > 0\n }\n hasRecoverPermissionOnModel = (activeUser: ActiveUserData, modelName: string) => {\n const permissionNames = [`${classify(modelName)}Controller.recover`, `${classify(modelName)}Controller.recoverMany`];\n const matchingPermssions = activeUser.permissions.filter((p) => permissionNames.includes(p));\n return matchingPermssions.length > 0\n }\n\n\n\n}\n"]}
1
+ {"version":3,"file":"crud-helper.service.js","sourceRoot":"","sources":["../../src/services/crud-helper.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Brackets, SelectQueryBuilder, WhereExpressionBuilder } from \"typeorm\";\nimport { BasicFilterDto } from \"../dtos/basic-filters.dto\";\nimport { classify } from '../helpers/string.helper';\nimport { ActiveUserData } from \"src/interfaces/active-user-data.interface\";\nimport { SolidRegistry } from \"src/helpers/solid-registry\";\nimport { BadRequestException, Logger } from \"@nestjs/common\";\nimport { ERROR_MESSAGES } from \"src/constants/error-messages\";\n\nexport enum FilterCombinator {\n AND = '$and',\n OR = '$or'\n}\n\nexport enum UserIdFields {\n CREATED_BY = 'createdBy',\n UPDATED_BY = 'updatedBy'\n}\n\nexport class CrudHelperService {\n constructor(\n ) { }\n private readonly logger = new Logger(CrudHelperService.name);\n\n private orderOptions(sort: any[] = []) {\n const orderOptions = {};\n sort.forEach((s: string) => {\n const parts = s.split(':');\n let order: string | undefined;\n let field: string;\n if (parts.length > 1) {\n order = parts.pop();\n field = parts.join(':');\n } else {\n field = parts[0];\n }\n const normalizedOrder = order ? order.toUpperCase() : 'ASC';\n if (!['ASC', 'DESC'].includes(normalizedOrder)) {\n throw new Error(`Invalid sort order provided: ${order}`);\n }\n orderOptions[field] = normalizedOrder;\n });\n return orderOptions;\n }\n\n applyFilters(qb: WhereExpressionBuilder, filters: any, alias: string = 'entity', selectQb: SelectQueryBuilder<any>) {\n const normalizedFilters = this.normalizeObjectKeys(filters);\n if (normalizedFilters.$and) {\n normalizedFilters.$and.forEach((andFilter: any) => {\n qb.andWhere(\n new Brackets(subQb => {\n this.applyFilters(subQb, andFilter, alias, selectQb);\n })\n );\n });\n } else if (normalizedFilters.$or) {\n normalizedFilters.$or.forEach((orFilter: any) => {\n qb.orWhere(new Brackets(subQb => {\n this.applyFilters(subQb, orFilter, alias, selectQb);\n }));\n });\n } else {\n // For individual conditions\n Object.keys(normalizedFilters).forEach(key => {\n const primaryFilterObj = normalizedFilters[key];\n const normalizedPrimaryFilterObj = this.normalizeObjectKeys(primaryFilterObj);\n\n const [rawField, funcAlias] = key.split(':');\n\n // Get the operator or field from the key\n const operatorOrField = Object.keys(normalizedPrimaryFilterObj)[0];\n // if the key is an operator, then build the query based on the operator\n if (operatorOrField.startsWith('$')) {\n const operator = operatorOrField;\n let columnExpression: string | undefined;\n if (funcAlias) {\n try {\n columnExpression = this.buildDateGranularityExpression(this.getDriver(selectQb), `${alias}.${rawField}`, funcAlias);\n } catch {\n throw new BadRequestException(`Unsupported field function '${funcAlias}'. Supported functions are: day, week, month, year.`);\n }\n }\n this.buildOperatorQuery(qb, alias, rawField, normalizedPrimaryFilterObj, operator, columnExpression);\n return;\n }\n else { // Recursively call the applyFilters method to handle nested conditions\n if (funcAlias) {\n throw new BadRequestException(`Function alias ':${funcAlias}' is not valid on relation field '${rawField}'. It can only be applied to scalar fields.`);\n }\n const joinField = `${alias}.${rawField}`;\n if (!this.isRelationJoined(selectQb, joinField)) selectQb.leftJoin(joinField, rawField);\n this.applyFilters(qb, primaryFilterObj, rawField, selectQb);\n }\n });\n }\n }\n\n private buildOperatorQuery(qb: any, alias: string, field: string, normalizedPrimaryOperatorObj: any, operator: string, columnExpression?: string) {\n const uniqueFieldAlias = `${alias}_${field}_${Math.floor(Math.random() * 1000)}`;\n const colExpr = columnExpression ?? `${alias}.${field}`;\n switch (operator) {\n case '$eq':\n qb.andWhere(`${colExpr} = :${uniqueFieldAlias}`, { [uniqueFieldAlias]: normalizedPrimaryOperatorObj.$eq });\n break;\n case '$eqi':\n qb.andWhere(`LOWER(${colExpr}) = :${uniqueFieldAlias}`, { [uniqueFieldAlias]: normalizedPrimaryOperatorObj.$eqi.toLowerCase() });\n break;\n case '$ne':\n qb.andWhere(`${colExpr} != :${uniqueFieldAlias}`, { [uniqueFieldAlias]: normalizedPrimaryOperatorObj.$ne });\n break;\n case '$nei':\n qb.andWhere(`LOWER(${colExpr}) != :${uniqueFieldAlias}`, { [uniqueFieldAlias]: normalizedPrimaryOperatorObj.$nei.toLowerCase() });\n break;\n case '$gt':\n qb.andWhere(`${colExpr} > :${uniqueFieldAlias}`, { [uniqueFieldAlias]: normalizedPrimaryOperatorObj.$gt });\n break;\n case '$gte':\n qb.andWhere(`${colExpr} >= :${uniqueFieldAlias}`, { [uniqueFieldAlias]: normalizedPrimaryOperatorObj.$gte });\n break;\n case '$lt':\n qb.andWhere(`${colExpr} < :${uniqueFieldAlias}`, { [uniqueFieldAlias]: normalizedPrimaryOperatorObj.$lt });\n break;\n case '$lte':\n qb.andWhere(`${colExpr} <= :${uniqueFieldAlias}`, { [uniqueFieldAlias]: normalizedPrimaryOperatorObj.$lte });\n break;\n case '$in':\n qb.andWhere(`${colExpr} IN (:...${uniqueFieldAlias})`, { [uniqueFieldAlias]: normalizedPrimaryOperatorObj.$in });\n break;\n case '$notIn':\n qb.andWhere(`${colExpr} NOT IN (:...${uniqueFieldAlias})`, { [uniqueFieldAlias]: normalizedPrimaryOperatorObj.$notIn });\n break;\n case '$contains':\n qb.andWhere(`${colExpr} LIKE :${uniqueFieldAlias}`, { [uniqueFieldAlias]: `%${normalizedPrimaryOperatorObj.$contains}%` });\n break;\n case '$notContains':\n qb.andWhere(`${colExpr} NOT LIKE :${uniqueFieldAlias}`, { [uniqueFieldAlias]: `%${normalizedPrimaryOperatorObj.$notContains}%` });\n break;\n case '$containsi':\n qb.andWhere(`LOWER(${colExpr}) LIKE :${uniqueFieldAlias}`, { [uniqueFieldAlias]: `%${normalizedPrimaryOperatorObj.$containsi.toLowerCase()}%` });\n break;\n case '$notContainsi':\n qb.andWhere(`LOWER(${colExpr}) NOT LIKE :${uniqueFieldAlias}`, { [uniqueFieldAlias]: `%${normalizedPrimaryOperatorObj.$notContainsi.toLowerCase()}%` });\n break;\n case '$null':\n qb.andWhere(`${colExpr} IS NULL`);\n break;\n case '$notNull':\n qb.andWhere(`${colExpr} IS NOT NULL`);\n break;\n case '$between':\n qb.andWhere(`${colExpr} BETWEEN :${uniqueFieldAlias}0 AND :${uniqueFieldAlias}1`, { [`${uniqueFieldAlias}0`]: normalizedPrimaryOperatorObj.$between[0], [`${uniqueFieldAlias}1`]: normalizedPrimaryOperatorObj.$between[1] });\n break;\n case '$startsWith':\n qb.andWhere(`${colExpr} LIKE :${uniqueFieldAlias}`, { [uniqueFieldAlias]: `${normalizedPrimaryOperatorObj.$startsWith}%` });\n break;\n case '$startsWithi':\n qb.andWhere(`LOWER(${colExpr}) LIKE :${uniqueFieldAlias}`, { [uniqueFieldAlias]: `${normalizedPrimaryOperatorObj.$startsWithi.toLowerCase()}%` });\n break;\n case '$endsWith':\n qb.andWhere(`${colExpr} LIKE :${uniqueFieldAlias}`, { [uniqueFieldAlias]: `%${normalizedPrimaryOperatorObj.$endsWith}` });\n break;\n case '$endsWithi':\n qb.andWhere(`LOWER(${colExpr}) LIKE :${uniqueFieldAlias}`, { [uniqueFieldAlias]: `%${normalizedPrimaryOperatorObj.$endsWithi.toLowerCase()}` });\n break;\n default:\n throw new Error(`Operator ${operator} is not supported`);\n }\n }\n\n // Normalize the primary operator object by removing the surrounding brackets in the keys e.g [$eq] => $eq\n private normalizeObjectKeys(obj: any): any {\n return Object.keys(obj).reduce((acc, key) => {\n // Transform the key by removing surrounding brackets\n const newKey = key.replace(/^\\[(.*)\\]$/, '$1');\n // Assign the value to the transformed key in the accumulator object\n acc[newKey] = obj[key];\n return acc;\n }, {});\n }\n\n normalize(value: string | string[]): string[] {\n if (!value) return []; // if the value is nullish, then return an empty array\n return Array.isArray(value) ? value : [value]; // if the value is an array, return it as is, otherwise return it as an array\n }\n\n private normalizeAndFilterPopulateAttributes(value: string | string[]): string[] {\n // Normalize and remove the userId fields from the populate filter, since they are handled separately\n const normalized = this.normalize(value);\n return normalized.filter(item => item !== UserIdFields.CREATED_BY && item !== UserIdFields.UPDATED_BY);\n }\n\n extractUserIdFieldsFromPopulate(value: string | string[]): UserIdFields[] {\n const normalized = this.normalize(value);\n return normalized.filter(item => item === UserIdFields.CREATED_BY || item === UserIdFields.UPDATED_BY);\n }\n\n private isRelationJoined(queryBuilder: SelectQueryBuilder<any>, joinProperty: string): boolean {\n return queryBuilder.expressionMap.joinAttributes.some(join => join.entityOrProperty === joinProperty);\n }\n\n private hasJoins(queryBuilder: SelectQueryBuilder<any>): boolean {\n return queryBuilder.expressionMap.joinAttributes.length > 0;\n }\n\n buildFilterQuery(\n qb: SelectQueryBuilder<any>,\n basicFilterDto: BasicFilterDto,\n entityAlias: string,\n internationalisation?: boolean,\n draftPublishWorkflow?: boolean,\n moduleRef?: any,\n filterCombinator: FilterCombinator = FilterCombinator.AND,\n applyPagination: boolean = true,\n applySorting: boolean = true\n ): SelectQueryBuilder<any> { // TODO : Check how to pass a type to SelectQueryBuilder instead of any\n let { limit, offset, showSoftDeleted, filters } = basicFilterDto;\n const { fields, sort, populate = [], populateMedia = [], locale, status } = basicFilterDto;\n\n // Normalize the fields, sort, groupBy and populate options i.e (since they can be either a string or an array of strings, when coming from the request)\n const normalizedFields = this.normalize(fields);\n const normalizedAndFilteredPopulateAttributes = this.normalizeAndFilterPopulateAttributes(populate);\n const normalizedPopulateMedia = this.normalize(populateMedia);\n\n // if normalizedPopulateMedia, has any nested media paths, then add then to populate excluding the last part\n const additionalPopulate = this.additionalRelationsRequiredForMediaPopulation(normalizedPopulateMedia);\n // Add the additional populate relations to the normalizedPopulate, if they are not already present\n normalizedAndFilteredPopulateAttributes.push(...additionalPopulate.filter((relation) => !normalizedAndFilteredPopulateAttributes.includes(relation)));\n\n const normalizedSort = this.normalize(sort);\n\n // Depending upon the populate option, apply the join clause\n if (normalizedAndFilteredPopulateAttributes && normalizedAndFilteredPopulateAttributes.length) {\n this.buildPopulateQuery(normalizedAndFilteredPopulateAttributes, entityAlias, qb);\n }\n\n if (filters) {\n if (filterCombinator === FilterCombinator.AND) {\n qb.andWhere(new Brackets(whereQb => {\n this.applyFilters(whereQb, filters, entityAlias, qb);\n }));\n } else if (filterCombinator === FilterCombinator.OR) {\n qb.orWhere(new Brackets(whereQb => {\n this.applyFilters(whereQb, filters, entityAlias, qb);\n }));\n }\n }\n\n let finalLocale = locale\n if (internationalisation) {\n // If locale is not provided in the filter dto, then assume it is the default locale to be used. \n if (!finalLocale) {\n //Get default locale from registry\n const solidRegistry = moduleRef.get(SolidRegistry, { strict: false });\n const defaultLocale = solidRegistry.getDefaultLocale();\n if(defaultLocale){\n finalLocale = defaultLocale.locale;\n }else{\n finalLocale = 'en';\n }\n }\n qb.andWhere(`${entityAlias}.localeName = :locale`, { locale: finalLocale });\n }\n\n if (draftPublishWorkflow && status) {\n if (basicFilterDto.status === 'published') {\n qb.andWhere(`${entityAlias}.publishedAt IS NOT NULL`);\n } else if (basicFilterDto.status === 'draft') {\n qb.andWhere(`${entityAlias}.publishedAt IS NULL`);\n }\n }\n // Depending upon the select option, apply the select clause\n if (normalizedFields && normalizedFields.length) {\n qb.select(normalizedFields.map(field => {\n // If the field contains a (, do not prefix the entity alias\n return this.wrapFieldWithAlias(field, entityAlias);\n }));\n }\n\n // Depending upon the order option, apply the order by clause\n if (applySorting && normalizedSort && normalizedSort.length) {\n const orderOptions = this.orderOptions(normalizedSort);\n if (orderOptions) {\n const orderOptionKeys = Object.keys(orderOptions) as Array<keyof typeof orderOptions>;\n orderOptionKeys.forEach((key) => {\n const value = orderOptions[key] as 'ASC' | 'DESC';\n qb.addOrderBy(`${entityAlias}.${key}`, value);\n });\n }\n }\n\n if (showSoftDeleted === 'inclusive') {\n qb.withDeleted();\n }\n\n if (showSoftDeleted === 'exclusive') {\n qb.withDeleted();\n qb.where(`${entityAlias}.deletedAt IS NOT NULL`);\n }\n\n // Apply the pagination options & handle the case when the query has joins\n if (applyPagination) {\n if (limit) this.hasJoins(qb) ? qb.take(limit) : qb.limit(limit);\n if (offset) this.hasJoins(qb) ? qb.skip(offset) : qb.offset(offset);\n }\n return qb;\n }\n\n additionalRelationsRequiredForMediaPopulation(normalizedPopulateMedia: string[]) {\n // Populate relations containing the media field\n return normalizedPopulateMedia\n .filter(pm => pm.includes(\".\"))\n .map((pm) => {\n const mediaPathParts = pm.split('.');\n if (mediaPathParts.length <= 1) return pm;\n return mediaPathParts.slice(0, -1).join('.');\n });\n }\n\n private buildPopulateQuery(normalizedPopulate: string[], entityAlias: string, qb: SelectQueryBuilder<any>) {\n normalizedPopulate.forEach((relation) => {\n this.buildJoinQueryForRelation(qb, entityAlias, relation);\n });\n return qb;\n }\n\n private sanitizeAlias(alias: string) {\n return alias.replace(/[^a-zA-Z0-9_]/g, '_');\n }\n\n private isAliasJoined(queryBuilder: SelectQueryBuilder<any>, alias: string): boolean {\n return queryBuilder.expressionMap.joinAttributes.some(join => join.alias?.name === alias);\n }\n\n private getExistingJoinAlias(qb: SelectQueryBuilder<any>, joinProperty: string): string | undefined {\n const existingJoin = qb.expressionMap.joinAttributes.find(join => join.entityOrProperty === joinProperty);\n return existingJoin?.alias?.name;\n }\n\n private ensureRelationPathJoined(qb: SelectQueryBuilder<any>, rootAlias: string, pathParts: string[]) {\n const mainAlias =\n qb.expressionMap?.mainAlias?.name ||\n qb.expressionMap?.aliases?.find(a => a.metadata)?.name ||\n qb.expressionMap?.aliases?.[0]?.name;\n let parentAlias = mainAlias || rootAlias;\n for (let i = 0; i < pathParts.length - 1; i++) {\n const part = pathParts[i];\n const joinProperty = `${parentAlias}.${part}`;\n const existingAlias = this.getExistingJoinAlias(qb, joinProperty);\n const joinAlias = existingAlias ?? this.sanitizeAlias(`${parentAlias}_${part}`);\n if (!existingAlias && !this.isRelationJoined(qb, joinProperty) && !this.isAliasJoined(qb, joinAlias)) {\n qb.leftJoin(joinProperty, joinAlias);\n }\n parentAlias = joinAlias;\n }\n return { alias: parentAlias, property: pathParts[pathParts.length - 1] };\n }\n\n private getDriver(qb: SelectQueryBuilder<any>) {\n return qb.connection.options.type as string;\n }\n\n private buildDateGranularityExpression(driver: string, columnExpr: string, granularity: string) {\n switch (driver) {\n case 'postgres':\n case 'cockroachdb':\n return `DATE_TRUNC('${granularity}', ${columnExpr})`;\n case 'mysql':\n case 'mariadb':\n switch (granularity) {\n case 'day': return `DATE(${columnExpr})`;\n case 'week': return `STR_TO_DATE(DATE_FORMAT(${columnExpr}, '%x-%v-1'), '%x-%v-%w')`;\n case 'month': return `DATE_FORMAT(${columnExpr}, '%Y-%m-01')`;\n case 'year': return `DATE_FORMAT(${columnExpr}, '%Y-01-01')`;\n default: throw new Error(`Unsupported granularity ${granularity} for driver ${driver}`);\n }\n case 'mssql':\n case 'sqlserver':\n switch (granularity) {\n case 'day': return `CONVERT(date, ${columnExpr})`;\n case 'week': return `DATEADD(week, DATEDIFF(week, 0, ${columnExpr}), 0)`;\n case 'month': return `DATEFROMPARTS(YEAR(${columnExpr}), MONTH(${columnExpr}), 1)`;\n case 'year': return `DATEFROMPARTS(YEAR(${columnExpr}), 1, 1)`;\n default: throw new Error(`Unsupported granularity ${granularity} for driver ${driver}`);\n }\n default:\n throw new Error(`Granularity not supported for driver ${driver}`);\n }\n }\n\n private buildGroupByExpression(qb: SelectQueryBuilder<any>, rootAlias: string, field: string) {\n const parts = field.split(':');\n const rawField = parts[0];\n const granularity = parts[1];\n const format = parts[2];\n const pathParts = rawField.split('.');\n const { alias, property } = this.ensureRelationPathJoined(qb, rootAlias, pathParts);\n const columnExpr = `${alias}.${property}`;\n const groupExpr = granularity ? this.buildDateGranularityExpression(this.getDriver(qb), columnExpr, granularity) : columnExpr;\n const selectAlias = this.sanitizeAlias(`${rawField.replace(/\\./g, '_')}${granularity ? '_' + granularity : ''}`);\n return { groupExpr, selectAlias, sourceKey: field, format };\n }\n\n applyGroupBySelections(\n qb: SelectQueryBuilder<any>,\n groupBy: string[],\n entityAlias: string\n ) {\n const aliasMap: Record<string, string> = {};\n const formatMap: Record<string, string | undefined> = {};\n const expressionMap: Record<string, string> = {};\n qb.select([]);\n groupBy.forEach((field) => {\n const { groupExpr, selectAlias, sourceKey, format } = this.buildGroupByExpression(qb, entityAlias, field);\n qb.addSelect(groupExpr, selectAlias);\n qb.addGroupBy(groupExpr);\n aliasMap[sourceKey] = selectAlias;\n formatMap[selectAlias] = format;\n expressionMap[selectAlias] = groupExpr;\n });\n return { aliasMap, formatMap, expressionMap };\n }\n\n private buildAggregateExpression(qb: SelectQueryBuilder<any>, rootAlias: string, aggregate: string) {\n const [rawField, rawFn] = aggregate.split(':');\n const fn = (rawFn || 'count').toLowerCase();\n if ((!rawField || rawField.toLowerCase() === 'count') && fn === 'count') {\n return { expression: 'COUNT(*)', selectAlias: 'count' };\n }\n if (!rawField) throw new Error(`Invalid aggregate specification: ${aggregate}`);\n const pathParts = rawField.split('.');\n const { alias, property } = this.ensureRelationPathJoined(qb, rootAlias, pathParts);\n const columnExpr = `${alias}.${property}`;\n const selectAlias = this.sanitizeAlias(`${rawField.replace(/\\./g, '_')}_${fn}`);\n let expression = '';\n switch (fn) {\n case 'count': expression = `COUNT(${columnExpr})`; break;\n case 'count_distinct': expression = `COUNT(DISTINCT ${columnExpr})`; break;\n case 'sum': expression = `SUM(${columnExpr})`; break;\n case 'avg': expression = `AVG(${columnExpr})`; break;\n case 'min': expression = `MIN(${columnExpr})`; break;\n case 'max': expression = `MAX(${columnExpr})`; break;\n default: throw new Error(`Unsupported aggregate function ${fn}`);\n }\n return { expression, selectAlias, sourceKey: aggregate };\n }\n\n applyAggregates(\n qb: SelectQueryBuilder<any>,\n aggregates: string[] | undefined,\n entityAlias: string\n ) {\n const aggregateList = this.normalize(aggregates);\n const aggregateAliasMap: Record<string, string> = {};\n if (!aggregateList.length) {\n qb.addSelect('COUNT(*)', 'count');\n aggregateAliasMap['count'] = 'count';\n return aggregateAliasMap;\n }\n aggregateList.forEach((agg) => {\n const { expression, selectAlias, sourceKey } = this.buildAggregateExpression(qb, entityAlias, agg);\n qb.addSelect(expression, selectAlias);\n aggregateAliasMap[sourceKey] = selectAlias;\n });\n return aggregateAliasMap;\n }\n\n applyGroupSortingAndPagination(\n qb: SelectQueryBuilder<any>,\n sort: string[] | undefined,\n aliasMap: Record<string, string>,\n limit?: number,\n offset?: number\n ) {\n const normalizedSort = this.normalize(sort);\n if (normalizedSort.length) {\n const orderOptions = this.orderOptions(normalizedSort);\n const orderOptionKeys = Object.keys(orderOptions) as Array<keyof typeof orderOptions>;\n orderOptionKeys.forEach((key) => {\n const resolvedKey = aliasMap[key] || key as string;\n const value = orderOptions[key] as 'ASC' | 'DESC';\n qb.addOrderBy(`\"${resolvedKey}\"`, value);\n });\n }\n const hasLimit = limit !== undefined && limit !== null;\n const hasOffset = offset !== undefined && offset !== null;\n\n // Use both take/skip and limit/offset to ensure pagination is applied even when joins are present.\n if (hasLimit) {\n qb.take(limit);\n qb.limit(limit);\n }\n if (hasOffset) {\n qb.skip(offset);\n qb.offset(offset);\n }\n }\n\n async countGroups(qb: SelectQueryBuilder<any>) {\n const clone = qb.clone();\n clone.limit(undefined).offset(undefined).take(undefined).skip(undefined);\n const rows = await clone.getRawMany();\n return rows.length;\n }\n\n private buildJoinQueryForRelation(qb: SelectQueryBuilder<any>, entityAlias: string, relation: string) {\n // We split the joinProperty to get the alias of the entity we are joining\n const relationParts = relation.split('.');\n let parentAlias = entityAlias;\n relationParts.forEach((part, i) => {\n const joinProperty = `${parentAlias}.${part}`;\n // Check if the relation is already joined, if not then join it\n if (!this.isRelationJoined(qb, joinProperty)) {\n const joinAlias = relationParts.slice(0, i + 1).join('_');\n qb.leftJoinAndSelect(joinProperty, joinAlias);\n }\n else {\n // Since in populate, we are create a unique alias based on the relation path\n //If the join is already present, it is probably because of the relation being passed in the where filter i.e applyFilters method\n qb.addSelect(`${part}`);\n }\n parentAlias = part; // Update the parent alias for the next iteration\n });\n return qb;\n }\n\n private wrapFieldWithAlias(field: string, entityAlias: string): string {\n if (!this.isAggregateField(field)) return `${entityAlias}.${field}`;\n // For aggregate fields, extract the field name from the aggregate function & wrap it with the entity alias, if it is not already wrapped\n const fieldParts = field.split('(');\n const aggregateFunction = fieldParts[0];\n const fieldName = fieldParts[1].replace(')', '');\n return `${aggregateFunction}(${entityAlias}.${fieldName})`;\n }\n\n isAggregateField(field: string): boolean {\n return field.includes('(');\n }\n\n isAggregateFieldKey(key: string, aggregateAliases: Set<string>): boolean {\n return aggregateAliases.has(key);\n }\n\n getFieldFromQueryFieldKey(queryFieldKey: string, alias: string): string {\n return queryFieldKey.replace(`${alias}_`, '');\n }\n\n buildGroupByRecordsQuery(\n qb: SelectQueryBuilder<any>,\n group: any,\n alias: string,\n groupAliasMap: Record<string, string> = {},\n aggregateAliasMap: Record<string, string> = {},\n groupExpressionMap: Record<string, string> = {}\n ): SelectQueryBuilder<any> {\n const rootAlias = qb.expressionMap?.mainAlias?.name\n ?? qb.expressionMap?.aliases?.find(a => a.metadata)?.name\n ?? qb.expressionMap?.aliases?.[0]?.name\n ?? (qb as any).alias\n ?? alias;\n qb.andWhere(new Brackets(qb => {\n const aggregateAliasSet = new Set(Object.values(aggregateAliasMap));\n const reverseGroupAliasMap = Object.entries(groupAliasMap).reduce((acc, [sourceKey, aliasKey]) => {\n acc[aliasKey] = sourceKey;\n return acc;\n }, {} as Record<string, string>);\n for (const key in group) {\n if (group.hasOwnProperty(key) && !this.isAggregateFieldKey(key, aggregateAliasSet)) {\n const value = group[key];\n const sourceField = reverseGroupAliasMap[key] || key;\n const cleanedField = sourceField.split(':')[0];\n const pathParts = cleanedField.split('.');\n const { alias: resolvedAlias, property } = this.ensureRelationPathJoined(qb as any, rootAlias, pathParts);\n const paramKey = this.sanitizeAlias(`${resolvedAlias}_${property}_${key}`);\n const expr = (sourceField.includes(':') && groupExpressionMap[key])\n ? groupExpressionMap[key]\n : `${resolvedAlias}.${property}`;\n qb.andWhere(`${expr} = :${paramKey}`, { [paramKey]: value });\n }\n }\n }));\n return qb;\n }\n\n private formatGroupValue(value: any, format?: string) {\n if (!format) return value;\n if (value === null || value === undefined) return value;\n const dateVal = value instanceof Date ? value : new Date(value);\n if (isNaN(dateVal.getTime())) return value;\n switch (format) {\n case 'MMM':\n return dateVal.toLocaleString('en', { month: 'short' });\n case 'MMMM':\n return dateVal.toLocaleString('en', { month: 'long' });\n case 'YYYY':\n return dateVal.getFullYear();\n case 'YYYY-MM':\n return `${dateVal.getFullYear()}-${String(dateVal.getMonth() + 1).padStart(2, '0')}`;\n case 'YYYY-MM-DD':\n return `${dateVal.getFullYear()}-${String(dateVal.getMonth() + 1).padStart(2, '0')}-${String(dateVal.getDate()).padStart(2, '0')}`;\n default:\n return value;\n }\n }\n\n private getGroupFieldValues(\n group: any,\n groupByFields: string[],\n groupAliasMap: Record<string, string>\n ): Array<{ rawVal: any; alias: string; granularity?: string }> {\n return groupByFields\n .map(field => {\n const parts = field.split(':');\n const granularity = parts[1];\n const alias = groupAliasMap[field] ?? this.sanitizeAlias(field.replace(/\\./g, '_'));\n const rawVal = group[alias] ?? group[field] ?? group[field.replace(/\\./g, '_')];\n return { rawVal, alias, granularity };\n })\n .filter(({ rawVal }) => rawVal !== undefined && rawVal !== null);\n }\n\n private normalizeGroupValue(value: any, granularity?: string): any {\n if (!granularity) return value;\n return this.formatGroupValue(value, 'YYYY-MM-DD');\n }\n\n getGroupName(\n group: any,\n aggregateAliases: Set<string>,\n groupByFields: string[],\n groupAliasMap: Record<string, string>,\n groupFormatMap: Record<string, string | undefined>\n ): string {\n const fieldValues = this.getGroupFieldValues(group, groupByFields, groupAliasMap);\n\n if (fieldValues.length === 0) {\n return Object.keys(group)\n .filter(key => !this.isAggregateFieldKey(key, aggregateAliases))\n .map(key => group[key])\n .join('_');\n }\n\n return fieldValues\n .map(({ rawVal, alias }) => this.formatGroupValue(rawVal, groupFormatMap[alias]))\n .join('_');\n }\n\n getGroupValue( \n group: any,\n groupByFields: string[],\n groupAliasMap: Record<string, string>\n ): any {\n const fieldValues = this.getGroupFieldValues(group, groupByFields, groupAliasMap);\n if (fieldValues.length === 1) return this.normalizeGroupValue(fieldValues[0].rawVal, fieldValues[0].granularity);\n return fieldValues.map(({ rawVal, granularity }) => this.normalizeGroupValue(rawVal, granularity)).join('_');\n }\n\n createGroupRecords(group: any, aggregateAliases: Set<string>, groupData: any, groupByFields: string[], groupAliasMap: Record<string, string>, groupFormatMap: Record<string, string | undefined>) {\n const groupName = this.getGroupName(group, aggregateAliases, groupByFields, groupAliasMap, groupFormatMap);\n return {\n groupName,\n groupData\n }\n }\n createGroupMeta(group: any, aggregateAliases: Set<string>, groupByFields: string[], groupAliasMap: Record<string, string>, groupFormatMap: Record<string, string | undefined>) {\n const groupName = this.getGroupName(group, aggregateAliases, groupByFields, groupAliasMap, groupFormatMap);\n const groupValue = this.getGroupValue(group, groupByFields, groupAliasMap);\n const groupAggregateValues = {}\n for (const key in group) {\n if (group.hasOwnProperty(key) && this.isAggregateFieldKey(key, aggregateAliases)) {\n const value = group[key];\n groupAggregateValues[key] = value;\n }\n }\n return {\n groupName,\n groupValue,\n ...groupAggregateValues\n };\n }\n\n async countGroupedRecords(qb: SelectQueryBuilder<any>, basicFilterDto: BasicFilterDto, entityAlias: string) { //TODO : Check how to pass a type to SelectQueryBuilder instead of any\n const { limit, offset, ...rest } = basicFilterDto;\n const filteredDto = { ...rest, limit: undefined, offset: undefined };\n\n const filteredQB = this.buildFilterQuery(qb, filteredDto as BasicFilterDto, entityAlias, undefined, undefined, undefined, FilterCombinator.AND, false, false);\n\n const groupByFields = this.normalize(filteredDto.groupBy);\n\n if (!groupByFields || groupByFields.length === 0) {\n throw new Error(ERROR_MESSAGES.INVALID_GROUP_BY_COUNT);\n }\n\n this.applyGroupBySelections(filteredQB, groupByFields, entityAlias);\n this.applyAggregates(filteredQB, ['count'], entityAlias);\n filteredQB.limit(undefined).offset(undefined).take(undefined).skip(undefined);\n\n const rawResults = await filteredQB.getRawMany();\n return rawResults.length;\n }\n\n hasReadPermissionOnModel = (activeUser: ActiveUserData, modelName: string) => {\n const permissionNames = [`${classify(modelName)}Controller.findOne`, `${classify(modelName)}Controller.findMany`];\n const matchingPermssions = activeUser.permissions.filter((p) => permissionNames.includes(p));\n return matchingPermssions.length > 0\n }\n\n hasWritePermissionOnModel = (activeUser: ActiveUserData, modelName: string) => {\n const permissionNames = [`${classify(modelName)}Controller.create`, `${classify(modelName)}Controller.insertMany`, `${classify(modelName)}Controller.update`];\n const matchingPermssions = activeUser.permissions.filter((p) => permissionNames.includes(p));\n return matchingPermssions.length > 0\n }\n\n hasUpdatePermissionOnModel = (activeUser: ActiveUserData, modelName: string) => {\n const permissionNames = [`${classify(modelName)}Controller.update`];\n const matchingPermssions = activeUser.permissions.filter((p) => permissionNames.includes(p));\n return matchingPermssions.length > 0\n }\n\n hasPublishPermissionOnModel = (activeUser: ActiveUserData, modelName: string) => {\n const permissionNames = [`${classify(modelName)}Controller.publish`];\n const matchingPermssions = activeUser.permissions.filter((p) => permissionNames.includes(p));\n return matchingPermssions.length > 0\n }\n\n hasUnpublishPermissionOnModel = (activeUser: ActiveUserData, modelName: string) => {\n const permissionNames = [`${classify(modelName)}Controller.publish`];\n const matchingPermssions = activeUser.permissions.filter((p) => permissionNames.includes(p));\n return matchingPermssions.length > 0\n }\n\n hasDeletePermissionOnModel = (activeUser: ActiveUserData, modelName: string) => {\n const permissionNames = [`${classify(modelName)}Controller.delete`, `${classify(modelName)}Controller.deleteMany`];\n const matchingPermssions = activeUser.permissions.filter((p) => permissionNames.includes(p));\n return matchingPermssions.length > 0\n }\n hasCreatePermissionOnModel = (activeUser: ActiveUserData, modelName: string) => {\n const permissionNames = [`${classify(modelName)}Controller.create`];\n const matchingPermssions = activeUser.permissions.filter((p) => permissionNames.includes(p));\n return matchingPermssions.length > 0\n }\n hasRecoverPermissionOnModel = (activeUser: ActiveUserData, modelName: string) => {\n const permissionNames = [`${classify(modelName)}Controller.recover`, `${classify(modelName)}Controller.recoverMany`];\n const matchingPermssions = activeUser.permissions.filter((p) => permissionNames.includes(p));\n return matchingPermssions.length > 0\n }\n\n}\n"]}
@@ -1,5 +1,7 @@
1
1
  import { DiscoveryService, ModuleRef } from "@nestjs/core";
2
- import { CommonEntity, SettingService, SolidBaseRepository } from "src";
2
+ import { CommonEntity } from "../entities/common.entity";
3
+ import { SolidBaseRepository } from "../repository/solid-base.repository";
4
+ import { SettingService } from "./setting.service";
3
5
  import { EntityManager } from "typeorm";
4
6
  import { BasicFilterDto } from "../dtos/basic-filters.dto";
5
7
  import { FieldMetadata } from "../entities/field-metadata.entity";
@@ -22,6 +24,7 @@ export declare class CRUDService<T extends CommonEntity> {
22
24
  protected get crudHelperService(): CrudHelperService;
23
25
  protected get discoveryService(): DiscoveryService;
24
26
  protected get settingService(): SettingService;
27
+ private tryCreateAsExtensionUser;
25
28
  create(createDto: any, files?: Express.Multer.File[], solidRequestContext?: any): Promise<T>;
26
29
  private loadModel;
27
30
  private validateAndTransformDto;
@@ -1 +1 @@
1
- {"version":3,"file":"crud.service.d.ts","sourceRoot":"","sources":["../../src/services/crud.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crud.service.d.ts","sourceRoot":"","sources":["../../src/services/crud.service.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,44 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.CRUDService = void 0;
4
37
  const common_1 = require("@nestjs/common");
5
38
  const core_1 = require("@nestjs/core");
6
39
  const class_validator_1 = require("class-validator");
7
- const src_1 = require("..");
40
+ const user_entity_1 = require("../entities/user.entity");
41
+ const setting_service_1 = require("./setting.service");
8
42
  const error_messages_1 = require("../constants/error-messages");
9
43
  const success_messages_1 = require("../constants/success-messages");
10
44
  const typeorm_1 = require("typeorm");
@@ -32,6 +66,7 @@ const ShortTextFieldCrudManager_1 = require("../helpers/field-crud-managers/Shor
32
66
  const UUIDFieldCrudManager_1 = require("../helpers/field-crud-managers/UUIDFieldCrudManager");
33
67
  const crud_helper_service_1 = require("./crud-helper.service");
34
68
  const hashing_service_1 = require("./hashing.service");
69
+ const solid_registry_1 = require("../helpers/solid-registry");
35
70
  const mediaStorageProviders_1 = require("./mediaStorageProviders");
36
71
  const model_metadata_service_1 = require("./model-metadata.service");
37
72
  const request_context_service_1 = require("./request-context.service");
@@ -54,9 +89,23 @@ class CRUDService {
54
89
  return this._discoveryService ??= this.moduleRef.get(core_1.DiscoveryService, { strict: false });
55
90
  }
56
91
  get settingService() {
57
- return this._settingService ??= this.moduleRef.get(src_1.SettingService, { strict: false });
92
+ return this._settingService ??= this.moduleRef.get(setting_service_1.SettingService, { strict: false });
93
+ }
94
+ async tryCreateAsExtensionUser(createDto) {
95
+ if (this.repo.metadata?.parentEntityMetadata?.target !== user_entity_1.User)
96
+ return null;
97
+ const registry = this.moduleRef.get(solid_registry_1.SolidRegistry, { strict: false });
98
+ if (!registry?.getExtensionUserCreationProvider()) {
99
+ throw new common_1.InternalServerErrorException(`No ExtensionUserCreationProvider registered. Register one to create ${this.repo.metadata.name} entities.`);
100
+ }
101
+ const { AuthenticationService } = await Promise.resolve().then(() => __importStar(require('./authentication.service')));
102
+ const authService = this.moduleRef.get(AuthenticationService, { strict: false });
103
+ return authService.signUp(createDto);
58
104
  }
59
105
  async create(createDto, files = [], solidRequestContext = {}) {
106
+ const asExtensionUser = await this.tryCreateAsExtensionUser(createDto);
107
+ if (asExtensionUser !== null)
108
+ return asExtensionUser;
60
109
  let hasMediaFields = false;
61
110
  const model = await this.loadModel();
62
111
  if (solidRequestContext.activeUser) {
@@ -465,7 +514,7 @@ class CRUDService {
465
514
  return r;
466
515
  }
467
516
  async handlePopulateUserIdFields(userIdFields, entities) {
468
- const userRepository = this.entityManager.getRepository(src_1.User);
517
+ const userRepository = this.entityManager.getRepository(user_entity_1.User);
469
518
  for (const entity of entities) {
470
519
  for (const userFieldPath of userIdFields) {
471
520
  const userId = entity[userFieldPath];