@owox/backend 0.35.0 → 0.36.0

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 (283) hide show
  1. package/dist/src/common/exceptions/concurrency-limit-exceeded.exception.d.ts +1 -1
  2. package/dist/src/common/exceptions/concurrency-limit-exceeded.exception.js +2 -2
  3. package/dist/src/common/markdown/markdown-parser.service.d.ts +2 -0
  4. package/dist/src/common/markdown/markdown-parser.service.js +15 -8
  5. package/dist/src/common/validators/max-byte-length.validator.d.ts +2 -0
  6. package/dist/src/common/validators/max-byte-length.validator.js +29 -0
  7. package/dist/src/config/env-validation.config.d.ts +12 -0
  8. package/dist/src/config/env-validation.config.js +7 -0
  9. package/dist/src/data-marts/ai-insights/agent/types.d.ts +6 -6
  10. package/dist/src/data-marts/calculated-fields/calculated-field-validator.service.js +22 -30
  11. package/dist/src/data-marts/calculated-fields/calculated-field.utils.d.ts +1 -0
  12. package/dist/src/data-marts/calculated-fields/calculated-field.utils.js +21 -0
  13. package/dist/src/data-marts/calculated-fields/formula-analyzer.d.ts +1 -0
  14. package/dist/src/data-marts/calculated-fields/formula-analyzer.js +2 -0
  15. package/dist/src/data-marts/calculated-fields/formula-violations.d.ts +7 -0
  16. package/dist/src/data-marts/calculated-fields/formula-violations.js +82 -1
  17. package/dist/src/data-marts/calculated-fields/join-grain.d.ts +32 -0
  18. package/dist/src/data-marts/calculated-fields/join-grain.js +107 -0
  19. package/dist/src/data-marts/calculated-fields/set-quantifier.d.ts +8 -0
  20. package/dist/src/data-marts/calculated-fields/set-quantifier.js +12 -0
  21. package/dist/src/data-marts/connector-types/connector-message/schemas/connector-message.schema.d.ts +66 -0
  22. package/dist/src/data-marts/connector-types/connector-message/schemas/connector-message.schema.js +13 -1
  23. package/dist/src/data-marts/connector-types/connector-message/schemas/types/message-credentials-update.schema.d.ts +3 -0
  24. package/dist/src/data-marts/connector-types/connector-message/schemas/types/message-credentials-update.schema.js +1 -0
  25. package/dist/src/data-marts/connector-types/connector-message/schemas/types/message-error.schema.d.ts +3 -0
  26. package/dist/src/data-marts/connector-types/connector-message/schemas/types/message-error.schema.js +1 -0
  27. package/dist/src/data-marts/connector-types/connector-message/schemas/types/message-log.schema.d.ts +12 -0
  28. package/dist/src/data-marts/connector-types/connector-message/schemas/types/message-log.schema.js +4 -0
  29. package/dist/src/data-marts/connector-types/connector-message/schemas/types/message-requested-date.schema.d.ts +3 -0
  30. package/dist/src/data-marts/connector-types/connector-message/schemas/types/message-requested-date.schema.js +1 -0
  31. package/dist/src/data-marts/connector-types/connector-message/schemas/types/message-state-update.schema.d.ts +16 -0
  32. package/dist/src/data-marts/connector-types/connector-message/schemas/types/message-state-update.schema.js +16 -0
  33. package/dist/src/data-marts/connector-types/connector-message/schemas/types/message-status.schema.d.ts +3 -0
  34. package/dist/src/data-marts/connector-types/connector-message/schemas/types/message-status.schema.js +1 -0
  35. package/dist/src/data-marts/connector-types/connector-message/schemas/types/message-warning.schema.d.ts +3 -0
  36. package/dist/src/data-marts/connector-types/connector-message/schemas/types/message-warning.schema.js +1 -0
  37. package/dist/src/data-marts/connector-types/connector-message/services/connector-event.translator.d.ts +10 -0
  38. package/dist/src/data-marts/connector-types/connector-message/services/connector-event.translator.js +138 -0
  39. package/dist/src/data-marts/connector-types/connector-message/services/connector-message-parser.service.d.ts +1 -3
  40. package/dist/src/data-marts/connector-types/connector-message/services/connector-message-parser.service.js +30 -34
  41. package/dist/src/data-marts/connector-types/connector-message/services/connector-output-capture.service.js +10 -12
  42. package/dist/src/data-marts/connector-types/connector-message/services/connector-state.service.js +3 -1
  43. package/dist/src/data-marts/connector-types/enums/connector-message-type-enum.d.ts +1 -0
  44. package/dist/src/data-marts/connector-types/enums/connector-message-type-enum.js +1 -0
  45. package/dist/src/data-marts/controllers/connector-definition.controller.d.ts +30 -0
  46. package/dist/src/data-marts/controllers/connector-definition.controller.js +252 -0
  47. package/dist/src/data-marts/controllers/data-mart-preview.controller.d.ts +10 -0
  48. package/dist/src/data-marts/controllers/data-mart-preview.controller.js +58 -0
  49. package/dist/src/data-marts/controllers/data-mart.controller.d.ts +5 -1
  50. package/dist/src/data-marts/controllers/data-mart.controller.js +25 -4
  51. package/dist/src/data-marts/controllers/insight-template.controller.js +4 -4
  52. package/dist/src/data-marts/controllers/insight.controller.js +5 -5
  53. package/dist/src/data-marts/controllers/project-data-mart-runs.controller.js +1 -1
  54. package/dist/src/data-marts/controllers/spec/connector-definition.api.d.ts +12 -0
  55. package/dist/src/data-marts/controllers/spec/connector-definition.api.js +179 -0
  56. package/dist/src/data-marts/controllers/spec/data-mart.api.d.ts +1 -0
  57. package/dist/src/data-marts/controllers/spec/data-mart.api.js +5 -0
  58. package/dist/src/data-marts/controllers/spec/report-openapi.d.ts +18 -0
  59. package/dist/src/data-marts/controllers/spec/report-openapi.js +3 -0
  60. package/dist/src/data-marts/data-marts.module.js +20 -2
  61. package/dist/src/data-marts/data-storage-types/blending/metric-sleeve.planner.js +3 -12
  62. package/dist/src/data-marts/data-storage-types/data-mart-schema.utils.d.ts +1 -0
  63. package/dist/src/data-marts/data-storage-types/data-mart-schema.utils.js +16 -0
  64. package/dist/src/data-marts/dto/domain/blendable-schema.dto.d.ts +10 -0
  65. package/dist/src/data-marts/dto/domain/blendable-schema.dto.js +71 -1
  66. package/dist/src/data-marts/dto/domain/create-data-mart.command.d.ts +3 -1
  67. package/dist/src/data-marts/dto/domain/create-data-mart.command.js +3 -1
  68. package/dist/src/data-marts/dto/domain/create-report.command.d.ts +3 -1
  69. package/dist/src/data-marts/dto/domain/create-report.command.js +3 -1
  70. package/dist/src/data-marts/dto/domain/data-mart-list-item.dto.d.ts +3 -1
  71. package/dist/src/data-marts/dto/domain/data-mart-list-item.dto.js +3 -1
  72. package/dist/src/data-marts/dto/domain/data-mart.dto.d.ts +4 -1
  73. package/dist/src/data-marts/dto/domain/data-mart.dto.js +5 -1
  74. package/dist/src/data-marts/dto/domain/model-canvas.dto.d.ts +4 -0
  75. package/dist/src/data-marts/dto/domain/report-like-read-plan.d.ts +2 -0
  76. package/dist/src/data-marts/dto/domain/report.dto.d.ts +3 -1
  77. package/dist/src/data-marts/dto/domain/report.dto.js +3 -1
  78. package/dist/src/data-marts/dto/domain/update-data-mart-icon.command.d.ts +9 -0
  79. package/dist/src/data-marts/dto/domain/update-data-mart-icon.command.js +19 -0
  80. package/dist/src/data-marts/dto/domain/update-report.command.d.ts +3 -1
  81. package/dist/src/data-marts/dto/domain/update-report.command.js +3 -1
  82. package/dist/src/data-marts/dto/presentation/create-data-mart-request-api.dto.d.ts +2 -0
  83. package/dist/src/data-marts/dto/presentation/create-data-mart-request-api.dto.js +13 -0
  84. package/dist/src/data-marts/dto/presentation/create-report-request-api.dto.d.ts +2 -0
  85. package/dist/src/data-marts/dto/presentation/create-report-request-api.dto.js +10 -0
  86. package/dist/src/data-marts/dto/presentation/custom-connector-response.dto.d.ts +46 -0
  87. package/dist/src/data-marts/dto/presentation/custom-connector-response.dto.js +216 -0
  88. package/dist/src/data-marts/dto/presentation/custom-connector.dto.d.ts +27 -0
  89. package/dist/src/data-marts/dto/presentation/custom-connector.dto.js +159 -0
  90. package/dist/src/data-marts/dto/presentation/data-mart-list-item-response-api.dto.d.ts +2 -0
  91. package/dist/src/data-marts/dto/presentation/data-mart-list-item-response-api.dto.js +10 -0
  92. package/dist/src/data-marts/dto/presentation/data-mart-response-api.dto.d.ts +2 -0
  93. package/dist/src/data-marts/dto/presentation/data-mart-response-api.dto.js +10 -0
  94. package/dist/src/data-marts/dto/presentation/model-canvas-response-api.dto.d.ts +4 -0
  95. package/dist/src/data-marts/dto/presentation/model-canvas-response-api.dto.js +20 -0
  96. package/dist/src/data-marts/dto/presentation/preview-data-mart-request-api.dto.d.ts +7 -0
  97. package/dist/src/data-marts/dto/presentation/preview-data-mart-request-api.dto.js +56 -0
  98. package/dist/src/data-marts/dto/presentation/preview-data-mart-response-api.dto.d.ts +12 -0
  99. package/dist/src/data-marts/dto/presentation/preview-data-mart-response-api.dto.js +64 -0
  100. package/dist/src/data-marts/dto/presentation/report-response-api.dto.d.ts +2 -0
  101. package/dist/src/data-marts/dto/presentation/report-response-api.dto.js +6 -0
  102. package/dist/src/data-marts/dto/presentation/run-data-mart-request-api.dto.js +67 -0
  103. package/dist/src/data-marts/dto/presentation/update-data-mart-description-api.dto.js +3 -0
  104. package/dist/src/data-marts/dto/presentation/update-data-mart-icon-api.dto.d.ts +4 -0
  105. package/dist/src/data-marts/dto/presentation/update-data-mart-icon-api.dto.js +30 -0
  106. package/dist/src/data-marts/dto/presentation/update-report-request-api.dto.d.ts +2 -0
  107. package/dist/src/data-marts/dto/presentation/update-report-request-api.dto.js +10 -0
  108. package/dist/src/data-marts/dto/schemas/auto-aggregation-opt-out.schema.d.ts +15 -0
  109. package/dist/src/data-marts/dto/schemas/auto-aggregation-opt-out.schema.js +29 -0
  110. package/dist/src/data-marts/dto/schemas/data-mart-run/data-mart-run.schema.d.ts +9 -0
  111. package/dist/src/data-marts/dto/schemas/data-mart-table-definitions/connector-definition.schema.d.ts +15 -0
  112. package/dist/src/data-marts/dto/schemas/data-mart-table-definitions/connector-definition.schema.js +1 -0
  113. package/dist/src/data-marts/dto/schemas/data-mart-table-definitions/data-mart-definition.schema.d.ts +7 -0
  114. package/dist/src/data-marts/dto/schemas/data-quality/data-quality-run.schema.d.ts +20 -0
  115. package/dist/src/data-marts/entities/connector-definition-version.entity.d.ts +16 -0
  116. package/dist/src/data-marts/entities/connector-definition-version.entity.js +78 -0
  117. package/dist/src/data-marts/entities/connector-definition.entity.d.ts +14 -0
  118. package/dist/src/data-marts/entities/connector-definition.entity.js +82 -0
  119. package/dist/src/data-marts/entities/data-mart.entity.d.ts +2 -0
  120. package/dist/src/data-marts/entities/data-mart.entity.js +5 -0
  121. package/dist/src/data-marts/entities/report.entity.d.ts +2 -0
  122. package/dist/src/data-marts/entities/report.entity.js +11 -0
  123. package/dist/src/data-marts/enums/data-mart-icon.enum.d.ts +75 -0
  124. package/dist/src/data-marts/enums/data-mart-icon.enum.js +80 -0
  125. package/dist/src/data-marts/errors/connector-credential-boundary.error.d.ts +3 -0
  126. package/dist/src/data-marts/errors/connector-credential-boundary.error.js +14 -0
  127. package/dist/src/data-marts/facades/mcp-data-marts.facade.d.ts +2 -0
  128. package/dist/src/data-marts/facades/mcp-data-marts.facade.impl.d.ts +7 -1
  129. package/dist/src/data-marts/facades/mcp-data-marts.facade.impl.js +70 -5
  130. package/dist/src/data-marts/mappers/connector-definition.mapper.d.ts +14 -0
  131. package/dist/src/data-marts/mappers/connector-definition.mapper.js +57 -0
  132. package/dist/src/data-marts/mappers/data-mart.mapper.d.ts +9 -6
  133. package/dist/src/data-marts/mappers/data-mart.mapper.js +44 -19
  134. package/dist/src/data-marts/mappers/insight-template.mapper.d.ts +1 -1
  135. package/dist/src/data-marts/mappers/insight-template.mapper.js +2 -2
  136. package/dist/src/data-marts/mappers/insight.mapper.d.ts +1 -1
  137. package/dist/src/data-marts/mappers/insight.mapper.js +2 -2
  138. package/dist/src/data-marts/mappers/model-canvas.mapper.d.ts +10 -2
  139. package/dist/src/data-marts/mappers/model-canvas.mapper.js +9 -3
  140. package/dist/src/data-marts/mappers/report.mapper.js +4 -3
  141. package/dist/src/data-marts/services/auto-collapse.resolver.d.ts +1 -1
  142. package/dist/src/data-marts/services/auto-collapse.resolver.js +4 -0
  143. package/dist/src/data-marts/services/blendable-schema.service.d.ts +2 -0
  144. package/dist/src/data-marts/services/blendable-schema.service.js +59 -0
  145. package/dist/src/data-marts/services/connector/connector-credential-injector.service.d.ts +1 -1
  146. package/dist/src/data-marts/services/connector/connector-credential-injector.service.js +15 -1
  147. package/dist/src/data-marts/services/connector/connector-definition.service.d.ts +59 -0
  148. package/dist/src/data-marts/services/connector/connector-definition.service.js +491 -0
  149. package/dist/src/data-marts/services/connector/connector-executor.service.d.ts +9 -1
  150. package/dist/src/data-marts/services/connector/connector-executor.service.js +173 -63
  151. package/dist/src/data-marts/services/connector/connector-fields-preview.service.js +1 -1
  152. package/dist/src/data-marts/services/connector/connector-message.utils.js +2 -2
  153. package/dist/src/data-marts/services/connector/connector-preview-credentials.service.js +1 -1
  154. package/dist/src/data-marts/services/connector/connector-preview-support.d.ts +1 -1
  155. package/dist/src/data-marts/services/connector/connector-preview-support.js +14 -21
  156. package/dist/src/data-marts/services/connector/connector-process-spawner.service.d.ts +11 -2
  157. package/dist/src/data-marts/services/connector/connector-process-spawner.service.js +88 -60
  158. package/dist/src/data-marts/services/connector/connector-secret.service.d.ts +6 -3
  159. package/dist/src/data-marts/services/connector/connector-secret.service.js +77 -12
  160. package/dist/src/data-marts/services/connector/connector-source-config.service.js +1 -1
  161. package/dist/src/data-marts/services/connector/connector-source-credentials.service.d.ts +6 -2
  162. package/dist/src/data-marts/services/connector/connector-source-credentials.service.js +18 -16
  163. package/dist/src/data-marts/services/connector/connector-specification.mapper.d.ts +47 -0
  164. package/dist/src/data-marts/services/connector/connector-specification.mapper.js +46 -0
  165. package/dist/src/data-marts/services/connector/connector-test.service.d.ts +43 -0
  166. package/dist/src/data-marts/services/connector/connector-test.service.js +343 -0
  167. package/dist/src/data-marts/services/connector/connector.service.d.ts +8 -2
  168. package/dist/src/data-marts/services/connector/connector.service.js +65 -54
  169. package/dist/src/data-marts/services/connector/declarative-manifest-schemas.d.ts +4 -0
  170. package/dist/src/data-marts/services/connector/declarative-manifest-schemas.js +48 -0
  171. package/dist/src/data-marts/services/connector/run-log-flusher.d.ts +21 -0
  172. package/dist/src/data-marts/services/connector/run-log-flusher.js +67 -0
  173. package/dist/src/data-marts/services/data-mart.service.js +2 -0
  174. package/dist/src/data-marts/services/report-sql-composer.service.js +15 -1
  175. package/dist/src/data-marts/services/report.service.d.ts +1 -0
  176. package/dist/src/data-marts/services/report.service.js +13 -0
  177. package/dist/src/data-marts/services/scheduled-trigger.service.d.ts +1 -0
  178. package/dist/src/data-marts/services/scheduled-trigger.service.js +13 -0
  179. package/dist/src/data-marts/use-cases/create-data-mart.service.js +1 -0
  180. package/dist/src/data-marts/use-cases/create-report.service.js +2 -0
  181. package/dist/src/data-marts/use-cases/get-model-canvas-data-marts.service.d.ts +5 -1
  182. package/dist/src/data-marts/use-cases/get-model-canvas-data-marts.service.js +16 -3
  183. package/dist/src/data-marts/use-cases/list-project-scheduled-triggers.service.js +1 -1
  184. package/dist/src/data-marts/use-cases/preview-data-mart.service.d.ts +59 -0
  185. package/dist/src/data-marts/use-cases/preview-data-mart.service.js +293 -0
  186. package/dist/src/data-marts/use-cases/stream-http-data.service.js +1 -0
  187. package/dist/src/data-marts/use-cases/update-data-mart-definition.service.d.ts +1 -1
  188. package/dist/src/data-marts/use-cases/update-data-mart-definition.service.js +8 -6
  189. package/dist/src/data-marts/use-cases/update-data-mart-icon.service.d.ts +12 -0
  190. package/dist/src/data-marts/use-cases/update-data-mart-icon.service.js +46 -0
  191. package/dist/src/data-marts/use-cases/update-data-mart-schema.service.js +14 -1
  192. package/dist/src/data-marts/use-cases/update-report.service.js +9 -1
  193. package/dist/src/ee/ee.module.js +5 -8
  194. package/dist/src/ee/mcp/auth/mcp-auth-context.d.ts +0 -4
  195. package/dist/src/ee/mcp/auth/mcp-auth.middleware.d.ts +26 -0
  196. package/dist/src/ee/mcp/auth/mcp-auth.middleware.js +184 -0
  197. package/dist/src/ee/mcp/http-headers.util.d.ts +2 -0
  198. package/dist/src/ee/mcp/http-headers.util.js +8 -0
  199. package/dist/src/ee/mcp/observability/mcp-bus-wiring.js +4 -4
  200. package/dist/src/ee/mcp/observability/mcp-call-instrumentation.d.ts +2 -4
  201. package/dist/src/ee/mcp/observability/mcp-call-instrumentation.js +6 -6
  202. package/dist/src/ee/mcp/sdk/mcp-sdk-server.factory.d.ts +1 -1
  203. package/dist/src/ee/mcp/sdk/mcp-sdk-server.factory.js +5 -5
  204. package/dist/src/ee/mcp/tools/add-destination.tool.d.ts +20 -14
  205. package/dist/src/ee/mcp/tools/add-destination.tool.js +10 -10
  206. package/dist/src/ee/mcp/tools/add-report.tool.d.ts +88 -228
  207. package/dist/src/ee/mcp/tools/add-report.tool.js +28 -28
  208. package/dist/src/ee/mcp/tools/create-report-run-schedule.tool.d.ts +2 -12
  209. package/dist/src/ee/mcp/tools/create-report-run-schedule.tool.js +13 -13
  210. package/dist/src/ee/mcp/tools/data-mart-catalog.tool.d.ts +15 -81
  211. package/dist/src/ee/mcp/tools/data-mart-catalog.tool.js +11 -11
  212. package/dist/src/ee/mcp/tools/data-mart-details.tool.d.ts +19 -111
  213. package/dist/src/ee/mcp/tools/data-mart-details.tool.js +64 -48
  214. package/dist/src/ee/mcp/tools/delete-report-run-schedule.tool.d.ts +2 -6
  215. package/dist/src/ee/mcp/tools/delete-report-run-schedule.tool.js +7 -7
  216. package/dist/src/ee/mcp/tools/delete-report.tool.d.ts +2 -6
  217. package/dist/src/ee/mcp/tools/delete-report.tool.js +4 -4
  218. package/dist/src/ee/mcp/tools/get-data-mart-reports.tool.d.ts +30 -195
  219. package/dist/src/ee/mcp/tools/get-data-mart-reports.tool.js +22 -22
  220. package/dist/src/ee/mcp/tools/get-report-output-schema.tool.d.ts +3 -21
  221. package/dist/src/ee/mcp/tools/get-report-output-schema.tool.js +10 -10
  222. package/dist/src/ee/mcp/tools/get-report-run-status.tool.d.ts +15 -11
  223. package/dist/src/ee/mcp/tools/get-report-run-status.tool.js +14 -14
  224. package/dist/src/ee/mcp/tools/list-destinations.tool.d.ts +12 -20
  225. package/dist/src/ee/mcp/tools/list-destinations.tool.js +10 -10
  226. package/dist/src/ee/mcp/tools/list-report-run-schedules.tool.d.ts +5 -61
  227. package/dist/src/ee/mcp/tools/list-report-run-schedules.tool.js +14 -14
  228. package/dist/src/ee/mcp/tools/mcp-getting-started.util.d.ts +4 -52
  229. package/dist/src/ee/mcp/tools/mcp-getting-started.util.js +13 -13
  230. package/dist/src/ee/mcp/tools/mcp-tool.definition.d.ts +2 -2
  231. package/dist/src/ee/mcp/tools/project-context.tool.d.ts +3 -17
  232. package/dist/src/ee/mcp/tools/project-context.tool.js +10 -10
  233. package/dist/src/ee/mcp/tools/query-data-mart.input.d.ts +111 -152
  234. package/dist/src/ee/mcp/tools/query-data-mart.input.js +39 -39
  235. package/dist/src/ee/mcp/tools/query-data-mart.tool.d.ts +60 -130
  236. package/dist/src/ee/mcp/tools/query-data-mart.tool.js +35 -35
  237. package/dist/src/ee/mcp/tools/report-output-controls-output.d.ts +17 -60
  238. package/dist/src/ee/mcp/tools/report-output-controls-output.js +20 -20
  239. package/dist/src/ee/mcp/tools/report-run-outcome.d.ts +6 -42
  240. package/dist/src/ee/mcp/tools/report-run-outcome.js +20 -20
  241. package/dist/src/ee/mcp/tools/run-report.tool.d.ts +2 -6
  242. package/dist/src/ee/mcp/tools/run-report.tool.js +5 -5
  243. package/dist/src/ee/mcp/tools/search-data-marts.tool.d.ts +7 -79
  244. package/dist/src/ee/mcp/tools/search-data-marts.tool.js +11 -11
  245. package/dist/src/ee/mcp/tools/search-reports.tool.d.ts +15 -61
  246. package/dist/src/ee/mcp/tools/search-reports.tool.js +15 -15
  247. package/dist/src/ee/mcp/tools/summarize-data-catalog.tool.d.ts +7 -79
  248. package/dist/src/ee/mcp/tools/summarize-data-catalog.tool.js +15 -15
  249. package/dist/src/ee/mcp/tools/update-report-run-schedule.tool.d.ts +2 -12
  250. package/dist/src/ee/mcp/tools/update-report-run-schedule.tool.js +13 -13
  251. package/dist/src/ee/mcp/tools/update-report.tool.d.ts +105 -414
  252. package/dist/src/ee/mcp/tools/update-report.tool.js +20 -20
  253. package/dist/src/ee/mcp/transport/mcp-http-entry.service.d.ts +30 -0
  254. package/dist/src/ee/mcp/transport/mcp-http-entry.service.js +193 -0
  255. package/dist/src/idp/guards/idp.guard.js +2 -8
  256. package/dist/src/idp/oauth/controllers/oauth-authorization.controller.d.ts +4 -0
  257. package/dist/src/idp/oauth/controllers/oauth-authorization.controller.js +77 -1
  258. package/dist/src/idp/oauth/controllers/oauth-metadata.controller.d.ts +2 -1
  259. package/dist/src/idp/oauth/controllers/oauth-metadata.controller.js +5 -8
  260. package/dist/src/idp/oauth/controllers/oauth-token.controller.js +14 -1
  261. package/dist/src/idp/oauth/oauth-request.validator.d.ts +8 -0
  262. package/dist/src/idp/oauth/oauth-request.validator.js +27 -0
  263. package/dist/src/idp/utils/is-authentication-error.d.ts +1 -0
  264. package/dist/src/idp/utils/is-authentication-error.js +9 -0
  265. package/dist/src/idp/utils/role-hierarchy.d.ts +3 -0
  266. package/dist/src/idp/utils/role-hierarchy.js +14 -0
  267. package/dist/src/index.d.ts +1 -0
  268. package/dist/src/index.js +3 -1
  269. package/dist/src/migrations/1788048000000-create-connector-definition-tables.d.ts +6 -0
  270. package/dist/src/migrations/1788048000000-create-connector-definition-tables.js +116 -0
  271. package/dist/src/migrations/1790156789783-add-auto-aggregation-opt-out-to-report.d.ts +8 -0
  272. package/dist/src/migrations/1790156789783-add-auto-aggregation-opt-out-to-report.js +30 -0
  273. package/dist/src/migrations/1790247861000-add-icon-to-data-mart.d.ts +8 -0
  274. package/dist/src/migrations/1790247861000-add-icon-to-data-mart.js +31 -0
  275. package/package.json +10 -6
  276. package/dist/src/ee/mcp/auth/mcp-auth.exception-filter.d.ts +0 -14
  277. package/dist/src/ee/mcp/auth/mcp-auth.exception-filter.js +0 -84
  278. package/dist/src/ee/mcp/auth/mcp-auth.guard.d.ts +0 -14
  279. package/dist/src/ee/mcp/auth/mcp-auth.guard.js +0 -99
  280. package/dist/src/ee/mcp/controllers/mcp-transport.controller.d.ts +0 -17
  281. package/dist/src/ee/mcp/controllers/mcp-transport.controller.js +0 -134
  282. package/dist/src/ee/mcp/sdk/mcp-streamable-http-transport.handler.d.ts +0 -16
  283. package/dist/src/ee/mcp/sdk/mcp-streamable-http-transport.handler.js +0 -133
