@solidxai/core 0.1.1 → 0.1.4

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 (295) hide show
  1. package/dist/commands/run-tests.command.d.ts +37 -0
  2. package/dist/commands/run-tests.command.d.ts.map +1 -0
  3. package/dist/commands/run-tests.command.js +345 -0
  4. package/dist/commands/run-tests.command.js.map +1 -0
  5. package/dist/commands/test-data.command.d.ts +6 -6
  6. package/dist/commands/test-data.command.d.ts.map +1 -1
  7. package/dist/commands/test-data.command.js +25 -25
  8. package/dist/commands/test-data.command.js.map +1 -1
  9. package/dist/commands/test.command.d.ts +5 -0
  10. package/dist/commands/test.command.d.ts.map +1 -0
  11. package/dist/commands/test.command.js +26 -0
  12. package/dist/commands/test.command.js.map +1 -0
  13. package/dist/controllers/service.controller.d.ts +0 -9
  14. package/dist/controllers/service.controller.d.ts.map +1 -1
  15. package/dist/controllers/service.controller.js +0 -45
  16. package/dist/controllers/service.controller.js.map +1 -1
  17. package/dist/dtos/basic-filters.dto.d.ts.map +1 -1
  18. package/dist/dtos/basic-filters.dto.js.map +1 -1
  19. package/dist/dtos/create-user.dto.d.ts +1 -0
  20. package/dist/dtos/create-user.dto.d.ts.map +1 -1
  21. package/dist/dtos/create-user.dto.js +2 -1
  22. package/dist/dtos/create-user.dto.js.map +1 -1
  23. package/dist/helpers/schematic.service.js +1 -1
  24. package/dist/helpers/schematic.service.js.map +1 -1
  25. package/dist/index.d.ts +3 -0
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +3 -0
  28. package/dist/index.js.map +1 -1
  29. package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
  30. package/dist/seeders/module-metadata-seeder.service.js +3 -21
  31. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  32. package/dist/seeders/module-test-data.service.d.ts.map +1 -1
  33. package/dist/seeders/module-test-data.service.js +3 -3
  34. package/dist/seeders/module-test-data.service.js.map +1 -1
  35. package/dist/seeders/seed-data/solid-core-metadata.json +34 -9
  36. package/dist/services/chatter-message.service.d.ts +2 -0
  37. package/dist/services/chatter-message.service.d.ts.map +1 -1
  38. package/dist/services/chatter-message.service.js +18 -2
  39. package/dist/services/chatter-message.service.js.map +1 -1
  40. package/dist/services/crud.service.d.ts.map +1 -1
  41. package/dist/services/crud.service.js.map +1 -1
  42. package/dist/services/model-metadata.service.d.ts.map +1 -1
  43. package/dist/services/model-metadata.service.js +2 -1
  44. package/dist/services/model-metadata.service.js.map +1 -1
  45. package/dist/services/module-metadata.service.d.ts.map +1 -1
  46. package/dist/services/module-metadata.service.js +2 -1
  47. package/dist/services/module-metadata.service.js.map +1 -1
  48. package/dist/services/queues/common.d.ts +3 -0
  49. package/dist/services/queues/common.d.ts.map +1 -0
  50. package/dist/services/queues/common.js +39 -0
  51. package/dist/services/queues/common.js.map +1 -0
  52. package/dist/services/queues/database-publisher.service.d.ts.map +1 -1
  53. package/dist/services/queues/database-publisher.service.js +3 -1
  54. package/dist/services/queues/database-publisher.service.js.map +1 -1
  55. package/dist/services/queues/database-subscriber.service.d.ts.map +1 -1
  56. package/dist/services/queues/database-subscriber.service.js +5 -2
  57. package/dist/services/queues/database-subscriber.service.js.map +1 -1
  58. package/dist/services/queues/rabbitmq-publisher.service.d.ts.map +1 -1
  59. package/dist/services/queues/rabbitmq-publisher.service.js +13 -6
  60. package/dist/services/queues/rabbitmq-publisher.service.js.map +1 -1
  61. package/dist/services/queues/rabbitmq-subscriber.service.d.ts +14 -1
  62. package/dist/services/queues/rabbitmq-subscriber.service.d.ts.map +1 -1
  63. package/dist/services/queues/rabbitmq-subscriber.service.js +197 -65
  64. package/dist/services/queues/rabbitmq-subscriber.service.js.map +1 -1
  65. package/dist/solid-core.module.d.ts.map +1 -1
  66. package/dist/solid-core.module.js +4 -0
  67. package/dist/solid-core.module.js.map +1 -1
  68. package/dist/testing/__examples__/register-example-specs.d.ts +3 -0
  69. package/dist/testing/__examples__/register-example-specs.d.ts.map +1 -0
  70. package/dist/testing/__examples__/register-example-specs.js +8 -0
  71. package/dist/testing/__examples__/register-example-specs.js.map +1 -0
  72. package/dist/testing/__examples__/specs/custom-health.spec.d.ts +17 -0
  73. package/dist/testing/__examples__/specs/custom-health.spec.d.ts.map +1 -0
  74. package/dist/testing/__examples__/specs/custom-health.spec.js +30 -0
  75. package/dist/testing/__examples__/specs/custom-health.spec.js.map +1 -0
  76. package/dist/testing/adapters/api/api-adapter.d.ts +9 -0
  77. package/dist/testing/adapters/api/api-adapter.d.ts.map +1 -0
  78. package/dist/testing/adapters/api/api-adapter.js +76 -0
  79. package/dist/testing/adapters/api/api-adapter.js.map +1 -0
  80. package/dist/testing/adapters/api/api.types.d.ts +14 -0
  81. package/dist/testing/adapters/api/api.types.d.ts.map +1 -0
  82. package/dist/testing/adapters/api/api.types.js +3 -0
  83. package/dist/testing/adapters/api/api.types.js.map +1 -0
  84. package/dist/testing/adapters/ui/playwright-adapter.d.ts +14 -0
  85. package/dist/testing/adapters/ui/playwright-adapter.d.ts.map +1 -0
  86. package/dist/testing/adapters/ui/playwright-adapter.js +47 -0
  87. package/dist/testing/adapters/ui/playwright-adapter.js.map +1 -0
  88. package/dist/testing/adapters/ui/ui.types.d.ts +5 -0
  89. package/dist/testing/adapters/ui/ui.types.d.ts.map +1 -0
  90. package/dist/testing/adapters/ui/ui.types.js +3 -0
  91. package/dist/testing/adapters/ui/ui.types.js.map +1 -0
  92. package/dist/testing/contracts/runtime-context.types.d.ts +35 -0
  93. package/dist/testing/contracts/runtime-context.types.d.ts.map +1 -0
  94. package/dist/testing/contracts/runtime-context.types.js +3 -0
  95. package/dist/testing/contracts/runtime-context.types.js.map +1 -0
  96. package/dist/testing/contracts/test-spec.types.d.ts +21 -0
  97. package/dist/testing/contracts/test-spec.types.d.ts.map +1 -0
  98. package/dist/testing/contracts/test-spec.types.js +3 -0
  99. package/dist/testing/contracts/test-spec.types.js.map +1 -0
  100. package/dist/testing/contracts/testing-metadata.types.d.ts +41 -0
  101. package/dist/testing/contracts/testing-metadata.types.d.ts.map +1 -0
  102. package/dist/testing/contracts/testing-metadata.types.js +3 -0
  103. package/dist/testing/contracts/testing-metadata.types.js.map +1 -0
  104. package/dist/testing/core/interpolation.d.ts +4 -0
  105. package/dist/testing/core/interpolation.d.ts.map +1 -0
  106. package/dist/testing/core/interpolation.js +180 -0
  107. package/dist/testing/core/interpolation.js.map +1 -0
  108. package/dist/testing/core/normalize-steps.d.ts +7 -0
  109. package/dist/testing/core/normalize-steps.d.ts.map +1 -0
  110. package/dist/testing/core/normalize-steps.js +20 -0
  111. package/dist/testing/core/normalize-steps.js.map +1 -0
  112. package/dist/testing/core/resource-store.d.ts +8 -0
  113. package/dist/testing/core/resource-store.d.ts.map +1 -0
  114. package/dist/testing/core/resource-store.js +41 -0
  115. package/dist/testing/core/resource-store.js.map +1 -0
  116. package/dist/testing/core/spec-registry.d.ts +10 -0
  117. package/dist/testing/core/spec-registry.d.ts.map +1 -0
  118. package/dist/testing/core/spec-registry.js +32 -0
  119. package/dist/testing/core/spec-registry.js.map +1 -0
  120. package/dist/testing/core/step-registry.d.ts +10 -0
  121. package/dist/testing/core/step-registry.d.ts.map +1 -0
  122. package/dist/testing/core/step-registry.js +26 -0
  123. package/dist/testing/core/step-registry.js.map +1 -0
  124. package/dist/testing/core/testing-engine.d.ts +14 -0
  125. package/dist/testing/core/testing-engine.d.ts.map +1 -0
  126. package/dist/testing/core/testing-engine.js +97 -0
  127. package/dist/testing/core/testing-engine.js.map +1 -0
  128. package/dist/testing/core/timeout.d.ts +2 -0
  129. package/dist/testing/core/timeout.d.ts.map +1 -0
  130. package/dist/testing/core/timeout.js +18 -0
  131. package/dist/testing/core/timeout.js.map +1 -0
  132. package/dist/testing/reporter/attachments.d.ts +4 -0
  133. package/dist/testing/reporter/attachments.d.ts.map +1 -0
  134. package/dist/testing/reporter/attachments.js +25 -0
  135. package/dist/testing/reporter/attachments.js.map +1 -0
  136. package/dist/testing/reporter/console-reporter.d.ts +45 -0
  137. package/dist/testing/reporter/console-reporter.d.ts.map +1 -0
  138. package/dist/testing/reporter/console-reporter.js +189 -0
  139. package/dist/testing/reporter/console-reporter.js.map +1 -0
  140. package/dist/testing/reporter/reporter.types.d.ts +37 -0
  141. package/dist/testing/reporter/reporter.types.d.ts.map +1 -0
  142. package/dist/testing/reporter/reporter.types.js +3 -0
  143. package/dist/testing/reporter/reporter.types.js.map +1 -0
  144. package/dist/testing/runner/lifecycle.d.ts +9 -0
  145. package/dist/testing/runner/lifecycle.d.ts.map +1 -0
  146. package/dist/testing/runner/lifecycle.js +33 -0
  147. package/dist/testing/runner/lifecycle.js.map +1 -0
  148. package/dist/testing/runner/run-from-metadata.d.ts +24 -0
  149. package/dist/testing/runner/run-from-metadata.d.ts.map +1 -0
  150. package/dist/testing/runner/run-from-metadata.js +70 -0
  151. package/dist/testing/runner/run-from-metadata.js.map +1 -0
  152. package/dist/testing/runner/scenario-filter.d.ts +9 -0
  153. package/dist/testing/runner/scenario-filter.d.ts.map +1 -0
  154. package/dist/testing/runner/scenario-filter.js +22 -0
  155. package/dist/testing/runner/scenario-filter.js.map +1 -0
  156. package/dist/testing/steps/api/auth.step.d.ts +3 -0
  157. package/dist/testing/steps/api/auth.step.d.ts.map +1 -0
  158. package/dist/testing/steps/api/auth.step.js +38 -0
  159. package/dist/testing/steps/api/auth.step.js.map +1 -0
  160. package/dist/testing/steps/api/index.d.ts +3 -0
  161. package/dist/testing/steps/api/index.d.ts.map +1 -0
  162. package/dist/testing/steps/api/index.js +10 -0
  163. package/dist/testing/steps/api/index.js.map +1 -0
  164. package/dist/testing/steps/api/request.step.d.ts +3 -0
  165. package/dist/testing/steps/api/request.step.d.ts.map +1 -0
  166. package/dist/testing/steps/api/request.step.js +281 -0
  167. package/dist/testing/steps/api/request.step.js.map +1 -0
  168. package/dist/testing/steps/assert/http.step.d.ts +3 -0
  169. package/dist/testing/steps/assert/http.step.d.ts.map +1 -0
  170. package/dist/testing/steps/assert/http.step.js +27 -0
  171. package/dist/testing/steps/assert/http.step.js.map +1 -0
  172. package/dist/testing/steps/assert/index.d.ts +3 -0
  173. package/dist/testing/steps/assert/index.d.ts.map +1 -0
  174. package/dist/testing/steps/assert/index.js +12 -0
  175. package/dist/testing/steps/assert/index.js.map +1 -0
  176. package/dist/testing/steps/assert/jsonpath.step.d.ts +3 -0
  177. package/dist/testing/steps/assert/jsonpath.step.d.ts.map +1 -0
  178. package/dist/testing/steps/assert/jsonpath.step.js +40 -0
  179. package/dist/testing/steps/assert/jsonpath.step.js.map +1 -0
  180. package/dist/testing/steps/assert/primitives.step.d.ts +3 -0
  181. package/dist/testing/steps/assert/primitives.step.d.ts.map +1 -0
  182. package/dist/testing/steps/assert/primitives.step.js +43 -0
  183. package/dist/testing/steps/assert/primitives.step.js.map +1 -0
  184. package/dist/testing/steps/test/index.d.ts +3 -0
  185. package/dist/testing/steps/test/index.d.ts.map +1 -0
  186. package/dist/testing/steps/test/index.js +8 -0
  187. package/dist/testing/steps/test/index.js.map +1 -0
  188. package/dist/testing/steps/test/test-spec.step.d.ts +3 -0
  189. package/dist/testing/steps/test/test-spec.step.d.ts.map +1 -0
  190. package/dist/testing/steps/test/test-spec.step.js +41 -0
  191. package/dist/testing/steps/test/test-spec.step.js.map +1 -0
  192. package/dist/testing/steps/ui/actions.step.d.ts +3 -0
  193. package/dist/testing/steps/ui/actions.step.d.ts.map +1 -0
  194. package/dist/testing/steps/ui/actions.step.js +31 -0
  195. package/dist/testing/steps/ui/actions.step.js.map +1 -0
  196. package/dist/testing/steps/ui/assertions.step.d.ts +3 -0
  197. package/dist/testing/steps/ui/assertions.step.d.ts.map +1 -0
  198. package/dist/testing/steps/ui/assertions.step.js +41 -0
  199. package/dist/testing/steps/ui/assertions.step.js.map +1 -0
  200. package/dist/testing/steps/ui/form.step.d.ts +3 -0
  201. package/dist/testing/steps/ui/form.step.d.ts.map +1 -0
  202. package/dist/testing/steps/ui/form.step.js +34 -0
  203. package/dist/testing/steps/ui/form.step.js.map +1 -0
  204. package/dist/testing/steps/ui/index.d.ts +3 -0
  205. package/dist/testing/steps/ui/index.d.ts.map +1 -0
  206. package/dist/testing/steps/ui/index.js +14 -0
  207. package/dist/testing/steps/ui/index.js.map +1 -0
  208. package/dist/testing/steps/ui/navigation.step.d.ts +3 -0
  209. package/dist/testing/steps/ui/navigation.step.d.ts.map +1 -0
  210. package/dist/testing/steps/ui/navigation.step.js +39 -0
  211. package/dist/testing/steps/ui/navigation.step.js.map +1 -0
  212. package/dist/testing/steps/util/index.d.ts +3 -0
  213. package/dist/testing/steps/util/index.d.ts.map +1 -0
  214. package/dist/testing/steps/util/index.js +12 -0
  215. package/dist/testing/steps/util/index.js.map +1 -0
  216. package/dist/testing/steps/util/log.step.d.ts +3 -0
  217. package/dist/testing/steps/util/log.step.d.ts.map +1 -0
  218. package/dist/testing/steps/util/log.step.js +18 -0
  219. package/dist/testing/steps/util/log.step.js.map +1 -0
  220. package/dist/testing/steps/util/require.step.d.ts +3 -0
  221. package/dist/testing/steps/util/require.step.d.ts.map +1 -0
  222. package/dist/testing/steps/util/require.step.js +16 -0
  223. package/dist/testing/steps/util/require.step.js.map +1 -0
  224. package/dist/testing/steps/util/sleep.step.d.ts +3 -0
  225. package/dist/testing/steps/util/sleep.step.d.ts.map +1 -0
  226. package/dist/testing/steps/util/sleep.step.js +13 -0
  227. package/dist/testing/steps/util/sleep.step.js.map +1 -0
  228. package/docs/test-data-workflow.md +51 -11
  229. package/package.json +4 -2
  230. package/src/commands/run-tests.command.ts +278 -0
  231. package/src/commands/test-data.command.ts +26 -26
  232. package/src/commands/test.command.ts +14 -0
  233. package/src/controllers/service.controller.ts +58 -59
  234. package/src/dtos/basic-filters.dto.ts +0 -2
  235. package/src/dtos/create-user.dto.ts +1 -0
  236. package/src/helpers/schematic.service.ts +1 -1
  237. package/src/index.ts +3 -0
  238. package/src/seeders/module-metadata-seeder.service.ts +5 -25
  239. package/src/seeders/module-test-data.service.ts +5 -3
  240. package/src/seeders/seed-data/solid-core-metadata.json +34 -9
  241. package/src/services/chatter-message.service.ts +18 -1
  242. package/src/services/crud.service.ts +1 -0
  243. package/src/services/model-metadata.service.ts +2 -1
  244. package/src/services/module-metadata.service.ts +2 -1
  245. package/src/services/queues/common.ts +75 -0
  246. package/src/services/queues/database-publisher.service.ts +4 -1
  247. package/src/services/queues/database-subscriber.service.ts +5 -3
  248. package/src/services/queues/rabbitmq-publisher.service.ts +17 -7
  249. package/src/services/queues/rabbitmq-subscriber.service.ts +223 -95
  250. package/src/solid-core.module.ts +4 -0
  251. package/src/testing/README.md +364 -0
  252. package/src/testing/__examples__/register-example-specs.ts +6 -0
  253. package/src/testing/__examples__/specs/custom-health.spec.ts +29 -0
  254. package/src/testing/__examples__/testing.sample.json +82 -0
  255. package/src/testing/adapters/api/api-adapter.ts +85 -0
  256. package/src/testing/adapters/api/api.types.ts +15 -0
  257. package/src/testing/adapters/ui/playwright-adapter.ts +54 -0
  258. package/src/testing/adapters/ui/ui.types.ts +4 -0
  259. package/src/testing/contracts/runtime-context.types.ts +36 -0
  260. package/src/testing/contracts/test-spec.types.ts +24 -0
  261. package/src/testing/contracts/testing-metadata.types.ts +46 -0
  262. package/src/testing/core/interpolation.ts +189 -0
  263. package/src/testing/core/normalize-steps.ts +21 -0
  264. package/src/testing/core/resource-store.ts +38 -0
  265. package/src/testing/core/spec-registry.ts +33 -0
  266. package/src/testing/core/step-registry.ts +27 -0
  267. package/src/testing/core/testing-engine.ts +127 -0
  268. package/src/testing/core/timeout.ts +19 -0
  269. package/src/testing/reporter/attachments.ts +25 -0
  270. package/src/testing/reporter/console-reporter.ts +229 -0
  271. package/src/testing/reporter/reporter.types.ts +36 -0
  272. package/src/testing/runner/lifecycle.ts +31 -0
  273. package/src/testing/runner/run-from-metadata.ts +87 -0
  274. package/src/testing/runner/scenario-filter.ts +33 -0
  275. package/src/testing/steps/api/auth.step.ts +66 -0
  276. package/src/testing/steps/api/index.ts +10 -0
  277. package/src/testing/steps/api/request.step.ts +358 -0
  278. package/src/testing/steps/assert/http.step.ts +33 -0
  279. package/src/testing/steps/assert/index.ts +12 -0
  280. package/src/testing/steps/assert/jsonpath.step.ts +50 -0
  281. package/src/testing/steps/assert/primitives.step.ts +69 -0
  282. package/src/testing/steps/test/index.ts +8 -0
  283. package/src/testing/steps/test/test-spec.step.ts +52 -0
  284. package/src/testing/steps/ui/actions.step.ts +36 -0
  285. package/src/testing/steps/ui/assertions.step.ts +54 -0
  286. package/src/testing/steps/ui/form.step.ts +39 -0
  287. package/src/testing/steps/ui/index.ts +12 -0
  288. package/src/testing/steps/ui/navigation.step.ts +53 -0
  289. package/src/testing/steps/util/index.ts +10 -0
  290. package/src/testing/steps/util/log.step.ts +19 -0
  291. package/src/testing/steps/util/require.step.ts +16 -0
  292. package/src/testing/steps/util/sleep.step.ts +15 -0
  293. package/tsconfig.json +35 -25
  294. package/tsconfig.tests.json +14 -0
  295. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -26,7 +26,6 @@ export class ServiceController {
26
26
  private readonly mqMessageService: MqMessageService,
27
27
  private readonly errorMapper: ErrorMapperService,
28
28
  private readonly ingestMetadataService: IngestMetadataService,
29
-
30
29
  ) { }
