@solidxai/core 0.1.10-beta.22 → 0.1.10-beta.24

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 (481) hide show
  1. package/CLAUDE.md +9 -1
  2. package/dist/commands/info.command.d.ts.map +1 -1
  3. package/dist/commands/info.command.js +0 -2
  4. package/dist/commands/info.command.js.map +1 -1
  5. package/dist/controllers/dashboard-user-layout.controller.d.ts +43 -0
  6. package/dist/controllers/dashboard-user-layout.controller.d.ts.map +1 -0
  7. package/dist/controllers/{dashboard-variable.controller.js → dashboard-user-layout.controller.js} +30 -30
  8. package/dist/controllers/dashboard-user-layout.controller.js.map +1 -0
  9. package/dist/controllers/dashboard.controller.d.ts +12 -42
  10. package/dist/controllers/dashboard.controller.d.ts.map +1 -1
  11. package/dist/controllers/dashboard.controller.js +71 -141
  12. package/dist/controllers/dashboard.controller.js.map +1 -1
  13. package/dist/decorators/dashboard-widget-data-provider.decorator.d.ts +3 -0
  14. package/dist/decorators/dashboard-widget-data-provider.decorator.d.ts.map +1 -0
  15. package/dist/decorators/dashboard-widget-data-provider.decorator.js +8 -0
  16. package/dist/decorators/dashboard-widget-data-provider.decorator.js.map +1 -0
  17. package/dist/dtos/create-dashboard-user-layout.dto.d.ts +10 -0
  18. package/dist/dtos/create-dashboard-user-layout.dto.d.ts.map +1 -0
  19. package/dist/dtos/create-dashboard-user-layout.dto.js +66 -0
  20. package/dist/dtos/create-dashboard-user-layout.dto.js.map +1 -0
  21. package/dist/dtos/create-model-metadata.dto.d.ts +2 -2
  22. package/dist/dtos/create-model-metadata.dto.d.ts.map +1 -1
  23. package/dist/dtos/create-model-metadata.dto.js +6 -11
  24. package/dist/dtos/create-model-metadata.dto.js.map +1 -1
  25. package/dist/dtos/dashboard-variable-options-query.dto.d.ts +7 -0
  26. package/dist/dtos/dashboard-variable-options-query.dto.d.ts.map +1 -0
  27. package/dist/dtos/dashboard-variable-options-query.dto.js +40 -0
  28. package/dist/dtos/dashboard-variable-options-query.dto.js.map +1 -0
  29. package/dist/dtos/dashboard-widget-data-request.dto.d.ts +12 -0
  30. package/dist/dtos/dashboard-widget-data-request.dto.d.ts.map +1 -0
  31. package/dist/dtos/dashboard-widget-data-request.dto.js +65 -0
  32. package/dist/dtos/dashboard-widget-data-request.dto.js.map +1 -0
  33. package/dist/dtos/update-dashboard-user-layout.dto.d.ts +11 -0
  34. package/dist/dtos/update-dashboard-user-layout.dto.d.ts.map +1 -0
  35. package/dist/dtos/{update-dashboard-layout.dto.js → update-dashboard-user-layout.dto.js} +34 -16
  36. package/dist/dtos/update-dashboard-user-layout.dto.js.map +1 -0
  37. package/dist/entities/dashboard-user-layout.entity.d.ts +11 -0
  38. package/dist/entities/dashboard-user-layout.entity.d.ts.map +1 -0
  39. package/dist/entities/dashboard-user-layout.entity.js +52 -0
  40. package/dist/entities/dashboard-user-layout.entity.js.map +1 -0
  41. package/dist/entities/legacy-common-with-id.entity.d.ts +2 -2
  42. package/dist/entities/legacy-common-with-id.entity.d.ts.map +1 -1
  43. package/dist/entities/legacy-common-with-id.entity.js +6 -6
  44. package/dist/entities/legacy-common-with-id.entity.js.map +1 -1
  45. package/dist/entities/legacy-common.entity.d.ts +1 -1
  46. package/dist/entities/legacy-common.entity.d.ts.map +1 -1
  47. package/dist/entities/legacy-common.entity.js +14 -14
  48. package/dist/entities/legacy-common.entity.js.map +1 -1
  49. package/dist/entities/model-metadata.entity.d.ts +2 -2
  50. package/dist/entities/model-metadata.entity.d.ts.map +1 -1
  51. package/dist/entities/model-metadata.entity.js +5 -8
  52. package/dist/entities/model-metadata.entity.js.map +1 -1
  53. package/dist/enums/legacy-table-type.enum.d.ts +6 -0
  54. package/dist/enums/legacy-table-type.enum.d.ts.map +1 -0
  55. package/dist/enums/legacy-table-type.enum.js +10 -0
  56. package/dist/enums/legacy-table-type.enum.js.map +1 -0
  57. package/dist/helpers/model-metadata-helper.service.d.ts +2 -1
  58. package/dist/helpers/model-metadata-helper.service.d.ts.map +1 -1
  59. package/dist/helpers/model-metadata-helper.service.js +4 -3
  60. package/dist/helpers/model-metadata-helper.service.js.map +1 -1
  61. package/dist/helpers/module-metadata-helper.service.d.ts.map +1 -1
  62. package/dist/helpers/module-metadata-helper.service.js +15 -4
  63. package/dist/helpers/module-metadata-helper.service.js.map +1 -1
  64. package/dist/helpers/solid-registry.d.ts +5 -9
  65. package/dist/helpers/solid-registry.d.ts.map +1 -1
  66. package/dist/helpers/solid-registry.js +13 -28
  67. package/dist/helpers/solid-registry.js.map +1 -1
  68. package/dist/index.d.ts +22 -5
  69. package/dist/index.d.ts.map +1 -1
  70. package/dist/index.js +22 -5
  71. package/dist/index.js.map +1 -1
  72. package/dist/interfaces.d.ts +24 -13
  73. package/dist/interfaces.d.ts.map +1 -1
  74. package/dist/interfaces.js.map +1 -1
  75. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts +1 -3
  76. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts.map +1 -1
  77. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js +2 -25
  78. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js.map +1 -1
  79. package/dist/{repository/dashboard-layout.repository.d.ts → repositories/dashboard-user-layout.repository.d.ts} +5 -5
  80. package/dist/repositories/dashboard-user-layout.repository.d.ts.map +1 -0
  81. package/dist/{repository/dashboard-question-sql-dataset-config.repository.js → repositories/dashboard-user-layout.repository.js} +15 -10
  82. package/dist/repositories/dashboard-user-layout.repository.js.map +1 -0
  83. package/dist/seeders/module-metadata-seeder.service.d.ts +1 -6
  84. package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
  85. package/dist/seeders/module-metadata-seeder.service.js +1 -60
  86. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  87. package/dist/seeders/seed-data/solid-core-metadata.json +6209 -6690
  88. package/dist/seeders/system-fields-seeder.service.js +1 -1
  89. package/dist/seeders/system-fields-seeder.service.js.map +1 -1
  90. package/dist/services/dashboard-providers/mq-dashboard-avg-elapsed-kpi-provider.service.d.ts +13 -0
  91. package/dist/services/dashboard-providers/mq-dashboard-avg-elapsed-kpi-provider.service.d.ts.map +1 -0
  92. package/dist/services/dashboard-providers/mq-dashboard-avg-elapsed-kpi-provider.service.js +55 -0
  93. package/dist/services/dashboard-providers/mq-dashboard-avg-elapsed-kpi-provider.service.js.map +1 -0
  94. package/dist/services/dashboard-providers/mq-dashboard-failed-messages-kpi-provider.service.d.ts +13 -0
  95. package/dist/services/dashboard-providers/mq-dashboard-failed-messages-kpi-provider.service.d.ts.map +1 -0
  96. package/dist/services/dashboard-providers/mq-dashboard-failed-messages-kpi-provider.service.js +52 -0
  97. package/dist/services/dashboard-providers/mq-dashboard-failed-messages-kpi-provider.service.js.map +1 -0
  98. package/dist/services/dashboard-providers/mq-dashboard-inflight-messages-kpi-provider.service.d.ts +13 -0
  99. package/dist/services/dashboard-providers/mq-dashboard-inflight-messages-kpi-provider.service.d.ts.map +1 -0
  100. package/dist/services/dashboard-providers/mq-dashboard-inflight-messages-kpi-provider.service.js +52 -0
  101. package/dist/services/dashboard-providers/mq-dashboard-inflight-messages-kpi-provider.service.js.map +1 -0
  102. package/dist/services/dashboard-providers/mq-dashboard-latency-trend-provider.service.d.ts +10 -0
  103. package/dist/services/dashboard-providers/mq-dashboard-latency-trend-provider.service.d.ts.map +1 -0
  104. package/dist/services/dashboard-providers/mq-dashboard-latency-trend-provider.service.js +62 -0
  105. package/dist/services/dashboard-providers/mq-dashboard-latency-trend-provider.service.js.map +1 -0
  106. package/dist/services/dashboard-providers/mq-dashboard-messages-over-time-provider.service.d.ts +10 -0
  107. package/dist/services/dashboard-providers/mq-dashboard-messages-over-time-provider.service.d.ts.map +1 -0
  108. package/dist/services/dashboard-providers/mq-dashboard-messages-over-time-provider.service.js +82 -0
  109. package/dist/services/dashboard-providers/mq-dashboard-messages-over-time-provider.service.js.map +1 -0
  110. package/dist/services/dashboard-providers/mq-dashboard-provider-utils.d.ts +17 -0
  111. package/dist/services/dashboard-providers/mq-dashboard-provider-utils.d.ts.map +1 -0
  112. package/dist/services/dashboard-providers/mq-dashboard-provider-utils.js +130 -0
  113. package/dist/services/dashboard-providers/mq-dashboard-provider-utils.js.map +1 -0
  114. package/dist/services/dashboard-providers/mq-dashboard-queue-sla-heatmap-provider.service.d.ts +37 -0
  115. package/dist/services/dashboard-providers/mq-dashboard-queue-sla-heatmap-provider.service.d.ts.map +1 -0
  116. package/dist/services/dashboard-providers/mq-dashboard-queue-sla-heatmap-provider.service.js +112 -0
  117. package/dist/services/dashboard-providers/mq-dashboard-queue-sla-heatmap-provider.service.js.map +1 -0
  118. package/dist/services/dashboard-providers/mq-dashboard-queue-wise-avg-elapsed-provider.service.d.ts +10 -0
  119. package/dist/services/dashboard-providers/mq-dashboard-queue-wise-avg-elapsed-provider.service.d.ts.map +1 -0
  120. package/dist/services/dashboard-providers/mq-dashboard-queue-wise-avg-elapsed-provider.service.js +57 -0
  121. package/dist/services/dashboard-providers/mq-dashboard-queue-wise-avg-elapsed-provider.service.js.map +1 -0
  122. package/dist/services/dashboard-providers/mq-dashboard-queue-wise-failures-provider.service.d.ts +10 -0
  123. package/dist/services/dashboard-providers/mq-dashboard-queue-wise-failures-provider.service.d.ts.map +1 -0
  124. package/dist/services/dashboard-providers/mq-dashboard-queue-wise-failures-provider.service.js +57 -0
  125. package/dist/services/dashboard-providers/mq-dashboard-queue-wise-failures-provider.service.js.map +1 -0
  126. package/dist/services/dashboard-providers/mq-dashboard-recent-failures-provider.service.d.ts +10 -0
  127. package/dist/services/dashboard-providers/mq-dashboard-recent-failures-provider.service.d.ts.map +1 -0
  128. package/dist/services/dashboard-providers/mq-dashboard-recent-failures-provider.service.js +100 -0
  129. package/dist/services/dashboard-providers/mq-dashboard-recent-failures-provider.service.js.map +1 -0
  130. package/dist/services/dashboard-providers/mq-dashboard-stage-distribution-provider.service.d.ts +10 -0
  131. package/dist/services/dashboard-providers/mq-dashboard-stage-distribution-provider.service.d.ts.map +1 -0
  132. package/dist/services/dashboard-providers/mq-dashboard-stage-distribution-provider.service.js +55 -0
  133. package/dist/services/dashboard-providers/mq-dashboard-stage-distribution-provider.service.js.map +1 -0
  134. package/dist/services/dashboard-providers/mq-dashboard-succeeded-messages-kpi-provider.service.d.ts +13 -0
  135. package/dist/services/dashboard-providers/mq-dashboard-succeeded-messages-kpi-provider.service.d.ts.map +1 -0
  136. package/dist/services/dashboard-providers/mq-dashboard-succeeded-messages-kpi-provider.service.js +52 -0
  137. package/dist/services/dashboard-providers/mq-dashboard-succeeded-messages-kpi-provider.service.js.map +1 -0
  138. package/dist/services/dashboard-providers/mq-dashboard-success-rate-kpi-provider.service.d.ts +15 -0
  139. package/dist/services/dashboard-providers/mq-dashboard-success-rate-kpi-provider.service.d.ts.map +1 -0
  140. package/dist/services/dashboard-providers/mq-dashboard-success-rate-kpi-provider.service.js +60 -0
  141. package/dist/services/dashboard-providers/mq-dashboard-success-rate-kpi-provider.service.js.map +1 -0
  142. package/dist/services/dashboard-providers/mq-dashboard-total-messages-kpi-provider.service.d.ts +13 -0
  143. package/dist/services/dashboard-providers/mq-dashboard-total-messages-kpi-provider.service.d.ts.map +1 -0
  144. package/dist/services/dashboard-providers/mq-dashboard-total-messages-kpi-provider.service.js +51 -0
  145. package/dist/services/dashboard-providers/mq-dashboard-total-messages-kpi-provider.service.js.map +1 -0
  146. package/dist/services/dashboard-runtime.service.d.ts +31 -0
  147. package/dist/services/dashboard-runtime.service.d.ts.map +1 -0
  148. package/dist/services/dashboard-runtime.service.js +408 -0
  149. package/dist/services/dashboard-runtime.service.js.map +1 -0
  150. package/dist/services/dashboard-user-layout.service.d.ts +12 -0
  151. package/dist/services/dashboard-user-layout.service.d.ts.map +1 -0
  152. package/dist/services/{dashboard-variable.service.js → dashboard-user-layout.service.js} +11 -12
  153. package/dist/services/dashboard-user-layout.service.js.map +1 -0
  154. package/dist/services/mediaStorageProviders/file-s3-storage-provider.js +9 -9
  155. package/dist/services/mediaStorageProviders/file-s3-storage-provider.js.map +1 -1
  156. package/dist/services/model-metadata.service.d.ts +2 -2
  157. package/dist/services/model-metadata.service.d.ts.map +1 -1
  158. package/dist/services/model-metadata.service.js +3 -4
  159. package/dist/services/model-metadata.service.js.map +1 -1
  160. package/dist/services/selection-providers/mq-dashboard-message-broker-variable-options-provider.service.d.ts +11 -0
  161. package/dist/services/selection-providers/mq-dashboard-message-broker-variable-options-provider.service.d.ts.map +1 -0
  162. package/dist/services/selection-providers/mq-dashboard-message-broker-variable-options-provider.service.js +59 -0
  163. package/dist/services/selection-providers/mq-dashboard-message-broker-variable-options-provider.service.js.map +1 -0
  164. package/dist/services/selection-providers/mq-dashboard-queue-name-variable-options-provider.service.d.ts +11 -0
  165. package/dist/services/selection-providers/mq-dashboard-queue-name-variable-options-provider.service.d.ts.map +1 -0
  166. package/dist/services/selection-providers/mq-dashboard-queue-name-variable-options-provider.service.js +60 -0
  167. package/dist/services/selection-providers/mq-dashboard-queue-name-variable-options-provider.service.js.map +1 -0
  168. package/dist/services/solid-introspect.service.d.ts +1 -2
  169. package/dist/services/solid-introspect.service.d.ts.map +1 -1
  170. package/dist/services/solid-introspect.service.js +12 -24
  171. package/dist/services/solid-introspect.service.js.map +1 -1
  172. package/dist/solid-core.module.d.ts.map +1 -1
  173. package/dist/solid-core.module.js +43 -66
  174. package/dist/solid-core.module.js.map +1 -1
  175. package/dist/subscribers/model-metadata.subscriber.d.ts.map +1 -1
  176. package/dist/subscribers/model-metadata.subscriber.js +1 -3
  177. package/dist/subscribers/model-metadata.subscriber.js.map +1 -1
  178. package/package.json +1 -1
  179. package/src/commands/info.command.ts +0 -2
  180. package/src/controllers/{dashboard-variable.controller.ts → dashboard-user-layout.controller.ts} +10 -10
  181. package/src/controllers/dashboard.controller.ts +70 -89
  182. package/src/decorators/dashboard-widget-data-provider.decorator.ts +6 -0
  183. package/src/dtos/create-dashboard-user-layout.dto.ts +41 -0
  184. package/src/dtos/create-model-metadata.dto.ts +5 -9
  185. package/src/dtos/dashboard-variable-options-query.dto.ts +20 -0
  186. package/src/dtos/dashboard-widget-data-request.dto.ts +34 -0
  187. package/src/dtos/update-dashboard-user-layout.dto.ts +45 -0
  188. package/src/entities/dashboard-user-layout.entity.ts +27 -0
  189. package/src/entities/legacy-common-with-id.entity.ts +2 -2
  190. package/src/entities/legacy-common.entity.ts +1 -1
  191. package/src/entities/model-metadata.entity.ts +3 -5
  192. package/src/enums/legacy-table-type.enum.ts +5 -0
  193. package/src/helpers/model-metadata-helper.service.ts +4 -3
  194. package/src/helpers/module-metadata-helper.service.ts +21 -6
  195. package/src/helpers/solid-registry.ts +15 -36
  196. package/src/index.ts +22 -5
  197. package/src/interfaces.ts +32 -19
  198. package/src/jobs/database/trigger-mcp-client-subscriber-database.service.ts +1 -34
  199. package/src/repositories/dashboard-user-layout.repository.ts +19 -0
  200. package/src/seeders/module-metadata-seeder.service.ts +0 -67
  201. package/src/seeders/seed-data/solid-core-metadata.json +6210 -6691
  202. package/src/seeders/system-fields-seeder.service.ts +1 -1
  203. package/src/services/dashboard-providers/README.md +603 -0
  204. package/src/services/dashboard-providers/mq-dashboard-avg-elapsed-kpi-provider.service.ts +49 -0
  205. package/src/services/dashboard-providers/mq-dashboard-failed-messages-kpi-provider.service.ts +45 -0
  206. package/src/services/dashboard-providers/mq-dashboard-inflight-messages-kpi-provider.service.ts +45 -0
  207. package/src/services/dashboard-providers/mq-dashboard-latency-trend-provider.service.ts +58 -0
  208. package/src/services/dashboard-providers/mq-dashboard-messages-over-time-provider.service.ts +79 -0
  209. package/src/services/dashboard-providers/mq-dashboard-provider-utils.ts +165 -0
  210. package/src/services/dashboard-providers/mq-dashboard-queue-sla-heatmap-provider.service.ts +155 -0
  211. package/src/services/dashboard-providers/mq-dashboard-queue-wise-avg-elapsed-provider.service.ts +51 -0
  212. package/src/services/dashboard-providers/mq-dashboard-queue-wise-failures-provider.service.ts +51 -0
  213. package/src/services/dashboard-providers/mq-dashboard-recent-failures-provider.service.ts +95 -0
  214. package/src/services/dashboard-providers/mq-dashboard-stage-distribution-provider.service.ts +49 -0
  215. package/src/services/dashboard-providers/mq-dashboard-succeeded-messages-kpi-provider.service.ts +45 -0
  216. package/src/services/dashboard-providers/mq-dashboard-success-rate-kpi-provider.service.ts +55 -0
  217. package/src/services/dashboard-providers/mq-dashboard-total-messages-kpi-provider.service.ts +44 -0
  218. package/src/services/dashboard-runtime.service.ts +488 -0
  219. package/src/services/dashboard-user-layout.service.ts +20 -0
  220. package/src/services/mediaStorageProviders/file-s3-storage-provider.ts +11 -11
  221. package/src/services/model-metadata.service.ts +6 -8
  222. package/src/services/selection-providers/mq-dashboard-message-broker-variable-options-provider.service.ts +52 -0
  223. package/src/services/selection-providers/mq-dashboard-queue-name-variable-options-provider.service.ts +51 -0
  224. package/src/services/solid-introspect.service.ts +19 -34
  225. package/src/solid-core.module.ts +43 -72
  226. package/src/subscribers/model-metadata.subscriber.ts +1 -3
  227. package/CURRENT_PROMPT +0 -6
  228. package/dist/controllers/dashboard-layout.controller.d.ts +0 -47
  229. package/dist/controllers/dashboard-layout.controller.d.ts.map +0 -1
  230. package/dist/controllers/dashboard-layout.controller.js +0 -204
  231. package/dist/controllers/dashboard-layout.controller.js.map +0 -1
  232. package/dist/controllers/dashboard-question-sql-dataset-config.controller.d.ts +0 -43
  233. package/dist/controllers/dashboard-question-sql-dataset-config.controller.d.ts.map +0 -1
  234. package/dist/controllers/dashboard-question-sql-dataset-config.controller.js +0 -179
  235. package/dist/controllers/dashboard-question-sql-dataset-config.controller.js.map +0 -1
  236. package/dist/controllers/dashboard-question.controller.d.ts +0 -45
  237. package/dist/controllers/dashboard-question.controller.d.ts.map +0 -1
  238. package/dist/controllers/dashboard-question.controller.js +0 -194
  239. package/dist/controllers/dashboard-question.controller.js.map +0 -1
  240. package/dist/controllers/dashboard-variable.controller.d.ts +0 -43
  241. package/dist/controllers/dashboard-variable.controller.d.ts.map +0 -1
  242. package/dist/controllers/dashboard-variable.controller.js.map +0 -1
  243. package/dist/decorators/dashboard-question-data-provider.decorator.d.ts +0 -3
  244. package/dist/decorators/dashboard-question-data-provider.decorator.d.ts.map +0 -1
  245. package/dist/decorators/dashboard-question-data-provider.decorator.js +0 -11
  246. package/dist/decorators/dashboard-question-data-provider.decorator.js.map +0 -1
  247. package/dist/decorators/dashboard-selection-provider.decorator.d.ts +0 -3
  248. package/dist/decorators/dashboard-selection-provider.decorator.d.ts.map +0 -1
  249. package/dist/decorators/dashboard-selection-provider.decorator.js +0 -11
  250. package/dist/decorators/dashboard-selection-provider.decorator.js.map +0 -1
  251. package/dist/dtos/create-dashboard-layout.dto.d.ts +0 -8
  252. package/dist/dtos/create-dashboard-layout.dto.d.ts.map +0 -1
  253. package/dist/dtos/create-dashboard-layout.dto.js +0 -53
  254. package/dist/dtos/create-dashboard-layout.dto.js.map +0 -1
  255. package/dist/dtos/create-dashboard-question-sql-dataset-config.dto.d.ts +0 -12
  256. package/dist/dtos/create-dashboard-question-sql-dataset-config.dto.d.ts.map +0 -1
  257. package/dist/dtos/create-dashboard-question-sql-dataset-config.dto.js +0 -77
  258. package/dist/dtos/create-dashboard-question-sql-dataset-config.dto.js.map +0 -1
  259. package/dist/dtos/create-dashboard-question.dto.d.ts +0 -17
  260. package/dist/dtos/create-dashboard-question.dto.d.ts.map +0 -1
  261. package/dist/dtos/create-dashboard-question.dto.js +0 -105
  262. package/dist/dtos/create-dashboard-question.dto.js.map +0 -1
  263. package/dist/dtos/create-dashboard-variable.dto.d.ts +0 -19
  264. package/dist/dtos/create-dashboard-variable.dto.d.ts.map +0 -1
  265. package/dist/dtos/create-dashboard-variable.dto.js +0 -103
  266. package/dist/dtos/create-dashboard-variable.dto.js.map +0 -1
  267. package/dist/dtos/create-dashboard.dto.d.ts +0 -17
  268. package/dist/dtos/create-dashboard.dto.d.ts.map +0 -1
  269. package/dist/dtos/create-dashboard.dto.js +0 -102
  270. package/dist/dtos/create-dashboard.dto.js.map +0 -1
  271. package/dist/dtos/dashboard-variable-selection-dynamic-query.dto.d.ts +0 -8
  272. package/dist/dtos/dashboard-variable-selection-dynamic-query.dto.d.ts.map +0 -1
  273. package/dist/dtos/dashboard-variable-selection-dynamic-query.dto.js +0 -52
  274. package/dist/dtos/dashboard-variable-selection-dynamic-query.dto.js.map +0 -1
  275. package/dist/dtos/update-dashboard-layout.dto.d.ts +0 -8
  276. package/dist/dtos/update-dashboard-layout.dto.d.ts.map +0 -1
  277. package/dist/dtos/update-dashboard-layout.dto.js.map +0 -1
  278. package/dist/dtos/update-dashboard-question-sql-dataset-config.dto.d.ts +0 -13
  279. package/dist/dtos/update-dashboard-question-sql-dataset-config.dto.d.ts.map +0 -1
  280. package/dist/dtos/update-dashboard-question-sql-dataset-config.dto.js +0 -86
  281. package/dist/dtos/update-dashboard-question-sql-dataset-config.dto.js.map +0 -1
  282. package/dist/dtos/update-dashboard-question.dto.d.ts +0 -18
  283. package/dist/dtos/update-dashboard-question.dto.d.ts.map +0 -1
  284. package/dist/dtos/update-dashboard-question.dto.js +0 -112
  285. package/dist/dtos/update-dashboard-question.dto.js.map +0 -1
  286. package/dist/dtos/update-dashboard-variable.dto.d.ts +0 -16
  287. package/dist/dtos/update-dashboard-variable.dto.d.ts.map +0 -1
  288. package/dist/dtos/update-dashboard-variable.dto.js +0 -101
  289. package/dist/dtos/update-dashboard-variable.dto.js.map +0 -1
  290. package/dist/dtos/update-dashboard.dto.d.ts +0 -18
  291. package/dist/dtos/update-dashboard.dto.d.ts.map +0 -1
  292. package/dist/dtos/update-dashboard.dto.js +0 -108
  293. package/dist/dtos/update-dashboard.dto.js.map +0 -1
  294. package/dist/entities/dashboard-layout.entity.d.ts +0 -9
  295. package/dist/entities/dashboard-layout.entity.d.ts.map +0 -1
  296. package/dist/entities/dashboard-layout.entity.js +0 -41
  297. package/dist/entities/dashboard-layout.entity.js.map +0 -1
  298. package/dist/entities/dashboard-question-sql-dataset-config.entity.d.ts +0 -14
  299. package/dist/entities/dashboard-question-sql-dataset-config.entity.d.ts.map +0 -1
  300. package/dist/entities/dashboard-question-sql-dataset-config.entity.js +0 -66
  301. package/dist/entities/dashboard-question-sql-dataset-config.entity.js.map +0 -1
  302. package/dist/entities/dashboard-question.entity.d.ts +0 -17
  303. package/dist/entities/dashboard-question.entity.d.ts.map +0 -1
  304. package/dist/entities/dashboard-question.entity.js +0 -77
  305. package/dist/entities/dashboard-question.entity.js.map +0 -1
  306. package/dist/entities/dashboard-variable.entity.d.ts +0 -16
  307. package/dist/entities/dashboard-variable.entity.d.ts.map +0 -1
  308. package/dist/entities/dashboard-variable.entity.js +0 -79
  309. package/dist/entities/dashboard-variable.entity.js.map +0 -1
  310. package/dist/entities/dashboard.entity.d.ts +0 -16
  311. package/dist/entities/dashboard.entity.d.ts.map +0 -1
  312. package/dist/entities/dashboard.entity.js +0 -64
  313. package/dist/entities/dashboard.entity.js.map +0 -1
  314. package/dist/mappers/dashboard-mapper.d.ts +0 -6
  315. package/dist/mappers/dashboard-mapper.d.ts.map +0 -1
  316. package/dist/mappers/dashboard-mapper.js +0 -62
  317. package/dist/mappers/dashboard-mapper.js.map +0 -1
  318. package/dist/repository/dashboard-layout.repository.d.ts.map +0 -1
  319. package/dist/repository/dashboard-layout.repository.js +0 -34
  320. package/dist/repository/dashboard-layout.repository.js.map +0 -1
  321. package/dist/repository/dashboard-question-sql-dataset-config.repository.d.ts +0 -12
  322. package/dist/repository/dashboard-question-sql-dataset-config.repository.d.ts.map +0 -1
  323. package/dist/repository/dashboard-question-sql-dataset-config.repository.js.map +0 -1
  324. package/dist/repository/dashboard-question.repository.d.ts +0 -12
  325. package/dist/repository/dashboard-question.repository.d.ts.map +0 -1
  326. package/dist/repository/dashboard-question.repository.js +0 -34
  327. package/dist/repository/dashboard-question.repository.js.map +0 -1
  328. package/dist/repository/dashboard-variable.repository.d.ts +0 -12
  329. package/dist/repository/dashboard-variable.repository.d.ts.map +0 -1
  330. package/dist/repository/dashboard-variable.repository.js +0 -34
  331. package/dist/repository/dashboard-variable.repository.js.map +0 -1
  332. package/dist/repository/dashboard.repository.d.ts +0 -13
  333. package/dist/repository/dashboard.repository.d.ts.map +0 -1
  334. package/dist/repository/dashboard.repository.js +0 -104
  335. package/dist/repository/dashboard.repository.js.map +0 -1
  336. package/dist/services/dashboard-layout.service.d.ts +0 -20
  337. package/dist/services/dashboard-layout.service.d.ts.map +0 -1
  338. package/dist/services/dashboard-layout.service.js +0 -120
  339. package/dist/services/dashboard-layout.service.js.map +0 -1
  340. package/dist/services/dashboard-question-sql-dataset-config.service.d.ts +0 -12
  341. package/dist/services/dashboard-question-sql-dataset-config.service.d.ts.map +0 -1
  342. package/dist/services/dashboard-question-sql-dataset-config.service.js +0 -38
  343. package/dist/services/dashboard-question-sql-dataset-config.service.js.map +0 -1
  344. package/dist/services/dashboard-question.service.d.ts +0 -23
  345. package/dist/services/dashboard-question.service.d.ts.map +0 -1
  346. package/dist/services/dashboard-question.service.js +0 -135
  347. package/dist/services/dashboard-question.service.js.map +0 -1
  348. package/dist/services/dashboard-selection-providers/dashboard-variable-sql-dynamic-provider.service.d.ts +0 -12
  349. package/dist/services/dashboard-selection-providers/dashboard-variable-sql-dynamic-provider.service.d.ts.map +0 -1
  350. package/dist/services/dashboard-selection-providers/dashboard-variable-sql-dynamic-provider.service.js +0 -55
  351. package/dist/services/dashboard-selection-providers/dashboard-variable-sql-dynamic-provider.service.js.map +0 -1
  352. package/dist/services/dashboard-selection-providers/dashboard-variable-test-dynamic-provider.service.d.ts +0 -11
  353. package/dist/services/dashboard-selection-providers/dashboard-variable-test-dynamic-provider.service.d.ts.map +0 -1
  354. package/dist/services/dashboard-selection-providers/dashboard-variable-test-dynamic-provider.service.js +0 -45
  355. package/dist/services/dashboard-selection-providers/dashboard-variable-test-dynamic-provider.service.js.map +0 -1
  356. package/dist/services/dashboard-variable.service.d.ts +0 -13
  357. package/dist/services/dashboard-variable.service.d.ts.map +0 -1
  358. package/dist/services/dashboard-variable.service.js.map +0 -1
  359. package/dist/services/dashboard.service.d.ts +0 -29
  360. package/dist/services/dashboard.service.d.ts.map +0 -1
  361. package/dist/services/dashboard.service.js +0 -171
  362. package/dist/services/dashboard.service.js.map +0 -1
  363. package/dist/services/genai/mcp-handlers/solid-add-question-to-dashboard-mcp-handler.service.d.ts +0 -12
  364. package/dist/services/genai/mcp-handlers/solid-add-question-to-dashboard-mcp-handler.service.d.ts.map +0 -1
  365. package/dist/services/genai/mcp-handlers/solid-add-question-to-dashboard-mcp-handler.service.js +0 -41
  366. package/dist/services/genai/mcp-handlers/solid-add-question-to-dashboard-mcp-handler.service.js.map +0 -1
  367. package/dist/services/genai/mcp-handlers/solid-add-variable-to-dashboard-mcp-handler.service.d.ts +0 -12
  368. package/dist/services/genai/mcp-handlers/solid-add-variable-to-dashboard-mcp-handler.service.d.ts.map +0 -1
  369. package/dist/services/genai/mcp-handlers/solid-add-variable-to-dashboard-mcp-handler.service.js +0 -42
  370. package/dist/services/genai/mcp-handlers/solid-add-variable-to-dashboard-mcp-handler.service.js.map +0 -1
  371. package/dist/services/genai/mcp-handlers/solid-create-dashboard-mcp-handler.service.d.ts +0 -25
  372. package/dist/services/genai/mcp-handlers/solid-create-dashboard-mcp-handler.service.d.ts.map +0 -1
  373. package/dist/services/genai/mcp-handlers/solid-create-dashboard-mcp-handler.service.js +0 -116
  374. package/dist/services/genai/mcp-handlers/solid-create-dashboard-mcp-handler.service.js.map +0 -1
  375. package/dist/services/genai/mcp-handlers/solid-create-dashboard-question-mcp-handler.service.d.ts +0 -12
  376. package/dist/services/genai/mcp-handlers/solid-create-dashboard-question-mcp-handler.service.d.ts.map +0 -1
  377. package/dist/services/genai/mcp-handlers/solid-create-dashboard-question-mcp-handler.service.js +0 -37
  378. package/dist/services/genai/mcp-handlers/solid-create-dashboard-question-mcp-handler.service.js.map +0 -1
  379. package/dist/services/genai/mcp-handlers/solid-create-dashboard-question-sql-dataset-config-mcp-handler.service.d.ts +0 -12
  380. package/dist/services/genai/mcp-handlers/solid-create-dashboard-question-sql-dataset-config-mcp-handler.service.d.ts.map +0 -1
  381. package/dist/services/genai/mcp-handlers/solid-create-dashboard-question-sql-dataset-config-mcp-handler.service.js +0 -38
  382. package/dist/services/genai/mcp-handlers/solid-create-dashboard-question-sql-dataset-config-mcp-handler.service.js.map +0 -1
  383. package/dist/services/genai/mcp-handlers/solid-create-dashboard-widget-mcp-handler.service.d.ts +0 -12
  384. package/dist/services/genai/mcp-handlers/solid-create-dashboard-widget-mcp-handler.service.d.ts.map +0 -1
  385. package/dist/services/genai/mcp-handlers/solid-create-dashboard-widget-mcp-handler.service.js +0 -38
  386. package/dist/services/genai/mcp-handlers/solid-create-dashboard-widget-mcp-handler.service.js.map +0 -1
  387. package/dist/services/question-data-providers/chartjs-sql-data-provider.service.d.ts +0 -34
  388. package/dist/services/question-data-providers/chartjs-sql-data-provider.service.d.ts.map +0 -1
  389. package/dist/services/question-data-providers/chartjs-sql-data-provider.service.js +0 -90
  390. package/dist/services/question-data-providers/chartjs-sql-data-provider.service.js.map +0 -1
  391. package/dist/services/question-data-providers/helpers.d.ts +0 -7
  392. package/dist/services/question-data-providers/helpers.d.ts.map +0 -1
  393. package/dist/services/question-data-providers/helpers.js +0 -25
  394. package/dist/services/question-data-providers/helpers.js.map +0 -1
  395. package/dist/services/question-data-providers/prime-react-datatable-sql-data-provider.service.d.ts +0 -14
  396. package/dist/services/question-data-providers/prime-react-datatable-sql-data-provider.service.d.ts.map +0 -1
  397. package/dist/services/question-data-providers/prime-react-datatable-sql-data-provider.service.js +0 -71
  398. package/dist/services/question-data-providers/prime-react-datatable-sql-data-provider.service.js.map +0 -1
  399. package/dist/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.d.ts +0 -16
  400. package/dist/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.d.ts.map +0 -1
  401. package/dist/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.js +0 -93
  402. package/dist/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.js.map +0 -1
  403. package/dist/services/selection-providers/list-of-dashboard-question-providers-selection-provider.service.d.ts +0 -11
  404. package/dist/services/selection-providers/list-of-dashboard-question-providers-selection-provider.service.d.ts.map +0 -1
  405. package/dist/services/selection-providers/list-of-dashboard-question-providers-selection-provider.service.js +0 -49
  406. package/dist/services/selection-providers/list-of-dashboard-question-providers-selection-provider.service.js.map +0 -1
  407. package/dist/services/selection-providers/list-of-dashboard-variable-providers-selection-provider.service.d.ts +0 -11
  408. package/dist/services/selection-providers/list-of-dashboard-variable-providers-selection-provider.service.d.ts.map +0 -1
  409. package/dist/services/selection-providers/list-of-dashboard-variable-providers-selection-provider.service.js +0 -47
  410. package/dist/services/selection-providers/list-of-dashboard-variable-providers-selection-provider.service.js.map +0 -1
  411. package/dist/services/sql-expression-resolver.service.d.ts +0 -12
  412. package/dist/services/sql-expression-resolver.service.d.ts.map +0 -1
  413. package/dist/services/sql-expression-resolver.service.js +0 -121
  414. package/dist/services/sql-expression-resolver.service.js.map +0 -1
  415. package/dist/subscribers/dashboard-question-sql-dataset-config.subscriber.d.ts +0 -16
  416. package/dist/subscribers/dashboard-question-sql-dataset-config.subscriber.d.ts.map +0 -1
  417. package/dist/subscribers/dashboard-question-sql-dataset-config.subscriber.js +0 -72
  418. package/dist/subscribers/dashboard-question-sql-dataset-config.subscriber.js.map +0 -1
  419. package/dist/subscribers/dashboard-question.subscriber.d.ts +0 -16
  420. package/dist/subscribers/dashboard-question.subscriber.d.ts.map +0 -1
  421. package/dist/subscribers/dashboard-question.subscriber.js +0 -72
  422. package/dist/subscribers/dashboard-question.subscriber.js.map +0 -1
  423. package/dist/subscribers/dashboard-variable.subscriber.d.ts +0 -16
  424. package/dist/subscribers/dashboard-variable.subscriber.d.ts.map +0 -1
  425. package/dist/subscribers/dashboard-variable.subscriber.js +0 -72
  426. package/dist/subscribers/dashboard-variable.subscriber.js.map +0 -1
  427. package/dist/subscribers/dashboard.subscriber.d.ts +0 -16
  428. package/dist/subscribers/dashboard.subscriber.d.ts.map +0 -1
  429. package/dist/subscribers/dashboard.subscriber.js +0 -71
  430. package/dist/subscribers/dashboard.subscriber.js.map +0 -1
  431. package/src/controllers/dashboard-layout.controller.ts +0 -106
  432. package/src/controllers/dashboard-question-sql-dataset-config.controller.ts +0 -93
  433. package/src/controllers/dashboard-question.controller.ts +0 -104
  434. package/src/decorators/dashboard-question-data-provider.decorator.ts +0 -7
  435. package/src/decorators/dashboard-selection-provider.decorator.ts +0 -7
  436. package/src/dtos/create-dashboard-layout.dto.ts +0 -31
  437. package/src/dtos/create-dashboard-question-sql-dataset-config.dto.ts +0 -42
  438. package/src/dtos/create-dashboard-question.dto.ts +0 -62
  439. package/src/dtos/create-dashboard-variable.dto.ts +0 -60
  440. package/src/dtos/create-dashboard.dto.ts +0 -61
  441. package/src/dtos/dashboard-variable-selection-dynamic-query.dto.ts +0 -29
  442. package/src/dtos/update-dashboard-layout.dto.ts +0 -30
  443. package/src/dtos/update-dashboard-question-sql-dataset-config.dto.ts +0 -49
  444. package/src/dtos/update-dashboard-question.dto.ts +0 -67
  445. package/src/dtos/update-dashboard-variable.dto.ts +0 -58
  446. package/src/dtos/update-dashboard.dto.ts +0 -65
  447. package/src/entities/dashboard-layout.entity.ts +0 -18
  448. package/src/entities/dashboard-question-sql-dataset-config.entity.ts +0 -37
  449. package/src/entities/dashboard-question.entity.ts +0 -46
  450. package/src/entities/dashboard-variable.entity.ts +0 -44
  451. package/src/entities/dashboard.entity.ts +0 -36
  452. package/src/mappers/dashboard-mapper.ts +0 -53
  453. package/src/repository/dashboard-layout.repository.ts +0 -17
  454. package/src/repository/dashboard-question-sql-dataset-config.repository.ts +0 -17
  455. package/src/repository/dashboard-question.repository.ts +0 -17
  456. package/src/repository/dashboard-variable.repository.ts +0 -17
  457. package/src/repository/dashboard.repository.ts +0 -101
  458. package/src/services/dashboard-layout.service.ts +0 -111
  459. package/src/services/dashboard-question-sql-dataset-config.service.ts +0 -25
  460. package/src/services/dashboard-question.service.ts +0 -150
  461. package/src/services/dashboard-selection-providers/dashboard-variable-sql-dynamic-provider.service.ts +0 -56
  462. package/src/services/dashboard-selection-providers/dashboard-variable-test-dynamic-provider.service.ts +0 -37
  463. package/src/services/dashboard-variable.service.ts +0 -27
  464. package/src/services/dashboard.service.ts +0 -148
  465. package/src/services/genai/mcp-handlers/solid-add-question-to-dashboard-mcp-handler.service.ts +0 -43
  466. package/src/services/genai/mcp-handlers/solid-add-variable-to-dashboard-mcp-handler.service.ts +0 -44
  467. package/src/services/genai/mcp-handlers/solid-create-dashboard-mcp-handler.service.ts +0 -114
  468. package/src/services/genai/mcp-handlers/solid-create-dashboard-question-mcp-handler.service.ts +0 -38
  469. package/src/services/genai/mcp-handlers/solid-create-dashboard-question-sql-dataset-config-mcp-handler.service.ts +0 -40
  470. package/src/services/genai/mcp-handlers/solid-create-dashboard-widget-mcp-handler.service.ts +0 -39
  471. package/src/services/question-data-providers/chartjs-sql-data-provider.service.ts +0 -121
  472. package/src/services/question-data-providers/helpers.ts +0 -30
  473. package/src/services/question-data-providers/prime-react-datatable-sql-data-provider.service.ts +0 -74
  474. package/src/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.ts +0 -115
  475. package/src/services/selection-providers/list-of-dashboard-question-providers-selection-provider.service.ts +0 -44
  476. package/src/services/selection-providers/list-of-dashboard-variable-providers-selection-provider.service.ts +0 -41
  477. package/src/services/sql-expression-resolver.service.ts +0 -140
  478. package/src/subscribers/dashboard-question-sql-dataset-config.subscriber.ts +0 -61
  479. package/src/subscribers/dashboard-question.subscriber.ts +0 -62
  480. package/src/subscribers/dashboard-variable.subscriber.ts +0 -63
  481. package/src/subscribers/dashboard.subscriber.ts +0 -62