@@ -1,3 +1,6 @@
1
+ import { TypeResolver } from '../../common/resolver/type-resolver';
2
+ import { FormulaFunctionDialect } from '../calculated-fields/formula-function-dialect';
3
+ import { DataStorageType } from '../data-storage-types/enums/data-storage-type.enum';
1
4
  import { BlendableSchemaService } from '../services/blendable-schema.service';
2
5
  import { DataMartRelationshipService } from '../services/data-mart-relationship.service';
3
6
  import { DataMartService } from '../services/data-mart.service';
@@ -14,12 +17,15 @@ export declare class McpDataMartsFacadeImpl implements McpDataMartsFacade {
14
17
  private readonly blendableSchemaService;
15
18
  private readonly relationshipService;
16
19
  private readonly summarizeMcpDataCatalogService;
20
+ private readonly dialects;
17
21
  private readonly logger;
18
- constructor(listDataMartsService: ListDataMartsService, getDataMartService: GetDataMartService, dataMartService: DataMartService, queryDataMartService: QueryDataMartService, blendableSchemaService: BlendableSchemaService, relationshipService: DataMartRelationshipService, summarizeMcpDataCatalogService: SummarizeMcpDataCatalogService);
22
+ constructor(listDataMartsService: ListDataMartsService, getDataMartService: GetDataMartService, dataMartService: DataMartService, queryDataMartService: QueryDataMartService, blendableSchemaService: BlendableSchemaService, relationshipService: DataMartRelationshipService, summarizeMcpDataCatalogService: SummarizeMcpDataCatalogService, dialects: TypeResolver<DataStorageType, FormulaFunctionDialect>);
19
23
  listDataMarts(request: McpListDataMartsRequest): Promise<McpListDataMartsResponse>;
20
24
  getDataMartDetails(request: McpGetDataMartDetailsRequest): Promise<McpDataMartDetailsResponse>;
25
+ private blendableSchemaOnce;
21
26
  private resolveJoinedFields;
22
27
  private resolveJoins;
28
+ private grainCaveats;
23
29
  queryDataMart(request: McpQueryDataMartRequest, signal?: AbortSignal): Promise<McpQueryDataMartResponse>;
24
30
  summarizeDataCatalog(request: McpSummarizeDataCatalogRequest): Promise<McpDataCatalogSummaryResponse>;
25
31
  private ensurePublishedDataMartAccessible;
@@ -8,12 +8,21 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
11
14
  var McpDataMartsFacadeImpl_1;
12
15
  Object.defineProperty(exports, "__esModule", { value: true });
13
16
  exports.McpDataMartsFacadeImpl = void 0;
14
17
  const common_1 = require("@nestjs/common");
18
+ const internal_helpers_1 = require("@owox/internal-helpers");
19
+ const type_resolver_1 = require("../../common/resolver/type-resolver");
15
20
  const ai_insights_constants_1 = require("../ai-insights/ai-insights.constants");
16
21
  const prepare_schema_1 = require("../ai-insights/utils/prepare-schema");
22
+ const formula_analyzer_1 = require("../calculated-fields/formula-analyzer");
23
+ const calculated_field_utils_1 = require("../calculated-fields/calculated-field.utils");
24
+ const formula_function_dialect_1 = require("../calculated-fields/formula-function-dialect");
25
+ const join_grain_1 = require("../calculated-fields/join-grain");
17
26
  const data_mart_schema_utils_1 = require("../data-storage-types/data-mart-schema.utils");
18
27
  const get_data_mart_command_1 = require("../dto/domain/get-data-mart.command");
19
28
  const list_data_marts_command_1 = require("../dto/domain/list-data-marts.command");
@@ -37,8 +46,9 @@ let McpDataMartsFacadeImpl = McpDataMartsFacadeImpl_1 = class McpDataMartsFacade
37
46
  blendableSchemaService;
38
47
  relationshipService;
39
48
  summarizeMcpDataCatalogService;
49
+ dialects;
40
50
  logger = new common_1.Logger(McpDataMartsFacadeImpl_1.name);
41
- constructor(listDataMartsService, getDataMartService, dataMartService, queryDataMartService, blendableSchemaService, relationshipService, summarizeMcpDataCatalogService) {
51
+ constructor(listDataMartsService, getDataMartService, dataMartService, queryDataMartService, blendableSchemaService, relationshipService, summarizeMcpDataCatalogService, dialects) {
42
52
  this.listDataMartsService = listDataMartsService;
43
53
  this.getDataMartService = getDataMartService;
44
54
  this.dataMartService = dataMartService;
@@ -46,6 +56,7 @@ let McpDataMartsFacadeImpl = McpDataMartsFacadeImpl_1 = class McpDataMartsFacade
46
56
  this.blendableSchemaService = blendableSchemaService;
47
57
  this.relationshipService = relationshipService;
48
58
  this.summarizeMcpDataCatalogService = summarizeMcpDataCatalogService;
59
+ this.dialects = dialects;
49
60
  }
50
61
  async listDataMarts(request) {
51
62
  const status = request.status === 'draft' ? data_mart_status_enum_1.DataMartStatus.DRAFT : data_mart_status_enum_1.DataMartStatus.PUBLISHED;
@@ -71,8 +82,13 @@ let McpDataMartsFacadeImpl = McpDataMartsFacadeImpl_1 = class McpDataMartsFacade
71
82
  fields: this.filterAvailableFields(dataMart.schema.fields),
72
83
  })
73
84
  : undefined;
85
+ const blendable = this.blendableSchemaOnce(request);
86
+ const publishedNames = this.topLevelFieldNames(schema?.fields ?? []);
87
+ const grainCaveats = request.includeGrainCaveats
88
+ ? await this.grainCaveats(request, dataMart, publishedNames, blendable)
89
+ : undefined;
74
90
  const { joinedFields, joins, uniqueCountSources } = request.includeJoinedFields
75
- ? await this.resolveJoinedFields(request, this.topLevelFieldNames(schema?.fields ?? []))
91
+ ? await this.resolveJoinedFields(request, publishedNames, blendable)
76
92
  : { joinedFields: [], joins: [], uniqueCountSources: [] };
77
93
  return {
78
94
  id: dataMart.id,
@@ -82,15 +98,23 @@ let McpDataMartsFacadeImpl = McpDataMartsFacadeImpl_1 = class McpDataMartsFacade
82
98
  joinedFields,
83
99
  joins,
84
100
  uniqueCountSources,
101
+ ...(grainCaveats === undefined ? {} : { grainCaveats }),
102
+ };
103
+ }
104
+ blendableSchemaOnce(request) {
105
+ let pending;
106
+ return () => {
107
+ pending ??= this.blendableSchemaService.computeBlendableSchema(request.dataMartId, request.projectId, { userId: request.userId, roles: request.roles });
108
+ return pending;
85
109
  };
86
110
  }