31
30
 
32
31
  @Public()
@@ -35,64 +34,64 @@ export class ServiceController {
35
34
  return { pong: 'v1.0.2' };
36
35
  }
37
36
 
38
- @ApiBearerAuth("jwt")
39
- @Get('mcp/ping')
40
- async mcpPingPong(@ActiveUser() activeUser: ActiveUserData) {
41
- // TODO: do a MCP client invocation, wait for response and return.
42
- // If failure then decide shape to return.
43
-
44
- const threadId = `pingPongTxn-${activeUser.sub}`;
45
- const dto ={prompt:"Can you do 1 + 1", moduleName:"solidCoreModule"}
46
- const { queueMessageId, aiInteractionId } = await this.aiInteractionService.triggerMcpClientJob(
47
- dto,
48
- activeUser.sub,
49
- true,
50
- threadId
51
- );
52
-
53
- this.logger.debug(`mcp ping pong job triggered: queueMessageId=${queueMessageId}, aiInteractionId=${aiInteractionId}`);
54
-
55
- // Wait up to 2 minutes, start at 500ms poll, back off to max 2s, throw if failed:
56
- const result = await this.mqMessageService.waitForTerminalStatus(queueMessageId, {
57
- timeoutMs: 2 * 60 * 1000,
58
- intervalMs: 500,
59
- maxIntervalMs: 2000,
60
- throwOnFailure: false,
61
- });
62
-
63
- this.logger.debug(`mcp ping pong job finished with stage=${result.stage}`)
64
-
65
- this.logger.debug(`mcp ping pong trying to find genai (child) interaction for aiInteraction for id=${aiInteractionId}`)
66
-
67
- // @ts-ignore
68
- const genAiInteractions = await this.aiInteractionService.find({
69
- filters: {
70
- parentInteraction: {
71
- id: {
72
- $eq: aiInteractionId
73
- }
74
- }
75
- }
76
- });
77
-
78
- const genAiInteraction = genAiInteractions['records'][0];
79
- this.logger.debug(genAiInteraction.message);
80
-
81
- this.logger.debug(`identified gen-ai interaction with id=${genAiInteraction.id}`);
82
- this.logger.debug(`proceeding with applying the gen-ai interaction`)
83
-
84
- return {
85
- mcpPong: 'v1.0.2',
86
- genAiInteraction: {
87
- status: genAiInteraction.status,
88
- errorCode: genAiInteraction.status === 'failed' ? this.errorMapper.mapMessage(genAiInteraction.errorMessage, genAiInteraction.metadata) : '',
89
- errorMessage: genAiInteraction.errorMessage,
90
- }
91
- };
92
- }
37
+ // @ApiBearerAuth("jwt")
38
+ // @Get('mcp/ping')
39
+ // async mcpPingPong(@ActiveUser() activeUser: ActiveUserData) {
40
+ // // TODO: do a MCP client invocation, wait for response and return.
41
+ // // If failure then decide shape to return.
42
+
43
+ // const threadId = `pingPongTxn-${activeUser.sub}`;
44
+ // const dto = { prompt: "Can you do 1 + 1", moduleName: "solidCoreModule" }
45
+ // const { queueMessageId, aiInteractionId } = await this.aiInteractionService.triggerMcpClientJob(
46
+ // dto,
47
+ // activeUser.sub,
48
+ // true,
49
+ // threadId
50
+ // );
51
+
52
+ // this.logger.debug(`mcp ping pong job triggered: queueMessageId=${queueMessageId}, aiInteractionId=${aiInteractionId}`);
53
+
54
+ // // Wait up to 2 minutes, start at 500ms poll, back off to max 2s, throw if failed:
55
+ // const result = await this.mqMessageService.waitForTerminalStatus(queueMessageId, {
56
+ // timeoutMs: 2 * 60 * 1000,
57
+ // intervalMs: 500,
58
+ // maxIntervalMs: 2000,
59
+ // throwOnFailure: false,
60
+ // });
61
+
62
+ // this.logger.debug(`mcp ping pong job finished with stage=${result.stage}`)
63
+
64
+ // this.logger.debug(`mcp ping pong trying to find genai (child) interaction for aiInteraction for id=${aiInteractionId}`)
65
+
66
+ // // @ts-ignore
67
+ // const genAiInteractions = await this.aiInteractionService.find({
68
+ // filters: {
69
+ // parentInteraction: {
70
+ // id: {
71
+ // $eq: aiInteractionId
72
+ // }
73
+ // }
74
+ // }
75
+ // });
76
+
77
+ // const genAiInteraction = genAiInteractions['records'][0];
78
+ // this.logger.debug(genAiInteraction.message);
79
+
80
+ // this.logger.debug(`identified gen-ai interaction with id=${genAiInteraction.id}`);
81
+ // this.logger.debug(`proceeding with applying the gen-ai interaction`)
82
+
83
+ // return {
84
+ // mcpPong: 'v1.0.2',
85
+ // genAiInteraction: {
86
+ // status: genAiInteraction.status,
87
+ // errorCode: genAiInteraction.status === 'failed' ? this.errorMapper.mapMessage(genAiInteraction.errorMessage, genAiInteraction.metadata) : '',
88
+ // errorMessage: genAiInteraction.errorMessage,
89
+ // }
90
+ // };
91
+ // }
93
92
 
