@solidxai/core 0.1.10-beta.2 → 0.1.10-beta.21

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 (322) hide show
  1. package/dist/commands/refresh-model.command.d.ts +1 -7
  2. package/dist/commands/refresh-model.command.d.ts.map +1 -1
  3. package/dist/commands/refresh-model.command.js +4 -49
  4. package/dist/commands/refresh-model.command.js.map +1 -1
  5. package/dist/commands/refresh-module.command.d.ts +0 -2
  6. package/dist/commands/refresh-module.command.d.ts.map +1 -1
  7. package/dist/commands/refresh-module.command.js +3 -16
  8. package/dist/commands/refresh-module.command.js.map +1 -1
  9. package/dist/commands/test-data.command.d.ts +2 -0
  10. package/dist/commands/test-data.command.d.ts.map +1 -1
  11. package/dist/commands/test-data.command.js +32 -6
  12. package/dist/commands/test-data.command.js.map +1 -1
  13. package/dist/controllers/action-metadata.controller.js +1 -1
  14. package/dist/controllers/action-metadata.controller.js.map +1 -1
  15. package/dist/controllers/chatter-message.controller.d.ts +2 -0
  16. package/dist/controllers/chatter-message.controller.d.ts.map +1 -1
  17. package/dist/controllers/chatter-message.controller.js +17 -0
  18. package/dist/controllers/chatter-message.controller.js.map +1 -1
  19. package/dist/controllers/facebook-authentication.controller.js +1 -1
  20. package/dist/controllers/facebook-authentication.controller.js.map +1 -1
  21. package/dist/controllers/google-authentication.controller.js +1 -1
  22. package/dist/controllers/google-authentication.controller.js.map +1 -1
  23. package/dist/controllers/gupshup-webhook.controller.d.ts +11 -0
  24. package/dist/controllers/gupshup-webhook.controller.d.ts.map +1 -0
  25. package/dist/controllers/gupshup-webhook.controller.js +87 -0
  26. package/dist/controllers/gupshup-webhook.controller.js.map +1 -0
  27. package/dist/controllers/mcp-audit-log.controller.d.ts +35 -0
  28. package/dist/controllers/mcp-audit-log.controller.d.ts.map +1 -0
  29. package/dist/controllers/mcp-audit-log.controller.js +147 -0
  30. package/dist/controllers/mcp-audit-log.controller.js.map +1 -0
  31. package/dist/controllers/menu-item-metadata.controller.js +1 -1
  32. package/dist/controllers/menu-item-metadata.controller.js.map +1 -1
  33. package/dist/controllers/meta-cloud-whatsapp-webhook.controller.d.ts +16 -0
  34. package/dist/controllers/meta-cloud-whatsapp-webhook.controller.d.ts.map +1 -0
  35. package/dist/controllers/meta-cloud-whatsapp-webhook.controller.js +133 -0
  36. package/dist/controllers/meta-cloud-whatsapp-webhook.controller.js.map +1 -0
  37. package/dist/controllers/microsoft-authentication.controller.js +1 -1
  38. package/dist/controllers/microsoft-authentication.controller.js.map +1 -1
  39. package/dist/controllers/model-metadata.controller.d.ts +1 -1
  40. package/dist/controllers/model-metadata.controller.js +2 -2
  41. package/dist/controllers/model-metadata.controller.js.map +1 -1
  42. package/dist/controllers/module-metadata.controller.js +1 -1
  43. package/dist/controllers/module-metadata.controller.js.map +1 -1
  44. package/dist/controllers/mq-message-queue.controller.js +1 -1
  45. package/dist/controllers/mq-message-queue.controller.js.map +1 -1
  46. package/dist/controllers/mq-message.controller.js +1 -1
  47. package/dist/controllers/mq-message.controller.js.map +1 -1
  48. package/dist/controllers/view-metadata.controller.js +1 -1
  49. package/dist/controllers/view-metadata.controller.js.map +1 -1
  50. package/dist/dtos/create-mcp-audit-log.dto.d.ts +19 -0
  51. package/dist/dtos/create-mcp-audit-log.dto.d.ts.map +1 -0
  52. package/dist/dtos/create-mcp-audit-log.dto.js +118 -0
  53. package/dist/dtos/create-mcp-audit-log.dto.js.map +1 -0
  54. package/dist/dtos/update-chatter-note-message.dto.d.ts +5 -0
  55. package/dist/dtos/update-chatter-note-message.dto.d.ts.map +1 -0
  56. package/dist/dtos/update-chatter-note-message.dto.js +34 -0
  57. package/dist/dtos/update-chatter-note-message.dto.js.map +1 -0
  58. package/dist/dtos/update-mcp-audit-log.dto.d.ts +19 -0
  59. package/dist/dtos/update-mcp-audit-log.dto.d.ts.map +1 -0
  60. package/dist/dtos/update-mcp-audit-log.dto.js +117 -0
  61. package/dist/dtos/update-mcp-audit-log.dto.js.map +1 -0
  62. package/dist/dtos/update-user.dto.d.ts +1 -0
  63. package/dist/dtos/update-user.dto.d.ts.map +1 -1
  64. package/dist/dtos/update-user.dto.js +7 -1
  65. package/dist/dtos/update-user.dto.js.map +1 -1
  66. package/dist/entities/chatter-message-details.entity.d.ts.map +1 -1
  67. package/dist/entities/chatter-message-details.entity.js +0 -1
  68. package/dist/entities/chatter-message-details.entity.js.map +1 -1
  69. package/dist/entities/mcp-audit-log.entity.d.ts +19 -0
  70. package/dist/entities/mcp-audit-log.entity.d.ts.map +1 -0
  71. package/dist/entities/mcp-audit-log.entity.js +90 -0
  72. package/dist/entities/mcp-audit-log.entity.js.map +1 -0
  73. package/dist/entities/user.entity.js +1 -0
  74. package/dist/entities/user.entity.js.map +1 -1
  75. package/dist/factories/whatsapp.factory.d.ts.map +1 -1
  76. package/dist/factories/whatsapp.factory.js +13 -11
  77. package/dist/factories/whatsapp.factory.js.map +1 -1
  78. package/dist/helpers/bootstrap.helper.d.ts +1 -0
  79. package/dist/helpers/bootstrap.helper.d.ts.map +1 -1
  80. package/dist/helpers/bootstrap.helper.js +8 -3
  81. package/dist/helpers/bootstrap.helper.js.map +1 -1
  82. package/dist/helpers/command.service.d.ts +1 -0
  83. package/dist/helpers/command.service.d.ts.map +1 -1
  84. package/dist/helpers/command.service.js +1 -0
  85. package/dist/helpers/command.service.js.map +1 -1
  86. package/dist/helpers/field-crud-managers/BigIntFieldCrudManager.js.map +1 -1
  87. package/dist/helpers/field-crud-managers/SelectionDynamicFieldCrudManager.js.map +1 -1
  88. package/dist/helpers/module-metadata-helper.service.js.map +1 -1
  89. package/dist/index.d.ts +6 -0
  90. package/dist/index.d.ts.map +1 -1
  91. package/dist/index.js +6 -0
  92. package/dist/index.js.map +1 -1
  93. package/dist/interfaces.d.ts +1 -2
  94. package/dist/interfaces.d.ts.map +1 -1
  95. package/dist/interfaces.js.map +1 -1
  96. package/dist/jobs/database/chatter-queue-subscriber-database.service.d.ts.map +1 -1
  97. package/dist/jobs/database/chatter-queue-subscriber-database.service.js +3 -3
  98. package/dist/jobs/database/chatter-queue-subscriber-database.service.js.map +1 -1
  99. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js.map +1 -1
  100. package/dist/jobs/rabbitmq/chatter-queue-subscriber.service.d.ts.map +1 -1
  101. package/dist/jobs/rabbitmq/chatter-queue-subscriber.service.js +3 -3
  102. package/dist/jobs/rabbitmq/chatter-queue-subscriber.service.js.map +1 -1
  103. package/dist/jobs/redis/chatter-queue-subscriber-redis.service.d.ts.map +1 -1
  104. package/dist/jobs/redis/chatter-queue-subscriber-redis.service.js +3 -3
  105. package/dist/jobs/redis/chatter-queue-subscriber-redis.service.js.map +1 -1
  106. package/dist/listeners/user-registration.listener.d.ts +5 -2
  107. package/dist/listeners/user-registration.listener.d.ts.map +1 -1
  108. package/dist/listeners/user-registration.listener.js +37 -4
  109. package/dist/listeners/user-registration.listener.js.map +1 -1
  110. package/dist/repository/mcp-audit-log.repository.d.ts +12 -0
  111. package/dist/repository/mcp-audit-log.repository.d.ts.map +1 -0
  112. package/dist/repository/mcp-audit-log.repository.js +34 -0
  113. package/dist/repository/mcp-audit-log.repository.js.map +1 -0
  114. package/dist/repository/security-rule.repository.js.map +1 -1
  115. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  116. package/dist/seeders/module-test-data.service.d.ts +9 -0
  117. package/dist/seeders/module-test-data.service.d.ts.map +1 -1
  118. package/dist/seeders/module-test-data.service.js +155 -18
  119. package/dist/seeders/module-test-data.service.js.map +1 -1
  120. package/dist/seeders/permission-metadata-seeder.service.js.map +1 -1
  121. package/dist/seeders/seed-data/solid-core-metadata.json +381 -2
  122. package/dist/services/authentication.service.d.ts +6 -1
  123. package/dist/services/authentication.service.d.ts.map +1 -1
  124. package/dist/services/authentication.service.js +145 -15
  125. package/dist/services/authentication.service.js.map +1 -1
  126. package/dist/services/chatter-message.service.d.ts +13 -4
  127. package/dist/services/chatter-message.service.d.ts.map +1 -1
  128. package/dist/services/chatter-message.service.js +117 -37
  129. package/dist/services/chatter-message.service.js.map +1 -1
  130. package/dist/services/crud.service.js.map +1 -1
  131. package/dist/services/csv.service.js.map +1 -1
  132. package/dist/services/dashboard.service.js.map +1 -1
  133. package/dist/services/database/database-bootstrap.service.js.map +1 -1
  134. package/dist/services/excel.service.js.map +1 -1
  135. package/dist/services/export-transaction.service.js.map +1 -1
  136. package/dist/services/field-metadata.service.js.map +1 -1
  137. package/dist/services/fixtures.service.js.map +1 -1
  138. package/dist/services/import-transaction.service.js.map +1 -1
  139. package/dist/services/list-of-values.service.js.map +1 -1
  140. package/dist/services/mcp-audit-log.service.d.ts +12 -0
  141. package/dist/services/mcp-audit-log.service.d.ts.map +1 -0
  142. package/dist/services/mcp-audit-log.service.js +38 -0
  143. package/dist/services/mcp-audit-log.service.js.map +1 -0
  144. package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts +1 -0
  145. package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts.map +1 -1
  146. package/dist/services/mediaStorageProviders/file-s3-storage-provider.js +11 -0
  147. package/dist/services/mediaStorageProviders/file-s3-storage-provider.js.map +1 -1
  148. package/dist/services/mediaStorageProviders/file-storage-provider.d.ts +1 -0
  149. package/dist/services/mediaStorageProviders/file-storage-provider.d.ts.map +1 -1
  150. package/dist/services/mediaStorageProviders/file-storage-provider.js +6 -0
  151. package/dist/services/mediaStorageProviders/file-storage-provider.js.map +1 -1
  152. package/dist/services/model-metadata.service.d.ts +4 -1
  153. package/dist/services/model-metadata.service.d.ts.map +1 -1
  154. package/dist/services/model-metadata.service.js +24 -24
  155. package/dist/services/model-metadata.service.js.map +1 -1
  156. package/dist/services/module-metadata.service.d.ts +4 -1
  157. package/dist/services/module-metadata.service.d.ts.map +1 -1
  158. package/dist/services/module-metadata.service.js +19 -2
  159. package/dist/services/module-metadata.service.js.map +1 -1
  160. package/dist/services/queues/database-publisher.service.js +3 -3
  161. package/dist/services/queues/database-publisher.service.js.map +1 -1
  162. package/dist/services/queues/database-subscriber.service.js.map +1 -1
  163. package/dist/services/queues/rabbitmq-publisher.service.js +3 -3
  164. package/dist/services/queues/rabbitmq-publisher.service.js.map +1 -1
  165. package/dist/services/queues/rabbitmq-subscriber.service.js.map +1 -1
  166. package/dist/services/queues/redis-publisher.service.d.ts.map +1 -1
  167. package/dist/services/queues/redis-publisher.service.js +4 -1
  168. package/dist/services/queues/redis-publisher.service.js.map +1 -1
  169. package/dist/services/queues/redis-subscriber.service.js.map +1 -1
  170. package/dist/services/role-metadata.service.js.map +1 -1
  171. package/dist/services/scheduled-jobs/scheduler.service.js.map +1 -1
  172. package/dist/services/settings/default-settings-provider.service.d.ts +232 -8
  173. package/dist/services/settings/default-settings-provider.service.d.ts.map +1 -1
  174. package/dist/services/settings/default-settings-provider.service.js +119 -4
  175. package/dist/services/settings/default-settings-provider.service.js.map +1 -1
  176. package/dist/services/sms/TwilioSMSService.js.map +1 -1
  177. package/dist/services/solid-introspect.service.js.map +1 -1
  178. package/dist/services/user-activity-history.service.js.map +1 -1
  179. package/dist/services/user.service.js +1 -1
  180. package/dist/services/user.service.js.map +1 -1
  181. package/dist/services/view-metadata.service.d.ts.map +1 -1
  182. package/dist/services/view-metadata.service.js +17 -2
  183. package/dist/services/view-metadata.service.js.map +1 -1
  184. package/dist/services/whatsapp/GupshupOtpWhatsappService.d.ts +11 -0
  185. package/dist/services/whatsapp/GupshupOtpWhatsappService.d.ts.map +1 -0
  186. package/dist/services/whatsapp/GupshupOtpWhatsappService.js +127 -0
  187. package/dist/services/whatsapp/GupshupOtpWhatsappService.js.map +1 -0
  188. package/dist/services/whatsapp/MetaCloudWhatsappService.d.ts +17 -0
  189. package/dist/services/whatsapp/MetaCloudWhatsappService.d.ts.map +1 -0
  190. package/dist/services/whatsapp/MetaCloudWhatsappService.js +209 -0
  191. package/dist/services/whatsapp/MetaCloudWhatsappService.js.map +1 -0
  192. package/dist/solid-core.module.d.ts +2 -2
  193. package/dist/solid-core.module.d.ts.map +1 -1
  194. package/dist/solid-core.module.js +22 -6
  195. package/dist/solid-core.module.js.map +1 -1
  196. package/dist/subscribers/computed-entity-field.subscriber.js.map +1 -1
  197. package/dist/subscribers/security-rule.subscriber.d.ts.map +1 -1
  198. package/dist/subscribers/security-rule.subscriber.js.map +1 -1
  199. package/dist/subscribers/view-metadata.subscriber.js.map +1 -1
  200. package/dist/testing/core/testing-engine.js.map +1 -1
  201. package/dist/testing/reporter/console-reporter.d.ts +10 -0
  202. package/dist/testing/reporter/console-reporter.d.ts.map +1 -1
  203. package/dist/testing/reporter/console-reporter.js +21 -0
  204. package/dist/testing/reporter/console-reporter.js.map +1 -1
  205. package/dist/testing/reporter/reporter.types.d.ts +7 -0
  206. package/dist/testing/reporter/reporter.types.d.ts.map +1 -1
  207. package/dist/testing/reporter/reporter.types.js.map +1 -1
  208. package/dist/testing/reporter/webhook-reporter.js.map +1 -1
  209. package/dist/testing/runner/run-from-metadata.d.ts.map +1 -1
  210. package/dist/testing/runner/run-from-metadata.js +20 -1
  211. package/dist/testing/runner/run-from-metadata.js.map +1 -1
  212. package/dist/winston.logger.d.ts +5 -0
  213. package/dist/winston.logger.d.ts.map +1 -1
  214. package/dist/winston.logger.js +6 -4
  215. package/dist/winston.logger.js.map +1 -1
  216. package/dist-tests/api/authenticate.spec.js +119 -0
  217. package/dist-tests/api/authenticate.spec.js.map +1 -0
  218. package/dist-tests/api/crud-service.findOne.cityMaster.spec.js +97 -0
  219. package/dist-tests/api/crud-service.findOne.cityMaster.spec.js.map +1 -0
  220. package/dist-tests/api/ping.spec.js +21 -0
  221. package/dist-tests/api/ping.spec.js.map +1 -0
  222. package/dist-tests/helpers/auth.js +41 -0
  223. package/dist-tests/helpers/auth.js.map +1 -0
  224. package/dist-tests/helpers/env.js +11 -0
  225. package/dist-tests/helpers/env.js.map +1 -0
  226. package/docs/grouping-enhancements.md +89 -0
  227. package/docs/java-spring/README.md +3 -0
  228. package/docs/java-spring/solid-core-module-deep-dive-report.md +1317 -0
  229. package/docs/seed-changes.md +65 -0
  230. package/docs/test-data-workflow.md +200 -0
  231. package/docs/type-declaration-import-issue.md +24 -0
  232. package/package.json +8 -8
  233. package/src/commands/refresh-model.command.ts +6 -51
  234. package/src/commands/refresh-module.command.ts +3 -16
  235. package/src/commands/test-data.command.ts +29 -6
  236. package/src/controllers/action-metadata.controller.ts +1 -1
  237. package/src/controllers/chatter-message.controller.ts +12 -0
  238. package/src/controllers/facebook-authentication.controller.ts +1 -1
  239. package/src/controllers/google-authentication.controller.ts +1 -1
  240. package/src/controllers/gupshup-webhook.controller.ts +91 -0
  241. package/src/controllers/mcp-audit-log.controller.ts +70 -0
  242. package/src/controllers/menu-item-metadata.controller.ts +1 -1
  243. package/src/controllers/meta-cloud-whatsapp-webhook.controller.ts +155 -0
  244. package/src/controllers/microsoft-authentication.controller.ts +1 -1
  245. package/src/controllers/model-metadata.controller.ts +1 -1
  246. package/src/controllers/module-metadata.controller.ts +1 -1
  247. package/src/controllers/mq-message-queue.controller.ts +1 -1
  248. package/src/controllers/mq-message.controller.ts +1 -1
  249. package/src/controllers/view-metadata.controller.ts +1 -1
  250. package/src/dtos/create-mcp-audit-log.dto.ts +84 -0
  251. package/src/dtos/update-chatter-note-message.dto.ts +14 -0
  252. package/src/dtos/update-mcp-audit-log.dto.ts +83 -0
  253. package/src/dtos/update-user.dto.ts +4 -0
  254. package/src/entities/chatter-message-details.entity.ts +1 -2
  255. package/src/entities/mcp-audit-log.entity.ts +55 -0
  256. package/src/entities/user.entity.ts +1 -1
  257. package/src/factories/whatsapp.factory.ts +33 -32
  258. package/src/helpers/bootstrap.helper.ts +16 -6
  259. package/src/helpers/command.service.ts +2 -0
  260. package/src/helpers/field-crud-managers/BigIntFieldCrudManager.ts +1 -1
  261. package/src/helpers/field-crud-managers/SelectionDynamicFieldCrudManager.ts +1 -1
  262. package/src/helpers/field-crud-managers/field-quality-check-fixes.md +178 -0
  263. package/src/helpers/module-metadata-helper.service.ts +1 -1
  264. package/src/index.ts +6 -0
  265. package/src/interfaces.ts +1 -3
  266. package/src/jobs/database/chatter-queue-subscriber-database.service.ts +4 -2
  267. package/src/jobs/database/trigger-mcp-client-subscriber-database.service.ts +1 -1
  268. package/src/jobs/rabbitmq/chatter-queue-subscriber.service.ts +4 -2
  269. package/src/jobs/redis/chatter-queue-subscriber-redis.service.ts +10 -3
  270. package/src/listeners/user-registration.listener.ts +49 -6
  271. package/src/repository/mcp-audit-log.repository.ts +17 -0
  272. package/src/repository/security-rule.repository.ts +1 -1
  273. package/src/seeders/module-metadata-seeder.service.ts +4 -4
  274. package/src/seeders/module-test-data.service.ts +186 -17
  275. package/src/seeders/permission-metadata-seeder.service.ts +1 -1
  276. package/src/seeders/seed-data/solid-core-metadata.json +381 -2
  277. package/src/services/authentication.service.ts +267 -44
  278. package/src/services/chatter-message.service.ts +140 -40
  279. package/src/services/crud.service.ts +1 -1
  280. package/src/services/csv.service.ts +1 -1
  281. package/src/services/dashboard.service.ts +1 -1
  282. package/src/services/database/database-bootstrap.service.ts +1 -1
  283. package/src/services/excel.service.ts +1 -1
  284. package/src/services/export-transaction.service.ts +2 -2
  285. package/src/services/field-metadata.service.ts +1 -1
  286. package/src/services/fixtures.service.ts +2 -2
  287. package/src/services/import-transaction.service.ts +2 -2
  288. package/src/services/list-of-values.service.ts +1 -1
  289. package/src/services/mcp-audit-log.service.ts +19 -0
  290. package/src/services/mediaStorageProviders/file-s3-storage-provider.ts +12 -0
  291. package/src/services/mediaStorageProviders/file-storage-provider.ts +8 -1
  292. package/src/services/model-metadata.service.ts +36 -34
  293. package/src/services/module-metadata.service.ts +19 -7
  294. package/src/services/queues/database-publisher.service.ts +4 -4
  295. package/src/services/queues/database-subscriber.service.ts +1 -1
  296. package/src/services/queues/rabbitmq-publisher.service.ts +7 -7
  297. package/src/services/queues/rabbitmq-subscriber.service.ts +8 -8
  298. package/src/services/queues/redis-publisher.service.ts +7 -4
  299. package/src/services/queues/redis-subscriber.service.ts +4 -4
  300. package/src/services/role-metadata.service.ts +1 -1
  301. package/src/services/scheduled-jobs/scheduler.service.ts +5 -5
  302. package/src/services/settings/default-settings-provider.service.ts +119 -4
  303. package/src/services/sms/TwilioSMSService.ts +2 -2
  304. package/src/services/solid-introspect.service.ts +2 -2
  305. package/src/services/user-activity-history.service.ts +1 -1
  306. package/src/services/user.service.ts +1 -1
  307. package/src/services/view-metadata.service.ts +25 -8
  308. package/src/services/whatsapp/GupshupOtpWhatsappService.ts +174 -0
  309. package/src/services/whatsapp/MetaCloudWhatsappService.ts +253 -0
  310. package/src/solid-core.module.ts +213 -196
  311. package/src/subscribers/computed-entity-field.subscriber.ts +1 -1
  312. package/src/subscribers/security-rule.subscriber.ts +8 -8
  313. package/src/subscribers/view-metadata.subscriber.ts +1 -1
  314. package/src/testing/README.md +15 -0
  315. package/src/testing/core/testing-engine.ts +2 -2
  316. package/src/testing/reporter/console-reporter.ts +27 -0
  317. package/src/testing/reporter/reporter.types.ts +7 -0
  318. package/src/testing/reporter/webhook-reporter.ts +1 -1
  319. package/src/testing/runner/run-from-metadata.ts +19 -1
  320. package/src/winston.logger.ts +5 -7
  321. package/.claude/settings.local.json +0 -15
  322. package/src/services/1.js +0 -6