87
- async resolveJoinedFields(request, nativeFieldNames) {
111
+ async resolveJoinedFields(request, nativeFieldNames, blendableSchema) {
88
112
  try {
89
113
  const relationships = await this.relationshipService.findBySourceDataMartId(request.dataMartId);
90
114
  if (relationships.length === 0) {
91
115
  return { joinedFields: [], joins: [], uniqueCountSources: [] };
92
116
  }
93
- const blendable = await this.blendableSchemaService.computeBlendableSchema(request.dataMartId, request.projectId, { userId: request.userId, roles: request.roles });
117
+ const blendable = await blendableSchema();
94
118
  const accessibleSources = blendable.availableSources.filter(s => s.isIncluded && s.isAccessibleForReporting);
95
119
  const accessiblePaths = new Set(accessibleSources.map(s => s.aliasPath));
96
120
  const joins = await this.resolveJoins(accessibleSources);
@@ -166,6 +190,45 @@ let McpDataMartsFacadeImpl = McpDataMartsFacadeImpl_1 = class McpDataMartsFacade
166
190
  return [];
167
191
  }
168
192
  }
193
+ async grainCaveats(request, dataMart, publishedNames, blendableSchema) {
194
+ const readers = (0, calculated_field_utils_1.calculatedFieldsOf)(dataMart.schema?.fields ?? []).filter(field => publishedNames.has(field.name) && (0, calculated_field_utils_1.readsJoinedDataMart)(field));
195
+ if (readers.length === 0)
196
+ return {};
197
+ let blendable;
198
+ try {
199
+ blendable = await blendableSchema();
200
+ }
201
+ catch (err) {
202
+ if (!request.includeJoinedFields) {
203
+ this.logger.warn(`Join caveats skipped: ${(0, internal_helpers_1.castError)(err).message}`);
204
+ }
205
+ return {};
206
+ }
207
+ try {
208
+ const sources = (0, join_grain_1.buildJoinGrainSources)(blendable.availableSources, {
209
+ kind: 'agent',
210
+ blendedFields: blendable.blendedFields,
211
+ });
212
+ const dialect = await this.dialects.resolve(dataMart.storage.type);
213
+ const caveats = {};
214
+ for (const field of readers) {
215
+ const { aggregateCalls } = (0, formula_analyzer_1.analyzeFormula)({
216
+ fieldName: field.name,
217
+ formula: field.calculated.formula,
218
+ dialect,
219
+ knownField: () => 'ok',
220
+ });
221
+ const { warnings } = (0, join_grain_1.checkJoinGrain)({ fieldName: field.name, aggregateCalls, sources });
222
+ if (warnings.length > 0)
223
+ caveats[field.name] = warnings.map(w => w.message).join(' ');
224
+ }
225
+ return caveats;
226
+ }
227
+ catch (err) {
228
+ this.logger.warn(`Join caveats skipped: ${(0, internal_helpers_1.castError)(err).message}`);
229
+ return {};
230
+ }
231
+ }
169
232
  async queryDataMart(request, signal) {
170
233
  return this.queryDataMartService.run(new query_data_mart_service_1.QueryDataMartCommand(request), signal);
171
234
  }
@@ -214,12 +277,14 @@ let McpDataMartsFacadeImpl = McpDataMartsFacadeImpl_1 = class McpDataMartsFacade
214
277
  exports.McpDataMartsFacadeImpl = McpDataMartsFacadeImpl;
215
278
  exports.McpDataMartsFacadeImpl = McpDataMartsFacadeImpl = McpDataMartsFacadeImpl_1 = __decorate([
216
279
  (0, common_1.Injectable)(),
280
+ __param(7, (0, common_1.Inject)(formula_function_dialect_1.FORMULA_FUNCTION_DIALECT_RESOLVER)),
217
281
  __metadata("design:paramtypes", [list_data_marts_service_1.ListDataMartsService,
218
282
  get_data_mart_service_1.GetDataMartService,
219
283
  data_mart_service_1.DataMartService,
220
284
  query_data_mart_service_1.QueryDataMartService,
221
285
  blendable_schema_service_1.BlendableSchemaService,
222
286
  data_mart_relationship_service_1.DataMartRelationshipService,
223
- summarize_mcp_data_catalog_service_1.SummarizeMcpDataCatalogService])
287
+ summarize_mcp_data_catalog_service_1.SummarizeMcpDataCatalogService,
288
+ type_resolver_1.TypeResolver])
224
289
  ], McpDataMartsFacadeImpl);