@@ -0,0 +1,408 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ var DashboardRuntimeService_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.DashboardRuntimeService = void 0;
17
+ const common_1 = require("@nestjs/common");
18
+ const qs_1 = __importDefault(require("qs"));
19
+ const error_messages_1 = require("../constants/error-messages");
20
+ const module_metadata_entity_1 = require("../entities/module-metadata.entity");
21
+ const module_metadata_helper_service_1 = require("../helpers/module-metadata-helper.service");
22
+ const solid_registry_1 = require("../helpers/solid-registry");
23
+ const dashboard_user_layout_service_1 = require("./dashboard-user-layout.service");
24
+ let DashboardRuntimeService = DashboardRuntimeService_1 = class DashboardRuntimeService {
25
+ constructor(moduleMetadataHelperService, solidRegistry, dashboardUserLayoutService) {
26
+ this.moduleMetadataHelperService = moduleMetadataHelperService;
27
+ this.solidRegistry = solidRegistry;
28
+ this.dashboardUserLayoutService = dashboardUserLayoutService;
29
+ this.logger = new common_1.Logger(DashboardRuntimeService_1.name);
30
+ }
31
+ async getDashboardDefinition(moduleName, dashboardName) {
32
+ const moduleMetadata = await this.getModuleMetadata(moduleName);
33
+ const dashboards = this.getDashboards(moduleMetadata);
34
+ const dashboard = dashboards.find((d) => d?.name === dashboardName || d?.routeName === dashboardName);
35
+ if (!dashboard) {
36
+ throw new common_1.NotFoundException(`Dashboard ${dashboardName} not found for module ${moduleName}.`);
37
+ }
38
+ return dashboard;
39
+ }
40
+ async getWidgetData(moduleName, dashboardName, widgetName, request = {}, activeUser) {
41
+ const dashboardDefinition = await this.getDashboardDefinition(moduleName, dashboardName);
42
+ return this.getWidgetDataFromDefinition(dashboardDefinition, moduleName, dashboardName, widgetName, request, activeUser);
43
+ }
44
+ async getDashboardData(moduleName, dashboardName, request = {}, activeUser) {
45
+ const dashboardDefinition = await this.getDashboardDefinition(moduleName, dashboardName);
46
+ const allWidgets = Array.isArray(dashboardDefinition.widgets) ? dashboardDefinition.widgets : [];
47
+ const targetWidgets = request.widgetNames?.length
48
+ ? allWidgets.filter((widget) => request.widgetNames.includes(widget.id) || request.widgetNames.includes(widget.name))
49
+ : allWidgets;
50
+ const widgets = await Promise.all(targetWidgets.map((widget) => this.getWidgetDataFromDefinition(dashboardDefinition, moduleName, dashboardName, widget.id ?? widget.name, request, activeUser)));
51
+ return {
52
+ moduleName,
53
+ dashboardName: dashboardDefinition.name,
54
+ variables: request.variables ?? {},
55
+ widgets,
56
+ };
57
+ }
58
+ async getVariableOptions(moduleName, dashboardName, variableName, query) {
59
+ const dashboardDefinition = await this.getDashboardDefinition(moduleName, dashboardName);
60
+ const variable = (dashboardDefinition.variables ?? []).find((v) => v.name === variableName);
61
+ if (!variable) {
62
+ throw new common_1.NotFoundException(`Variable ${variableName} not found in dashboard ${dashboardName}.`);
63
+ }
64
+ if (variable.type === 'selectionStatic') {
65
+ const values = Array.isArray(variable.selectionStaticValues) ? variable.selectionStaticValues : [];
66
+ return values.map((entry) => {
67
+ const [value, label] = `${entry}`.split(':');
68
+ return { label: label ?? value, value };
69
+ });
70
+ }
71
+ if (variable.type !== 'selectionDynamic') {
72
+ return [];
73
+ }
74
+ const providerName = variable?.selectionConfig?.providerName;
75
+ if (!providerName) {
76
+ throw new common_1.NotFoundException(`Variable ${variableName} does not define a dynamic selection provider.`);
77
+ }
78
+ const selectionProvider = this.solidRegistry.getSelectionProviderInstance(providerName);
79
+ if (!selectionProvider) {
80
+ throw new common_1.NotFoundException(error_messages_1.ERROR_MESSAGES.PROVIDER_NOT_FOUND(providerName));
81
+ }
82
+ const providerContext = {
83
+ ...(variable?.selectionConfig?.providerContext ?? {}),
84
+ limit: query?.limit ?? 10,
85
+ offset: query?.offset ?? 0,
86
+ formValues: this.parseFormValues(query?.formValues),
87
+ };
88
+ if (query.optionValue) {
89
+ return selectionProvider.value(query.optionValue, providerContext);
90
+ }
91
+ return selectionProvider.values(query?.query ?? '', providerContext);
92
+ }
93
+ async getLayout(moduleName, dashboardName, activeUser) {
94
+ const dashboardDefinition = await this.getDashboardDefinition(moduleName, dashboardName);
95
+ const defaultLayout = dashboardDefinition.defaultLayout ?? {};
96
+ const userId = activeUser?.sub ?? null;
97
+ let userLayoutRecord = null;
98
+ try {
99
+ userLayoutRecord = userId
100
+ ? await this.dashboardUserLayoutService.repo.findOne({
101
+ where: {
102
+ user: { id: userId },
103
+ module: { name: moduleName },
104
+ dashboardName: dashboardDefinition.name,
105
+ },
106
+ })
107
+ : null;
108
+ }
109
+ catch (err) {
110
+ const isEntityMetadataMissing = `${err?.message ?? ''}`.includes('No metadata for "DashboardUserLayout" was found');
111
+ if (!isEntityMetadataMissing)
112
+ throw err;
113
+ this.logger.warn('DashboardUserLayout entity metadata is not registered yet. Returning default layout fallback.');
114
+ }
115
+ const userLayout = this.parseLayoutJson(userLayoutRecord?.layoutJson);
116
+ const effectiveLayout = this.mergeLayouts(defaultLayout, userLayout);
117
+ return {
118
+ moduleName,
119
+ dashboardName: dashboardDefinition.name,
120
+ userId,
121
+ defaultLayout,
122
+ userLayout,
123
+ effectiveLayout,
124
+ persisted: !!userLayoutRecord,
125
+ };
126
+ }
127
+ async saveLayout(moduleName, dashboardName, dto, activeUser) {
128
+ const dashboardDefinition = await this.getDashboardDefinition(moduleName, dashboardName);
129
+ const resolvedDashboardName = dashboardDefinition?.name ?? dashboardName;
130
+ const resolvedLayoutJson = this.resolveLayoutPayload(dto);
131
+ const userId = activeUser?.sub;
132
+ if (!userId) {
133
+ return {
134
+ moduleName,
135
+ dashboardName: resolvedDashboardName,
136
+ userId: null,
137
+ persisted: false,
138
+ message: 'Unable to persist layout without active user context.',
139
+ layoutJson: resolvedLayoutJson,
140
+ };
141
+ }
142
+ const layoutJsonAsString = typeof resolvedLayoutJson === 'string'
143
+ ? resolvedLayoutJson
144
+ : JSON.stringify(resolvedLayoutJson ?? {});
145
+ let savedLayout = null;
146
+ try {
147
+ const layoutRepo = this.dashboardUserLayoutService.repo;
148
+ const existing = await layoutRepo.findOne({
149
+ where: {
150
+ user: { id: userId },
151
+ module: { name: moduleName },
152
+ dashboardName: resolvedDashboardName,
153
+ },
154
+ });
155
+ const moduleRepo = this.dashboardUserLayoutService.entityManager.getRepository(module_metadata_entity_1.ModuleMetadata);
156
+ const moduleEntity = await moduleRepo.findOne({ where: { name: moduleName } });
157
+ if (!moduleEntity) {
158
+ throw new common_1.NotFoundException(`Module ${moduleName} not found.`);
159
+ }
160
+ const toSave = layoutRepo.create({
161
+ ...(existing ? { id: existing.id } : {}),
162
+ user: { id: userId },
163
+ module: { id: moduleEntity.id },
164
+ dashboardName: resolvedDashboardName,
165
+ layoutJson: layoutJsonAsString,
166
+ version: (existing?.version ?? 0) + 1,
167
+ });
168
+ savedLayout = await layoutRepo.save(toSave);
169
+ }
170
+ catch (err) {
171
+ const isEntityMetadataMissing = `${err?.message ?? ''}`.includes('No metadata for "DashboardUserLayout" was found');
172
+ if (!isEntityMetadataMissing)
173
+ throw err;
174
+ this.logger.warn('DashboardUserLayout entity metadata is not registered yet. Returning non-persistent save fallback.');
175
+ return {
176
+ moduleName,
177
+ dashboardName: resolvedDashboardName,
178
+ userId,
179
+ persisted: false,
180
+ message: 'Layout model generated but entity is not registered in TypeORM yet. Please add DashboardUserLayout to module TypeOrm entities and restart.',
181
+ layoutJson: resolvedLayoutJson,
182
+ };
183
+ }
184
+ return {
185
+ moduleName,
186
+ dashboardName: resolvedDashboardName,
187
+ userId,
188
+ persisted: true,
189
+ message: 'Layout saved successfully.',
190
+ layoutJson: this.parseLayoutJson(savedLayout.layoutJson),
191
+ };
192
+ }
193
+ async getModuleMetadata(moduleName) {
194
+ const configPath = await this.moduleMetadataHelperService.getModuleMetadataFilePath(moduleName);
195
+ const moduleMetadata = await this.moduleMetadataHelperService.getModuleMetadataConfiguration(configPath);
196
+ if (!moduleMetadata) {
197
+ throw new common_1.NotFoundException(error_messages_1.ERROR_MESSAGES.MODULE_NOT_FOUND(moduleName));
198
+ }
199
+ return moduleMetadata;
200
+ }
201
+ getDashboards(moduleMetadata) {
202
+ return Array.isArray(moduleMetadata?.dashboards) ? moduleMetadata.dashboards : [];
203
+ }
204
+ findWidgetDefinition(dashboardDefinition, widgetName) {
205
+ const widgets = Array.isArray(dashboardDefinition.widgets) ? dashboardDefinition.widgets : [];
206
+ const widgetDefinition = widgets.find((widget) => widget?.id === widgetName || widget?.name === widgetName);
207
+ if (!widgetDefinition) {
208
+ throw new common_1.NotFoundException(`Widget ${widgetName} not found in dashboard ${dashboardDefinition?.name ?? ''}.`);
209
+ }
210
+ return widgetDefinition;
211
+ }
212
+ async getWidgetDataFromDefinition(dashboardDefinition, moduleName, dashboardName, widgetName, request = {}, activeUser) {
213
+ const widgetDefinition = this.findWidgetDefinition(dashboardDefinition, widgetName);
214
+ const resolvedWidgetName = widgetDefinition.id ?? widgetDefinition.name ?? widgetName;
215
+ const providerName = widgetDefinition.dataProvider;
216
+ if (!this.hasDashboardWidgetPermission(activeUser, dashboardDefinition?.name ?? dashboardName, resolvedWidgetName)) {
217
+ return this.buildUnauthorizedWidgetResponse(dashboardDefinition?.name ?? dashboardName, resolvedWidgetName, providerName);
218
+ }
219
+ if (!providerName) {
220
+ throw new common_1.NotFoundException(`Widget ${widgetName} is missing dataProvider definition.`);
221
+ }
222
+ const provider = this.solidRegistry.getDashboardWidgetDataProviderInstance(providerName);
223
+ if (!provider) {
224
+ throw new common_1.NotFoundException(error_messages_1.ERROR_MESSAGES.PROVIDER_NOT_FOUND(providerName));
225
+ }
226
+ const providerContext = {
227
+ ...(widgetDefinition.providerContext ?? {}),
228
+ ...(request.providerContext ?? {}),
229
+ };
230
+ const runtimeContext = {
231
+ moduleName,
232
+ dashboardName,
233
+ widgetName: resolvedWidgetName,
234
+ variables: request.variables ?? {},
235
+ providerContext,
236
+ activeUser,
237
+ };
238
+ const startTime = Date.now();
239
+ const providerResponse = await provider.getData(widgetDefinition, runtimeContext);
240
+ const durationMs = Date.now() - startTime;
241
+ if (providerResponse && typeof providerResponse === 'object' && providerResponse.data !== undefined) {
242
+ const nextMeta = {
243
+ ...(providerResponse.meta ?? {}),
244
+ providerName,
245
+ widgetName: runtimeContext.widgetName,
246
+ durationMs: providerResponse?.meta?.durationMs ?? durationMs,
247
+ generatedAt: providerResponse?.meta?.generatedAt ?? new Date().toISOString(),
248
+ };
249
+ return {
250
+ ...providerResponse,
251
+ meta: nextMeta,
252
+ };
253
+ }
254
+ this.logger.debug(`Widget provider ${providerName} returned a non-envelope payload for ${runtimeContext.widgetName}. Normalizing response.`);
255
+ return {
256
+ meta: {
257
+ providerName,
258
+ widgetName: runtimeContext.widgetName,
259
+ durationMs,
260
+ generatedAt: new Date().toISOString(),
261
+ },
262
+ data: providerResponse,
263
+ };
264
+ }
265
+ parseFormValues(formValues) {
266
+ if (!formValues) {
267
+ return {};
268
+ }
269
+ if (typeof formValues === 'object') {
270
+ return formValues;
271
+ }
272
+ try {
273
+ const parsedFromQueryString = qs_1.default.parse(formValues);
274
+ if (parsedFromQueryString && typeof parsedFromQueryString === 'object') {
275
+ if (parsedFromQueryString['formValues'] && typeof parsedFromQueryString['formValues'] === 'object') {
276
+ return parsedFromQueryString['formValues'];
277
+ }
278
+ return parsedFromQueryString;
279
+ }
280
+ }
281
+ catch (err) {
282
+ }
283
+ try {
284
+ return JSON.parse(formValues);
285
+ }
286
+ catch (err) {
287
+ return {};
288
+ }
289
+ }
290
+ hasDashboardWidgetPermission(activeUser, dashboardName, widgetName) {
291
+ const permissions = Array.isArray(activeUser?.permissions) ? activeUser.permissions : [];
292
+ if (!dashboardName || !widgetName || permissions.length === 0) {
293
+ return false;
294
+ }
295
+ return permissions.some((permission) => this.matchesDashboardWidgetPermission(permission, dashboardName, widgetName));
296
+ }
297
+ matchesDashboardWidgetPermission(permission, dashboardName, widgetName) {
298
+ const match = /^dashboard:([^:]+):(.+)$/.exec(`${permission ?? ''}`.trim());
299
+ if (!match) {
300
+ return false;
301
+ }
302
+ const [, permissionDashboardName, widgetPattern] = match;
303
+ if (permissionDashboardName !== dashboardName || !widgetPattern) {
304
+ return false;
305
+ }
306
+ if (widgetPattern === '*') {
307
+ return true;
308
+ }
309
+ if (widgetPattern === widgetName) {
310
+ return true;
311
+ }
312
+ try {
313
+ return new RegExp(widgetPattern).test(widgetName);
314
+ }
315
+ catch {
316
+ return false;
317
+ }
318
+ }
319
+ buildUnauthorizedWidgetResponse(dashboardName, widgetName, providerName) {
320
+ return {
321
+ meta: {
322
+ providerName: providerName ?? null,
323
+ widgetName,
324
+ durationMs: 0,
325
+ generatedAt: new Date().toISOString(),
326
+ unauthorized: true,
327
+ permissionExpression: `dashboard:${dashboardName}:${widgetName}`,
328
+ },
329
+ data: null,
330
+ uiHints: {
331
+ state: 'unauthorized',
332
+ message: 'Unauthorized',
333
+ },
334
+ };
335
+ }
336
+ parseLayoutJson(layoutJson) {
337
+ if (layoutJson === null || layoutJson === undefined)
338
+ return null;
339
+ if (typeof layoutJson !== 'string')
340
+ return layoutJson;
341
+ try {
342
+ return JSON.parse(layoutJson);
343
+ }
344
+ catch {
345
+ return layoutJson;
346
+ }
347
+ }
348
+ resolveLayoutPayload(dto) {
349
+ if (!dto)
350
+ return {};
351
+ if (dto.layoutJson !== undefined)
352
+ return dto.layoutJson;
353
+ if (dto.layout !== undefined)
354
+ return dto.layout;
355
+ return dto;
356
+ }
357
+ mergeLayouts(defaultLayout, userLayout) {
358
+ if (!defaultLayout && !userLayout)
359
+ return {};
360
+ if (!defaultLayout)
361
+ return userLayout ?? {};
362
+ if (!userLayout)
363
+ return defaultLayout ?? {};
364
+ const defaultItems = Array.isArray(defaultLayout?.items) ? defaultLayout.items : [];
365
+ const userItems = Array.isArray(userLayout?.items) ? userLayout.items : [];
366
+ if (!defaultItems.length) {
367
+ return {
368
+ ...defaultLayout,
369
+ ...userLayout,
370
+ items: userItems,
371
+ };
372
+ }
373
+ const userByWidget = new Map();
374
+ userItems.forEach((item) => {
375
+ const key = item?.widgetId ?? item?.id;
376
+ if (key)
377
+ userByWidget.set(key, item);
378
+ });
379
+ const mergedDefaultItems = defaultItems.map((baseItem) => {
380
+ const key = baseItem?.widgetId ?? baseItem?.id;
381
+ if (!key)
382
+ return baseItem;
383
+ const override = userByWidget.get(key);
384
+ return override ? { ...baseItem, ...override, widgetId: key } : baseItem;
385
+ });
386
+ const defaultKeys = new Set(defaultItems
387
+ .map((item) => item?.widgetId ?? item?.id)
388
+ .filter((value) => !!value));
389
+ const userOnlyItems = userItems.filter((item) => {
390
+ const key = item?.widgetId ?? item?.id;
391
+ return !!key && !defaultKeys.has(key);
392
+ });
393
+ return {
394
+ ...defaultLayout,
395
+ ...userLayout,
396
+ columns: userLayout?.columns ?? defaultLayout?.columns ?? 12,
397
+ items: [...mergedDefaultItems, ...userOnlyItems],
398
+ };
399
+ }
400
+ };
401
+ exports.DashboardRuntimeService = DashboardRuntimeService;
402
+ exports.DashboardRuntimeService = DashboardRuntimeService = DashboardRuntimeService_1 = __decorate([
403
+ (0, common_1.Injectable)(),
404
+ __metadata("design:paramtypes", [module_metadata_helper_service_1.ModuleMetadataHelperService,
405
+ solid_registry_1.SolidRegistry,
406
+ dashboard_user_layout_service_1.DashboardUserLayoutService])
407
+ ], DashboardRuntimeService);
408
+ //# sourceMappingURL=dashboard-runtime.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard-runtime.service.js","sourceRoot":"","sources":["../../src/services/dashboard-runtime.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAuE;AACvE,4CAAoB;AACpB,gEAA8D;AAG9D,+EAAqE;AACrE,8FAAyF;AACzF,8DAA2D;AAG3D,mFAA6E;AAGtE,IAAM,uBAAuB,+BAA7B,MAAM,uBAAuB;IAGhC,YACqB,2BAAwD,EACxD,aAA4B,EAC5B,0BAAsD;QAFtD,gCAA2B,GAA3B,2BAA2B,CAA6B;QACxD,kBAAa,GAAb,aAAa,CAAe;QAC5B,+BAA0B,GAA1B,0BAA0B,CAA4B;QAL1D,WAAM,GAAG,IAAI,eAAM,CAAC,yBAAuB,CAAC,IAAI,CAAC,CAAC;IAM/D,CAAC;IAEL,KAAK,CAAC,sBAAsB,CAAC,UAAkB,EAAE,aAAqB;QAClE,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAChE,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QACtD,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,aAAa,IAAI,CAAC,EAAE,SAAS,KAAK,aAAa,CAAC,CAAC;QAEtG,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,MAAM,IAAI,0BAAiB,CAAC,aAAa,aAAa,yBAAyB,UAAU,GAAG,CAAC,CAAC;QAClG,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,aAAa,CACf,UAAkB,EAClB,aAAqB,EACrB,UAAkB,EAClB,UAAyC,EAAE,EAC3C,UAA2B;QAE3B,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QACzF,OAAO,IAAI,CAAC,2BAA2B,CAAC,mBAAmB,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAC7H,CAAC;IAED,KAAK,CAAC,gBAAgB,CAClB,UAAkB,EAClB,aAAqB,EACrB,UAAwC,EAAE,EAC1C,UAA2B;QAE3B,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QACzF,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAEjG,MAAM,aAAa,GAAG,OAAO,CAAC,WAAW,EAAE,MAAM;YAC7C,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACrH,CAAC,CAAC,UAAU,CAAC;QAEjB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,2BAA2B,CAC1D,mBAAmB,EACnB,UAAU,EACV,aAAa,EACb,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,IAAI,EACxB,OAAO,EACP,UAAU,CACb,CAAC,CACL,CAAC;QAEF,OAAO;YACH,UAAU;YACV,aAAa,EAAE,mBAAmB,CAAC,IAAI;YACvC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;YAClC,OAAO;SACV,CAAC;IACN,CAAC;IAED,KAAK,CAAC,kBAAkB,CACpB,UAAkB,EAClB,aAAqB,EACrB,YAAoB,EACpB,KAAuC;QAEvC,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QACzF,MAAM,QAAQ,GAAG,CAAC,mBAAmB,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;QAE5F,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,MAAM,IAAI,0BAAiB,CAAC,YAAY,YAAY,2BAA2B,aAAa,GAAG,CAAC,CAAC;QACrG,CAAC;QAED,IAAI,QAAQ,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;YACnG,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAa,EAAE,EAAE;gBAChC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC7C,OAAO,EAAE,KAAK,EAAE,KAAK,IAAI,KAAK,EAAE,KAAK,EAAE,CAAC;YAC5C,CAAC,CAAC,CAAC;QACP,CAAC;QAED,IAAI,QAAQ,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;YACvC,OAAO,EAAE,CAAC;QACd,CAAC;QAED,MAAM,YAAY,GAAG,QAAQ,EAAE,eAAe,EAAE,YAAY,CAAC;QAC7D,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,MAAM,IAAI,0BAAiB,CAAC,YAAY,YAAY,gDAAgD,CAAC,CAAC;QAC1G,CAAC;QAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,4BAA4B,CAAC,YAAY,CAAC,CAAC;QACxF,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACrB,MAAM,IAAI,0BAAiB,CAAC,+BAAc,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC;QACjF,CAAC;QAED,MAAM,eAAe,GAAG;YACpB,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,eAAe,IAAI,EAAE,CAAC;YACrD,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE;YACzB,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC;YAC1B,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC;SACtD,CAAC;QAEF,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACpB,OAAO,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,eAAsB,CAAC,CAAC;QAC9E,CAAC;QAED,OAAO,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE,EAAE,eAAsB,CAAC,CAAC;IAChF,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,UAAkB,EAAE,aAAqB,EAAE,UAA2B;QAClF,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QACzF,MAAM,aAAa,GAAG,mBAAmB,CAAC,aAAa,IAAI,EAAE,CAAC;QAC9D,MAAM,MAAM,GAAG,UAAU,EAAE,GAAG,IAAI,IAAI,CAAC;QACvC,IAAI,gBAAgB,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC;YACD,gBAAgB,GAAG,MAAM;gBACrB,CAAC,CAAC,MAAM,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC;oBACjD,KAAK,EAAE;wBACH,IAAI,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;wBACpB,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;wBAC5B,aAAa,EAAE,mBAAmB,CAAC,IAAI;qBACnC;iBACX,CAAC;gBACF,CAAC,CAAC,IAAI,CAAC;QACf,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAChB,MAAM,uBAAuB,GAAG,GAAG,GAAG,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC,CAAC;YACpH,IAAI,CAAC,uBAAuB;gBAAE,MAAM,GAAG,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+FAA+F,CAAC,CAAC;QACtH,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;QACtE,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;QAErE,OAAO;YACH,UAAU;YACV,aAAa,EAAE,mBAAmB,CAAC,IAAI;YACvC,MAAM;YACN,aAAa;YACb,UAAU;YACV,eAAe;YACf,SAAS,EAAE,CAAC,CAAC,gBAAgB;SAChC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,UAAU,CACZ,UAAkB,EAClB,aAAqB,EACrB,GAA2B,EAC3B,UAA2B;QAE3B,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QACzF,MAAM,qBAAqB,GAAG,mBAAmB,EAAE,IAAI,IAAI,aAAa,CAAC;QACzE,MAAM,kBAAkB,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,UAAU,EAAE,GAAG,CAAC;QAC/B,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO;gBACH,UAAU;gBACV,aAAa,EAAE,qBAAqB;gBACpC,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,KAAK;gBAChB,OAAO,EAAE,uDAAuD;gBAChE,UAAU,EAAE,kBAAkB;aACjC,CAAC;QACN,CAAC;QACD,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,KAAK,QAAQ;YAC7D,CAAC,CAAC,kBAAkB;YACpB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;QAC/C,IAAI,WAAW,GAAQ,IAAI,CAAC;QAC5B,IAAI,CAAC;YACD,MAAM,UAAU,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC;YACxD,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;gBACtC,KAAK,EAAE;oBACH,IAAI,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;oBACpB,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;oBAC5B,aAAa,EAAE,qBAAqB;iBAChC;aACX,CAAC,CAAC;YAEH,MAAM,UAAU,GAAG,IAAI,CAAC,0BAA0B,CAAC,aAAa,CAAC,aAAa,CAAC,uCAAc,CAAC,CAAC;YAC/F,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAS,EAAE,CAAC,CAAC;YAEtF,IAAI,CAAC,YAAY,EAAE,CAAC;gBAChB,MAAM,IAAI,0BAAiB,CAAC,UAAU,UAAU,aAAa,CAAC,CAAC;YACnE,CAAC;YAED,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;gBAC7B,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxC,IAAI,EAAE,EAAE,EAAE,EAAE,MAAM,EAAS;gBAC3B,MAAM,EAAE,EAAE,EAAE,EAAE,YAAY,CAAC,EAAE,EAAS;gBACtC,aAAa,EAAE,qBAAqB;gBACpC,UAAU,EAAE,kBAAkB;gBAC9B,OAAO,EAAE,CAAC,QAAQ,EAAE,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC;aACjC,CAAC,CAAC;YAEV,WAAW,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAChB,MAAM,uBAAuB,GAAG,GAAG,GAAG,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC,CAAC;YACpH,IAAI,CAAC,uBAAuB;gBAAE,MAAM,GAAG,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oGAAoG,CAAC,CAAC;YACvH,OAAO;gBACH,UAAU;gBACV,aAAa,EAAE,qBAAqB;gBACpC,MAAM;gBACN,SAAS,EAAE,KAAK;gBAChB,OAAO,EAAE,4IAA4I;gBACrJ,UAAU,EAAE,kBAAkB;aACjC,CAAC;QACN,CAAC;QAED,OAAO;YACH,UAAU;YACV,aAAa,EAAE,qBAAqB;YACpC,MAAM;YACN,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,4BAA4B;YACrC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,UAAU,CAAC;SAC3D,CAAC;IACN,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,UAAkB;QAC9C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC;QAChG,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAAC,8BAA8B,CAAC,UAAU,CAAC,CAAC;QAEzG,IAAI,CAAC,cAAc,EAAE,CAAC;YAClB,MAAM,IAAI,0BAAiB,CAAC,+BAAc,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;QAC7E,CAAC;QAED,OAAO,cAAc,CAAC;IAC1B,CAAC;IAEO,aAAa,CAAC,cAAmB;QACrC,OAAO,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IACtF,CAAC;IAEO,oBAAoB,CAAC,mBAAwB,EAAE,UAAkB;QACrE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9F,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,UAAU,IAAI,MAAM,EAAE,IAAI,KAAK,UAAU,CAAC,CAAC;QAE5G,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACpB,MAAM,IAAI,0BAAiB,CAAC,UAAU,UAAU,2BAA2B,mBAAmB,EAAE,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;QACnH,CAAC;QAED,OAAO,gBAAgB,CAAC;IAC5B,CAAC;IAEO,KAAK,CAAC,2BAA2B,CACrC,mBAAwB,EACxB,UAAkB,EAClB,aAAqB,EACrB,UAAkB,EAClB,UAAyC,EAAE,EAC3C,UAA2B;QAE3B,MAAM,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAC;QACpF,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,EAAE,IAAI,gBAAgB,CAAC,IAAI,IAAI,UAAU,CAAC;QACtF,MAAM,YAAY,GAAG,gBAAgB,CAAC,YAAY,CAAC;QAEnD,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,UAAU,EAAE,mBAAmB,EAAE,IAAI,IAAI,aAAa,EAAE,kBAAkB,CAAC,EAAE,CAAC;YACjH,OAAO,IAAI,CAAC,+BAA+B,CACvC,mBAAmB,EAAE,IAAI,IAAI,aAAa,EAC1C,kBAAkB,EAClB,YAAY,CACf,CAAC;QACN,CAAC;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,MAAM,IAAI,0BAAiB,CAAC,UAAU,UAAU,sCAAsC,CAAC,CAAC;QAC5F,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,sCAAsC,CAAC,YAAY,CAAC,CAAC;QACzF,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,MAAM,IAAI,0BAAiB,CAAC,+BAAc,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC;QACjF,CAAC;QAED,MAAM,eAAe,GAAG;YACpB,GAAG,CAAC,gBAAgB,CAAC,eAAe,IAAI,EAAE,CAAC;YAC3C,GAAG,CAAC,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC;SACrC,CAAC;QAEF,MAAM,cAAc,GAAwC;YACxD,UAAU;YACV,aAAa;YACb,UAAU,EAAE,kBAAkB;YAC9B,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;YAClC,eAAe;YACf,UAAU;SACb,CAAC;QAEF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,gBAAgB,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;QAClF,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAE1C,IAAI,gBAAgB,IAAI,OAAO,gBAAgB,KAAK,QAAQ,IAAI,gBAAgB,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAClG,MAAM,QAAQ,GAAG;gBACb,GAAG,CAAC,gBAAgB,CAAC,IAAI,IAAI,EAAE,CAAC;gBAChC,YAAY;gBACZ,UAAU,EAAE,cAAc,CAAC,UAAU;gBACrC,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,UAAU,IAAI,UAAU;gBAC5D,WAAW,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aAC/E,CAAC;YAEF,OAAO;gBACH,GAAG,gBAAgB;gBACnB,IAAI,EAAE,QAAQ;aACjB,CAAC;QACN,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,YAAY,wCAAwC,cAAc,CAAC,UAAU,yBAAyB,CAAC,CAAC;QAC7I,OAAO;YACH,IAAI,EAAE;gBACF,YAAY;gBACZ,UAAU,EAAE,cAAc,CAAC,UAAU;gBACrC,UAAU;gBACV,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACxC;YACD,IAAI,EAAE,gBAAgB;SACzB,CAAC;IACN,CAAC;IAEO,eAAe,CAAC,UAAyC;QAC7D,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,OAAO,EAAE,CAAC;QACd,CAAC;QACD,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YACjC,OAAO,UAAU,CAAC;QACtB,CAAC;QAED,IAAI,CAAC;YACD,MAAM,qBAAqB,GAAG,YAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACnD,IAAI,qBAAqB,IAAI,OAAO,qBAAqB,KAAK,QAAQ,EAAE,CAAC;gBACrE,IAAI,qBAAqB,CAAC,YAAY,CAAC,IAAI,OAAO,qBAAqB,CAAC,YAAY,CAAC,KAAK,QAAQ,EAAE,CAAC;oBACjG,OAAO,qBAAqB,CAAC,YAAY,CAAwB,CAAC;gBACtE,CAAC;gBACD,OAAO,qBAA4C,CAAC;YACxD,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;QAEf,CAAC;QAED,IAAI,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC;IAEO,4BAA4B,CAChC,UAAsC,EACtC,aAAqB,EACrB,UAAkB;QAElB,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;QACzF,IAAI,CAAC,aAAa,IAAI,CAAC,UAAU,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5D,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,gCAAgC,CAAC,UAAU,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC;IAC1H,CAAC;IAEO,gCAAgC,CAAC,UAAkB,EAAE,aAAqB,EAAE,UAAkB;QAClG,MAAM,KAAK,GAAG,0BAA0B,CAAC,IAAI,CAAC,GAAG,UAAU,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,MAAM,CAAC,EAAE,uBAAuB,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC;QACzD,IAAI,uBAAuB,KAAK,aAAa,IAAI,CAAC,aAAa,EAAE,CAAC;YAC9D,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,aAAa,KAAK,GAAG,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,aAAa,KAAK,UAAU,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,CAAC;YACD,OAAO,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACtD,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAEO,+BAA+B,CACnC,aAAqB,EACrB,UAAkB,EAClB,YAAqB;QAErB,OAAO;YACH,IAAI,EAAE;gBACF,YAAY,EAAE,YAAY,IAAI,IAAI;gBAClC,UAAU;gBACV,UAAU,EAAE,CAAC;gBACb,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACrC,YAAY,EAAE,IAAI;gBAClB,oBAAoB,EAAE,aAAa,aAAa,IAAI,UAAU,EAAE;aACnE;YACD,IAAI,EAAE,IAAI;YACV,OAAO,EAAE;gBACL,KAAK,EAAE,cAAc;gBACrB,OAAO,EAAE,cAAc;aAC1B;SACJ,CAAC;IACN,CAAC;IAEO,eAAe,CAAC,UAAe;QACnC,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACjE,IAAI,OAAO,UAAU,KAAK,QAAQ;YAAE,OAAO,UAAU,CAAC;QACtD,IAAI,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,UAAU,CAAC;QACtB,CAAC;IACL,CAAC;IAEO,oBAAoB,CAAC,GAAoE;QAC7F,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QACpB,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS;YAAE,OAAO,GAAG,CAAC,UAAU,CAAC;QACxD,IAAK,GAAW,CAAC,MAAM,KAAK,SAAS;YAAE,OAAQ,GAAW,CAAC,MAAM,CAAC;QAClE,OAAO,GAAG,CAAC;IACf,CAAC;IAEO,YAAY,CAAC,aAAkB,EAAE,UAAe;QACpD,IAAI,CAAC,aAAa,IAAI,CAAC,UAAU;YAAE,OAAO,EAAE,CAAC;QAC7C,IAAI,CAAC,aAAa;YAAE,OAAO,UAAU,IAAI,EAAE,CAAC;QAC5C,IAAI,CAAC,UAAU;YAAE,OAAO,aAAa,IAAI,EAAE,CAAC;QAE5C,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACpF,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAE3E,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;YACvB,OAAO;gBACH,GAAG,aAAa;gBAChB,GAAG,UAAU;gBACb,KAAK,EAAE,SAAS;aACnB,CAAC;QACN,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,GAAG,EAAe,CAAC;QAC5C,SAAS,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;YAC5B,MAAM,GAAG,GAAG,IAAI,EAAE,QAAQ,IAAI,IAAI,EAAE,EAAE,CAAC;YACvC,IAAI,GAAG;gBAAE,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,MAAM,kBAAkB,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,QAAa,EAAE,EAAE;YAC1D,MAAM,GAAG,GAAG,QAAQ,EAAE,QAAQ,IAAI,QAAQ,EAAE,EAAE,CAAC;YAC/C,IAAI,CAAC,GAAG;gBAAE,OAAO,QAAQ,CAAC;YAC1B,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACvC,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,GAAG,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC7E,CAAC,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,IAAI,GAAG,CACvB,YAAY;aACP,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,IAAI,IAAI,EAAE,EAAE,CAAC;aAC9C,MAAM,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CACvC,CAAC;QAEF,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,IAAS,EAAE,EAAE;YACjD,MAAM,GAAG,GAAG,IAAI,EAAE,QAAQ,IAAI,IAAI,EAAE,EAAE,CAAC;YACvC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,OAAO;YACH,GAAG,aAAa;YAChB,GAAG,UAAU;YACb,OAAO,EAAE,UAAU,EAAE,OAAO,IAAI,aAAa,EAAE,OAAO,IAAI,EAAE;YAC5D,KAAK,EAAE,CAAC,GAAG,kBAAkB,EAAE,GAAG,aAAa,CAAC;SACnD,CAAC;IACN,CAAC;CACJ,CAAA;AA1dY,0DAAuB;kCAAvB,uBAAuB;IADnC,IAAA,mBAAU,GAAE;qCAKyC,4DAA2B;QACzC,8BAAa;QACA,0DAA0B;GANlE,uBAAuB,CA0dnC","sourcesContent":["import { Injectable, Logger, NotFoundException } from '@nestjs/common';\nimport qs from 'qs';\nimport { ERROR_MESSAGES } from 'src/constants/error-messages';\nimport { DashboardVariableOptionsQueryDto } from 'src/dtos/dashboard-variable-options-query.dto';\nimport { DashboardBatchDataRequestDto, DashboardSaveLayoutDto, DashboardWidgetDataRequestDto } from 'src/dtos/dashboard-widget-data-request.dto';\nimport { ModuleMetadata } from 'src/entities/module-metadata.entity';\nimport { ModuleMetadataHelperService } from 'src/helpers/module-metadata-helper.service';\nimport { SolidRegistry } from 'src/helpers/solid-registry';\nimport { ActiveUserData } from 'src/interfaces/active-user-data.interface';\nimport { IDashboardWidgetDataProviderContext } from 'src/interfaces';\nimport { DashboardUserLayoutService } from './dashboard-user-layout.service';\n\n@Injectable()\nexport class DashboardRuntimeService {\n private readonly logger = new Logger(DashboardRuntimeService.name);\n\n constructor(\n private readonly moduleMetadataHelperService: ModuleMetadataHelperService,\n private readonly solidRegistry: SolidRegistry,\n private readonly dashboardUserLayoutService: DashboardUserLayoutService,\n ) { }\n\n async getDashboardDefinition(moduleName: string, dashboardName: string): Promise<any> {\n const moduleMetadata = await this.getModuleMetadata(moduleName);\n const dashboards = this.getDashboards(moduleMetadata);\n const dashboard = dashboards.find((d) => d?.name === dashboardName || d?.routeName === dashboardName);\n\n if (!dashboard) {\n throw new NotFoundException(`Dashboard ${dashboardName} not found for module ${moduleName}.`);\n }\n\n return dashboard;\n }\n\n async getWidgetData(\n moduleName: string,\n dashboardName: string,\n widgetName: string,\n request: DashboardWidgetDataRequestDto = {},\n activeUser?: ActiveUserData,\n ): Promise<any> {\n const dashboardDefinition = await this.getDashboardDefinition(moduleName, dashboardName);\n return this.getWidgetDataFromDefinition(dashboardDefinition, moduleName, dashboardName, widgetName, request, activeUser);\n }\n\n async getDashboardData(\n moduleName: string,\n dashboardName: string,\n request: DashboardBatchDataRequestDto = {},\n activeUser?: ActiveUserData,\n ): Promise<any> {\n const dashboardDefinition = await this.getDashboardDefinition(moduleName, dashboardName);\n const allWidgets = Array.isArray(dashboardDefinition.widgets) ? dashboardDefinition.widgets : [];\n\n const targetWidgets = request.widgetNames?.length\n ? allWidgets.filter((widget) => request.widgetNames.includes(widget.id) || request.widgetNames.includes(widget.name))\n : allWidgets;\n\n const widgets = await Promise.all(\n targetWidgets.map((widget) => this.getWidgetDataFromDefinition(\n dashboardDefinition,\n moduleName,\n dashboardName,\n widget.id ?? widget.name,\n request,\n activeUser\n ))\n );\n\n return {\n moduleName,\n dashboardName: dashboardDefinition.name,\n variables: request.variables ?? {},\n widgets,\n };\n }\n\n async getVariableOptions(\n moduleName: string,\n dashboardName: string,\n variableName: string,\n query: DashboardVariableOptionsQueryDto,\n ): Promise<any> {\n const dashboardDefinition = await this.getDashboardDefinition(moduleName, dashboardName);\n const variable = (dashboardDefinition.variables ?? []).find((v) => v.name === variableName);\n\n if (!variable) {\n throw new NotFoundException(`Variable ${variableName} not found in dashboard ${dashboardName}.`);\n }\n\n if (variable.type === 'selectionStatic') {\n const values = Array.isArray(variable.selectionStaticValues) ? variable.selectionStaticValues : [];\n return values.map((entry: string) => {\n const [value, label] = `${entry}`.split(':');\n return { label: label ?? value, value };\n });\n }\n\n if (variable.type !== 'selectionDynamic') {\n return [];\n }\n\n const providerName = variable?.selectionConfig?.providerName;\n if (!providerName) {\n throw new NotFoundException(`Variable ${variableName} does not define a dynamic selection provider.`);\n }\n\n const selectionProvider = this.solidRegistry.getSelectionProviderInstance(providerName);\n if (!selectionProvider) {\n throw new NotFoundException(ERROR_MESSAGES.PROVIDER_NOT_FOUND(providerName));\n }\n\n const providerContext = {\n ...(variable?.selectionConfig?.providerContext ?? {}),\n limit: query?.limit ?? 10,\n offset: query?.offset ?? 0,\n formValues: this.parseFormValues(query?.formValues),\n };\n\n if (query.optionValue) {\n return selectionProvider.value(query.optionValue, providerContext as any);\n }\n\n return selectionProvider.values(query?.query ?? '', providerContext as any);\n }\n\n async getLayout(moduleName: string, dashboardName: string, activeUser?: ActiveUserData): Promise<any> {\n const dashboardDefinition = await this.getDashboardDefinition(moduleName, dashboardName);\n const defaultLayout = dashboardDefinition.defaultLayout ?? {};\n const userId = activeUser?.sub ?? null;\n let userLayoutRecord = null;\n try {\n userLayoutRecord = userId\n ? await this.dashboardUserLayoutService.repo.findOne({\n where: {\n user: { id: userId },\n module: { name: moduleName },\n dashboardName: dashboardDefinition.name,\n } as any,\n })\n : null;\n } catch (err: any) {\n const isEntityMetadataMissing = `${err?.message ?? ''}`.includes('No metadata for \"DashboardUserLayout\" was found');\n if (!isEntityMetadataMissing) throw err;\n this.logger.warn('DashboardUserLayout entity metadata is not registered yet. Returning default layout fallback.');\n }\n const userLayout = this.parseLayoutJson(userLayoutRecord?.layoutJson);\n const effectiveLayout = this.mergeLayouts(defaultLayout, userLayout);\n\n return {\n moduleName,\n dashboardName: dashboardDefinition.name,\n userId,\n defaultLayout,\n userLayout,\n effectiveLayout,\n persisted: !!userLayoutRecord,\n };\n }\n\n async saveLayout(\n moduleName: string,\n dashboardName: string,\n dto: DashboardSaveLayoutDto,\n activeUser?: ActiveUserData,\n ): Promise<any> {\n const dashboardDefinition = await this.getDashboardDefinition(moduleName, dashboardName);\n const resolvedDashboardName = dashboardDefinition?.name ?? dashboardName;\n const resolvedLayoutJson = this.resolveLayoutPayload(dto);\n const userId = activeUser?.sub;\n if (!userId) {\n return {\n moduleName,\n dashboardName: resolvedDashboardName,\n userId: null,\n persisted: false,\n message: 'Unable to persist layout without active user context.',\n layoutJson: resolvedLayoutJson,\n };\n }\n const layoutJsonAsString = typeof resolvedLayoutJson === 'string'\n ? resolvedLayoutJson\n : JSON.stringify(resolvedLayoutJson ?? {});\n let savedLayout: any = null;\n try {\n const layoutRepo = this.dashboardUserLayoutService.repo;\n const existing = await layoutRepo.findOne({\n where: {\n user: { id: userId },\n module: { name: moduleName },\n dashboardName: resolvedDashboardName,\n } as any,\n });\n\n const moduleRepo = this.dashboardUserLayoutService.entityManager.getRepository(ModuleMetadata);\n const moduleEntity = await moduleRepo.findOne({ where: { name: moduleName } as any });\n\n if (!moduleEntity) {\n throw new NotFoundException(`Module ${moduleName} not found.`);\n }\n\n const toSave = layoutRepo.create({\n ...(existing ? { id: existing.id } : {}),\n user: { id: userId } as any,\n module: { id: moduleEntity.id } as any,\n dashboardName: resolvedDashboardName,\n layoutJson: layoutJsonAsString,\n version: (existing?.version ?? 0) + 1,\n } as any);\n\n savedLayout = await layoutRepo.save(toSave);\n } catch (err: any) {\n const isEntityMetadataMissing = `${err?.message ?? ''}`.includes('No metadata for \"DashboardUserLayout\" was found');\n if (!isEntityMetadataMissing) throw err;\n this.logger.warn('DashboardUserLayout entity metadata is not registered yet. Returning non-persistent save fallback.');\n return {\n moduleName,\n dashboardName: resolvedDashboardName,\n userId,\n persisted: false,\n message: 'Layout model generated but entity is not registered in TypeORM yet. Please add DashboardUserLayout to module TypeOrm entities and restart.',\n layoutJson: resolvedLayoutJson,\n };\n }\n\n return {\n moduleName,\n dashboardName: resolvedDashboardName,\n userId,\n persisted: true,\n message: 'Layout saved successfully.',\n layoutJson: this.parseLayoutJson(savedLayout.layoutJson),\n };\n }\n\n private async getModuleMetadata(moduleName: string): Promise<any> {\n const configPath = await this.moduleMetadataHelperService.getModuleMetadataFilePath(moduleName);\n const moduleMetadata = await this.moduleMetadataHelperService.getModuleMetadataConfiguration(configPath);\n\n if (!moduleMetadata) {\n throw new NotFoundException(ERROR_MESSAGES.MODULE_NOT_FOUND(moduleName));\n }\n\n return moduleMetadata;\n }\n\n private getDashboards(moduleMetadata: any): any[] {\n return Array.isArray(moduleMetadata?.dashboards) ? moduleMetadata.dashboards : [];\n }\n\n private findWidgetDefinition(dashboardDefinition: any, widgetName: string): any {\n const widgets = Array.isArray(dashboardDefinition.widgets) ? dashboardDefinition.widgets : [];\n const widgetDefinition = widgets.find((widget) => widget?.id === widgetName || widget?.name === widgetName);\n\n if (!widgetDefinition) {\n throw new NotFoundException(`Widget ${widgetName} not found in dashboard ${dashboardDefinition?.name ?? ''}.`);\n }\n\n return widgetDefinition;\n }\n\n private async getWidgetDataFromDefinition(\n dashboardDefinition: any,\n moduleName: string,\n dashboardName: string,\n widgetName: string,\n request: DashboardWidgetDataRequestDto = {},\n activeUser?: ActiveUserData,\n ): Promise<any> {\n const widgetDefinition = this.findWidgetDefinition(dashboardDefinition, widgetName);\n const resolvedWidgetName = widgetDefinition.id ?? widgetDefinition.name ?? widgetName;\n const providerName = widgetDefinition.dataProvider;\n\n if (!this.hasDashboardWidgetPermission(activeUser, dashboardDefinition?.name ?? dashboardName, resolvedWidgetName)) {\n return this.buildUnauthorizedWidgetResponse(\n dashboardDefinition?.name ?? dashboardName,\n resolvedWidgetName,\n providerName,\n );\n }\n\n if (!providerName) {\n throw new NotFoundException(`Widget ${widgetName} is missing dataProvider definition.`);\n }\n\n const provider = this.solidRegistry.getDashboardWidgetDataProviderInstance(providerName);\n if (!provider) {\n throw new NotFoundException(ERROR_MESSAGES.PROVIDER_NOT_FOUND(providerName));\n }\n\n const providerContext = {\n ...(widgetDefinition.providerContext ?? {}),\n ...(request.providerContext ?? {}),\n };\n\n const runtimeContext: IDashboardWidgetDataProviderContext = {\n moduleName,\n dashboardName,\n widgetName: resolvedWidgetName,\n variables: request.variables ?? {},\n providerContext,\n activeUser,\n };\n\n const startTime = Date.now();\n const providerResponse = await provider.getData(widgetDefinition, runtimeContext);\n const durationMs = Date.now() - startTime;\n\n if (providerResponse && typeof providerResponse === 'object' && providerResponse.data !== undefined) {\n const nextMeta = {\n ...(providerResponse.meta ?? {}),\n providerName,\n widgetName: runtimeContext.widgetName,\n durationMs: providerResponse?.meta?.durationMs ?? durationMs,\n generatedAt: providerResponse?.meta?.generatedAt ?? new Date().toISOString(),\n };\n\n return {\n ...providerResponse,\n meta: nextMeta,\n };\n }\n\n this.logger.debug(`Widget provider ${providerName} returned a non-envelope payload for ${runtimeContext.widgetName}. Normalizing response.`);\n return {\n meta: {\n providerName,\n widgetName: runtimeContext.widgetName,\n durationMs,\n generatedAt: new Date().toISOString(),\n },\n data: providerResponse,\n };\n }\n\n private parseFormValues(formValues?: Record<string, any> | string): Record<string, any> {\n if (!formValues) {\n return {};\n }\n if (typeof formValues === 'object') {\n return formValues;\n }\n\n try {\n const parsedFromQueryString = qs.parse(formValues);\n if (parsedFromQueryString && typeof parsedFromQueryString === 'object') {\n if (parsedFromQueryString['formValues'] && typeof parsedFromQueryString['formValues'] === 'object') {\n return parsedFromQueryString['formValues'] as Record<string, any>;\n }\n return parsedFromQueryString as Record<string, any>;\n }\n } catch (err) {\n // ignore parse errors and try JSON\n }\n\n try {\n return JSON.parse(formValues);\n } catch (err) {\n return {};\n }\n }\n\n private hasDashboardWidgetPermission(\n activeUser: ActiveUserData | undefined,\n dashboardName: string,\n widgetName: string,\n ): boolean {\n const permissions = Array.isArray(activeUser?.permissions) ? activeUser.permissions : [];\n if (!dashboardName || !widgetName || permissions.length === 0) {\n return false;\n }\n\n return permissions.some((permission) => this.matchesDashboardWidgetPermission(permission, dashboardName, widgetName));\n }\n\n private matchesDashboardWidgetPermission(permission: string, dashboardName: string, widgetName: string): boolean {\n const match = /^dashboard:([^:]+):(.+)$/.exec(`${permission ?? ''}`.trim());\n if (!match) {\n return false;\n }\n\n const [, permissionDashboardName, widgetPattern] = match;\n if (permissionDashboardName !== dashboardName || !widgetPattern) {\n return false;\n }\n\n if (widgetPattern === '*') {\n return true;\n }\n\n if (widgetPattern === widgetName) {\n return true;\n }\n\n try {\n return new RegExp(widgetPattern).test(widgetName);\n } catch {\n return false;\n }\n }\n\n private buildUnauthorizedWidgetResponse(\n dashboardName: string,\n widgetName: string,\n providerName?: string,\n ): any {\n return {\n meta: {\n providerName: providerName ?? null,\n widgetName,\n durationMs: 0,\n generatedAt: new Date().toISOString(),\n unauthorized: true,\n permissionExpression: `dashboard:${dashboardName}:${widgetName}`,\n },\n data: null,\n uiHints: {\n state: 'unauthorized',\n message: 'Unauthorized',\n },\n };\n }\n\n private parseLayoutJson(layoutJson: any): any {\n if (layoutJson === null || layoutJson === undefined) return null;\n if (typeof layoutJson !== 'string') return layoutJson;\n try {\n return JSON.parse(layoutJson);\n } catch {\n return layoutJson;\n }\n }\n\n private resolveLayoutPayload(dto: DashboardSaveLayoutDto | Record<string, any> | null | undefined): any {\n if (!dto) return {};\n if (dto.layoutJson !== undefined) return dto.layoutJson;\n if ((dto as any).layout !== undefined) return (dto as any).layout;\n return dto;\n }\n\n private mergeLayouts(defaultLayout: any, userLayout: any): any {\n if (!defaultLayout && !userLayout) return {};\n if (!defaultLayout) return userLayout ?? {};\n if (!userLayout) return defaultLayout ?? {};\n\n const defaultItems = Array.isArray(defaultLayout?.items) ? defaultLayout.items : [];\n const userItems = Array.isArray(userLayout?.items) ? userLayout.items : [];\n\n if (!defaultItems.length) {\n return {\n ...defaultLayout,\n ...userLayout,\n items: userItems,\n };\n }\n\n const userByWidget = new Map<string, any>();\n userItems.forEach((item: any) => {\n const key = item?.widgetId ?? item?.id;\n if (key) userByWidget.set(key, item);\n });\n\n const mergedDefaultItems = defaultItems.map((baseItem: any) => {\n const key = baseItem?.widgetId ?? baseItem?.id;\n if (!key) return baseItem;\n const override = userByWidget.get(key);\n return override ? { ...baseItem, ...override, widgetId: key } : baseItem;\n });\n\n const defaultKeys = new Set(\n defaultItems\n .map((item: any) => item?.widgetId ?? item?.id)\n .filter((value: any) => !!value)\n );\n\n const userOnlyItems = userItems.filter((item: any) => {\n const key = item?.widgetId ?? item?.id;\n return !!key && !defaultKeys.has(key);\n });\n\n return {\n ...defaultLayout,\n ...userLayout,\n columns: userLayout?.columns ?? defaultLayout?.columns ?? 12,\n items: [...mergedDefaultItems, ...userOnlyItems],\n };\n }\n}\n"]}
@@ -0,0 +1,12 @@
1
+ import { ModuleRef } from "@nestjs/core";
2
+ import { EntityManager } from 'typeorm';
3
+ import { CRUDService } from '../services/crud.service';
4
+ import { DashboardUserLayout } from '../entities/dashboard-user-layout.entity';
5
+ import { DashboardUserLayoutRepository } from '../repositories/dashboard-user-layout.repository';
6
+ export declare class DashboardUserLayoutService extends CRUDService<DashboardUserLayout> {
7
+ readonly entityManager: EntityManager;
8
+ readonly repo: DashboardUserLayoutRepository;
9
+ readonly moduleRef: ModuleRef;
10
+ constructor(entityManager: EntityManager, repo: DashboardUserLayoutRepository, moduleRef: ModuleRef);
11
+ }
12
+ //# sourceMappingURL=dashboard-user-layout.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard-user-layout.service.d.ts","sourceRoot":"","sources":["../../src/services/dashboard-user-layout.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAG,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,EAAE,6BAA6B,EAAE,MAAM,kDAAkD,CAAC;AAEjG,qBACa,0BAA2B,SAAQ,WAAW,CAAC,mBAAmB,CAAC;IAG5E,QAAQ,CAAC,aAAa,EAAE,aAAa;IACrC,QAAQ,CAAC,IAAI,EAAE,6BAA6B;IAC5C,QAAQ,CAAC,SAAS,EAAE,SAAS;gBAFpB,aAAa,EAAE,aAAa,EAC5B,IAAI,EAAE,6BAA6B,EACnC,SAAS,EAAE,SAAS;CAKhC"}
@@ -12,28 +12,27 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
12
  return function (target, key) { decorator(target, key, paramIndex); }
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.DashboardVariableService = void 0;
15
+ exports.DashboardUserLayoutService = void 0;
16
16
  const common_1 = require("@nestjs/common");