@@ -0,0 +1,65 @@
1
+ # Seeding Enhancements Summary
2
+
3
+ ## Overview
4
+ This document summarizes the changes made to seeding behavior in `solid-core`:
5
+ - Metadata pruning support across targets.
6
+ - CLI flags for selective modules and pruning.
7
+
8
+ ## Pruning Support
9
+ Pruning is now available for most metadata targets. When enabled, records present in the DB but missing from JSON are removed. This is done in two phases:
10
+ 1. Identify records in DB not present in JSON.
11
+ 2. Delete those records before normal upsert seeding.
12
+
13
+ ### Targets with Pruning
14
+ - Module models + fields (with model-level pruning).
15
+ - Views, actions, menus (with join cleanup).
16
+ - Security rules, list of values, dashboards.
17
+ - Scheduled jobs, saved filters, model sequences.
18
+ - Permissions (also clears role-permission join table).
19
+
20
+ ### Targets WITHOUT Pruning (conservative)
21
+ - Module metadata itself
22
+ - Media storage providers
23
+ - Roles
24
+ - Users
25
+ - Email templates
26
+ - SMS templates
27
+ - System fields (global)
28
+ - Default settings (global)
29
+
30
+ ### Pruning Mode
31
+ Pruning runs **only** when `--prune` is provided. If omitted, pruning is skipped.
32
+
33
+ ## CLI Changes
34
+ ### Modules to Seed
35
+ `--conf` was removed. Use:
36
+ ```
37
+ --modules-to-seed venue,reports
38
+ ```
39
+ This passes `modulesToSeed` to the seeder as an array.
40
+
41
+ ## Sample Commands
42
+ ### Default seeding
43
+ ```
44
+ npx @solidxai/solidctl seed
45
+ ```
46
+
47
+ ### Select modules only
48
+ ```
49
+ npx @solidxai/solidctl seed --modules-to-seed venue,reports
50
+ ```
51
+
52
+ ### Pruning enabled
53
+ ```
54
+ npx @solidxai/solidctl seed --modules-to-seed venue --prune
55
+ ```
56
+
57
+ ### Pruning enabled (all modules)
58
+ ```
59
+ npx @solidxai/solidctl seed --prune
60
+ ```
61
+
62
+ ## Files Touched (Key)
63
+ - `src/seeders/module-metadata-seeder.service.ts`
64
+ - `src/commands/seed.command.ts`
65
+ - `src/repository/solid-base.repository.ts` (added `findOneByUserKey`)
@@ -0,0 +1,200 @@
1
+ # Test Data Workflow
2
+
3
+ This document describes the end-to-end workflow for creating isolated test databases, seeding metadata, loading test data, and tearing everything down.
4
+
5
+ ## Overview
6
+ The workflow is designed to:
7
+ - Create one **test database per configured datasource** in the project.
8
+ - Point the app to those new databases via `.env` updates.
9
+ - Seed all metadata into the fresh databases.
10
+ - Load model-specific `testData` entries from module metadata JSON files.
11
+ - Cleanly reverse everything at the end.
12
+
13
+ The commands below are the canonical flow.
14
+
15
+ ---
16
+
17
+ ## Step 1: Create test datasources
18
+
19
+ Command:
20
+ ```
21
+ npx @solidxai/solidctl test data --setup
22
+ ```
23
+
24
+ What this does:
25
+ - Reads all configured datasources from the Solid registry (`SolidRegistry.getSolidDatabaseModules()`), and uses their `name()` values.
26
+ - Generates a unique **run name** (two words, underscore-separated, e.g. `steady_wolf`).
27
+ - Builds a **timestamped database name** per datasource:
28
+ - `<datasource>_<timestamp>_<runName>`
29
+ - Backs up the current `.env` into `.env.backup.<runName>`.
30
+ - Rewrites `.env` in-place with new `*_DATABASE_NAME` values.
31
+ - Creates the databases/schemas using TypeORM and the configured connection info.
32
+ - Writes a `.solidx-test-manifest` with the run name + database names so the teardown can reverse everything later.
33
+
34
+ Example output:
35
+ ```
36
+ ▶ Running solid test data
37
+ Creating test datasource environment file and manifest.
38
+ Backed up .env to .env.backup.steady_wolf and applied new test datasource names to .env.
39
+ Creating test database/schema "default_20260201234402_steady_wolf" on datasource "default"...
40
+
41
+ ============================================================
42
+ TEST DATASOURCE ENVIRONMENT CREATED
43
+ ------------------------------------------------------------
44
+ Run name : steady_wolf
45
+ Env backup : .env.backup.steady_wolf
46
+
47
+ Test databases/schemas created:
48
+ - default: default_20260201234402_steady_wolf
49
+
50
+ Next steps:
51
+ 1) Using updated .env with test datasource names
52
+ 2) Run solid seed as usual
53
+ 3) Proceed with loading the test data for each module
54
+ 4) Run the test cases
55
+ 5) Tear down
56
+ ============================================================
57
+
58
+ ✔ solid test data completed
59
+ ```
60
+
61
+ Rationale:
62
+ - The `.env` rewrite guarantees the app connects to fresh databases without changing code.
63
+ - The manifest records the run so deletion is safe and deterministic.
64
+
65
+ ---
66
+
67
+ ## Step 2: Seed metadata into the new databases
68
+
69
+ Command:
70
+ ```
71
+ npx @solidxai/solidctl seed
72
+ ```
73
+
74
+ What this does:
75
+ - Seeds full module metadata into the **fresh test databases**.
76
+ - Generates the `sa` user if needed and prints its password.
77
+ - Ensures all models, fields, roles, permissions, views, actions, etc. exist before loading test data.
78
+
79
+ Example output (truncated):
80
+ ```
81
+ ▶ Running solid seed
82
+ ▶ Pruning disabled: existing metadata will be kept.
83
+ ▶ No modulesToSeed provided. Seeding ALL modules.
84
+ ▶ Seeding Metadata for Module: solid-core
85
+ ✔ [solid-core] Module/Model/Fields seeded (upserted 376)
86
+ ...
87
+ ✔ Seeding completed.
88
+ ✔ solid seed completed
89
+ ```
90
+
91
+ Rationale:
92
+ - Test data relies on model metadata and relationships; this ensures the schema and reference data are ready.
93
+
94
+ ---
95
+
96
+ ## Step 3: Load test data
97
+
98
+ Command:
99
+ ```
100
+ npx @solidxai/solidctl test data --load
101
+ ```
102
+
103
+ What this does:
104
+ - Reads all module metadata files (or a subset if `--modules-to-test` is provided).
105
+ - Looks for `testData` arrays in each metadata file.
106
+ - Resolves the correct repository for each model (repository name pattern: `<ModelName>Repository`).
107
+ - Performs **upsert-style** inserts using the model’s `userKeyFieldUserKey`.
108
+ - Resolves many-to-one relations using `${fieldName}UserKey`.
109
+
110
+ Example output:
111
+ ```
112
+ ▶ Running solid test data
113
+ Test data setup for all modules.
114
+ Processing test data for module: solid-core
115
+ ✔ Test data setup complete for module: solid-core
116
+ Processing test data for module: venue
117
+ ✔ Test data setup complete for module: venue
118
+ ✔ solid test data completed
119
+ ```
120
+
121
+ Rationale:
122
+ - This keeps test fixtures human-readable and tied to module metadata.
123
+
124
+ ---
125
+
126
+
127
+ ## Step 4: Run Tests
128
+ ```
129
+ npx @solidxai/solidctl test run --module venue --api-base-url http://localhost:3000 --ui-base-url http://localhost:5173 --headless false
130
+ ```
131
+
132
+ ```
133
+ npx @solidxai/solidctl test run --module venue --list-specs
134
+ ```
135
+
136
+ What this does:
137
+ - Loads `testing.scenarios` from the module metadata file.
138
+ - Applies `--scenario-ids` or `--include-tags` filtering if provided.
139
+ - Boots API and UI adapters with the supplied base URLs.
140
+ - Registers any custom test specs listed in `testing.specs`.
141
+ - Executes scenarios in order with fail‑fast behavior.
142
+
143
+ Useful variants:
144
+ ```
145
+ npx @solidxai/solidctl test run --module venue --scenario-ids api-authenticate-success,api-create-states
146
+ ```
147
+
148
+ ```
149
+ npx @solidxai/solidctl test run --module venue --include-tags smoke
150
+ ```
151
+
152
+ ```
153
+ npx @solidxai/solidctl test run --module venue --api-base-url http://localhost:3000 --headless true
154
+ ```
155
+
156
+ ```
157
+ npx @solidxai/solidctl test run --module venue --headless false
158
+ ```
159
+
160
+ Notes:
161
+ - If your scenario depends on a previous scenario’s `saveAs` output (e.g., `loginSuccess`), ensure the auth scenario runs first.
162
+ - For UI tests, `--ui-base-url` should point to a running frontend server.
163
+ - `--list-specs` prints registered custom `test.spec` ids and exits.
164
+
165
+
166
+ ## Step 5: Tear everything down
167
+
168
+ Command:
169
+ ```
170
+ npx @solidxai/solidctl test data --teardown
171
+ ```
172
+
173
+ What this does:
174
+ - Restores `.env` from the latest `.env.backup.<runName>`.
175
+ - Deletes all `.env.backup.<runName>` files created by the workflow.
176
+ - Drops each test database/schema recorded in `.solidx-test-manifest`.
177
+ - Deletes the manifest file.
178
+
179
+ Example output:
180
+ ```
181
+ ▶ Running solid test data
182
+ Deleting test datasource environment and databases.
183
+ Dropping test database/schema "default_20260201234402_steady_wolf" on datasource "default"...
184
+ ✔ Test datasource env files and manifest deleted; test databases dropped.
185
+ ✔ solid test data completed
186
+ ```
187
+
188
+ Rationale:
189
+ - Keeps the local environment clean and restores the original `.env` safely.
190
+
191
+ ---
192
+
193
+ ## Optional: Limit modules for test data load
194
+
195
+ You can restrict test data loading to a subset of modules:
196
+ ```
197
+ npx @solidxai/solidctl test data --load --modules-to-test venue,reports
198
+ ```
199
+
200
+ Only the listed modules are processed.
@@ -0,0 +1,24 @@
1
+ # Issue: Consumer sees `Property 'id' does not exist on type 'VenueUser'`
2
+
3
+ ## Summary
4
+ The published declaration files in `dist/` import internal types using `src/...` module specifiers. In a consuming project, TypeScript resolves those imports against the consumer's `src` path (or fails), which can cause `User` to extend a different `CommonEntity` that does not define `id`. This leads to `Property 'id' does not exist on type 'VenueUser'` even though `CommonEntity` in the library defines it.
5
+
6
+ ## Evidence
7
+ - `dist/entities/user.entity.d.ts` starts with:
8
+ - `import { CommonEntity } from "src/entities/common.entity";`
9
+ - `dist/entities/common.entity.d.ts` correctly contains:
10
+ - `id: number;`
11
+
12
+ Because the import is `src/...`, the consumer may resolve it to their own `src` tree instead of the library's `dist` types.
13
+
14
+ ## Root Cause
15
+ Library declarations are not portable because internal imports are using absolute `src/...` aliases. These aliases are not part of Node module resolution, so consumers resolve them differently.
16
+
17
+ ## Fix Options
18
+ 1. **Preferred:** Replace internal imports in `src/` with relative paths so emitted `.d.ts` files are portable.
19
+ 2. **Alternative:** Keep `src/*` aliases but add a post-build step (e.g., `tsc-alias`) to rewrite `dist/**/*.d.ts` imports to relative paths.
20
+
21
+ ## Next Steps
22
+ - Decide on option 1 or 2.
23
+ - Rebuild and verify `dist/**/*.d.ts` no longer import from `src/...`.
24
+ - Publish a new package version and ensure the consuming app resolves `User` and `CommonEntity` from the same package instance.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solidxai/core",
3
- "version": "0.1.10-beta.2",
3
+ "version": "0.1.10-beta.21",
4
4
  "description": "This module is a NestJS module containing all the required core providers required by a Solid application",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -79,13 +79,10 @@