225
290
  //# sourceMappingURL=mcp-data-marts.facade.impl.js.map
@@ -0,0 +1,14 @@
1
+ import { ActivateCustomConnectorVersionResponseApiDto, CreateCustomConnectorResponseApiDto, CustomConnectorDetailResponseApiDto, CustomConnectorListItemResponseApiDto, CustomConnectorVersionResponseApiDto, CustomConnectorVersionStateResponseApiDto, PublishCustomConnectorResponseApiDto } from '../dto/presentation/custom-connector-response.dto';
2
+ import { ConnectorDefinition } from '../entities/connector-definition.entity';
3
+ import { ConnectorDefinitionVersion } from '../entities/connector-definition-version.entity';
4
+ import { ConnectorDefinitionVersionSummary } from '../services/connector/connector-definition.service';
5
+ export declare class ConnectorDefinitionMapper {
6
+ toListItemResponse(def: ConnectorDefinition, activeVersion: number | null): CustomConnectorListItemResponseApiDto;
7
+ toListResponse(defs: ConnectorDefinition[], activeVersionByDefId: Map<string, number>): CustomConnectorListItemResponseApiDto[];
8
+ toDetailResponse(def: ConnectorDefinition, versions: ConnectorDefinitionVersionSummary[], activeVersion: number | null): CustomConnectorDetailResponseApiDto;
9
+ toCreateResponse(def: ConnectorDefinition): CreateCustomConnectorResponseApiDto;
10
+ toVersionResponse(row: ConnectorDefinitionVersion): CustomConnectorVersionResponseApiDto;
11
+ toVersionStateResponse(row: ConnectorDefinitionVersion): CustomConnectorVersionStateResponseApiDto;
12
+ toPublishResponse(row: ConnectorDefinitionVersion, warnings: string[]): PublishCustomConnectorResponseApiDto;
13
+ toActivateResponse(def: ConnectorDefinition, version: number): ActivateCustomConnectorVersionResponseApiDto;
14
+ }
@@ -0,0 +1,57 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.ConnectorDefinitionMapper = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ let ConnectorDefinitionMapper = class ConnectorDefinitionMapper {
12
+ toListItemResponse(def, activeVersion) {
13
+ return {
14
+ id: def.id,
15
+ name: def.name,
16
+ title: def.title,
17
+ description: def.description ?? null,
18
+ logo: def.logo ?? null,
19
+ docUrl: def.docUrl ?? null,
20
+ activeVersionId: def.activeVersionId ?? null,
21
+ activeVersion,
22
+ };
23
+ }
24
+ toListResponse(defs, activeVersionByDefId) {
25
+ return defs.map(def => this.toListItemResponse(def, activeVersionByDefId.get(def.id) ?? null));
26
+ }
27
+ toDetailResponse(def, versions, activeVersion) {
28
+ return {
29
+ ...this.toListItemResponse(def, activeVersion),
30
+ versions: versions.map(v => ({
31
+ version: v.version,
32
+ status: v.status,
33
+ publishedAt: v.publishedAt ?? null,
34
+ })),
35
+ };
36
+ }
37
+ toCreateResponse(def) {
38
+ return { id: def.id, name: def.name, title: def.title };
39
+ }
40
+ toVersionResponse(row) {
41
+ return { version: row.version, status: row.status, manifest: row.manifest };
42
+ }
43
+ toVersionStateResponse(row) {
44
+ return { version: row.version, status: row.status };
45
+ }
46
+ toPublishResponse(row, warnings) {
47
+ return { version: row.version, status: row.status, publishedAt: row.publishedAt, warnings };
48
+ }
49
+ toActivateResponse(def, version) {
50
+ return { activeVersionId: def.activeVersionId ?? null, activeVersion: version };
51
+ }
52
+ };
53
+ exports.ConnectorDefinitionMapper = ConnectorDefinitionMapper;
54
+ exports.ConnectorDefinitionMapper = ConnectorDefinitionMapper = __decorate([
55
+ (0, common_1.Injectable)()
56
+ ], ConnectorDefinitionMapper);
57
+ //# sourceMappingURL=connector-definition.mapper.js.map
@@ -27,6 +27,7 @@ import { UpdateDataMartDefinitionCommand } from '../dto/domain/update-data-mart-
27
27
  import { GetBlendableSchemaCommand } from '../dto/domain/get-blendable-schema.command';