17
- const core_1 = require("@nestjs/core");
18
17
  const typeorm_1 = require("@nestjs/typeorm");
18
+ const core_1 = require("@nestjs/core");
19
19
  const typeorm_2 = require("typeorm");
20
20
  const crud_service_1 = require("./crud.service");
21
- const dashboard_variable_repository_1 = require("../repository/dashboard-variable.repository");
22
- let DashboardVariableService = class DashboardVariableService extends crud_service_1.CRUDService {
21
+ const dashboard_user_layout_repository_1 = require("../repositories/dashboard-user-layout.repository");
22
+ let DashboardUserLayoutService = class DashboardUserLayoutService extends crud_service_1.CRUDService {
23
23
  constructor(entityManager, repo, moduleRef) {
24
- super(entityManager, repo, 'dashboardVariable', 'solid-core', moduleRef);
24
+ super(entityManager, repo, 'dashboardUserLayout', 'solid-core', moduleRef);
25
25
  this.entityManager = entityManager;
26
26
  this.repo = repo;
27
27
  this.moduleRef = moduleRef;
28
- this.logger = new common_1.Logger(this.constructor.name);
29
28
  }
30
29
  };
31
- exports.DashboardVariableService = DashboardVariableService;
32
- exports.DashboardVariableService = DashboardVariableService = __decorate([
30
+ exports.DashboardUserLayoutService = DashboardUserLayoutService;
31
+ exports.DashboardUserLayoutService = DashboardUserLayoutService = __decorate([
33
32
  (0, common_1.Injectable)(),
34
- __param(0, (0, typeorm_1.InjectEntityManager)()),
33
+ __param(0, (0, typeorm_1.InjectEntityManager)("default")),
35
34
  __metadata("design:paramtypes", [typeorm_2.EntityManager,
36
- dashboard_variable_repository_1.DashboardVariableRepository,
35
+ dashboard_user_layout_repository_1.DashboardUserLayoutRepository,
37
36
  core_1.ModuleRef])
38
- ], DashboardVariableService);
39
- //# sourceMappingURL=dashboard-variable.service.js.map
37
+ ], DashboardUserLayoutService);
38
+ //# sourceMappingURL=dashboard-user-layout.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard-user-layout.service.js","sourceRoot":"","sources":["../../src/services/dashboard-user-layout.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,6CAAsD;AACtD,uCAA0C;AAC1C,qCAAwC;AACxC,iDAAwD;AAExD,uGAAiG;AAG1F,IAAM,0BAA0B,GAAhC,MAAM,0BAA2B,SAAQ,0BAAgC;IAC9E,YAEW,aAA4B,EAC5B,IAAmC,EACnC,SAAoB;QAG9B,KAAK,CAAC,aAAa,EAAE,IAAI,EAAE,qBAAqB,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;QALjE,kBAAa,GAAb,aAAa,CAAe;QAC5B,SAAI,GAAJ,IAAI,CAA+B;QACnC,cAAS,GAAT,SAAS,CAAW;IAIhC,CAAC;CACD,CAAA;AAVY,gEAA0B;qCAA1B,0BAA0B;IADtC,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,6BAAmB,EAAC,SAAS,CAAC,CAAA;qCACP,uBAAa;QACtB,gEAA6B;QACxB,gBAAS;GALpB,0BAA0B,CAUtC","sourcesContent":["import { Injectable } from '@nestjs/common';\nimport { InjectEntityManager } from '@nestjs/typeorm';\nimport { ModuleRef } from \"@nestjs/core\";\nimport { EntityManager } from 'typeorm';\nimport { CRUDService } from 'src/services/crud.service';\nimport { DashboardUserLayout } from '../entities/dashboard-user-layout.entity';\nimport { DashboardUserLayoutRepository } from '../repositories/dashboard-user-layout.repository';\n\n@Injectable()\nexport class DashboardUserLayoutService extends CRUDService<DashboardUserLayout>{\n constructor(\n @InjectEntityManager(\"default\")\n readonly entityManager: EntityManager,\n readonly repo: DashboardUserLayoutRepository,\n readonly moduleRef: ModuleRef,\n \n ) {\n super(entityManager, repo, 'dashboardUserLayout', 'solid-core', moduleRef);\n }\n}"]}
@@ -31,10 +31,10 @@ let FileS3StorageProvider = FileS3StorageProvider_1 = class FileS3StorageProvide
31
31
  }