79
79
  "ts-morph": "^27.0.2",
80
80
  "twilio": "^5.8.0",
81
81
  "uuid": "^9.0.1",
82
- "xlsx": "^0.18.5"
83
- },
84
- "peerDependenciesMeta": {
85
- "playwright": {
86
- "optional": true
87
- }
82
+ "xlsx": "^0.18.5",
83
+ "playwright": ">=1.0.0"
88
84
  },
85
+ "peerDependenciesMeta": {},
89
86
  "peerDependencies": {
90
87
  "@nestjs/axios": "^3.0.2",
91
88
  "@nestjs/cache-manager": "^2.2.2",
@@ -98,13 +95,14 @@
98
95
  "@nestjs/mongoose": "^10.0.10",
99
96
  "@nestjs/passport": "^10.0.3",
100
97
  "@nestjs/platform-express": "^10.0.0",
98
+ "@nestjs/platform-ws": "^10.0.0",
101
99
  "@nestjs/serve-static": "^4.0.2",
102
100
  "@nestjs/swagger": "^7.2.0",
103
101
  "@nestjs/typeorm": "^10.0.1",
102
+ "@nestjs/websockets": "^10.0.0",
104
103
  "nest-commander": "^3.12.5",
105
104
  "nest-winston": "^1.9.7",
106
105
  "nestjs-cls": "^5.4.3",
107
- "playwright": ">=1.0.0",
108
106
  "reflect-metadata": "^0.2.2",
109
107
  "typeorm": "^0.3.20",
110
108
  "typeorm-naming-strategies": "^4.1.0",
@@ -125,10 +123,12 @@
125
123
  "@nestjs/mongoose": "^10.0.10",
126
124
  "@nestjs/passport": "^10.0.3",
127
125
  "@nestjs/platform-express": "^10.0.0",
126
+ "@nestjs/platform-ws": "^10.0.0",
128
127
  "@nestjs/serve-static": "^4.0.2",
129
128
  "@nestjs/swagger": "^7.2.0",
130
129
  "@nestjs/testing": "^10.0.0",
131
130
  "@nestjs/typeorm": "^10.0.1",
131
+ "@nestjs/websockets": "^10.0.0",
132
132
  "@solidxai/code-builder": "^0.0.2",
133
133
  "@types/express": "^4.17.17",
134
134
  "@types/hapi__joi": "^17.1.12",
@@ -1,14 +1,10 @@
1
- import { BadRequestException, forwardRef, Inject, Logger } from '@nestjs/common';
1
+ import { forwardRef, Inject, Logger } from '@nestjs/common';
2
2
  import { Command, CommandRunner, Option } from 'nest-commander';
3
3
  import { ModelMetadataService } from 'src/services/model-metadata.service';
4
4
  import { CommandError } from './helper';
5
- import { In } from 'typeorm';
6
5
 
7
6
  interface CommandOptions {
8
- name?: string;
9
- id?: number;
10
- fieldIds?: number[];
11
- fieldNames?: string[];
7
+ name: string;
12
8
  dryRun?: boolean;
13
9
  }
14
10
 
@@ -33,34 +29,20 @@ export class RefreshModelCommand extends CommandRunner {
33
29
  }
34
30
 
35
31
  const codeGenerationOptions = {
36
- modelId: options.id,
37
32
  modelUserKey: options.name,
38
33
  dryRun: options.dryRun,
39
- fieldIdsForRefresh: options.fieldIds,
40
- fieldNamesForRefresh: options.fieldNames,
41
34
  };
42
35
  await this.modelMetadataService.handleGenerateCode(codeGenerationOptions);
43
36
  }