28
28
  import { UpdateBlendedFieldsConfigCommand } from '../dto/domain/update-blended-fields-config.command';
29
29
  import { UpdateDataMartDescriptionCommand } from '../dto/domain/update-data-mart-description.command';
30
+ import { UpdateDataMartIconCommand } from '../dto/domain/update-data-mart-icon.command';
30
31
  import { UpdateDataMartSchemaCommand } from '../dto/domain/update-data-mart-schema.command';
31
32
  import { UpdateDataMartTitleCommand } from '../dto/domain/update-data-mart-title.command';
32
33
  import { ValidateDataMartDefinitionCommand } from '../dto/domain/validate-data-mart-definition.command';
@@ -48,6 +49,7 @@ import { SqlDryRunResponseApiDto } from '../dto/presentation/sql-dry-run-respons
48
49
  import { UpdateDataMartDefinitionApiDto } from '../dto/presentation/update-data-mart-definition-api.dto';
49
50
  import { UpdateBlendedFieldsConfigApiDto } from '../dto/presentation/update-blended-fields-config-api.dto';
50
51
  import { UpdateDataMartDescriptionApiDto } from '../dto/presentation/update-data-mart-description-api.dto';
52
+ import { UpdateDataMartIconApiDto } from '../dto/presentation/update-data-mart-icon-api.dto';
51
53
  import { ValidateFormulaApiDto, ValidateFormulaResponseApiDto } from '../dto/presentation/validate-formula.api.dto';
52
54
  import { ValidateFormulaResult } from '../use-cases/validate-formula.service';
53
55
  import { UpdateDataMartSchemaApiDto, UpdateDataMartSchemaResponseApiDto } from '../dto/presentation/update-data-mart-schema-api.dto';
@@ -56,7 +58,7 @@ import { UpdateDataMartTitleApiDto } from '../dto/presentation/update-data-mart-
56
58
  import { DataMartRun } from '../entities/data-mart-run.entity';
57
59
  import { DataMart } from '../entities/data-mart.entity';
58
60
  import { OwnerFilter } from '../enums/owner-filter.enum';
59
- import { ConnectorSecretService } from '../services/connector/connector-secret.service';
61
+ import { ConnectorSecretService, type SecretFieldsCache } from '../services/connector/connector-secret.service';
60
62
  import { UpdateDataMartOwnersApiDto } from '../dto/presentation/update-data-mart-owners-api.dto';
61
63
  import { UpdateDataMartOwnersCommand } from '../dto/domain/update-data-mart-owners.command';
62
64
  import { DataStorageMapper } from './data-storage.mapper';