94
- @Public()
95
93
  // @SkipThrottle({ short: false, login: true, burst: true, sustained: true }) //Enable the short throttle only
94
+ @ApiBearerAuth("jwt")
96
95
  @Post('seed')
97
96
  async seedData(@Body() seedData: any) {
98
97
  const seeder = this.solidRegistry
@@ -111,7 +110,7 @@ export class ServiceController {
111
110
 
112
111
  @ApiBearerAuth("jwt")
113
112
  @Post('code-generation/post-process')
114
- async postProcessCodeGeneration(@Body() config : PostProcessCodeGenConfig) {
113
+ async postProcessCodeGeneration(@Body() config: PostProcessCodeGenConfig) {
115
114
  // Set defaults if not provided
116
115
  config.runModuleMetadataSeeder = config.runModuleMetadataSeeder ?? true;
117
116
  config.runSolidIngestion = config.runSolidIngestion ?? true;
@@ -132,7 +131,7 @@ export class ServiceController {
132
131
  } else {
133
132
  this.logger.debug(`Skipping the Module Metadata Seeder Service as part of post-process code generation`);
134
133
  }
135
-
134
+
136
135
  // Run the Solid ingestion command
137
136
  if (config.runSolidIngestion) {
138
137
  this.logger.debug(`Running the Solid ingestion command as part of post-process code generation`);
@@ -28,12 +28,10 @@ export class BasicFilterDto extends PaginationQueryDto {
28
28
  @ApiProperty({ description: "aggregates" })
29
29
  readonly aggregates?: string[];
30
30
 
31
-
32
31
  @IsOptional()
33
32
  @ApiProperty({ description: "populate" })
34
33
  readonly populate?: string[];
35
34
 
36
-
37
35
  @IsOptional()
38
36
  @ApiProperty({ description: "populateMedia" })
39
37
  readonly populateMedia?: string[];
@@ -5,6 +5,7 @@ import { Type } from 'class-transformer';
5
5
  import { UpdateRoleMetadataDto } from 'src/dtos/update-role-metadata.dto';
6
6
  import { UpdateUserViewMetadataDto } from 'src/dtos/update-user-view-metadata.dto';
7
7
 
8
+ export const DEFAULT_SA_PASSWORD = 'Admin@3214$';
8
9
  export class CreateUserDto {
9
10
  @IsOptional()
10
11
  @IsString()
@@ -73,7 +73,7 @@ export class SchematicService {
73
73
  })
74
74
  .map((fieldName) => {
75
75
  // Using argument array eliminates the need for shell-specific quoting
76
- return `--fieldNamesForRemoval=${fieldName}`;
76
+ return `--field-names-for-removal=${fieldName}`;
77
77
  });
78
78
  }
79
79
 
package/src/index.ts CHANGED
@@ -4,6 +4,8 @@ export * from './commands/refresh-module.command'
4
4
  export * from './commands/remove-fields.command'
5
5
  export * from './commands/seed.command'
6
6
  export * from './commands/test-data.command'
7
+ export * from './commands/run-tests.command'
8
+ export * from './commands/test.command'
7
9
 
8
10
  export * from './config/cache.options'
9
11
 
@@ -179,6 +181,7 @@ export * from './helpers/security.helper'
179
181
  export * from './helpers/model-metadata-helper.service'
180
182
  export * from './helpers/image-encoding.helper'
181
183
  export * from './helpers/solid-microservice-adapter.service'
184
+ export * from './helpers/typeorm-db-helper';
182
185
 
183
186
  export * from './services/crud.service'
184
187
  export * from './interceptors/logging.interceptor'
@@ -31,7 +31,7 @@ import { ViewMetadataService } from '../services/view-metadata.service';
31
31
  import solidCoreMetadata from './seed-data/solid-core-metadata.json';
32
32
  import { SystemFieldsSeederService } from './system-fields-seeder.service';
33
33
  // import { CreateScheduledJobDto } from 'src/dtos/create-scheduled-job.dto';
34
- import { ActionMetadata, MENU_ROLE_JOIN_TABLE_NAME, MENU_ROLE_JOIN_TABLE_NAME_MENU_COL, MENU_ROLE_JOIN_TABLE_NAME_ROLE_COL, MenuItemMetadata, ModuleMetadata, RoleMetadata, SignUpDto } from 'src';
34
+ import { ActionMetadata, DEFAULT_SA_PASSWORD, MENU_ROLE_JOIN_TABLE_NAME, MENU_ROLE_JOIN_TABLE_NAME_MENU_COL, MENU_ROLE_JOIN_TABLE_NAME_ROLE_COL, MenuItemMetadata, ModuleMetadata, RoleMetadata, SignUpDto } from 'src';
35
35
  import { ADMIN_ROLE_NAME } from 'src/dtos/create-role-metadata.dto';
36
36
  import { CreateSavedFiltersDto } from 'src/dtos/create-saved-filters.dto';
37
37
  import { CreateScheduledJobDto } from 'src/dtos/create-scheduled-job.dto';
@@ -654,7 +654,8 @@ export class ModuleMetadataSeederService {
654
654
  action,
655
655
  module,
656
656
  parentMenuItem,
657
- sequenceNumber: m.sequenceNumber
657
+ sequenceNumber: m.sequenceNumber,
658
+ iconName: m.iconName,
658
659
  };
659
660
 
660
661
  // If existing, set its id so save() will perform an update, otherwise insert
@@ -767,7 +768,7 @@ export class ModuleMetadataSeederService {
767
768
  }
768
769
 
769
770
  // OK
770
- private async handleSeedUsers(users) {
771
+ private async handleSeedUsers(users: SignUpDto[]) {
771
772
  if (!users) {
772
773
  return;
773
774
  }
@@ -776,33 +777,12 @@ export class ModuleMetadataSeederService {
776
777
  const user: SignUpDto = users[l];
777
778
  let exisitingUser = await this.userService.findOneByUsername(user.username);
778
779
  if (!exisitingUser) {
779
- let generatedAdminPassword: string | null = null;
780
780
  if (user.username === 'sa') {
781
- generatedAdminPassword = uuidv4();
782
- user.password = generatedAdminPassword;
781
+ user.password = DEFAULT_SA_PASSWORD;
783
782
  }
784
783
 
785
784
  exisitingUser = await this.authenticationService.signUp(user);
786
785
  this.logger.log(`Newly created user ${user.username}`);
787
-
788
- // Surface the generated SA password clearly to the operator.
789
- if (generatedAdminPassword) {
790
- const banner = [
791
- '',
792
- '============================================================',
793
- ' SYSTEM ADMIN USER CREATED',
794
- '------------------------------------------------------------',
795
- ' Username : sa',
796
- ` Password : ${generatedAdminPassword}`,
797
- '',
798
- ' Copy and store this password securely now.',
799
- ' It is shown only once during seeding.',
800
- '============================================================',
801
- ''
802
- ].join('\n');
803
- // Use console.log to ensure visibility even if logger formatting changes.
804
- console.log(banner);
805
- }
806
786
  }
807
787
  //FIXME: Create the user roles assignment logic here.
808
788
  // now add Roles to user.
@@ -185,8 +185,10 @@ export class ModuleTestDataService {
185
185
  throw new Error('Module metadata missing from test data payload.');
186
186
  }
187
187
 
188
- const testData: Array<{ modelUserKey: string; data: Record<string, any> }> = overallMetadata.testData ?? [];
189
- if (testData.length === 0) {
188
+ // console.log(JSON.stringify(moduleMetadata, null, 2));
189
+
190
+ const testingData: Array<{ modelUserKey: string; data: Record<string, any> }> = overallMetadata?.testing?.data ?? [];
191
+ if (testingData.length === 0) {
190
192
  this.logger.debug(`No test data found for ${moduleMetadata.name}`);
191
193
  return;
192
194
  }
@@ -195,7 +197,7 @@ export class ModuleTestDataService {
195
197
  (moduleMetadata.models ?? []).map((m) => [m.singularName, m]),
196
198
  );
197
199
 
198
- for (const entry of testData) {
200
+ for (const entry of testingData) {
199
201
  const modelUserKey = entry.modelUserKey;
200
202
  const modelDef = modelsByName.get(modelUserKey);
201
203
  if (!modelDef) {
@@ -5899,7 +5899,8 @@
5899
5899
  "sequenceNumber": 1,
5900
5900
  "actionUserKey": "appBuilder-root",
5901
5901
  "moduleUserKey": "solid-core",
5902
- "parentMenuItemUserKey": ""
5902
+ "parentMenuItemUserKey": "",
5903
+ "iconName" : "app_registration"
5903
5904
  },
5904
5905
  {
5905
5906
  "displayName": "Module",
@@ -5931,7 +5932,8 @@
5931
5932
  "sequenceNumber": 2,
5932
5933
  "actionUserKey": "layoutBuilder-root",
5933
5934
  "moduleUserKey": "solid-core",
5934
- "parentMenuItemUserKey": ""
5935
+ "parentMenuItemUserKey": "",
5936
+ "iconName": "space_dashboard"
5935
5937
  },
5936
5938
  {
5937
5939
  "displayName": "Menu Item",
@@ -5971,7 +5973,8 @@
5971
5973
  "sequenceNumber": 3,
5972
5974
  "actionUserKey": "media-root",
5973
5975
  "moduleUserKey": "solid-core",
5974
- "parentMenuItemUserKey": ""
5976
+ "parentMenuItemUserKey": "",
5977
+ "iconName":"perm_media"
5975
5978
  },
5976
5979
  {
5977
5980
  "displayName": "Media",
@@ -5995,7 +5998,8 @@
5995
5998
  "sequenceNumber": 4,
5996
5999
  "actionUserKey": "iam-root",
5997
6000
  "moduleUserKey": "solid-core",
5998
- "parentMenuItemUserKey": ""
6001
+ "parentMenuItemUserKey": "",
6002
+ "iconName": "person_shield"
5999
6003
  },
6000
6004
  {
6001
6005
  "displayName": "User",
@@ -6043,7 +6047,8 @@
6043
6047
  "sequenceNumber": 5,
6044
6048
  "actionUserKey": "queues-root",
6045
6049
  "moduleUserKey": "solid-core",
6046
- "parentMenuItemUserKey": ""
6050
+ "parentMenuItemUserKey": "",
6051
+ "iconName":"low_priority"
6047
6052
  },
6048
6053
  {
6049
6054
  "displayName": "Messages",
@@ -6067,7 +6072,8 @@
6067
6072
  "sequenceNumber": 6,
6068
6073
  "actionUserKey": "notification-root",
6069
6074
  "moduleUserKey": "solid-core",
6070
- "parentMenuItemUserKey": ""
6075
+ "parentMenuItemUserKey": "",
6076
+ "iconName":"notification_settings"
6071
6077
  },
6072
6078
  {
6073
6079
  "displayName": "Email",
@@ -6091,7 +6097,8 @@
6091
6097
  "sequenceNumber": 7,
6092
6098
  "actionUserKey": "other-root",
6093
6099
  "moduleUserKey": "solid-core",
6094
- "parentMenuItemUserKey": ""
6100
+ "parentMenuItemUserKey": "",
6101
+ "iconName":"other_admission"
6095
6102
  },
6096
6103
  {
6097
6104
  "displayName": "List of Values",
@@ -6171,7 +6178,8 @@
6171
6178
  "sequenceNumber": 8,
6172
6179
  "actionUserKey": "dasbhoard-root",
6173
6180
  "moduleUserKey": "solid-core",
6174
- "parentMenuItemUserKey": ""
6181
+ "parentMenuItemUserKey": "",
6182
+ "iconName" : "dashboard_customize"
6175
6183
  },
6176
6184
  {
6177
6185
  "displayName": "Dashboard",
@@ -6195,7 +6203,8 @@
6195
6203
  "sequenceNumber": 9,
6196
6204
  "actionUserKey": "settings-root",
6197
6205
  "moduleUserKey": "solid-core",
6198
- "parentMenuItemUserKey": ""
6206
+ "parentMenuItemUserKey": "",
6207
+ "iconName":"settings"
6199
6208
  },
6200
6209
  {
6201
6210
  "displayName": "App Settings",
@@ -11146,6 +11155,22 @@
11146
11155
  "sortable": true,
11147
11156
  "filterable": true
11148
11157
  }
11158
+ },
11159
+ {
11160
+ "type": "field",
11161
+ "attrs": {
11162
+ "name": "userAgent",
11163
+ "sortable": true,
11164
+ "filterable": true
11165
+ }
11166
+ },
11167
+ {
11168
+ "type": "field",
11169
+ "attrs": {
11170
+ "name": "createdAt",
11171
+ "sortable": true,
11172
+ "filterable": true
11173
+ }
11149
11174
  }
11150
11175
  ]
11151
11176
  }
@@ -18,9 +18,12 @@ import { ChatterMessageDetails } from '../entities/chatter-message-details.entit
18
18
  import { ChatterMessage } from '../entities/chatter-message.entity';
19
19
  import { getMediaStorageProvider } from './mediaStorageProviders';
20
20
  import { RequestContextService } from './request-context.service';
21
- import { take } from 'rxjs';
21
+ import { Logger } from '@nestjs/common';
22
+
22
23
  @Injectable()
23
24
  export class ChatterMessageService extends CRUDService<ChatterMessage> {
25
+ private readonly _logger = new Logger(ChatterMessageService.name);
26
+
24
27
  constructor(
25
28
  @InjectEntityManager()
26
29
  readonly entityManager: EntityManager,
@@ -502,16 +505,23 @@ export class ChatterMessageService extends CRUDService<ChatterMessage> {
502
505
  return populatedEntity;
503
506
  }
504
507
 
508
+ private logHeapUsed(label: string) {
509
+ const mb = () => Math.round(process.memoryUsage().heapUsed / 1024 / 1024);
510
+ this._logger.log(`heapUsedMB(${label}): ${mb()}`);
511
+ }
512
+
505
513
  // [2026-02-05T23:31:21.025Z] INFO: [200 OK]
506
514
  // GET /api/chatter-message/getChatterMessages/216/mswipeBoomboxBulkUpload?populateMedia[0]=messageAttachments&populate[0]=user&populate[1]=chatterMessageDetails&limit=25 22747ms
507
515
  async getChatterMessages(entityId: number, entityName: string, query: any) {
508
516
  const { limit = 25, offset = 0, populate = [], populateMedia = [], filters } = query;
517
+ this.logHeapUsed('getChatterMessages-start');
509
518
 
510
519
  const model = await this.modelMetadataRepo.findOne({
511
520
  where: {
512
521
  singularName: entityName
513
522
  },
514
523
  });
524
+ this.logHeapUsed('getChatterMessages-modelLoaded');
515
525
  const oneToManyFields = await this.fieldMetadataRepo.find({
516
526
  where: {
517
527
  model: { id: model.id },
@@ -519,11 +529,13 @@ export class ChatterMessageService extends CRUDService<ChatterMessage> {
519
529
  relationType: 'one-to-many'
520
530
  }
521
531
  });
532
+ this.logHeapUsed('getChatterMessages-oneToManyFieldsLoaded');
522
533
 
523
534
  const relatedEntitiesMap = new Map<string, number[]>();
524
535
 
525
536
  for (const field of oneToManyFields) {
526
537
  if (field.enableAuditTracking === false) {
538
+ this._logger.log(`Skipping field ${field.name} for chatter message retrieval because audit tracking is disabled`);
527
539
  continue
528
540
  }
529
541
  const coModelName = field.relationCoModelSingularName;
@@ -552,8 +564,10 @@ export class ChatterMessageService extends CRUDService<ChatterMessage> {
552
564
  relatedEntitiesMap.set(field.name, relatedIds);
553
565
  }
554
566
  }
567
+ this.logHeapUsed('getChatterMessages-relatedEntitiesLoaded');
555
568
 
556
569
  const qb = await this.repo.createSecurityRuleAwareQueryBuilder('entity');
570
+ this.logHeapUsed('getChatterMessages-queryBuilderReady');
557
571
 
558
572
  const orConditions: string[] = [];
559
573
  const parameters: any = {};
@@ -602,10 +616,13 @@ export class ChatterMessageService extends CRUDService<ChatterMessage> {
602
616
  qb.skip(offset).take(limit);
603
617
 
604
618
  const [entities, count] = await qb.getManyAndCount();
619
+ this.logHeapUsed('getChatterMessages-entitiesLoaded');
605
620
 
606
621
  if (populateMedia && populateMedia.length > 0) {
607
622
  const normalizedPopulateMedia = this.crudHelperService.normalize(populateMedia);
623
+ this.logHeapUsed('getChatterMessages-beforePopulateMedia');
608
624
  await this['handlePopulateMedia'](normalizedPopulateMedia, entities);
625
+ this.logHeapUsed('getChatterMessages-afterPopulateMedia');
609
626
  }
610
627
 
611
628
  const currentPage = Math.floor(offset / limit) + 1;
@@ -67,6 +67,7 @@ export class CRUDService<T extends CommonEntity> { // Add two generic value i.e
67
67
  protected get discoveryService(): DiscoveryService {
68
68
  return this._discoveryService ??= this.moduleRef.get(DiscoveryService, { strict: false });
69
69
  }
70
+
70
71
  protected get settingService(): SettingService {
71
72
  return this._settingService ??= this.moduleRef.get(SettingService, { strict: false });
72
73
  }
@@ -876,7 +876,8 @@ export class ModelMetadataService {
876
876
  sequenceNumber: 1,
877
877
  actionUserKey: actionName,
878
878
  moduleUserKey: `${model.module.name}`,
879
- parentMenuItemUserKey: ""
879
+ parentMenuItemUserKey: "",
880
+ iconName : ""
880
881
  };
881
882
 
882
883
  const modelListview = {
@@ -181,7 +181,8 @@ export class ModuleMetadataService {
181
181
  sequenceNumber: 1,
182
182
  actionUserKey: `${module?.name}-home-action`,
183
183
  moduleUserKey: module?.name,
184
- parentMenuItemUserKey: ""
184
+ parentMenuItemUserKey: "",
185
+ iconName : "home"
185
186
  }
186
187
  ],
187
188
  views: [],
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Convert a string into a lower-case slug separated by a join character.
3
+ *
4
+ * Logic:
5
+ * - Keep only ASCII letters and digits.
6
+ * - Convert A-Z to a-z.
7
+ * - Replace runs of non-alphanumeric characters with a single join character.
8
+ * - Trim leading/trailing join characters.
9
+ *
10
+ * Examples (joinChar "_"):
11
+ * - "Venue App" -> "venue_app"
12
+ * - "My-App@2025" -> "my_app_2025"
13
+ * - " CORE__API!! " -> "core_api"
14
+ *
15
+ * Examples (joinChar "-"):
16
+ * - "Venue App" -> "venue-app"
17
+ */
18
+ export function toSlug(value?: string | null, joinChar: string = '-'): string {
19
+ if (!value) {
20
+ return '';
21
+ }
22
+
23
+ const slugChars: string[] = [];
24
+ let lastJoin = true;
25
+
26
+ for (let i = 0; i < value.length; i += 1) {
27
+ const code = value.charCodeAt(i);
28
+
29
+ // ASCII uppercase -> lowercase
30
+ if (code >= 65 && code <= 90) {
31
+ slugChars.push(String.fromCharCode(code + 32));
32
+ lastJoin = false;
33
+ continue;
34
+ }
35
+
36
+ // ASCII lowercase letters or digits are kept as-is
37
+ if ((code >= 97 && code <= 122) || (code >= 48 && code <= 57)) {
38
+ slugChars.push(value[i]);
39
+ lastJoin = false;
40
+ continue;
41
+ }
42
+
43
+ // Any other char becomes a single join character (collapse runs)
44
+ if (!lastJoin && slugChars.length > 0) {
45
+ slugChars.push(joinChar);
46
+ lastJoin = true;
47
+ }
48
+ }
49
+
50
+ if (slugChars.length && slugChars[slugChars.length - 1] === joinChar) {
51
+ slugChars.pop();
52
+ }
53
+
54
+ return slugChars.join('');
55
+ }
56
+
57
+ /**
58
+ * Build a namespaced queue name by prefixing the queue name with the
59
+ * slugged app name, the slugged env, and underscores.
60
+ *
61
+ * Examples:
62
+ * - appName "Venue App", env "Prod", queue "orders" -> "venue_app_prod_orders"
63
+ * - appName "core-api", env "staging", queue "sync" -> "core_api_staging_sync"
64
+ * - appName "" or undefined, env "" or undefined, queue "jobs" -> "_dev_jobs"
65
+ */
66
+ export function buildNamespacedQueueName(
67
+ queueName: string,
68
+ appName: string | undefined | null = process.env.SOLID_APP_NAME,
69
+ env: string | undefined | null = process.env.ENV,
70
+ ): string {
71
+ const appNameSlug = toSlug(appName, '_');
72
+ const envValue = env && env.length > 0 ? env : (process.env.ENV && process.env.ENV.length > 0 ? process.env.ENV : 'dev');
73
+ const envSlug = toSlug(envValue, '_');
74
+ return `${appNameSlug}_${envSlug}_${queueName}`;
75
+ }
@@ -4,6 +4,7 @@ import { QueuesModuleOptions } from "../../interfaces";
4
4
  import { QueueMessage, QueuePublisher } from '../../interfaces/mq';
5
5
  import { MqMessageQueueService } from '../mq-message-queue.service';
6
6
  import { MqMessageService } from '../mq-message.service';
7
+ import { buildNamespacedQueueName } from './common';
7
8
 
8
9
  export abstract class DatabasePublisher<T> implements QueuePublisher<T> {
9
10
  private readonly logger = new Logger(DatabasePublisher.name);
@@ -38,6 +39,8 @@ export abstract class DatabasePublisher<T> implements QueuePublisher<T> {
38
39
  const options = this.options();
39
40
 
40
41
  const queueName = options.queueName;
42
+ const namespacedQueueName = buildNamespacedQueueName(queueName);
43
+
41
44
  if (!message.retryCount) message.retryCount = 0;
42
45
  if (!message.retryInterval) message.retryInterval = 1000;
43
46
 
@@ -45,7 +48,7 @@ export abstract class DatabasePublisher<T> implements QueuePublisher<T> {
45
48
  message.messageId = uuidv4();
46
49
 
47
50
  // Save the message to the DB so that we can then change its status in the subscriber...
48
- await this.persistToDatabase(queueName, message);
51
+ await this.persistToDatabase(namespacedQueueName, message);
49
52
 
50
53
  // return the newly created message id.
51
54
  return message.messageId;
@@ -4,7 +4,7 @@ import { QueueMessage, QueueSubscriber } from '../../interfaces/mq';
4
4
  import { MqMessageQueueService } from '../mq-message-queue.service';
5
5
  import { MqMessageService } from '../mq-message.service';
6
6
  import { PollerService } from '../poller.service';
7
-
7
+ import { buildNamespacedQueueName } from './common';
8
8
 
9
9
  export abstract class DatabaseSubscriber<T> implements OnModuleInit, QueueSubscriber<T> {
10
10
  private readonly logger = new Logger(DatabaseSubscriber.name);
@@ -97,7 +97,8 @@ export abstract class DatabaseSubscriber<T> implements OnModuleInit, QueueSubscr
97
97
  }
98
98
  }
99
99
 
100
- this.poller.start(queueName, (q) => this.processNext(q), {
100
+ const namespacedQueueName = buildNamespacedQueueName(queueName);
101
+ this.poller.start(namespacedQueueName, (q) => this.processNext(q), {
101
102
  baseDelayMs: 1000,
102
103
  maxDelayMs: 30_000,
103
104
  timeoutPerIterationMs: 5 * 60_000,
@@ -111,7 +112,8 @@ export abstract class DatabaseSubscriber<T> implements OnModuleInit, QueueSubscr
111
112
  onModuleDestroy() {
112
113
  const options = this.options();
113
114
  const queueName = options.queueName;
114
- this.poller.stop(queueName);
115
+ const namespacedQueueName = buildNamespacedQueueName(queueName);
116
+ this.poller.stop(namespacedQueueName);
115
117
  }
116
118
 
117
119
  /**