@solidxai/core 0.1.10-beta.0 → 0.1.10-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 (269) hide show
  1. package/.claude/settings.local.json +15 -0
  2. package/CLAUDE.md +18 -0
  3. package/CURRENT_PROMPT +6 -0
  4. package/dist/commands/refresh-model.command.d.ts +0 -4
  5. package/dist/commands/refresh-model.command.d.ts.map +1 -1
  6. package/dist/commands/refresh-model.command.js +0 -32
  7. package/dist/commands/refresh-model.command.js.map +1 -1
  8. package/dist/commands/run-tests.command.d.ts +2 -0
  9. package/dist/commands/run-tests.command.d.ts.map +1 -1
  10. package/dist/commands/run-tests.command.js +49 -17
  11. package/dist/commands/run-tests.command.js.map +1 -1
  12. package/dist/controllers/action-metadata.controller.js +1 -1
  13. package/dist/controllers/action-metadata.controller.js.map +1 -1
  14. package/dist/controllers/facebook-authentication.controller.js +1 -1
  15. package/dist/controllers/facebook-authentication.controller.js.map +1 -1
  16. package/dist/controllers/google-authentication.controller.js +1 -1
  17. package/dist/controllers/google-authentication.controller.js.map +1 -1
  18. package/dist/controllers/mcp-audit-log.controller.d.ts +35 -0
  19. package/dist/controllers/mcp-audit-log.controller.d.ts.map +1 -0
  20. package/dist/controllers/mcp-audit-log.controller.js +147 -0
  21. package/dist/controllers/mcp-audit-log.controller.js.map +1 -0
  22. package/dist/controllers/menu-item-metadata.controller.js +1 -1
  23. package/dist/controllers/menu-item-metadata.controller.js.map +1 -1
  24. package/dist/controllers/microsoft-authentication.controller.js +1 -1
  25. package/dist/controllers/microsoft-authentication.controller.js.map +1 -1
  26. package/dist/controllers/model-metadata.controller.d.ts +1 -1
  27. package/dist/controllers/model-metadata.controller.js +2 -2
  28. package/dist/controllers/model-metadata.controller.js.map +1 -1
  29. package/dist/controllers/module-metadata.controller.js +1 -1
  30. package/dist/controllers/module-metadata.controller.js.map +1 -1
  31. package/dist/controllers/mq-message-queue.controller.js +1 -1
  32. package/dist/controllers/mq-message-queue.controller.js.map +1 -1
  33. package/dist/controllers/mq-message.controller.js +1 -1
  34. package/dist/controllers/mq-message.controller.js.map +1 -1
  35. package/dist/controllers/user.controller.d.ts.map +1 -1
  36. package/dist/controllers/user.controller.js.map +1 -1
  37. package/dist/controllers/view-metadata.controller.js +1 -1
  38. package/dist/controllers/view-metadata.controller.js.map +1 -1
  39. package/dist/dtos/create-mcp-audit-log.dto.d.ts +19 -0
  40. package/dist/dtos/create-mcp-audit-log.dto.d.ts.map +1 -0
  41. package/dist/dtos/create-mcp-audit-log.dto.js +118 -0
  42. package/dist/dtos/create-mcp-audit-log.dto.js.map +1 -0
  43. package/dist/dtos/update-mcp-audit-log.dto.d.ts +19 -0
  44. package/dist/dtos/update-mcp-audit-log.dto.d.ts.map +1 -0
  45. package/dist/dtos/update-mcp-audit-log.dto.js +117 -0
  46. package/dist/dtos/update-mcp-audit-log.dto.js.map +1 -0
  47. package/dist/dtos/update-user.dto.d.ts +1 -0
  48. package/dist/dtos/update-user.dto.d.ts.map +1 -1
  49. package/dist/dtos/update-user.dto.js +7 -1
  50. package/dist/dtos/update-user.dto.js.map +1 -1
  51. package/dist/entities/chatter-message-details.entity.d.ts.map +1 -1
  52. package/dist/entities/chatter-message-details.entity.js +0 -1
  53. package/dist/entities/chatter-message-details.entity.js.map +1 -1
  54. package/dist/entities/mcp-audit-log.entity.d.ts +19 -0
  55. package/dist/entities/mcp-audit-log.entity.d.ts.map +1 -0
  56. package/dist/entities/mcp-audit-log.entity.js +90 -0
  57. package/dist/entities/mcp-audit-log.entity.js.map +1 -0
  58. package/dist/entities/user.entity.js +1 -0
  59. package/dist/entities/user.entity.js.map +1 -1
  60. package/dist/helpers/bootstrap.helper.d.ts.map +1 -1
  61. package/dist/helpers/bootstrap.helper.js +2 -0
  62. package/dist/helpers/bootstrap.helper.js.map +1 -1
  63. package/dist/helpers/command.service.d.ts +1 -0
  64. package/dist/helpers/command.service.d.ts.map +1 -1
  65. package/dist/helpers/command.service.js +1 -0
  66. package/dist/helpers/command.service.js.map +1 -1
  67. package/dist/helpers/field-crud-managers/BigIntFieldCrudManager.js.map +1 -1
  68. package/dist/helpers/field-crud-managers/SelectionDynamicFieldCrudManager.js.map +1 -1
  69. package/dist/helpers/module-metadata-helper.service.js.map +1 -1
  70. package/dist/index.d.ts +4 -0
  71. package/dist/index.d.ts.map +1 -1
  72. package/dist/index.js +4 -0
  73. package/dist/index.js.map +1 -1
  74. package/dist/interfaces.d.ts +0 -2
  75. package/dist/interfaces.d.ts.map +1 -1
  76. package/dist/interfaces.js.map +1 -1
  77. package/dist/jobs/database/chatter-queue-subscriber-database.service.d.ts.map +1 -1
  78. package/dist/jobs/database/chatter-queue-subscriber-database.service.js +3 -3
  79. package/dist/jobs/database/chatter-queue-subscriber-database.service.js.map +1 -1
  80. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js.map +1 -1
  81. package/dist/jobs/rabbitmq/chatter-queue-subscriber.service.d.ts.map +1 -1
  82. package/dist/jobs/rabbitmq/chatter-queue-subscriber.service.js +3 -3
  83. package/dist/jobs/rabbitmq/chatter-queue-subscriber.service.js.map +1 -1
  84. package/dist/jobs/redis/chatter-queue-subscriber-redis.service.d.ts.map +1 -1
  85. package/dist/jobs/redis/chatter-queue-subscriber-redis.service.js +3 -3
  86. package/dist/jobs/redis/chatter-queue-subscriber-redis.service.js.map +1 -1
  87. package/dist/repository/mcp-audit-log.repository.d.ts +12 -0
  88. package/dist/repository/mcp-audit-log.repository.d.ts.map +1 -0
  89. package/dist/repository/mcp-audit-log.repository.js +34 -0
  90. package/dist/repository/mcp-audit-log.repository.js.map +1 -0
  91. package/dist/repository/security-rule.repository.js.map +1 -1
  92. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  93. package/dist/seeders/module-test-data.service.d.ts +7 -0
  94. package/dist/seeders/module-test-data.service.d.ts.map +1 -1
  95. package/dist/seeders/module-test-data.service.js +94 -18
  96. package/dist/seeders/module-test-data.service.js.map +1 -1
  97. package/dist/seeders/permission-metadata-seeder.service.js.map +1 -1
  98. package/dist/seeders/seed-data/solid-core-metadata.json +380 -2
  99. package/dist/services/authentication.service.d.ts.map +1 -1
  100. package/dist/services/authentication.service.js +5 -5
  101. package/dist/services/authentication.service.js.map +1 -1
  102. package/dist/services/chatter-message.service.d.ts +6 -3
  103. package/dist/services/chatter-message.service.d.ts.map +1 -1
  104. package/dist/services/chatter-message.service.js +23 -35
  105. package/dist/services/chatter-message.service.js.map +1 -1
  106. package/dist/services/crud.service.js.map +1 -1
  107. package/dist/services/csv.service.js.map +1 -1
  108. package/dist/services/dashboard.service.js.map +1 -1
  109. package/dist/services/database/database-bootstrap.service.js.map +1 -1
  110. package/dist/services/excel.service.js.map +1 -1
  111. package/dist/services/export-transaction.service.js.map +1 -1
  112. package/dist/services/field-metadata.service.js +2 -2
  113. package/dist/services/field-metadata.service.js.map +1 -1
  114. package/dist/services/fixtures.service.js.map +1 -1
  115. package/dist/services/import-transaction.service.js.map +1 -1
  116. package/dist/services/list-of-values.service.js.map +1 -1
  117. package/dist/services/mcp-audit-log.service.d.ts +12 -0
  118. package/dist/services/mcp-audit-log.service.d.ts.map +1 -0
  119. package/dist/services/mcp-audit-log.service.js +38 -0
  120. package/dist/services/mcp-audit-log.service.js.map +1 -0
  121. package/dist/services/model-metadata.service.d.ts +4 -1
  122. package/dist/services/model-metadata.service.d.ts.map +1 -1
  123. package/dist/services/model-metadata.service.js +23 -24
  124. package/dist/services/model-metadata.service.js.map +1 -1
  125. package/dist/services/module-metadata.service.d.ts +4 -1
  126. package/dist/services/module-metadata.service.d.ts.map +1 -1
  127. package/dist/services/module-metadata.service.js +18 -2
  128. package/dist/services/module-metadata.service.js.map +1 -1
  129. package/dist/services/queues/database-publisher.service.js +3 -3
  130. package/dist/services/queues/database-publisher.service.js.map +1 -1
  131. package/dist/services/queues/database-subscriber.service.js +3 -3
  132. package/dist/services/queues/database-subscriber.service.js.map +1 -1
  133. package/dist/services/queues/rabbitmq-publisher.service.js +3 -3
  134. package/dist/services/queues/rabbitmq-publisher.service.js.map +1 -1
  135. package/dist/services/queues/rabbitmq-subscriber.service.js +4 -4
  136. package/dist/services/queues/rabbitmq-subscriber.service.js.map +1 -1
  137. package/dist/services/queues/redis-publisher.service.d.ts.map +1 -1
  138. package/dist/services/queues/redis-publisher.service.js +4 -1
  139. package/dist/services/queues/redis-publisher.service.js.map +1 -1
  140. package/dist/services/queues/redis-subscriber.service.d.ts.map +1 -1
  141. package/dist/services/queues/redis-subscriber.service.js +4 -1
  142. package/dist/services/queues/redis-subscriber.service.js.map +1 -1
  143. package/dist/services/role-metadata.service.js.map +1 -1
  144. package/dist/services/scheduled-jobs/scheduler.service.js.map +1 -1
  145. package/dist/services/settings/default-settings-provider.service.d.ts +58 -8
  146. package/dist/services/settings/default-settings-provider.service.d.ts.map +1 -1
  147. package/dist/services/settings/default-settings-provider.service.js +21 -4
  148. package/dist/services/settings/default-settings-provider.service.js.map +1 -1
  149. package/dist/services/sms/TwilioSMSService.js.map +1 -1
  150. package/dist/services/solid-introspect.service.js.map +1 -1
  151. package/dist/services/user-activity-history.service.js.map +1 -1
  152. package/dist/services/view-metadata.service.d.ts.map +1 -1
  153. package/dist/services/view-metadata.service.js +17 -2
  154. package/dist/services/view-metadata.service.js.map +1 -1
  155. package/dist/solid-core.module.d.ts +1 -0
  156. package/dist/solid-core.module.d.ts.map +1 -1
  157. package/dist/solid-core.module.js +9 -0
  158. package/dist/solid-core.module.js.map +1 -1
  159. package/dist/subscribers/computed-entity-field.subscriber.js.map +1 -1
  160. package/dist/subscribers/security-rule.subscriber.d.ts.map +1 -1
  161. package/dist/subscribers/security-rule.subscriber.js.map +1 -1
  162. package/dist/subscribers/view-metadata.subscriber.js.map +1 -1
  163. package/dist/testing/core/testing-engine.js.map +1 -1
  164. package/dist/testing/reporter/console-reporter.d.ts +10 -0
  165. package/dist/testing/reporter/console-reporter.d.ts.map +1 -1
  166. package/dist/testing/reporter/console-reporter.js +21 -0
  167. package/dist/testing/reporter/console-reporter.js.map +1 -1
  168. package/dist/testing/reporter/reporter.types.d.ts +7 -0
  169. package/dist/testing/reporter/reporter.types.d.ts.map +1 -1
  170. package/dist/testing/reporter/reporter.types.js.map +1 -1
  171. package/dist/testing/reporter/webhook-reporter.d.ts +54 -0
  172. package/dist/testing/reporter/webhook-reporter.d.ts.map +1 -0
  173. package/dist/testing/reporter/webhook-reporter.js +74 -0
  174. package/dist/testing/reporter/webhook-reporter.js.map +1 -0
  175. package/dist/testing/runner/run-from-metadata.d.ts.map +1 -1
  176. package/dist/testing/runner/run-from-metadata.js +20 -1
  177. package/dist/testing/runner/run-from-metadata.js.map +1 -1
  178. package/package.json +8 -8
  179. package/src/commands/refresh-model.command.ts +1 -32
  180. package/src/commands/run-tests.command.ts +45 -17
  181. package/src/controllers/action-metadata.controller.ts +1 -1
  182. package/src/controllers/facebook-authentication.controller.ts +1 -1
  183. package/src/controllers/google-authentication.controller.ts +1 -1
  184. package/src/controllers/mcp-audit-log.controller.ts +70 -0
  185. package/src/controllers/menu-item-metadata.controller.ts +1 -1
  186. package/src/controllers/microsoft-authentication.controller.ts +1 -1
  187. package/src/controllers/model-metadata.controller.ts +1 -1
  188. package/src/controllers/module-metadata.controller.ts +1 -1
  189. package/src/controllers/mq-message-queue.controller.ts +1 -1
  190. package/src/controllers/mq-message.controller.ts +1 -1
  191. package/src/controllers/user.controller.ts +16 -16
  192. package/src/controllers/view-metadata.controller.ts +1 -1
  193. package/src/dtos/create-mcp-audit-log.dto.ts +84 -0
  194. package/src/dtos/update-mcp-audit-log.dto.ts +83 -0
  195. package/src/dtos/update-user.dto.ts +4 -0
  196. package/src/entities/chatter-message-details.entity.ts +1 -2
  197. package/src/entities/mcp-audit-log.entity.ts +55 -0
  198. package/src/entities/user.entity.ts +1 -1
  199. package/src/helpers/bootstrap.helper.ts +3 -0
  200. package/src/helpers/command.service.ts +2 -0
  201. package/src/helpers/field-crud-managers/BigIntFieldCrudManager.ts +1 -1
  202. package/src/helpers/field-crud-managers/SelectionDynamicFieldCrudManager.ts +1 -1
  203. package/src/helpers/module-metadata-helper.service.ts +1 -1
  204. package/src/index.ts +4 -0
  205. package/src/interfaces.ts +0 -2
  206. package/src/jobs/database/chatter-queue-subscriber-database.service.ts +4 -2
  207. package/src/jobs/database/trigger-mcp-client-subscriber-database.service.ts +1 -1
  208. package/src/jobs/rabbitmq/chatter-queue-subscriber.service.ts +4 -2
  209. package/src/jobs/redis/chatter-queue-subscriber-redis.service.ts +10 -3
  210. package/src/repository/mcp-audit-log.repository.ts +17 -0
  211. package/src/repository/security-rule.repository.ts +1 -1
  212. package/src/seeders/module-metadata-seeder.service.ts +4 -4
  213. package/src/seeders/module-test-data.service.ts +107 -15
  214. package/src/seeders/permission-metadata-seeder.service.ts +1 -1
  215. package/src/seeders/seed-data/solid-core-metadata.json +380 -2
  216. package/src/services/1.js +6 -0
  217. package/src/services/authentication.service.ts +19 -31
  218. package/src/services/chatter-message.service.ts +28 -38
  219. package/src/services/crud.service.ts +3 -3
  220. package/src/services/csv.service.ts +1 -1
  221. package/src/services/dashboard.service.ts +1 -1
  222. package/src/services/database/database-bootstrap.service.ts +1 -1
  223. package/src/services/excel.service.ts +1 -1
  224. package/src/services/export-transaction.service.ts +2 -2
  225. package/src/services/field-metadata.service.ts +3 -3
  226. package/src/services/fixtures.service.ts +2 -2
  227. package/src/services/import-transaction.service.ts +2 -2
  228. package/src/services/list-of-values.service.ts +1 -1
  229. package/src/services/mcp-audit-log.service.ts +19 -0
  230. package/src/services/model-metadata.service.ts +35 -34
  231. package/src/services/module-metadata.service.ts +18 -7
  232. package/src/services/queues/database-publisher.service.ts +4 -4
  233. package/src/services/queues/database-subscriber.service.ts +7 -7
  234. package/src/services/queues/rabbitmq-publisher.service.ts +7 -7
  235. package/src/services/queues/rabbitmq-subscriber.service.ts +13 -13
  236. package/src/services/queues/redis-publisher.service.ts +7 -4
  237. package/src/services/queues/redis-subscriber.service.ts +9 -6
  238. package/src/services/role-metadata.service.ts +1 -1
  239. package/src/services/scheduled-jobs/scheduler.service.ts +5 -5
  240. package/src/services/settings/default-settings-provider.service.ts +21 -4
  241. package/src/services/sms/TwilioSMSService.ts +2 -2
  242. package/src/services/solid-introspect.service.ts +2 -2
  243. package/src/services/user-activity-history.service.ts +1 -1
  244. package/src/services/view-metadata.service.ts +25 -8
  245. package/src/solid-core.module.ts +9 -0
  246. package/src/subscribers/computed-entity-field.subscriber.ts +1 -1
  247. package/src/subscribers/security-rule.subscriber.ts +8 -8
  248. package/src/subscribers/view-metadata.subscriber.ts +1 -1
  249. package/src/testing/core/testing-engine.ts +2 -2
  250. package/src/testing/reporter/console-reporter.ts +27 -0
  251. package/src/testing/reporter/reporter.types.ts +7 -0
  252. package/src/testing/reporter/webhook-reporter.ts +116 -0
  253. package/src/testing/runner/run-from-metadata.ts +19 -1
  254. package/dist-tests/api/authenticate.spec.js +0 -119
  255. package/dist-tests/api/authenticate.spec.js.map +0 -1
  256. package/dist-tests/api/crud-service.findOne.cityMaster.spec.js +0 -97
  257. package/dist-tests/api/crud-service.findOne.cityMaster.spec.js.map +0 -1
  258. package/dist-tests/api/ping.spec.js +0 -21
  259. package/dist-tests/api/ping.spec.js.map +0 -1
  260. package/dist-tests/helpers/auth.js +0 -41
  261. package/dist-tests/helpers/auth.js.map +0 -1
  262. package/dist-tests/helpers/env.js +0 -11
  263. package/dist-tests/helpers/env.js.map +0 -1
  264. package/docs/grouping-enhancements.md +0 -89
  265. package/docs/java-spring/README.md +0 -3
  266. package/docs/java-spring/solid-core-module-deep-dive-report.md +0 -1317
  267. package/docs/seed-changes.md +0 -65
  268. package/docs/test-data-workflow.md +0 -200
  269. package/docs/type-declaration-import-issue.md +0 -24