32
32
  async retrieve(entity, mediaFieldMetadata) {
33
33
  const isSupportedEntity = entity instanceof common_entity_1.CommonEntity
34
- || entity instanceof legacy_common_entity_1.LegacyCommonEntity
35
- || entity instanceof legacy_common_with_id_entity_1.LegacyCommonWithIdEntity;
34
+ || entity instanceof legacy_common_entity_1.LegacyCommonEntityWithExistingId
35
+ || entity instanceof legacy_common_with_id_entity_1.LegacyCommonEntityWithGeneratedId;
36
36
  if (!isSupportedEntity) {
37
- throw new Error("Entity must be an instance of CommonEntity, LegacyCommonEntity or LegacyCommonWithIdEntity");
37
+ throw new Error("Entity must be an instance of CommonEntity, LegacyCommonEntityWithExistingId or LegacyCommonEntityWithGeneratedId");
38
38
  }
39
39
  const media = await this.mediaRepository.findByEntityIdAndFieldIdAndModelMetadataId(entity.id, mediaFieldMetadata.id, mediaFieldMetadata.model.id, ['mediaStorageProviderMetadata']);
40
40
  for (const m of media) {
@@ -52,10 +52,10 @@ let FileS3StorageProvider = FileS3StorageProvider_1 = class FileS3StorageProvide
52
52
  }
53
53
  async store(files, entity, mediaFieldMetadata) {
54
54
  const isSupportedEntity = entity instanceof common_entity_1.CommonEntity
55
- || entity instanceof legacy_common_entity_1.LegacyCommonEntity
56
- || entity instanceof legacy_common_with_id_entity_1.LegacyCommonWithIdEntity;
55
+ || entity instanceof legacy_common_entity_1.LegacyCommonEntityWithExistingId
56
+ || entity instanceof legacy_common_with_id_entity_1.LegacyCommonEntityWithGeneratedId;
57
57
  if (!isSupportedEntity) {
58
- throw new Error("Entity must be an instance of CommonEntity, LegacyCommonEntity or LegacyCommonWithIdEntity");
58
+ throw new Error("Entity must be an instance of CommonEntity, LegacyCommonEntityWithExistingId or LegacyCommonEntityWithGeneratedId");
59
59
  }
60
60
  const result = [];
61
61
  const storageProvider = mediaFieldMetadata.mediaStorageProvider;
@@ -85,10 +85,10 @@ let FileS3StorageProvider = FileS3StorageProvider_1 = class FileS3StorageProvide
85
85
  }
86
86
  async delete(entity, mediaFieldMetadata) {
87
87
  const isSupportedEntity = entity instanceof common_entity_1.CommonEntity
88
- || entity instanceof legacy_common_entity_1.LegacyCommonEntity
89
- || entity instanceof legacy_common_with_id_entity_1.LegacyCommonWithIdEntity;
88
+ || entity instanceof legacy_common_entity_1.LegacyCommonEntityWithExistingId
89
+ || entity instanceof legacy_common_with_id_entity_1.LegacyCommonEntityWithGeneratedId;
90
90
  if (!isSupportedEntity) {
91
- throw new Error("Entity must be an instance of CommonEntity, LegacyCommonEntity or LegacyCommonWithIdEntity");
91
+ throw new Error("Entity must be an instance of CommonEntity, LegacyCommonEntityWithExistingId or LegacyCommonEntityWithGeneratedId");
92
92
  }
93
93
  const storageProvider = mediaFieldMetadata.mediaStorageProvider;
94
94
  const region = this.getEffectiveRegion(storageProvider.region);