@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
@@ -27,19 +27,19 @@ export class SecurityRuleSubscriber implements EntitySubscriberInterface<Securit
27
27
  async afterInsert(event: InsertEvent<SecurityRule>) {
28
28
  await this.saveSecurityRules(event);
29
29
  }
30
-
30
+
31
31
  async afterUpdate(event: UpdateEvent<SecurityRule>) {
32
32
  await this.saveSecurityRules(event);
33
33
  }
34
34
 
35
- async saveSecurityRules(event: UpdateEvent<SecurityRule>| InsertEvent<SecurityRule>) {
35
+ async saveSecurityRules(event: UpdateEvent<SecurityRule> | InsertEvent<SecurityRule>) {
36
36
  const securityRule = event.entity as SecurityRule;
37
37
  const modelMetadata = event.entity.modelMetadata;
38
38
  if (!modelMetadata) {
39
39
  this.logger.error(`Model metadata not found for security rule with id ${event.entity.id}`);
40
40
  return;
41
41
  }
42
-
42
+
43
43
  const modelMetadataRepo = this.dataSource.getRepository(ModelMetadata);
44
44
  const populatedModelMetadata = await modelMetadataRepo.findOne({
45
45
  where: {
@@ -58,7 +58,7 @@ export class SecurityRuleSubscriber implements EntitySubscriberInterface<Securit
58
58
  const filePath = await this.moduleMetadataHelperService.getModuleMetadataFilePath(populatedModelMetadata.module.name);
59
59
  try {
60
60
  await fs.access(filePath);
61
- } catch (error) {
61
+ } catch (error: any) {
62
62
  // FIXME - Should we actually delete the security rule here, if the file is not found?
63
63
  this.logger.error(`File not found at path: ${filePath}`);
64
64
  return;
@@ -67,13 +67,13 @@ export class SecurityRuleSubscriber implements EntitySubscriberInterface<Securit
67
67
 
68
68
  if (metaData.securityRules) {
69
69
  const securityRuleIndex = metaData.securityRules?.findIndex((ruleFromFile: { name: string }) => ruleFromFile.name === securityRule.name);
70
- const {id, roleId, modelMetadataId, ...requiredDto} = await this.securityRuleRepo.toDto(securityRule)
71
- metaData.securityRules[securityRuleIndex] = {...requiredDto, securityRuleConfig: JSON.parse(securityRule.securityRuleConfig)}
70
+ const { id, roleId, modelMetadataId, ...requiredDto } = await this.securityRuleRepo.toDto(securityRule)
71
+ metaData.securityRules[securityRuleIndex] = { ...requiredDto, securityRuleConfig: JSON.parse(securityRule.securityRuleConfig) }
72
72
  }
73
73
  else {
74
74
  const securityRules = []
75
- const {id, roleId, modelMetadataId, ...requiredDto} = await this.securityRuleRepo.toDto(securityRule)
76
- securityRules.push({...requiredDto, securityRuleConfig: JSON.parse(securityRule.securityRuleConfig)})
75
+ const { id, roleId, modelMetadataId, ...requiredDto } = await this.securityRuleRepo.toDto(securityRule)
76
+ securityRules.push({ ...requiredDto, securityRuleConfig: JSON.parse(securityRule.securityRuleConfig) })
77
77
  metaData.securityRules = securityRules
78
78
  }
79
79
  // Write the updated object back to the file
@@ -43,7 +43,7 @@ export class ViewMetadataSubsciber implements EntitySubscriberInterface<ViewMeta
43
43
  const filePath = await this.moduleMetadataHelperService.getModuleMetadataFilePath(viewMetadata.model.module.name);
44
44
  try {
45
45
  await fs.access(filePath);
46
- } catch (error) {
46
+ } catch (error: any) {
47
47
  this.logger.error(`File not found at path: ${filePath}`);
48
48
  return;
49
49
  }
@@ -356,6 +356,21 @@ await runFromMetadata({
356
356
  });
357
357
  ```
358
358
 
359
+ ## CLI Workflows
360
+ Full isolated-database workflow:
361
+ 1. `npx @solidxai/solidctl@latest test data --setup`
362
+ 2. `npx @solidxai/solidctl@latest seed`
363
+ 3. `npx @solidxai/solidctl@latest test data --load`
364
+ 4. `npx @solidxai/solidctl@latest test run --module <module-name>`
365
+ 5. `npx @solidxai/solidctl@latest test data --teardown`
366
+
367
+ Lightweight existing-database workflow:
368
+ 1. `npx @solidxai/solidctl@latest test data --load`
369
+ 2. `npx @solidxai/solidctl@latest test run --module <module-name>`
370
+ 3. `npx @solidxai/solidctl@latest test data --unlink`
371
+
372
+ `test data --unlink` deletes records declared in `testing.data` in reverse order using each model's `userKeyFieldUserKey` and the entry's `recUserKeyValue`. This assumes `testing.data` is authored in dependency order, with parent records appearing before dependent records.
373
+
359
374
  ## Add A New Step (SOP)
360
375
  1. Create a new `*.step.ts` in the right domain folder.
361
376
  2. Implement a `registerXSteps(registry)` function and `registry.register("op.name", handler)`.
@@ -57,7 +57,7 @@ export class TestingEngine {
57
57
  } else {
58
58
  await execute();
59
59
  }
60
- } catch (err) {
60
+ } catch (err: any) {
61
61
  scenarioError = err;
62
62
  } finally {
63
63
  const durationMs = Date.now() - scenarioStart;
@@ -108,7 +108,7 @@ export class TestingEngine {
108
108
  // console.log(`Step ${resolvedStep.name} attempting to saveAs ${resolvedStep.saveAs}`, JSON.stringify(result));
109
109
  ctx.resources.set(resolvedStep.saveAs, result);
110
110
  }
111
- } catch (err) {
111
+ } catch (err: any) {
112
112
  stepError = err;
113
113
  throw err;
114
114
  } finally {
@@ -146,6 +146,10 @@ function formatStepLabel(step: OpStep): string {
146
146
  }
147
147
 
148
148
  export class ConsoleReporter implements Reporter {
149
+ private totalScenarios = 0;
150
+ private passedScenarios = 0;
151
+ private failedScenarios = 0;
152
+
149
153
  onScenarioStart(scenario: { id: string; name?: string }): void {
150
154
  const label = scenario.name ? `${scenario.id} (${scenario.name})` : scenario.id;
151
155
  console.log(`\n▶ Scenario: ${label}`);
@@ -157,6 +161,12 @@ export class ConsoleReporter implements Reporter {
157
161
  ): void {
158
162
  const label = scenario.name ? `${scenario.id} (${scenario.name})` : scenario.id;
159
163
  const status = result.ok ? "✔" : "✖";
164
+ this.totalScenarios += 1;
165
+ if (result.ok) {
166
+ this.passedScenarios += 1;
167
+ } else {
168
+ this.failedScenarios += 1;
169
+ }
160
170
  console.log(`${status} Scenario: ${label} (${result.durationMs}ms)`);
161
171
  }
162
172
 
@@ -226,4 +236,21 @@ export class ConsoleReporter implements Reporter {
226
236
  if (!dataText.length) return;
227
237
  console.log(indentLines(dataText, `${STEP_INDENT}${INDENT}${INDENT}`));
228
238
  }
239
+
240
+ onRunEnd(args: {
241
+ ok: boolean;
242
+ total: number;
243
+ passed: number;
244
+ failed: number;
245
+ durationMs: number;
246
+ }): void {
247
+ const durationSeconds = (args.durationMs / 1000).toFixed(2);
248
+ const finalStatus = args.ok ? "PASSED" : "FAILED";
249
+
250
+ console.log("\n════════ Test Run Summary ════════");
251
+ console.log(`Result: Test run ${finalStatus}`);
252
+ console.log(`Cases: total=${args.total}, passed=${args.passed}, failed=${args.failed}`);
253
+ console.log(`Duration: ${durationSeconds}s`);
254
+ console.log("══════════════════════════════════");
255
+ }
229
256
  }
@@ -33,4 +33,11 @@ export interface Reporter {
33
33
  contentType: string;
34
34
  data: Buffer | string;
35
35
  }): void;
36
+ onRunEnd?(args: {
37
+ ok: boolean;
38
+ total: number;
39
+ passed: number;
40
+ failed: number;
41
+ durationMs: number;
42
+ }): void;
36
43
  }
@@ -109,7 +109,7 @@ export class WebhookReporter extends ConsoleReporter {
109
109
  if (!response.ok) {
110
110
  console.warn(`[WebhookReporter] Webhook returned ${response.status}`);
111
111
  }
112
- } catch (err) {
112
+ } catch (err: any) {
113
113
  console.warn(`[WebhookReporter] Failed to deliver test results: ${err}`);
114
114
  }
115
115
  }
@@ -44,6 +44,7 @@ export type RunnerOptions = {
44
44
  };
45
45
 
46
46
  export async function runFromMetadata(opts: RunnerOptions): Promise<void> {
47
+ const startedAt = Date.now();
47
48
  const registry = new StepRegistry();
48
49
  registerApiSteps(registry);
49
50
  registerUiSteps(registry);
@@ -71,15 +72,32 @@ export async function runFromMetadata(opts: RunnerOptions): Promise<void> {
71
72
  const ui = new PlaywrightAdapter(opts.ui);
72
73
  const ctxBase = { resources, reporter, api, ui, specRegistry, testData, options: opts.options };
73
74
  const uiStarted = { value: false };
75
+ let passed = 0;
76
+ let failed = 0;
77
+ let runError: unknown;
74
78
 
75
79
  try {
76
80
  for (const scenario of scenarios) {
77
81
  if (scenarioNeedsUi(scenario)) {
78
82
  await ensureUiStarted(ctxBase, uiStarted);
79
83
  }
80
- await engine.runScenario(scenario, ctxBase);
84
+ try {
85
+ await engine.runScenario(scenario, ctxBase);
86
+ passed += 1;
87
+ } catch (error) {
88
+ failed += 1;
89
+ runError = error;
90
+ throw error;
91
+ }
81
92
  }
82
93
  } finally {
94
+ reporter.onRunEnd?.({
95
+ ok: !runError,
96
+ total: scenarios.length,
97
+ passed,
98
+ failed,
99
+ durationMs: Date.now() - startedAt,
100
+ });
83
101
  if (uiStarted.value) {
84
102
  await ui.stop();
85
103
  }
@@ -6,8 +6,8 @@ import { WINSTON_MODULE_PROVIDER } from 'nest-winston';
6
6
  import * as winston from 'winston';
7
7
  import { Environment } from './decorators/disallow-in-production.decorator';
8
8
 
9
- export const WinstonLoggerConfig = {
10
- level: process.env.LOG_LEVEL || (process.env.ENV === Environment.Production ? 'info' : 'debug'),
9
+ export const createWinstonLoggerConfig = () => ({
10
+ level: process.env.LOG_LEVEL || (process.env.ENV === Environment.Production ? 'warn' : 'info'),
11
11
  format: winston.format.combine(
12
12
  winston.format.timestamp(),
13
13
  winston.format.errors({ stack: true }),
@@ -21,8 +21,6 @@ export const WinstonLoggerConfig = {
21
21
  transports: [
22
22
  new winston.transports.Console({
23
23
  format: winston.format.combine(
24
- // winston.format.colorize(),
25
- // winston.format.timestamp(),
26
24
  winston.format.printf(({ level, message, timestamp }) => {
27
25
  return `[${timestamp}] ${level.toUpperCase()}: ${message}`;
28
26
  }),
@@ -30,15 +28,15 @@ export const WinstonLoggerConfig = {
30
28
  }),
31
29
  new winston.transports.File({
32
30
  filename: 'logs/application.log',
33
- // format: winston.format.json(),
34
31
  }),
35
32
  new winston.transports.File({
36
33
  filename: 'logs/error.log',
37
34
  level: 'error',
38
- // format: winston.format.json(),
39
35
  }),
40
36
  ],
41
- };
37
+ });
38
+
39
+ export const WinstonLoggerConfig = createWinstonLoggerConfig();
42
40
 
43
41
  export class WinstonTypeORMLogger implements TypeORMLogger {
44
42
  constructor(@Inject(WINSTON_MODULE_PROVIDER) private readonly logger: Logger) { }
@@ -1,15 +0,0 @@
1
- {
2
- "permissions": {
3
- "allow": [
4
- "Bash(node -e:*)",
5
- "WebFetch(domain:docs.solidxai.com)",
6
- "WebFetch(domain:github.com)",
7
- "Read(//Users/oswald/projects/Solid_Starters/solidctl/**)",
8
- "Read(//Users/oswald/projects/Solid_Starters/**)",
9
- "Bash(find /Users/oswald/projects/Solid_Starters/solid-core-module -type d -name migration* -o -name *database*)"
10
- ],
11
- "additionalDirectories": [
12
- "/Users/oswald/projects/Solid_Starters/solidctl"
13
- ]
14
- }
15
- }
package/src/services/1.js DELETED
@@ -1,6 +0,0 @@
1
- 1. Do i need to create a storeStreams method for aws service too?
2
- - Handle later
3
- 2. queues handling -> if queues is enabled by default, i.e triggerExport(exportTransactionEntity.id).
4
- - startExport should either return the data or return the transaction id
5
- 3. How to handle scenarios wherein, nested related exist.(do i need to only get the userkey)
6
- - show the userKey