@@ -1 +1 @@
1
- {"version":3,"file":"run-from-metadata.js","sourceRoot":"","sources":["../../../src/testing/runner/run-from-metadata.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6CA,0CAyCC;AAlFD,6DAAyD;AACzD,sCAAgD;AAChD,oCAA8C;AAC9C,4CAAsD;AACtD,wCAAkD;AAClD,wCAAkD;AAClD,2DAA6D;AAC7D,yDAAqD;AACrD,yDAAqD;AACrD,2DAAuD;AACvD,uDAAoD;AACpD,2CAA+D;AAC/D,mEAA+D;AAG/D,SAAS,kBAAkB,CAAC,IAA0B;IACpD,MAAM,KAAK,GAAwC,EAAE,CAAC;IACtD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,MAAM,EAAE,YAAY,IAAI,CAAC,MAAM,EAAE,eAAe;YAAE,SAAS;QAChE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;YAChC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;QAClC,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;IACzE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAeM,KAAK,UAAU,eAAe,CAAC,IAAmB;IACvD,MAAM,QAAQ,GAAG,IAAI,4BAAY,EAAE,CAAC;IACpC,IAAA,sBAAgB,EAAC,QAAQ,CAAC,CAAC;IAC3B,IAAA,oBAAe,EAAC,QAAQ,CAAC,CAAC;IAC1B,IAAA,4BAAmB,EAAC,QAAQ,CAAC,CAAC;IAC9B,IAAA,wBAAiB,EAAC,QAAQ,CAAC,CAAC;IAC5B,IAAA,wBAAiB,EAAC,QAAQ,CAAC,CAAC;IAE5B,MAAM,MAAM,GAAG,IAAI,8BAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1D,MAAM,SAAS,GAAG,IAAA,iCAAe,EAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE;QACjE,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,eAAe,EAAE,IAAI,CAAC,eAAe;KACtC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,IAAI,4BAAY,EAAE,CAAC;IACxC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACjE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,oCAAmB,EAAE,CAAC;IAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,kCAAe,EAAE,CAAC;IACxD,MAAM,GAAG,GAAG,IAAI,wBAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,EAAE,iBAAiB,EAAE,GAAG,wDAAa,mCAAmC,GAAC,CAAC;IAChF,MAAM,EAAE,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;IAChG,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAEnC,IAAI,CAAC;QACH,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,IAAA,2BAAe,EAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9B,MAAM,IAAA,2BAAe,EAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAC5C,CAAC;YACD,MAAM,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;YAAS,CAAC;QACT,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;YACpB,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;AACH,CAAC","sourcesContent":["import type { Reporter } from \"../reporter/reporter.types\";\nimport type { TestingMetadata, TestingDataRecord } from \"../contracts/testing-metadata.types\";\nimport type { ApiAdapterOptions } from \"../adapters/api/api.types\";\nimport type { PlaywrightAdapterOptions } from \"../adapters/ui/ui.types\";\nimport { ApiAdapter } from \"../adapters/api/api-adapter\";\nimport { registerApiSteps } from \"../steps/api\";\nimport { registerUiSteps } from \"../steps/ui\";\nimport { registerAssertSteps } from \"../steps/assert\";\nimport { registerUtilSteps } from \"../steps/util\";\nimport { registerTestSteps } from \"../steps/test\";\nimport { SimpleResourceStore } from \"../core/resource-store\";\nimport { StepRegistry } from \"../core/step-registry\";\nimport { SpecRegistry } from \"../core/spec-registry\";\nimport { TestingEngine } from \"../core/testing-engine\";\nimport { filterScenarios } from \"./scenario-filter\";\nimport { ensureUiStarted, scenarioNeedsUi } from \"./lifecycle\";\nimport { ConsoleReporter } from \"../reporter/console-reporter\";\n\n\nfunction buildTestDataIndex(data?: TestingDataRecord[]): Record<string, Record<string, any>> {\n const index: Record<string, Record<string, any>> = {};\n if (!Array.isArray(data)) return index;\n for (const record of data) {\n if (!record?.modelUserKey || !record?.recUserKeyValue) continue;\n if (!index[record.modelUserKey]) {\n index[record.modelUserKey] = {};\n }\n index[record.modelUserKey][record.recUserKeyValue] = record.data ?? {};\n }\n return index;\n}\n\nexport type RunnerOptions = {\n metadata: TestingMetadata;\n scenarioIds?: string[];\n includeTags?: string[];\n skipScenarioIds?: string[];\n reporter?: Reporter;\n api?: ApiAdapterOptions;\n ui?: PlaywrightAdapterOptions;\n defaults?: { timeoutMs?: number; retries?: number };\n options?: { printApiLogs?: boolean };\n specs?: (registry: SpecRegistry) => void;\n};\n\nexport async function runFromMetadata(opts: RunnerOptions): Promise<void> {\n const registry = new StepRegistry();\n registerApiSteps(registry);\n registerUiSteps(registry);\n registerAssertSteps(registry);\n registerUtilSteps(registry);\n registerTestSteps(registry);\n\n const engine = new TestingEngine(registry, opts.defaults);\n const scenarios = filterScenarios(opts.metadata.testing.scenarios, {\n scenarioIds: opts.scenarioIds,\n includeTags: opts.includeTags,\n skipScenarioIds: opts.skipScenarioIds,\n });\n\n const specRegistry = new SpecRegistry();\n const testData = buildTestDataIndex(opts.metadata.testing?.data);\n if (opts.specs) {\n opts.specs(specRegistry);\n }\n\n const resources = new SimpleResourceStore();\n const reporter = opts.reporter ?? new ConsoleReporter();\n const api = new ApiAdapter(opts.api);\n const { PlaywrightAdapter } = await import(\"../adapters/ui/playwright-adapter\");\n const ui = new PlaywrightAdapter(opts.ui);\n const ctxBase = { resources, reporter, api, ui, specRegistry, testData, options: opts.options };\n const uiStarted = { value: false };\n\n try {\n for (const scenario of scenarios) {\n if (scenarioNeedsUi(scenario)) {\n await ensureUiStarted(ctxBase, uiStarted);\n }\n await engine.runScenario(scenario, ctxBase);\n }\n } finally {\n if (uiStarted.value) {\n await ui.stop();\n }\n }\n}\n"]}
1
+ {"version":3,"file":"run-from-metadata.js","sourceRoot":"","sources":["../../../src/testing/runner/run-from-metadata.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Reporter } from \"../reporter/reporter.types\";\nimport type { TestingMetadata, TestingDataRecord } from \"../contracts/testing-metadata.types\";\nimport type { ApiAdapterOptions } from \"../adapters/api/api.types\";\nimport type { PlaywrightAdapterOptions } from \"../adapters/ui/ui.types\";\nimport { ApiAdapter } from \"../adapters/api/api-adapter\";\nimport { registerApiSteps } from \"../steps/api\";\nimport { registerUiSteps } from \"../steps/ui\";\nimport { registerAssertSteps } from \"../steps/assert\";\nimport { registerUtilSteps } from \"../steps/util\";\nimport { registerTestSteps } from \"../steps/test\";\nimport { SimpleResourceStore } from \"../core/resource-store\";\nimport { StepRegistry } from \"../core/step-registry\";\nimport { SpecRegistry } from \"../core/spec-registry\";\nimport { TestingEngine } from \"../core/testing-engine\";\nimport { filterScenarios } from \"./scenario-filter\";\nimport { ensureUiStarted, scenarioNeedsUi } from \"./lifecycle\";\nimport { ConsoleReporter } from \"../reporter/console-reporter\";\n\n\nfunction buildTestDataIndex(data?: TestingDataRecord[]): Record<string, Record<string, any>> {\n const index: Record<string, Record<string, any>> = {};\n if (!Array.isArray(data)) return index;\n for (const record of data) {\n if (!record?.modelUserKey || !record?.recUserKeyValue) continue;\n if (!index[record.modelUserKey]) {\n index[record.modelUserKey] = {};\n }\n index[record.modelUserKey][record.recUserKeyValue] = record.data ?? {};\n }\n return index;\n}\n\nexport type RunnerOptions = {\n metadata: TestingMetadata;\n scenarioIds?: string[];\n includeTags?: string[];\n skipScenarioIds?: string[];\n reporter?: Reporter;\n api?: ApiAdapterOptions;\n ui?: PlaywrightAdapterOptions;\n defaults?: { timeoutMs?: number; retries?: number };\n options?: { printApiLogs?: boolean };\n specs?: (registry: SpecRegistry) => void;\n};\n\nexport async function runFromMetadata(opts: RunnerOptions): Promise<void> {\n const startedAt = Date.now();\n const registry = new StepRegistry();\n registerApiSteps(registry);\n registerUiSteps(registry);\n registerAssertSteps(registry);\n registerUtilSteps(registry);\n registerTestSteps(registry);\n\n const engine = new TestingEngine(registry, opts.defaults);\n const scenarios = filterScenarios(opts.metadata.testing.scenarios, {\n scenarioIds: opts.scenarioIds,\n includeTags: opts.includeTags,\n skipScenarioIds: opts.skipScenarioIds,\n });\n\n const specRegistry = new SpecRegistry();\n const testData = buildTestDataIndex(opts.metadata.testing?.data);\n if (opts.specs) {\n opts.specs(specRegistry);\n }\n\n const resources = new SimpleResourceStore();\n const reporter = opts.reporter ?? new ConsoleReporter();\n const api = new ApiAdapter(opts.api);\n const { PlaywrightAdapter } = await import(\"../adapters/ui/playwright-adapter\");\n const ui = new PlaywrightAdapter(opts.ui);\n const ctxBase = { resources, reporter, api, ui, specRegistry, testData, options: opts.options };\n const uiStarted = { value: false };\n let passed = 0;\n let failed = 0;\n let runError: unknown;\n\n try {\n for (const scenario of scenarios) {\n if (scenarioNeedsUi(scenario)) {\n await ensureUiStarted(ctxBase, uiStarted);\n }\n try {\n await engine.runScenario(scenario, ctxBase);\n passed += 1;\n } catch (error) {\n failed += 1;\n runError = error;\n throw error;\n }\n }\n } finally {\n reporter.onRunEnd?.({\n ok: !runError,\n total: scenarios.length,\n passed,\n failed,\n durationMs: Date.now() - startedAt,\n });\n if (uiStarted.value) {\n await ui.stop();\n }\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solidxai/core",
3
- "version": "0.1.10-beta.0",
3
+ "version": "0.1.10-beta.11",
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,11 @@
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
7
  name?: string;
9
8
  id?: number;
10
- fieldIds?: number[];
11
- fieldNames?: string[];
12
9
  dryRun?: boolean;
13
10
  }
14
11
 
@@ -36,8 +33,6 @@ export class RefreshModelCommand extends CommandRunner {
36
33
  modelId: options.id,
37
34
  modelUserKey: options.name,
38
35
  dryRun: options.dryRun,
39
- fieldIdsForRefresh: options.fieldIds,
40
- fieldNamesForRefresh: options.fieldNames,
41
36
  };
42
37
  await this.modelMetadataService.handleGenerateCode(codeGenerationOptions);
43
38
  }
@@ -70,32 +65,6 @@ export class RefreshModelCommand extends CommandRunner {
70
65
  return (val === 'false') ? false : true;
71
66
  }
72
67
 
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
68
  // Validate the options passed
100
69
  private validate(options: CommandOptions): CommandError[] {
101
70
  if (!options.id && !options.name) {
@@ -3,6 +3,7 @@ import { SubCommand, CommandRunner, Option } from 'nest-commander';
3
3
  import * as path from 'path';
4
4
  import { ModuleMetadataHelperService } from 'src/helpers/module-metadata-helper.service';
5
5
  import { ConsoleReporter } from 'src/testing/reporter/console-reporter';
6
+ import { WebhookReporter } from 'src/testing/reporter/webhook-reporter';
6
7
  import { runFromMetadata } from 'src/testing/runner/run-from-metadata';
7
8
  import type { TestingMetadata } from 'src/testing/contracts/testing-metadata.types';
8
9
  import { SpecRegistry } from 'src/testing/core/spec-registry';
@@ -21,6 +22,7 @@ interface TestRunCommandOptions {
21
22
  retries?: number;
22
23
  listSpecs?: boolean;
23
24
  printApiLogs?: boolean;
25
+ runName?: string;
24
26
  }
25
27
 
26
28
  @SubCommand({
@@ -89,23 +91,40 @@ export class TestRunCommand extends CommandRunner {
89
91
  const headless = options?.headless ?? true;
90
92
  const printApiLogs = options?.printApiLogs ?? false;
91
93
 
92
- await runFromMetadata({
93
- metadata: metadata as TestingMetadata,
94
- scenarioIds,
95
- includeTags,
96
- skipScenarioIds,
97
- reporter: new ConsoleReporter(),
98
- api: apiBaseUrl ? { baseUrl: apiBaseUrl } : undefined,
99
- ui: { baseUrl: uiBaseUrl, headless },
100
- defaults: {
101
- timeoutMs: options?.timeoutMs,
102
- retries: options?.retries,
103
- },
104
- options: { printApiLogs },
105
- specs: specEntries.length
106
- ? (registry) => loadSpecRegistrations(specEntries, metadataPath, registry)
107
- : undefined,
108
- });
94
+ const webhookUrl = process.env.SOLIDCTL_WEBHOOK_URL;
95
+ const runName = options?.runName ?? `run-${Date.now()}`;
96
+ const reporter = webhookUrl
97
+ ? new WebhookReporter(webhookUrl, runName)
98
+ : new ConsoleReporter();
99
+
100
+ try {
101
+ await runFromMetadata({
102
+ metadata: metadata as TestingMetadata,
103
+ scenarioIds,
104
+ includeTags,
105
+ skipScenarioIds,
106
+ reporter,
107
+ api: apiBaseUrl ? { baseUrl: apiBaseUrl } : undefined,
108
+ ui: { baseUrl: uiBaseUrl, headless },
109
+ defaults: {
110
+ timeoutMs: options?.timeoutMs,
111
+ retries: options?.retries,
112
+ },
113
+ options: { printApiLogs },
114
+ specs: specEntries.length
115
+ ? (registry) => loadSpecRegistrations(specEntries, metadataPath, registry)
116
+ : undefined,
117
+ });
118
+ } catch (err: any) {
119
+ this.logger.error('Run tests command failed');
120
+ console.error('Run tests command failed');
121
+ process.exitCode = 1;
122
+ } finally {
123
+ if (reporter instanceof WebhookReporter) {
124
+ await reporter.flush(Number(process.exitCode ?? 0));
125
+ }
126
+ }
127
+ return;
109
128
  } catch (err: any) {
110
129
  this.logger.error('Run tests command failed');
111
130
  console.error('Run tests command failed');
@@ -223,6 +242,15 @@ export class TestRunCommand extends CommandRunner {
223
242
  parseRetries(val: string): number {
224
243
  return Number(val);
225
244
  }
245
+
246
+ @Option({
247
+ flags: '--run-name [name]',
248
+ description: 'Logical name for this test run (used by webhook reporter).',
249
+ required: false,
250
+ })
251
+ parseRunName(val: string): string {
252
+ return val;
253
+ }
226
254
  }
227
255
 
228
256
  function splitCsv(value?: string): string[] | undefined {
@@ -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) { }
@@ -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 {
@@ -0,0 +1,70 @@
1
+ import { Body, Controller, Delete, Get, Param, Patch, Post, Put, Query, UploadedFiles, UseInterceptors } from '@nestjs/common';
2
+ import { AnyFilesInterceptor } from '@nestjs/platform-express';
3
+ import { ApiBearerAuth, ApiQuery, ApiTags } from '@nestjs/swagger';
4
+ import { CreateMcpAuditLogDto } from 'src/dtos/create-mcp-audit-log.dto';
5
+ import { UpdateMcpAuditLogDto } from 'src/dtos/update-mcp-audit-log.dto';
6
+ import { McpAuditLogService } from 'src/services/mcp-audit-log.service';
7
+
8
+ @ApiTags('Solid Core')
9
+ @Controller('mcp-audit-log')
10
+ export class McpAuditLogController {
11
+ constructor(private readonly service: McpAuditLogService) {}
12
+
13
+ @ApiBearerAuth('jwt')
14
+ @Post()
15
+ @UseInterceptors(AnyFilesInterceptor())
16
+ create(@Body() createDto: CreateMcpAuditLogDto, @UploadedFiles() files: Array<Express.Multer.File>) {
17
+ return this.service.create(createDto, files);
18
+ }
19
+
20
+ @ApiBearerAuth('jwt')
21
+ @Post('/bulk')
22
+ @UseInterceptors(AnyFilesInterceptor())
23
+ insertMany(@Body() createDtos: CreateMcpAuditLogDto[], @UploadedFiles() filesArray: Express.Multer.File[][] = []) {
24
+ return this.service.insertMany(createDtos, filesArray);
25
+ }
26
+
27
+ @ApiBearerAuth('jwt')
28
+ @Put(':id')
29
+ @UseInterceptors(AnyFilesInterceptor())
30
+ update(@Param('id') id: number, @Body() updateDto: UpdateMcpAuditLogDto, @UploadedFiles() files: Array<Express.Multer.File>) {
31
+ return this.service.update(id, updateDto, files);
32
+ }
33
+
34
+ @ApiBearerAuth('jwt')
35
+ @Patch(':id')
36
+ @UseInterceptors(AnyFilesInterceptor())
37
+ partialUpdate(@Param('id') id: number, @Body() updateDto: UpdateMcpAuditLogDto, @UploadedFiles() files: Array<Express.Multer.File>) {
38
+ return this.service.update(id, updateDto, files, true);
39
+ }
40
+
41
+ @ApiBearerAuth('jwt')
42
+ @ApiQuery({ name: 'limit', required: false, type: Number })
43
+ @ApiQuery({ name: 'offset', required: false, type: Number })
44
+ @ApiQuery({ name: 'fields', required: false, type: Array })
45
+ @ApiQuery({ name: 'sort', required: false, type: Array })
46
+ @ApiQuery({ name: 'populate', required: false, type: Array })
47
+ @ApiQuery({ name: 'filters', required: false, type: Array })
48
+ @Get()
49
+ findMany(@Query() query: any) {
50
+ return this.service.find(query);
51
+ }
52
+
53
+ @ApiBearerAuth('jwt')
54
+ @Get(':id')
55
+ findOne(@Param('id') id: string, @Query() query: any) {
56
+ return this.service.findOne(+id, query);
57
+ }
58
+
59
+ @ApiBearerAuth('jwt')
60
+ @Delete('/bulk')
61
+ deleteMany(@Body() ids: number[]) {
62
+ return this.service.deleteMany(ids);
63
+ }
64
+
65
+ @ApiBearerAuth('jwt')
66
+ @Delete(':id')
67
+ delete(@Param('id') id: number) {
68
+ return this.service.delete(id);
69
+ }
70
+ }
@@ -9,7 +9,7 @@ import { ActiveUserData } from 'src/interfaces/active-user-data.interface';
9
9
  import { SolidRequestContextDto } from 'src/dtos/solid-request-context.dto';
10
10
  import { SolidRequestContextDecorator } from 'src/decorators/solid-request-context.decorator';
11
11
 
12
- @ApiTags('App Builder')
12
+ @ApiTags('Solid Core')
13
13
  @Controller('menu-item-metadata') //FIXME: Change this to the model plural name
14
14
  export class MenuItemMetadataController {
15
15
  constructor(private readonly service: MenuItemMetadataService) { }
@@ -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/microsoft")
29
29
  export class MicrosoftAuthenticationController {
30
30
  constructor(
@@ -92,7 +92,7 @@ export class ModelMetadataController {
92
92
  @ApiBearerAuth("jwt")
93
93
  @Post(':id/generate-code')
94
94
  generateCode(@Param('id', ParseIntPipe) id: number) {
95
- return this.modelMetadataService.handleGenerateCode({ modelId: id });
95
+ return this.modelMetadataService.generateCodeViaCtl(id);
96
96
  }
97
97
 
98
98
  @ApiBearerAuth("jwt")
@@ -62,7 +62,7 @@ export class ModuleMetadataController {
62
62
  @ApiBearerAuth("jwt")
63
63
  @Post(':id/generate-code')
64
64
  generateCode(@Param('id', ParseIntPipe) id: number) {
65
- return this.moduleMetadataService.generateCode({ moduleId: id });
65
+ return this.moduleMetadataService.generateCodeViaCtl(id);
66
66
  }
67
67
 
68
68
 
@@ -7,7 +7,7 @@ import { MqMessageQueueService } from '../services/mq-message-queue.service';
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('Queues')
10
+ @ApiTags('Solid Core')
11
11
  @Controller('mq-message-queue') //FIXME: Change this to the model plural name
12
12
  export class MqMessageQueueController {
13
13
  constructor(protected readonly service: MqMessageQueueService) { }
@@ -7,7 +7,7 @@ import { AnyFilesInterceptor } from '@nestjs/platform-express';
7
7
  import { SolidRequestContextDecorator } from 'src/decorators/solid-request-context.decorator';
8
8
  import { SolidRequestContextDto } from 'src/dtos/solid-request-context.dto';
9
9
 
10
- @ApiTags('Queues')
10
+ @ApiTags('Solid Core')
11
11
  @Controller('mq-message') //FIXME: Change this to the model plural name
12
12
  export class MqMessageController {
13
13
  constructor(protected readonly service: MqMessageService) { }
@@ -20,37 +20,37 @@ export class UserController {
20
20
  @ApiBearerAuth("jwt")
21
21
  @Post()
22
22
  @UseInterceptors(AnyFilesInterceptor())
23
- create(@Body() createDto: CreateUserDto, @UploadedFiles() files: Array<Express.Multer.File>,@SolidRequestContextDecorator() solidRequestContext:SolidRequestContextDto) {
24
- return this.service.create(createDto, files,solidRequestContext);
23
+ create(@Body() createDto: CreateUserDto, @UploadedFiles() files: Array<Express.Multer.File>, @SolidRequestContextDecorator() solidRequestContext: SolidRequestContextDto) {
24
+ return this.service.create(createDto, files, solidRequestContext);
25
25
  }
26
26
 
27
27
  @ApiBearerAuth("jwt")
28
28
  @Post('/bulk')
29
29
  @UseInterceptors(AnyFilesInterceptor())
30
- insertMany(@Body() createDtos: CreateUserDto[], @UploadedFiles() filesArray: Express.Multer.File[][] = [],@SolidRequestContextDecorator() solidRequestContext:SolidRequestContextDto) {
31
- return this.service.insertMany(createDtos, filesArray,solidRequestContext);
30
+ insertMany(@Body() createDtos: CreateUserDto[], @UploadedFiles() filesArray: Express.Multer.File[][] = [], @SolidRequestContextDecorator() solidRequestContext: SolidRequestContextDto) {
31
+ return this.service.insertMany(createDtos, filesArray, solidRequestContext);
32
32
  }
33
33
 
34
34
 
35
35
  @ApiBearerAuth("jwt")
36
36
  @Put(':id')
37
37
  @UseInterceptors(AnyFilesInterceptor())
38
- update(@Param('id') id: number, @Body() updateDto: UpdateUserDto, @UploadedFiles() files: Array<Express.Multer.File> ,@SolidRequestContextDecorator() solidRequestContext:SolidRequestContextDto) {
39
- return this.service.update(id, updateDto, files,false,solidRequestContext);
38
+ update(@Param('id') id: number, @Body() updateDto: UpdateUserDto, @UploadedFiles() files: Array<Express.Multer.File>, @SolidRequestContextDecorator() solidRequestContext: SolidRequestContextDto) {
39
+ return this.service.update(id, updateDto, files, false, solidRequestContext);
40
40
  }
41
41
 
42
42
 
43
43
  @ApiBearerAuth("jwt")
44
44
  @Patch(':id/update-user-and-roles')
45
- updateUser(@Param('id') id: number,@Body() updateDto: any, @UploadedFiles() files: Array<Express.Multer.File>, @SolidRequestContextDecorator() solidRequestContext:SolidRequestContextDto) {
46
- return this.service.updateUser(id, updateDto, files,solidRequestContext);
45
+ updateUser(@Param('id') id: number, @Body() updateDto: any, @UploadedFiles() files: Array<Express.Multer.File>, @SolidRequestContextDecorator() solidRequestContext: SolidRequestContextDto) {
46
+ return this.service.updateUser(id, updateDto, files, solidRequestContext);
47
47
  }
48
48
 
49
49
 
50
50
  @ApiBearerAuth("jwt")
51
51
  @Patch(':id')
52
52
  @UseInterceptors(AnyFilesInterceptor())
53
- partialUpdate(@Param('id') id: number, @Body() updateDto: UpdateUserDto, @UploadedFiles() files: Array<Express.Multer.File>,@SolidRequestContextDecorator() solidRequestContext:SolidRequestContextDto) {
53
+ partialUpdate(@Param('id') id: number, @Body() updateDto: UpdateUserDto, @UploadedFiles() files: Array<Express.Multer.File>, @SolidRequestContextDecorator() solidRequestContext: SolidRequestContextDto) {
54
54
  return this.service.update(id, updateDto, files, true, solidRequestContext);
55
55
  }
56
56
 
@@ -67,8 +67,8 @@ export class UserController {
67
67
  @ApiQuery({ name: 'populateMedia', required: false, type: Array })
68
68
  @ApiQuery({ name: 'filters', required: false, type: Array })
69
69
  @Get()
70
- async findMany(@Query() query: any, @SolidRequestContextDecorator() solidRequestContext:SolidRequestContextDto) {
71
- return this.service.find(query,solidRequestContext);
70
+ async findMany(@Query() query: any, @SolidRequestContextDecorator() solidRequestContext: SolidRequestContextDto) {
71
+ return this.service.find(query, solidRequestContext);
72
72
  }
73
73
 
74
74
  @ApiBearerAuth("jwt")
@@ -81,18 +81,18 @@ export class UserController {
81
81
 
82
82
  @ApiBearerAuth("jwt")
83
83
  @Get(':id')
84
- async findOne(@Param('id') id: string, @Query() query: any,@SolidRequestContextDecorator() solidRequestContext:SolidRequestContextDto) {
85
- return this.service.findOne(+id, query,solidRequestContext);
84
+ async findOne(@Param('id') id: string, @Query() query: any, @SolidRequestContextDecorator() solidRequestContext: SolidRequestContextDto) {
85
+ return this.service.findOne(+id, query, solidRequestContext);
86
86
  }
87
87
 
88
88
  @Delete('/bulk')
89
- async deleteMany(@Body() ids: number[],@SolidRequestContextDecorator() solidRequestContext:SolidRequestContextDto) {
90
- return this.service.deleteMany(ids,solidRequestContext);
89
+ async deleteMany(@Body() ids: number[], @SolidRequestContextDecorator() solidRequestContext: SolidRequestContextDto) {
90
+ return this.service.deleteMany(ids, solidRequestContext);
91
91
  }
92
92
 
93
93
  @ApiBearerAuth("jwt")
94
94
  @Delete(':id')
95
- async delete(@Param('id') id: number,@SolidRequestContextDecorator() solidRequestContext:SolidRequestContextDto) {
95
+ async delete(@Param('id') id: number, @SolidRequestContextDecorator() solidRequestContext: SolidRequestContextDto) {
96
96
  return this.service.delete(id, solidRequestContext);
97
97
  }
98
98
 
@@ -9,7 +9,7 @@ import { SolidRequestContextDto } from 'src/dtos/solid-request-context.dto';
9
9
  import { ActiveUser } from 'src/decorators/active-user.decorator';
10
10
  import { ActiveUserData } from 'src/interfaces/active-user-data.interface';
11
11
 
12
- @ApiTags('App Builder')
12
+ @ApiTags('Solid Core')
13
13
  @Controller('view-metadata') //FIXME: Change this to the model plural name
14
14
  export class ViewMetadataController {
15
15
  constructor(private readonly service: ViewMetadataService) { }
@@ -0,0 +1,84 @@
1
+ import { ApiProperty } from '@nestjs/swagger';
2
+ import { IsDate, IsInt, IsNotEmpty, IsNumber, IsOptional, IsString } from 'class-validator';
3
+
4
+ export class CreateMcpAuditLogDto {
5
+ @IsOptional()
6
+ @IsInt()
7
+ @ApiProperty()
8
+ userId: number;
9
+
10
+ @IsOptional()
11
+ @IsInt()
12
+ @ApiProperty()
13
+ apiKeyId: number;
14
+
15
+ @IsOptional()
16
+ @IsString()
17
+ @ApiProperty()
18
+ username: string;
19
+
20
+ @IsNotEmpty()
21
+ @IsString()
22
+ @ApiProperty()
23
+ transport: string;
24
+
25
+ @IsOptional()
26
+ @IsString()
27
+ @ApiProperty()
28
+ mcpSessionId: string;
29
+
30
+ @IsOptional()
31
+ @IsString()
32
+ @ApiProperty()
33
+ clientAddr: string;
34
+
35
+ @IsNotEmpty()
36
+ @IsString()
37
+ @ApiProperty()
38
+ method: string;
39
+
40
+ @IsOptional()
41
+ @IsString()
42
+ @ApiProperty()
43
+ requestId: string;
44
+
45
+ @IsOptional()
46
+ @IsString()
47
+ @ApiProperty()
48
+ toolName: string;
49
+
50
+ @IsOptional()
51
+ @IsString()
52
+ @ApiProperty()
53
+ requestParams: string;
54
+
55
+ @IsNotEmpty()
56
+ @IsString()
57
+ @ApiProperty()
58
+ status: string;
59
+
60
+ @IsOptional()
61
+ @IsString()
62
+ @ApiProperty()
63
+ responseResult: string;
64
+
65
+ @IsOptional()
66
+ @IsInt()
67
+ @ApiProperty()
68
+ errorCode: number;
69
+
70
+ @IsOptional()
71
+ @IsString()
72
+ @ApiProperty()
73
+ errorMessage: string;
74
+
75
+ @IsOptional()
76
+ @IsNumber()
77
+ @ApiProperty()
78
+ durationMs: number;
79
+
80
+ @IsOptional()
81
+ @IsDate()
82
+ @ApiProperty()
83
+ createdAt: Date;
84
+ }
@@ -0,0 +1,83 @@
1
+ import { ApiProperty } from '@nestjs/swagger';
2
+ import { IsInt, IsNumber, IsOptional, IsString } from 'class-validator';
3
+
4
+ export class UpdateMcpAuditLogDto {
5
+ @IsOptional()
6
+ @IsInt()
7
+ id: number;
8
+
9
+ @IsOptional()
10
+ @IsInt()
11
+ @ApiProperty()
12
+ userId: number;
13
+
14
+ @IsOptional()
15
+ @IsInt()
16
+ @ApiProperty()
17
+ apiKeyId: number;
18
+
19
+ @IsOptional()
20
+ @IsString()
21
+ @ApiProperty()
22
+ username: string;
23
+
24
+ @IsOptional()
25
+ @IsString()
26
+ @ApiProperty()
27
+ transport: string;
28
+
29
+ @IsOptional()
30
+ @IsString()
31
+ @ApiProperty()
32
+ mcpSessionId: string;
33
+
34
+ @IsOptional()
35
+ @IsString()
36
+ @ApiProperty()
37
+ clientAddr: string;
38
+
39
+ @IsOptional()
40
+ @IsString()
41
+ @ApiProperty()
42
+ method: string;
43
+
44
+ @IsOptional()
45
+ @IsString()
46
+ @ApiProperty()
47
+ requestId: string;
48
+
49
+ @IsOptional()
50
+ @IsString()
51
+ @ApiProperty()
52
+ toolName: string;
53
+
54
+ @IsOptional()
55
+ @IsString()
56
+ @ApiProperty()
57
+ requestParams: string;
58
+
59
+ @IsOptional()
60
+ @IsString()
61
+ @ApiProperty()
62
+ status: string;
63
+
64
+ @IsOptional()
65
+ @IsString()
66
+ @ApiProperty()
67
+ responseResult: string;
68
+
69
+ @IsOptional()
70
+ @IsInt()
71
+ @ApiProperty()
72
+ errorCode: number;
73
+
74
+ @IsOptional()
75
+ @IsString()
76
+ @ApiProperty()
77
+ errorMessage: string;
78
+
79
+ @IsOptional()
80
+ @IsNumber()
81
+ @ApiProperty()
82
+ durationMs: number;
83
+ }
@@ -161,4 +161,8 @@ export class UpdateUserDto {
161
161
  @IsOptional()
162
162
  @ApiProperty()
163
163
  userViewMetadataCommand: string;
164
+ @IsOptional()
165
+ @IsInt()
166
+ @ApiProperty()
167
+ failedLoginAttempts: number;
164
168
  }