44
37
 
45
- // Accept the model ID as an argument
46
38
  @Option({
47
- flags: '-i, --id [model ID]',
48
- description: 'Model ID from the ss_model_metadata table',
49
- })
50
- parseId(val: string): number {
51
- return +val;
52
- }
53
-
54
- // Accept the module name as an argument
55
- @Option({
56
- flags: '-n, --name [model name]',
57
- description: 'Model Name from the ss_model_metadata table',
39
+ flags: '-n, --name <model name>',
40
+ description: 'Model name (singularName) from the ss_model_metadata table',
58
41
  })
59
42
  parseName(val: string): string {
60
43
  return val;
61
44
  }
62
45
 
63
- // Accept dry run as an argument
64
46
  @Option({
65
47
  flags: '-d, --dryRun [dry run]',
66
48
  description: 'Dry run the command',
@@ -70,36 +52,9 @@ export class RefreshModelCommand extends CommandRunner {
70
52
  return (val === 'false') ? false : true;
71
53
  }
72
54
 
73
- // Accept field IDs as an argument
74
- @Option({
75
- flags: '-fids, --fieldIds [Array of field IDs]',
76
- description: 'Json array of Field IDs from the ss_field_metadata table',
77
- })
78
- parseFieldIds(val: string): number[] {
79
- //Check if the value is a json array
80
- if (!val.startsWith('[') || !val.endsWith(']')) {
81
- throw new BadRequestException('Field IDs should be a json array');
82
- }
83
- return JSON.parse(val).map((id: string) => parseInt(id));
84
- }
85
-
86
- // Accept field Names as an argument
87
- @Option({
88
- flags: '-fnames, --fieldNames [Array of field Names]',
89
- description: 'Json array of Field Names from the ss_field_metadata table',
90
- })
91
- parseFieldNames(val: string): string[] {
92
- //Check if the value is a json array
93
- if (!val.startsWith('[') || !val.endsWith(']')) {
94
- throw new BadRequestException('Field Names should be a json array');
95
- }
96
- return JSON.parse(val).map((name: string) => name.toString());
97
- }
98
-
99
- // Validate the options passed
100
55
  private validate(options: CommandOptions): CommandError[] {
101
- if (!options.id && !options.name) {
102
- return [new CommandError('Model ID or Model Name is required')];
56
+ if (!options.name) {
57
+ return [new CommandError('Model Name is required')];
103
58
  }
104
59
  return [];
105
60
  }
@@ -4,7 +4,6 @@ import { ModuleMetadataService } from '../services/module-metadata.service';
4
4
  import { CommandError } from './helper';
5
5
 
6
6
  interface CommandOptions {
7
- id: number;
8
7
  name: string;
9
8
  dryRun: boolean;
10
9
  }
@@ -28,7 +27,6 @@ export class RefreshModuleCommand extends CommandRunner {
28
27
  return;
29
28
  }
30
29
  const codeGenerationOptions = {
31
- moduleId: options.id,
32
30
  moduleUserKey: options.name,
33
31
  dryRun: options.dryRun,
34
32
  };
@@ -36,16 +34,7 @@ export class RefreshModuleCommand extends CommandRunner {
36
34
  }
37
35
 
38
36
  @Option({
39
- flags: '-i, --id [module ID]',
40
- description: 'Module ID from the ss_module_metadata table',
41
- })
42
- parseId(val: string): number {
43
- return +val;
44
- }
45
-
46
- // Accept the module name as an argument
47
- @Option({
48
- flags: '-n, --name [module name]',
37
+ flags: '-n, --name <module name>',
49
38
  description: 'Module Name from the ss_module_metadata table',
50
39
  })
51
40
  parseName(val: string): string {
@@ -61,11 +50,9 @@ export class RefreshModuleCommand extends CommandRunner {
61
50
  return (val === 'false') ? false : true;
62
51
  }
63
52
 
64
-
65
- // Validate the options passed
66
53
  validate(options: CommandOptions): CommandError[] {
67
- if (!options.id && !options.name) {
68
- return [new CommandError('Module ID or Module Name is required')];
54
+ if (!options.name) {
55
+ return [new CommandError('Module Name is required')];
69
56
  }
70
57
  return [];
71
58
  }
@@ -7,6 +7,7 @@ interface TestDataCommandOptions {
7
7
  modulesToTest?: string;
8
8
  setup?: boolean;
9
9
  teardown?: boolean;
10
+ unlink?: boolean;
10
11
  }
11
12
 
12
13
  @SubCommand({
@@ -25,17 +26,18 @@ export class TestDataCommand extends CommandRunner {
25
26
  const load = Boolean(options?.load);
26
27
  const setup = Boolean(options?.setup);
27
28
  const teardown = Boolean(options?.teardown);
29
+ const unlink = Boolean(options?.unlink);
28
30
 
29
- const selectedModes = [load, setup, teardown].filter(Boolean).length;
31
+ const selectedModes = [load, setup, teardown, unlink].filter(Boolean).length;
30
32
  if (selectedModes > 1) {
31
- this.logger.error('Please specify only one of --load, --setup, or --teardown.');
32
- console.log('Please specify only one of --load, --setup, or --teardown.');
33
+ this.logger.error('Please specify only one of --load, --setup, --teardown, or --unlink.');
34
+ console.log('Please specify only one of --load, --setup, --teardown, or --unlink.');
33
35
  return;
34
36
  }
35
37
 
36
- if (!load && !setup && !teardown) {
37
- this.logger.error('Please specify one of --load, --setup, or --teardown.');
38
- console.log('Please specify one of --load, --setup, or --teardown.');
38
+ if (!load && !setup && !teardown && !unlink) {
39
+ this.logger.error('Please specify one of --load, --setup, --teardown, or --unlink.');
40
+ console.log('Please specify one of --load, --setup, --teardown, or --unlink.');
39
41
  return;
40
42
  }
41
43
 
@@ -65,6 +67,19 @@ export class TestDataCommand extends CommandRunner {
65
67
  await this.testDataService.setupTestData(modulesToTest ?? undefined);
66
68
  return;
67
69
  }
70
+
71
+ if (unlink) {
72
+ const modulesToTest = options?.modulesToTest ? options.modulesToTest.split(',').map((m) => m.trim()).filter(Boolean) : null;
73
+ if (modulesToTest?.length) {
74
+ this.logger.log(`Test data unlink for modules: ${modulesToTest.join(', ')}`);
75
+ console.log(`Test data unlink for modules: ${modulesToTest.join(', ')}`);
76
+ } else {
77
+ this.logger.log('Test data unlink for all modules.');
78
+ console.log('Test data unlink for all modules.');
79
+ }
80
+ await this.testDataService.removeTestData(modulesToTest ?? undefined);
81
+ return;
82
+ }
68
83
  } catch (err: any) {
69
84
  const message = err?.message ?? String(err);
70
85
  this.logger.error(message);
@@ -109,4 +124,12 @@ export class TestDataCommand extends CommandRunner {
109
124
  return val;
110
125
  }
111
126
 
127
+ @Option({
128
+ flags: '--unlink',
129
+ description: 'Delete test data from testing.data sections in reverse order',
130
+ })
131
+ parseUnlink(): boolean {
132
+ return true;
133
+ }
134
+
112
135
  }
@@ -7,7 +7,7 @@ import { UpdateActionMetadataDto } from '../dtos/update-action-metadata.dto';
7
7
  import { SolidRequestContextDto } from 'src/dtos/solid-request-context.dto';
8
8
  import { SolidRequestContextDecorator } from 'src/decorators/solid-request-context.decorator';
9
9
 
10
- @ApiTags('App Builder')
10
+ @ApiTags('Solid Core')
11
11
  @Controller('action-metadata') //FIXME: Change this to the model plural name
12
12
  export class ActionMetadataController {
13
13
  constructor(private readonly service: ActionMetadataService) { }
@@ -5,6 +5,7 @@ import { ChatterMessageService } from '../services/chatter-message.service';
5
5
  import { CreateChatterMessageDto } from '../dtos/create-chatter-message.dto';
6
6
  import { UpdateChatterMessageDto } from '../dtos/update-chatter-message.dto';
7
7
  import { PostChatterMessageDto } from '../dtos/post-chatter-message.dto';
8
+ import { UpdateChatterNoteMessageDto } from '../dtos/update-chatter-note-message.dto';
8
9
  import { SolidRequestContextDecorator } from 'src/decorators/solid-request-context.decorator';
9
10
  import { SolidRequestContextDto } from 'src/dtos/solid-request-context.dto';
10
11
  import { Public } from 'src/decorators/public.decorator';
@@ -127,4 +128,15 @@ export class ChatterMessageController {
127
128
  async markCompleted(@Param('id') id: string) {
128
129
  return this.service.markCompleted(+id);
129
130
  }
131
+
132
+ @ApiBearerAuth("jwt")
133
+ @Patch(':id/note')
134
+ @UseInterceptors(AnyFilesInterceptor())
135
+ async updateCustomNoteMessage(
136
+ @Param('id') id: string,
137
+ @Body() updateDto: UpdateChatterNoteMessageDto,
138
+ @UploadedFiles() files: Array<Express.Multer.File>,
139
+ ) {
140
+ return this.service.updateCustomNoteMessage(+id, updateDto, files);
141
+ }
130
142
  }
@@ -24,7 +24,7 @@ import { UserService } from "../services/user.service";
24
24
  import type { SolidCoreSetting } from "../services/settings/default-settings-provider.service";
25
25
 
26
26
  @Auth(AuthType.None)
27
- @ApiTags("Iam")
27
+ @ApiTags("Solid Core")
28
28
  @Controller("iam/facebook")
29
29
  export class FacebookAuthenticationController {
30
30
  constructor(
@@ -16,7 +16,7 @@ import type { SolidCoreSetting } from "src/services/settings/default-settings-pr
16
16
 
17
17
  @Auth(AuthType.None)
18
18
  @Controller('iam/google')
19
- @ApiTags("Iam")
19
+ @ApiTags("Solid Core")
20
20
  // @UseGuards(ThrottlerGuard)
21
21
  // @SkipThrottle({ login: false, short: false, burst: true, sustained: true }) //Enable the login throttle only
22
22
  export class GoogleAuthenticationController {