@@ -81,7 +83,7 @@ export declare class DataMartMapper {
81
83
  toBatchDataLastUpdatedResponse(results: Map<string, SourceDataLastUpdated>): BatchDataMartDataLastUpdatedResponseApiDto;
82
84
  toBatchHealthStatusDomainResponse(requestedIds: string[], latestRuns: DataMartRun[], userProjections: UserProjectionsListDto): BatchDataMartHealthStatusResponseDto;
83
85
  toResponseList(dtos: DataMartDto[]): Promise<DataMartResponseApiDto[]>;
84
- toBatchHealthStatusResponse(dto: BatchDataMartHealthStatusResponseDto): Promise<BatchDataMartHealthStatusResponseApiDto>;
86
+ toBatchHealthStatusResponse(dto: BatchDataMartHealthStatusResponseDto, projectId: string): Promise<BatchDataMartHealthStatusResponseApiDto>;
85
87
  toUpdateDefinitionCommand(id: string, context: AuthorizationContext, dto: UpdateDataMartDefinitionApiDto): UpdateDataMartDefinitionCommand;
86
88
  toGetCommand(id: string, context: AuthorizationContext): GetDataMartCommand;
87
89
  toGetInputSourceChangeImpactCommand(id: string, context: AuthorizationContext): GetDataMartInputSourceChangeImpactCommand;
@@ -94,6 +96,7 @@ export declare class DataMartMapper {
94
96
  toListItemResponse(dto: DataMartListItemDto): DataMartListItemResponseApiDto;
95
97
  toPaginatedResponse(result: PaginatedDataMartListItemsDto): PaginatedDataMartsResponseApiDto;
96
98
  toUpdateTitleCommand(id: string, context: AuthorizationContext, dto: UpdateDataMartTitleApiDto): UpdateDataMartTitleCommand;
99
+ toUpdateIconCommand(id: string, context: AuthorizationContext, dto: UpdateDataMartIconApiDto): UpdateDataMartIconCommand;
97
100
  toUpdateDescriptionCommand(id: string, context: AuthorizationContext, dto: UpdateDataMartDescriptionApiDto): UpdateDataMartDescriptionCommand;
98
101
  toGetBlendableSchemaCommand(dataMartId: string, context: AuthorizationContext, includeDraftTargets?: boolean): GetBlendableSchemaCommand;
99
102
  toUpdateBlendedFieldsConfigCommand(id: string, context: AuthorizationContext, dto: UpdateBlendedFieldsConfigApiDto): UpdateBlendedFieldsConfigCommand;
@@ -112,12 +115,12 @@ export declare class DataMartMapper {
112
115
  toSqlDryRunResponse(result: SqlDryRunResult): SqlDryRunResponseApiDto;
113
116
  toDataMartRunDto(entity: DataMartRun, userProjection?: UserProjectionDto | null, dataQuality?: DataQualityRunDetailsDto | null): DataMartRunDto;
114
117
  toDataMartRunDtoList(entities: DataMartRun[], userProjections: UserProjectionsListDto): DataMartRunDto[];
115
- toRunsResponse(runs: DataMartRunDto[]): Promise<DataMartRunsResponseApiDto>;
116
- toProjectRunsResponse(runs: ProjectDataMartRunDto[]): Promise<ProjectDataMartRunsResponseApiDto>;
118
+ toRunsResponse(runs: DataMartRunDto[], projectId: string): Promise<DataMartRunsResponseApiDto>;
119
+ toProjectRunsResponse(runs: ProjectDataMartRunDto[], projectId: string): Promise<ProjectDataMartRunsResponseApiDto>;
117
120
  toListDataMartsByConnectorNameCommand(connectorName: string, context: AuthorizationContext): ListDataMartsByConnectorNameCommand;
118
121
  toGetDataMartRunCommand(dataMartId: string, runId: string, context: AuthorizationContext): GetDataMartRunCommand;
119
- toRunResponse(run: DataMartRunDto): Promise<DataMartRunResponseApiDto>;
120
- toRunDetailResponse(run: DataMartRunDto): Promise<DataMartRunDetailResponseApiDto>;
122
+ toRunResponse(run: DataMartRunDto, projectId: string, secretFieldsCache?: SecretFieldsCache): Promise<DataMartRunResponseApiDto>;
123
+ toRunDetailResponse(run: DataMartRunDto, projectId: string): Promise<DataMartRunDetailResponseApiDto>;
121
124
  toUpdateOwnersCommand(id: string, context: AuthorizationContext, dto: UpdateDataMartOwnersApiDto): UpdateDataMartOwnersCommand;
122
125
  private maskDefinitionRun;
123
126
  private maskAdditionalParams;
@@ -37,6 +37,7 @@ const update_data_mart_definition_command_1 = require("../dto/domain/update-data
37
37
  const get_blendable_schema_command_1 = require("../dto/domain/get-blendable-schema.command");
38
38
  const update_blended_fields_config_command_1 = require("../dto/domain/update-blended-fields-config.command");
39
39
  const update_data_mart_description_command_1 = require("../dto/domain/update-data-mart-description.command");
40
+ const update_data_mart_icon_command_1 = require("../dto/domain/update-data-mart-icon.command");
40
41
  const update_data_mart_schema_command_1 = require("../dto/domain/update-data-mart-schema.command");
41
42
  const update_data_mart_title_command_1 = require("../dto/domain/update-data-mart-title.command");
42
43
  const validate_data_mart_definition_command_1 = require("../dto/domain/validate-data-mart-definition.command");
@@ -59,10 +60,10 @@ let DataMartMapper = class DataMartMapper {
59
60
  this.connectorSecretService = connectorSecretService;
60
61
  }
61
62
  toCreateDomainCommand(context, dto) {
62
- return new create_data_mart_command_1.CreateDataMartCommand(context.projectId, context.userId, dto.title, dto.storageId, context.roles ?? []);
63
+ return new create_data_mart_command_1.CreateDataMartCommand(context.projectId, context.userId, dto.title, dto.storageId, context.roles ?? [], dto.icon ?? null);
63
64
  }
64
65
  toDomainDto(entity, counters, createdByUser, businessOwnerUsers = [], technicalOwnerUsers = []) {
65
- return new data_mart_dto_1.DataMartDto(entity.id, entity.title, entity.status, this.dataStorageMapper.toDomainDto(entity.storage), entity.createdAt, entity.modifiedAt, entity.definitionType ?? undefined, entity.definition, entity.description, entity.schema, entity.connectorState?.state, counters?.triggersCount ?? 0, counters?.reportsCount ?? 0, createdByUser ?? null, businessOwnerUsers, technicalOwnerUsers, entity.availableForReporting ?? true, entity.availableForMaintenance ?? true, entity.blendedFieldsConfig, (0, extract_context_summaries_1.extractContextSummaries)(entity.contexts), entity.dataLastUpdated ?? null);
66
+ return new data_mart_dto_1.DataMartDto(entity.id, entity.projectId, entity.title, entity.status, this.dataStorageMapper.toDomainDto(entity.storage), entity.createdAt, entity.modifiedAt, entity.definitionType ?? undefined, entity.definition, entity.description, entity.schema, entity.connectorState?.state, counters?.triggersCount ?? 0, counters?.reportsCount ?? 0, createdByUser ?? null, businessOwnerUsers, technicalOwnerUsers, entity.availableForReporting ?? true, entity.availableForMaintenance ?? true, entity.blendedFieldsConfig, (0, extract_context_summaries_1.extractContextSummaries)(entity.contexts), entity.dataLastUpdated ?? null, entity.icon ?? null);
66
67
  }
67
68
  toDomainDtoList(entities) {
68
69
  return entities.map(entity => this.toDomainDto(entity));
@@ -75,7 +76,7 @@ let DataMartMapper = class DataMartMapper {
75
76
  }
76
77
  async toResponse(dto) {
77
78
  const maskedDefinition = dto.definitionType === data_mart_definition_type_enum_1.DataMartDefinitionType.CONNECTOR
78
- ? await this.connectorSecretService.mask(dto.definition)
79
+ ? await this.connectorSecretService.mask(dto.projectId, dto.definition)
79
80
  : dto.definition;
80
81
  return {
81
82
  id: dto.id,
@@ -85,8 +86,9 @@ let DataMartMapper = class DataMartMapper {
85
86
  definitionType: dto.definitionType,
86
87
  definition: maskedDefinition,
87
88
  description: dto.description,
89
+ icon: dto.icon,
88
90
  schema: dto.schema,
89
- connectorState: dto.connectorState,
91
+ connectorState: omitConnectorOwnedState(dto.connectorState),
90
92
  triggersCount: dto.triggersCount,
91
93
  reportsCount: dto.reportsCount,
92
94
  blendedFieldsConfig: dto.blendedFieldsConfig,
@@ -142,13 +144,16 @@ let DataMartMapper = class DataMartMapper {
142
144
  async toResponseList(dtos) {
143
145
  return Promise.all(dtos.map(dto => this.toResponse(dto)));
144
146
  }
145
- async toBatchHealthStatusResponse(dto) {
147
+ async toBatchHealthStatusResponse(dto, projectId) {
148
+ const cache = new Map();
146
149
  const itemsPromises = dto.items.map(async (item) => {
147
150
  const mappedItem = {
148
151
  dataMartId: item.dataMartId,
149
- connector: item.connector ? await this.toRunResponse(item.connector) : null,
150
- report: item.report ? await this.toRunResponse(item.report) : null,
151
- insight: item.insight ? await this.toRunResponse(item.insight) : null,
152
+ connector: item.connector
153
+ ? await this.toRunResponse(item.connector, projectId, cache)
154
+ : null,
155
+ report: item.report ? await this.toRunResponse(item.report, projectId, cache) : null,
156
+ insight: item.insight ? await this.toRunResponse(item.insight, projectId, cache) : null,
152
157
  };
153
158
  return mappedItem;
154
159
  });
@@ -172,7 +177,7 @@ let DataMartMapper = class DataMartMapper {
172
177
  return new list_data_marts_command_1.ListDataMartsCommand(context.projectId, context.userId, context.roles ?? [], offset, ownerFilter);
173
178
  }
174
179
  toListItemDto(entity, counters, createdByUser, businessOwnerUsers = [], technicalOwnerUsers = []) {
175
- return new data_mart_list_item_dto_1.DataMartListItemDto(entity.id, entity.title, entity.status, entity.storage.type, entity.storage.title || (0, data_storage_type_enum_1.toHumanReadable)(entity.storage.type), entity.createdAt, entity.modifiedAt, entity.description ?? null, entity.definitionType, entity.definition, counters.triggersCount, counters.reportsCount, createdByUser ?? null, businessOwnerUsers, technicalOwnerUsers, (0, extract_context_summaries_1.extractContextSummaries)(entity.contexts), entity.availableForReporting, entity.availableForMaintenance, (0, source_data_last_updated_schema_1.toSourceDataLastUpdatedSummary)(entity.dataLastUpdated));
180
+ return new data_mart_list_item_dto_1.DataMartListItemDto(entity.id, entity.title, entity.status, entity.storage.type, entity.storage.title || (0, data_storage_type_enum_1.toHumanReadable)(entity.storage.type), entity.createdAt, entity.modifiedAt, entity.description ?? null, entity.definitionType, entity.definition, counters.triggersCount, counters.reportsCount, createdByUser ?? null, businessOwnerUsers, technicalOwnerUsers, (0, extract_context_summaries_1.extractContextSummaries)(entity.contexts), entity.availableForReporting, entity.availableForMaintenance, (0, source_data_last_updated_schema_1.toSourceDataLastUpdatedSummary)(entity.dataLastUpdated), entity.icon ?? null);
176
181
  }
177
182
  toListItemResponse(dto) {
178
183
  return {
@@ -181,6 +186,7 @@ let DataMartMapper = class DataMartMapper {
181
186
  status: dto.status,
182
187
  storage: { type: dto.storageType, title: dto.storageTitle },
183
188
  description: dto.description,
189
+ icon: dto.icon,
184
190
  definitionType: dto.definitionType,
185
191
  connectorSourceName: dto.definitionType === data_mart_definition_type_enum_1.DataMartDefinitionType.CONNECTOR && dto.definition
186
192
  ? dto.definition.connector.source.name
@@ -209,6 +215,9 @@ let DataMartMapper = class DataMartMapper {
209
215
  toUpdateTitleCommand(id, context, dto) {
210
216
  return new update_data_mart_title_command_1.UpdateDataMartTitleCommand(id, context.projectId, dto.title, context.userId, context.roles ?? []);
211
217
  }
218
+ toUpdateIconCommand(id, context, dto) {
219
+ return new update_data_mart_icon_command_1.UpdateDataMartIconCommand(id, context.projectId, dto.icon ?? null, context.userId, context.roles ?? []);
220
+ }
212
221
  toUpdateDescriptionCommand(id, context, dto) {
213
222
  return new update_data_mart_description_command_1.UpdateDataMartDescriptionCommand(id, context.projectId, dto.description, context.userId, context.roles ?? []);
214
223
  }
@@ -288,9 +297,10 @@ let DataMartMapper = class DataMartMapper {
288
297
  return this.toDataMartRunDto(entity, projection);
289
298
  });
290
299
  }
291
- async toRunsResponse(runs) {
300
+ async toRunsResponse(runs, projectId) {
301
+ const secretFieldsCache = new Map();
292
302
  const maskedRuns = await Promise.all(runs.map(async (run) => {
293
- const maskedDefinitionRun = await this.maskDefinitionRun(run.definitionRun);
303
+ const maskedDefinitionRun = await this.maskDefinitionRun(run.definitionRun, projectId, secretFieldsCache);
294
304
  return {
295
305
  id: run.id,
296
306
  status: run.status,
@@ -318,9 +328,10 @@ let DataMartMapper = class DataMartMapper {
318
328
  }));
319
329
  return { runs: maskedRuns };
320
330
  }
321
- async toProjectRunsResponse(runs) {
331
+ async toProjectRunsResponse(runs, projectId) {
332
+ const secretFieldsCache = new Map();
322
333
  const maskedRuns = await Promise.all(runs.map(async (item) => {
323
- const maskedDefinitionRun = await this.maskDefinitionRun(item.run.definitionRun);
334
+ const maskedDefinitionRun = await this.maskDefinitionRun(item.run.definitionRun, projectId, secretFieldsCache);
324
335
  return {
325
336
  id: item.run.id,
326
337
  status: item.run.status,
@@ -355,8 +366,8 @@ let DataMartMapper = class DataMartMapper {
355
366
  toGetDataMartRunCommand(dataMartId, runId, context) {
356
367
  return new get_data_mart_run_command_1.GetDataMartRunCommand(dataMartId, context.projectId, runId, context.userId, context.roles ?? []);
357
368
  }
358
- async toRunResponse(run) {
359
- const maskedDefinitionRun = await this.maskDefinitionRun(run.definitionRun);
369
+ async toRunResponse(run, projectId, secretFieldsCache = new Map()) {
370
+ const maskedDefinitionRun = await this.maskDefinitionRun(run.definitionRun, projectId, secretFieldsCache);
360
371
  return {
361
372
  id: run.id,
362
373
  status: run.status,
@@ -382,18 +393,18 @@ let DataMartMapper = class DataMartMapper {
382
393
  qualitySummary: run.qualitySummary,
383
394
  };
384
395
  }
385
- async toRunDetailResponse(run) {
396
+ async toRunDetailResponse(run, projectId) {
386
397
  return {
387
- ...(await this.toRunResponse(run)),
398
+ ...(await this.toRunResponse(run, projectId)),
388
399
  dataQuality: run.dataQuality,
389
400
  };
390
401
  }
391
402
  toUpdateOwnersCommand(id, context, dto) {
392
403
  return new update_data_mart_owners_command_1.UpdateDataMartOwnersCommand(id, context.projectId, dto.businessOwnerIds, dto.technicalOwnerIds, context.userId, context.roles ?? []);
393
404
  }
394
- async maskDefinitionRun(definitionRun) {
405
+ async maskDefinitionRun(definitionRun, projectId, secretFieldsCache) {
395
406
  if (definitionRun && (0, data_mart_definition_guards_1.isConnectorDefinition)(definitionRun)) {
396
- return this.connectorSecretService.mask(definitionRun);
407
+ return this.connectorSecretService.mask(projectId, definitionRun, secretFieldsCache);
397
408
  }
398
409
  return undefined;
399
410
  }
@@ -426,4 +437,18 @@ exports.DataMartMapper = DataMartMapper = __decorate([
426
437
  __metadata("design:paramtypes", [data_storage_mapper_1.DataStorageMapper,
427
438
  connector_secret_service_1.ConnectorSecretService])
428
439
  ], DataMartMapper);
440
+ const CONNECTOR_OWNED_STATE_KEYS = ['shortLinks'];
441
+ function omitConnectorOwnedState(connectorState) {
442
+ if (!connectorState) {
443
+ return connectorState;
444
+ }
445
+ const strip = (state) => Object.fromEntries(Object.entries(state).filter(([key]) => !CONNECTOR_OWNED_STATE_KEYS.includes(key)));
446
+ return {
447
+ ...connectorState,
448
+ ...(connectorState.state ? { state: strip(connectorState.state) } : {}),
449
+ ...(connectorState.states
450
+ ? { states: connectorState.states.map(item => ({ ...item, state: strip(item.state) })) }
451
+ : {}),
452
+ };
453
+ }
429
454
  //# sourceMappingURL=data-mart.mapper.js.map
@@ -25,7 +25,7 @@ export declare class InsightTemplateMapper {
25
25
  toCreateDomainCommand(dataMartId: string, context: AuthorizationContext, dto: CreateInsightTemplateRequestApiDto): CreateInsightTemplateCommand;
26
26
  toDomainDto(entity: InsightTemplate, lastManualDataMartRun?: DataMartRun | null, createdByUser?: UserProjectionDto | null): InsightTemplateDto;
27
27
  toDomainDtoList(entities: InsightTemplate[], userProjectionsList?: UserProjectionsListDto): InsightTemplateDto[];
28
- toResponse(dto: InsightTemplateDto): Promise<InsightTemplateResponseApiDto>;
28
+ toResponse(dto: InsightTemplateDto, projectId: string): Promise<InsightTemplateResponseApiDto>;
29
29
  toListItemResponse(dto: InsightTemplateDto): InsightTemplateListItemResponseApiDto;
30
30
  toListItemResponseList(dtos: InsightTemplateDto[]): InsightTemplateListItemResponseApiDto[];
31
31
  toProjectResponseList(dtos: ProjectInsightTemplateDto[]): ProjectInsightTemplatesResponseApiDto;
@@ -38,7 +38,7 @@ let InsightTemplateMapper = class InsightTemplateMapper {
38
38
  toDomainDtoList(entities, userProjectionsList) {
39
39
  return entities.map(entity => this.toDomainDto(entity, null, entity.createdById ? (userProjectionsList?.getByUserId(entity.createdById) ?? null) : null));
40
40
  }
41
- async toResponse(dto) {
41
+ async toResponse(dto, projectId) {
42
42
  return {
43
43
  id: dto.id,
44
44
  title: dto.title,
@@ -50,7 +50,7 @@ let InsightTemplateMapper = class InsightTemplateMapper {
50
50
  createdAt: dto.createdAt,
51
51
  modifiedAt: dto.modifiedAt,
52
52
  lastManualDataMartRun: dto.lastManualDataMartRun
53
- ? await this.dataMartMapper.toRunResponse(dto.lastManualDataMartRun)
53
+ ? await this.dataMartMapper.toRunResponse(dto.lastManualDataMartRun, projectId)
54
54
  : null,
55
55
  createdByUser: dto.createdByUser,
56
56
  };
@@ -22,7 +22,7 @@ export declare class InsightMapper {
22
22
  toCreateWithAiDomainCommand(dataMartId: string, context: AuthorizationContext): CreateInsightWithAiCommand;
23
23
  toDomainDto(entity: Insight, lastManualDataMartRun?: DataMartRun | null): InsightDto;
24
24
  toDomainDtoList(entities: Insight[]): InsightDto[];
25
- toResponse(dto: InsightDto): Promise<InsightResponseApiDto>;
25
+ toResponse(dto: InsightDto, projectId: string): Promise<InsightResponseApiDto>;
26
26
  toListItemResponse(dto: InsightDto): InsightListItemResponseApiDto;
27
27
  toListItemResponseList(dtos: InsightDto[]): InsightListItemResponseApiDto[];
28
28
  toGetCommand(insightId: string, dataMartId: string, context: AuthorizationContext): GetInsightCommand;
@@ -40,7 +40,7 @@ let InsightMapper = class InsightMapper {
40
40
  toDomainDtoList(entities) {
41
41
  return entities.map(entity => this.toDomainDto(entity, null));
42
42
  }
43
- async toResponse(dto) {
43
+ async toResponse(dto, projectId) {
44
44
  return {
45
45
  id: dto.id,
46
46
  title: dto.title,
@@ -51,7 +51,7 @@ let InsightMapper = class InsightMapper {
51
51
  createdAt: dto.createdAt,
52
52
  modifiedAt: dto.modifiedAt,
53
53
  lastManualDataMartRun: dto.lastManualDataMartRun
54
- ? await this.dataMartMapper.toRunResponse(dto.lastManualDataMartRun)
54
+ ? await this.dataMartMapper.toRunResponse(dto.lastManualDataMartRun, projectId)
55
55
  : null,
56
56
  };
57
57
  }
@@ -5,10 +5,18 @@ import { ModelCanvasDataMartsDto, ModelCanvasNodeDto } from '../dto/domain/model
5
5
  import { GetModelCanvasDataMartsQueryApiDto } from '../dto/presentation/get-model-canvas-data-marts-query-api.dto';
6
6
  import { ModelCanvasDataMartsResponseApiDto } from '../dto/presentation/model-canvas-response-api.dto';
7
7
  import { DataMart } from '../entities/data-mart.entity';
8
+ export interface ModelCanvasNodeCounts {
9
+ triggersCount: number;
10
+ reportsCount: number;
11
+ }
12
+ export interface ModelCanvasCountMaps {
13
+ triggerCounts?: ReadonlyMap<string, number>;
14
+ reportCounts?: ReadonlyMap<string, number>;
15
+ }
8
16
  export declare class ModelCanvasMapper {
9
17
  toDataMartsCommand(context: AuthorizationContext, query: GetModelCanvasDataMartsQueryApiDto): GetModelCanvasDataMartsCommand;
10
18
  toEdgesCommand(context: AuthorizationContext, storageId: string): GetModelCanvasEdgesCommand;
11
- toNodeDto(dataMart: DataMart): ModelCanvasNodeDto;
12
- toDataMartsDto(dataMarts: DataMart[], total: number, offset: number): ModelCanvasDataMartsDto;
19
+ toNodeDto(dataMart: DataMart, counts?: Partial<ModelCanvasNodeCounts>): ModelCanvasNodeDto;
20
+ toDataMartsDto(dataMarts: DataMart[], total: number, offset: number, { triggerCounts, reportCounts }?: ModelCanvasCountMaps): ModelCanvasDataMartsDto;
13
21
  toDataMartsResponse(dto: ModelCanvasDataMartsDto): ModelCanvasDataMartsResponseApiDto;
14
22
  }
@@ -18,19 +18,25 @@ let ModelCanvasMapper = class ModelCanvasMapper {
18
18
  toEdgesCommand(context, storageId) {
19
19
  return new get_model_canvas_edges_command_1.GetModelCanvasEdgesCommand(context.projectId, context.userId, context.roles ?? [], storageId);
20
20
  }
21
- toNodeDto(dataMart) {
21
+ toNodeDto(dataMart, counts = {}) {
22
22
  return {
23
23
  id: dataMart.id,
24
24
  title: dataMart.title,
25
25
  status: dataMart.status,
26
26
  description: dataMart.description ?? null,
27
+ icon: dataMart.icon ?? null,
27
28
  fieldCount: dataMart.schema?.fields?.length ?? 0,
29
+ triggersCount: counts.triggersCount ?? 0,
30
+ reportsCount: counts.reportsCount ?? 0,
28
31
  dataLastUpdated: (0, source_data_last_updated_schema_1.toSourceDataLastUpdatedSummary)(dataMart.dataLastUpdated),
29
32
  };
30
33
  }
31
- toDataMartsDto(dataMarts, total, offset) {
34
+ toDataMartsDto(dataMarts, total, offset, { triggerCounts = new Map(), reportCounts = new Map() } = {}) {
32
35
  return {
33
- items: dataMarts.map(dataMart => this.toNodeDto(dataMart)),
36
+ items: dataMarts.map(dataMart => this.toNodeDto(dataMart, {
37
+ triggersCount: triggerCounts.get(dataMart.id) ?? 0,
38
+ reportsCount: reportCounts.get(dataMart.id) ?? 0,
39
+ })),
34
40
  total,
35
41
  offset,
36
42
  };
@@ -51,14 +51,14 @@ let ReportMapper = class ReportMapper {
51
51
  return result.data;
52
52
  }
53
53
  toCreateDomainCommand(context, dto) {
54
- return new create_report_command_1.CreateReportCommand(context.projectId, context.userId, dto.title, dto.dataMartId, dto.dataDestinationId, dto.destinationConfig, dto.ownerIds, context.roles ?? [], this.parseConfig(report_column_config_schema_1.ReportColumnConfigSchema, dto.columnConfig, 'columnConfig'), this.parseConfig(filter_config_schema_1.FilterConfigSchema, dto.filterConfig, 'filterConfig') ?? null, this.parseConfig(sort_config_schema_1.SortConfigSchema, dto.sortConfig, 'sortConfig') ?? null, dto.limitConfig ?? null, this.parseConfig(aggregation_config_schema_1.AggregationConfigSchema, dto.aggregationConfig, 'aggregationConfig') ?? null, this.parseConfig(date_trunc_config_schema_1.DateTruncConfigSchema, dto.dateTruncConfig, 'dateTruncConfig') ?? null, dto.uniqueCountConfig ?? null);
54
+ return new create_report_command_1.CreateReportCommand(context.projectId, context.userId, dto.title, dto.dataMartId, dto.dataDestinationId, dto.destinationConfig, dto.ownerIds, context.roles ?? [], this.parseConfig(report_column_config_schema_1.ReportColumnConfigSchema, dto.columnConfig, 'columnConfig'), this.parseConfig(filter_config_schema_1.FilterConfigSchema, dto.filterConfig, 'filterConfig') ?? null, this.parseConfig(sort_config_schema_1.SortConfigSchema, dto.sortConfig, 'sortConfig') ?? null, dto.limitConfig ?? null, this.parseConfig(aggregation_config_schema_1.AggregationConfigSchema, dto.aggregationConfig, 'aggregationConfig') ?? null, this.parseConfig(date_trunc_config_schema_1.DateTruncConfigSchema, dto.dateTruncConfig, 'dateTruncConfig') ?? null, dto.uniqueCountConfig ?? null, dto.autoAggregationOptOut);
55
55
  }
56
56
  toDomainDto(entity, createdByUser = null, ownerUsers = [], capabilities = {
57
57
  canRun: false,
58
58
  canManageTriggers: false,
59
59
  canEditConfig: false,
60
60
  }) {
61
- return new report_dto_1.ReportDto(entity.id, entity.title, this.dataMartMapper.toDomainDto(entity.dataMart), this.dataDestinationMapper.toDomainDto(entity.dataDestination), entity.destinationConfig, entity.createdAt, entity.modifiedAt, entity.lastRunAt, entity.lastRunError, entity.lastRunStatus, entity.runsCount, createdByUser, ownerUsers, entity.columnConfig, entity.filterConfig ?? null, entity.sortConfig ?? null, entity.limitConfig ?? null, capabilities.canRun, capabilities.canManageTriggers, capabilities.canEditConfig, entity.aggregationConfig ?? null, entity.dateTruncConfig ?? null, entity.uniqueCountConfig ?? null);
61
+ return new report_dto_1.ReportDto(entity.id, entity.title, this.dataMartMapper.toDomainDto(entity.dataMart), this.dataDestinationMapper.toDomainDto(entity.dataDestination), entity.destinationConfig, entity.createdAt, entity.modifiedAt, entity.lastRunAt, entity.lastRunError, entity.lastRunStatus, entity.runsCount, createdByUser, ownerUsers, entity.columnConfig, entity.filterConfig ?? null, entity.sortConfig ?? null, entity.limitConfig ?? null, capabilities.canRun, capabilities.canManageTriggers, capabilities.canEditConfig, entity.aggregationConfig ?? null, entity.dateTruncConfig ?? null, entity.uniqueCountConfig ?? null, entity.autoAggregationOptOut ?? null);
62
62
  }
63
63
  async toResponse(dto) {
64
64
  return {
@@ -74,6 +74,7 @@ let ReportMapper = class ReportMapper {
74
74
  aggregationConfig: dto.aggregationConfig ?? null,
75
75
  dateTruncConfig: dto.dateTruncConfig ?? null,
76
76
  uniqueCountConfig: dto.uniqueCountConfig ?? null,
77
+ autoAggregationOptOut: dto.autoAggregationOptOut ?? null,
77
78
  lastRunAt: dto.lastRunAt,
78
79
  lastRunStatus: dto.lastRunStatus,
79
80
  lastRunError: dto.lastRunError,
@@ -118,7 +119,7 @@ let ReportMapper = class ReportMapper {
118
119
  };
119
120
  }
120
121
  toUpdateDomainCommand(id, context, dto) {
121
- return new update_report_command_1.UpdateReportCommand(id, context.projectId, context.userId, context.roles ?? [], dto.title, dto.dataDestinationId, dto.destinationConfig, dto.ownerIds, this.parseConfig(report_column_config_schema_1.ReportColumnConfigSchema, dto.columnConfig, 'columnConfig'), this.parseConfig(filter_config_schema_1.FilterConfigSchema, dto.filterConfig, 'filterConfig') ?? null, this.parseConfig(sort_config_schema_1.SortConfigSchema, dto.sortConfig, 'sortConfig') ?? null, dto.limitConfig ?? null, this.parseConfig(aggregation_config_schema_1.AggregationConfigSchema, dto.aggregationConfig, 'aggregationConfig') ?? null, this.parseConfig(date_trunc_config_schema_1.DateTruncConfigSchema, dto.dateTruncConfig, 'dateTruncConfig') ?? null, dto.uniqueCountConfig ?? null);
122
+ return new update_report_command_1.UpdateReportCommand(id, context.projectId, context.userId, context.roles ?? [], dto.title, dto.dataDestinationId, dto.destinationConfig, dto.ownerIds, this.parseConfig(report_column_config_schema_1.ReportColumnConfigSchema, dto.columnConfig, 'columnConfig'), this.parseConfig(filter_config_schema_1.FilterConfigSchema, dto.filterConfig, 'filterConfig') ?? null, this.parseConfig(sort_config_schema_1.SortConfigSchema, dto.sortConfig, 'sortConfig') ?? null, dto.limitConfig ?? null, this.parseConfig(aggregation_config_schema_1.AggregationConfigSchema, dto.aggregationConfig, 'aggregationConfig') ?? null, this.parseConfig(date_trunc_config_schema_1.DateTruncConfigSchema, dto.dateTruncConfig, 'dateTruncConfig') ?? null, dto.uniqueCountConfig ?? null, dto.autoAggregationOptOut);
122
123
  }
123
124
  toCopyAsDataMartCommand(reportId, context) {
124
125
  return new copy_report_as_data_mart_command_1.CopyReportAsDataMartCommand(reportId, context.userId, context.projectId, context.roles ?? []);
@@ -1,6 +1,6 @@
1
1
  import { AggregationRule } from '../dto/schemas/aggregation-config.schema';
2
2
  import type { ReportLike } from '../dto/domain/report-like-read-plan';
3
- export type AutoCollapseSkipReason = 'analyst-aggregated' | 'no-explicit-projection' | 'non-groupable-column' | 'unresolvable-column' | 'no-allowed-aggregation' | 'calculated-not-liftable' | 'sort-outside-projection';
3
+ export type AutoCollapseSkipReason = 'analyst-aggregated' | 'analyst-opted-out' | 'no-explicit-projection' | 'non-groupable-column' | 'unresolvable-column' | 'no-allowed-aggregation' | 'calculated-not-liftable' | 'sort-outside-projection';
4
4
  export interface LiftedCalculatedFormula {
5
5
  column: string;
6
6
  formula: string;